openvibers/openvibe.watch Commits

openvibe-shared v4.108.0 (was v4.107.4) (#203)

OP OpenVibers committed 10 days ago · 5f6cb7e580 · 6 files, +20 −9

* openvibe-shared v4.108.0 (was v4.107.4)

Opened by scripts/pin-bump.js in OpenVibers/OpenVibe.Shared after the v4.108.0 release.

* llms.txt links each page at its Markdown twin, with an ## Optional section (AGT-5)

Changes

ddiff --git a/README.md b/README.md
iindex 69e6907..f8d35f6 100644
---- a/README.md
++++ b/README.md
@@@ -581,5 +581,5 @@ POSTs have their own per-address limit zones (nginx refuses `limit_req` inside `
<!-- versions:start -->
- openvibe-contracts: v0.222.0
- openvibe-sdk: v0.82.0
--- openvibe-shared: v4.107.4
++- openvibe-shared: v4.108.0
<!-- versions:end -->
ddiff --git a/STATUS.json b/STATUS.json
iindex bbc6451..53196d8 100644
---- a/STATUS.json
++++ b/STATUS.json
@@@ -9,7 +9,7 @@
"domain": "openvibe.watch (a public server-rendered site + a loopback-only API; vhost in deploy/nginx; README \"Public site\" and \"Public host\")",
"contracts": "openvibe-contracts v0.222.0 (actor-agent requires v0.143.0)",
"sdk": "openvibe-sdk v0.82.0",
-- "shared": "openvibe-shared v4.107.4",
++ "shared": "openvibe-shared v4.108.0",
"capabilities": [
"watch.watch.read",
"watch.watch.manage",
ddiff --git a/package-lock.json b/package-lock.json
iindex c529c67..d95fb83 100644
---- a/package-lock.json
++++ b/package-lock.json
@@@ -14,7 +14,7 @@
"fast-xml-parser": "^4.5.3",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.222.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.82.0",
-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.107.4",
++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.108.0",
"pg": "^8.23.0"
},
"devDependencies": {
@@@ -1088,9 +1088,9 @@
}
},
"node_modules/openvibe-shared": {
-- "version": "4.107.4",
-- "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.107.4",
-- "integrity": "sha512-tThN0m3KMncEHVcBOvE+ysHjsZTlVIDLG1P+/i2Mulmxfc/AUpebAXhpWWrut50OChZ8o+HeePxsSrPI8mUQOQ==",
++ "version": "4.108.0",
++ "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.108.0",
++ "integrity": "sha512-NPzwjxpzGIpFpIm4uw3+VwHfsxbJ2+cD9yuhRzSwolSwqv2kCmwaVtHJ0DA9gKO3K8PCBfIP3UpKzpuSbYEJ+g==",
"license": "MIT",
"dependencies": {
"jsonwebtoken": "^9.0.0",
ddiff --git a/package.json b/package.json
iindex 2b45840..0e7cfb2 100644
---- a/package.json
++++ b/package.json
@@@ -26,7 +26,7 @@
"fast-xml-parser": "^4.5.3",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.222.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.82.0",
-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.107.4",
++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.108.0",
"pg": "^8.23.0"
},
"engines": {
ddiff --git a/server/http/discovery.js b/server/http/discovery.js
iindex 64aa3bf..b9eade5 100644
---- a/server/http/discovery.js
++++ b/server/http/discovery.js
@@@ -60,6 +60,9 @@ function createDiscoveryRoutes({ config }) {
res.type('text/plain').set('Cache-Control', TEXT).send(seo.llmsTxt({
name: SITE_NAME,
summary: DESCRIPTION,
++ // AGT-5: own pages link their Markdown twins (openvibe-shared 4.108.0); ## Optional is what an agent may skip.
++ markdown: true,
++ base: site,
details: 'Every page is server-rendered and complete without JavaScript. A person signs in with OpenVibe.Network to define and manage their own watches; nobody else can see them.',
sections: [
{ title: 'Start here', links: [
@@@ -67,11 +70,14 @@ function createDiscoveryRoutes({ config }) {
{ title: 'How it checks', url: abs('/how-it-works'), note: 'The carrier order, the cadence floor and what each state means.' },
] },
{ title: 'For machines', links: [
-- { title: 'Sitemap', url: abs('/sitemap.xml') },
{ title: 'The watch API (for services)', url: abs('/how-it-works'), note: 'Bearer tokens, one capability per route; /api/v1/* stays loopback-only.' },
-- { title: 'Release metadata (JSON)', url: abs('/release.json') },
] },
],
++ optional: [
++ { title: 'Sitemap', url: abs('/sitemap.xml') },
++ { title: 'Full text for language models', url: abs('/llms-full.txt') },
++ { title: 'Release metadata (JSON)', url: abs('/release.json') },
++ ],
}));
});
ddiff --git a/test/site.test.js b/test/site.test.js
iindex bec552e..edb2404 100644
---- a/test/site.test.js
++++ b/test/site.test.js
@@@ -548,6 +548,11 @@ t('discovery files describe the site and keep the person pages out of the sitema
const llms = await svc.get('/llms.txt');
assert.strictEqual(llms.status, 200);
assert.match(llms.text, /OpenVibe\.Watch/);
++ // AGT-5: own pages at their Markdown twins, files as they are, ## Optional last.
++ assert.match(llms.text, /\(https?:\/\/[^)]*\/index\.md\)/);
++ assert.match(llms.text, /\(https?:\/\/[^)]*\/how-it-works\.md\)/);
++ assert.match(llms.text, /\(https?:\/\/[^)]*\/sitemap\.xml\)/);
++ assert.ok(llms.text.includes('\n## Optional\n') && llms.text.lastIndexOf('\n## ') === llms.text.indexOf('\n## Optional\n'), 'Optional is last');
});
t('the webhook template: no address to give, the address and secret shown once, a new secret, deliveries, edit', async () => {