@sparkleideas/swarm 3.0.0-alpha.7

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 (65) hide show
  1. package/MIGRATION.md +472 -0
  2. package/README.md +634 -0
  3. package/__tests__/consensus.test.ts +577 -0
  4. package/__tests__/coordinator.test.ts +501 -0
  5. package/__tests__/queen-coordinator.test.ts +1335 -0
  6. package/__tests__/topology.test.ts +621 -0
  7. package/package.json +32 -0
  8. package/src/agent-pool.ts +476 -0
  9. package/src/application/commands/create-task.command.ts +124 -0
  10. package/src/application/commands/spawn-agent.command.ts +122 -0
  11. package/src/application/index.ts +30 -0
  12. package/src/application/services/swarm-application-service.ts +200 -0
  13. package/src/attention-coordinator.ts +1000 -0
  14. package/src/consensus/byzantine.ts +431 -0
  15. package/src/consensus/gossip.ts +513 -0
  16. package/src/consensus/index.ts +267 -0
  17. package/src/consensus/raft.ts +443 -0
  18. package/src/coordination/agent-registry.ts +544 -0
  19. package/src/coordination/index.ts +23 -0
  20. package/src/coordination/swarm-hub.ts +776 -0
  21. package/src/coordination/task-orchestrator.ts +605 -0
  22. package/src/domain/entities/agent.d.ts +151 -0
  23. package/src/domain/entities/agent.d.ts.map +1 -0
  24. package/src/domain/entities/agent.js +280 -0
  25. package/src/domain/entities/agent.js.map +1 -0
  26. package/src/domain/entities/agent.ts +370 -0
  27. package/src/domain/entities/task.d.ts +133 -0
  28. package/src/domain/entities/task.d.ts.map +1 -0
  29. package/src/domain/entities/task.js +261 -0
  30. package/src/domain/entities/task.js.map +1 -0
  31. package/src/domain/entities/task.ts +319 -0
  32. package/src/domain/index.ts +41 -0
  33. package/src/domain/repositories/agent-repository.interface.d.ts +57 -0
  34. package/src/domain/repositories/agent-repository.interface.d.ts.map +1 -0
  35. package/src/domain/repositories/agent-repository.interface.js +9 -0
  36. package/src/domain/repositories/agent-repository.interface.js.map +1 -0
  37. package/src/domain/repositories/agent-repository.interface.ts +69 -0
  38. package/src/domain/repositories/task-repository.interface.d.ts +61 -0
  39. package/src/domain/repositories/task-repository.interface.d.ts.map +1 -0
  40. package/src/domain/repositories/task-repository.interface.js +9 -0
  41. package/src/domain/repositories/task-repository.interface.js.map +1 -0
  42. package/src/domain/repositories/task-repository.interface.ts +75 -0
  43. package/src/domain/services/coordination-service.ts +320 -0
  44. package/src/federation-hub.d.ts +284 -0
  45. package/src/federation-hub.d.ts.map +1 -0
  46. package/src/federation-hub.js +692 -0
  47. package/src/federation-hub.js.map +1 -0
  48. package/src/federation-hub.ts +979 -0
  49. package/src/index.ts +348 -0
  50. package/src/message-bus.ts +607 -0
  51. package/src/queen-coordinator.ts +2025 -0
  52. package/src/shared/events.ts +285 -0
  53. package/src/shared/types.ts +389 -0
  54. package/src/topology-manager.ts +656 -0
  55. package/src/types.ts +545 -0
  56. package/src/unified-coordinator.ts +1844 -0
  57. package/src/workers/index.ts +65 -0
  58. package/src/workers/worker-dispatch.d.ts +234 -0
  59. package/src/workers/worker-dispatch.d.ts.map +1 -0
  60. package/src/workers/worker-dispatch.js +842 -0
  61. package/src/workers/worker-dispatch.js.map +1 -0
  62. package/src/workers/worker-dispatch.ts +1076 -0
  63. package/tmp.json +0 -0
  64. package/tsconfig.json +9 -0
  65. package/vitest.config.ts +20 -0
@@ -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: @sparkleideas/agentic-flow@alpha compatibility
21
+ * Implements ADR-003: Unified coordination engine
22
+ *
23
+ * @module @sparkleideas/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":["federation-hub.ts"],"names":[],"mappings":"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"}