@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 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/backends/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,gBAAgB,EAEhB,sBAAsB,GAEvB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EAEjB,kBAAkB,EAClB,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,uBAAuB,EACvB,aAAa,EAEb,iBAAiB,GAElB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,GAEb,MAAM,cAAc,CAAC;AACtB,OAAO,EAEL,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,GAGb,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persistent backend using a pluggable key-value store.
|
|
3
|
+
*
|
|
4
|
+
* PersistentBackend provides cross-conversation persistence by storing files
|
|
5
|
+
* in a key-value store. This enables long-term memory and state preservation
|
|
6
|
+
* across agent sessions.
|
|
7
|
+
*
|
|
8
|
+
* The backend supports any storage system that implements the KeyValueStore
|
|
9
|
+
* interface, including Redis, SQLite, DynamoDB, or cloud storage.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* // Using the built-in in-memory store (for development)
|
|
14
|
+
* const store = new InMemoryStore();
|
|
15
|
+
* const backend = new PersistentBackend({ store });
|
|
16
|
+
*
|
|
17
|
+
* // With namespace isolation
|
|
18
|
+
* const backend = new PersistentBackend({
|
|
19
|
+
* store,
|
|
20
|
+
* namespace: "user-123",
|
|
21
|
+
* });
|
|
22
|
+
*
|
|
23
|
+
* // Files are persisted across sessions
|
|
24
|
+
* await backend.write("/notes.md", "# My Notes\n");
|
|
25
|
+
* // Later, in a new session:
|
|
26
|
+
* const content = await backend.read("/notes.md");
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @packageDocumentation
|
|
30
|
+
*/
|
|
31
|
+
import type { BackendProtocol, EditResult, FileData, FileInfo, GrepMatch, WriteResult } from "../backend.js";
|
|
32
|
+
/**
|
|
33
|
+
* Pluggable key-value store interface.
|
|
34
|
+
*
|
|
35
|
+
* Implement this interface to add persistence to any storage backend.
|
|
36
|
+
* The namespace array allows for hierarchical organization of data.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* // Example Redis implementation
|
|
41
|
+
* class RedisStore implements KeyValueStore {
|
|
42
|
+
* private redis: RedisClient;
|
|
43
|
+
*
|
|
44
|
+
* private makeKey(namespace: string[], key: string): string {
|
|
45
|
+
* return [...namespace, key].join(":");
|
|
46
|
+
* }
|
|
47
|
+
*
|
|
48
|
+
* async get(namespace: string[], key: string) {
|
|
49
|
+
* const data = await this.redis.get(this.makeKey(namespace, key));
|
|
50
|
+
* return data ? JSON.parse(data) : undefined;
|
|
51
|
+
* }
|
|
52
|
+
*
|
|
53
|
+
* async put(namespace: string[], key: string, value: Record<string, unknown>) {
|
|
54
|
+
* await this.redis.set(this.makeKey(namespace, key), JSON.stringify(value));
|
|
55
|
+
* }
|
|
56
|
+
*
|
|
57
|
+
* async delete(namespace: string[], key: string) {
|
|
58
|
+
* await this.redis.del(this.makeKey(namespace, key));
|
|
59
|
+
* }
|
|
60
|
+
*
|
|
61
|
+
* async list(namespace: string[]) {
|
|
62
|
+
* const pattern = [...namespace, "*"].join(":");
|
|
63
|
+
* const keys = await this.redis.keys(pattern);
|
|
64
|
+
* return Promise.all(keys.map(async k => ({
|
|
65
|
+
* key: k.split(":").pop()!,
|
|
66
|
+
* value: JSON.parse(await this.redis.get(k) || "{}"),
|
|
67
|
+
* })));
|
|
68
|
+
* }
|
|
69
|
+
* }
|
|
70
|
+
* ```
|
|
71
|
+
*
|
|
72
|
+
* @category Backend
|
|
73
|
+
*/
|
|
74
|
+
export interface KeyValueStore {
|
|
75
|
+
/**
|
|
76
|
+
* Get a value by namespace and key.
|
|
77
|
+
*
|
|
78
|
+
* @param namespace - Hierarchical namespace array (e.g., ["user-123", "filesystem"])
|
|
79
|
+
* @param key - The key to retrieve
|
|
80
|
+
* @returns The value if found, undefined otherwise
|
|
81
|
+
*/
|
|
82
|
+
get(namespace: string[], key: string): Promise<Record<string, unknown> | undefined>;
|
|
83
|
+
/**
|
|
84
|
+
* Store a value at the given namespace and key.
|
|
85
|
+
*
|
|
86
|
+
* @param namespace - Hierarchical namespace array
|
|
87
|
+
* @param key - The key to store at
|
|
88
|
+
* @param value - The value to store (must be JSON-serializable)
|
|
89
|
+
*/
|
|
90
|
+
put(namespace: string[], key: string, value: Record<string, unknown>): Promise<void>;
|
|
91
|
+
/**
|
|
92
|
+
* Delete a value by namespace and key.
|
|
93
|
+
*
|
|
94
|
+
* @param namespace - Hierarchical namespace array
|
|
95
|
+
* @param key - The key to delete
|
|
96
|
+
*/
|
|
97
|
+
delete(namespace: string[], key: string): Promise<void>;
|
|
98
|
+
/**
|
|
99
|
+
* List all keys and values in a namespace.
|
|
100
|
+
*
|
|
101
|
+
* @param namespace - Hierarchical namespace array
|
|
102
|
+
* @returns Array of key-value pairs in the namespace
|
|
103
|
+
*/
|
|
104
|
+
list(namespace: string[]): Promise<Array<{
|
|
105
|
+
key: string;
|
|
106
|
+
value: Record<string, unknown>;
|
|
107
|
+
}>>;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* In-memory implementation of KeyValueStore for development and testing.
|
|
111
|
+
*
|
|
112
|
+
* Data is stored in a Map and lost when the process ends.
|
|
113
|
+
* Use this for development or as a reference implementation.
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```typescript
|
|
117
|
+
* const store = new InMemoryStore();
|
|
118
|
+
*
|
|
119
|
+
* // Store data
|
|
120
|
+
* await store.put(["app", "users"], "user-1", { name: "Alice" });
|
|
121
|
+
*
|
|
122
|
+
* // Retrieve data
|
|
123
|
+
* const user = await store.get(["app", "users"], "user-1");
|
|
124
|
+
*
|
|
125
|
+
* // List all users
|
|
126
|
+
* const users = await store.list(["app", "users"]);
|
|
127
|
+
* ```
|
|
128
|
+
*
|
|
129
|
+
* @category Backend
|
|
130
|
+
*/
|
|
131
|
+
export declare class InMemoryStore implements KeyValueStore {
|
|
132
|
+
private data;
|
|
133
|
+
/**
|
|
134
|
+
* Create a composite key from namespace and key.
|
|
135
|
+
* @internal
|
|
136
|
+
*/
|
|
137
|
+
private makeKey;
|
|
138
|
+
/**
|
|
139
|
+
* Parse a composite key to extract namespace and key.
|
|
140
|
+
* @internal
|
|
141
|
+
*/
|
|
142
|
+
private parseKey;
|
|
143
|
+
/**
|
|
144
|
+
* Check if a composite key starts with the given namespace.
|
|
145
|
+
* @internal
|
|
146
|
+
*/
|
|
147
|
+
private startsWithNamespace;
|
|
148
|
+
get(namespace: string[], key: string): Promise<Record<string, unknown> | undefined>;
|
|
149
|
+
put(namespace: string[], key: string, value: Record<string, unknown>): Promise<void>;
|
|
150
|
+
delete(namespace: string[], key: string): Promise<void>;
|
|
151
|
+
list(namespace: string[]): Promise<Array<{
|
|
152
|
+
key: string;
|
|
153
|
+
value: Record<string, unknown>;
|
|
154
|
+
}>>;
|
|
155
|
+
/**
|
|
156
|
+
* Clear all data from the store.
|
|
157
|
+
*
|
|
158
|
+
* Useful for testing cleanup.
|
|
159
|
+
*/
|
|
160
|
+
clear(): void;
|
|
161
|
+
/**
|
|
162
|
+
* Get the number of entries in the store.
|
|
163
|
+
*
|
|
164
|
+
* Useful for testing.
|
|
165
|
+
*/
|
|
166
|
+
get size(): number;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Configuration options for PersistentBackend.
|
|
170
|
+
*
|
|
171
|
+
* @category Backend
|
|
172
|
+
*/
|
|
173
|
+
export interface PersistentBackendOptions {
|
|
174
|
+
/**
|
|
175
|
+
* The key-value store to use for persistence.
|
|
176
|
+
*/
|
|
177
|
+
store: KeyValueStore;
|
|
178
|
+
/**
|
|
179
|
+
* Optional namespace prefix for all keys.
|
|
180
|
+
*
|
|
181
|
+
* Use this to isolate data between different agents, users, or sessions.
|
|
182
|
+
*
|
|
183
|
+
* @defaultValue undefined (no namespace prefix)
|
|
184
|
+
*
|
|
185
|
+
* @example
|
|
186
|
+
* ```typescript
|
|
187
|
+
* // Isolate by user
|
|
188
|
+
* new PersistentBackend({ store, namespace: "user-123" });
|
|
189
|
+
*
|
|
190
|
+
* // Isolate by agent
|
|
191
|
+
* new PersistentBackend({ store, namespace: "agent-coding" });
|
|
192
|
+
* ```
|
|
193
|
+
*/
|
|
194
|
+
namespace?: string;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Backend implementation using a pluggable key-value store.
|
|
198
|
+
*
|
|
199
|
+
* All file operations are persisted to the underlying store, allowing
|
|
200
|
+
* data to survive across process restarts and agent sessions.
|
|
201
|
+
*
|
|
202
|
+
* Files are stored at: [namespace?, "filesystem", encodedPath]
|
|
203
|
+
*
|
|
204
|
+
* @example
|
|
205
|
+
* ```typescript
|
|
206
|
+
* import { PersistentBackend, InMemoryStore } from "@lleverage-ai/agent-sdk";
|
|
207
|
+
*
|
|
208
|
+
* // Create with in-memory store
|
|
209
|
+
* const store = new InMemoryStore();
|
|
210
|
+
* const backend = new PersistentBackend({ store });
|
|
211
|
+
*
|
|
212
|
+
* // Write persists to store
|
|
213
|
+
* await backend.write("/notes.md", "# Notes");
|
|
214
|
+
*
|
|
215
|
+
* // Read retrieves from store
|
|
216
|
+
* const content = await backend.read("/notes.md");
|
|
217
|
+
*
|
|
218
|
+
* // With namespace for multi-tenant isolation
|
|
219
|
+
* const userBackend = new PersistentBackend({
|
|
220
|
+
* store,
|
|
221
|
+
* namespace: "user-456",
|
|
222
|
+
* });
|
|
223
|
+
* ```
|
|
224
|
+
*
|
|
225
|
+
* @category Backend
|
|
226
|
+
*/
|
|
227
|
+
export declare class PersistentBackend implements BackendProtocol {
|
|
228
|
+
private readonly store;
|
|
229
|
+
private readonly namespacePrefix;
|
|
230
|
+
/**
|
|
231
|
+
* Create a new PersistentBackend.
|
|
232
|
+
*
|
|
233
|
+
* @param options - Configuration options
|
|
234
|
+
*/
|
|
235
|
+
constructor(options: PersistentBackendOptions);
|
|
236
|
+
/**
|
|
237
|
+
* Encode a file path as a safe key.
|
|
238
|
+
*
|
|
239
|
+
* File paths may contain characters that are problematic for some
|
|
240
|
+
* key-value stores. We use base64url encoding for safety.
|
|
241
|
+
*
|
|
242
|
+
* @internal
|
|
243
|
+
*/
|
|
244
|
+
private encodePathAsKey;
|
|
245
|
+
/**
|
|
246
|
+
* Decode a key back to a file path.
|
|
247
|
+
* @internal
|
|
248
|
+
*/
|
|
249
|
+
private decodeKeyToPath;
|
|
250
|
+
/**
|
|
251
|
+
* Normalize a path to ensure consistent format.
|
|
252
|
+
* @internal
|
|
253
|
+
*/
|
|
254
|
+
private normalizePath;
|
|
255
|
+
/**
|
|
256
|
+
* Get the namespace for a file path.
|
|
257
|
+
* @internal
|
|
258
|
+
*/
|
|
259
|
+
private getNamespace;
|
|
260
|
+
/**
|
|
261
|
+
* List files and directories at the given path.
|
|
262
|
+
*/
|
|
263
|
+
lsInfo(path: string): Promise<FileInfo[]>;
|
|
264
|
+
/**
|
|
265
|
+
* Read file content with line numbers.
|
|
266
|
+
*/
|
|
267
|
+
read(filePath: string, offset?: number, limit?: number): Promise<string>;
|
|
268
|
+
/**
|
|
269
|
+
* Read raw file content as FileData.
|
|
270
|
+
*/
|
|
271
|
+
readRaw(filePath: string): Promise<FileData>;
|
|
272
|
+
/**
|
|
273
|
+
* Search for pattern matches using regex.
|
|
274
|
+
*/
|
|
275
|
+
grepRaw(pattern: string, path?: string | null, glob?: string | null): Promise<GrepMatch[]>;
|
|
276
|
+
/**
|
|
277
|
+
* Find files matching a glob pattern.
|
|
278
|
+
*/
|
|
279
|
+
globInfo(pattern: string, path?: string): Promise<FileInfo[]>;
|
|
280
|
+
/**
|
|
281
|
+
* Create or overwrite a file.
|
|
282
|
+
*/
|
|
283
|
+
write(filePath: string, content: string): Promise<WriteResult>;
|
|
284
|
+
/**
|
|
285
|
+
* Edit a file by replacing text.
|
|
286
|
+
*/
|
|
287
|
+
edit(filePath: string, oldString: string, newString: string, replaceAll?: boolean): Promise<EditResult>;
|
|
288
|
+
/**
|
|
289
|
+
* Check if a path matches a glob pattern.
|
|
290
|
+
* Supports basic glob patterns: *, **, ?
|
|
291
|
+
* @internal
|
|
292
|
+
*/
|
|
293
|
+
private matchesGlob;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Create a new PersistentBackend.
|
|
297
|
+
*
|
|
298
|
+
* Convenience function that wraps the PersistentBackend constructor.
|
|
299
|
+
*
|
|
300
|
+
* @param options - Configuration options
|
|
301
|
+
* @returns A new PersistentBackend instance
|
|
302
|
+
*
|
|
303
|
+
* @example
|
|
304
|
+
* ```typescript
|
|
305
|
+
* const store = new InMemoryStore();
|
|
306
|
+
* const backend = createPersistentBackend({ store });
|
|
307
|
+
* ```
|
|
308
|
+
*
|
|
309
|
+
* @category Backend
|
|
310
|
+
*/
|
|
311
|
+
export declare function createPersistentBackend(options: PersistentBackendOptions): PersistentBackend;
|
|
312
|
+
//# sourceMappingURL=persistent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistent.d.ts","sourceRoot":"","sources":["../../src/backends/persistent.ts"],"names":[],"mappings":"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"}
|