@claude-flow/swarm 3.0.0-alpha.1

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 (190) hide show
  1. package/.agentic-flow/intelligence.json +16 -0
  2. package/MIGRATION.md +472 -0
  3. package/README.md +634 -0
  4. package/__tests__/consensus.test.ts +577 -0
  5. package/__tests__/coordinator.test.ts +501 -0
  6. package/__tests__/queen-coordinator.test.ts +1335 -0
  7. package/__tests__/topology.test.ts +621 -0
  8. package/dist/agent-pool.d.ts +52 -0
  9. package/dist/agent-pool.d.ts.map +1 -0
  10. package/dist/agent-pool.js +365 -0
  11. package/dist/agent-pool.js.map +1 -0
  12. package/dist/application/commands/create-task.command.d.ts +64 -0
  13. package/dist/application/commands/create-task.command.d.ts.map +1 -0
  14. package/dist/application/commands/create-task.command.js +77 -0
  15. package/dist/application/commands/create-task.command.js.map +1 -0
  16. package/dist/application/commands/spawn-agent.command.d.ts +63 -0
  17. package/dist/application/commands/spawn-agent.command.d.ts.map +1 -0
  18. package/dist/application/commands/spawn-agent.command.js +74 -0
  19. package/dist/application/commands/spawn-agent.command.js.map +1 -0
  20. package/dist/application/index.d.ts +9 -0
  21. package/dist/application/index.d.ts.map +1 -0
  22. package/dist/application/index.js +11 -0
  23. package/dist/application/index.js.map +1 -0
  24. package/dist/application/services/swarm-application-service.d.ts +112 -0
  25. package/dist/application/services/swarm-application-service.d.ts.map +1 -0
  26. package/dist/application/services/swarm-application-service.js +153 -0
  27. package/dist/application/services/swarm-application-service.js.map +1 -0
  28. package/dist/attention-coordinator.d.ts +212 -0
  29. package/dist/attention-coordinator.d.ts.map +1 -0
  30. package/dist/attention-coordinator.js +667 -0
  31. package/dist/attention-coordinator.js.map +1 -0
  32. package/dist/consensus/byzantine.d.ts +63 -0
  33. package/dist/consensus/byzantine.d.ts.map +1 -0
  34. package/dist/consensus/byzantine.js +316 -0
  35. package/dist/consensus/byzantine.js.map +1 -0
  36. package/dist/consensus/gossip.d.ts +69 -0
  37. package/dist/consensus/gossip.d.ts.map +1 -0
  38. package/dist/consensus/gossip.js +378 -0
  39. package/dist/consensus/gossip.js.map +1 -0
  40. package/dist/consensus/index.d.ts +49 -0
  41. package/dist/consensus/index.d.ts.map +1 -0
  42. package/dist/consensus/index.js +203 -0
  43. package/dist/consensus/index.js.map +1 -0
  44. package/dist/consensus/raft.d.ts +62 -0
  45. package/dist/consensus/raft.d.ts.map +1 -0
  46. package/dist/consensus/raft.js +324 -0
  47. package/dist/consensus/raft.js.map +1 -0
  48. package/dist/coordination/agent-registry.d.ts +68 -0
  49. package/dist/coordination/agent-registry.d.ts.map +1 -0
  50. package/dist/coordination/agent-registry.js +412 -0
  51. package/dist/coordination/agent-registry.js.map +1 -0
  52. package/dist/coordination/index.d.ts +8 -0
  53. package/dist/coordination/index.d.ts.map +1 -0
  54. package/dist/coordination/index.js +8 -0
  55. package/dist/coordination/index.js.map +1 -0
  56. package/dist/coordination/swarm-hub.d.ts +150 -0
  57. package/dist/coordination/swarm-hub.d.ts.map +1 -0
  58. package/dist/coordination/swarm-hub.js +617 -0
  59. package/dist/coordination/swarm-hub.js.map +1 -0
  60. package/dist/coordination/task-orchestrator.d.ts +96 -0
  61. package/dist/coordination/task-orchestrator.d.ts.map +1 -0
  62. package/dist/coordination/task-orchestrator.js +412 -0
  63. package/dist/coordination/task-orchestrator.js.map +1 -0
  64. package/dist/domain/entities/agent.d.ts +151 -0
  65. package/dist/domain/entities/agent.d.ts.map +1 -0
  66. package/dist/domain/entities/agent.js +280 -0
  67. package/dist/domain/entities/agent.js.map +1 -0
  68. package/dist/domain/entities/task.d.ts +133 -0
  69. package/dist/domain/entities/task.d.ts.map +1 -0
  70. package/dist/domain/entities/task.js +261 -0
  71. package/dist/domain/entities/task.js.map +1 -0
  72. package/dist/domain/index.d.ts +11 -0
  73. package/dist/domain/index.d.ts.map +1 -0
  74. package/dist/domain/index.js +11 -0
  75. package/dist/domain/index.js.map +1 -0
  76. package/dist/domain/repositories/agent-repository.interface.d.ts +57 -0
  77. package/dist/domain/repositories/agent-repository.interface.d.ts.map +1 -0
  78. package/dist/domain/repositories/agent-repository.interface.js +9 -0
  79. package/dist/domain/repositories/agent-repository.interface.js.map +1 -0
  80. package/dist/domain/repositories/task-repository.interface.d.ts +61 -0
  81. package/dist/domain/repositories/task-repository.interface.d.ts.map +1 -0
  82. package/dist/domain/repositories/task-repository.interface.js +9 -0
  83. package/dist/domain/repositories/task-repository.interface.js.map +1 -0
  84. package/dist/domain/services/coordination-service.d.ts +84 -0
  85. package/dist/domain/services/coordination-service.d.ts.map +1 -0
  86. package/dist/domain/services/coordination-service.js +231 -0
  87. package/dist/domain/services/coordination-service.js.map +1 -0
  88. package/dist/federation-hub.d.ts +284 -0
  89. package/dist/federation-hub.d.ts.map +1 -0
  90. package/dist/federation-hub.js +692 -0
  91. package/dist/federation-hub.js.map +1 -0
  92. package/dist/index.d.ts +107 -0
  93. package/dist/index.d.ts.map +1 -0
  94. package/dist/index.js +142 -0
  95. package/dist/index.js.map +1 -0
  96. package/dist/message-bus.d.ts +48 -0
  97. package/dist/message-bus.d.ts.map +1 -0
  98. package/dist/message-bus.js +499 -0
  99. package/dist/message-bus.js.map +1 -0
  100. package/dist/queen-coordinator.d.ts +576 -0
  101. package/dist/queen-coordinator.d.ts.map +1 -0
  102. package/dist/queen-coordinator.js +1307 -0
  103. package/dist/queen-coordinator.js.map +1 -0
  104. package/dist/shared/events.d.ts +63 -0
  105. package/dist/shared/events.d.ts.map +1 -0
  106. package/dist/shared/events.js +203 -0
  107. package/dist/shared/events.js.map +1 -0
  108. package/dist/shared/types.d.ts +212 -0
  109. package/dist/shared/types.d.ts.map +1 -0
  110. package/dist/shared/types.js +22 -0
  111. package/dist/shared/types.js.map +1 -0
  112. package/dist/topology-manager.d.ts +62 -0
  113. package/dist/topology-manager.d.ts.map +1 -0
  114. package/dist/topology-manager.js +538 -0
  115. package/dist/topology-manager.js.map +1 -0
  116. package/dist/types.d.ts +353 -0
  117. package/dist/types.d.ts.map +1 -0
  118. package/dist/types.js +43 -0
  119. package/dist/types.js.map +1 -0
  120. package/dist/unified-coordinator.d.ts +260 -0
  121. package/dist/unified-coordinator.d.ts.map +1 -0
  122. package/dist/unified-coordinator.js +1460 -0
  123. package/dist/unified-coordinator.js.map +1 -0
  124. package/dist/workers/index.d.ts +29 -0
  125. package/dist/workers/index.d.ts.map +1 -0
  126. package/dist/workers/index.js +49 -0
  127. package/dist/workers/index.js.map +1 -0
  128. package/dist/workers/worker-dispatch.d.ts +234 -0
  129. package/dist/workers/worker-dispatch.d.ts.map +1 -0
  130. package/dist/workers/worker-dispatch.js +842 -0
  131. package/dist/workers/worker-dispatch.js.map +1 -0
  132. package/package.json +33 -0
  133. package/src/agent-pool.ts +476 -0
  134. package/src/application/commands/create-task.command.ts +124 -0
  135. package/src/application/commands/spawn-agent.command.ts +122 -0
  136. package/src/application/index.ts +30 -0
  137. package/src/application/services/swarm-application-service.ts +200 -0
  138. package/src/attention-coordinator.ts +1000 -0
  139. package/src/consensus/byzantine.ts +431 -0
  140. package/src/consensus/gossip.ts +513 -0
  141. package/src/consensus/index.ts +267 -0
  142. package/src/consensus/raft.ts +443 -0
  143. package/src/coordination/agent-registry.ts +544 -0
  144. package/src/coordination/index.ts +23 -0
  145. package/src/coordination/swarm-hub.ts +776 -0
  146. package/src/coordination/task-orchestrator.ts +605 -0
  147. package/src/domain/entities/agent.d.ts +151 -0
  148. package/src/domain/entities/agent.d.ts.map +1 -0
  149. package/src/domain/entities/agent.js +280 -0
  150. package/src/domain/entities/agent.js.map +1 -0
  151. package/src/domain/entities/agent.ts +370 -0
  152. package/src/domain/entities/task.d.ts +133 -0
  153. package/src/domain/entities/task.d.ts.map +1 -0
  154. package/src/domain/entities/task.js +261 -0
  155. package/src/domain/entities/task.js.map +1 -0
  156. package/src/domain/entities/task.ts +319 -0
  157. package/src/domain/index.ts +41 -0
  158. package/src/domain/repositories/agent-repository.interface.d.ts +57 -0
  159. package/src/domain/repositories/agent-repository.interface.d.ts.map +1 -0
  160. package/src/domain/repositories/agent-repository.interface.js +9 -0
  161. package/src/domain/repositories/agent-repository.interface.js.map +1 -0
  162. package/src/domain/repositories/agent-repository.interface.ts +69 -0
  163. package/src/domain/repositories/task-repository.interface.d.ts +61 -0
  164. package/src/domain/repositories/task-repository.interface.d.ts.map +1 -0
  165. package/src/domain/repositories/task-repository.interface.js +9 -0
  166. package/src/domain/repositories/task-repository.interface.js.map +1 -0
  167. package/src/domain/repositories/task-repository.interface.ts +75 -0
  168. package/src/domain/services/coordination-service.ts +320 -0
  169. package/src/federation-hub.d.ts +284 -0
  170. package/src/federation-hub.d.ts.map +1 -0
  171. package/src/federation-hub.js +692 -0
  172. package/src/federation-hub.js.map +1 -0
  173. package/src/federation-hub.ts +979 -0
  174. package/src/index.ts +348 -0
  175. package/src/message-bus.ts +607 -0
  176. package/src/queen-coordinator.ts +2024 -0
  177. package/src/shared/events.ts +285 -0
  178. package/src/shared/types.ts +389 -0
  179. package/src/topology-manager.ts +656 -0
  180. package/src/types.ts +545 -0
  181. package/src/unified-coordinator.ts +1844 -0
  182. package/src/workers/index.ts +65 -0
  183. package/src/workers/worker-dispatch.d.ts +234 -0
  184. package/src/workers/worker-dispatch.d.ts.map +1 -0
  185. package/src/workers/worker-dispatch.js +842 -0
  186. package/src/workers/worker-dispatch.js.map +1 -0
  187. package/src/workers/worker-dispatch.ts +1072 -0
  188. package/tsconfig.json +9 -0
  189. package/tsconfig.tsbuildinfo +1 -0
  190. package/vitest.config.ts +20 -0
@@ -0,0 +1,231 @@
1
+ /**
2
+ * Coordination Domain Service - Domain Layer
3
+ *
4
+ * Contains coordination logic that spans multiple entities.
5
+ * Handles task assignment, load balancing, and swarm orchestration.
6
+ *
7
+ * @module v3/swarm/domain/services
8
+ */
9
+ /**
10
+ * Coordination Domain Service
11
+ *
12
+ * Provides domain-level coordination operations.
13
+ */
14
+ export class CoordinationService {
15
+ agentRepository;
16
+ taskRepository;
17
+ constructor(agentRepository, taskRepository) {
18
+ this.agentRepository = agentRepository;
19
+ this.taskRepository = taskRepository;
20
+ }
21
+ /**
22
+ * Assign a task to the best available agent
23
+ */
24
+ async assignTask(taskId, strategy = 'capability-match') {
25
+ const task = await this.taskRepository.findById(taskId);
26
+ if (!task) {
27
+ return { success: false, taskId, reason: 'Task not found' };
28
+ }
29
+ // Check dependencies
30
+ const completedTasks = await this.taskRepository.findByStatus('completed');
31
+ const completedIds = new Set(completedTasks.map((t) => t.id));
32
+ if (!task.areDependenciesSatisfied(completedIds)) {
33
+ return { success: false, taskId, reason: 'Dependencies not satisfied' };
34
+ }
35
+ // Find best agent
36
+ const agent = await this.findBestAgent(task, strategy);
37
+ if (!agent) {
38
+ return { success: false, taskId, reason: 'No available agents' };
39
+ }
40
+ // Assign task
41
+ task.assign(agent.id);
42
+ agent.assignTask(taskId);
43
+ await this.taskRepository.save(task);
44
+ await this.agentRepository.save(agent);
45
+ return { success: true, taskId, agentId: agent.id };
46
+ }
47
+ /**
48
+ * Find the best agent for a task based on strategy
49
+ */
50
+ async findBestAgent(task, strategy) {
51
+ const availableAgents = await this.agentRepository.findAvailable();
52
+ if (availableAgents.length === 0)
53
+ return null;
54
+ switch (strategy) {
55
+ case 'round-robin':
56
+ return this.roundRobinSelection(availableAgents);
57
+ case 'least-loaded':
58
+ return this.leastLoadedSelection(availableAgents);
59
+ case 'capability-match':
60
+ return this.capabilityMatchSelection(availableAgents, task);
61
+ case 'random':
62
+ return availableAgents[Math.floor(Math.random() * availableAgents.length)];
63
+ default:
64
+ return availableAgents[0];
65
+ }
66
+ }
67
+ roundRobinSelection(agents) {
68
+ // Sort by last active time and pick least recently used
69
+ return [...agents].sort((a, b) => a.lastActiveAt.getTime() - b.lastActiveAt.getTime())[0];
70
+ }
71
+ leastLoadedSelection(agents) {
72
+ return [...agents].sort((a, b) => a.getUtilization() - b.getUtilization())[0];
73
+ }
74
+ capabilityMatchSelection(agents, task) {
75
+ // Extract required capabilities from task type and metadata
76
+ const requiredCapabilities = this.extractRequiredCapabilities(task);
77
+ // Score agents by capability match
78
+ const scored = agents.map((agent) => {
79
+ let score = 0;
80
+ for (const cap of requiredCapabilities) {
81
+ if (agent.hasCapability(cap))
82
+ score++;
83
+ }
84
+ // Factor in utilization (prefer less loaded)
85
+ score -= agent.getUtilization() * 0.5;
86
+ return { agent, score };
87
+ });
88
+ scored.sort((a, b) => b.score - a.score);
89
+ // Return best match if any capabilities matched
90
+ if (scored.length > 0 && scored[0].score > 0) {
91
+ return scored[0].agent;
92
+ }
93
+ // Fallback to least loaded
94
+ return this.leastLoadedSelection(agents);
95
+ }
96
+ extractRequiredCapabilities(task) {
97
+ const capabilities = [task.type];
98
+ // Map task types to required capabilities
99
+ const capabilityMap = {
100
+ implementation: ['coding', 'testing'],
101
+ review: ['review', 'analysis'],
102
+ testing: ['testing', 'qa'],
103
+ documentation: ['documentation', 'writing'],
104
+ security: ['security', 'audit'],
105
+ performance: ['performance', 'optimization'],
106
+ };
107
+ if (capabilityMap[task.type]) {
108
+ capabilities.push(...capabilityMap[task.type]);
109
+ }
110
+ return capabilities;
111
+ }
112
+ /**
113
+ * Process completed tasks and release agents
114
+ */
115
+ async processTaskCompletion(taskId, output) {
116
+ const task = await this.taskRepository.findById(taskId);
117
+ if (!task || !task.assignedAgentId)
118
+ return;
119
+ const agent = await this.agentRepository.findById(task.assignedAgentId);
120
+ task.complete(output);
121
+ await this.taskRepository.save(task);
122
+ if (agent) {
123
+ agent.completeTask(taskId);
124
+ await this.agentRepository.save(agent);
125
+ }
126
+ // Check for dependent tasks that can now be queued
127
+ await this.queueDependentTasks(taskId);
128
+ }
129
+ /**
130
+ * Queue tasks whose dependencies are now satisfied
131
+ */
132
+ async queueDependentTasks(completedTaskId) {
133
+ const pendingTasks = await this.taskRepository.findPending();
134
+ const completedTasks = await this.taskRepository.findByStatus('completed');
135
+ const completedIds = new Set(completedTasks.map((t) => t.id));
136
+ for (const task of pendingTasks) {
137
+ if (task.dependencies.includes(completedTaskId) &&
138
+ task.areDependenciesSatisfied(completedIds)) {
139
+ task.queue();
140
+ await this.taskRepository.save(task);
141
+ }
142
+ }
143
+ }
144
+ /**
145
+ * Handle task failure with retry logic
146
+ */
147
+ async processTaskFailure(taskId, error) {
148
+ const task = await this.taskRepository.findById(taskId);
149
+ if (!task)
150
+ return false;
151
+ const agentId = task.assignedAgentId;
152
+ task.fail(error);
153
+ await this.taskRepository.save(task);
154
+ if (agentId) {
155
+ const agent = await this.agentRepository.findById(agentId);
156
+ if (agent) {
157
+ agent.completeTask(taskId);
158
+ await this.agentRepository.save(agent);
159
+ }
160
+ }
161
+ // Return true if task was requeued for retry
162
+ return task.status === 'queued';
163
+ }
164
+ /**
165
+ * Get overall swarm health
166
+ */
167
+ async getSwarmHealth() {
168
+ const agentStats = await this.agentRepository.getStatistics();
169
+ const taskStats = await this.taskRepository.getStatistics();
170
+ const queuedTasks = await this.taskRepository.findQueued();
171
+ const issues = [];
172
+ // Check for issues
173
+ if (agentStats.byStatus.error > 0) {
174
+ issues.push(`${agentStats.byStatus.error} agents in error state`);
175
+ }
176
+ if (queuedTasks.length > agentStats.byStatus.active * 10) {
177
+ issues.push('Task queue backlog detected');
178
+ }
179
+ if (agentStats.averageUtilization > 0.9) {
180
+ issues.push('High agent utilization');
181
+ }
182
+ const timedOutTasks = await this.taskRepository.findTimedOut();
183
+ if (timedOutTasks.length > 0) {
184
+ issues.push(`${timedOutTasks.length} timed out tasks`);
185
+ }
186
+ return {
187
+ healthy: issues.length === 0,
188
+ totalAgents: agentStats.total,
189
+ activeAgents: agentStats.byStatus.active + agentStats.byStatus.busy,
190
+ errorAgents: agentStats.byStatus.error,
191
+ pendingTasks: taskStats.byStatus.pending,
192
+ runningTasks: taskStats.byStatus.running,
193
+ queueDepth: queuedTasks.length,
194
+ averageUtilization: agentStats.averageUtilization,
195
+ issues,
196
+ };
197
+ }
198
+ /**
199
+ * Scale agents based on workload
200
+ */
201
+ async calculateScalingRecommendation() {
202
+ const health = await this.getSwarmHealth();
203
+ const queuedTasks = await this.taskRepository.findQueued();
204
+ // Scale up if queue is deep and agents are highly utilized
205
+ if (queuedTasks.length > 10 && health.averageUtilization > 0.8) {
206
+ const additionalAgents = Math.ceil(queuedTasks.length / 5);
207
+ return {
208
+ action: 'scale-up',
209
+ count: additionalAgents,
210
+ reason: 'High queue depth with high agent utilization',
211
+ };
212
+ }
213
+ // Scale down if queue is empty and many agents are idle
214
+ if (queuedTasks.length === 0 && health.averageUtilization < 0.2) {
215
+ const excessAgents = Math.floor(health.totalAgents * 0.3);
216
+ if (excessAgents > 0) {
217
+ return {
218
+ action: 'scale-down',
219
+ count: excessAgents,
220
+ reason: 'Low utilization with empty queue',
221
+ };
222
+ }
223
+ }
224
+ return {
225
+ action: 'none',
226
+ count: 0,
227
+ reason: 'Current scaling is appropriate',
228
+ };
229
+ }
230
+ }
231
+ //# sourceMappingURL=coordination-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordination-service.js","sourceRoot":"","sources":["../../../src/domain/services/coordination-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,284 @@
1
+ /**
2
+ * Federation Hub - Ephemeral Agent Coordination
3
+ *
4
+ * Provides cross-swarm coordination and ephemeral agent management
5
+ * for distributed multi-swarm architectures.
6
+ *
7
+ * Features:
8
+ * - Ephemeral agent spawning (short-lived, task-specific)
9
+ * - Cross-swarm communication and coordination
10
+ * - Federation protocol for distributed consensus
11
+ * - Resource allocation and load balancing
12
+ * - Agent lifecycle management with auto-cleanup
13
+ *
14
+ * Performance Targets:
15
+ * - Agent spawn: <50ms
16
+ * - Cross-swarm message: <100ms
17
+ * - Federation sync: <500ms
18
+ * - Auto-cleanup: Background, non-blocking
19
+ *
20
+ * Implements ADR-001: agentic-flow@alpha compatibility
21
+ * Implements ADR-003: Unified coordination engine
22
+ *
23
+ * @module @claude-flow/swarm/federation-hub
24
+ * @version 3.0.0-alpha.1
25
+ */
26
+ import { EventEmitter } from 'events';
27
+ export type FederationId = string;
28
+ export type SwarmId = string;
29
+ export type EphemeralAgentId = string;
30
+ export interface FederationConfig {
31
+ /** Federation identifier */
32
+ federationId?: FederationId;
33
+ /** Maximum ephemeral agents per swarm */
34
+ maxEphemeralAgents?: number;
35
+ /** Default TTL for ephemeral agents (ms) */
36
+ defaultTTL?: number;
37
+ /** Sync interval for federation state (ms) */
38
+ syncIntervalMs?: number;
39
+ /** Enable auto-cleanup of expired agents */
40
+ autoCleanup?: boolean;
41
+ /** Cleanup check interval (ms) */
42
+ cleanupIntervalMs?: number;
43
+ /** Cross-swarm communication timeout (ms) */
44
+ communicationTimeoutMs?: number;
45
+ /** Enable federation-wide consensus */
46
+ enableConsensus?: boolean;
47
+ /** Consensus quorum percentage */
48
+ consensusQuorum?: number;
49
+ }
50
+ export interface SwarmRegistration {
51
+ swarmId: SwarmId;
52
+ name: string;
53
+ endpoint?: string;
54
+ capabilities: string[];
55
+ maxAgents: number;
56
+ currentAgents: number;
57
+ status: 'active' | 'inactive' | 'degraded';
58
+ registeredAt: Date;
59
+ lastHeartbeat: Date;
60
+ metadata?: Record<string, unknown>;
61
+ }
62
+ export interface EphemeralAgent {
63
+ id: EphemeralAgentId;
64
+ swarmId: SwarmId;
65
+ type: string;
66
+ task: string;
67
+ status: 'spawning' | 'active' | 'completing' | 'terminated';
68
+ ttl: number;
69
+ createdAt: Date;
70
+ expiresAt: Date;
71
+ completedAt?: Date;
72
+ result?: unknown;
73
+ error?: Error;
74
+ metadata?: Record<string, unknown>;
75
+ }
76
+ export interface SpawnEphemeralOptions {
77
+ /** Target swarm (auto-select if not specified) */
78
+ swarmId?: SwarmId;
79
+ /** Agent type */
80
+ type: string;
81
+ /** Task description */
82
+ task: string;
83
+ /** Time-to-live in ms (default from config) */
84
+ ttl?: number;
85
+ /** Required capabilities */
86
+ capabilities?: string[];
87
+ /** Priority for swarm selection */
88
+ priority?: 'low' | 'normal' | 'high' | 'critical';
89
+ /** Wait for completion */
90
+ waitForCompletion?: boolean;
91
+ /** Completion timeout (ms) */
92
+ completionTimeout?: number;
93
+ /** Additional metadata */
94
+ metadata?: Record<string, unknown>;
95
+ }
96
+ export interface SpawnResult {
97
+ agentId: EphemeralAgentId;
98
+ swarmId: SwarmId;
99
+ status: 'spawned' | 'queued' | 'failed';
100
+ estimatedTTL: number;
101
+ result?: unknown;
102
+ error?: string;
103
+ }
104
+ export interface FederationMessage {
105
+ id: string;
106
+ type: 'broadcast' | 'direct' | 'consensus' | 'heartbeat';
107
+ sourceSwarmId: SwarmId;
108
+ targetSwarmId?: SwarmId;
109
+ payload: unknown;
110
+ timestamp: Date;
111
+ ttl?: number;
112
+ }
113
+ export interface ConsensusProposal {
114
+ id: string;
115
+ proposerId: SwarmId;
116
+ type: string;
117
+ value: unknown;
118
+ votes: Map<SwarmId, boolean>;
119
+ status: 'pending' | 'accepted' | 'rejected';
120
+ createdAt: Date;
121
+ expiresAt: Date;
122
+ }
123
+ export interface FederationStats {
124
+ federationId: FederationId;
125
+ totalSwarms: number;
126
+ activeSwarms: number;
127
+ totalEphemeralAgents: number;
128
+ activeEphemeralAgents: number;
129
+ completedAgents: number;
130
+ failedAgents: number;
131
+ avgAgentLifespanMs: number;
132
+ messagesExchanged: number;
133
+ consensusProposals: number;
134
+ uptime: number;
135
+ }
136
+ export interface FederationEvent {
137
+ type: FederationEventType;
138
+ federationId: FederationId;
139
+ swarmId?: SwarmId;
140
+ agentId?: EphemeralAgentId;
141
+ data?: unknown;
142
+ timestamp: Date;
143
+ }
144
+ export type FederationEventType = 'swarm_joined' | 'swarm_left' | 'swarm_degraded' | 'agent_spawned' | 'agent_completed' | 'agent_failed' | 'agent_expired' | 'message_sent' | 'message_received' | 'consensus_started' | 'consensus_completed' | 'federation_synced';
145
+ export declare class FederationHub extends EventEmitter {
146
+ private config;
147
+ private swarms;
148
+ private ephemeralAgents;
149
+ private messages;
150
+ private proposals;
151
+ private syncInterval?;
152
+ private cleanupInterval?;
153
+ private startTime;
154
+ private stats;
155
+ /** Index: swarmId -> Set of agentIds */
156
+ private agentsBySwarm;
157
+ /** Index: status -> Set of agentIds */
158
+ private agentsByStatus;
159
+ constructor(config?: FederationConfig);
160
+ /**
161
+ * Add agent to indexes - O(1)
162
+ */
163
+ private addAgentToIndexes;
164
+ /**
165
+ * Remove agent from indexes - O(1)
166
+ */
167
+ private removeAgentFromIndexes;
168
+ /**
169
+ * Update agent status in index - O(1)
170
+ */
171
+ private updateAgentStatusIndex;
172
+ /**
173
+ * Get agents by swarm using index - O(k) where k is agents in swarm
174
+ */
175
+ private getAgentIdsBySwarm;
176
+ /**
177
+ * Get agents by status using index - O(k) where k is agents with status
178
+ */
179
+ private getAgentIdsByStatus;
180
+ /**
181
+ * Initialize the federation hub
182
+ */
183
+ initialize(): Promise<void>;
184
+ /**
185
+ * Shutdown the federation hub
186
+ */
187
+ shutdown(): Promise<void>;
188
+ /**
189
+ * Register a swarm with the federation
190
+ */
191
+ registerSwarm(registration: Omit<SwarmRegistration, 'registeredAt' | 'lastHeartbeat'>): void;
192
+ /**
193
+ * Unregister a swarm from the federation
194
+ */
195
+ unregisterSwarm(swarmId: SwarmId): boolean;
196
+ /**
197
+ * Update swarm heartbeat
198
+ */
199
+ heartbeat(swarmId: SwarmId, currentAgents?: number): boolean;
200
+ /**
201
+ * Get all registered swarms
202
+ */
203
+ getSwarms(): SwarmRegistration[];
204
+ /**
205
+ * Get swarm by ID
206
+ */
207
+ getSwarm(swarmId: SwarmId): SwarmRegistration | undefined;
208
+ /**
209
+ * Spawn an ephemeral agent
210
+ */
211
+ spawnEphemeralAgent(options: SpawnEphemeralOptions): Promise<SpawnResult>;
212
+ /**
213
+ * Complete an ephemeral agent's task
214
+ */
215
+ completeAgent(agentId: EphemeralAgentId, result?: unknown): boolean;
216
+ /**
217
+ * Terminate an ephemeral agent
218
+ */
219
+ terminateAgent(agentId: EphemeralAgentId, error?: Error): Promise<boolean>;
220
+ /**
221
+ * Get ephemeral agent by ID
222
+ */
223
+ getAgent(agentId: EphemeralAgentId): EphemeralAgent | undefined;
224
+ /**
225
+ * Get all ephemeral agents
226
+ */
227
+ getAgents(swarmId?: SwarmId): EphemeralAgent[];
228
+ /**
229
+ * Get active ephemeral agents
230
+ */
231
+ getActiveAgents(swarmId?: SwarmId): EphemeralAgent[];
232
+ /**
233
+ * Send a message to another swarm
234
+ */
235
+ sendMessage(sourceSwarmId: SwarmId, targetSwarmId: SwarmId, payload: unknown): Promise<boolean>;
236
+ /**
237
+ * Broadcast a message to all swarms
238
+ */
239
+ broadcast(sourceSwarmId: SwarmId, payload: unknown): Promise<number>;
240
+ /**
241
+ * Get recent messages
242
+ */
243
+ getMessages(limit?: number): FederationMessage[];
244
+ /**
245
+ * Propose a value for federation-wide consensus
246
+ */
247
+ propose(proposerId: SwarmId, type: string, value: unknown, timeoutMs?: number): Promise<ConsensusProposal>;
248
+ /**
249
+ * Vote on a proposal
250
+ */
251
+ vote(swarmId: SwarmId, proposalId: string, approve: boolean): boolean;
252
+ /**
253
+ * Get proposal by ID
254
+ */
255
+ getProposal(proposalId: string): ConsensusProposal | undefined;
256
+ /**
257
+ * Get all pending proposals
258
+ */
259
+ getPendingProposals(): ConsensusProposal[];
260
+ /**
261
+ * Get federation statistics
262
+ */
263
+ getStats(): FederationStats;
264
+ private selectOptimalSwarm;
265
+ private getSwarmAgentCount;
266
+ private getActiveSwarmCount;
267
+ private waitForAgentCompletion;
268
+ private syncFederation;
269
+ private cleanupExpiredAgents;
270
+ private emitEvent;
271
+ }
272
+ /**
273
+ * Create a new Federation Hub instance
274
+ */
275
+ export declare function createFederationHub(config?: FederationConfig): FederationHub;
276
+ /**
277
+ * Get or create the default federation hub
278
+ */
279
+ export declare function getDefaultFederationHub(): FederationHub;
280
+ /**
281
+ * Reset the default federation hub
282
+ */
283
+ export declare function resetDefaultFederationHub(): Promise<void>;
284
+ //# sourceMappingURL=federation-hub.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federation-hub.d.ts","sourceRoot":"","sources":["../src/federation-hub.ts"],"names":[],"mappings":"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"}