openvibers/openvibe.tours Commits
/.well-known/agent.json: what this site serves, for agents (SEO-2) (#62)
Changes
nnew file mode 100644@@@ -0,0 +1,15 @@++'use strict';++// What OpenVibe.Tours tells an agent about itself (openvibe-shared/agent-layer): /.well-known/agent.json (SEO-2).++// Every field is something this site really serves; the purpose is its own llms.txt summary.++module.exports = {++ id: "tours",++ name: "OpenVibe.Tours",++ purpose: "Go anywhere: cities, places and self-guided routes from OpenStreetMap, Wikivoyage and Wikidata, IRL tours live on OpenVibe.Live, stays from OpenVibe.Rent, and flights.",++ home: "https://openvibe.tours",++ site: "openvibe.tours",++ api: "/api/v1",++ docs: "/developers",++ policy: {++ auth: ["none"],++ },++};@@@ -65,6 +65,8 @@ async function createApp(opts = {}) {const ctx = { config, s, keys, sso, principal, store, jobs, searchIndex, accountData, accountSend, log };const app = express();++ // /.well-known/agent.json (openvibe-shared/agent-layer, SEO-2): what this site serves, for agents.++ require('openvibe-shared/agent-layer').mount(app, { descriptor: require('./agent-descriptor') });app.disable('x-powered-by');app.set('trust proxy', config.trustProxy);const release = require('openvibe-shared/release').createRelease({ service: 'tours', root: path.join(__dirname, '..') });nnew file mode 100644@@@ -0,0 +1,19 @@++'use strict';++// SEO-2: /.well-known/agent.json answered 404 here (11-03 check of all 55 sites). The shared agent layer serves this++// site's descriptor; every field is something it really serves.++const assert = require('assert');++const fs = require('fs');++const path = require('path');++const descriptor = require('../server/agent-descriptor');++const { agentManifest } = require('openvibe-shared/agent-layer');++++const m = agentManifest(descriptor);++assert.strictEqual(m.network, 'OpenVibe');++assert.strictEqual(m.home, 'https://openvibe.tours');++assert.ok(m.purpose && m.purpose.length > 40, 'a purpose');++assert.ok(/^https:\/\//.test(m.api), 'its API, absolute');++assert.strictEqual(m.llms, 'https://openvibe.tours/llms.txt');++assert.ok(Array.isArray(m.policy.auth) && m.policy.auth.length, 'how it is called');++const app = fs.readFileSync(path.join(__dirname, '..', 'server', 'app.js'), 'utf8');++assert.match(app, /require\('openvibe-shared\/agent-layer'\)\.mount\(app, \{ descriptor: require\('\.\/agent-descriptor'\) \}\);/);++console.log('agent.json: ok');
new file mode 100644
new file mode 100644
@@ -0,0 +1,15 @@
@@ -0,0 +1,15 @@
+'use strict';
+// What OpenVibe.Tours tells an agent about itself (openvibe-shared/agent-layer): /.well-known/agent.json (SEO-2).
+// Every field is something this site really serves; the purpose is its own llms.txt summary.
+module.exports = {
+ id: "tours",
+ name: "OpenVibe.Tours",
+ purpose: "Go anywhere: cities, places and self-guided routes from OpenStreetMap, Wikivoyage and Wikidata, IRL tours live on OpenVibe.Live, stays from OpenVibe.Rent, and flights.",
+ home: "https://openvibe.tours",
+ site: "openvibe.tours",
+ api: "/api/v1",
+ docs: "/developers",
+ policy: {
+ auth: ["none"],
+ },
+};
@@ -65,6 +65,8 @@ async function createApp(opts = {}) {
@@ -65,6 +65,8 @@ async function createApp(opts = {}) {
const ctx = { config, s, keys, sso, principal, store, jobs, searchIndex, accountData, accountSend, log };
const ctx = { config, s, keys, sso, principal, store, jobs, searchIndex, accountData, accountSend, log };
const app = express();
const app = express();
+ // /.well-known/agent.json (openvibe-shared/agent-layer, SEO-2): what this site serves, for agents.
+ require('openvibe-shared/agent-layer').mount(app, { descriptor: require('./agent-descriptor') });
app.disable('x-powered-by');
app.disable('x-powered-by');
app.set('trust proxy', config.trustProxy);
app.set('trust proxy', config.trustProxy);
const release = require('openvibe-shared/release').createRelease({ service: 'tours', root: path.join(__dirname, '..') });
const release = require('openvibe-shared/release').createRelease({ service: 'tours', root: path.join(__dirname, '..') });
new file mode 100644
new file mode 100644
@@ -0,0 +1,19 @@
@@ -0,0 +1,19 @@
+'use strict';
+// SEO-2: /.well-known/agent.json answered 404 here (11-03 check of all 55 sites). The shared agent layer serves this
+// site's descriptor; every field is something it really serves.
+const assert = require('assert');
+const fs = require('fs');
+const path = require('path');
+const descriptor = require('../server/agent-descriptor');
+const { agentManifest } = require('openvibe-shared/agent-layer');
+
+const m = agentManifest(descriptor);
+assert.strictEqual(m.network, 'OpenVibe');
+assert.strictEqual(m.home, 'https://openvibe.tours');
+assert.ok(m.purpose && m.purpose.length > 40, 'a purpose');
+assert.ok(/^https:\/\//.test(m.api), 'its API, absolute');
+assert.strictEqual(m.llms, 'https://openvibe.tours/llms.txt');
+assert.ok(Array.isArray(m.policy.auth) && m.policy.auth.length, 'how it is called');
+const app = fs.readFileSync(path.join(__dirname, '..', 'server', 'app.js'), 'utf8');
+assert.match(app, /require\('openvibe-shared\/agent-layer'\)\.mount\(app, \{ descriptor: require\('\.\/agent-descriptor'\) \}\);/);
+console.log('agent.json: ok');