@aalis/plugin-tool-code-runner 0.10.0 → 0.11.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.
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -74
- package/dist/index.js.map +1 -1
- package/dist/runner.d.ts +11 -7
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +22 -11
- package/dist/runner.js.map +1 -1
- package/package.json +8 -8
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
declare const _default: import("@aalis/core").PluginDefinition<{
|
|
2
|
-
tools: import("@aalis/core
|
|
3
|
-
storage: import("@aalis/core").ServiceDescriptor<import("@aalis/api-storage").StorageService, import("@aalis/
|
|
4
|
-
proc: import("@aalis/core").ServiceDescriptor<import("@aalis/api-process").ProcessService, import("@aalis/
|
|
5
|
-
codeSandbox: import("@aalis/core
|
|
2
|
+
tools: import("@aalis/core").OptionalUse<import("@aalis/api-tools").ToolService, import("@aalis/api-tools").BoundTools>;
|
|
3
|
+
storage: import("@aalis/core").ServiceDescriptor<import("@aalis/api-storage").StorageService, import("@aalis/api-storage").BoundStorage>;
|
|
4
|
+
proc: import("@aalis/core").ServiceDescriptor<import("@aalis/api-process").ProcessService, import("@aalis/api-process").ProcessService>;
|
|
5
|
+
codeSandbox: import("@aalis/core").OptionalUse<import("@aalis/api-code-sandbox").CodeSandboxService, import("@aalis/api-code-sandbox").CodeSandboxService>;
|
|
6
6
|
logger: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Logger, import("@aalis/core").Logger>;
|
|
7
7
|
config: import("@aalis/core").ServiceDescriptor<(identity: symbol) => Readonly<Record<string, unknown>>, Readonly<Record<string, unknown>>>;
|
|
8
8
|
}>;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;AAmIA,wBAmJG"}
|
package/dist/index.js
CHANGED
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
import { codeSandbox } from '@aalis/api-code-sandbox';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { processService } from '@aalis/api-process';
|
|
3
|
+
import { resolveAgainstCwd, storage } from '@aalis/api-storage';
|
|
4
4
|
import { tools, withToolGroups } from '@aalis/api-tools';
|
|
5
5
|
import { config, definePlugin, logger, optional } from '@aalis/core';
|
|
6
|
+
import { defineConfig, parseConfig } from '@aalis/schema-config';
|
|
6
7
|
import { runCode } from './runner.js';
|
|
7
|
-
const configSchema = {
|
|
8
|
+
const configSchema = defineConfig({
|
|
8
9
|
python: {
|
|
9
10
|
label: 'Python',
|
|
10
11
|
fields: {
|
|
11
|
-
enabled: { type: 'boolean', label: '启用 run_python', default: true },
|
|
12
|
+
enabled: { type: 'boolean', label: '启用 run_python', default: true, onInvalid: 'error' },
|
|
12
13
|
interpreter: {
|
|
13
14
|
type: 'string',
|
|
14
15
|
label: '解释器路径',
|
|
15
16
|
default: 'python3',
|
|
17
|
+
required: true,
|
|
18
|
+
onInvalid: 'error',
|
|
16
19
|
description: 'Python 解释器路径或命令名,如 python3、/usr/bin/python3',
|
|
17
20
|
},
|
|
18
21
|
},
|
|
@@ -20,27 +23,17 @@ const configSchema = {
|
|
|
20
23
|
javascript: {
|
|
21
24
|
label: 'JavaScript (Node.js)',
|
|
22
25
|
fields: {
|
|
23
|
-
enabled: { type: 'boolean', label: '启用 run_javascript', default: true },
|
|
26
|
+
enabled: { type: 'boolean', label: '启用 run_javascript', default: true, onInvalid: 'error' },
|
|
24
27
|
interpreter: {
|
|
25
28
|
type: 'string',
|
|
26
29
|
label: '解释器路径',
|
|
27
30
|
default: 'node',
|
|
31
|
+
required: true,
|
|
32
|
+
onInvalid: 'error',
|
|
28
33
|
description: 'Node.js 解释器路径或命令名',
|
|
29
34
|
},
|
|
30
35
|
},
|
|
31
36
|
},
|
|
32
|
-
defaultTimeout: {
|
|
33
|
-
type: 'number',
|
|
34
|
-
label: '默认超时 (ms)',
|
|
35
|
-
default: 60000,
|
|
36
|
-
description: '脚本执行默认超时时间',
|
|
37
|
-
},
|
|
38
|
-
maxTimeout: {
|
|
39
|
-
type: 'number',
|
|
40
|
-
label: '最大超时 (ms)',
|
|
41
|
-
default: 300000,
|
|
42
|
-
description: '允许指定的最大超时时间',
|
|
43
|
-
},
|
|
44
37
|
maxOutputSize: {
|
|
45
38
|
type: 'number',
|
|
46
39
|
label: '最大输出字节',
|
|
@@ -51,6 +44,7 @@ const configSchema = {
|
|
|
51
44
|
type: 'string',
|
|
52
45
|
label: '逻辑工作目录',
|
|
53
46
|
default: 'workspace:/',
|
|
47
|
+
onInvalid: 'error',
|
|
54
48
|
description: '脚本执行时的 storage URI 工作目录,如 workspace:/ 或 tmp:/run;相对路径会解释为 workspace:/ 下路径。',
|
|
55
49
|
},
|
|
56
50
|
sandbox: {
|
|
@@ -60,6 +54,7 @@ const configSchema = {
|
|
|
60
54
|
type: 'select',
|
|
61
55
|
label: '隔离模式',
|
|
62
56
|
default: 'auto',
|
|
57
|
+
onInvalid: 'error',
|
|
63
58
|
options: [
|
|
64
59
|
{ label: '自动(有沙箱则强制隔离,无则拒绝运行)', value: 'auto' },
|
|
65
60
|
{ label: '无隔离(裸进程,危险,仅信任环境)', value: 'none' },
|
|
@@ -72,6 +67,7 @@ const configSchema = {
|
|
|
72
67
|
type: 'select',
|
|
73
68
|
label: '子进程网络',
|
|
74
69
|
default: 'deny',
|
|
70
|
+
onInvalid: 'error',
|
|
75
71
|
options: [
|
|
76
72
|
{ label: '断网(推荐)', value: 'deny' },
|
|
77
73
|
{ label: '放开(粗粒度,无法按域名过滤)', value: 'allow' },
|
|
@@ -80,30 +76,7 @@ const configSchema = {
|
|
|
80
76
|
},
|
|
81
77
|
},
|
|
82
78
|
},
|
|
83
|
-
};
|
|
84
|
-
function resolveConfig(config) {
|
|
85
|
-
const py = config.python;
|
|
86
|
-
const js = config.javascript;
|
|
87
|
-
const sb = config.sandbox;
|
|
88
|
-
return {
|
|
89
|
-
python: {
|
|
90
|
-
enabled: py?.enabled ?? true,
|
|
91
|
-
interpreter: py?.interpreter || 'python3',
|
|
92
|
-
},
|
|
93
|
-
javascript: {
|
|
94
|
-
enabled: js?.enabled ?? true,
|
|
95
|
-
interpreter: js?.interpreter || 'node',
|
|
96
|
-
},
|
|
97
|
-
defaultTimeout: config.defaultTimeout ?? 60000,
|
|
98
|
-
maxTimeout: config.maxTimeout ?? 300000,
|
|
99
|
-
maxOutputSize: config.maxOutputSize ?? 131072,
|
|
100
|
-
workingDirectory: config.workingDirectory ?? 'workspace:/',
|
|
101
|
-
sandbox: {
|
|
102
|
-
mode: sb?.mode === 'none' ? 'none' : 'auto',
|
|
103
|
-
network: sb?.network === 'allow' ? 'allow' : 'deny',
|
|
104
|
-
},
|
|
105
|
-
};
|
|
106
|
-
}
|
|
79
|
+
});
|
|
107
80
|
function toRunnerCwdUri(input) {
|
|
108
81
|
return resolveAgainstCwd(input, 'workspace:/');
|
|
109
82
|
}
|
|
@@ -128,20 +101,17 @@ const uses = {
|
|
|
128
101
|
config,
|
|
129
102
|
};
|
|
130
103
|
async function createRunnerConfig(caps, cfg) {
|
|
131
|
-
if (!caps.storage.
|
|
132
|
-
throw new Error('
|
|
133
|
-
|
|
134
|
-
const gateway = createStorageGateway(caps.storage);
|
|
104
|
+
if (!caps.storage.present)
|
|
105
|
+
throw new Error('代码执行器需要 storage 服务');
|
|
106
|
+
const gateway = caps.storage.use;
|
|
135
107
|
const cwdUri = toRunnerCwdUri(cfg.workingDirectory);
|
|
136
108
|
return {
|
|
137
|
-
defaultTimeout: cfg.defaultTimeout,
|
|
138
|
-
maxTimeout: cfg.maxTimeout,
|
|
139
109
|
maxOutputSize: cfg.maxOutputSize,
|
|
140
110
|
cwd: await gateway.resolveLocalPath(cwdUri, 'read'),
|
|
141
111
|
env: safeEnv(),
|
|
142
112
|
// mode='none' → 不带 sandbox(裸跑);mode='auto' → 带策略,runCode 经 code-sandbox 强制隔离或 fail-closed
|
|
143
113
|
sandbox: cfg.sandbox.mode === 'none' ? undefined : { network: cfg.sandbox.network },
|
|
144
|
-
codeSandbox: caps.codeSandbox.
|
|
114
|
+
codeSandbox: caps.codeSandbox.present ? caps.codeSandbox.use : undefined,
|
|
145
115
|
};
|
|
146
116
|
}
|
|
147
117
|
export default definePlugin({
|
|
@@ -151,20 +121,18 @@ export default definePlugin({
|
|
|
151
121
|
configSchema,
|
|
152
122
|
uses,
|
|
153
123
|
apply(caps) {
|
|
154
|
-
const { tools, proc, storage, codeSandbox, logger
|
|
155
|
-
const cfg =
|
|
124
|
+
const { tools, proc, storage, codeSandbox, logger } = caps;
|
|
125
|
+
const cfg = parseConfig(configSchema, caps.config.use, logger.use);
|
|
156
126
|
if (cfg.sandbox.mode === 'none') {
|
|
157
|
-
logger.warn('⚠️ code-runner 运行在【无隔离】模式(sandbox.mode=none):代码以宿主用户全权限裸跑,仅在完全可信环境使用。');
|
|
127
|
+
logger.use.warn('⚠️ code-runner 运行在【无隔离】模式(sandbox.mode=none):代码以宿主用户全权限裸跑,仅在完全可信环境使用。');
|
|
158
128
|
}
|
|
159
129
|
const cwdUri = toRunnerCwdUri(cfg.workingDirectory);
|
|
160
|
-
const processGateway = createProcessGateway(proc);
|
|
161
|
-
const storageGateway = createStorageGateway(storage);
|
|
162
130
|
// 每次调用现取:cwd 要按当时的 storage 实况解析,沙箱后端也可能中途上下线
|
|
163
131
|
const runnerDeps = { storage, codeSandbox };
|
|
164
132
|
// 创建带分组标记的工具视图
|
|
165
|
-
const groupTools = withToolGroups(tools, ['code-runner']);
|
|
133
|
+
const groupTools = withToolGroups(tools.use, ['code-runner']);
|
|
166
134
|
// 注册工具分组
|
|
167
|
-
tools.registerGroup({
|
|
135
|
+
tools.use.registerGroup({
|
|
168
136
|
name: 'code-runner',
|
|
169
137
|
label: '代码执行',
|
|
170
138
|
description: '编写并运行 Python / JavaScript 代码来解决计算、分析、文件处理等问题',
|
|
@@ -199,10 +167,6 @@ export default definePlugin({
|
|
|
199
167
|
type: 'string',
|
|
200
168
|
description: '完整的 Python 脚本源代码',
|
|
201
169
|
},
|
|
202
|
-
timeout: {
|
|
203
|
-
type: 'number',
|
|
204
|
-
description: `超时毫秒数(可选,默认 ${cfg.defaultTimeout},最大 ${cfg.maxTimeout})`,
|
|
205
|
-
},
|
|
206
170
|
},
|
|
207
171
|
required: ['code'],
|
|
208
172
|
additionalProperties: false,
|
|
@@ -210,16 +174,16 @@ export default definePlugin({
|
|
|
210
174
|
},
|
|
211
175
|
},
|
|
212
176
|
visibility: 'restricted',
|
|
213
|
-
|
|
177
|
+
background: {},
|
|
178
|
+
handler: async (args, callCtx) => {
|
|
214
179
|
const code = args.code;
|
|
215
|
-
|
|
216
|
-
logger.debug(`run_python: ${code.length} 字符`);
|
|
180
|
+
logger.use.debug(`run_python: ${code.length} 字符`);
|
|
217
181
|
const runnerConfig = await createRunnerConfig(runnerDeps, cfg);
|
|
218
|
-
const result = await runCode(
|
|
182
|
+
const result = await runCode(proc.use, storage.use, cfg.python.interpreter, code, '.py', runnerConfig, [], callCtx.signal);
|
|
219
183
|
return JSON.stringify(result);
|
|
220
184
|
},
|
|
221
185
|
});
|
|
222
|
-
logger.info(`Python 代码执行工具已启用 (解释器: ${cfg.python.interpreter})`);
|
|
186
|
+
logger.use.info(`Python 代码执行工具已启用 (解释器: ${cfg.python.interpreter})`);
|
|
223
187
|
}
|
|
224
188
|
// ==================== run_javascript ====================
|
|
225
189
|
if (cfg.javascript.enabled) {
|
|
@@ -247,10 +211,6 @@ export default definePlugin({
|
|
|
247
211
|
type: 'string',
|
|
248
212
|
description: '完整的 JavaScript (Node.js ESM) 脚本源代码',
|
|
249
213
|
},
|
|
250
|
-
timeout: {
|
|
251
|
-
type: 'number',
|
|
252
|
-
description: `超时毫秒数(可选,默认 ${cfg.defaultTimeout},最大 ${cfg.maxTimeout})`,
|
|
253
|
-
},
|
|
254
214
|
},
|
|
255
215
|
required: ['code'],
|
|
256
216
|
additionalProperties: false,
|
|
@@ -258,18 +218,18 @@ export default definePlugin({
|
|
|
258
218
|
},
|
|
259
219
|
},
|
|
260
220
|
visibility: 'restricted',
|
|
261
|
-
|
|
221
|
+
background: {},
|
|
222
|
+
handler: async (args, callCtx) => {
|
|
262
223
|
const code = args.code;
|
|
263
|
-
|
|
264
|
-
logger.debug(`run_javascript: ${code.length} 字符`);
|
|
224
|
+
logger.use.debug(`run_javascript: ${code.length} 字符`);
|
|
265
225
|
const runnerConfig = await createRunnerConfig(runnerDeps, cfg);
|
|
266
|
-
const result = await runCode(
|
|
226
|
+
const result = await runCode(proc.use, storage.use, cfg.javascript.interpreter, code, '.mjs', runnerConfig, [], callCtx.signal);
|
|
267
227
|
return JSON.stringify(result);
|
|
268
228
|
},
|
|
269
229
|
});
|
|
270
|
-
logger.info(`JavaScript 代码执行工具已启用 (解释器: ${cfg.javascript.interpreter})`);
|
|
230
|
+
logger.use.info(`JavaScript 代码执行工具已启用 (解释器: ${cfg.javascript.interpreter})`);
|
|
271
231
|
}
|
|
272
|
-
logger.info(`代码执行器插件已启动 (工作目录: ${cwdUri})`);
|
|
232
|
+
logger.use.info(`代码执行器插件已启动 (工作目录: ${cwdUri})`);
|
|
273
233
|
},
|
|
274
234
|
});
|
|
275
235
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/runner.d.ts
CHANGED
|
@@ -8,8 +8,6 @@ import type { CodeSandboxService } from '@aalis/api-code-sandbox';
|
|
|
8
8
|
import type { ProcessService } from '@aalis/api-process';
|
|
9
9
|
import type { StorageService } from '@aalis/api-storage';
|
|
10
10
|
export interface RunnerConfig {
|
|
11
|
-
defaultTimeout: number;
|
|
12
|
-
maxTimeout: number;
|
|
13
11
|
maxOutputSize: number;
|
|
14
12
|
/** 子进程 cwd(已通过 storage.resolveLocalPath 解析的本地路径) */
|
|
15
13
|
cwd: string;
|
|
@@ -30,20 +28,26 @@ export interface RunResult {
|
|
|
30
28
|
exitCode: number;
|
|
31
29
|
stdout: string;
|
|
32
30
|
stderr: string;
|
|
33
|
-
|
|
31
|
+
/** 脚本没能运行(沙箱不可用、起进程失败),或没被中止而以非零退出(「退出码 N」)、被信号结束:带 error 的工具结果判为失败 */
|
|
34
32
|
error?: string;
|
|
33
|
+
/** 调用被中止且脚本是被信号结束的 */
|
|
34
|
+
aborted?: true;
|
|
35
|
+
/** 随 aborted 给出的文字说明(与 exec 的「命令已中止」同一口径) */
|
|
36
|
+
message?: string;
|
|
37
|
+
/** 调用已中止、但脚本不是被信号结束的(中止前已正常退出等):按实际退出回报并加此注 */
|
|
38
|
+
note?: string;
|
|
35
39
|
}
|
|
36
40
|
/**
|
|
37
|
-
*
|
|
41
|
+
* 执行代码脚本。不另设超时:等多久由执行器的让出时限管,停只认 signal
|
|
38
42
|
*
|
|
39
43
|
* @param proc ProcessService 句柄
|
|
40
44
|
* @param storage StorageService(用于写脚本到 tmp)
|
|
41
45
|
* @param interpreter 解释器路径 (python3 / node)
|
|
42
46
|
* @param code 完整源代码
|
|
43
47
|
* @param ext 临时文件扩展名 (.py / .mjs)
|
|
44
|
-
* @param config
|
|
45
|
-
* @param timeout 可选自定义超时
|
|
48
|
+
* @param config 输出限制、工作目录与沙箱
|
|
46
49
|
* @param extraArgs 额外的解释器参数
|
|
50
|
+
* @param signal 执行器给这次调用的中止信号:中止时经 process 服务(或 code-sandbox)按进程组停掉脚本
|
|
47
51
|
*/
|
|
48
|
-
export declare function runCode(proc: ProcessService, storage: StorageService, interpreter: string, code: string, ext: string, config: RunnerConfig,
|
|
52
|
+
export declare function runCode(proc: ProcessService, storage: StorageService, interpreter: string, code: string, ext: string, config: RunnerConfig, extraArgs?: string[], signal?: AbortSignal): Promise<RunResult>;
|
|
49
53
|
//# sourceMappingURL=runner.d.ts.map
|
package/dist/runner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,WAAW,YAAY;IAC3B,
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,GAAG,EAAE,MAAM,CAAC;IACZ;mEAC+D;IAC/D,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC;;;OAGG;IACH,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACxC,mDAAmD;IACnD,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAClC;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAQD;;;;;;;;;;;GAWG;AACH,wBAAsB,OAAO,CAC3B,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,YAAY,EACpB,SAAS,GAAE,MAAM,EAAO,EACxB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,SAAS,CAAC,CAgFpB"}
|
package/dist/runner.js
CHANGED
|
@@ -12,19 +12,18 @@ function truncateOutput(output, maxSize) {
|
|
|
12
12
|
return `${truncated}\n...[输出截断,超过 ${maxSize} 字节]`;
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
15
|
+
* 执行代码脚本。不另设超时:等多久由执行器的让出时限管,停只认 signal
|
|
16
16
|
*
|
|
17
17
|
* @param proc ProcessService 句柄
|
|
18
18
|
* @param storage StorageService(用于写脚本到 tmp)
|
|
19
19
|
* @param interpreter 解释器路径 (python3 / node)
|
|
20
20
|
* @param code 完整源代码
|
|
21
21
|
* @param ext 临时文件扩展名 (.py / .mjs)
|
|
22
|
-
* @param config
|
|
23
|
-
* @param timeout 可选自定义超时
|
|
22
|
+
* @param config 输出限制、工作目录与沙箱
|
|
24
23
|
* @param extraArgs 额外的解释器参数
|
|
24
|
+
* @param signal 执行器给这次调用的中止信号:中止时经 process 服务(或 code-sandbox)按进程组停掉脚本
|
|
25
25
|
*/
|
|
26
|
-
export async function runCode(proc, storage, interpreter, code, ext, config,
|
|
27
|
-
const effectiveTimeout = Math.min(Math.max(1000, timeout ?? config.defaultTimeout), config.maxTimeout);
|
|
26
|
+
export async function runCode(proc, storage, interpreter, code, ext, config, extraArgs = [], signal) {
|
|
28
27
|
const tmp = await proc.makeTempDir('code-runner');
|
|
29
28
|
try {
|
|
30
29
|
const scriptUri = `${tmp.uri}/script${ext}`;
|
|
@@ -54,32 +53,44 @@ export async function runCode(proc, storage, interpreter, code, ext, config, tim
|
|
|
54
53
|
args: [...extraArgs, scriptPath],
|
|
55
54
|
cwd: config.cwd,
|
|
56
55
|
env,
|
|
57
|
-
|
|
56
|
+
signal,
|
|
58
57
|
policy,
|
|
59
58
|
})
|
|
60
59
|
: await proc.execFile(interpreter, [...extraArgs, scriptPath], {
|
|
61
60
|
cwd: config.cwd,
|
|
62
61
|
env,
|
|
63
|
-
|
|
62
|
+
signal,
|
|
64
63
|
});
|
|
65
|
-
|
|
64
|
+
const output = {
|
|
66
65
|
exitCode: result.code ?? -1,
|
|
67
66
|
stdout: truncateOutput(result.stdout, config.maxOutputSize),
|
|
68
67
|
stderr: truncateOutput(result.stderr, config.maxOutputSize),
|
|
69
68
|
};
|
|
69
|
+
// 退出码 0 不是被信号结束的:调用已中止也按实际退出回报,只注明
|
|
70
|
+
return signal?.aborted ? { ...output, note: '调用已中止' } : output;
|
|
70
71
|
}
|
|
71
72
|
catch (err) {
|
|
72
73
|
// ProcessService.execFile 在非 0 退出时抛错,但会把 .result 挂上
|
|
73
74
|
const e = err;
|
|
74
75
|
if (e.result) {
|
|
75
|
-
const
|
|
76
|
-
return {
|
|
76
|
+
const output = {
|
|
77
77
|
exitCode: e.result.code ?? -1,
|
|
78
78
|
stdout: truncateOutput(e.result.stdout, config.maxOutputSize),
|
|
79
79
|
stderr: truncateOutput(e.result.stderr, config.maxOutputSize),
|
|
80
|
-
...(timedOut ? { timedOut: true } : {}),
|
|
81
80
|
};
|
|
81
|
+
if (signal?.aborted) {
|
|
82
|
+
// 被信号结束的才说被中止(中止宽限到点的 SIGKILL 也算);中止前已退出或 Windows 下强制结束
|
|
83
|
+
// (signal 可能为 null)的按实际退出回报,免得下一轮把已经生效的脚本再跑一遍
|
|
84
|
+
if (e.result.signal !== null)
|
|
85
|
+
return { ...output, aborted: true, message: '代码已中止' };
|
|
86
|
+
return { ...output, note: '调用已中止' };
|
|
87
|
+
}
|
|
88
|
+
const ended = e.result.signal !== null ? `被信号 ${e.result.signal} 结束` : `退出码 ${output.exitCode}`;
|
|
89
|
+
return { ...output, error: ended };
|
|
82
90
|
}
|
|
91
|
+
// 没有退出结果:spawn 失败,或已中止时 spawn 同步抛出(不起进程)
|
|
92
|
+
if (signal?.aborted)
|
|
93
|
+
return { exitCode: -1, stdout: '', stderr: '', aborted: true, message: '代码已中止' };
|
|
83
94
|
return {
|
|
84
95
|
exitCode: -1,
|
|
85
96
|
stdout: '',
|
package/dist/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aalis/plugin-tool-code-runner",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -24,19 +24,19 @@
|
|
|
24
24
|
"dist"
|
|
25
25
|
],
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@aalis/api-code-sandbox": ">=0.
|
|
28
|
-
"@aalis/schema-config": ">=0.
|
|
29
|
-
"@aalis/api-process": ">=0.
|
|
30
|
-
"@aalis/api-storage": ">=0.
|
|
31
|
-
"@aalis/api-tools": ">=0.
|
|
27
|
+
"@aalis/api-code-sandbox": ">=0.7.0 <1.0.0",
|
|
28
|
+
"@aalis/schema-config": ">=0.15.0 <1.0.0",
|
|
29
|
+
"@aalis/api-process": ">=0.9.0 <1.0.0",
|
|
30
|
+
"@aalis/api-storage": ">=0.8.0 <1.0.0",
|
|
31
|
+
"@aalis/api-tools": ">=0.11.0 <1.0.0"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@types/node": "^22.0.0",
|
|
35
35
|
"typescript": "^5.7.0",
|
|
36
|
-
"@aalis/core": "0.
|
|
36
|
+
"@aalis/core": "0.20.0"
|
|
37
37
|
},
|
|
38
38
|
"peerDependencies": {
|
|
39
|
-
"@aalis/core": ">=0.
|
|
39
|
+
"@aalis/core": ">=0.20.0 <1.0.0"
|
|
40
40
|
},
|
|
41
41
|
"aalis": {
|
|
42
42
|
"service": {
|