@claude-flow/swarm 3.0.0-alpha.1 → 3.0.0-alpha.8

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 (85) hide show
  1. package/.claude-flow/data/pending-insights.jsonl +15 -0
  2. package/.claude-flow/hive-mind/state.json +18 -0
  3. package/__tests__/byzantine-transport.test.ts +147 -0
  4. package/__tests__/consensus-failure-injection.test.ts +161 -0
  5. package/__tests__/consensus-transport.test.ts +200 -0
  6. package/__tests__/federation-transport.test.ts +145 -0
  7. package/__tests__/gossip-transport.test.ts +81 -0
  8. package/__tests__/queen-coordinator.test.ts +2 -2
  9. package/__tests__/raft-transport.test.ts +121 -0
  10. package/dist/attention-coordinator.js +2 -2
  11. package/dist/attention-coordinator.js.map +1 -1
  12. package/dist/consensus/byzantine.d.ts +26 -0
  13. package/dist/consensus/byzantine.d.ts.map +1 -1
  14. package/dist/consensus/byzantine.js +92 -14
  15. package/dist/consensus/byzantine.js.map +1 -1
  16. package/dist/consensus/federation-transport.d.ts +82 -0
  17. package/dist/consensus/federation-transport.d.ts.map +1 -0
  18. package/dist/consensus/federation-transport.js +144 -0
  19. package/dist/consensus/federation-transport.js.map +1 -0
  20. package/dist/consensus/gossip.d.ts +31 -1
  21. package/dist/consensus/gossip.d.ts.map +1 -1
  22. package/dist/consensus/gossip.js +89 -12
  23. package/dist/consensus/gossip.js.map +1 -1
  24. package/dist/consensus/index.d.ts +4 -0
  25. package/dist/consensus/index.d.ts.map +1 -1
  26. package/dist/consensus/index.js +37 -0
  27. package/dist/consensus/index.js.map +1 -1
  28. package/dist/consensus/raft.d.ts +19 -0
  29. package/dist/consensus/raft.d.ts.map +1 -1
  30. package/dist/consensus/raft.js +113 -3
  31. package/dist/consensus/raft.js.map +1 -1
  32. package/dist/consensus/transport.d.ts +141 -0
  33. package/dist/consensus/transport.d.ts.map +1 -0
  34. package/dist/consensus/transport.js +205 -0
  35. package/dist/consensus/transport.js.map +1 -0
  36. package/dist/coordination/agent-registry.d.ts +2 -2
  37. package/dist/coordination/agent-registry.d.ts.map +1 -1
  38. package/dist/coordination/agent-registry.js +1 -1
  39. package/dist/coordination/agent-registry.js.map +1 -1
  40. package/dist/coordination/swarm-hub.d.ts +5 -5
  41. package/dist/coordination/swarm-hub.d.ts.map +1 -1
  42. package/dist/coordination/swarm-hub.js +5 -5
  43. package/dist/coordination/swarm-hub.js.map +1 -1
  44. package/dist/coordination/task-orchestrator.d.ts +3 -3
  45. package/dist/coordination/task-orchestrator.d.ts.map +1 -1
  46. package/dist/coordination/task-orchestrator.js +1 -1
  47. package/dist/coordination/task-orchestrator.js.map +1 -1
  48. package/dist/federation-hub.js +1 -1
  49. package/dist/federation-hub.js.map +1 -1
  50. package/dist/index.d.ts +2 -0
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +4 -0
  53. package/dist/index.js.map +1 -1
  54. package/dist/queen-coordinator.d.ts +2 -1
  55. package/dist/queen-coordinator.d.ts.map +1 -1
  56. package/dist/queen-coordinator.js +4 -3
  57. package/dist/queen-coordinator.js.map +1 -1
  58. package/dist/types.d.ts +10 -0
  59. package/dist/types.d.ts.map +1 -1
  60. package/dist/types.js.map +1 -1
  61. package/dist/workers/worker-dispatch.d.ts +6 -1
  62. package/dist/workers/worker-dispatch.d.ts.map +1 -1
  63. package/dist/workers/worker-dispatch.js +45 -41
  64. package/dist/workers/worker-dispatch.js.map +1 -1
  65. package/package.json +2 -3
  66. package/ruvector.db +0 -0
  67. package/src/attention-coordinator.ts +2 -2
  68. package/src/consensus/byzantine.ts +98 -15
  69. package/src/consensus/federation-transport.ts +185 -0
  70. package/src/consensus/gossip.ts +102 -16
  71. package/src/consensus/index.ts +59 -0
  72. package/src/consensus/raft.ts +125 -7
  73. package/src/consensus/transport.ts +284 -0
  74. package/src/coordination/agent-registry.ts +2 -2
  75. package/src/coordination/swarm-hub.ts +5 -5
  76. package/src/coordination/task-orchestrator.ts +3 -3
  77. package/src/federation-hub.ts +1 -1
  78. package/src/index.ts +26 -0
  79. package/src/queen-coordinator.ts +4 -3
  80. package/src/types.ts +10 -0
  81. package/src/workers/worker-dispatch.d.ts +1 -1
  82. package/src/workers/worker-dispatch.ts +45 -41
  83. package/tmp.json +0 -0
  84. package/tsconfig.tsbuildinfo +1 -1
  85. package/.agentic-flow/intelligence.json +0 -16
@@ -3,6 +3,7 @@
3
3
  * PBFT-style consensus for handling malicious or faulty nodes
4
4
  */
5
5
  import { EventEmitter } from 'events';
6
+ import { createHash } from 'node:crypto';
6
7
  import { SWARM_CONSTANTS, } from '../types.js';
7
8
  export class ByzantineConsensus extends EventEmitter {
8
9
  config;
@@ -12,6 +13,7 @@ export class ByzantineConsensus extends EventEmitter {
12
13
  messageLog = new Map();
13
14
  proposalCounter = 0;
14
15
  viewChangeTimeout;
16
+ transport;
15
17
  constructor(nodeId, config = {}) {
16
18
  super();
17
19
  this.config = {
@@ -19,9 +21,11 @@ export class ByzantineConsensus extends EventEmitter {
19
21
  timeoutMs: config.timeoutMs ?? SWARM_CONSTANTS.DEFAULT_CONSENSUS_TIMEOUT_MS,
20
22
  maxRounds: config.maxRounds ?? 10,
21
23
  requireQuorum: config.requireQuorum ?? true,
22
- maxFaultyNodes: config.maxFaultyNodes ?? 1,
24
+ maxFaultyNodes: config.maxFaultyNodes, // #G2: undefined → byzantineF() derives from cluster size; a value caps it
23
25
  viewChangeTimeoutMs: config.viewChangeTimeoutMs ?? 5000,
26
+ transport: config.transport,
24
27
  };
28
+ this.transport = config.transport;
25
29
  this.node = {
26
30
  id: nodeId,
27
31
  isPrimary: false,
@@ -30,6 +34,47 @@ export class ByzantineConsensus extends EventEmitter {
30
34
  preparedMessages: new Map(),
31
35
  committedMessages: new Map(),
32
36
  };
37
+ // ADR-095 G2 — when a transport is wired, route inbound PBFT messages
38
+ // through the protocol handlers. The transport handles signature
39
+ // verification (if signing is enabled) before we ever see the message.
40
+ if (this.transport) {
41
+ this.transport.onMessage(async (msg) => {
42
+ await this.handleInboundMessage(msg);
43
+ });
44
+ }
45
+ }
46
+ /**
47
+ * ADR-095 G2 — dispatch an inbound transport message to the right PBFT
48
+ * handler. The transport has already verified the signature (if signing
49
+ * is on); here we only need to demux by type and reconstruct the
50
+ * ByzantineMessage shape the handlers expect.
51
+ */
52
+ async handleInboundMessage(msg) {
53
+ const p = msg.payload;
54
+ if (!p || typeof p.viewNumber !== 'number' || typeof p.sequenceNumber !== 'number' || typeof p.digest !== 'string')
55
+ return;
56
+ const bm = {
57
+ type: msg.type ?? p.type ?? 'prepare',
58
+ viewNumber: p.viewNumber,
59
+ sequenceNumber: p.sequenceNumber,
60
+ digest: p.digest,
61
+ senderId: msg.from,
62
+ timestamp: p.timestamp ? new Date(p.timestamp) : new Date(),
63
+ payload: p.payload,
64
+ signature: msg.signature,
65
+ };
66
+ switch (bm.type) {
67
+ case 'pre-prepare':
68
+ await this.handlePrePrepare(bm);
69
+ break;
70
+ case 'prepare':
71
+ await this.handlePrepare(bm);
72
+ break;
73
+ case 'commit':
74
+ await this.handleCommit(bm);
75
+ break;
76
+ default: break;
77
+ }
33
78
  }
34
79
  async initialize() {
35
80
  this.emit('initialized', { nodeId: this.node.id });
@@ -56,6 +101,19 @@ export class ByzantineConsensus extends EventEmitter {
56
101
  removeNode(nodeId) {
57
102
  this.nodes.delete(nodeId);
58
103
  }
104
+ /**
105
+ * ADR-095 G2 — BFT fault tolerance f, derived from the *actual* cluster
106
+ * size unless explicitly capped via config.maxFaultyNodes. PBFT needs
107
+ * n ≥ 3f+1, so f = floor((n-1)/3) where n = self + known peers. The
108
+ * config value (if set) acts as an upper bound — never exceed what the
109
+ * operator declared the cluster can tolerate.
110
+ */
111
+ byzantineF() {
112
+ const n = this.nodes.size + 1; // self + known peers
113
+ const derived = Math.max(1, Math.floor((n - 1) / 3));
114
+ const cap = this.config.maxFaultyNodes;
115
+ return cap === undefined ? derived : Math.min(derived, cap);
116
+ }
59
117
  electPrimary() {
60
118
  const nodeIds = [this.node.id, ...Array.from(this.nodes.keys())];
61
119
  const primaryIndex = this.node.viewNumber % nodeIds.length;
@@ -114,7 +172,7 @@ export class ByzantineConsensus extends EventEmitter {
114
172
  }
115
173
  proposal.votes.set(vote.voterId, vote);
116
174
  // Check consensus
117
- const f = this.config.maxFaultyNodes ?? 1;
175
+ const f = this.byzantineF();
118
176
  const n = this.nodes.size + 1;
119
177
  const requiredVotes = 2 * f + 1;
120
178
  const approvingVotes = Array.from(proposal.votes.values()).filter(v => v.approve).length;
@@ -193,7 +251,7 @@ export class ByzantineConsensus extends EventEmitter {
193
251
  messages.push(message);
194
252
  }
195
253
  // Check if prepared (2f + 1 prepare messages)
196
- const f = this.config.maxFaultyNodes ?? 1;
254
+ const f = this.byzantineF();
197
255
  const prepareCount = messages.filter(m => m.type === 'prepare').length;
198
256
  if (prepareCount >= 2 * f + 1) {
199
257
  const proposalId = `bft_${message.viewNumber}_${message.sequenceNumber}`;
@@ -232,7 +290,7 @@ export class ByzantineConsensus extends EventEmitter {
232
290
  messages.push(message);
233
291
  }
234
292
  // Check if committed (2f + 1 commit messages)
235
- const f = this.config.maxFaultyNodes ?? 1;
293
+ const f = this.byzantineF();
236
294
  const commitCount = messages.filter(m => m.type === 'commit').length;
237
295
  if (commitCount >= 2 * f + 1) {
238
296
  const proposalId = `bft_${message.viewNumber}_${message.sequenceNumber}`;
@@ -254,22 +312,42 @@ export class ByzantineConsensus extends EventEmitter {
254
312
  }
255
313
  // ===== PRIVATE METHODS =====
256
314
  async broadcastMessage(message) {
315
+ // Always emit for observability / legacy external relay.
257
316
  this.emit('message.broadcast', { message });
258
- // Simulate broadcast to all nodes
259
317
  for (const node of this.nodes.values()) {
260
318
  this.emit('message.sent', { to: node.id, message });
261
319
  }
320
+ // ADR-095 G2 — when a transport is wired, actually send the message
321
+ // over it (signed by the transport if signing is enabled). This is
322
+ // the real inter-node path; the emits above stay for observers.
323
+ if (this.transport) {
324
+ const cm = {
325
+ type: message.type,
326
+ payload: {
327
+ type: message.type,
328
+ viewNumber: message.viewNumber,
329
+ sequenceNumber: message.sequenceNumber,
330
+ digest: message.digest,
331
+ timestamp: message.timestamp.toISOString(),
332
+ payload: message.payload,
333
+ },
334
+ viewNumber: message.viewNumber,
335
+ };
336
+ try {
337
+ await this.transport.broadcast(cm);
338
+ }
339
+ catch {
340
+ // Transport failures are non-fatal at the protocol layer — the
341
+ // proposal will simply not reach consensus and time out, which is
342
+ // the correct failure mode (no liveness, but no incorrect commit).
343
+ }
344
+ }
262
345
  }
263
346
  computeDigest(value) {
264
- // Simple hash for demonstration
265
- const str = JSON.stringify(value);
266
- let hash = 0;
267
- for (let i = 0; i < str.length; i++) {
268
- const char = str.charCodeAt(i);
269
- hash = ((hash << 5) - hash) + char;
270
- hash = hash & hash;
271
- }
272
- return hash.toString(16);
347
+ // ADR-095 G2 — was a 32-bit string-hash "for demonstration"; replaced
348
+ // with sha256 so digests are collision-resistant (PBFT relies on the
349
+ // digest uniquely identifying the request being agreed on).
350
+ return createHash('sha256').update(JSON.stringify(value ?? null)).digest('hex');
273
351
  }
274
352
  createResult(proposal, durationMs) {
275
353
  const n = this.nodes.size + 1;
@@ -1 +1 @@
1
- {"version":3,"file":"byzantine.js","sourceRoot":"","sources":["../../src/consensus/byzantine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"byzantine.js","sourceRoot":"","sources":["../../src/consensus/byzantine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * ADR-095 G2 — FederationTransport: a ConsensusTransport backed by the
3
+ * federation plugin's ADR-104 WS wire (agentic-flow/transport/loader).
4
+ *
5
+ * @claude-flow/swarm has zero runtime dependencies and shouldn't take a
6
+ * hard dep on @claude-flow/plugin-agent-federation (the wiring would also
7
+ * be circular-ish). So this adapter takes its WS primitives by injection:
8
+ * pass an object that satisfies `AgenticFlowTransportLike` (which the
9
+ * federation plugin's `loadQuicTransport` result does) plus a small amount
10
+ * of consensus-level metadata (this node's id, how to address peers, who
11
+ * the peers are).
12
+ *
13
+ * The agentic-flow transport is fire-and-forget message delivery; this
14
+ * adapter layers request-response on top via per-message correlation ids
15
+ * (`corr`) + a pending-replies map + per-call timeout. Stream multiplexing
16
+ * (ADR-104 stream-mux) is used for the `streamId` so consensus traffic
17
+ * doesn't interleave with application traffic on the same connection.
18
+ *
19
+ * Optional Ed25519 signing: when a keypair is supplied, outbound messages
20
+ * are signed and inbound are verified against the sender's published
21
+ * public key (resolved via `resolvePeerPublicKey`) before reaching the
22
+ * handler. Fail-closed — an unverifiable inbound message is dropped.
23
+ */
24
+ import type { ConsensusTransport, ConsensusMessage, ConsensusReply, ConsensusMessageHandler, NodeKeyPair } from './transport.js';
25
+ /**
26
+ * Minimal shape of the agentic-flow transport (the `loadQuicTransport`
27
+ * result). We only need send + onMessage + (optional) close. Keeping this
28
+ * structural means swarm doesn't import agentic-flow.
29
+ */
30
+ export interface AgenticFlowTransportLike {
31
+ send(address: string, message: {
32
+ type?: string;
33
+ payload: unknown;
34
+ streamId?: string;
35
+ }): Promise<void>;
36
+ onMessage(handler: (msg: {
37
+ from?: string;
38
+ address?: string;
39
+ type?: string;
40
+ payload: unknown;
41
+ }) => void | Promise<void>): void;
42
+ close?(): Promise<void> | void;
43
+ }
44
+ export interface FederationTransportOptions {
45
+ /** This node's consensus id (the `from` on outbound messages). */
46
+ readonly nodeId: string;
47
+ /** Map a consensus nodeId → the WS address agentic-flow uses to reach it. Return undefined for unknown peers. */
48
+ readonly addressOf: (nodeId: string) => string | undefined;
49
+ /** Currently-known peer consensus node ids (excludes self — or includes; we filter). */
50
+ readonly peerIds: () => readonly string[];
51
+ /** Stream id for consensus traffic (ADR-104 stream-mux). Defaults to 'ruflo-consensus'. */
52
+ readonly streamId?: string;
53
+ /** Default per-`send` timeout in ms. Defaults to 5000. */
54
+ readonly defaultTimeoutMs?: number;
55
+ /** Optional Ed25519 keypair — signs outbound, verifies inbound. */
56
+ readonly keyPair?: NodeKeyPair;
57
+ /** Resolve a peer consensus nodeId → its Ed25519 public key PEM. Required if `keyPair` is set and you want verification. */
58
+ readonly resolvePeerPublicKey?: (nodeId: string) => string | undefined;
59
+ }
60
+ export declare class FederationTransport implements ConsensusTransport {
61
+ readonly nodeId: string;
62
+ private readonly wire;
63
+ private readonly addressOf;
64
+ private readonly peerIdsFn;
65
+ private readonly streamId;
66
+ private readonly defaultTimeoutMs;
67
+ private readonly keyPair?;
68
+ private readonly resolvePeerPublicKey?;
69
+ private handler;
70
+ private closed;
71
+ private seqCounter;
72
+ private readonly pending;
73
+ private readonly lastSeenSeq;
74
+ constructor(wire: AgenticFlowTransportLike, opts: FederationTransportOptions);
75
+ onMessage(handler: ConsensusMessageHandler): void;
76
+ peers(): readonly string[];
77
+ private stamp;
78
+ send(to: string, msg: Omit<ConsensusMessage, 'from'>, timeoutMs?: number): Promise<ConsensusReply>;
79
+ broadcast(msg: Omit<ConsensusMessage, 'from'>): Promise<void>;
80
+ close(): Promise<void>;
81
+ }
82
+ //# sourceMappingURL=federation-transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federation-transport.d.ts","sourceRoot":"","sources":["../../src/consensus/federation-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAGxB;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtG,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC9H,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAChC;AAYD,MAAM,WAAW,0BAA0B;IACzC,kEAAkE;IAClE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iHAAiH;IACjH,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC3D,wFAAwF;IACxF,QAAQ,CAAC,OAAO,EAAE,MAAM,SAAS,MAAM,EAAE,CAAC;IAC1C,2FAA2F;IAC3F,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,mEAAmE;IACnE,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;IAC/B,4HAA4H;IAC5H,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CACxE;AAED,qBAAa,mBAAoB,YAAW,kBAAkB;IAC5D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA2B;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyC;IACnE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAc;IACvC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAyC;IAC/E,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiI;IACzJ,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;gBAE7C,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,0BAA0B;IAgD5E,SAAS,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI;IAIjD,KAAK,IAAI,SAAS,MAAM,EAAE;IAI1B,OAAO,CAAC,KAAK;IASP,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAelG,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAU7D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAO7B"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * ADR-095 G2 — FederationTransport: a ConsensusTransport backed by the
3
+ * federation plugin's ADR-104 WS wire (agentic-flow/transport/loader).
4
+ *
5
+ * @claude-flow/swarm has zero runtime dependencies and shouldn't take a
6
+ * hard dep on @claude-flow/plugin-agent-federation (the wiring would also
7
+ * be circular-ish). So this adapter takes its WS primitives by injection:
8
+ * pass an object that satisfies `AgenticFlowTransportLike` (which the
9
+ * federation plugin's `loadQuicTransport` result does) plus a small amount
10
+ * of consensus-level metadata (this node's id, how to address peers, who
11
+ * the peers are).
12
+ *
13
+ * The agentic-flow transport is fire-and-forget message delivery; this
14
+ * adapter layers request-response on top via per-message correlation ids
15
+ * (`corr`) + a pending-replies map + per-call timeout. Stream multiplexing
16
+ * (ADR-104 stream-mux) is used for the `streamId` so consensus traffic
17
+ * doesn't interleave with application traffic on the same connection.
18
+ *
19
+ * Optional Ed25519 signing: when a keypair is supplied, outbound messages
20
+ * are signed and inbound are verified against the sender's published
21
+ * public key (resolved via `resolvePeerPublicKey`) before reaching the
22
+ * handler. Fail-closed — an unverifiable inbound message is dropped.
23
+ */
24
+ import { randomBytes } from 'node:crypto';
25
+ import { signMessage, verifyMessage } from './transport.js';
26
+ export class FederationTransport {
27
+ nodeId;
28
+ wire;
29
+ addressOf;
30
+ peerIdsFn;
31
+ streamId;
32
+ defaultTimeoutMs;
33
+ keyPair;
34
+ resolvePeerPublicKey;
35
+ handler = null;
36
+ closed = false;
37
+ seqCounter = 0;
38
+ pending = new Map();
39
+ lastSeenSeq = new Map();
40
+ constructor(wire, opts) {
41
+ this.wire = wire;
42
+ this.nodeId = opts.nodeId;
43
+ this.addressOf = opts.addressOf;
44
+ this.peerIdsFn = opts.peerIds;
45
+ this.streamId = opts.streamId ?? 'ruflo-consensus';
46
+ this.defaultTimeoutMs = opts.defaultTimeoutMs ?? 5_000;
47
+ this.keyPair = opts.keyPair;
48
+ this.resolvePeerPublicKey = opts.resolvePeerPublicKey;
49
+ this.wire.onMessage(async (raw) => {
50
+ if (this.closed)
51
+ return;
52
+ const env = raw.payload;
53
+ if (!env || !env.msg)
54
+ return;
55
+ const msg = env.msg;
56
+ // Signature verification (if this node expects signed messages).
57
+ if (this.keyPair && this.resolvePeerPublicKey) {
58
+ const pub = this.resolvePeerPublicKey(msg.from);
59
+ if (!pub || !verifyMessage(msg, pub))
60
+ return; // fail-closed: drop
61
+ if (typeof msg.seq === 'number') {
62
+ const last = this.lastSeenSeq.get(msg.from) ?? 0;
63
+ if (msg.seq <= last)
64
+ return; // replayed / out of order: drop
65
+ this.lastSeenSeq.set(msg.from, msg.seq);
66
+ }
67
+ }
68
+ // Reply to a pending `send`?
69
+ if (env.isReply && env.corr) {
70
+ const p = this.pending.get(env.corr);
71
+ if (p) {
72
+ clearTimeout(p.timer);
73
+ this.pending.delete(env.corr);
74
+ p.resolve(msg);
75
+ }
76
+ return;
77
+ }
78
+ // Inbound request → run the handler; if it returns a reply, send it back.
79
+ if (this.handler) {
80
+ const reply = await this.handler(msg);
81
+ if (reply && env.corr) {
82
+ const addr = this.addressOf(msg.from);
83
+ if (addr) {
84
+ const replyMsg = this.stamp({ ...reply, to: msg.from });
85
+ await this.wire.send(addr, { type: 'consensus', payload: { corr: env.corr, isReply: true, msg: replyMsg }, streamId: this.streamId }).catch(() => { });
86
+ }
87
+ }
88
+ }
89
+ });
90
+ }
91
+ onMessage(handler) {
92
+ this.handler = handler;
93
+ }
94
+ peers() {
95
+ return this.peerIdsFn().filter(id => id !== this.nodeId);
96
+ }
97
+ stamp(msg) {
98
+ const base = {
99
+ ...msg,
100
+ from: this.nodeId,
101
+ seq: this.keyPair ? ++this.seqCounter : msg.seq,
102
+ };
103
+ return this.keyPair ? { ...base, signature: signMessage(base, this.keyPair.privateKeyPem) } : base;
104
+ }
105
+ async send(to, msg, timeoutMs) {
106
+ if (this.closed)
107
+ throw new Error('FederationTransport: closed');
108
+ const addr = this.addressOf(to);
109
+ if (!addr)
110
+ throw new Error(`FederationTransport: no address for peer ${to}`);
111
+ const corr = randomBytes(8).toString('hex');
112
+ const stamped = this.stamp({ ...msg, to });
113
+ const t = timeoutMs ?? this.defaultTimeoutMs;
114
+ return new Promise((resolve, reject) => {
115
+ const timer = setTimeout(() => { this.pending.delete(corr); reject(new Error(`FederationTransport: send to ${to} timed out (${t}ms)`)); }, t);
116
+ this.pending.set(corr, { resolve, reject, timer });
117
+ this.wire.send(addr, { type: 'consensus', payload: { corr, msg: stamped }, streamId: this.streamId })
118
+ .catch((e) => { clearTimeout(timer); this.pending.delete(corr); reject(e instanceof Error ? e : new Error(String(e))); });
119
+ });
120
+ }
121
+ async broadcast(msg) {
122
+ if (this.closed)
123
+ throw new Error('FederationTransport: closed');
124
+ const stamped = this.stamp(msg);
125
+ await Promise.allSettled(this.peers().map(async (to) => {
126
+ const addr = this.addressOf(to);
127
+ if (!addr)
128
+ return;
129
+ await this.wire.send(addr, { type: 'consensus', payload: { msg: stamped }, streamId: this.streamId }).catch(() => { });
130
+ }));
131
+ }
132
+ async close() {
133
+ this.closed = true;
134
+ this.handler = null;
135
+ for (const [, p] of this.pending) {
136
+ clearTimeout(p.timer);
137
+ p.reject(new Error('FederationTransport: closed'));
138
+ }
139
+ this.pending.clear();
140
+ if (this.wire.close)
141
+ await this.wire.close();
142
+ }
143
+ }
144
+ //# sourceMappingURL=federation-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federation-transport.js","sourceRoot":"","sources":["../../src/consensus/federation-transport.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@
3
3
  * Eventually consistent consensus for large-scale distributed systems
4
4
  */
5
5
  import { EventEmitter } from 'events';
6
+ import type { ConsensusTransport } from './transport.js';
6
7
  import { ConsensusProposal, ConsensusVote, ConsensusResult, ConsensusConfig } from '../types.js';
7
8
  export interface GossipMessage {
8
9
  id: string;
@@ -15,12 +16,25 @@ export interface GossipMessage {
15
16
  hops: number;
16
17
  path: string[];
17
18
  }
19
+ /**
20
+ * Bounded set that evicts oldest entries when capacity is reached.
21
+ * Uses Map insertion-order for O(1) FIFO eviction. (PERF-01)
22
+ */
23
+ export declare class BoundedSet<T> {
24
+ private map;
25
+ private readonly maxSize;
26
+ constructor(maxSize: number);
27
+ has(value: T): boolean;
28
+ add(value: T): void;
29
+ get size(): number;
30
+ clear(): void;
31
+ }
18
32
  export interface GossipNode {
19
33
  id: string;
20
34
  state: Map<string, unknown>;
21
35
  version: number;
22
36
  neighbors: Set<string>;
23
- seenMessages: Set<string>;
37
+ seenMessages: BoundedSet<string>;
24
38
  lastSync: Date;
25
39
  }
26
40
  export interface GossipConfig extends Partial<ConsensusConfig> {
@@ -28,6 +42,14 @@ export interface GossipConfig extends Partial<ConsensusConfig> {
28
42
  gossipIntervalMs?: number;
29
43
  maxHops?: number;
30
44
  convergenceThreshold?: number;
45
+ /**
46
+ * ADR-095 G2 — optional pluggable transport. When set, gossip messages
47
+ * to neighbors actually go over it (signed if the transport has a
48
+ * keypair) and inbound gossip is routed back into the merge logic.
49
+ * When unset, behavior is unchanged: the legacy in-process path mutates
50
+ * the local `nodes` map directly (single-process).
51
+ */
52
+ transport?: ConsensusTransport;
31
53
  }
32
54
  export declare class GossipConsensus extends EventEmitter {
33
55
  private config;
@@ -37,7 +59,15 @@ export declare class GossipConsensus extends EventEmitter {
37
59
  private messageQueue;
38
60
  private gossipInterval?;
39
61
  private proposalCounter;
62
+ private readonly transport?;
40
63
  constructor(nodeId: string, config?: GossipConfig);
64
+ /**
65
+ * ADR-095 G2 — route an inbound transport message into the gossip merge
66
+ * logic. The transport handles signature verification (if enabled). We
67
+ * dedupe by message id (the BoundedSet `seenMessages`) and process it as
68
+ * though it arrived from a neighbor.
69
+ */
70
+ private handleInboundGossipMessage;
41
71
  initialize(): Promise<void>;
42
72
  shutdown(): Promise<void>;
43
73
  addNode(nodeId: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"gossip.d.ts","sourceRoot":"","sources":["../../src/consensus/gossip.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,eAAe,EAEhB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,QAAQ,EAAE,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,YAAa,SAAQ,OAAO,CAAC,eAAe,CAAC;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,SAAS,CAA6C;IAC9D,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,eAAe,CAAa;gBAExB,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,YAAiB;IAuB/C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAO/B,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAiB7B,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAShC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAMjC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI9B,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA2CnD,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IA2B5D,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA2ClE,OAAO,CAAC,eAAe;YAMT,WAAW;IAwBzB,OAAO,CAAC,qBAAqB;YAYf,cAAc;YAwBd,sBAAsB;YAsCtB,qBAAqB;YAkCrB,iBAAiB;YAgBjB,kBAAkB;IAehC,OAAO,CAAC,YAAY;YAQN,gBAAgB;IA2B9B,OAAO,CAAC,YAAY;IAqBpB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAQ1C,UAAU,IAAI,MAAM;IAIpB,gBAAgB,IAAI,MAAM;IAI1B,mBAAmB,IAAI,MAAM;IAI7B,aAAa,IAAI,MAAM;IAKjB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;CAoBnC;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,YAAY,GACpB,eAAe,CAEjB"}
1
+ {"version":3,"file":"gossip.d.ts","sourceRoot":"","sources":["../../src/consensus/gossip.ts"],"names":[],"mappings":"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"}