@sparkleideas/swarm 3.0.0-alpha.6-patch.25 → 3.0.0-alpha.6-patch.27
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/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 +577 -0
- package/dist/queen-coordinator.d.ts.map +1 -0
- package/dist/queen-coordinator.js +1308 -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 +239 -0
- package/dist/workers/worker-dispatch.d.ts.map +1 -0
- package/dist/workers/worker-dispatch.js +846 -0
- package/dist/workers/worker-dispatch.js.map +1 -0
- package/package.json +1 -1
- package/tsconfig.build.tsbuildinfo +1 -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":"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"}
|
|
@@ -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"}
|