@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.
Files changed (327) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2321 -0
  3. package/dist/agent.d.ts +52 -0
  4. package/dist/agent.d.ts.map +1 -0
  5. package/dist/agent.js +2122 -0
  6. package/dist/agent.js.map +1 -0
  7. package/dist/backend.d.ts +378 -0
  8. package/dist/backend.d.ts.map +1 -0
  9. package/dist/backend.js +71 -0
  10. package/dist/backend.js.map +1 -0
  11. package/dist/backends/composite.d.ts +258 -0
  12. package/dist/backends/composite.d.ts.map +1 -0
  13. package/dist/backends/composite.js +437 -0
  14. package/dist/backends/composite.js.map +1 -0
  15. package/dist/backends/filesystem.d.ts +268 -0
  16. package/dist/backends/filesystem.d.ts.map +1 -0
  17. package/dist/backends/filesystem.js +623 -0
  18. package/dist/backends/filesystem.js.map +1 -0
  19. package/dist/backends/index.d.ts +14 -0
  20. package/dist/backends/index.d.ts.map +1 -0
  21. package/dist/backends/index.js +14 -0
  22. package/dist/backends/index.js.map +1 -0
  23. package/dist/backends/persistent.d.ts +312 -0
  24. package/dist/backends/persistent.d.ts.map +1 -0
  25. package/dist/backends/persistent.js +519 -0
  26. package/dist/backends/persistent.js.map +1 -0
  27. package/dist/backends/sandbox.d.ts +315 -0
  28. package/dist/backends/sandbox.d.ts.map +1 -0
  29. package/dist/backends/sandbox.js +490 -0
  30. package/dist/backends/sandbox.js.map +1 -0
  31. package/dist/backends/state.d.ts +225 -0
  32. package/dist/backends/state.d.ts.map +1 -0
  33. package/dist/backends/state.js +396 -0
  34. package/dist/backends/state.js.map +1 -0
  35. package/dist/checkpointer/file-saver.d.ts +182 -0
  36. package/dist/checkpointer/file-saver.d.ts.map +1 -0
  37. package/dist/checkpointer/file-saver.js +298 -0
  38. package/dist/checkpointer/file-saver.js.map +1 -0
  39. package/dist/checkpointer/index.d.ts +40 -0
  40. package/dist/checkpointer/index.d.ts.map +1 -0
  41. package/dist/checkpointer/index.js +40 -0
  42. package/dist/checkpointer/index.js.map +1 -0
  43. package/dist/checkpointer/kv-saver.d.ts +142 -0
  44. package/dist/checkpointer/kv-saver.d.ts.map +1 -0
  45. package/dist/checkpointer/kv-saver.js +176 -0
  46. package/dist/checkpointer/kv-saver.js.map +1 -0
  47. package/dist/checkpointer/memory-saver.d.ts +158 -0
  48. package/dist/checkpointer/memory-saver.d.ts.map +1 -0
  49. package/dist/checkpointer/memory-saver.js +222 -0
  50. package/dist/checkpointer/memory-saver.js.map +1 -0
  51. package/dist/checkpointer/types.d.ts +353 -0
  52. package/dist/checkpointer/types.d.ts.map +1 -0
  53. package/dist/checkpointer/types.js +159 -0
  54. package/dist/checkpointer/types.js.map +1 -0
  55. package/dist/context-manager.d.ts +627 -0
  56. package/dist/context-manager.d.ts.map +1 -0
  57. package/dist/context-manager.js +1039 -0
  58. package/dist/context-manager.js.map +1 -0
  59. package/dist/context.d.ts +57 -0
  60. package/dist/context.d.ts.map +1 -0
  61. package/dist/context.js +76 -0
  62. package/dist/context.js.map +1 -0
  63. package/dist/errors/index.d.ts +611 -0
  64. package/dist/errors/index.d.ts.map +1 -0
  65. package/dist/errors/index.js +1023 -0
  66. package/dist/errors/index.js.map +1 -0
  67. package/dist/generation-helpers.d.ts +126 -0
  68. package/dist/generation-helpers.d.ts.map +1 -0
  69. package/dist/generation-helpers.js +181 -0
  70. package/dist/generation-helpers.js.map +1 -0
  71. package/dist/hooks/audit.d.ts +210 -0
  72. package/dist/hooks/audit.d.ts.map +1 -0
  73. package/dist/hooks/audit.js +305 -0
  74. package/dist/hooks/audit.js.map +1 -0
  75. package/dist/hooks/cache.d.ts +180 -0
  76. package/dist/hooks/cache.d.ts.map +1 -0
  77. package/dist/hooks/cache.js +273 -0
  78. package/dist/hooks/cache.js.map +1 -0
  79. package/dist/hooks/guardrails.d.ts +145 -0
  80. package/dist/hooks/guardrails.d.ts.map +1 -0
  81. package/dist/hooks/guardrails.js +326 -0
  82. package/dist/hooks/guardrails.js.map +1 -0
  83. package/dist/hooks/index.d.ts +18 -0
  84. package/dist/hooks/index.d.ts.map +1 -0
  85. package/dist/hooks/index.js +32 -0
  86. package/dist/hooks/index.js.map +1 -0
  87. package/dist/hooks/logging.d.ts +193 -0
  88. package/dist/hooks/logging.d.ts.map +1 -0
  89. package/dist/hooks/logging.js +345 -0
  90. package/dist/hooks/logging.js.map +1 -0
  91. package/dist/hooks/parallel-guardrails.d.ts +268 -0
  92. package/dist/hooks/parallel-guardrails.d.ts.map +1 -0
  93. package/dist/hooks/parallel-guardrails.js +416 -0
  94. package/dist/hooks/parallel-guardrails.js.map +1 -0
  95. package/dist/hooks/rate-limit.d.ts +305 -0
  96. package/dist/hooks/rate-limit.d.ts.map +1 -0
  97. package/dist/hooks/rate-limit.js +372 -0
  98. package/dist/hooks/rate-limit.js.map +1 -0
  99. package/dist/hooks/retry.d.ts +144 -0
  100. package/dist/hooks/retry.d.ts.map +1 -0
  101. package/dist/hooks/retry.js +210 -0
  102. package/dist/hooks/retry.js.map +1 -0
  103. package/dist/hooks/secrets.d.ts +174 -0
  104. package/dist/hooks/secrets.d.ts.map +1 -0
  105. package/dist/hooks/secrets.js +306 -0
  106. package/dist/hooks/secrets.js.map +1 -0
  107. package/dist/hooks.d.ts +229 -0
  108. package/dist/hooks.d.ts.map +1 -0
  109. package/dist/hooks.js +352 -0
  110. package/dist/hooks.js.map +1 -0
  111. package/dist/index.d.ts +97 -0
  112. package/dist/index.d.ts.map +1 -0
  113. package/dist/index.js +182 -0
  114. package/dist/index.js.map +1 -0
  115. package/dist/mcp/env.d.ts +25 -0
  116. package/dist/mcp/env.d.ts.map +1 -0
  117. package/dist/mcp/env.js +18 -0
  118. package/dist/mcp/env.js.map +1 -0
  119. package/dist/mcp/index.d.ts +16 -0
  120. package/dist/mcp/index.d.ts.map +1 -0
  121. package/dist/mcp/index.js +17 -0
  122. package/dist/mcp/index.js.map +1 -0
  123. package/dist/mcp/manager.d.ts +184 -0
  124. package/dist/mcp/manager.d.ts.map +1 -0
  125. package/dist/mcp/manager.js +446 -0
  126. package/dist/mcp/manager.js.map +1 -0
  127. package/dist/mcp/types.d.ts +58 -0
  128. package/dist/mcp/types.d.ts.map +1 -0
  129. package/dist/mcp/types.js +7 -0
  130. package/dist/mcp/types.js.map +1 -0
  131. package/dist/mcp/validation.d.ts +119 -0
  132. package/dist/mcp/validation.d.ts.map +1 -0
  133. package/dist/mcp/validation.js +407 -0
  134. package/dist/mcp/validation.js.map +1 -0
  135. package/dist/mcp/virtual-server.d.ts +78 -0
  136. package/dist/mcp/virtual-server.d.ts.map +1 -0
  137. package/dist/mcp/virtual-server.js +137 -0
  138. package/dist/mcp/virtual-server.js.map +1 -0
  139. package/dist/memory/filesystem-store.d.ts +217 -0
  140. package/dist/memory/filesystem-store.d.ts.map +1 -0
  141. package/dist/memory/filesystem-store.js +343 -0
  142. package/dist/memory/filesystem-store.js.map +1 -0
  143. package/dist/memory/index.d.ts +46 -0
  144. package/dist/memory/index.d.ts.map +1 -0
  145. package/dist/memory/index.js +46 -0
  146. package/dist/memory/index.js.map +1 -0
  147. package/dist/memory/loader.d.ts +396 -0
  148. package/dist/memory/loader.d.ts.map +1 -0
  149. package/dist/memory/loader.js +419 -0
  150. package/dist/memory/loader.js.map +1 -0
  151. package/dist/memory/permissions.d.ts +282 -0
  152. package/dist/memory/permissions.d.ts.map +1 -0
  153. package/dist/memory/permissions.js +297 -0
  154. package/dist/memory/permissions.js.map +1 -0
  155. package/dist/memory/rules.d.ts +249 -0
  156. package/dist/memory/rules.d.ts.map +1 -0
  157. package/dist/memory/rules.js +362 -0
  158. package/dist/memory/rules.js.map +1 -0
  159. package/dist/memory/store.d.ts +286 -0
  160. package/dist/memory/store.d.ts.map +1 -0
  161. package/dist/memory/store.js +263 -0
  162. package/dist/memory/store.js.map +1 -0
  163. package/dist/middleware/apply.d.ts +73 -0
  164. package/dist/middleware/apply.d.ts.map +1 -0
  165. package/dist/middleware/apply.js +219 -0
  166. package/dist/middleware/apply.js.map +1 -0
  167. package/dist/middleware/context.d.ts +33 -0
  168. package/dist/middleware/context.d.ts.map +1 -0
  169. package/dist/middleware/context.js +176 -0
  170. package/dist/middleware/context.js.map +1 -0
  171. package/dist/middleware/index.d.ts +31 -0
  172. package/dist/middleware/index.d.ts.map +1 -0
  173. package/dist/middleware/index.js +32 -0
  174. package/dist/middleware/index.js.map +1 -0
  175. package/dist/middleware/logging.d.ts +137 -0
  176. package/dist/middleware/logging.d.ts.map +1 -0
  177. package/dist/middleware/logging.js +374 -0
  178. package/dist/middleware/logging.js.map +1 -0
  179. package/dist/middleware/types.d.ts +183 -0
  180. package/dist/middleware/types.d.ts.map +1 -0
  181. package/dist/middleware/types.js +11 -0
  182. package/dist/middleware/types.js.map +1 -0
  183. package/dist/observability/events.d.ts +183 -0
  184. package/dist/observability/events.d.ts.map +1 -0
  185. package/dist/observability/events.js +305 -0
  186. package/dist/observability/events.js.map +1 -0
  187. package/dist/observability/index.d.ts +55 -0
  188. package/dist/observability/index.d.ts.map +1 -0
  189. package/dist/observability/index.js +87 -0
  190. package/dist/observability/index.js.map +1 -0
  191. package/dist/observability/logger.d.ts +318 -0
  192. package/dist/observability/logger.d.ts.map +1 -0
  193. package/dist/observability/logger.js +436 -0
  194. package/dist/observability/logger.js.map +1 -0
  195. package/dist/observability/metrics.d.ts +341 -0
  196. package/dist/observability/metrics.d.ts.map +1 -0
  197. package/dist/observability/metrics.js +490 -0
  198. package/dist/observability/metrics.js.map +1 -0
  199. package/dist/observability/preset.d.ts +161 -0
  200. package/dist/observability/preset.d.ts.map +1 -0
  201. package/dist/observability/preset.js +133 -0
  202. package/dist/observability/preset.js.map +1 -0
  203. package/dist/observability/streaming.d.ts +113 -0
  204. package/dist/observability/streaming.d.ts.map +1 -0
  205. package/dist/observability/streaming.js +114 -0
  206. package/dist/observability/streaming.js.map +1 -0
  207. package/dist/observability/tracing.d.ts +378 -0
  208. package/dist/observability/tracing.d.ts.map +1 -0
  209. package/dist/observability/tracing.js +539 -0
  210. package/dist/observability/tracing.js.map +1 -0
  211. package/dist/plugins.d.ts +55 -0
  212. package/dist/plugins.d.ts.map +1 -0
  213. package/dist/plugins.js +63 -0
  214. package/dist/plugins.js.map +1 -0
  215. package/dist/presets/index.d.ts +7 -0
  216. package/dist/presets/index.d.ts.map +1 -0
  217. package/dist/presets/index.js +7 -0
  218. package/dist/presets/index.js.map +1 -0
  219. package/dist/presets/production.d.ts +262 -0
  220. package/dist/presets/production.d.ts.map +1 -0
  221. package/dist/presets/production.js +295 -0
  222. package/dist/presets/production.js.map +1 -0
  223. package/dist/security/index.d.ts +179 -0
  224. package/dist/security/index.d.ts.map +1 -0
  225. package/dist/security/index.js +323 -0
  226. package/dist/security/index.js.map +1 -0
  227. package/dist/subagents/advanced.d.ts +413 -0
  228. package/dist/subagents/advanced.d.ts.map +1 -0
  229. package/dist/subagents/advanced.js +396 -0
  230. package/dist/subagents/advanced.js.map +1 -0
  231. package/dist/subagents/index.d.ts +14 -0
  232. package/dist/subagents/index.d.ts.map +1 -0
  233. package/dist/subagents/index.js +15 -0
  234. package/dist/subagents/index.js.map +1 -0
  235. package/dist/subagents.d.ts +73 -0
  236. package/dist/subagents.d.ts.map +1 -0
  237. package/dist/subagents.js +213 -0
  238. package/dist/subagents.js.map +1 -0
  239. package/dist/task-store/file-store.d.ts +76 -0
  240. package/dist/task-store/file-store.d.ts.map +1 -0
  241. package/dist/task-store/file-store.js +190 -0
  242. package/dist/task-store/file-store.js.map +1 -0
  243. package/dist/task-store/index.d.ts +11 -0
  244. package/dist/task-store/index.d.ts.map +1 -0
  245. package/dist/task-store/index.js +10 -0
  246. package/dist/task-store/index.js.map +1 -0
  247. package/dist/task-store/kv-store.d.ts +140 -0
  248. package/dist/task-store/kv-store.d.ts.map +1 -0
  249. package/dist/task-store/kv-store.js +169 -0
  250. package/dist/task-store/kv-store.js.map +1 -0
  251. package/dist/task-store/memory-store.d.ts +66 -0
  252. package/dist/task-store/memory-store.d.ts.map +1 -0
  253. package/dist/task-store/memory-store.js +125 -0
  254. package/dist/task-store/memory-store.js.map +1 -0
  255. package/dist/task-store/types.d.ts +235 -0
  256. package/dist/task-store/types.d.ts.map +1 -0
  257. package/dist/task-store/types.js +110 -0
  258. package/dist/task-store/types.js.map +1 -0
  259. package/dist/testing/assertions.d.ts +401 -0
  260. package/dist/testing/assertions.d.ts.map +1 -0
  261. package/dist/testing/assertions.js +630 -0
  262. package/dist/testing/assertions.js.map +1 -0
  263. package/dist/testing/index.d.ts +343 -0
  264. package/dist/testing/index.d.ts.map +1 -0
  265. package/dist/testing/index.js +360 -0
  266. package/dist/testing/index.js.map +1 -0
  267. package/dist/testing/mock-agent.d.ts +214 -0
  268. package/dist/testing/mock-agent.d.ts.map +1 -0
  269. package/dist/testing/mock-agent.js +448 -0
  270. package/dist/testing/mock-agent.js.map +1 -0
  271. package/dist/testing/recorder.d.ts +288 -0
  272. package/dist/testing/recorder.d.ts.map +1 -0
  273. package/dist/testing/recorder.js +499 -0
  274. package/dist/testing/recorder.js.map +1 -0
  275. package/dist/tools/execute.d.ts +104 -0
  276. package/dist/tools/execute.d.ts.map +1 -0
  277. package/dist/tools/execute.js +191 -0
  278. package/dist/tools/execute.js.map +1 -0
  279. package/dist/tools/factory.d.ts +260 -0
  280. package/dist/tools/factory.d.ts.map +1 -0
  281. package/dist/tools/factory.js +241 -0
  282. package/dist/tools/factory.js.map +1 -0
  283. package/dist/tools/filesystem.d.ts +215 -0
  284. package/dist/tools/filesystem.d.ts.map +1 -0
  285. package/dist/tools/filesystem.js +311 -0
  286. package/dist/tools/filesystem.js.map +1 -0
  287. package/dist/tools/index.d.ts +33 -0
  288. package/dist/tools/index.d.ts.map +1 -0
  289. package/dist/tools/index.js +33 -0
  290. package/dist/tools/index.js.map +1 -0
  291. package/dist/tools/search.d.ts +59 -0
  292. package/dist/tools/search.d.ts.map +1 -0
  293. package/dist/tools/search.js +94 -0
  294. package/dist/tools/search.js.map +1 -0
  295. package/dist/tools/skills.d.ts +354 -0
  296. package/dist/tools/skills.d.ts.map +1 -0
  297. package/dist/tools/skills.js +413 -0
  298. package/dist/tools/skills.js.map +1 -0
  299. package/dist/tools/task.d.ts +272 -0
  300. package/dist/tools/task.d.ts.map +1 -0
  301. package/dist/tools/task.js +521 -0
  302. package/dist/tools/task.js.map +1 -0
  303. package/dist/tools/todos.d.ts +131 -0
  304. package/dist/tools/todos.d.ts.map +1 -0
  305. package/dist/tools/todos.js +120 -0
  306. package/dist/tools/todos.js.map +1 -0
  307. package/dist/tools/tool-registry.d.ts +424 -0
  308. package/dist/tools/tool-registry.d.ts.map +1 -0
  309. package/dist/tools/tool-registry.js +607 -0
  310. package/dist/tools/tool-registry.js.map +1 -0
  311. package/dist/tools/user-interaction.d.ts +116 -0
  312. package/dist/tools/user-interaction.d.ts.map +1 -0
  313. package/dist/tools/user-interaction.js +147 -0
  314. package/dist/tools/user-interaction.js.map +1 -0
  315. package/dist/tools/utils.d.ts +124 -0
  316. package/dist/tools/utils.d.ts.map +1 -0
  317. package/dist/tools/utils.js +189 -0
  318. package/dist/tools/utils.js.map +1 -0
  319. package/dist/tools.d.ts +74 -0
  320. package/dist/tools.d.ts.map +1 -0
  321. package/dist/tools.js +73 -0
  322. package/dist/tools.js.map +1 -0
  323. package/dist/types.d.ts +2421 -0
  324. package/dist/types.d.ts.map +1 -0
  325. package/dist/types.js +55 -0
  326. package/dist/types.js.map +1 -0
  327. 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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"}