@zhin.js/agent 0.1.24 → 0.1.26

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 (308) hide show
  1. package/README.md +1 -1
  2. package/lib/agent-prompt/registry.js +1 -1
  3. package/lib/agent-prompt/registry.js.map +1 -1
  4. package/lib/ai-event-bus.d.ts +19 -0
  5. package/lib/ai-event-bus.d.ts.map +1 -0
  6. package/lib/ai-event-bus.js +75 -0
  7. package/lib/ai-event-bus.js.map +1 -0
  8. package/lib/ai-event-subscriber.d.ts +38 -0
  9. package/lib/ai-event-subscriber.d.ts.map +1 -0
  10. package/lib/ai-event-subscriber.js +61 -0
  11. package/lib/ai-event-subscriber.js.map +1 -0
  12. package/lib/builtin/ask-user-tool.d.ts +2 -0
  13. package/lib/builtin/ask-user-tool.d.ts.map +1 -1
  14. package/lib/builtin/ask-user-tool.js +2 -0
  15. package/lib/builtin/ask-user-tool.js.map +1 -1
  16. package/lib/builtin/bash-tool.d.ts +7 -3
  17. package/lib/builtin/bash-tool.d.ts.map +1 -1
  18. package/lib/builtin/bash-tool.js +51 -9
  19. package/lib/builtin/bash-tool.js.map +1 -1
  20. package/lib/builtin/bing-search-html.d.ts.map +1 -1
  21. package/lib/builtin/bing-search-html.js +14 -7
  22. package/lib/builtin/bing-search-html.js.map +1 -1
  23. package/lib/builtin/builtin-base-tool.d.ts +2 -0
  24. package/lib/builtin/builtin-base-tool.d.ts.map +1 -1
  25. package/lib/builtin/builtin-base-tool.js +5 -0
  26. package/lib/builtin/builtin-base-tool.js.map +1 -1
  27. package/lib/builtin/edit-file-tool.d.ts +1 -1
  28. package/lib/builtin/edit-file-tool.d.ts.map +1 -1
  29. package/lib/builtin/edit-file-tool.js +33 -1
  30. package/lib/builtin/edit-file-tool.js.map +1 -1
  31. package/lib/builtin/file-edit-quote-utils.d.ts +1 -3
  32. package/lib/builtin/file-edit-quote-utils.d.ts.map +1 -1
  33. package/lib/builtin/file-edit-quote-utils.js +1 -3
  34. package/lib/builtin/file-edit-quote-utils.js.map +1 -1
  35. package/lib/builtin/glob-tool.d.ts +1 -1
  36. package/lib/builtin/glob-tool.d.ts.map +1 -1
  37. package/lib/builtin/glob-tool.js +15 -3
  38. package/lib/builtin/glob-tool.js.map +1 -1
  39. package/lib/builtin/grep-tool.d.ts +1 -1
  40. package/lib/builtin/grep-tool.d.ts.map +1 -1
  41. package/lib/builtin/grep-tool.js +16 -3
  42. package/lib/builtin/grep-tool.js.map +1 -1
  43. package/lib/builtin/list-dir-tool.d.ts +1 -1
  44. package/lib/builtin/list-dir-tool.d.ts.map +1 -1
  45. package/lib/builtin/list-dir-tool.js +14 -3
  46. package/lib/builtin/list-dir-tool.js.map +1 -1
  47. package/lib/builtin/read-file-tool.d.ts +1 -1
  48. package/lib/builtin/read-file-tool.d.ts.map +1 -1
  49. package/lib/builtin/read-file-tool.js +24 -3
  50. package/lib/builtin/read-file-tool.js.map +1 -1
  51. package/lib/builtin/run-deferred-task-tool.d.ts +3 -0
  52. package/lib/builtin/run-deferred-task-tool.d.ts.map +1 -1
  53. package/lib/builtin/run-deferred-task-tool.js +2 -0
  54. package/lib/builtin/run-deferred-task-tool.js.map +1 -1
  55. package/lib/builtin/spawn-task-tool.d.ts.map +1 -1
  56. package/lib/builtin/spawn-task-tool.js +2 -0
  57. package/lib/builtin/spawn-task-tool.js.map +1 -1
  58. package/lib/builtin/web-fetch-tool.d.ts +2 -2
  59. package/lib/builtin/web-fetch-tool.d.ts.map +1 -1
  60. package/lib/builtin/web-fetch-tool.js +12 -18
  61. package/lib/builtin/web-fetch-tool.js.map +1 -1
  62. package/lib/builtin/write-file-tool.d.ts +1 -1
  63. package/lib/builtin/write-file-tool.d.ts.map +1 -1
  64. package/lib/builtin/write-file-tool.js +33 -1
  65. package/lib/builtin/write-file-tool.js.map +1 -1
  66. package/lib/common-adapter-tools.d.ts +8 -41
  67. package/lib/common-adapter-tools.d.ts.map +1 -1
  68. package/lib/common-adapter-tools.js +23 -182
  69. package/lib/common-adapter-tools.js.map +1 -1
  70. package/lib/deferred-worker-runner.d.ts +13 -2
  71. package/lib/deferred-worker-runner.d.ts.map +1 -1
  72. package/lib/deferred-worker-runner.js +91 -13
  73. package/lib/deferred-worker-runner.js.map +1 -1
  74. package/lib/discovery/agents.js +1 -1
  75. package/lib/discovery/agents.js.map +1 -1
  76. package/lib/discovery/skills.js +1 -1
  77. package/lib/discovery/skills.js.map +1 -1
  78. package/lib/discovery/tools.d.ts +1 -1
  79. package/lib/discovery/tools.d.ts.map +1 -1
  80. package/lib/discovery/tools.js +17 -4
  81. package/lib/discovery/tools.js.map +1 -1
  82. package/lib/discovery/utils.js +1 -1
  83. package/lib/discovery/utils.js.map +1 -1
  84. package/lib/hooks.d.ts.map +1 -1
  85. package/lib/hooks.js +2 -0
  86. package/lib/hooks.js.map +1 -1
  87. package/lib/index.d.ts +9 -1
  88. package/lib/index.d.ts.map +1 -1
  89. package/lib/index.js +6 -0
  90. package/lib/index.js.map +1 -1
  91. package/lib/init/message-media.d.ts +3 -1
  92. package/lib/init/message-media.d.ts.map +1 -1
  93. package/lib/init/message-media.js +20 -0
  94. package/lib/init/message-media.js.map +1 -1
  95. package/lib/init/register-ai-service.js.map +1 -1
  96. package/lib/init/register-ai-trigger.d.ts.map +1 -1
  97. package/lib/init/register-ai-trigger.js +71 -10
  98. package/lib/init/register-ai-trigger.js.map +1 -1
  99. package/lib/init/register-builtin-tools.js +7 -7
  100. package/lib/init/register-builtin-tools.js.map +1 -1
  101. package/lib/init/register-typing-indicator.d.ts +9 -0
  102. package/lib/init/register-typing-indicator.d.ts.map +1 -0
  103. package/lib/init/register-typing-indicator.js +206 -0
  104. package/lib/init/register-typing-indicator.js.map +1 -0
  105. package/lib/init.d.ts.map +1 -1
  106. package/lib/init.js +2 -0
  107. package/lib/init.js.map +1 -1
  108. package/lib/mcp-client/connection.d.ts +2 -0
  109. package/lib/mcp-client/connection.d.ts.map +1 -1
  110. package/lib/mcp-client/connection.js +7 -0
  111. package/lib/mcp-client/connection.js.map +1 -1
  112. package/lib/mcp-client/index.d.ts +2 -0
  113. package/lib/mcp-client/index.d.ts.map +1 -1
  114. package/lib/mcp-client/index.js +19 -2
  115. package/lib/mcp-client/index.js.map +1 -1
  116. package/lib/monitoring/index.d.ts +79 -0
  117. package/lib/monitoring/index.d.ts.map +1 -0
  118. package/lib/monitoring/index.js +197 -0
  119. package/lib/monitoring/index.js.map +1 -0
  120. package/lib/monitoring/metrics.d.ts +240 -0
  121. package/lib/monitoring/metrics.d.ts.map +1 -0
  122. package/lib/monitoring/metrics.js +483 -0
  123. package/lib/monitoring/metrics.js.map +1 -0
  124. package/lib/orchestrator/agent-dispatcher.d.ts +170 -0
  125. package/lib/orchestrator/agent-dispatcher.d.ts.map +1 -0
  126. package/lib/orchestrator/agent-dispatcher.js +379 -0
  127. package/lib/orchestrator/agent-dispatcher.js.map +1 -0
  128. package/lib/orchestrator/hook-registry.d.ts.map +1 -1
  129. package/lib/orchestrator/hook-registry.js +2 -0
  130. package/lib/orchestrator/hook-registry.js.map +1 -1
  131. package/lib/orchestrator/index.d.ts +2 -0
  132. package/lib/orchestrator/index.d.ts.map +1 -1
  133. package/lib/orchestrator/index.js +2 -0
  134. package/lib/orchestrator/index.js.map +1 -1
  135. package/lib/orchestrator/mcp-lifecycle.d.ts +1 -1
  136. package/lib/orchestrator/mcp-lifecycle.d.ts.map +1 -1
  137. package/lib/orchestrator/mcp-lifecycle.js +2 -2
  138. package/lib/orchestrator/mcp-lifecycle.js.map +1 -1
  139. package/lib/orchestrator/mcp-registry.d.ts +8 -1
  140. package/lib/orchestrator/mcp-registry.d.ts.map +1 -1
  141. package/lib/orchestrator/mcp-registry.js +28 -5
  142. package/lib/orchestrator/mcp-registry.js.map +1 -1
  143. package/lib/orchestrator/task-queue.d.ts +147 -0
  144. package/lib/orchestrator/task-queue.d.ts.map +1 -0
  145. package/lib/orchestrator/task-queue.js +337 -0
  146. package/lib/orchestrator/task-queue.js.map +1 -0
  147. package/lib/orchestrator/tool-selection.d.ts.map +1 -1
  148. package/lib/orchestrator/tool-selection.js +3 -0
  149. package/lib/orchestrator/tool-selection.js.map +1 -1
  150. package/lib/orchestrator/types.d.ts +8 -0
  151. package/lib/orchestrator/types.d.ts.map +1 -1
  152. package/lib/plugin-ai-hook-bus.d.ts +4 -0
  153. package/lib/plugin-ai-hook-bus.d.ts.map +1 -0
  154. package/lib/plugin-ai-hook-bus.js +24 -0
  155. package/lib/plugin-ai-hook-bus.js.map +1 -0
  156. package/lib/security/anomaly-detection.d.ts +119 -0
  157. package/lib/security/anomaly-detection.d.ts.map +1 -0
  158. package/lib/security/anomaly-detection.js +305 -0
  159. package/lib/security/anomaly-detection.js.map +1 -0
  160. package/lib/security/audit-logger.d.ts +158 -0
  161. package/lib/security/audit-logger.d.ts.map +1 -0
  162. package/lib/security/audit-logger.js +379 -0
  163. package/lib/security/audit-logger.js.map +1 -0
  164. package/lib/security/bash-tool-context.d.ts +3 -3
  165. package/lib/security/bash-tool-context.d.ts.map +1 -1
  166. package/lib/security/budget-limiter.d.ts +156 -0
  167. package/lib/security/budget-limiter.d.ts.map +1 -0
  168. package/lib/security/budget-limiter.js +363 -0
  169. package/lib/security/budget-limiter.js.map +1 -0
  170. package/lib/security/dangerous-tool-policy.d.ts +17 -0
  171. package/lib/security/dangerous-tool-policy.d.ts.map +1 -0
  172. package/lib/security/dangerous-tool-policy.js +137 -0
  173. package/lib/security/dangerous-tool-policy.js.map +1 -0
  174. package/lib/security/exec-policy.d.ts +21 -12
  175. package/lib/security/exec-policy.d.ts.map +1 -1
  176. package/lib/security/exec-policy.js +198 -25
  177. package/lib/security/exec-policy.js.map +1 -1
  178. package/lib/security/file-policy.d.ts +0 -1
  179. package/lib/security/file-policy.d.ts.map +1 -1
  180. package/lib/security/file-policy.js +112 -14
  181. package/lib/security/file-policy.js.map +1 -1
  182. package/lib/security/file-role-policy.d.ts +119 -0
  183. package/lib/security/file-role-policy.d.ts.map +1 -0
  184. package/lib/security/file-role-policy.js +268 -0
  185. package/lib/security/file-role-policy.js.map +1 -0
  186. package/lib/security/index.d.ts +59 -0
  187. package/lib/security/index.d.ts.map +1 -1
  188. package/lib/security/index.js +68 -0
  189. package/lib/security/index.js.map +1 -1
  190. package/lib/security/network-policy.d.ts +94 -0
  191. package/lib/security/network-policy.d.ts.map +1 -0
  192. package/lib/security/network-policy.js +291 -0
  193. package/lib/security/network-policy.js.map +1 -0
  194. package/lib/security/owner-approve-always-store.d.ts +2 -0
  195. package/lib/security/owner-approve-always-store.d.ts.map +1 -1
  196. package/lib/security/owner-approve-always-store.js +37 -0
  197. package/lib/security/owner-approve-always-store.js.map +1 -1
  198. package/lib/security/sandbox-enhanced.d.ts +170 -0
  199. package/lib/security/sandbox-enhanced.d.ts.map +1 -0
  200. package/lib/security/sandbox-enhanced.js +630 -0
  201. package/lib/security/sandbox-enhanced.js.map +1 -0
  202. package/lib/security/sandbox.d.ts +104 -0
  203. package/lib/security/sandbox.d.ts.map +1 -0
  204. package/lib/security/sandbox.js +373 -0
  205. package/lib/security/sandbox.js.map +1 -0
  206. package/lib/security/security-config.example.d.ts +33 -0
  207. package/lib/security/security-config.example.d.ts.map +1 -0
  208. package/lib/security/security-config.example.js +166 -0
  209. package/lib/security/security-config.example.js.map +1 -0
  210. package/lib/subagent-goal-notify.d.ts +13 -0
  211. package/lib/subagent-goal-notify.d.ts.map +1 -0
  212. package/lib/subagent-goal-notify.js +32 -0
  213. package/lib/subagent-goal-notify.js.map +1 -0
  214. package/lib/subagent.d.ts +24 -0
  215. package/lib/subagent.d.ts.map +1 -1
  216. package/lib/subagent.js +98 -16
  217. package/lib/subagent.js.map +1 -1
  218. package/lib/typing-indicator/adapter-integration.d.ts +140 -0
  219. package/lib/typing-indicator/adapter-integration.d.ts.map +1 -0
  220. package/lib/typing-indicator/adapter-integration.js +473 -0
  221. package/lib/typing-indicator/adapter-integration.js.map +1 -0
  222. package/lib/typing-indicator/index.d.ts +170 -0
  223. package/lib/typing-indicator/index.d.ts.map +1 -0
  224. package/lib/typing-indicator/index.js +311 -0
  225. package/lib/typing-indicator/index.js.map +1 -0
  226. package/lib/typing-indicator/integration.d.ts +91 -0
  227. package/lib/typing-indicator/integration.d.ts.map +1 -0
  228. package/lib/typing-indicator/integration.js +219 -0
  229. package/lib/typing-indicator/integration.js.map +1 -0
  230. package/lib/zhin-agent/config.d.ts +20 -2
  231. package/lib/zhin-agent/config.d.ts.map +1 -1
  232. package/lib/zhin-agent/config.js +28 -10
  233. package/lib/zhin-agent/config.js.map +1 -1
  234. package/lib/zhin-agent/event-emitter.d.ts +11 -0
  235. package/lib/zhin-agent/event-emitter.d.ts.map +1 -0
  236. package/lib/zhin-agent/event-emitter.js +43 -0
  237. package/lib/zhin-agent/event-emitter.js.map +1 -0
  238. package/lib/zhin-agent/index.d.ts +9 -31
  239. package/lib/zhin-agent/index.d.ts.map +1 -1
  240. package/lib/zhin-agent/index.js +70 -665
  241. package/lib/zhin-agent/index.js.map +1 -1
  242. package/lib/zhin-agent/llm-runner.d.ts +16 -0
  243. package/lib/zhin-agent/llm-runner.d.ts.map +1 -0
  244. package/lib/zhin-agent/llm-runner.js +85 -0
  245. package/lib/zhin-agent/llm-runner.js.map +1 -0
  246. package/lib/zhin-agent/model-resolver.d.ts +9 -0
  247. package/lib/zhin-agent/model-resolver.d.ts.map +1 -0
  248. package/lib/zhin-agent/model-resolver.js +25 -0
  249. package/lib/zhin-agent/model-resolver.js.map +1 -0
  250. package/lib/zhin-agent/phase-trace.d.ts +12 -0
  251. package/lib/zhin-agent/phase-trace.d.ts.map +1 -0
  252. package/lib/zhin-agent/phase-trace.js +24 -0
  253. package/lib/zhin-agent/phase-trace.js.map +1 -0
  254. package/lib/zhin-agent/prompt-assembly.d.ts +22 -0
  255. package/lib/zhin-agent/prompt-assembly.d.ts.map +1 -0
  256. package/lib/zhin-agent/prompt-assembly.js +66 -0
  257. package/lib/zhin-agent/prompt-assembly.js.map +1 -0
  258. package/lib/zhin-agent/prompt-builder.d.ts +200 -0
  259. package/lib/zhin-agent/prompt-builder.d.ts.map +1 -0
  260. package/lib/zhin-agent/prompt-builder.js +574 -0
  261. package/lib/zhin-agent/prompt-builder.js.map +1 -0
  262. package/lib/zhin-agent/prompt-templates.d.ts +160 -0
  263. package/lib/zhin-agent/prompt-templates.d.ts.map +1 -0
  264. package/lib/zhin-agent/prompt-templates.js +436 -0
  265. package/lib/zhin-agent/prompt-templates.js.map +1 -0
  266. package/lib/zhin-agent/prompt.d.ts +18 -15
  267. package/lib/zhin-agent/prompt.d.ts.map +1 -1
  268. package/lib/zhin-agent/prompt.js +194 -111
  269. package/lib/zhin-agent/prompt.js.map +1 -1
  270. package/lib/zhin-agent/session-io.d.ts +10 -0
  271. package/lib/zhin-agent/session-io.d.ts.map +1 -0
  272. package/lib/zhin-agent/session-io.js +14 -0
  273. package/lib/zhin-agent/session-io.js.map +1 -0
  274. package/lib/zhin-agent/task-continuation.d.ts +144 -0
  275. package/lib/zhin-agent/task-continuation.d.ts.map +1 -0
  276. package/lib/zhin-agent/task-continuation.js +346 -0
  277. package/lib/zhin-agent/task-continuation.js.map +1 -0
  278. package/lib/zhin-agent/text-sanitize.d.ts +2 -5
  279. package/lib/zhin-agent/text-sanitize.d.ts.map +1 -1
  280. package/lib/zhin-agent/text-sanitize.js +2 -25
  281. package/lib/zhin-agent/text-sanitize.js.map +1 -1
  282. package/lib/zhin-agent/tool-calls-user-format.d.ts.map +1 -1
  283. package/lib/zhin-agent/tool-calls-user-format.js +12 -3
  284. package/lib/zhin-agent/tool-calls-user-format.js.map +1 -1
  285. package/lib/zhin-agent/tool-orchestration.d.ts +9 -0
  286. package/lib/zhin-agent/tool-orchestration.d.ts.map +1 -0
  287. package/lib/zhin-agent/tool-orchestration.js +68 -0
  288. package/lib/zhin-agent/tool-orchestration.js.map +1 -0
  289. package/lib/zhin-agent/tool-search-orchestrator.d.ts.map +1 -1
  290. package/lib/zhin-agent/tool-search-orchestrator.js +5 -2
  291. package/lib/zhin-agent/tool-search-orchestrator.js.map +1 -1
  292. package/lib/zhin-agent/turn-pipeline.d.ts +5 -0
  293. package/lib/zhin-agent/turn-pipeline.d.ts.map +1 -0
  294. package/lib/zhin-agent/turn-pipeline.js +541 -0
  295. package/lib/zhin-agent/turn-pipeline.js.map +1 -0
  296. package/lib/zhin-agent/turn-tracker.d.ts +17 -0
  297. package/lib/zhin-agent/turn-tracker.d.ts.map +1 -0
  298. package/lib/zhin-agent/turn-tracker.js +54 -0
  299. package/lib/zhin-agent/turn-tracker.js.map +1 -0
  300. package/lib/zhin-agent/web-search-locale-attach.d.ts +4 -0
  301. package/lib/zhin-agent/web-search-locale-attach.d.ts.map +1 -0
  302. package/lib/zhin-agent/web-search-locale-attach.js +19 -0
  303. package/lib/zhin-agent/web-search-locale-attach.js.map +1 -0
  304. package/lib/zhin-agent/zhin-agent-private.d.ts +66 -0
  305. package/lib/zhin-agent/zhin-agent-private.d.ts.map +1 -0
  306. package/lib/zhin-agent/zhin-agent-private.js +4 -0
  307. package/lib/zhin-agent/zhin-agent-private.js.map +1 -0
  308. package/package.json +5 -5
@@ -0,0 +1,160 @@
1
+ /**
2
+ * 提示词模板系统
3
+ *
4
+ * 提供:
5
+ * - 模板管理
6
+ * - 国际化支持
7
+ * - 智能裁剪
8
+ * - 版本管理
9
+ */
10
+ export interface PromptTemplate {
11
+ /** 模板 ID */
12
+ id: string;
13
+ /** 模板名称 */
14
+ name: string;
15
+ /** 模板描述 */
16
+ description: string;
17
+ /** 模板内容 */
18
+ content: string;
19
+ /** 模板变量 */
20
+ variables: Array<{
21
+ name: string;
22
+ description: string;
23
+ type: 'string' | 'number' | 'boolean' | 'array' | 'object';
24
+ required: boolean;
25
+ defaultValue?: unknown;
26
+ }>;
27
+ /** 模板标签 */
28
+ tags: string[];
29
+ /** 模板版本 */
30
+ version: string;
31
+ /** 创建时间 */
32
+ createdAt: number;
33
+ /** 更新时间 */
34
+ updatedAt: number;
35
+ /** 作者 */
36
+ author?: string;
37
+ /** 语言 */
38
+ language: string;
39
+ /** 是否启用 */
40
+ enabled: boolean;
41
+ }
42
+ export interface TemplateVersion {
43
+ /** 版本号 */
44
+ version: string;
45
+ /** 模板内容 */
46
+ content: string;
47
+ /** 变更说明 */
48
+ changelog?: string;
49
+ /** 创建时间 */
50
+ createdAt: number;
51
+ /** 作者 */
52
+ author?: string;
53
+ }
54
+ export interface I18nMessages {
55
+ [key: string]: string | I18nMessages;
56
+ }
57
+ export declare class PromptTemplateManager {
58
+ private templates;
59
+ private versions;
60
+ private i18nMessages;
61
+ private currentLanguage;
62
+ /**
63
+ * 添加模板
64
+ */
65
+ addTemplate(template: PromptTemplate): void;
66
+ /**
67
+ * 获取模板
68
+ */
69
+ getTemplate(id: string): PromptTemplate | undefined;
70
+ /**
71
+ * 获取所有模板
72
+ */
73
+ getAllTemplates(): PromptTemplate[];
74
+ /**
75
+ * 按标签获取模板
76
+ */
77
+ getTemplatesByTag(tag: string): PromptTemplate[];
78
+ /**
79
+ * 按语言获取模板
80
+ */
81
+ getTemplatesByLanguage(language: string): PromptTemplate[];
82
+ /**
83
+ * 更新模板
84
+ */
85
+ updateTemplate(id: string, updates: Partial<PromptTemplate>): boolean;
86
+ /**
87
+ * 删除模板
88
+ */
89
+ deleteTemplate(id: string): boolean;
90
+ /**
91
+ * 获取模板版本历史
92
+ */
93
+ getTemplateVersions(id: string): TemplateVersion[];
94
+ /**
95
+ * 获取指定版本的模板
96
+ */
97
+ getTemplateVersion(id: string, version: string): TemplateVersion | undefined;
98
+ /**
99
+ * 渲染模板
100
+ */
101
+ render(templateId: string, variables?: Record<string, unknown>): string;
102
+ /**
103
+ * 设置当前语言
104
+ */
105
+ setLanguage(language: string): void;
106
+ /**
107
+ * 获取当前语言
108
+ */
109
+ getLanguage(): string;
110
+ /**
111
+ * 添加国际化消息
112
+ */
113
+ addI18nMessages(language: string, messages: I18nMessages): void;
114
+ /**
115
+ * 获取国际化消息
116
+ */
117
+ getI18nMessage(key: string, language?: string): string | undefined;
118
+ /**
119
+ * 渲染国际化模板
120
+ */
121
+ renderI18n(templateId: string, variables?: Record<string, unknown>, language?: string): string;
122
+ /**
123
+ * 验证模板变量
124
+ */
125
+ validateVariables(templateId: string, variables: Record<string, unknown>): {
126
+ valid: boolean;
127
+ missing: string[];
128
+ invalid: Array<{
129
+ name: string;
130
+ expected: string;
131
+ actual: string;
132
+ }>;
133
+ };
134
+ /**
135
+ * 智能裁剪模板内容
136
+ */
137
+ smartTrim(content: string, maxLength: number, options?: {
138
+ preserveStructure?: boolean;
139
+ preserveCodeBlocks?: boolean;
140
+ preserveLists?: boolean;
141
+ }): string;
142
+ /**
143
+ * 导出模板
144
+ */
145
+ exportTemplate(id: string): string;
146
+ /**
147
+ * 导入模板
148
+ */
149
+ importTemplate(json: string): PromptTemplate;
150
+ }
151
+ export declare const DEFAULT_TEMPLATES: PromptTemplate[];
152
+ /**
153
+ * 获取全局模板管理器
154
+ */
155
+ export declare function getTemplateManager(): PromptTemplateManager;
156
+ /**
157
+ * 初始化模板管理器
158
+ */
159
+ export declare function initTemplateManager(): PromptTemplateManager;
160
+ //# sourceMappingURL=prompt-templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-templates.d.ts","sourceRoot":"","sources":["../../src/zhin-agent/prompt-templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,436 @@
1
+ /**
2
+ * 提示词模板系统
3
+ *
4
+ * 提供:
5
+ * - 模板管理
6
+ * - 国际化支持
7
+ * - 智能裁剪
8
+ * - 版本管理
9
+ */
10
+ // ── 模板管理器类 ──────────────────────────────────────────────────────
11
+ export class PromptTemplateManager {
12
+ templates = new Map();
13
+ versions = new Map();
14
+ i18nMessages = new Map();
15
+ currentLanguage = 'en';
16
+ /**
17
+ * 添加模板
18
+ */
19
+ addTemplate(template) {
20
+ this.templates.set(template.id, template);
21
+ // 初始化版本历史
22
+ if (!this.versions.has(template.id)) {
23
+ this.versions.set(template.id, []);
24
+ }
25
+ // 添加当前版本
26
+ this.versions.get(template.id).push({
27
+ version: template.version,
28
+ content: template.content,
29
+ createdAt: Date.now(),
30
+ author: template.author,
31
+ });
32
+ }
33
+ /**
34
+ * 获取模板
35
+ */
36
+ getTemplate(id) {
37
+ return this.templates.get(id);
38
+ }
39
+ /**
40
+ * 获取所有模板
41
+ */
42
+ getAllTemplates() {
43
+ return Array.from(this.templates.values());
44
+ }
45
+ /**
46
+ * 按标签获取模板
47
+ */
48
+ getTemplatesByTag(tag) {
49
+ return Array.from(this.templates.values()).filter(t => t.tags.includes(tag));
50
+ }
51
+ /**
52
+ * 按语言获取模板
53
+ */
54
+ getTemplatesByLanguage(language) {
55
+ return Array.from(this.templates.values()).filter(t => t.language === language);
56
+ }
57
+ /**
58
+ * 更新模板
59
+ */
60
+ updateTemplate(id, updates) {
61
+ const template = this.templates.get(id);
62
+ if (!template) {
63
+ return false;
64
+ }
65
+ const updatedTemplate = { ...template, ...updates, updatedAt: Date.now() };
66
+ this.templates.set(id, updatedTemplate);
67
+ // 添加新版本
68
+ if (updates.content && updates.content !== template.content) {
69
+ const versions = this.versions.get(id) || [];
70
+ versions.push({
71
+ version: updates.version || template.version,
72
+ content: updates.content,
73
+ createdAt: Date.now(),
74
+ author: updates.author || template.author,
75
+ });
76
+ this.versions.set(id, versions);
77
+ }
78
+ return true;
79
+ }
80
+ /**
81
+ * 删除模板
82
+ */
83
+ deleteTemplate(id) {
84
+ const deleted = this.templates.delete(id);
85
+ if (deleted) {
86
+ this.versions.delete(id);
87
+ }
88
+ return deleted;
89
+ }
90
+ /**
91
+ * 获取模板版本历史
92
+ */
93
+ getTemplateVersions(id) {
94
+ return this.versions.get(id) || [];
95
+ }
96
+ /**
97
+ * 获取指定版本的模板
98
+ */
99
+ getTemplateVersion(id, version) {
100
+ const versions = this.versions.get(id) || [];
101
+ return versions.find(v => v.version === version);
102
+ }
103
+ /**
104
+ * 渲染模板
105
+ */
106
+ render(templateId, variables = {}) {
107
+ const template = this.templates.get(templateId);
108
+ if (!template) {
109
+ throw new Error(`Template ${templateId} not found`);
110
+ }
111
+ let content = template.content;
112
+ // 替换变量
113
+ for (const [key, value] of Object.entries(variables)) {
114
+ const placeholder = `{{${key}}}`;
115
+ content = content.replace(new RegExp(placeholder, 'g'), String(value));
116
+ }
117
+ // 替换默认值
118
+ for (const variable of template.variables) {
119
+ if (variable.defaultValue !== undefined && !variables[variable.name]) {
120
+ const placeholder = `{{${variable.name}}}`;
121
+ content = content.replace(new RegExp(placeholder, 'g'), String(variable.defaultValue));
122
+ }
123
+ }
124
+ return content;
125
+ }
126
+ /**
127
+ * 设置当前语言
128
+ */
129
+ setLanguage(language) {
130
+ this.currentLanguage = language;
131
+ }
132
+ /**
133
+ * 获取当前语言
134
+ */
135
+ getLanguage() {
136
+ return this.currentLanguage;
137
+ }
138
+ /**
139
+ * 添加国际化消息
140
+ */
141
+ addI18nMessages(language, messages) {
142
+ this.i18nMessages.set(language, messages);
143
+ }
144
+ /**
145
+ * 获取国际化消息
146
+ */
147
+ getI18nMessage(key, language) {
148
+ const lang = language || this.currentLanguage;
149
+ const messages = this.i18nMessages.get(lang);
150
+ if (!messages) {
151
+ return undefined;
152
+ }
153
+ // 支持嵌套键(如 "a.b.c")
154
+ const keys = key.split('.');
155
+ let current = messages;
156
+ for (const k of keys) {
157
+ if (typeof current !== 'object' || current === null) {
158
+ return undefined;
159
+ }
160
+ current = current[k];
161
+ }
162
+ return typeof current === 'string' ? current : undefined;
163
+ }
164
+ /**
165
+ * 渲染国际化模板
166
+ */
167
+ renderI18n(templateId, variables = {}, language) {
168
+ const template = this.templates.get(templateId);
169
+ if (!template) {
170
+ throw new Error(`Template ${templateId} not found`);
171
+ }
172
+ const lang = language || this.currentLanguage;
173
+ let content = template.content;
174
+ // 替换国际化消息
175
+ const i18nPattern = /\{\{i18n:([^}]+)\}\}/g;
176
+ content = content.replace(i18nPattern, (match, key) => {
177
+ const message = this.getI18nMessage(key.trim(), lang);
178
+ return message || match;
179
+ });
180
+ // 替换变量
181
+ for (const [key, value] of Object.entries(variables)) {
182
+ const placeholder = `{{${key}}}`;
183
+ content = content.replace(new RegExp(placeholder, 'g'), String(value));
184
+ }
185
+ return content;
186
+ }
187
+ /**
188
+ * 验证模板变量
189
+ */
190
+ validateVariables(templateId, variables) {
191
+ const template = this.templates.get(templateId);
192
+ if (!template) {
193
+ throw new Error(`Template ${templateId} not found`);
194
+ }
195
+ const missing = [];
196
+ const invalid = [];
197
+ for (const variable of template.variables) {
198
+ const value = variables[variable.name];
199
+ // 检查必需变量
200
+ if (variable.required && (value === undefined || value === null)) {
201
+ missing.push(variable.name);
202
+ continue;
203
+ }
204
+ // 检查类型
205
+ if (value !== undefined && value !== null) {
206
+ const actualType = Array.isArray(value) ? 'array' : typeof value;
207
+ if (actualType !== variable.type) {
208
+ invalid.push({
209
+ name: variable.name,
210
+ expected: variable.type,
211
+ actual: actualType,
212
+ });
213
+ }
214
+ }
215
+ }
216
+ return {
217
+ valid: missing.length === 0 && invalid.length === 0,
218
+ missing,
219
+ invalid,
220
+ };
221
+ }
222
+ /**
223
+ * 智能裁剪模板内容
224
+ */
225
+ smartTrim(content, maxLength, options) {
226
+ if (content.length <= maxLength) {
227
+ return content;
228
+ }
229
+ const preserveStructure = options?.preserveStructure ?? true;
230
+ const preserveCodeBlocks = options?.preserveCodeBlocks ?? true;
231
+ const preserveLists = options?.preserveLists ?? true;
232
+ // 分割内容为段落
233
+ const paragraphs = content.split(/\n\n+/);
234
+ let result = '';
235
+ let currentLength = 0;
236
+ for (const paragraph of paragraphs) {
237
+ const paragraphLength = paragraph.length + 2; // +2 for \n\n
238
+ // 检查是否超过最大长度
239
+ if (currentLength + paragraphLength > maxLength) {
240
+ // 如果保留结构,尝试保留完整的段落
241
+ if (preserveStructure) {
242
+ // 检查是否是代码块
243
+ if (preserveCodeBlocks && paragraph.startsWith('```')) {
244
+ // 尝试找到代码块的结束
245
+ const codeBlockEnd = content.indexOf('```', content.indexOf(paragraph) + 3);
246
+ if (codeBlockEnd !== -1) {
247
+ const fullCodeBlock = content.substring(content.indexOf(paragraph), codeBlockEnd + 3);
248
+ if (currentLength + fullCodeBlock.length <= maxLength) {
249
+ result += fullCodeBlock + '\n\n';
250
+ currentLength += fullCodeBlock.length + 2;
251
+ continue;
252
+ }
253
+ }
254
+ }
255
+ // 检查是否是列表
256
+ if (preserveLists && (paragraph.startsWith('- ') || paragraph.startsWith('* ') || /^\d+\./.test(paragraph))) {
257
+ // 尝试保留完整的列表
258
+ const listItems = paragraph.split('\n');
259
+ let listContent = '';
260
+ for (const item of listItems) {
261
+ if (currentLength + listContent.length + item.length + 1 <= maxLength) {
262
+ listContent += item + '\n';
263
+ }
264
+ else {
265
+ break;
266
+ }
267
+ }
268
+ if (listContent) {
269
+ result += listContent.trim() + '\n\n';
270
+ currentLength += listContent.length + 2;
271
+ continue;
272
+ }
273
+ }
274
+ }
275
+ // 截断段落
276
+ const remainingLength = maxLength - currentLength - 5; // 5 for "..."
277
+ if (remainingLength > 0) {
278
+ result += paragraph.substring(0, remainingLength) + '...\n\n';
279
+ }
280
+ break;
281
+ }
282
+ result += paragraph + '\n\n';
283
+ currentLength += paragraphLength;
284
+ }
285
+ return result.trim();
286
+ }
287
+ /**
288
+ * 导出模板
289
+ */
290
+ exportTemplate(id) {
291
+ const template = this.templates.get(id);
292
+ if (!template) {
293
+ throw new Error(`Template ${id} not found`);
294
+ }
295
+ return JSON.stringify(template, null, 2);
296
+ }
297
+ /**
298
+ * 导入模板
299
+ */
300
+ importTemplate(json) {
301
+ const template = JSON.parse(json);
302
+ // 验证必需字段
303
+ if (!template.id || !template.name || !template.content) {
304
+ throw new Error('Invalid template format');
305
+ }
306
+ this.addTemplate(template);
307
+ return template;
308
+ }
309
+ }
310
+ // ── 预定义模板 ────────────────────────────────────────────────────────
311
+ export const DEFAULT_TEMPLATES = [
312
+ {
313
+ id: 'main-agent',
314
+ name: 'Main Agent Template',
315
+ description: 'Main agent system prompt template',
316
+ content: `You are a helpful AI assistant.
317
+
318
+ {{#if persona}}
319
+ Persona: {{persona}}
320
+ {{/if}}
321
+
322
+ {{#if context}}
323
+ Context: {{context}}
324
+ {{/if}}
325
+
326
+ {{#if tools}}
327
+ Available tools: {{tools}}
328
+ {{/if}}
329
+
330
+ {{#if safety}}
331
+ Safety rules:
332
+ {{safety}}
333
+ {{/if}}`,
334
+ variables: [
335
+ { name: 'persona', description: 'Agent persona', type: 'string', required: false },
336
+ { name: 'context', description: 'Context information', type: 'string', required: false },
337
+ { name: 'tools', description: 'Available tools', type: 'string', required: false },
338
+ { name: 'safety', description: 'Safety rules', type: 'string', required: false },
339
+ ],
340
+ tags: ['main', 'agent', 'system'],
341
+ version: '1.0.0',
342
+ createdAt: Date.now(),
343
+ updatedAt: Date.now(),
344
+ language: 'en',
345
+ enabled: true,
346
+ },
347
+ {
348
+ id: 'sub-agent',
349
+ name: 'Sub-agent Template',
350
+ description: 'Sub-agent system prompt template',
351
+ content: `You are a sub-agent spawned by the main agent.
352
+
353
+ ## Your task
354
+ {{task}}
355
+
356
+ ## Rules
357
+ 1. Focus only on the assigned task
358
+ 2. Your final reply will be reported to the main agent
359
+ 3. Do not start new conversations or take on extra tasks
360
+ 4. Keep replies concise but informative
361
+
362
+ ## You may
363
+ {{permissions}}
364
+
365
+ ## You must not
366
+ {{restrictions}}`,
367
+ variables: [
368
+ { name: 'task', description: 'Task description', type: 'string', required: true },
369
+ { name: 'permissions', description: 'Allowed actions', type: 'string', required: false },
370
+ { name: 'restrictions', description: 'Restricted actions', type: 'string', required: false },
371
+ ],
372
+ tags: ['sub-agent', 'task'],
373
+ version: '1.0.0',
374
+ createdAt: Date.now(),
375
+ updatedAt: Date.now(),
376
+ language: 'en',
377
+ enabled: true,
378
+ },
379
+ {
380
+ id: 'worker-agent',
381
+ name: 'Worker Agent Template',
382
+ description: 'Worker agent system prompt template',
383
+ content: `You are a worker agent executing a delegated task.
384
+
385
+ ## Task
386
+ {{task}}
387
+
388
+ ## Goal
389
+ {{goal}}
390
+
391
+ ## Tools
392
+ {{tools}}
393
+
394
+ ## Constraints
395
+ {{constraints}}`,
396
+ variables: [
397
+ { name: 'task', description: 'Task description', type: 'string', required: true },
398
+ { name: 'goal', description: 'Task goal', type: 'string', required: true },
399
+ { name: 'tools', description: 'Available tools', type: 'string', required: false },
400
+ { name: 'constraints', description: 'Task constraints', type: 'string', required: false },
401
+ ],
402
+ tags: ['worker', 'task'],
403
+ version: '1.0.0',
404
+ createdAt: Date.now(),
405
+ updatedAt: Date.now(),
406
+ language: 'en',
407
+ enabled: true,
408
+ },
409
+ ];
410
+ // ── 全局实例 ──────────────────────────────────────────────────────────
411
+ let globalTemplateManager = null;
412
+ /**
413
+ * 获取全局模板管理器
414
+ */
415
+ export function getTemplateManager() {
416
+ if (!globalTemplateManager) {
417
+ globalTemplateManager = new PromptTemplateManager();
418
+ // 添加预定义模板
419
+ for (const template of DEFAULT_TEMPLATES) {
420
+ globalTemplateManager.addTemplate(template);
421
+ }
422
+ }
423
+ return globalTemplateManager;
424
+ }
425
+ /**
426
+ * 初始化模板管理器
427
+ */
428
+ export function initTemplateManager() {
429
+ globalTemplateManager = new PromptTemplateManager();
430
+ // 添加预定义模板
431
+ for (const template of DEFAULT_TEMPLATES) {
432
+ globalTemplateManager.addTemplate(template);
433
+ }
434
+ return globalTemplateManager;
435
+ }
436
+ //# sourceMappingURL=prompt-templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-templates.js","sourceRoot":"","sources":["../../src/zhin-agent/prompt-templates.ts"],"names":[],"mappings":"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"}
@@ -1,27 +1,16 @@
1
1
  /**
2
2
  * ZhinAgent System Prompt builder + message helpers
3
3
  *
4
- * 参考 Claude Code 的结构化提示词设计(vendor/claude-code/src/constants/prompts.ts),
5
- * 按职责分为独立 section,每个 section 有明确标题和层级关系:
6
- *
7
- * §1 Identity & Environment — 身份 + 运行环境元数据
8
- * §2 System — 系统行为约束(工具结果、上下文压缩、安全)
9
- * §3 Discipline — 固定纪律(不编造、诚实失败、简洁)
10
- * §4 Doing Tasks — 任务执行准则(工具优先、代码风格、安全编码)
11
- * §5 Executing Actions — 操作安全与可逆性(确认策略、破坏性操作)
12
- * §6 Using Tools — 工具使用指南(专用工具优先、并行调用、技能激活)
13
- * §7 Communication — 沟通风格(简洁、结构化、语言跟随用户)
14
- * §8 Skills — 可用技能列表
15
- * §9 Active Skills — 已激活技能上下文
16
- * §10 Memory — 长期记忆 + 当日笔记
17
- * §11 Bootstrap — 额外上下文注入
4
+ * 常驻提示词保持短小:身份由 persona 表达,固定段只保留上下文、风格、
5
+ * 工具、安全,以及按需注入的平台、技能、记忆和 Bootstrap 上下文。
18
6
  */
19
7
  import type { ContentPart } from '@zhin.js/ai';
20
8
  import type { SkillRegistry } from '../orchestrator/skill-registry.js';
21
9
  import type { ToolContext } from '../orchestrator/types.js';
22
10
  import type { ZhinAgentConfig } from './config.js';
23
11
  import type { ChatMessage } from '@zhin.js/ai';
24
- export declare const FIXED_DISCIPLINE_RULES: readonly ["Never claim to have completed an action unless a tool was actually called and returned a confirmed result.", "Never fabricate tool outputs, system states, or success confirmations.", "If a capability is unavailable, state it honestly and suggest the closest valid alternative.", "Lead with action or answer; avoid unnecessary preambles and filler."];
12
+ import { type FileRole } from '../security/file-role-policy.js';
13
+ export declare const FIXED_DISCIPLINE_RULES: readonly ["Never claim actions, results, or system state unless confirmed by tool output.", "If a capability is unavailable, state it honestly and suggest the closest valid alternative.", "Lead with the answer or result; avoid unnecessary preambles and filler."];
25
14
  export declare function contentToText(c: string | ContentPart[] | ContentPart | null | undefined): string;
26
15
  export declare function buildUserMessageWithHistory(history: ChatMessage[], currentContent: string): string;
27
16
  export declare function buildEnhancedPersona(config: Required<ZhinAgentConfig>, profileSummary: string, toneHint: string): string;
@@ -36,6 +25,8 @@ export interface RichSystemPromptContext {
36
25
  toolSearchDeferredStats?: string;
37
26
  /** Per-platform markdown from AgentPromptContributor (§6c). */
38
27
  platformSections?: string;
28
+ /** 当前用户的文件操作角色,用于提示词注入 */
29
+ fileRole?: FileRole;
39
30
  }
40
31
  /** 单段字符数统计(日志 / Harness debug;与 buildRichSystemPrompt 分段一致) */
41
32
  export interface PromptSectionDebugInfo {
@@ -48,6 +39,18 @@ export interface PromptSectionDebugInfo {
48
39
  */
49
40
  export declare function describePromptSectionsForDebug(ctx: RichSystemPromptContext): PromptSectionDebugInfo[];
50
41
  export declare function buildRichSystemPrompt(ctx: RichSystemPromptContext): string;
42
+ /**
43
+ * 使用 PromptBuilder 构建系统提示词
44
+ *
45
+ * 这是一个更现代的提示词构建方式,支持:
46
+ * - 分层提示词结构
47
+ * - 优先级排序
48
+ * - 字符数截断
49
+ * - 安全规则嵌入
50
+ */
51
+ export declare function buildRichSystemPromptWithBuilder(ctx: RichSystemPromptContext): string;
51
52
  /** Vision / lite paths: persona + optional platform + context hint. */
52
53
  export declare function buildLiteSystemPromptWithPlatform(personaBlock: string, platformSections?: string, contextHint?: string): string;
54
+ /** 本轮有引用消息时追加说明;不写入常驻 system 模板,避免每轮无引用也膨胀 */
55
+ export declare function appendQuoteContextSystemHint(prompt: string, context?: ToolContext): string;
53
56
  //# sourceMappingURL=prompt.d.ts.map