@zhin.js/core 1.0.32 → 1.0.34
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/lib/ai/agent.d.ts.map +1 -1
- package/lib/ai/agent.js +15 -2
- package/lib/ai/agent.js.map +1 -1
- package/lib/ai/bootstrap.d.ts +11 -2
- package/lib/ai/bootstrap.d.ts.map +1 -1
- package/lib/ai/bootstrap.js +46 -2
- package/lib/ai/bootstrap.js.map +1 -1
- package/lib/ai/builtin-tools.d.ts +28 -6
- package/lib/ai/builtin-tools.d.ts.map +1 -1
- package/lib/ai/builtin-tools.js +265 -76
- package/lib/ai/builtin-tools.js.map +1 -1
- package/lib/ai/index.d.ts +9 -1
- package/lib/ai/index.d.ts.map +1 -1
- package/lib/ai/index.js +8 -0
- package/lib/ai/index.js.map +1 -1
- package/lib/ai/init.d.ts.map +1 -1
- package/lib/ai/init.js +84 -3
- package/lib/ai/init.js.map +1 -1
- package/lib/ai/providers/anthropic.d.ts +7 -0
- package/lib/ai/providers/anthropic.d.ts.map +1 -1
- package/lib/ai/providers/anthropic.js +3 -0
- package/lib/ai/providers/anthropic.js.map +1 -1
- package/lib/ai/providers/ollama.d.ts +10 -0
- package/lib/ai/providers/ollama.d.ts.map +1 -1
- package/lib/ai/providers/ollama.js +11 -3
- package/lib/ai/providers/ollama.js.map +1 -1
- package/lib/ai/providers/openai.d.ts +7 -0
- package/lib/ai/providers/openai.d.ts.map +1 -1
- package/lib/ai/providers/openai.js +3 -0
- package/lib/ai/providers/openai.js.map +1 -1
- package/lib/ai/service.d.ts +4 -0
- package/lib/ai/service.d.ts.map +1 -1
- package/lib/ai/service.js +7 -0
- package/lib/ai/service.js.map +1 -1
- package/lib/ai/subagent.d.ts +50 -0
- package/lib/ai/subagent.d.ts.map +1 -0
- package/lib/ai/subagent.js +144 -0
- package/lib/ai/subagent.js.map +1 -0
- package/lib/ai/types.d.ts +25 -5
- package/lib/ai/types.d.ts.map +1 -1
- package/lib/ai/zhin-agent-builtin-tools.d.ts +17 -0
- package/lib/ai/zhin-agent-builtin-tools.d.ts.map +1 -0
- package/lib/ai/zhin-agent-builtin-tools.js +220 -0
- package/lib/ai/zhin-agent-builtin-tools.js.map +1 -0
- package/lib/ai/zhin-agent-config.d.ts +54 -0
- package/lib/ai/zhin-agent-config.d.ts.map +1 -0
- package/lib/ai/zhin-agent-config.js +76 -0
- package/lib/ai/zhin-agent-config.js.map +1 -0
- package/lib/ai/zhin-agent-exec-policy.d.ts +20 -0
- package/lib/ai/zhin-agent-exec-policy.d.ts.map +1 -0
- package/lib/ai/zhin-agent-exec-policy.js +71 -0
- package/lib/ai/zhin-agent-exec-policy.js.map +1 -0
- package/lib/ai/zhin-agent-prompt.d.ts +21 -0
- package/lib/ai/zhin-agent-prompt.d.ts.map +1 -0
- package/lib/ai/zhin-agent-prompt.js +116 -0
- package/lib/ai/zhin-agent-prompt.js.map +1 -0
- package/lib/ai/zhin-agent-tool-collector.d.ts +22 -0
- package/lib/ai/zhin-agent-tool-collector.d.ts.map +1 -0
- package/lib/ai/zhin-agent-tool-collector.js +218 -0
- package/lib/ai/zhin-agent-tool-collector.js.map +1 -0
- package/lib/ai/zhin-agent.d.ts +11 -155
- package/lib/ai/zhin-agent.d.ts.map +1 -1
- package/lib/ai/zhin-agent.js +84 -684
- package/lib/ai/zhin-agent.js.map +1 -1
- package/lib/component.d.ts.map +1 -1
- package/lib/component.js +19 -19
- package/lib/component.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/scheduler/index.d.ts +10 -0
- package/lib/scheduler/index.d.ts.map +1 -0
- package/lib/scheduler/index.js +12 -0
- package/lib/scheduler/index.js.map +1 -0
- package/lib/scheduler/scheduler.d.ts +49 -0
- package/lib/scheduler/scheduler.d.ts.map +1 -0
- package/lib/scheduler/scheduler.js +352 -0
- package/lib/scheduler/scheduler.js.map +1 -0
- package/lib/scheduler/types.d.ts +71 -0
- package/lib/scheduler/types.d.ts.map +1 -0
- package/lib/scheduler/types.js +8 -0
- package/lib/scheduler/types.js.map +1 -0
- package/lib/tool-zod.d.ts +28 -0
- package/lib/tool-zod.d.ts.map +1 -0
- package/lib/tool-zod.js +98 -0
- package/lib/tool-zod.js.map +1 -0
- package/package.json +9 -4
- package/src/ai/agent.ts +15 -2
- package/src/ai/bootstrap.ts +48 -2
- package/src/ai/builtin-tools.ts +283 -75
- package/src/ai/index.ts +19 -1
- package/src/ai/init.ts +85 -3
- package/src/ai/providers/anthropic.ts +3 -0
- package/src/ai/providers/ollama.ts +13 -3
- package/src/ai/providers/openai.ts +3 -0
- package/src/ai/service.ts +8 -0
- package/src/ai/subagent.ts +209 -0
- package/src/ai/types.ts +29 -2
- package/src/ai/zhin-agent-builtin-tools.ts +247 -0
- package/src/ai/zhin-agent-config.ts +113 -0
- package/src/ai/zhin-agent-exec-policy.ts +78 -0
- package/src/ai/zhin-agent-prompt.ts +136 -0
- package/src/ai/zhin-agent-tool-collector.ts +243 -0
- package/src/ai/zhin-agent.ts +113 -791
- package/src/component.ts +29 -28
- package/src/index.ts +1 -0
- package/src/scheduler/index.ts +28 -0
- package/src/scheduler/scheduler.ts +372 -0
- package/src/scheduler/types.ts +74 -0
- package/src/tool-zod.ts +115 -0
- package/tests/ai/subagent.test.ts +270 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zhin-agent-builtin-tools.js","sourceRoot":"","sources":["../../src/ai/zhin-agent-builtin-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ZhinAgent 配置、常量、类型定义
|
|
3
|
+
*/
|
|
4
|
+
import type { RateLimitConfig } from './rate-limiter.js';
|
|
5
|
+
export type ModelSizeHint = 'small' | 'medium' | 'large';
|
|
6
|
+
/**
|
|
7
|
+
* Infer model size from model name string.
|
|
8
|
+
* Pattern: `:8b` → small, `:14b` → medium, else large.
|
|
9
|
+
*/
|
|
10
|
+
export declare function inferModelSize(modelName: string): ModelSizeHint;
|
|
11
|
+
/**
|
|
12
|
+
* Resolve the effective model size hint.
|
|
13
|
+
* Priority: explicit config > model name inference.
|
|
14
|
+
*/
|
|
15
|
+
export declare function resolveModelSize(config: Required<ZhinAgentConfig>, modelName: string): ModelSizeHint;
|
|
16
|
+
/**
|
|
17
|
+
* Resolve the effective skill instruction max chars based on model size.
|
|
18
|
+
*/
|
|
19
|
+
export declare function resolveSkillInstructionMaxChars(config: Required<ZhinAgentConfig>, modelName: string): number;
|
|
20
|
+
export declare const SECTION_SEP = "\n\n---\n\n";
|
|
21
|
+
export declare const HISTORY_CONTEXT_MARKER = "[Chat messages since your last reply - for context]";
|
|
22
|
+
export declare const CURRENT_MESSAGE_MARKER = "[Current message - respond to this]";
|
|
23
|
+
export declare const PERM_MAP: Record<string, number>;
|
|
24
|
+
export type OnChunkCallback = (chunk: string, full: string) => void;
|
|
25
|
+
export interface ZhinAgentConfig {
|
|
26
|
+
persona?: string;
|
|
27
|
+
maxIterations?: number;
|
|
28
|
+
timeout?: number;
|
|
29
|
+
preExecTimeout?: number;
|
|
30
|
+
maxSkills?: number;
|
|
31
|
+
maxTools?: number;
|
|
32
|
+
minTopicRounds?: number;
|
|
33
|
+
slidingWindowSize?: number;
|
|
34
|
+
topicChangeThreshold?: number;
|
|
35
|
+
rateLimit?: RateLimitConfig;
|
|
36
|
+
toneAwareness?: boolean;
|
|
37
|
+
visionModel?: string;
|
|
38
|
+
contextTokens?: number;
|
|
39
|
+
maxHistoryShare?: number;
|
|
40
|
+
disabledTools?: string[];
|
|
41
|
+
allowedTools?: string[];
|
|
42
|
+
execSecurity?: 'deny' | 'allowlist' | 'full';
|
|
43
|
+
execPreset?: 'readonly' | 'network' | 'development' | 'custom';
|
|
44
|
+
execAllowlist?: string[];
|
|
45
|
+
execAsk?: boolean;
|
|
46
|
+
maxSubagentIterations?: number;
|
|
47
|
+
subagentTools?: string[];
|
|
48
|
+
/** 模型大小提示,影响技能指令截断长度。留空则根据模型名自动推断 */
|
|
49
|
+
modelSizeHint?: 'small' | 'medium' | 'large';
|
|
50
|
+
/** 技能指令最大字符数(覆盖 modelSizeHint 推断值) */
|
|
51
|
+
skillInstructionMaxChars?: number;
|
|
52
|
+
}
|
|
53
|
+
export declare const DEFAULT_CONFIG: Required<ZhinAgentConfig>;
|
|
54
|
+
//# sourceMappingURL=zhin-agent-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zhin-agent-config.d.ts","sourceRoot":"","sources":["../../src/ai/zhin-agent-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAKzD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,CAI/D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,aAAa,CAGpG;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAQ5G;AAED,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,sBAAsB,wDAAwD,CAAC;AAC5F,eAAO,MAAM,sBAAsB,wCAAwC,CAAC;AAE5E,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM3C,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAEpE,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAC7C,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,QAAQ,CAAC;IAC/D,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,qCAAqC;IACrC,aAAa,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC7C,sCAAsC;IACtC,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,eAAe,CAyBpD,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ZhinAgent 配置、常量、类型定义
|
|
3
|
+
*/
|
|
4
|
+
import { DEFAULT_CONTEXT_TOKENS } from './compaction.js';
|
|
5
|
+
const SMALL_MODEL_RE = /[:\-_](0\.5|1\.?[58]?|[3-8])b\b/i;
|
|
6
|
+
const MEDIUM_MODEL_RE = /[:\-_](14|[12][0-9]|32)b\b/i;
|
|
7
|
+
/**
|
|
8
|
+
* Infer model size from model name string.
|
|
9
|
+
* Pattern: `:8b` → small, `:14b` → medium, else large.
|
|
10
|
+
*/
|
|
11
|
+
export function inferModelSize(modelName) {
|
|
12
|
+
if (SMALL_MODEL_RE.test(modelName))
|
|
13
|
+
return 'small';
|
|
14
|
+
if (MEDIUM_MODEL_RE.test(modelName))
|
|
15
|
+
return 'medium';
|
|
16
|
+
return 'large';
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Resolve the effective model size hint.
|
|
20
|
+
* Priority: explicit config > model name inference.
|
|
21
|
+
*/
|
|
22
|
+
export function resolveModelSize(config, modelName) {
|
|
23
|
+
if (config.modelSizeHint && config.modelSizeHint !== '')
|
|
24
|
+
return config.modelSizeHint;
|
|
25
|
+
return inferModelSize(modelName);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Resolve the effective skill instruction max chars based on model size.
|
|
29
|
+
*/
|
|
30
|
+
export function resolveSkillInstructionMaxChars(config, modelName) {
|
|
31
|
+
if (config.skillInstructionMaxChars && config.skillInstructionMaxChars > 0)
|
|
32
|
+
return config.skillInstructionMaxChars;
|
|
33
|
+
const size = resolveModelSize(config, modelName);
|
|
34
|
+
switch (size) {
|
|
35
|
+
case 'small': return 1500;
|
|
36
|
+
case 'medium': return 4000;
|
|
37
|
+
case 'large': return 8000;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export const SECTION_SEP = '\n\n---\n\n';
|
|
41
|
+
export const HISTORY_CONTEXT_MARKER = '[Chat messages since your last reply - for context]';
|
|
42
|
+
export const CURRENT_MESSAGE_MARKER = '[Current message - respond to this]';
|
|
43
|
+
export const PERM_MAP = {
|
|
44
|
+
user: 0,
|
|
45
|
+
group_admin: 1,
|
|
46
|
+
group_owner: 2,
|
|
47
|
+
bot_admin: 3,
|
|
48
|
+
owner: 4,
|
|
49
|
+
};
|
|
50
|
+
export const DEFAULT_CONFIG = {
|
|
51
|
+
persona: '你是一个友好的中文 AI 助手,擅长使用工具帮助用户解决问题。',
|
|
52
|
+
maxIterations: 5,
|
|
53
|
+
timeout: 60_000,
|
|
54
|
+
preExecTimeout: 10_000,
|
|
55
|
+
maxSkills: 3,
|
|
56
|
+
maxTools: 8,
|
|
57
|
+
minTopicRounds: 5,
|
|
58
|
+
slidingWindowSize: 5,
|
|
59
|
+
topicChangeThreshold: 0.15,
|
|
60
|
+
rateLimit: {},
|
|
61
|
+
toneAwareness: true,
|
|
62
|
+
visionModel: '',
|
|
63
|
+
contextTokens: DEFAULT_CONTEXT_TOKENS,
|
|
64
|
+
maxHistoryShare: 0.5,
|
|
65
|
+
disabledTools: [],
|
|
66
|
+
allowedTools: [],
|
|
67
|
+
execSecurity: 'deny',
|
|
68
|
+
execPreset: 'custom',
|
|
69
|
+
execAllowlist: [],
|
|
70
|
+
execAsk: false,
|
|
71
|
+
maxSubagentIterations: 15,
|
|
72
|
+
subagentTools: [],
|
|
73
|
+
modelSizeHint: '',
|
|
74
|
+
skillInstructionMaxChars: 0,
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=zhin-agent-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zhin-agent-config.js","sourceRoot":"","sources":["../../src/ai/zhin-agent-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAIzD,MAAM,cAAc,GAAG,kCAAkC,CAAC;AAC1D,MAAM,eAAe,GAAG,6BAA6B,CAAC;AAEtD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,OAAO,CAAC;IACnD,IAAI,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,QAAQ,CAAC;IACrD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAiC,EAAE,SAAiB;IACnF,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,KAAM,EAAU;QAAE,OAAO,MAAM,CAAC,aAAa,CAAC;IAC9F,OAAO,cAAc,CAAC,SAAS,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,+BAA+B,CAAC,MAAiC,EAAE,SAAiB;IAClG,IAAI,MAAM,CAAC,wBAAwB,IAAI,MAAM,CAAC,wBAAwB,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC,wBAAwB,CAAC;IACnH,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC;QAC1B,KAAK,QAAQ,CAAC,CAAC,OAAO,IAAI,CAAC;QAC3B,KAAK,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;AACzC,MAAM,CAAC,MAAM,sBAAsB,GAAG,qDAAqD,CAAC;AAC5F,MAAM,CAAC,MAAM,sBAAsB,GAAG,qCAAqC,CAAC;AAE5E,MAAM,CAAC,MAAM,QAAQ,GAA2B;IAC9C,IAAI,EAAE,CAAC;IACP,WAAW,EAAE,CAAC;IACd,WAAW,EAAE,CAAC;IACd,SAAS,EAAE,CAAC;IACZ,KAAK,EAAE,CAAC;CACT,CAAC;AAiCF,MAAM,CAAC,MAAM,cAAc,GAA8B;IACvD,OAAO,EAAE,iCAAiC;IAC1C,aAAa,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM;IACf,cAAc,EAAE,MAAM;IACtB,SAAS,EAAE,CAAC;IACZ,QAAQ,EAAE,CAAC;IACX,cAAc,EAAE,CAAC;IACjB,iBAAiB,EAAE,CAAC;IACpB,oBAAoB,EAAE,IAAI;IAC1B,SAAS,EAAE,EAAE;IACb,aAAa,EAAE,IAAI;IACnB,WAAW,EAAE,EAAE;IACf,aAAa,EAAE,sBAAsB;IACrC,eAAe,EAAE,GAAG;IACpB,aAAa,EAAE,EAAE;IACjB,YAAY,EAAE,EAAE;IAChB,YAAY,EAAE,MAAM;IACpB,UAAU,EAAE,QAAQ;IACpB,aAAa,EAAE,EAAE;IACjB,OAAO,EAAE,KAAK;IACd,qBAAqB,EAAE,EAAE;IACzB,aAAa,EAAE,EAAE;IACjB,aAAa,EAAE,EAAS;IACxB,wBAAwB,EAAE,CAAC;CAC5B,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ZhinAgent 执行策略 — bash 命令的安全检查与工具包装
|
|
3
|
+
*/
|
|
4
|
+
import type { AgentTool } from './types.js';
|
|
5
|
+
import type { ZhinAgentConfig } from './zhin-agent-config.js';
|
|
6
|
+
export declare const EXEC_PRESETS: Record<string, string[]>;
|
|
7
|
+
/**
|
|
8
|
+
* Resolves the effective allowlist by merging preset commands with custom allowlist.
|
|
9
|
+
*/
|
|
10
|
+
export declare function resolveExecAllowlist(config: Required<ZhinAgentConfig>): string[];
|
|
11
|
+
/**
|
|
12
|
+
* Check if a bash command is allowed under the current exec policy.
|
|
13
|
+
* Throws an Error when the command is denied.
|
|
14
|
+
*/
|
|
15
|
+
export declare function checkExecPolicy(config: Required<ZhinAgentConfig>, command: string): void;
|
|
16
|
+
/**
|
|
17
|
+
* Wrap `bash` tools with exec policy enforcement.
|
|
18
|
+
*/
|
|
19
|
+
export declare function applyExecPolicyToTools(config: Required<ZhinAgentConfig>, tools: AgentTool[]): AgentTool[];
|
|
20
|
+
//# sourceMappingURL=zhin-agent-exec-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zhin-agent-exec-policy.d.ts","sourceRoot":"","sources":["../../src/ai/zhin-agent-exec-policy.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQ9D,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAIjD,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,MAAM,EAAE,CAMhF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAyBxF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAazG"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ZhinAgent 执行策略 — bash 命令的安全检查与工具包装
|
|
3
|
+
*/
|
|
4
|
+
// ── 预设命令白名单 ──────────────────────────────────────────────────
|
|
5
|
+
const PRESET_READONLY = ['ls', 'cat', 'pwd', 'date', 'whoami', 'grep', 'find', 'head', 'tail', 'wc'];
|
|
6
|
+
const PRESET_NETWORK = [...PRESET_READONLY, 'curl', 'wget', 'ping', 'dig'];
|
|
7
|
+
const PRESET_DEVELOPMENT = [...PRESET_NETWORK, 'npm', 'npx', 'node', 'git', 'python', 'python3', 'pip', 'pnpm', 'yarn'];
|
|
8
|
+
export const EXEC_PRESETS = {
|
|
9
|
+
readonly: PRESET_READONLY,
|
|
10
|
+
network: PRESET_NETWORK,
|
|
11
|
+
development: PRESET_DEVELOPMENT,
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Resolves the effective allowlist by merging preset commands with custom allowlist.
|
|
15
|
+
*/
|
|
16
|
+
export function resolveExecAllowlist(config) {
|
|
17
|
+
const preset = config.execPreset;
|
|
18
|
+
const presetList = (preset && preset !== 'custom') ? (EXEC_PRESETS[preset] ?? []) : [];
|
|
19
|
+
const custom = config.execAllowlist ?? [];
|
|
20
|
+
const merged = [...new Set([...presetList, ...custom])];
|
|
21
|
+
return merged;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Check if a bash command is allowed under the current exec policy.
|
|
25
|
+
* Throws an Error when the command is denied.
|
|
26
|
+
*/
|
|
27
|
+
export function checkExecPolicy(config, command) {
|
|
28
|
+
const security = config.execSecurity ?? 'deny';
|
|
29
|
+
if (security === 'full')
|
|
30
|
+
return;
|
|
31
|
+
if (security === 'deny') {
|
|
32
|
+
throw new Error('当前配置禁止执行 Shell 命令(execSecurity=deny)。如需开放请在配置中设置 ai.agent.execSecurity。');
|
|
33
|
+
}
|
|
34
|
+
// allowlist
|
|
35
|
+
const list = resolveExecAllowlist(config);
|
|
36
|
+
const cmd = (command || '').trim();
|
|
37
|
+
const allowed = list.some(pattern => {
|
|
38
|
+
try {
|
|
39
|
+
const re = new RegExp(pattern);
|
|
40
|
+
return re.test(cmd);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return cmd === pattern || cmd.startsWith(pattern);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
if (!allowed) {
|
|
47
|
+
const ask = config.execAsk;
|
|
48
|
+
throw new Error(ask
|
|
49
|
+
? '该命令不在允许列表中,需要审批后执行。当前版本请将命令加入 ai.agent.execAllowlist 或联系管理员。'
|
|
50
|
+
: '该命令不在允许列表中,已被拒绝执行。可将允许的命令模式加入 ai.agent.execAllowlist。');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Wrap `bash` tools with exec policy enforcement.
|
|
55
|
+
*/
|
|
56
|
+
export function applyExecPolicyToTools(config, tools) {
|
|
57
|
+
return tools.map(t => {
|
|
58
|
+
if (t.name !== 'bash')
|
|
59
|
+
return t;
|
|
60
|
+
const original = t.execute;
|
|
61
|
+
return {
|
|
62
|
+
...t,
|
|
63
|
+
execute: async (args) => {
|
|
64
|
+
const cmd = args?.command != null ? String(args.command) : '';
|
|
65
|
+
checkExecPolicy(config, cmd);
|
|
66
|
+
return original(args);
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=zhin-agent-exec-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zhin-agent-exec-policy.js","sourceRoot":"","sources":["../../src/ai/zhin-agent-exec-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ZhinAgent System Prompt 构建 + 消息辅助函数
|
|
3
|
+
*/
|
|
4
|
+
import type { ContentPart } from './types.js';
|
|
5
|
+
import type { SkillFeature } from '../built/skill.js';
|
|
6
|
+
import type { ZhinAgentConfig } from './zhin-agent-config.js';
|
|
7
|
+
import type { ToolContext } from '../types.js';
|
|
8
|
+
import type { ChatMessage } from './types.js';
|
|
9
|
+
export declare function contentToText(c: string | ContentPart[]): string;
|
|
10
|
+
export declare function buildUserMessageWithHistory(history: ChatMessage[], currentContent: string): string;
|
|
11
|
+
export declare function buildEnhancedPersona(config: Required<ZhinAgentConfig>, profileSummary: string, toneHint: string): string;
|
|
12
|
+
export declare function buildContextHint(context: ToolContext, _content: string): string;
|
|
13
|
+
export interface RichSystemPromptContext {
|
|
14
|
+
config: Required<ZhinAgentConfig>;
|
|
15
|
+
skillRegistry: SkillFeature | null;
|
|
16
|
+
skillsSummaryXML: string;
|
|
17
|
+
activeSkillsContext: string;
|
|
18
|
+
bootstrapContext: string;
|
|
19
|
+
}
|
|
20
|
+
export declare function buildRichSystemPrompt(ctx: RichSystemPromptContext): string;
|
|
21
|
+
//# sourceMappingURL=zhin-agent-prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zhin-agent-prompt.d.ts","sourceRoot":"","sources":["../../src/ai/zhin-agent-prompt.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9C,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,GAAG,MAAM,CAG/D;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAQlG;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,EACjC,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,GACf,MAAM,CAYR;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAS/E;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAClC,aAAa,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,uBAAuB,GAAG,MAAM,CAsE1E"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ZhinAgent System Prompt 构建 + 消息辅助函数
|
|
3
|
+
*/
|
|
4
|
+
import * as path from 'path';
|
|
5
|
+
import { SECTION_SEP, HISTORY_CONTEXT_MARKER, CURRENT_MESSAGE_MARKER } from './zhin-agent-config.js';
|
|
6
|
+
import { getFileMemoryContext } from './bootstrap.js';
|
|
7
|
+
export function contentToText(c) {
|
|
8
|
+
if (typeof c === 'string')
|
|
9
|
+
return c;
|
|
10
|
+
return c.map(p => (p.type === 'text' ? p.text : '')).join('');
|
|
11
|
+
}
|
|
12
|
+
export function buildUserMessageWithHistory(history, currentContent) {
|
|
13
|
+
if (history.length === 0)
|
|
14
|
+
return currentContent;
|
|
15
|
+
const roleLabel = (role) => (role === 'user' ? '用户' : role === 'assistant' ? '助手' : '系统');
|
|
16
|
+
const lines = history
|
|
17
|
+
.filter(m => m.role === 'user' || m.role === 'assistant' || m.role === 'system')
|
|
18
|
+
.map(m => `${roleLabel(m.role)}: ${contentToText(m.content)}`);
|
|
19
|
+
const historyBlock = lines.join('\n');
|
|
20
|
+
return `${HISTORY_CONTEXT_MARKER}\n${historyBlock}\n\n${CURRENT_MESSAGE_MARKER}\n${currentContent}`;
|
|
21
|
+
}
|
|
22
|
+
export function buildEnhancedPersona(config, profileSummary, toneHint) {
|
|
23
|
+
let persona = config.persona;
|
|
24
|
+
if (profileSummary) {
|
|
25
|
+
persona += `\n\n${profileSummary}`;
|
|
26
|
+
}
|
|
27
|
+
if (toneHint) {
|
|
28
|
+
persona += `\n\n[语气提示] ${toneHint}`;
|
|
29
|
+
}
|
|
30
|
+
const tz = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
31
|
+
const timeStr = new Date().toLocaleString('zh-CN', { timeZone: tz });
|
|
32
|
+
persona += `\n\n当前时间: ${timeStr} (${tz})`;
|
|
33
|
+
return persona;
|
|
34
|
+
}
|
|
35
|
+
export function buildContextHint(context, _content) {
|
|
36
|
+
const parts = [];
|
|
37
|
+
if (context.platform)
|
|
38
|
+
parts.push(`平台:${context.platform}`);
|
|
39
|
+
if (context.botId)
|
|
40
|
+
parts.push(`Bot:${context.botId}`);
|
|
41
|
+
if (context.senderId)
|
|
42
|
+
parts.push(`用户:${context.senderId}`);
|
|
43
|
+
if (context.scope)
|
|
44
|
+
parts.push(`场景类型:${context.scope}`);
|
|
45
|
+
if (context.sceneId)
|
|
46
|
+
parts.push(`场景ID:${context.sceneId}`);
|
|
47
|
+
if (parts.length === 0)
|
|
48
|
+
return '';
|
|
49
|
+
return `\n上下文: ${parts.join(' | ')}`;
|
|
50
|
+
}
|
|
51
|
+
export function buildRichSystemPrompt(ctx) {
|
|
52
|
+
const { config, skillRegistry, skillsSummaryXML, activeSkillsContext, bootstrapContext } = ctx;
|
|
53
|
+
const parts = [];
|
|
54
|
+
const cwd = process.cwd();
|
|
55
|
+
const dataDir = path.join(cwd, 'data');
|
|
56
|
+
// §1 Identity
|
|
57
|
+
const now = new Date();
|
|
58
|
+
const tz = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
59
|
+
const timeStr = now.toLocaleString('zh-CN', { timeZone: tz });
|
|
60
|
+
const memoryDir = path.join(dataDir, 'memory');
|
|
61
|
+
const todayStr = new Date().toISOString().split('T')[0];
|
|
62
|
+
const identityLines = [
|
|
63
|
+
config.persona,
|
|
64
|
+
'',
|
|
65
|
+
`当前时间: ${timeStr} (${tz})`,
|
|
66
|
+
`工作区: ${cwd}`,
|
|
67
|
+
`数据目录: ${dataDir}(记忆、技能等)`,
|
|
68
|
+
`长期记忆: ${path.join(memoryDir, 'MEMORY.md')};今日笔记: ${path.join(memoryDir, todayStr + '.md')}。重要事项可用 write_file 写入 MEMORY.md。`,
|
|
69
|
+
];
|
|
70
|
+
parts.push(identityLines.join('\n'));
|
|
71
|
+
// §2 Rules
|
|
72
|
+
const ruleLines = [
|
|
73
|
+
'## 规则',
|
|
74
|
+
'1. 直接调用工具执行操作,不要描述步骤或解释意图',
|
|
75
|
+
'2. 时间/日期问题:直接用上方"当前时间"回答,不调工具',
|
|
76
|
+
'3. 修改文件必须调用 edit_file/write_file,禁止给手动教程',
|
|
77
|
+
'4. activate_skill 返回后,必须继续调用其中指导的工具,不要停',
|
|
78
|
+
'5. 所有回答必须基于工具返回的实际数据',
|
|
79
|
+
'6. 工具失败时尝试替代方案,不要直接把错误丢给用户',
|
|
80
|
+
'7. 只根据用户**最后一条**消息作答,前面的对话仅作背景',
|
|
81
|
+
'8. 耗时或复杂的独立任务可使用 spawn_task 交给后台处理,不要阻塞当前对话',
|
|
82
|
+
'9. 用户要求从 URL 安装/加入/学习技能时,使用 install_skill(url) 下载并安装,安装后自动 activate_skill 激活',
|
|
83
|
+
];
|
|
84
|
+
parts.push(ruleLines.join('\n'));
|
|
85
|
+
// §3 Skills
|
|
86
|
+
if (skillsSummaryXML) {
|
|
87
|
+
parts.push('## 可用技能\n\n以下技能可扩展你的能力。使用技能时用 read_file 读取对应 SKILL.md,或直接调用 activate_skill(name)。\n\n' + skillsSummaryXML + '\n\n用户提到技能名 → 调用 activate_skill(name) → 按返回的指导执行工具');
|
|
88
|
+
}
|
|
89
|
+
else if (skillRegistry && skillRegistry.size > 0) {
|
|
90
|
+
const skills = skillRegistry.getAll();
|
|
91
|
+
const skillLines = ['## 可用技能'];
|
|
92
|
+
for (const skill of skills) {
|
|
93
|
+
skillLines.push(`- ${skill.name}: ${skill.description}`);
|
|
94
|
+
}
|
|
95
|
+
skillLines.push('用户提到技能名 → 调用 activate_skill(name) → 按返回的指导执行工具');
|
|
96
|
+
parts.push(skillLines.join('\n'));
|
|
97
|
+
}
|
|
98
|
+
// §4 Active skills
|
|
99
|
+
if (activeSkillsContext) {
|
|
100
|
+
parts.push('## Active Skills\n\n' + activeSkillsContext);
|
|
101
|
+
}
|
|
102
|
+
// §5 Memory
|
|
103
|
+
const fileMemory = getFileMemoryContext();
|
|
104
|
+
if (fileMemory) {
|
|
105
|
+
parts.push('## Memory\n\n' + fileMemory);
|
|
106
|
+
}
|
|
107
|
+
if (bootstrapContext && bootstrapContext.includes('AGENTS.md')) {
|
|
108
|
+
parts.push('## 记忆\n\n长期记忆与重要记录见下方引导文件 AGENTS.md。');
|
|
109
|
+
}
|
|
110
|
+
// §6 Bootstrap
|
|
111
|
+
if (bootstrapContext) {
|
|
112
|
+
parts.push(bootstrapContext);
|
|
113
|
+
}
|
|
114
|
+
return parts.filter(Boolean).join(SECTION_SEP);
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=zhin-agent-prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zhin-agent-prompt.js","sourceRoot":"","sources":["../../src/ai/zhin-agent-prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ZhinAgent 工具收集 — 两级过滤 (Skill → Tool) + 技能支持工具注入
|
|
3
|
+
*/
|
|
4
|
+
import type { Tool, ToolContext } from '../types.js';
|
|
5
|
+
import type { SkillFeature } from '../built/skill.js';
|
|
6
|
+
import type { AgentTool } from './types.js';
|
|
7
|
+
import type { ZhinAgentConfig } from './zhin-agent-config.js';
|
|
8
|
+
/**
|
|
9
|
+
* Convert a Tool (with ToolContext) to an AgentTool, injecting context-provided parameters.
|
|
10
|
+
*/
|
|
11
|
+
export declare function toAgentTool(tool: Tool, context?: ToolContext): AgentTool;
|
|
12
|
+
export interface CollectToolsContext {
|
|
13
|
+
config: Required<ZhinAgentConfig>;
|
|
14
|
+
skillRegistry: SkillFeature | null;
|
|
15
|
+
externalRegistered: Map<string, AgentTool>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Two-level tool collection: Skill → Tool filtering, dedup, relevance ranking,
|
|
19
|
+
* skill-support injection, and config-level allow/deny.
|
|
20
|
+
*/
|
|
21
|
+
export declare function collectRelevantTools(message: string, context: ToolContext, externalTools: Tool[], ctx: CollectToolsContext): AgentTool[];
|
|
22
|
+
//# sourceMappingURL=zhin-agent-tool-collector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zhin-agent-tool-collector.d.ts","sourceRoot":"","sources":["../../src/ai/zhin-agent-tool-collector.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAK9D;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,SAAS,CAiExE;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAClC,aAAa,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAC5C;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,IAAI,EAAE,EACrB,GAAG,EAAE,mBAAmB,GACvB,SAAS,EAAE,CA+Ib"}
|