@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,315 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sandbox backend for command execution.
|
|
3
|
+
*
|
|
4
|
+
* SandboxBackend provides isolated environments for running shell commands safely.
|
|
5
|
+
* The base class provides a foundation for various sandbox implementations including
|
|
6
|
+
* local processes, containers, or cloud sandboxes.
|
|
7
|
+
*
|
|
8
|
+
* This module provides:
|
|
9
|
+
* - {@link BaseSandbox} - Abstract base class for all sandbox implementations
|
|
10
|
+
* - {@link LocalSandbox} - Local shell execution with security controls
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* // Create a local sandbox for development
|
|
15
|
+
* const sandbox = new LocalSandbox({
|
|
16
|
+
* cwd: process.cwd(),
|
|
17
|
+
* timeout: 30000,
|
|
18
|
+
* maxOutputSize: 1024 * 1024,
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* // Execute a command
|
|
22
|
+
* const result = await sandbox.execute("npm test");
|
|
23
|
+
* console.log(`Exit code: ${result.exitCode}`);
|
|
24
|
+
* console.log(`Output: ${result.output}`);
|
|
25
|
+
*
|
|
26
|
+
* // Use file operations
|
|
27
|
+
* const files = await sandbox.lsInfo("./src");
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @packageDocumentation
|
|
31
|
+
*/
|
|
32
|
+
import type { BackendProtocol, EditResult, ExecuteResponse, FileData, FileInfo, FileUploadResponse, GrepMatch, SandboxBackendProtocol, WriteResult } from "../backend.js";
|
|
33
|
+
import { FileSizeLimitError, PathTraversalError, SymlinkError } from "./filesystem.js";
|
|
34
|
+
/**
|
|
35
|
+
* Error thrown when a command execution times out.
|
|
36
|
+
*
|
|
37
|
+
* @category Backend
|
|
38
|
+
*/
|
|
39
|
+
export declare class CommandTimeoutError extends Error {
|
|
40
|
+
readonly command: string;
|
|
41
|
+
readonly timeoutMs: number;
|
|
42
|
+
constructor(command: string, timeoutMs: number);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Error thrown when a command is blocked by security filters.
|
|
46
|
+
*
|
|
47
|
+
* @category Backend
|
|
48
|
+
*/
|
|
49
|
+
export declare class CommandBlockedError extends Error {
|
|
50
|
+
readonly command: string;
|
|
51
|
+
readonly reason: string;
|
|
52
|
+
constructor(command: string, reason: string);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Configuration options for LocalSandbox.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* const options: LocalSandboxOptions = {
|
|
60
|
+
* cwd: "/home/user/project",
|
|
61
|
+
* timeout: 60000,
|
|
62
|
+
* maxOutputSize: 1024 * 1024,
|
|
63
|
+
* blockedCommands: ["rm -rf /", "shutdown"],
|
|
64
|
+
* };
|
|
65
|
+
* ```
|
|
66
|
+
*
|
|
67
|
+
* @category Backend
|
|
68
|
+
*/
|
|
69
|
+
export interface LocalSandboxOptions {
|
|
70
|
+
/**
|
|
71
|
+
* Working directory for command execution.
|
|
72
|
+
* @defaultValue process.cwd()
|
|
73
|
+
*/
|
|
74
|
+
cwd?: string;
|
|
75
|
+
/**
|
|
76
|
+
* Default timeout in milliseconds for command execution.
|
|
77
|
+
* @defaultValue 120000 (2 minutes)
|
|
78
|
+
*/
|
|
79
|
+
timeout?: number;
|
|
80
|
+
/**
|
|
81
|
+
* Maximum output size in bytes before truncation.
|
|
82
|
+
* @defaultValue 1048576 (1MB)
|
|
83
|
+
*/
|
|
84
|
+
maxOutputSize?: number;
|
|
85
|
+
/**
|
|
86
|
+
* Shell to use for command execution.
|
|
87
|
+
* @defaultValue "/bin/sh" on Unix, "cmd.exe" on Windows
|
|
88
|
+
*/
|
|
89
|
+
shell?: string;
|
|
90
|
+
/**
|
|
91
|
+
* Environment variables to set for all commands.
|
|
92
|
+
*/
|
|
93
|
+
env?: Record<string, string>;
|
|
94
|
+
/**
|
|
95
|
+
* Commands or patterns that are blocked from execution.
|
|
96
|
+
* Supports simple string matching and regex patterns.
|
|
97
|
+
*/
|
|
98
|
+
blockedCommands?: Array<string | RegExp>;
|
|
99
|
+
/**
|
|
100
|
+
* Only allow these commands to be executed.
|
|
101
|
+
* If set, only commands matching these patterns are allowed.
|
|
102
|
+
*/
|
|
103
|
+
allowedCommands?: Array<string | RegExp>;
|
|
104
|
+
/**
|
|
105
|
+
* Whether to allow potentially dangerous commands.
|
|
106
|
+
* When false (default), certain dangerous patterns are blocked.
|
|
107
|
+
* @defaultValue false
|
|
108
|
+
*/
|
|
109
|
+
allowDangerous?: boolean;
|
|
110
|
+
/**
|
|
111
|
+
* Maximum file size in MB for file operations.
|
|
112
|
+
* @defaultValue 10
|
|
113
|
+
*/
|
|
114
|
+
maxFileSizeMb?: number;
|
|
115
|
+
/**
|
|
116
|
+
* Whether to follow symbolic links.
|
|
117
|
+
* @defaultValue false
|
|
118
|
+
*/
|
|
119
|
+
followSymlinks?: boolean;
|
|
120
|
+
/**
|
|
121
|
+
* Additional paths allowed for file operations.
|
|
122
|
+
*/
|
|
123
|
+
allowedPaths?: string[];
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Abstract base class for sandbox implementations.
|
|
127
|
+
*
|
|
128
|
+
* This class provides the foundation for various sandbox backends. Subclasses
|
|
129
|
+
* must implement the core execution method, while file operations can optionally
|
|
130
|
+
* be delegated to a wrapped backend.
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```typescript
|
|
134
|
+
* class MyCloudSandbox extends BaseSandbox {
|
|
135
|
+
* async execute(command: string): Promise<ExecuteResponse> {
|
|
136
|
+
* // Implement cloud-based execution
|
|
137
|
+
* return await this.cloudProvider.runCommand(command);
|
|
138
|
+
* }
|
|
139
|
+
* }
|
|
140
|
+
* ```
|
|
141
|
+
*
|
|
142
|
+
* @category Backend
|
|
143
|
+
*/
|
|
144
|
+
export declare abstract class BaseSandbox implements SandboxBackendProtocol {
|
|
145
|
+
/** Unique identifier for this sandbox instance */
|
|
146
|
+
readonly id: string;
|
|
147
|
+
/** Wrapped backend for file operations */
|
|
148
|
+
protected readonly fileBackend: BackendProtocol;
|
|
149
|
+
/**
|
|
150
|
+
* Create a new BaseSandbox.
|
|
151
|
+
*
|
|
152
|
+
* @param fileBackend - Backend to use for file operations
|
|
153
|
+
* @param id - Optional unique identifier (auto-generated if not provided)
|
|
154
|
+
*/
|
|
155
|
+
constructor(fileBackend: BackendProtocol, id?: string);
|
|
156
|
+
/**
|
|
157
|
+
* Execute a shell command in the sandbox.
|
|
158
|
+
*
|
|
159
|
+
* @param command - Shell command to execute
|
|
160
|
+
* @returns Execution result with output and exit code
|
|
161
|
+
*/
|
|
162
|
+
abstract execute(command: string): Promise<ExecuteResponse>;
|
|
163
|
+
/**
|
|
164
|
+
* List files and directories at the given path.
|
|
165
|
+
*/
|
|
166
|
+
lsInfo(path: string): FileInfo[] | Promise<FileInfo[]>;
|
|
167
|
+
/**
|
|
168
|
+
* Read file content with line numbers.
|
|
169
|
+
*/
|
|
170
|
+
read(filePath: string, offset?: number, limit?: number): string | Promise<string>;
|
|
171
|
+
/**
|
|
172
|
+
* Read raw file content as FileData.
|
|
173
|
+
*/
|
|
174
|
+
readRaw(filePath: string): FileData | Promise<FileData>;
|
|
175
|
+
/**
|
|
176
|
+
* Search for pattern matches using regex.
|
|
177
|
+
*/
|
|
178
|
+
grepRaw(pattern: string, path?: string | null, glob?: string | null): GrepMatch[] | string | Promise<GrepMatch[] | string>;
|
|
179
|
+
/**
|
|
180
|
+
* Find files matching a glob pattern.
|
|
181
|
+
*/
|
|
182
|
+
globInfo(pattern: string, path?: string): FileInfo[] | Promise<FileInfo[]>;
|
|
183
|
+
/**
|
|
184
|
+
* Create or overwrite a file.
|
|
185
|
+
*/
|
|
186
|
+
write(filePath: string, content: string): WriteResult | Promise<WriteResult>;
|
|
187
|
+
/**
|
|
188
|
+
* Edit a file by replacing text.
|
|
189
|
+
*/
|
|
190
|
+
edit(filePath: string, oldString: string, newString: string, replaceAll?: boolean): EditResult | Promise<EditResult>;
|
|
191
|
+
/**
|
|
192
|
+
* Upload files to the sandbox.
|
|
193
|
+
*
|
|
194
|
+
* Default implementation writes files using the file backend.
|
|
195
|
+
*
|
|
196
|
+
* @param files - Array of [path, content] tuples
|
|
197
|
+
* @returns Array of upload results
|
|
198
|
+
*/
|
|
199
|
+
uploadFiles(files: Array<[string, Uint8Array]>): Promise<FileUploadResponse[]>;
|
|
200
|
+
/**
|
|
201
|
+
* Download files from the sandbox.
|
|
202
|
+
*
|
|
203
|
+
* Default implementation reads files using the file backend.
|
|
204
|
+
*
|
|
205
|
+
* @param paths - Paths to download
|
|
206
|
+
* @returns Array of { path, content } objects
|
|
207
|
+
*/
|
|
208
|
+
downloadFiles(paths: string[]): Promise<Array<{
|
|
209
|
+
path: string;
|
|
210
|
+
content: Uint8Array;
|
|
211
|
+
}>>;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Local sandbox for shell command execution.
|
|
215
|
+
*
|
|
216
|
+
* Provides secure command execution with:
|
|
217
|
+
* - Timeout enforcement
|
|
218
|
+
* - Output size limits
|
|
219
|
+
* - Command blocking/allowlisting
|
|
220
|
+
* - Dangerous pattern detection
|
|
221
|
+
*
|
|
222
|
+
* File operations are delegated to a FilesystemBackend with the same security
|
|
223
|
+
* protections (path traversal, symlink, file size).
|
|
224
|
+
*
|
|
225
|
+
* @example
|
|
226
|
+
* ```typescript
|
|
227
|
+
* const sandbox = new LocalSandbox({
|
|
228
|
+
* cwd: "/home/user/project",
|
|
229
|
+
* timeout: 30000,
|
|
230
|
+
* blockedCommands: ["rm -rf"],
|
|
231
|
+
* });
|
|
232
|
+
*
|
|
233
|
+
* // Execute a command
|
|
234
|
+
* const result = await sandbox.execute("ls -la");
|
|
235
|
+
* console.log(result.output);
|
|
236
|
+
*
|
|
237
|
+
* // File operations work too
|
|
238
|
+
* const files = await sandbox.lsInfo("./src");
|
|
239
|
+
* ```
|
|
240
|
+
*
|
|
241
|
+
* @category Backend
|
|
242
|
+
*/
|
|
243
|
+
export declare class LocalSandbox extends BaseSandbox {
|
|
244
|
+
private readonly cwd;
|
|
245
|
+
private readonly timeout;
|
|
246
|
+
private readonly maxOutputSize;
|
|
247
|
+
private readonly shell;
|
|
248
|
+
private readonly env;
|
|
249
|
+
private readonly blockedCommands;
|
|
250
|
+
private readonly allowedCommands?;
|
|
251
|
+
private readonly allowDangerous;
|
|
252
|
+
/**
|
|
253
|
+
* Create a new LocalSandbox.
|
|
254
|
+
*
|
|
255
|
+
* @param options - Configuration options
|
|
256
|
+
*/
|
|
257
|
+
constructor(options?: LocalSandboxOptions);
|
|
258
|
+
/**
|
|
259
|
+
* Execute a shell command.
|
|
260
|
+
*
|
|
261
|
+
* @param command - Shell command to execute
|
|
262
|
+
* @returns Execution result with output and exit code
|
|
263
|
+
* @throws {CommandBlockedError} If the command is blocked
|
|
264
|
+
* @throws {CommandTimeoutError} If the command times out
|
|
265
|
+
*/
|
|
266
|
+
execute(command: string): Promise<ExecuteResponse>;
|
|
267
|
+
/**
|
|
268
|
+
* Validate a command before execution.
|
|
269
|
+
*
|
|
270
|
+
* @param command - Command to validate
|
|
271
|
+
* @throws {CommandBlockedError} If the command is blocked
|
|
272
|
+
* @internal
|
|
273
|
+
*/
|
|
274
|
+
private validateCommand;
|
|
275
|
+
/**
|
|
276
|
+
* Check if a command matches a pattern.
|
|
277
|
+
* @internal
|
|
278
|
+
*/
|
|
279
|
+
private matchesPattern;
|
|
280
|
+
/**
|
|
281
|
+
* Create a LocalSandbox with restricted permissions.
|
|
282
|
+
*
|
|
283
|
+
* This factory creates a sandbox that only allows read-only commands.
|
|
284
|
+
*
|
|
285
|
+
* @param options - Base options
|
|
286
|
+
* @returns A restricted LocalSandbox
|
|
287
|
+
*
|
|
288
|
+
* @example
|
|
289
|
+
* ```typescript
|
|
290
|
+
* const sandbox = LocalSandbox.readOnly({ cwd: "/home/user/project" });
|
|
291
|
+
* await sandbox.execute("ls -la"); // OK
|
|
292
|
+
* await sandbox.execute("rm file.txt"); // Throws CommandBlockedError
|
|
293
|
+
* ```
|
|
294
|
+
*/
|
|
295
|
+
static readOnly(options?: Omit<LocalSandboxOptions, "allowedCommands" | "blockedCommands">): LocalSandbox;
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Create a LocalSandbox with the specified options.
|
|
299
|
+
*
|
|
300
|
+
* @param options - Configuration options
|
|
301
|
+
* @returns A new LocalSandbox instance
|
|
302
|
+
*
|
|
303
|
+
* @example
|
|
304
|
+
* ```typescript
|
|
305
|
+
* const sandbox = createLocalSandbox({
|
|
306
|
+
* cwd: "/home/user/project",
|
|
307
|
+
* timeout: 30000,
|
|
308
|
+
* });
|
|
309
|
+
* ```
|
|
310
|
+
*
|
|
311
|
+
* @category Backend
|
|
312
|
+
*/
|
|
313
|
+
export declare function createLocalSandbox(options?: LocalSandboxOptions): LocalSandbox;
|
|
314
|
+
export { PathTraversalError, SymlinkError, FileSizeLimitError };
|
|
315
|
+
//# sourceMappingURL=sandbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../src/backends/sandbox.ts"],"names":[],"mappings":"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"}
|