@theia/ai-terminal 1.76.0-next.7 → 1.76.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 (34) hide show
  1. package/lib/browser/abstract-shell-execution-tool.d.ts +39 -0
  2. package/lib/browser/abstract-shell-execution-tool.d.ts.map +1 -0
  3. package/lib/browser/abstract-shell-execution-tool.js +103 -0
  4. package/lib/browser/abstract-shell-execution-tool.js.map +1 -0
  5. package/lib/browser/index.d.ts +1 -0
  6. package/lib/browser/index.d.ts.map +1 -1
  7. package/lib/browser/index.js +1 -0
  8. package/lib/browser/index.js.map +1 -1
  9. package/lib/browser/predefined-shell-tool.d.ts +51 -0
  10. package/lib/browser/predefined-shell-tool.d.ts.map +1 -0
  11. package/lib/browser/predefined-shell-tool.js +77 -0
  12. package/lib/browser/predefined-shell-tool.js.map +1 -0
  13. package/lib/browser/predefined-shell-tool.spec.d.ts +2 -0
  14. package/lib/browser/predefined-shell-tool.spec.d.ts.map +1 -0
  15. package/lib/browser/predefined-shell-tool.spec.js +197 -0
  16. package/lib/browser/predefined-shell-tool.spec.js.map +1 -0
  17. package/lib/browser/shell-execution-tool.d.ts +4 -13
  18. package/lib/browser/shell-execution-tool.d.ts.map +1 -1
  19. package/lib/browser/shell-execution-tool.js +7 -91
  20. package/lib/browser/shell-execution-tool.js.map +1 -1
  21. package/lib/common/shell-execution-input-parser.spec.js +3 -3
  22. package/lib/common/shell-execution-input-parser.spec.js.map +1 -1
  23. package/lib/common/shell-execution-server.d.ts +18 -2
  24. package/lib/common/shell-execution-server.d.ts.map +1 -1
  25. package/lib/common/shell-execution-server.js +13 -9
  26. package/lib/common/shell-execution-server.js.map +1 -1
  27. package/package.json +9 -9
  28. package/src/browser/abstract-shell-execution-tool.ts +127 -0
  29. package/src/browser/index.ts +1 -0
  30. package/src/browser/predefined-shell-tool.spec.ts +222 -0
  31. package/src/browser/predefined-shell-tool.ts +100 -0
  32. package/src/browser/shell-execution-tool.ts +10 -103
  33. package/src/common/shell-execution-input-parser.spec.ts +3 -3
  34. package/src/common/shell-execution-server.ts +31 -9
@@ -19,27 +19,10 @@ exports.ShellExecutionTool = void 0;
19
19
  const tslib_1 = require("tslib");
20
20
  const inversify_1 = require("@theia/core/shared/inversify");
21
21
  const shell_command_permission_service_1 = require("./shell-command-permission-service");
22
- const browser_1 = require("@theia/workspace/lib/browser");
22
+ const abstract_shell_execution_tool_1 = require("./abstract-shell-execution-tool");
23
23
  const shell_execution_server_1 = require("../common/shell-execution-server");
24
24
  const core_1 = require("@theia/core");
25
- let ShellExecutionTool = class ShellExecutionTool {
26
- constructor() {
27
- this.runningExecutions = new Map();
28
- }
29
- async cancelExecution(toolCallId) {
30
- const executionId = this.runningExecutions.get(toolCallId);
31
- if (executionId) {
32
- const canceled = await this.shellServer.cancel(executionId);
33
- if (canceled) {
34
- this.runningExecutions.delete(toolCallId);
35
- }
36
- return canceled;
37
- }
38
- return false;
39
- }
40
- isExecutionRunning(toolCallId) {
41
- return this.runningExecutions.has(toolCallId);
42
- }
25
+ let ShellExecutionTool = class ShellExecutionTool extends abstract_shell_execution_tool_1.AbstractShellExecutionTool {
43
26
  getTool() {
44
27
  return {
45
28
  id: shell_execution_server_1.SHELL_EXECUTION_FUNCTION_ID,
@@ -148,50 +131,12 @@ TIMEOUT: Default 2 minutes, max 10 minutes. Specify higher timeout for longer co
148
131
  }
149
132
  async executeCommand(argString, ctx) {
150
133
  const args = JSON.parse(argString);
151
- const resolvedCwd = this.resolveCwd(args.cwd);
152
- // Generate execution ID and get tool call ID from context
153
- const executionId = (0, core_1.generateUuid)();
154
- const toolCallId = this.extractToolCallId(ctx);
155
- const cancellationToken = this.extractCancellationToken(ctx);
156
- // Track this execution
157
- if (toolCallId) {
158
- this.runningExecutions.set(toolCallId, executionId);
159
- }
160
- const cancellationListener = cancellationToken?.onCancellationRequested(() => {
161
- this.shellServer.cancel(executionId);
134
+ return this.runShellCommand({
135
+ command: args.command,
136
+ cwd: this.resolveCwd(args.cwd),
137
+ timeout: args.timeout,
138
+ ctx
162
139
  });
163
- try {
164
- const result = await this.shellServer.execute({
165
- command: args.command,
166
- cwd: resolvedCwd,
167
- timeout: args.timeout,
168
- executionId,
169
- });
170
- if (result.canceled) {
171
- return {
172
- canceled: true,
173
- output: this.combineAndTruncate(result.stdout, result.stderr) || undefined,
174
- duration: result.duration,
175
- };
176
- }
177
- // Combine stdout and stderr, apply truncation
178
- const combinedOutput = this.combineAndTruncate(result.stdout, result.stderr);
179
- return {
180
- success: result.success,
181
- exitCode: result.exitCode,
182
- output: combinedOutput,
183
- error: result.error,
184
- duration: result.duration,
185
- cwd: result.resolvedCwd,
186
- };
187
- }
188
- finally {
189
- // Clean up
190
- cancellationListener?.dispose();
191
- if (toolCallId) {
192
- this.runningExecutions.delete(toolCallId);
193
- }
194
- }
195
140
  }
196
141
  /**
197
142
  * Resolves a cwd value to an absolute filesystem path.
@@ -228,37 +173,8 @@ TIMEOUT: Default 2 minutes, max 10 minutes. Specify higher timeout for longer co
228
173
  'In a multi-root workspace, prefix paths with the workspace root name ' +
229
174
  `(e.g., '${rootNames[0]}/path'). Available roots: ${rootNames.join(', ')}.`);
230
175
  }
231
- extractToolCallId(ctx) {
232
- if (ctx && typeof ctx === 'object' && 'toolCallId' in ctx) {
233
- return ctx.toolCallId;
234
- }
235
- return undefined;
236
- }
237
- extractCancellationToken(ctx) {
238
- if (ctx && typeof ctx === 'object') {
239
- // Check for MutableChatRequestModel structure (response.cancellationToken)
240
- if ('response' in ctx) {
241
- const response = ctx.response;
242
- if (response?.cancellationToken) {
243
- return response.cancellationToken;
244
- }
245
- }
246
- }
247
- return undefined;
248
- }
249
- combineAndTruncate(stdout, stderr) {
250
- return (0, shell_execution_server_1.combineAndTruncate)(stdout, stderr);
251
- }
252
176
  };
253
177
  exports.ShellExecutionTool = ShellExecutionTool;
254
- tslib_1.__decorate([
255
- (0, inversify_1.inject)(shell_execution_server_1.ShellExecutionServer),
256
- tslib_1.__metadata("design:type", Object)
257
- ], ShellExecutionTool.prototype, "shellServer", void 0);
258
- tslib_1.__decorate([
259
- (0, inversify_1.inject)(browser_1.WorkspaceService),
260
- tslib_1.__metadata("design:type", browser_1.WorkspaceService)
261
- ], ShellExecutionTool.prototype, "workspaceService", void 0);
262
178
  tslib_1.__decorate([
263
179
  (0, inversify_1.inject)(shell_command_permission_service_1.ShellCommandPermissionService),
264
180
  tslib_1.__metadata("design:type", shell_command_permission_service_1.ShellCommandPermissionService)
@@ -1 +1 @@
1
- {"version":3,"file":"shell-execution-tool.js","sourceRoot":"","sources":["../../src/browser/shell-execution-tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shell-execution-tool.js","sourceRoot":"","sources":["../../src/browser/shell-execution-tool.ts"],"names":[],"mappings":"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"}
@@ -89,10 +89,10 @@ describe('parseShellExecutionInput', () => {
89
89
  const result = (0, shell_execution_input_parser_1.parseShellExecutionInput)('{"command": "echo \\"hello\\""}');
90
90
  (0, chai_1.expect)(result.command).to.equal('echo "hello"');
91
91
  });
92
- it('should handle incomplete command with backslash', () => {
93
- // During streaming, we get partial content - the regex stops at first unescaped quote
92
+ it('should unescape a quote in an incomplete command', () => {
93
+ // During streaming, we get partial content - the escaped quote is part of the command, not its end
94
94
  const result = (0, shell_execution_input_parser_1.parseShellExecutionInput)('{"command": "echo \\"hello');
95
- (0, chai_1.expect)(result.command).to.equal('echo \\');
95
+ (0, chai_1.expect)(result.command).to.equal('echo "hello');
96
96
  });
97
97
  it('should handle command with pipes and redirects', () => {
98
98
  const result = (0, shell_execution_input_parser_1.parseShellExecutionInput)('{"command": "cat file.txt | grep error > output.log"}');
@@ -1 +1 @@
1
- {"version":3,"file":"shell-execution-input-parser.spec.js","sourceRoot":"","sources":["../../src/common/shell-execution-input-parser.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shell-execution-input-parser.spec.js","sourceRoot":"","sources":["../../src/common/shell-execution-input-parser.spec.ts"],"names":[],"mappings":"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"}
@@ -49,6 +49,22 @@ export declare const HEAD_LINES = 50;
49
49
  export declare const TAIL_LINES = 50;
50
50
  export declare const GRACE_LINES = 10;
51
51
  export declare const MAX_LINE_LENGTH = 1000;
52
- export declare function truncateLine(line: string): string;
53
- export declare function combineAndTruncate(stdout: string, stderr: string): string;
52
+ /**
53
+ * Line and line-length budget applied to combined command output. The defaults suit the
54
+ * general-purpose `shellExecute` tool, where output is often a long build or test log and only
55
+ * the beginning and the end carry information. Tools whose output is meaningful as a whole
56
+ * (e.g. a diff) should raise these limits.
57
+ */
58
+ export interface OutputTruncationOptions {
59
+ /** Number of leading lines to keep. Default {@link HEAD_LINES}. */
60
+ headLines?: number;
61
+ /** Number of trailing lines to keep. Default {@link TAIL_LINES}. */
62
+ tailLines?: number;
63
+ /** Extra lines tolerated before truncation kicks in at all. Default {@link GRACE_LINES}. */
64
+ graceLines?: number;
65
+ /** Maximum length of a single line before its middle is elided. Default {@link MAX_LINE_LENGTH}. */
66
+ maxLineLength?: number;
67
+ }
68
+ export declare function truncateLine(line: string, maxLineLength?: number): string;
69
+ export declare function combineAndTruncate(stdout: string, stderr: string, options?: OutputTruncationOptions): string;
54
70
  //# sourceMappingURL=shell-execution-server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shell-execution-server.d.ts","sourceRoot":"","sources":["../../src/common/shell-execution-server.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,2BAA2B,iBAAiB,CAAC;AAE1D,eAAO,MAAM,oBAAoB,eAAiC,CAAC;AACnE,eAAO,MAAM,kBAAkB,8BAA8B,CAAC;AAE9D,MAAM,WAAW,qBAAqB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,qGAAqG;IACrG,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACjC,OAAO,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACvE,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,wBAAwB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,4BAA4B;IACzC,QAAQ,EAAE,IAAI,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,yBAAiB,wBAAwB,CAAC;IACtC,SAAgB,EAAE,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,wBAAwB,CAIhE;CACJ;AAED,yBAAiB,4BAA4B,CAAC;IAC1C,SAAgB,EAAE,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,4BAA4B,CAGpE;CACJ;AAED,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOjD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CA0BzE"}
1
+ {"version":3,"file":"shell-execution-server.d.ts","sourceRoot":"","sources":["../../src/common/shell-execution-server.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,2BAA2B,iBAAiB,CAAC;AAE1D,eAAO,MAAM,oBAAoB,eAAiC,CAAC;AACnE,eAAO,MAAM,kBAAkB,8BAA8B,CAAC;AAE9D,MAAM,WAAW,qBAAqB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,qGAAqG;IACrG,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACjC,OAAO,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACvE,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,wBAAwB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,4BAA4B;IACzC,QAAQ,EAAE,IAAI,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,yBAAiB,wBAAwB,CAAC;IACtC,SAAgB,EAAE,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,wBAAwB,CAIhE;CACJ;AAED,yBAAiB,4BAA4B,CAAC;IAC1C,SAAgB,EAAE,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,4BAA4B,CAGpE;CACJ;AAED,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACpC,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4FAA4F;IAC5F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oGAAoG;IACpG,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,GAAE,MAAwB,GAAG,MAAM,CAO1F;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,MAAM,CA+B5G"}
@@ -42,15 +42,19 @@ exports.HEAD_LINES = 50;
42
42
  exports.TAIL_LINES = 50;
43
43
  exports.GRACE_LINES = 10;
44
44
  exports.MAX_LINE_LENGTH = 1000;
45
- function truncateLine(line) {
46
- if (line.length <= exports.MAX_LINE_LENGTH) {
45
+ function truncateLine(line, maxLineLength = exports.MAX_LINE_LENGTH) {
46
+ if (line.length <= maxLineLength) {
47
47
  return line;
48
48
  }
49
- const halfLength = Math.floor((exports.MAX_LINE_LENGTH - 30) / 2);
49
+ const halfLength = Math.floor((maxLineLength - 30) / 2);
50
50
  const omittedCount = line.length - halfLength * 2;
51
51
  return `${line.slice(0, halfLength)} ... [${omittedCount} chars omitted] ... ${line.slice(-halfLength)}`;
52
52
  }
53
- function combineAndTruncate(stdout, stderr) {
53
+ function combineAndTruncate(stdout, stderr, options) {
54
+ const head = options?.headLines ?? exports.HEAD_LINES;
55
+ const tail = options?.tailLines ?? exports.TAIL_LINES;
56
+ const grace = options?.graceLines ?? exports.GRACE_LINES;
57
+ const maxLineLength = options?.maxLineLength ?? exports.MAX_LINE_LENGTH;
54
58
  const trimmedStdout = stdout.trim();
55
59
  const trimmedStderr = stderr.trim();
56
60
  let output = trimmedStdout;
@@ -63,12 +67,12 @@ function combineAndTruncate(stdout, stderr) {
63
67
  return output;
64
68
  }
65
69
  const lines = output.split('\n');
66
- if (lines.length <= exports.HEAD_LINES + exports.TAIL_LINES + exports.GRACE_LINES) {
67
- return lines.map(truncateLine).join('\n');
70
+ if (lines.length <= head + tail + grace) {
71
+ return lines.map(line => truncateLine(line, maxLineLength)).join('\n');
68
72
  }
69
- const headLines = lines.slice(0, exports.HEAD_LINES).map(truncateLine);
70
- const tailLines = lines.slice(-exports.TAIL_LINES).map(truncateLine);
71
- const omittedCount = lines.length - exports.HEAD_LINES - exports.TAIL_LINES;
73
+ const headLines = lines.slice(0, head).map(line => truncateLine(line, maxLineLength));
74
+ const tailLines = lines.slice(-tail).map(line => truncateLine(line, maxLineLength));
75
+ const omittedCount = lines.length - head - tail;
72
76
  return [...headLines, `\n... [${omittedCount} lines omitted] ...\n`, ...tailLines].join('\n');
73
77
  }
74
78
  //# sourceMappingURL=shell-execution-server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shell-execution-server.js","sourceRoot":"","sources":["../../src/common/shell-execution-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shell-execution-server.js","sourceRoot":"","sources":["../../src/common/shell-execution-server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@theia/ai-terminal",
3
- "version": "1.76.0-next.7+7c303b183",
3
+ "version": "1.76.0",
4
4
  "description": "Theia - AI Terminal Extension",
5
5
  "dependencies": {
6
- "@theia/ai-chat": "1.76.0-next.7+7c303b183",
7
- "@theia/ai-chat-ui": "1.76.0-next.7+7c303b183",
8
- "@theia/ai-core": "1.76.0-next.7+7c303b183",
9
- "@theia/core": "1.76.0-next.7+7c303b183",
10
- "@theia/terminal": "1.76.0-next.7+7c303b183",
11
- "@theia/workspace": "1.76.0-next.7+7c303b183",
6
+ "@theia/ai-chat": "1.76.0",
7
+ "@theia/ai-chat-ui": "1.76.0",
8
+ "@theia/ai-core": "1.76.0",
9
+ "@theia/core": "1.76.0",
10
+ "@theia/terminal": "1.76.0",
11
+ "@theia/workspace": "1.76.0",
12
12
  "zod": "^4.4.3"
13
13
  },
14
14
  "publishConfig": {
@@ -45,10 +45,10 @@
45
45
  "watch": "theiaext watch"
46
46
  },
47
47
  "devDependencies": {
48
- "@theia/ext-scripts": "1.75.0"
48
+ "@theia/ext-scripts": "1.76.0"
49
49
  },
50
50
  "nyc": {
51
51
  "extends": "../../configs/nyc.json"
52
52
  },
53
- "gitHead": "7c303b1836421183d7013f0bd679a9a30ff0b5dc"
53
+ "gitHead": "b9b54c500b46515512e2b44371bc0c7122947bed"
54
54
  }
@@ -0,0 +1,127 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2026 EclipseSource GmbH.
3
+ //
4
+ // This program and the accompanying materials are made available under the
5
+ // terms of the Eclipse Public License v. 2.0 which is available at
6
+ // http://www.eclipse.org/legal/epl-2.0.
7
+ //
8
+ // This Source Code may also be made available under the following Secondary
9
+ // Licenses when the conditions for such availability set forth in the Eclipse
10
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ // with the GNU Classpath Exception which is available at
12
+ // https://www.gnu.org/software/classpath/license.html.
13
+ //
14
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import { injectable, inject } from '@theia/core/shared/inversify';
18
+ import { generateUuid } from '@theia/core';
19
+ import { ToolInvocationContext, ToolProvider, ToolRequest } from '@theia/ai-core';
20
+ import { WorkspaceService } from '@theia/workspace/lib/browser/workspace-service';
21
+ import {
22
+ OutputTruncationOptions,
23
+ ShellExecutionCanceledResult,
24
+ ShellExecutionServer,
25
+ ShellExecutionToolResult,
26
+ combineAndTruncate
27
+ } from '../common/shell-execution-server';
28
+
29
+ /** A single shell command to run through {@link AbstractShellExecutionTool.runShellCommand}. */
30
+ export interface ShellCommandExecution {
31
+ command: string;
32
+ /** Absolute working directory. If omitted the command runs in the backend process' cwd. */
33
+ cwd?: string;
34
+ /** Timeout in milliseconds. Falls back to the backend default when omitted. */
35
+ timeout?: number;
36
+ /**
37
+ * The invocation context, if any. Its tool call id makes the execution cancellable via
38
+ * {@link AbstractShellExecutionTool.cancelExecution}, and its cancellation token kills the
39
+ * underlying process when fired. Typed as `unknown` because tool handlers receive the context
40
+ * untyped; {@link ToolInvocationContext} narrows it.
41
+ */
42
+ ctx?: unknown;
43
+ /** Overrides the default output truncation budget. */
44
+ truncation?: OutputTruncationOptions;
45
+ }
46
+
47
+ /**
48
+ * Shared plumbing for tools that run a shell command through the {@link ShellExecutionServer}:
49
+ * execution-id bookkeeping, cancellation wiring, the canceled-result branch and output truncation.
50
+ *
51
+ * Subclasses only decide *which* command runs and how it is exposed to the LLM.
52
+ */
53
+ @injectable()
54
+ export abstract class AbstractShellExecutionTool implements ToolProvider {
55
+
56
+ @inject(ShellExecutionServer)
57
+ protected readonly shellServer: ShellExecutionServer;
58
+
59
+ @inject(WorkspaceService)
60
+ protected readonly workspaceService: WorkspaceService;
61
+
62
+ /** Maps tool call ids to the execution ids of their in-flight shell commands. */
63
+ protected readonly runningExecutions = new Map<string, string>();
64
+
65
+ abstract getTool(): ToolRequest;
66
+
67
+ async cancelExecution(toolCallId: string): Promise<boolean> {
68
+ const executionId = this.runningExecutions.get(toolCallId);
69
+ if (executionId) {
70
+ const canceled = await this.shellServer.cancel(executionId);
71
+ if (canceled) {
72
+ this.runningExecutions.delete(toolCallId);
73
+ }
74
+ return canceled;
75
+ }
76
+ return false;
77
+ }
78
+
79
+ isExecutionRunning(toolCallId: string): boolean {
80
+ return this.runningExecutions.has(toolCallId);
81
+ }
82
+
83
+ /** Runs `execution` and maps the raw server result onto the tool result shape. */
84
+ protected async runShellCommand(execution: ShellCommandExecution): Promise<ShellExecutionToolResult | ShellExecutionCanceledResult> {
85
+ const { command, cwd, timeout, ctx, truncation } = execution;
86
+ const toolCallId = ToolInvocationContext.getToolCallId(ctx);
87
+ const cancellationToken = ToolInvocationContext.getCancellationToken(ctx);
88
+
89
+ const executionId = generateUuid();
90
+ if (toolCallId) {
91
+ this.runningExecutions.set(toolCallId, executionId);
92
+ }
93
+ const cancellationListener = cancellationToken?.onCancellationRequested(() => {
94
+ this.shellServer.cancel(executionId);
95
+ });
96
+
97
+ try {
98
+ const result = await this.shellServer.execute({ command, cwd, timeout, executionId });
99
+
100
+ if (result.canceled) {
101
+ return {
102
+ canceled: true,
103
+ output: this.combineAndTruncate(result.stdout, result.stderr, truncation) || undefined,
104
+ duration: result.duration
105
+ };
106
+ }
107
+
108
+ return {
109
+ success: result.success,
110
+ exitCode: result.exitCode,
111
+ output: this.combineAndTruncate(result.stdout, result.stderr, truncation),
112
+ error: result.error,
113
+ duration: result.duration,
114
+ cwd: result.resolvedCwd
115
+ };
116
+ } finally {
117
+ cancellationListener?.dispose();
118
+ if (toolCallId) {
119
+ this.runningExecutions.delete(toolCallId);
120
+ }
121
+ }
122
+ }
123
+
124
+ protected combineAndTruncate(stdout: string, stderr: string, options?: OutputTruncationOptions): string {
125
+ return combineAndTruncate(stdout, stderr, options);
126
+ }
127
+ }
@@ -15,3 +15,4 @@
15
15
  // *****************************************************************************
16
16
 
17
17
  export * from './shell-command-permission-service';
18
+ export * from './predefined-shell-tool';