@claude-flow/plugin-agent-federation 1.0.0-alpha.8 → 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 +3 -1
  81. package/dist/plugin.d.ts.map +1 -1
  82. package/dist/plugin.js +260 -4
  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 +22 -5
package/dist/plugin.js CHANGED
@@ -17,17 +17,42 @@ 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';
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';
21
32
  import { createMcpTools } from './mcp-tools.js';
22
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';
23
40
  export class AgentFederationPlugin {
24
41
  name = '@claude-flow/plugin-agent-federation';
25
- version = '1.0.0-alpha.1';
42
+ version = FEDERATION_PLUGIN_VERSION;
26
43
  description = 'Cross-installation agent federation with PII protection and AI defence';
27
44
  author = 'Claude Flow Team';
28
45
  dependencies = ['@claude-flow/security', '@claude-flow/aidefence'];
29
46
  coordinator = null;
30
47
  context = null;
48
+ // ADR-104: live transport instance, created in initialize() and torn
49
+ // down in shutdown(). Null when transport is disabled (the legacy
50
+ // in-process behavior — preserves backward compat for tests that
51
+ // don't supply a port).
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;
31
56
  async initialize(context) {
32
57
  this.context = context;
33
58
  const config = context.config;
@@ -36,6 +61,11 @@ export class AgentFederationPlugin {
36
61
  const complianceMode = config['complianceMode'] ?? 'none';
37
62
  const staticPeers = config['staticPeers'] ?? [];
38
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
+ }
39
69
  // ADR-095 G2: real Ed25519 keypair instead of empty publicKey + stub
40
70
  // signatures. Persist to .claude-flow/federation/key-<nodeId>.json so
41
71
  // the same node identity survives restarts. Audit log
@@ -76,7 +106,21 @@ export class AgentFederationPlugin {
76
106
  nodeId,
77
107
  publicKey: publicKeyHex,
78
108
  endpoint,
79
- 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,
80
124
  };
81
125
  const generateId = () => `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;
82
126
  // ADR-095 G2: real signing + verification using @noble/ed25519. The
@@ -163,8 +207,69 @@ export class AgentFederationPlugin {
163
207
  context.eventBus.emit('federation:trust-change', { nodeId: nid, ...result });
164
208
  },
165
209
  });
166
- 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 });
167
230
  const sessions = new Map();
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.
238
+ let transport = null;
239
+ try {
240
+ const loaded = await loadFederationTransport({
241
+ serverName: nodeId,
242
+ maxIdleTimeoutMs: 30_000,
243
+ maxConcurrentStreams: 100,
244
+ enable0Rtt: true,
245
+ });
246
+ transport = loaded.transport;
247
+ this.transport = transport;
248
+ context.logger.info(`Federation transport loaded: ${nodeId} (source=${loaded.source}${loaded.fallbackReason ? `, note=${loaded.fallbackReason}` : ''})`);
249
+ }
250
+ catch (err) {
251
+ context.logger.warn(`Federation transport unavailable (${err instanceof Error ? err.message : err}); ` +
252
+ `falling back to in-process routing — federation_send will log only`);
253
+ }
254
+ /**
255
+ * Resolve a peer's nodeId to a wire address suitable for
256
+ * transport.send(). Looks up the discovery registry to get the
257
+ * peer's published endpoint, then strips the protocol prefix to
258
+ * get a `host:port` string.
259
+ *
260
+ * Endpoint shapes accepted:
261
+ * - "ws://host:port" → "host:port"
262
+ * - "tailscale://host:port" → "host:port"
263
+ * - "host:port" → "host:port" (passthrough)
264
+ */
265
+ const resolveAddress = (targetNodeId) => {
266
+ const peer = discovery.getPeer(targetNodeId);
267
+ if (!peer)
268
+ return null;
269
+ const ep = peer.endpoint;
270
+ const m = ep.match(/^(?:[a-z]+:\/\/)?(.+)$/);
271
+ return m ? m[1] : ep;
272
+ };
168
273
  const routing = new RoutingService({
169
274
  generateEnvelopeId: generateId,
170
275
  generateNonce: () => `nonce-${Math.random().toString(36).slice(2)}`,
@@ -188,7 +293,45 @@ export class AgentFederationPlugin {
188
293
  };
189
294
  },
190
295
  sendToNode: async (targetNodeId, envelope) => {
191
- context.logger.debug(`Sending envelope ${envelope.envelopeId} to ${targetNodeId}`);
296
+ // ADR-104: real wire send via the loaded transport. If the
297
+ // transport failed to load OR the peer's address can't be
298
+ // resolved, log + return (the upstream RoutingService.send
299
+ // already wraps this in try/catch and returns a RoutingResult
300
+ // with the error to the caller).
301
+ if (!transport) {
302
+ context.logger.debug(`Federation send (in-process noop): ${envelope.envelopeId} → ${targetNodeId}`);
303
+ return;
304
+ }
305
+ const address = resolveAddress(targetNodeId);
306
+ const peer = discovery.getPeer(targetNodeId);
307
+ if (!address || !peer) {
308
+ context.logger.warn(`Federation send aborted: peer ${targetNodeId} not in discovery registry`);
309
+ throw new Error(`PEER_UNKNOWN: ${targetNodeId}`);
310
+ }
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 = {
317
+ id: envelope.envelopeId,
318
+ type: envelope.messageType,
319
+ payload: envelope,
320
+ metadata: {
321
+ sourceNodeId: envelope.sourceNodeId,
322
+ targetNodeId: envelope.targetNodeId,
323
+ sessionId: envelope.sessionId,
324
+ ...(signatureVersion === 'jcs-v1' ? { signatureVersion } : {}),
325
+ },
326
+ };
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)`);
192
335
  },
193
336
  getActiveSessions: () => Array.from(sessions.values()).filter(s => s.active),
194
337
  getLocalNodeId: () => nodeId,
@@ -201,13 +344,126 @@ export class AgentFederationPlugin {
201
344
  context.services.register('federation:trust', trustEvaluator);
202
345
  context.services.register('federation:policy', policyEngine);
203
346
  context.services.register('federation:routing', routing);
347
+ if (transport) {
348
+ context.services.register('federation:transport', transport);
349
+ }
350
+ // ADR-104: bind the inbound listener if config supplies a port. The
351
+ // port is OPTIONAL — peers that only initiate outbound (no inbound
352
+ // accept) leave it unset. Common config: port 9100 for tailscale
353
+ // hosts. Defaults to "no listener" so existing tests/configs don't
354
+ // need to free a port.
355
+ const listenPort = config['port'];
356
+ if (transport && typeof listenPort === 'number' && transport.listen) {
357
+ const listenHost = config['host'] ?? '0.0.0.0';
358
+ try {
359
+ await transport.listen(listenPort, listenHost);
360
+ context.logger.info(`Federation listening on ${listenHost}:${listenPort}`);
361
+ }
362
+ catch (err) {
363
+ context.logger.error(`Federation listener bind failed on ${listenHost}:${listenPort}: ` +
364
+ (err instanceof Error ? err.message : String(err)));
365
+ }
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
+ }
204
442
  context.logger.info('Agent Federation plugin initialized');
205
443
  }
206
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
+ }
207
454
  if (this.coordinator) {
208
455
  await this.coordinator.shutdown();
209
456
  this.coordinator = null;
210
457
  }
458
+ if (this.transport) {
459
+ try {
460
+ await this.transport.close?.();
461
+ }
462
+ catch (err) {
463
+ this.context?.logger.warn(`Federation transport close error: ${err instanceof Error ? err.message : err}`);
464
+ }
465
+ this.transport = null;
466
+ }
211
467
  this.context?.logger.info('Agent Federation plugin shut down');
212
468
  this.context = null;
213
469
  }
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Midstream-aware federation transport loader (ADR-120, Step 2).
3
+ *
4
+ * Extends the agentic-flow `loadQuicTransport` loader pattern with a
5
+ * preferred branch that probes `midstreamer` first. When `midstreamer`
6
+ * ships real QUIC (currently the WASM build is a counter-tracking
7
+ * stub per ADR-119), this loader picks it up automatically without
8
+ * any change to consumer plugins.
9
+ *
10
+ * Resolution order:
11
+ *
12
+ * 1. If `MIDSTREAMER_QUIC_NATIVE=1` AND the `midstreamer` module
13
+ * exposes a real `QuicMultistream`-derived `AgentTransport`,
14
+ * use it. (Today: probes fail closed and we fall through.)
15
+ *
16
+ * 2. Otherwise: defer to agentic-flow's existing loader, which
17
+ * itself respects `AGENTIC_FLOW_QUIC_NATIVE=1` (ADR-108) and
18
+ * falls back to WebSocket (ADR-104) otherwise.
19
+ *
20
+ * The loader is opt-in: callers must explicitly invoke
21
+ * `loadFederationTransport()` instead of `loadQuicTransport()`.
22
+ * Behavior is identical to `loadQuicTransport()` until upstream
23
+ * `midstreamer` ships its real QUIC build AND the operator sets the
24
+ * env flag — so this change is safe to land before any of that
25
+ * happens.
26
+ *
27
+ * Re-exports the `AgentTransport` / `AgentMessage` / `QuicTransportConfig`
28
+ * surface from agentic-flow so consumers only import from one place.
29
+ */
30
+ export interface AgentMessage {
31
+ id: string;
32
+ type: 'task' | 'result' | 'status' | 'coordination' | 'heartbeat' | string;
33
+ payload: unknown;
34
+ metadata?: Record<string, unknown>;
35
+ [key: string]: unknown;
36
+ }
37
+ export interface AgentTransport {
38
+ send: (address: string, message: AgentMessage) => Promise<void>;
39
+ onMessage: (handler: (address: string, message: AgentMessage) => void) => void;
40
+ listen?: (port: number, host?: string) => Promise<void>;
41
+ close?: () => Promise<void> | void;
42
+ [key: string]: unknown;
43
+ }
44
+ export interface QuicTransportConfig {
45
+ port?: number;
46
+ host?: string;
47
+ serverName?: string;
48
+ [key: string]: unknown;
49
+ }
50
+ /** Result envelope describing which backend the loader picked. */
51
+ export interface LoadedFederationTransport {
52
+ /** The live transport. Send/receive against this. */
53
+ transport: AgentTransport;
54
+ /** Which loader branch resolved. Useful for logs/metrics. */
55
+ source: 'midstreamer-native' | 'agentic-flow-loader' | 'websocket-fallback';
56
+ /** Free-form note when a probe failed (helps explain a fallback). */
57
+ fallbackReason?: string;
58
+ }
59
+ /**
60
+ * Top-level loader for federation transport. Identical signature to
61
+ * agentic-flow's `loadQuicTransport`, but with the midstreamer-first
62
+ * preference. Use this from `plugins/ruflo-federation` in place of
63
+ * the bare `loadQuicTransport`.
64
+ *
65
+ * Failure mode: if midstreamer is requested but rejects (stub, init
66
+ * error, missing package), this function falls through to the
67
+ * agentic-flow loader. If current agentic-flow does not export its
68
+ * historical loader subpath, the plugin-owned WebSocket fallback is
69
+ * used directly (ADR-104, #2618).
70
+ */
71
+ export declare function loadFederationTransport(config?: QuicTransportConfig): Promise<LoadedFederationTransport>;
72
+ //# sourceMappingURL=midstream-aware-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"midstream-aware-loader.d.ts","sourceRoot":"","sources":["../../src/transport/midstream-aware-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAUH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,cAAc,GAAG,WAAW,GAAG,MAAM,CAAC;IAC3E,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AACD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,KAAK,IAAI,KAAK,IAAI,CAAC;IAC/E,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACnC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AACD,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAoED,kEAAkE;AAClE,MAAM,WAAW,yBAAyB;IACxC,qDAAqD;IACrD,SAAS,EAAE,cAAc,CAAC;IAC1B,6DAA6D;IAC7D,MAAM,EAAE,oBAAoB,GAAG,qBAAqB,GAAG,oBAAoB,CAAC;IAC5E,qEAAqE;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAiMD;;;;;;;;;;;GAWG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,yBAAyB,CAAC,CAoBpC"}