openvibers/openvibe.run Commits

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

OP OpenVibers committed 10 days ago · f291425baa · 6 files, +25 −20

* 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 519b8ac..5444519 100644
---- a/README.md
++++ b/README.md
@@@ -99,7 +99,7 @@ placed from the Fabric's offers and actually runs — the poller in `server/jobs
(`bot.job.dispatch`, audience `openvibe.bot`, minted from `OV_OAUTH_CLIENT_ID`/`OV_OAUTH_CLIENT_SECRET` against
`OV_NETWORK_INTERNAL_URL` and cached until 60 s before expiry) and mirrors its answer. Unset the client secret and
the bridge is off: `/api/ready` skips the `bot` check and every job stays `queued`.
--- `openvibe-contracts` v0.106.0, `openvibe-sdk` v0.74.0 and `openvibe-shared` v4.107.4 (package.json).
++- `openvibe-contracts` v0.106.0, `openvibe-sdk` v0.74.0 and `openvibe-shared` v4.108.0 (package.json).
## Capabilities and routes
@@@ -254,5 +254,5 @@ until Run has a product surface; the vhost below is installed then.
<!-- versions:start -->
- openvibe-contracts: v0.250.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 019788c..9a111a6 100644
---- a/STATUS.json
++++ b/STATUS.json
@@@ -9,11 +9,11 @@
"domain": "openvibe.run",
"contracts": "openvibe-contracts v0.250.0",
"sdk": "openvibe-sdk v0.82.0",
-- "shared": "openvibe-shared v4.107.4",
++ "shared": "openvibe-shared v4.108.0",
"packages": [
"openvibe-contracts v0.250.0",
"openvibe-sdk v0.82.0",
-- "openvibe-shared v4.107.4"
++ "openvibe-shared v4.108.0"
],
"capabilities": [
"run.job.submit",
ddiff --git a/package-lock.json b/package-lock.json
iindex 9ef4bda..0e89724 100644
---- a/package-lock.json
++++ b/package-lock.json
@@@ -17,7 +17,7 @@
"iovalkey": "^0.4.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.250.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": {
@@@ -1191,9 +1191,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 5e6f091..5a13b01 100644
---- a/package.json
++++ b/package.json
@@@ -28,7 +28,7 @@
"iovalkey": "^0.4.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.250.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": {
ddiff --git a/server/web/discovery.js b/server/web/discovery.js
iindex 9f50299..b7804c5 100644
---- a/server/web/discovery.js
++++ b/server/web/discovery.js
@@@ -14,23 +14,26 @@ const NODE_REPO = 'https://github.com/OpenVibers/OpenVibe.Node';
const PAGES = ['/', '/updates', '/terms', '/privacy', '/dmca'];
function sections(base) {
-- return [
-- { title: 'Pages', links: [
-- { title: 'OpenVibe.Run', url: `${base}/`, note: 'what a job is, how it runs, and the API in brief' },
++ return {
++ main: [
++ { title: 'Pages', links: [
++ { title: 'OpenVibe.Run', url: `${base}/`, note: 'what a job is, how it runs, and the API in brief' },
++ ] },
++ ],
++ optional: [
{ title: 'What shipped', url: `${base}/updates`, note: 'every change deployed, newest first' },
-- { title: 'Terms', url: `${base}/terms` },
-- { title: 'Privacy', url: `${base}/privacy` },
-- { title: 'DMCA', url: `${base}/dmca` },
-- ] },
-- { title: 'Docs', links: [
++ { title: 'Terms', url: `${base}/terms`, html: true },
++ { title: 'Privacy', url: `${base}/privacy`, html: true },
++ { title: 'DMCA', url: `${base}/dmca`, html: true },
{ title: 'OpenVibe.Run on GitHub', url: REPO, note: 'the source and the README: the job API, its states and its capabilities' },
{ title: 'OpenVibe Node', url: NODE_REPO, note: 'pair your own machine to run jobs' },
-- ] },
-- ];
++ ],
++ };
}
function llmsTxt(config) {
-- return seo.llmsTxt({ name: home.SITE_NAME, summary: home.DESCRIPTION, sections: sections(config.baseUrl) });
++ const { main, optional } = sections(config.baseUrl);
++ return seo.llmsTxt({ name: home.SITE_NAME, summary: home.DESCRIPTION, markdown: true, base: config.baseUrl, sections: main, optional });
}
function llmsFull(config) {
ddiff --git a/test/discovery.test.js b/test/discovery.test.js
iindex 568a21a..688d290 100644
---- a/test/discovery.test.js
++++ b/test/discovery.test.js
@@@ -18,7 +18,9 @@ const KEY = require('crypto').randomBytes(16).toString('hex');
assert.strictEqual(r.status, 200);
assert.match(r.headers.get('content-type'), /^text\/plain/);
assert.match(r.text, /^# OpenVibe\.Run\n/);
++ assert.ok(r.text.includes('http://run.test/index.md'), 'home link points at its Markdown twin');
assert.ok(r.text.includes('http://run.test/terms'));
++ assert.ok(r.text.includes('\n## Optional\n'), 'llms.txt has an Optional section');
assert.ok(!/\/api\/|\/internal\/|\/admin|\/jobs|\/stream/.test(r.text), 'no machine route is listed');
});
await check('/llms-full.txt answers 200 text/plain within maxBytes and carries the front page text', async () => {