aimeat 1.4.8 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/dist/locales/en.json +60 -4
  2. package/dist/locales/fi.json +60 -4
  3. package/dist/public/css/views/profile.css +37 -0
  4. package/dist/public/js/services/admin.js +5 -0
  5. package/dist/public/js/services/boards.js +6 -3
  6. package/dist/public/js/services/memory.js +10 -0
  7. package/dist/public/views/admin/federation-tab.js +93 -7
  8. package/dist/public/views/admin/ghii-tab.js +2 -0
  9. package/dist/public/views/admin.js +1 -1
  10. package/dist/public/views/profile/access-tab.js +160 -58
  11. package/dist/public/views/profile/agents-tab.js +13 -1
  12. package/dist/public/views/profile/boards-tab.js +12 -0
  13. package/dist/public/views/profile/data-wallet-tab.js +29 -2
  14. package/dist/public/views/profile/knowledge-tab.js +64 -2
  15. package/dist/public/views/profile/landing-page.js +9 -6
  16. package/dist/public/views/profile/memory-tab.js +92 -4
  17. package/dist/src/auth/jwt.d.ts +6 -0
  18. package/dist/src/auth/jwt.d.ts.map +1 -1
  19. package/dist/src/auth/jwt.js +6 -0
  20. package/dist/src/auth/jwt.js.map +1 -1
  21. package/dist/src/auth/middleware.d.ts +7 -0
  22. package/dist/src/auth/middleware.d.ts.map +1 -1
  23. package/dist/src/auth/middleware.js +20 -0
  24. package/dist/src/auth/middleware.js.map +1 -1
  25. package/dist/src/middleware/federation-proxy.d.ts +35 -0
  26. package/dist/src/middleware/federation-proxy.d.ts.map +1 -0
  27. package/dist/src/middleware/federation-proxy.js +92 -0
  28. package/dist/src/middleware/federation-proxy.js.map +1 -0
  29. package/dist/src/routes/actions.d.ts.map +1 -1
  30. package/dist/src/routes/actions.js +7 -2
  31. package/dist/src/routes/actions.js.map +1 -1
  32. package/dist/src/routes/admin-agents.d.ts.map +1 -1
  33. package/dist/src/routes/admin-agents.js +1 -0
  34. package/dist/src/routes/admin-agents.js.map +1 -1
  35. package/dist/src/routes/admin-features.d.ts.map +1 -1
  36. package/dist/src/routes/admin-features.js +2 -0
  37. package/dist/src/routes/admin-features.js.map +1 -1
  38. package/dist/src/routes/agents.d.ts.map +1 -1
  39. package/dist/src/routes/agents.js +36 -3
  40. package/dist/src/routes/agents.js.map +1 -1
  41. package/dist/src/routes/boards.d.ts.map +1 -1
  42. package/dist/src/routes/boards.js +12 -5
  43. package/dist/src/routes/boards.js.map +1 -1
  44. package/dist/src/routes/federation-auth.d.ts +15 -0
  45. package/dist/src/routes/federation-auth.d.ts.map +1 -0
  46. package/dist/src/routes/federation-auth.js +182 -0
  47. package/dist/src/routes/federation-auth.js.map +1 -0
  48. package/dist/src/routes/federation-genesis.d.ts +2 -1
  49. package/dist/src/routes/federation-genesis.d.ts.map +1 -1
  50. package/dist/src/routes/federation-genesis.js +58 -2
  51. package/dist/src/routes/federation-genesis.js.map +1 -1
  52. package/dist/src/routes/federation-peer.d.ts.map +1 -1
  53. package/dist/src/routes/federation-peer.js +79 -2
  54. package/dist/src/routes/federation-peer.js.map +1 -1
  55. package/dist/src/routes/federation-sync.d.ts.map +1 -1
  56. package/dist/src/routes/federation-sync.js +14 -1
  57. package/dist/src/routes/federation-sync.js.map +1 -1
  58. package/dist/src/routes/federation.d.ts +2 -1
  59. package/dist/src/routes/federation.d.ts.map +1 -1
  60. package/dist/src/routes/federation.js +4 -2
  61. package/dist/src/routes/federation.js.map +1 -1
  62. package/dist/src/routes/ghii.d.ts +2 -1
  63. package/dist/src/routes/ghii.d.ts.map +1 -1
  64. package/dist/src/routes/ghii.js +88 -4
  65. package/dist/src/routes/ghii.js.map +1 -1
  66. package/dist/src/routes/libs.js +42 -10
  67. package/dist/src/routes/libs.js.map +1 -1
  68. package/dist/src/routes/memory.d.ts.map +1 -1
  69. package/dist/src/routes/memory.js +162 -0
  70. package/dist/src/routes/memory.js.map +1 -1
  71. package/dist/src/server-bootstrap/routes-loader.d.ts +2 -0
  72. package/dist/src/server-bootstrap/routes-loader.d.ts.map +1 -1
  73. package/dist/src/server-bootstrap/routes-loader.js +7 -4
  74. package/dist/src/server-bootstrap/routes-loader.js.map +1 -1
  75. package/dist/src/server-bootstrap/service-init.d.ts +2 -0
  76. package/dist/src/server-bootstrap/service-init.d.ts.map +1 -1
  77. package/dist/src/server-bootstrap/service-init.js +8 -1
  78. package/dist/src/server-bootstrap/service-init.js.map +1 -1
  79. package/dist/src/server.d.ts.map +1 -1
  80. package/dist/src/server.js +1 -0
  81. package/dist/src/server.js.map +1 -1
  82. package/dist/src/services/federation.d.ts +6 -6
  83. package/dist/src/services/federation.d.ts.map +1 -1
  84. package/dist/src/services/federation.js +53 -1
  85. package/dist/src/services/federation.js.map +1 -1
  86. package/dist/src/services/memory-replication.d.ts.map +1 -1
  87. package/dist/src/services/memory-replication.js +3 -0
  88. package/dist/src/services/memory-replication.js.map +1 -1
  89. package/dist/src/storage/interface.d.ts +9 -1
  90. package/dist/src/storage/interface.d.ts.map +1 -1
  91. package/dist/src/storage/providers/mongodb/index.d.ts +2 -1
  92. package/dist/src/storage/providers/mongodb/index.d.ts.map +1 -1
  93. package/dist/src/storage/providers/mongodb/index.js +31 -10
  94. package/dist/src/storage/providers/mongodb/index.js.map +1 -1
  95. package/dist/src/storage/providers/sqlite/index.d.ts +2 -1
  96. package/dist/src/storage/providers/sqlite/index.d.ts.map +1 -1
  97. package/dist/src/storage/providers/sqlite/index.js +47 -19
  98. package/dist/src/storage/providers/sqlite/index.js.map +1 -1
  99. package/dist/src/storage/providers/sqlite/repos/action.d.ts.map +1 -1
  100. package/dist/src/storage/providers/sqlite/repos/action.js +5 -4
  101. package/dist/src/storage/providers/sqlite/repos/action.js.map +1 -1
  102. package/dist/src/storage/providers/sqlite/repos/agent.d.ts.map +1 -1
  103. package/dist/src/storage/providers/sqlite/repos/agent.js +5 -4
  104. package/dist/src/storage/providers/sqlite/repos/agent.js.map +1 -1
  105. package/dist/src/storage/providers/sqlite/repos/board.d.ts.map +1 -1
  106. package/dist/src/storage/providers/sqlite/repos/board.js +3 -2
  107. package/dist/src/storage/providers/sqlite/repos/board.js.map +1 -1
  108. package/dist/src/storage/providers/sqlite/repos/storage-file.d.ts.map +1 -1
  109. package/dist/src/storage/providers/sqlite/repos/storage-file.js +4 -2
  110. package/dist/src/storage/providers/sqlite/repos/storage-file.js.map +1 -1
  111. package/dist/src/storage/providers/sqlite/schema.d.ts.map +1 -1
  112. package/dist/src/storage/providers/sqlite/schema.js +10 -0
  113. package/dist/src/storage/providers/sqlite/schema.js.map +1 -1
  114. package/dist/src/storage/repositories/board.repository.d.ts +1 -1
  115. package/dist/src/storage/repositories/board.repository.d.ts.map +1 -1
  116. package/dist/src/storage/repositories/federation.repository.d.ts +1 -0
  117. package/dist/src/storage/repositories/federation.repository.d.ts.map +1 -1
  118. package/dist/src/utils/service-summary.d.ts +65 -0
  119. package/dist/src/utils/service-summary.d.ts.map +1 -0
  120. package/dist/src/utils/service-summary.js +100 -0
  121. package/dist/src/utils/service-summary.js.map +1 -0
  122. package/package.json +3 -1
  123. package/prisma/schema.prisma +14 -6
@@ -0,0 +1,182 @@
1
+ /**
2
+ * @file federation-auth.ts
3
+ * @description Federation authentication endpoint -- allows remote nodes to verify
4
+ * credentials for users who have their home identity on this node. A requesting
5
+ * node sends the username + password, and this node verifies them locally, checks
6
+ * for an auth consent granting the requesting node access, and returns a signed
7
+ * attestation that the remote node can use to issue a federated JWT.
8
+ * @version-history
9
+ * v1.0.0 -- 2026-05-20 -- Initial implementation (Federation Mesh Phase 3)
10
+ */
11
+ import { Router } from 'express';
12
+ import { success, error } from '../middleware/envelope.js';
13
+ import { verifyPassword } from '../services/password.js';
14
+ import { sign } from '../auth/keypair.js';
15
+ import { rateLimit } from '../middleware/rate-limit.js';
16
+ import { logger } from '../utils/logger.js';
17
+ export function federationAuthRouter(config, storage) {
18
+ const router = Router();
19
+ /**
20
+ * POST /v1/federation/auth/verify
21
+ *
22
+ * Called by a remote node when a user tries to log in as username@thisNode
23
+ * on that remote node. Verifies the password locally and checks that the
24
+ * user has granted an auth consent to the requesting node.
25
+ *
26
+ * Body: { username, password, requesting_node, timestamp }
27
+ * Returns: signed attestation on success
28
+ */
29
+ router.post('/v1/federation/auth/verify', rateLimit({ max: 10, windowMs: 60 * 1000 }), async (req, res) => {
30
+ const { username, password, requesting_node, timestamp } = req.body ?? {};
31
+ // --- Input validation ---
32
+ if (!username || typeof username !== 'string') {
33
+ res.status(400).json(error(config.nodeId, 'INVALID_INPUT', 'username is required'));
34
+ return;
35
+ }
36
+ if (!password || typeof password !== 'string') {
37
+ res.status(400).json(error(config.nodeId, 'INVALID_INPUT', 'password is required'));
38
+ return;
39
+ }
40
+ if (!requesting_node || typeof requesting_node !== 'string') {
41
+ res.status(400).json(error(config.nodeId, 'INVALID_INPUT', 'requesting_node is required'));
42
+ return;
43
+ }
44
+ if (!timestamp || typeof timestamp !== 'string') {
45
+ res.status(400).json(error(config.nodeId, 'INVALID_INPUT', 'timestamp is required'));
46
+ return;
47
+ }
48
+ // Reject requests with timestamps too far from now (5 minute window)
49
+ const requestTime = new Date(timestamp).getTime();
50
+ if (isNaN(requestTime) || Math.abs(Date.now() - requestTime) > 5 * 60 * 1000) {
51
+ res.status(400).json(error(config.nodeId, 'INVALID_TIMESTAMP', 'Request timestamp is too old or invalid'));
52
+ return;
53
+ }
54
+ // --- Look up the GHII record ---
55
+ const ghii = `${username.toLowerCase().trim()}@${config.nodeId}`;
56
+ const ghiiRecord = await storage.getGHII(ghii);
57
+ if (!ghiiRecord) {
58
+ // Use generic error to avoid revealing whether user exists
59
+ res.status(401).json(error(config.nodeId, 'FEDERATION_AUTH_FAILED', 'Authentication failed'));
60
+ return;
61
+ }
62
+ if (!ghiiRecord.passwordHash) {
63
+ res.status(401).json(error(config.nodeId, 'FEDERATION_AUTH_FAILED', 'Authentication failed'));
64
+ return;
65
+ }
66
+ // --- Verify password ---
67
+ const valid = await verifyPassword(password, ghiiRecord.passwordHash);
68
+ if (!valid) {
69
+ res.status(401).json(error(config.nodeId, 'FEDERATION_AUTH_FAILED', 'Authentication failed'));
70
+ return;
71
+ }
72
+ // --- Check for auth consent ---
73
+ // The user must have an active consent granting auth access to the requesting node.
74
+ // Consent recipient format: "node:requesting-node-id", scope field: any (we check purpose).
75
+ // Since findMatchingConsents uses memory key patterns (dataPattern) and accessor GAII,
76
+ // and we need to check by node ID (not a real GAII), we query consents directly
77
+ // and filter for auth-related consents targeting this node.
78
+ const consents = await storage.listConsents(ghii, { status: 'active' });
79
+ const hasAuthConsent = consents.some(c => {
80
+ if (c.scope !== 'auth')
81
+ return false;
82
+ if (c.recipient === `node:${requesting_node}`)
83
+ return true;
84
+ if (c.recipient === '*')
85
+ return true;
86
+ if (c.recipient === 'domain:*')
87
+ return true;
88
+ return false;
89
+ });
90
+ if (!hasAuthConsent) {
91
+ logger.info(`Federation auth denied: ${ghii} has no auth consent for node ${requesting_node}`);
92
+ res.status(403).json(error(config.nodeId, 'NO_AUTH_CONSENT', 'User has not granted federation auth consent for the requesting node'));
93
+ return;
94
+ }
95
+ // --- Build and sign the attestation ---
96
+ const nodeKey = await storage.getNodeKey();
97
+ if (!nodeKey) {
98
+ res.status(500).json(error(config.nodeId, 'INTERNAL', 'Node keys not available'));
99
+ return;
100
+ }
101
+ const now = new Date().toISOString();
102
+ const attestation = {
103
+ verified: true,
104
+ ghii,
105
+ display_name: ghiiRecord.displayName,
106
+ home_node: config.nodeId,
107
+ home_url: config.baseUrl,
108
+ owner: ghiiRecord.ownerName,
109
+ scopes: ['memory:read', 'memory:write', 'work:request', 'catalogue:read'],
110
+ requesting_node,
111
+ issued_at: now,
112
+ expires_at: new Date(Date.now() + 3600 * 1000).toISOString(), // 1 hour
113
+ };
114
+ // Sign the attestation payload with the node's Ed25519 private key
115
+ const attestationJson = JSON.stringify(attestation);
116
+ const signature = await sign(nodeKey.privateKey, attestationJson);
117
+ logger.info(`Federation auth success: ${ghii} verified for node ${requesting_node}`);
118
+ res.json(success(config.nodeId, { ...attestation, signature }));
119
+ });
120
+ /**
121
+ * POST /v1/federation/auth/refresh
122
+ *
123
+ * Re-verify a federated session without requiring the password again.
124
+ * The requesting node sends the GHII and its node ID; this node checks
125
+ * that the user still exists and the auth consent is still active, then
126
+ * returns a fresh signed attestation.
127
+ *
128
+ * Body: { ghii, requesting_node, timestamp }
129
+ */
130
+ router.post('/v1/federation/auth/refresh', rateLimit({ max: 20, windowMs: 60 * 1000 }), async (req, res) => {
131
+ const { ghii, home_node: _homeNode, requesting_node, timestamp } = req.body ?? {};
132
+ if (!ghii || !requesting_node || !timestamp) {
133
+ res.status(400).json(error(config.nodeId, 'INVALID_INPUT', 'ghii, requesting_node, and timestamp required'));
134
+ return;
135
+ }
136
+ // Validate timestamp freshness
137
+ const age = Math.abs(Date.now() - new Date(timestamp).getTime());
138
+ if (isNaN(age) || age > 5 * 60_000) {
139
+ res.status(400).json(error(config.nodeId, 'INVALID_TIMESTAMP', 'Timestamp too old'));
140
+ return;
141
+ }
142
+ // Look up the user
143
+ const ghiiRecord = await storage.getGHII(ghii);
144
+ if (!ghiiRecord) {
145
+ res.status(401).json(error(config.nodeId, 'AUTH_FAILED', 'User not found'));
146
+ return;
147
+ }
148
+ // Check auth consent still valid
149
+ const consents = await storage.listConsents(ghii, { status: 'active' });
150
+ const hasAuthConsent = consents.some(c => {
151
+ if (c.scope !== 'auth')
152
+ return false;
153
+ if (c.recipient === `node:${requesting_node}`)
154
+ return true;
155
+ if (c.recipient === '*')
156
+ return true;
157
+ return false;
158
+ });
159
+ if (!hasAuthConsent) {
160
+ res.status(403).json(error(config.nodeId, 'NO_AUTH_CONSENT', 'Auth consent revoked'));
161
+ return;
162
+ }
163
+ // Issue fresh attestation (no password check -- already authenticated)
164
+ const nodeKey = await storage.getNodeKey();
165
+ const attestation = {
166
+ verified: true,
167
+ ghii,
168
+ display_name: ghiiRecord.displayName,
169
+ home_node: config.nodeId,
170
+ home_url: config.baseUrl,
171
+ owner: ghiiRecord.ownerName,
172
+ scopes: ['memory:read', 'memory:write', 'work:request', 'catalogue:read'],
173
+ requesting_node,
174
+ issued_at: new Date().toISOString(),
175
+ expires_at: new Date(Date.now() + 3600_000).toISOString(),
176
+ };
177
+ const signature = nodeKey ? await sign(nodeKey.privateKey, JSON.stringify(attestation)) : '';
178
+ res.json(success(config.nodeId, { ...attestation, signature }));
179
+ });
180
+ return router;
181
+ }
182
+ //# sourceMappingURL=federation-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federation-auth.js","sourceRoot":"","sources":["../../../src/routes/federation-auth.ts"],"names":[],"mappings":"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"}
@@ -7,5 +7,6 @@ import { Router } from 'express';
7
7
  import type { AimeatConfig } from '../config.js';
8
8
  import type { Storage } from '../storage/interface.js';
9
9
  import type { PeerInfo } from '../services/federation.js';
10
- export declare function federationGenesisRouter(config: AimeatConfig, storage: Storage, peers: Map<string, PeerInfo>): Router;
10
+ import type { ServiceSummary } from '../utils/service-summary.js';
11
+ export declare function federationGenesisRouter(config: AimeatConfig, storage: Storage, peers: Map<string, PeerInfo>, networkDirectory?: Map<string, ServiceSummary>): Router;
11
12
  //# sourceMappingURL=federation-genesis.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"federation-genesis.d.ts","sourceRoot":"","sources":["../../../src/routes/federation-genesis.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAGvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAQ1D,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,MAAM,CAypBpH"}
1
+ {"version":3,"file":"federation-genesis.d.ts","sourceRoot":"","sources":["../../../src/routes/federation-genesis.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAGvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAQlE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,MAAM,CA4sBpK"}
@@ -12,7 +12,7 @@ import { emitChange } from '../services/event-bus.js';
12
12
  import { createGenesisPeeringService } from '../services/genesis-peering.js';
13
13
  import { createOrganismReputationService } from '../services/organism-reputation.js';
14
14
  import { matchesKeyword, matchesActionKeyword, matchesGenesisKeyword, matchesLocation } from '../services/federation-helpers.js';
15
- export function federationGenesisRouter(config, storage, peers) {
15
+ export function federationGenesisRouter(config, storage, peers, networkDirectory) {
16
16
  const router = Router();
17
17
  const genesisPeeringService = createGenesisPeeringService(config, storage);
18
18
  // ── Phase 3.4: Genesis Peering ──
@@ -174,7 +174,63 @@ export function federationGenesisRouter(config, storage, peers) {
174
174
  // No genesis entries yet — that's fine
175
175
  }
176
176
  }
177
- // 4. Add active genesis peer metadata
177
+ // 4. Network directory entries (aggregated peer summaries)
178
+ if ((!sourceFilter || sourceFilter === 'network') && networkDirectory) {
179
+ for (const [nodeId, summary] of networkDirectory) {
180
+ for (const action of summary.actions) {
181
+ if (serviceType && action.category !== serviceType)
182
+ continue;
183
+ if (keyword && !action.displayName.toLowerCase().includes(keyword.toLowerCase()))
184
+ continue;
185
+ entries.push({
186
+ type: 'action',
187
+ id: action.id,
188
+ name: action.displayName,
189
+ category: action.category,
190
+ source_node: nodeId,
191
+ source_type: 'network',
192
+ provider_gaii: action.providerGaii,
193
+ });
194
+ }
195
+ for (const agent of summary.agents) {
196
+ if (keyword && !(agent.displayName || '').toLowerCase().includes(keyword.toLowerCase()))
197
+ continue;
198
+ entries.push({
199
+ type: 'agent',
200
+ id: agent.gaii,
201
+ name: agent.displayName || agent.gaii,
202
+ source_node: nodeId,
203
+ source_type: 'network',
204
+ });
205
+ }
206
+ for (const board of summary.boards) {
207
+ if (keyword && !board.name.toLowerCase().includes(keyword.toLowerCase()))
208
+ continue;
209
+ entries.push({
210
+ type: 'board',
211
+ id: board.id,
212
+ name: board.name,
213
+ source_node: nodeId,
214
+ source_type: 'network',
215
+ });
216
+ }
217
+ for (const csm of summary.csms) {
218
+ if (serviceType && csm.serviceType !== serviceType)
219
+ continue;
220
+ if (keyword && !csm.name.toLowerCase().includes(keyword.toLowerCase()))
221
+ continue;
222
+ entries.push({
223
+ type: 'csm',
224
+ id: csm.name,
225
+ name: csm.name,
226
+ service_type: csm.serviceType,
227
+ source_node: nodeId,
228
+ source_type: 'network',
229
+ });
230
+ }
231
+ }
232
+ }
233
+ // 5. Add active genesis peer metadata
178
234
  const activePeers = await storage.listGenesisPeers({ status: 'active' });
179
235
  const peerSummary = activePeers.map(p => ({
180
236
  node_id: p.genesisNodeId,
@@ -1 +1 @@
1
- {"version":3,"file":"federation-genesis.js","sourceRoot":"","sources":["../../../src/routes/federation-genesis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"federation-genesis.js","sourceRoot":"","sources":["../../../src/routes/federation-genesis.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"federation-peer.d.ts","sourceRoot":"","sources":["../../../src/routes/federation-peer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAOvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAM1D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,MAAM,CA4sBjH"}
1
+ {"version":3,"file":"federation-peer.d.ts","sourceRoot":"","sources":["../../../src/routes/federation-peer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAOvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAW1D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,MAAM,CAsxBjH"}
@@ -14,11 +14,17 @@ import { verify } from '../auth/keypair.js';
14
14
  import { validateOutboundUrl } from '../utils/url-validator.js';
15
15
  import { emitChange } from '../services/event-bus.js';
16
16
  import { peerKeyCache, performKeyExchange } from '../services/federation-helpers.js';
17
+ import { computeServiceSummary } from '../utils/service-summary.js';
18
+ /** Cached service summary hash to avoid recomputing on every ping (60s TTL). */
19
+ let cachedSummaryHash = '';
20
+ let summaryHashExpiry = 0;
17
21
  export function federationPeerRouter(config, storage, peers) {
18
22
  const router = Router();
19
23
  // GET /v1/federation/directory — public peer directory (Tier 0)
20
24
  router.get('/v1/federation/directory', async (_req, res) => {
21
- const peerList = [...peers.values()].map(p => ({
25
+ const peerList = [...peers.values()]
26
+ .filter(p => p.peerMode !== 'private')
27
+ .map(p => ({
22
28
  node_id: p.nodeId,
23
29
  url: p.url,
24
30
  status: p.status,
@@ -51,6 +57,26 @@ export function federationPeerRouter(config, storage, peers) {
51
57
  { description: 'Request peering', method: 'POST', url: '/v1/federation/peer/request' },
52
58
  ]));
53
59
  });
60
+ // GET /v1/federation/service-summary — return compact summary of all federated items
61
+ // Used by hub nodes to aggregate service listings from peers.
62
+ router.get('/v1/federation/service-summary', async (req, res) => {
63
+ const sourceNode = req.headers['x-source-node'];
64
+ if (!sourceNode) {
65
+ res.status(400).json(error(config.nodeId, 'INVALID_INPUT', 'x-source-node header is required'));
66
+ return;
67
+ }
68
+ const peer = [...peers.values()].find(p => p.nodeId === sourceNode);
69
+ if (!peer || peer.status !== 'active') {
70
+ res.status(403).json(error(config.nodeId, 'FORBIDDEN', 'Source node is not an active peer'));
71
+ return;
72
+ }
73
+ if (!peer.shareCatalogue) {
74
+ res.status(403).json(error(config.nodeId, 'POLICY_DENIED', 'Catalogue sharing is disabled for this peer'));
75
+ return;
76
+ }
77
+ const summary = await computeServiceSummary(config, storage);
78
+ res.json(success(config.nodeId, summary));
79
+ });
54
80
  // POST /v1/federation/peer/introduce — unauthenticated "knock on the door" for joining nodes
55
81
  // SECURITY: Requires cryptographic signature + operator approval (never auto-approve)
56
82
  router.post('/v1/federation/peer/introduce', async (req, res) => {
@@ -272,6 +298,10 @@ export function federationPeerRouter(config, storage, peers) {
272
298
  status: 'approved',
273
299
  addedAt: now,
274
300
  lastSeen: now,
301
+ shareCatalogue: true,
302
+ replicateMemory: true,
303
+ allowRouting: true,
304
+ peerMode: 'federation',
275
305
  };
276
306
  peers.set(peerInfo.nodeId, peerInfo);
277
307
  await storage.saveFederationPeer(peerInfo);
@@ -284,6 +314,17 @@ export function federationPeerRouter(config, storage, peers) {
284
314
  }));
285
315
  emitChange('federation');
286
316
  });
317
+ // DELETE /v1/admin/peering/requests/:id — delete a peering request (operator)
318
+ router.delete('/v1/admin/peering/requests/:id', requireAuth(), requireRole('operator'), async (req, res) => {
319
+ const id = req.params.id;
320
+ const deleted = await storage.deletePeeringRequest(id);
321
+ if (!deleted) {
322
+ res.status(404).json(error(config.nodeId, 'NOT_FOUND', `Peering request not found: ${id}`));
323
+ return;
324
+ }
325
+ res.json(success(config.nodeId, { id, deleted: true }));
326
+ emitChange('federation');
327
+ });
287
328
  // POST /v1/federation/peer/activate — activate approved peering
288
329
  router.post('/v1/federation/peer/activate', requireAuth(), requireRole('operator'), async (req, res) => {
289
330
  const { peer_node_id } = req.body ?? {};
@@ -355,6 +396,10 @@ export function federationPeerRouter(config, storage, peers) {
355
396
  status: p.status,
356
397
  added_at: p.addedAt,
357
398
  last_seen: p.lastSeen,
399
+ share_catalogue: p.shareCatalogue ?? true,
400
+ replicate_memory: p.replicateMemory ?? true,
401
+ allow_routing: p.allowRouting ?? true,
402
+ peer_mode: p.peerMode ?? 'federation',
358
403
  }));
359
404
  res.json(success(config.nodeId, {
360
405
  peers: peerList,
@@ -380,6 +425,10 @@ export function federationPeerRouter(config, storage, peers) {
380
425
  status: 'pending',
381
426
  addedAt: now,
382
427
  lastSeen: now,
428
+ shareCatalogue: true,
429
+ replicateMemory: true,
430
+ allowRouting: true,
431
+ peerMode: 'federation',
383
432
  };
384
433
  peers.set(node_id, peerInfo);
385
434
  await storage.saveFederationPeer(peerInfo);
@@ -403,18 +452,30 @@ export function federationPeerRouter(config, storage, peers) {
403
452
  res.status(404).json(error(config.nodeId, 'NOT_FOUND', `Peer not found: ${nodeId}`));
404
453
  return;
405
454
  }
406
- const { url, public_key, status } = req.body ?? {};
455
+ const { url, public_key, status, share_catalogue, replicate_memory, allow_routing, peer_mode } = req.body ?? {};
407
456
  if (url)
408
457
  peer.url = url;
409
458
  if (public_key)
410
459
  peer.publicKey = public_key;
411
460
  if (status)
412
461
  peer.status = status;
462
+ if (typeof share_catalogue === 'boolean')
463
+ peer.shareCatalogue = share_catalogue;
464
+ if (typeof replicate_memory === 'boolean')
465
+ peer.replicateMemory = replicate_memory;
466
+ if (typeof allow_routing === 'boolean')
467
+ peer.allowRouting = allow_routing;
468
+ if (peer_mode === 'federation' || peer_mode === 'private')
469
+ peer.peerMode = peer_mode;
413
470
  await storage.saveFederationPeer(peer);
414
471
  res.json(success(config.nodeId, {
415
472
  node_id: nodeId,
416
473
  url: peer.url,
417
474
  status: peer.status,
475
+ share_catalogue: peer.shareCatalogue,
476
+ replicate_memory: peer.replicateMemory,
477
+ allow_routing: peer.allowRouting,
478
+ peer_mode: peer.peerMode,
418
479
  updated: true,
419
480
  }));
420
481
  emitChange('federation');
@@ -557,10 +618,22 @@ export function federationPeerRouter(config, storage, peers) {
557
618
  peer.status = 'active';
558
619
  storage.saveFederationPeer(peer).catch(() => { });
559
620
  }
621
+ // Compute service summary hash with 60s cache
622
+ if (!cachedSummaryHash || Date.now() > summaryHashExpiry) {
623
+ try {
624
+ const summary = await computeServiceSummary(config, storage);
625
+ cachedSummaryHash = summary.summary_hash;
626
+ summaryHashExpiry = Date.now() + 60_000;
627
+ }
628
+ catch {
629
+ // Keep stale hash on error
630
+ }
631
+ }
560
632
  res.json(success(config.nodeId, {
561
633
  pong: true,
562
634
  node_id: config.nodeId,
563
635
  timestamp: new Date().toISOString(),
636
+ service_summary_hash: cachedSummaryHash,
564
637
  }));
565
638
  emitChange('federation');
566
639
  });
@@ -589,6 +662,10 @@ export function federationPeerRouter(config, storage, peers) {
589
662
  status: 'active',
590
663
  addedAt: now,
591
664
  lastSeen: now,
665
+ shareCatalogue: true,
666
+ replicateMemory: true,
667
+ allowRouting: true,
668
+ peerMode: 'federation',
592
669
  };
593
670
  peers.set(node_id, newPeer);
594
671
  await storage.saveFederationPeer(newPeer);