@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,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filesystem-based memory store implementation.
|
|
3
|
+
*
|
|
4
|
+
* Stores memory documents as markdown files on the local filesystem.
|
|
5
|
+
* Supports YAML frontmatter for metadata.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { FilesystemMemoryStore } from "@lleverage-ai/agent-sdk";
|
|
10
|
+
*
|
|
11
|
+
* const store = new FilesystemMemoryStore();
|
|
12
|
+
*
|
|
13
|
+
* // Read user-level memory
|
|
14
|
+
* const userMemory = await store.read("~/.deepagents/my-agent/agent.md");
|
|
15
|
+
*
|
|
16
|
+
* // Write project memory
|
|
17
|
+
* await store.write("/project/.deepagents/agent.md", {
|
|
18
|
+
* path: "/project/.deepagents/agent.md",
|
|
19
|
+
* metadata: {},
|
|
20
|
+
* content: "# Project Rules",
|
|
21
|
+
* modifiedAt: Date.now(),
|
|
22
|
+
* });
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @packageDocumentation
|
|
26
|
+
*/
|
|
27
|
+
import type { MemoryDocument, MemoryStore } from "./store.js";
|
|
28
|
+
/**
|
|
29
|
+
* Configuration options for FilesystemMemoryStore.
|
|
30
|
+
*
|
|
31
|
+
* @category Memory
|
|
32
|
+
*/
|
|
33
|
+
export interface FilesystemMemoryStoreOptions {
|
|
34
|
+
/**
|
|
35
|
+
* Override the home directory for `~` expansion.
|
|
36
|
+
*
|
|
37
|
+
* Useful for testing or running in sandboxed environments.
|
|
38
|
+
*
|
|
39
|
+
* @defaultValue os.homedir()
|
|
40
|
+
*/
|
|
41
|
+
homeDir?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Create parent directories if they don't exist when writing.
|
|
44
|
+
*
|
|
45
|
+
* @defaultValue true
|
|
46
|
+
*/
|
|
47
|
+
createDirs?: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* File extension to use for memory documents.
|
|
50
|
+
*
|
|
51
|
+
* @defaultValue ".md"
|
|
52
|
+
*/
|
|
53
|
+
extension?: string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Filesystem-based implementation of MemoryStore.
|
|
57
|
+
*
|
|
58
|
+
* Stores memory documents as markdown files on disk.
|
|
59
|
+
* Handles `~` expansion for home directory paths.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```typescript
|
|
63
|
+
* import { FilesystemMemoryStore } from "@lleverage-ai/agent-sdk";
|
|
64
|
+
*
|
|
65
|
+
* // Create with default options
|
|
66
|
+
* const store = new FilesystemMemoryStore();
|
|
67
|
+
*
|
|
68
|
+
* // Create with custom home directory
|
|
69
|
+
* const store = new FilesystemMemoryStore({
|
|
70
|
+
* homeDir: "/custom/home",
|
|
71
|
+
* });
|
|
72
|
+
*
|
|
73
|
+
* // Read a memory document
|
|
74
|
+
* const doc = await store.read("~/.deepagents/my-agent/agent.md");
|
|
75
|
+
*
|
|
76
|
+
* // List all memory documents
|
|
77
|
+
* const paths = await store.list("~/.deepagents/my-agent");
|
|
78
|
+
* ```
|
|
79
|
+
*
|
|
80
|
+
* @category Memory
|
|
81
|
+
*/
|
|
82
|
+
export declare class FilesystemMemoryStore implements MemoryStore {
|
|
83
|
+
private readonly homeDir;
|
|
84
|
+
private readonly createDirs;
|
|
85
|
+
private readonly extension;
|
|
86
|
+
/**
|
|
87
|
+
* Create a new FilesystemMemoryStore.
|
|
88
|
+
*
|
|
89
|
+
* @param options - Configuration options
|
|
90
|
+
*/
|
|
91
|
+
constructor(options?: FilesystemMemoryStoreOptions);
|
|
92
|
+
/**
|
|
93
|
+
* Expand `~` in paths to the home directory.
|
|
94
|
+
*
|
|
95
|
+
* @param filePath - Path that may contain `~`
|
|
96
|
+
* @returns Expanded path
|
|
97
|
+
*
|
|
98
|
+
* @internal
|
|
99
|
+
*/
|
|
100
|
+
private expandPath;
|
|
101
|
+
/**
|
|
102
|
+
* Read a memory document from the filesystem.
|
|
103
|
+
*
|
|
104
|
+
* @param filePath - Path to the memory document
|
|
105
|
+
* @returns The memory document if found, undefined otherwise
|
|
106
|
+
*/
|
|
107
|
+
read(filePath: string): Promise<MemoryDocument | undefined>;
|
|
108
|
+
/**
|
|
109
|
+
* Write a memory document to the filesystem.
|
|
110
|
+
*
|
|
111
|
+
* @param filePath - Path to write to
|
|
112
|
+
* @param document - Document to write
|
|
113
|
+
*/
|
|
114
|
+
write(filePath: string, document: MemoryDocument): Promise<void>;
|
|
115
|
+
/**
|
|
116
|
+
* Delete a memory document from the filesystem.
|
|
117
|
+
*
|
|
118
|
+
* @param filePath - Path to delete
|
|
119
|
+
* @returns True if deleted, false if it didn't exist
|
|
120
|
+
*/
|
|
121
|
+
delete(filePath: string): Promise<boolean>;
|
|
122
|
+
/**
|
|
123
|
+
* List memory documents matching a pattern.
|
|
124
|
+
*
|
|
125
|
+
* @param pattern - Directory or glob pattern to search
|
|
126
|
+
* @returns Array of paths to matching documents
|
|
127
|
+
*/
|
|
128
|
+
list(pattern?: string): Promise<string[]>;
|
|
129
|
+
/**
|
|
130
|
+
* Check if a memory document exists.
|
|
131
|
+
*
|
|
132
|
+
* @param filePath - Path to check
|
|
133
|
+
* @returns True if the file exists
|
|
134
|
+
*/
|
|
135
|
+
exists(filePath: string): Promise<boolean>;
|
|
136
|
+
/**
|
|
137
|
+
* List all memory documents in a directory recursively.
|
|
138
|
+
*
|
|
139
|
+
* @param dirPath - Directory to list
|
|
140
|
+
* @returns Array of file paths
|
|
141
|
+
*
|
|
142
|
+
* @internal
|
|
143
|
+
*/
|
|
144
|
+
private listDirectory;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* In-memory implementation of MemoryStore for testing.
|
|
148
|
+
*
|
|
149
|
+
* Documents are stored in a Map and not persisted.
|
|
150
|
+
*
|
|
151
|
+
* @example
|
|
152
|
+
* ```typescript
|
|
153
|
+
* const store = new InMemoryMemoryStore();
|
|
154
|
+
*
|
|
155
|
+
* await store.write("/test/doc.md", {
|
|
156
|
+
* path: "/test/doc.md",
|
|
157
|
+
* metadata: {},
|
|
158
|
+
* content: "# Test",
|
|
159
|
+
* modifiedAt: Date.now(),
|
|
160
|
+
* });
|
|
161
|
+
*
|
|
162
|
+
* const doc = await store.read("/test/doc.md");
|
|
163
|
+
* ```
|
|
164
|
+
*
|
|
165
|
+
* @category Memory
|
|
166
|
+
*/
|
|
167
|
+
export declare class InMemoryMemoryStore implements MemoryStore {
|
|
168
|
+
private documents;
|
|
169
|
+
/**
|
|
170
|
+
* Read a document from memory.
|
|
171
|
+
*/
|
|
172
|
+
read(path: string): Promise<MemoryDocument | undefined>;
|
|
173
|
+
/**
|
|
174
|
+
* Write a document to memory.
|
|
175
|
+
*/
|
|
176
|
+
write(path: string, document: MemoryDocument): Promise<void>;
|
|
177
|
+
/**
|
|
178
|
+
* Delete a document from memory.
|
|
179
|
+
*/
|
|
180
|
+
delete(path: string): Promise<boolean>;
|
|
181
|
+
/**
|
|
182
|
+
* List all documents matching a prefix.
|
|
183
|
+
*/
|
|
184
|
+
list(pattern?: string): Promise<string[]>;
|
|
185
|
+
/**
|
|
186
|
+
* Check if a document exists.
|
|
187
|
+
*/
|
|
188
|
+
exists(path: string): Promise<boolean>;
|
|
189
|
+
/**
|
|
190
|
+
* Clear all documents.
|
|
191
|
+
*
|
|
192
|
+
* Useful for test cleanup.
|
|
193
|
+
*/
|
|
194
|
+
clear(): void;
|
|
195
|
+
/**
|
|
196
|
+
* Get the number of documents.
|
|
197
|
+
*/
|
|
198
|
+
get size(): number;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Create a new FilesystemMemoryStore.
|
|
202
|
+
*
|
|
203
|
+
* @param options - Configuration options
|
|
204
|
+
* @returns A new FilesystemMemoryStore instance
|
|
205
|
+
*
|
|
206
|
+
* @category Memory
|
|
207
|
+
*/
|
|
208
|
+
export declare function createFilesystemMemoryStore(options?: FilesystemMemoryStoreOptions): FilesystemMemoryStore;
|
|
209
|
+
/**
|
|
210
|
+
* Create a new InMemoryMemoryStore.
|
|
211
|
+
*
|
|
212
|
+
* @returns A new InMemoryMemoryStore instance
|
|
213
|
+
*
|
|
214
|
+
* @category Memory
|
|
215
|
+
*/
|
|
216
|
+
export declare function createInMemoryMemoryStore(): InMemoryMemoryStore;
|
|
217
|
+
//# sourceMappingURL=filesystem-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem-store.d.ts","sourceRoot":"","sources":["../../src/memory/filesystem-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAO9D;;;;GAIG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,qBAAsB,YAAW,WAAW;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC;;;;OAIG;gBACS,OAAO,GAAE,4BAAiC;IAMtD;;;;;;;OAOG;IACH,OAAO,CAAC,UAAU;IAOlB;;;;;OAKG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAwBjE;;;;;OAKG;IACG,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBtE;;;;;OAKG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAchD;;;;;OAKG;IACG,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAwB/C;;;;;OAKG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWhD;;;;;;;OAOG;YACW,aAAa;CA2B5B;AAMD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,mBAAoB,YAAW,WAAW;IACrD,OAAO,CAAC,SAAS,CAAqC;IAEtD;;OAEG;IACG,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAW7D;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IASlE;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5C;;OAEG;IACG,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAU/C;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5C;;;;OAIG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF;AAMD;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,CAAC,EAAE,4BAA4B,GACrC,qBAAqB,CAEvB;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,IAAI,mBAAmB,CAE/D"}
|
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filesystem-based memory store implementation.
|
|
3
|
+
*
|
|
4
|
+
* Stores memory documents as markdown files on the local filesystem.
|
|
5
|
+
* Supports YAML frontmatter for metadata.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { FilesystemMemoryStore } from "@lleverage-ai/agent-sdk";
|
|
10
|
+
*
|
|
11
|
+
* const store = new FilesystemMemoryStore();
|
|
12
|
+
*
|
|
13
|
+
* // Read user-level memory
|
|
14
|
+
* const userMemory = await store.read("~/.deepagents/my-agent/agent.md");
|
|
15
|
+
*
|
|
16
|
+
* // Write project memory
|
|
17
|
+
* await store.write("/project/.deepagents/agent.md", {
|
|
18
|
+
* path: "/project/.deepagents/agent.md",
|
|
19
|
+
* metadata: {},
|
|
20
|
+
* content: "# Project Rules",
|
|
21
|
+
* modifiedAt: Date.now(),
|
|
22
|
+
* });
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @packageDocumentation
|
|
26
|
+
*/
|
|
27
|
+
import * as fs from "node:fs/promises";
|
|
28
|
+
import * as os from "node:os";
|
|
29
|
+
import * as path from "node:path";
|
|
30
|
+
import { parseMarkdownWithFrontmatter, serializeMarkdownWithFrontmatter } from "./store.js";
|
|
31
|
+
// =============================================================================
|
|
32
|
+
// Filesystem Memory Store Implementation
|
|
33
|
+
// =============================================================================
|
|
34
|
+
/**
|
|
35
|
+
* Filesystem-based implementation of MemoryStore.
|
|
36
|
+
*
|
|
37
|
+
* Stores memory documents as markdown files on disk.
|
|
38
|
+
* Handles `~` expansion for home directory paths.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* import { FilesystemMemoryStore } from "@lleverage-ai/agent-sdk";
|
|
43
|
+
*
|
|
44
|
+
* // Create with default options
|
|
45
|
+
* const store = new FilesystemMemoryStore();
|
|
46
|
+
*
|
|
47
|
+
* // Create with custom home directory
|
|
48
|
+
* const store = new FilesystemMemoryStore({
|
|
49
|
+
* homeDir: "/custom/home",
|
|
50
|
+
* });
|
|
51
|
+
*
|
|
52
|
+
* // Read a memory document
|
|
53
|
+
* const doc = await store.read("~/.deepagents/my-agent/agent.md");
|
|
54
|
+
*
|
|
55
|
+
* // List all memory documents
|
|
56
|
+
* const paths = await store.list("~/.deepagents/my-agent");
|
|
57
|
+
* ```
|
|
58
|
+
*
|
|
59
|
+
* @category Memory
|
|
60
|
+
*/
|
|
61
|
+
export class FilesystemMemoryStore {
|
|
62
|
+
homeDir;
|
|
63
|
+
createDirs;
|
|
64
|
+
extension;
|
|
65
|
+
/**
|
|
66
|
+
* Create a new FilesystemMemoryStore.
|
|
67
|
+
*
|
|
68
|
+
* @param options - Configuration options
|
|
69
|
+
*/
|
|
70
|
+
constructor(options = {}) {
|
|
71
|
+
this.homeDir = options.homeDir ?? os.homedir();
|
|
72
|
+
this.createDirs = options.createDirs ?? true;
|
|
73
|
+
this.extension = options.extension ?? ".md";
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Expand `~` in paths to the home directory.
|
|
77
|
+
*
|
|
78
|
+
* @param filePath - Path that may contain `~`
|
|
79
|
+
* @returns Expanded path
|
|
80
|
+
*
|
|
81
|
+
* @internal
|
|
82
|
+
*/
|
|
83
|
+
expandPath(filePath) {
|
|
84
|
+
if (filePath.startsWith("~")) {
|
|
85
|
+
return path.join(this.homeDir, filePath.slice(1));
|
|
86
|
+
}
|
|
87
|
+
return filePath;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Read a memory document from the filesystem.
|
|
91
|
+
*
|
|
92
|
+
* @param filePath - Path to the memory document
|
|
93
|
+
* @returns The memory document if found, undefined otherwise
|
|
94
|
+
*/
|
|
95
|
+
async read(filePath) {
|
|
96
|
+
const expandedPath = this.expandPath(filePath);
|
|
97
|
+
try {
|
|
98
|
+
const content = await fs.readFile(expandedPath, "utf-8");
|
|
99
|
+
const stats = await fs.stat(expandedPath);
|
|
100
|
+
const { metadata, content: markdownContent } = parseMarkdownWithFrontmatter(content);
|
|
101
|
+
return {
|
|
102
|
+
path: filePath, // Keep original path for consistency
|
|
103
|
+
metadata,
|
|
104
|
+
content: markdownContent,
|
|
105
|
+
modifiedAt: stats.mtimeMs,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
// File doesn't exist or can't be read
|
|
110
|
+
if (error.code === "ENOENT") {
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
throw error;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Write a memory document to the filesystem.
|
|
118
|
+
*
|
|
119
|
+
* @param filePath - Path to write to
|
|
120
|
+
* @param document - Document to write
|
|
121
|
+
*/
|
|
122
|
+
async write(filePath, document) {
|
|
123
|
+
const expandedPath = this.expandPath(filePath);
|
|
124
|
+
// Create parent directories if needed
|
|
125
|
+
if (this.createDirs) {
|
|
126
|
+
const dir = path.dirname(expandedPath);
|
|
127
|
+
await fs.mkdir(dir, { recursive: true });
|
|
128
|
+
}
|
|
129
|
+
// Serialize to markdown with frontmatter
|
|
130
|
+
const content = serializeMarkdownWithFrontmatter({
|
|
131
|
+
metadata: document.metadata,
|
|
132
|
+
content: document.content,
|
|
133
|
+
});
|
|
134
|
+
await fs.writeFile(expandedPath, content, "utf-8");
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Delete a memory document from the filesystem.
|
|
138
|
+
*
|
|
139
|
+
* @param filePath - Path to delete
|
|
140
|
+
* @returns True if deleted, false if it didn't exist
|
|
141
|
+
*/
|
|
142
|
+
async delete(filePath) {
|
|
143
|
+
const expandedPath = this.expandPath(filePath);
|
|
144
|
+
try {
|
|
145
|
+
await fs.unlink(expandedPath);
|
|
146
|
+
return true;
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
if (error.code === "ENOENT") {
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
throw error;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* List memory documents matching a pattern.
|
|
157
|
+
*
|
|
158
|
+
* @param pattern - Directory or glob pattern to search
|
|
159
|
+
* @returns Array of paths to matching documents
|
|
160
|
+
*/
|
|
161
|
+
async list(pattern) {
|
|
162
|
+
// Default to listing all .md files in the current directory
|
|
163
|
+
const searchPath = pattern ? this.expandPath(pattern) : ".";
|
|
164
|
+
try {
|
|
165
|
+
const stats = await fs.stat(searchPath);
|
|
166
|
+
if (stats.isDirectory()) {
|
|
167
|
+
// List all .md files in the directory
|
|
168
|
+
return this.listDirectory(searchPath);
|
|
169
|
+
}
|
|
170
|
+
else if (stats.isFile() && searchPath.endsWith(this.extension)) {
|
|
171
|
+
// Single file
|
|
172
|
+
return [pattern ?? searchPath];
|
|
173
|
+
}
|
|
174
|
+
return [];
|
|
175
|
+
}
|
|
176
|
+
catch (error) {
|
|
177
|
+
if (error.code === "ENOENT") {
|
|
178
|
+
return [];
|
|
179
|
+
}
|
|
180
|
+
throw error;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Check if a memory document exists.
|
|
185
|
+
*
|
|
186
|
+
* @param filePath - Path to check
|
|
187
|
+
* @returns True if the file exists
|
|
188
|
+
*/
|
|
189
|
+
async exists(filePath) {
|
|
190
|
+
const expandedPath = this.expandPath(filePath);
|
|
191
|
+
try {
|
|
192
|
+
await fs.access(expandedPath);
|
|
193
|
+
return true;
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
return false;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* List all memory documents in a directory recursively.
|
|
201
|
+
*
|
|
202
|
+
* @param dirPath - Directory to list
|
|
203
|
+
* @returns Array of file paths
|
|
204
|
+
*
|
|
205
|
+
* @internal
|
|
206
|
+
*/
|
|
207
|
+
async listDirectory(dirPath) {
|
|
208
|
+
const results = [];
|
|
209
|
+
async function walk(dir, extension) {
|
|
210
|
+
try {
|
|
211
|
+
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
212
|
+
for (const entry of entries) {
|
|
213
|
+
const fullPath = path.join(dir, entry.name);
|
|
214
|
+
if (entry.isDirectory()) {
|
|
215
|
+
await walk(fullPath, extension);
|
|
216
|
+
}
|
|
217
|
+
else if (entry.isFile() && entry.name.endsWith(extension)) {
|
|
218
|
+
results.push(fullPath);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
// Ignore permission errors for directories
|
|
224
|
+
if (error.code !== "EACCES") {
|
|
225
|
+
throw error;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
await walk(dirPath, this.extension);
|
|
230
|
+
return results;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
// =============================================================================
|
|
234
|
+
// In-Memory Memory Store (for testing)
|
|
235
|
+
// =============================================================================
|
|
236
|
+
/**
|
|
237
|
+
* In-memory implementation of MemoryStore for testing.
|
|
238
|
+
*
|
|
239
|
+
* Documents are stored in a Map and not persisted.
|
|
240
|
+
*
|
|
241
|
+
* @example
|
|
242
|
+
* ```typescript
|
|
243
|
+
* const store = new InMemoryMemoryStore();
|
|
244
|
+
*
|
|
245
|
+
* await store.write("/test/doc.md", {
|
|
246
|
+
* path: "/test/doc.md",
|
|
247
|
+
* metadata: {},
|
|
248
|
+
* content: "# Test",
|
|
249
|
+
* modifiedAt: Date.now(),
|
|
250
|
+
* });
|
|
251
|
+
*
|
|
252
|
+
* const doc = await store.read("/test/doc.md");
|
|
253
|
+
* ```
|
|
254
|
+
*
|
|
255
|
+
* @category Memory
|
|
256
|
+
*/
|
|
257
|
+
export class InMemoryMemoryStore {
|
|
258
|
+
documents = new Map();
|
|
259
|
+
/**
|
|
260
|
+
* Read a document from memory.
|
|
261
|
+
*/
|
|
262
|
+
async read(path) {
|
|
263
|
+
const doc = this.documents.get(path);
|
|
264
|
+
if (!doc)
|
|
265
|
+
return undefined;
|
|
266
|
+
// Return a copy to prevent mutation
|
|
267
|
+
return {
|
|
268
|
+
...doc,
|
|
269
|
+
metadata: { ...doc.metadata },
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Write a document to memory.
|
|
274
|
+
*/
|
|
275
|
+
async write(path, document) {
|
|
276
|
+
// Store a copy to prevent mutation
|
|
277
|
+
this.documents.set(path, {
|
|
278
|
+
...document,
|
|
279
|
+
metadata: { ...document.metadata },
|
|
280
|
+
modifiedAt: Date.now(),
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Delete a document from memory.
|
|
285
|
+
*/
|
|
286
|
+
async delete(path) {
|
|
287
|
+
return this.documents.delete(path);
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* List all documents matching a prefix.
|
|
291
|
+
*/
|
|
292
|
+
async list(pattern) {
|
|
293
|
+
if (!pattern) {
|
|
294
|
+
return Array.from(this.documents.keys());
|
|
295
|
+
}
|
|
296
|
+
return Array.from(this.documents.keys()).filter((p) => p.startsWith(pattern) && p.endsWith(".md"));
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Check if a document exists.
|
|
300
|
+
*/
|
|
301
|
+
async exists(path) {
|
|
302
|
+
return this.documents.has(path);
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Clear all documents.
|
|
306
|
+
*
|
|
307
|
+
* Useful for test cleanup.
|
|
308
|
+
*/
|
|
309
|
+
clear() {
|
|
310
|
+
this.documents.clear();
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Get the number of documents.
|
|
314
|
+
*/
|
|
315
|
+
get size() {
|
|
316
|
+
return this.documents.size;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
// =============================================================================
|
|
320
|
+
// Factory Functions
|
|
321
|
+
// =============================================================================
|
|
322
|
+
/**
|
|
323
|
+
* Create a new FilesystemMemoryStore.
|
|
324
|
+
*
|
|
325
|
+
* @param options - Configuration options
|
|
326
|
+
* @returns A new FilesystemMemoryStore instance
|
|
327
|
+
*
|
|
328
|
+
* @category Memory
|
|
329
|
+
*/
|
|
330
|
+
export function createFilesystemMemoryStore(options) {
|
|
331
|
+
return new FilesystemMemoryStore(options);
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Create a new InMemoryMemoryStore.
|
|
335
|
+
*
|
|
336
|
+
* @returns A new InMemoryMemoryStore instance
|
|
337
|
+
*
|
|
338
|
+
* @category Memory
|
|
339
|
+
*/
|
|
340
|
+
export function createInMemoryMemoryStore() {
|
|
341
|
+
return new InMemoryMemoryStore();
|
|
342
|
+
}
|
|
343
|
+
//# sourceMappingURL=filesystem-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem-store.js","sourceRoot":"","sources":["../../src/memory/filesystem-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory system for persistent agent memory.
|
|
3
|
+
*
|
|
4
|
+
* This module provides a two-tier memory architecture:
|
|
5
|
+
* - **User-Level Memory**: Personal preferences stored at `~/.deepagents/{agentId}/`
|
|
6
|
+
* - **Project-Level Memory**: Project conventions stored at `[git-root]/.deepagents/`
|
|
7
|
+
*
|
|
8
|
+
* Memory documents are markdown files with optional YAML frontmatter for metadata.
|
|
9
|
+
*
|
|
10
|
+
* ## Quick Start
|
|
11
|
+
*
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import {
|
|
14
|
+
* loadAllMemory,
|
|
15
|
+
* buildMemorySection,
|
|
16
|
+
* matchesPathPattern,
|
|
17
|
+
* } from "@lleverage-ai/agent-sdk";
|
|
18
|
+
*
|
|
19
|
+
* // Load all agent memory
|
|
20
|
+
* const memory = await loadAllMemory({
|
|
21
|
+
* agentId: "my-agent",
|
|
22
|
+
* workingDirectory: process.cwd(),
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* // Use in system prompt
|
|
26
|
+
* const systemPrompt = `You are a helpful assistant.\n\n${memory.memorySection}`;
|
|
27
|
+
*
|
|
28
|
+
* // Filter by current file
|
|
29
|
+
* if (matchesPathPattern("src/api/users.ts", "src/api/**\/*.ts")) {
|
|
30
|
+
* // Apply API-specific rules
|
|
31
|
+
* }
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* @packageDocumentation
|
|
35
|
+
*/
|
|
36
|
+
export type { FilesystemMemoryStoreOptions } from "./filesystem-store.js";
|
|
37
|
+
export { createFilesystemMemoryStore, createInMemoryMemoryStore, FilesystemMemoryStore, InMemoryMemoryStore, } from "./filesystem-store.js";
|
|
38
|
+
export type { AdditionalMemoryFile, BuildMemorySectionOptions, LoadAdditionalMemoryOptions, LoadAgentMemoryOptions, LoadAllMemoryOptions, LoadAllMemoryResult, MemoryAuditEvent, } from "./loader.js";
|
|
39
|
+
export { buildMemorySection, findGitRoot, getProjectMemoryPath, getUserAgentDir, getUserMemoryPath, loadAdditionalMemoryFiles, loadAgentMemory, loadAllMemory, } from "./loader.js";
|
|
40
|
+
export type { FileMemoryPermissionStoreOptions, MemoryApproval, MemoryPermissionStore, } from "./permissions.js";
|
|
41
|
+
export { computeContentHash, computeFileHash, createInMemoryPermissionStore, createMemoryPermissionStore, FileMemoryPermissionStore, InMemoryPermissionStore, } from "./permissions.js";
|
|
42
|
+
export type { BuildPathMemoryContextOptions, PathMemoryContext, } from "./rules.js";
|
|
43
|
+
export { buildPathMemoryContext, filterAdditionalFilesByPath, filterAutoLoadAdditionalFiles, filterAutoLoadMemories, filterMemoriesByAllTags, filterMemoriesByPath, filterMemoriesByTags, matchesAnyPathPattern, matchesPathPattern, } from "./rules.js";
|
|
44
|
+
export type { MemoryDocument, MemoryMetadata, MemoryStore, ParsedMarkdown, } from "./store.js";
|
|
45
|
+
export { parseMarkdownWithFrontmatter, parseSimpleYaml, serializeMarkdownWithFrontmatter, } from "./store.js";
|
|
46
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,YAAY,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAE1E,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,EACzB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,oBAAoB,EACpB,yBAAyB,EACzB,2BAA2B,EAC3B,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,yBAAyB,EACzB,eAAe,EACf,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,gCAAgC,EAChC,cAAc,EACd,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,6BAA6B,EAC7B,2BAA2B,EAC3B,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,6BAA6B,EAC7B,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,6BAA6B,EAC7B,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,cAAc,EACd,cAAc,EACd,WAAW,EACX,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,4BAA4B,EAC5B,eAAe,EACf,gCAAgC,GACjC,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory system for persistent agent memory.
|
|
3
|
+
*
|
|
4
|
+
* This module provides a two-tier memory architecture:
|
|
5
|
+
* - **User-Level Memory**: Personal preferences stored at `~/.deepagents/{agentId}/`
|
|
6
|
+
* - **Project-Level Memory**: Project conventions stored at `[git-root]/.deepagents/`
|
|
7
|
+
*
|
|
8
|
+
* Memory documents are markdown files with optional YAML frontmatter for metadata.
|
|
9
|
+
*
|
|
10
|
+
* ## Quick Start
|
|
11
|
+
*
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import {
|
|
14
|
+
* loadAllMemory,
|
|
15
|
+
* buildMemorySection,
|
|
16
|
+
* matchesPathPattern,
|
|
17
|
+
* } from "@lleverage-ai/agent-sdk";
|
|
18
|
+
*
|
|
19
|
+
* // Load all agent memory
|
|
20
|
+
* const memory = await loadAllMemory({
|
|
21
|
+
* agentId: "my-agent",
|
|
22
|
+
* workingDirectory: process.cwd(),
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* // Use in system prompt
|
|
26
|
+
* const systemPrompt = `You are a helpful assistant.\n\n${memory.memorySection}`;
|
|
27
|
+
*
|
|
28
|
+
* // Filter by current file
|
|
29
|
+
* if (matchesPathPattern("src/api/users.ts", "src/api/**\/*.ts")) {
|
|
30
|
+
* // Apply API-specific rules
|
|
31
|
+
* }
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* @packageDocumentation
|
|
35
|
+
*/
|
|
36
|
+
// Filesystem store implementation
|
|
37
|
+
export { createFilesystemMemoryStore, createInMemoryMemoryStore, FilesystemMemoryStore, InMemoryMemoryStore, } from "./filesystem-store.js";
|
|
38
|
+
// Memory loading functions
|
|
39
|
+
export { buildMemorySection, findGitRoot, getProjectMemoryPath, getUserAgentDir, getUserMemoryPath, loadAdditionalMemoryFiles, loadAgentMemory, loadAllMemory, } from "./loader.js";
|
|
40
|
+
// Permission store for approval persistence
|
|
41
|
+
export { computeContentHash, computeFileHash, createInMemoryPermissionStore, createMemoryPermissionStore, FileMemoryPermissionStore, InMemoryPermissionStore, } from "./permissions.js";
|
|
42
|
+
// Path-based rule matching
|
|
43
|
+
export { buildPathMemoryContext, filterAdditionalFilesByPath, filterAutoLoadAdditionalFiles, filterAutoLoadMemories, filterMemoriesByAllTags, filterMemoriesByPath, filterMemoriesByTags, matchesAnyPathPattern, matchesPathPattern, } from "./rules.js";
|
|
44
|
+
// Store interface and types
|
|
45
|
+
export { parseMarkdownWithFrontmatter, parseSimpleYaml, serializeMarkdownWithFrontmatter, } from "./store.js";
|
|
46
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAGH,kCAAkC;AAClC,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,EACzB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAU/B,2BAA2B;AAC3B,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,yBAAyB,EACzB,eAAe,EACf,aAAa,GACd,MAAM,aAAa,CAAC;AAMrB,4CAA4C;AAC5C,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,6BAA6B,EAC7B,2BAA2B,EAC3B,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAK1B,2BAA2B;AAC3B,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,6BAA6B,EAC7B,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAOpB,4BAA4B;AAC5B,OAAO,EACL,4BAA4B,EAC5B,eAAe,EACf,gCAAgC,GACjC,MAAM,YAAY,CAAC"}
|