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.
- package/dist/locales/en.json +60 -4
- package/dist/locales/fi.json +60 -4
- package/dist/public/css/views/profile.css +37 -0
- package/dist/public/js/services/admin.js +5 -0
- package/dist/public/js/services/boards.js +6 -3
- package/dist/public/js/services/memory.js +10 -0
- package/dist/public/views/admin/federation-tab.js +93 -7
- package/dist/public/views/admin/ghii-tab.js +2 -0
- package/dist/public/views/admin.js +1 -1
- package/dist/public/views/profile/access-tab.js +160 -58
- package/dist/public/views/profile/agents-tab.js +13 -1
- package/dist/public/views/profile/boards-tab.js +12 -0
- package/dist/public/views/profile/data-wallet-tab.js +29 -2
- package/dist/public/views/profile/knowledge-tab.js +64 -2
- package/dist/public/views/profile/landing-page.js +9 -6
- package/dist/public/views/profile/memory-tab.js +92 -4
- package/dist/src/auth/jwt.d.ts +6 -0
- package/dist/src/auth/jwt.d.ts.map +1 -1
- package/dist/src/auth/jwt.js +6 -0
- package/dist/src/auth/jwt.js.map +1 -1
- package/dist/src/auth/middleware.d.ts +7 -0
- package/dist/src/auth/middleware.d.ts.map +1 -1
- package/dist/src/auth/middleware.js +20 -0
- package/dist/src/auth/middleware.js.map +1 -1
- package/dist/src/middleware/federation-proxy.d.ts +35 -0
- package/dist/src/middleware/federation-proxy.d.ts.map +1 -0
- package/dist/src/middleware/federation-proxy.js +92 -0
- package/dist/src/middleware/federation-proxy.js.map +1 -0
- package/dist/src/routes/actions.d.ts.map +1 -1
- package/dist/src/routes/actions.js +7 -2
- package/dist/src/routes/actions.js.map +1 -1
- package/dist/src/routes/admin-agents.d.ts.map +1 -1
- package/dist/src/routes/admin-agents.js +1 -0
- package/dist/src/routes/admin-agents.js.map +1 -1
- package/dist/src/routes/admin-features.d.ts.map +1 -1
- package/dist/src/routes/admin-features.js +2 -0
- package/dist/src/routes/admin-features.js.map +1 -1
- package/dist/src/routes/agents.d.ts.map +1 -1
- package/dist/src/routes/agents.js +36 -3
- package/dist/src/routes/agents.js.map +1 -1
- package/dist/src/routes/boards.d.ts.map +1 -1
- package/dist/src/routes/boards.js +12 -5
- package/dist/src/routes/boards.js.map +1 -1
- package/dist/src/routes/federation-auth.d.ts +15 -0
- package/dist/src/routes/federation-auth.d.ts.map +1 -0
- package/dist/src/routes/federation-auth.js +182 -0
- package/dist/src/routes/federation-auth.js.map +1 -0
- package/dist/src/routes/federation-genesis.d.ts +2 -1
- package/dist/src/routes/federation-genesis.d.ts.map +1 -1
- package/dist/src/routes/federation-genesis.js +58 -2
- package/dist/src/routes/federation-genesis.js.map +1 -1
- package/dist/src/routes/federation-peer.d.ts.map +1 -1
- package/dist/src/routes/federation-peer.js +79 -2
- package/dist/src/routes/federation-peer.js.map +1 -1
- package/dist/src/routes/federation-sync.d.ts.map +1 -1
- package/dist/src/routes/federation-sync.js +14 -1
- package/dist/src/routes/federation-sync.js.map +1 -1
- package/dist/src/routes/federation.d.ts +2 -1
- package/dist/src/routes/federation.d.ts.map +1 -1
- package/dist/src/routes/federation.js +4 -2
- package/dist/src/routes/federation.js.map +1 -1
- package/dist/src/routes/ghii.d.ts +2 -1
- package/dist/src/routes/ghii.d.ts.map +1 -1
- package/dist/src/routes/ghii.js +88 -4
- package/dist/src/routes/ghii.js.map +1 -1
- package/dist/src/routes/libs.js +42 -10
- package/dist/src/routes/libs.js.map +1 -1
- package/dist/src/routes/memory.d.ts.map +1 -1
- package/dist/src/routes/memory.js +162 -0
- package/dist/src/routes/memory.js.map +1 -1
- package/dist/src/server-bootstrap/routes-loader.d.ts +2 -0
- package/dist/src/server-bootstrap/routes-loader.d.ts.map +1 -1
- package/dist/src/server-bootstrap/routes-loader.js +7 -4
- package/dist/src/server-bootstrap/routes-loader.js.map +1 -1
- package/dist/src/server-bootstrap/service-init.d.ts +2 -0
- package/dist/src/server-bootstrap/service-init.d.ts.map +1 -1
- package/dist/src/server-bootstrap/service-init.js +8 -1
- package/dist/src/server-bootstrap/service-init.js.map +1 -1
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/server.js +1 -0
- package/dist/src/server.js.map +1 -1
- package/dist/src/services/federation.d.ts +6 -6
- package/dist/src/services/federation.d.ts.map +1 -1
- package/dist/src/services/federation.js +53 -1
- package/dist/src/services/federation.js.map +1 -1
- package/dist/src/services/memory-replication.d.ts.map +1 -1
- package/dist/src/services/memory-replication.js +3 -0
- package/dist/src/services/memory-replication.js.map +1 -1
- package/dist/src/storage/interface.d.ts +9 -1
- package/dist/src/storage/interface.d.ts.map +1 -1
- package/dist/src/storage/providers/mongodb/index.d.ts +2 -1
- package/dist/src/storage/providers/mongodb/index.d.ts.map +1 -1
- package/dist/src/storage/providers/mongodb/index.js +31 -10
- package/dist/src/storage/providers/mongodb/index.js.map +1 -1
- package/dist/src/storage/providers/sqlite/index.d.ts +2 -1
- package/dist/src/storage/providers/sqlite/index.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/index.js +47 -19
- package/dist/src/storage/providers/sqlite/index.js.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/action.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/action.js +5 -4
- package/dist/src/storage/providers/sqlite/repos/action.js.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/agent.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/agent.js +5 -4
- package/dist/src/storage/providers/sqlite/repos/agent.js.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/board.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/board.js +3 -2
- package/dist/src/storage/providers/sqlite/repos/board.js.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/storage-file.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/storage-file.js +4 -2
- package/dist/src/storage/providers/sqlite/repos/storage-file.js.map +1 -1
- package/dist/src/storage/providers/sqlite/schema.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/schema.js +10 -0
- package/dist/src/storage/providers/sqlite/schema.js.map +1 -1
- package/dist/src/storage/repositories/board.repository.d.ts +1 -1
- package/dist/src/storage/repositories/board.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories/federation.repository.d.ts +1 -0
- package/dist/src/storage/repositories/federation.repository.d.ts.map +1 -1
- package/dist/src/utils/service-summary.d.ts +65 -0
- package/dist/src/utils/service-summary.d.ts.map +1 -0
- package/dist/src/utils/service-summary.js +100 -0
- package/dist/src/utils/service-summary.js.map +1 -0
- package/package.json +3 -1
- 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":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,UAAU,oBAAoB,CAAC,MAAoB,EAAE,OAAgB;IACvE,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IAExB;;;;;;;;;OASG;IACH,MAAM,CAAC,IAAI,CAAC,4BAA4B,EACpC,SAAS,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,EAC3C,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACf,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAE1E,2BAA2B;QAC3B,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC5C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,sBAAsB,CAAC,CAAC,CAAC;YACpF,OAAO;QACX,CAAC;QACD,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC5C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,sBAAsB,CAAC,CAAC,CAAC;YACpF,OAAO;QACX,CAAC;QACD,IAAI,CAAC,eAAe,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE,CAAC;YAC1D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,6BAA6B,CAAC,CAAC,CAAC;YAC3F,OAAO;QACX,CAAC;QACD,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC9C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,uBAAuB,CAAC,CAAC,CAAC;YACrF,OAAO;QACX,CAAC;QAED,qEAAqE;QACrE,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;QAClD,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;YAC3E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,EAAE,yCAAyC,CAAC,CAAC,CAAC;YAC3G,OAAO;QACX,CAAC;QAED,kCAAkC;QAClC,MAAM,IAAI,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACjE,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,2DAA2D;YAC3D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,wBAAwB,EAAE,uBAAuB,CAAC,CAAC,CAAC;YAC9F,OAAO;QACX,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;YAC3B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,wBAAwB,EAAE,uBAAuB,CAAC,CAAC,CAAC;YAC9F,OAAO;QACX,CAAC;QAED,0BAA0B;QAC1B,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;QACtE,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,wBAAwB,EAAE,uBAAuB,CAAC,CAAC,CAAC;YAC9F,OAAO;QACX,CAAC;QAED,iCAAiC;QACjC,oFAAoF;QACpF,4FAA4F;QAC5F,uFAAuF;QACvF,gFAAgF;QAChF,4DAA4D;QAC5D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxE,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YACrC,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;gBAAE,OAAO,KAAK,CAAC;YACrC,IAAI,CAAC,CAAC,SAAS,KAAK,QAAQ,eAAe,EAAE;gBAAE,OAAO,IAAI,CAAC;YAC3D,IAAI,CAAC,CAAC,SAAS,KAAK,GAAG;gBAAE,OAAO,IAAI,CAAC;YACrC,IAAI,CAAC,CAAC,SAAS,KAAK,UAAU;gBAAE,OAAO,IAAI,CAAC;YAC5C,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,2BAA2B,IAAI,iCAAiC,eAAe,EAAE,CAAC,CAAC;YAC/F,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,EACvD,sEAAsE,CAAC,CAAC,CAAC;YAC7E,OAAO;QACX,CAAC;QAED,yCAAyC;QACzC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;QAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,yBAAyB,CAAC,CAAC,CAAC;YAClF,OAAO;QACX,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,WAAW,GAAG;YAChB,QAAQ,EAAE,IAAI;YACd,IAAI;YACJ,YAAY,EAAE,UAAU,CAAC,WAAW;YACpC,SAAS,EAAE,MAAM,CAAC,MAAM;YACxB,QAAQ,EAAE,MAAM,CAAC,OAAO;YACxB,KAAK,EAAE,UAAU,CAAC,SAAS;YAC3B,MAAM,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,CAAC;YACzE,eAAe;YACf,SAAS,EAAE,GAAG;YACd,UAAU,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,SAAS;SAC1E,CAAC;QAEF,mEAAmE;QACnE,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAElE,MAAM,CAAC,IAAI,CAAC,4BAA4B,IAAI,sBAAsB,eAAe,EAAE,CAAC,CAAC;QAErF,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,GAAG,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IACpE,CAAC,CACJ,CAAC;IAEF;;;;;;;;;OASG;IACH,MAAM,CAAC,IAAI,CAAC,6BAA6B,EACrC,SAAS,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,EAC3C,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACf,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAElF,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,SAAS,EAAE,CAAC;YAC1C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,+CAA+C,CAAC,CAAC,CAAC;YAC7G,OAAO;QACX,CAAC;QAED,+BAA+B;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC;YACjC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,CAAC,CAAC;YACrF,OAAO;QACX,CAAC;QAED,mBAAmB;QACnB,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC,CAAC;YAC5E,OAAO;QACX,CAAC;QAED,iCAAiC;QACjC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxE,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YACrC,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;gBAAE,OAAO,KAAK,CAAC;YACrC,IAAI,CAAC,CAAC,SAAS,KAAK,QAAQ,eAAe,EAAE;gBAAE,OAAO,IAAI,CAAC;YAC3D,IAAI,CAAC,CAAC,SAAS,KAAK,GAAG;gBAAE,OAAO,IAAI,CAAC;YACrC,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,EAAE,CAAC;YAClB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,sBAAsB,CAAC,CAAC,CAAC;YACtF,OAAO;QACX,CAAC;QAED,uEAAuE;QACvE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;QAC3C,MAAM,WAAW,GAAG;YAChB,QAAQ,EAAE,IAAI;YACd,IAAI;YACJ,YAAY,EAAE,UAAU,CAAC,WAAW;YACpC,SAAS,EAAE,MAAM,CAAC,MAAM;YACxB,QAAQ,EAAE,MAAM,CAAC,OAAO;YACxB,KAAK,EAAE,UAAU,CAAC,SAAS;YAC3B,MAAM,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,CAAC;YACzE,eAAe;YACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,UAAU,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,WAAW,EAAE;SAC5D,CAAC;QAEF,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE7F,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,GAAG,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IACpE,CAAC,CACJ,CAAC;IAEF,OAAO,MAAM,CAAC;AAClB,CAAC"}
|
|
@@ -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
|
-
|
|
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;
|
|
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.
|
|
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;
|
|
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()]
|
|
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);
|