@gotza02/smartagent 1.2.0
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/LICENSE +21 -0
- package/README.md +422 -0
- package/dist/config/index.d.ts +72 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +329 -0
- package/dist/config/index.js.map +1 -0
- package/dist/core/agent-manager.d.ts +116 -0
- package/dist/core/agent-manager.d.ts.map +1 -0
- package/dist/core/agent-manager.js +460 -0
- package/dist/core/agent-manager.js.map +1 -0
- package/dist/core/context-manager.d.ts +107 -0
- package/dist/core/context-manager.d.ts.map +1 -0
- package/dist/core/context-manager.js +467 -0
- package/dist/core/context-manager.js.map +1 -0
- package/dist/core/database.d.ts +82 -0
- package/dist/core/database.d.ts.map +1 -0
- package/dist/core/database.js +751 -0
- package/dist/core/database.js.map +1 -0
- package/dist/core/event-emitter.d.ts +110 -0
- package/dist/core/event-emitter.d.ts.map +1 -0
- package/dist/core/event-emitter.js +240 -0
- package/dist/core/event-emitter.js.map +1 -0
- package/dist/core/metrics.d.ts +108 -0
- package/dist/core/metrics.d.ts.map +1 -0
- package/dist/core/metrics.js +281 -0
- package/dist/core/metrics.js.map +1 -0
- package/dist/core/middleware.d.ts +63 -0
- package/dist/core/middleware.d.ts.map +1 -0
- package/dist/core/middleware.js +194 -0
- package/dist/core/middleware.js.map +1 -0
- package/dist/core/plugin-system.d.ts +86 -0
- package/dist/core/plugin-system.d.ts.map +1 -0
- package/dist/core/plugin-system.js +251 -0
- package/dist/core/plugin-system.js.map +1 -0
- package/dist/core/task-scheduler.d.ts +130 -0
- package/dist/core/task-scheduler.d.ts.map +1 -0
- package/dist/core/task-scheduler.js +401 -0
- package/dist/core/task-scheduler.js.map +1 -0
- package/dist/engines/auto-router.d.ts +76 -0
- package/dist/engines/auto-router.d.ts.map +1 -0
- package/dist/engines/auto-router.js +445 -0
- package/dist/engines/auto-router.js.map +1 -0
- package/dist/engines/parallel-execution.d.ts +104 -0
- package/dist/engines/parallel-execution.d.ts.map +1 -0
- package/dist/engines/parallel-execution.js +591 -0
- package/dist/engines/parallel-execution.js.map +1 -0
- package/dist/engines/sequential-thinking.d.ts +88 -0
- package/dist/engines/sequential-thinking.d.ts.map +1 -0
- package/dist/engines/sequential-thinking.js +406 -0
- package/dist/engines/sequential-thinking.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1101 -0
- package/dist/index.js.map +1 -0
- package/dist/security/validation.d.ts +87 -0
- package/dist/security/validation.d.ts.map +1 -0
- package/dist/security/validation.js +465 -0
- package/dist/security/validation.js.map +1 -0
- package/dist/tools/filesystem.d.ts +90 -0
- package/dist/tools/filesystem.d.ts.map +1 -0
- package/dist/tools/filesystem.js +292 -0
- package/dist/tools/filesystem.js.map +1 -0
- package/dist/tools/terminal.d.ts +99 -0
- package/dist/tools/terminal.d.ts.map +1 -0
- package/dist/tools/terminal.js +363 -0
- package/dist/tools/terminal.js.map +1 -0
- package/dist/types/index.d.ts +306 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +54 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/logger.d.ts +22 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +189 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,460 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Manager
|
|
3
|
+
* Manages agent lifecycle, health checks, and task assignment
|
|
4
|
+
*/
|
|
5
|
+
import { v4 as uuidv4 } from "uuid";
|
|
6
|
+
import { database } from "./database.js";
|
|
7
|
+
import { taskScheduler } from "./task-scheduler.js";
|
|
8
|
+
import { configManager } from "../config/index.js";
|
|
9
|
+
import { logger, logAgentEvent, logTaskEvent } from "../utils/logger.js";
|
|
10
|
+
/**
|
|
11
|
+
* Agent Manager
|
|
12
|
+
* Handles agent lifecycle and operations
|
|
13
|
+
*/
|
|
14
|
+
export class AgentManager {
|
|
15
|
+
agents = new Map();
|
|
16
|
+
healthCheckTimer = null;
|
|
17
|
+
healthCheckLock = false;
|
|
18
|
+
constructor() {
|
|
19
|
+
this.startHealthChecks();
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Spawn a new agent
|
|
23
|
+
*/
|
|
24
|
+
async spawnAgent(config) {
|
|
25
|
+
// Check agent limit
|
|
26
|
+
const currentCount = this.agents.size;
|
|
27
|
+
const maxAgents = configManager.get("maxAgents");
|
|
28
|
+
if (currentCount >= maxAgents) {
|
|
29
|
+
throw new Error(`Maximum agent limit (${maxAgents}) reached`);
|
|
30
|
+
}
|
|
31
|
+
const agentId = uuidv4();
|
|
32
|
+
const now = new Date().toISOString();
|
|
33
|
+
const agent = {
|
|
34
|
+
id: agentId,
|
|
35
|
+
type: config.type,
|
|
36
|
+
name: config.name || `${config.type}_${Date.now()}`,
|
|
37
|
+
mode: config.mode || configManager.get("defaultAgentMode"),
|
|
38
|
+
status: "idle",
|
|
39
|
+
capabilities: config.capabilities || this.getDefaultCapabilities(config.type),
|
|
40
|
+
metadata: config.metadata || {},
|
|
41
|
+
createdAt: now,
|
|
42
|
+
lastActiveAt: now,
|
|
43
|
+
};
|
|
44
|
+
// Save to memory
|
|
45
|
+
this.agents.set(agentId, agent);
|
|
46
|
+
// Save to database
|
|
47
|
+
await database.saveAgent(agent);
|
|
48
|
+
logAgentEvent("spawned", agentId, {
|
|
49
|
+
type: agent.type,
|
|
50
|
+
name: agent.name,
|
|
51
|
+
mode: agent.mode,
|
|
52
|
+
});
|
|
53
|
+
return agent;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Spawn multiple agents (broadcast)
|
|
57
|
+
*/
|
|
58
|
+
async spawnMultiple(type, count, options = {}) {
|
|
59
|
+
if (count < 1 || count > 10) {
|
|
60
|
+
throw new Error("Count must be between 1 and 10");
|
|
61
|
+
}
|
|
62
|
+
const agents = [];
|
|
63
|
+
for (let i = 0; i < count; i++) {
|
|
64
|
+
const name = options.baseName
|
|
65
|
+
? `${options.baseName}_${i + 1}`
|
|
66
|
+
: `${type}_${Date.now()}_${i + 1}`;
|
|
67
|
+
const agent = await this.spawnAgent({
|
|
68
|
+
type,
|
|
69
|
+
name,
|
|
70
|
+
mode: options.mode,
|
|
71
|
+
capabilities: options.capabilities,
|
|
72
|
+
metadata: options.metadata,
|
|
73
|
+
});
|
|
74
|
+
agents.push(agent);
|
|
75
|
+
}
|
|
76
|
+
logger.info("Batch agent spawn completed", {
|
|
77
|
+
category: "agent",
|
|
78
|
+
type,
|
|
79
|
+
count: agents.length,
|
|
80
|
+
});
|
|
81
|
+
return agents;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Get agent by ID
|
|
85
|
+
*/
|
|
86
|
+
async getAgent(agentId) {
|
|
87
|
+
// Check memory first
|
|
88
|
+
const memoryAgent = this.agents.get(agentId);
|
|
89
|
+
if (memoryAgent)
|
|
90
|
+
return memoryAgent;
|
|
91
|
+
// Fallback to database
|
|
92
|
+
return database.getAgent(agentId);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Get all active agents
|
|
96
|
+
*/
|
|
97
|
+
async getAllAgents() {
|
|
98
|
+
// Merge memory and database agents
|
|
99
|
+
const dbAgents = await database.getAllAgents();
|
|
100
|
+
const memoryAgents = Array.from(this.agents.values());
|
|
101
|
+
// Create map to avoid duplicates
|
|
102
|
+
const agentMap = new Map();
|
|
103
|
+
for (const agent of dbAgents) {
|
|
104
|
+
agentMap.set(agent.id, agent);
|
|
105
|
+
}
|
|
106
|
+
for (const agent of memoryAgents) {
|
|
107
|
+
agentMap.set(agent.id, agent);
|
|
108
|
+
}
|
|
109
|
+
return Array.from(agentMap.values());
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Get agents by type
|
|
113
|
+
*/
|
|
114
|
+
async getAgentsByType(type) {
|
|
115
|
+
const allAgents = await this.getAllAgents();
|
|
116
|
+
return allAgents.filter((a) => a.type === type);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Get agents by status
|
|
120
|
+
*/
|
|
121
|
+
async getAgentsByStatus(status) {
|
|
122
|
+
const allAgents = await this.getAllAgents();
|
|
123
|
+
return allAgents.filter((a) => a.status === status);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Update agent status
|
|
127
|
+
*/
|
|
128
|
+
async updateAgentStatus(agentId, status, currentTask) {
|
|
129
|
+
const agent = await this.getAgent(agentId);
|
|
130
|
+
if (!agent)
|
|
131
|
+
return null;
|
|
132
|
+
agent.status = status;
|
|
133
|
+
agent.currentTask = currentTask;
|
|
134
|
+
agent.lastActiveAt = new Date().toISOString();
|
|
135
|
+
// Update memory
|
|
136
|
+
this.agents.set(agentId, agent);
|
|
137
|
+
// Update database
|
|
138
|
+
await database.saveAgent(agent);
|
|
139
|
+
logAgentEvent("status_updated", agentId, {
|
|
140
|
+
status,
|
|
141
|
+
currentTask,
|
|
142
|
+
});
|
|
143
|
+
return agent;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Update agent mode
|
|
147
|
+
*/
|
|
148
|
+
async updateAgentMode(agentId, mode) {
|
|
149
|
+
const agent = await this.getAgent(agentId);
|
|
150
|
+
if (!agent)
|
|
151
|
+
return null;
|
|
152
|
+
agent.mode = mode;
|
|
153
|
+
agent.lastActiveAt = new Date().toISOString();
|
|
154
|
+
await database.saveAgent(agent);
|
|
155
|
+
logAgentEvent("mode_updated", agentId, { mode });
|
|
156
|
+
return agent;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Terminate an agent and cleanup its tasks
|
|
160
|
+
*/
|
|
161
|
+
async terminateAgent(agentId) {
|
|
162
|
+
const agent = await this.getAgent(agentId);
|
|
163
|
+
if (!agent)
|
|
164
|
+
return false;
|
|
165
|
+
// Cancel any pending tasks for this agent
|
|
166
|
+
const pendingTasks = await this.getAgentTasks(agentId);
|
|
167
|
+
for (const task of pendingTasks) {
|
|
168
|
+
if (task.status === "pending" || task.status === "in_progress") {
|
|
169
|
+
try {
|
|
170
|
+
taskScheduler.cancelTask(task.id);
|
|
171
|
+
logTaskEvent("cancelled", task.id, agentId, {
|
|
172
|
+
reason: "agent_terminated",
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
logger.warn("Failed to cancel task during agent termination", {
|
|
177
|
+
taskId: task.id,
|
|
178
|
+
agentId,
|
|
179
|
+
error: error instanceof Error ? error.message : String(error),
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
// Update status
|
|
185
|
+
agent.status = "terminated";
|
|
186
|
+
agent.lastActiveAt = new Date().toISOString();
|
|
187
|
+
agent.currentTask = undefined;
|
|
188
|
+
// Remove from memory
|
|
189
|
+
this.agents.delete(agentId);
|
|
190
|
+
// Update database
|
|
191
|
+
await database.saveAgent(agent);
|
|
192
|
+
logAgentEvent("terminated", agentId, {
|
|
193
|
+
type: agent.type,
|
|
194
|
+
tasksCancelled: pendingTasks.filter(t => t.status === "pending" || t.status === "in_progress").length,
|
|
195
|
+
});
|
|
196
|
+
return true;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Assign task to agent
|
|
200
|
+
*/
|
|
201
|
+
async assignTask(agentId, taskConfig) {
|
|
202
|
+
const agent = await this.getAgent(agentId);
|
|
203
|
+
if (!agent)
|
|
204
|
+
return null;
|
|
205
|
+
if (agent.status === "busy") {
|
|
206
|
+
throw new Error(`Agent ${agentId} is already busy with task ${agent.currentTask}`);
|
|
207
|
+
}
|
|
208
|
+
const taskId = uuidv4();
|
|
209
|
+
const now = new Date().toISOString();
|
|
210
|
+
const task = {
|
|
211
|
+
id: taskId,
|
|
212
|
+
agentId,
|
|
213
|
+
type: taskConfig.type,
|
|
214
|
+
description: taskConfig.description,
|
|
215
|
+
context: taskConfig.context || {},
|
|
216
|
+
status: "pending",
|
|
217
|
+
priority: taskConfig.priority || 5,
|
|
218
|
+
timeout: taskConfig.timeout || 60,
|
|
219
|
+
createdAt: now,
|
|
220
|
+
};
|
|
221
|
+
// Update agent status
|
|
222
|
+
await this.updateAgentStatus(agentId, "busy", taskId);
|
|
223
|
+
// Save task
|
|
224
|
+
await database.saveTask(task);
|
|
225
|
+
logTaskEvent("assigned", taskId, agentId, {
|
|
226
|
+
type: task.type,
|
|
227
|
+
priority: task.priority,
|
|
228
|
+
});
|
|
229
|
+
return task;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Start task execution
|
|
233
|
+
*/
|
|
234
|
+
async startTask(taskId) {
|
|
235
|
+
const task = await database.getTask(taskId);
|
|
236
|
+
if (!task)
|
|
237
|
+
return null;
|
|
238
|
+
task.status = "in_progress";
|
|
239
|
+
task.startedAt = new Date().toISOString();
|
|
240
|
+
await database.saveTask(task);
|
|
241
|
+
logTaskEvent("started", taskId, task.agentId, { type: task.type });
|
|
242
|
+
return task;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Complete task
|
|
246
|
+
*/
|
|
247
|
+
async completeTask(taskId, result) {
|
|
248
|
+
const task = await database.getTask(taskId);
|
|
249
|
+
if (!task)
|
|
250
|
+
return null;
|
|
251
|
+
task.status = "completed";
|
|
252
|
+
task.result = result;
|
|
253
|
+
task.completedAt = new Date().toISOString();
|
|
254
|
+
await database.saveTask(task);
|
|
255
|
+
// Free up agent
|
|
256
|
+
await this.updateAgentStatus(task.agentId, "idle", undefined);
|
|
257
|
+
logTaskEvent("completed", taskId, task.agentId, {
|
|
258
|
+
type: task.type,
|
|
259
|
+
hasResult: !!result,
|
|
260
|
+
});
|
|
261
|
+
return task;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Fail task
|
|
265
|
+
*/
|
|
266
|
+
async failTask(taskId, error) {
|
|
267
|
+
const task = await database.getTask(taskId);
|
|
268
|
+
if (!task)
|
|
269
|
+
return null;
|
|
270
|
+
task.status = "failed";
|
|
271
|
+
task.error = error;
|
|
272
|
+
task.completedAt = new Date().toISOString();
|
|
273
|
+
await database.saveTask(task);
|
|
274
|
+
// Mark agent as error
|
|
275
|
+
await this.updateAgentStatus(task.agentId, "error", undefined);
|
|
276
|
+
logTaskEvent("failed", taskId, task.agentId, {
|
|
277
|
+
type: task.type,
|
|
278
|
+
error,
|
|
279
|
+
});
|
|
280
|
+
return task;
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Get agent tasks
|
|
284
|
+
*/
|
|
285
|
+
async getAgentTasks(agentId) {
|
|
286
|
+
return database.getTasksByAgent(agentId);
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Perform health check on all agents
|
|
290
|
+
*/
|
|
291
|
+
async performHealthCheck() {
|
|
292
|
+
// Prevent concurrent health check execution
|
|
293
|
+
if (this.healthCheckLock) {
|
|
294
|
+
return { checked: 0, healthy: 0, unhealthy: 0, terminated: 0 };
|
|
295
|
+
}
|
|
296
|
+
this.healthCheckLock = true;
|
|
297
|
+
try {
|
|
298
|
+
return await this.doPerformHealthCheck();
|
|
299
|
+
}
|
|
300
|
+
finally {
|
|
301
|
+
this.healthCheckLock = false;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Internal health check implementation
|
|
306
|
+
*/
|
|
307
|
+
async doPerformHealthCheck() {
|
|
308
|
+
const agents = Array.from(this.agents.values());
|
|
309
|
+
const now = Date.now();
|
|
310
|
+
const timeoutMs = configManager.get("agentTimeout") * 1000;
|
|
311
|
+
let healthy = 0;
|
|
312
|
+
let unhealthy = 0;
|
|
313
|
+
let terminated = 0;
|
|
314
|
+
for (const agent of agents) {
|
|
315
|
+
const lastActive = new Date(agent.lastActiveAt).getTime();
|
|
316
|
+
const isTimeout = now - lastActive > timeoutMs;
|
|
317
|
+
if (agent.status === "terminated") {
|
|
318
|
+
terminated++;
|
|
319
|
+
}
|
|
320
|
+
else if (isTimeout && agent.status !== "idle") {
|
|
321
|
+
// Agent timed out
|
|
322
|
+
agent.status = "error";
|
|
323
|
+
agent.healthCheckAt = new Date().toISOString();
|
|
324
|
+
await database.saveAgent(agent);
|
|
325
|
+
unhealthy++;
|
|
326
|
+
logAgentEvent("health_check_failed", agent.id, {
|
|
327
|
+
lastActive: agent.lastActiveAt,
|
|
328
|
+
timeout: configManager.get("agentTimeout"),
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
else {
|
|
332
|
+
agent.healthCheckAt = new Date().toISOString();
|
|
333
|
+
healthy++;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
return {
|
|
337
|
+
checked: agents.length,
|
|
338
|
+
healthy,
|
|
339
|
+
unhealthy,
|
|
340
|
+
terminated,
|
|
341
|
+
};
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Start periodic health checks
|
|
345
|
+
*/
|
|
346
|
+
startHealthChecks() {
|
|
347
|
+
const interval = configManager.get("healthCheckInterval") * 1000;
|
|
348
|
+
this.healthCheckTimer = setInterval(async () => {
|
|
349
|
+
try {
|
|
350
|
+
const result = await this.performHealthCheck();
|
|
351
|
+
logger.debug("Health check completed", {
|
|
352
|
+
category: "agent",
|
|
353
|
+
...result,
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
catch (error) {
|
|
357
|
+
logger.error("Health check failed", {
|
|
358
|
+
category: "agent",
|
|
359
|
+
error: error instanceof Error ? error.message : String(error),
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
}, interval);
|
|
363
|
+
logger.info("Health check timer started", {
|
|
364
|
+
category: "agent",
|
|
365
|
+
interval: `${interval}ms`,
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Stop health checks
|
|
370
|
+
*/
|
|
371
|
+
stopHealthChecks() {
|
|
372
|
+
if (this.healthCheckTimer) {
|
|
373
|
+
clearInterval(this.healthCheckTimer);
|
|
374
|
+
this.healthCheckTimer = null;
|
|
375
|
+
logger.info("Health check timer stopped");
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Get default capabilities for agent type
|
|
380
|
+
*/
|
|
381
|
+
getDefaultCapabilities(type) {
|
|
382
|
+
const capabilities = {
|
|
383
|
+
product_manager: [
|
|
384
|
+
"requirements",
|
|
385
|
+
"specification",
|
|
386
|
+
"user-stories",
|
|
387
|
+
"acceptance-criteria",
|
|
388
|
+
"roadmap",
|
|
389
|
+
],
|
|
390
|
+
architect: [
|
|
391
|
+
"system-design",
|
|
392
|
+
"tech-stack",
|
|
393
|
+
"database-design",
|
|
394
|
+
"api-design",
|
|
395
|
+
"patterns",
|
|
396
|
+
],
|
|
397
|
+
engineer: [
|
|
398
|
+
"implementation",
|
|
399
|
+
"coding",
|
|
400
|
+
"debugging",
|
|
401
|
+
"refactoring",
|
|
402
|
+
"testing",
|
|
403
|
+
],
|
|
404
|
+
qa: [
|
|
405
|
+
"testing",
|
|
406
|
+
"quality-assurance",
|
|
407
|
+
"bug-reporting",
|
|
408
|
+
"test-automation",
|
|
409
|
+
],
|
|
410
|
+
reviewer: [
|
|
411
|
+
"code-review",
|
|
412
|
+
"security-audit",
|
|
413
|
+
"performance-review",
|
|
414
|
+
"best-practices",
|
|
415
|
+
],
|
|
416
|
+
};
|
|
417
|
+
return capabilities[type] || [];
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Get agent statistics
|
|
421
|
+
*/
|
|
422
|
+
async getAgentStats() {
|
|
423
|
+
const agents = await this.getAllAgents();
|
|
424
|
+
const byType = {};
|
|
425
|
+
const byStatus = {};
|
|
426
|
+
const byMode = {};
|
|
427
|
+
for (const agent of agents) {
|
|
428
|
+
byType[agent.type] = (byType[agent.type] || 0) + 1;
|
|
429
|
+
byStatus[agent.status] = (byStatus[agent.status] || 0) + 1;
|
|
430
|
+
byMode[agent.mode] = (byMode[agent.mode] || 0) + 1;
|
|
431
|
+
}
|
|
432
|
+
return {
|
|
433
|
+
total: agents.length,
|
|
434
|
+
byType: byType,
|
|
435
|
+
byStatus: byStatus,
|
|
436
|
+
byMode: byMode,
|
|
437
|
+
};
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* Cleanup terminated agents
|
|
441
|
+
*/
|
|
442
|
+
async cleanup() {
|
|
443
|
+
const agents = Array.from(this.agents.values());
|
|
444
|
+
let cleaned = 0;
|
|
445
|
+
for (const agent of agents) {
|
|
446
|
+
if (agent.status === "terminated") {
|
|
447
|
+
this.agents.delete(agent.id);
|
|
448
|
+
cleaned++;
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
logger.info("Agent cleanup completed", {
|
|
452
|
+
category: "agent",
|
|
453
|
+
cleaned,
|
|
454
|
+
});
|
|
455
|
+
return cleaned;
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
// Export singleton
|
|
459
|
+
export const agentManager = new AgentManager();
|
|
460
|
+
//# sourceMappingURL=agent-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-manager.js","sourceRoot":"","sources":["../../src/core/agent-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Manager
|
|
3
|
+
* Manages context persistence, checkpoints, and handoffs
|
|
4
|
+
*/
|
|
5
|
+
import type { Context, ContextMessage, Artifact, Checkpoint, HandoffContext } from "../types/index.js";
|
|
6
|
+
/**
|
|
7
|
+
* Context Manager
|
|
8
|
+
* Handles context lifecycle and persistence
|
|
9
|
+
*/
|
|
10
|
+
export declare class ContextManager {
|
|
11
|
+
private contexts;
|
|
12
|
+
private checkpointTimers;
|
|
13
|
+
/**
|
|
14
|
+
* Create a new context for an agent
|
|
15
|
+
*/
|
|
16
|
+
createContext(agentId: string, options?: {
|
|
17
|
+
maxTokens?: number;
|
|
18
|
+
initialMessages?: ContextMessage[];
|
|
19
|
+
}): Promise<Context>;
|
|
20
|
+
/**
|
|
21
|
+
* Get context by ID
|
|
22
|
+
*/
|
|
23
|
+
getContext(contextId: string): Promise<Context | null>;
|
|
24
|
+
/**
|
|
25
|
+
* Get context by agent ID
|
|
26
|
+
*/
|
|
27
|
+
getContextByAgent(agentId: string): Promise<Context | null>;
|
|
28
|
+
/**
|
|
29
|
+
* Add message to context
|
|
30
|
+
*/
|
|
31
|
+
addMessage(contextId: string, message: Omit<ContextMessage, "id" | "timestamp">): Promise<Context | null>;
|
|
32
|
+
/**
|
|
33
|
+
* Add artifact to context
|
|
34
|
+
*/
|
|
35
|
+
addArtifact(contextId: string, artifact: Omit<Artifact, "id" | "createdAt">): Promise<Context | null>;
|
|
36
|
+
/**
|
|
37
|
+
* Create a checkpoint
|
|
38
|
+
*/
|
|
39
|
+
createCheckpoint(contextId: string, options?: {
|
|
40
|
+
thoughtChainId?: string;
|
|
41
|
+
}): Promise<Checkpoint | null>;
|
|
42
|
+
/**
|
|
43
|
+
* Restore to a checkpoint
|
|
44
|
+
*/
|
|
45
|
+
restoreCheckpoint(contextId: string, checkpointId: string): Promise<Context | null>;
|
|
46
|
+
/**
|
|
47
|
+
* Get checkpoints for a context
|
|
48
|
+
*/
|
|
49
|
+
getCheckpoints(contextId: string): Promise<Checkpoint[]>;
|
|
50
|
+
/**
|
|
51
|
+
* Perform handoff between agents
|
|
52
|
+
*/
|
|
53
|
+
handoff(fromAgentId: string, toAgentId: string, taskId: string, options?: {
|
|
54
|
+
notes?: string;
|
|
55
|
+
includeThoughtChain?: boolean;
|
|
56
|
+
thoughtChainId?: string;
|
|
57
|
+
}): Promise<HandoffContext | null>;
|
|
58
|
+
/**
|
|
59
|
+
* Get handoff history for an agent
|
|
60
|
+
*/
|
|
61
|
+
getHandoffHistory(agentId: string): Promise<HandoffContext[]>;
|
|
62
|
+
/**
|
|
63
|
+
* Auto-summarize context when it gets too large
|
|
64
|
+
* Uses extractive summarization based on message importance and recency
|
|
65
|
+
*/
|
|
66
|
+
private autoSummarize;
|
|
67
|
+
/**
|
|
68
|
+
* Summarize context manually
|
|
69
|
+
*/
|
|
70
|
+
summarize(contextId: string, summary: string): Promise<Context | null>;
|
|
71
|
+
/**
|
|
72
|
+
* Export context as JSON
|
|
73
|
+
*/
|
|
74
|
+
exportToJSON(contextId: string): Promise<string | null>;
|
|
75
|
+
/**
|
|
76
|
+
* Export context as Markdown
|
|
77
|
+
*/
|
|
78
|
+
exportToMarkdown(contextId: string): Promise<string | null>;
|
|
79
|
+
/**
|
|
80
|
+
* Start automatic checkpoint timer
|
|
81
|
+
*/
|
|
82
|
+
private startCheckpointTimer;
|
|
83
|
+
/**
|
|
84
|
+
* Stop checkpoint timer
|
|
85
|
+
*/
|
|
86
|
+
stopCheckpointTimer(contextId: string): void;
|
|
87
|
+
/**
|
|
88
|
+
* Delete context
|
|
89
|
+
*/
|
|
90
|
+
deleteContext(contextId: string): Promise<boolean>;
|
|
91
|
+
/**
|
|
92
|
+
* Cleanup old contexts
|
|
93
|
+
*/
|
|
94
|
+
cleanup(maxAgeHours?: number): Promise<number>;
|
|
95
|
+
/**
|
|
96
|
+
* Get context statistics
|
|
97
|
+
*/
|
|
98
|
+
getStats(): Promise<{
|
|
99
|
+
totalContexts: number;
|
|
100
|
+
totalMessages: number;
|
|
101
|
+
totalArtifacts: number;
|
|
102
|
+
totalCheckpoints: number;
|
|
103
|
+
averageMessagesPerContext: number;
|
|
104
|
+
}>;
|
|
105
|
+
}
|
|
106
|
+
export declare const contextManager: ContextManager;
|
|
107
|
+
//# sourceMappingURL=context-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-manager.d.ts","sourceRoot":"","sources":["../../src/core/context-manager.ts"],"names":[],"mappings":"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"}
|