@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.
- package/.agentic-flow/intelligence.json +16 -0
- 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/dist/agent-pool.d.ts +52 -0
- package/dist/agent-pool.d.ts.map +1 -0
- package/dist/agent-pool.js +365 -0
- package/dist/agent-pool.js.map +1 -0
- package/dist/application/commands/create-task.command.d.ts +64 -0
- package/dist/application/commands/create-task.command.d.ts.map +1 -0
- package/dist/application/commands/create-task.command.js +77 -0
- package/dist/application/commands/create-task.command.js.map +1 -0
- package/dist/application/commands/spawn-agent.command.d.ts +63 -0
- package/dist/application/commands/spawn-agent.command.d.ts.map +1 -0
- package/dist/application/commands/spawn-agent.command.js +74 -0
- package/dist/application/commands/spawn-agent.command.js.map +1 -0
- package/dist/application/index.d.ts +9 -0
- package/dist/application/index.d.ts.map +1 -0
- package/dist/application/index.js +11 -0
- package/dist/application/index.js.map +1 -0
- package/dist/application/services/swarm-application-service.d.ts +112 -0
- package/dist/application/services/swarm-application-service.d.ts.map +1 -0
- package/dist/application/services/swarm-application-service.js +153 -0
- package/dist/application/services/swarm-application-service.js.map +1 -0
- package/dist/attention-coordinator.d.ts +212 -0
- package/dist/attention-coordinator.d.ts.map +1 -0
- package/dist/attention-coordinator.js +667 -0
- package/dist/attention-coordinator.js.map +1 -0
- package/dist/consensus/byzantine.d.ts +63 -0
- package/dist/consensus/byzantine.d.ts.map +1 -0
- package/dist/consensus/byzantine.js +316 -0
- package/dist/consensus/byzantine.js.map +1 -0
- package/dist/consensus/gossip.d.ts +69 -0
- package/dist/consensus/gossip.d.ts.map +1 -0
- package/dist/consensus/gossip.js +378 -0
- package/dist/consensus/gossip.js.map +1 -0
- package/dist/consensus/index.d.ts +49 -0
- package/dist/consensus/index.d.ts.map +1 -0
- package/dist/consensus/index.js +203 -0
- package/dist/consensus/index.js.map +1 -0
- package/dist/consensus/raft.d.ts +62 -0
- package/dist/consensus/raft.d.ts.map +1 -0
- package/dist/consensus/raft.js +324 -0
- package/dist/consensus/raft.js.map +1 -0
- package/dist/coordination/agent-registry.d.ts +68 -0
- package/dist/coordination/agent-registry.d.ts.map +1 -0
- package/dist/coordination/agent-registry.js +412 -0
- package/dist/coordination/agent-registry.js.map +1 -0
- package/dist/coordination/index.d.ts +8 -0
- package/dist/coordination/index.d.ts.map +1 -0
- package/dist/coordination/index.js +8 -0
- package/dist/coordination/index.js.map +1 -0
- package/dist/coordination/swarm-hub.d.ts +150 -0
- package/dist/coordination/swarm-hub.d.ts.map +1 -0
- package/dist/coordination/swarm-hub.js +617 -0
- package/dist/coordination/swarm-hub.js.map +1 -0
- package/dist/coordination/task-orchestrator.d.ts +96 -0
- package/dist/coordination/task-orchestrator.d.ts.map +1 -0
- package/dist/coordination/task-orchestrator.js +412 -0
- package/dist/coordination/task-orchestrator.js.map +1 -0
- package/dist/domain/entities/agent.d.ts +151 -0
- package/dist/domain/entities/agent.d.ts.map +1 -0
- package/dist/domain/entities/agent.js +280 -0
- package/dist/domain/entities/agent.js.map +1 -0
- package/dist/domain/entities/task.d.ts +133 -0
- package/dist/domain/entities/task.d.ts.map +1 -0
- package/dist/domain/entities/task.js +261 -0
- package/dist/domain/entities/task.js.map +1 -0
- package/dist/domain/index.d.ts +11 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +11 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/domain/repositories/agent-repository.interface.d.ts +57 -0
- package/dist/domain/repositories/agent-repository.interface.d.ts.map +1 -0
- package/dist/domain/repositories/agent-repository.interface.js +9 -0
- package/dist/domain/repositories/agent-repository.interface.js.map +1 -0
- package/dist/domain/repositories/task-repository.interface.d.ts +61 -0
- package/dist/domain/repositories/task-repository.interface.d.ts.map +1 -0
- package/dist/domain/repositories/task-repository.interface.js +9 -0
- package/dist/domain/repositories/task-repository.interface.js.map +1 -0
- package/dist/domain/services/coordination-service.d.ts +84 -0
- package/dist/domain/services/coordination-service.d.ts.map +1 -0
- package/dist/domain/services/coordination-service.js +231 -0
- package/dist/domain/services/coordination-service.js.map +1 -0
- package/dist/federation-hub.d.ts +284 -0
- package/dist/federation-hub.d.ts.map +1 -0
- package/dist/federation-hub.js +692 -0
- package/dist/federation-hub.js.map +1 -0
- package/dist/index.d.ts +107 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +142 -0
- package/dist/index.js.map +1 -0
- package/dist/message-bus.d.ts +48 -0
- package/dist/message-bus.d.ts.map +1 -0
- package/dist/message-bus.js +499 -0
- package/dist/message-bus.js.map +1 -0
- package/dist/queen-coordinator.d.ts +576 -0
- package/dist/queen-coordinator.d.ts.map +1 -0
- package/dist/queen-coordinator.js +1307 -0
- package/dist/queen-coordinator.js.map +1 -0
- package/dist/shared/events.d.ts +63 -0
- package/dist/shared/events.d.ts.map +1 -0
- package/dist/shared/events.js +203 -0
- package/dist/shared/events.js.map +1 -0
- package/dist/shared/types.d.ts +212 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/types.js +22 -0
- package/dist/shared/types.js.map +1 -0
- package/dist/topology-manager.d.ts +62 -0
- package/dist/topology-manager.d.ts.map +1 -0
- package/dist/topology-manager.js +538 -0
- package/dist/topology-manager.js.map +1 -0
- package/dist/types.d.ts +353 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +43 -0
- package/dist/types.js.map +1 -0
- package/dist/unified-coordinator.d.ts +260 -0
- package/dist/unified-coordinator.d.ts.map +1 -0
- package/dist/unified-coordinator.js +1460 -0
- package/dist/unified-coordinator.js.map +1 -0
- package/dist/workers/index.d.ts +29 -0
- package/dist/workers/index.d.ts.map +1 -0
- package/dist/workers/index.js +49 -0
- package/dist/workers/index.js.map +1 -0
- package/dist/workers/worker-dispatch.d.ts +234 -0
- package/dist/workers/worker-dispatch.d.ts.map +1 -0
- package/dist/workers/worker-dispatch.js +842 -0
- package/dist/workers/worker-dispatch.js.map +1 -0
- package/package.json +33 -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 +2024 -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 +1072 -0
- package/tsconfig.json +9 -0
- package/tsconfig.tsbuildinfo +1 -0
- package/vitest.config.ts +20 -0
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task Entity - Domain Layer
|
|
3
|
+
*
|
|
4
|
+
* Core domain entity representing a task in the swarm.
|
|
5
|
+
* Tasks are units of work assigned to agents.
|
|
6
|
+
*
|
|
7
|
+
* @module v3/swarm/domain/entities
|
|
8
|
+
*/
|
|
9
|
+
import { randomUUID } from 'crypto';
|
|
10
|
+
/**
|
|
11
|
+
* Task - Entity
|
|
12
|
+
*
|
|
13
|
+
* Represents a unit of work with lifecycle management,
|
|
14
|
+
* dependency tracking, and result storage.
|
|
15
|
+
*/
|
|
16
|
+
export class Task {
|
|
17
|
+
_id;
|
|
18
|
+
_title;
|
|
19
|
+
_description;
|
|
20
|
+
_type;
|
|
21
|
+
_priority;
|
|
22
|
+
_status;
|
|
23
|
+
_assignedAgentId;
|
|
24
|
+
_dependencies;
|
|
25
|
+
_metadata;
|
|
26
|
+
_input;
|
|
27
|
+
_output;
|
|
28
|
+
_error;
|
|
29
|
+
_retryCount;
|
|
30
|
+
_maxRetries;
|
|
31
|
+
_timeout;
|
|
32
|
+
_createdAt;
|
|
33
|
+
_startedAt;
|
|
34
|
+
_completedAt;
|
|
35
|
+
constructor(props) {
|
|
36
|
+
const now = new Date();
|
|
37
|
+
this._id = props.id ?? randomUUID();
|
|
38
|
+
this._title = props.title;
|
|
39
|
+
this._description = props.description;
|
|
40
|
+
this._type = props.type;
|
|
41
|
+
this._priority = props.priority ?? 'normal';
|
|
42
|
+
this._status = props.status ?? 'pending';
|
|
43
|
+
this._assignedAgentId = props.assignedAgentId;
|
|
44
|
+
this._dependencies = new Set(props.dependencies ?? []);
|
|
45
|
+
this._metadata = props.metadata ?? {};
|
|
46
|
+
this._input = props.input;
|
|
47
|
+
this._output = props.output;
|
|
48
|
+
this._error = props.error;
|
|
49
|
+
this._retryCount = props.retryCount ?? 0;
|
|
50
|
+
this._maxRetries = props.maxRetries ?? 3;
|
|
51
|
+
this._timeout = props.timeout ?? 300000; // 5 minutes default
|
|
52
|
+
this._createdAt = props.createdAt ?? now;
|
|
53
|
+
this._startedAt = props.startedAt;
|
|
54
|
+
this._completedAt = props.completedAt;
|
|
55
|
+
}
|
|
56
|
+
static create(props) {
|
|
57
|
+
return new Task(props);
|
|
58
|
+
}
|
|
59
|
+
static fromPersistence(props) {
|
|
60
|
+
return new Task(props);
|
|
61
|
+
}
|
|
62
|
+
// Getters
|
|
63
|
+
get id() {
|
|
64
|
+
return this._id;
|
|
65
|
+
}
|
|
66
|
+
get title() {
|
|
67
|
+
return this._title;
|
|
68
|
+
}
|
|
69
|
+
get description() {
|
|
70
|
+
return this._description;
|
|
71
|
+
}
|
|
72
|
+
get type() {
|
|
73
|
+
return this._type;
|
|
74
|
+
}
|
|
75
|
+
get priority() {
|
|
76
|
+
return this._priority;
|
|
77
|
+
}
|
|
78
|
+
get status() {
|
|
79
|
+
return this._status;
|
|
80
|
+
}
|
|
81
|
+
get assignedAgentId() {
|
|
82
|
+
return this._assignedAgentId;
|
|
83
|
+
}
|
|
84
|
+
get dependencies() {
|
|
85
|
+
return Array.from(this._dependencies);
|
|
86
|
+
}
|
|
87
|
+
get metadata() {
|
|
88
|
+
return { ...this._metadata };
|
|
89
|
+
}
|
|
90
|
+
get input() {
|
|
91
|
+
return this._input;
|
|
92
|
+
}
|
|
93
|
+
get output() {
|
|
94
|
+
return this._output;
|
|
95
|
+
}
|
|
96
|
+
get error() {
|
|
97
|
+
return this._error;
|
|
98
|
+
}
|
|
99
|
+
get retryCount() {
|
|
100
|
+
return this._retryCount;
|
|
101
|
+
}
|
|
102
|
+
get maxRetries() {
|
|
103
|
+
return this._maxRetries;
|
|
104
|
+
}
|
|
105
|
+
get timeout() {
|
|
106
|
+
return this._timeout;
|
|
107
|
+
}
|
|
108
|
+
get createdAt() {
|
|
109
|
+
return new Date(this._createdAt);
|
|
110
|
+
}
|
|
111
|
+
get startedAt() {
|
|
112
|
+
return this._startedAt ? new Date(this._startedAt) : undefined;
|
|
113
|
+
}
|
|
114
|
+
get completedAt() {
|
|
115
|
+
return this._completedAt ? new Date(this._completedAt) : undefined;
|
|
116
|
+
}
|
|
117
|
+
// ============================================================================
|
|
118
|
+
// Business Logic
|
|
119
|
+
// ============================================================================
|
|
120
|
+
/**
|
|
121
|
+
* Queue the task for execution
|
|
122
|
+
*/
|
|
123
|
+
queue() {
|
|
124
|
+
if (this._status !== 'pending') {
|
|
125
|
+
throw new Error('Can only queue pending tasks');
|
|
126
|
+
}
|
|
127
|
+
this._status = 'queued';
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Assign task to an agent
|
|
131
|
+
*/
|
|
132
|
+
assign(agentId) {
|
|
133
|
+
if (this._status !== 'queued' && this._status !== 'pending') {
|
|
134
|
+
throw new Error('Can only assign queued or pending tasks');
|
|
135
|
+
}
|
|
136
|
+
this._assignedAgentId = agentId;
|
|
137
|
+
this._status = 'assigned';
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Start task execution
|
|
141
|
+
*/
|
|
142
|
+
start() {
|
|
143
|
+
if (this._status !== 'assigned') {
|
|
144
|
+
throw new Error('Can only start assigned tasks');
|
|
145
|
+
}
|
|
146
|
+
this._status = 'running';
|
|
147
|
+
this._startedAt = new Date();
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Complete the task successfully
|
|
151
|
+
*/
|
|
152
|
+
complete(output) {
|
|
153
|
+
if (this._status !== 'running') {
|
|
154
|
+
throw new Error('Can only complete running tasks');
|
|
155
|
+
}
|
|
156
|
+
this._status = 'completed';
|
|
157
|
+
this._output = output;
|
|
158
|
+
this._completedAt = new Date();
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Mark task as failed
|
|
162
|
+
*/
|
|
163
|
+
fail(error) {
|
|
164
|
+
if (this._status !== 'running' && this._status !== 'assigned') {
|
|
165
|
+
throw new Error('Can only fail running or assigned tasks');
|
|
166
|
+
}
|
|
167
|
+
this._error = error;
|
|
168
|
+
this._retryCount++;
|
|
169
|
+
if (this._retryCount >= this._maxRetries) {
|
|
170
|
+
this._status = 'failed';
|
|
171
|
+
this._completedAt = new Date();
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
// Reset for retry
|
|
175
|
+
this._status = 'queued';
|
|
176
|
+
this._assignedAgentId = undefined;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Cancel the task
|
|
181
|
+
*/
|
|
182
|
+
cancel() {
|
|
183
|
+
if (this._status === 'completed' || this._status === 'failed') {
|
|
184
|
+
throw new Error('Cannot cancel finished tasks');
|
|
185
|
+
}
|
|
186
|
+
this._status = 'cancelled';
|
|
187
|
+
this._completedAt = new Date();
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Check if all dependencies are satisfied
|
|
191
|
+
*/
|
|
192
|
+
areDependenciesSatisfied(completedTaskIds) {
|
|
193
|
+
for (const depId of this._dependencies) {
|
|
194
|
+
if (!completedTaskIds.has(depId)) {
|
|
195
|
+
return false;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return true;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Check if task can be retried
|
|
202
|
+
*/
|
|
203
|
+
canRetry() {
|
|
204
|
+
return this._retryCount < this._maxRetries;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Get execution duration in milliseconds
|
|
208
|
+
*/
|
|
209
|
+
getExecutionDuration() {
|
|
210
|
+
if (!this._startedAt)
|
|
211
|
+
return null;
|
|
212
|
+
const endTime = this._completedAt ?? new Date();
|
|
213
|
+
return endTime.getTime() - this._startedAt.getTime();
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Check if task is timed out
|
|
217
|
+
*/
|
|
218
|
+
isTimedOut() {
|
|
219
|
+
if (this._status !== 'running' || !this._startedAt)
|
|
220
|
+
return false;
|
|
221
|
+
return Date.now() - this._startedAt.getTime() > this._timeout;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Priority comparison (for sorting)
|
|
225
|
+
*/
|
|
226
|
+
comparePriority(other) {
|
|
227
|
+
const priorityOrder = {
|
|
228
|
+
critical: 0,
|
|
229
|
+
high: 1,
|
|
230
|
+
normal: 2,
|
|
231
|
+
low: 3,
|
|
232
|
+
};
|
|
233
|
+
return priorityOrder[this._priority] - priorityOrder[other.priority];
|
|
234
|
+
}
|
|
235
|
+
toPersistence() {
|
|
236
|
+
return {
|
|
237
|
+
id: this._id,
|
|
238
|
+
title: this._title,
|
|
239
|
+
description: this._description,
|
|
240
|
+
type: this._type,
|
|
241
|
+
priority: this._priority,
|
|
242
|
+
status: this._status,
|
|
243
|
+
assignedAgentId: this._assignedAgentId,
|
|
244
|
+
dependencies: Array.from(this._dependencies),
|
|
245
|
+
metadata: this._metadata,
|
|
246
|
+
input: this._input,
|
|
247
|
+
output: this._output,
|
|
248
|
+
error: this._error,
|
|
249
|
+
retryCount: this._retryCount,
|
|
250
|
+
maxRetries: this._maxRetries,
|
|
251
|
+
timeout: this._timeout,
|
|
252
|
+
createdAt: this._createdAt.toISOString(),
|
|
253
|
+
startedAt: this._startedAt?.toISOString(),
|
|
254
|
+
completedAt: this._completedAt?.toISOString(),
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
toJSON() {
|
|
258
|
+
return this.toPersistence();
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=task.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../../src/domain/entities/task.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AA2CpC;;;;;GAKG;AACH,MAAM,OAAO,IAAI;IACP,GAAG,CAAS;IACZ,MAAM,CAAS;IACf,YAAY,CAAS;IACrB,KAAK,CAAS;IACd,SAAS,CAAe;IACxB,OAAO,CAAa;IACpB,gBAAgB,CAAU;IAC1B,aAAa,CAAc;IAC3B,SAAS,CAA0B;IACnC,MAAM,CAAW;IACjB,OAAO,CAAW;IAClB,MAAM,CAAU;IAChB,WAAW,CAAS;IACpB,WAAW,CAAS;IACpB,QAAQ,CAAS;IACjB,UAAU,CAAO;IACjB,UAAU,CAAQ;IAClB,YAAY,CAAQ;IAE5B,YAAoB,KAAgB;QAClC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,IAAI,UAAU,EAAE,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC;QAC5C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,IAAI,SAAS,CAAC;QACzC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,eAAe,CAAC;QAC9C,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,oBAAoB;QAC7D,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,IAAI,GAAG,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,KAAgB;QAC5B,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,KAAgB;QACrC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,UAAU;IACV,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IACD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IACD,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IACD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IACD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IACD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IACD,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IACD,IAAI,YAAY;QACd,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,QAAQ;QACV,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAC/B,CAAC;IACD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IACD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IACD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IACD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IACD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IACD,IAAI,SAAS;QACX,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACjE,CAAC;IACD,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrE,CAAC;IAED,+EAA+E;IAC/E,iBAAiB;IACjB,+EAA+E;IAE/E;;OAEG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAe;QACpB,IAAI,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC5D,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,MAAgB;QACvB,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,KAAa;QAChB,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YAC9D,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;YACxB,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,kBAAkB;YAClB,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;YACxB,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QACpC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,IAAI,IAAI,CAAC,OAAO,KAAK,WAAW,IAAI,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC9D,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,wBAAwB,CAAC,gBAA6B;QACpD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjC,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,IAAI,EAAE,CAAC;QAChD,OAAO,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QACjE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,KAAW;QACzB,MAAM,aAAa,GAAiC;YAClD,QAAQ,EAAE,CAAC;YACX,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,CAAC;YACT,GAAG,EAAE,CAAC;SACP,CAAC;QACF,OAAO,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvE,CAAC;IAED,aAAa;QACX,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,GAAG;YACZ,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,WAAW,EAAE,IAAI,CAAC,YAAY;YAC9B,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,eAAe,EAAE,IAAI,CAAC,gBAAgB;YACtC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;YAC5C,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;YACxC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE;YACzC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE;SAC9C,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Swarm Domain Layer - Public Exports
|
|
3
|
+
*
|
|
4
|
+
* @module v3/swarm/domain
|
|
5
|
+
*/
|
|
6
|
+
export { Agent, type AgentStatus, type AgentRole, type AgentProps, } from './entities/agent.js';
|
|
7
|
+
export { Task, type TaskStatus, type TaskPriority, type TaskProps, } from './entities/task.js';
|
|
8
|
+
export { type IAgentRepository, type AgentQueryOptions, type AgentStatistics, } from './repositories/agent-repository.interface.js';
|
|
9
|
+
export { type ITaskRepository, type TaskQueryOptions, type TaskStatistics, } from './repositories/task-repository.interface.js';
|
|
10
|
+
export { CoordinationService, type LoadBalancingStrategy, type TaskAssignmentResult, type SwarmHealth, } from './services/coordination-service.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,KAAK,EACL,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,UAAU,GAChB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,IAAI,EACJ,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,SAAS,GACf,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,eAAe,GACrB,MAAM,8CAA8C,CAAC;AAEtD,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,6CAA6C,CAAC;AAGrD,OAAO,EACL,mBAAmB,EACnB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,WAAW,GACjB,MAAM,oCAAoC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Swarm Domain Layer - Public Exports
|
|
3
|
+
*
|
|
4
|
+
* @module v3/swarm/domain
|
|
5
|
+
*/
|
|
6
|
+
// Entities
|
|
7
|
+
export { Agent, } from './entities/agent.js';
|
|
8
|
+
export { Task, } from './entities/task.js';
|
|
9
|
+
// Domain Services
|
|
10
|
+
export { CoordinationService, } from './services/coordination-service.js';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,WAAW;AACX,OAAO,EACL,KAAK,GAIN,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,IAAI,GAIL,MAAM,oBAAoB,CAAC;AAe5B,kBAAkB;AAClB,OAAO,EACL,mBAAmB,GAIpB,MAAM,oCAAoC,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Repository Interface - Domain Layer
|
|
3
|
+
*
|
|
4
|
+
* Defines the contract for agent persistence.
|
|
5
|
+
*
|
|
6
|
+
* @module v3/swarm/domain/repositories
|
|
7
|
+
*/
|
|
8
|
+
import { Agent, AgentStatus, AgentRole } from '../entities/agent.js';
|
|
9
|
+
/**
|
|
10
|
+
* Agent query options
|
|
11
|
+
*/
|
|
12
|
+
export interface AgentQueryOptions {
|
|
13
|
+
status?: AgentStatus;
|
|
14
|
+
role?: AgentRole;
|
|
15
|
+
domain?: string;
|
|
16
|
+
parentId?: string;
|
|
17
|
+
capability?: string;
|
|
18
|
+
limit?: number;
|
|
19
|
+
offset?: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Agent statistics
|
|
23
|
+
*/
|
|
24
|
+
export interface AgentStatistics {
|
|
25
|
+
total: number;
|
|
26
|
+
byStatus: Record<AgentStatus, number>;
|
|
27
|
+
byRole: Record<string, number>;
|
|
28
|
+
byDomain: Record<string, number>;
|
|
29
|
+
totalTasksCompleted: number;
|
|
30
|
+
averageUtilization: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Agent Repository Interface
|
|
34
|
+
*/
|
|
35
|
+
export interface IAgentRepository {
|
|
36
|
+
save(agent: Agent): Promise<void>;
|
|
37
|
+
findById(id: string): Promise<Agent | null>;
|
|
38
|
+
findByName(name: string): Promise<Agent | null>;
|
|
39
|
+
delete(id: string): Promise<boolean>;
|
|
40
|
+
exists(id: string): Promise<boolean>;
|
|
41
|
+
saveMany(agents: Agent[]): Promise<void>;
|
|
42
|
+
findByIds(ids: string[]): Promise<Agent[]>;
|
|
43
|
+
deleteMany(ids: string[]): Promise<number>;
|
|
44
|
+
findAll(options?: AgentQueryOptions): Promise<Agent[]>;
|
|
45
|
+
findByStatus(status: AgentStatus): Promise<Agent[]>;
|
|
46
|
+
findByRole(role: AgentRole): Promise<Agent[]>;
|
|
47
|
+
findByDomain(domain: string): Promise<Agent[]>;
|
|
48
|
+
findByParent(parentId: string): Promise<Agent[]>;
|
|
49
|
+
findByCapability(capability: string): Promise<Agent[]>;
|
|
50
|
+
findAvailable(): Promise<Agent[]>;
|
|
51
|
+
getStatistics(): Promise<AgentStatistics>;
|
|
52
|
+
count(options?: AgentQueryOptions): Promise<number>;
|
|
53
|
+
initialize(): Promise<void>;
|
|
54
|
+
shutdown(): Promise<void>;
|
|
55
|
+
clear(): Promise<void>;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=agent-repository.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-repository.interface.d.ts","sourceRoot":"","sources":["../../../src/domain/repositories/agent-repository.interface.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAE/B,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAC5C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAChD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAGrC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3C,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAG3C,OAAO,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACvD,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACpD,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9C,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/C,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACjD,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACvD,aAAa,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAGlC,aAAa,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;IAC1C,KAAK,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAGpD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-repository.interface.js","sourceRoot":"","sources":["../../../src/domain/repositories/agent-repository.interface.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task Repository Interface - Domain Layer
|
|
3
|
+
*
|
|
4
|
+
* Defines the contract for task persistence.
|
|
5
|
+
*
|
|
6
|
+
* @module v3/swarm/domain/repositories
|
|
7
|
+
*/
|
|
8
|
+
import { Task, TaskStatus, TaskPriority } from '../entities/task.js';
|
|
9
|
+
/**
|
|
10
|
+
* Task query options
|
|
11
|
+
*/
|
|
12
|
+
export interface TaskQueryOptions {
|
|
13
|
+
status?: TaskStatus;
|
|
14
|
+
priority?: TaskPriority;
|
|
15
|
+
type?: string;
|
|
16
|
+
assignedAgentId?: string;
|
|
17
|
+
limit?: number;
|
|
18
|
+
offset?: number;
|
|
19
|
+
orderBy?: 'createdAt' | 'priority' | 'startedAt';
|
|
20
|
+
orderDirection?: 'asc' | 'desc';
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Task statistics
|
|
24
|
+
*/
|
|
25
|
+
export interface TaskStatistics {
|
|
26
|
+
total: number;
|
|
27
|
+
byStatus: Record<TaskStatus, number>;
|
|
28
|
+
byPriority: Record<TaskPriority, number>;
|
|
29
|
+
byType: Record<string, number>;
|
|
30
|
+
averageExecutionTime: number;
|
|
31
|
+
successRate: number;
|
|
32
|
+
retryRate: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Task Repository Interface
|
|
36
|
+
*/
|
|
37
|
+
export interface ITaskRepository {
|
|
38
|
+
save(task: Task): Promise<void>;
|
|
39
|
+
findById(id: string): Promise<Task | null>;
|
|
40
|
+
delete(id: string): Promise<boolean>;
|
|
41
|
+
exists(id: string): Promise<boolean>;
|
|
42
|
+
saveMany(tasks: Task[]): Promise<void>;
|
|
43
|
+
findByIds(ids: string[]): Promise<Task[]>;
|
|
44
|
+
deleteMany(ids: string[]): Promise<number>;
|
|
45
|
+
findAll(options?: TaskQueryOptions): Promise<Task[]>;
|
|
46
|
+
findByStatus(status: TaskStatus): Promise<Task[]>;
|
|
47
|
+
findByPriority(priority: TaskPriority): Promise<Task[]>;
|
|
48
|
+
findByAgent(agentId: string): Promise<Task[]>;
|
|
49
|
+
findPending(): Promise<Task[]>;
|
|
50
|
+
findQueued(): Promise<Task[]>;
|
|
51
|
+
findRunning(): Promise<Task[]>;
|
|
52
|
+
findTimedOut(): Promise<Task[]>;
|
|
53
|
+
getNextTask(agentCapabilities?: string[]): Promise<Task | null>;
|
|
54
|
+
getTaskQueue(limit?: number): Promise<Task[]>;
|
|
55
|
+
getStatistics(): Promise<TaskStatistics>;
|
|
56
|
+
count(options?: TaskQueryOptions): Promise<number>;
|
|
57
|
+
initialize(): Promise<void>;
|
|
58
|
+
shutdown(): Promise<void>;
|
|
59
|
+
clear(): Promise<void>;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=task-repository.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-repository.interface.d.ts","sourceRoot":"","sources":["../../../src/domain/repositories/task-repository.interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-repository.interface.js","sourceRoot":"","sources":["../../../src/domain/repositories/task-repository.interface.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -0,0 +1,84 @@
|
|
|
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
|
+
import { IAgentRepository } from '../repositories/agent-repository.interface.js';
|
|
10
|
+
import { ITaskRepository } from '../repositories/task-repository.interface.js';
|
|
11
|
+
/**
|
|
12
|
+
* Load balancing strategy
|
|
13
|
+
*/
|
|
14
|
+
export type LoadBalancingStrategy = 'round-robin' | 'least-loaded' | 'capability-match' | 'random';
|
|
15
|
+
/**
|
|
16
|
+
* Task assignment result
|
|
17
|
+
*/
|
|
18
|
+
export interface TaskAssignmentResult {
|
|
19
|
+
success: boolean;
|
|
20
|
+
taskId: string;
|
|
21
|
+
agentId?: string;
|
|
22
|
+
reason?: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Swarm health status
|
|
26
|
+
*/
|
|
27
|
+
export interface SwarmHealth {
|
|
28
|
+
healthy: boolean;
|
|
29
|
+
totalAgents: number;
|
|
30
|
+
activeAgents: number;
|
|
31
|
+
errorAgents: number;
|
|
32
|
+
pendingTasks: number;
|
|
33
|
+
runningTasks: number;
|
|
34
|
+
queueDepth: number;
|
|
35
|
+
averageUtilization: number;
|
|
36
|
+
issues: string[];
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Coordination Domain Service
|
|
40
|
+
*
|
|
41
|
+
* Provides domain-level coordination operations.
|
|
42
|
+
*/
|
|
43
|
+
export declare class CoordinationService {
|
|
44
|
+
private readonly agentRepository;
|
|
45
|
+
private readonly taskRepository;
|
|
46
|
+
constructor(agentRepository: IAgentRepository, taskRepository: ITaskRepository);
|
|
47
|
+
/**
|
|
48
|
+
* Assign a task to the best available agent
|
|
49
|
+
*/
|
|
50
|
+
assignTask(taskId: string, strategy?: LoadBalancingStrategy): Promise<TaskAssignmentResult>;
|
|
51
|
+
/**
|
|
52
|
+
* Find the best agent for a task based on strategy
|
|
53
|
+
*/
|
|
54
|
+
private findBestAgent;
|
|
55
|
+
private roundRobinSelection;
|
|
56
|
+
private leastLoadedSelection;
|
|
57
|
+
private capabilityMatchSelection;
|
|
58
|
+
private extractRequiredCapabilities;
|
|
59
|
+
/**
|
|
60
|
+
* Process completed tasks and release agents
|
|
61
|
+
*/
|
|
62
|
+
processTaskCompletion(taskId: string, output?: unknown): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* Queue tasks whose dependencies are now satisfied
|
|
65
|
+
*/
|
|
66
|
+
private queueDependentTasks;
|
|
67
|
+
/**
|
|
68
|
+
* Handle task failure with retry logic
|
|
69
|
+
*/
|
|
70
|
+
processTaskFailure(taskId: string, error: string): Promise<boolean>;
|
|
71
|
+
/**
|
|
72
|
+
* Get overall swarm health
|
|
73
|
+
*/
|
|
74
|
+
getSwarmHealth(): Promise<SwarmHealth>;
|
|
75
|
+
/**
|
|
76
|
+
* Scale agents based on workload
|
|
77
|
+
*/
|
|
78
|
+
calculateScalingRecommendation(): Promise<{
|
|
79
|
+
action: 'scale-up' | 'scale-down' | 'none';
|
|
80
|
+
count: number;
|
|
81
|
+
reason: string;
|
|
82
|
+
}>;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=coordination-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coordination-service.d.ts","sourceRoot":"","sources":["../../../src/domain/services/coordination-service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAE/E;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,aAAa,GAAG,cAAc,GAAG,kBAAkB,GAAG,QAAQ,CAAC;AAEnG;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;;GAIG;AACH,qBAAa,mBAAmB;IAE5B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc;gBADd,eAAe,EAAE,gBAAgB,EACjC,cAAc,EAAE,eAAe;IAGlD;;OAEG;IACG,UAAU,CACd,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,qBAA0C,GACnD,OAAO,CAAC,oBAAoB,CAAC;IA8BhC;;OAEG;YACW,aAAa;IA0B3B,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,wBAAwB;IA0BhC,OAAO,CAAC,2BAA2B;IAoBnC;;OAEG;IACG,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB5E;;OAEG;YACW,mBAAmB;IAgBjC;;OAEG;IACG,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAqBzE;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;IAoC5C;;OAEG;IACG,8BAA8B,IAAI,OAAO,CAAC;QAC9C,MAAM,EAAE,UAAU,GAAG,YAAY,GAAG,MAAM,CAAC;QAC3C,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CAgCH"}
|