@ai-zen/cli 1.0.0-alpha.3 → 1.0.0-alpha.30
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 +885 -0
- package/LICENSE +21 -0
- package/README.md +135 -30
- package/README.zh.md +135 -30
- package/dist/agent-creator.d.ts +11 -0
- package/dist/agent-creator.d.ts.map +1 -1
- package/dist/agent-creator.js +50 -20
- 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 +46 -4
- package/dist/agents-store.js.map +1 -1
- package/dist/auto-migrate-confirm.d.ts +43 -0
- package/dist/auto-migrate-confirm.d.ts.map +1 -0
- package/dist/auto-migrate-confirm.js +47 -0
- package/dist/auto-migrate-confirm.js.map +1 -0
- package/dist/clipboard.d.ts +68 -0
- package/dist/clipboard.d.ts.map +1 -0
- package/dist/clipboard.js +177 -0
- package/dist/clipboard.js.map +1 -0
- package/dist/config-editor.d.ts +42 -5
- package/dist/config-editor.d.ts.map +1 -1
- package/dist/config-editor.js +80 -27
- package/dist/config-editor.js.map +1 -1
- package/dist/config.d.ts +76 -17
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +143 -39
- package/dist/config.js.map +1 -1
- package/dist/conversation-commands/registry.d.ts +127 -4
- package/dist/conversation-commands/registry.d.ts.map +1 -1
- package/dist/conversation-commands/registry.js +93 -14
- package/dist/conversation-commands/registry.js.map +1 -1
- package/dist/conversation-persist-plugin.d.ts +0 -1
- package/dist/conversation-persist-plugin.d.ts.map +1 -1
- package/dist/conversation-persist-plugin.js +7 -16
- package/dist/conversation-persist-plugin.js.map +1 -1
- package/dist/conversation-repository.d.ts +79 -18
- package/dist/conversation-repository.d.ts.map +1 -1
- package/dist/conversation-repository.js +96 -30
- package/dist/conversation-repository.js.map +1 -1
- package/dist/cwd-tracker-plugin.d.ts.map +1 -1
- package/dist/cwd-tracker-plugin.js +22 -7
- 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 +19 -0
- package/dist/handoff-service.d.ts.map +1 -0
- package/dist/handoff-service.js +89 -0
- package/dist/handoff-service.js.map +1 -0
- 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 +303 -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 +247 -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 +37 -0
- package/dist/i18n/preferences.d.ts.map +1 -0
- package/dist/i18n/preferences.js +73 -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 +306 -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 +251 -0
- package/dist/i18n/zh.js.map +1 -0
- package/dist/index.js +72 -25
- 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 +58 -0
- package/dist/model-switch.d.ts.map +1 -0
- package/dist/model-switch.js +62 -0
- package/dist/model-switch.js.map +1 -0
- package/dist/reasoning-effort.d.ts +96 -0
- package/dist/reasoning-effort.d.ts.map +1 -0
- package/dist/reasoning-effort.js +164 -0
- package/dist/reasoning-effort.js.map +1 -0
- package/dist/reasoning-presets.d.ts +34 -0
- package/dist/reasoning-presets.d.ts.map +1 -0
- package/dist/reasoning-presets.js +85 -0
- package/dist/reasoning-presets.js.map +1 -0
- package/dist/sdk-log.d.ts +84 -0
- package/dist/sdk-log.d.ts.map +1 -0
- package/dist/sdk-log.js +167 -0
- package/dist/sdk-log.js.map +1 -0
- package/dist/session-pointer.d.ts.map +1 -1
- package/dist/session-pointer.js +10 -4
- package/dist/session-pointer.js.map +1 -1
- package/dist/stdio-runner.d.ts.map +1 -1
- package/dist/stdio-runner.js +32 -30
- package/dist/stdio-runner.js.map +1 -1
- package/dist/sub-agent-guard-plugin.d.ts +10 -7
- package/dist/sub-agent-guard-plugin.d.ts.map +1 -1
- package/dist/sub-agent-guard-plugin.js +12 -9
- package/dist/sub-agent-guard-plugin.js.map +1 -1
- package/dist/tui/chat-history.d.ts +29 -0
- package/dist/tui/chat-history.d.ts.map +1 -0
- package/dist/tui/chat-history.js +55 -0
- package/dist/tui/chat-history.js.map +1 -0
- package/dist/tui/chat-session.d.ts +177 -57
- package/dist/tui/chat-session.d.ts.map +1 -1
- package/dist/tui/chat-session.js +362 -126
- package/dist/tui/chat-session.js.map +1 -1
- package/dist/tui/components.d.ts +113 -7
- package/dist/tui/components.d.ts.map +1 -1
- package/dist/tui/components.js +177 -12
- package/dist/tui/components.js.map +1 -1
- package/dist/tui/config-wizard/detail.d.ts +18 -10
- package/dist/tui/config-wizard/detail.d.ts.map +1 -1
- package/dist/tui/config-wizard/detail.js +53 -46
- package/dist/tui/config-wizard/detail.js.map +1 -1
- package/dist/tui/config-wizard/engine.d.ts +2 -2
- package/dist/tui/config-wizard/engine.d.ts.map +1 -1
- package/dist/tui/config-wizard/engine.js +48 -26
- package/dist/tui/config-wizard/engine.js.map +1 -1
- package/dist/tui/config-wizard/fields.d.ts +3 -1
- package/dist/tui/config-wizard/fields.d.ts.map +1 -1
- package/dist/tui/config-wizard/fields.js +202 -167
- package/dist/tui/config-wizard/fields.js.map +1 -1
- package/dist/tui/config-wizard/frame.js +1 -1
- package/dist/tui/config-wizard/kv-editor.d.ts.map +1 -1
- package/dist/tui/config-wizard/kv-editor.js +13 -5
- package/dist/tui/config-wizard/kv-editor.js.map +1 -1
- package/dist/tui/config-wizard/list.d.ts +3 -1
- package/dist/tui/config-wizard/list.d.ts.map +1 -1
- package/dist/tui/config-wizard/list.js +4 -4
- 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 +33 -21
- package/dist/tui/config-wizard/menu.js.map +1 -1
- package/dist/tui/config-wizard/prompt-editor.d.ts +8 -1
- package/dist/tui/config-wizard/prompt-editor.d.ts.map +1 -1
- package/dist/tui/config-wizard/prompt-editor.js +11 -7
- 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 +50 -29
- 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 +77 -27
- 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 +27 -14
- 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 +29 -25
- 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 +98 -43
- 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/config-wizard/types.d.ts +31 -3
- package/dist/tui/config-wizard/types.d.ts.map +1 -1
- package/dist/tui/config-wizard/types.js.map +1 -1
- package/dist/tui/file-index.d.ts +38 -0
- package/dist/tui/file-index.d.ts.map +1 -0
- package/dist/tui/file-index.js +117 -0
- package/dist/tui/file-index.js.map +1 -0
- package/dist/tui/index.d.ts +18 -1
- package/dist/tui/index.d.ts.map +1 -1
- package/dist/tui/index.js +107 -49
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/input-editing.d.ts +52 -0
- package/dist/tui/input-editing.d.ts.map +1 -0
- package/dist/tui/input-editing.js +91 -0
- package/dist/tui/input-editing.js.map +1 -0
- package/dist/tui/key-debug.d.ts +62 -0
- package/dist/tui/key-debug.d.ts.map +1 -0
- package/dist/tui/key-debug.js +92 -0
- package/dist/tui/key-debug.js.map +1 -0
- package/dist/tui/mention.d.ts +47 -0
- package/dist/tui/mention.d.ts.map +1 -0
- package/dist/tui/mention.js +152 -0
- package/dist/tui/mention.js.map +1 -0
- package/dist/tui/mouse.d.ts +55 -0
- package/dist/tui/mouse.d.ts.map +1 -0
- package/dist/tui/mouse.js +74 -0
- package/dist/tui/mouse.js.map +1 -0
- 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/agent-tabs.d.ts +53 -0
- package/dist/tui/screens/agent-tabs.d.ts.map +1 -0
- package/dist/tui/screens/agent-tabs.js +81 -0
- package/dist/tui/screens/agent-tabs.js.map +1 -0
- package/dist/tui/screens/chat-commands.d.ts +82 -3
- package/dist/tui/screens/chat-commands.d.ts.map +1 -1
- package/dist/tui/screens/chat-commands.js +688 -160
- package/dist/tui/screens/chat-commands.js.map +1 -1
- package/dist/tui/screens/chat.d.ts +57 -5
- package/dist/tui/screens/chat.d.ts.map +1 -1
- package/dist/tui/screens/chat.js +799 -304
- 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/frame-buffer.d.ts +47 -0
- package/dist/tui/screens/frame-buffer.d.ts.map +1 -0
- package/dist/tui/screens/frame-buffer.js +78 -0
- package/dist/tui/screens/frame-buffer.js.map +1 -0
- package/dist/tui/screens/handoff-choice.d.ts +37 -0
- package/dist/tui/screens/handoff-choice.d.ts.map +1 -0
- package/dist/tui/screens/handoff-choice.js +42 -0
- package/dist/tui/screens/handoff-choice.js.map +1 -0
- package/dist/tui/screens/index.d.ts +11 -9
- package/dist/tui/screens/index.d.ts.map +1 -1
- package/dist/tui/screens/index.js +9 -8
- 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 +77 -1
- package/dist/tui/screens/input.d.ts.map +1 -1
- package/dist/tui/screens/input.js +125 -8
- package/dist/tui/screens/input.js.map +1 -1
- package/dist/tui/screens/layout.d.ts +42 -3
- package/dist/tui/screens/layout.d.ts.map +1 -1
- package/dist/tui/screens/layout.js +43 -13
- package/dist/tui/screens/layout.js.map +1 -1
- package/dist/tui/screens/lines.d.ts +6 -36
- package/dist/tui/screens/lines.d.ts.map +1 -1
- package/dist/tui/screens/lines.js +8 -71
- package/dist/tui/screens/lines.js.map +1 -1
- package/dist/tui/screens/messages-view.d.ts +29 -0
- package/dist/tui/screens/messages-view.d.ts.map +1 -0
- package/dist/tui/screens/messages-view.js +162 -0
- package/dist/tui/screens/messages-view.js.map +1 -0
- 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 +21 -0
- package/dist/tui/screens/notice-bar.js.map +1 -0
- package/dist/tui/screens/notice.d.ts +66 -0
- package/dist/tui/screens/notice.d.ts.map +1 -0
- package/dist/tui/screens/notice.js +106 -0
- package/dist/tui/screens/notice.js.map +1 -0
- package/dist/tui/screens/overlays.d.ts.map +1 -1
- package/dist/tui/screens/overlays.js +4 -3
- package/dist/tui/screens/overlays.js.map +1 -1
- package/dist/tui/screens/render.d.ts +2 -4
- package/dist/tui/screens/render.d.ts.map +1 -1
- package/dist/tui/screens/render.js +19 -50
- package/dist/tui/screens/render.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 +12 -3
- 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 +69 -0
- package/dist/tui/screens/use-input-editing.d.ts.map +1 -0
- package/dist/tui/screens/use-input-editing.js +220 -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 +46 -0
- package/dist/tui/screens/use-wizard-host.d.ts.map +1 -0
- package/dist/tui/screens/use-wizard-host.js +123 -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 +27 -7
- package/dist/tui/text.d.ts.map +1 -1
- package/dist/tui/text.js +116 -38
- package/dist/tui/text.js.map +1 -1
- package/dist/tui/theme.d.ts +2 -0
- package/dist/tui/theme.d.ts.map +1 -1
- package/dist/tui/theme.js +2 -0
- package/dist/tui/theme.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 +7 -8
- package/dist/types.d.ts.map +1 -1
- package/dist/user-content.d.ts +41 -0
- package/dist/user-content.d.ts.map +1 -0
- package/dist/user-content.js +37 -0
- package/dist/user-content.js.map +1 -0
- package/dist/version-compare.d.ts +37 -0
- package/dist/version-compare.d.ts.map +1 -0
- package/dist/version-compare.js +105 -0
- package/dist/version-compare.js.map +1 -0
- package/dist/version.js.map +1 -1
- package/package.json +5 -4
- package/dist/auto-migrate-confirm-plugin.d.ts +0 -58
- package/dist/auto-migrate-confirm-plugin.d.ts.map +0 -1
- package/dist/auto-migrate-confirm-plugin.js +0 -61
- package/dist/auto-migrate-confirm-plugin.js.map +0 -1
- package/dist/migration-service.d.ts +0 -15
- package/dist/migration-service.d.ts.map +0 -1
- package/dist/migration-service.js +0 -59
- package/dist/migration-service.js.map +0 -1
- package/dist/tui/screens/state.d.ts +0 -30
- package/dist/tui/screens/state.d.ts.map +0 -1
- package/dist/tui/screens/state.js +0 -100
- package/dist/tui/screens/state.js.map +0 -1
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI 国际化(i18n)骨架。
|
|
3
|
+
*
|
|
4
|
+
* ## 设计取舍
|
|
5
|
+
*
|
|
6
|
+
* 1. **不做运行时语言包加载**:CLI 只有中 / 英两种语言,词典直接编译进产物,
|
|
7
|
+
* `setLocale()` 只是换一个引用,切换语言不需要重读磁盘、也不需要重启。
|
|
8
|
+
* 2. **key 扁平化**(`status.lastTokens` 这种点号命名):找词条靠 `dict[key]` 一次哈希,
|
|
9
|
+
* 没有嵌套遍历;同一 `域.语义` 前缀在词典里天然聚在一起,读起来就是分组。
|
|
10
|
+
* 3. **复数走 `Intl.PluralRules`**:英文需要 `1 tool` / `2 tools`,中文没有复数。
|
|
11
|
+
* 词条可写 `key_one` / `key_other` 变体,`t()` 在 `params.n` 是数字时自动选;
|
|
12
|
+
* 没有变体就用基础 key(中文只写基础 key 即可)。
|
|
13
|
+
* 4. **缺词条返回 key 本身**:不做静默回退到另一种语言 —— 那样英文界面里会突然冒出
|
|
14
|
+
* 中文,比直接显示 `notice.draftSaved` 更难定位。
|
|
15
|
+
*
|
|
16
|
+
* ## 语言怎么定
|
|
17
|
+
*
|
|
18
|
+
* 优先级:`LC_ALL` → `LC_MESSAGES` → `LANG` → `Intl` 系统 locale → **兜底 en**。
|
|
19
|
+
* 环境变量放在前面是因为它是进程直接可见、用户可控的;`Intl` 用来兜住
|
|
20
|
+
* 「系统语言是中文但 LANG 没设」这类平台差异(如 macOS 的 AppleLocale)。
|
|
21
|
+
*/
|
|
22
|
+
/** 支持的语言 */
|
|
23
|
+
export type Locale = "zh" | "en";
|
|
24
|
+
/** 插值参数(`{n}` / `{name}` 这类占位符) */
|
|
25
|
+
export type InterpolateParams = Record<string, string | number>;
|
|
26
|
+
/** 支持的语言清单(`/lang` 的候选集) */
|
|
27
|
+
export declare const SUPPORTED_LOCALES: readonly Locale[];
|
|
28
|
+
/** 无法识别系统语言时的兜底 */
|
|
29
|
+
export declare const DEFAULT_LOCALE: Locale;
|
|
30
|
+
/** 当前语言 */
|
|
31
|
+
export declare function getLocale(): Locale;
|
|
32
|
+
/** 设置当前语言(只改内存,落盘由 `preferences.ts` 负责) */
|
|
33
|
+
export declare function setLocale(locale: Locale): void;
|
|
34
|
+
/**
|
|
35
|
+
* 把任意语言标识归一为支持的 locale。
|
|
36
|
+
*
|
|
37
|
+
* 接受 `zh` / `zh-CN` / `zh_CN.UTF-8` / `en-US` 等写法;`C` / `POSIX` 这类
|
|
38
|
+
* 「没有语言信息」的值返回 `null`,交给下一个候选。
|
|
39
|
+
*/
|
|
40
|
+
export declare function normalizeLocale(value: string | null | undefined): Locale | null;
|
|
41
|
+
/**
|
|
42
|
+
* 识别系统语言:环境变量优先,`Intl` 兜底,最后回落英文。
|
|
43
|
+
*
|
|
44
|
+
* 参数可注入,便于单测不依赖宿主环境。
|
|
45
|
+
*/
|
|
46
|
+
export declare function detectLocale(env?: NodeJS.ProcessEnv, sys?: string | undefined): Locale;
|
|
47
|
+
/**
|
|
48
|
+
* 取词条。
|
|
49
|
+
*
|
|
50
|
+
* - `{name}` 占位符用 params 替换,缺参数时保留原样(便于一眼看出漏传);
|
|
51
|
+
* - 词条不存在时返回 key 本身。
|
|
52
|
+
*
|
|
53
|
+
* 刻意不做复数变体(Intl.PluralRules):本项目的数量词都写成「{n} 个 / (s)」,
|
|
54
|
+
* 一套从未启用的复数机制只会让词条表看起来支持它、实际没有一条在用。
|
|
55
|
+
*/
|
|
56
|
+
export declare function t(key: string, params?: InterpolateParams): string;
|
|
57
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAOH,YAAY;AACZ,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjC,mCAAmC;AACnC,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;AAEhE,4BAA4B;AAC5B,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAiB,CAAC;AAEjE,mBAAmB;AACnB,eAAO,MAAM,cAAc,EAAE,MAAa,CAAC;AAU3C,WAAW;AACX,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,2CAA2C;AAC3C,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAO/E;AAWD;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,GAAG,GAAE,MAAM,GAAG,SAA0B,GACvC,MAAM,CAOR;AAED;;;;;;;;GAQG;AACH,wBAAgB,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAIjE"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI 国际化(i18n)骨架。
|
|
3
|
+
*
|
|
4
|
+
* ## 设计取舍
|
|
5
|
+
*
|
|
6
|
+
* 1. **不做运行时语言包加载**:CLI 只有中 / 英两种语言,词典直接编译进产物,
|
|
7
|
+
* `setLocale()` 只是换一个引用,切换语言不需要重读磁盘、也不需要重启。
|
|
8
|
+
* 2. **key 扁平化**(`status.lastTokens` 这种点号命名):找词条靠 `dict[key]` 一次哈希,
|
|
9
|
+
* 没有嵌套遍历;同一 `域.语义` 前缀在词典里天然聚在一起,读起来就是分组。
|
|
10
|
+
* 3. **复数走 `Intl.PluralRules`**:英文需要 `1 tool` / `2 tools`,中文没有复数。
|
|
11
|
+
* 词条可写 `key_one` / `key_other` 变体,`t()` 在 `params.n` 是数字时自动选;
|
|
12
|
+
* 没有变体就用基础 key(中文只写基础 key 即可)。
|
|
13
|
+
* 4. **缺词条返回 key 本身**:不做静默回退到另一种语言 —— 那样英文界面里会突然冒出
|
|
14
|
+
* 中文,比直接显示 `notice.draftSaved` 更难定位。
|
|
15
|
+
*
|
|
16
|
+
* ## 语言怎么定
|
|
17
|
+
*
|
|
18
|
+
* 优先级:`LC_ALL` → `LC_MESSAGES` → `LANG` → `Intl` 系统 locale → **兜底 en**。
|
|
19
|
+
* 环境变量放在前面是因为它是进程直接可见、用户可控的;`Intl` 用来兜住
|
|
20
|
+
* 「系统语言是中文但 LANG 没设」这类平台差异(如 macOS 的 AppleLocale)。
|
|
21
|
+
*/
|
|
22
|
+
import { en } from "./en.js";
|
|
23
|
+
import { zh } from "./zh.js";
|
|
24
|
+
import { en as enWizard } from "./en-wizard.js";
|
|
25
|
+
import { zh as zhWizard } from "./zh-wizard.js";
|
|
26
|
+
/** 支持的语言清单(`/lang` 的候选集) */
|
|
27
|
+
export const SUPPORTED_LOCALES = ["zh", "en"];
|
|
28
|
+
/** 无法识别系统语言时的兜底 */
|
|
29
|
+
export const DEFAULT_LOCALE = "en";
|
|
30
|
+
// 主词典 + 配置中心专区,合并成同一张表(对 `t()` 而言无区别,只是拆文件便于维护)
|
|
31
|
+
const DICTS = {
|
|
32
|
+
zh: { ...zh, ...zhWizard },
|
|
33
|
+
en: { ...en, ...enWizard },
|
|
34
|
+
};
|
|
35
|
+
let currentLocale = DEFAULT_LOCALE;
|
|
36
|
+
/** 当前语言 */
|
|
37
|
+
export function getLocale() {
|
|
38
|
+
return currentLocale;
|
|
39
|
+
}
|
|
40
|
+
/** 设置当前语言(只改内存,落盘由 `preferences.ts` 负责) */
|
|
41
|
+
export function setLocale(locale) {
|
|
42
|
+
currentLocale = normalizeLocale(locale) ?? DEFAULT_LOCALE;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* 把任意语言标识归一为支持的 locale。
|
|
46
|
+
*
|
|
47
|
+
* 接受 `zh` / `zh-CN` / `zh_CN.UTF-8` / `en-US` 等写法;`C` / `POSIX` 这类
|
|
48
|
+
* 「没有语言信息」的值返回 `null`,交给下一个候选。
|
|
49
|
+
*/
|
|
50
|
+
export function normalizeLocale(value) {
|
|
51
|
+
if (!value)
|
|
52
|
+
return null;
|
|
53
|
+
const v = value.trim().toLowerCase();
|
|
54
|
+
if (!v)
|
|
55
|
+
return null;
|
|
56
|
+
if (v.startsWith("zh"))
|
|
57
|
+
return "zh";
|
|
58
|
+
if (v.startsWith("en"))
|
|
59
|
+
return "en";
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
/** 系统 locale(Node 的 ICU 结果,失败时返回 undefined) */
|
|
63
|
+
function systemLocale() {
|
|
64
|
+
try {
|
|
65
|
+
return Intl.DateTimeFormat().resolvedOptions().locale;
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* 识别系统语言:环境变量优先,`Intl` 兜底,最后回落英文。
|
|
73
|
+
*
|
|
74
|
+
* 参数可注入,便于单测不依赖宿主环境。
|
|
75
|
+
*/
|
|
76
|
+
export function detectLocale(env = process.env, sys = systemLocale()) {
|
|
77
|
+
const candidates = [env.LC_ALL, env.LC_MESSAGES, env.LANG, sys];
|
|
78
|
+
for (const raw of candidates) {
|
|
79
|
+
const hit = normalizeLocale(raw);
|
|
80
|
+
if (hit)
|
|
81
|
+
return hit;
|
|
82
|
+
}
|
|
83
|
+
return DEFAULT_LOCALE;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* 取词条。
|
|
87
|
+
*
|
|
88
|
+
* - `{name}` 占位符用 params 替换,缺参数时保留原样(便于一眼看出漏传);
|
|
89
|
+
* - 词条不存在时返回 key 本身。
|
|
90
|
+
*
|
|
91
|
+
* 刻意不做复数变体(Intl.PluralRules):本项目的数量词都写成「{n} 个 / (s)」,
|
|
92
|
+
* 一套从未启用的复数机制只会让词条表看起来支持它、实际没有一条在用。
|
|
93
|
+
*/
|
|
94
|
+
export function t(key, params) {
|
|
95
|
+
const template = DICTS[currentLocale][key];
|
|
96
|
+
if (template === undefined)
|
|
97
|
+
return key;
|
|
98
|
+
return interpolate(template, params);
|
|
99
|
+
}
|
|
100
|
+
/** 占位符替换:`{name}` → 对应值 */
|
|
101
|
+
function interpolate(template, params) {
|
|
102
|
+
if (!params)
|
|
103
|
+
return template;
|
|
104
|
+
return template.replace(/\{(\w+)\}/g, (match, name) => {
|
|
105
|
+
const value = params[name];
|
|
106
|
+
return value === undefined ? match : String(value);
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI 本地偏好 —— 语言等「只属于本机 CLI」的设置。
|
|
3
|
+
*
|
|
4
|
+
* ## 为什么不塞进 `config.json`
|
|
5
|
+
*
|
|
6
|
+
* `config.json` 的类型是 SDK 的 `AppConfig`,CLI 与 Desktop 共享同一份契约;
|
|
7
|
+
* 往里加 `ui.language` 等于把 CLI 的偏好写进跨端配置,桌面端读到时既无法理解、
|
|
8
|
+
* 又可能在回写时丢掉。因此单独放 `~/.ai-zen/cli/preferences.json`:
|
|
9
|
+
* 落点与 `conversations/`、`last-session.json` 同级,都是「CLI 运行时数据」。
|
|
10
|
+
*/
|
|
11
|
+
import { type Locale } from "./index.js";
|
|
12
|
+
/**
|
|
13
|
+
* 偏好文件路径;`AIZ_PREFERENCES_FILE` 可覆盖(测试与特殊部署用)。
|
|
14
|
+
*
|
|
15
|
+
* 每次调用都重新解析:测试会在用例之间换 `AI_ZEN_DIR`,若在模块加载时固化成常量,
|
|
16
|
+
* 进程内共享模块时后一个用例会继续读写前一个用例的目录。
|
|
17
|
+
*/
|
|
18
|
+
export declare function preferencesFile(): string;
|
|
19
|
+
/** CLI 本地偏好 */
|
|
20
|
+
export interface CliPreferences {
|
|
21
|
+
/** 界面语言;缺失表示「还没选过」,由系统语言识别决定 */
|
|
22
|
+
language?: Locale;
|
|
23
|
+
}
|
|
24
|
+
/** 读取偏好:文件缺失 / 损坏 / 字段非法都按「没设置」处理,绝不抛错 */
|
|
25
|
+
export declare function readPreferences(file?: string): Promise<CliPreferences>;
|
|
26
|
+
/** 写入偏好(先写临时文件再 rename,避免半个 JSON 留在磁盘上) */
|
|
27
|
+
export declare function writePreferences(next: CliPreferences, file?: string): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* 启动时初始化语言:有偏好用偏好,没有则按系统语言识别并**落盘**。
|
|
30
|
+
*
|
|
31
|
+
* 落盘这一步是有意的:识别结果只算一次,用户之后改了系统语言也不会让界面语言
|
|
32
|
+
* 悄悄漂移——想换就 `/lang`。
|
|
33
|
+
*/
|
|
34
|
+
export declare function initLocale(file?: string): Promise<Locale>;
|
|
35
|
+
/** 切换语言并落盘(`/lang` 用) */
|
|
36
|
+
export declare function persistLocale(locale: Locale, file?: string): Promise<void>;
|
|
37
|
+
//# sourceMappingURL=preferences.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../../src/i18n/preferences.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAA4C,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAEnF;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAKxC;AAED,eAAe;AACf,MAAM,WAAW,cAAc;IAC7B,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,0CAA0C;AAC1C,wBAAsB,eAAe,CACnC,IAAI,GAAE,MAA0B,GAC/B,OAAO,CAAC,cAAc,CAAC,CAYzB;AAED,2CAA2C;AAC3C,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,cAAc,EACpB,IAAI,GAAE,MAA0B,GAC/B,OAAO,CAAC,IAAI,CAAC,CAWf;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,IAAI,GAAE,MAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,CAMlF;AAED,yBAAyB;AACzB,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAA0B,GAC/B,OAAO,CAAC,IAAI,CAAC,CAGf"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI 本地偏好 —— 语言等「只属于本机 CLI」的设置。
|
|
3
|
+
*
|
|
4
|
+
* ## 为什么不塞进 `config.json`
|
|
5
|
+
*
|
|
6
|
+
* `config.json` 的类型是 SDK 的 `AppConfig`,CLI 与 Desktop 共享同一份契约;
|
|
7
|
+
* 往里加 `ui.language` 等于把 CLI 的偏好写进跨端配置,桌面端读到时既无法理解、
|
|
8
|
+
* 又可能在回写时丢掉。因此单独放 `~/.ai-zen/cli/preferences.json`:
|
|
9
|
+
* 落点与 `conversations/`、`last-session.json` 同级,都是「CLI 运行时数据」。
|
|
10
|
+
*/
|
|
11
|
+
import { mkdir, readFile, rename, writeFile } from "node:fs/promises";
|
|
12
|
+
import { dirname, join } from "node:path";
|
|
13
|
+
import { detectLocale, setLocale, normalizeLocale } from "./index.js";
|
|
14
|
+
/**
|
|
15
|
+
* 偏好文件路径;`AIZ_PREFERENCES_FILE` 可覆盖(测试与特殊部署用)。
|
|
16
|
+
*
|
|
17
|
+
* 每次调用都重新解析:测试会在用例之间换 `AI_ZEN_DIR`,若在模块加载时固化成常量,
|
|
18
|
+
* 进程内共享模块时后一个用例会继续读写前一个用例的目录。
|
|
19
|
+
*/
|
|
20
|
+
export function preferencesFile() {
|
|
21
|
+
const root = process.env.AI_ZEN_DIR ||
|
|
22
|
+
join(process.env.HOME || process.env.USERPROFILE || "", ".ai-zen");
|
|
23
|
+
return process.env.AIZ_PREFERENCES_FILE || join(root, "cli", "preferences.json");
|
|
24
|
+
}
|
|
25
|
+
/** 读取偏好:文件缺失 / 损坏 / 字段非法都按「没设置」处理,绝不抛错 */
|
|
26
|
+
export async function readPreferences(file = preferencesFile()) {
|
|
27
|
+
try {
|
|
28
|
+
const raw = await readFile(file, "utf-8");
|
|
29
|
+
const parsed = JSON.parse(raw);
|
|
30
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
|
|
31
|
+
return {};
|
|
32
|
+
const language = normalizeLocale(parsed.language);
|
|
33
|
+
return language ? { language } : {};
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return {};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/** 写入偏好(先写临时文件再 rename,避免半个 JSON 留在磁盘上) */
|
|
40
|
+
export async function writePreferences(next, file = preferencesFile()) {
|
|
41
|
+
const payload = {};
|
|
42
|
+
if (next.language)
|
|
43
|
+
payload.language = next.language;
|
|
44
|
+
try {
|
|
45
|
+
await mkdir(dirname(file), { recursive: true });
|
|
46
|
+
const tmp = `${file}.tmp`;
|
|
47
|
+
await writeFile(tmp, `${JSON.stringify(payload, null, 2)}\n`, "utf-8");
|
|
48
|
+
await rename(tmp, file);
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
/* 偏好写不进去不该阻塞启动:下一次启动会重新识别 */
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* 启动时初始化语言:有偏好用偏好,没有则按系统语言识别并**落盘**。
|
|
56
|
+
*
|
|
57
|
+
* 落盘这一步是有意的:识别结果只算一次,用户之后改了系统语言也不会让界面语言
|
|
58
|
+
* 悄悄漂移——想换就 `/lang`。
|
|
59
|
+
*/
|
|
60
|
+
export async function initLocale(file = preferencesFile()) {
|
|
61
|
+
const prefs = await readPreferences(file);
|
|
62
|
+
const locale = prefs.language ?? detectLocale();
|
|
63
|
+
setLocale(locale);
|
|
64
|
+
if (!prefs.language)
|
|
65
|
+
await writePreferences({ language: locale }, file);
|
|
66
|
+
return locale;
|
|
67
|
+
}
|
|
68
|
+
/** 切换语言并落盘(`/lang` 用) */
|
|
69
|
+
export async function persistLocale(locale, file = preferencesFile()) {
|
|
70
|
+
setLocale(locale);
|
|
71
|
+
await writePreferences({ language: locale }, file);
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=preferences.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preferences.js","sourceRoot":"","sources":["../../src/i18n/preferences.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 中文词条 —— 配置中心(`/config` 向导)专区。
|
|
3
|
+
*
|
|
4
|
+
* 单独成文件的原因:配置中心是 CLI 里文案最密集的一块(字段标签 / 校验消息 / 步骤标题),
|
|
5
|
+
* 塞进 `zh.ts` 会让主词典难以扫读。`index.ts` 会在启动时把它们合并进同一张表,
|
|
6
|
+
* 对 `t()` 来说没有区别。
|
|
7
|
+
*
|
|
8
|
+
* 命名:`field.*` 字段标签、`wiz.*` 向导结构、`err.*` 校验消息、`common.*` 通用小词。
|
|
9
|
+
*/
|
|
10
|
+
export declare const zh: Record<string, string>;
|
|
11
|
+
//# sourceMappingURL=zh-wizard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zh-wizard.d.ts","sourceRoot":"","sources":["../../src/i18n/zh-wizard.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAqTrC,CAAC"}
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 中文词条 —— 配置中心(`/config` 向导)专区。
|
|
3
|
+
*
|
|
4
|
+
* 单独成文件的原因:配置中心是 CLI 里文案最密集的一块(字段标签 / 校验消息 / 步骤标题),
|
|
5
|
+
* 塞进 `zh.ts` 会让主词典难以扫读。`index.ts` 会在启动时把它们合并进同一张表,
|
|
6
|
+
* 对 `t()` 来说没有区别。
|
|
7
|
+
*
|
|
8
|
+
* 命名:`field.*` 字段标签、`wiz.*` 向导结构、`err.*` 校验消息、`common.*` 通用小词。
|
|
9
|
+
*/
|
|
10
|
+
export const zh = {
|
|
11
|
+
// ---------- 字段名(详情屏 label,大量复用) ----------
|
|
12
|
+
"field.name": "名称",
|
|
13
|
+
"perm.tools": "工具",
|
|
14
|
+
"perm.skills": "技能",
|
|
15
|
+
"perm.mcps": "MCP",
|
|
16
|
+
"perm.subagents": "子 Agent",
|
|
17
|
+
"field.description": "描述",
|
|
18
|
+
"field.endpoint": "端点",
|
|
19
|
+
"field.modelName": "模型名",
|
|
20
|
+
"field.reasoningPreset": "思考策略",
|
|
21
|
+
"field.handoffThreshold": "交接阈值",
|
|
22
|
+
"field.guardThreshold": "阻断阈值",
|
|
23
|
+
"field.vision": "视觉",
|
|
24
|
+
"field.size": "尺寸",
|
|
25
|
+
"field.quality": "质量",
|
|
26
|
+
// ---------- 通用小词 ----------
|
|
27
|
+
"common.yes": "是",
|
|
28
|
+
"common.no": "否",
|
|
29
|
+
"common.empty": "(空)",
|
|
30
|
+
"common.emptyWithEditor": "(空)· Enter 打开编辑器",
|
|
31
|
+
"common.linesWithEditor": "{n} 行 · Enter 打开编辑器",
|
|
32
|
+
"common.bodyWithEditor": "{text} · Enter 打开编辑器",
|
|
33
|
+
"common.defaultInParens": "(默认)",
|
|
34
|
+
"common.sameAsId": "(同 id)",
|
|
35
|
+
"common.notAdjustable": "(不调档)",
|
|
36
|
+
"common.customOnlyNote": "(已标记为自定义,改动才会保留)",
|
|
37
|
+
// ---------- 校验消息 ----------
|
|
38
|
+
"err.nameRequired": "名称不能为空",
|
|
39
|
+
"err.baseUrlScheme": "Base URL 需以 http:// 或 https:// 开头",
|
|
40
|
+
"err.apiKeyRequired": "API Key 不能为空",
|
|
41
|
+
"err.modelNameRequired": "模型名不能为空",
|
|
42
|
+
"err.handoffPositive": "交接阈值需为正整数",
|
|
43
|
+
"err.handoffLessThanGuard": "交接阈值需小于阻断阈值",
|
|
44
|
+
"err.guardPositive": "阻断阈值需为正整数",
|
|
45
|
+
"err.guardGreaterThanHandoff": "阻断阈值需大于交接阈值",
|
|
46
|
+
"err.presetNotFound": "策略 \"{name}\" 不存在(可选:{options})",
|
|
47
|
+
"err.presetTableEmpty": "策略 \"{name}\" 不存在(策略表为空,见 reasoning-presets.json)",
|
|
48
|
+
"err.idRequired": "标识不能为空",
|
|
49
|
+
"err.functionNameRequired": "函数名不能为空",
|
|
50
|
+
"err.mcpNameTaken": "已存在名为 {name} 的服务器",
|
|
51
|
+
"err.agentIdTaken": "已存在标识 {name} 的定义",
|
|
52
|
+
"err.noEndpoint": "没有可用的端点,请先在「端点管理」里添加一个",
|
|
53
|
+
// ---------- 更多字段名(MCP / Agent 详情) ----------
|
|
54
|
+
"field.transport": "传输",
|
|
55
|
+
"field.command": "命令",
|
|
56
|
+
"field.args": "参数",
|
|
57
|
+
"field.env": "环境变量",
|
|
58
|
+
"field.headers": "请求头",
|
|
59
|
+
"field.id": "标识",
|
|
60
|
+
"field.model": "模型",
|
|
61
|
+
"field.prompt": "提示词",
|
|
62
|
+
"field.permissions": "权限",
|
|
63
|
+
"field.functionName": "函数名",
|
|
64
|
+
"field.functionDescription": "函数说明",
|
|
65
|
+
"field.paramsSchema": "参数 schema",
|
|
66
|
+
"field.enabled": "启用",
|
|
67
|
+
"common.unset": "(未设置)",
|
|
68
|
+
"common.disabledInParens": "否(已禁用)",
|
|
69
|
+
"common.transportStdio": "stdio(本地子进程)",
|
|
70
|
+
"common.transportMode": "传输方式",
|
|
71
|
+
"common.enabledState": "启用状态",
|
|
72
|
+
// ---------- 落盘反馈(带实体名的整句,必须参数化而非拼接) ----------
|
|
73
|
+
"wiz.endpointUpdated": "端点 {name} 的 {label} 已更新",
|
|
74
|
+
"wiz.modelUpdated": "模型 {name} 的 {label} 已更新{suffix}",
|
|
75
|
+
"wiz.imageModelUpdated": "图片模型 {name} 的 {label} 已更新{suffix}",
|
|
76
|
+
"wiz.mcpFieldUpdated": "MCP {id} 的{label}已更新({scope})",
|
|
77
|
+
"wiz.mcpRenamed": "MCP {id} 已重命名为 {name}({scope})",
|
|
78
|
+
"wiz.agentFieldUpdated": "{kind} {id} 的 {label} 已更新{suffix}",
|
|
79
|
+
"wiz.agentRenamed": "{kind} {id} 已重命名为 {name}",
|
|
80
|
+
"wiz.agentPermissionUpdated": "{kind} {id} 的 {dim} 权限已更新",
|
|
81
|
+
"wiz.presetLevels": "{name}({levels})",
|
|
82
|
+
"wiz.presetMissingName": "{name}(策略不存在)",
|
|
83
|
+
// ---------- 通用按钮 / 操作 ----------
|
|
84
|
+
"ui.save": "保存",
|
|
85
|
+
"ui.cancel": "取消",
|
|
86
|
+
"ui.back": "返回",
|
|
87
|
+
"ui.confirm": "确认",
|
|
88
|
+
"ui.select": "选择",
|
|
89
|
+
"ui.move": "移动",
|
|
90
|
+
"ui.toggle": "切换",
|
|
91
|
+
"ui.open": "打开",
|
|
92
|
+
"ui.edit": "编辑",
|
|
93
|
+
"ui.run": "执行",
|
|
94
|
+
"ui.delete": "删除",
|
|
95
|
+
"ui.add": "新增",
|
|
96
|
+
"ui.done": "完成",
|
|
97
|
+
"ui.plainOrMasked": "明文/掩码",
|
|
98
|
+
// ---------- 配置中心首页 ----------
|
|
99
|
+
"wiz.menu.title": "◆ 配置中心",
|
|
100
|
+
"wiz.menu.hint": "改动即时写入磁盘;涉及当前端点的改动会重建会话(消息保留)。",
|
|
101
|
+
"wiz.menu.configFile": "配置文件:{path}",
|
|
102
|
+
"wiz.menu.endpoints": "端点管理",
|
|
103
|
+
"wiz.menu.models": "模型管理",
|
|
104
|
+
"wiz.menu.imageModels": "图片模型",
|
|
105
|
+
"wiz.menu.mcp": "MCP 服务器",
|
|
106
|
+
"wiz.menu.agents": "Agent 定义",
|
|
107
|
+
"wiz.menu.defaults": "默认项",
|
|
108
|
+
"wiz.menu.maxToolOutput": "工具输出上限",
|
|
109
|
+
"wiz.menu.done": "完成",
|
|
110
|
+
"wiz.menu.savedCount": "已保存 {n} 项改动",
|
|
111
|
+
"wiz.menu.backToChat": "返回对话",
|
|
112
|
+
"wiz.menu.count": "{n} 个",
|
|
113
|
+
"wiz.menu.imageModelsSummary": "{n} 个 · 默认 {name}",
|
|
114
|
+
"wiz.menu.mcpSummary": "全局 {global} · 项目 {project}",
|
|
115
|
+
"wiz.menu.defaultsSummary": "Agent {agent} · 迁移 {model}",
|
|
116
|
+
"wiz.menu.maxToolOutputSummary": "{n} 字符",
|
|
117
|
+
"wiz.menu.agentsSummary": "Agent {agent} · Sub-agent {sub}",
|
|
118
|
+
"wiz.menu.doneReturn": "完成返回",
|
|
119
|
+
"common.unsetPlain": "未设置",
|
|
120
|
+
"wiz.pickTitle": "{label} · 选择",
|
|
121
|
+
"wiz.confirmTitle": "{label}?",
|
|
122
|
+
"wiz.irreversible": "{title} —— 此操作不可撤销",
|
|
123
|
+
"wiz.confirmAction": "确认{label}",
|
|
124
|
+
// ---------- 列表 / KV 编辑器 / 输入框 ----------
|
|
125
|
+
"wiz.listEmpty": " (无可选项)",
|
|
126
|
+
"wiz.truncated": " (共 {n} 项,仅显示前 {m} 项)",
|
|
127
|
+
"wiz.kvTitle": "{title} · {mode}",
|
|
128
|
+
"wiz.kvModeAdd": "新增",
|
|
129
|
+
"wiz.kvModeEdit": "编辑",
|
|
130
|
+
"wiz.kvHint": "格式:KEY=VALUE(键与值以首个 = 分隔)",
|
|
131
|
+
"wiz.kvExample": "例如 PATH=/usr/bin 或 Authorization=Bearer xxx",
|
|
132
|
+
"wiz.kvEmpty": " (暂无,按 Enter 新增)",
|
|
133
|
+
"err.keyValueFormat": "格式应为 KEY=VALUE",
|
|
134
|
+
"err.duplicateKey": "已存在 {key}",
|
|
135
|
+
"wiz.promptSecretHint": "(粘贴或输入后按 Enter 保存,Tab 可切明文核对)",
|
|
136
|
+
"wiz.promptHint": "(输入后按 Enter 确认)",
|
|
137
|
+
"scope.global": "全局",
|
|
138
|
+
"scope.project": "项目",
|
|
139
|
+
"common.noUrl": "(未配置 URL)",
|
|
140
|
+
"common.noCommand": "(未配置命令)",
|
|
141
|
+
"common.disabledSuffix": " · 已禁用",
|
|
142
|
+
// ---------- 模型 / 图片模型(列表 · 详情 · 新建) ----------
|
|
143
|
+
"wiz.kind.custom": "自定义",
|
|
144
|
+
"wiz.kind.factory": "出厂托管",
|
|
145
|
+
"wiz.modelKind.factoryNote": "出厂托管(编辑会自动转自定义)",
|
|
146
|
+
"wiz.modelKind.visionSuffix": " · 视觉",
|
|
147
|
+
"wiz.modelItem.hint": "{endpoint} · {kind}{vision}",
|
|
148
|
+
"wiz.detail.moveHint": "↑ ↓ 移动 · Enter 编辑/切换 · 改动即时写入磁盘",
|
|
149
|
+
"wiz.models.newItem": "+ 新建模型",
|
|
150
|
+
"wiz.models.newItemHint": "自动标记为自定义(custom)",
|
|
151
|
+
"wiz.models.subtitle": "共 {n} 个模型 · 选中后可就地编辑 / 删除",
|
|
152
|
+
"wiz.models.detailTitle": "◆ 模型 · {name}",
|
|
153
|
+
"wiz.models.detailLine": "{id} · {kind}",
|
|
154
|
+
"wiz.models.delete": "删除模型",
|
|
155
|
+
"wiz.models.restore": "恢复出厂设置",
|
|
156
|
+
"wiz.models.restored": "已把模型 {name} 恢复为出厂定义",
|
|
157
|
+
"wiz.models.deleted": "已删除模型 {name}",
|
|
158
|
+
"wiz.models.createTitle": "新建模型 · 名称",
|
|
159
|
+
"wiz.models.createDesc": "用于在配置与状态栏中标识该模型,例如 {example}",
|
|
160
|
+
"wiz.models.created": "已新建模型 {name}({id},已标记为自定义)",
|
|
161
|
+
"wiz.models.noEndpoint": "⚠ 尚未配置端点,无法创建;请先到「端点管理」添加端点",
|
|
162
|
+
"wiz.models.defaultEndpoint": "将默认绑定端点:{endpoint}",
|
|
163
|
+
"wiz.createAndEdit": "创建并编辑",
|
|
164
|
+
"wiz.imageModels.newItem": "+ 新建图片模型",
|
|
165
|
+
"wiz.imageModels.subtitle": "共 {n} 个 · 选中后可就地编辑 / 删除",
|
|
166
|
+
"wiz.imageModels.detailTitle": "◆ 图片模型 · {name}",
|
|
167
|
+
"wiz.imageModels.delete": "删除图片模型",
|
|
168
|
+
"wiz.imageModels.restore": "恢复出厂设置",
|
|
169
|
+
"wiz.imageModels.restored": "已把图片模型 {name} 恢复为出厂定义",
|
|
170
|
+
"wiz.imageModels.deleted": "已删除图片模型 {name}",
|
|
171
|
+
"wiz.imageModels.createTitle": "新建图片模型 · 名称",
|
|
172
|
+
"wiz.imageModels.created": "已新建图片模型 {name}({id},已标记为自定义)",
|
|
173
|
+
// ---------- Agent 定义(列表 · 详情 · 权限 · 文本编辑 · 新建) ----------
|
|
174
|
+
"wiz.agents.new": "+ 新建 Agent",
|
|
175
|
+
"wiz.agents.newHint": "顶层 Agent(可作为默认 Agent)",
|
|
176
|
+
"wiz.agents.newSub": "+ 新建 Sub-agent",
|
|
177
|
+
"wiz.agents.newSubHint": "可被委派的子 Agent",
|
|
178
|
+
"wiz.agents.title": "◆ Agent 定义",
|
|
179
|
+
"wiz.agents.itemHint": "{kind} · {id}{factory}",
|
|
180
|
+
"wiz.agent.factorySuffix": " · 出厂托管",
|
|
181
|
+
"wiz.agent.subSuffix": " · Sub-agent",
|
|
182
|
+
"wiz.agent.detailTitle": "◆ {kind} · {name}",
|
|
183
|
+
"wiz.agent.detailLine": "{id} · {kind}{subSuffix}",
|
|
184
|
+
"wiz.agent.moveHint": "↑ ↓ 移动 · Enter 编辑/切换/进入 · 改动即时写入磁盘",
|
|
185
|
+
"wiz.agent.deleteAction": "删除{kind}",
|
|
186
|
+
"wiz.agent.restore": "恢复出厂设置",
|
|
187
|
+
"wiz.agentRestored": "已把 {kind} {id} 的提示词恢复为出厂定义",
|
|
188
|
+
"wiz.agent.subscreenTitle": "◆ {kind} · {id} · {label}",
|
|
189
|
+
"wiz.agent.permHint": "格式:`allow: a, b` 或 `deny: x`(逗号分隔;留空清除该维)",
|
|
190
|
+
"wiz.agent.permMoveHint": "↑ ↓ 移动 · Enter 编辑 · Esc 返回",
|
|
191
|
+
"wiz.agent.fnParamsSubtitle": "JSON 对象;Enter 打开系统编辑器,保存后立即校验并写盘",
|
|
192
|
+
"wiz.agent.editorSubtitle": "Enter 打开系统编辑器($EDITOR / notepad);改完保存即写盘",
|
|
193
|
+
"wiz.agent.fnParamsUpdated": "{name} 的参数 schema 已更新",
|
|
194
|
+
"wiz.agent.fnDescUpdated": "{name} 的函数说明已更新",
|
|
195
|
+
"wiz.agent.promptUpdated": "{name} 的提示词已更新",
|
|
196
|
+
"wiz.agent.newTitle": "新建 {kind} · 名称",
|
|
197
|
+
"wiz.agent.newDesc": "用于在列表与状态栏中标识该定义,例如 {example}",
|
|
198
|
+
"wiz.agent.newDescAgent": "创建后可在「默认项 → 默认 Agent」中选为默认",
|
|
199
|
+
"wiz.agent.newDescSub": "创建后自动生成 function 骨架(可编辑)",
|
|
200
|
+
"wiz.agent.created": "已新建 {kind} {name}({id})",
|
|
201
|
+
// ---------- 工具输出上限 / 端点字段直达编辑 ----------
|
|
202
|
+
"wiz.maxToolOutput.title": "工具输出上限(字符数)",
|
|
203
|
+
"wiz.currentLine": "当前:{value}",
|
|
204
|
+
"wiz.maxToolOutput.desc": "工具单次输出超过该值时落盘或仅警告,避免撑爆上下文",
|
|
205
|
+
"wiz.maxToolOutput.updated": "工具输出上限 → {n} 字符",
|
|
206
|
+
"err.positiveInteger": "需为正整数",
|
|
207
|
+
"wiz.apiKey.titleOnboarding": "首次配置 · 设置 {name} 的 API Key",
|
|
208
|
+
"wiz.apiKey.title": "设置 API Key · {name}",
|
|
209
|
+
"wiz.apiKey.endpointLine": "端点:{name} · {url}",
|
|
210
|
+
"wiz.apiKey.guideUrl": "{vendor} 申请地址:{url}",
|
|
211
|
+
"wiz.apiKey.guideNoUrl": "{vendor}:请向服务提供方获取 API Key",
|
|
212
|
+
"wiz.apiKey.onboardingNote": "保存后立即进入对话(Esc 放弃并退出)。",
|
|
213
|
+
"wiz.apiKey.saveAndEnter": "保存并进入对话",
|
|
214
|
+
"ui.discard": "放弃",
|
|
215
|
+
"wiz.baseUrl.title": "设置 Base URL · {name}",
|
|
216
|
+
"wiz.baseUrl.hint": "需以 http:// 或 https:// 开头(OpenAI 兼容端点)",
|
|
217
|
+
// ---------- MCP 服务器 / 默认项 ----------
|
|
218
|
+
"wiz.mcp.switchScope": "⇄ 切换到「{scope}」作用域",
|
|
219
|
+
"wiz.mcp.serverCount": "{n} 个服务器",
|
|
220
|
+
"wiz.mcp.newItem": "+ 新建服务器",
|
|
221
|
+
"wiz.mcp.listTitle": "◆ MCP 服务器 · {scope}",
|
|
222
|
+
"wiz.mcp.damaged": "mcp.json 无法解析({error}),本屏按空配置呈现",
|
|
223
|
+
"wiz.mcp.listSubtitle": "{n} 个 · {path}",
|
|
224
|
+
"wiz.mcp.detailTitle": "◆ MCP · {id}",
|
|
225
|
+
"wiz.scopePath": "{scope} · {path}",
|
|
226
|
+
"wiz.mcp.detailLine": "传输 {transport} · ↑ ↓ 移动 · Enter 编辑/切换",
|
|
227
|
+
"wiz.mcp.delete": "删除服务器",
|
|
228
|
+
"wiz.mcp.deleted": "已删除 MCP 服务器 {id}({scope})",
|
|
229
|
+
"wiz.mcp.kvTitle": "◆ MCP · {id} · {label}",
|
|
230
|
+
"wiz.mcp.kvSubtitle": "{scope} · {n} 项",
|
|
231
|
+
"wiz.mcp.newTitle": "新建 MCP 服务器 · 名称({scope})",
|
|
232
|
+
"wiz.mcp.newDescKey": "作为 mcpServers 的键,例如 github / chrome-devtools",
|
|
233
|
+
"wiz.mcp.newDescDefault": "创建后默认 stdio,可编辑传输方式 / 命令 / 参数 / 环境变量等",
|
|
234
|
+
"wiz.mcp.created": "已新建 MCP 服务器 {id}({scope})",
|
|
235
|
+
"wiz.defaults.title": "默认项",
|
|
236
|
+
"wiz.defaults.subtitle": "新会话 / 任务迁移使用的默认值",
|
|
237
|
+
"wiz.defaults.pickSubtitle": "选中后即时写盘",
|
|
238
|
+
"wiz.defaults.imageModel": "默认图片模型",
|
|
239
|
+
"wiz.defaults.agent": "默认 Agent",
|
|
240
|
+
"wiz.defaults.migrationModel": "默认迁移模型",
|
|
241
|
+
"wiz.defaults.keyReady": "密钥就绪",
|
|
242
|
+
"wiz.defaults.missingKey": "缺 API Key",
|
|
243
|
+
"wiz.defaults.itemHint": "{endpoint} · {state}",
|
|
244
|
+
"wiz.defaults.updated": "{label} → {value}",
|
|
245
|
+
"wiz.defaults.strategyMessage": "中断时保留已输出内容",
|
|
246
|
+
"wiz.defaults.strategyToolRound": "中断的工具轮次",
|
|
247
|
+
"wiz.defaults.strategySubtitle": "选中后即时写盘,关闭配置中心时重建会话生效",
|
|
248
|
+
"wiz.strategy.keep": "保留(keep)",
|
|
249
|
+
"wiz.strategy.drop": "丢弃(drop)",
|
|
250
|
+
"wiz.strategy.fill": "整轮保留(fill)",
|
|
251
|
+
"wiz.strategy.keepHint": "中断后半截思考与回答留在上下文里,模型能接着往下说",
|
|
252
|
+
"wiz.strategy.dropHint": "中断后那半截不进上下文(core 库级默认)",
|
|
253
|
+
"wiz.strategy.fillHint": "恢复整轮并给未完成的结果补原因,tool_calls 与结果必须配对",
|
|
254
|
+
"wiz.strategy.toolDropHint": "整轮出列:assistant 与其工具结果都不发给模型",
|
|
255
|
+
// ---------- 端点列表 / 新建端点 ----------
|
|
256
|
+
"ui.next": "下一步",
|
|
257
|
+
"common.listSep": "、",
|
|
258
|
+
"wiz.endpoints.newItem": "+ 新建端点",
|
|
259
|
+
"wiz.endpoints.newItemHint": "自定义 OpenAI 兼容服务",
|
|
260
|
+
"wiz.endpoints.subtitle": "共 {n} 个端点 · 选中后可就地编辑 / 删除",
|
|
261
|
+
"wiz.endpoints.detailTitle": "◆ 端点 · {name}",
|
|
262
|
+
"wiz.endpoints.detailLine": "{id}{refs}",
|
|
263
|
+
"wiz.endpoints.refSuffix": " · {n} 个模型引用",
|
|
264
|
+
"wiz.endpoints.moveHint": "↑ ↓ 移动 · Enter 编辑 · 改动即时写入磁盘",
|
|
265
|
+
"wiz.endpoints.delete": "删除端点",
|
|
266
|
+
"wiz.endpoints.deleteBlocked": "无法删除:仍被 {n} 个模型引用({models}),请先删除或改绑这些模型",
|
|
267
|
+
"wiz.endpoints.deleted": "已删除端点 {name}",
|
|
268
|
+
"wiz.newEndpoint.nameTitle": "新建端点 · 名称",
|
|
269
|
+
"wiz.newEndpoint.nameDesc": "用于在配置与状态栏中标识该服务,例如 {example}",
|
|
270
|
+
"wiz.newEndpoint.baseUrlTitle": "新建端点 · Base URL",
|
|
271
|
+
"wiz.newEndpoint.baseUrlDesc": "例如 https://api.openai.com/v1(须为 OpenAI 兼容接口)",
|
|
272
|
+
"wiz.newEndpoint.apiKeyTitle": "新建端点 · API Key",
|
|
273
|
+
"wiz.newEndpoint.apiKeyOptional": "可留空稍后再补(留空时该端点暂不可用)",
|
|
274
|
+
"wiz.newEndpoint.save": "保存端点",
|
|
275
|
+
"wiz.newEndpoint.created": "已添加端点 {name}({id}){suffix}",
|
|
276
|
+
"wiz.newEndpoint.keyPending": " · API Key 待补充",
|
|
277
|
+
// ---------- 写盘失败 / 编辑器 / 残留小词 ----------
|
|
278
|
+
"wiz.writeConfigFailed": "写入配置失败:{error}",
|
|
279
|
+
"wiz.writeMcpFailed": "写入 MCP 配置失败:{error}",
|
|
280
|
+
"wiz.writeAgentFailed": "写入 Agent 定义失败:{error}",
|
|
281
|
+
"wiz.deleteAgentFailed": "删除 Agent 定义失败:{error}",
|
|
282
|
+
"wiz.agentDeleted": "已删除 {kind} {id}",
|
|
283
|
+
"wiz.openEditorFailed": "打开编辑器失败:{error}",
|
|
284
|
+
"wiz.editorBusy": "编辑中…",
|
|
285
|
+
"wiz.openSystemEditor": "打开系统编辑器",
|
|
286
|
+
"wiz.kvAddRow": "+ 新增",
|
|
287
|
+
"wiz.plaintextRevealed": "⚠ 当前为明文显示(Tab 切回掩码)",
|
|
288
|
+
// ---------- config-editor 共用:摘要 / 校验 / 传输方式 ----------
|
|
289
|
+
"common.noEndpoints": "无端点",
|
|
290
|
+
"common.kvSummary": "{n} 项({keys})",
|
|
291
|
+
"common.permissionSummary": "{n} 维({dims})",
|
|
292
|
+
"common.transportHttp": "http(Streamable HTTP)",
|
|
293
|
+
"common.transportSse": "sse(Server-Sent Events)",
|
|
294
|
+
"err.permissionFormat": "格式应为「allow: a, b」或「deny: x」",
|
|
295
|
+
"err.permissionNeedsPattern": "至少需要一个模式(如 `*`)",
|
|
296
|
+
"err.paramsSchemaEmpty": "参数 schema 不能为空(至少为 {})",
|
|
297
|
+
"err.paramsSchemaNotObject": "参数需为 JSON 对象",
|
|
298
|
+
"err.jsonParseFailed": "JSON 解析失败:{error}",
|
|
299
|
+
"vendor.zhipu": "智谱 AI(BigModelCN)",
|
|
300
|
+
"vendor.deepseek": "DeepSeek",
|
|
301
|
+
"vendor.openai": "OpenAI",
|
|
302
|
+
"vendor.moonshot": "Moonshot(Kimi)",
|
|
303
|
+
"vendor.dashscope": "阿里云百炼(DashScope)",
|
|
304
|
+
"vendor.openaiCompatible": "OpenAI 兼容端点",
|
|
305
|
+
};
|
|
306
|
+
//# sourceMappingURL=zh-wizard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zh-wizard.js","sourceRoot":"","sources":["../../src/i18n/zh-wizard.ts"],"names":[],"mappings":"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"}
|