@ai-zen/cli 1.0.0-alpha.2 → 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 +514 -0
- package/README.md +136 -39
- package/README.zh.md +136 -39
- package/dist/agent-creator.d.ts +11 -0
- package/dist/agent-creator.d.ts.map +1 -1
- package/dist/agent-creator.js +52 -21
- 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/config-editor.d.ts +13 -5
- package/dist/config-editor.d.ts.map +1 -1
- package/dist/config-editor.js +36 -27
- package/dist/config-editor.js.map +1 -1
- package/dist/config.d.ts +24 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +55 -15
- 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 -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 +71 -13
- package/dist/conversation-repository.d.ts.map +1 -1
- package/dist/conversation-repository.js +81 -24
- 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 +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 +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 +61 -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 +55 -0
- package/dist/sdk-log.d.ts.map +1 -0
- package/dist/sdk-log.js +91 -0
- package/dist/sdk-log.js.map +1 -0
- package/dist/session-pointer.d.ts +22 -9
- package/dist/session-pointer.d.ts.map +1 -1
- package/dist/session-pointer.js +55 -23
- 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 +5 -5
- package/dist/sub-agent-guard-plugin.d.ts.map +1 -1
- package/dist/sub-agent-guard-plugin.js +7 -7
- package/dist/sub-agent-guard-plugin.js.map +1 -1
- package/dist/tui/chat-session.d.ts +110 -59
- package/dist/tui/chat-session.d.ts.map +1 -1
- package/dist/tui/chat-session.js +268 -120
- package/dist/tui/chat-session.js.map +1 -1
- package/dist/tui/components.d.ts +48 -2
- package/dist/tui/components.d.ts.map +1 -1
- package/dist/tui/components.js +96 -3
- 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 +27 -21
- 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 +216 -152
- 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 +33 -21
- 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 +24 -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 +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/config-wizard/types.d.ts +18 -3
- package/dist/tui/config-wizard/types.d.ts.map +1 -1
- package/dist/tui/config-wizard/wizard.d.ts.map +1 -1
- package/dist/tui/config-wizard/wizard.js +4 -3
- package/dist/tui/config-wizard/wizard.js.map +1 -1
- package/dist/tui/highlight.d.ts +3 -2
- package/dist/tui/highlight.d.ts.map +1 -1
- package/dist/tui/highlight.js +3 -2
- package/dist/tui/highlight.js.map +1 -1
- 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/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/chat-commands.d.ts +64 -3
- package/dist/tui/screens/chat-commands.d.ts.map +1 -1
- package/dist/tui/screens/chat-commands.js +483 -157
- package/dist/tui/screens/chat-commands.js.map +1 -1
- package/dist/tui/screens/chat.d.ts +10 -5
- package/dist/tui/screens/chat.d.ts.map +1 -1
- package/dist/tui/screens/chat.js +464 -301
- 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 +8 -8
- package/dist/tui/screens/index.d.ts.map +1 -1
- package/dist/tui/screens/index.js +7 -7
- 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 +46 -1
- package/dist/tui/screens/input.d.ts.map +1 -1
- package/dist/tui/screens/input.js +83 -8
- package/dist/tui/screens/input.js.map +1 -1
- package/dist/tui/screens/layout.d.ts +21 -3
- package/dist/tui/screens/layout.d.ts.map +1 -1
- package/dist/tui/screens/layout.js +20 -9
- package/dist/tui/screens/layout.js.map +1 -1
- package/dist/tui/screens/lines.d.ts +12 -41
- package/dist/tui/screens/lines.d.ts.map +1 -1
- package/dist/tui/screens/lines.js +90 -98
- package/dist/tui/screens/lines.js.map +1 -1
- package/dist/tui/screens/messages-view.d.ts +10 -0
- package/dist/tui/screens/messages-view.d.ts.map +1 -0
- package/dist/tui/screens/messages-view.js +116 -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 +15 -0
- package/dist/tui/screens/notice-bar.js.map +1 -0
- package/dist/tui/screens/notice.d.ts +64 -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 +3 -2
- 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 +7 -43
- 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 +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 +20 -7
- package/dist/tui/text.d.ts.map +1 -1
- package/dist/tui/text.js +111 -37
- package/dist/tui/text.js.map +1 -1
- package/dist/tui/theme.d.ts +7 -1
- package/dist/tui/theme.d.ts.map +1 -1
- package/dist/tui/theme.js +15 -3
- 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/package.json +4 -3
- 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 -13
- package/dist/tui/screens/state.d.ts.map +0 -1
- package/dist/tui/screens/state.js +0 -75
- package/dist/tui/screens/state.js.map +0 -1
|
@@ -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,34 @@
|
|
|
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
|
+
/** CLI 运行时目录 */
|
|
13
|
+
export declare const CLI_DIR: string;
|
|
14
|
+
/** 偏好文件;`AIZ_PREFERENCES_FILE` 可覆盖(测试与特殊部署用) */
|
|
15
|
+
export declare const PREFERENCES_FILE: string;
|
|
16
|
+
/** CLI 本地偏好 */
|
|
17
|
+
export interface CliPreferences {
|
|
18
|
+
/** 界面语言;缺失表示「还没选过」,由系统语言识别决定 */
|
|
19
|
+
language?: Locale;
|
|
20
|
+
}
|
|
21
|
+
/** 读取偏好:文件缺失 / 损坏 / 字段非法都按「没设置」处理,绝不抛错 */
|
|
22
|
+
export declare function readPreferences(file?: string): Promise<CliPreferences>;
|
|
23
|
+
/** 写入偏好(先写临时文件再 rename,避免半个 JSON 留在磁盘上) */
|
|
24
|
+
export declare function writePreferences(next: CliPreferences, file?: string): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* 启动时初始化语言:有偏好用偏好,没有则按系统语言识别并**落盘**。
|
|
27
|
+
*
|
|
28
|
+
* 落盘这一步是有意的:识别结果只算一次,用户之后改了系统语言也不会让界面语言
|
|
29
|
+
* 悄悄漂移——想换就 `/lang`。
|
|
30
|
+
*/
|
|
31
|
+
export declare function initLocale(file?: string): Promise<Locale>;
|
|
32
|
+
/** 切换语言并落盘(`/lang` 用) */
|
|
33
|
+
export declare function persistLocale(locale: Locale, file?: string): Promise<void>;
|
|
34
|
+
//# 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;AAOnF,gBAAgB;AAChB,eAAO,MAAM,OAAO,QAA0B,CAAC;AAE/C,gDAAgD;AAChD,eAAO,MAAM,gBAAgB,QAC0C,CAAC;AAExE,eAAe;AACf,MAAM,WAAW,cAAc;IAC7B,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,0CAA0C;AAC1C,wBAAsB,eAAe,CACnC,IAAI,GAAE,MAAyB,GAC9B,OAAO,CAAC,cAAc,CAAC,CAYzB;AAED,2CAA2C;AAC3C,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,cAAc,EACpB,IAAI,GAAE,MAAyB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAWf;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,IAAI,GAAE,MAAyB,GAAG,OAAO,CAAC,MAAM,CAAC,CAMjF;AAED,yBAAyB;AACzB,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAyB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAGf"}
|
|
@@ -0,0 +1,69 @@
|
|
|
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
|
+
/** 共享根目录(与 `config.ts` 的 `AI_ZEN_DIR` 同一约定) */
|
|
15
|
+
const AI_ZEN_DIR = process.env.AI_ZEN_DIR ||
|
|
16
|
+
join(process.env.HOME || process.env.USERPROFILE || "", ".ai-zen");
|
|
17
|
+
/** CLI 运行时目录 */
|
|
18
|
+
export const CLI_DIR = join(AI_ZEN_DIR, "cli");
|
|
19
|
+
/** 偏好文件;`AIZ_PREFERENCES_FILE` 可覆盖(测试与特殊部署用) */
|
|
20
|
+
export const PREFERENCES_FILE = process.env.AIZ_PREFERENCES_FILE || join(CLI_DIR, "preferences.json");
|
|
21
|
+
/** 读取偏好:文件缺失 / 损坏 / 字段非法都按「没设置」处理,绝不抛错 */
|
|
22
|
+
export async function readPreferences(file = PREFERENCES_FILE) {
|
|
23
|
+
try {
|
|
24
|
+
const raw = await readFile(file, "utf-8");
|
|
25
|
+
const parsed = JSON.parse(raw);
|
|
26
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
|
|
27
|
+
return {};
|
|
28
|
+
const language = normalizeLocale(parsed.language);
|
|
29
|
+
return language ? { language } : {};
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return {};
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/** 写入偏好(先写临时文件再 rename,避免半个 JSON 留在磁盘上) */
|
|
36
|
+
export async function writePreferences(next, file = PREFERENCES_FILE) {
|
|
37
|
+
const payload = {};
|
|
38
|
+
if (next.language)
|
|
39
|
+
payload.language = next.language;
|
|
40
|
+
try {
|
|
41
|
+
await mkdir(dirname(file), { recursive: true });
|
|
42
|
+
const tmp = `${file}.tmp`;
|
|
43
|
+
await writeFile(tmp, `${JSON.stringify(payload, null, 2)}\n`, "utf-8");
|
|
44
|
+
await rename(tmp, file);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
/* 偏好写不进去不该阻塞启动:下一次启动会重新识别 */
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* 启动时初始化语言:有偏好用偏好,没有则按系统语言识别并**落盘**。
|
|
52
|
+
*
|
|
53
|
+
* 落盘这一步是有意的:识别结果只算一次,用户之后改了系统语言也不会让界面语言
|
|
54
|
+
* 悄悄漂移——想换就 `/lang`。
|
|
55
|
+
*/
|
|
56
|
+
export async function initLocale(file = PREFERENCES_FILE) {
|
|
57
|
+
const prefs = await readPreferences(file);
|
|
58
|
+
const locale = prefs.language ?? detectLocale();
|
|
59
|
+
setLocale(locale);
|
|
60
|
+
if (!prefs.language)
|
|
61
|
+
await writePreferences({ language: locale }, file);
|
|
62
|
+
return locale;
|
|
63
|
+
}
|
|
64
|
+
/** 切换语言并落盘(`/lang` 用) */
|
|
65
|
+
export async function persistLocale(locale, file = PREFERENCES_FILE) {
|
|
66
|
+
setLocale(locale);
|
|
67
|
+
await writePreferences({ language: locale }, file);
|
|
68
|
+
}
|
|
69
|
+
//# 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,CAwSrC,CAAC"}
|
|
@@ -0,0 +1,293 @@
|
|
|
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.custom": "自定义",
|
|
25
|
+
"field.size": "尺寸",
|
|
26
|
+
"field.quality": "质量",
|
|
27
|
+
// ---------- 通用小词 ----------
|
|
28
|
+
"common.yes": "是",
|
|
29
|
+
"common.no": "否",
|
|
30
|
+
"common.empty": "(空)",
|
|
31
|
+
"common.emptyWithEditor": "(空)· Enter 打开编辑器",
|
|
32
|
+
"common.linesWithEditor": "{n} 行 · Enter 打开编辑器",
|
|
33
|
+
"common.bodyWithEditor": "{text} · Enter 打开编辑器",
|
|
34
|
+
"common.defaultInParens": "(默认)",
|
|
35
|
+
"common.sameAsId": "(同 id)",
|
|
36
|
+
"common.notAdjustable": "(不调档)",
|
|
37
|
+
"common.customOnlyNote": "(已标记为自定义,改动才会保留)",
|
|
38
|
+
"common.factoryManaged": "否(出厂托管)",
|
|
39
|
+
// ---------- 校验消息 ----------
|
|
40
|
+
"err.nameRequired": "名称不能为空",
|
|
41
|
+
"err.baseUrlScheme": "Base URL 需以 http:// 或 https:// 开头",
|
|
42
|
+
"err.apiKeyRequired": "API Key 不能为空",
|
|
43
|
+
"err.modelNameRequired": "模型名不能为空",
|
|
44
|
+
"err.handoffPositive": "交接阈值需为正整数",
|
|
45
|
+
"err.handoffLessThanGuard": "交接阈值需小于阻断阈值",
|
|
46
|
+
"err.guardPositive": "阻断阈值需为正整数",
|
|
47
|
+
"err.guardGreaterThanHandoff": "阻断阈值需大于交接阈值",
|
|
48
|
+
"err.presetNotFound": "策略 \"{name}\" 不存在(可选:{options})",
|
|
49
|
+
"err.presetTableEmpty": "策略 \"{name}\" 不存在(策略表为空,见 reasoning-presets.json)",
|
|
50
|
+
"err.idRequired": "标识不能为空",
|
|
51
|
+
"err.functionNameRequired": "函数名不能为空",
|
|
52
|
+
"err.mcpNameTaken": "已存在名为 {name} 的服务器",
|
|
53
|
+
"err.agentIdTaken": "已存在标识 {name} 的定义",
|
|
54
|
+
// ---------- 更多字段名(MCP / Agent 详情) ----------
|
|
55
|
+
"field.transport": "传输",
|
|
56
|
+
"field.command": "命令",
|
|
57
|
+
"field.args": "参数",
|
|
58
|
+
"field.env": "环境变量",
|
|
59
|
+
"field.headers": "请求头",
|
|
60
|
+
"field.id": "标识",
|
|
61
|
+
"field.model": "模型",
|
|
62
|
+
"field.prompt": "提示词",
|
|
63
|
+
"field.permissions": "权限",
|
|
64
|
+
"field.functionName": "函数名",
|
|
65
|
+
"field.functionDescription": "函数说明",
|
|
66
|
+
"field.paramsSchema": "参数 schema",
|
|
67
|
+
"field.enabled": "启用",
|
|
68
|
+
"common.unset": "(未设置)",
|
|
69
|
+
"common.disabledInParens": "否(已禁用)",
|
|
70
|
+
"common.transportStdio": "stdio(本地子进程)",
|
|
71
|
+
"common.transportMode": "传输方式",
|
|
72
|
+
"common.enabledState": "启用状态",
|
|
73
|
+
"common.customQuoted": "「自定义」",
|
|
74
|
+
// ---------- 落盘反馈(带实体名的整句,必须参数化而非拼接) ----------
|
|
75
|
+
"wiz.endpointUpdated": "端点 {name} 的 {label} 已更新",
|
|
76
|
+
"wiz.modelUpdated": "模型 {name} 的 {label} 已更新{suffix}",
|
|
77
|
+
"wiz.imageModelUpdated": "图片模型 {name} 的 {label} 已更新{suffix}",
|
|
78
|
+
"wiz.modelCustomSet": "模型 {name} 的「自定义」已设为 {value}",
|
|
79
|
+
"wiz.imageModelCustomSet": "图片模型 {name} 的「自定义」已设为 {value}",
|
|
80
|
+
"wiz.mcpFieldUpdated": "MCP {id} 的{label}已更新({scope})",
|
|
81
|
+
"wiz.mcpRenamed": "MCP {id} 已重命名为 {name}({scope})",
|
|
82
|
+
"wiz.agentFieldUpdated": "{kind} {id} 的 {label} 已更新{suffix}",
|
|
83
|
+
"wiz.agentRenamed": "{kind} {id} 已重命名为 {name}",
|
|
84
|
+
"wiz.agentPermissionUpdated": "{kind} {id} 的 {dim} 权限已更新",
|
|
85
|
+
"wiz.presetLevels": "{name}({levels})",
|
|
86
|
+
"wiz.presetMissingName": "{name}(策略不存在)",
|
|
87
|
+
// ---------- 通用按钮 / 操作 ----------
|
|
88
|
+
"ui.save": "保存",
|
|
89
|
+
"ui.cancel": "取消",
|
|
90
|
+
"ui.back": "返回",
|
|
91
|
+
"ui.confirm": "确认",
|
|
92
|
+
"ui.select": "选择",
|
|
93
|
+
"ui.move": "移动",
|
|
94
|
+
"ui.toggle": "切换",
|
|
95
|
+
"ui.open": "打开",
|
|
96
|
+
"ui.edit": "编辑",
|
|
97
|
+
"ui.run": "执行",
|
|
98
|
+
"ui.delete": "删除",
|
|
99
|
+
"ui.add": "新增",
|
|
100
|
+
"ui.done": "完成",
|
|
101
|
+
"ui.plainOrMasked": "明文/掩码",
|
|
102
|
+
// ---------- 配置中心首页 ----------
|
|
103
|
+
"wiz.menu.title": "◆ 配置中心",
|
|
104
|
+
"wiz.menu.hint": "改动即时写入磁盘;涉及当前端点的改动会重建会话(消息保留)。",
|
|
105
|
+
"wiz.menu.configFile": "配置文件:{path}",
|
|
106
|
+
"wiz.menu.endpoints": "端点管理",
|
|
107
|
+
"wiz.menu.models": "模型管理",
|
|
108
|
+
"wiz.menu.imageModels": "图片模型",
|
|
109
|
+
"wiz.menu.mcp": "MCP 服务器",
|
|
110
|
+
"wiz.menu.agents": "Agent 定义",
|
|
111
|
+
"wiz.menu.defaults": "默认项",
|
|
112
|
+
"wiz.menu.maxToolOutput": "工具输出上限",
|
|
113
|
+
"wiz.menu.done": "完成",
|
|
114
|
+
"wiz.menu.savedCount": "已保存 {n} 项改动",
|
|
115
|
+
"wiz.menu.backToChat": "返回对话",
|
|
116
|
+
"wiz.menu.count": "{n} 个",
|
|
117
|
+
"wiz.menu.imageModelsSummary": "{n} 个 · 默认 {name}",
|
|
118
|
+
"wiz.menu.mcpSummary": "全局 {global} · 项目 {project}",
|
|
119
|
+
"wiz.menu.defaultsSummary": "Agent {agent} · 迁移 {model}",
|
|
120
|
+
"wiz.menu.maxToolOutputSummary": "{n} 字符",
|
|
121
|
+
"wiz.menu.agentsSummary": "Agent {agent} · Sub-agent {sub}",
|
|
122
|
+
"wiz.menu.doneReturn": "完成返回",
|
|
123
|
+
"common.unsetPlain": "未设置",
|
|
124
|
+
"wiz.pickTitle": "{label} · 选择",
|
|
125
|
+
"wiz.confirmTitle": "{label}?",
|
|
126
|
+
"wiz.irreversible": "{title} —— 此操作不可撤销",
|
|
127
|
+
"wiz.confirmAction": "确认{label}",
|
|
128
|
+
// ---------- 列表 / KV 编辑器 / 输入框 ----------
|
|
129
|
+
"wiz.listEmpty": " (无可选项)",
|
|
130
|
+
"wiz.truncated": " (共 {n} 项,仅显示前 {m} 项)",
|
|
131
|
+
"wiz.kvTitle": "{title} · {mode}",
|
|
132
|
+
"wiz.kvModeAdd": "新增",
|
|
133
|
+
"wiz.kvModeEdit": "编辑",
|
|
134
|
+
"wiz.kvHint": "格式:KEY=VALUE(键与值以首个 = 分隔)",
|
|
135
|
+
"wiz.kvExample": "例如 PATH=/usr/bin 或 Authorization=Bearer xxx",
|
|
136
|
+
"wiz.kvEmpty": " (暂无,按 Enter 新增)",
|
|
137
|
+
"err.keyValueFormat": "格式应为 KEY=VALUE",
|
|
138
|
+
"err.duplicateKey": "已存在 {key}",
|
|
139
|
+
"wiz.promptSecretHint": "(粘贴或输入后按 Enter 保存,Tab 可切明文核对)",
|
|
140
|
+
"wiz.promptHint": "(输入后按 Enter 确认)",
|
|
141
|
+
"scope.global": "全局",
|
|
142
|
+
"scope.project": "项目",
|
|
143
|
+
"common.noUrl": "(未配置 URL)",
|
|
144
|
+
"common.noCommand": "(未配置命令)",
|
|
145
|
+
"common.disabledSuffix": " · 已禁用",
|
|
146
|
+
// ---------- 模型 / 图片模型(列表 · 详情 · 新建) ----------
|
|
147
|
+
"wiz.kind.custom": "自定义",
|
|
148
|
+
"wiz.kind.factory": "出厂托管",
|
|
149
|
+
"wiz.modelKind.factoryNote": "出厂托管(编辑会自动转自定义)",
|
|
150
|
+
"wiz.modelKind.visionSuffix": " · 视觉",
|
|
151
|
+
"wiz.modelItem.hint": "{endpoint} · {kind}{vision}",
|
|
152
|
+
"wiz.detail.moveHint": "↑ ↓ 移动 · Enter 编辑/切换 · 改动即时写入磁盘",
|
|
153
|
+
"wiz.models.newItem": "+ 新建模型",
|
|
154
|
+
"wiz.models.newItemHint": "自动标记为自定义(custom)",
|
|
155
|
+
"wiz.models.subtitle": "共 {n} 个模型 · 选中后可就地编辑 / 删除",
|
|
156
|
+
"wiz.models.detailTitle": "◆ 模型 · {name}",
|
|
157
|
+
"wiz.models.detailLine": "{id} · {kind}",
|
|
158
|
+
"wiz.models.delete": "删除模型",
|
|
159
|
+
"wiz.models.deleted": "已删除模型 {name}",
|
|
160
|
+
"wiz.models.createTitle": "新建模型 · 名称",
|
|
161
|
+
"wiz.models.createDesc": "用于在配置与状态栏中标识该模型,例如 {example}",
|
|
162
|
+
"wiz.models.created": "已新建模型 {name}({id},已标记为自定义)",
|
|
163
|
+
"wiz.models.noEndpoint": "⚠ 尚未配置端点,创建后请先到「端点管理」添加端点",
|
|
164
|
+
"wiz.models.defaultEndpoint": "将默认绑定端点:{endpoint}",
|
|
165
|
+
"wiz.createAndEdit": "创建并编辑",
|
|
166
|
+
"wiz.imageModels.newItem": "+ 新建图片模型",
|
|
167
|
+
"wiz.imageModels.subtitle": "共 {n} 个 · 选中后可就地编辑 / 删除",
|
|
168
|
+
"wiz.imageModels.detailTitle": "◆ 图片模型 · {name}",
|
|
169
|
+
"wiz.imageModels.delete": "删除图片模型",
|
|
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.subscreenTitle": "◆ {kind} · {id} · {label}",
|
|
187
|
+
"wiz.agent.permHint": "格式:`allow: a, b` 或 `deny: x`(逗号分隔;留空清除该维)",
|
|
188
|
+
"wiz.agent.permMoveHint": "↑ ↓ 移动 · Enter 编辑 · Esc 返回",
|
|
189
|
+
"wiz.agent.fnParamsSubtitle": "JSON 对象;Enter 打开系统编辑器,保存后立即校验并写盘",
|
|
190
|
+
"wiz.agent.editorSubtitle": "Enter 打开系统编辑器($EDITOR / notepad);改完保存即写盘",
|
|
191
|
+
"wiz.agent.fnParamsUpdated": "{name} 的参数 schema 已更新",
|
|
192
|
+
"wiz.agent.fnDescUpdated": "{name} 的函数说明已更新",
|
|
193
|
+
"wiz.agent.promptUpdated": "{name} 的提示词已更新",
|
|
194
|
+
"wiz.agent.newTitle": "新建 {kind} · 名称",
|
|
195
|
+
"wiz.agent.newDesc": "用于在列表与状态栏中标识该定义,例如 {example}",
|
|
196
|
+
"wiz.agent.newDescAgent": "创建后可在「默认项 → 默认 Agent」中选为默认",
|
|
197
|
+
"wiz.agent.newDescSub": "创建后自动生成 function 骨架(可编辑)",
|
|
198
|
+
"wiz.agent.created": "已新建 {kind} {name}({id})",
|
|
199
|
+
// ---------- 工具输出上限 / 端点字段直达编辑 ----------
|
|
200
|
+
"wiz.maxToolOutput.title": "工具输出上限(字符数)",
|
|
201
|
+
"wiz.currentLine": "当前:{value}",
|
|
202
|
+
"wiz.maxToolOutput.desc": "工具单次输出超过该值时落盘或仅警告,避免撑爆上下文",
|
|
203
|
+
"wiz.maxToolOutput.updated": "工具输出上限 → {n} 字符",
|
|
204
|
+
"err.positiveInteger": "需为正整数",
|
|
205
|
+
"wiz.apiKey.titleOnboarding": "首次配置 · 设置 {name} 的 API Key",
|
|
206
|
+
"wiz.apiKey.title": "设置 API Key · {name}",
|
|
207
|
+
"wiz.apiKey.endpointLine": "端点:{name} · {url}",
|
|
208
|
+
"wiz.apiKey.guideUrl": "{vendor} 申请地址:{url}",
|
|
209
|
+
"wiz.apiKey.guideNoUrl": "{vendor}:请向服务提供方获取 API Key",
|
|
210
|
+
"wiz.apiKey.onboardingNote": "保存后立即进入对话(Esc 放弃并退出)。",
|
|
211
|
+
"wiz.apiKey.saveAndEnter": "保存并进入对话",
|
|
212
|
+
"ui.discard": "放弃",
|
|
213
|
+
"wiz.baseUrl.title": "设置 Base URL · {name}",
|
|
214
|
+
"wiz.baseUrl.hint": "需以 http:// 或 https:// 开头(OpenAI 兼容端点)",
|
|
215
|
+
// ---------- MCP 服务器 / 默认项 ----------
|
|
216
|
+
"wiz.mcp.switchScope": "⇄ 切换到「{scope}」作用域",
|
|
217
|
+
"wiz.mcp.serverCount": "{n} 个服务器",
|
|
218
|
+
"wiz.mcp.newItem": "+ 新建服务器",
|
|
219
|
+
"wiz.mcp.listTitle": "◆ MCP 服务器 · {scope}",
|
|
220
|
+
"wiz.mcp.listSubtitle": "{n} 个 · {path}",
|
|
221
|
+
"wiz.mcp.detailTitle": "◆ MCP · {id}",
|
|
222
|
+
"wiz.scopePath": "{scope} · {path}",
|
|
223
|
+
"wiz.mcp.detailLine": "传输 {transport} · ↑ ↓ 移动 · Enter 编辑/切换",
|
|
224
|
+
"wiz.mcp.delete": "删除服务器",
|
|
225
|
+
"wiz.mcp.deleted": "已删除 MCP 服务器 {id}({scope})",
|
|
226
|
+
"wiz.mcp.kvTitle": "◆ MCP · {id} · {label}",
|
|
227
|
+
"wiz.mcp.kvSubtitle": "{scope} · {n} 项",
|
|
228
|
+
"wiz.mcp.newTitle": "新建 MCP 服务器 · 名称({scope})",
|
|
229
|
+
"wiz.mcp.newDescKey": "作为 mcpServers 的键,例如 github / chrome-devtools",
|
|
230
|
+
"wiz.mcp.newDescDefault": "创建后默认 stdio,可编辑传输方式 / 命令 / 参数 / 环境变量等",
|
|
231
|
+
"wiz.mcp.created": "已新建 MCP 服务器 {id}({scope})",
|
|
232
|
+
"wiz.defaults.title": "默认项",
|
|
233
|
+
"wiz.defaults.subtitle": "新会话 / 任务迁移使用的默认值",
|
|
234
|
+
"wiz.defaults.pickSubtitle": "选中后即时写盘",
|
|
235
|
+
"wiz.defaults.imageModel": "默认图片模型",
|
|
236
|
+
"wiz.defaults.agent": "默认 Agent",
|
|
237
|
+
"wiz.defaults.migrationModel": "默认迁移模型",
|
|
238
|
+
"wiz.defaults.keyReady": "密钥就绪",
|
|
239
|
+
"wiz.defaults.missingKey": "缺 API Key",
|
|
240
|
+
"wiz.defaults.itemHint": "{endpoint} · {state}",
|
|
241
|
+
"wiz.defaults.updated": "{label} → {value}",
|
|
242
|
+
// ---------- 端点列表 / 新建端点 ----------
|
|
243
|
+
"ui.next": "下一步",
|
|
244
|
+
"common.listSep": "、",
|
|
245
|
+
"wiz.endpoints.newItem": "+ 新建端点",
|
|
246
|
+
"wiz.endpoints.newItemHint": "自定义 OpenAI 兼容服务",
|
|
247
|
+
"wiz.endpoints.subtitle": "共 {n} 个端点 · 选中后可就地编辑 / 删除",
|
|
248
|
+
"wiz.endpoints.detailTitle": "◆ 端点 · {name}",
|
|
249
|
+
"wiz.endpoints.detailLine": "{id}{refs}",
|
|
250
|
+
"wiz.endpoints.refSuffix": " · {n} 个模型引用",
|
|
251
|
+
"wiz.endpoints.moveHint": "↑ ↓ 移动 · Enter 编辑 · 改动即时写入磁盘",
|
|
252
|
+
"wiz.endpoints.delete": "删除端点",
|
|
253
|
+
"wiz.endpoints.deleteBlocked": "无法删除:仍被 {n} 个模型引用({models}),请先删除或改绑这些模型",
|
|
254
|
+
"wiz.endpoints.deleted": "已删除端点 {name}",
|
|
255
|
+
"wiz.newEndpoint.nameTitle": "新建端点 · 名称",
|
|
256
|
+
"wiz.newEndpoint.nameDesc": "用于在配置与状态栏中标识该服务,例如 {example}",
|
|
257
|
+
"wiz.newEndpoint.baseUrlTitle": "新建端点 · Base URL",
|
|
258
|
+
"wiz.newEndpoint.baseUrlDesc": "例如 https://api.openai.com/v1(须为 OpenAI 兼容接口)",
|
|
259
|
+
"wiz.newEndpoint.apiKeyTitle": "新建端点 · API Key",
|
|
260
|
+
"wiz.newEndpoint.apiKeyOptional": "可留空稍后再补(留空时该端点暂不可用)",
|
|
261
|
+
"wiz.newEndpoint.save": "保存端点",
|
|
262
|
+
"wiz.newEndpoint.created": "已添加端点 {name}({id}){suffix}",
|
|
263
|
+
"wiz.newEndpoint.keyPending": " · API Key 待补充",
|
|
264
|
+
// ---------- 写盘失败 / 编辑器 / 残留小词 ----------
|
|
265
|
+
"wiz.writeConfigFailed": "写入配置失败:{error}",
|
|
266
|
+
"wiz.writeMcpFailed": "写入 MCP 配置失败:{error}",
|
|
267
|
+
"wiz.writeAgentFailed": "写入 Agent 定义失败:{error}",
|
|
268
|
+
"wiz.deleteAgentFailed": "删除 Agent 定义失败:{error}",
|
|
269
|
+
"wiz.agentDeleted": "已删除 {kind} {id}",
|
|
270
|
+
"wiz.openEditorFailed": "打开编辑器失败:{error}",
|
|
271
|
+
"wiz.editorBusy": "编辑中…",
|
|
272
|
+
"wiz.openSystemEditor": "打开系统编辑器",
|
|
273
|
+
"wiz.kvAddRow": "+ 新增",
|
|
274
|
+
"wiz.plaintextRevealed": "⚠ 当前为明文显示(Tab 切回掩码)",
|
|
275
|
+
// ---------- config-editor 共用:摘要 / 校验 / 传输方式 ----------
|
|
276
|
+
"common.noEndpoints": "无端点",
|
|
277
|
+
"common.kvSummary": "{n} 项({keys})",
|
|
278
|
+
"common.permissionSummary": "{n} 维({dims})",
|
|
279
|
+
"common.transportHttp": "http(Streamable HTTP)",
|
|
280
|
+
"common.transportSse": "sse(Server-Sent Events)",
|
|
281
|
+
"err.permissionFormat": "格式应为「allow: a, b」或「deny: x」",
|
|
282
|
+
"err.permissionNeedsPattern": "至少需要一个模式(如 `*`)",
|
|
283
|
+
"err.paramsSchemaEmpty": "参数 schema 不能为空(至少为 {})",
|
|
284
|
+
"err.paramsSchemaNotObject": "参数需为 JSON 对象",
|
|
285
|
+
"err.jsonParseFailed": "JSON 解析失败:{error}",
|
|
286
|
+
"vendor.zhipu": "智谱 AI(BigModelCN)",
|
|
287
|
+
"vendor.deepseek": "DeepSeek",
|
|
288
|
+
"vendor.openai": "OpenAI",
|
|
289
|
+
"vendor.moonshot": "Moonshot(Kimi)",
|
|
290
|
+
"vendor.dashscope": "阿里云百炼(DashScope)",
|
|
291
|
+
"vendor.openaiCompatible": "OpenAI 兼容端点",
|
|
292
|
+
};
|
|
293
|
+
//# 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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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zh.d.ts","sourceRoot":"","sources":["../../src/i18n/zh.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAsOrC,CAAC"}
|