@loopstack/sandbox-filesystem 0.4.7 → 0.5.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 (37) hide show
  1. package/README.md +91 -134
  2. package/dist/tools/sandbox-create-directory.tool.d.ts +3 -4
  3. package/dist/tools/sandbox-create-directory.tool.d.ts.map +1 -1
  4. package/dist/tools/sandbox-create-directory.tool.js +5 -9
  5. package/dist/tools/sandbox-create-directory.tool.js.map +1 -1
  6. package/dist/tools/sandbox-delete.tool.d.ts +3 -4
  7. package/dist/tools/sandbox-delete.tool.d.ts.map +1 -1
  8. package/dist/tools/sandbox-delete.tool.js +5 -9
  9. package/dist/tools/sandbox-delete.tool.js.map +1 -1
  10. package/dist/tools/sandbox-exists.tool.d.ts +3 -4
  11. package/dist/tools/sandbox-exists.tool.d.ts.map +1 -1
  12. package/dist/tools/sandbox-exists.tool.js +5 -9
  13. package/dist/tools/sandbox-exists.tool.js.map +1 -1
  14. package/dist/tools/sandbox-file-info.tool.d.ts +3 -4
  15. package/dist/tools/sandbox-file-info.tool.d.ts.map +1 -1
  16. package/dist/tools/sandbox-file-info.tool.js +5 -9
  17. package/dist/tools/sandbox-file-info.tool.js.map +1 -1
  18. package/dist/tools/sandbox-list-directory.tool.d.ts +3 -4
  19. package/dist/tools/sandbox-list-directory.tool.d.ts.map +1 -1
  20. package/dist/tools/sandbox-list-directory.tool.js +5 -9
  21. package/dist/tools/sandbox-list-directory.tool.js.map +1 -1
  22. package/dist/tools/sandbox-read-file.tool.d.ts +3 -4
  23. package/dist/tools/sandbox-read-file.tool.d.ts.map +1 -1
  24. package/dist/tools/sandbox-read-file.tool.js +5 -9
  25. package/dist/tools/sandbox-read-file.tool.js.map +1 -1
  26. package/dist/tools/sandbox-write-file.tool.d.ts +3 -4
  27. package/dist/tools/sandbox-write-file.tool.d.ts.map +1 -1
  28. package/dist/tools/sandbox-write-file.tool.js +6 -10
  29. package/dist/tools/sandbox-write-file.tool.js.map +1 -1
  30. package/package.json +3 -3
  31. package/src/tools/sandbox-create-directory.tool.ts +6 -8
  32. package/src/tools/sandbox-delete.tool.ts +6 -8
  33. package/src/tools/sandbox-exists.tool.ts +6 -8
  34. package/src/tools/sandbox-file-info.tool.ts +6 -8
  35. package/src/tools/sandbox-list-directory.tool.ts +6 -8
  36. package/src/tools/sandbox-read-file.tool.ts +6 -8
  37. package/src/tools/sandbox-write-file.tool.ts +7 -9
package/README.md CHANGED
@@ -30,11 +30,11 @@ See [SETUP.md](./SETUP.md) for installation and setup instructions.
30
30
 
31
31
  ## Usage
32
32
 
33
- Inject the tools in your workflow class using the @InjectTool() decorator:
33
+ Inject the tools in your workflow class using the `@InjectTool()` decorator:
34
34
 
35
35
  ```typescript
36
36
  import { z } from 'zod';
37
- import { InjectTool, Input, State, Workflow } from '@loopstack/common';
37
+ import { BaseWorkflow, Final, Initial, InjectTool, ToolResult, Transition, Workflow } from '@loopstack/common';
38
38
  import {
39
39
  SandboxCreateDirectory,
40
40
  SandboxDelete,
@@ -47,25 +47,12 @@ import {
47
47
  import { SandboxDestroy, SandboxInit } from '@loopstack/sandbox-tool';
48
48
 
49
49
  @Workflow({
50
- configFile: __dirname + '/my.workflow.yaml',
50
+ uiConfig: __dirname + '/my.ui.yaml',
51
+ schema: z.object({
52
+ outputDir: z.string().default(process.cwd() + '/out'),
53
+ }),
51
54
  })
52
- export class MyWorkflow {
53
- @Input({
54
- schema: z.object({
55
- outputDir: z.string().default(process.cwd() + '/out'),
56
- }),
57
- })
58
- args: { outputDir: string };
59
-
60
- @State({
61
- schema: z.object({
62
- containerId: z.string().optional(),
63
- fileContent: z.string().optional(),
64
- fileList: z.array(z.any()).optional(),
65
- }),
66
- })
67
- state: { containerId: string; fileContent: string; fileList: any[] };
68
-
55
+ export class MyWorkflow extends BaseWorkflow<{ outputDir: string }> {
69
56
  // Sandbox lifecycle tools (from @loopstack/sandbox-tool)
70
57
  @InjectTool() sandboxInit: SandboxInit;
71
58
  @InjectTool() sandboxDestroy: SandboxDestroy;
@@ -78,119 +65,89 @@ export class MyWorkflow {
78
65
  @InjectTool() sandboxDelete: SandboxDelete;
79
66
  @InjectTool() sandboxExists: SandboxExists;
80
67
  @InjectTool() sandboxFileInfo: SandboxFileInfo;
81
- }
82
- ```
83
68
 
84
- And use them in your YAML workflow configuration:
85
-
86
- ```yaml
87
- # src/my.workflow.yaml
88
- transitions:
89
- # Initialize the sandbox container (required before filesystem operations)
90
- - id: init_sandbox
91
- from: start
92
- to: sandbox_ready
93
- call:
94
- - tool: sandboxInit
95
- args:
96
- containerId: my-sandbox
97
- imageName: node:18
98
- containerName: my-filesystem-sandbox
99
- projectOutPath: ${{ args.outputDir }}
100
- rootPath: workspace
101
- assign:
102
- containerId: ${{ result.data.containerId }}
103
-
104
- # Create a directory
105
- - id: create_dir
106
- from: sandbox_ready
107
- to: dir_created
108
- call:
109
- - tool: sandboxCreateDirectory
110
- args:
111
- containerId: ${{ state.containerId }}
112
- path: /workspace
113
- recursive: true
114
-
115
- # Write a file
116
- - id: write_file
117
- from: dir_created
118
- to: file_written
119
- call:
120
- - tool: sandboxWriteFile
121
- args:
122
- containerId: ${{ state.containerId }}
123
- path: /workspace/result.txt
124
- content: 'Hello from sandbox!'
125
- encoding: utf8
126
- createParentDirs: true
127
-
128
- # Read the file
129
- - id: read_file
130
- from: file_written
131
- to: file_read
132
- call:
133
- - tool: sandboxReadFile
134
- args:
135
- containerId: ${{ state.containerId }}
136
- path: /workspace/result.txt
137
- encoding: utf8
138
- assign:
139
- fileContent: ${{ result.data.content }}
140
-
141
- # List directory contents
142
- - id: list_dir
143
- from: file_read
144
- to: dir_listed
145
- call:
146
- - tool: sandboxListDirectory
147
- args:
148
- containerId: ${{ state.containerId }}
149
- path: /workspace
150
- recursive: false
151
- assign:
152
- fileList: ${{ result.data.entries }}
153
-
154
- # Check file existence
155
- - id: check_exists
156
- from: dir_listed
157
- to: existence_checked
158
- call:
159
- - tool: sandboxExists
160
- args:
161
- containerId: ${{ state.containerId }}
162
- path: /workspace/result.txt
163
-
164
- # Get file info
165
- - id: get_info
166
- from: existence_checked
167
- to: info_retrieved
168
- call:
169
- - tool: sandboxFileInfo
170
- args:
171
- containerId: ${{ state.containerId }}
172
- path: /workspace/result.txt
173
-
174
- # Delete the file
175
- - id: delete_file
176
- from: info_retrieved
177
- to: file_deleted
178
- call:
179
- - tool: sandboxDelete
180
- args:
181
- containerId: ${{ state.containerId }}
182
- path: /workspace/result.txt
183
- force: true
184
-
185
- # Destroy the sandbox container (cleanup)
186
- - id: destroy_sandbox
187
- from: file_deleted
188
- to: end
189
- call:
190
- - tool: sandboxDestroy
191
- args:
192
- containerId: ${{ state.containerId }}
193
- removeContainer: true
69
+ containerId?: string;
70
+ fileContent?: string;
71
+
72
+ // Initialize the sandbox container (required before filesystem operations)
73
+ @Initial({ to: 'sandbox_ready' })
74
+ async initSandbox(args: { outputDir: string }) {
75
+ const result = await this.sandboxInit.call({
76
+ containerId: 'my-sandbox',
77
+ imageName: 'node:18',
78
+ containerName: 'my-filesystem-sandbox',
79
+ projectOutPath: args.outputDir,
80
+ rootPath: 'workspace',
81
+ });
82
+
83
+ this.containerId = result.data!.containerId;
84
+ }
85
+
86
+ // Create a directory and write a file
87
+ @Transition({ from: 'sandbox_ready', to: 'file_written' })
88
+ async writeFile() {
89
+ await this.sandboxCreateDirectory.call({
90
+ containerId: this.containerId!,
91
+ path: '/workspace/output',
92
+ recursive: true,
93
+ });
94
+
95
+ await this.sandboxWriteFile.call({
96
+ containerId: this.containerId!,
97
+ path: '/workspace/output/result.txt',
98
+ content: 'Hello from sandbox!',
99
+ encoding: 'utf8',
100
+ createParentDirs: true,
101
+ });
102
+ }
103
+
104
+ // Read the file back
105
+ @Transition({ from: 'file_written', to: 'file_read' })
106
+ async readFile() {
107
+ const result = await this.sandboxReadFile.call({
108
+ containerId: this.containerId!,
109
+ path: '/workspace/output/result.txt',
110
+ encoding: 'utf8',
111
+ });
112
+
113
+ this.fileContent = result.data!.content;
114
+ }
115
+
116
+ // List directory, check existence, get info
117
+ @Transition({ from: 'file_read', to: 'inspected' })
118
+ async inspectFiles() {
119
+ await this.sandboxListDirectory.call({
120
+ containerId: this.containerId!,
121
+ path: '/workspace/output',
122
+ recursive: false,
123
+ });
124
+
125
+ await this.sandboxExists.call({
126
+ containerId: this.containerId!,
127
+ path: '/workspace/output/result.txt',
128
+ });
129
+
130
+ await this.sandboxFileInfo.call({
131
+ containerId: this.containerId!,
132
+ path: '/workspace/output/result.txt',
133
+ });
134
+ }
135
+
136
+ // Clean up and destroy the sandbox
137
+ @Final({ from: 'inspected' })
138
+ async cleanup() {
139
+ await this.sandboxDelete.call({
140
+ containerId: this.containerId!,
141
+ path: '/workspace/output/result.txt',
142
+ force: true,
143
+ });
144
+
145
+ await this.sandboxDestroy.call({
146
+ containerId: this.containerId!,
147
+ removeContainer: true,
148
+ });
149
+ }
150
+ }
194
151
  ```
195
152
 
196
153
  ## About
@@ -201,6 +158,6 @@ License: Apache-2.0
201
158
 
202
159
  ### Additional Resources:
203
160
 
204
- - [Loopstack Documentation](https://loopstack.ai)
205
- - [Getting Started with Loopstack](https://loopstack.ai)
161
+ - [Loopstack Documentation](https://loopstack.ai/docs)
162
+ - [Getting Started with Loopstack](https://loopstack.ai/docs/getting-started)
206
163
  - For more examples how to use this tool look for `@loopstack/sandbox-filesystem` in the [Loopstack Registry](https://loopstack.ai/registry)
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { ToolInterface, ToolResult } from '@loopstack/common';
2
+ import { BaseTool, ToolResult } from '@loopstack/common';
3
3
  declare const inputSchema: z.ZodObject<{
4
4
  containerId: z.ZodString;
5
5
  path: z.ZodString;
@@ -10,11 +10,10 @@ interface SandboxCreateDirectoryResult {
10
10
  path: string;
11
11
  created: boolean;
12
12
  }
13
- export declare class SandboxCreateDirectory implements ToolInterface<SandboxCreateDirectoryArgs> {
13
+ export declare class SandboxCreateDirectory extends BaseTool {
14
14
  private readonly logger;
15
15
  private sandboxCommand;
16
- args: SandboxCreateDirectoryArgs;
17
- execute(args: SandboxCreateDirectoryArgs): Promise<ToolResult<SandboxCreateDirectoryResult>>;
16
+ call(args: SandboxCreateDirectoryArgs): Promise<ToolResult<SandboxCreateDirectoryResult>>;
18
17
  }
19
18
  export {};
20
19
  //# sourceMappingURL=sandbox-create-directory.tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-create-directory.tool.d.ts","sourceRoot":"","sources":["../../src/tools/sandbox-create-directory.tool.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAA2B,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGvF,QAAA,MAAM,WAAW;;;;kBAMN,CAAC;AAEZ,KAAK,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAE9D,UAAU,4BAA4B;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qBAKa,sBAAuB,YAAW,aAAa,CAAC,0BAA0B,CAAC;IACtF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2C;IAEpD,OAAO,CAAC,cAAc,CAAiB;IAGrD,IAAI,EAAE,0BAA0B,CAAC;IAE3B,OAAO,CAAC,IAAI,EAAE,0BAA0B,GAAG,OAAO,CAAC,UAAU,CAAC,4BAA4B,CAAC,CAAC;CAyCnG"}
1
+ {"version":3,"file":"sandbox-create-directory.tool.d.ts","sourceRoot":"","sources":["../../src/tools/sandbox-create-directory.tool.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAoB,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG3E,QAAA,MAAM,WAAW;;;;kBAMN,CAAC;AAEZ,KAAK,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAE9D,UAAU,4BAA4B;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qBAMa,sBAAuB,SAAQ,QAAQ;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2C;IAEpD,OAAO,CAAC,cAAc,CAAiB;IAE/C,IAAI,CAAC,IAAI,EAAE,0BAA0B,GAAG,OAAO,CAAC,UAAU,CAAC,4BAA4B,CAAC,CAAC;CAyChG"}
@@ -22,15 +22,14 @@ const inputSchema = zod_1.z
22
22
  recursive: zod_1.z.boolean().default(true).describe("Whether to create parent directories if they don't exist"),
23
23
  })
24
24
  .strict();
25
- let SandboxCreateDirectory = SandboxCreateDirectory_1 = class SandboxCreateDirectory {
25
+ let SandboxCreateDirectory = SandboxCreateDirectory_1 = class SandboxCreateDirectory extends common_2.BaseTool {
26
26
  logger = new common_1.Logger(SandboxCreateDirectory_1.name);
27
27
  sandboxCommand;
28
- args;
29
- async execute(args) {
28
+ async call(args) {
30
29
  const { containerId, path: dirPath, recursive } = args;
31
30
  this.logger.debug(`Creating directory ${dirPath} in container ${containerId} (recursive: ${recursive})`);
32
31
  const mkdirArgs = recursive ? ['-p', dirPath] : [dirPath];
33
- const result = await this.sandboxCommand.execute({
32
+ const result = await this.sandboxCommand.call({
34
33
  containerId,
35
34
  executable: 'mkdir',
36
35
  args: mkdirArgs,
@@ -65,15 +64,12 @@ __decorate([
65
64
  (0, common_2.InjectTool)(),
66
65
  __metadata("design:type", sandbox_tool_1.SandboxCommand)
67
66
  ], SandboxCreateDirectory.prototype, "sandboxCommand", void 0);
68
- __decorate([
69
- (0, common_2.Input)({ schema: inputSchema }),
70
- __metadata("design:type", Object)
71
- ], SandboxCreateDirectory.prototype, "args", void 0);
72
67
  exports.SandboxCreateDirectory = SandboxCreateDirectory = SandboxCreateDirectory_1 = __decorate([
73
68
  (0, common_2.Tool)({
74
- config: {
69
+ uiConfig: {
75
70
  description: 'Create a directory in a sandbox container',
76
71
  },
72
+ schema: inputSchema,
77
73
  })
78
74
  ], SandboxCreateDirectory);
79
75
  //# sourceMappingURL=sandbox-create-directory.tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-create-directory.tool.js","sourceRoot":"","sources":["../../src/tools/sandbox-create-directory.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sandbox-create-directory.tool.js","sourceRoot":"","sources":["../../src/tools/sandbox-create-directory.tool.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { ToolInterface, ToolResult } from '@loopstack/common';
2
+ import { BaseTool, ToolResult } from '@loopstack/common';
3
3
  declare const inputSchema: z.ZodObject<{
4
4
  containerId: z.ZodString;
5
5
  path: z.ZodString;
@@ -11,11 +11,10 @@ interface SandboxDeleteResult {
11
11
  path: string;
12
12
  deleted: boolean;
13
13
  }
14
- export declare class SandboxDelete implements ToolInterface<SandboxDeleteArgs> {
14
+ export declare class SandboxDelete extends BaseTool {
15
15
  private readonly logger;
16
16
  private sandboxCommand;
17
- args: SandboxDeleteArgs;
18
- execute(args: SandboxDeleteArgs): Promise<ToolResult<SandboxDeleteResult>>;
17
+ call(args: SandboxDeleteArgs): Promise<ToolResult<SandboxDeleteResult>>;
19
18
  }
20
19
  export {};
21
20
  //# sourceMappingURL=sandbox-delete.tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-delete.tool.d.ts","sourceRoot":"","sources":["../../src/tools/sandbox-delete.tool.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAA2B,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGvF,QAAA,MAAM,WAAW;;;;;kBAON,CAAC;AAEZ,KAAK,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAErD,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qBAKa,aAAc,YAAW,aAAa,CAAC,iBAAiB,CAAC;IACpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;IAE3C,OAAO,CAAC,cAAc,CAAiB;IAGrD,IAAI,EAAE,iBAAiB,CAAC;IAElB,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;CAqCjF"}
1
+ {"version":3,"file":"sandbox-delete.tool.d.ts","sourceRoot":"","sources":["../../src/tools/sandbox-delete.tool.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAoB,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG3E,QAAA,MAAM,WAAW;;;;;kBAON,CAAC;AAEZ,KAAK,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAErD,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qBAMa,aAAc,SAAQ,QAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;IAE3C,OAAO,CAAC,cAAc,CAAiB;IAE/C,IAAI,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;CAqC9E"}
@@ -23,11 +23,10 @@ const inputSchema = zod_1.z
23
23
  force: zod_1.z.boolean().default(false).describe('Whether to force deletion without prompting for confirmation'),
24
24
  })
25
25
  .strict();
26
- let SandboxDelete = SandboxDelete_1 = class SandboxDelete {
26
+ let SandboxDelete = SandboxDelete_1 = class SandboxDelete extends common_2.BaseTool {
27
27
  logger = new common_1.Logger(SandboxDelete_1.name);
28
28
  sandboxCommand;
29
- args;
30
- async execute(args) {
29
+ async call(args) {
31
30
  const { containerId, path: targetPath, recursive, force } = args;
32
31
  this.logger.debug(`Deleting ${targetPath} in container ${containerId} (recursive: ${recursive}, force: ${force})`);
33
32
  const rmArgs = [];
@@ -36,7 +35,7 @@ let SandboxDelete = SandboxDelete_1 = class SandboxDelete {
36
35
  if (force)
37
36
  rmArgs.push('-f');
38
37
  rmArgs.push(targetPath);
39
- const result = await this.sandboxCommand.execute({
38
+ const result = await this.sandboxCommand.call({
40
39
  containerId,
41
40
  executable: 'rm',
42
41
  args: rmArgs,
@@ -65,15 +64,12 @@ __decorate([
65
64
  (0, common_2.InjectTool)(),
66
65
  __metadata("design:type", sandbox_tool_1.SandboxCommand)
67
66
  ], SandboxDelete.prototype, "sandboxCommand", void 0);
68
- __decorate([
69
- (0, common_2.Input)({ schema: inputSchema }),
70
- __metadata("design:type", Object)
71
- ], SandboxDelete.prototype, "args", void 0);
72
67
  exports.SandboxDelete = SandboxDelete = SandboxDelete_1 = __decorate([
73
68
  (0, common_2.Tool)({
74
- config: {
69
+ uiConfig: {
75
70
  description: 'Delete a file or directory in a sandbox container',
76
71
  },
72
+ schema: inputSchema,
77
73
  })
78
74
  ], SandboxDelete);
79
75
  //# sourceMappingURL=sandbox-delete.tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-delete.tool.js","sourceRoot":"","sources":["../../src/tools/sandbox-delete.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAeA,2CAAwC;AACxC,6BAAwB;AACxB,8CAAuF;AACvF,0DAAyD;AAEzD,MAAM,WAAW,GAAG,OAAC;KAClB,MAAM,CAAC;IACN,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;IAC7F,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;IACxE,SAAS,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,8DAA8D,CAAC;IAC9G,KAAK,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,8DAA8D,CAAC;CAC3G,CAAC;KACD,MAAM,EAAE,CAAC;AAcL,IAAM,aAAa,qBAAnB,MAAM,aAAa;IACP,MAAM,GAAG,IAAI,eAAM,CAAC,eAAa,CAAC,IAAI,CAAC,CAAC;IAEnC,cAAc,CAAiB;IAGrD,IAAI,CAAoB;IAExB,KAAK,CAAC,OAAO,CAAC,IAAuB;QACnC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAEjE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,UAAU,iBAAiB,WAAW,gBAAgB,SAAS,YAAY,KAAK,GAAG,CAAC,CAAC;QAEnH,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAExB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YAC/C,WAAW;YACX,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,MAAM;YACZ,gBAAgB,EAAE,GAAG;YACrB,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,UAAU,kBAAkB,CAAC,CAAC;YACpE,MAAM,IAAI,KAAK,CAAC,oBAAoB,UAAU,kBAAkB,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,UAAU,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC,CAAC;YAC9F,MAAM,IAAI,KAAK,CAAC,oBAAoB,UAAU,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC,CAAC;QAC9F,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,wBAAwB,UAAU,iBAAiB,WAAW,EAAE,CAAC,CAAC;QAElF,OAAO;YACL,IAAI,EAAE;gBACJ,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,IAAI;aACd;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AA7CY,sCAAa;AAGF;IAArB,IAAA,mBAAU,GAAE;8BAAyB,6BAAc;qDAAC;AAGrD;IADC,IAAA,cAAK,EAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;;2CACP;wBANb,aAAa;IALzB,IAAA,aAAI,EAAC;QACJ,MAAM,EAAE;YACN,WAAW,EAAE,mDAAmD;SACjE;KACF,CAAC;GACW,aAAa,CA6CzB"}
1
+ {"version":3,"file":"sandbox-delete.tool.js","sourceRoot":"","sources":["../../src/tools/sandbox-delete.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAeA,2CAAwC;AACxC,6BAAwB;AACxB,8CAA2E;AAC3E,0DAAyD;AAEzD,MAAM,WAAW,GAAG,OAAC;KAClB,MAAM,CAAC;IACN,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;IAC7F,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;IACxE,SAAS,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,8DAA8D,CAAC;IAC9G,KAAK,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,8DAA8D,CAAC;CAC3G,CAAC;KACD,MAAM,EAAE,CAAC;AAeL,IAAM,aAAa,qBAAnB,MAAM,aAAc,SAAQ,iBAAQ;IACxB,MAAM,GAAG,IAAI,eAAM,CAAC,eAAa,CAAC,IAAI,CAAC,CAAC;IAEnC,cAAc,CAAiB;IAErD,KAAK,CAAC,IAAI,CAAC,IAAuB;QAChC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAEjE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,UAAU,iBAAiB,WAAW,gBAAgB,SAAS,YAAY,KAAK,GAAG,CAAC,CAAC;QAEnH,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAExB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YAC5C,WAAW;YACX,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,MAAM;YACZ,gBAAgB,EAAE,GAAG;YACrB,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,UAAU,kBAAkB,CAAC,CAAC;YACpE,MAAM,IAAI,KAAK,CAAC,oBAAoB,UAAU,kBAAkB,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,UAAU,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC,CAAC;YAC9F,MAAM,IAAI,KAAK,CAAC,oBAAoB,UAAU,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC,CAAC;QAC9F,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,wBAAwB,UAAU,iBAAiB,WAAW,EAAE,CAAC,CAAC;QAElF,OAAO;YACL,IAAI,EAAE;gBACJ,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,IAAI;aACd;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AA1CY,sCAAa;AAGF;IAArB,IAAA,mBAAU,GAAE;8BAAyB,6BAAc;qDAAC;wBAH1C,aAAa;IANzB,IAAA,aAAI,EAAC;QACJ,QAAQ,EAAE;YACR,WAAW,EAAE,mDAAmD;SACjE;QACD,MAAM,EAAE,WAAW;KACpB,CAAC;GACW,aAAa,CA0CzB"}
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { ToolInterface, ToolResult } from '@loopstack/common';
2
+ import { BaseTool, ToolResult } from '@loopstack/common';
3
3
  declare const inputSchema: z.ZodObject<{
4
4
  containerId: z.ZodString;
5
5
  path: z.ZodString;
@@ -10,11 +10,10 @@ interface SandboxExistsResult {
10
10
  exists: boolean;
11
11
  type: 'file' | 'directory' | 'symlink' | 'other' | null;
12
12
  }
13
- export declare class SandboxExists implements ToolInterface<SandboxExistsArgs> {
13
+ export declare class SandboxExists extends BaseTool {
14
14
  private readonly logger;
15
15
  private sandboxCommand;
16
- args: SandboxExistsArgs;
17
- execute(args: SandboxExistsArgs): Promise<ToolResult<SandboxExistsResult>>;
16
+ call(args: SandboxExistsArgs): Promise<ToolResult<SandboxExistsResult>>;
18
17
  private parseFileType;
19
18
  }
20
19
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-exists.tool.d.ts","sourceRoot":"","sources":["../../src/tools/sandbox-exists.tool.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAA2B,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGvF,QAAA,MAAM,WAAW;;;kBAKN,CAAC;AAEZ,KAAK,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAErD,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,IAAI,CAAC;CACzD;AAED,qBAKa,aAAc,YAAW,aAAa,CAAC,iBAAiB,CAAC;IACpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;IAGzD,OAAO,CAAC,cAAc,CAAiB;IAGvC,IAAI,EAAE,iBAAiB,CAAC;IAElB,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;IA8ChF,OAAO,CAAC,aAAa;CAOtB"}
1
+ {"version":3,"file":"sandbox-exists.tool.d.ts","sourceRoot":"","sources":["../../src/tools/sandbox-exists.tool.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAoB,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG3E,QAAA,MAAM,WAAW;;;kBAKN,CAAC;AAEZ,KAAK,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAErD,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,IAAI,CAAC;CACzD;AAED,qBAMa,aAAc,SAAQ,QAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;IAGzD,OAAO,CAAC,cAAc,CAAiB;IAEjC,IAAI,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;IA8C7E,OAAO,CAAC,aAAa;CAOtB"}
@@ -21,14 +21,13 @@ const inputSchema = zod_1.z
21
21
  path: zod_1.z.string().describe('The path to check for existence'),
22
22
  })
23
23
  .strict();
24
- let SandboxExists = SandboxExists_1 = class SandboxExists {
24
+ let SandboxExists = SandboxExists_1 = class SandboxExists extends common_2.BaseTool {
25
25
  logger = new common_1.Logger(SandboxExists_1.name);
26
26
  sandboxCommand;
27
- args;
28
- async execute(args) {
27
+ async call(args) {
29
28
  const { containerId, path: targetPath } = args;
30
29
  this.logger.debug(`Checking existence of ${targetPath} in container ${containerId}`);
31
- const result = await this.sandboxCommand.execute({
30
+ const result = await this.sandboxCommand.call({
32
31
  containerId,
33
32
  executable: 'sh',
34
33
  args: [
@@ -77,15 +76,12 @@ __decorate([
77
76
  (0, common_2.InjectTool)(),
78
77
  __metadata("design:type", sandbox_tool_1.SandboxCommand)
79
78
  ], SandboxExists.prototype, "sandboxCommand", void 0);
80
- __decorate([
81
- (0, common_2.Input)({ schema: inputSchema }),
82
- __metadata("design:type", Object)
83
- ], SandboxExists.prototype, "args", void 0);
84
79
  exports.SandboxExists = SandboxExists = SandboxExists_1 = __decorate([
85
80
  (0, common_2.Tool)({
86
- config: {
81
+ uiConfig: {
87
82
  description: 'Check if a file or directory exists in a sandbox container',
88
83
  },
84
+ schema: inputSchema,
89
85
  })
90
86
  ], SandboxExists);
91
87
  //# sourceMappingURL=sandbox-exists.tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-exists.tool.js","sourceRoot":"","sources":["../../src/tools/sandbox-exists.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sandbox-exists.tool.js","sourceRoot":"","sources":["../../src/tools/sandbox-exists.tool.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { ToolInterface, ToolResult } from '@loopstack/common';
2
+ import { BaseTool, ToolResult } from '@loopstack/common';
3
3
  declare const inputSchema: z.ZodObject<{
4
4
  containerId: z.ZodString;
5
5
  path: z.ZodString;
@@ -17,11 +17,10 @@ interface SandboxFileInfoResult {
17
17
  accessedAt: string;
18
18
  createdAt: string;
19
19
  }
20
- export declare class SandboxFileInfo implements ToolInterface<SandboxFileInfoArgs> {
20
+ export declare class SandboxFileInfo extends BaseTool {
21
21
  private readonly logger;
22
22
  private sandboxCommand;
23
- args: SandboxFileInfoArgs;
24
- execute(args: SandboxFileInfoArgs): Promise<ToolResult<SandboxFileInfoResult>>;
23
+ call(args: SandboxFileInfoArgs): Promise<ToolResult<SandboxFileInfoResult>>;
25
24
  private parseFileType;
26
25
  }
27
26
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-file-info.tool.d.ts","sourceRoot":"","sources":["../../src/tools/sandbox-file-info.tool.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAA2B,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGvF,QAAA,MAAM,WAAW;;;kBAKN,CAAC;AAEZ,KAAK,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEvD,UAAU,qBAAqB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAKa,eAAgB,YAAW,aAAa,CAAC,mBAAmB,CAAC;IACxE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAE7C,OAAO,CAAC,cAAc,CAAiB;IAGrD,IAAI,EAAE,mBAAmB,CAAC;IAEpB,OAAO,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;IAwDpF,OAAO,CAAC,aAAa;CAOtB"}
1
+ {"version":3,"file":"sandbox-file-info.tool.d.ts","sourceRoot":"","sources":["../../src/tools/sandbox-file-info.tool.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAoB,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG3E,QAAA,MAAM,WAAW;;;kBAKN,CAAC;AAEZ,KAAK,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEvD,UAAU,qBAAqB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAMa,eAAgB,SAAQ,QAAQ;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAE7C,OAAO,CAAC,cAAc,CAAiB;IAE/C,IAAI,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;IAwDjF,OAAO,CAAC,aAAa;CAOtB"}
@@ -21,14 +21,13 @@ const inputSchema = zod_1.z
21
21
  path: zod_1.z.string().describe('The path to the file or directory'),
22
22
  })
23
23
  .strict();
24
- let SandboxFileInfo = SandboxFileInfo_1 = class SandboxFileInfo {
24
+ let SandboxFileInfo = SandboxFileInfo_1 = class SandboxFileInfo extends common_2.BaseTool {
25
25
  logger = new common_1.Logger(SandboxFileInfo_1.name);
26
26
  sandboxCommand;
27
- args;
28
- async execute(args) {
27
+ async call(args) {
29
28
  const { containerId, path: targetPath } = args;
30
29
  this.logger.debug(`Getting file info for ${targetPath} in container ${containerId}`);
31
- const result = await this.sandboxCommand.execute({
30
+ const result = await this.sandboxCommand.call({
32
31
  containerId,
33
32
  executable: 'stat',
34
33
  args: ['-c', '%F|%s|%A|%U|%G|%y|%x|%w', targetPath],
@@ -84,15 +83,12 @@ __decorate([
84
83
  (0, common_2.InjectTool)(),
85
84
  __metadata("design:type", sandbox_tool_1.SandboxCommand)
86
85
  ], SandboxFileInfo.prototype, "sandboxCommand", void 0);
87
- __decorate([
88
- (0, common_2.Input)({ schema: inputSchema }),
89
- __metadata("design:type", Object)
90
- ], SandboxFileInfo.prototype, "args", void 0);
91
86
  exports.SandboxFileInfo = SandboxFileInfo = SandboxFileInfo_1 = __decorate([
92
87
  (0, common_2.Tool)({
93
- config: {
88
+ uiConfig: {
94
89
  description: 'Get detailed information about a file or directory in a sandbox container',
95
90
  },
91
+ schema: inputSchema,
96
92
  })
97
93
  ], SandboxFileInfo);
98
94
  //# sourceMappingURL=sandbox-file-info.tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-file-info.tool.js","sourceRoot":"","sources":["../../src/tools/sandbox-file-info.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sandbox-file-info.tool.js","sourceRoot":"","sources":["../../src/tools/sandbox-file-info.tool.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { ToolInterface, ToolResult } from '@loopstack/common';
2
+ import { BaseTool, ToolResult } from '@loopstack/common';
3
3
  declare const inputSchema: z.ZodObject<{
4
4
  containerId: z.ZodString;
5
5
  path: z.ZodString;
@@ -16,11 +16,10 @@ interface SandboxListDirectoryResult {
16
16
  path: string;
17
17
  entries: FileEntry[];
18
18
  }
19
- export declare class SandboxListDirectory implements ToolInterface<SandboxListDirectoryArgs> {
19
+ export declare class SandboxListDirectory extends BaseTool {
20
20
  private readonly logger;
21
21
  private sandboxCommand;
22
- args: SandboxListDirectoryArgs;
23
- execute(args: SandboxListDirectoryArgs): Promise<ToolResult<SandboxListDirectoryResult>>;
22
+ call(args: SandboxListDirectoryArgs): Promise<ToolResult<SandboxListDirectoryResult>>;
24
23
  private parseFileType;
25
24
  }
26
25
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-list-directory.tool.d.ts","sourceRoot":"","sources":["../../src/tools/sandbox-list-directory.tool.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAA2B,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGvF,QAAA,MAAM,WAAW;;;;kBAMN,CAAC;AAEZ,KAAK,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAE5D,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,0BAA0B;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,SAAS,EAAE,CAAC;CACtB;AAED,qBAKa,oBAAqB,YAAW,aAAa,CAAC,wBAAwB,CAAC;IAClF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyC;IAElD,OAAO,CAAC,cAAc,CAAiB;IAGrD,IAAI,EAAE,wBAAwB,CAAC;IAEzB,OAAO,CAAC,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,UAAU,CAAC,0BAA0B,CAAC,CAAC;IA4D9F,OAAO,CAAC,aAAa;CAYtB"}
1
+ {"version":3,"file":"sandbox-list-directory.tool.d.ts","sourceRoot":"","sources":["../../src/tools/sandbox-list-directory.tool.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAoB,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG3E,QAAA,MAAM,WAAW;;;;kBAMN,CAAC;AAEZ,KAAK,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAE5D,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,0BAA0B;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,SAAS,EAAE,CAAC;CACtB;AAED,qBAMa,oBAAqB,SAAQ,QAAQ;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyC;IAElD,OAAO,CAAC,cAAc,CAAiB;IAE/C,IAAI,CAAC,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,UAAU,CAAC,0BAA0B,CAAC,CAAC;IA4D3F,OAAO,CAAC,aAAa;CAYtB"}
@@ -22,17 +22,16 @@ const inputSchema = zod_1.z
22
22
  recursive: zod_1.z.boolean().default(false).describe('Whether to list directories recursively'),
23
23
  })
24
24
  .strict();
25
- let SandboxListDirectory = SandboxListDirectory_1 = class SandboxListDirectory {
25
+ let SandboxListDirectory = SandboxListDirectory_1 = class SandboxListDirectory extends common_2.BaseTool {
26
26
  logger = new common_1.Logger(SandboxListDirectory_1.name);
27
27
  sandboxCommand;
28
- args;
29
- async execute(args) {
28
+ async call(args) {
30
29
  const { containerId, path: dirPath, recursive } = args;
31
30
  this.logger.debug(`Listing directory ${dirPath} in container ${containerId} (recursive: ${recursive})`);
32
31
  const command = recursive
33
32
  ? `find '${dirPath.replace(/'/g, "'\\''")}' -printf '%y %s %p\\n'`
34
33
  : `find '${dirPath.replace(/'/g, "'\\''")}' -maxdepth 1 -printf '%y %s %p\\n'`;
35
- const result = await this.sandboxCommand.execute({
34
+ const result = await this.sandboxCommand.call({
36
35
  containerId,
37
36
  executable: 'sh',
38
37
  args: ['-c', command],
@@ -90,15 +89,12 @@ __decorate([
90
89
  (0, common_2.InjectTool)(),
91
90
  __metadata("design:type", sandbox_tool_1.SandboxCommand)
92
91
  ], SandboxListDirectory.prototype, "sandboxCommand", void 0);
93
- __decorate([
94
- (0, common_2.Input)({ schema: inputSchema }),
95
- __metadata("design:type", Object)
96
- ], SandboxListDirectory.prototype, "args", void 0);
97
92
  exports.SandboxListDirectory = SandboxListDirectory = SandboxListDirectory_1 = __decorate([
98
93
  (0, common_2.Tool)({
99
- config: {
94
+ uiConfig: {
100
95
  description: 'List files and directories in a sandbox container',
101
96
  },
97
+ schema: inputSchema,
102
98
  })
103
99
  ], SandboxListDirectory);
104
100
  //# sourceMappingURL=sandbox-list-directory.tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-list-directory.tool.js","sourceRoot":"","sources":["../../src/tools/sandbox-list-directory.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAeA,2CAAwC;AACxC,6BAAwB;AACxB,8CAAuF;AACvF,0DAAyD;AAEzD,MAAM,WAAW,GAAG,OAAC;KAClB,MAAM,CAAC;IACN,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;IACtF,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IAC9D,SAAS,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC;CAC1F,CAAC;KACD,MAAM,EAAE,CAAC;AAqBL,IAAM,oBAAoB,4BAA1B,MAAM,oBAAoB;IACd,MAAM,GAAG,IAAI,eAAM,CAAC,sBAAoB,CAAC,IAAI,CAAC,CAAC;IAE1C,cAAc,CAAiB;IAGrD,IAAI,CAA2B;IAE/B,KAAK,CAAC,OAAO,CAAC,IAA8B;QAC1C,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QAEvD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,OAAO,iBAAiB,WAAW,gBAAgB,SAAS,GAAG,CAAC,CAAC;QAIxG,MAAM,OAAO,GAAG,SAAS;YACvB,CAAC,CAAC,SAAS,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,yBAAyB;YAClE,CAAC,CAAC,SAAS,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,qCAAqC,CAAC;QAEjF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YAC/C,WAAW;YACX,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC;YACrB,gBAAgB,EAAE,GAAG;YACrB,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,OAAO,kBAAkB,CAAC,CAAC;YACzE,MAAM,IAAI,KAAK,CAAC,4BAA4B,OAAO,kBAAkB,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,OAAO,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC,CAAC;YACnG,MAAM,IAAI,KAAK,CAAC,4BAA4B,OAAO,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC,CAAC;QACnG,CAAC;QAED,MAAM,OAAO,GAAgB,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAE3E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAClD,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC;gBAC9C,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,QAAQ,CAAC;gBAGnD,IAAI,QAAQ,KAAK,OAAO;oBAAE,SAAS;gBAEnC,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI;oBACJ,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;oBAClC,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;oBAC3B,IAAI,EAAE,QAAQ;iBACf,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,OAAO,CAAC,MAAM,eAAe,OAAO,EAAE,CAAC,CAAC;QAEpE,OAAO;YACL,IAAI,EAAE;gBACJ,IAAI,EAAE,OAAO;gBACb,OAAO;aACR;SACF,CAAC;IACJ,CAAC;IAEO,aAAa,CAAC,QAAgB;QACpC,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,GAAG;gBACN,OAAO,MAAM,CAAC;YAChB,KAAK,GAAG;gBACN,OAAO,WAAW,CAAC;YACrB,KAAK,GAAG;gBACN,OAAO,SAAS,CAAC;YACnB;gBACE,OAAO,OAAO,CAAC;QACnB,CAAC;IACH,CAAC;CACF,CAAA;AAhFY,oDAAoB;AAGT;IAArB,IAAA,mBAAU,GAAE;8BAAyB,6BAAc;4DAAC;AAGrD;IADC,IAAA,cAAK,EAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;;kDACA;+BANpB,oBAAoB;IALhC,IAAA,aAAI,EAAC;QACJ,MAAM,EAAE;YACN,WAAW,EAAE,mDAAmD;SACjE;KACF,CAAC;GACW,oBAAoB,CAgFhC"}
1
+ {"version":3,"file":"sandbox-list-directory.tool.js","sourceRoot":"","sources":["../../src/tools/sandbox-list-directory.tool.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { ToolInterface, ToolResult } from '@loopstack/common';
2
+ import { BaseTool, ToolResult } from '@loopstack/common';
3
3
  declare const inputSchema: z.ZodObject<{
4
4
  containerId: z.ZodString;
5
5
  path: z.ZodString;
@@ -13,11 +13,10 @@ interface SandboxReadFileResult {
13
13
  content: string;
14
14
  encoding: string;
15
15
  }
16
- export declare class SandboxReadFile implements ToolInterface<SandboxReadFileArgs> {
16
+ export declare class SandboxReadFile extends BaseTool {
17
17
  private readonly logger;
18
18
  private sandboxCommand;
19
- args: SandboxReadFileArgs;
20
- execute(args: SandboxReadFileArgs): Promise<ToolResult<SandboxReadFileResult>>;
19
+ call(args: SandboxReadFileArgs): Promise<ToolResult<SandboxReadFileResult>>;
21
20
  }
22
21
  export {};
23
22
  //# sourceMappingURL=sandbox-read-file.tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-read-file.tool.d.ts","sourceRoot":"","sources":["../../src/tools/sandbox-read-file.tool.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAA2B,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGvF,QAAA,MAAM,WAAW;;;;;;;kBAMN,CAAC;AAEZ,KAAK,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEvD,UAAU,qBAAqB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAKa,eAAgB,YAAW,aAAa,CAAC,mBAAmB,CAAC;IACxE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAE7C,OAAO,CAAC,cAAc,CAAiB;IAGrD,IAAI,EAAE,mBAAmB,CAAC;IAEpB,OAAO,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;CAiCrF"}
1
+ {"version":3,"file":"sandbox-read-file.tool.d.ts","sourceRoot":"","sources":["../../src/tools/sandbox-read-file.tool.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAoB,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG3E,QAAA,MAAM,WAAW;;;;;;;kBAMN,CAAC;AAEZ,KAAK,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEvD,UAAU,qBAAqB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAMa,eAAgB,SAAQ,QAAQ;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAE7C,OAAO,CAAC,cAAc,CAAiB;IAE/C,IAAI,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;CAiClF"}
@@ -22,15 +22,14 @@ const inputSchema = zod_1.z
22
22
  encoding: zod_1.z.enum(['utf8', 'base64']).default('utf8').describe('The encoding to use when reading the file'),
23
23
  })
24
24
  .strict();
25
- let SandboxReadFile = SandboxReadFile_1 = class SandboxReadFile {
25
+ let SandboxReadFile = SandboxReadFile_1 = class SandboxReadFile extends common_2.BaseTool {
26
26
  logger = new common_1.Logger(SandboxReadFile_1.name);
27
27
  sandboxCommand;
28
- args;
29
- async execute(args) {
28
+ async call(args) {
30
29
  const { containerId, path, encoding } = args;
31
30
  this.logger.debug(`Reading file ${path} from container ${containerId} (encoding: ${encoding})`);
32
31
  const executable = encoding === 'base64' ? 'base64' : 'cat';
33
- const result = await this.sandboxCommand.execute({
32
+ const result = await this.sandboxCommand.call({
34
33
  containerId,
35
34
  executable,
36
35
  args: [path],
@@ -59,15 +58,12 @@ __decorate([
59
58
  (0, common_2.InjectTool)(),
60
59
  __metadata("design:type", sandbox_tool_1.SandboxCommand)
61
60
  ], SandboxReadFile.prototype, "sandboxCommand", void 0);
62
- __decorate([
63
- (0, common_2.Input)({ schema: inputSchema }),
64
- __metadata("design:type", Object)
65
- ], SandboxReadFile.prototype, "args", void 0);
66
61
  exports.SandboxReadFile = SandboxReadFile = SandboxReadFile_1 = __decorate([
67
62
  (0, common_2.Tool)({
68
- config: {
63
+ uiConfig: {
69
64
  description: 'Read file contents from a sandbox container',
70
65
  },
66
+ schema: inputSchema,
71
67
  })
72
68
  ], SandboxReadFile);
73
69
  //# sourceMappingURL=sandbox-read-file.tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-read-file.tool.js","sourceRoot":"","sources":["../../src/tools/sandbox-read-file.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAeA,2CAAwC;AACxC,6BAAwB;AACxB,8CAAuF;AACvF,0DAAyD;AAEzD,MAAM,WAAW,GAAG,OAAC;KAClB,MAAM,CAAC;IACN,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;IACjF,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IACzD,QAAQ,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,2CAA2C,CAAC;CAC3G,CAAC;KACD,MAAM,EAAE,CAAC;AAcL,IAAM,eAAe,uBAArB,MAAM,eAAe;IACT,MAAM,GAAG,IAAI,eAAM,CAAC,iBAAe,CAAC,IAAI,CAAC,CAAC;IAErC,cAAc,CAAiB;IAGrD,IAAI,CAAsB;IAE1B,KAAK,CAAC,OAAO,CAAC,IAAyB;QACrC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAE7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,IAAI,mBAAmB,WAAW,eAAe,QAAQ,GAAG,CAAC,CAAC;QAEhG,MAAM,UAAU,GAAG,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YAC/C,WAAW;YACX,UAAU;YACV,IAAI,EAAE,CAAC,IAAI,CAAC;YACZ,gBAAgB,EAAE,GAAG;YACrB,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,IAAI,kBAAkB,CAAC,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,kBAAkB,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC,CAAC;YAC3F,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC,CAAC;QAC3F,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,cAAc,CAAC,CAAC;QAE9F,OAAO;YACL,IAAI,EAAE;gBACJ,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;gBAC3B,QAAQ;aACT;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AAzCY,0CAAe;AAGJ;IAArB,IAAA,mBAAU,GAAE;8BAAyB,6BAAc;uDAAC;AAGrD;IADC,IAAA,cAAK,EAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;;6CACL;0BANf,eAAe;IAL3B,IAAA,aAAI,EAAC;QACJ,MAAM,EAAE;YACN,WAAW,EAAE,6CAA6C;SAC3D;KACF,CAAC;GACW,eAAe,CAyC3B"}
1
+ {"version":3,"file":"sandbox-read-file.tool.js","sourceRoot":"","sources":["../../src/tools/sandbox-read-file.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAeA,2CAAwC;AACxC,6BAAwB;AACxB,8CAA2E;AAC3E,0DAAyD;AAEzD,MAAM,WAAW,GAAG,OAAC;KAClB,MAAM,CAAC;IACN,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;IACjF,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IACzD,QAAQ,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,2CAA2C,CAAC;CAC3G,CAAC;KACD,MAAM,EAAE,CAAC;AAeL,IAAM,eAAe,uBAArB,MAAM,eAAgB,SAAQ,iBAAQ;IAC1B,MAAM,GAAG,IAAI,eAAM,CAAC,iBAAe,CAAC,IAAI,CAAC,CAAC;IAErC,cAAc,CAAiB;IAErD,KAAK,CAAC,IAAI,CAAC,IAAyB;QAClC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAE7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,IAAI,mBAAmB,WAAW,eAAe,QAAQ,GAAG,CAAC,CAAC;QAEhG,MAAM,UAAU,GAAG,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YAC5C,WAAW;YACX,UAAU;YACV,IAAI,EAAE,CAAC,IAAI,CAAC;YACZ,gBAAgB,EAAE,GAAG;YACrB,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,IAAI,kBAAkB,CAAC,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,kBAAkB,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC,CAAC;YAC3F,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC,CAAC;QAC3F,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,cAAc,CAAC,CAAC;QAE9F,OAAO;YACL,IAAI,EAAE;gBACJ,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;gBAC3B,QAAQ;aACT;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AAtCY,0CAAe;AAGJ;IAArB,IAAA,mBAAU,GAAE;8BAAyB,6BAAc;uDAAC;0BAH1C,eAAe;IAN3B,IAAA,aAAI,EAAC;QACJ,QAAQ,EAAE;YACR,WAAW,EAAE,6CAA6C;SAC3D;QACD,MAAM,EAAE,WAAW;KACpB,CAAC;GACW,eAAe,CAsC3B"}
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { ToolInterface, ToolResult } from '@loopstack/common';
2
+ import { BaseTool, ToolResult } from '@loopstack/common';
3
3
  declare const inputSchema: z.ZodObject<{
4
4
  containerId: z.ZodString;
5
5
  path: z.ZodString;
@@ -15,11 +15,10 @@ interface SandboxWriteFileResult {
15
15
  path: string;
16
16
  bytesWritten: number;
17
17
  }
18
- export declare class SandboxWriteFile implements ToolInterface<SandboxWriteFileArgs> {
18
+ export declare class SandboxWriteFile extends BaseTool {
19
19
  private readonly logger;
20
20
  private sandboxCommand;
21
- args: SandboxWriteFileArgs;
22
- execute(args: SandboxWriteFileArgs): Promise<ToolResult<SandboxWriteFileResult>>;
21
+ call(args: SandboxWriteFileArgs): Promise<ToolResult<SandboxWriteFileResult>>;
23
22
  }
24
23
  export {};
25
24
  //# sourceMappingURL=sandbox-write-file.tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-write-file.tool.d.ts","sourceRoot":"","sources":["../../src/tools/sandbox-write-file.tool.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAA2B,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGvF,QAAA,MAAM,WAAW;;;;;;;;;kBAQN,CAAC;AAEZ,KAAK,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAExD,UAAU,sBAAsB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAKa,gBAAiB,YAAW,aAAa,CAAC,oBAAoB,CAAC;IAC1E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAE9C,OAAO,CAAC,cAAc,CAAiB;IAGrD,IAAI,EAAE,oBAAoB,CAAC;IAErB,OAAO,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC;CAqEvF"}
1
+ {"version":3,"file":"sandbox-write-file.tool.d.ts","sourceRoot":"","sources":["../../src/tools/sandbox-write-file.tool.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAoB,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG3E,QAAA,MAAM,WAAW;;;;;;;;;kBAQN,CAAC;AAEZ,KAAK,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAExD,UAAU,sBAAsB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAMa,gBAAiB,SAAQ,QAAQ;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAE9C,OAAO,CAAC,cAAc,CAAiB;IAE/C,IAAI,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC;CAqEpF"}
@@ -58,18 +58,17 @@ const inputSchema = zod_1.z
58
58
  createParentDirs: zod_1.z.boolean().default(true).describe("Whether to create parent directories if they don't exist"),
59
59
  })
60
60
  .strict();
61
- let SandboxWriteFile = SandboxWriteFile_1 = class SandboxWriteFile {
61
+ let SandboxWriteFile = SandboxWriteFile_1 = class SandboxWriteFile extends common_2.BaseTool {
62
62
  logger = new common_1.Logger(SandboxWriteFile_1.name);
63
63
  sandboxCommand;
64
- args;
65
- async execute(args) {
64
+ async call(args) {
66
65
  const { containerId, path: filePath, content, encoding, createParentDirs } = args;
67
66
  this.logger.debug(`Writing file ${filePath} to container ${containerId} (encoding: ${encoding})`);
68
67
  if (createParentDirs) {
69
68
  const parentDir = path.posix.dirname(filePath);
70
69
  if (parentDir !== '/' && parentDir !== '.') {
71
70
  this.logger.debug(`Creating parent directory ${parentDir}`);
72
- const mkdirResult = await this.sandboxCommand.execute({
71
+ const mkdirResult = await this.sandboxCommand.call({
73
72
  containerId,
74
73
  executable: 'mkdir',
75
74
  args: ['-p', parentDir],
@@ -87,7 +86,7 @@ let SandboxWriteFile = SandboxWriteFile_1 = class SandboxWriteFile {
87
86
  }
88
87
  }
89
88
  const base64Content = encoding === 'utf8' ? Buffer.from(content, 'utf8').toString('base64') : content.replace(/[^A-Za-z0-9+/=]/g, '');
90
- const result = await this.sandboxCommand.execute({
89
+ const result = await this.sandboxCommand.call({
91
90
  containerId,
92
91
  executable: 'sh',
93
92
  args: ['-c', `echo '${base64Content}' | base64 -d > '${filePath.replace(/'/g, "'\\''")}'`],
@@ -117,15 +116,12 @@ __decorate([
117
116
  (0, common_2.InjectTool)(),
118
117
  __metadata("design:type", sandbox_tool_1.SandboxCommand)
119
118
  ], SandboxWriteFile.prototype, "sandboxCommand", void 0);
120
- __decorate([
121
- (0, common_2.Input)({ schema: inputSchema }),
122
- __metadata("design:type", Object)
123
- ], SandboxWriteFile.prototype, "args", void 0);
124
119
  exports.SandboxWriteFile = SandboxWriteFile = SandboxWriteFile_1 = __decorate([
125
120
  (0, common_2.Tool)({
126
- config: {
121
+ uiConfig: {
127
122
  description: 'Write content to a file in a sandbox container',
128
123
  },
124
+ schema: inputSchema,
129
125
  })
130
126
  ], SandboxWriteFile);
131
127
  //# sourceMappingURL=sandbox-write-file.tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-write-file.tool.js","sourceRoot":"","sources":["../../src/tools/sandbox-write-file.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sandbox-write-file.tool.js","sourceRoot":"","sources":["../../src/tools/sandbox-write-file.tool.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "filesystem",
8
8
  "sandbox"
9
9
  ],
10
- "version": "0.4.7",
10
+ "version": "0.5.1",
11
11
  "license": "Apache-2.0",
12
12
  "author": {
13
13
  "name": "Tobias Blättermann, Jakob Klippel"
@@ -27,8 +27,8 @@
27
27
  "watch": "nest build --watch"
28
28
  },
29
29
  "dependencies": {
30
- "@loopstack/common": "^0.24.0",
31
- "@loopstack/sandbox-tool": "^0.4.7",
30
+ "@loopstack/common": "^0.25.0",
31
+ "@loopstack/sandbox-tool": "^0.5.1",
32
32
  "@nestjs/common": "^11.1.14",
33
33
  "zod": "^4.3.6"
34
34
  },
@@ -15,7 +15,7 @@ limitations under the License.
15
15
  */
16
16
  import { Logger } from '@nestjs/common';
17
17
  import { z } from 'zod';
18
- import { InjectTool, Input, Tool, ToolInterface, ToolResult } from '@loopstack/common';
18
+ import { BaseTool, InjectTool, Tool, ToolResult } from '@loopstack/common';
19
19
  import { SandboxCommand } from '@loopstack/sandbox-tool';
20
20
 
21
21
  const inputSchema = z
@@ -34,26 +34,24 @@ interface SandboxCreateDirectoryResult {
34
34
  }
35
35
 
36
36
  @Tool({
37
- config: {
37
+ uiConfig: {
38
38
  description: 'Create a directory in a sandbox container',
39
39
  },
40
+ schema: inputSchema,
40
41
  })
41
- export class SandboxCreateDirectory implements ToolInterface<SandboxCreateDirectoryArgs> {
42
+ export class SandboxCreateDirectory extends BaseTool {
42
43
  private readonly logger = new Logger(SandboxCreateDirectory.name);
43
44
 
44
45
  @InjectTool() private sandboxCommand: SandboxCommand;
45
46
 
46
- @Input({ schema: inputSchema })
47
- args: SandboxCreateDirectoryArgs;
48
-
49
- async execute(args: SandboxCreateDirectoryArgs): Promise<ToolResult<SandboxCreateDirectoryResult>> {
47
+ async call(args: SandboxCreateDirectoryArgs): Promise<ToolResult<SandboxCreateDirectoryResult>> {
50
48
  const { containerId, path: dirPath, recursive } = args;
51
49
 
52
50
  this.logger.debug(`Creating directory ${dirPath} in container ${containerId} (recursive: ${recursive})`);
53
51
 
54
52
  const mkdirArgs = recursive ? ['-p', dirPath] : [dirPath];
55
53
 
56
- const result = await this.sandboxCommand.execute({
54
+ const result = await this.sandboxCommand.call({
57
55
  containerId,
58
56
  executable: 'mkdir',
59
57
  args: mkdirArgs,
@@ -15,7 +15,7 @@ limitations under the License.
15
15
  */
16
16
  import { Logger } from '@nestjs/common';
17
17
  import { z } from 'zod';
18
- import { InjectTool, Input, Tool, ToolInterface, ToolResult } from '@loopstack/common';
18
+ import { BaseTool, InjectTool, Tool, ToolResult } from '@loopstack/common';
19
19
  import { SandboxCommand } from '@loopstack/sandbox-tool';
20
20
 
21
21
  const inputSchema = z
@@ -35,19 +35,17 @@ interface SandboxDeleteResult {
35
35
  }
36
36
 
37
37
  @Tool({
38
- config: {
38
+ uiConfig: {
39
39
  description: 'Delete a file or directory in a sandbox container',
40
40
  },
41
+ schema: inputSchema,
41
42
  })
42
- export class SandboxDelete implements ToolInterface<SandboxDeleteArgs> {
43
+ export class SandboxDelete extends BaseTool {
43
44
  private readonly logger = new Logger(SandboxDelete.name);
44
45
 
45
46
  @InjectTool() private sandboxCommand: SandboxCommand;
46
47
 
47
- @Input({ schema: inputSchema })
48
- args: SandboxDeleteArgs;
49
-
50
- async execute(args: SandboxDeleteArgs): Promise<ToolResult<SandboxDeleteResult>> {
48
+ async call(args: SandboxDeleteArgs): Promise<ToolResult<SandboxDeleteResult>> {
51
49
  const { containerId, path: targetPath, recursive, force } = args;
52
50
 
53
51
  this.logger.debug(`Deleting ${targetPath} in container ${containerId} (recursive: ${recursive}, force: ${force})`);
@@ -57,7 +55,7 @@ export class SandboxDelete implements ToolInterface<SandboxDeleteArgs> {
57
55
  if (force) rmArgs.push('-f');
58
56
  rmArgs.push(targetPath);
59
57
 
60
- const result = await this.sandboxCommand.execute({
58
+ const result = await this.sandboxCommand.call({
61
59
  containerId,
62
60
  executable: 'rm',
63
61
  args: rmArgs,
@@ -15,7 +15,7 @@ limitations under the License.
15
15
  */
16
16
  import { Logger } from '@nestjs/common';
17
17
  import { z } from 'zod';
18
- import { InjectTool, Input, Tool, ToolInterface, ToolResult } from '@loopstack/common';
18
+ import { BaseTool, InjectTool, Tool, ToolResult } from '@loopstack/common';
19
19
  import { SandboxCommand } from '@loopstack/sandbox-tool';
20
20
 
21
21
  const inputSchema = z
@@ -34,26 +34,24 @@ interface SandboxExistsResult {
34
34
  }
35
35
 
36
36
  @Tool({
37
- config: {
37
+ uiConfig: {
38
38
  description: 'Check if a file or directory exists in a sandbox container',
39
39
  },
40
+ schema: inputSchema,
40
41
  })
41
- export class SandboxExists implements ToolInterface<SandboxExistsArgs> {
42
+ export class SandboxExists extends BaseTool {
42
43
  private readonly logger = new Logger(SandboxExists.name);
43
44
 
44
45
  @InjectTool()
45
46
  private sandboxCommand: SandboxCommand;
46
47
 
47
- @Input({ schema: inputSchema })
48
- args: SandboxExistsArgs;
49
-
50
- async execute(args: SandboxExistsArgs): Promise<ToolResult<SandboxExistsResult>> {
48
+ async call(args: SandboxExistsArgs): Promise<ToolResult<SandboxExistsResult>> {
51
49
  const { containerId, path: targetPath } = args;
52
50
 
53
51
  this.logger.debug(`Checking existence of ${targetPath} in container ${containerId}`);
54
52
 
55
53
  // Use test command to check existence and stat to get type
56
- const result = await this.sandboxCommand.execute({
54
+ const result = await this.sandboxCommand.call({
57
55
  containerId,
58
56
  executable: 'sh',
59
57
  args: [
@@ -15,7 +15,7 @@ limitations under the License.
15
15
  */
16
16
  import { Logger } from '@nestjs/common';
17
17
  import { z } from 'zod';
18
- import { InjectTool, Input, Tool, ToolInterface, ToolResult } from '@loopstack/common';
18
+ import { BaseTool, InjectTool, Tool, ToolResult } from '@loopstack/common';
19
19
  import { SandboxCommand } from '@loopstack/sandbox-tool';
20
20
 
21
21
  const inputSchema = z
@@ -41,26 +41,24 @@ interface SandboxFileInfoResult {
41
41
  }
42
42
 
43
43
  @Tool({
44
- config: {
44
+ uiConfig: {
45
45
  description: 'Get detailed information about a file or directory in a sandbox container',
46
46
  },
47
+ schema: inputSchema,
47
48
  })
48
- export class SandboxFileInfo implements ToolInterface<SandboxFileInfoArgs> {
49
+ export class SandboxFileInfo extends BaseTool {
49
50
  private readonly logger = new Logger(SandboxFileInfo.name);
50
51
 
51
52
  @InjectTool() private sandboxCommand: SandboxCommand;
52
53
 
53
- @Input({ schema: inputSchema })
54
- args: SandboxFileInfoArgs;
55
-
56
- async execute(args: SandboxFileInfoArgs): Promise<ToolResult<SandboxFileInfoResult>> {
54
+ async call(args: SandboxFileInfoArgs): Promise<ToolResult<SandboxFileInfoResult>> {
57
55
  const { containerId, path: targetPath } = args;
58
56
 
59
57
  this.logger.debug(`Getting file info for ${targetPath} in container ${containerId}`);
60
58
 
61
59
  // Use stat to get detailed file information
62
60
  // Format: type|size|permissions|owner|group|mtime|atime|ctime
63
- const result = await this.sandboxCommand.execute({
61
+ const result = await this.sandboxCommand.call({
64
62
  containerId,
65
63
  executable: 'stat',
66
64
  args: ['-c', '%F|%s|%A|%U|%G|%y|%x|%w', targetPath],
@@ -15,7 +15,7 @@ limitations under the License.
15
15
  */
16
16
  import { Logger } from '@nestjs/common';
17
17
  import { z } from 'zod';
18
- import { InjectTool, Input, Tool, ToolInterface, ToolResult } from '@loopstack/common';
18
+ import { BaseTool, InjectTool, Tool, ToolResult } from '@loopstack/common';
19
19
  import { SandboxCommand } from '@loopstack/sandbox-tool';
20
20
 
21
21
  const inputSchema = z
@@ -41,19 +41,17 @@ interface SandboxListDirectoryResult {
41
41
  }
42
42
 
43
43
  @Tool({
44
- config: {
44
+ uiConfig: {
45
45
  description: 'List files and directories in a sandbox container',
46
46
  },
47
+ schema: inputSchema,
47
48
  })
48
- export class SandboxListDirectory implements ToolInterface<SandboxListDirectoryArgs> {
49
+ export class SandboxListDirectory extends BaseTool {
49
50
  private readonly logger = new Logger(SandboxListDirectory.name);
50
51
 
51
52
  @InjectTool() private sandboxCommand: SandboxCommand;
52
53
 
53
- @Input({ schema: inputSchema })
54
- args: SandboxListDirectoryArgs;
55
-
56
- async execute(args: SandboxListDirectoryArgs): Promise<ToolResult<SandboxListDirectoryResult>> {
54
+ async call(args: SandboxListDirectoryArgs): Promise<ToolResult<SandboxListDirectoryResult>> {
57
55
  const { containerId, path: dirPath, recursive } = args;
58
56
 
59
57
  this.logger.debug(`Listing directory ${dirPath} in container ${containerId} (recursive: ${recursive})`);
@@ -64,7 +62,7 @@ export class SandboxListDirectory implements ToolInterface<SandboxListDirectoryA
64
62
  ? `find '${dirPath.replace(/'/g, "'\\''")}' -printf '%y %s %p\\n'`
65
63
  : `find '${dirPath.replace(/'/g, "'\\''")}' -maxdepth 1 -printf '%y %s %p\\n'`;
66
64
 
67
- const result = await this.sandboxCommand.execute({
65
+ const result = await this.sandboxCommand.call({
68
66
  containerId,
69
67
  executable: 'sh',
70
68
  args: ['-c', command],
@@ -15,7 +15,7 @@ limitations under the License.
15
15
  */
16
16
  import { Logger } from '@nestjs/common';
17
17
  import { z } from 'zod';
18
- import { InjectTool, Input, Tool, ToolInterface, ToolResult } from '@loopstack/common';
18
+ import { BaseTool, InjectTool, Tool, ToolResult } from '@loopstack/common';
19
19
  import { SandboxCommand } from '@loopstack/sandbox-tool';
20
20
 
21
21
  const inputSchema = z
@@ -34,25 +34,23 @@ interface SandboxReadFileResult {
34
34
  }
35
35
 
36
36
  @Tool({
37
- config: {
37
+ uiConfig: {
38
38
  description: 'Read file contents from a sandbox container',
39
39
  },
40
+ schema: inputSchema,
40
41
  })
41
- export class SandboxReadFile implements ToolInterface<SandboxReadFileArgs> {
42
+ export class SandboxReadFile extends BaseTool {
42
43
  private readonly logger = new Logger(SandboxReadFile.name);
43
44
 
44
45
  @InjectTool() private sandboxCommand: SandboxCommand;
45
46
 
46
- @Input({ schema: inputSchema })
47
- args: SandboxReadFileArgs;
48
-
49
- async execute(args: SandboxReadFileArgs): Promise<ToolResult<SandboxReadFileResult>> {
47
+ async call(args: SandboxReadFileArgs): Promise<ToolResult<SandboxReadFileResult>> {
50
48
  const { containerId, path, encoding } = args;
51
49
 
52
50
  this.logger.debug(`Reading file ${path} from container ${containerId} (encoding: ${encoding})`);
53
51
 
54
52
  const executable = encoding === 'base64' ? 'base64' : 'cat';
55
- const result = await this.sandboxCommand.execute({
53
+ const result = await this.sandboxCommand.call({
56
54
  containerId,
57
55
  executable,
58
56
  args: [path],
@@ -16,7 +16,7 @@ limitations under the License.
16
16
  import { Logger } from '@nestjs/common';
17
17
  import * as path from 'path';
18
18
  import { z } from 'zod';
19
- import { InjectTool, Input, Tool, ToolInterface, ToolResult } from '@loopstack/common';
19
+ import { BaseTool, InjectTool, Tool, ToolResult } from '@loopstack/common';
20
20
  import { SandboxCommand } from '@loopstack/sandbox-tool';
21
21
 
22
22
  const inputSchema = z
@@ -37,19 +37,17 @@ interface SandboxWriteFileResult {
37
37
  }
38
38
 
39
39
  @Tool({
40
- config: {
40
+ uiConfig: {
41
41
  description: 'Write content to a file in a sandbox container',
42
42
  },
43
+ schema: inputSchema,
43
44
  })
44
- export class SandboxWriteFile implements ToolInterface<SandboxWriteFileArgs> {
45
+ export class SandboxWriteFile extends BaseTool {
45
46
  private readonly logger = new Logger(SandboxWriteFile.name);
46
47
 
47
48
  @InjectTool() private sandboxCommand: SandboxCommand;
48
49
 
49
- @Input({ schema: inputSchema })
50
- args: SandboxWriteFileArgs;
51
-
52
- async execute(args: SandboxWriteFileArgs): Promise<ToolResult<SandboxWriteFileResult>> {
50
+ async call(args: SandboxWriteFileArgs): Promise<ToolResult<SandboxWriteFileResult>> {
53
51
  const { containerId, path: filePath, content, encoding, createParentDirs } = args;
54
52
 
55
53
  this.logger.debug(`Writing file ${filePath} to container ${containerId} (encoding: ${encoding})`);
@@ -59,7 +57,7 @@ export class SandboxWriteFile implements ToolInterface<SandboxWriteFileArgs> {
59
57
  const parentDir = path.posix.dirname(filePath);
60
58
  if (parentDir !== '/' && parentDir !== '.') {
61
59
  this.logger.debug(`Creating parent directory ${parentDir}`);
62
- const mkdirResult = await this.sandboxCommand.execute({
60
+ const mkdirResult = await this.sandboxCommand.call({
63
61
  containerId,
64
62
  executable: 'mkdir',
65
63
  args: ['-p', parentDir],
@@ -88,7 +86,7 @@ export class SandboxWriteFile implements ToolInterface<SandboxWriteFileArgs> {
88
86
  encoding === 'utf8' ? Buffer.from(content, 'utf8').toString('base64') : content.replace(/[^A-Za-z0-9+/=]/g, '');
89
87
 
90
88
  // Write file using base64 decode
91
- const result = await this.sandboxCommand.execute({
89
+ const result = await this.sandboxCommand.call({
92
90
  containerId,
93
91
  executable: 'sh',
94
92
  args: ['-c', `echo '${base64Content}' | base64 -d > '${filePath.replace(/'/g, "'\\''")}'`],