@aalis/plugin-tool-code-runner 0.10.1 → 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 CHANGED
@@ -1,8 +1,8 @@
1
1
  declare const _default: import("@aalis/core").PluginDefinition<{
2
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/core").ServiceRef<import("@aalis/api-storage").StorageService>>;
4
- proc: import("@aalis/core").ServiceDescriptor<import("@aalis/api-process").ProcessService, import("@aalis/core").ServiceRef<import("@aalis/api-process").ProcessService>>;
5
- codeSandbox: import("@aalis/core").OptionalUse<import("@aalis/api-code-sandbox").CodeSandboxService, import("@aalis/core").ServiceRef<import("@aalis/api-code-sandbox").CodeSandboxService>>;
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
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;AAmJA,wBA2JG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;AAmIA,wBAmJG"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { codeSandbox } from '@aalis/api-code-sandbox';
2
- import { createProcessGateway, processService } from '@aalis/api-process';
3
- import { createStorageGateway, resolveAgainstCwd, storage } from '@aalis/api-storage';
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
6
  import { defineConfig, parseConfig } from '@aalis/schema-config';
@@ -34,18 +34,6 @@ const configSchema = defineConfig({
34
34
  },
35
35
  },
36
36
  },
37
- defaultTimeout: {
38
- type: 'number',
39
- label: '默认超时 (ms)',
40
- default: 60000,
41
- description: '脚本执行默认超时时间',
42
- },
43
- maxTimeout: {
44
- type: 'number',
45
- label: '最大超时 (ms)',
46
- default: 300000,
47
- description: '允许指定的最大超时时间',
48
- },
49
37
  maxOutputSize: {
50
38
  type: 'number',
51
39
  label: '最大输出字节',
@@ -113,20 +101,17 @@ const uses = {
113
101
  config,
114
102
  };
115
103
  async function createRunnerConfig(caps, cfg) {
116
- if (!caps.storage.all().some(e => typeof e.instance.resolveLocalPath === 'function')) {
117
- throw new Error('代码执行器需要至少一个支持 local-path 的 storage entry');
118
- }
119
- const gateway = createStorageGateway(caps.storage);
104
+ if (!caps.storage.present)
105
+ throw new Error('代码执行器需要 storage 服务');
106
+ const gateway = caps.storage.use;
120
107
  const cwdUri = toRunnerCwdUri(cfg.workingDirectory);
121
108
  return {
122
- defaultTimeout: cfg.defaultTimeout,
123
- maxTimeout: cfg.maxTimeout,
124
109
  maxOutputSize: cfg.maxOutputSize,
125
110
  cwd: await gateway.resolveLocalPath(cwdUri, 'read'),
126
111
  env: safeEnv(),
127
112
  // mode='none' → 不带 sandbox(裸跑);mode='auto' → 带策略,runCode 经 code-sandbox 强制隔离或 fail-closed
128
113
  sandbox: cfg.sandbox.mode === 'none' ? undefined : { network: cfg.sandbox.network },
129
- codeSandbox: caps.codeSandbox.current,
114
+ codeSandbox: caps.codeSandbox.present ? caps.codeSandbox.use : undefined,
130
115
  };
131
116
  }
132
117
  export default definePlugin({
@@ -137,19 +122,17 @@ export default definePlugin({
137
122
  uses,
138
123
  apply(caps) {
139
124
  const { tools, proc, storage, codeSandbox, logger } = caps;
140
- const cfg = parseConfig(configSchema, caps.config, logger);
125
+ const cfg = parseConfig(configSchema, caps.config.use, logger.use);
141
126
  if (cfg.sandbox.mode === 'none') {
142
- logger.warn('⚠️ code-runner 运行在【无隔离】模式(sandbox.mode=none):代码以宿主用户全权限裸跑,仅在完全可信环境使用。');
127
+ logger.use.warn('⚠️ code-runner 运行在【无隔离】模式(sandbox.mode=none):代码以宿主用户全权限裸跑,仅在完全可信环境使用。');
143
128
  }
144
129
  const cwdUri = toRunnerCwdUri(cfg.workingDirectory);
145
- const processGateway = createProcessGateway(proc);
146
- const storageGateway = createStorageGateway(storage);
147
130
  // 每次调用现取:cwd 要按当时的 storage 实况解析,沙箱后端也可能中途上下线
148
131
  const runnerDeps = { storage, codeSandbox };
149
132
  // 创建带分组标记的工具视图
150
- const groupTools = withToolGroups(tools, ['code-runner']);
133
+ const groupTools = withToolGroups(tools.use, ['code-runner']);
151
134
  // 注册工具分组
152
- tools.registerGroup({
135
+ tools.use.registerGroup({
153
136
  name: 'code-runner',
154
137
  label: '代码执行',
155
138
  description: '编写并运行 Python / JavaScript 代码来解决计算、分析、文件处理等问题',
@@ -184,10 +167,6 @@ export default definePlugin({
184
167
  type: 'string',
185
168
  description: '完整的 Python 脚本源代码',
186
169
  },
187
- timeout: {
188
- type: 'number',
189
- description: `超时毫秒数(可选,默认 ${cfg.defaultTimeout},最大 ${cfg.maxTimeout})`,
190
- },
191
170
  },
192
171
  required: ['code'],
193
172
  additionalProperties: false,
@@ -195,16 +174,16 @@ export default definePlugin({
195
174
  },
196
175
  },
197
176
  visibility: 'restricted',
198
- handler: async (args) => {
177
+ background: {},
178
+ handler: async (args, callCtx) => {
199
179
  const code = args.code;
200
- const timeout = args.timeout;
201
- logger.debug(`run_python: ${code.length} 字符`);
180
+ logger.use.debug(`run_python: ${code.length} 字符`);
202
181
  const runnerConfig = await createRunnerConfig(runnerDeps, cfg);
203
- const result = await runCode(processGateway, storageGateway, cfg.python.interpreter, code, '.py', runnerConfig, timeout);
182
+ const result = await runCode(proc.use, storage.use, cfg.python.interpreter, code, '.py', runnerConfig, [], callCtx.signal);
204
183
  return JSON.stringify(result);
205
184
  },
206
185
  });
207
- logger.info(`Python 代码执行工具已启用 (解释器: ${cfg.python.interpreter})`);
186
+ logger.use.info(`Python 代码执行工具已启用 (解释器: ${cfg.python.interpreter})`);
208
187
  }
209
188
  // ==================== run_javascript ====================
210
189
  if (cfg.javascript.enabled) {
@@ -232,10 +211,6 @@ export default definePlugin({
232
211
  type: 'string',
233
212
  description: '完整的 JavaScript (Node.js ESM) 脚本源代码',
234
213
  },
235
- timeout: {
236
- type: 'number',
237
- description: `超时毫秒数(可选,默认 ${cfg.defaultTimeout},最大 ${cfg.maxTimeout})`,
238
- },
239
214
  },
240
215
  required: ['code'],
241
216
  additionalProperties: false,
@@ -243,18 +218,18 @@ export default definePlugin({
243
218
  },
244
219
  },
245
220
  visibility: 'restricted',
246
- handler: async (args) => {
221
+ background: {},
222
+ handler: async (args, callCtx) => {
247
223
  const code = args.code;
248
- const timeout = args.timeout;
249
- logger.debug(`run_javascript: ${code.length} 字符`);
224
+ logger.use.debug(`run_javascript: ${code.length} 字符`);
250
225
  const runnerConfig = await createRunnerConfig(runnerDeps, cfg);
251
- const result = await runCode(processGateway, storageGateway, cfg.javascript.interpreter, code, '.mjs', runnerConfig, timeout);
226
+ const result = await runCode(proc.use, storage.use, cfg.javascript.interpreter, code, '.mjs', runnerConfig, [], callCtx.signal);
252
227
  return JSON.stringify(result);
253
228
  },
254
229
  });
255
- logger.info(`JavaScript 代码执行工具已启用 (解释器: ${cfg.javascript.interpreter})`);
230
+ logger.use.info(`JavaScript 代码执行工具已启用 (解释器: ${cfg.javascript.interpreter})`);
256
231
  }
257
- logger.info(`代码执行器插件已启动 (工作目录: ${cwdUri})`);
232
+ logger.use.info(`代码执行器插件已启动 (工作目录: ${cwdUri})`);
258
233
  },
259
234
  });
260
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":"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"}
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
- timedOut?: boolean;
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, timeout?: number, extraArgs?: string[]): Promise<RunResult>;
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
@@ -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,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,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,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;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,OAAO,CAAC,EAAE,MAAM,EAChB,SAAS,GAAE,MAAM,EAAO,GACvB,OAAO,CAAC,SAAS,CAAC,CAuEpB"}
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, timeout, extraArgs = []) {
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
- timeout: effectiveTimeout,
56
+ signal,
58
57
  policy,
59
58
  })
60
59
  : await proc.execFile(interpreter, [...extraArgs, scriptPath], {
61
60
  cwd: config.cwd,
62
61
  env,
63
- timeout: effectiveTimeout,
62
+ signal,
64
63
  });
65
- return {
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 timedOut = e.result.signal === 'SIGKILL';
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: '',
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
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.10.1",
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.6.0 <1.0.0",
28
- "@aalis/schema-config": ">=0.14.0 <1.0.0",
29
- "@aalis/api-process": ">=0.7.0 <1.0.0",
30
- "@aalis/api-storage": ">=0.6.0 <1.0.0",
31
- "@aalis/api-tools": ">=0.9.0 <1.0.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.19.1"
36
+ "@aalis/core": "0.20.0"
37
37
  },
38
38
  "peerDependencies": {
39
- "@aalis/core": ">=0.17.0 <1.0.0"
39
+ "@aalis/core": ">=0.20.0 <1.0.0"
40
40
  },
41
41
  "aalis": {
42
42
  "service": {