@ai-zen/cli 1.0.0-alpha.20 → 1.0.0-alpha.22

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 (249) hide show
  1. package/CHANGELOG.md +158 -0
  2. package/README.md +43 -17
  3. package/README.zh.md +43 -17
  4. package/dist/agent-creator.d.ts.map +1 -1
  5. package/dist/agent-creator.js +32 -10
  6. package/dist/agent-creator.js.map +1 -1
  7. package/dist/agent-switch.d.ts +61 -0
  8. package/dist/agent-switch.d.ts.map +1 -0
  9. package/dist/agent-switch.js +83 -0
  10. package/dist/agent-switch.js.map +1 -0
  11. package/dist/agents-store.d.ts +6 -1
  12. package/dist/agents-store.d.ts.map +1 -1
  13. package/dist/agents-store.js +6 -1
  14. package/dist/agents-store.js.map +1 -1
  15. package/dist/auto-migrate-confirm.d.ts.map +1 -1
  16. package/dist/auto-migrate-confirm.js +2 -1
  17. package/dist/auto-migrate-confirm.js.map +1 -1
  18. package/dist/config-editor.d.ts +9 -1
  19. package/dist/config-editor.d.ts.map +1 -1
  20. package/dist/config-editor.js +30 -19
  21. package/dist/config-editor.js.map +1 -1
  22. package/dist/config.d.ts +1 -1
  23. package/dist/config.d.ts.map +1 -1
  24. package/dist/config.js +29 -13
  25. package/dist/config.js.map +1 -1
  26. package/dist/conversation-commands/registry.d.ts +123 -4
  27. package/dist/conversation-commands/registry.d.ts.map +1 -1
  28. package/dist/conversation-commands/registry.js +92 -17
  29. package/dist/conversation-commands/registry.js.map +1 -1
  30. package/dist/conversation-persist-plugin.d.ts.map +1 -1
  31. package/dist/conversation-persist-plugin.js +6 -14
  32. package/dist/conversation-persist-plugin.js.map +1 -1
  33. package/dist/conversation-repository.d.ts +68 -14
  34. package/dist/conversation-repository.d.ts.map +1 -1
  35. package/dist/conversation-repository.js +81 -23
  36. package/dist/conversation-repository.js.map +1 -1
  37. package/dist/cwd-tracker-plugin.d.ts.map +1 -1
  38. package/dist/cwd-tracker-plugin.js +6 -2
  39. package/dist/cwd-tracker-plugin.js.map +1 -1
  40. package/dist/format-time.d.ts +17 -6
  41. package/dist/format-time.d.ts.map +1 -1
  42. package/dist/format-time.js +32 -14
  43. package/dist/format-time.js.map +1 -1
  44. package/dist/handoff-service.d.ts.map +1 -1
  45. package/dist/handoff-service.js +22 -19
  46. package/dist/handoff-service.js.map +1 -1
  47. package/dist/hook.d.ts.map +1 -1
  48. package/dist/hook.js +69 -15
  49. package/dist/hook.js.map +1 -1
  50. package/dist/i18n/en-wizard.d.ts +8 -0
  51. package/dist/i18n/en-wizard.d.ts.map +1 -0
  52. package/dist/i18n/en-wizard.js +290 -0
  53. package/dist/i18n/en-wizard.js.map +1 -0
  54. package/dist/i18n/en.d.ts +7 -0
  55. package/dist/i18n/en.d.ts.map +1 -0
  56. package/dist/i18n/en.js +224 -0
  57. package/dist/i18n/en.js.map +1 -0
  58. package/dist/i18n/index.d.ts +57 -0
  59. package/dist/i18n/index.d.ts.map +1 -0
  60. package/dist/i18n/index.js +109 -0
  61. package/dist/i18n/index.js.map +1 -0
  62. package/dist/i18n/preferences.d.ts +34 -0
  63. package/dist/i18n/preferences.d.ts.map +1 -0
  64. package/dist/i18n/preferences.js +69 -0
  65. package/dist/i18n/preferences.js.map +1 -0
  66. package/dist/i18n/zh-wizard.d.ts +11 -0
  67. package/dist/i18n/zh-wizard.d.ts.map +1 -0
  68. package/dist/i18n/zh-wizard.js +293 -0
  69. package/dist/i18n/zh-wizard.js.map +1 -0
  70. package/dist/i18n/zh.d.ts +10 -0
  71. package/dist/i18n/zh.d.ts.map +1 -0
  72. package/dist/i18n/zh.js +228 -0
  73. package/dist/i18n/zh.js.map +1 -0
  74. package/dist/index.js +41 -23
  75. package/dist/index.js.map +1 -1
  76. package/dist/mcp-command.d.ts +32 -0
  77. package/dist/mcp-command.d.ts.map +1 -0
  78. package/dist/mcp-command.js +37 -0
  79. package/dist/mcp-command.js.map +1 -0
  80. package/dist/mode.d.ts +31 -4
  81. package/dist/mode.d.ts.map +1 -1
  82. package/dist/mode.js +42 -7
  83. package/dist/mode.js.map +1 -1
  84. package/dist/model-switch.d.ts.map +1 -1
  85. package/dist/model-switch.js +5 -4
  86. package/dist/model-switch.js.map +1 -1
  87. package/dist/reasoning-effort.d.ts +23 -4
  88. package/dist/reasoning-effort.d.ts.map +1 -1
  89. package/dist/reasoning-effort.js +51 -24
  90. package/dist/reasoning-effort.js.map +1 -1
  91. package/dist/sdk-log.d.ts +23 -16
  92. package/dist/sdk-log.d.ts.map +1 -1
  93. package/dist/sdk-log.js +43 -19
  94. package/dist/sdk-log.js.map +1 -1
  95. package/dist/stdio-runner.d.ts.map +1 -1
  96. package/dist/stdio-runner.js +19 -19
  97. package/dist/stdio-runner.js.map +1 -1
  98. package/dist/tui/chat-session.d.ts +27 -0
  99. package/dist/tui/chat-session.d.ts.map +1 -1
  100. package/dist/tui/chat-session.js +120 -28
  101. package/dist/tui/chat-session.js.map +1 -1
  102. package/dist/tui/components.d.ts +43 -2
  103. package/dist/tui/components.d.ts.map +1 -1
  104. package/dist/tui/components.js +97 -4
  105. package/dist/tui/components.js.map +1 -1
  106. package/dist/tui/config-wizard/detail.d.ts +12 -6
  107. package/dist/tui/config-wizard/detail.d.ts.map +1 -1
  108. package/dist/tui/config-wizard/detail.js +33 -32
  109. package/dist/tui/config-wizard/detail.js.map +1 -1
  110. package/dist/tui/config-wizard/engine.d.ts.map +1 -1
  111. package/dist/tui/config-wizard/engine.js +26 -20
  112. package/dist/tui/config-wizard/engine.js.map +1 -1
  113. package/dist/tui/config-wizard/fields.d.ts.map +1 -1
  114. package/dist/tui/config-wizard/fields.js +176 -164
  115. package/dist/tui/config-wizard/fields.js.map +1 -1
  116. package/dist/tui/config-wizard/kv-editor.d.ts.map +1 -1
  117. package/dist/tui/config-wizard/kv-editor.js +9 -5
  118. package/dist/tui/config-wizard/kv-editor.js.map +1 -1
  119. package/dist/tui/config-wizard/list.d.ts.map +1 -1
  120. package/dist/tui/config-wizard/list.js +2 -1
  121. package/dist/tui/config-wizard/list.js.map +1 -1
  122. package/dist/tui/config-wizard/mcp-helpers.d.ts.map +1 -1
  123. package/dist/tui/config-wizard/mcp-helpers.js +4 -3
  124. package/dist/tui/config-wizard/mcp-helpers.js.map +1 -1
  125. package/dist/tui/config-wizard/menu.d.ts.map +1 -1
  126. package/dist/tui/config-wizard/menu.js +32 -19
  127. package/dist/tui/config-wizard/menu.js.map +1 -1
  128. package/dist/tui/config-wizard/prompt-editor.d.ts.map +1 -1
  129. package/dist/tui/config-wizard/prompt-editor.js +4 -3
  130. package/dist/tui/config-wizard/prompt-editor.js.map +1 -1
  131. package/dist/tui/config-wizard/prompt.d.ts.map +1 -1
  132. package/dist/tui/config-wizard/prompt.js +8 -7
  133. package/dist/tui/config-wizard/prompt.js.map +1 -1
  134. package/dist/tui/config-wizard/step-agents.d.ts.map +1 -1
  135. package/dist/tui/config-wizard/step-agents.js +29 -20
  136. package/dist/tui/config-wizard/step-agents.js.map +1 -1
  137. package/dist/tui/config-wizard/step-defaults.d.ts.map +1 -1
  138. package/dist/tui/config-wizard/step-defaults.js +21 -17
  139. package/dist/tui/config-wizard/step-defaults.js.map +1 -1
  140. package/dist/tui/config-wizard/step-endpoints.d.ts.map +1 -1
  141. package/dist/tui/config-wizard/step-endpoints.js +16 -6
  142. package/dist/tui/config-wizard/step-endpoints.js.map +1 -1
  143. package/dist/tui/config-wizard/step-mcp.d.ts.map +1 -1
  144. package/dist/tui/config-wizard/step-mcp.js +17 -19
  145. package/dist/tui/config-wizard/step-mcp.js.map +1 -1
  146. package/dist/tui/config-wizard/step-models.d.ts.map +1 -1
  147. package/dist/tui/config-wizard/step-models.js +41 -26
  148. package/dist/tui/config-wizard/step-models.js.map +1 -1
  149. package/dist/tui/config-wizard/step-new-endpoint.d.ts.map +1 -1
  150. package/dist/tui/config-wizard/step-new-endpoint.js +16 -12
  151. package/dist/tui/config-wizard/step-new-endpoint.js.map +1 -1
  152. package/dist/tui/config-wizard/step-simple.d.ts.map +1 -1
  153. package/dist/tui/config-wizard/step-simple.js +18 -17
  154. package/dist/tui/config-wizard/step-simple.js.map +1 -1
  155. package/dist/tui/index.d.ts +17 -1
  156. package/dist/tui/index.d.ts.map +1 -1
  157. package/dist/tui/index.js +25 -14
  158. package/dist/tui/index.js.map +1 -1
  159. package/dist/tui/input-editing.d.ts +4 -1
  160. package/dist/tui/input-editing.d.ts.map +1 -1
  161. package/dist/tui/input-editing.js +7 -3
  162. package/dist/tui/input-editing.js.map +1 -1
  163. package/dist/tui/phase.d.ts +64 -0
  164. package/dist/tui/phase.d.ts.map +1 -0
  165. package/dist/tui/phase.js +112 -0
  166. package/dist/tui/phase.js.map +1 -0
  167. package/dist/tui/screens/chat-commands.d.ts +54 -3
  168. package/dist/tui/screens/chat-commands.d.ts.map +1 -1
  169. package/dist/tui/screens/chat-commands.js +469 -330
  170. package/dist/tui/screens/chat-commands.js.map +1 -1
  171. package/dist/tui/screens/chat.d.ts +8 -0
  172. package/dist/tui/screens/chat.d.ts.map +1 -1
  173. package/dist/tui/screens/chat.js +206 -405
  174. package/dist/tui/screens/chat.js.map +1 -1
  175. package/dist/tui/screens/common-keys.d.ts +36 -0
  176. package/dist/tui/screens/common-keys.d.ts.map +1 -0
  177. package/dist/tui/screens/common-keys.js +67 -0
  178. package/dist/tui/screens/common-keys.js.map +1 -0
  179. package/dist/tui/screens/handoff-choice.d.ts.map +1 -1
  180. package/dist/tui/screens/handoff-choice.js +4 -3
  181. package/dist/tui/screens/handoff-choice.js.map +1 -1
  182. package/dist/tui/screens/index.d.ts +1 -1
  183. package/dist/tui/screens/index.d.ts.map +1 -1
  184. package/dist/tui/screens/index.js +1 -1
  185. package/dist/tui/screens/index.js.map +1 -1
  186. package/dist/tui/screens/input-row.d.ts +64 -0
  187. package/dist/tui/screens/input-row.d.ts.map +1 -0
  188. package/dist/tui/screens/input-row.js +67 -0
  189. package/dist/tui/screens/input-row.js.map +1 -0
  190. package/dist/tui/screens/input.d.ts +11 -1
  191. package/dist/tui/screens/input.d.ts.map +1 -1
  192. package/dist/tui/screens/input.js +21 -12
  193. package/dist/tui/screens/input.js.map +1 -1
  194. package/dist/tui/screens/layout.d.ts +8 -0
  195. package/dist/tui/screens/layout.d.ts.map +1 -1
  196. package/dist/tui/screens/layout.js +6 -2
  197. package/dist/tui/screens/layout.js.map +1 -1
  198. package/dist/tui/screens/lines.d.ts.map +1 -1
  199. package/dist/tui/screens/lines.js +6 -6
  200. package/dist/tui/screens/lines.js.map +1 -1
  201. package/dist/tui/screens/messages-view.d.ts.map +1 -1
  202. package/dist/tui/screens/messages-view.js +5 -4
  203. package/dist/tui/screens/messages-view.js.map +1 -1
  204. package/dist/tui/screens/notice-bar.d.ts +5 -0
  205. package/dist/tui/screens/notice-bar.d.ts.map +1 -0
  206. package/dist/tui/screens/notice-bar.js +15 -0
  207. package/dist/tui/screens/notice-bar.js.map +1 -0
  208. package/dist/tui/screens/notice.d.ts +40 -8
  209. package/dist/tui/screens/notice.d.ts.map +1 -1
  210. package/dist/tui/screens/notice.js +75 -15
  211. package/dist/tui/screens/notice.js.map +1 -1
  212. package/dist/tui/screens/overlays.d.ts.map +1 -1
  213. package/dist/tui/screens/overlays.js +3 -2
  214. package/dist/tui/screens/overlays.js.map +1 -1
  215. package/dist/tui/screens/splash.d.ts +1 -1
  216. package/dist/tui/screens/splash.d.ts.map +1 -1
  217. package/dist/tui/screens/splash.js +5 -2
  218. package/dist/tui/screens/splash.js.map +1 -1
  219. package/dist/tui/screens/use-chat-viewport.d.ts +22 -0
  220. package/dist/tui/screens/use-chat-viewport.d.ts.map +1 -0
  221. package/dist/tui/screens/use-chat-viewport.js +50 -0
  222. package/dist/tui/screens/use-chat-viewport.js.map +1 -0
  223. package/dist/tui/screens/use-input-editing.d.ts +44 -0
  224. package/dist/tui/screens/use-input-editing.d.ts.map +1 -0
  225. package/dist/tui/screens/use-input-editing.js +192 -0
  226. package/dist/tui/screens/use-input-editing.js.map +1 -0
  227. package/dist/tui/screens/use-overlays.d.ts +25 -0
  228. package/dist/tui/screens/use-overlays.d.ts.map +1 -0
  229. package/dist/tui/screens/use-overlays.js +32 -0
  230. package/dist/tui/screens/use-overlays.js.map +1 -0
  231. package/dist/tui/screens/use-wizard-host.d.ts +35 -0
  232. package/dist/tui/screens/use-wizard-host.d.ts.map +1 -0
  233. package/dist/tui/screens/use-wizard-host.js +103 -0
  234. package/dist/tui/screens/use-wizard-host.js.map +1 -0
  235. package/dist/tui/status-segments.d.ts +37 -0
  236. package/dist/tui/status-segments.d.ts.map +1 -0
  237. package/dist/tui/status-segments.js +166 -0
  238. package/dist/tui/status-segments.js.map +1 -0
  239. package/dist/tui/text.d.ts +8 -5
  240. package/dist/tui/text.d.ts.map +1 -1
  241. package/dist/tui/text.js +95 -35
  242. package/dist/tui/text.js.map +1 -1
  243. package/dist/tui/token-rate.d.ts +83 -0
  244. package/dist/tui/token-rate.d.ts.map +1 -0
  245. package/dist/tui/token-rate.js +195 -0
  246. package/dist/tui/token-rate.js.map +1 -0
  247. package/dist/types.d.ts +0 -3
  248. package/dist/types.d.ts.map +1 -1
  249. package/package.json +4 -3
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-repository.js","sourceRoot":"","sources":["../src/conversation-repository.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAkBxD,0DAA0D;AAC1D,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,gBAAgB,CAAe,iBAAiB,CAAC,CAAC;AAE5F;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAa,IAAI,IAAI,EAAE;IAC5D,OAAO,MAAM,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AACnF,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAwB;IAC7D,MAAM,EAAE,GAAG,GAAG,CAAC,SAAS,IAAI,sBAAsB,EAAE,CAAC;IACrD,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,sBAAsB,CAAC,KAAK,CAAC;QACjC,EAAE;QACF,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,SAAS;QACjC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ;QAC5B,SAAS,EAAE,QAAQ,EAAE,SAAS,IAAI,GAAG;QACrC,SAAS,EAAE,GAAG;KACf,CAAC,CAAC;IACH,MAAM,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1C,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IAGrC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAClD,MAAM,MAAM,GAAyE,EAAE,CAAC;IACxF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,SAAS;QACtC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAC;YACxD,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAClF,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAClG,CAAC"}
1
+ {"version":3,"file":"conversation-repository.js","sourceRoot":"","sources":["../src/conversation-repository.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cwd-tracker-plugin.d.ts","sourceRoot":"","sources":["../src/cwd-tracker-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEnE,qBAAa,gBAAiB,YAAW,WAAW;IAClD,8BAA8B;IAC9B,OAAO,CAAC,OAAO,CAAuB;IAEhC,gBAAgB,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAmBxD"}
1
+ {"version":3,"file":"cwd-tracker-plugin.d.ts","sourceRoot":"","sources":["../src/cwd-tracker-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEnE,qBAAa,gBAAiB,YAAW,WAAW;IAClD,8BAA8B;IAC9B,OAAO,CAAC,OAAO,CAAuB;IAEhC,gBAAgB,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAuBxD"}
@@ -45,8 +45,12 @@ export class CwdTrackerPlugin {
45
45
  .find((m) => m.role === AgentNS.Role.User && typeof m.content === "string");
46
46
  if (!lastUserMsg || typeof lastUserMsg.content !== "string")
47
47
  return;
48
- const prefix = isFirstTime ? "" : "\n\n[工作目录变更]";
49
- lastUserMsg.content += `${prefix}\n当前工作目录: ${currentCwd}`;
48
+ // 注入给模型的提示词:用英文,并显式标注「系统注入」—— 翻存档 / 交接文档时
49
+ // 一眼能分辨哪些内容不是用户敲的。(协议内容,不走 i18n)
50
+ const tag = isFirstTime
51
+ ? "[system-injected: current working directory — not written by the user]"
52
+ : "[system-injected: working directory changed — not written by the user]";
53
+ lastUserMsg.content += `\n\n${tag}\nCurrent working directory: ${currentCwd}`;
50
54
  }
51
55
  }
52
56
  //# sourceMappingURL=cwd-tracker-plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cwd-tracker-plugin.js","sourceRoot":"","sources":["../src/cwd-tracker-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG9C,MAAM,OAAO,gBAAgB;IAC3B,8BAA8B;IACtB,OAAO,GAAkB,IAAI,CAAC;IAEtC,KAAK,CAAC,gBAAgB,CAAC,GAAgB;QACrC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAEjC,gBAAgB;QAChB,IAAI,IAAI,CAAC,OAAO,KAAK,UAAU;YAAE,OAAO;QAExC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;QAE1B,gCAAgC;QAChC,MAAM,WAAW,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;aACxC,OAAO,EAAE;aACT,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC;QAE9E,IAAI,CAAC,WAAW,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ;YAAE,OAAO;QAEpE,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;QACjD,WAAW,CAAC,OAAO,IAAI,GAAG,MAAM,aAAa,UAAU,EAAE,CAAC;IAC5D,CAAC;CACF"}
1
+ {"version":3,"file":"cwd-tracker-plugin.js","sourceRoot":"","sources":["../src/cwd-tracker-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG9C,MAAM,OAAO,gBAAgB;IAC3B,8BAA8B;IACtB,OAAO,GAAkB,IAAI,CAAC;IAEtC,KAAK,CAAC,gBAAgB,CAAC,GAAgB;QACrC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAEjC,gBAAgB;QAChB,IAAI,IAAI,CAAC,OAAO,KAAK,UAAU;YAAE,OAAO;QAExC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;QAE1B,gCAAgC;QAChC,MAAM,WAAW,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;aACxC,OAAO,EAAE;aACT,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC;QAE9E,IAAI,CAAC,WAAW,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ;YAAE,OAAO;QAEpE,0CAA0C;QAC1C,iCAAiC;QACjC,MAAM,GAAG,GAAG,WAAW;YACrB,CAAC,CAAC,wEAAwE;YAC1E,CAAC,CAAC,wEAAwE,CAAC;QAC7E,WAAW,CAAC,OAAO,IAAI,OAAO,GAAG,gCAAgC,UAAU,EAAE,CAAC;IAChF,CAAC;CACF"}
@@ -1,8 +1,12 @@
1
1
  /**
2
2
  * 统一时间格式化工具
3
3
  *
4
- * 所有用户可见的时间文案统一使用 dayjs + zh-cn locale,
5
- * 确保各种场景(会话列表、会话标签等)显示一致。
4
+ * 所有用户可见的时间文案统一走本模块,格式随界面语言变化:
5
+ * - 中文:`7月1日 14:30`、`昨天 14:30`
6
+ * - 英文:`Jul 1, 14:30`、`Yesterday 14:30`
7
+ *
8
+ * 语言从 `i18n` 现取(不同模块级常量),因此 `/lang` 切完下一帧就生效。
9
+ * 例外:`formatFileStamp()` 用于**文件名 / 会话 id**,不随语言变(否则新旧文件混排)。
6
10
  */
7
11
  import "dayjs/locale/zh-cn.js";
8
12
  /**
@@ -16,13 +20,20 @@ import "dayjs/locale/zh-cn.js";
16
20
  */
17
21
  export declare function formatRelativeTime(isoString: string): string;
18
22
  /**
19
- * 格式化时间戳为完整中文格式(用于详情展示)
20
- * 例:2025年7月1日 14:30:00
23
+ * 格式化时间戳为完整格式(用于详情展示)
24
+ * 例(中):2025年7月1日 14:30:00 (英):Jul 1, 2025 14:30:00
21
25
  */
22
26
  export declare function formatFullTime(isoString: string): string;
23
27
  /**
24
- * 格式化时间戳为保存名称用的格式,兼容文件名
25
- * 例:2025年07月01日_14时30分00秒
28
+ * 文件名安全的时间戳:全下划线、纯数字,用作会话 id。
29
+ * 例:2026_10_28_00_56_34
30
+ *
31
+ * **刻意不随界面语言变**:它进了文件名与会话 id,跟着语言变会让历史文件与新文件混排。
32
+ */
33
+ export declare function formatFileStamp(isoString: string): string;
34
+ /**
35
+ * 紧凑时间戳(列表/详情提示显示用),随界面语言变:
36
+ * 中文 `2025年07月01日15时30分00秒`,英文 `Jul 1, 2025 15:30:00`。
26
37
  */
27
38
  export declare function formatShortTime(isoString: string): string;
28
39
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"format-time.d.ts","sourceRoot":"","sources":["../src/format-time.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,uBAAuB,CAAC;AAK/B;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAc5D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEjF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIpD"}
1
+ {"version":3,"file":"format-time.d.ts","sourceRoot":"","sources":["../src/format-time.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,uBAAuB,CAAC;AAW/B;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAc5D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEjF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIpD"}
@@ -1,13 +1,22 @@
1
1
  /**
2
2
  * 统一时间格式化工具
3
3
  *
4
- * 所有用户可见的时间文案统一使用 dayjs + zh-cn locale,
5
- * 确保各种场景(会话列表、会话标签等)显示一致。
4
+ * 所有用户可见的时间文案统一走本模块,格式随界面语言变化:
5
+ * - 中文:`7月1日 14:30`、`昨天 14:30`
6
+ * - 英文:`Jul 1, 14:30`、`Yesterday 14:30`
7
+ *
8
+ * 语言从 `i18n` 现取(不同模块级常量),因此 `/lang` 切完下一帧就生效。
9
+ * 例外:`formatFileStamp()` 用于**文件名 / 会话 id**,不随语言变(否则新旧文件混排)。
6
10
  */
7
11
  import dayjs from "dayjs";
8
12
  import "dayjs/locale/zh-cn.js";
9
- // 全局设置中文 locale
13
+ import { getLocale, t } from "./i18n/index.js";
14
+ // dayjs 自身的全局默认(仅兜底;实际格式化按当前界面语言逐次指定)
10
15
  dayjs.locale("zh-cn");
16
+ /** 当前界面语言对应的 dayjs locale 名 */
17
+ function dayjsLocale() {
18
+ return getLocale() === "zh" ? "zh-cn" : "en";
19
+ }
11
20
  /**
12
21
  * 格式化时间戳为"相对时间"(用于列表展示)
13
22
  *
@@ -18,39 +27,48 @@ dayjs.locale("zh-cn");
18
27
  * - 更早: YYYY年M月D日 HH:mm
19
28
  */
20
29
  export function formatRelativeTime(isoString) {
21
- const d = dayjs(isoString);
30
+ const d = dayjs(isoString).locale(dayjsLocale());
22
31
  const now = dayjs();
23
32
  if (d.isSame(now, "day")) {
24
33
  return d.format("HH:mm");
25
34
  }
26
35
  if (d.isSame(now.subtract(1, "day"), "day")) {
27
- return `昨天 ${d.format("HH:mm")}`;
36
+ return t("time.yesterday", { time: d.format("HH:mm") });
28
37
  }
29
38
  if (d.isSame(now, "year")) {
30
- return d.format("M月D日 HH:mm");
39
+ return d.format(t("time.pattern.thisYear"));
31
40
  }
32
- return d.format("YYYY年M月D日 HH:mm");
41
+ return d.format(t("time.pattern.older"));
33
42
  }
34
43
  /**
35
- * 格式化时间戳为完整中文格式(用于详情展示)
36
- * 例:2025年7月1日 14:30:00
44
+ * 格式化时间戳为完整格式(用于详情展示)
45
+ * 例(中):2025年7月1日 14:30:00 (英):Jul 1, 2025 14:30:00
37
46
  */
38
47
  export function formatFullTime(isoString) {
39
- return dayjs(isoString).format("YYYY年M月D日 HH:mm:ss");
48
+ return dayjs(isoString).locale(dayjsLocale()).format(t("time.pattern.full"));
49
+ }
50
+ /**
51
+ * 文件名安全的时间戳:全下划线、纯数字,用作会话 id。
52
+ * 例:2026_10_28_00_56_34
53
+ *
54
+ * **刻意不随界面语言变**:它进了文件名与会话 id,跟着语言变会让历史文件与新文件混排。
55
+ */
56
+ export function formatFileStamp(isoString) {
57
+ return dayjs(isoString).format("YYYY_MM_DD_HH_mm_ss");
40
58
  }
41
59
  /**
42
- * 格式化时间戳为保存名称用的格式,兼容文件名
43
- * 例:2025年07月01日_14时30分00秒
60
+ * 紧凑时间戳(列表/详情提示显示用),随界面语言变:
61
+ * 中文 `2025年07月01日15时30分00秒`,英文 `Jul 1, 2025 15:30:00`。
44
62
  */
45
63
  export function formatShortTime(isoString) {
46
- return dayjs(isoString).format("YYYY年MM月DD日HH时mm分ss秒");
64
+ return dayjs(isoString).locale(dayjsLocale()).format(t("time.pattern.short"));
47
65
  }
48
66
  /**
49
67
  * 格式化消息数量+时间(用于会话标签;当前暂无调用点,保留供 P1 主菜单复用)
50
68
  * 例:12 条消息, 今天 14:30
51
69
  */
52
70
  export function formatMessageTime(messageCount, isoString) {
53
- return `${messageCount} 条消息, ${formatRelativeTime(isoString)}`;
71
+ return t("time.messageCount", { n: messageCount, time: formatRelativeTime(isoString) });
54
72
  }
55
73
  /**
56
74
  * 格式化文件大小为人类可读格式
@@ -1 +1 @@
1
- {"version":3,"file":"format-time.js","sourceRoot":"","sources":["../src/format-time.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,uBAAuB,CAAC;AAE/B,gBAAgB;AAChB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAEtB;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3B,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC;IAEpB,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;QAC5C,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACnC,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;AACzD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,YAAoB,EAAE,SAAiB;IACvE,OAAO,GAAG,YAAY,SAAS,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;AACjE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,GAAG,KAAK,IAAI,CAAC;IACtC,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAClE,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AACpD,CAAC"}
1
+ {"version":3,"file":"format-time.js","sourceRoot":"","sources":["../src/format-time.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAC;AAE/C,sCAAsC;AACtC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAEtB,+BAA+B;AAC/B,SAAS,WAAW;IAClB,OAAO,SAAS,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/C,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC;IAEpB,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;QAC5C,OAAO,CAAC,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACxD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAChF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,YAAoB,EAAE,SAAiB;IACvE,OAAO,CAAC,CAAC,mBAAmB,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAC1F,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,GAAG,KAAK,IAAI,CAAC;IACtC,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAClE,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AACpD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"handoff-service.d.ts","sourceRoot":"","sources":["../src/handoff-service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAEd,KAAK,WAAW,EACjB,MAAM,oBAAoB,CAAC;AAS5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,uBAAuB;AACvB,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAEtD;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,mBAAmB,EACxB,OAAO,GAAE;IACP,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;CAChB,GACL,cAAc,CAuEhB"}
1
+ {"version":3,"file":"handoff-service.d.ts","sourceRoot":"","sources":["../src/handoff-service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAEd,KAAK,WAAW,EACjB,MAAM,oBAAoB,CAAC;AAQ5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGtD,uBAAuB;AACvB,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAEtD;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,mBAAmB,EACxB,OAAO,GAAE;IACP,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;CAChB,GACL,cAAc,CA4EhB"}
@@ -1,11 +1,11 @@
1
1
  import { HandoffService, } from "@ai-zen/agents-sdk";
2
- import { saveConversation, conversationRepository, generateConversationId, } from "./conversation-repository.js";
3
- import { writeLastSession } from "./session-pointer.js";
2
+ import { saveConversation, persistConversation, generateConversationId, } from "./conversation-repository.js";
4
3
  import { PROJECT_HANDOFFS_DIR } from "./config.js";
5
4
  import { listSkillDirs } from "./agent-creator.js";
5
+ import { t } from "./i18n/index.js";
6
6
  /** 执行者的中文名(供提示文案使用) */
7
7
  export function describeMode(mode) {
8
- return mode === "self" ? "原 agent 自交接" : "独立摘要";
8
+ return mode === "self" ? t("handoff.mode.self") : t("handoff.mode.summary");
9
9
  }
10
10
  /**
11
11
  * 创建 CLI 交接服务实例(自动迁移与 `/migrate` / `/handoff` 共用同一个实例)。
@@ -27,24 +27,32 @@ export function createHandoffService(ctx, options = {}) {
27
27
  // 交接模板的唯一真相源:磁盘上的 handoff Skill(出厂随 SDK 释放,可被项目级覆盖)
28
28
  skillDirs: listSkillDirs(),
29
29
  onBeforeHandoff: (hctx) => {
30
- const isAuto = hctx.promptTokens != null && hctx.handoffTokens != null;
30
+ const { promptTokens, handoffTokens } = hctx;
31
+ const isAuto = promptTokens != null && handoffTokens != null;
31
32
  if (isAuto) {
32
- log(`📋 检测到上下文即将超限(${hctx.promptTokens}/${hctx.handoffTokens} tokens),正在交接(${describeMode(hctx.requestedMode)})…`);
33
+ log(t("handoff.autoDetected", {
34
+ used: promptTokens,
35
+ limit: handoffTokens,
36
+ mode: describeMode(hctx.requestedMode),
37
+ }));
33
38
  }
34
39
  else {
35
- log(`📋 正在编写任务交接文档(${describeMode(hctx.requestedMode)})…`);
40
+ log(t("handoff.writing", { mode: describeMode(hctx.requestedMode) }));
36
41
  }
37
42
  },
38
43
  onHandoff: async (hctx) => {
39
44
  // 降级时告知用户:请求的执行者与实际执行者不一致
40
45
  if (hctx.mode !== hctx.requestedMode) {
41
- log(`⚠️ ${describeMode(hctx.requestedMode)}未能产出文档,已降级为${describeMode(hctx.mode)}`);
46
+ log(t("handoff.degraded", {
47
+ requested: describeMode(hctx.requestedMode),
48
+ mode: describeMode(hctx.mode),
49
+ }));
42
50
  }
43
- log(`📄 交接文档:${hctx.handoffPath}`);
51
+ log(t("handoff.path", { path: hctx.handoffPath }));
44
52
  // 迁移前(历史尚未剔除)保存旧对话:此时已包含交接回合,可完整审计
45
53
  if (hctx.migrating) {
46
54
  await saveConversation(ctx);
47
- log(`✅ 原对话已保存:${ctx.currentName}`);
55
+ log(t("handoff.savedConversation", { name: ctx.currentName }));
48
56
  }
49
57
  },
50
58
  onMigrated: async (hctx) => {
@@ -59,26 +67,21 @@ export function createHandoffService(ctx, options = {}) {
59
67
  const id = generateConversationId();
60
68
  ctx.currentId = id;
61
69
  ctx.currentName = id;
62
- log(`🚀 任务迁移完成,已开启新会话(共 ${hctx.agent.messages.length} 条消息)`);
63
- log("💡 新助手会先读取交接文档,随后即可继续推进任务。");
70
+ log(t("handoff.migrated", { n: hctx.agent.messages.length }));
71
+ log(t("handoff.migratedHint"));
64
72
  // 迁移后立即把新开场白落盘为独立会话文件,并更新「上一轮会话 id」指针,
65
73
  // 避免迁移发生在 onAfterSend(ConversationPersistPlugin 的 onInnerLoopEnd
66
74
  // 已不再触发)导致迁移后的新对话未被及时落盘、用户中途退出时丢失。
67
75
  try {
68
- const existing = await conversationRepository.read(id);
69
- const now = new Date().toISOString();
70
- await conversationRepository.write({
76
+ await persistConversation({
71
77
  id,
72
- agentId: ctx.agentId || "default",
78
+ agentId: ctx.agentId,
73
79
  messages: hctx.agent.messages,
74
80
  cwd: process.cwd(),
75
- createdAt: existing?.createdAt ?? now,
76
- updatedAt: now,
77
81
  });
78
- await writeLastSession(process.cwd(), id);
79
82
  }
80
83
  catch (err) {
81
- log(`⚠️ 迁移后会话落盘失败:${err?.message ?? err}`);
84
+ log(t("handoff.persistFailed", { error: err?.message ?? err }));
82
85
  }
83
86
  },
84
87
  });
@@ -1 +1 @@
1
- {"version":3,"file":"handoff-service.js","sourceRoot":"","sources":["../src/handoff-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handoff-service.js","sourceRoot":"","sources":["../src/handoff-service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"AA8DA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CA4BjD;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAuBnD"}
1
+ {"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"AA+GA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAmCjD;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAuBnD"}
package/dist/hook.js CHANGED
@@ -1,7 +1,11 @@
1
1
  import { homedir } from "node:os";
2
2
  import { join } from "node:path";
3
3
  import { promises as fs } from "node:fs";
4
- /** 当前标记(ai hook 时代) */
4
+ import { t } from "./i18n/index.js";
5
+ /** 当前标记(ai hook 时代)
6
+ *
7
+ * **不得翻译**:这两行是写进 rc 文件的代码块标记,靠它识别「哪段是本工具的」;
8
+ * 翻了字面串就再也找不到旧块,用户会冒出一堆重复 hook。 */
5
9
  const MARKER_START = "# === ai hook (开始) ===";
6
10
  const MARKER_END = "# === ai hook (结束) ===";
7
11
  /** 历史标记(aiz hook 时代,用于平滑迁移) */
@@ -19,8 +23,52 @@ function detectShell() {
19
23
  }
20
24
  return null;
21
25
  }
26
+ /**
27
+ * 生成被写入 rc 文件的钩子函数体。
28
+ *
29
+ * 关键:必须带 `--tui`。钩子的发起场景是「人坐在交互终端前把命令敲错了」,
30
+ * 不是脚本调用——所以要把原命令带进 TUI 当首条消息(`ai --tui --new "$@"`),
31
+ * 而不是落到管道模式吐一段字就退出(那样没有历史、不能追问)。
32
+ *
33
+ * 另带 `--new`:钩子会话**总是开新的一条对话**,不续接该目录的上一轮会话。
34
+ * 敲错一次命令就把内容追加进原有的长对话里,上下文和会话名都会被打乱。
35
+ * `"$@"` 保留分词,避免原本带空格的参数被拼坏。
36
+ */
22
37
  function hookCode(hookFn) {
23
- return ["", MARKER_START, `${hookFn}() {`, ' ai "$@"', "}", MARKER_END, ""].join("\n");
38
+ return ["", MARKER_START, `${hookFn}() {`, ' ai --tui --new "$@"', "}", MARKER_END, ""].join("\n");
39
+ }
40
+ /** 规范化钩子块(去空行、逐行 trim),用于判断已安装的内容是否就是当前版本 */
41
+ function normalizeBlock(block) {
42
+ return block
43
+ .split("\n")
44
+ .map((line) => line.trim())
45
+ .filter(Boolean)
46
+ .join("\n");
47
+ }
48
+ /**
49
+ * 取出文件中**全部**已安装的钩子块(含首尾标记),按出现顺序。
50
+ *
51
+ * 这里刻意返回数组而不是第一块:rc 里可能残留多个块(老版本 + 新版本各写了一次),
52
+ * 只看第一块会出现「第一块恰好是最新版 → 判定为已安装 → 后面的旧块永远留着」。
53
+ */
54
+ function readHookBlocks(content) {
55
+ const lines = content.split("\n");
56
+ const blocks = [];
57
+ let start = -1;
58
+ for (const [index, line] of lines.entries()) {
59
+ const trimmed = line.trim();
60
+ if (start < 0) {
61
+ if (trimmed === MARKER_START)
62
+ start = index;
63
+ continue;
64
+ }
65
+ if (trimmed === MARKER_END) {
66
+ blocks.push(lines.slice(start, index + 1).join("\n"));
67
+ start = -1;
68
+ }
69
+ }
70
+ // 只有开头标记、没有结尾标记的残缺块不算「已安装」——交给安装路径整段清理
71
+ return blocks;
24
72
  }
25
73
  /**
26
74
  * 移除文件中所有 hook 代码块(含历史 aiz 标记),返回清理后的内容;
@@ -53,7 +101,7 @@ function stripHookBlocks(content) {
53
101
  export async function installHook() {
54
102
  const shell = detectShell();
55
103
  if (!shell) {
56
- console.error("❌ 不支持的 shell(仅支持 bash / zsh)");
104
+ console.error(t("hook.unsupportedShell"));
57
105
  process.exit(1);
58
106
  }
59
107
  let current = "";
@@ -63,24 +111,30 @@ export async function installHook() {
63
111
  catch {
64
112
  // 文件不存在:视为空内容
65
113
  }
66
- if (current.includes(MARKER_START)) {
67
- console.log("ℹ️ ai hook 已安装,无需重复操作");
114
+ const desired = hookCode(shell.hookFn);
115
+ // 已安装的判定条件是「**恰好一块**且内容与当前版本一致」。
116
+ // 内容不一致(如升级后给钩子加了 `--new`)或残留多块(老版本 + 新版本各写过一次)
117
+ // 都要走重写路径,否则用户升不上去、或者旧块永远留在 rc 里。
118
+ const installedBlocks = readHookBlocks(current);
119
+ if (installedBlocks.length === 1 && normalizeBlock(installedBlocks[0]) === normalizeBlock(desired)) {
120
+ console.log(t("hook.alreadyInstalled"));
68
121
  return;
69
122
  }
70
- // 迁移:先移除历史 aiz 块,再写入新块
123
+ const refreshed = installedBlocks.length > 0;
124
+ // 统一走「先清掉所有已装块(含历史 aiz 块),再写入当前版本」
71
125
  const { content: cleaned, removed } = stripHookBlocks(current);
72
126
  const base = cleaned.replace(/\n+$/, "");
73
- await fs.writeFile(shell.rcFile, base + "\n" + hookCode(shell.hookFn), "utf-8");
74
- console.log(`✅ ai hook 已安装到 ${shell.rcFile}`);
127
+ await fs.writeFile(shell.rcFile, base + "\n" + desired, "utf-8");
128
+ console.log(refreshed ? t("hook.updated", { file: shell.rcFile }) : t("hook.installed", { file: shell.rcFile }));
75
129
  if (removed)
76
- console.log(" (已自动升级旧版 aiz hook)");
77
- console.log(` 重启终端或执行 source ${shell.rcFile} 即可生效`);
78
- console.log(` 之后输入不存在的命令会自动转发给 AI 处理`);
130
+ console.log(t("hook.upgraded"));
131
+ console.log(t("hook.restartHint", { file: shell.rcFile }));
132
+ console.log(t("hook.forwardHint"));
79
133
  }
80
134
  export async function uninstallHook() {
81
135
  const shell = detectShell();
82
136
  if (!shell) {
83
- console.error("❌ 不支持的 shell(仅支持 bash / zsh)");
137
+ console.error(t("hook.unsupportedShell"));
84
138
  process.exit(1);
85
139
  }
86
140
  let content;
@@ -88,15 +142,15 @@ export async function uninstallHook() {
88
142
  content = await fs.readFile(shell.rcFile, "utf-8");
89
143
  }
90
144
  catch {
91
- console.log("ℹ️ ai hook 未安装(文件不存在)");
145
+ console.log(t("hook.notInstalledNoFile"));
92
146
  return;
93
147
  }
94
148
  const { content: cleaned, removed } = stripHookBlocks(content);
95
149
  if (!removed) {
96
- console.log("ℹ️ ai hook 未安装");
150
+ console.log(t("hook.notInstalled"));
97
151
  return;
98
152
  }
99
153
  await fs.writeFile(shell.rcFile, cleaned, "utf-8");
100
- console.log(`✅ ai hook 已从 ${shell.rcFile} 卸载`);
154
+ console.log(t("hook.uninstalled", { file: shell.rcFile }));
101
155
  }
102
156
  //# sourceMappingURL=hook.js.map
package/dist/hook.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hook.js","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hook.js","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * English entries — Configuration center (`/config` wizard).
3
+ *
4
+ * Kept separate from `en.ts` for the same reason as `zh-wizard.ts`: the wizard is the
5
+ * densest text area in the CLI. `index.ts` merges both tables, so `t()` sees one map.
6
+ */
7
+ export declare const en: Record<string, string>;
8
+ //# sourceMappingURL=en-wizard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en-wizard.d.ts","sourceRoot":"","sources":["../../src/i18n/en-wizard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAwSrC,CAAC"}