@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.
Files changed (92) hide show
  1. package/README.md +4 -0
  2. package/dist/a2a/agent-card.d.ts +130 -0
  3. package/dist/a2a/agent-card.d.ts.map +1 -0
  4. package/dist/a2a/agent-card.js +239 -0
  5. package/dist/a2a/agent-card.js.map +1 -0
  6. package/dist/a2a/consume.d.ts +34 -0
  7. package/dist/a2a/consume.d.ts.map +1 -0
  8. package/dist/a2a/consume.js +69 -0
  9. package/dist/a2a/consume.js.map +1 -0
  10. package/dist/a2a/planner-descriptor.d.ts +40 -0
  11. package/dist/a2a/planner-descriptor.d.ts.map +1 -0
  12. package/dist/a2a/planner-descriptor.js +100 -0
  13. package/dist/a2a/planner-descriptor.js.map +1 -0
  14. package/dist/a2a/well-known.d.ts +46 -0
  15. package/dist/a2a/well-known.d.ts.map +1 -0
  16. package/dist/a2a/well-known.js +84 -0
  17. package/dist/a2a/well-known.js.map +1 -0
  18. package/dist/application/claim-checker.d.ts +27 -0
  19. package/dist/application/claim-checker.d.ts.map +1 -0
  20. package/dist/application/claim-checker.js +46 -0
  21. package/dist/application/claim-checker.js.map +1 -0
  22. package/dist/application/federation-breaker-service.d.ts +11 -1
  23. package/dist/application/federation-breaker-service.d.ts.map +1 -1
  24. package/dist/application/federation-breaker-service.js +12 -10
  25. package/dist/application/federation-breaker-service.js.map +1 -1
  26. package/dist/application/federation-coordinator.d.ts +48 -3
  27. package/dist/application/federation-coordinator.d.ts.map +1 -1
  28. package/dist/application/federation-coordinator.js +111 -22
  29. package/dist/application/federation-coordinator.js.map +1 -1
  30. package/dist/application/inbound-dispatcher.d.ts +114 -0
  31. package/dist/application/inbound-dispatcher.d.ts.map +1 -0
  32. package/dist/application/inbound-dispatcher.js +356 -0
  33. package/dist/application/inbound-dispatcher.js.map +1 -0
  34. package/dist/application/spend-reporter.d.ts +77 -0
  35. package/dist/application/spend-reporter.d.ts.map +1 -1
  36. package/dist/application/spend-reporter.js +76 -0
  37. package/dist/application/spend-reporter.js.map +1 -1
  38. package/dist/application/trust-evaluator.d.ts +32 -0
  39. package/dist/application/trust-evaluator.d.ts.map +1 -1
  40. package/dist/application/trust-evaluator.js +47 -0
  41. package/dist/application/trust-evaluator.js.map +1 -1
  42. package/dist/bin.d.ts +1 -1
  43. package/dist/bin.js +2 -2
  44. package/dist/bin.js.map +1 -1
  45. package/dist/cli-commands.d.ts.map +1 -1
  46. package/dist/cli-commands.js +125 -6
  47. package/dist/cli-commands.js.map +1 -1
  48. package/dist/domain/services/discovery-service.d.ts +18 -1
  49. package/dist/domain/services/discovery-service.d.ts.map +1 -1
  50. package/dist/domain/services/discovery-service.js +21 -0
  51. package/dist/domain/services/discovery-service.js.map +1 -1
  52. package/dist/domain/services/handshake-service.d.ts +10 -0
  53. package/dist/domain/services/handshake-service.d.ts.map +1 -1
  54. package/dist/domain/services/handshake-service.js +28 -0
  55. package/dist/domain/services/handshake-service.js.map +1 -1
  56. package/dist/domain/services/wg-firewall-service.d.ts +71 -0
  57. package/dist/domain/services/wg-firewall-service.d.ts.map +1 -0
  58. package/dist/domain/services/wg-firewall-service.js +194 -0
  59. package/dist/domain/services/wg-firewall-service.js.map +1 -0
  60. package/dist/domain/services/wg-mesh-service.d.ts +156 -0
  61. package/dist/domain/services/wg-mesh-service.d.ts.map +1 -0
  62. package/dist/domain/services/wg-mesh-service.js +292 -0
  63. package/dist/domain/services/wg-mesh-service.js.map +1 -0
  64. package/dist/domain/services/wg-witness-service.d.ts +98 -0
  65. package/dist/domain/services/wg-witness-service.d.ts.map +1 -0
  66. package/dist/domain/services/wg-witness-service.js +122 -0
  67. package/dist/domain/services/wg-witness-service.js.map +1 -0
  68. package/dist/domain/value-objects/wg-config.d.ts +70 -0
  69. package/dist/domain/value-objects/wg-config.d.ts.map +1 -0
  70. package/dist/domain/value-objects/wg-config.js +104 -0
  71. package/dist/domain/value-objects/wg-config.js.map +1 -0
  72. package/dist/index.d.ts +8 -1
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js +9 -1
  75. package/dist/index.js.map +1 -1
  76. package/dist/mcp-tools.d.ts +3 -1
  77. package/dist/mcp-tools.d.ts.map +1 -1
  78. package/dist/mcp-tools.js +114 -18
  79. package/dist/mcp-tools.js.map +1 -1
  80. package/dist/plugin.d.ts +2 -1
  81. package/dist/plugin.d.ts.map +1 -1
  82. package/dist/plugin.js +173 -15
  83. package/dist/plugin.js.map +1 -1
  84. package/dist/transport/midstream-aware-loader.d.ts +72 -0
  85. package/dist/transport/midstream-aware-loader.d.ts.map +1 -0
  86. package/dist/transport/midstream-aware-loader.js +269 -0
  87. package/dist/transport/midstream-aware-loader.js.map +1 -0
  88. package/dist/version.d.ts +3 -0
  89. package/dist/version.d.ts.map +1 -0
  90. package/dist/version.js +3 -0
  91. package/dist/version.js.map +1 -0
  92. 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: '1.0.0-alpha.1',
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: '1.0.0-alpha.1',
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 by connecting to a remote peer endpoint',
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: '1.0.0-alpha.1',
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: '1.0.0-alpha.1',
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: '1.0.0-alpha.1',
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: '1.0.0-alpha.1',
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: '1.0.0-alpha.1',
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: '1.0.0-alpha.1',
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: '1.0.0-alpha.1',
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: '1.0.0-alpha.1',
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: '1.0.0-alpha.1',
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: '1.0.0-alpha.1',
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: '1.0.0-alpha.1',
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: '1.0.0-alpha.1',
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
@@ -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 = "1.0.0-alpha.1";
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[];
@@ -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;AAyCrD,qBAAa,qBAAsB,YAAW,gBAAgB;IAC5D,QAAQ,CAAC,IAAI,0CAA0C;IACvD,QAAQ,CAAC,OAAO,mBAAmB;IACnC,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;IAE3C,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAqSjD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB/B,gBAAgB,IAAI,iBAAiB,EAAE;IAIvC,mBAAmB,IAAI,oBAAoB,EAAE;IAI7C,kBAAkB,IAAI,mBAAmB,EAAE;IAiCrC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAKtC"}
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
- import { loadQuicTransport, } from 'agentic-flow/transport/loader';
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 = '1.0.0-alpha.1';
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: ['send', 'receive', 'query-redacted', 'status', 'ping', 'discovery'],
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 policyEngine = new PolicyEngine({ checkClaim: () => true });
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 default; native
175
- // QUIC when AGENTIC_FLOW_QUIC_NATIVE=1 + binding installed. Failures
176
- // here downgrade to in-process noop (logged), preserving backward
177
- // compat for tests/environments without ws available.
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
- transport = await loadQuicTransport({
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
- if (!address) {
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 message = {
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
- await transport.send(address, message);
260
- context.logger.debug(`Federation send → ${address} (envelope=${envelope.envelopeId}, type=${envelope.messageType})`);
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}`);