@lleverage-ai/agent-sdk 0.0.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/LICENSE +21 -0
- package/README.md +2321 -0
- package/dist/agent.d.ts +52 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +2122 -0
- package/dist/agent.js.map +1 -0
- package/dist/backend.d.ts +378 -0
- package/dist/backend.d.ts.map +1 -0
- package/dist/backend.js +71 -0
- package/dist/backend.js.map +1 -0
- package/dist/backends/composite.d.ts +258 -0
- package/dist/backends/composite.d.ts.map +1 -0
- package/dist/backends/composite.js +437 -0
- package/dist/backends/composite.js.map +1 -0
- package/dist/backends/filesystem.d.ts +268 -0
- package/dist/backends/filesystem.d.ts.map +1 -0
- package/dist/backends/filesystem.js +623 -0
- package/dist/backends/filesystem.js.map +1 -0
- package/dist/backends/index.d.ts +14 -0
- package/dist/backends/index.d.ts.map +1 -0
- package/dist/backends/index.js +14 -0
- package/dist/backends/index.js.map +1 -0
- package/dist/backends/persistent.d.ts +312 -0
- package/dist/backends/persistent.d.ts.map +1 -0
- package/dist/backends/persistent.js +519 -0
- package/dist/backends/persistent.js.map +1 -0
- package/dist/backends/sandbox.d.ts +315 -0
- package/dist/backends/sandbox.d.ts.map +1 -0
- package/dist/backends/sandbox.js +490 -0
- package/dist/backends/sandbox.js.map +1 -0
- package/dist/backends/state.d.ts +225 -0
- package/dist/backends/state.d.ts.map +1 -0
- package/dist/backends/state.js +396 -0
- package/dist/backends/state.js.map +1 -0
- package/dist/checkpointer/file-saver.d.ts +182 -0
- package/dist/checkpointer/file-saver.d.ts.map +1 -0
- package/dist/checkpointer/file-saver.js +298 -0
- package/dist/checkpointer/file-saver.js.map +1 -0
- package/dist/checkpointer/index.d.ts +40 -0
- package/dist/checkpointer/index.d.ts.map +1 -0
- package/dist/checkpointer/index.js +40 -0
- package/dist/checkpointer/index.js.map +1 -0
- package/dist/checkpointer/kv-saver.d.ts +142 -0
- package/dist/checkpointer/kv-saver.d.ts.map +1 -0
- package/dist/checkpointer/kv-saver.js +176 -0
- package/dist/checkpointer/kv-saver.js.map +1 -0
- package/dist/checkpointer/memory-saver.d.ts +158 -0
- package/dist/checkpointer/memory-saver.d.ts.map +1 -0
- package/dist/checkpointer/memory-saver.js +222 -0
- package/dist/checkpointer/memory-saver.js.map +1 -0
- package/dist/checkpointer/types.d.ts +353 -0
- package/dist/checkpointer/types.d.ts.map +1 -0
- package/dist/checkpointer/types.js +159 -0
- package/dist/checkpointer/types.js.map +1 -0
- package/dist/context-manager.d.ts +627 -0
- package/dist/context-manager.d.ts.map +1 -0
- package/dist/context-manager.js +1039 -0
- package/dist/context-manager.js.map +1 -0
- package/dist/context.d.ts +57 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +76 -0
- package/dist/context.js.map +1 -0
- package/dist/errors/index.d.ts +611 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +1023 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/generation-helpers.d.ts +126 -0
- package/dist/generation-helpers.d.ts.map +1 -0
- package/dist/generation-helpers.js +181 -0
- package/dist/generation-helpers.js.map +1 -0
- package/dist/hooks/audit.d.ts +210 -0
- package/dist/hooks/audit.d.ts.map +1 -0
- package/dist/hooks/audit.js +305 -0
- package/dist/hooks/audit.js.map +1 -0
- package/dist/hooks/cache.d.ts +180 -0
- package/dist/hooks/cache.d.ts.map +1 -0
- package/dist/hooks/cache.js +273 -0
- package/dist/hooks/cache.js.map +1 -0
- package/dist/hooks/guardrails.d.ts +145 -0
- package/dist/hooks/guardrails.d.ts.map +1 -0
- package/dist/hooks/guardrails.js +326 -0
- package/dist/hooks/guardrails.js.map +1 -0
- package/dist/hooks/index.d.ts +18 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +32 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/logging.d.ts +193 -0
- package/dist/hooks/logging.d.ts.map +1 -0
- package/dist/hooks/logging.js +345 -0
- package/dist/hooks/logging.js.map +1 -0
- package/dist/hooks/parallel-guardrails.d.ts +268 -0
- package/dist/hooks/parallel-guardrails.d.ts.map +1 -0
- package/dist/hooks/parallel-guardrails.js +416 -0
- package/dist/hooks/parallel-guardrails.js.map +1 -0
- package/dist/hooks/rate-limit.d.ts +305 -0
- package/dist/hooks/rate-limit.d.ts.map +1 -0
- package/dist/hooks/rate-limit.js +372 -0
- package/dist/hooks/rate-limit.js.map +1 -0
- package/dist/hooks/retry.d.ts +144 -0
- package/dist/hooks/retry.d.ts.map +1 -0
- package/dist/hooks/retry.js +210 -0
- package/dist/hooks/retry.js.map +1 -0
- package/dist/hooks/secrets.d.ts +174 -0
- package/dist/hooks/secrets.d.ts.map +1 -0
- package/dist/hooks/secrets.js +306 -0
- package/dist/hooks/secrets.js.map +1 -0
- package/dist/hooks.d.ts +229 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +352 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.d.ts +97 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +182 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/env.d.ts +25 -0
- package/dist/mcp/env.d.ts.map +1 -0
- package/dist/mcp/env.js +18 -0
- package/dist/mcp/env.js.map +1 -0
- package/dist/mcp/index.d.ts +16 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +17 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/manager.d.ts +184 -0
- package/dist/mcp/manager.d.ts.map +1 -0
- package/dist/mcp/manager.js +446 -0
- package/dist/mcp/manager.js.map +1 -0
- package/dist/mcp/types.d.ts +58 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +7 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/mcp/validation.d.ts +119 -0
- package/dist/mcp/validation.d.ts.map +1 -0
- package/dist/mcp/validation.js +407 -0
- package/dist/mcp/validation.js.map +1 -0
- package/dist/mcp/virtual-server.d.ts +78 -0
- package/dist/mcp/virtual-server.d.ts.map +1 -0
- package/dist/mcp/virtual-server.js +137 -0
- package/dist/mcp/virtual-server.js.map +1 -0
- package/dist/memory/filesystem-store.d.ts +217 -0
- package/dist/memory/filesystem-store.d.ts.map +1 -0
- package/dist/memory/filesystem-store.js +343 -0
- package/dist/memory/filesystem-store.js.map +1 -0
- package/dist/memory/index.d.ts +46 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +46 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/loader.d.ts +396 -0
- package/dist/memory/loader.d.ts.map +1 -0
- package/dist/memory/loader.js +419 -0
- package/dist/memory/loader.js.map +1 -0
- package/dist/memory/permissions.d.ts +282 -0
- package/dist/memory/permissions.d.ts.map +1 -0
- package/dist/memory/permissions.js +297 -0
- package/dist/memory/permissions.js.map +1 -0
- package/dist/memory/rules.d.ts +249 -0
- package/dist/memory/rules.d.ts.map +1 -0
- package/dist/memory/rules.js +362 -0
- package/dist/memory/rules.js.map +1 -0
- package/dist/memory/store.d.ts +286 -0
- package/dist/memory/store.d.ts.map +1 -0
- package/dist/memory/store.js +263 -0
- package/dist/memory/store.js.map +1 -0
- package/dist/middleware/apply.d.ts +73 -0
- package/dist/middleware/apply.d.ts.map +1 -0
- package/dist/middleware/apply.js +219 -0
- package/dist/middleware/apply.js.map +1 -0
- package/dist/middleware/context.d.ts +33 -0
- package/dist/middleware/context.d.ts.map +1 -0
- package/dist/middleware/context.js +176 -0
- package/dist/middleware/context.js.map +1 -0
- package/dist/middleware/index.d.ts +31 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +32 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/logging.d.ts +137 -0
- package/dist/middleware/logging.d.ts.map +1 -0
- package/dist/middleware/logging.js +374 -0
- package/dist/middleware/logging.js.map +1 -0
- package/dist/middleware/types.d.ts +183 -0
- package/dist/middleware/types.d.ts.map +1 -0
- package/dist/middleware/types.js +11 -0
- package/dist/middleware/types.js.map +1 -0
- package/dist/observability/events.d.ts +183 -0
- package/dist/observability/events.d.ts.map +1 -0
- package/dist/observability/events.js +305 -0
- package/dist/observability/events.js.map +1 -0
- package/dist/observability/index.d.ts +55 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +87 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/logger.d.ts +318 -0
- package/dist/observability/logger.d.ts.map +1 -0
- package/dist/observability/logger.js +436 -0
- package/dist/observability/logger.js.map +1 -0
- package/dist/observability/metrics.d.ts +341 -0
- package/dist/observability/metrics.d.ts.map +1 -0
- package/dist/observability/metrics.js +490 -0
- package/dist/observability/metrics.js.map +1 -0
- package/dist/observability/preset.d.ts +161 -0
- package/dist/observability/preset.d.ts.map +1 -0
- package/dist/observability/preset.js +133 -0
- package/dist/observability/preset.js.map +1 -0
- package/dist/observability/streaming.d.ts +113 -0
- package/dist/observability/streaming.d.ts.map +1 -0
- package/dist/observability/streaming.js +114 -0
- package/dist/observability/streaming.js.map +1 -0
- package/dist/observability/tracing.d.ts +378 -0
- package/dist/observability/tracing.d.ts.map +1 -0
- package/dist/observability/tracing.js +539 -0
- package/dist/observability/tracing.js.map +1 -0
- package/dist/plugins.d.ts +55 -0
- package/dist/plugins.d.ts.map +1 -0
- package/dist/plugins.js +63 -0
- package/dist/plugins.js.map +1 -0
- package/dist/presets/index.d.ts +7 -0
- package/dist/presets/index.d.ts.map +1 -0
- package/dist/presets/index.js +7 -0
- package/dist/presets/index.js.map +1 -0
- package/dist/presets/production.d.ts +262 -0
- package/dist/presets/production.d.ts.map +1 -0
- package/dist/presets/production.js +295 -0
- package/dist/presets/production.js.map +1 -0
- package/dist/security/index.d.ts +179 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +323 -0
- package/dist/security/index.js.map +1 -0
- package/dist/subagents/advanced.d.ts +413 -0
- package/dist/subagents/advanced.d.ts.map +1 -0
- package/dist/subagents/advanced.js +396 -0
- package/dist/subagents/advanced.js.map +1 -0
- package/dist/subagents/index.d.ts +14 -0
- package/dist/subagents/index.d.ts.map +1 -0
- package/dist/subagents/index.js +15 -0
- package/dist/subagents/index.js.map +1 -0
- package/dist/subagents.d.ts +73 -0
- package/dist/subagents.d.ts.map +1 -0
- package/dist/subagents.js +213 -0
- package/dist/subagents.js.map +1 -0
- package/dist/task-store/file-store.d.ts +76 -0
- package/dist/task-store/file-store.d.ts.map +1 -0
- package/dist/task-store/file-store.js +190 -0
- package/dist/task-store/file-store.js.map +1 -0
- package/dist/task-store/index.d.ts +11 -0
- package/dist/task-store/index.d.ts.map +1 -0
- package/dist/task-store/index.js +10 -0
- package/dist/task-store/index.js.map +1 -0
- package/dist/task-store/kv-store.d.ts +140 -0
- package/dist/task-store/kv-store.d.ts.map +1 -0
- package/dist/task-store/kv-store.js +169 -0
- package/dist/task-store/kv-store.js.map +1 -0
- package/dist/task-store/memory-store.d.ts +66 -0
- package/dist/task-store/memory-store.d.ts.map +1 -0
- package/dist/task-store/memory-store.js +125 -0
- package/dist/task-store/memory-store.js.map +1 -0
- package/dist/task-store/types.d.ts +235 -0
- package/dist/task-store/types.d.ts.map +1 -0
- package/dist/task-store/types.js +110 -0
- package/dist/task-store/types.js.map +1 -0
- package/dist/testing/assertions.d.ts +401 -0
- package/dist/testing/assertions.d.ts.map +1 -0
- package/dist/testing/assertions.js +630 -0
- package/dist/testing/assertions.js.map +1 -0
- package/dist/testing/index.d.ts +343 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +360 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/mock-agent.d.ts +214 -0
- package/dist/testing/mock-agent.d.ts.map +1 -0
- package/dist/testing/mock-agent.js +448 -0
- package/dist/testing/mock-agent.js.map +1 -0
- package/dist/testing/recorder.d.ts +288 -0
- package/dist/testing/recorder.d.ts.map +1 -0
- package/dist/testing/recorder.js +499 -0
- package/dist/testing/recorder.js.map +1 -0
- package/dist/tools/execute.d.ts +104 -0
- package/dist/tools/execute.d.ts.map +1 -0
- package/dist/tools/execute.js +191 -0
- package/dist/tools/execute.js.map +1 -0
- package/dist/tools/factory.d.ts +260 -0
- package/dist/tools/factory.d.ts.map +1 -0
- package/dist/tools/factory.js +241 -0
- package/dist/tools/factory.js.map +1 -0
- package/dist/tools/filesystem.d.ts +215 -0
- package/dist/tools/filesystem.d.ts.map +1 -0
- package/dist/tools/filesystem.js +311 -0
- package/dist/tools/filesystem.js.map +1 -0
- package/dist/tools/index.d.ts +33 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +33 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/search.d.ts +59 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +94 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/skills.d.ts +354 -0
- package/dist/tools/skills.d.ts.map +1 -0
- package/dist/tools/skills.js +413 -0
- package/dist/tools/skills.js.map +1 -0
- package/dist/tools/task.d.ts +272 -0
- package/dist/tools/task.d.ts.map +1 -0
- package/dist/tools/task.js +521 -0
- package/dist/tools/task.js.map +1 -0
- package/dist/tools/todos.d.ts +131 -0
- package/dist/tools/todos.d.ts.map +1 -0
- package/dist/tools/todos.js +120 -0
- package/dist/tools/todos.js.map +1 -0
- package/dist/tools/tool-registry.d.ts +424 -0
- package/dist/tools/tool-registry.d.ts.map +1 -0
- package/dist/tools/tool-registry.js +607 -0
- package/dist/tools/tool-registry.js.map +1 -0
- package/dist/tools/user-interaction.d.ts +116 -0
- package/dist/tools/user-interaction.d.ts.map +1 -0
- package/dist/tools/user-interaction.js +147 -0
- package/dist/tools/user-interaction.js.map +1 -0
- package/dist/tools/utils.d.ts +124 -0
- package/dist/tools/utils.d.ts.map +1 -0
- package/dist/tools/utils.js +189 -0
- package/dist/tools/utils.js.map +1 -0
- package/dist/tools.d.ts +74 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +73 -0
- package/dist/tools.js.map +1 -0
- package/dist/types.d.ts +2421 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +55 -0
- package/dist/types.js.map +1 -0
- package/package.json +81 -0
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory checkpoint saver for ephemeral storage.
|
|
3
|
+
*
|
|
4
|
+
* MemorySaver stores checkpoints in a Map, making it ideal for:
|
|
5
|
+
* - Development and testing
|
|
6
|
+
* - Single-session applications
|
|
7
|
+
* - Scenarios where persistence is not required
|
|
8
|
+
*
|
|
9
|
+
* Note: All data is lost when the process ends.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const saver = new MemorySaver();
|
|
14
|
+
*
|
|
15
|
+
* // Save a checkpoint
|
|
16
|
+
* await saver.save({
|
|
17
|
+
* threadId: "session-123",
|
|
18
|
+
* messages: [...],
|
|
19
|
+
* state: { todos: [], files: {} },
|
|
20
|
+
* step: 0,
|
|
21
|
+
* createdAt: new Date().toISOString(),
|
|
22
|
+
* updatedAt: new Date().toISOString(),
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* // Load it back
|
|
26
|
+
* const checkpoint = await saver.load("session-123");
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @packageDocumentation
|
|
30
|
+
*/
|
|
31
|
+
/**
|
|
32
|
+
* In-memory checkpoint saver.
|
|
33
|
+
*
|
|
34
|
+
* Stores checkpoints in a JavaScript Map for fast access.
|
|
35
|
+
* All data is ephemeral and lost when the process terminates.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```typescript
|
|
39
|
+
* const saver = new MemorySaver();
|
|
40
|
+
*
|
|
41
|
+
* // Save a checkpoint
|
|
42
|
+
* await saver.save(checkpoint);
|
|
43
|
+
*
|
|
44
|
+
* // List all threads
|
|
45
|
+
* const threads = await saver.list();
|
|
46
|
+
*
|
|
47
|
+
* // Load a specific thread
|
|
48
|
+
* const loaded = await saver.load(threads[0]);
|
|
49
|
+
*
|
|
50
|
+
* // Delete when done
|
|
51
|
+
* await saver.delete(threads[0]);
|
|
52
|
+
* ```
|
|
53
|
+
*
|
|
54
|
+
* @category Checkpointer
|
|
55
|
+
*/
|
|
56
|
+
export class MemorySaver {
|
|
57
|
+
checkpoints = new Map();
|
|
58
|
+
namespace;
|
|
59
|
+
/**
|
|
60
|
+
* Create a new MemorySaver.
|
|
61
|
+
*
|
|
62
|
+
* @param options - Optional configuration
|
|
63
|
+
*/
|
|
64
|
+
constructor(options) {
|
|
65
|
+
this.namespace = options?.namespace;
|
|
66
|
+
// Populate with initial checkpoints if provided
|
|
67
|
+
if (options?.initialCheckpoints) {
|
|
68
|
+
for (const checkpoint of options.initialCheckpoints) {
|
|
69
|
+
const key = this.getKey(checkpoint.threadId);
|
|
70
|
+
// Deep copy to prevent external mutation
|
|
71
|
+
this.checkpoints.set(key, this.deepCopy(checkpoint));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Save a checkpoint.
|
|
77
|
+
*
|
|
78
|
+
* If a checkpoint with the same threadId exists, it will be overwritten.
|
|
79
|
+
* The checkpoint is deep-copied to prevent external mutation.
|
|
80
|
+
*
|
|
81
|
+
* @param checkpoint - The checkpoint to save
|
|
82
|
+
*/
|
|
83
|
+
async save(checkpoint) {
|
|
84
|
+
const key = this.getKey(checkpoint.threadId);
|
|
85
|
+
// Deep copy to prevent external mutation affecting stored data
|
|
86
|
+
this.checkpoints.set(key, this.deepCopy(checkpoint));
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Load a checkpoint by thread ID.
|
|
90
|
+
*
|
|
91
|
+
* Returns a deep copy to prevent external mutation of stored data.
|
|
92
|
+
*
|
|
93
|
+
* @param threadId - The thread ID to load
|
|
94
|
+
* @returns The checkpoint if found, undefined otherwise
|
|
95
|
+
*/
|
|
96
|
+
async load(threadId) {
|
|
97
|
+
const key = this.getKey(threadId);
|
|
98
|
+
const checkpoint = this.checkpoints.get(key);
|
|
99
|
+
// Return deep copy to prevent external mutation
|
|
100
|
+
return checkpoint ? this.deepCopy(checkpoint) : undefined;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* List all thread IDs that have checkpoints.
|
|
104
|
+
*
|
|
105
|
+
* If a namespace is configured, only returns threads within that namespace.
|
|
106
|
+
*
|
|
107
|
+
* @returns Array of thread IDs
|
|
108
|
+
*/
|
|
109
|
+
async list() {
|
|
110
|
+
const threads = [];
|
|
111
|
+
const prefix = this.namespace ? `${this.namespace}:` : "";
|
|
112
|
+
for (const key of this.checkpoints.keys()) {
|
|
113
|
+
if (this.namespace) {
|
|
114
|
+
if (key.startsWith(prefix)) {
|
|
115
|
+
threads.push(key.slice(prefix.length));
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
threads.push(key);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return threads;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Delete a checkpoint.
|
|
126
|
+
*
|
|
127
|
+
* @param threadId - The thread ID to delete
|
|
128
|
+
* @returns True if a checkpoint was deleted, false if not found
|
|
129
|
+
*/
|
|
130
|
+
async delete(threadId) {
|
|
131
|
+
const key = this.getKey(threadId);
|
|
132
|
+
return this.checkpoints.delete(key);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Check if a checkpoint exists.
|
|
136
|
+
*
|
|
137
|
+
* @param threadId - The thread ID to check
|
|
138
|
+
* @returns True if the checkpoint exists
|
|
139
|
+
*/
|
|
140
|
+
async exists(threadId) {
|
|
141
|
+
const key = this.getKey(threadId);
|
|
142
|
+
return this.checkpoints.has(key);
|
|
143
|
+
}
|
|
144
|
+
// ===========================================================================
|
|
145
|
+
// Additional Utility Methods
|
|
146
|
+
// ===========================================================================
|
|
147
|
+
/**
|
|
148
|
+
* Get the number of stored checkpoints.
|
|
149
|
+
*
|
|
150
|
+
* If a namespace is configured, returns count within that namespace only.
|
|
151
|
+
*/
|
|
152
|
+
get size() {
|
|
153
|
+
if (!this.namespace) {
|
|
154
|
+
return this.checkpoints.size;
|
|
155
|
+
}
|
|
156
|
+
const prefix = `${this.namespace}:`;
|
|
157
|
+
let count = 0;
|
|
158
|
+
for (const key of this.checkpoints.keys()) {
|
|
159
|
+
if (key.startsWith(prefix)) {
|
|
160
|
+
count++;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return count;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Clear all stored checkpoints.
|
|
167
|
+
*
|
|
168
|
+
* If a namespace is configured, only clears checkpoints within that namespace.
|
|
169
|
+
*/
|
|
170
|
+
clear() {
|
|
171
|
+
if (!this.namespace) {
|
|
172
|
+
this.checkpoints.clear();
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
const prefix = `${this.namespace}:`;
|
|
176
|
+
for (const key of [...this.checkpoints.keys()]) {
|
|
177
|
+
if (key.startsWith(prefix)) {
|
|
178
|
+
this.checkpoints.delete(key);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
// ===========================================================================
|
|
183
|
+
// Private Helpers
|
|
184
|
+
// ===========================================================================
|
|
185
|
+
/**
|
|
186
|
+
* Get the storage key for a thread ID.
|
|
187
|
+
* @internal
|
|
188
|
+
*/
|
|
189
|
+
getKey(threadId) {
|
|
190
|
+
return this.namespace ? `${this.namespace}:${threadId}` : threadId;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Deep copy a checkpoint to prevent mutation.
|
|
194
|
+
* @internal
|
|
195
|
+
*/
|
|
196
|
+
deepCopy(checkpoint) {
|
|
197
|
+
return JSON.parse(JSON.stringify(checkpoint));
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
// =============================================================================
|
|
201
|
+
// Factory Function
|
|
202
|
+
// =============================================================================
|
|
203
|
+
/**
|
|
204
|
+
* Create a new MemorySaver instance.
|
|
205
|
+
*
|
|
206
|
+
* @param options - Optional configuration
|
|
207
|
+
* @returns A new MemorySaver instance
|
|
208
|
+
*
|
|
209
|
+
* @example
|
|
210
|
+
* ```typescript
|
|
211
|
+
* const saver = createMemorySaver();
|
|
212
|
+
*
|
|
213
|
+
* // Or with namespace for multi-tenant isolation
|
|
214
|
+
* const userSaver = createMemorySaver({ namespace: "user-123" });
|
|
215
|
+
* ```
|
|
216
|
+
*
|
|
217
|
+
* @category Checkpointer
|
|
218
|
+
*/
|
|
219
|
+
export function createMemorySaver(options) {
|
|
220
|
+
return new MemorySaver(options);
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=memory-saver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-saver.js","sourceRoot":"","sources":["../../src/checkpointer/memory-saver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for the checkpointer system.
|
|
3
|
+
*
|
|
4
|
+
* Checkpointers provide session persistence and resumption across conversations,
|
|
5
|
+
* allowing agents to save and restore their state including message history,
|
|
6
|
+
* todos, files, and pending tool approvals.
|
|
7
|
+
*
|
|
8
|
+
* @packageDocumentation
|
|
9
|
+
*/
|
|
10
|
+
import type { ModelMessage } from "ai";
|
|
11
|
+
import type { AgentState } from "../backends/state.js";
|
|
12
|
+
/**
|
|
13
|
+
* Base interrupt type - the shared mechanism for pausing agent execution.
|
|
14
|
+
*
|
|
15
|
+
* Interrupts allow the agent to pause execution and wait for external input.
|
|
16
|
+
* This is a generalized pattern that supports:
|
|
17
|
+
* - Tool approval requests (ApprovalInterrupt)
|
|
18
|
+
* - User questions during tool execution
|
|
19
|
+
* - Custom application-specific interrupts
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const interrupt: Interrupt = {
|
|
24
|
+
* id: "int_abc123",
|
|
25
|
+
* threadId: "session-456",
|
|
26
|
+
* type: "approval",
|
|
27
|
+
* toolCallId: "call_abc123",
|
|
28
|
+
* toolName: "deleteFile",
|
|
29
|
+
* request: { toolName: "deleteFile", args: { path: "/important/file.txt" } },
|
|
30
|
+
* step: 5,
|
|
31
|
+
* createdAt: "2026-01-30T10:00:00Z",
|
|
32
|
+
* };
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* @category Checkpointer
|
|
36
|
+
*/
|
|
37
|
+
export interface Interrupt<TRequest = unknown, TResponse = unknown> {
|
|
38
|
+
/** Unique identifier for this interrupt */
|
|
39
|
+
id: string;
|
|
40
|
+
/** The thread this interrupt belongs to */
|
|
41
|
+
threadId: string;
|
|
42
|
+
/** Type of interrupt (e.g., "approval", "question", custom types) */
|
|
43
|
+
type: string;
|
|
44
|
+
/** The tool call ID if this interrupt is related to a tool call */
|
|
45
|
+
toolCallId?: string;
|
|
46
|
+
/** The tool name if this interrupt is related to a tool call */
|
|
47
|
+
toolName?: string;
|
|
48
|
+
/** The request data for this interrupt (type varies by interrupt type) */
|
|
49
|
+
request: TRequest;
|
|
50
|
+
/** The step number when the interrupt occurred */
|
|
51
|
+
step: number;
|
|
52
|
+
/** ISO 8601 timestamp when this interrupt was created */
|
|
53
|
+
createdAt: string;
|
|
54
|
+
/** The response to this interrupt (undefined = pending) */
|
|
55
|
+
response?: TResponse;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Request data for an approval interrupt.
|
|
59
|
+
*
|
|
60
|
+
* @category Checkpointer
|
|
61
|
+
*/
|
|
62
|
+
export interface ApprovalRequest {
|
|
63
|
+
/** Name of the tool that requires approval */
|
|
64
|
+
toolName: string;
|
|
65
|
+
/** Arguments passed to the tool */
|
|
66
|
+
args: unknown;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Response data for an approval interrupt.
|
|
70
|
+
*
|
|
71
|
+
* @category Checkpointer
|
|
72
|
+
*/
|
|
73
|
+
export interface ApprovalResponse {
|
|
74
|
+
/** Whether the tool call was approved */
|
|
75
|
+
approved: boolean;
|
|
76
|
+
/** Optional reason for the decision */
|
|
77
|
+
reason?: string;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Approval interrupt - a specialized interrupt for tool approval requests.
|
|
81
|
+
*
|
|
82
|
+
* When a tool requires user confirmation (via `canUseTool` returning "ask"),
|
|
83
|
+
* the agent creates an approval interrupt and pauses execution.
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```typescript
|
|
87
|
+
* const approval: ApprovalInterrupt = {
|
|
88
|
+
* id: "int_abc123",
|
|
89
|
+
* threadId: "session-456",
|
|
90
|
+
* type: "approval",
|
|
91
|
+
* toolCallId: "call_abc123",
|
|
92
|
+
* toolName: "deleteFile",
|
|
93
|
+
* request: { toolName: "deleteFile", args: { path: "/important/file.txt" } },
|
|
94
|
+
* step: 5,
|
|
95
|
+
* createdAt: "2026-01-30T10:00:00Z",
|
|
96
|
+
* };
|
|
97
|
+
* ```
|
|
98
|
+
*
|
|
99
|
+
* @category Checkpointer
|
|
100
|
+
*/
|
|
101
|
+
export interface ApprovalInterrupt extends Interrupt<ApprovalRequest, ApprovalResponse> {
|
|
102
|
+
type: "approval";
|
|
103
|
+
/** Tool call ID is required for approval interrupts */
|
|
104
|
+
toolCallId: string;
|
|
105
|
+
/** Tool name is required for approval interrupts */
|
|
106
|
+
toolName: string;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Complete snapshot of an agent session.
|
|
110
|
+
*
|
|
111
|
+
* A checkpoint captures the full state of a conversation, including:
|
|
112
|
+
* - Message history for context continuity
|
|
113
|
+
* - Agent state (todos, virtual files)
|
|
114
|
+
* - Any pending interrupts (tool approvals, questions, etc.)
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```typescript
|
|
118
|
+
* const checkpoint: Checkpoint = {
|
|
119
|
+
* threadId: "session-123",
|
|
120
|
+
* step: 5,
|
|
121
|
+
* messages: [
|
|
122
|
+
* { role: "user", content: "Hello" },
|
|
123
|
+
* { role: "assistant", content: "Hi there!" },
|
|
124
|
+
* ],
|
|
125
|
+
* state: { todos: [], files: {} },
|
|
126
|
+
* createdAt: "2026-01-30T10:00:00Z",
|
|
127
|
+
* updatedAt: "2026-01-30T10:05:00Z",
|
|
128
|
+
* };
|
|
129
|
+
* ```
|
|
130
|
+
*
|
|
131
|
+
* @category Checkpointer
|
|
132
|
+
*/
|
|
133
|
+
export interface Checkpoint {
|
|
134
|
+
/** Unique identifier for this conversation thread */
|
|
135
|
+
threadId: string;
|
|
136
|
+
/** Step number when this checkpoint was created */
|
|
137
|
+
step: number;
|
|
138
|
+
/** Full message history */
|
|
139
|
+
messages: ModelMessage[];
|
|
140
|
+
/** Agent state including todos and virtual filesystem */
|
|
141
|
+
state: AgentState;
|
|
142
|
+
/**
|
|
143
|
+
* Pending interrupt if the agent was interrupted.
|
|
144
|
+
*/
|
|
145
|
+
pendingInterrupt?: Interrupt;
|
|
146
|
+
/** ISO 8601 timestamp when this checkpoint was first created */
|
|
147
|
+
createdAt: string;
|
|
148
|
+
/** ISO 8601 timestamp when this checkpoint was last updated */
|
|
149
|
+
updatedAt: string;
|
|
150
|
+
/** Optional metadata for custom data */
|
|
151
|
+
metadata?: Record<string, unknown>;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Options for creating a checkpoint saver.
|
|
155
|
+
*
|
|
156
|
+
* @category Checkpointer
|
|
157
|
+
*/
|
|
158
|
+
export interface CheckpointSaverOptions {
|
|
159
|
+
/**
|
|
160
|
+
* Namespace for isolating checkpoints.
|
|
161
|
+
*
|
|
162
|
+
* Useful for multi-tenant scenarios where different users or projects
|
|
163
|
+
* need separate checkpoint storage.
|
|
164
|
+
*
|
|
165
|
+
* @defaultValue undefined (no namespace)
|
|
166
|
+
*/
|
|
167
|
+
namespace?: string;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Abstract storage interface for checkpoints.
|
|
171
|
+
*
|
|
172
|
+
* Implement this interface to create custom checkpoint storage backends
|
|
173
|
+
* such as Redis, SQLite, cloud storage, or any other persistence layer.
|
|
174
|
+
*
|
|
175
|
+
* @example
|
|
176
|
+
* ```typescript
|
|
177
|
+
* class RedisCheckpointSaver implements BaseCheckpointSaver {
|
|
178
|
+
* constructor(private redis: RedisClient) {}
|
|
179
|
+
*
|
|
180
|
+
* async save(checkpoint: Checkpoint): Promise<void> {
|
|
181
|
+
* const key = `checkpoint:${checkpoint.threadId}`;
|
|
182
|
+
* await this.redis.set(key, JSON.stringify(checkpoint));
|
|
183
|
+
* }
|
|
184
|
+
*
|
|
185
|
+
* async load(threadId: string): Promise<Checkpoint | undefined> {
|
|
186
|
+
* const key = `checkpoint:${threadId}`;
|
|
187
|
+
* const data = await this.redis.get(key);
|
|
188
|
+
* return data ? JSON.parse(data) : undefined;
|
|
189
|
+
* }
|
|
190
|
+
*
|
|
191
|
+
* // ... other methods
|
|
192
|
+
* }
|
|
193
|
+
* ```
|
|
194
|
+
*
|
|
195
|
+
* @category Checkpointer
|
|
196
|
+
*/
|
|
197
|
+
export interface BaseCheckpointSaver {
|
|
198
|
+
/**
|
|
199
|
+
* Save a checkpoint.
|
|
200
|
+
*
|
|
201
|
+
* If a checkpoint with the same `threadId` exists, it should be updated.
|
|
202
|
+
*
|
|
203
|
+
* @param checkpoint - The checkpoint to save
|
|
204
|
+
*/
|
|
205
|
+
save(checkpoint: Checkpoint): Promise<void>;
|
|
206
|
+
/**
|
|
207
|
+
* Load a checkpoint by thread ID.
|
|
208
|
+
*
|
|
209
|
+
* @param threadId - The unique thread identifier
|
|
210
|
+
* @returns The checkpoint if found, undefined otherwise
|
|
211
|
+
*/
|
|
212
|
+
load(threadId: string): Promise<Checkpoint | undefined>;
|
|
213
|
+
/**
|
|
214
|
+
* List all thread IDs that have checkpoints.
|
|
215
|
+
*
|
|
216
|
+
* @returns Array of thread IDs
|
|
217
|
+
*/
|
|
218
|
+
list(): Promise<string[]>;
|
|
219
|
+
/**
|
|
220
|
+
* Delete a checkpoint.
|
|
221
|
+
*
|
|
222
|
+
* @param threadId - The thread ID to delete
|
|
223
|
+
* @returns True if a checkpoint was deleted, false if not found
|
|
224
|
+
*/
|
|
225
|
+
delete(threadId: string): Promise<boolean>;
|
|
226
|
+
/**
|
|
227
|
+
* Check if a checkpoint exists.
|
|
228
|
+
*
|
|
229
|
+
* @param threadId - The thread ID to check
|
|
230
|
+
* @returns True if the checkpoint exists
|
|
231
|
+
*/
|
|
232
|
+
exists(threadId: string): Promise<boolean>;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Event emitted when a checkpoint is saved.
|
|
236
|
+
*
|
|
237
|
+
* @category Checkpointer
|
|
238
|
+
*/
|
|
239
|
+
export interface CheckpointSavedEvent {
|
|
240
|
+
type: "checkpoint-saved";
|
|
241
|
+
threadId: string;
|
|
242
|
+
step: number;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Event emitted when a checkpoint is loaded.
|
|
246
|
+
*
|
|
247
|
+
* @category Checkpointer
|
|
248
|
+
*/
|
|
249
|
+
export interface CheckpointLoadedEvent {
|
|
250
|
+
type: "checkpoint-loaded";
|
|
251
|
+
threadId: string;
|
|
252
|
+
step: number;
|
|
253
|
+
messagesCount: number;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Union type of all checkpoint events.
|
|
257
|
+
*
|
|
258
|
+
* @category Checkpointer
|
|
259
|
+
*/
|
|
260
|
+
export type CheckpointEvent = CheckpointSavedEvent | CheckpointLoadedEvent;
|
|
261
|
+
/**
|
|
262
|
+
* Create a new checkpoint with the given data.
|
|
263
|
+
*
|
|
264
|
+
* This is a convenience function that ensures timestamps are set correctly.
|
|
265
|
+
*
|
|
266
|
+
* @param data - Partial checkpoint data (threadId and messages required)
|
|
267
|
+
* @returns A complete checkpoint object
|
|
268
|
+
*
|
|
269
|
+
* @example
|
|
270
|
+
* ```typescript
|
|
271
|
+
* const checkpoint = createCheckpoint({
|
|
272
|
+
* threadId: "session-123",
|
|
273
|
+
* messages: [...],
|
|
274
|
+
* state: { todos: [], files: {} },
|
|
275
|
+
* });
|
|
276
|
+
* ```
|
|
277
|
+
*
|
|
278
|
+
* @category Checkpointer
|
|
279
|
+
*/
|
|
280
|
+
export declare function createCheckpoint(data: Pick<Checkpoint, "threadId" | "messages" | "state"> & Partial<Omit<Checkpoint, "threadId" | "messages" | "state">>): Checkpoint;
|
|
281
|
+
/**
|
|
282
|
+
* Update an existing checkpoint with new data.
|
|
283
|
+
*
|
|
284
|
+
* Automatically updates the `updatedAt` timestamp and increments step.
|
|
285
|
+
*
|
|
286
|
+
* @param checkpoint - The existing checkpoint
|
|
287
|
+
* @param updates - Partial updates to apply
|
|
288
|
+
* @returns A new checkpoint object with updates applied
|
|
289
|
+
*
|
|
290
|
+
* @example
|
|
291
|
+
* ```typescript
|
|
292
|
+
* const updated = updateCheckpoint(checkpoint, {
|
|
293
|
+
* messages: [...newMessages],
|
|
294
|
+
* step: checkpoint.step + 1,
|
|
295
|
+
* });
|
|
296
|
+
* ```
|
|
297
|
+
*
|
|
298
|
+
* @category Checkpointer
|
|
299
|
+
*/
|
|
300
|
+
export declare function updateCheckpoint(checkpoint: Checkpoint, updates: Partial<Omit<Checkpoint, "threadId" | "createdAt">>): Checkpoint;
|
|
301
|
+
/**
|
|
302
|
+
* Type guard to check if an object is a valid Checkpoint.
|
|
303
|
+
*
|
|
304
|
+
* @param value - The value to check
|
|
305
|
+
* @returns True if the value is a valid Checkpoint
|
|
306
|
+
*
|
|
307
|
+
* @category Checkpointer
|
|
308
|
+
*/
|
|
309
|
+
export declare function isCheckpoint(value: unknown): value is Checkpoint;
|
|
310
|
+
/**
|
|
311
|
+
* Type guard to check if an object is a valid Interrupt.
|
|
312
|
+
*
|
|
313
|
+
* @param value - The value to check
|
|
314
|
+
* @returns True if the value is a valid Interrupt
|
|
315
|
+
*
|
|
316
|
+
* @category Checkpointer
|
|
317
|
+
*/
|
|
318
|
+
export declare function isInterrupt(value: unknown): value is Interrupt;
|
|
319
|
+
/**
|
|
320
|
+
* Type guard to check if an interrupt is an ApprovalInterrupt.
|
|
321
|
+
*
|
|
322
|
+
* @param interrupt - The interrupt to check
|
|
323
|
+
* @returns True if the interrupt is an ApprovalInterrupt
|
|
324
|
+
*
|
|
325
|
+
* @category Checkpointer
|
|
326
|
+
*/
|
|
327
|
+
export declare function isApprovalInterrupt(interrupt: Interrupt): interrupt is ApprovalInterrupt;
|
|
328
|
+
/**
|
|
329
|
+
* Create a new interrupt with the given data.
|
|
330
|
+
*
|
|
331
|
+
* @param data - Partial interrupt data (id, threadId, type, and request required)
|
|
332
|
+
* @returns A complete interrupt object
|
|
333
|
+
*
|
|
334
|
+
* @category Checkpointer
|
|
335
|
+
*/
|
|
336
|
+
export declare function createInterrupt<TRequest = unknown, TResponse = unknown>(data: Pick<Interrupt<TRequest, TResponse>, "id" | "threadId" | "type" | "request"> & Partial<Omit<Interrupt<TRequest, TResponse>, "id" | "threadId" | "type" | "request">>): Interrupt<TRequest, TResponse>;
|
|
337
|
+
/**
|
|
338
|
+
* Create an approval interrupt for a tool call.
|
|
339
|
+
*
|
|
340
|
+
* @param data - The approval interrupt data
|
|
341
|
+
* @returns A complete ApprovalInterrupt object
|
|
342
|
+
*
|
|
343
|
+
* @category Checkpointer
|
|
344
|
+
*/
|
|
345
|
+
export declare function createApprovalInterrupt(data: {
|
|
346
|
+
id: string;
|
|
347
|
+
threadId: string;
|
|
348
|
+
toolCallId: string;
|
|
349
|
+
toolName: string;
|
|
350
|
+
args: unknown;
|
|
351
|
+
step?: number;
|
|
352
|
+
}): ApprovalInterrupt;
|
|
353
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/checkpointer/types.ts"],"names":[],"mappings":"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"}
|