@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 @@
1
+ {"version":3,"file":"worker-dispatch.js","sourceRoot":"","sources":["../../src/workers/worker-dispatch.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "@claude-flow/swarm",
3
+ "version": "3.0.0-alpha.1",
4
+ "type": "module",
5
+ "description": "Standalone swarm coordination - up to 100+ agents, 4 topologies, hive-mind, consensus",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": "./dist/index.js",
10
+ "./*": "./dist/*.js"
11
+ },
12
+ "scripts": {
13
+ "test": "vitest run",
14
+ "build": "tsc"
15
+ },
16
+ "dependencies": {},
17
+ "devDependencies": {
18
+ "vitest": "^1.0.0"
19
+ },
20
+ "keywords": [
21
+ "swarm",
22
+ "multi-agent",
23
+ "coordination",
24
+ "consensus",
25
+ "hive-mind",
26
+ "distributed",
27
+ "ai-agents"
28
+ ],
29
+ "publishConfig": {
30
+ "access": "public",
31
+ "tag": "v3alpha"
32
+ }
33
+ }
@@ -0,0 +1,476 @@
1
+ /**
2
+ * V3 Agent Pool
3
+ * Manages agent lifecycle, pooling, and auto-scaling
4
+ */
5
+
6
+ import { EventEmitter } from 'events';
7
+ import {
8
+ AgentState,
9
+ AgentType,
10
+ AgentStatus,
11
+ AgentCapabilities,
12
+ AgentMetrics,
13
+ AgentPoolConfig,
14
+ AgentPoolState,
15
+ IAgentPool,
16
+ SWARM_CONSTANTS,
17
+ } from './types.js';
18
+
19
+ interface PooledAgent {
20
+ agent: AgentState;
21
+ acquiredAt?: Date;
22
+ lastUsed: Date;
23
+ usageCount: number;
24
+ }
25
+
26
+ export class AgentPool extends EventEmitter implements IAgentPool {
27
+ private config: AgentPoolConfig;
28
+ private pooledAgents: Map<string, PooledAgent> = new Map();
29
+ private available: Set<string> = new Set();
30
+ private busy: Set<string> = new Set();
31
+ private pendingScale: number = 0;
32
+ private lastScaleOperation?: Date;
33
+ private healthCheckInterval?: NodeJS.Timeout;
34
+ private agentCounter: number = 0;
35
+
36
+ constructor(config: Partial<AgentPoolConfig> = {}) {
37
+ super();
38
+ this.config = {
39
+ name: config.name ?? 'default-pool',
40
+ type: config.type ?? 'worker',
41
+ minSize: config.minSize ?? 1,
42
+ maxSize: config.maxSize ?? 10,
43
+ scaleUpThreshold: config.scaleUpThreshold ?? 0.8,
44
+ scaleDownThreshold: config.scaleDownThreshold ?? 0.2,
45
+ cooldownMs: config.cooldownMs ?? 30000,
46
+ healthCheckIntervalMs: config.healthCheckIntervalMs ?? SWARM_CONSTANTS.DEFAULT_HEALTH_CHECK_INTERVAL_MS,
47
+ };
48
+ }
49
+
50
+ async initialize(config?: AgentPoolConfig): Promise<void> {
51
+ if (config) {
52
+ this.config = { ...this.config, ...config };
53
+ }
54
+
55
+ // Start with minimum pool size - create agents in parallel
56
+ const createPromises = Array.from(
57
+ { length: this.config.minSize },
58
+ () => this.createPooledAgent()
59
+ );
60
+ await Promise.all(createPromises);
61
+
62
+ // Start health checks
63
+ this.startHealthChecks();
64
+
65
+ this.emit('initialized', {
66
+ poolName: this.config.name,
67
+ size: this.pooledAgents.size
68
+ });
69
+ }
70
+
71
+ async shutdown(): Promise<void> {
72
+ if (this.healthCheckInterval) {
73
+ clearInterval(this.healthCheckInterval);
74
+ this.healthCheckInterval = undefined;
75
+ }
76
+
77
+ // Mark all agents as terminated
78
+ for (const pooled of this.pooledAgents.values()) {
79
+ pooled.agent.status = 'terminated';
80
+ }
81
+
82
+ this.pooledAgents.clear();
83
+ this.available.clear();
84
+ this.busy.clear();
85
+
86
+ this.emit('shutdown');
87
+ }
88
+
89
+ async acquire(): Promise<AgentState | undefined> {
90
+ // Try to get an available agent
91
+ const availableId = this.available.values().next().value as string | undefined;
92
+
93
+ if (availableId) {
94
+ const pooled = this.pooledAgents.get(availableId);
95
+ if (pooled) {
96
+ this.available.delete(availableId);
97
+ this.busy.add(availableId);
98
+ pooled.acquiredAt = new Date();
99
+ pooled.usageCount++;
100
+ pooled.agent.status = 'busy';
101
+
102
+ this.emit('agent.acquired', { agentId: availableId });
103
+
104
+ // Check if we need to scale up
105
+ await this.checkScaling();
106
+
107
+ return pooled.agent;
108
+ }
109
+ }
110
+
111
+ // No available agents, try to scale up
112
+ if (this.pooledAgents.size < this.config.maxSize) {
113
+ const agent = await this.createPooledAgent();
114
+ if (agent) {
115
+ const pooled = this.pooledAgents.get(agent.id.id)!;
116
+ this.available.delete(agent.id.id);
117
+ this.busy.add(agent.id.id);
118
+ pooled.acquiredAt = new Date();
119
+ pooled.usageCount++;
120
+ agent.status = 'busy';
121
+
122
+ this.emit('agent.acquired', { agentId: agent.id.id });
123
+
124
+ return agent;
125
+ }
126
+ }
127
+
128
+ // Pool exhausted
129
+ this.emit('pool.exhausted');
130
+ return undefined;
131
+ }
132
+
133
+ async release(agentId: string): Promise<void> {
134
+ const pooled = this.pooledAgents.get(agentId);
135
+ if (!pooled) {
136
+ return;
137
+ }
138
+
139
+ this.busy.delete(agentId);
140
+ this.available.add(agentId);
141
+ pooled.acquiredAt = undefined;
142
+ pooled.lastUsed = new Date();
143
+ pooled.agent.status = 'idle';
144
+ pooled.agent.currentTask = undefined;
145
+
146
+ this.emit('agent.released', { agentId });
147
+
148
+ // Check if we need to scale down
149
+ await this.checkScaling();
150
+ }
151
+
152
+ async add(agent: AgentState): Promise<void> {
153
+ if (this.pooledAgents.size >= this.config.maxSize) {
154
+ throw new Error(`Pool ${this.config.name} is at maximum capacity`);
155
+ }
156
+
157
+ const pooled: PooledAgent = {
158
+ agent,
159
+ lastUsed: new Date(),
160
+ usageCount: 0,
161
+ };
162
+
163
+ this.pooledAgents.set(agent.id.id, pooled);
164
+ this.available.add(agent.id.id);
165
+
166
+ this.emit('agent.added', { agentId: agent.id.id });
167
+ }
168
+
169
+ async remove(agentId: string): Promise<void> {
170
+ const pooled = this.pooledAgents.get(agentId);
171
+ if (!pooled) {
172
+ return;
173
+ }
174
+
175
+ this.pooledAgents.delete(agentId);
176
+ this.available.delete(agentId);
177
+ this.busy.delete(agentId);
178
+ pooled.agent.status = 'terminated';
179
+
180
+ this.emit('agent.removed', { agentId });
181
+ }
182
+
183
+ async scale(delta: number): Promise<void> {
184
+ const now = new Date();
185
+
186
+ // Check cooldown
187
+ if (this.lastScaleOperation) {
188
+ const timeSinceLastScale = now.getTime() - this.lastScaleOperation.getTime();
189
+ if (timeSinceLastScale < this.config.cooldownMs) {
190
+ return;
191
+ }
192
+ }
193
+
194
+ if (delta > 0) {
195
+ // Scale up - create agents in parallel
196
+ const targetSize = Math.min(
197
+ this.pooledAgents.size + delta,
198
+ this.config.maxSize
199
+ );
200
+ const toCreate = targetSize - this.pooledAgents.size;
201
+
202
+ const createPromises = Array.from(
203
+ { length: toCreate },
204
+ () => this.createPooledAgent()
205
+ );
206
+ await Promise.all(createPromises);
207
+
208
+ this.emit('pool.scaled_up', { added: toCreate });
209
+ } else if (delta < 0) {
210
+ // Scale down - remove agents in parallel
211
+ const targetSize = Math.max(
212
+ this.pooledAgents.size + delta,
213
+ this.config.minSize
214
+ );
215
+ const toRemove = this.pooledAgents.size - targetSize;
216
+
217
+ // Remove least recently used available agents
218
+ const sortedAvailable = Array.from(this.available)
219
+ .map(id => this.pooledAgents.get(id)!)
220
+ .filter(p => p !== undefined)
221
+ .sort((a, b) => a.lastUsed.getTime() - b.lastUsed.getTime());
222
+
223
+ const agentsToRemove = sortedAvailable.slice(0, toRemove);
224
+ await Promise.all(agentsToRemove.map(pooled => this.remove(pooled.agent.id.id)));
225
+
226
+ this.emit('pool.scaled_down', { removed: agentsToRemove.length });
227
+ }
228
+
229
+ this.lastScaleOperation = now;
230
+ }
231
+
232
+ getState(): AgentPoolState {
233
+ return {
234
+ id: `pool_${this.config.name}`,
235
+ config: { ...this.config },
236
+ agents: new Map(
237
+ Array.from(this.pooledAgents.entries()).map(
238
+ ([id, pooled]) => [id, pooled.agent]
239
+ )
240
+ ),
241
+ availableAgents: Array.from(this.available),
242
+ busyAgents: Array.from(this.busy),
243
+ pendingScale: this.pendingScale,
244
+ lastScaleOperation: this.lastScaleOperation,
245
+ };
246
+ }
247
+
248
+ getAvailableCount(): number {
249
+ return this.available.size;
250
+ }
251
+
252
+ getBusyCount(): number {
253
+ return this.busy.size;
254
+ }
255
+
256
+ getTotalCount(): number {
257
+ return this.pooledAgents.size;
258
+ }
259
+
260
+ getUtilization(): number {
261
+ if (this.pooledAgents.size === 0) return 0;
262
+ return this.busy.size / this.pooledAgents.size;
263
+ }
264
+
265
+ // ===== PRIVATE METHODS =====
266
+
267
+ private async createPooledAgent(): Promise<AgentState | undefined> {
268
+ if (this.pooledAgents.size >= this.config.maxSize) {
269
+ return undefined;
270
+ }
271
+
272
+ this.agentCounter++;
273
+ const agentId = `${this.config.name}_agent_${this.agentCounter}`;
274
+
275
+ const agent: AgentState = {
276
+ id: {
277
+ id: agentId,
278
+ swarmId: 'pool',
279
+ type: this.config.type,
280
+ instance: this.agentCounter,
281
+ },
282
+ name: `${this.config.name}-${this.agentCounter}`,
283
+ type: this.config.type,
284
+ status: 'idle',
285
+ capabilities: this.createDefaultCapabilities(),
286
+ metrics: this.createDefaultMetrics(),
287
+ workload: 0,
288
+ health: 1.0,
289
+ lastHeartbeat: new Date(),
290
+ connections: [],
291
+ };
292
+
293
+ const pooled: PooledAgent = {
294
+ agent,
295
+ lastUsed: new Date(),
296
+ usageCount: 0,
297
+ };
298
+
299
+ this.pooledAgents.set(agentId, pooled);
300
+ this.available.add(agentId);
301
+
302
+ this.emit('agent.created', { agentId });
303
+
304
+ return agent;
305
+ }
306
+
307
+ private createDefaultCapabilities(): AgentCapabilities {
308
+ return {
309
+ codeGeneration: true,
310
+ codeReview: true,
311
+ testing: true,
312
+ documentation: true,
313
+ research: true,
314
+ analysis: true,
315
+ coordination: this.config.type === 'coordinator',
316
+ languages: ['typescript', 'javascript', 'python'],
317
+ frameworks: ['node', 'deno', 'react'],
318
+ domains: ['development', 'testing', 'analysis'],
319
+ tools: ['git', 'npm', 'editor'],
320
+ maxConcurrentTasks: 3,
321
+ maxMemoryUsage: 512 * 1024 * 1024,
322
+ maxExecutionTime: SWARM_CONSTANTS.DEFAULT_TASK_TIMEOUT_MS,
323
+ reliability: 0.95,
324
+ speed: 1.0,
325
+ quality: 0.9,
326
+ };
327
+ }
328
+
329
+ private createDefaultMetrics(): AgentMetrics {
330
+ return {
331
+ tasksCompleted: 0,
332
+ tasksFailed: 0,
333
+ averageExecutionTime: 0,
334
+ successRate: 1.0,
335
+ cpuUsage: 0,
336
+ memoryUsage: 0,
337
+ messagesProcessed: 0,
338
+ lastActivity: new Date(),
339
+ responseTime: 0,
340
+ health: 1.0,
341
+ };
342
+ }
343
+
344
+ private async checkScaling(): Promise<void> {
345
+ const utilization = this.getUtilization();
346
+
347
+ if (utilization >= this.config.scaleUpThreshold &&
348
+ this.pooledAgents.size < this.config.maxSize) {
349
+ // Scale up by 1
350
+ this.pendingScale = 1;
351
+ await this.scale(1);
352
+ this.pendingScale = 0;
353
+ } else if (utilization <= this.config.scaleDownThreshold &&
354
+ this.pooledAgents.size > this.config.minSize) {
355
+ // Scale down by 1
356
+ this.pendingScale = -1;
357
+ await this.scale(-1);
358
+ this.pendingScale = 0;
359
+ }
360
+ }
361
+
362
+ private startHealthChecks(): void {
363
+ this.healthCheckInterval = setInterval(() => {
364
+ this.performHealthChecks();
365
+ }, this.config.healthCheckIntervalMs);
366
+ }
367
+
368
+ private performHealthChecks(): void {
369
+ const now = new Date();
370
+ const unhealthyThresholdMs = this.config.healthCheckIntervalMs * 3;
371
+
372
+ for (const [agentId, pooled] of this.pooledAgents) {
373
+ const timeSinceLastActivity = now.getTime() - pooled.agent.lastHeartbeat.getTime();
374
+
375
+ if (timeSinceLastActivity > unhealthyThresholdMs) {
376
+ // Agent is unhealthy
377
+ pooled.agent.health = Math.max(0, pooled.agent.health - 0.2);
378
+ pooled.agent.status = 'error';
379
+
380
+ this.emit('agent.unhealthy', { agentId, health: pooled.agent.health });
381
+
382
+ // If completely unhealthy, remove and replace
383
+ if (pooled.agent.health <= 0) {
384
+ this.replaceUnhealthyAgent(agentId);
385
+ }
386
+ } else {
387
+ // Update health positively
388
+ pooled.agent.health = Math.min(1.0, pooled.agent.health + 0.1);
389
+ pooled.agent.lastHeartbeat = now;
390
+ }
391
+ }
392
+ }
393
+
394
+ private async replaceUnhealthyAgent(agentId: string): Promise<void> {
395
+ const pooled = this.pooledAgents.get(agentId);
396
+ if (!pooled) return;
397
+
398
+ const wasBusy = this.busy.has(agentId);
399
+ await this.remove(agentId);
400
+
401
+ // Create replacement if below min size or was busy
402
+ if (this.pooledAgents.size < this.config.minSize || wasBusy) {
403
+ await this.createPooledAgent();
404
+ }
405
+
406
+ this.emit('agent.replaced', { oldAgentId: agentId });
407
+ }
408
+
409
+ // ===== UTILITY METHODS =====
410
+
411
+ getAgent(agentId: string): AgentState | undefined {
412
+ return this.pooledAgents.get(agentId)?.agent;
413
+ }
414
+
415
+ getAllAgents(): AgentState[] {
416
+ return Array.from(this.pooledAgents.values()).map(p => p.agent);
417
+ }
418
+
419
+ getAvailableAgents(): AgentState[] {
420
+ return Array.from(this.available)
421
+ .map(id => this.pooledAgents.get(id)?.agent)
422
+ .filter((a): a is AgentState => a !== undefined);
423
+ }
424
+
425
+ getBusyAgents(): AgentState[] {
426
+ return Array.from(this.busy)
427
+ .map(id => this.pooledAgents.get(id)?.agent)
428
+ .filter((a): a is AgentState => a !== undefined);
429
+ }
430
+
431
+ updateAgentHeartbeat(agentId: string): void {
432
+ const pooled = this.pooledAgents.get(agentId);
433
+ if (pooled) {
434
+ pooled.agent.lastHeartbeat = new Date();
435
+ pooled.agent.health = Math.min(1.0, pooled.agent.health + 0.05);
436
+ }
437
+ }
438
+
439
+ updateAgentMetrics(agentId: string, metrics: Partial<AgentMetrics>): void {
440
+ const pooled = this.pooledAgents.get(agentId);
441
+ if (pooled) {
442
+ pooled.agent.metrics = { ...pooled.agent.metrics, ...metrics };
443
+ pooled.agent.lastHeartbeat = new Date();
444
+ }
445
+ }
446
+
447
+ getPoolStats(): {
448
+ total: number;
449
+ available: number;
450
+ busy: number;
451
+ utilization: number;
452
+ avgHealth: number;
453
+ avgUsageCount: number;
454
+ } {
455
+ const agents = Array.from(this.pooledAgents.values());
456
+ const avgHealth = agents.length > 0
457
+ ? agents.reduce((sum, p) => sum + p.agent.health, 0) / agents.length
458
+ : 1.0;
459
+ const avgUsageCount = agents.length > 0
460
+ ? agents.reduce((sum, p) => sum + p.usageCount, 0) / agents.length
461
+ : 0;
462
+
463
+ return {
464
+ total: this.pooledAgents.size,
465
+ available: this.available.size,
466
+ busy: this.busy.size,
467
+ utilization: this.getUtilization(),
468
+ avgHealth,
469
+ avgUsageCount,
470
+ };
471
+ }
472
+ }
473
+
474
+ export function createAgentPool(config?: Partial<AgentPoolConfig>): AgentPool {
475
+ return new AgentPool(config);
476
+ }
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Create Task Command - Application Layer (CQRS)
3
+ *
4
+ * Command for creating new tasks in the swarm.
5
+ *
6
+ * @module v3/swarm/application/commands
7
+ */
8
+
9
+ import { Task, TaskPriority, TaskProps } from '../../domain/entities/task.js';
10
+ import { ITaskRepository } from '../../domain/repositories/task-repository.interface.js';
11
+
12
+ /**
13
+ * Create Task Command Input
14
+ */
15
+ export interface CreateTaskInput {
16
+ title: string;
17
+ description: string;
18
+ type: string;
19
+ priority?: TaskPriority;
20
+ dependencies?: string[];
21
+ metadata?: Record<string, unknown>;
22
+ input?: unknown;
23
+ timeout?: number;
24
+ maxRetries?: number;
25
+ autoQueue?: boolean;
26
+ }
27
+
28
+ /**
29
+ * Create Task Command Result
30
+ */
31
+ export interface CreateTaskResult {
32
+ success: boolean;
33
+ taskId: string;
34
+ task: Task;
35
+ queuedAutomatically: boolean;
36
+ }
37
+
38
+ /**
39
+ * Create Task Command Handler
40
+ */
41
+ export class CreateTaskCommandHandler {
42
+ constructor(private readonly repository: ITaskRepository) {}
43
+
44
+ async execute(input: CreateTaskInput): Promise<CreateTaskResult> {
45
+ // Validate dependencies exist
46
+ if (input.dependencies && input.dependencies.length > 0) {
47
+ for (const depId of input.dependencies) {
48
+ const exists = await this.repository.exists(depId);
49
+ if (!exists) {
50
+ throw new Error(`Dependency task '${depId}' not found`);
51
+ }
52
+ }
53
+ }
54
+
55
+ // Create task
56
+ const task = Task.create({
57
+ title: input.title,
58
+ description: input.description,
59
+ type: input.type,
60
+ priority: input.priority,
61
+ dependencies: input.dependencies,
62
+ metadata: input.metadata,
63
+ input: input.input,
64
+ timeout: input.timeout,
65
+ maxRetries: input.maxRetries,
66
+ });
67
+
68
+ // Auto-queue if requested and no dependencies
69
+ let queuedAutomatically = false;
70
+ if (input.autoQueue && (!input.dependencies || input.dependencies.length === 0)) {
71
+ task.queue();
72
+ queuedAutomatically = true;
73
+ }
74
+
75
+ await this.repository.save(task);
76
+
77
+ return {
78
+ success: true,
79
+ taskId: task.id,
80
+ task,
81
+ queuedAutomatically,
82
+ };
83
+ }
84
+ }
85
+
86
+ /**
87
+ * Cancel Task Command Input
88
+ */
89
+ export interface CancelTaskInput {
90
+ taskId: string;
91
+ }
92
+
93
+ /**
94
+ * Cancel Task Command Result
95
+ */
96
+ export interface CancelTaskResult {
97
+ success: boolean;
98
+ taskId: string;
99
+ previousStatus: string;
100
+ }
101
+
102
+ /**
103
+ * Cancel Task Command Handler
104
+ */
105
+ export class CancelTaskCommandHandler {
106
+ constructor(private readonly repository: ITaskRepository) {}
107
+
108
+ async execute(input: CancelTaskInput): Promise<CancelTaskResult> {
109
+ const task = await this.repository.findById(input.taskId);
110
+ if (!task) {
111
+ throw new Error(`Task '${input.taskId}' not found`);
112
+ }
113
+
114
+ const previousStatus = task.status;
115
+ task.cancel();
116
+ await this.repository.save(task);
117
+
118
+ return {
119
+ success: true,
120
+ taskId: input.taskId,
121
+ previousStatus,
122
+ };
123
+ }
124
+ }