@zhin.js/plugin-code-runner 3.0.2 → 3.0.4

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.
@@ -1,8 +1,8 @@
1
- import { defineTool } from '@zhin.js/agent/tools';
1
+ import { defineAgentTool } from '@zhin.js/agent/tools';
2
2
  import { z } from 'zod';
3
3
  import { formatResult, runCode } from '../../src/run-code.js';
4
4
 
5
- export default defineTool<{ language: string; code: string }>({
5
+ export default defineAgentTool<{ language: string; code: string }>({
6
6
  description: '在沙箱中运行代码片段,返回 stdout/stderr/error',
7
7
  inputSchema: z.object({
8
8
  language: z.string().min(1),
@@ -0,0 +1,14 @@
1
+ import { defineCommand } from '@zhin.js/command';
2
+ import { formatResult, runCode } from '../../src/run-code.js';
3
+
4
+ export default defineCommand({
5
+ description: '在沙箱中运行代码片段(/code-runner run <语言> <代码>)',
6
+ async execute({ params, args }) {
7
+ const language = String(params.language ?? '');
8
+ // code 原来是第二动态段,约定式命令只支持单动态文件参数,改从 args 取
9
+ const code = args.join(' ').trim();
10
+ if (!code) return '请提供要运行的代码,例如:/code-runner run javascript alert(1+1)';
11
+ const result = await runCode(language, code);
12
+ return formatResult(result);
13
+ },
14
+ });
package/lib/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export { formatResult, runCode } from './run-code.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC"}
package/lib/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { formatResult, runCode } from './run-code.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,9 @@
1
+ interface RunResult {
2
+ stdout: string;
3
+ stderr: string;
4
+ error: string;
5
+ }
6
+ export declare function runCode(language: string, code: string): Promise<RunResult>;
7
+ export declare function formatResult(result: RunResult): string;
8
+ export {};
9
+ //# sourceMappingURL=run-code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-code.d.ts","sourceRoot":"","sources":["../src/run-code.ts"],"names":[],"mappings":"AAiBA,UAAU,SAAS;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAmDhF;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAMtD"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-code.js","sourceRoot":"","sources":["../src/run-code.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@zhin.js/plugin-code-runner",
3
- "version": "3.0.2",
4
- "description": "Sandboxed code execution plugin for Zhin.js — run code snippets via AI or command",
3
+ "version": "3.0.4",
4
+ "description": "Sandboxed code execution plugin for Zhin.js (Plugin Runtime)",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
7
7
  "types": "./lib/index.d.ts",
@@ -14,6 +14,9 @@
14
14
  "./package.json": "./package.json"
15
15
  },
16
16
  "files": [
17
+ "plugin.ts",
18
+ "schema.json",
19
+ "commands",
17
20
  "src",
18
21
  "lib",
19
22
  "agent",
@@ -34,16 +37,27 @@
34
37
  "url": "https://github.com/lc-cn"
35
38
  },
36
39
  "license": "MIT",
40
+ "dependencies": {
41
+ "@zhin.js/command": "1.0.2",
42
+ "@zhin.js/plugin-runtime": "1.1.0"
43
+ },
37
44
  "devDependencies": {
38
45
  "typescript": "^6.0.3",
46
+ "vitest": "^4.1.10",
39
47
  "zod": "^4.4.3",
40
- "zhin.js": "4.1.2",
41
- "@zhin.js/agent": "1.0.3"
48
+ "@zhin.js/agent": "1.0.5"
42
49
  },
43
50
  "peerDependencies": {
44
51
  "zod": "^4.0.0",
45
- "zhin.js": "4.1.2",
46
- "@zhin.js/agent": "1.0.3"
52
+ "@zhin.js/agent": "1.0.5"
53
+ },
54
+ "peerDependenciesMeta": {
55
+ "@zhin.js/agent": {
56
+ "optional": true
57
+ },
58
+ "zod": {
59
+ "optional": true
60
+ }
47
61
  },
48
62
  "repository": {
49
63
  "type": "git",
@@ -54,17 +68,26 @@
54
68
  "access": "public",
55
69
  "registry": "https://registry.npmjs.org"
56
70
  },
57
- "peerDependenciesMeta": {
58
- "@zhin.js/agent": {
59
- "optional": true
60
- },
61
- "zod": {
62
- "optional": true
63
- }
71
+ "engines": {
72
+ "node": "^20.19.0 || >=22.12.0"
73
+ },
74
+ "zhin": {
75
+ "protocol": 1,
76
+ "type": "plugin",
77
+ "entry": "./plugin.ts",
78
+ "engine": "^1.0.0",
79
+ "runtime": "trusted",
80
+ "features": [
81
+ {
82
+ "package": "@zhin.js/command",
83
+ "api": "^1.0.0"
84
+ }
85
+ ],
86
+ "plugins": []
64
87
  },
65
88
  "scripts": {
66
89
  "build": "tsc",
67
90
  "clean": "rimraf lib",
68
- "test": "sh -c 'cd ../../.. && vitest run plugins/utils/code-runner/tests'"
91
+ "test": "NODE_OPTIONS=--experimental-strip-types vitest run --root ../../.. plugins/utils/code-runner/tests"
69
92
  }
70
93
  }
package/plugin.ts ADDED
@@ -0,0 +1,8 @@
1
+ import { definePlugin } from '@zhin.js/plugin-runtime';
2
+
3
+ export default definePlugin({
4
+ name: 'code-runner',
5
+ metadata: {
6
+ displayName: 'Code Runner',
7
+ },
8
+ });
package/schema.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "additionalProperties": false,
5
+ "properties": {}
6
+ }
package/src/index.ts CHANGED
@@ -1,20 +1 @@
1
- /**
2
- * @zhin.js/plugin-code-runner
3
- *
4
- * 沙箱代码执行插件 —— 通过 glot.io API 安全运行代码片段
5
- */
6
- import { formatCompact, MessageCommand, usePlugin } from 'zhin.js';
7
- import { formatResult, runCode } from './run-code.js';
8
-
9
- const { addCommand, logger } = usePlugin();
10
-
11
- addCommand(
12
- new MessageCommand('运行 <language:text> <code:text>')
13
- .desc('在沙箱中运行代码片段')
14
- .action(async (_message, result) => {
15
- const { language, code } = result.params as { language: string; code: string };
16
- logger.debug(formatCompact({ op: 'run', language, len: code.length }));
17
- const res = await runCode(language, code);
18
- return formatResult(res);
19
- }),
20
- );
1
+ export { formatResult, runCode } from './run-code.js';
@@ -1,17 +0,0 @@
1
- import { defineTool } from '@zhin.js/agent/tools';
2
- import { z } from 'zod';
3
- import { formatResult, runCode } from '../../src/run-code.js';
4
- export default defineTool({
5
- description: '在沙箱中运行代码片段,返回 stdout/stderr/error',
6
- inputSchema: z.object({
7
- language: z.string().min(1),
8
- code: z.string().min(1),
9
- }),
10
- keywords: ['运行代码', '执行代码', 'run code', 'execute', '代码'],
11
- tags: ['code', 'run', 'execute', 'sandbox'],
12
- async execute({ language, code }) {
13
- const result = await runCode(language, code);
14
- return formatResult(result);
15
- },
16
- });
17
- //# sourceMappingURL=run_code.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run_code.js","sourceRoot":"","sources":["../../../agent/tools/run_code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAE9D,eAAe,UAAU,CAAqC;IAC5D,WAAW,EAAE,mCAAmC;IAChD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KACxB,CAAC;IACF,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC;IACvD,IAAI,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC;IAC3C,KAAK,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC9B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC7C,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;CACF,CAAC,CAAC"}
package/lib/src/index.js DELETED
@@ -1,17 +0,0 @@
1
- /**
2
- * @zhin.js/plugin-code-runner
3
- *
4
- * 沙箱代码执行插件 —— 通过 glot.io API 安全运行代码片段
5
- */
6
- import { formatCompact, MessageCommand, usePlugin } from 'zhin.js';
7
- import { formatResult, runCode } from './run-code.js';
8
- const { addCommand, logger } = usePlugin();
9
- addCommand(new MessageCommand('运行 <language:text> <code:text>')
10
- .desc('在沙箱中运行代码片段')
11
- .action(async (_message, result) => {
12
- const { language, code } = result.params;
13
- logger.debug(formatCompact({ op: 'run', language, len: code.length }));
14
- const res = await runCode(language, code);
15
- return formatResult(res);
16
- }));
17
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAEtD,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;AAE3C,UAAU,CACR,IAAI,cAAc,CAAC,gCAAgC,CAAC;KACjD,IAAI,CAAC,YAAY,CAAC;KAClB,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE;IACjC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,MAA4C,CAAC;IAC/E,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACvE,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC1C,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC,CAAC,CACL,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-code.js","sourceRoot":"","sources":["../../src/run-code.ts"],"names":[],"mappings":"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"}
File without changes