@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,282 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory permission management with approval persistence and change detection.
|
|
3
|
+
*
|
|
4
|
+
* Provides security features for the agent memory system:
|
|
5
|
+
* - Approval persistence: Remember which paths the user has approved for loading
|
|
6
|
+
* - Hash-based change detection: Detect when memory files have been modified
|
|
7
|
+
* - Automatic revocation: Require re-approval when memory content changes
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* import { MemoryPermissionStore, createMemoryPermissionStore } from "@lleverage-ai/agent-sdk";
|
|
12
|
+
*
|
|
13
|
+
* const permStore = createMemoryPermissionStore("/path/to/.memory-permissions.json");
|
|
14
|
+
*
|
|
15
|
+
* // Check if a path is approved
|
|
16
|
+
* const approved = await permStore.isApproved("/project/.deepagents/agent.md", contentHash);
|
|
17
|
+
*
|
|
18
|
+
* // Grant approval
|
|
19
|
+
* await permStore.grantApproval("/project/.deepagents/agent.md", contentHash);
|
|
20
|
+
*
|
|
21
|
+
* // Revoke approval
|
|
22
|
+
* await permStore.revokeApproval("/project/.deepagents/agent.md");
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @packageDocumentation
|
|
26
|
+
*/
|
|
27
|
+
/**
|
|
28
|
+
* Approval record for a memory file.
|
|
29
|
+
*
|
|
30
|
+
* Tracks when a file was approved and its content hash at approval time.
|
|
31
|
+
*
|
|
32
|
+
* @category Memory
|
|
33
|
+
*/
|
|
34
|
+
export interface MemoryApproval {
|
|
35
|
+
/**
|
|
36
|
+
* Full path to the approved memory file.
|
|
37
|
+
*/
|
|
38
|
+
path: string;
|
|
39
|
+
/**
|
|
40
|
+
* SHA-256 hash of the file content at approval time.
|
|
41
|
+
*/
|
|
42
|
+
contentHash: string;
|
|
43
|
+
/**
|
|
44
|
+
* Timestamp when approval was granted (Unix ms).
|
|
45
|
+
*/
|
|
46
|
+
approvedAt: number;
|
|
47
|
+
/**
|
|
48
|
+
* Optional user identifier who granted approval.
|
|
49
|
+
*/
|
|
50
|
+
approvedBy?: string;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Store interface for memory permissions.
|
|
54
|
+
*
|
|
55
|
+
* Implement this to provide custom storage backends.
|
|
56
|
+
*
|
|
57
|
+
* @category Memory
|
|
58
|
+
*/
|
|
59
|
+
export interface MemoryPermissionStore {
|
|
60
|
+
/**
|
|
61
|
+
* Check if a path is approved with a specific content hash.
|
|
62
|
+
*
|
|
63
|
+
* Returns true only if:
|
|
64
|
+
* 1. The path has been approved
|
|
65
|
+
* 2. The content hash matches the approved hash
|
|
66
|
+
*
|
|
67
|
+
* @param path - Path to check
|
|
68
|
+
* @param contentHash - Current content hash
|
|
69
|
+
* @returns True if approved and hash matches
|
|
70
|
+
*/
|
|
71
|
+
isApproved(path: string, contentHash: string): Promise<boolean>;
|
|
72
|
+
/**
|
|
73
|
+
* Grant approval for a path with a specific content hash.
|
|
74
|
+
*
|
|
75
|
+
* If the path was previously approved with a different hash,
|
|
76
|
+
* this updates the approval to the new hash.
|
|
77
|
+
*
|
|
78
|
+
* @param path - Path to approve
|
|
79
|
+
* @param contentHash - Content hash at approval time
|
|
80
|
+
* @param approvedBy - Optional user identifier
|
|
81
|
+
*/
|
|
82
|
+
grantApproval(path: string, contentHash: string, approvedBy?: string): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* Revoke approval for a path.
|
|
85
|
+
*
|
|
86
|
+
* @param path - Path to revoke
|
|
87
|
+
* @returns True if approval was revoked, false if it wasn't approved
|
|
88
|
+
*/
|
|
89
|
+
revokeApproval(path: string): Promise<boolean>;
|
|
90
|
+
/**
|
|
91
|
+
* List all approved paths.
|
|
92
|
+
*
|
|
93
|
+
* @returns Array of approval records
|
|
94
|
+
*/
|
|
95
|
+
listApprovals(): Promise<MemoryApproval[]>;
|
|
96
|
+
/**
|
|
97
|
+
* Clear all approvals.
|
|
98
|
+
*
|
|
99
|
+
* Useful for resetting permissions or testing.
|
|
100
|
+
*/
|
|
101
|
+
clearAll(): Promise<void>;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Compute SHA-256 hash of a string.
|
|
105
|
+
*
|
|
106
|
+
* @param content - Content to hash
|
|
107
|
+
* @returns Hex-encoded hash
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* ```typescript
|
|
111
|
+
* const hash = computeContentHash("# My Memory\n\nContent here");
|
|
112
|
+
* // Returns: "a1b2c3d4..."
|
|
113
|
+
* ```
|
|
114
|
+
*
|
|
115
|
+
* @category Memory
|
|
116
|
+
*/
|
|
117
|
+
export declare function computeContentHash(content: string): string;
|
|
118
|
+
/**
|
|
119
|
+
* Compute content hash from a file path.
|
|
120
|
+
*
|
|
121
|
+
* @param filePath - Path to the file
|
|
122
|
+
* @returns Hex-encoded hash, or undefined if file doesn't exist
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```typescript
|
|
126
|
+
* const hash = await computeFileHash("/path/to/memory.md");
|
|
127
|
+
* ```
|
|
128
|
+
*
|
|
129
|
+
* @category Memory
|
|
130
|
+
*/
|
|
131
|
+
export declare function computeFileHash(filePath: string): Promise<string | undefined>;
|
|
132
|
+
/**
|
|
133
|
+
* Options for FileMemoryPermissionStore.
|
|
134
|
+
*
|
|
135
|
+
* @category Memory
|
|
136
|
+
*/
|
|
137
|
+
export interface FileMemoryPermissionStoreOptions {
|
|
138
|
+
/**
|
|
139
|
+
* Path to the permissions file.
|
|
140
|
+
*
|
|
141
|
+
* @defaultValue ~/.deepagents/.memory-permissions.json
|
|
142
|
+
*/
|
|
143
|
+
permissionsFilePath?: string;
|
|
144
|
+
/**
|
|
145
|
+
* Create parent directories if they don't exist.
|
|
146
|
+
*
|
|
147
|
+
* @defaultValue true
|
|
148
|
+
*/
|
|
149
|
+
createDirs?: boolean;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* File-based implementation of MemoryPermissionStore.
|
|
153
|
+
*
|
|
154
|
+
* Stores approvals in a JSON file on disk.
|
|
155
|
+
*
|
|
156
|
+
* @example
|
|
157
|
+
* ```typescript
|
|
158
|
+
* const store = new FileMemoryPermissionStore({
|
|
159
|
+
* permissionsFilePath: "/home/user/.deepagents/.memory-permissions.json",
|
|
160
|
+
* });
|
|
161
|
+
*
|
|
162
|
+
* // Grant approval
|
|
163
|
+
* await store.grantApproval("/project/.deepagents/agent.md", contentHash, "user");
|
|
164
|
+
*
|
|
165
|
+
* // Check if approved
|
|
166
|
+
* const approved = await store.isApproved("/project/.deepagents/agent.md", contentHash);
|
|
167
|
+
* ```
|
|
168
|
+
*
|
|
169
|
+
* @category Memory
|
|
170
|
+
*/
|
|
171
|
+
export declare class FileMemoryPermissionStore implements MemoryPermissionStore {
|
|
172
|
+
private readonly permissionsFilePath;
|
|
173
|
+
private readonly createDirs;
|
|
174
|
+
private approvals;
|
|
175
|
+
private loaded;
|
|
176
|
+
/**
|
|
177
|
+
* Create a new FileMemoryPermissionStore.
|
|
178
|
+
*
|
|
179
|
+
* @param options - Configuration options
|
|
180
|
+
*/
|
|
181
|
+
constructor(options?: FileMemoryPermissionStoreOptions);
|
|
182
|
+
/**
|
|
183
|
+
* Load approvals from disk if not already loaded.
|
|
184
|
+
*
|
|
185
|
+
* @internal
|
|
186
|
+
*/
|
|
187
|
+
private ensureLoaded;
|
|
188
|
+
/**
|
|
189
|
+
* Save approvals to disk.
|
|
190
|
+
*
|
|
191
|
+
* @internal
|
|
192
|
+
*/
|
|
193
|
+
private save;
|
|
194
|
+
/**
|
|
195
|
+
* Check if a path is approved with a specific content hash.
|
|
196
|
+
*/
|
|
197
|
+
isApproved(path: string, contentHash: string): Promise<boolean>;
|
|
198
|
+
/**
|
|
199
|
+
* Grant approval for a path with a specific content hash.
|
|
200
|
+
*/
|
|
201
|
+
grantApproval(path: string, contentHash: string, approvedBy?: string): Promise<void>;
|
|
202
|
+
/**
|
|
203
|
+
* Revoke approval for a path.
|
|
204
|
+
*/
|
|
205
|
+
revokeApproval(path: string): Promise<boolean>;
|
|
206
|
+
/**
|
|
207
|
+
* List all approved paths.
|
|
208
|
+
*/
|
|
209
|
+
listApprovals(): Promise<MemoryApproval[]>;
|
|
210
|
+
/**
|
|
211
|
+
* Clear all approvals.
|
|
212
|
+
*/
|
|
213
|
+
clearAll(): Promise<void>;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* In-memory implementation of MemoryPermissionStore for testing.
|
|
217
|
+
*
|
|
218
|
+
* Approvals are stored in memory and not persisted.
|
|
219
|
+
*
|
|
220
|
+
* @example
|
|
221
|
+
* ```typescript
|
|
222
|
+
* const store = new InMemoryPermissionStore();
|
|
223
|
+
*
|
|
224
|
+
* await store.grantApproval("/test.md", hash);
|
|
225
|
+
* const approved = await store.isApproved("/test.md", hash);
|
|
226
|
+
* ```
|
|
227
|
+
*
|
|
228
|
+
* @category Memory
|
|
229
|
+
*/
|
|
230
|
+
export declare class InMemoryPermissionStore implements MemoryPermissionStore {
|
|
231
|
+
private approvals;
|
|
232
|
+
/**
|
|
233
|
+
* Check if a path is approved with a specific content hash.
|
|
234
|
+
*/
|
|
235
|
+
isApproved(path: string, contentHash: string): Promise<boolean>;
|
|
236
|
+
/**
|
|
237
|
+
* Grant approval for a path with a specific content hash.
|
|
238
|
+
*/
|
|
239
|
+
grantApproval(path: string, contentHash: string, approvedBy?: string): Promise<void>;
|
|
240
|
+
/**
|
|
241
|
+
* Revoke approval for a path.
|
|
242
|
+
*/
|
|
243
|
+
revokeApproval(path: string): Promise<boolean>;
|
|
244
|
+
/**
|
|
245
|
+
* List all approved paths.
|
|
246
|
+
*/
|
|
247
|
+
listApprovals(): Promise<MemoryApproval[]>;
|
|
248
|
+
/**
|
|
249
|
+
* Clear all approvals.
|
|
250
|
+
*/
|
|
251
|
+
clearAll(): Promise<void>;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Create a new FileMemoryPermissionStore.
|
|
255
|
+
*
|
|
256
|
+
* @param options - Configuration options
|
|
257
|
+
* @returns A new FileMemoryPermissionStore instance
|
|
258
|
+
*
|
|
259
|
+
* @example
|
|
260
|
+
* ```typescript
|
|
261
|
+
* const store = createMemoryPermissionStore({
|
|
262
|
+
* permissionsFilePath: "/path/to/.memory-permissions.json",
|
|
263
|
+
* });
|
|
264
|
+
* ```
|
|
265
|
+
*
|
|
266
|
+
* @category Memory
|
|
267
|
+
*/
|
|
268
|
+
export declare function createMemoryPermissionStore(options?: FileMemoryPermissionStoreOptions): FileMemoryPermissionStore;
|
|
269
|
+
/**
|
|
270
|
+
* Create a new InMemoryPermissionStore.
|
|
271
|
+
*
|
|
272
|
+
* @returns A new InMemoryPermissionStore instance
|
|
273
|
+
*
|
|
274
|
+
* @example
|
|
275
|
+
* ```typescript
|
|
276
|
+
* const store = createInMemoryPermissionStore();
|
|
277
|
+
* ```
|
|
278
|
+
*
|
|
279
|
+
* @category Memory
|
|
280
|
+
*/
|
|
281
|
+
export declare function createInMemoryPermissionStore(): InMemoryPermissionStore;
|
|
282
|
+
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/memory/permissions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory permission management with approval persistence and change detection.
|
|
3
|
+
*
|
|
4
|
+
* Provides security features for the agent memory system:
|
|
5
|
+
* - Approval persistence: Remember which paths the user has approved for loading
|
|
6
|
+
* - Hash-based change detection: Detect when memory files have been modified
|
|
7
|
+
* - Automatic revocation: Require re-approval when memory content changes
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* import { MemoryPermissionStore, createMemoryPermissionStore } from "@lleverage-ai/agent-sdk";
|
|
12
|
+
*
|
|
13
|
+
* const permStore = createMemoryPermissionStore("/path/to/.memory-permissions.json");
|
|
14
|
+
*
|
|
15
|
+
* // Check if a path is approved
|
|
16
|
+
* const approved = await permStore.isApproved("/project/.deepagents/agent.md", contentHash);
|
|
17
|
+
*
|
|
18
|
+
* // Grant approval
|
|
19
|
+
* await permStore.grantApproval("/project/.deepagents/agent.md", contentHash);
|
|
20
|
+
*
|
|
21
|
+
* // Revoke approval
|
|
22
|
+
* await permStore.revokeApproval("/project/.deepagents/agent.md");
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @packageDocumentation
|
|
26
|
+
*/
|
|
27
|
+
import * as crypto from "node:crypto";
|
|
28
|
+
import * as fs from "node:fs/promises";
|
|
29
|
+
import * as path from "node:path";
|
|
30
|
+
// =============================================================================
|
|
31
|
+
// Hash Utilities
|
|
32
|
+
// =============================================================================
|
|
33
|
+
/**
|
|
34
|
+
* Compute SHA-256 hash of a string.
|
|
35
|
+
*
|
|
36
|
+
* @param content - Content to hash
|
|
37
|
+
* @returns Hex-encoded hash
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* const hash = computeContentHash("# My Memory\n\nContent here");
|
|
42
|
+
* // Returns: "a1b2c3d4..."
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* @category Memory
|
|
46
|
+
*/
|
|
47
|
+
export function computeContentHash(content) {
|
|
48
|
+
return crypto.createHash("sha256").update(content, "utf-8").digest("hex");
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Compute content hash from a file path.
|
|
52
|
+
*
|
|
53
|
+
* @param filePath - Path to the file
|
|
54
|
+
* @returns Hex-encoded hash, or undefined if file doesn't exist
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```typescript
|
|
58
|
+
* const hash = await computeFileHash("/path/to/memory.md");
|
|
59
|
+
* ```
|
|
60
|
+
*
|
|
61
|
+
* @category Memory
|
|
62
|
+
*/
|
|
63
|
+
export async function computeFileHash(filePath) {
|
|
64
|
+
try {
|
|
65
|
+
const content = await fs.readFile(filePath, "utf-8");
|
|
66
|
+
return computeContentHash(content);
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
if (error.code === "ENOENT") {
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
throw error;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* File-based implementation of MemoryPermissionStore.
|
|
77
|
+
*
|
|
78
|
+
* Stores approvals in a JSON file on disk.
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```typescript
|
|
82
|
+
* const store = new FileMemoryPermissionStore({
|
|
83
|
+
* permissionsFilePath: "/home/user/.deepagents/.memory-permissions.json",
|
|
84
|
+
* });
|
|
85
|
+
*
|
|
86
|
+
* // Grant approval
|
|
87
|
+
* await store.grantApproval("/project/.deepagents/agent.md", contentHash, "user");
|
|
88
|
+
*
|
|
89
|
+
* // Check if approved
|
|
90
|
+
* const approved = await store.isApproved("/project/.deepagents/agent.md", contentHash);
|
|
91
|
+
* ```
|
|
92
|
+
*
|
|
93
|
+
* @category Memory
|
|
94
|
+
*/
|
|
95
|
+
export class FileMemoryPermissionStore {
|
|
96
|
+
permissionsFilePath;
|
|
97
|
+
createDirs;
|
|
98
|
+
approvals = new Map();
|
|
99
|
+
loaded = false;
|
|
100
|
+
/**
|
|
101
|
+
* Create a new FileMemoryPermissionStore.
|
|
102
|
+
*
|
|
103
|
+
* @param options - Configuration options
|
|
104
|
+
*/
|
|
105
|
+
constructor(options = {}) {
|
|
106
|
+
const homeDir = process.env.HOME ?? "~";
|
|
107
|
+
this.permissionsFilePath =
|
|
108
|
+
options.permissionsFilePath ?? path.join(homeDir, ".deepagents", ".memory-permissions.json");
|
|
109
|
+
this.createDirs = options.createDirs ?? true;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Load approvals from disk if not already loaded.
|
|
113
|
+
*
|
|
114
|
+
* @internal
|
|
115
|
+
*/
|
|
116
|
+
async ensureLoaded() {
|
|
117
|
+
if (this.loaded)
|
|
118
|
+
return;
|
|
119
|
+
try {
|
|
120
|
+
const content = await fs.readFile(this.permissionsFilePath, "utf-8");
|
|
121
|
+
const data = JSON.parse(content);
|
|
122
|
+
this.approvals.clear();
|
|
123
|
+
for (const approval of data) {
|
|
124
|
+
this.approvals.set(approval.path, approval);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
if (error.code !== "ENOENT") {
|
|
129
|
+
throw error;
|
|
130
|
+
}
|
|
131
|
+
// File doesn't exist yet, start with empty approvals
|
|
132
|
+
}
|
|
133
|
+
this.loaded = true;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Save approvals to disk.
|
|
137
|
+
*
|
|
138
|
+
* @internal
|
|
139
|
+
*/
|
|
140
|
+
async save() {
|
|
141
|
+
await this.ensureLoaded();
|
|
142
|
+
if (this.createDirs) {
|
|
143
|
+
const dir = path.dirname(this.permissionsFilePath);
|
|
144
|
+
await fs.mkdir(dir, { recursive: true });
|
|
145
|
+
}
|
|
146
|
+
const data = Array.from(this.approvals.values());
|
|
147
|
+
const content = JSON.stringify(data, null, 2);
|
|
148
|
+
await fs.writeFile(this.permissionsFilePath, content, "utf-8");
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Check if a path is approved with a specific content hash.
|
|
152
|
+
*/
|
|
153
|
+
async isApproved(path, contentHash) {
|
|
154
|
+
await this.ensureLoaded();
|
|
155
|
+
const approval = this.approvals.get(path);
|
|
156
|
+
if (!approval)
|
|
157
|
+
return false;
|
|
158
|
+
// Approval is valid only if hash matches
|
|
159
|
+
return approval.contentHash === contentHash;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Grant approval for a path with a specific content hash.
|
|
163
|
+
*/
|
|
164
|
+
async grantApproval(path, contentHash, approvedBy) {
|
|
165
|
+
await this.ensureLoaded();
|
|
166
|
+
this.approvals.set(path, {
|
|
167
|
+
path,
|
|
168
|
+
contentHash,
|
|
169
|
+
approvedAt: Date.now(),
|
|
170
|
+
approvedBy,
|
|
171
|
+
});
|
|
172
|
+
await this.save();
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Revoke approval for a path.
|
|
176
|
+
*/
|
|
177
|
+
async revokeApproval(path) {
|
|
178
|
+
await this.ensureLoaded();
|
|
179
|
+
const hadApproval = this.approvals.has(path);
|
|
180
|
+
this.approvals.delete(path);
|
|
181
|
+
if (hadApproval) {
|
|
182
|
+
await this.save();
|
|
183
|
+
}
|
|
184
|
+
return hadApproval;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* List all approved paths.
|
|
188
|
+
*/
|
|
189
|
+
async listApprovals() {
|
|
190
|
+
await this.ensureLoaded();
|
|
191
|
+
return Array.from(this.approvals.values());
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Clear all approvals.
|
|
195
|
+
*/
|
|
196
|
+
async clearAll() {
|
|
197
|
+
await this.ensureLoaded();
|
|
198
|
+
this.approvals.clear();
|
|
199
|
+
await this.save();
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
// =============================================================================
|
|
203
|
+
// In-Memory Permission Store (for testing)
|
|
204
|
+
// =============================================================================
|
|
205
|
+
/**
|
|
206
|
+
* In-memory implementation of MemoryPermissionStore for testing.
|
|
207
|
+
*
|
|
208
|
+
* Approvals are stored in memory and not persisted.
|
|
209
|
+
*
|
|
210
|
+
* @example
|
|
211
|
+
* ```typescript
|
|
212
|
+
* const store = new InMemoryPermissionStore();
|
|
213
|
+
*
|
|
214
|
+
* await store.grantApproval("/test.md", hash);
|
|
215
|
+
* const approved = await store.isApproved("/test.md", hash);
|
|
216
|
+
* ```
|
|
217
|
+
*
|
|
218
|
+
* @category Memory
|
|
219
|
+
*/
|
|
220
|
+
export class InMemoryPermissionStore {
|
|
221
|
+
approvals = new Map();
|
|
222
|
+
/**
|
|
223
|
+
* Check if a path is approved with a specific content hash.
|
|
224
|
+
*/
|
|
225
|
+
async isApproved(path, contentHash) {
|
|
226
|
+
const approval = this.approvals.get(path);
|
|
227
|
+
if (!approval)
|
|
228
|
+
return false;
|
|
229
|
+
return approval.contentHash === contentHash;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Grant approval for a path with a specific content hash.
|
|
233
|
+
*/
|
|
234
|
+
async grantApproval(path, contentHash, approvedBy) {
|
|
235
|
+
this.approvals.set(path, {
|
|
236
|
+
path,
|
|
237
|
+
contentHash,
|
|
238
|
+
approvedAt: Date.now(),
|
|
239
|
+
approvedBy,
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Revoke approval for a path.
|
|
244
|
+
*/
|
|
245
|
+
async revokeApproval(path) {
|
|
246
|
+
return this.approvals.delete(path);
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* List all approved paths.
|
|
250
|
+
*/
|
|
251
|
+
async listApprovals() {
|
|
252
|
+
return Array.from(this.approvals.values());
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Clear all approvals.
|
|
256
|
+
*/
|
|
257
|
+
async clearAll() {
|
|
258
|
+
this.approvals.clear();
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
// =============================================================================
|
|
262
|
+
// Factory Functions
|
|
263
|
+
// =============================================================================
|
|
264
|
+
/**
|
|
265
|
+
* Create a new FileMemoryPermissionStore.
|
|
266
|
+
*
|
|
267
|
+
* @param options - Configuration options
|
|
268
|
+
* @returns A new FileMemoryPermissionStore instance
|
|
269
|
+
*
|
|
270
|
+
* @example
|
|
271
|
+
* ```typescript
|
|
272
|
+
* const store = createMemoryPermissionStore({
|
|
273
|
+
* permissionsFilePath: "/path/to/.memory-permissions.json",
|
|
274
|
+
* });
|
|
275
|
+
* ```
|
|
276
|
+
*
|
|
277
|
+
* @category Memory
|
|
278
|
+
*/
|
|
279
|
+
export function createMemoryPermissionStore(options) {
|
|
280
|
+
return new FileMemoryPermissionStore(options);
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Create a new InMemoryPermissionStore.
|
|
284
|
+
*
|
|
285
|
+
* @returns A new InMemoryPermissionStore instance
|
|
286
|
+
*
|
|
287
|
+
* @example
|
|
288
|
+
* ```typescript
|
|
289
|
+
* const store = createInMemoryPermissionStore();
|
|
290
|
+
* ```
|
|
291
|
+
*
|
|
292
|
+
* @category Memory
|
|
293
|
+
*/
|
|
294
|
+
export function createInMemoryPermissionStore() {
|
|
295
|
+
return new InMemoryPermissionStore();
|
|
296
|
+
}
|
|
297
|
+
//# sourceMappingURL=permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/memory/permissions.ts"],"names":[],"mappings":"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"}
|