repoburg 1.3.154 → 1.3.155
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/backend/dist/src/llm-orchestration/action-handlers/dto/execute-code.args.dto.d.ts +1 -0
- package/backend/dist/src/llm-orchestration/action-handlers/dto/execute-code.args.dto.js +10 -0
- package/backend/dist/src/llm-orchestration/action-handlers/dto/execute-code.args.dto.js.map +1 -1
- package/backend/dist/src/llm-orchestration/action-handlers/execute-code.handler.d.ts +2 -0
- package/backend/dist/src/llm-orchestration/action-handlers/execute-code.handler.js +79 -12
- package/backend/dist/src/llm-orchestration/action-handlers/execute-code.handler.js.map +1 -1
- package/backend/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -11,7 +11,11 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.ExecuteCodeArgsDto = void 0;
|
|
13
13
|
const class_validator_1 = require("class-validator");
|
|
14
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
15
|
class ExecuteCodeArgsDto {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.language = 'typescript';
|
|
18
|
+
}
|
|
15
19
|
}
|
|
16
20
|
exports.ExecuteCodeArgsDto = ExecuteCodeArgsDto;
|
|
17
21
|
__decorate([
|
|
@@ -19,4 +23,10 @@ __decorate([
|
|
|
19
23
|
(0, class_validator_1.IsNotEmpty)(),
|
|
20
24
|
__metadata("design:type", String)
|
|
21
25
|
], ExecuteCodeArgsDto.prototype, "code", void 0);
|
|
26
|
+
__decorate([
|
|
27
|
+
(0, class_validator_1.IsOptional)(),
|
|
28
|
+
(0, class_validator_1.IsIn)(['typescript', 'python']),
|
|
29
|
+
(0, class_transformer_1.Transform)(({ value }) => value ?? 'typescript'),
|
|
30
|
+
__metadata("design:type", String)
|
|
31
|
+
], ExecuteCodeArgsDto.prototype, "language", void 0);
|
|
22
32
|
//# sourceMappingURL=execute-code.args.dto.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-code.args.dto.js","sourceRoot":"","sources":["../../../../../src/llm-orchestration/action-handlers/dto/execute-code.args.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"execute-code.args.dto.js","sourceRoot":"","sources":["../../../../../src/llm-orchestration/action-handlers/dto/execute-code.args.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAyE;AACzE,yDAA8C;AAE9C,MAAa,kBAAkB;IAA/B;QAQE,aAAQ,GAA4B,YAAY,CAAC;IACnD,CAAC;CAAA;AATD,gDASC;AANC;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;gDACA;AAKb;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,sBAAI,EAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC9B,IAAA,6BAAS,EAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,IAAI,YAAY,CAAC;;oDACC"}
|
|
@@ -5,9 +5,11 @@ export declare class ExecuteCodeHandler implements ActionHandler {
|
|
|
5
5
|
private readonly logger;
|
|
6
6
|
private readonly projectRoot;
|
|
7
7
|
private readonly tempDir;
|
|
8
|
+
private pythonAvailable;
|
|
8
9
|
getMetadata(): ToolMetadata;
|
|
9
10
|
private generateExample;
|
|
10
11
|
getDefinition(): string;
|
|
12
|
+
private isPythonAvailable;
|
|
11
13
|
execute(args: {
|
|
12
14
|
[key: string]: any;
|
|
13
15
|
}, _context: any): Promise<ActionExecutionResult>;
|
|
@@ -17,6 +17,16 @@ const spawn_with_kill_1 = require("../../utils/spawn-with-kill");
|
|
|
17
17
|
const path = require("path");
|
|
18
18
|
const fs = require("fs/promises");
|
|
19
19
|
const crypto = require("crypto");
|
|
20
|
+
const LANGUAGE_CONFIGS = {
|
|
21
|
+
typescript: {
|
|
22
|
+
extension: '.ts',
|
|
23
|
+
command: (tempFilePath) => `npx tsx "${tempFilePath}"`,
|
|
24
|
+
},
|
|
25
|
+
python: {
|
|
26
|
+
extension: '.py',
|
|
27
|
+
command: (tempFilePath) => `python3 "${tempFilePath}"`,
|
|
28
|
+
},
|
|
29
|
+
};
|
|
20
30
|
let ExecuteCodeHandler = ExecuteCodeHandler_1 = class ExecuteCodeHandler {
|
|
21
31
|
constructor() {
|
|
22
32
|
this.toolName = 'execute_code';
|
|
@@ -32,9 +42,15 @@ let ExecuteCodeHandler = ExecuteCodeHandler_1 = class ExecuteCodeHandler {
|
|
|
32
42
|
{
|
|
33
43
|
name: 'code',
|
|
34
44
|
type: 'string',
|
|
35
|
-
description: 'The
|
|
45
|
+
description: 'The code to execute. TypeScript or Python depending on the language parameter.',
|
|
36
46
|
required: true,
|
|
37
47
|
},
|
|
48
|
+
{
|
|
49
|
+
name: 'language',
|
|
50
|
+
type: 'string',
|
|
51
|
+
description: "The programming language of the code. 'typescript' (default) or 'python'.",
|
|
52
|
+
required: false,
|
|
53
|
+
},
|
|
38
54
|
],
|
|
39
55
|
};
|
|
40
56
|
}
|
|
@@ -42,32 +58,67 @@ let ExecuteCodeHandler = ExecuteCodeHandler_1 = class ExecuteCodeHandler {
|
|
|
42
58
|
return (0, utils_1.generateToolCallJson)(toolCall);
|
|
43
59
|
}
|
|
44
60
|
getDefinition() {
|
|
45
|
-
const
|
|
61
|
+
const tsExample = this.generateExample({
|
|
46
62
|
tool_name: this.toolName,
|
|
47
63
|
code: `
|
|
48
64
|
import * as fs from 'fs';
|
|
49
65
|
const files = fs.readdirSync('.');
|
|
50
66
|
console.log(files.join('\\n'));
|
|
67
|
+
`,
|
|
68
|
+
});
|
|
69
|
+
const pythonExample = this.generateExample({
|
|
70
|
+
tool_name: this.toolName,
|
|
71
|
+
language: 'python',
|
|
72
|
+
code: `
|
|
73
|
+
import os
|
|
74
|
+
files = os.listdir('.')
|
|
75
|
+
print('\\n'.join(files))
|
|
51
76
|
`,
|
|
52
77
|
});
|
|
53
78
|
const definition = `
|
|
54
79
|
-------------
|
|
55
80
|
### ${this.toolName}
|
|
56
|
-
Executes the provided
|
|
81
|
+
Executes the provided code in a temporary environment.
|
|
57
82
|
Useful for testing logic, verifying algorithms, or inspecting the system programmatically without permanently creating files.
|
|
58
|
-
The code is executed using 'npx tsx', so you can use ES modules and standard Node.js APIs.
|
|
59
83
|
|
|
60
|
-
|
|
84
|
+
Supports two languages:
|
|
85
|
+
- **typescript** (default): Executed via 'npx tsx'. Use ES modules and standard Node.js APIs.
|
|
86
|
+
- **python**: Executed via 'python3'. Use standard Python 3 libraries.
|
|
87
|
+
|
|
88
|
+
Choose the language best suited for the task: use TypeScript for filesystem/Node.js operations, Python for data analysis, math, or when the user explicitly requests Python. If the user specifies a language, use it.
|
|
89
|
+
|
|
90
|
+
If Python execution fails with a "not available" error, retry using TypeScript instead. Do NOT attempt to install Python.
|
|
61
91
|
|
|
62
92
|
#### Parameters
|
|
63
|
-
- "code": (string) The
|
|
93
|
+
- "code": (string) The code to execute.
|
|
94
|
+
- "language": (string, optional) The programming language: 'typescript' (default) or 'python'.
|
|
64
95
|
|
|
65
|
-
#### Example
|
|
66
|
-
:${
|
|
96
|
+
#### TypeScript Example
|
|
97
|
+
:${tsExample}
|
|
98
|
+
|
|
99
|
+
#### Python Example
|
|
100
|
+
:${pythonExample}
|
|
67
101
|
-------------
|
|
68
102
|
`;
|
|
69
103
|
return `\n${definition.trim()}\n`;
|
|
70
104
|
}
|
|
105
|
+
async isPythonAvailable() {
|
|
106
|
+
if (this.pythonAvailable !== undefined) {
|
|
107
|
+
return this.pythonAvailable;
|
|
108
|
+
}
|
|
109
|
+
try {
|
|
110
|
+
const result = await (0, spawn_with_kill_1.execWithProcessGroupKill)('python3 --version', {
|
|
111
|
+
cwd: this.projectRoot,
|
|
112
|
+
timeout: 5000,
|
|
113
|
+
});
|
|
114
|
+
this.pythonAvailable = !result.killed && result.exitCode === 0;
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
this.pythonAvailable = false;
|
|
118
|
+
}
|
|
119
|
+
this.logger.log(`Python availability check: ${this.pythonAvailable ? 'available' : 'not available'}`);
|
|
120
|
+
return this.pythonAvailable;
|
|
121
|
+
}
|
|
71
122
|
async execute(args, _context) {
|
|
72
123
|
const validatedArgs = (0, class_transformer_1.plainToClass)(execute_code_args_dto_1.ExecuteCodeArgsDto, args);
|
|
73
124
|
const errors = await (0, class_validator_1.validate)(validatedArgs);
|
|
@@ -83,16 +134,32 @@ console.log(files.join('\\n'));
|
|
|
83
134
|
execution_log: { output: '', error_message: errorMessages },
|
|
84
135
|
};
|
|
85
136
|
}
|
|
86
|
-
const { code } = validatedArgs;
|
|
137
|
+
const { code, language } = validatedArgs;
|
|
138
|
+
const config = LANGUAGE_CONFIGS[language];
|
|
139
|
+
if (language === 'python') {
|
|
140
|
+
const pythonReady = await this.isPythonAvailable();
|
|
141
|
+
if (!pythonReady) {
|
|
142
|
+
return {
|
|
143
|
+
status: 'FAILURE',
|
|
144
|
+
summary: 'Python is not available on this system.',
|
|
145
|
+
error_message: 'Python (python3) is not available on this system. Please use TypeScript instead by omitting the language parameter or setting language to "typescript". Do NOT attempt to install Python.',
|
|
146
|
+
persisted_args: { content: code, language },
|
|
147
|
+
execution_log: {
|
|
148
|
+
output: '',
|
|
149
|
+
error_message: 'Python (python3) is not available on this system. Please use TypeScript instead.',
|
|
150
|
+
},
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
}
|
|
87
154
|
const randomId = crypto.randomBytes(8).toString('hex');
|
|
88
|
-
const tempFilePath = path.join(this.tempDir, `exec-${randomId}.
|
|
155
|
+
const tempFilePath = path.join(this.tempDir, `exec-${randomId}${config.extension}`);
|
|
89
156
|
let unifiedOutput;
|
|
90
157
|
let executionStatus = 'SUCCESS';
|
|
91
158
|
let errorDetails;
|
|
92
159
|
try {
|
|
93
160
|
await fs.mkdir(this.tempDir, { recursive: true });
|
|
94
161
|
await fs.writeFile(tempFilePath, code, 'utf-8');
|
|
95
|
-
const result = await (0, spawn_with_kill_1.execWithProcessGroupKill)(
|
|
162
|
+
const result = await (0, spawn_with_kill_1.execWithProcessGroupKill)(config.command(tempFilePath), {
|
|
96
163
|
cwd: this.projectRoot,
|
|
97
164
|
timeout: 30000,
|
|
98
165
|
});
|
|
@@ -134,7 +201,7 @@ console.log(files.join('\\n'));
|
|
|
134
201
|
? `Code executed successfully.`
|
|
135
202
|
: `Code execution failed.`,
|
|
136
203
|
error_message: errorDetails,
|
|
137
|
-
persisted_args: { content: code },
|
|
204
|
+
persisted_args: { content: code, language },
|
|
138
205
|
execution_log: {
|
|
139
206
|
output: unifiedOutput,
|
|
140
207
|
error_message: errorDetails || '',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-code.handler.js","sourceRoot":"","sources":["../../../../src/llm-orchestration/action-handlers/execute-code.handler.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAoD;AAMpD,uEAAiE;AACjE,yDAAiD;AACjD,qDAA2C;AAE3C,uCAAmD;AACnD,iEAAuE;AACvE,6BAA6B;AAC7B,kCAAkC;AAClC,iCAAiC;
|
|
1
|
+
{"version":3,"file":"execute-code.handler.js","sourceRoot":"","sources":["../../../../src/llm-orchestration/action-handlers/execute-code.handler.ts"],"names":[],"mappings":"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"}
|