@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.
Files changed (61) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +14 -8
  3. package/lib/builtin-tools.d.ts +5 -137
  4. package/lib/builtin-tools.d.ts.map +1 -1
  5. package/lib/builtin-tools.js +321 -732
  6. package/lib/builtin-tools.js.map +1 -1
  7. package/lib/discover-agents.d.ts +28 -0
  8. package/lib/discover-agents.d.ts.map +1 -0
  9. package/lib/discover-agents.js +116 -0
  10. package/lib/discover-agents.js.map +1 -0
  11. package/lib/discover-skills.d.ts +49 -0
  12. package/lib/discover-skills.d.ts.map +1 -0
  13. package/lib/discover-skills.js +297 -0
  14. package/lib/discover-skills.js.map +1 -0
  15. package/lib/discover-tools.d.ts +56 -0
  16. package/lib/discover-tools.d.ts.map +1 -0
  17. package/lib/discover-tools.js +263 -0
  18. package/lib/discover-tools.js.map +1 -0
  19. package/lib/discovery-utils.d.ts +27 -0
  20. package/lib/discovery-utils.d.ts.map +1 -0
  21. package/lib/discovery-utils.js +96 -0
  22. package/lib/discovery-utils.js.map +1 -0
  23. package/lib/file-policy.d.ts +41 -4
  24. package/lib/file-policy.d.ts.map +1 -1
  25. package/lib/file-policy.js +126 -4
  26. package/lib/file-policy.js.map +1 -1
  27. package/lib/index.d.ts +1 -1
  28. package/lib/index.d.ts.map +1 -1
  29. package/lib/index.js +1 -1
  30. package/lib/index.js.map +1 -1
  31. package/lib/init/create-zhin-agent.d.ts.map +1 -1
  32. package/lib/init/create-zhin-agent.js +3 -1
  33. package/lib/init/create-zhin-agent.js.map +1 -1
  34. package/lib/init/register-builtin-tools.d.ts.map +1 -1
  35. package/lib/init/register-builtin-tools.js +51 -54
  36. package/lib/init/register-builtin-tools.js.map +1 -1
  37. package/lib/zhin-agent/config.js +1 -1
  38. package/lib/zhin-agent/config.js.map +1 -1
  39. package/lib/zhin-agent/exec-policy.d.ts +48 -2
  40. package/lib/zhin-agent/exec-policy.d.ts.map +1 -1
  41. package/lib/zhin-agent/exec-policy.js +184 -23
  42. package/lib/zhin-agent/exec-policy.js.map +1 -1
  43. package/lib/zhin-agent/prompt.d.ts +14 -0
  44. package/lib/zhin-agent/prompt.d.ts.map +1 -1
  45. package/lib/zhin-agent/prompt.js +192 -45
  46. package/lib/zhin-agent/prompt.js.map +1 -1
  47. package/package.json +3 -3
  48. package/src/builtin-tools.ts +333 -835
  49. package/src/discover-agents.ts +138 -0
  50. package/src/discover-skills.ts +325 -0
  51. package/src/discover-tools.ts +302 -0
  52. package/src/discovery-utils.ts +96 -0
  53. package/src/file-policy.ts +152 -4
  54. package/src/index.ts +5 -1
  55. package/src/init/create-zhin-agent.ts +3 -1
  56. package/src/init/register-builtin-tools.ts +51 -62
  57. package/src/zhin-agent/config.ts +1 -1
  58. package/src/zhin-agent/exec-policy.ts +229 -24
  59. package/src/zhin-agent/prompt.ts +209 -47
  60. package/tests/exec-policy.test.ts +355 -0
  61. package/tests/file-policy.test.ts +189 -1
@@ -6,7 +6,11 @@ import * as fs from 'fs';
6
6
  import * as os from 'os';
7
7
  import * as path from 'path';
8
8
  import { getPlugin } from '@zhin.js/core';
9
- import { collectPluginSkillSearchRoots, createBuiltinTools, discoverWorkspaceSkills, discoverWorkspaceAgents, discoverWorkspaceTools, buildToolFromMeta, loadAlwaysSkillsContent, buildSkillsSummaryXML, } from '../builtin-tools.js';
9
+ import { createBuiltinTools } from '../builtin-tools.js';
10
+ import { collectPluginSkillSearchRoots } from '../discovery-utils.js';
11
+ import { discoverWorkspaceSkills, loadAlwaysSkillsContent, buildSkillsSummaryXML } from '../discover-skills.js';
12
+ import { discoverWorkspaceAgents } from '../discover-agents.js';
13
+ import { discoverWorkspaceTools, buildToolFromMeta } from '../discover-tools.js';
10
14
  import { resolveSkillInstructionMaxChars, DEFAULT_CONFIG } from '../zhin-agent/config.js';
11
15
  import { loadBootstrapFiles, buildContextFiles, buildBootstrapContextSection } from '../bootstrap.js';
12
16
  import { triggerAIHook, createAIHookEvent } from '../hooks.js';
@@ -22,6 +26,7 @@ export function registerBuiltinTools(refs) {
22
26
  const fullCfg = { ...DEFAULT_CONFIG, ...agentCfg };
23
27
  const modelName = provider.models[0] || '';
24
28
  const builtinTools = createBuiltinTools({
29
+ plugin,
25
30
  skillInstructionMaxChars: resolveSkillInstructionMaxChars(fullCfg, modelName),
26
31
  pluginSkillRootsResolver: () => collectPluginSkillSearchRoots(root),
27
32
  skillFileLookup: (name) => {
@@ -47,34 +52,41 @@ export function registerBuiltinTools(refs) {
47
52
  for (const s of existing)
48
53
  skillFeature.remove(s);
49
54
  const skills = await discoverWorkspaceSkills(root);
50
- if (skills.length === 0)
51
- return 0;
52
- const allRegisteredTools = toolService.getAll();
53
- const toolNameIndex = new Map();
54
- for (const t of allRegisteredTools) {
55
- toolNameIndex.set(t.name, t);
56
- const parts = t.name.split('_');
57
- if (parts.length === 2)
58
- toolNameIndex.set(`${parts[1]}_${parts[0]}`, t);
59
- }
60
- for (const s of skills) {
61
- const associatedTools = [];
62
- const toolNames = s.toolNames || [];
63
- for (const toolName of toolNames) {
64
- let tool = toolService.get(toolName) || toolNameIndex.get(toolName);
65
- if (tool)
66
- associatedTools.push(tool);
55
+ if (skills.length > 0) {
56
+ const allRegisteredTools = toolService.getAll();
57
+ const toolNameIndex = new Map();
58
+ for (const t of allRegisteredTools) {
59
+ toolNameIndex.set(t.name, t);
60
+ const parts = t.name.split('_');
61
+ if (parts.length === 2)
62
+ toolNameIndex.set(`${parts[1]}_${parts[0]}`, t);
67
63
  }
68
- skillFeature.add({
69
- name: s.name,
70
- description: s.description,
71
- tools: associatedTools,
72
- keywords: s.keywords || [],
73
- tags: s.tags || [],
74
- pluginName: root.name,
75
- filePath: s.filePath,
76
- always: s.always,
77
- }, root.name);
64
+ for (const s of skills) {
65
+ const associatedTools = [];
66
+ const toolNames = s.toolNames || [];
67
+ for (const toolName of toolNames) {
68
+ let tool = toolService.get(toolName) || toolNameIndex.get(toolName);
69
+ if (tool)
70
+ associatedTools.push(tool);
71
+ }
72
+ skillFeature.add({
73
+ name: s.name,
74
+ description: s.description,
75
+ tools: associatedTools,
76
+ keywords: s.keywords || [],
77
+ tags: s.tags || [],
78
+ pluginName: root.name,
79
+ filePath: s.filePath,
80
+ always: s.always,
81
+ }, root.name);
82
+ }
83
+ }
84
+ // Inject always-on skills content + XML summary into agent
85
+ if (refs.zhinAgent) {
86
+ const alwaysContent = await loadAlwaysSkillsContent(skills);
87
+ const skillsXml = buildSkillsSummaryXML(skills);
88
+ refs.zhinAgent.setActiveSkillsContext(alwaysContent);
89
+ refs.zhinAgent.setSkillsSummaryXML(skillsXml);
78
90
  }
79
91
  return skills.length;
80
92
  }
@@ -107,12 +119,17 @@ export function registerBuiltinTools(refs) {
107
119
  }
108
120
  return added;
109
121
  }
110
- // 已发现的 Agent 预设(本地缓存,无需存储到 Plugin 树)
111
- const discoveredAgents = new Map();
112
122
  /**
113
- * Discover *.agent.md files and register agent presets.
123
+ * Discover *.agent.md files and register agent presets into AgentPresetFeature.
114
124
  */
115
125
  async function syncWorkspaceAgents() {
126
+ const agentPresetFeature = root.inject?.('agentPreset');
127
+ if (!agentPresetFeature)
128
+ return 0;
129
+ // Remove previously discovered presets for this plugin
130
+ const existing = agentPresetFeature.getByPlugin(root.name);
131
+ for (const p of existing)
132
+ agentPresetFeature.remove(p);
116
133
  const agentMetas = await discoverWorkspaceAgents(root);
117
134
  if (agentMetas.length === 0)
118
135
  return 0;
@@ -123,7 +140,7 @@ export function registerBuiltinTools(refs) {
123
140
  }
124
141
  let added = 0;
125
142
  for (const meta of agentMetas) {
126
- if (discoveredAgents.has(meta.name))
143
+ if (agentPresetFeature.get(meta.name))
127
144
  continue;
128
145
  const associatedTools = [];
129
146
  for (const toolName of meta.toolNames || []) {
@@ -140,7 +157,7 @@ export function registerBuiltinTools(refs) {
140
157
  systemPrompt = body;
141
158
  }
142
159
  catch { /* ignore */ }
143
- discoveredAgents.set(meta.name, {
160
+ agentPresetFeature.add({
144
161
  name: meta.name,
145
162
  description: meta.description,
146
163
  keywords: meta.keywords,
@@ -151,7 +168,7 @@ export function registerBuiltinTools(refs) {
151
168
  provider: meta.provider,
152
169
  maxIterations: meta.maxIterations,
153
170
  filePath: meta.filePath,
154
- });
171
+ }, root.name);
155
172
  added++;
156
173
  }
157
174
  return added;
@@ -215,19 +232,6 @@ export function registerBuiltinTools(refs) {
215
232
  catch (e) {
216
233
  logger.debug(`Bootstrap files not loaded: ${e.message}`);
217
234
  }
218
- // Step 3: inject always-on skills content + XML summary
219
- try {
220
- const skillsForContext = await discoverWorkspaceSkills(root);
221
- const alwaysContent = await loadAlwaysSkillsContent(skillsForContext);
222
- const skillsXml = buildSkillsSummaryXML(skillsForContext);
223
- if (refs.zhinAgent) {
224
- refs.zhinAgent.setActiveSkillsContext(alwaysContent);
225
- refs.zhinAgent.setSkillsSummaryXML(skillsXml);
226
- }
227
- }
228
- catch (e) {
229
- logger.debug(`Skills context not set: ${e instanceof Error ? e.message : String(e)}`);
230
- }
231
235
  // Trigger agent:bootstrap hook
232
236
  const skillFeature2 = root.inject('skill');
233
237
  await triggerAIHook(createAIHookEvent('agent', 'bootstrap', undefined, {
@@ -273,13 +277,6 @@ export function registerBuiltinTools(refs) {
273
277
  skillReloadDebounce = null;
274
278
  try {
275
279
  const count = await syncWorkspaceSkills();
276
- const skillsForContext = await discoverWorkspaceSkills(root);
277
- const alwaysContent = await loadAlwaysSkillsContent(skillsForContext);
278
- const skillsXml = buildSkillsSummaryXML(skillsForContext);
279
- if (refs.zhinAgent) {
280
- refs.zhinAgent.setActiveSkillsContext(alwaysContent);
281
- refs.zhinAgent.setSkillsSummaryXML(skillsXml);
282
- }
283
280
  await triggerAIHook(createAIHookEvent('agent', 'skills-reloaded', undefined, { skillCount: count }));
284
281
  if (count >= 0)
285
282
  logger.info(`[技能热重载] 已更新,工作区技能: ${count}`);
@@ -1 +1 @@
1
- {"version":3,"file":"register-builtin-tools.js","sourceRoot":"","sources":["../../src/init/register-builtin-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"register-builtin-tools.js","sourceRoot":"","sources":["../../src/init/register-builtin-tools.ts"],"names":[],"mappings":"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"}
@@ -55,7 +55,7 @@ export const KEYWORD_TRIGGERS = {
55
55
  spawnTask: /后台|子任务|spawn|异步|background|并行|独立处理/i,
56
56
  };
57
57
  export const DEFAULT_CONFIG = {
58
- persona: 'You are a helpful AI assistant. You can use tools to help the user. Reply in the language specified in [User profile] (key: language or preferred_language), or in the same language as the user\'s message if not set.',
58
+ persona: 'You are Zhin, an intelligent IM bot assistant that helps users with tasks through conversation. Use tools available to you to assist the user. You are running inside the Zhin.js framework.',
59
59
  maxIterations: 5,
60
60
  timeout: 60_000,
61
61
  preExecTimeout: 10_000,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/zhin-agent/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAIrD,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,IAAK,MAAM,CAAC,aAAwB,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC,aAA8B,CAAC;IAClH,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;AAIF,wBAAwB;AACxB,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,WAAW,EAAE,2BAA2B;IACxC,WAAW,EAAE,kDAAkD;IAC/D,gBAAgB,EAAE,wCAAwC;IAC1D,SAAS,EAAE,qCAAqC;CACxC,CAAC;AA+BX,MAAM,CAAC,MAAM,cAAc,GAA8B;IACvD,OAAO,EAAE,yNAAyN;IAClO,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,EAAE;IACjB,wBAAwB,EAAE,CAAC;CAC5B,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/zhin-agent/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAIrD,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,IAAK,MAAM,CAAC,aAAwB,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC,aAA8B,CAAC;IAClH,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;AAIF,wBAAwB;AACxB,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,WAAW,EAAE,2BAA2B;IACxC,WAAW,EAAE,kDAAkD;IAC/D,gBAAgB,EAAE,wCAAwC;IAC1D,SAAS,EAAE,qCAAqC;CACxC,CAAC;AA+BX,MAAM,CAAC,MAAM,cAAc,GAA8B;IACvD,OAAO,EAAE,8LAA8L;IACvM,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,EAAE;IACjB,wBAAwB,EAAE,CAAC;CAC5B,CAAC"}
@@ -1,20 +1,66 @@
1
1
  /**
2
2
  * ZhinAgent 执行策略 — bash 命令的安全检查与工具包装
3
+ *
4
+ * 参考 Claude Code bashPermissions.ts 的纵深防御策略:
5
+ * 1. 危险命令黑名单 — 即使 full 模式也阻止解释器/提权命令
6
+ * 2. 环境变量前缀剥离 — `FOO=bar cmd` → 按 `cmd` 做白名单匹配
7
+ * 3. Safe wrapper 剥离 — `timeout 10 cmd` → 按 `cmd` 做匹配
8
+ * 4. 复合命令拆分 — `&&` `||` `;` 逐段独立检查,deny 优先
9
+ * 5. 只读命令自动放行 — 与 file-policy classifyBashCommand 集成
10
+ * 6. ask_user 集成 — execAsk=true 时返回需审批标记(而非无法交互的抛错)
3
11
  */
4
12
  import type { AgentTool } from '@zhin.js/core';
5
13
  import type { ZhinAgentConfig } from './config.js';
6
14
  export declare const EXEC_PRESETS: Record<string, string[]>;
15
+ /**
16
+ * 检查命令是否在危险黑名单中。
17
+ */
18
+ export declare function isDangerousCommand(cmdName: string): boolean;
19
+ /**
20
+ * 剥离命令前面的 `KEY=value` 环境变量前缀。
21
+ * 例如 `FOO=bar BAZ=1 curl http://...` → `curl http://...`
22
+ *
23
+ * 只剥离安全的 key=value 对,不剥离含特殊字符的值(可能是注入)。
24
+ */
25
+ export declare function stripEnvVarPrefix(command: string): string;
26
+ /**
27
+ * 剥离命令前面的 safe wrapper(如 `timeout 10`、`nice -n 5`)。
28
+ * 只剥离 wrapper + 它的标志/参数(数字、-flag 形式),直到遇到实际命令。
29
+ */
30
+ export declare function stripSafeWrappers(command: string): string;
31
+ /**
32
+ * 将复合命令按 `&&`, `||`, `;` 拆分为独立子命令。
33
+ * 管道 `|` 不拆分 — 管道中的只读性由 classifyBashCommand 判断。
34
+ *
35
+ * 注意:不处理 subshell `$(...)` 和反引号 — 这些场景由危险黑名单覆盖。
36
+ */
37
+ export declare function splitCompoundCommand(command: string): string[];
38
+ /**
39
+ * 从命令字符串中提取实际的可执行程序名。
40
+ * 先剥离环境变量前缀和 safe wrapper。
41
+ */
42
+ export declare function extractCommandName(command: string): string;
43
+ export interface ExecPolicyResult {
44
+ allowed: boolean;
45
+ /** 如果不允许,拒绝原因 */
46
+ reason?: string;
47
+ /** 如果需要用户确认(execAsk=true 且命令不在白名单但也不在黑名单) */
48
+ needsApproval?: boolean;
49
+ }
7
50
  /**
8
51
  * Resolves the effective allowlist by merging preset commands with custom allowlist.
9
52
  */
10
53
  export declare function resolveExecAllowlist(config: Required<ZhinAgentConfig>): string[];
11
54
  /**
12
55
  * Check if a bash command is allowed under the current exec policy.
13
- * Throws an Error when the command is denied.
56
+ * 支持复合命令拆分、环境变量剥离、safe wrapper 剥离、只读自动放行。
57
+ *
58
+ * @returns ExecPolicyResult — 允许/拒绝/需审批
14
59
  */
15
- export declare function checkExecPolicy(config: Required<ZhinAgentConfig>, command: string): void;
60
+ export declare function checkExecPolicy(config: Required<ZhinAgentConfig>, command: string): ExecPolicyResult;
16
61
  /**
17
62
  * Wrap `bash` tools with exec policy enforcement.
63
+ * 当 execAsk=true 且命令需审批时,返回提示信息而非抛错。
18
64
  */
19
65
  export declare function applyExecPolicyToTools(config: Required<ZhinAgentConfig>, tools: AgentTool[]): AgentTool[];
20
66
  //# sourceMappingURL=exec-policy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exec-policy.d.ts","sourceRoot":"","sources":["../../src/zhin-agent/exec-policy.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAQnD,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,CA2BxF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAazG"}
1
+ {"version":3,"file":"exec-policy.d.ts","sourceRoot":"","sources":["../../src/zhin-agent/exec-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AASnD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAIjD,CAAC;AAqBF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE3D;AAID;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMzD;AAYD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAsBzD;AAID;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAG9D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAK1D;AAID,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAID;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,MAAM,EAAE,CAMhF;AA0DD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAyCpG;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAoBzG"}
@@ -1,15 +1,116 @@
1
1
  /**
2
2
  * ZhinAgent 执行策略 — bash 命令的安全检查与工具包装
3
+ *
4
+ * 参考 Claude Code bashPermissions.ts 的纵深防御策略:
5
+ * 1. 危险命令黑名单 — 即使 full 模式也阻止解释器/提权命令
6
+ * 2. 环境变量前缀剥离 — `FOO=bar cmd` → 按 `cmd` 做白名单匹配
7
+ * 3. Safe wrapper 剥离 — `timeout 10 cmd` → 按 `cmd` 做匹配
8
+ * 4. 复合命令拆分 — `&&` `||` `;` 逐段独立检查,deny 优先
9
+ * 5. 只读命令自动放行 — 与 file-policy classifyBashCommand 集成
10
+ * 6. ask_user 集成 — execAsk=true 时返回需审批标记(而非无法交互的抛错)
3
11
  */
12
+ import { classifyBashCommand } from '../file-policy.js';
4
13
  // ── 预设命令白名单 ──────────────────────────────────────────────────
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', 'gh', 'python', 'python3', 'pip', 'pnpm', 'yarn'];
14
+ const PRESET_READONLY = ['ls', 'cat', 'pwd', 'date', 'whoami', 'grep', 'find', 'head', 'tail', 'wc', 'stat', 'file'];
15
+ const PRESET_NETWORK = [...PRESET_READONLY, 'curl', 'wget', 'ping', 'dig', 'nslookup', 'host'];
16
+ const PRESET_DEVELOPMENT = [...PRESET_NETWORK, 'npm', 'npx', 'node', 'git', 'gh', 'python', 'python3', 'pip', 'pnpm', 'yarn', 'tsc', 'bun'];
8
17
  export const EXEC_PRESETS = {
9
18
  readonly: PRESET_READONLY,
10
19
  network: PRESET_NETWORK,
11
20
  development: PRESET_DEVELOPMENT,
12
21
  };
22
+ // ── 危险命令黑名单(参考 Claude Code DANGEROUS_COMMANDS)──────────────
23
+ /**
24
+ * 即使在 full 模式下也会被阻止的危险命令。
25
+ * 这些命令可以执行任意代码、提权或造成不可逆破坏。
26
+ */
27
+ const DANGEROUS_COMMANDS = new Set([
28
+ // 提权
29
+ 'sudo', 'su', 'doas',
30
+ // Shell 元命令 — 可执行任意代码
31
+ 'eval', 'exec',
32
+ // 系统级破坏
33
+ 'dd', 'mkfs', 'fdisk', 'parted',
34
+ // 进程注入
35
+ 'gdb', 'strace', 'ltrace', 'ptrace',
36
+ // 环境注入(敏感变量可被设置)
37
+ 'export',
38
+ ]);
39
+ /**
40
+ * 检查命令是否在危险黑名单中。
41
+ */
42
+ export function isDangerousCommand(cmdName) {
43
+ return DANGEROUS_COMMANDS.has(cmdName);
44
+ }
45
+ // ── 环境变量前缀剥离(参考 Claude Code stripEnvVars)──────────────
46
+ /**
47
+ * 剥离命令前面的 `KEY=value` 环境变量前缀。
48
+ * 例如 `FOO=bar BAZ=1 curl http://...` → `curl http://...`
49
+ *
50
+ * 只剥离安全的 key=value 对,不剥离含特殊字符的值(可能是注入)。
51
+ */
52
+ export function stripEnvVarPrefix(command) {
53
+ // env 前缀环境变量格式: WORD=VALUE (VALUE 可以被引号或不含空格的字符串)
54
+ return command.replace(/^(\s*[A-Za-z_][A-Za-z0-9_]*=(('[^']*'|"[^"]*"|[^\s;|&]*))\s*)+/, '').trim();
55
+ }
56
+ // ── Safe wrapper 剥离(参考 Claude Code stripSafeWrappers)──────────
57
+ /**
58
+ * Safe wrapper 命令列表 — 这些命令本身是安全的"包装器",
59
+ * 真正需要检查的是它们后面的实际命令。
60
+ */
61
+ const SAFE_WRAPPERS = new Set([
62
+ 'timeout', 'time', 'nice', 'nohup', 'ionice', 'stdbuf', 'unbuffer',
63
+ ]);
64
+ /**
65
+ * 剥离命令前面的 safe wrapper(如 `timeout 10`、`nice -n 5`)。
66
+ * 只剥离 wrapper + 它的标志/参数(数字、-flag 形式),直到遇到实际命令。
67
+ */
68
+ export function stripSafeWrappers(command) {
69
+ let remaining = command.trim();
70
+ let changed = true;
71
+ // 防止无限循环,最多剥离 5 层
72
+ let maxIter = 5;
73
+ while (changed && maxIter-- > 0) {
74
+ changed = false;
75
+ const tokens = remaining.split(/\s+/);
76
+ if (tokens.length < 2)
77
+ break;
78
+ if (SAFE_WRAPPERS.has(tokens[0])) {
79
+ // 跳过 wrapper 本身和它的参数(-flag 或纯数字/duration)
80
+ let i = 1;
81
+ while (i < tokens.length && /^(-[A-Za-z0-9]|[0-9]+[smhd]?$)/.test(tokens[i])) {
82
+ i++;
83
+ }
84
+ if (i < tokens.length) {
85
+ remaining = tokens.slice(i).join(' ');
86
+ changed = true;
87
+ }
88
+ }
89
+ }
90
+ return remaining;
91
+ }
92
+ // ── 复合命令拆分(参考 Claude Code compound command checking)──────
93
+ /**
94
+ * 将复合命令按 `&&`, `||`, `;` 拆分为独立子命令。
95
+ * 管道 `|` 不拆分 — 管道中的只读性由 classifyBashCommand 判断。
96
+ *
97
+ * 注意:不处理 subshell `$(...)` 和反引号 — 这些场景由危险黑名单覆盖。
98
+ */
99
+ export function splitCompoundCommand(command) {
100
+ // 按 &&, ||, ; 拆分,保留管道作为整体
101
+ return command.split(/\s*(?:&&|\|\||;)\s*/).map(s => s.trim()).filter(Boolean);
102
+ }
103
+ /**
104
+ * 从命令字符串中提取实际的可执行程序名。
105
+ * 先剥离环境变量前缀和 safe wrapper。
106
+ */
107
+ export function extractCommandName(command) {
108
+ const stripped = stripSafeWrappers(stripEnvVarPrefix(command));
109
+ // 取第一个非管道 token
110
+ const name = stripped.split(/[\s|]/)[0] || '';
111
+ return name;
112
+ }
113
+ // ── 核心检查函数 ────────────────────────────────────────────────────
13
114
  /**
14
115
  * Resolves the effective allowlist by merging preset commands with custom allowlist.
15
116
  */
@@ -21,22 +122,25 @@ export function resolveExecAllowlist(config) {
21
122
  return merged;
22
123
  }
23
124
  /**
24
- * Check if a bash command is allowed under the current exec policy.
25
- * Throws an Error when the command is denied.
125
+ * 检查单条子命令是否允许执行。
126
+ * 内部函数 不做复合命令拆分。
26
127
  */
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。');
128
+ function checkSingleCommand(cmdName, fullSubCommand, allowlist, security, execAsk) {
129
+ // 1. 危险黑名单 任何模式都拒绝
130
+ if (isDangerousCommand(cmdName)) {
131
+ return { allowed: false, reason: `拒绝执行危险命令「${cmdName}」— 该命令可提权或执行任意代码。` };
33
132
  }
34
- // allowlist
35
- const list = resolveExecAllowlist(config);
36
- const cmd = (command || '').trim();
37
- // 提取命令的第一个 token(实际可执行程序名)进行白名单匹配
38
- const cmdName = cmd.split(/[\s;|&]/)[0];
39
- const allowed = list.some(pattern => {
133
+ // 2. full 模式 — 通过黑名单后全部放行
134
+ if (security === 'full') {
135
+ return { allowed: true };
136
+ }
137
+ // 3. 只读命令自动放行(与 file-policy classifyBashCommand 集成)
138
+ const classification = classifyBashCommand(fullSubCommand);
139
+ if (classification.isReadOnly) {
140
+ return { allowed: true };
141
+ }
142
+ // 4. 白名单匹配
143
+ const allowed = allowlist.some(pattern => {
40
144
  try {
41
145
  const re = new RegExp(`^${pattern}$`);
42
146
  return re.test(cmdName);
@@ -45,15 +149,65 @@ export function checkExecPolicy(config, command) {
45
149
  return cmdName === pattern;
46
150
  }
47
151
  });
48
- if (!allowed) {
49
- const ask = config.execAsk;
50
- throw new Error(ask
51
- ? '该命令不在允许列表中,需要审批后执行。当前版本请将命令加入 ai.agent.execAllowlist 或联系管理员。'
52
- : '该命令不在允许列表中,已被拒绝执行。可将允许的命令模式加入 ai.agent.execAllowlist。');
152
+ if (allowed) {
153
+ return { allowed: true };
154
+ }
155
+ // 5. 需审批或拒绝
156
+ if (execAsk) {
157
+ return {
158
+ allowed: false,
159
+ needsApproval: true,
160
+ reason: `命令「${cmdName}」不在允许列表中,需要用户确认后执行。`,
161
+ };
162
+ }
163
+ return {
164
+ allowed: false,
165
+ reason: `命令「${cmdName}」不在允许列表中,已被拒绝。可将命令加入 ai.agent.execAllowlist 或改用 execPreset。`,
166
+ };
167
+ }
168
+ /**
169
+ * Check if a bash command is allowed under the current exec policy.
170
+ * 支持复合命令拆分、环境变量剥离、safe wrapper 剥离、只读自动放行。
171
+ *
172
+ * @returns ExecPolicyResult — 允许/拒绝/需审批
173
+ */
174
+ export function checkExecPolicy(config, command) {
175
+ const security = config.execSecurity ?? 'deny';
176
+ if (security === 'deny') {
177
+ return { allowed: false, reason: '当前配置禁止执行 Shell 命令(execSecurity=deny)。如需开放请在配置中设置 ai.agent.execSecurity。' };
178
+ }
179
+ const allowlist = resolveExecAllowlist(config);
180
+ const execAsk = config.execAsk ?? false;
181
+ const cmd = (command || '').trim();
182
+ if (!cmd) {
183
+ return { allowed: false, reason: '命令为空' };
184
+ }
185
+ // 拆分复合命令 — 每段独立检查,deny 优先
186
+ const subCommands = splitCompoundCommand(cmd);
187
+ let pendingApproval = null;
188
+ for (const sub of subCommands) {
189
+ const cmdName = extractCommandName(sub);
190
+ if (!cmdName)
191
+ continue;
192
+ const result = checkSingleCommand(cmdName, sub, allowlist, security, execAsk);
193
+ // deny 立即返回(deny > ask 优先级)
194
+ if (!result.allowed && !result.needsApproval) {
195
+ return result;
196
+ }
197
+ // 记录第一个需要审批的
198
+ if (!result.allowed && result.needsApproval && !pendingApproval) {
199
+ pendingApproval = result;
200
+ }
201
+ }
202
+ // 有需要审批的段
203
+ if (pendingApproval) {
204
+ return pendingApproval;
53
205
  }
206
+ return { allowed: true };
54
207
  }
55
208
  /**
56
209
  * Wrap `bash` tools with exec policy enforcement.
210
+ * 当 execAsk=true 且命令需审批时,返回提示信息而非抛错。
57
211
  */
58
212
  export function applyExecPolicyToTools(config, tools) {
59
213
  return tools.map(t => {
@@ -64,7 +218,14 @@ export function applyExecPolicyToTools(config, tools) {
64
218
  ...t,
65
219
  execute: async (args) => {
66
220
  const cmd = args?.command != null ? String(args.command) : '';
67
- checkExecPolicy(config, cmd);
221
+ const result = checkExecPolicy(config, cmd);
222
+ if (!result.allowed) {
223
+ if (result.needsApproval) {
224
+ // 返回可读消息让 AI 用 ask_user 向用户确认
225
+ return `⚠️ ${result.reason}\n请使用 ask_user 工具询问用户是否允许执行此命令。`;
226
+ }
227
+ throw new Error(result.reason);
228
+ }
68
229
  return original(args);
69
230
  },
70
231
  };
@@ -1 +1 @@
1
- {"version":3,"file":"exec-policy.js","sourceRoot":"","sources":["../../src/zhin-agent/exec-policy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exec-policy.js","sourceRoot":"","sources":["../../src/zhin-agent/exec-policy.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,19 @@
1
1
  /**
2
2
  * ZhinAgent System Prompt builder + message helpers
3
+ *
4
+ * 参考 Claude Code 的结构化提示词设计(vendor/claude-code/src/constants/prompts.ts),
5
+ * 按职责分为独立 section,每个 section 有明确标题和层级关系:
6
+ *
7
+ * §1 Identity & Environment — 身份 + 运行环境元数据
8
+ * §2 System — 系统行为约束(工具结果、上下文压缩、安全)
9
+ * §3 Doing Tasks — 任务执行准则(工具优先、代码风格、安全编码)
10
+ * §4 Executing Actions — 操作安全与可逆性(确认策略、破坏性操作)
11
+ * §5 Using Tools — 工具使用指南(专用工具优先、并行调用、技能激活)
12
+ * §6 Communication — 沟通风格(简洁、结构化、语言跟随用户)
13
+ * §7 Skills — 可用技能列表
14
+ * §8 Active Skills — 已激活技能上下文
15
+ * §9 Memory — 长期记忆 + 当日笔记
16
+ * §10 Bootstrap — 额外上下文注入
3
17
  */
4
18
  import type { ContentPart } from '@zhin.js/core';
5
19
  import type { SkillFeature } from '@zhin.js/core';
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/zhin-agent/prompt.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,GAAG,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAehG;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,CAiE1E"}
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/zhin-agent/prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,GAAG,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAehG;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;AAmMD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,uBAAuB,GAAG,MAAM,CAmB1E"}