@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.
- package/CHANGELOG.md +158 -0
- package/README.md +43 -17
- package/README.zh.md +43 -17
- package/dist/agent-creator.d.ts.map +1 -1
- package/dist/agent-creator.js +32 -10
- package/dist/agent-creator.js.map +1 -1
- package/dist/agent-switch.d.ts +61 -0
- package/dist/agent-switch.d.ts.map +1 -0
- package/dist/agent-switch.js +83 -0
- package/dist/agent-switch.js.map +1 -0
- package/dist/agents-store.d.ts +6 -1
- package/dist/agents-store.d.ts.map +1 -1
- package/dist/agents-store.js +6 -1
- package/dist/agents-store.js.map +1 -1
- package/dist/auto-migrate-confirm.d.ts.map +1 -1
- package/dist/auto-migrate-confirm.js +2 -1
- package/dist/auto-migrate-confirm.js.map +1 -1
- package/dist/config-editor.d.ts +9 -1
- package/dist/config-editor.d.ts.map +1 -1
- package/dist/config-editor.js +30 -19
- package/dist/config-editor.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +29 -13
- package/dist/config.js.map +1 -1
- package/dist/conversation-commands/registry.d.ts +123 -4
- package/dist/conversation-commands/registry.d.ts.map +1 -1
- package/dist/conversation-commands/registry.js +92 -17
- package/dist/conversation-commands/registry.js.map +1 -1
- package/dist/conversation-persist-plugin.d.ts.map +1 -1
- package/dist/conversation-persist-plugin.js +6 -14
- package/dist/conversation-persist-plugin.js.map +1 -1
- package/dist/conversation-repository.d.ts +68 -14
- package/dist/conversation-repository.d.ts.map +1 -1
- package/dist/conversation-repository.js +81 -23
- package/dist/conversation-repository.js.map +1 -1
- package/dist/cwd-tracker-plugin.d.ts.map +1 -1
- package/dist/cwd-tracker-plugin.js +6 -2
- package/dist/cwd-tracker-plugin.js.map +1 -1
- package/dist/format-time.d.ts +17 -6
- package/dist/format-time.d.ts.map +1 -1
- package/dist/format-time.js +32 -14
- package/dist/format-time.js.map +1 -1
- package/dist/handoff-service.d.ts.map +1 -1
- package/dist/handoff-service.js +22 -19
- package/dist/handoff-service.js.map +1 -1
- package/dist/hook.d.ts.map +1 -1
- package/dist/hook.js +69 -15
- package/dist/hook.js.map +1 -1
- package/dist/i18n/en-wizard.d.ts +8 -0
- package/dist/i18n/en-wizard.d.ts.map +1 -0
- package/dist/i18n/en-wizard.js +290 -0
- package/dist/i18n/en-wizard.js.map +1 -0
- package/dist/i18n/en.d.ts +7 -0
- package/dist/i18n/en.d.ts.map +1 -0
- package/dist/i18n/en.js +224 -0
- package/dist/i18n/en.js.map +1 -0
- package/dist/i18n/index.d.ts +57 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +109 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/preferences.d.ts +34 -0
- package/dist/i18n/preferences.d.ts.map +1 -0
- package/dist/i18n/preferences.js +69 -0
- package/dist/i18n/preferences.js.map +1 -0
- package/dist/i18n/zh-wizard.d.ts +11 -0
- package/dist/i18n/zh-wizard.d.ts.map +1 -0
- package/dist/i18n/zh-wizard.js +293 -0
- package/dist/i18n/zh-wizard.js.map +1 -0
- package/dist/i18n/zh.d.ts +10 -0
- package/dist/i18n/zh.d.ts.map +1 -0
- package/dist/i18n/zh.js +228 -0
- package/dist/i18n/zh.js.map +1 -0
- package/dist/index.js +41 -23
- package/dist/index.js.map +1 -1
- package/dist/mcp-command.d.ts +32 -0
- package/dist/mcp-command.d.ts.map +1 -0
- package/dist/mcp-command.js +37 -0
- package/dist/mcp-command.js.map +1 -0
- package/dist/mode.d.ts +31 -4
- package/dist/mode.d.ts.map +1 -1
- package/dist/mode.js +42 -7
- package/dist/mode.js.map +1 -1
- package/dist/model-switch.d.ts.map +1 -1
- package/dist/model-switch.js +5 -4
- package/dist/model-switch.js.map +1 -1
- package/dist/reasoning-effort.d.ts +23 -4
- package/dist/reasoning-effort.d.ts.map +1 -1
- package/dist/reasoning-effort.js +51 -24
- package/dist/reasoning-effort.js.map +1 -1
- package/dist/sdk-log.d.ts +23 -16
- package/dist/sdk-log.d.ts.map +1 -1
- package/dist/sdk-log.js +43 -19
- package/dist/sdk-log.js.map +1 -1
- package/dist/stdio-runner.d.ts.map +1 -1
- package/dist/stdio-runner.js +19 -19
- package/dist/stdio-runner.js.map +1 -1
- package/dist/tui/chat-session.d.ts +27 -0
- package/dist/tui/chat-session.d.ts.map +1 -1
- package/dist/tui/chat-session.js +120 -28
- package/dist/tui/chat-session.js.map +1 -1
- package/dist/tui/components.d.ts +43 -2
- package/dist/tui/components.d.ts.map +1 -1
- package/dist/tui/components.js +97 -4
- package/dist/tui/components.js.map +1 -1
- package/dist/tui/config-wizard/detail.d.ts +12 -6
- package/dist/tui/config-wizard/detail.d.ts.map +1 -1
- package/dist/tui/config-wizard/detail.js +33 -32
- package/dist/tui/config-wizard/detail.js.map +1 -1
- package/dist/tui/config-wizard/engine.d.ts.map +1 -1
- package/dist/tui/config-wizard/engine.js +26 -20
- package/dist/tui/config-wizard/engine.js.map +1 -1
- package/dist/tui/config-wizard/fields.d.ts.map +1 -1
- package/dist/tui/config-wizard/fields.js +176 -164
- package/dist/tui/config-wizard/fields.js.map +1 -1
- package/dist/tui/config-wizard/kv-editor.d.ts.map +1 -1
- package/dist/tui/config-wizard/kv-editor.js +9 -5
- package/dist/tui/config-wizard/kv-editor.js.map +1 -1
- package/dist/tui/config-wizard/list.d.ts.map +1 -1
- package/dist/tui/config-wizard/list.js +2 -1
- package/dist/tui/config-wizard/list.js.map +1 -1
- package/dist/tui/config-wizard/mcp-helpers.d.ts.map +1 -1
- package/dist/tui/config-wizard/mcp-helpers.js +4 -3
- package/dist/tui/config-wizard/mcp-helpers.js.map +1 -1
- package/dist/tui/config-wizard/menu.d.ts.map +1 -1
- package/dist/tui/config-wizard/menu.js +32 -19
- package/dist/tui/config-wizard/menu.js.map +1 -1
- package/dist/tui/config-wizard/prompt-editor.d.ts.map +1 -1
- package/dist/tui/config-wizard/prompt-editor.js +4 -3
- package/dist/tui/config-wizard/prompt-editor.js.map +1 -1
- package/dist/tui/config-wizard/prompt.d.ts.map +1 -1
- package/dist/tui/config-wizard/prompt.js +8 -7
- package/dist/tui/config-wizard/prompt.js.map +1 -1
- package/dist/tui/config-wizard/step-agents.d.ts.map +1 -1
- package/dist/tui/config-wizard/step-agents.js +29 -20
- package/dist/tui/config-wizard/step-agents.js.map +1 -1
- package/dist/tui/config-wizard/step-defaults.d.ts.map +1 -1
- package/dist/tui/config-wizard/step-defaults.js +21 -17
- package/dist/tui/config-wizard/step-defaults.js.map +1 -1
- package/dist/tui/config-wizard/step-endpoints.d.ts.map +1 -1
- package/dist/tui/config-wizard/step-endpoints.js +16 -6
- package/dist/tui/config-wizard/step-endpoints.js.map +1 -1
- package/dist/tui/config-wizard/step-mcp.d.ts.map +1 -1
- package/dist/tui/config-wizard/step-mcp.js +17 -19
- package/dist/tui/config-wizard/step-mcp.js.map +1 -1
- package/dist/tui/config-wizard/step-models.d.ts.map +1 -1
- package/dist/tui/config-wizard/step-models.js +41 -26
- package/dist/tui/config-wizard/step-models.js.map +1 -1
- package/dist/tui/config-wizard/step-new-endpoint.d.ts.map +1 -1
- package/dist/tui/config-wizard/step-new-endpoint.js +16 -12
- package/dist/tui/config-wizard/step-new-endpoint.js.map +1 -1
- package/dist/tui/config-wizard/step-simple.d.ts.map +1 -1
- package/dist/tui/config-wizard/step-simple.js +18 -17
- package/dist/tui/config-wizard/step-simple.js.map +1 -1
- package/dist/tui/index.d.ts +17 -1
- package/dist/tui/index.d.ts.map +1 -1
- package/dist/tui/index.js +25 -14
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/input-editing.d.ts +4 -1
- package/dist/tui/input-editing.d.ts.map +1 -1
- package/dist/tui/input-editing.js +7 -3
- package/dist/tui/input-editing.js.map +1 -1
- package/dist/tui/phase.d.ts +64 -0
- package/dist/tui/phase.d.ts.map +1 -0
- package/dist/tui/phase.js +112 -0
- package/dist/tui/phase.js.map +1 -0
- package/dist/tui/screens/chat-commands.d.ts +54 -3
- package/dist/tui/screens/chat-commands.d.ts.map +1 -1
- package/dist/tui/screens/chat-commands.js +469 -330
- package/dist/tui/screens/chat-commands.js.map +1 -1
- package/dist/tui/screens/chat.d.ts +8 -0
- package/dist/tui/screens/chat.d.ts.map +1 -1
- package/dist/tui/screens/chat.js +206 -405
- package/dist/tui/screens/chat.js.map +1 -1
- package/dist/tui/screens/common-keys.d.ts +36 -0
- package/dist/tui/screens/common-keys.d.ts.map +1 -0
- package/dist/tui/screens/common-keys.js +67 -0
- package/dist/tui/screens/common-keys.js.map +1 -0
- package/dist/tui/screens/handoff-choice.d.ts.map +1 -1
- package/dist/tui/screens/handoff-choice.js +4 -3
- package/dist/tui/screens/handoff-choice.js.map +1 -1
- package/dist/tui/screens/index.d.ts +1 -1
- package/dist/tui/screens/index.d.ts.map +1 -1
- package/dist/tui/screens/index.js +1 -1
- package/dist/tui/screens/index.js.map +1 -1
- package/dist/tui/screens/input-row.d.ts +64 -0
- package/dist/tui/screens/input-row.d.ts.map +1 -0
- package/dist/tui/screens/input-row.js +67 -0
- package/dist/tui/screens/input-row.js.map +1 -0
- package/dist/tui/screens/input.d.ts +11 -1
- package/dist/tui/screens/input.d.ts.map +1 -1
- package/dist/tui/screens/input.js +21 -12
- package/dist/tui/screens/input.js.map +1 -1
- package/dist/tui/screens/layout.d.ts +8 -0
- package/dist/tui/screens/layout.d.ts.map +1 -1
- package/dist/tui/screens/layout.js +6 -2
- package/dist/tui/screens/layout.js.map +1 -1
- package/dist/tui/screens/lines.d.ts.map +1 -1
- package/dist/tui/screens/lines.js +6 -6
- package/dist/tui/screens/lines.js.map +1 -1
- package/dist/tui/screens/messages-view.d.ts.map +1 -1
- package/dist/tui/screens/messages-view.js +5 -4
- package/dist/tui/screens/messages-view.js.map +1 -1
- package/dist/tui/screens/notice-bar.d.ts +5 -0
- package/dist/tui/screens/notice-bar.d.ts.map +1 -0
- package/dist/tui/screens/notice-bar.js +15 -0
- package/dist/tui/screens/notice-bar.js.map +1 -0
- package/dist/tui/screens/notice.d.ts +40 -8
- package/dist/tui/screens/notice.d.ts.map +1 -1
- package/dist/tui/screens/notice.js +75 -15
- package/dist/tui/screens/notice.js.map +1 -1
- package/dist/tui/screens/overlays.d.ts.map +1 -1
- package/dist/tui/screens/overlays.js +3 -2
- package/dist/tui/screens/overlays.js.map +1 -1
- package/dist/tui/screens/splash.d.ts +1 -1
- package/dist/tui/screens/splash.d.ts.map +1 -1
- package/dist/tui/screens/splash.js +5 -2
- package/dist/tui/screens/splash.js.map +1 -1
- package/dist/tui/screens/use-chat-viewport.d.ts +22 -0
- package/dist/tui/screens/use-chat-viewport.d.ts.map +1 -0
- package/dist/tui/screens/use-chat-viewport.js +50 -0
- package/dist/tui/screens/use-chat-viewport.js.map +1 -0
- package/dist/tui/screens/use-input-editing.d.ts +44 -0
- package/dist/tui/screens/use-input-editing.d.ts.map +1 -0
- package/dist/tui/screens/use-input-editing.js +192 -0
- package/dist/tui/screens/use-input-editing.js.map +1 -0
- package/dist/tui/screens/use-overlays.d.ts +25 -0
- package/dist/tui/screens/use-overlays.d.ts.map +1 -0
- package/dist/tui/screens/use-overlays.js +32 -0
- package/dist/tui/screens/use-overlays.js.map +1 -0
- package/dist/tui/screens/use-wizard-host.d.ts +35 -0
- package/dist/tui/screens/use-wizard-host.d.ts.map +1 -0
- package/dist/tui/screens/use-wizard-host.js +103 -0
- package/dist/tui/screens/use-wizard-host.js.map +1 -0
- package/dist/tui/status-segments.d.ts +37 -0
- package/dist/tui/status-segments.d.ts.map +1 -0
- package/dist/tui/status-segments.js +166 -0
- package/dist/tui/status-segments.js.map +1 -0
- package/dist/tui/text.d.ts +8 -5
- package/dist/tui/text.d.ts.map +1 -1
- package/dist/tui/text.js +95 -35
- package/dist/tui/text.js.map +1 -1
- package/dist/tui/token-rate.d.ts +83 -0
- package/dist/tui/token-rate.d.ts.map +1 -0
- package/dist/tui/token-rate.js +195 -0
- package/dist/tui/token-rate.js.map +1 -0
- package/dist/types.d.ts +0 -3
- package/dist/types.d.ts.map +1 -1
- 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;
|
|
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;
|
|
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
|
-
|
|
49
|
-
|
|
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,
|
|
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"}
|
package/dist/format-time.d.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 统一时间格式化工具
|
|
3
3
|
*
|
|
4
|
-
*
|
|
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
|
-
*
|
|
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
|
-
* 例:
|
|
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
|
|
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"}
|
package/dist/format-time.js
CHANGED
|
@@ -1,13 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 统一时间格式化工具
|
|
3
3
|
*
|
|
4
|
-
*
|
|
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
|
-
|
|
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
|
|
36
|
+
return t("time.yesterday", { time: d.format("HH:mm") });
|
|
28
37
|
}
|
|
29
38
|
if (d.isSame(now, "year")) {
|
|
30
|
-
return d.format("
|
|
39
|
+
return d.format(t("time.pattern.thisYear"));
|
|
31
40
|
}
|
|
32
|
-
return d.format("
|
|
41
|
+
return d.format(t("time.pattern.older"));
|
|
33
42
|
}
|
|
34
43
|
/**
|
|
35
|
-
*
|
|
36
|
-
*
|
|
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("
|
|
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
|
-
*
|
|
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("
|
|
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
|
|
71
|
+
return t("time.messageCount", { n: messageCount, time: formatRelativeTime(isoString) });
|
|
54
72
|
}
|
|
55
73
|
/**
|
|
56
74
|
* 格式化文件大小为人类可读格式
|
package/dist/format-time.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-time.js","sourceRoot":"","sources":["../src/format-time.ts"],"names":[],"mappings":"AAAA
|
|
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;
|
|
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"}
|
package/dist/handoff-service.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { HandoffService, } from "@ai-zen/agents-sdk";
|
|
2
|
-
import { saveConversation,
|
|
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" ? "
|
|
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
|
|
30
|
+
const { promptTokens, handoffTokens } = hctx;
|
|
31
|
+
const isAuto = promptTokens != null && handoffTokens != null;
|
|
31
32
|
if (isAuto) {
|
|
32
|
-
log(
|
|
33
|
+
log(t("handoff.autoDetected", {
|
|
34
|
+
used: promptTokens,
|
|
35
|
+
limit: handoffTokens,
|
|
36
|
+
mode: describeMode(hctx.requestedMode),
|
|
37
|
+
}));
|
|
33
38
|
}
|
|
34
39
|
else {
|
|
35
|
-
log(
|
|
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(
|
|
46
|
+
log(t("handoff.degraded", {
|
|
47
|
+
requested: describeMode(hctx.requestedMode),
|
|
48
|
+
mode: describeMode(hctx.mode),
|
|
49
|
+
}));
|
|
42
50
|
}
|
|
43
|
-
log(
|
|
51
|
+
log(t("handoff.path", { path: hctx.handoffPath }));
|
|
44
52
|
// 迁移前(历史尚未剔除)保存旧对话:此时已包含交接回合,可完整审计
|
|
45
53
|
if (hctx.migrating) {
|
|
46
54
|
await saveConversation(ctx);
|
|
47
|
-
log(
|
|
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(
|
|
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
|
-
|
|
69
|
-
const now = new Date().toISOString();
|
|
70
|
-
await conversationRepository.write({
|
|
76
|
+
await persistConversation({
|
|
71
77
|
id,
|
|
72
|
-
agentId: ctx.agentId
|
|
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(
|
|
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":"AAAA,OAAO,EACL,cAAc,GAGf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,gBAAgB,EAChB,
|
|
1
|
+
{"version":3,"file":"handoff-service.js","sourceRoot":"","sources":["../src/handoff-service.ts"],"names":[],"mappings":"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"}
|
package/dist/hook.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"
|
|
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
|
-
|
|
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("
|
|
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
|
-
|
|
67
|
-
|
|
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
|
-
|
|
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" +
|
|
74
|
-
console.log(
|
|
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("
|
|
77
|
-
console.log(
|
|
78
|
-
console.log(
|
|
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("
|
|
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("
|
|
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("
|
|
150
|
+
console.log(t("hook.notInstalled"));
|
|
97
151
|
return;
|
|
98
152
|
}
|
|
99
153
|
await fs.writeFile(shell.rcFile, cleaned, "utf-8");
|
|
100
|
-
console.log(
|
|
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":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;
|
|
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"}
|