@claude-flow/plugin-agent-federation 1.0.0-alpha.9 → 1.0.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/README.md +4 -0
- package/dist/a2a/agent-card.d.ts +130 -0
- package/dist/a2a/agent-card.d.ts.map +1 -0
- package/dist/a2a/agent-card.js +239 -0
- package/dist/a2a/agent-card.js.map +1 -0
- package/dist/a2a/consume.d.ts +34 -0
- package/dist/a2a/consume.d.ts.map +1 -0
- package/dist/a2a/consume.js +69 -0
- package/dist/a2a/consume.js.map +1 -0
- package/dist/a2a/planner-descriptor.d.ts +40 -0
- package/dist/a2a/planner-descriptor.d.ts.map +1 -0
- package/dist/a2a/planner-descriptor.js +100 -0
- package/dist/a2a/planner-descriptor.js.map +1 -0
- package/dist/a2a/well-known.d.ts +46 -0
- package/dist/a2a/well-known.d.ts.map +1 -0
- package/dist/a2a/well-known.js +84 -0
- package/dist/a2a/well-known.js.map +1 -0
- package/dist/application/claim-checker.d.ts +27 -0
- package/dist/application/claim-checker.d.ts.map +1 -0
- package/dist/application/claim-checker.js +46 -0
- package/dist/application/claim-checker.js.map +1 -0
- package/dist/application/federation-breaker-service.d.ts +11 -1
- package/dist/application/federation-breaker-service.d.ts.map +1 -1
- package/dist/application/federation-breaker-service.js +12 -10
- package/dist/application/federation-breaker-service.js.map +1 -1
- package/dist/application/federation-coordinator.d.ts +48 -3
- package/dist/application/federation-coordinator.d.ts.map +1 -1
- package/dist/application/federation-coordinator.js +111 -22
- package/dist/application/federation-coordinator.js.map +1 -1
- package/dist/application/inbound-dispatcher.d.ts +114 -0
- package/dist/application/inbound-dispatcher.d.ts.map +1 -0
- package/dist/application/inbound-dispatcher.js +356 -0
- package/dist/application/inbound-dispatcher.js.map +1 -0
- package/dist/application/spend-reporter.d.ts +77 -0
- package/dist/application/spend-reporter.d.ts.map +1 -1
- package/dist/application/spend-reporter.js +76 -0
- package/dist/application/spend-reporter.js.map +1 -1
- package/dist/application/trust-evaluator.d.ts +32 -0
- package/dist/application/trust-evaluator.d.ts.map +1 -1
- package/dist/application/trust-evaluator.js +47 -0
- package/dist/application/trust-evaluator.js.map +1 -1
- package/dist/bin.d.ts +1 -1
- package/dist/bin.js +2 -2
- package/dist/bin.js.map +1 -1
- package/dist/cli-commands.d.ts.map +1 -1
- package/dist/cli-commands.js +125 -6
- package/dist/cli-commands.js.map +1 -1
- package/dist/domain/services/discovery-service.d.ts +18 -1
- package/dist/domain/services/discovery-service.d.ts.map +1 -1
- package/dist/domain/services/discovery-service.js +21 -0
- package/dist/domain/services/discovery-service.js.map +1 -1
- package/dist/domain/services/handshake-service.d.ts +10 -0
- package/dist/domain/services/handshake-service.d.ts.map +1 -1
- package/dist/domain/services/handshake-service.js +28 -0
- package/dist/domain/services/handshake-service.js.map +1 -1
- package/dist/domain/services/wg-firewall-service.d.ts +71 -0
- package/dist/domain/services/wg-firewall-service.d.ts.map +1 -0
- package/dist/domain/services/wg-firewall-service.js +194 -0
- package/dist/domain/services/wg-firewall-service.js.map +1 -0
- package/dist/domain/services/wg-mesh-service.d.ts +156 -0
- package/dist/domain/services/wg-mesh-service.d.ts.map +1 -0
- package/dist/domain/services/wg-mesh-service.js +292 -0
- package/dist/domain/services/wg-mesh-service.js.map +1 -0
- package/dist/domain/services/wg-witness-service.d.ts +98 -0
- package/dist/domain/services/wg-witness-service.d.ts.map +1 -0
- package/dist/domain/services/wg-witness-service.js +122 -0
- package/dist/domain/services/wg-witness-service.js.map +1 -0
- package/dist/domain/value-objects/wg-config.d.ts +70 -0
- package/dist/domain/value-objects/wg-config.d.ts.map +1 -0
- package/dist/domain/value-objects/wg-config.js +104 -0
- package/dist/domain/value-objects/wg-config.js.map +1 -0
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp-tools.d.ts +3 -1
- package/dist/mcp-tools.d.ts.map +1 -1
- package/dist/mcp-tools.js +114 -18
- package/dist/mcp-tools.js.map +1 -1
- package/dist/plugin.d.ts +2 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +173 -15
- package/dist/plugin.js.map +1 -1
- package/dist/transport/midstream-aware-loader.d.ts +72 -0
- package/dist/transport/midstream-aware-loader.d.ts.map +1 -0
- package/dist/transport/midstream-aware-loader.js +269 -0
- package/dist/transport/midstream-aware-loader.js.map +1 -0
- package/dist/version.d.ts +3 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +3 -0
- package/dist/version.js.map +1 -0
- package/package.json +21 -5
package/dist/mcp-tools.js
CHANGED
|
@@ -1,19 +1,28 @@
|
|
|
1
|
+
import { generateWgKeyPair } from './domain/value-objects/wg-config.js';
|
|
2
|
+
import { JCS_SIGNATURE_PROTOCOL } from './application/inbound-dispatcher.js';
|
|
3
|
+
import { FEDERATION_PLUGIN_VERSION } from './version.js';
|
|
1
4
|
function textResult(text, isError = false) {
|
|
2
5
|
return { content: [{ type: 'text', text }], isError };
|
|
3
6
|
}
|
|
4
|
-
export function createMcpTools(getCoordinator, getContext) {
|
|
7
|
+
export function createMcpTools(getCoordinator, getContext, getWgMesh = () => null) {
|
|
5
8
|
function requireCoordinator() {
|
|
6
9
|
const c = getCoordinator();
|
|
7
10
|
if (!c)
|
|
8
11
|
throw new Error('Federation not initialized');
|
|
9
12
|
return c;
|
|
10
13
|
}
|
|
14
|
+
function requireWgMesh() {
|
|
15
|
+
const w = getWgMesh();
|
|
16
|
+
if (!w)
|
|
17
|
+
throw new Error('WG mesh layer not initialized (set config.wgMesh = true and inject WgMeshService)');
|
|
18
|
+
return w;
|
|
19
|
+
}
|
|
11
20
|
return [
|
|
12
21
|
{
|
|
13
22
|
name: 'federation_init',
|
|
14
23
|
description: 'Initialize federation on this node with a manifest and begin discovery',
|
|
15
24
|
pluginName: '@claude-flow/plugin-agent-federation',
|
|
16
|
-
version:
|
|
25
|
+
version: FEDERATION_PLUGIN_VERSION,
|
|
17
26
|
inputSchema: {
|
|
18
27
|
type: 'object',
|
|
19
28
|
properties: {
|
|
@@ -33,10 +42,10 @@ export function createMcpTools(getCoordinator, getContext) {
|
|
|
33
42
|
capabilities: {
|
|
34
43
|
agentTypes: params['agentTypes'] ?? ['coder', 'reviewer'],
|
|
35
44
|
maxConcurrentSessions: 10,
|
|
36
|
-
supportedProtocols: ['websocket', 'http'],
|
|
45
|
+
supportedProtocols: ['websocket', 'http', JCS_SIGNATURE_PROTOCOL],
|
|
37
46
|
complianceModes: [],
|
|
38
47
|
},
|
|
39
|
-
version:
|
|
48
|
+
version: FEDERATION_PLUGIN_VERSION,
|
|
40
49
|
timestamp: new Date().toISOString(),
|
|
41
50
|
});
|
|
42
51
|
return textResult(`Federation initialized for node ${nodeId}`);
|
|
@@ -44,19 +53,23 @@ export function createMcpTools(getCoordinator, getContext) {
|
|
|
44
53
|
},
|
|
45
54
|
{
|
|
46
55
|
name: 'federation_join',
|
|
47
|
-
description: 'Join a federation
|
|
56
|
+
description: 'Join a federation endpoint. A signed manifest is required before consequential protocol capabilities are trusted.',
|
|
48
57
|
pluginName: '@claude-flow/plugin-agent-federation',
|
|
49
|
-
version:
|
|
58
|
+
version: FEDERATION_PLUGIN_VERSION,
|
|
50
59
|
inputSchema: {
|
|
51
60
|
type: 'object',
|
|
52
61
|
properties: {
|
|
53
62
|
endpoint: { type: 'string', description: 'Remote peer endpoint to join' },
|
|
63
|
+
manifest: {
|
|
64
|
+
type: 'object',
|
|
65
|
+
description: 'Optional signed peer manifest. Without it the session remains endpoint-only, untrusted, and legacy-low-risk.',
|
|
66
|
+
},
|
|
54
67
|
},
|
|
55
68
|
required: ['endpoint'],
|
|
56
69
|
},
|
|
57
70
|
handler: async (params) => {
|
|
58
71
|
const coordinator = requireCoordinator();
|
|
59
|
-
const session = await coordinator.joinPeer(params['endpoint']);
|
|
72
|
+
const session = await coordinator.joinPeer(params['endpoint'], params['manifest']);
|
|
60
73
|
return textResult(`Joined peer. Session: ${session.sessionId}, Trust: ${session.trustLevel}`);
|
|
61
74
|
},
|
|
62
75
|
},
|
|
@@ -64,7 +77,7 @@ export function createMcpTools(getCoordinator, getContext) {
|
|
|
64
77
|
name: 'federation_peers',
|
|
65
78
|
description: 'List all known federation peers with their trust levels and status',
|
|
66
79
|
pluginName: '@claude-flow/plugin-agent-federation',
|
|
67
|
-
version:
|
|
80
|
+
version: FEDERATION_PLUGIN_VERSION,
|
|
68
81
|
inputSchema: {
|
|
69
82
|
type: 'object',
|
|
70
83
|
properties: {},
|
|
@@ -79,7 +92,7 @@ export function createMcpTools(getCoordinator, getContext) {
|
|
|
79
92
|
name: 'federation_send',
|
|
80
93
|
description: 'Send a message to a federated peer through the PII pipeline and security gates. Optional budget controls (ADR-097): maxHops defaults to 8 to prevent recursive delegation; maxTokens/maxUsd cap cumulative spend across the hop chain.',
|
|
81
94
|
pluginName: '@claude-flow/plugin-agent-federation',
|
|
82
|
-
version:
|
|
95
|
+
version: FEDERATION_PLUGIN_VERSION,
|
|
83
96
|
inputSchema: {
|
|
84
97
|
type: 'object',
|
|
85
98
|
properties: {
|
|
@@ -131,7 +144,7 @@ export function createMcpTools(getCoordinator, getContext) {
|
|
|
131
144
|
name: 'federation_query',
|
|
132
145
|
description: 'Query federated memory from a remote peer (PII-gated)',
|
|
133
146
|
pluginName: '@claude-flow/plugin-agent-federation',
|
|
134
|
-
version:
|
|
147
|
+
version: FEDERATION_PLUGIN_VERSION,
|
|
135
148
|
inputSchema: {
|
|
136
149
|
type: 'object',
|
|
137
150
|
properties: {
|
|
@@ -151,7 +164,7 @@ export function createMcpTools(getCoordinator, getContext) {
|
|
|
151
164
|
name: 'federation_status',
|
|
152
165
|
description: 'Get federation health status including active sessions, peers, and trust levels',
|
|
153
166
|
pluginName: '@claude-flow/plugin-agent-federation',
|
|
154
|
-
version:
|
|
167
|
+
version: FEDERATION_PLUGIN_VERSION,
|
|
155
168
|
inputSchema: {
|
|
156
169
|
type: 'object',
|
|
157
170
|
properties: {},
|
|
@@ -165,7 +178,7 @@ export function createMcpTools(getCoordinator, getContext) {
|
|
|
165
178
|
name: 'federation_trust',
|
|
166
179
|
description: 'View or review trust score details for a specific node',
|
|
167
180
|
pluginName: '@claude-flow/plugin-agent-federation',
|
|
168
|
-
version:
|
|
181
|
+
version: FEDERATION_PLUGIN_VERSION,
|
|
169
182
|
inputSchema: {
|
|
170
183
|
type: 'object',
|
|
171
184
|
properties: {
|
|
@@ -188,7 +201,7 @@ export function createMcpTools(getCoordinator, getContext) {
|
|
|
188
201
|
name: 'federation_audit',
|
|
189
202
|
description: 'Query federation audit logs with optional compliance mode filtering',
|
|
190
203
|
pluginName: '@claude-flow/plugin-agent-federation',
|
|
191
|
-
version:
|
|
204
|
+
version: FEDERATION_PLUGIN_VERSION,
|
|
192
205
|
inputSchema: {
|
|
193
206
|
type: 'object',
|
|
194
207
|
properties: {
|
|
@@ -218,7 +231,7 @@ export function createMcpTools(getCoordinator, getContext) {
|
|
|
218
231
|
name: 'federation_breaker_status',
|
|
219
232
|
description: 'ADR-097 Phase 4: per-peer circuit-breaker state snapshot. Returns each known peer with its lifecycle state (ACTIVE/SUSPENDED/EVICTED), when it changed, and why. Combine with federation_evict / federation_reactivate to operate the breaker manually.',
|
|
220
233
|
pluginName: '@claude-flow/plugin-agent-federation',
|
|
221
|
-
version:
|
|
234
|
+
version: FEDERATION_PLUGIN_VERSION,
|
|
222
235
|
inputSchema: {
|
|
223
236
|
type: 'object',
|
|
224
237
|
properties: {
|
|
@@ -238,7 +251,7 @@ export function createMcpTools(getCoordinator, getContext) {
|
|
|
238
251
|
name: 'federation_evict',
|
|
239
252
|
description: 'ADR-097 Phase 4: operator-initiated evict for a peer. Marks the peer EVICTED so subsequent federation_send calls short-circuit with PEER_EVICTED. Reversible only via federation_reactivate (operator override).',
|
|
240
253
|
pluginName: '@claude-flow/plugin-agent-federation',
|
|
241
|
-
version:
|
|
254
|
+
version: FEDERATION_PLUGIN_VERSION,
|
|
242
255
|
inputSchema: {
|
|
243
256
|
type: 'object',
|
|
244
257
|
properties: {
|
|
@@ -260,7 +273,7 @@ export function createMcpTools(getCoordinator, getContext) {
|
|
|
260
273
|
name: 'federation_reactivate',
|
|
261
274
|
description: 'ADR-097 Phase 4: operator-initiated reactivate for a SUSPENDED or EVICTED peer. Used after a health probe confirms recovery, or as an operator override on a manual evict. The breaker does NOT auto-reactivate; this MCP tool is the explicit lever.',
|
|
262
275
|
pluginName: '@claude-flow/plugin-agent-federation',
|
|
263
|
-
version:
|
|
276
|
+
version: FEDERATION_PLUGIN_VERSION,
|
|
264
277
|
inputSchema: {
|
|
265
278
|
type: 'object',
|
|
266
279
|
properties: {
|
|
@@ -282,7 +295,7 @@ export function createMcpTools(getCoordinator, getContext) {
|
|
|
282
295
|
name: 'federation_report_spend',
|
|
283
296
|
description: 'ADR-097 Phase 3 upstream: report the actual cost of a completed federated call. Fans out to the cost-tracker bus (via the integrator-wired SpendReporter) and the breaker service (so its in-memory rolling buffer is fed). Both targets are optional; calling without either configured is a silent no-op.',
|
|
284
297
|
pluginName: '@claude-flow/plugin-agent-federation',
|
|
285
|
-
version:
|
|
298
|
+
version: FEDERATION_PLUGIN_VERSION,
|
|
286
299
|
inputSchema: {
|
|
287
300
|
type: 'object',
|
|
288
301
|
properties: {
|
|
@@ -312,7 +325,7 @@ export function createMcpTools(getCoordinator, getContext) {
|
|
|
312
325
|
name: 'federation_consensus',
|
|
313
326
|
description: 'Propose a federated consensus operation across all active peers',
|
|
314
327
|
pluginName: '@claude-flow/plugin-agent-federation',
|
|
315
|
-
version:
|
|
328
|
+
version: FEDERATION_PLUGIN_VERSION,
|
|
316
329
|
inputSchema: {
|
|
317
330
|
type: 'object',
|
|
318
331
|
properties: {
|
|
@@ -338,6 +351,89 @@ export function createMcpTools(getCoordinator, getContext) {
|
|
|
338
351
|
}, null, 2));
|
|
339
352
|
},
|
|
340
353
|
},
|
|
354
|
+
{
|
|
355
|
+
name: 'federation_wg_status',
|
|
356
|
+
description: 'ADR-111 Phase 6: WG mesh state — per-peer trust level, mesh IP, suspended/evicted flags, and the AllowedIPs slice each peer currently has. Use to inspect what the breaker has propagated to the L3 layer.',
|
|
357
|
+
pluginName: '@claude-flow/plugin-agent-federation',
|
|
358
|
+
version: FEDERATION_PLUGIN_VERSION,
|
|
359
|
+
inputSchema: {
|
|
360
|
+
type: 'object',
|
|
361
|
+
properties: {
|
|
362
|
+
nodeId: { type: 'string', description: 'Optional: filter to a single peer' },
|
|
363
|
+
},
|
|
364
|
+
},
|
|
365
|
+
handler: async (params) => {
|
|
366
|
+
const wg = requireWgMesh();
|
|
367
|
+
const coordinator = requireCoordinator();
|
|
368
|
+
const peers = coordinator.listPeers();
|
|
369
|
+
const summary = wg.summarize(peers);
|
|
370
|
+
const filter = params['nodeId'];
|
|
371
|
+
const filtered = filter ? summary.filter(s => s.nodeId === filter) : summary;
|
|
372
|
+
return textResult(JSON.stringify({
|
|
373
|
+
interfaceName: wg.getInterfaceName(),
|
|
374
|
+
meshSubnet: wg.getMeshSubnet(),
|
|
375
|
+
peers: filtered,
|
|
376
|
+
}, null, 2));
|
|
377
|
+
},
|
|
378
|
+
},
|
|
379
|
+
{
|
|
380
|
+
name: 'federation_wg_attest',
|
|
381
|
+
description: 'ADR-111 Phase 6 (witness chain): emit an operator-signed attestation entry for a coordination change. Returns the canonical bytes the operator signs + the witness entry; operator appends it to .claude-flow/federation/wg-changes.log. Idempotent — re-attesting the same change just appends another entry.',
|
|
382
|
+
pluginName: '@claude-flow/plugin-agent-federation',
|
|
383
|
+
version: FEDERATION_PLUGIN_VERSION,
|
|
384
|
+
inputSchema: {
|
|
385
|
+
type: 'object',
|
|
386
|
+
properties: {
|
|
387
|
+
eventType: { type: 'string', description: 'peer-added | peer-removed-suspended | peer-restored | peer-evicted | key-rotated | interface-config-applied' },
|
|
388
|
+
peerPublicKey: { type: 'string', description: 'Optional: peer pubkey (omit for interface-level events)' },
|
|
389
|
+
meshIP: { type: 'string', description: 'Optional: peer mesh IP' },
|
|
390
|
+
wgCommand: { type: 'string', description: 'Optional: wg command that was emitted' },
|
|
391
|
+
rationale: { type: 'string', description: 'Human-readable rationale for the audit log' },
|
|
392
|
+
},
|
|
393
|
+
required: ['eventType', 'rationale'],
|
|
394
|
+
},
|
|
395
|
+
handler: async () => {
|
|
396
|
+
// Phase 6 v1 stub — the WgWitnessService is the canonical signer. This
|
|
397
|
+
// MCP tool returns instructions until plugin.ts wires the service.
|
|
398
|
+
// Tracked alongside #1879 follow-up: integrate WgWitnessService into
|
|
399
|
+
// plugin lifecycle so this handler can call attestWgCommand directly.
|
|
400
|
+
return textResult('federation_wg_attest: wire WgWitnessService in plugin.ts (Phase 6 follow-up). Until then, use the WgWitnessService class directly from the federation package.', true);
|
|
401
|
+
},
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
name: 'federation_wg_keyrotate',
|
|
405
|
+
description: 'ADR-111 Phase 6: rotate the local WG keypair. Returns the new public key + recommended next steps (republish manifest, peers regenerate their wg-quick config, grace-period destruction of old key). DESTRUCTIVE — the old private key is overwritten on disk; existing tunnels are dropped until peers update.',
|
|
406
|
+
pluginName: '@claude-flow/plugin-agent-federation',
|
|
407
|
+
version: FEDERATION_PLUGIN_VERSION,
|
|
408
|
+
inputSchema: {
|
|
409
|
+
type: 'object',
|
|
410
|
+
properties: {
|
|
411
|
+
confirm: { type: 'boolean', description: 'Must be true. Destructive: drops existing tunnels until all peers update their config.' },
|
|
412
|
+
},
|
|
413
|
+
required: ['confirm'],
|
|
414
|
+
},
|
|
415
|
+
handler: async (params) => {
|
|
416
|
+
if (params['confirm'] !== true) {
|
|
417
|
+
return textResult('Refusing rotate: confirm must be true. This drops existing tunnels until peers fetch the new manifest.', true);
|
|
418
|
+
}
|
|
419
|
+
// Phase 6 v1: emits a fresh keypair + the upgrade checklist. plugin.ts
|
|
420
|
+
// is responsible for the actual disk write + manifest republish; this
|
|
421
|
+
// returns the new public key for the operator to coordinate.
|
|
422
|
+
const newKey = generateWgKeyPair();
|
|
423
|
+
return textResult(JSON.stringify({
|
|
424
|
+
publicKey: newKey.publicKey,
|
|
425
|
+
createdAt: newKey.createdAt,
|
|
426
|
+
nextSteps: [
|
|
427
|
+
'Write the new private key to .claude-flow/federation/wg-key-<nodeId>.json (mode 0600)',
|
|
428
|
+
'Republish federation manifest with the new wg.publicKey',
|
|
429
|
+
'Peers regenerate their wg-quick config from the updated manifest',
|
|
430
|
+
'Operator removes the old [Peer] block from /etc/wireguard/<iface>.conf after the grace period (default 1h)',
|
|
431
|
+
'Run federation_wg_attest with eventType=key-rotated',
|
|
432
|
+
],
|
|
433
|
+
warning: 'Private key NOT returned via MCP. The operator wires the actual disk persistence.',
|
|
434
|
+
}, null, 2));
|
|
435
|
+
},
|
|
436
|
+
},
|
|
341
437
|
];
|
|
342
438
|
}
|
|
343
439
|
//# sourceMappingURL=mcp-tools.js.map
|
package/dist/mcp-tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-tools.js","sourceRoot":"","sources":["../src/mcp-tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcp-tools.js","sourceRoot":"","sources":["../src/mcp-tools.ts"],"names":[],"mappings":"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"}
|
package/dist/plugin.d.ts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import type { ClaudeFlowPlugin, PluginContext, MCPToolDefinition, CLICommandDefinition, AgentTypeDefinition } from '@claude-flow/shared/src/plugin-interface.js';
|
|
2
2
|
export declare class AgentFederationPlugin implements ClaudeFlowPlugin {
|
|
3
3
|
readonly name = "@claude-flow/plugin-agent-federation";
|
|
4
|
-
readonly version
|
|
4
|
+
readonly version: "1.0.0-alpha.18";
|
|
5
5
|
readonly description = "Cross-installation agent federation with PII protection and AI defence";
|
|
6
6
|
readonly author = "Claude Flow Team";
|
|
7
7
|
readonly dependencies: string[];
|
|
8
8
|
private coordinator;
|
|
9
9
|
private context;
|
|
10
10
|
private transport;
|
|
11
|
+
private agentCardServer;
|
|
11
12
|
initialize(context: PluginContext): Promise<void>;
|
|
12
13
|
shutdown(): Promise<void>;
|
|
13
14
|
registerMCPTools(): MCPToolDefinition[];
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,6CAA6C,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,6CAA6C,CAAC;AAiErD,qBAAa,qBAAsB,YAAW,gBAAgB;IAC5D,QAAQ,CAAC,IAAI,0CAA0C;IACvD,QAAQ,CAAC,OAAO,mBAA6B;IAC7C,QAAQ,CAAC,WAAW,4EAA4E;IAChG,QAAQ,CAAC,MAAM,sBAAsB;IACrC,QAAQ,CAAC,YAAY,WAAuD;IAE5E,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,OAAO,CAA8B;IAK7C,OAAO,CAAC,SAAS,CAAgC;IAGjD,OAAO,CAAC,eAAe,CAAsC;IAEvD,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IA+bjD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IA6B/B,gBAAgB,IAAI,iBAAiB,EAAE;IAIvC,mBAAmB,IAAI,oBAAoB,EAAE;IAI7C,kBAAkB,IAAI,mBAAmB,EAAE;IAiCrC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAKtC"}
|
package/dist/plugin.js
CHANGED
|
@@ -17,13 +17,29 @@ import { AuditService } from './domain/services/audit-service.js';
|
|
|
17
17
|
import { PIIPipelineService } from './domain/services/pii-pipeline-service.js';
|
|
18
18
|
import { TrustEvaluator } from './application/trust-evaluator.js';
|
|
19
19
|
import { PolicyEngine } from './application/policy-engine.js';
|
|
20
|
+
import { createFederationClaimChecker, } from './application/claim-checker.js';
|
|
20
21
|
import { getTrustLevelLabel } from './domain/entities/trust-level.js';
|
|
21
|
-
|
|
22
|
+
// ADR-104: real wire transport via agentic-flow loader pattern.
|
|
23
|
+
// ADR-120: midstream-aware loader wraps the agentic-flow loader so
|
|
24
|
+
// when `midstreamer` (ruvnet/midstream) ships its production QUIC
|
|
25
|
+
// build (Step 1 of ADR-120) and operators opt in with
|
|
26
|
+
// MIDSTREAMER_QUIC_NATIVE=1, the federation transport auto-upgrades.
|
|
27
|
+
// Until then, the wrapper transparently defers to the agentic-flow
|
|
28
|
+
// loader — which itself resolves to WebSocketFallbackTransport
|
|
29
|
+
// today, or native QUIC when AGENTIC_FLOW_QUIC_NATIVE=1.
|
|
30
|
+
import { loadFederationTransport, } from './transport/midstream-aware-loader.js';
|
|
31
|
+
import { DEFAULT_ENVELOPE_SIGNATURE_MODE, JCS_SIGNATURE_PROTOCOL, canonicalizeEnvelopeForVerify, dispatchInbound, selectEnvelopeSignatureVersion, } from './application/inbound-dispatcher.js';
|
|
22
32
|
import { createMcpTools } from './mcp-tools.js';
|
|
23
33
|
import { createCliCommands } from './cli-commands.js';
|
|
34
|
+
import { FEDERATION_PLUGIN_VERSION } from './version.js';
|
|
35
|
+
// A2A (Agent2Agent, Linux Foundation) Agent Card adapter — cards only.
|
|
36
|
+
// Opt-in via config.a2aCard; serves /.well-known/agent-card.json on a
|
|
37
|
+
// 127.0.0.1-default bind (ADR-166 posture preserved).
|
|
38
|
+
import { toAgentCard } from './a2a/agent-card.js';
|
|
39
|
+
import { startAgentCardServer } from './a2a/well-known.js';
|
|
24
40
|
export class AgentFederationPlugin {
|
|
25
41
|
name = '@claude-flow/plugin-agent-federation';
|
|
26
|
-
version =
|
|
42
|
+
version = FEDERATION_PLUGIN_VERSION;
|
|
27
43
|
description = 'Cross-installation agent federation with PII protection and AI defence';
|
|
28
44
|
author = 'Claude Flow Team';
|
|
29
45
|
dependencies = ['@claude-flow/security', '@claude-flow/aidefence'];
|
|
@@ -34,6 +50,9 @@ export class AgentFederationPlugin {
|
|
|
34
50
|
// in-process behavior — preserves backward compat for tests that
|
|
35
51
|
// don't supply a port).
|
|
36
52
|
transport = null;
|
|
53
|
+
// A2A Agent Card well-known endpoint (opt-in via config.a2aCard). Null
|
|
54
|
+
// when the HTTP surface is off — everything else works without it.
|
|
55
|
+
agentCardServer = null;
|
|
37
56
|
async initialize(context) {
|
|
38
57
|
this.context = context;
|
|
39
58
|
const config = context.config;
|
|
@@ -42,6 +61,11 @@ export class AgentFederationPlugin {
|
|
|
42
61
|
const complianceMode = config['complianceMode'] ?? 'none';
|
|
43
62
|
const staticPeers = config['staticPeers'] ?? [];
|
|
44
63
|
const hashSalt = config['hashSalt'] ?? `salt-${nodeId}`;
|
|
64
|
+
const signatureMode = config['signatureMode']
|
|
65
|
+
?? DEFAULT_ENVELOPE_SIGNATURE_MODE;
|
|
66
|
+
if (!['legacy', 'prefer-jcs', 'require-jcs'].includes(signatureMode)) {
|
|
67
|
+
throw new TypeError(`Unsupported federation signature mode: ${String(signatureMode)}`);
|
|
68
|
+
}
|
|
45
69
|
// ADR-095 G2: real Ed25519 keypair instead of empty publicKey + stub
|
|
46
70
|
// signatures. Persist to .claude-flow/federation/key-<nodeId>.json so
|
|
47
71
|
// the same node identity survives restarts. Audit log
|
|
@@ -82,7 +106,21 @@ export class AgentFederationPlugin {
|
|
|
82
106
|
nodeId,
|
|
83
107
|
publicKey: publicKeyHex,
|
|
84
108
|
endpoint,
|
|
85
|
-
capabilities: [
|
|
109
|
+
capabilities: [
|
|
110
|
+
'send',
|
|
111
|
+
'receive',
|
|
112
|
+
'query-redacted',
|
|
113
|
+
'status',
|
|
114
|
+
'ping',
|
|
115
|
+
'discovery',
|
|
116
|
+
...(signatureMode === 'legacy' ? [] : [JCS_SIGNATURE_PROTOCOL]),
|
|
117
|
+
],
|
|
118
|
+
supportedProtocols: [
|
|
119
|
+
'websocket',
|
|
120
|
+
'http',
|
|
121
|
+
...(signatureMode === 'legacy' ? [] : [JCS_SIGNATURE_PROTOCOL]),
|
|
122
|
+
],
|
|
123
|
+
version: FEDERATION_PLUGIN_VERSION,
|
|
86
124
|
};
|
|
87
125
|
const generateId = () => `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;
|
|
88
126
|
// ADR-095 G2: real signing + verification using @noble/ed25519. The
|
|
@@ -169,22 +207,45 @@ export class AgentFederationPlugin {
|
|
|
169
207
|
context.eventBus.emit('federation:trust-change', { nodeId: nid, ...result });
|
|
170
208
|
},
|
|
171
209
|
});
|
|
172
|
-
const
|
|
210
|
+
const authorizationMode = config['authorizationMode'] ?? 'legacy';
|
|
211
|
+
const grantedClaims = Array.isArray(config['federationClaims'])
|
|
212
|
+
? config['federationClaims'].filter((claim) => typeof claim === 'string')
|
|
213
|
+
: [];
|
|
214
|
+
const claimChecker = createFederationClaimChecker({
|
|
215
|
+
mode: authorizationMode,
|
|
216
|
+
grantedClaims,
|
|
217
|
+
onObservation: (claim, granted) => {
|
|
218
|
+
context.eventBus.emit('federation:policy-observation', {
|
|
219
|
+
claim,
|
|
220
|
+
granted,
|
|
221
|
+
mode: authorizationMode,
|
|
222
|
+
});
|
|
223
|
+
},
|
|
224
|
+
});
|
|
225
|
+
if (claimChecker.mode === 'legacy') {
|
|
226
|
+
context.logger.warn('Federation authorization is in ADR-325 legacy compatibility mode; ' +
|
|
227
|
+
'use observe before enabling enforce');
|
|
228
|
+
}
|
|
229
|
+
const policyEngine = new PolicyEngine({ checkClaim: claimChecker.checkClaim });
|
|
173
230
|
const sessions = new Map();
|
|
174
|
-
// ADR-104: load wire transport. WebSocket fallback by
|
|
175
|
-
// QUIC when AGENTIC_FLOW_QUIC_NATIVE=1
|
|
176
|
-
//
|
|
177
|
-
//
|
|
231
|
+
// ADR-104 + ADR-120: load wire transport. WebSocket fallback by
|
|
232
|
+
// default; native QUIC when AGENTIC_FLOW_QUIC_NATIVE=1 (ADR-108) or
|
|
233
|
+
// MIDSTREAMER_QUIC_NATIVE=1 (ADR-120 Step 1, when midstream@0.3.0
|
|
234
|
+
// ships its real QUIC build). The midstream-aware loader picks the
|
|
235
|
+
// best available transport transparently. Failures downgrade to
|
|
236
|
+
// in-process noop (logged), preserving backward compat for
|
|
237
|
+
// tests/environments without ws available.
|
|
178
238
|
let transport = null;
|
|
179
239
|
try {
|
|
180
|
-
|
|
240
|
+
const loaded = await loadFederationTransport({
|
|
181
241
|
serverName: nodeId,
|
|
182
242
|
maxIdleTimeoutMs: 30_000,
|
|
183
243
|
maxConcurrentStreams: 100,
|
|
184
244
|
enable0Rtt: true,
|
|
185
245
|
});
|
|
246
|
+
transport = loaded.transport;
|
|
186
247
|
this.transport = transport;
|
|
187
|
-
context.logger.info(`Federation transport loaded: ${nodeId}`);
|
|
248
|
+
context.logger.info(`Federation transport loaded: ${nodeId} (source=${loaded.source}${loaded.fallbackReason ? `, note=${loaded.fallbackReason}` : ''})`);
|
|
188
249
|
}
|
|
189
250
|
catch (err) {
|
|
190
251
|
context.logger.warn(`Federation transport unavailable (${err instanceof Error ? err.message : err}); ` +
|
|
@@ -242,11 +303,17 @@ export class AgentFederationPlugin {
|
|
|
242
303
|
return;
|
|
243
304
|
}
|
|
244
305
|
const address = resolveAddress(targetNodeId);
|
|
245
|
-
|
|
306
|
+
const peer = discovery.getPeer(targetNodeId);
|
|
307
|
+
if (!address || !peer) {
|
|
246
308
|
context.logger.warn(`Federation send aborted: peer ${targetNodeId} not in discovery registry`);
|
|
247
309
|
throw new Error(`PEER_UNKNOWN: ${targetNodeId}`);
|
|
248
310
|
}
|
|
249
|
-
const
|
|
311
|
+
const signatureVersion = selectEnvelopeSignatureVersion(signatureMode, peer.capabilities.supportedProtocols, envelope.messageType);
|
|
312
|
+
// Build the AgentMessage WITHOUT signature first, canonicalize
|
|
313
|
+
// the bytes, sign them, then attach the signature to metadata.
|
|
314
|
+
// The receiver runs the same canonicalization and verifies
|
|
315
|
+
// against this node's published public key.
|
|
316
|
+
const baseMessage = {
|
|
250
317
|
id: envelope.envelopeId,
|
|
251
318
|
type: envelope.messageType,
|
|
252
319
|
payload: envelope,
|
|
@@ -254,10 +321,17 @@ export class AgentFederationPlugin {
|
|
|
254
321
|
sourceNodeId: envelope.sourceNodeId,
|
|
255
322
|
targetNodeId: envelope.targetNodeId,
|
|
256
323
|
sessionId: envelope.sessionId,
|
|
324
|
+
...(signatureVersion === 'jcs-v1' ? { signatureVersion } : {}),
|
|
257
325
|
},
|
|
258
326
|
};
|
|
259
|
-
|
|
260
|
-
|
|
327
|
+
const canon = canonicalizeEnvelopeForVerify(baseMessage, signatureVersion);
|
|
328
|
+
const signature = signBytes(canon);
|
|
329
|
+
const signed = {
|
|
330
|
+
...baseMessage,
|
|
331
|
+
metadata: { ...baseMessage.metadata, signature },
|
|
332
|
+
};
|
|
333
|
+
await transport.send(address, signed);
|
|
334
|
+
context.logger.debug(`Federation send → ${address} (envelope=${envelope.envelopeId}, type=${envelope.messageType}, signed)`);
|
|
261
335
|
},
|
|
262
336
|
getActiveSessions: () => Array.from(sessions.values()).filter(s => s.active),
|
|
263
337
|
getLocalNodeId: () => nodeId,
|
|
@@ -290,16 +364,100 @@ export class AgentFederationPlugin {
|
|
|
290
364
|
(err instanceof Error ? err.message : String(err)));
|
|
291
365
|
}
|
|
292
366
|
}
|
|
367
|
+
// ADR-109: subscribe to inbound messages. transport.onMessage was
|
|
368
|
+
// added in agentic-flow@2.0.12-fix.3 — older builds gracefully
|
|
369
|
+
// degrade (optional method, no-op via the ?? guard).
|
|
370
|
+
if (transport && typeof transport.onMessage === 'function') {
|
|
371
|
+
// Real Ed25519 envelope verifier — closes the inbound trust gap
|
|
372
|
+
// (without this, sourceNodeId in metadata is a self-claim, not
|
|
373
|
+
// an authenticated assertion).
|
|
374
|
+
const verifyEnvelope = (canonicalBytes, signatureHex, peerPublicKeyHex) => {
|
|
375
|
+
if (!signatureHex || !peerPublicKeyHex)
|
|
376
|
+
return false;
|
|
377
|
+
return verifyBytes(canonicalBytes, signatureHex, peerPublicKeyHex);
|
|
378
|
+
};
|
|
379
|
+
transport.onMessage(async (address, message) => {
|
|
380
|
+
await dispatchInbound(address, message, {
|
|
381
|
+
discovery,
|
|
382
|
+
audit,
|
|
383
|
+
eventBus: context.eventBus,
|
|
384
|
+
logger: context.logger,
|
|
385
|
+
verifyEnvelope,
|
|
386
|
+
acceptedSignatureVersions: signatureMode === 'require-jcs' ? ['jcs-v1'] : ['legacy-v1', 'jcs-v1'],
|
|
387
|
+
authorizationMode,
|
|
388
|
+
authorizeInbound: ({ messageType, peer, messageSizeBytes, sourceNodeId }) => policyEngine.evaluateMessage(messageType, peer.trustLevel, messageSizeBytes, sourceNodeId),
|
|
389
|
+
});
|
|
390
|
+
});
|
|
391
|
+
context.logger.debug('Federation inbound dispatcher subscribed (with Ed25519 sig verify)');
|
|
392
|
+
}
|
|
393
|
+
else {
|
|
394
|
+
context.logger.warn('Federation transport does not expose onMessage(); inbound bytes will queue but not dispatch. ' +
|
|
395
|
+
'Upgrade agentic-flow to >= 2.0.12-fix.3.');
|
|
396
|
+
}
|
|
397
|
+
// A2A Agent Card well-known endpoint (opt-in, graceful). Enabled with
|
|
398
|
+
// config.a2aCard = true + config.a2aCardPort. Serves the local node's
|
|
399
|
+
// manifest as a spec-compliant A2A 1.0 card at
|
|
400
|
+
// /.well-known/agent-card.json. Binds 127.0.0.1 unless config.a2aCardHost
|
|
401
|
+
// is set AND config.a2aCardAllowNonLoopback is true (ADR-166: never
|
|
402
|
+
// loosen binding implicitly). A bind failure logs and degrades — the
|
|
403
|
+
// rest of federation is unaffected.
|
|
404
|
+
const a2aEnabled = config['a2aCard'] === true;
|
|
405
|
+
const a2aPort = config['a2aCardPort'];
|
|
406
|
+
if (a2aEnabled && typeof a2aPort === 'number') {
|
|
407
|
+
try {
|
|
408
|
+
this.agentCardServer = await startAgentCardServer({
|
|
409
|
+
getCard: () => {
|
|
410
|
+
const manifest = discovery.getLocalManifest() ?? {
|
|
411
|
+
nodeId,
|
|
412
|
+
publicKey: publicKeyHex,
|
|
413
|
+
endpoint,
|
|
414
|
+
capabilities: {
|
|
415
|
+
agentTypes: coordConfig.capabilities,
|
|
416
|
+
maxConcurrentSessions: 10,
|
|
417
|
+
supportedProtocols: [
|
|
418
|
+
'websocket',
|
|
419
|
+
'http',
|
|
420
|
+
...(signatureMode === 'legacy' ? [] : [JCS_SIGNATURE_PROTOCOL]),
|
|
421
|
+
],
|
|
422
|
+
complianceModes: complianceMode === 'none' ? [] : [complianceMode],
|
|
423
|
+
},
|
|
424
|
+
version: this.version,
|
|
425
|
+
signature: '',
|
|
426
|
+
timestamp: new Date().toISOString(),
|
|
427
|
+
};
|
|
428
|
+
return toAgentCard(manifest);
|
|
429
|
+
},
|
|
430
|
+
port: a2aPort,
|
|
431
|
+
host: config['a2aCardHost'] ?? '127.0.0.1',
|
|
432
|
+
allowNonLoopback: config['a2aCardAllowNonLoopback'] === true,
|
|
433
|
+
});
|
|
434
|
+
context.logger.info(`A2A agent card served at ${this.agentCardServer.url}`);
|
|
435
|
+
}
|
|
436
|
+
catch (err) {
|
|
437
|
+
context.logger.warn(`A2A agent card endpoint unavailable (${err instanceof Error ? err.message : err}); ` +
|
|
438
|
+
'federation continues without the A2A discovery surface');
|
|
439
|
+
this.agentCardServer = null;
|
|
440
|
+
}
|
|
441
|
+
}
|
|
293
442
|
context.logger.info('Agent Federation plugin initialized');
|
|
294
443
|
}
|
|
295
444
|
async shutdown() {
|
|
445
|
+
if (this.agentCardServer) {
|
|
446
|
+
try {
|
|
447
|
+
await this.agentCardServer.close();
|
|
448
|
+
}
|
|
449
|
+
catch (err) {
|
|
450
|
+
this.context?.logger.warn(`A2A agent card server close error: ${err instanceof Error ? err.message : err}`);
|
|
451
|
+
}
|
|
452
|
+
this.agentCardServer = null;
|
|
453
|
+
}
|
|
296
454
|
if (this.coordinator) {
|
|
297
455
|
await this.coordinator.shutdown();
|
|
298
456
|
this.coordinator = null;
|
|
299
457
|
}
|
|
300
458
|
if (this.transport) {
|
|
301
459
|
try {
|
|
302
|
-
await this.transport.close();
|
|
460
|
+
await this.transport.close?.();
|
|
303
461
|
}
|
|
304
462
|
catch (err) {
|
|
305
463
|
this.context?.logger.warn(`Federation transport close error: ${err instanceof Error ? err.message : err}`);
|