@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.
- package/MIGRATION.md +472 -0
- package/README.md +634 -0
- package/__tests__/consensus.test.ts +577 -0
- package/__tests__/coordinator.test.ts +501 -0
- package/__tests__/queen-coordinator.test.ts +1335 -0
- package/__tests__/topology.test.ts +621 -0
- package/package.json +32 -0
- package/src/agent-pool.ts +476 -0
- package/src/application/commands/create-task.command.ts +124 -0
- package/src/application/commands/spawn-agent.command.ts +122 -0
- package/src/application/index.ts +30 -0
- package/src/application/services/swarm-application-service.ts +200 -0
- package/src/attention-coordinator.ts +1000 -0
- package/src/consensus/byzantine.ts +431 -0
- package/src/consensus/gossip.ts +513 -0
- package/src/consensus/index.ts +267 -0
- package/src/consensus/raft.ts +443 -0
- package/src/coordination/agent-registry.ts +544 -0
- package/src/coordination/index.ts +23 -0
- package/src/coordination/swarm-hub.ts +776 -0
- package/src/coordination/task-orchestrator.ts +605 -0
- package/src/domain/entities/agent.d.ts +151 -0
- package/src/domain/entities/agent.d.ts.map +1 -0
- package/src/domain/entities/agent.js +280 -0
- package/src/domain/entities/agent.js.map +1 -0
- package/src/domain/entities/agent.ts +370 -0
- package/src/domain/entities/task.d.ts +133 -0
- package/src/domain/entities/task.d.ts.map +1 -0
- package/src/domain/entities/task.js +261 -0
- package/src/domain/entities/task.js.map +1 -0
- package/src/domain/entities/task.ts +319 -0
- package/src/domain/index.ts +41 -0
- package/src/domain/repositories/agent-repository.interface.d.ts +57 -0
- package/src/domain/repositories/agent-repository.interface.d.ts.map +1 -0
- package/src/domain/repositories/agent-repository.interface.js +9 -0
- package/src/domain/repositories/agent-repository.interface.js.map +1 -0
- package/src/domain/repositories/agent-repository.interface.ts +69 -0
- package/src/domain/repositories/task-repository.interface.d.ts +61 -0
- package/src/domain/repositories/task-repository.interface.d.ts.map +1 -0
- package/src/domain/repositories/task-repository.interface.js +9 -0
- package/src/domain/repositories/task-repository.interface.js.map +1 -0
- package/src/domain/repositories/task-repository.interface.ts +75 -0
- package/src/domain/services/coordination-service.ts +320 -0
- package/src/federation-hub.d.ts +284 -0
- package/src/federation-hub.d.ts.map +1 -0
- package/src/federation-hub.js +692 -0
- package/src/federation-hub.js.map +1 -0
- package/src/federation-hub.ts +979 -0
- package/src/index.ts +348 -0
- package/src/message-bus.ts +607 -0
- package/src/queen-coordinator.ts +2025 -0
- package/src/shared/events.ts +285 -0
- package/src/shared/types.ts +389 -0
- package/src/topology-manager.ts +656 -0
- package/src/types.ts +545 -0
- package/src/unified-coordinator.ts +1844 -0
- package/src/workers/index.ts +65 -0
- package/src/workers/worker-dispatch.d.ts +234 -0
- package/src/workers/worker-dispatch.d.ts.map +1 -0
- package/src/workers/worker-dispatch.js +842 -0
- package/src/workers/worker-dispatch.js.map +1 -0
- package/src/workers/worker-dispatch.ts +1076 -0
- package/tmp.json +0 -0
- package/tsconfig.json +9 -0
- 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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"}
|