@n8n/agents 0.1.0

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 (231) hide show
  1. package/LICENSE.md +88 -0
  2. package/dist/build.tsbuildinfo +1 -0
  3. package/dist/evals/categorization.d.ts +2 -0
  4. package/dist/evals/categorization.js +23 -0
  5. package/dist/evals/categorization.js.map +1 -0
  6. package/dist/evals/contains-keywords.d.ts +2 -0
  7. package/dist/evals/contains-keywords.js +29 -0
  8. package/dist/evals/contains-keywords.js.map +1 -0
  9. package/dist/evals/correctness.d.ts +2 -0
  10. package/dist/evals/correctness.js +28 -0
  11. package/dist/evals/correctness.js.map +1 -0
  12. package/dist/evals/helpfulness.d.ts +2 -0
  13. package/dist/evals/helpfulness.js +26 -0
  14. package/dist/evals/helpfulness.js.map +1 -0
  15. package/dist/evals/index.d.ts +7 -0
  16. package/dist/evals/index.js +18 -0
  17. package/dist/evals/index.js.map +1 -0
  18. package/dist/evals/json-validity.d.ts +2 -0
  19. package/dist/evals/json-validity.js +21 -0
  20. package/dist/evals/json-validity.js.map +1 -0
  21. package/dist/evals/parse-judge-response.d.ts +2 -0
  22. package/dist/evals/parse-judge-response.js +25 -0
  23. package/dist/evals/parse-judge-response.js.map +1 -0
  24. package/dist/evals/string-similarity.d.ts +2 -0
  25. package/dist/evals/string-similarity.js +42 -0
  26. package/dist/evals/string-similarity.js.map +1 -0
  27. package/dist/evals/tool-call-accuracy.d.ts +2 -0
  28. package/dist/evals/tool-call-accuracy.js +29 -0
  29. package/dist/evals/tool-call-accuracy.js.map +1 -0
  30. package/dist/index.d.ts +34 -0
  31. package/dist/index.js +85 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/integrations/langsmith.d.ts +13 -0
  34. package/dist/integrations/langsmith.js +77 -0
  35. package/dist/integrations/langsmith.js.map +1 -0
  36. package/dist/runtime/agent-runtime.d.ts +80 -0
  37. package/dist/runtime/agent-runtime.js +1246 -0
  38. package/dist/runtime/agent-runtime.js.map +1 -0
  39. package/dist/runtime/event-bus.d.ts +14 -0
  40. package/dist/runtime/event-bus.js +53 -0
  41. package/dist/runtime/event-bus.js.map +1 -0
  42. package/dist/runtime/logger.d.ts +22 -0
  43. package/dist/runtime/logger.js +40 -0
  44. package/dist/runtime/logger.js.map +1 -0
  45. package/dist/runtime/mcp-connection.d.ts +23 -0
  46. package/dist/runtime/mcp-connection.js +135 -0
  47. package/dist/runtime/mcp-connection.js.map +1 -0
  48. package/dist/runtime/mcp-tool-resolver.d.ts +7 -0
  49. package/dist/runtime/mcp-tool-resolver.js +64 -0
  50. package/dist/runtime/mcp-tool-resolver.js.map +1 -0
  51. package/dist/runtime/memory-store.d.ts +29 -0
  52. package/dist/runtime/memory-store.js +68 -0
  53. package/dist/runtime/memory-store.js.map +1 -0
  54. package/dist/runtime/message-list.d.ts +25 -0
  55. package/dist/runtime/message-list.js +79 -0
  56. package/dist/runtime/message-list.js.map +1 -0
  57. package/dist/runtime/messages.d.ts +8 -0
  58. package/dist/runtime/messages.js +239 -0
  59. package/dist/runtime/messages.js.map +1 -0
  60. package/dist/runtime/model-factory.d.ts +33 -0
  61. package/dist/runtime/model-factory.js +68 -0
  62. package/dist/runtime/model-factory.js.map +1 -0
  63. package/dist/runtime/run-state.d.ts +9 -0
  64. package/dist/runtime/run-state.js +49 -0
  65. package/dist/runtime/run-state.js.map +1 -0
  66. package/dist/runtime/runtime-helpers.d.ts +21 -0
  67. package/dist/runtime/runtime-helpers.js +96 -0
  68. package/dist/runtime/runtime-helpers.js.map +1 -0
  69. package/dist/runtime/stream.d.ts +15 -0
  70. package/dist/runtime/stream.js +94 -0
  71. package/dist/runtime/stream.js.map +1 -0
  72. package/dist/runtime/strip-orphaned-tool-messages.d.ts +2 -0
  73. package/dist/runtime/strip-orphaned-tool-messages.js +48 -0
  74. package/dist/runtime/strip-orphaned-tool-messages.js.map +1 -0
  75. package/dist/runtime/title-generation.d.ts +11 -0
  76. package/dist/runtime/title-generation.js +56 -0
  77. package/dist/runtime/title-generation.js.map +1 -0
  78. package/dist/runtime/tool-adapter.d.ts +23 -0
  79. package/dist/runtime/tool-adapter.js +104 -0
  80. package/dist/runtime/tool-adapter.js.map +1 -0
  81. package/dist/runtime/working-memory.d.ts +21 -0
  82. package/dist/runtime/working-memory.js +138 -0
  83. package/dist/runtime/working-memory.js.map +1 -0
  84. package/dist/sdk/agent.d.ts +88 -0
  85. package/dist/sdk/agent.js +327 -0
  86. package/dist/sdk/agent.js.map +1 -0
  87. package/dist/sdk/catalog.d.ts +31 -0
  88. package/dist/sdk/catalog.js +80 -0
  89. package/dist/sdk/catalog.js.map +1 -0
  90. package/dist/sdk/eval.d.ts +23 -0
  91. package/dist/sdk/eval.js +99 -0
  92. package/dist/sdk/eval.js.map +1 -0
  93. package/dist/sdk/evaluate.d.ts +13 -0
  94. package/dist/sdk/evaluate.js +84 -0
  95. package/dist/sdk/evaluate.js.map +1 -0
  96. package/dist/sdk/guardrail.d.ts +14 -0
  97. package/dist/sdk/guardrail.js +41 -0
  98. package/dist/sdk/guardrail.js.map +1 -0
  99. package/dist/sdk/mcp-client.d.ts +16 -0
  100. package/dist/sdk/mcp-client.js +128 -0
  101. package/dist/sdk/mcp-client.js.map +1 -0
  102. package/dist/sdk/memory.d.ts +22 -0
  103. package/dist/sdk/memory.js +101 -0
  104. package/dist/sdk/memory.js.map +1 -0
  105. package/dist/sdk/message.d.ts +4 -0
  106. package/dist/sdk/message.js +18 -0
  107. package/dist/sdk/message.js.map +1 -0
  108. package/dist/sdk/network.d.ts +20 -0
  109. package/dist/sdk/network.js +46 -0
  110. package/dist/sdk/network.js.map +1 -0
  111. package/dist/sdk/provider-tools.d.ts +18 -0
  112. package/dist/sdk/provider-tools.js +31 -0
  113. package/dist/sdk/provider-tools.js.map +1 -0
  114. package/dist/sdk/telemetry.d.ts +31 -0
  115. package/dist/sdk/telemetry.js +186 -0
  116. package/dist/sdk/telemetry.js.map +1 -0
  117. package/dist/sdk/tool.d.ts +38 -0
  118. package/dist/sdk/tool.js +143 -0
  119. package/dist/sdk/tool.js.map +1 -0
  120. package/dist/sdk/verify.d.ts +5 -0
  121. package/dist/sdk/verify.js +37 -0
  122. package/dist/sdk/verify.js.map +1 -0
  123. package/dist/storage/postgres-memory.d.ts +79 -0
  124. package/dist/storage/postgres-memory.js +411 -0
  125. package/dist/storage/postgres-memory.js.map +1 -0
  126. package/dist/storage/sqlite-memory.d.ts +60 -0
  127. package/dist/storage/sqlite-memory.js +349 -0
  128. package/dist/storage/sqlite-memory.js.map +1 -0
  129. package/dist/types/index.d.ts +13 -0
  130. package/dist/types/index.js +6 -0
  131. package/dist/types/index.js.map +1 -0
  132. package/dist/types/runtime/event.d.ts +41 -0
  133. package/dist/types/runtime/event.js +14 -0
  134. package/dist/types/runtime/event.js.map +1 -0
  135. package/dist/types/runtime/message-list.d.ts +7 -0
  136. package/dist/types/runtime/message-list.js +3 -0
  137. package/dist/types/runtime/message-list.js.map +1 -0
  138. package/dist/types/sdk/agent.d.ts +174 -0
  139. package/dist/types/sdk/agent.js +3 -0
  140. package/dist/types/sdk/agent.js.map +1 -0
  141. package/dist/types/sdk/eval.d.ts +41 -0
  142. package/dist/types/sdk/eval.js +3 -0
  143. package/dist/types/sdk/eval.js.map +1 -0
  144. package/dist/types/sdk/guardrail.d.ts +9 -0
  145. package/dist/types/sdk/guardrail.js +3 -0
  146. package/dist/types/sdk/guardrail.js.map +1 -0
  147. package/dist/types/sdk/mcp.d.ts +24 -0
  148. package/dist/types/sdk/mcp.js +3 -0
  149. package/dist/types/sdk/mcp.js.map +1 -0
  150. package/dist/types/sdk/memory.d.ts +99 -0
  151. package/dist/types/sdk/memory.js +3 -0
  152. package/dist/types/sdk/memory.js.map +1 -0
  153. package/dist/types/sdk/message.d.ts +79 -0
  154. package/dist/types/sdk/message.js +3 -0
  155. package/dist/types/sdk/message.js.map +1 -0
  156. package/dist/types/sdk/provider.d.ts +16 -0
  157. package/dist/types/sdk/provider.js +3 -0
  158. package/dist/types/sdk/provider.js.map +1 -0
  159. package/dist/types/sdk/tool.d.ts +32 -0
  160. package/dist/types/sdk/tool.js +3 -0
  161. package/dist/types/sdk/tool.js.map +1 -0
  162. package/dist/types/telemetry.d.ts +18 -0
  163. package/dist/types/telemetry.js +3 -0
  164. package/dist/types/telemetry.js.map +1 -0
  165. package/dist/types/utils/json.d.ts +5 -0
  166. package/dist/types/utils/json.js +3 -0
  167. package/dist/types/utils/json.js.map +1 -0
  168. package/dist/utils/zod.d.ts +3 -0
  169. package/dist/utils/zod.js +7 -0
  170. package/dist/utils/zod.js.map +1 -0
  171. package/dist/workspace/filesystem/base-filesystem.d.ts +40 -0
  172. package/dist/workspace/filesystem/base-filesystem.js +99 -0
  173. package/dist/workspace/filesystem/base-filesystem.js.map +1 -0
  174. package/dist/workspace/index.d.ts +8 -0
  175. package/dist/workspace/index.js +17 -0
  176. package/dist/workspace/index.js.map +1 -0
  177. package/dist/workspace/lifecycle.d.ts +13 -0
  178. package/dist/workspace/lifecycle.js +11 -0
  179. package/dist/workspace/lifecycle.js.map +1 -0
  180. package/dist/workspace/process.d.ts +36 -0
  181. package/dist/workspace/process.js +76 -0
  182. package/dist/workspace/process.js.map +1 -0
  183. package/dist/workspace/sandbox/base-sandbox.d.ts +28 -0
  184. package/dist/workspace/sandbox/base-sandbox.js +163 -0
  185. package/dist/workspace/sandbox/base-sandbox.js.map +1 -0
  186. package/dist/workspace/tools/append-file.d.ts +3 -0
  187. package/dist/workspace/tools/append-file.js +22 -0
  188. package/dist/workspace/tools/append-file.js.map +1 -0
  189. package/dist/workspace/tools/copy-file.d.ts +3 -0
  190. package/dist/workspace/tools/copy-file.js +26 -0
  191. package/dist/workspace/tools/copy-file.js.map +1 -0
  192. package/dist/workspace/tools/delete-file.d.ts +3 -0
  193. package/dist/workspace/tools/delete-file.js +26 -0
  194. package/dist/workspace/tools/delete-file.js.map +1 -0
  195. package/dist/workspace/tools/execute-command.d.ts +3 -0
  196. package/dist/workspace/tools/execute-command.js +39 -0
  197. package/dist/workspace/tools/execute-command.js.map +1 -0
  198. package/dist/workspace/tools/file-stat.d.ts +3 -0
  199. package/dist/workspace/tools/file-stat.js +33 -0
  200. package/dist/workspace/tools/file-stat.js.map +1 -0
  201. package/dist/workspace/tools/list-files.d.ts +3 -0
  202. package/dist/workspace/tools/list-files.js +28 -0
  203. package/dist/workspace/tools/list-files.js.map +1 -0
  204. package/dist/workspace/tools/mkdir.d.ts +3 -0
  205. package/dist/workspace/tools/mkdir.js +22 -0
  206. package/dist/workspace/tools/mkdir.js.map +1 -0
  207. package/dist/workspace/tools/move-file.d.ts +3 -0
  208. package/dist/workspace/tools/move-file.js +26 -0
  209. package/dist/workspace/tools/move-file.js.map +1 -0
  210. package/dist/workspace/tools/process-tools.d.ts +4 -0
  211. package/dist/workspace/tools/process-tools.js +37 -0
  212. package/dist/workspace/tools/process-tools.js.map +1 -0
  213. package/dist/workspace/tools/read-file.d.ts +3 -0
  214. package/dist/workspace/tools/read-file.js +24 -0
  215. package/dist/workspace/tools/read-file.js.map +1 -0
  216. package/dist/workspace/tools/rmdir.d.ts +3 -0
  217. package/dist/workspace/tools/rmdir.js +26 -0
  218. package/dist/workspace/tools/rmdir.js.map +1 -0
  219. package/dist/workspace/tools/workspace-tools.d.ts +8 -0
  220. package/dist/workspace/tools/workspace-tools.js +39 -0
  221. package/dist/workspace/tools/workspace-tools.js.map +1 -0
  222. package/dist/workspace/tools/write-file.d.ts +3 -0
  223. package/dist/workspace/tools/write-file.js +26 -0
  224. package/dist/workspace/tools/write-file.js.map +1 -0
  225. package/dist/workspace/types.d.ts +178 -0
  226. package/dist/workspace/types.js +7 -0
  227. package/dist/workspace/types.js.map +1 -0
  228. package/dist/workspace/workspace.d.ts +21 -0
  229. package/dist/workspace/workspace.js +131 -0
  230. package/dist/workspace/workspace.js.map +1 -0
  231. package/package.json +65 -0
@@ -0,0 +1,36 @@
1
+ import { Readable, Writable } from 'node:stream';
2
+ import type { SpawnProcessOptions, ProcessInfo, CommandResult } from './types';
3
+ export declare abstract class SandboxProcessManager {
4
+ abstract spawn(command: string, options?: SpawnProcessOptions): Promise<ProcessHandle>;
5
+ abstract list(): Promise<ProcessInfo[]>;
6
+ abstract get(pid: number): Promise<ProcessHandle | undefined>;
7
+ abstract kill(pid: number): Promise<boolean>;
8
+ }
9
+ export declare abstract class ProcessHandle {
10
+ abstract readonly pid: number;
11
+ abstract readonly exitCode: number | undefined;
12
+ command?: string;
13
+ private _stdout;
14
+ private _stderr;
15
+ private _stdoutListeners;
16
+ private _stderrListeners;
17
+ private _reader?;
18
+ private _writer?;
19
+ private _completion?;
20
+ abstract kill(): Promise<boolean>;
21
+ abstract sendStdin(data: string): Promise<void>;
22
+ protected abstract _wait(): Promise<CommandResult>;
23
+ constructor(options?: Pick<SpawnProcessOptions, 'onStdout' | 'onStderr'>);
24
+ wait(options?: {
25
+ onStdout?: (data: string) => void;
26
+ onStderr?: (data: string) => void;
27
+ }): Promise<CommandResult>;
28
+ get stdout(): string;
29
+ get stderr(): string;
30
+ protected emitStdout(data: string): void;
31
+ protected emitStderr(data: string): void;
32
+ addStdoutListener(listener: (data: string) => void): void;
33
+ addStderrListener(listener: (data: string) => void): void;
34
+ get reader(): Readable;
35
+ get writer(): Writable;
36
+ }
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProcessHandle = exports.SandboxProcessManager = void 0;
4
+ const node_stream_1 = require("node:stream");
5
+ class SandboxProcessManager {
6
+ }
7
+ exports.SandboxProcessManager = SandboxProcessManager;
8
+ class ProcessHandle {
9
+ constructor(options) {
10
+ this._stdout = '';
11
+ this._stderr = '';
12
+ this._stdoutListeners = new Set();
13
+ this._stderrListeners = new Set();
14
+ if (options?.onStdout)
15
+ this._stdoutListeners.add(options.onStdout);
16
+ if (options?.onStderr)
17
+ this._stderrListeners.add(options.onStderr);
18
+ }
19
+ async wait(options) {
20
+ if (options?.onStdout)
21
+ this._stdoutListeners.add(options.onStdout);
22
+ if (options?.onStderr)
23
+ this._stderrListeners.add(options.onStderr);
24
+ this._completion ??= this._wait();
25
+ try {
26
+ return await this._completion;
27
+ }
28
+ finally {
29
+ if (options?.onStdout)
30
+ this._stdoutListeners.delete(options.onStdout);
31
+ if (options?.onStderr)
32
+ this._stderrListeners.delete(options.onStderr);
33
+ }
34
+ }
35
+ get stdout() {
36
+ return this._stdout;
37
+ }
38
+ get stderr() {
39
+ return this._stderr;
40
+ }
41
+ emitStdout(data) {
42
+ this._stdout += data;
43
+ for (const listener of this._stdoutListeners)
44
+ listener(data);
45
+ this._reader?.push(data);
46
+ }
47
+ emitStderr(data) {
48
+ this._stderr += data;
49
+ for (const listener of this._stderrListeners)
50
+ listener(data);
51
+ }
52
+ addStdoutListener(listener) {
53
+ this._stdoutListeners.add(listener);
54
+ }
55
+ addStderrListener(listener) {
56
+ this._stderrListeners.add(listener);
57
+ }
58
+ get reader() {
59
+ if (!this._reader) {
60
+ this._reader = new node_stream_1.Readable({ read() { } });
61
+ this._completion ??= this._wait();
62
+ void this._completion.then(() => this._reader.push(null), () => this._reader.push(null));
63
+ }
64
+ return this._reader;
65
+ }
66
+ get writer() {
67
+ this._writer ??= new node_stream_1.Writable({
68
+ write: (chunk, _encoding, callbackFn) => {
69
+ this.sendStdin(chunk.toString()).then(() => callbackFn(), callbackFn);
70
+ },
71
+ });
72
+ return this._writer;
73
+ }
74
+ }
75
+ exports.ProcessHandle = ProcessHandle;
76
+ //# sourceMappingURL=process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/workspace/process.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { ProviderStatus, WorkspaceSandbox, BaseSandboxOptions, CommandResult, ExecuteCommandOptions, SandboxProcessManager } from '../types';
2
+ export declare function shellQuote(arg: string): string;
3
+ export declare abstract class BaseSandbox implements WorkspaceSandbox {
4
+ abstract readonly id: string;
5
+ abstract readonly name: string;
6
+ abstract readonly provider: string;
7
+ status: ProviderStatus;
8
+ readonly processes?: SandboxProcessManager;
9
+ private startPromise?;
10
+ private stopPromise?;
11
+ private destroyPromise?;
12
+ private readonly onStartHook?;
13
+ private readonly onStopHook?;
14
+ private readonly onDestroyHook?;
15
+ constructor(options?: BaseSandboxOptions);
16
+ abstract start(): Promise<void>;
17
+ abstract stop(): Promise<void>;
18
+ abstract destroy(): Promise<void>;
19
+ _start(): Promise<void>;
20
+ _stop(): Promise<void>;
21
+ _destroy(): Promise<void>;
22
+ ensureRunning(): Promise<void>;
23
+ executeCommand(command: string, args?: string[], options?: ExecuteCommandOptions): Promise<CommandResult>;
24
+ getInstructions(): string;
25
+ private executeStart;
26
+ private executeStop;
27
+ private executeDestroy;
28
+ }
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseSandbox = void 0;
4
+ exports.shellQuote = shellQuote;
5
+ function shellQuote(arg) {
6
+ if (/^[a-zA-Z0-9._\-/=:@]+$/.test(arg))
7
+ return arg;
8
+ return `'${arg.replace(/'/g, "'\\''")}'`;
9
+ }
10
+ class BaseSandbox {
11
+ constructor(options) {
12
+ this.status = 'pending';
13
+ if (options?.processes) {
14
+ this.processes = options.processes;
15
+ }
16
+ this.onStartHook = options?.onStart;
17
+ this.onStopHook = options?.onStop;
18
+ this.onDestroyHook = options?.onDestroy;
19
+ }
20
+ async _start() {
21
+ if (this.status === 'running')
22
+ return;
23
+ if (this.stopPromise)
24
+ await this.stopPromise;
25
+ if (this.destroyPromise)
26
+ await this.destroyPromise;
27
+ if (this.status === 'destroyed') {
28
+ throw new Error('Cannot start a destroyed sandbox');
29
+ }
30
+ if (this.startPromise)
31
+ return await this.startPromise;
32
+ this.startPromise = this.executeStart();
33
+ try {
34
+ await this.startPromise;
35
+ }
36
+ finally {
37
+ this.startPromise = undefined;
38
+ }
39
+ }
40
+ async _stop() {
41
+ if (this.status === 'stopped' || this.status === 'pending')
42
+ return;
43
+ if (this.status === 'destroyed' || this.status === 'destroying')
44
+ return;
45
+ if (this.startPromise)
46
+ await this.startPromise.catch(() => { });
47
+ if (this.stopPromise)
48
+ return await this.stopPromise;
49
+ this.stopPromise = this.executeStop();
50
+ try {
51
+ await this.stopPromise;
52
+ }
53
+ finally {
54
+ this.stopPromise = undefined;
55
+ }
56
+ }
57
+ async _destroy() {
58
+ if (this.status === 'destroyed')
59
+ return;
60
+ if (this.status === 'pending') {
61
+ this.status = 'destroyed';
62
+ return;
63
+ }
64
+ if (this.startPromise)
65
+ await this.startPromise.catch(() => { });
66
+ if (this.stopPromise)
67
+ await this.stopPromise.catch(() => { });
68
+ if (this.destroyPromise)
69
+ return await this.destroyPromise;
70
+ this.destroyPromise = this.executeDestroy();
71
+ try {
72
+ await this.destroyPromise;
73
+ }
74
+ finally {
75
+ this.destroyPromise = undefined;
76
+ }
77
+ }
78
+ async ensureRunning() {
79
+ if (this.status === 'destroyed') {
80
+ throw new Error(`Sandbox "${this.name}" has been destroyed`);
81
+ }
82
+ if (this.status === 'destroying') {
83
+ if (this.destroyPromise)
84
+ await this.destroyPromise.catch(() => { });
85
+ throw new Error(`Sandbox "${this.name}" has been destroyed`);
86
+ }
87
+ if (this.status === 'stopping') {
88
+ if (this.stopPromise)
89
+ await this.stopPromise.catch(() => { });
90
+ }
91
+ if (this.status !== 'running') {
92
+ await this._start();
93
+ }
94
+ if (this.status !== 'running') {
95
+ throw new Error(`Sandbox "${this.name}" failed to start (status: ${this.status})`);
96
+ }
97
+ }
98
+ async executeCommand(command, args, options) {
99
+ await this.ensureRunning();
100
+ if (!this.processes) {
101
+ throw new Error(`Sandbox "${this.name}" has no process manager`);
102
+ }
103
+ const fullCommand = args?.length ? `${command} ${args.map(shellQuote).join(' ')}` : command;
104
+ const handle = await this.processes.spawn(fullCommand, options);
105
+ return await handle.wait({
106
+ onStdout: options?.onStdout,
107
+ onStderr: options?.onStderr,
108
+ });
109
+ }
110
+ getInstructions() {
111
+ return '';
112
+ }
113
+ async executeStart() {
114
+ this.status = 'starting';
115
+ try {
116
+ await this.start();
117
+ this.status = 'running';
118
+ try {
119
+ await this.onStartHook?.({ sandbox: this });
120
+ }
121
+ catch {
122
+ }
123
+ }
124
+ catch (error) {
125
+ this.status = 'error';
126
+ throw error;
127
+ }
128
+ }
129
+ async executeStop() {
130
+ this.status = 'stopping';
131
+ try {
132
+ await this.onStopHook?.({ sandbox: this });
133
+ }
134
+ catch {
135
+ }
136
+ try {
137
+ await this.stop();
138
+ this.status = 'stopped';
139
+ }
140
+ catch (error) {
141
+ this.status = 'error';
142
+ throw error;
143
+ }
144
+ }
145
+ async executeDestroy() {
146
+ this.status = 'destroying';
147
+ try {
148
+ await this.onDestroyHook?.({ sandbox: this });
149
+ }
150
+ catch {
151
+ }
152
+ try {
153
+ await this.destroy();
154
+ this.status = 'destroyed';
155
+ }
156
+ catch (error) {
157
+ this.status = 'error';
158
+ throw error;
159
+ }
160
+ }
161
+ }
162
+ exports.BaseSandbox = BaseSandbox;
163
+ //# sourceMappingURL=base-sandbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-sandbox.js","sourceRoot":"","sources":["../../../src/workspace/sandbox/base-sandbox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { BuiltTool } from '../../types/sdk/tool';
2
+ import type { WorkspaceFilesystem } from '../types';
3
+ export declare function createAppendFileTool(filesystem: WorkspaceFilesystem): BuiltTool;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createAppendFileTool = createAppendFileTool;
4
+ const zod_1 = require("zod");
5
+ const tool_1 = require("../../sdk/tool");
6
+ function createAppendFileTool(filesystem) {
7
+ return new tool_1.Tool('workspace_append_file')
8
+ .description('Append content to a file in the workspace')
9
+ .input(zod_1.z.object({
10
+ path: zod_1.z.string().describe('Path to the file to append to'),
11
+ content: zod_1.z.string().describe('Content to append to the file'),
12
+ }))
13
+ .output(zod_1.z.object({
14
+ success: zod_1.z.boolean().describe('Whether the append was successful'),
15
+ }))
16
+ .handler(async (input) => {
17
+ await filesystem.appendFile(input.path, input.content);
18
+ return { success: true };
19
+ })
20
+ .build();
21
+ }
22
+ //# sourceMappingURL=append-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"append-file.js","sourceRoot":"","sources":["../../../src/workspace/tools/append-file.ts"],"names":[],"mappings":";;AAMA,oDAmBC;AAzBD,6BAAwB;AAExB,yCAAsC;AAItC,SAAgB,oBAAoB,CAAC,UAA+B;IACnE,OAAO,IAAI,WAAI,CAAC,uBAAuB,CAAC;SACtC,WAAW,CAAC,2CAA2C,CAAC;SACxD,KAAK,CACL,OAAC,CAAC,MAAM,CAAC;QACR,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;QAC1D,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;KAC7D,CAAC,CACF;SACA,MAAM,CACN,OAAC,CAAC,MAAM,CAAC;QACR,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;KAClE,CAAC,CACF;SACA,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACxB,MAAM,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACvD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC,CAAC;SACD,KAAK,EAAE,CAAC;AACX,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BuiltTool } from '../../types/sdk/tool';
2
+ import type { WorkspaceFilesystem } from '../types';
3
+ export declare function createCopyFileTool(filesystem: WorkspaceFilesystem): BuiltTool;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createCopyFileTool = createCopyFileTool;
4
+ const zod_1 = require("zod");
5
+ const tool_1 = require("../../sdk/tool");
6
+ function createCopyFileTool(filesystem) {
7
+ return new tool_1.Tool('workspace_copy_file')
8
+ .description('Copy a file or directory in the workspace')
9
+ .input(zod_1.z.object({
10
+ src: zod_1.z.string().describe('Source path of the file or directory to copy'),
11
+ dest: zod_1.z.string().describe('Destination path for the copy'),
12
+ overwrite: zod_1.z
13
+ .boolean()
14
+ .optional()
15
+ .describe('Overwrite the destination if it already exists'),
16
+ }))
17
+ .output(zod_1.z.object({
18
+ success: zod_1.z.boolean().describe('Whether the copy was successful'),
19
+ }))
20
+ .handler(async (input) => {
21
+ await filesystem.copyFile(input.src, input.dest, { overwrite: input.overwrite });
22
+ return { success: true };
23
+ })
24
+ .build();
25
+ }
26
+ //# sourceMappingURL=copy-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy-file.js","sourceRoot":"","sources":["../../../src/workspace/tools/copy-file.ts"],"names":[],"mappings":";;AAMA,gDAuBC;AA7BD,6BAAwB;AAExB,yCAAsC;AAItC,SAAgB,kBAAkB,CAAC,UAA+B;IACjE,OAAO,IAAI,WAAI,CAAC,qBAAqB,CAAC;SACpC,WAAW,CAAC,2CAA2C,CAAC;SACxD,KAAK,CACL,OAAC,CAAC,MAAM,CAAC;QACR,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;QACxE,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;QAC1D,SAAS,EAAE,OAAC;aACV,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,QAAQ,CAAC,gDAAgD,CAAC;KAC5D,CAAC,CACF;SACA,MAAM,CACN,OAAC,CAAC,MAAM,CAAC;QACR,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;KAChE,CAAC,CACF;SACA,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACxB,MAAM,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACjF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC,CAAC;SACD,KAAK,EAAE,CAAC;AACX,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BuiltTool } from '../../types/sdk/tool';
2
+ import type { WorkspaceFilesystem } from '../types';
3
+ export declare function createDeleteFileTool(filesystem: WorkspaceFilesystem): BuiltTool;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createDeleteFileTool = createDeleteFileTool;
4
+ const zod_1 = require("zod");
5
+ const tool_1 = require("../../sdk/tool");
6
+ function createDeleteFileTool(filesystem) {
7
+ return new tool_1.Tool('workspace_delete_file')
8
+ .description('Delete a file or directory from the workspace')
9
+ .input(zod_1.z.object({
10
+ path: zod_1.z.string().describe('Path to the file or directory to delete'),
11
+ recursive: zod_1.z
12
+ .boolean()
13
+ .optional()
14
+ .describe('Delete directories and their contents recursively'),
15
+ force: zod_1.z.boolean().optional().describe('Ignore errors if the file does not exist'),
16
+ }))
17
+ .output(zod_1.z.object({
18
+ success: zod_1.z.boolean().describe('Whether the deletion was successful'),
19
+ }))
20
+ .handler(async (input) => {
21
+ await filesystem.deleteFile(input.path, { recursive: input.recursive, force: input.force });
22
+ return { success: true };
23
+ })
24
+ .build();
25
+ }
26
+ //# sourceMappingURL=delete-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-file.js","sourceRoot":"","sources":["../../../src/workspace/tools/delete-file.ts"],"names":[],"mappings":";;AAMA,oDAuBC;AA7BD,6BAAwB;AAExB,yCAAsC;AAItC,SAAgB,oBAAoB,CAAC,UAA+B;IACnE,OAAO,IAAI,WAAI,CAAC,uBAAuB,CAAC;SACtC,WAAW,CAAC,+CAA+C,CAAC;SAC5D,KAAK,CACL,OAAC,CAAC,MAAM,CAAC;QACR,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;QACpE,SAAS,EAAE,OAAC;aACV,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,QAAQ,CAAC,mDAAmD,CAAC;QAC/D,KAAK,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;KAClF,CAAC,CACF;SACA,MAAM,CACN,OAAC,CAAC,MAAM,CAAC;QACR,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;KACpE,CAAC,CACF;SACA,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACxB,MAAM,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC,CAAC;SACD,KAAK,EAAE,CAAC;AACX,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BuiltTool } from '../../types/sdk/tool';
2
+ import type { WorkspaceSandbox } from '../types';
3
+ export declare function createExecuteCommandTool(sandbox: WorkspaceSandbox): BuiltTool;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createExecuteCommandTool = createExecuteCommandTool;
4
+ const zod_1 = require("zod");
5
+ const tool_1 = require("../../sdk/tool");
6
+ function createExecuteCommandTool(sandbox) {
7
+ return new tool_1.Tool('workspace_execute_command')
8
+ .description('Execute a shell command in the sandbox')
9
+ .input(zod_1.z.object({
10
+ command: zod_1.z.string().describe('The shell command to execute'),
11
+ cwd: zod_1.z.string().optional().describe('Working directory for the command'),
12
+ timeout: zod_1.z.number().optional().describe('Timeout in milliseconds'),
13
+ }))
14
+ .output(zod_1.z.object({
15
+ success: zod_1.z.boolean(),
16
+ exitCode: zod_1.z.number(),
17
+ stdout: zod_1.z.string(),
18
+ stderr: zod_1.z.string(),
19
+ executionTimeMs: zod_1.z.number(),
20
+ }))
21
+ .handler(async (input) => {
22
+ if (!sandbox.executeCommand) {
23
+ throw new Error('Sandbox does not support command execution');
24
+ }
25
+ const result = await sandbox.executeCommand(input.command, undefined, {
26
+ cwd: input.cwd,
27
+ timeout: input.timeout,
28
+ });
29
+ return {
30
+ success: result.success,
31
+ exitCode: result.exitCode,
32
+ stdout: result.stdout,
33
+ stderr: result.stderr,
34
+ executionTimeMs: result.executionTimeMs,
35
+ };
36
+ })
37
+ .build();
38
+ }
39
+ //# sourceMappingURL=execute-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute-command.js","sourceRoot":"","sources":["../../../src/workspace/tools/execute-command.ts"],"names":[],"mappings":";;AAMA,4DAoCC;AA1CD,6BAAwB;AAExB,yCAAsC;AAItC,SAAgB,wBAAwB,CAAC,OAAyB;IACjE,OAAO,IAAI,WAAI,CAAC,2BAA2B,CAAC;SAC1C,WAAW,CAAC,wCAAwC,CAAC;SACrD,KAAK,CACL,OAAC,CAAC,MAAM,CAAC;QACR,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QAC5D,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QACxE,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;KAClE,CAAC,CACF;SACA,MAAM,CACN,OAAC,CAAC,MAAM,CAAC;QACR,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE;QACpB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;QACpB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;QAClB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;QAClB,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE;KAC3B,CAAC,CACF;SACA,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACxB,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE;YACrE,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,OAAO,EAAE,KAAK,CAAC,OAAO;SACtB,CAAC,CAAC;QACH,OAAO;YACN,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,eAAe,EAAE,MAAM,CAAC,eAAe;SACvC,CAAC;IACH,CAAC,CAAC;SACD,KAAK,EAAE,CAAC;AACX,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BuiltTool } from '../../types/sdk/tool';
2
+ import type { WorkspaceFilesystem } from '../types';
3
+ export declare function createFileStatTool(filesystem: WorkspaceFilesystem): BuiltTool;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createFileStatTool = createFileStatTool;
4
+ const zod_1 = require("zod");
5
+ const tool_1 = require("../../sdk/tool");
6
+ function createFileStatTool(filesystem) {
7
+ return new tool_1.Tool('workspace_file_stat')
8
+ .description('Get metadata about a file or directory')
9
+ .input(zod_1.z.object({
10
+ path: zod_1.z.string().describe('Path to the file or directory'),
11
+ }))
12
+ .output(zod_1.z.object({
13
+ name: zod_1.z.string(),
14
+ path: zod_1.z.string(),
15
+ type: zod_1.z.enum(['file', 'directory']),
16
+ size: zod_1.z.number(),
17
+ createdAt: zod_1.z.string(),
18
+ modifiedAt: zod_1.z.string(),
19
+ }))
20
+ .handler(async (input) => {
21
+ const stat = await filesystem.stat(input.path);
22
+ return {
23
+ name: stat.name,
24
+ path: stat.path,
25
+ type: stat.type,
26
+ size: stat.size,
27
+ createdAt: stat.createdAt.toISOString(),
28
+ modifiedAt: stat.modifiedAt.toISOString(),
29
+ };
30
+ })
31
+ .build();
32
+ }
33
+ //# sourceMappingURL=file-stat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-stat.js","sourceRoot":"","sources":["../../../src/workspace/tools/file-stat.ts"],"names":[],"mappings":";;AAMA,gDA8BC;AApCD,6BAAwB;AAExB,yCAAsC;AAItC,SAAgB,kBAAkB,CAAC,UAA+B;IACjE,OAAO,IAAI,WAAI,CAAC,qBAAqB,CAAC;SACpC,WAAW,CAAC,wCAAwC,CAAC;SACrD,KAAK,CACL,OAAC,CAAC,MAAM,CAAC;QACR,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;KAC1D,CAAC,CACF;SACA,MAAM,CACN,OAAC,CAAC,MAAM,CAAC;QACR,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;QAChB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;QAChB,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACnC,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;QAChB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;QACrB,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE;KACtB,CAAC,CACF;SACA,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACxB,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/C,OAAO;YACN,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;YACvC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;SACzC,CAAC;IACH,CAAC,CAAC;SACD,KAAK,EAAE,CAAC;AACX,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BuiltTool } from '../../types/sdk/tool';
2
+ import type { WorkspaceFilesystem } from '../types';
3
+ export declare function createListFilesTool(filesystem: WorkspaceFilesystem): BuiltTool;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createListFilesTool = createListFilesTool;
4
+ const zod_1 = require("zod");
5
+ const tool_1 = require("../../sdk/tool");
6
+ function createListFilesTool(filesystem) {
7
+ return new tool_1.Tool('workspace_list_files')
8
+ .description('List files and directories in the workspace')
9
+ .input(zod_1.z.object({
10
+ path: zod_1.z.string().describe('Directory path to list'),
11
+ recursive: zod_1.z.boolean().optional().describe('List files recursively'),
12
+ }))
13
+ .output(zod_1.z.object({
14
+ entries: zod_1.z
15
+ .array(zod_1.z.object({
16
+ name: zod_1.z.string(),
17
+ type: zod_1.z.enum(['file', 'directory']),
18
+ size: zod_1.z.number().optional(),
19
+ }))
20
+ .describe('List of file entries'),
21
+ }))
22
+ .handler(async (input) => {
23
+ const entries = await filesystem.readdir(input.path, { recursive: input.recursive });
24
+ return { entries };
25
+ })
26
+ .build();
27
+ }
28
+ //# sourceMappingURL=list-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-files.js","sourceRoot":"","sources":["../../../src/workspace/tools/list-files.ts"],"names":[],"mappings":";;AAMA,kDA2BC;AAjCD,6BAAwB;AAExB,yCAAsC;AAItC,SAAgB,mBAAmB,CAAC,UAA+B;IAClE,OAAO,IAAI,WAAI,CAAC,sBAAsB,CAAC;SACrC,WAAW,CAAC,6CAA6C,CAAC;SAC1D,KAAK,CACL,OAAC,CAAC,MAAM,CAAC;QACR,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;QACnD,SAAS,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;KACpE,CAAC,CACF;SACA,MAAM,CACN,OAAC,CAAC,MAAM,CAAC;QACR,OAAO,EAAE,OAAC;aACR,KAAK,CACL,OAAC,CAAC,MAAM,CAAC;YACR,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;YAChB,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACnC,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC3B,CAAC,CACF;aACA,QAAQ,CAAC,sBAAsB,CAAC;KAClC,CAAC,CACF;SACA,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACxB,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACrF,OAAO,EAAE,OAAO,EAAE,CAAC;IACpB,CAAC,CAAC;SACD,KAAK,EAAE,CAAC;AACX,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BuiltTool } from '../../types/sdk/tool';
2
+ import type { WorkspaceFilesystem } from '../types';
3
+ export declare function createMkdirTool(filesystem: WorkspaceFilesystem): BuiltTool;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMkdirTool = createMkdirTool;
4
+ const zod_1 = require("zod");
5
+ const tool_1 = require("../../sdk/tool");
6
+ function createMkdirTool(filesystem) {
7
+ return new tool_1.Tool('workspace_mkdir')
8
+ .description('Create a directory in the workspace')
9
+ .input(zod_1.z.object({
10
+ path: zod_1.z.string().describe('Path of the directory to create'),
11
+ recursive: zod_1.z.boolean().optional().describe('Create parent directories if needed'),
12
+ }))
13
+ .output(zod_1.z.object({
14
+ success: zod_1.z.boolean().describe('Whether the directory was created'),
15
+ }))
16
+ .handler(async (input) => {
17
+ await filesystem.mkdir(input.path, { recursive: input.recursive });
18
+ return { success: true };
19
+ })
20
+ .build();
21
+ }
22
+ //# sourceMappingURL=mkdir.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mkdir.js","sourceRoot":"","sources":["../../../src/workspace/tools/mkdir.ts"],"names":[],"mappings":";;AAMA,0CAmBC;AAzBD,6BAAwB;AAExB,yCAAsC;AAItC,SAAgB,eAAe,CAAC,UAA+B;IAC9D,OAAO,IAAI,WAAI,CAAC,iBAAiB,CAAC;SAChC,WAAW,CAAC,qCAAqC,CAAC;SAClD,KAAK,CACL,OAAC,CAAC,MAAM,CAAC;QACR,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QAC5D,SAAS,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;KACjF,CAAC,CACF;SACA,MAAM,CACN,OAAC,CAAC,MAAM,CAAC;QACR,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;KAClE,CAAC,CACF;SACA,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACxB,MAAM,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACnE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC,CAAC;SACD,KAAK,EAAE,CAAC;AACX,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BuiltTool } from '../../types/sdk/tool';
2
+ import type { WorkspaceFilesystem } from '../types';
3
+ export declare function createMoveFileTool(filesystem: WorkspaceFilesystem): BuiltTool;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMoveFileTool = createMoveFileTool;
4
+ const zod_1 = require("zod");
5
+ const tool_1 = require("../../sdk/tool");
6
+ function createMoveFileTool(filesystem) {
7
+ return new tool_1.Tool('workspace_move_file')
8
+ .description('Move or rename a file or directory in the workspace')
9
+ .input(zod_1.z.object({
10
+ src: zod_1.z.string().describe('Source path of the file or directory to move'),
11
+ dest: zod_1.z.string().describe('Destination path'),
12
+ overwrite: zod_1.z
13
+ .boolean()
14
+ .optional()
15
+ .describe('Overwrite the destination if it already exists'),
16
+ }))
17
+ .output(zod_1.z.object({
18
+ success: zod_1.z.boolean().describe('Whether the move was successful'),
19
+ }))
20
+ .handler(async (input) => {
21
+ await filesystem.moveFile(input.src, input.dest, { overwrite: input.overwrite });
22
+ return { success: true };
23
+ })
24
+ .build();
25
+ }
26
+ //# sourceMappingURL=move-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"move-file.js","sourceRoot":"","sources":["../../../src/workspace/tools/move-file.ts"],"names":[],"mappings":";;AAMA,gDAuBC;AA7BD,6BAAwB;AAExB,yCAAsC;AAItC,SAAgB,kBAAkB,CAAC,UAA+B;IACjE,OAAO,IAAI,WAAI,CAAC,qBAAqB,CAAC;SACpC,WAAW,CAAC,qDAAqD,CAAC;SAClE,KAAK,CACL,OAAC,CAAC,MAAM,CAAC;QACR,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;QACxE,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC7C,SAAS,EAAE,OAAC;aACV,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,QAAQ,CAAC,gDAAgD,CAAC;KAC5D,CAAC,CACF;SACA,MAAM,CACN,OAAC,CAAC,MAAM,CAAC;QACR,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;KAChE,CAAC,CACF;SACA,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACxB,MAAM,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACjF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC,CAAC;SACD,KAAK,EAAE,CAAC;AACX,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { BuiltTool } from '../../types/sdk/tool';
2
+ import type { SandboxProcessManager } from '../types';
3
+ export declare function createListProcessesTool(processes: SandboxProcessManager): BuiltTool;
4
+ export declare function createKillProcessTool(processes: SandboxProcessManager): BuiltTool;