@zhin.js/agent 0.0.17 → 0.0.19
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/CHANGELOG.md +18 -0
- package/README.md +14 -8
- package/lib/builtin-tools.d.ts +5 -137
- package/lib/builtin-tools.d.ts.map +1 -1
- package/lib/builtin-tools.js +321 -732
- package/lib/builtin-tools.js.map +1 -1
- package/lib/discover-agents.d.ts +28 -0
- package/lib/discover-agents.d.ts.map +1 -0
- package/lib/discover-agents.js +116 -0
- package/lib/discover-agents.js.map +1 -0
- package/lib/discover-skills.d.ts +49 -0
- package/lib/discover-skills.d.ts.map +1 -0
- package/lib/discover-skills.js +297 -0
- package/lib/discover-skills.js.map +1 -0
- package/lib/discover-tools.d.ts +56 -0
- package/lib/discover-tools.d.ts.map +1 -0
- package/lib/discover-tools.js +263 -0
- package/lib/discover-tools.js.map +1 -0
- package/lib/discovery-utils.d.ts +27 -0
- package/lib/discovery-utils.d.ts.map +1 -0
- package/lib/discovery-utils.js +96 -0
- package/lib/discovery-utils.js.map +1 -0
- package/lib/file-policy.d.ts +41 -4
- package/lib/file-policy.d.ts.map +1 -1
- package/lib/file-policy.js +126 -4
- package/lib/file-policy.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/init/create-zhin-agent.d.ts.map +1 -1
- package/lib/init/create-zhin-agent.js +3 -1
- package/lib/init/create-zhin-agent.js.map +1 -1
- package/lib/init/register-builtin-tools.d.ts.map +1 -1
- package/lib/init/register-builtin-tools.js +51 -54
- package/lib/init/register-builtin-tools.js.map +1 -1
- package/lib/zhin-agent/config.js +1 -1
- package/lib/zhin-agent/config.js.map +1 -1
- package/lib/zhin-agent/exec-policy.d.ts +48 -2
- package/lib/zhin-agent/exec-policy.d.ts.map +1 -1
- package/lib/zhin-agent/exec-policy.js +184 -23
- package/lib/zhin-agent/exec-policy.js.map +1 -1
- package/lib/zhin-agent/prompt.d.ts +14 -0
- package/lib/zhin-agent/prompt.d.ts.map +1 -1
- package/lib/zhin-agent/prompt.js +192 -45
- package/lib/zhin-agent/prompt.js.map +1 -1
- package/package.json +3 -3
- package/src/builtin-tools.ts +333 -835
- package/src/discover-agents.ts +138 -0
- package/src/discover-skills.ts +325 -0
- package/src/discover-tools.ts +302 -0
- package/src/discovery-utils.ts +96 -0
- package/src/file-policy.ts +152 -4
- package/src/index.ts +5 -1
- package/src/init/create-zhin-agent.ts +3 -1
- package/src/init/register-builtin-tools.ts +51 -62
- package/src/zhin-agent/config.ts +1 -1
- package/src/zhin-agent/exec-policy.ts +229 -24
- package/src/zhin-agent/prompt.ts +209 -47
- package/tests/exec-policy.test.ts +355 -0
- package/tests/file-policy.test.ts +189 -1
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 发现模块共用的工具函数
|
|
3
|
+
*
|
|
4
|
+
* 被 builtin-tools / discover-skills / discover-agents / discover-tools 共同依赖,
|
|
5
|
+
* 独立出来以避免循环导入。
|
|
6
|
+
*/
|
|
7
|
+
import type { Plugin } from '@zhin.js/core';
|
|
8
|
+
/** 将 unknown 错误转为字符串 */
|
|
9
|
+
export declare function errMsg(e: unknown): string;
|
|
10
|
+
/** 获取 data/ 目录路径,自动创建 */
|
|
11
|
+
export declare function getDataDir(): string;
|
|
12
|
+
/** 展开路径中的 ~ 为实际 home 目录 */
|
|
13
|
+
export declare function expandHome(p: string): string;
|
|
14
|
+
/** Workspace / ~/.zhin / data 下 skills 根目录(与 activate_skill 扫描顺序一致的前缀) */
|
|
15
|
+
export declare function buildStandardSkillDirs(): string[];
|
|
16
|
+
/**
|
|
17
|
+
* 从根插件树收集:根插件与**直接子插件**包目录下的 `skills/`(其下为 `<name>/SKILL.md`)
|
|
18
|
+
*/
|
|
19
|
+
export declare function collectPluginSkillSearchRoots(root: Plugin | null | undefined): string[];
|
|
20
|
+
/**
|
|
21
|
+
* 技能发现与 activate_skill 查找共用:标准目录 + 已加载插件包 skills/
|
|
22
|
+
*/
|
|
23
|
+
export declare function getSkillSearchDirectories(root?: Plugin | null): string[];
|
|
24
|
+
export declare function mergeSkillDirsWithResolver(resolver?: () => string[]): string[];
|
|
25
|
+
/** 将 Node 文件错误转为 miniclawd 风格的结构化短句,便于模型区分并重试 */
|
|
26
|
+
export declare function nodeErrToFileMessage(err: unknown, filePath: string, kind: 'read' | 'write' | 'edit' | 'list'): string;
|
|
27
|
+
//# sourceMappingURL=discovery-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery-utils.d.ts","sourceRoot":"","sources":["../src/discovery-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C,wBAAwB;AACxB,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAEzC;AAED,yBAAyB;AACzB,wBAAgB,UAAU,IAAI,MAAM,CAInC;AAED,2BAA2B;AAC3B,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAI5C;AAED,0EAA0E;AAC1E,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAMjD;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,EAAE,CAqBvF;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,EAAE,CAMxE;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,CAAC,EAAE,MAAM,MAAM,EAAE,GAAG,MAAM,EAAE,CAM9E;AAED,iDAAiD;AACjD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CASrH"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 发现模块共用的工具函数
|
|
3
|
+
*
|
|
4
|
+
* 被 builtin-tools / discover-skills / discover-agents / discover-tools 共同依赖,
|
|
5
|
+
* 独立出来以避免循环导入。
|
|
6
|
+
*/
|
|
7
|
+
import * as fs from 'fs';
|
|
8
|
+
import * as os from 'os';
|
|
9
|
+
import * as path from 'path';
|
|
10
|
+
/** 将 unknown 错误转为字符串 */
|
|
11
|
+
export function errMsg(e) {
|
|
12
|
+
return e instanceof Error ? e.message : String(e);
|
|
13
|
+
}
|
|
14
|
+
/** 获取 data/ 目录路径,自动创建 */
|
|
15
|
+
export function getDataDir() {
|
|
16
|
+
const dir = path.join(process.cwd(), 'data');
|
|
17
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
18
|
+
return dir;
|
|
19
|
+
}
|
|
20
|
+
/** 展开路径中的 ~ 为实际 home 目录 */
|
|
21
|
+
export function expandHome(p) {
|
|
22
|
+
if (p === '~')
|
|
23
|
+
return os.homedir();
|
|
24
|
+
if (p.startsWith('~/') || p.startsWith('~\\'))
|
|
25
|
+
return path.join(os.homedir(), p.slice(2));
|
|
26
|
+
return p;
|
|
27
|
+
}
|
|
28
|
+
/** Workspace / ~/.zhin / data 下 skills 根目录(与 activate_skill 扫描顺序一致的前缀) */
|
|
29
|
+
export function buildStandardSkillDirs() {
|
|
30
|
+
return [
|
|
31
|
+
path.join(process.cwd(), 'skills'),
|
|
32
|
+
path.join(os.homedir(), '.zhin', 'skills'),
|
|
33
|
+
path.join(getDataDir(), 'skills'),
|
|
34
|
+
];
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* 从根插件树收集:根插件与**直接子插件**包目录下的 `skills/`(其下为 `<name>/SKILL.md`)
|
|
38
|
+
*/
|
|
39
|
+
export function collectPluginSkillSearchRoots(root) {
|
|
40
|
+
if (!root)
|
|
41
|
+
return [];
|
|
42
|
+
const dirs = [];
|
|
43
|
+
const push = (d) => {
|
|
44
|
+
if (d && !dirs.includes(d))
|
|
45
|
+
dirs.push(d);
|
|
46
|
+
};
|
|
47
|
+
const fromPlugin = (p) => {
|
|
48
|
+
if (!p?.filePath)
|
|
49
|
+
return;
|
|
50
|
+
const dir = path.dirname(p.filePath);
|
|
51
|
+
push(path.join(dir, 'skills'));
|
|
52
|
+
// Also check package root when filePath is under src/ or lib/
|
|
53
|
+
const dirName = path.basename(dir);
|
|
54
|
+
if (dirName === 'src' || dirName === 'lib') {
|
|
55
|
+
push(path.join(path.dirname(dir), 'skills'));
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
fromPlugin(root);
|
|
59
|
+
for (const child of root.children || []) {
|
|
60
|
+
fromPlugin(child);
|
|
61
|
+
}
|
|
62
|
+
return dirs;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* 技能发现与 activate_skill 查找共用:标准目录 + 已加载插件包 skills/
|
|
66
|
+
*/
|
|
67
|
+
export function getSkillSearchDirectories(root) {
|
|
68
|
+
const list = [...buildStandardSkillDirs()];
|
|
69
|
+
for (const d of collectPluginSkillSearchRoots(root ?? undefined)) {
|
|
70
|
+
if (!list.includes(d))
|
|
71
|
+
list.push(d);
|
|
72
|
+
}
|
|
73
|
+
return list;
|
|
74
|
+
}
|
|
75
|
+
export function mergeSkillDirsWithResolver(resolver) {
|
|
76
|
+
const list = [...buildStandardSkillDirs()];
|
|
77
|
+
for (const d of resolver?.() ?? []) {
|
|
78
|
+
if (d && !list.includes(d))
|
|
79
|
+
list.push(d);
|
|
80
|
+
}
|
|
81
|
+
return list;
|
|
82
|
+
}
|
|
83
|
+
/** 将 Node 文件错误转为 miniclawd 风格的结构化短句,便于模型区分并重试 */
|
|
84
|
+
export function nodeErrToFileMessage(err, filePath, kind) {
|
|
85
|
+
const e = err;
|
|
86
|
+
if (e?.code === 'ENOENT') {
|
|
87
|
+
if (kind === 'list')
|
|
88
|
+
return `Error: Directory not found: ${filePath}`;
|
|
89
|
+
return `Error: File not found: ${filePath}`;
|
|
90
|
+
}
|
|
91
|
+
if (e?.code === 'EACCES')
|
|
92
|
+
return `Error: Permission denied: ${filePath}`;
|
|
93
|
+
const action = kind === 'read' ? 'reading file' : kind === 'write' ? 'writing file' : kind === 'edit' ? 'editing file' : 'listing directory';
|
|
94
|
+
return `Error ${action}: ${e?.message ?? String(err)}`;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=discovery-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery-utils.js","sourceRoot":"","sources":["../src/discovery-utils.ts"],"names":[],"mappings":"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"}
|
package/lib/file-policy.d.ts
CHANGED
|
@@ -4,11 +4,20 @@
|
|
|
4
4
|
* 防止 AI Agent 读写敏感文件(如 .env、密钥、证书等),
|
|
5
5
|
* 并将 bash/grep/glob 等工具的命令注入风险降到最低。
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
* 1.
|
|
9
|
-
* 2.
|
|
10
|
-
* 3.
|
|
7
|
+
* 四层防御:
|
|
8
|
+
* 1. 设备路径阻止 — 阻止 /dev/zero, /dev/stdin 等挂起进程的设备文件
|
|
9
|
+
* 2. 敏感文件名/路径模式 — 阻止 .env、私钥、证书等
|
|
10
|
+
* 3. 敏感目录 — 阻止 .ssh, .gnupg 等
|
|
11
|
+
* 4. bash 安全分类 — 环境变量泄漏 + 命令读写分类
|
|
11
12
|
*/
|
|
13
|
+
/**
|
|
14
|
+
* 检测路径是否为被阻止的设备文件(含 Linux /proc/ fd 别名)。
|
|
15
|
+
*/
|
|
16
|
+
export declare function isBlockedDevicePath(filePath: string): boolean;
|
|
17
|
+
/** 读取文件最大字节数(256 MiB),防止 OOM */
|
|
18
|
+
export declare const MAX_READ_FILE_SIZE: number;
|
|
19
|
+
/** 编辑文件最大字节数(1 GiB),防止 V8 字符串长度溢出 */
|
|
20
|
+
export declare const MAX_EDIT_FILE_SIZE: number;
|
|
12
21
|
export interface FileAccessCheckResult {
|
|
13
22
|
allowed: boolean;
|
|
14
23
|
reason?: string;
|
|
@@ -31,6 +40,34 @@ export declare function checkBashCommandSafety(command: string): {
|
|
|
31
40
|
safe: boolean;
|
|
32
41
|
reason?: string;
|
|
33
42
|
};
|
|
43
|
+
export interface BashCommandClassification {
|
|
44
|
+
/** 是否为搜索命令 */
|
|
45
|
+
isSearch: boolean;
|
|
46
|
+
/** 是否为读取命令 */
|
|
47
|
+
isRead: boolean;
|
|
48
|
+
/** 是否为列出命令 */
|
|
49
|
+
isList: boolean;
|
|
50
|
+
/** 综合判断:命令是否只读(搜索/读取/列出) */
|
|
51
|
+
isReadOnly: boolean;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* 对 bash 命令进行读/写分类。
|
|
55
|
+
*
|
|
56
|
+
* 对管道命令(如 `cat file | grep pattern`),所有非中性部分
|
|
57
|
+
* 都必须是搜索/读/列出类,整条命令才算只读。
|
|
58
|
+
*
|
|
59
|
+
* 参考 Claude Code BashTool `isSearchOrReadBashCommand`。
|
|
60
|
+
*/
|
|
61
|
+
export declare function classifyBashCommand(command: string): BashCommandClassification;
|
|
62
|
+
/**
|
|
63
|
+
* 文件修改时间快照,用于检测编辑前是否被并发修改。
|
|
64
|
+
*/
|
|
65
|
+
export declare function getFileMtime(filePath: string): Promise<number>;
|
|
66
|
+
/**
|
|
67
|
+
* 检查文件在读取后是否被修改。
|
|
68
|
+
* @returns true 表示文件已被修改(stale),应中止编辑
|
|
69
|
+
*/
|
|
70
|
+
export declare function isFileStale(savedMtime: number, currentMtime: number): boolean;
|
|
34
71
|
/**
|
|
35
72
|
* 安全地转义 shell 参数,防止命令注入。
|
|
36
73
|
* 用单引号包裹,内部单引号用 '\'' 转义。
|
package/lib/file-policy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-policy.d.ts","sourceRoot":"","sources":["../src/file-policy.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"file-policy.d.ts","sourceRoot":"","sources":["../src/file-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AA8BH;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAQ7D;AAID,gCAAgC;AAChC,eAAO,MAAM,kBAAkB,QAAoB,CAAC;AACpD,qCAAqC;AACrC,eAAO,MAAM,kBAAkB,QAAqB,CAAC;AAqErD,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,qBAAqB,CAoCvE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAKvD;AAYD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAoB1F;AAyBD,MAAM,WAAW,yBAAyB;IACxC,cAAc;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,4BAA4B;IAC5B,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,yBAAyB,CAsC9E;AAID;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAIpE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAG7E;AAID;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C"}
|
package/lib/file-policy.js
CHANGED
|
@@ -4,13 +4,54 @@
|
|
|
4
4
|
* 防止 AI Agent 读写敏感文件(如 .env、密钥、证书等),
|
|
5
5
|
* 并将 bash/grep/glob 等工具的命令注入风险降到最低。
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
* 1.
|
|
9
|
-
* 2.
|
|
10
|
-
* 3.
|
|
7
|
+
* 四层防御:
|
|
8
|
+
* 1. 设备路径阻止 — 阻止 /dev/zero, /dev/stdin 等挂起进程的设备文件
|
|
9
|
+
* 2. 敏感文件名/路径模式 — 阻止 .env、私钥、证书等
|
|
10
|
+
* 3. 敏感目录 — 阻止 .ssh, .gnupg 等
|
|
11
|
+
* 4. bash 安全分类 — 环境变量泄漏 + 命令读写分类
|
|
11
12
|
*/
|
|
12
13
|
import * as path from 'path';
|
|
13
14
|
import * as os from 'os';
|
|
15
|
+
// ── 设备路径阻止(参考 Claude Code FileReadTool BLOCKED_DEVICE_PATHS)──
|
|
16
|
+
/**
|
|
17
|
+
* 会导致进程挂起的设备文件路径。
|
|
18
|
+
* 检查纯路径即可(无 I/O),安全设备如 /dev/null 不在此列。
|
|
19
|
+
*/
|
|
20
|
+
const BLOCKED_DEVICE_PATHS = new Set([
|
|
21
|
+
// 无限输出 — 永远无法 EOF
|
|
22
|
+
'/dev/zero',
|
|
23
|
+
'/dev/random',
|
|
24
|
+
'/dev/urandom',
|
|
25
|
+
'/dev/full',
|
|
26
|
+
// 阻塞等待输入
|
|
27
|
+
'/dev/stdin',
|
|
28
|
+
'/dev/tty',
|
|
29
|
+
'/dev/console',
|
|
30
|
+
// 对读取无意义
|
|
31
|
+
'/dev/stdout',
|
|
32
|
+
'/dev/stderr',
|
|
33
|
+
// stdio fd 别名
|
|
34
|
+
'/dev/fd/0',
|
|
35
|
+
'/dev/fd/1',
|
|
36
|
+
'/dev/fd/2',
|
|
37
|
+
]);
|
|
38
|
+
/**
|
|
39
|
+
* 检测路径是否为被阻止的设备文件(含 Linux /proc/ fd 别名)。
|
|
40
|
+
*/
|
|
41
|
+
export function isBlockedDevicePath(filePath) {
|
|
42
|
+
if (BLOCKED_DEVICE_PATHS.has(filePath))
|
|
43
|
+
return true;
|
|
44
|
+
// /proc/self/fd/0-2 和 /proc/<pid>/fd/0-2 是 Linux 的 stdio 别名
|
|
45
|
+
if (filePath.startsWith('/proc/') &&
|
|
46
|
+
(filePath.endsWith('/fd/0') || filePath.endsWith('/fd/1') || filePath.endsWith('/fd/2')))
|
|
47
|
+
return true;
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
// ── 文件大小限制(参考 Claude Code FileEditTool MAX_EDIT_FILE_SIZE)──
|
|
51
|
+
/** 读取文件最大字节数(256 MiB),防止 OOM */
|
|
52
|
+
export const MAX_READ_FILE_SIZE = 256 * 1024 * 1024;
|
|
53
|
+
/** 编辑文件最大字节数(1 GiB),防止 V8 字符串长度溢出 */
|
|
54
|
+
export const MAX_EDIT_FILE_SIZE = 1024 * 1024 * 1024;
|
|
14
55
|
// ── 敏感文件名模式 ──────────────────────────────────────────────────
|
|
15
56
|
/**
|
|
16
57
|
* 匹配文件基名(不含目录)的敏感模式。
|
|
@@ -148,6 +189,87 @@ export function checkBashCommandSafety(command) {
|
|
|
148
189
|
}
|
|
149
190
|
return { safe: true };
|
|
150
191
|
}
|
|
192
|
+
// ── bash 命令读写分类(参考 Claude Code BashTool isSearchOrReadBashCommand)──
|
|
193
|
+
/** 搜索类命令 */
|
|
194
|
+
const BASH_SEARCH_COMMANDS = new Set([
|
|
195
|
+
'find', 'grep', 'rg', 'ag', 'ack', 'locate', 'which', 'whereis',
|
|
196
|
+
]);
|
|
197
|
+
/** 读取/查看类命令 */
|
|
198
|
+
const BASH_READ_COMMANDS = new Set([
|
|
199
|
+
'cat', 'head', 'tail', 'less', 'more', 'wc', 'stat', 'file', 'strings',
|
|
200
|
+
'jq', 'awk', 'cut', 'sort', 'uniq', 'tr',
|
|
201
|
+
]);
|
|
202
|
+
/** 目录列出类命令 */
|
|
203
|
+
const BASH_LIST_COMMANDS = new Set([
|
|
204
|
+
'ls', 'tree', 'du',
|
|
205
|
+
]);
|
|
206
|
+
/** 语义中性命令 — 纯输出/状态命令,不影响管道是否只读 */
|
|
207
|
+
const BASH_NEUTRAL_COMMANDS = new Set([
|
|
208
|
+
'echo', 'printf', 'true', 'false', ':',
|
|
209
|
+
]);
|
|
210
|
+
/**
|
|
211
|
+
* 对 bash 命令进行读/写分类。
|
|
212
|
+
*
|
|
213
|
+
* 对管道命令(如 `cat file | grep pattern`),所有非中性部分
|
|
214
|
+
* 都必须是搜索/读/列出类,整条命令才算只读。
|
|
215
|
+
*
|
|
216
|
+
* 参考 Claude Code BashTool `isSearchOrReadBashCommand`。
|
|
217
|
+
*/
|
|
218
|
+
export function classifyBashCommand(command) {
|
|
219
|
+
const trimmed = command.trim();
|
|
220
|
+
// 按管道和操作符拆分
|
|
221
|
+
const parts = trimmed.split(/\s*(?:\|\||&&|\||;)\s*/);
|
|
222
|
+
let hasSearch = false;
|
|
223
|
+
let hasRead = false;
|
|
224
|
+
let hasList = false;
|
|
225
|
+
let hasNonNeutral = false;
|
|
226
|
+
for (const part of parts) {
|
|
227
|
+
const baseCmd = part.trim().split(/\s+/)[0];
|
|
228
|
+
if (!baseCmd)
|
|
229
|
+
continue;
|
|
230
|
+
// 跳过中性命令
|
|
231
|
+
if (BASH_NEUTRAL_COMMANDS.has(baseCmd))
|
|
232
|
+
continue;
|
|
233
|
+
hasNonNeutral = true;
|
|
234
|
+
if (BASH_SEARCH_COMMANDS.has(baseCmd))
|
|
235
|
+
hasSearch = true;
|
|
236
|
+
else if (BASH_READ_COMMANDS.has(baseCmd))
|
|
237
|
+
hasRead = true;
|
|
238
|
+
else if (BASH_LIST_COMMANDS.has(baseCmd))
|
|
239
|
+
hasList = true;
|
|
240
|
+
else {
|
|
241
|
+
// 包含非只读命令 → 整条命令不是只读
|
|
242
|
+
return { isSearch: false, isRead: false, isList: false, isReadOnly: false };
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
// 全部中性命令(如 echo "hi")— 视为只读
|
|
246
|
+
if (!hasNonNeutral) {
|
|
247
|
+
return { isSearch: false, isRead: false, isList: false, isReadOnly: true };
|
|
248
|
+
}
|
|
249
|
+
return {
|
|
250
|
+
isSearch: hasSearch,
|
|
251
|
+
isRead: hasRead,
|
|
252
|
+
isList: hasList,
|
|
253
|
+
isReadOnly: hasSearch || hasRead || hasList,
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
// ── 文件 mtime 比对(参考 Claude Code FileEditTool stale detection)──
|
|
257
|
+
/**
|
|
258
|
+
* 文件修改时间快照,用于检测编辑前是否被并发修改。
|
|
259
|
+
*/
|
|
260
|
+
export async function getFileMtime(filePath) {
|
|
261
|
+
const { default: fsPromises } = await import('fs/promises');
|
|
262
|
+
const stat = await fsPromises.stat(filePath);
|
|
263
|
+
return stat.mtimeMs;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* 检查文件在读取后是否被修改。
|
|
267
|
+
* @returns true 表示文件已被修改(stale),应中止编辑
|
|
268
|
+
*/
|
|
269
|
+
export function isFileStale(savedMtime, currentMtime) {
|
|
270
|
+
// 允许 1ms 的精度误差
|
|
271
|
+
return Math.abs(currentMtime - savedMtime) > 1;
|
|
272
|
+
}
|
|
151
273
|
// ── 命令参数转义 ────────────────────────────────────────────────────
|
|
152
274
|
/**
|
|
153
275
|
* 安全地转义 shell 参数,防止命令注入。
|
package/lib/file-policy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-policy.js","sourceRoot":"","sources":["../src/file-policy.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"file-policy.js","sourceRoot":"","sources":["../src/file-policy.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ export type { ContextConfig, MessageRecord } from './context-manager.js';
|
|
|
12
12
|
export { ZhinAgent } from './zhin-agent/index.js';
|
|
13
13
|
export type { ZhinAgentConfig, OnChunkCallback } from './zhin-agent/index.js';
|
|
14
14
|
export { PERM_MAP, DEFAULT_CONFIG as ZHIN_AGENT_DEFAULT_CONFIG, SECTION_SEP } from './zhin-agent/config.js';
|
|
15
|
-
export { checkExecPolicy, applyExecPolicyToTools, resolveExecAllowlist, EXEC_PRESETS } from './zhin-agent/exec-policy.js';
|
|
15
|
+
export { checkExecPolicy, applyExecPolicyToTools, resolveExecAllowlist, EXEC_PRESETS, isDangerousCommand, stripEnvVarPrefix, stripSafeWrappers, splitCompoundCommand, extractCommandName, type ExecPolicyResult, } from './zhin-agent/exec-policy.js';
|
|
16
16
|
export { collectRelevantTools, toAgentTool } from './zhin-agent/tool-collector.js';
|
|
17
17
|
export { buildRichSystemPrompt, buildContextHint, buildEnhancedPersona, buildUserMessageWithHistory, contentToText } from './zhin-agent/prompt.js';
|
|
18
18
|
export type { RichSystemPromptContext } from './zhin-agent/prompt.js';
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,QAAQ,EACR,UAAU,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,WAAW,EACX,WAAW,GACZ,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACjE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE1D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,0BAA0B,EAC1B,4BAA4B,EAC5B,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEzE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE9E,OAAO,EAAE,QAAQ,EAAE,cAAc,IAAI,yBAAyB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC5G,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,QAAQ,EACR,UAAU,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,WAAW,EACX,WAAW,GACZ,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACjE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE1D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,0BAA0B,EAC1B,4BAA4B,EAC5B,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEzE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE9E,OAAO,EAAE,QAAQ,EAAE,cAAc,IAAI,yBAAyB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC5G,OAAO,EACL,eAAe,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,YAAY,EAC3E,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,kBAAkB,EAClG,KAAK,gBAAgB,GACtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACnJ,YAAY,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAE9I,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEzE,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE5E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACpE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,sBAAsB,GACvB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,cAAc,EACd,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,aAAa,EACb,UAAU,EACV,SAAS,EACT,2BAA2B,EAC3B,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAErH,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,4BAA4B,EAC5B,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEjE,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,uBAAuB,GACxB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,WAAW,EACX,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,YAAY,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,aAAa,EACb,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,EACX,SAAS,EACT,UAAU,GACX,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,cAAc,EACd,QAAQ,EACR,UAAU,EACV,cAAc,EACd,QAAQ,EACR,UAAU,EACV,eAAe,EACf,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,cAAc,EACd,OAAO,GACR,MAAM,cAAc,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -8,7 +8,7 @@ export { SessionManager, MemorySessionManager, DatabaseSessionManager, createMem
|
|
|
8
8
|
export { ContextManager, createContextManager, CHAT_MESSAGE_MODEL, CONTEXT_SUMMARY_MODEL, } from './context-manager.js';
|
|
9
9
|
export { ZhinAgent } from './zhin-agent/index.js';
|
|
10
10
|
export { PERM_MAP, DEFAULT_CONFIG as ZHIN_AGENT_DEFAULT_CONFIG, SECTION_SEP } from './zhin-agent/config.js';
|
|
11
|
-
export { checkExecPolicy, applyExecPolicyToTools, resolveExecAllowlist, EXEC_PRESETS } from './zhin-agent/exec-policy.js';
|
|
11
|
+
export { checkExecPolicy, applyExecPolicyToTools, resolveExecAllowlist, EXEC_PRESETS, isDangerousCommand, stripEnvVarPrefix, stripSafeWrappers, splitCompoundCommand, extractCommandName, } from './zhin-agent/exec-policy.js';
|
|
12
12
|
export { collectRelevantTools, toAgentTool } from './zhin-agent/tool-collector.js';
|
|
13
13
|
export { buildRichSystemPrompt, buildContextHint, buildEnhancedPersona, buildUserMessageWithHistory, contentToText } from './zhin-agent/prompt.js';
|
|
14
14
|
export { createChatHistoryTool, createUserProfileTool, createScheduleFollowUpTool, createSpawnTaskTool } from './zhin-agent/builtin-tools.js';
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGjE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,0BAA0B,EAC1B,4BAA4B,EAC5B,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD,OAAO,EAAE,QAAQ,EAAE,cAAc,IAAI,yBAAyB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC5G,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGjE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,0BAA0B,EAC1B,4BAA4B,EAC5B,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD,OAAO,EAAE,QAAQ,EAAE,cAAc,IAAI,yBAAyB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC5G,OAAO,EACL,eAAe,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,YAAY,EAC3E,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,kBAAkB,GAEnG,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEnJ,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAE9I,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE5E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGpE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAQhD,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,cAAc,EACd,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAS1B,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,4BAA4B,EAC5B,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAapB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,cAAc,GACf,MAAM,aAAa,CAAC;AAarB,OAAO,EACL,cAAc,EACd,QAAQ,EACR,UAAU,EACV,cAAc,EACd,QAAQ,EACR,UAAU,EACV,eAAe,EACf,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-zhin-agent.d.ts","sourceRoot":"","sources":["../../src/init/create-zhin-agent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create-zhin-agent.d.ts","sourceRoot":"","sources":["../../src/init/create-zhin-agent.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CA0HhE"}
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
import * as path from 'path';
|
|
6
6
|
import { getPlugin, Scheduler, getScheduler, setScheduler } from '@zhin.js/core';
|
|
7
7
|
import { ZhinAgent } from '../zhin-agent/index.js';
|
|
8
|
-
import {
|
|
8
|
+
import { createBuiltinTools } from '../builtin-tools.js';
|
|
9
|
+
import { collectPluginSkillSearchRoots } from '../discovery-utils.js';
|
|
9
10
|
import { resolveSkillInstructionMaxChars, DEFAULT_CONFIG } from '../zhin-agent/config.js';
|
|
10
11
|
import { PersistentCronEngine, setCronManager } from '../cron-engine.js';
|
|
11
12
|
export function createZhinAgentContext(refs) {
|
|
@@ -43,6 +44,7 @@ export function createZhinAgentContext(refs) {
|
|
|
43
44
|
const modelName = provider.models[0] || '';
|
|
44
45
|
const fullConfig = { ...DEFAULT_CONFIG, ...agentConfig };
|
|
45
46
|
const zhinTools = createBuiltinTools({
|
|
47
|
+
plugin,
|
|
46
48
|
skillInstructionMaxChars: resolveSkillInstructionMaxChars(fullConfig, modelName),
|
|
47
49
|
pluginSkillRootsResolver: () => collectPluginSkillSearchRoots(root),
|
|
48
50
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-zhin-agent.js","sourceRoot":"","sources":["../../src/init/create-zhin-agent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAsC,MAAM,eAAe,CAAC;AACrH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"create-zhin-agent.js","sourceRoot":"","sources":["../../src/init/create-zhin-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-builtin-tools.d.ts","sourceRoot":"","sources":["../../src/init/register-builtin-tools.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"register-builtin-tools.d.ts","sourceRoot":"","sources":["../../src/init/register-builtin-tools.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAgS9D"}
|