@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,623 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filesystem backend for disk persistence.
|
|
3
|
+
*
|
|
4
|
+
* FilesystemBackend provides file operations on the real filesystem with
|
|
5
|
+
* security protections against directory traversal, symlink attacks, and
|
|
6
|
+
* excessive file sizes.
|
|
7
|
+
*
|
|
8
|
+
* This backend is ideal for:
|
|
9
|
+
* - Persistent agents that need to read/write real files
|
|
10
|
+
* - Development environments
|
|
11
|
+
* - Local tooling and automation
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const backend = new FilesystemBackend({
|
|
16
|
+
* rootDir: process.cwd(),
|
|
17
|
+
* maxFileSizeMb: 10,
|
|
18
|
+
* });
|
|
19
|
+
*
|
|
20
|
+
* // Read a file
|
|
21
|
+
* const content = await backend.read("./src/index.ts");
|
|
22
|
+
*
|
|
23
|
+
* // Write a file
|
|
24
|
+
* await backend.write("./output.txt", "Generated content");
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @packageDocumentation
|
|
28
|
+
*/
|
|
29
|
+
import * as fsSync from "node:fs";
|
|
30
|
+
import * as fs from "node:fs/promises";
|
|
31
|
+
import * as path from "node:path";
|
|
32
|
+
// =============================================================================
|
|
33
|
+
// Error Classes
|
|
34
|
+
// =============================================================================
|
|
35
|
+
/**
|
|
36
|
+
* Error thrown when a path traversal attack is detected.
|
|
37
|
+
*
|
|
38
|
+
* @category Backend
|
|
39
|
+
*/
|
|
40
|
+
export class PathTraversalError extends Error {
|
|
41
|
+
attemptedPath;
|
|
42
|
+
rootDir;
|
|
43
|
+
constructor(attemptedPath, rootDir) {
|
|
44
|
+
super(`Path traversal detected: "${attemptedPath}" escapes root directory "${rootDir}"`);
|
|
45
|
+
this.attemptedPath = attemptedPath;
|
|
46
|
+
this.rootDir = rootDir;
|
|
47
|
+
this.name = "PathTraversalError";
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Error thrown when a symlink is encountered and not allowed.
|
|
52
|
+
*
|
|
53
|
+
* @category Backend
|
|
54
|
+
*/
|
|
55
|
+
export class SymlinkError extends Error {
|
|
56
|
+
path;
|
|
57
|
+
constructor(path) {
|
|
58
|
+
super(`Symbolic link not allowed: "${path}"`);
|
|
59
|
+
this.path = path;
|
|
60
|
+
this.name = "SymlinkError";
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Error thrown when a file exceeds the size limit.
|
|
65
|
+
*
|
|
66
|
+
* @category Backend
|
|
67
|
+
*/
|
|
68
|
+
export class FileSizeLimitError extends Error {
|
|
69
|
+
path;
|
|
70
|
+
sizeMb;
|
|
71
|
+
limitMb;
|
|
72
|
+
constructor(path, sizeMb, limitMb) {
|
|
73
|
+
super(`File "${path}" (${sizeMb.toFixed(2)}MB) exceeds size limit of ${limitMb}MB`);
|
|
74
|
+
this.path = path;
|
|
75
|
+
this.sizeMb = sizeMb;
|
|
76
|
+
this.limitMb = limitMb;
|
|
77
|
+
this.name = "FileSizeLimitError";
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// =============================================================================
|
|
81
|
+
// Filesystem Backend Implementation
|
|
82
|
+
// =============================================================================
|
|
83
|
+
/**
|
|
84
|
+
* Filesystem backend implementation for real disk operations.
|
|
85
|
+
*
|
|
86
|
+
* Provides secure file operations with protections against:
|
|
87
|
+
* - Directory traversal attacks (../ paths)
|
|
88
|
+
* - Symlink attacks
|
|
89
|
+
* - Excessive file sizes
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* ```typescript
|
|
93
|
+
* const backend = new FilesystemBackend({
|
|
94
|
+
* rootDir: "/home/user/project",
|
|
95
|
+
* maxFileSizeMb: 10,
|
|
96
|
+
* followSymlinks: false,
|
|
97
|
+
* });
|
|
98
|
+
*
|
|
99
|
+
* // List files
|
|
100
|
+
* const files = await backend.lsInfo("./src");
|
|
101
|
+
*
|
|
102
|
+
* // Read with line numbers
|
|
103
|
+
* const content = await backend.read("./src/index.ts");
|
|
104
|
+
*
|
|
105
|
+
* // Search for patterns
|
|
106
|
+
* const matches = await backend.grepRaw("TODO", "./src", "*.ts");
|
|
107
|
+
* ```
|
|
108
|
+
*
|
|
109
|
+
* @category Backend
|
|
110
|
+
*/
|
|
111
|
+
export class FilesystemBackend {
|
|
112
|
+
rootDir;
|
|
113
|
+
maxFileSizeMb;
|
|
114
|
+
followSymlinks;
|
|
115
|
+
allowedPaths;
|
|
116
|
+
/**
|
|
117
|
+
* Create a new FilesystemBackend.
|
|
118
|
+
*
|
|
119
|
+
* @param options - Configuration options
|
|
120
|
+
*/
|
|
121
|
+
constructor(options = {}) {
|
|
122
|
+
// Resolve symlinks in rootDir to handle cases like /tmp -> /private/tmp on macOS
|
|
123
|
+
// This ensures symlink checks within rootDir work correctly
|
|
124
|
+
const resolvedRoot = path.resolve(options.rootDir ?? process.cwd());
|
|
125
|
+
try {
|
|
126
|
+
this.rootDir = fsSync.realpathSync(resolvedRoot);
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
// If rootDir doesn't exist yet, use the resolved path
|
|
130
|
+
this.rootDir = resolvedRoot;
|
|
131
|
+
}
|
|
132
|
+
this.maxFileSizeMb = options.maxFileSizeMb ?? 10;
|
|
133
|
+
this.followSymlinks = options.followSymlinks ?? false;
|
|
134
|
+
// Also resolve symlinks in allowedPaths for consistency
|
|
135
|
+
this.allowedPaths = new Set((options.allowedPaths ?? []).map((p) => {
|
|
136
|
+
const resolved = path.resolve(p);
|
|
137
|
+
try {
|
|
138
|
+
return fsSync.realpathSync(resolved);
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
return resolved;
|
|
142
|
+
}
|
|
143
|
+
}));
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* List files and directories at the given path.
|
|
147
|
+
*
|
|
148
|
+
* @param dirPath - Directory path to list (non-recursive)
|
|
149
|
+
* @returns Array of file/directory info
|
|
150
|
+
*/
|
|
151
|
+
async lsInfo(dirPath) {
|
|
152
|
+
const resolvedPath = await this.resolvePath(dirPath);
|
|
153
|
+
const results = [];
|
|
154
|
+
try {
|
|
155
|
+
const entries = await fs.readdir(resolvedPath, { withFileTypes: true });
|
|
156
|
+
for (const entry of entries) {
|
|
157
|
+
const entryPath = path.join(resolvedPath, entry.name);
|
|
158
|
+
// Skip symlinks if not following them
|
|
159
|
+
if (entry.isSymbolicLink() && !this.followSymlinks) {
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
try {
|
|
163
|
+
const stat = await fs.stat(entryPath);
|
|
164
|
+
const relativePath = this.makeRelativePath(entryPath);
|
|
165
|
+
results.push({
|
|
166
|
+
path: relativePath,
|
|
167
|
+
is_dir: stat.isDirectory(),
|
|
168
|
+
size: stat.isDirectory() ? undefined : stat.size,
|
|
169
|
+
modified_at: stat.mtime.toISOString(),
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
// Skip entries we can't stat (permission errors, etc.)
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
if (this.isNodeError(error) && error.code === "ENOENT") {
|
|
179
|
+
return [];
|
|
180
|
+
}
|
|
181
|
+
throw error;
|
|
182
|
+
}
|
|
183
|
+
return results;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Read file content with line numbers.
|
|
187
|
+
*
|
|
188
|
+
* @param filePath - Path to the file to read
|
|
189
|
+
* @param offset - Starting line offset (0-indexed)
|
|
190
|
+
* @param limit - Maximum number of lines to read
|
|
191
|
+
* @returns Formatted content with line numbers
|
|
192
|
+
*/
|
|
193
|
+
async read(filePath, offset, limit) {
|
|
194
|
+
const resolvedPath = await this.resolvePath(filePath);
|
|
195
|
+
await this.validateFileAccess(resolvedPath);
|
|
196
|
+
const content = await fs.readFile(resolvedPath, "utf-8");
|
|
197
|
+
const allLines = content.split("\n");
|
|
198
|
+
const startLine = offset ?? 0;
|
|
199
|
+
const maxLines = limit ?? 2000;
|
|
200
|
+
const lines = allLines.slice(startLine, startLine + maxLines);
|
|
201
|
+
// Format with line numbers (matching the Read tool format)
|
|
202
|
+
return lines
|
|
203
|
+
.map((line, i) => {
|
|
204
|
+
const lineNum = startLine + i + 1;
|
|
205
|
+
const padding = " ".repeat(Math.max(0, 6 - String(lineNum).length));
|
|
206
|
+
return `${padding}${lineNum}→${line}`;
|
|
207
|
+
})
|
|
208
|
+
.join("\n");
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Read raw file content as FileData.
|
|
212
|
+
*
|
|
213
|
+
* @param filePath - Path to the file to read
|
|
214
|
+
* @returns Raw file data with content and timestamps
|
|
215
|
+
*/
|
|
216
|
+
async readRaw(filePath) {
|
|
217
|
+
const resolvedPath = await this.resolvePath(filePath);
|
|
218
|
+
await this.validateFileAccess(resolvedPath);
|
|
219
|
+
const [content, stat] = await Promise.all([
|
|
220
|
+
fs.readFile(resolvedPath, "utf-8"),
|
|
221
|
+
fs.stat(resolvedPath),
|
|
222
|
+
]);
|
|
223
|
+
return {
|
|
224
|
+
content: content.split("\n"),
|
|
225
|
+
created_at: stat.birthtime.toISOString(),
|
|
226
|
+
modified_at: stat.mtime.toISOString(),
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Search for pattern matches using regex.
|
|
231
|
+
*
|
|
232
|
+
* @param pattern - Regular expression pattern to search for
|
|
233
|
+
* @param searchPath - Directory to search in (defaults to root)
|
|
234
|
+
* @param glob - Glob pattern to filter files (e.g., "*.ts")
|
|
235
|
+
* @returns Array of matches
|
|
236
|
+
*/
|
|
237
|
+
async grepRaw(pattern, searchPath, glob) {
|
|
238
|
+
const basePath = searchPath ? await this.resolvePath(searchPath) : this.rootDir;
|
|
239
|
+
const regex = new RegExp(pattern);
|
|
240
|
+
const matches = [];
|
|
241
|
+
// Get all files recursively
|
|
242
|
+
const files = await this.walkDirectory(basePath, glob ?? undefined);
|
|
243
|
+
for (const filePath of files) {
|
|
244
|
+
try {
|
|
245
|
+
const content = await fs.readFile(filePath, "utf-8");
|
|
246
|
+
const lines = content.split("\n");
|
|
247
|
+
for (let i = 0; i < lines.length; i++) {
|
|
248
|
+
const line = lines[i];
|
|
249
|
+
if (regex.test(line)) {
|
|
250
|
+
matches.push({
|
|
251
|
+
path: this.makeRelativePath(filePath),
|
|
252
|
+
line: i + 1, // 1-indexed
|
|
253
|
+
text: line,
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
catch {
|
|
259
|
+
// Skip files we can't read
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
return matches;
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Find files matching a glob pattern.
|
|
266
|
+
*
|
|
267
|
+
* @param pattern - Glob pattern (e.g., "**\/*.ts")
|
|
268
|
+
* @param basePath - Base directory for the search
|
|
269
|
+
* @returns Array of matching file info
|
|
270
|
+
*/
|
|
271
|
+
async globInfo(pattern, basePath) {
|
|
272
|
+
const searchDir = basePath ? await this.resolvePath(basePath) : this.rootDir;
|
|
273
|
+
const results = [];
|
|
274
|
+
// Get all files and filter by pattern
|
|
275
|
+
const files = await this.walkDirectory(searchDir);
|
|
276
|
+
for (const filePath of files) {
|
|
277
|
+
const relativePath = path.relative(searchDir, filePath);
|
|
278
|
+
if (this.matchesGlob(relativePath, pattern)) {
|
|
279
|
+
try {
|
|
280
|
+
const stat = await fs.stat(filePath);
|
|
281
|
+
results.push({
|
|
282
|
+
path: this.makeRelativePath(filePath),
|
|
283
|
+
is_dir: false,
|
|
284
|
+
size: stat.size,
|
|
285
|
+
modified_at: stat.mtime.toISOString(),
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
catch {
|
|
289
|
+
// Skip files we can't stat
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
return results;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Create or overwrite a file.
|
|
297
|
+
*
|
|
298
|
+
* @param filePath - Path for the file
|
|
299
|
+
* @param content - Content to write
|
|
300
|
+
* @returns Result indicating success or failure
|
|
301
|
+
*/
|
|
302
|
+
async write(filePath, content) {
|
|
303
|
+
try {
|
|
304
|
+
const resolvedPath = await this.resolvePath(filePath);
|
|
305
|
+
// Ensure parent directory exists
|
|
306
|
+
const parentDir = path.dirname(resolvedPath);
|
|
307
|
+
await fs.mkdir(parentDir, { recursive: true });
|
|
308
|
+
await fs.writeFile(resolvedPath, content, "utf-8");
|
|
309
|
+
return {
|
|
310
|
+
success: true,
|
|
311
|
+
path: this.makeRelativePath(resolvedPath),
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
catch (error) {
|
|
315
|
+
return {
|
|
316
|
+
success: false,
|
|
317
|
+
error: error instanceof Error ? error.message : String(error),
|
|
318
|
+
path: filePath,
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Edit a file by replacing text.
|
|
324
|
+
*
|
|
325
|
+
* @param filePath - Path to the file to edit
|
|
326
|
+
* @param oldString - Text to find and replace
|
|
327
|
+
* @param newString - Replacement text
|
|
328
|
+
* @param replaceAll - If true, replace all occurrences
|
|
329
|
+
* @returns Result indicating success or failure
|
|
330
|
+
*/
|
|
331
|
+
async edit(filePath, oldString, newString, replaceAll) {
|
|
332
|
+
try {
|
|
333
|
+
const resolvedPath = await this.resolvePath(filePath);
|
|
334
|
+
await this.validateFileAccess(resolvedPath);
|
|
335
|
+
const content = await fs.readFile(resolvedPath, "utf-8");
|
|
336
|
+
const occurrences = content.split(oldString).length - 1;
|
|
337
|
+
if (occurrences === 0) {
|
|
338
|
+
return {
|
|
339
|
+
success: false,
|
|
340
|
+
error: `String not found in file: "${oldString.slice(0, 50)}${oldString.length > 50 ? "..." : ""}"`,
|
|
341
|
+
path: this.makeRelativePath(resolvedPath),
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
if (occurrences > 1 && !replaceAll) {
|
|
345
|
+
return {
|
|
346
|
+
success: false,
|
|
347
|
+
error: `Multiple occurrences (${occurrences}) found. Use replace_all=true to replace all.`,
|
|
348
|
+
path: this.makeRelativePath(resolvedPath),
|
|
349
|
+
occurrences,
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
const newContent = replaceAll
|
|
353
|
+
? content.replaceAll(oldString, newString)
|
|
354
|
+
: content.replace(oldString, newString);
|
|
355
|
+
await fs.writeFile(resolvedPath, newContent, "utf-8");
|
|
356
|
+
return {
|
|
357
|
+
success: true,
|
|
358
|
+
path: this.makeRelativePath(resolvedPath),
|
|
359
|
+
occurrences: replaceAll ? occurrences : 1,
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
catch (error) {
|
|
363
|
+
if (error instanceof PathTraversalError || error instanceof SymlinkError) {
|
|
364
|
+
return {
|
|
365
|
+
success: false,
|
|
366
|
+
error: error.message,
|
|
367
|
+
path: filePath,
|
|
368
|
+
};
|
|
369
|
+
}
|
|
370
|
+
if (this.isNodeError(error) && error.code === "ENOENT") {
|
|
371
|
+
return {
|
|
372
|
+
success: false,
|
|
373
|
+
error: `File not found: ${filePath}`,
|
|
374
|
+
path: filePath,
|
|
375
|
+
};
|
|
376
|
+
}
|
|
377
|
+
return {
|
|
378
|
+
success: false,
|
|
379
|
+
error: error instanceof Error ? error.message : String(error),
|
|
380
|
+
path: filePath,
|
|
381
|
+
};
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
// ===========================================================================
|
|
385
|
+
// Security Methods
|
|
386
|
+
// ===========================================================================
|
|
387
|
+
/**
|
|
388
|
+
* Resolve a path and validate it's within the allowed boundaries.
|
|
389
|
+
*
|
|
390
|
+
* @param inputPath - Path to resolve
|
|
391
|
+
* @returns Resolved absolute path
|
|
392
|
+
* @throws {PathTraversalError} If path escapes root directory
|
|
393
|
+
* @throws {SymlinkError} If path contains a symlink and followSymlinks is false
|
|
394
|
+
* @internal
|
|
395
|
+
*/
|
|
396
|
+
async resolvePath(inputPath) {
|
|
397
|
+
let resolved;
|
|
398
|
+
// Check if this is an absolute path that might be in allowedPaths
|
|
399
|
+
if (path.isAbsolute(inputPath)) {
|
|
400
|
+
// Resolve symlinks in the path for consistent comparison with allowedPaths
|
|
401
|
+
// (which were also resolved during construction)
|
|
402
|
+
let normalizedAbsolute = path.resolve(inputPath);
|
|
403
|
+
try {
|
|
404
|
+
normalizedAbsolute = await fs.realpath(normalizedAbsolute);
|
|
405
|
+
}
|
|
406
|
+
catch {
|
|
407
|
+
// Path doesn't exist yet, use the resolved path
|
|
408
|
+
}
|
|
409
|
+
if (this.isPathInAllowedPaths(normalizedAbsolute)) {
|
|
410
|
+
resolved = normalizedAbsolute;
|
|
411
|
+
}
|
|
412
|
+
else {
|
|
413
|
+
// Treat paths starting with "/" as relative to rootDir
|
|
414
|
+
// This matches the behavior of StateBackend where "/" means the virtual root
|
|
415
|
+
const relativePath = inputPath.startsWith("/") ? inputPath.slice(1) : inputPath;
|
|
416
|
+
resolved = path.resolve(this.rootDir, relativePath);
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
else {
|
|
420
|
+
// Relative path - resolve relative to rootDir
|
|
421
|
+
resolved = path.resolve(this.rootDir, inputPath);
|
|
422
|
+
}
|
|
423
|
+
// Check if path is within rootDir or allowed paths
|
|
424
|
+
if (!this.isPathAllowed(resolved)) {
|
|
425
|
+
throw new PathTraversalError(inputPath, this.rootDir);
|
|
426
|
+
}
|
|
427
|
+
// Check for symlinks in the path components if not following them
|
|
428
|
+
if (!this.followSymlinks) {
|
|
429
|
+
await this.checkSymlinks(resolved);
|
|
430
|
+
}
|
|
431
|
+
return resolved;
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Check if a resolved path is within allowed boundaries.
|
|
435
|
+
* @internal
|
|
436
|
+
*/
|
|
437
|
+
isPathAllowed(resolved) {
|
|
438
|
+
// Check if within root directory
|
|
439
|
+
const relative = path.relative(this.rootDir, resolved);
|
|
440
|
+
const isWithinRoot = !relative.startsWith("..") && !path.isAbsolute(relative);
|
|
441
|
+
if (isWithinRoot) {
|
|
442
|
+
return true;
|
|
443
|
+
}
|
|
444
|
+
// Check if within any allowed path
|
|
445
|
+
return this.isPathInAllowedPaths(resolved);
|
|
446
|
+
}
|
|
447
|
+
/**
|
|
448
|
+
* Check if a resolved path is within any of the allowed paths.
|
|
449
|
+
* @internal
|
|
450
|
+
*/
|
|
451
|
+
isPathInAllowedPaths(resolved) {
|
|
452
|
+
for (const allowedPath of this.allowedPaths) {
|
|
453
|
+
const relativeToAllowed = path.relative(allowedPath, resolved);
|
|
454
|
+
const isWithinAllowed = !relativeToAllowed.startsWith("..") && !path.isAbsolute(relativeToAllowed);
|
|
455
|
+
if (isWithinAllowed) {
|
|
456
|
+
return true;
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
return false;
|
|
460
|
+
}
|
|
461
|
+
/**
|
|
462
|
+
* Check for symlinks in path components.
|
|
463
|
+
* @throws {SymlinkError} If a symlink is found
|
|
464
|
+
* @internal
|
|
465
|
+
*/
|
|
466
|
+
async checkSymlinks(targetPath) {
|
|
467
|
+
// Use '/' for splitting as Node normalizes paths, then handle platform paths
|
|
468
|
+
const normalizedPath = targetPath.replace(/\\/g, "/");
|
|
469
|
+
const parts = normalizedPath.split("/").filter(Boolean);
|
|
470
|
+
let currentPath = "/";
|
|
471
|
+
for (const part of parts) {
|
|
472
|
+
currentPath = path.join(currentPath, part);
|
|
473
|
+
try {
|
|
474
|
+
const lstat = await fs.lstat(currentPath);
|
|
475
|
+
if (lstat.isSymbolicLink()) {
|
|
476
|
+
throw new SymlinkError(currentPath);
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
catch (error) {
|
|
480
|
+
// Path component doesn't exist yet, that's OK for write operations
|
|
481
|
+
if (this.isNodeError(error) && error.code === "ENOENT") {
|
|
482
|
+
break;
|
|
483
|
+
}
|
|
484
|
+
if (error instanceof SymlinkError) {
|
|
485
|
+
throw error;
|
|
486
|
+
}
|
|
487
|
+
// Other errors (permission, etc.) - continue checking
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
/**
|
|
492
|
+
* Validate file access checking size limits and symlinks.
|
|
493
|
+
* @throws {FileSizeLimitError} If file exceeds size limit
|
|
494
|
+
* @throws {SymlinkError} If file is a symlink and not allowed
|
|
495
|
+
* @internal
|
|
496
|
+
*/
|
|
497
|
+
async validateFileAccess(filePath) {
|
|
498
|
+
const stat = await fs.stat(filePath);
|
|
499
|
+
// Check file size
|
|
500
|
+
const sizeMb = stat.size / (1024 * 1024);
|
|
501
|
+
if (sizeMb > this.maxFileSizeMb) {
|
|
502
|
+
throw new FileSizeLimitError(filePath, sizeMb, this.maxFileSizeMb);
|
|
503
|
+
}
|
|
504
|
+
// Check if symlink (using lstat)
|
|
505
|
+
if (!this.followSymlinks) {
|
|
506
|
+
const lstat = await fs.lstat(filePath);
|
|
507
|
+
if (lstat.isSymbolicLink()) {
|
|
508
|
+
throw new SymlinkError(filePath);
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
// ===========================================================================
|
|
513
|
+
// Helper Methods
|
|
514
|
+
// ===========================================================================
|
|
515
|
+
/**
|
|
516
|
+
* Convert an absolute path to a relative path from rootDir.
|
|
517
|
+
* @internal
|
|
518
|
+
*/
|
|
519
|
+
makeRelativePath(absolutePath) {
|
|
520
|
+
const relative = path.relative(this.rootDir, absolutePath);
|
|
521
|
+
// Ensure it starts with / for consistency
|
|
522
|
+
return `/${relative.replace(/\\/g, "/")}`;
|
|
523
|
+
}
|
|
524
|
+
/**
|
|
525
|
+
* Walk a directory recursively and return all file paths.
|
|
526
|
+
* @internal
|
|
527
|
+
*/
|
|
528
|
+
async walkDirectory(dir, globPattern) {
|
|
529
|
+
const results = [];
|
|
530
|
+
const walk = async (currentDir) => {
|
|
531
|
+
try {
|
|
532
|
+
const entries = await fs.readdir(currentDir, { withFileTypes: true });
|
|
533
|
+
for (const entry of entries) {
|
|
534
|
+
const fullPath = path.join(currentDir, entry.name);
|
|
535
|
+
// Skip symlinks if not following
|
|
536
|
+
if (entry.isSymbolicLink() && !this.followSymlinks) {
|
|
537
|
+
continue;
|
|
538
|
+
}
|
|
539
|
+
if (entry.isDirectory()) {
|
|
540
|
+
await walk(fullPath);
|
|
541
|
+
}
|
|
542
|
+
else if (entry.isFile()) {
|
|
543
|
+
// If glob pattern provided, filter by extension (simple filtering)
|
|
544
|
+
if (globPattern) {
|
|
545
|
+
const relativePath = path.relative(dir, fullPath);
|
|
546
|
+
if (this.matchesGlob(relativePath, globPattern)) {
|
|
547
|
+
results.push(fullPath);
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
else {
|
|
551
|
+
results.push(fullPath);
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
catch {
|
|
557
|
+
// Skip directories we can't read
|
|
558
|
+
}
|
|
559
|
+
};
|
|
560
|
+
await walk(dir);
|
|
561
|
+
return results;
|
|
562
|
+
}
|
|
563
|
+
/**
|
|
564
|
+
* Check if a path matches a glob pattern.
|
|
565
|
+
* Supports basic glob patterns: *, **, ?
|
|
566
|
+
* @internal
|
|
567
|
+
*/
|
|
568
|
+
matchesGlob(filePath, pattern) {
|
|
569
|
+
// Normalize path separators
|
|
570
|
+
const normalizedPath = filePath.replace(/\\/g, "/");
|
|
571
|
+
const normalizedPattern = pattern.replace(/\\/g, "/");
|
|
572
|
+
// Convert glob to regex
|
|
573
|
+
let regexPattern = normalizedPattern
|
|
574
|
+
// Escape special regex chars except * and ?
|
|
575
|
+
.replace(/[.+^${}()|[\]\\]/g, "\\$&")
|
|
576
|
+
// ** followed by / matches any path segments including empty
|
|
577
|
+
.replace(/\*\*\//g, "<<<GLOBSTAR_SLASH>>>")
|
|
578
|
+
// ** at end matches any remaining path
|
|
579
|
+
.replace(/\*\*/g, "<<<GLOBSTAR>>>")
|
|
580
|
+
// * matches anything except /
|
|
581
|
+
.replace(/\*/g, "[^/]*")
|
|
582
|
+
// ? matches single char except /
|
|
583
|
+
.replace(/\?/g, "[^/]")
|
|
584
|
+
// Restore globstars
|
|
585
|
+
.replace(/<<<GLOBSTAR_SLASH>>>/g, "(?:.*/)?")
|
|
586
|
+
.replace(/<<<GLOBSTAR>>>/g, ".*");
|
|
587
|
+
// Anchor the pattern
|
|
588
|
+
regexPattern = `^${regexPattern}$`;
|
|
589
|
+
return new RegExp(regexPattern).test(normalizedPath);
|
|
590
|
+
}
|
|
591
|
+
/**
|
|
592
|
+
* Type guard for Node.js errors with code property.
|
|
593
|
+
* @internal
|
|
594
|
+
*/
|
|
595
|
+
isNodeError(error) {
|
|
596
|
+
return (error instanceof Error &&
|
|
597
|
+
"code" in error &&
|
|
598
|
+
typeof error.code === "string");
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
// =============================================================================
|
|
602
|
+
// Factory Function
|
|
603
|
+
// =============================================================================
|
|
604
|
+
/**
|
|
605
|
+
* Create a FilesystemBackend with the specified options.
|
|
606
|
+
*
|
|
607
|
+
* @param options - Configuration options
|
|
608
|
+
* @returns A new FilesystemBackend instance
|
|
609
|
+
*
|
|
610
|
+
* @example
|
|
611
|
+
* ```typescript
|
|
612
|
+
* const backend = createFilesystemBackend({
|
|
613
|
+
* rootDir: "/home/user/project",
|
|
614
|
+
* maxFileSizeMb: 5,
|
|
615
|
+
* });
|
|
616
|
+
* ```
|
|
617
|
+
*
|
|
618
|
+
* @category Backend
|
|
619
|
+
*/
|
|
620
|
+
export function createFilesystemBackend(options) {
|
|
621
|
+
return new FilesystemBackend(options);
|
|
622
|
+
}
|
|
623
|
+
//# sourceMappingURL=filesystem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../src/backends/filesystem.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backend implementations for the agent SDK.
|
|
3
|
+
*
|
|
4
|
+
* This module provides various storage backends that implement the
|
|
5
|
+
* {@link BackendProtocol} interface.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
export { CompositeBackend, type CompositeBackendOptions, createCompositeBackend, type RouteConfig, } from "./composite.js";
|
|
10
|
+
export { createFilesystemBackend, FileSizeLimitError, FilesystemBackend, type FilesystemBackendOptions, PathTraversalError, SymlinkError, } from "./filesystem.js";
|
|
11
|
+
export { createPersistentBackend, InMemoryStore, type KeyValueStore, PersistentBackend, type PersistentBackendOptions, } from "./persistent.js";
|
|
12
|
+
export { BaseSandbox, CommandBlockedError, CommandTimeoutError, createLocalSandbox, LocalSandbox, type LocalSandboxOptions, } from "./sandbox.js";
|
|
13
|
+
export { type AgentState, createAgentState, createStateBackend, StateBackend, type TodoItem, type TodoStatus, } from "./state.js";
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/backends/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,sBAAsB,EACtB,KAAK,WAAW,GACjB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,kBAAkB,EAClB,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,KAAK,aAAa,EAClB,iBAAiB,EACjB,KAAK,wBAAwB,GAC9B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,KAAK,mBAAmB,GACzB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,UAAU,EACf,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,KAAK,QAAQ,EACb,KAAK,UAAU,GAChB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backend implementations for the agent SDK.
|
|
3
|
+
*
|
|
4
|
+
* This module provides various storage backends that implement the
|
|
5
|
+
* {@link BackendProtocol} interface.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
export { CompositeBackend, createCompositeBackend, } from "./composite.js";
|
|
10
|
+
export { createFilesystemBackend, FileSizeLimitError, FilesystemBackend, PathTraversalError, SymlinkError, } from "./filesystem.js";
|
|
11
|
+
export { createPersistentBackend, InMemoryStore, PersistentBackend, } from "./persistent.js";
|
|
12
|
+
export { BaseSandbox, CommandBlockedError, CommandTimeoutError, createLocalSandbox, LocalSandbox, } from "./sandbox.js";
|
|
13
|
+
export { createAgentState, createStateBackend, StateBackend, } from "./state.js";
|
|
14
|
+
//# sourceMappingURL=index.js.map
|