@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,467 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Manager
|
|
3
|
+
* Manages context persistence, checkpoints, and handoffs
|
|
4
|
+
*/
|
|
5
|
+
import { v4 as uuidv4 } from "uuid";
|
|
6
|
+
import { database } from "./database.js";
|
|
7
|
+
import { configManager } from "../config/index.js";
|
|
8
|
+
import { logger } from "../utils/logger.js";
|
|
9
|
+
/**
|
|
10
|
+
* Context Manager
|
|
11
|
+
* Handles context lifecycle and persistence
|
|
12
|
+
*/
|
|
13
|
+
export class ContextManager {
|
|
14
|
+
contexts = new Map();
|
|
15
|
+
checkpointTimers = new Map();
|
|
16
|
+
/**
|
|
17
|
+
* Create a new context for an agent
|
|
18
|
+
*/
|
|
19
|
+
async createContext(agentId, options = {}) {
|
|
20
|
+
const contextId = uuidv4();
|
|
21
|
+
const now = new Date().toISOString();
|
|
22
|
+
const context = {
|
|
23
|
+
id: contextId,
|
|
24
|
+
agentId,
|
|
25
|
+
messages: options.initialMessages || [],
|
|
26
|
+
artifacts: [],
|
|
27
|
+
checkpoints: [],
|
|
28
|
+
tokenCount: 0,
|
|
29
|
+
maxTokens: options.maxTokens || configManager.get("contextMaxTokens"),
|
|
30
|
+
createdAt: now,
|
|
31
|
+
updatedAt: now,
|
|
32
|
+
};
|
|
33
|
+
// Save to memory
|
|
34
|
+
this.contexts.set(contextId, context);
|
|
35
|
+
// Save to database
|
|
36
|
+
await database.saveContext(context);
|
|
37
|
+
// Start checkpoint timer
|
|
38
|
+
this.startCheckpointTimer(contextId);
|
|
39
|
+
logger.info("Context created", {
|
|
40
|
+
category: "context",
|
|
41
|
+
contextId,
|
|
42
|
+
agentId,
|
|
43
|
+
});
|
|
44
|
+
return context;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get context by ID
|
|
48
|
+
*/
|
|
49
|
+
async getContext(contextId) {
|
|
50
|
+
// Check memory first
|
|
51
|
+
const memoryContext = this.contexts.get(contextId);
|
|
52
|
+
if (memoryContext)
|
|
53
|
+
return memoryContext;
|
|
54
|
+
// Fallback to database
|
|
55
|
+
return database.getContext(contextId);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get context by agent ID
|
|
59
|
+
*/
|
|
60
|
+
async getContextByAgent(agentId) {
|
|
61
|
+
// Check memory
|
|
62
|
+
for (const context of this.contexts.values()) {
|
|
63
|
+
if (context.agentId === agentId)
|
|
64
|
+
return context;
|
|
65
|
+
}
|
|
66
|
+
// Fallback to database
|
|
67
|
+
return database.getContextByAgent(agentId);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Add message to context
|
|
71
|
+
*/
|
|
72
|
+
async addMessage(contextId, message) {
|
|
73
|
+
const context = await this.getContext(contextId);
|
|
74
|
+
if (!context)
|
|
75
|
+
return null;
|
|
76
|
+
const newMessage = {
|
|
77
|
+
id: uuidv4(),
|
|
78
|
+
...message,
|
|
79
|
+
timestamp: new Date().toISOString(),
|
|
80
|
+
};
|
|
81
|
+
context.messages.push(newMessage);
|
|
82
|
+
context.updatedAt = new Date().toISOString();
|
|
83
|
+
// Update token count (rough estimate)
|
|
84
|
+
context.tokenCount += Math.ceil(message.content.length / 4);
|
|
85
|
+
// Check if auto-summarize needed
|
|
86
|
+
if (context.messages.length >= configManager.get("contextAutoSummarizeThreshold")) {
|
|
87
|
+
await this.autoSummarize(contextId);
|
|
88
|
+
}
|
|
89
|
+
// Save to database
|
|
90
|
+
await database.saveContext(context);
|
|
91
|
+
return context;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Add artifact to context
|
|
95
|
+
*/
|
|
96
|
+
async addArtifact(contextId, artifact) {
|
|
97
|
+
const context = await this.getContext(contextId);
|
|
98
|
+
if (!context)
|
|
99
|
+
return null;
|
|
100
|
+
const newArtifact = {
|
|
101
|
+
id: uuidv4(),
|
|
102
|
+
...artifact,
|
|
103
|
+
createdAt: new Date().toISOString(),
|
|
104
|
+
};
|
|
105
|
+
context.artifacts.push(newArtifact);
|
|
106
|
+
context.updatedAt = new Date().toISOString();
|
|
107
|
+
await database.saveContext(context);
|
|
108
|
+
logger.info("Artifact added to context", {
|
|
109
|
+
category: "context",
|
|
110
|
+
contextId,
|
|
111
|
+
artifactId: newArtifact.id,
|
|
112
|
+
artifactType: newArtifact.type,
|
|
113
|
+
});
|
|
114
|
+
return context;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Create a checkpoint
|
|
118
|
+
*/
|
|
119
|
+
async createCheckpoint(contextId, options = {}) {
|
|
120
|
+
const context = await this.getContext(contextId);
|
|
121
|
+
if (!context)
|
|
122
|
+
return null;
|
|
123
|
+
const checkpointId = uuidv4();
|
|
124
|
+
const sequence = context.checkpoints.length + 1;
|
|
125
|
+
const checkpoint = {
|
|
126
|
+
id: checkpointId,
|
|
127
|
+
contextId,
|
|
128
|
+
sequence,
|
|
129
|
+
messages: [...context.messages],
|
|
130
|
+
artifacts: [...context.artifacts],
|
|
131
|
+
thoughtChainId: options.thoughtChainId,
|
|
132
|
+
createdAt: new Date().toISOString(),
|
|
133
|
+
};
|
|
134
|
+
context.checkpoints.push(checkpoint);
|
|
135
|
+
context.updatedAt = new Date().toISOString();
|
|
136
|
+
// Save to database
|
|
137
|
+
await database.saveCheckpoint(checkpoint);
|
|
138
|
+
await database.saveContext(context);
|
|
139
|
+
logger.info("Checkpoint created", {
|
|
140
|
+
category: "context",
|
|
141
|
+
contextId,
|
|
142
|
+
checkpointId,
|
|
143
|
+
sequence,
|
|
144
|
+
});
|
|
145
|
+
return checkpoint;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Restore to a checkpoint
|
|
149
|
+
*/
|
|
150
|
+
async restoreCheckpoint(contextId, checkpointId) {
|
|
151
|
+
const context = await this.getContext(contextId);
|
|
152
|
+
if (!context)
|
|
153
|
+
return null;
|
|
154
|
+
const checkpoint = context.checkpoints.find((c) => c.id === checkpointId);
|
|
155
|
+
if (!checkpoint)
|
|
156
|
+
return null;
|
|
157
|
+
// Restore state
|
|
158
|
+
context.messages = [...checkpoint.messages];
|
|
159
|
+
context.artifacts = [...checkpoint.artifacts];
|
|
160
|
+
context.updatedAt = new Date().toISOString();
|
|
161
|
+
// Recalculate token count
|
|
162
|
+
context.tokenCount = context.messages.reduce((sum, m) => sum + Math.ceil(m.content.length / 4), 0);
|
|
163
|
+
await database.saveContext(context);
|
|
164
|
+
logger.info("Context restored to checkpoint", {
|
|
165
|
+
category: "context",
|
|
166
|
+
contextId,
|
|
167
|
+
checkpointId,
|
|
168
|
+
sequence: checkpoint.sequence,
|
|
169
|
+
});
|
|
170
|
+
return context;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Get checkpoints for a context
|
|
174
|
+
*/
|
|
175
|
+
async getCheckpoints(contextId) {
|
|
176
|
+
const context = await this.getContext(contextId);
|
|
177
|
+
if (!context)
|
|
178
|
+
return [];
|
|
179
|
+
return context.checkpoints;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Perform handoff between agents
|
|
183
|
+
*/
|
|
184
|
+
async handoff(fromAgentId, toAgentId, taskId, options = {}) {
|
|
185
|
+
// Get source context
|
|
186
|
+
const fromContext = await this.getContextByAgent(fromAgentId);
|
|
187
|
+
if (!fromContext)
|
|
188
|
+
return null;
|
|
189
|
+
// Create or get target context
|
|
190
|
+
let toContext = await this.getContextByAgent(toAgentId);
|
|
191
|
+
if (!toContext) {
|
|
192
|
+
toContext = await this.createContext(toAgentId);
|
|
193
|
+
}
|
|
194
|
+
// Prepare context snapshot
|
|
195
|
+
const contextSnapshot = {
|
|
196
|
+
messages: fromContext.messages.slice(-20), // Last 20 messages
|
|
197
|
+
artifacts: fromContext.artifacts,
|
|
198
|
+
};
|
|
199
|
+
// Create handoff record
|
|
200
|
+
const handoffId = uuidv4();
|
|
201
|
+
const handoff = {
|
|
202
|
+
id: handoffId,
|
|
203
|
+
fromAgentId,
|
|
204
|
+
toAgentId,
|
|
205
|
+
taskId,
|
|
206
|
+
contextSnapshot,
|
|
207
|
+
notes: options.notes,
|
|
208
|
+
timestamp: new Date().toISOString(),
|
|
209
|
+
};
|
|
210
|
+
// Add handoff message to target context
|
|
211
|
+
await this.addMessage(toContext.id, {
|
|
212
|
+
role: "system",
|
|
213
|
+
content: `Handoff from ${fromAgentId}: ${options.notes || "Task transferred"}`,
|
|
214
|
+
metadata: {
|
|
215
|
+
handoffId,
|
|
216
|
+
fromAgentId,
|
|
217
|
+
taskId,
|
|
218
|
+
},
|
|
219
|
+
});
|
|
220
|
+
// Transfer artifacts
|
|
221
|
+
for (const artifact of fromContext.artifacts) {
|
|
222
|
+
await this.addArtifact(toContext.id, {
|
|
223
|
+
type: artifact.type,
|
|
224
|
+
name: artifact.name,
|
|
225
|
+
content: artifact.content,
|
|
226
|
+
metadata: {
|
|
227
|
+
...artifact.metadata,
|
|
228
|
+
transferredFrom: fromAgentId,
|
|
229
|
+
handoffId,
|
|
230
|
+
},
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
// Save handoff to database
|
|
234
|
+
await database.saveHandoff(handoff);
|
|
235
|
+
logger.info("Handoff completed", {
|
|
236
|
+
category: "context",
|
|
237
|
+
handoffId,
|
|
238
|
+
fromAgentId,
|
|
239
|
+
toAgentId,
|
|
240
|
+
taskId,
|
|
241
|
+
});
|
|
242
|
+
return handoff;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Get handoff history for an agent
|
|
246
|
+
*/
|
|
247
|
+
async getHandoffHistory(agentId) {
|
|
248
|
+
return database.getHandoffsByAgent(agentId);
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Auto-summarize context when it gets too large
|
|
252
|
+
* Uses extractive summarization based on message importance and recency
|
|
253
|
+
*/
|
|
254
|
+
async autoSummarize(contextId) {
|
|
255
|
+
const context = await this.getContext(contextId);
|
|
256
|
+
if (!context)
|
|
257
|
+
return null;
|
|
258
|
+
// Create checkpoint before summarizing
|
|
259
|
+
await this.createCheckpoint(contextId);
|
|
260
|
+
const messageCount = context.messages.length;
|
|
261
|
+
const scoredMessages = context.messages.map((msg, index) => {
|
|
262
|
+
let score = 0;
|
|
263
|
+
// Length score (longer messages often have more content)
|
|
264
|
+
score += Math.min(msg.content.length / 100, 5);
|
|
265
|
+
// Role importance score
|
|
266
|
+
switch (msg.role) {
|
|
267
|
+
case "tool":
|
|
268
|
+
score += 5; // Tool results are important
|
|
269
|
+
break;
|
|
270
|
+
case "assistant":
|
|
271
|
+
score += 3; // Assistant responses are important
|
|
272
|
+
break;
|
|
273
|
+
case "user":
|
|
274
|
+
score += 2; // User messages have moderate importance
|
|
275
|
+
break;
|
|
276
|
+
case "system":
|
|
277
|
+
score += 4; // System messages are important
|
|
278
|
+
break;
|
|
279
|
+
}
|
|
280
|
+
// Recency score (newer messages are more relevant)
|
|
281
|
+
const recencyWeight = index / messageCount;
|
|
282
|
+
score += recencyWeight * 3;
|
|
283
|
+
return { message: msg, score, index };
|
|
284
|
+
});
|
|
285
|
+
// Sort by score descending and take top messages
|
|
286
|
+
const topMessages = scoredMessages
|
|
287
|
+
.sort((a, b) => b.score - a.score)
|
|
288
|
+
.slice(0, 10);
|
|
289
|
+
// Build summary from top-scoring message excerpts
|
|
290
|
+
const excerpts = topMessages.map(({ message }) => {
|
|
291
|
+
const content = message.content.substring(0, 150);
|
|
292
|
+
return `[${message.role}]: ${content}${message.content.length > 150 ? "..." : ""}`;
|
|
293
|
+
});
|
|
294
|
+
const summary = `Context Summary (${messageCount} messages):\n${excerpts.join("\n")}`;
|
|
295
|
+
context.summary = summary;
|
|
296
|
+
// Keep system messages and recent messages (existing behavior)
|
|
297
|
+
const systemMessages = context.messages.filter((m) => m.role === "system");
|
|
298
|
+
const recentMessages = context.messages.slice(-20);
|
|
299
|
+
// Merge without duplicates
|
|
300
|
+
const seenIds = new Set();
|
|
301
|
+
context.messages = [...systemMessages, ...recentMessages].filter((m) => {
|
|
302
|
+
if (seenIds.has(m.id))
|
|
303
|
+
return false;
|
|
304
|
+
seenIds.add(m.id);
|
|
305
|
+
return true;
|
|
306
|
+
});
|
|
307
|
+
context.tokenCount = context.messages.reduce((sum, m) => sum + Math.ceil(m.content.length / 4), 0);
|
|
308
|
+
await database.saveContext(context);
|
|
309
|
+
logger.info("Context auto-summarized", {
|
|
310
|
+
category: "context",
|
|
311
|
+
contextId,
|
|
312
|
+
originalMessageCount: messageCount,
|
|
313
|
+
newMessageCount: context.messages.length,
|
|
314
|
+
topScoredMessages: topMessages.length,
|
|
315
|
+
});
|
|
316
|
+
return context;
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Summarize context manually
|
|
320
|
+
*/
|
|
321
|
+
async summarize(contextId, summary) {
|
|
322
|
+
const context = await this.getContext(contextId);
|
|
323
|
+
if (!context)
|
|
324
|
+
return null;
|
|
325
|
+
context.summary = summary;
|
|
326
|
+
context.updatedAt = new Date().toISOString();
|
|
327
|
+
await database.saveContext(context);
|
|
328
|
+
return context;
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Export context as JSON
|
|
332
|
+
*/
|
|
333
|
+
async exportToJSON(contextId) {
|
|
334
|
+
const context = await this.getContext(contextId);
|
|
335
|
+
if (!context)
|
|
336
|
+
return null;
|
|
337
|
+
return JSON.stringify(context, null, 2);
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Export context as Markdown
|
|
341
|
+
*/
|
|
342
|
+
async exportToMarkdown(contextId) {
|
|
343
|
+
const context = await this.getContext(contextId);
|
|
344
|
+
if (!context)
|
|
345
|
+
return null;
|
|
346
|
+
let markdown = `# Context Export\n\n`;
|
|
347
|
+
markdown += `- **Context ID:** ${context.id}\n`;
|
|
348
|
+
markdown += `- **Agent ID:** ${context.agentId}\n`;
|
|
349
|
+
markdown += `- **Created:** ${context.createdAt}\n`;
|
|
350
|
+
markdown += `- **Updated:** ${context.updatedAt}\n`;
|
|
351
|
+
markdown += `- **Token Count:** ${context.tokenCount}/${context.maxTokens}\n\n`;
|
|
352
|
+
if (context.summary) {
|
|
353
|
+
markdown += `## Summary\n\n${context.summary}\n\n`;
|
|
354
|
+
}
|
|
355
|
+
markdown += `## Messages (${context.messages.length})\n\n`;
|
|
356
|
+
for (const message of context.messages) {
|
|
357
|
+
markdown += `### ${message.role} (${message.timestamp})\n\n`;
|
|
358
|
+
markdown += `${message.content}\n\n`;
|
|
359
|
+
}
|
|
360
|
+
markdown += `## Artifacts (${context.artifacts.length})\n\n`;
|
|
361
|
+
for (const artifact of context.artifacts) {
|
|
362
|
+
markdown += `### ${artifact.name} (${artifact.type})\n\n`;
|
|
363
|
+
markdown += "```\n";
|
|
364
|
+
markdown += artifact.content.substring(0, 500);
|
|
365
|
+
if (artifact.content.length > 500) {
|
|
366
|
+
markdown += "\n... (truncated)";
|
|
367
|
+
}
|
|
368
|
+
markdown += "\n```\n\n";
|
|
369
|
+
}
|
|
370
|
+
markdown += `## Checkpoints (${context.checkpoints.length})\n\n`;
|
|
371
|
+
for (const checkpoint of context.checkpoints) {
|
|
372
|
+
markdown += `- **Checkpoint ${checkpoint.sequence}** (${checkpoint.createdAt})\n`;
|
|
373
|
+
}
|
|
374
|
+
return markdown;
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* Start automatic checkpoint timer
|
|
378
|
+
*/
|
|
379
|
+
startCheckpointTimer(contextId) {
|
|
380
|
+
const timer = setInterval(async () => {
|
|
381
|
+
try {
|
|
382
|
+
await this.createCheckpoint(contextId);
|
|
383
|
+
}
|
|
384
|
+
catch (error) {
|
|
385
|
+
logger.error("Auto-checkpoint failed", {
|
|
386
|
+
category: "context",
|
|
387
|
+
contextId,
|
|
388
|
+
error: error instanceof Error ? error.message : String(error),
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
}, configManager.get("checkpointInterval") * 60 * 1000);
|
|
392
|
+
this.checkpointTimers.set(contextId, timer);
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* Stop checkpoint timer
|
|
396
|
+
*/
|
|
397
|
+
stopCheckpointTimer(contextId) {
|
|
398
|
+
const timer = this.checkpointTimers.get(contextId);
|
|
399
|
+
if (timer) {
|
|
400
|
+
clearInterval(timer);
|
|
401
|
+
this.checkpointTimers.delete(contextId);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Delete context
|
|
406
|
+
*/
|
|
407
|
+
async deleteContext(contextId) {
|
|
408
|
+
const context = this.contexts.get(contextId);
|
|
409
|
+
if (!context)
|
|
410
|
+
return false;
|
|
411
|
+
// Stop checkpoint timer
|
|
412
|
+
this.stopCheckpointTimer(contextId);
|
|
413
|
+
// Remove from memory
|
|
414
|
+
this.contexts.delete(contextId);
|
|
415
|
+
logger.info("Context deleted", {
|
|
416
|
+
category: "context",
|
|
417
|
+
contextId,
|
|
418
|
+
agentId: context.agentId,
|
|
419
|
+
});
|
|
420
|
+
return true;
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Cleanup old contexts
|
|
424
|
+
*/
|
|
425
|
+
async cleanup(maxAgeHours = 24) {
|
|
426
|
+
const now = Date.now();
|
|
427
|
+
const maxAgeMs = maxAgeHours * 60 * 60 * 1000;
|
|
428
|
+
let cleaned = 0;
|
|
429
|
+
for (const [contextId, context] of this.contexts.entries()) {
|
|
430
|
+
const age = now - new Date(context.updatedAt).getTime();
|
|
431
|
+
if (age > maxAgeMs) {
|
|
432
|
+
await this.deleteContext(contextId);
|
|
433
|
+
cleaned++;
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
logger.info("Context cleanup completed", {
|
|
437
|
+
category: "context",
|
|
438
|
+
cleaned,
|
|
439
|
+
maxAgeHours,
|
|
440
|
+
});
|
|
441
|
+
return cleaned;
|
|
442
|
+
}
|
|
443
|
+
/**
|
|
444
|
+
* Get context statistics
|
|
445
|
+
*/
|
|
446
|
+
async getStats() {
|
|
447
|
+
let totalMessages = 0;
|
|
448
|
+
let totalArtifacts = 0;
|
|
449
|
+
let totalCheckpoints = 0;
|
|
450
|
+
for (const context of this.contexts.values()) {
|
|
451
|
+
totalMessages += context.messages.length;
|
|
452
|
+
totalArtifacts += context.artifacts.length;
|
|
453
|
+
totalCheckpoints += context.checkpoints.length;
|
|
454
|
+
}
|
|
455
|
+
const totalContexts = this.contexts.size;
|
|
456
|
+
return {
|
|
457
|
+
totalContexts,
|
|
458
|
+
totalMessages,
|
|
459
|
+
totalArtifacts,
|
|
460
|
+
totalCheckpoints,
|
|
461
|
+
averageMessagesPerContext: totalContexts > 0 ? Math.round(totalMessages / totalContexts) : 0,
|
|
462
|
+
};
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
// Export singleton
|
|
466
|
+
export const contextManager = new ContextManager();
|
|
467
|
+
//# sourceMappingURL=context-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-manager.js","sourceRoot":"","sources":["../../src/core/context-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database Manager
|
|
3
|
+
* SQLite/libSQL database operations for context persistence
|
|
4
|
+
*/
|
|
5
|
+
import type { Agent, Task, ThoughtChain, Context, HandoffContext, Checkpoint, ParallelExecution } from "../types/index.js";
|
|
6
|
+
/**
|
|
7
|
+
* Database Manager
|
|
8
|
+
* Handles all database operations
|
|
9
|
+
*/
|
|
10
|
+
export declare class DatabaseManager {
|
|
11
|
+
private client;
|
|
12
|
+
private initialized;
|
|
13
|
+
/**
|
|
14
|
+
* Initialize database connection and schema
|
|
15
|
+
*/
|
|
16
|
+
initialize(): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Create database schema
|
|
19
|
+
*/
|
|
20
|
+
private createSchema;
|
|
21
|
+
saveAgent(agent: Agent): Promise<void>;
|
|
22
|
+
getAgent(agentId: string): Promise<Agent | null>;
|
|
23
|
+
getAllAgents(): Promise<Agent[]>;
|
|
24
|
+
getAgentsByType(type: string): Promise<Agent[]>;
|
|
25
|
+
getAgentsByStatus(status: string): Promise<Agent[]>;
|
|
26
|
+
deleteAgent(agentId: string): Promise<boolean>;
|
|
27
|
+
saveTask(task: Task): Promise<void>;
|
|
28
|
+
getTask(taskId: string): Promise<Task | null>;
|
|
29
|
+
getTasksByAgent(agentId: string): Promise<Task[]>;
|
|
30
|
+
getTasksByStatus(status: string): Promise<Task[]>;
|
|
31
|
+
saveContext(context: Context): Promise<void>;
|
|
32
|
+
getContext(contextId: string): Promise<Context | null>;
|
|
33
|
+
getContextByAgent(agentId: string): Promise<Context | null>;
|
|
34
|
+
saveCheckpoint(checkpoint: Checkpoint): Promise<void>;
|
|
35
|
+
getCheckpointsByContext(contextId: string): Promise<Checkpoint[]>;
|
|
36
|
+
saveHandoff(handoff: HandoffContext): Promise<void>;
|
|
37
|
+
getHandoffsByAgent(agentId: string): Promise<HandoffContext[]>;
|
|
38
|
+
saveAuditLog(log: {
|
|
39
|
+
level: string;
|
|
40
|
+
category: string;
|
|
41
|
+
agentId?: string;
|
|
42
|
+
taskId?: string;
|
|
43
|
+
action: string;
|
|
44
|
+
details?: Record<string, unknown>;
|
|
45
|
+
}): Promise<void>;
|
|
46
|
+
getAuditLogs(options?: {
|
|
47
|
+
level?: string;
|
|
48
|
+
category?: string;
|
|
49
|
+
agentId?: string;
|
|
50
|
+
limit?: number;
|
|
51
|
+
since?: Date;
|
|
52
|
+
}): Promise<Array<Record<string, unknown>>>;
|
|
53
|
+
saveThoughtChain(chain: ThoughtChain): Promise<void>;
|
|
54
|
+
getThoughtChain(chainId: string): Promise<ThoughtChain | null>;
|
|
55
|
+
getThoughtChainsByAgent(agentId: string): Promise<ThoughtChain[]>;
|
|
56
|
+
saveParallelExecution(execution: ParallelExecution): Promise<void>;
|
|
57
|
+
getParallelExecution(executionId: string): Promise<ParallelExecution | null>;
|
|
58
|
+
getSystemStats(): Promise<{
|
|
59
|
+
totalAgents: number;
|
|
60
|
+
agentsByStatus: Record<string, number>;
|
|
61
|
+
agentsByType: Record<string, number>;
|
|
62
|
+
totalTasks: number;
|
|
63
|
+
tasksByStatus: Record<string, number>;
|
|
64
|
+
totalContexts: number;
|
|
65
|
+
totalCheckpoints: number;
|
|
66
|
+
totalHandoffs: number;
|
|
67
|
+
}>;
|
|
68
|
+
private safeJsonParse;
|
|
69
|
+
private rowToAgent;
|
|
70
|
+
private rowToTask;
|
|
71
|
+
private rowToContext;
|
|
72
|
+
private rowToCheckpoint;
|
|
73
|
+
private rowToHandoff;
|
|
74
|
+
private rowToThoughtChain;
|
|
75
|
+
private rowToParallelExecution;
|
|
76
|
+
/**
|
|
77
|
+
* Close database connection
|
|
78
|
+
*/
|
|
79
|
+
close(): Promise<void>;
|
|
80
|
+
}
|
|
81
|
+
export declare const database: DatabaseManager;
|
|
82
|
+
//# sourceMappingURL=database.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/core/database.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,KAAK,EACV,KAAK,EACL,IAAI,EAEJ,YAAY,EACZ,OAAO,EACP,cAAc,EACd,UAAU,EACV,iBAAiB,EAElB,MAAM,mBAAmB,CAAC;AAU3B;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,WAAW,CAAS;IAE5B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBjC;;OAEG;YACW,YAAY;IAuJpB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBtC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAchD,YAAY,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAOhC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAW/C,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAWnD,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAe9C,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BnC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAa7C,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAWjD,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAejD,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB5C,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAatD,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAiB3D,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBrD,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAejE,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBnD,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAmB9D,YAAY,CAAC,GAAG,EAAE;QACtB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBX,YAAY,CAChB,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,IAAI,CAAC;KACT,GACL,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAyCpC,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BpD,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAa9D,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAejE,qBAAqB,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BlE,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAiB5E,cAAc,IAAI,OAAO,CAAC;QAC9B,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACvC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtC,aAAa,EAAE,MAAM,CAAC;QACtB,gBAAgB,EAAE,MAAM,CAAC;QACzB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IAsDF,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,SAAS;IAkBjB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,iBAAiB;IAqBzB,OAAO,CAAC,sBAAsB;IAoB9B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAgB7B;AAGD,eAAO,MAAM,QAAQ,iBAAwB,CAAC"}
|