@deepseek-harness-tui/dsh-tui 0.13.0 → 0.14.0
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/README.md +85 -5
- package/assets/claude-girl/claude-girl-happy.png +0 -0
- package/assets/claude-girl/claude-girl.png +0 -0
- package/assets/codex-girl/codex-girl-happy.png +0 -0
- package/assets/codex-girl/codex-girl.png +0 -0
- package/bin/dsh-tui.js +104 -18
- package/cordis.patch.yml +2 -0
- package/cordis.yml +2 -0
- package/guide/dsh-tui-guide/SKILL.md +4 -2
- package/guide/dsh-tui-guide/claude-backend.en.md +203 -0
- package/guide/dsh-tui-guide/claude-backend.md +161 -0
- package/guide/dsh-tui-guide/codex-backend.en.md +297 -0
- package/guide/dsh-tui-guide/codex-backend.md +257 -0
- package/guide/dsh-tui-guide/configuration.en.md +9 -2
- package/guide/dsh-tui-guide/configuration.md +9 -2
- package/guide/dsh-tui-guide/interaction.en.md +169 -27
- package/guide/dsh-tui-guide/interaction.md +115 -17
- package/guide/dsh-tui-guide/themes.en.md +24 -2
- package/guide/dsh-tui-guide/themes.md +21 -2
- package/guide/dsh-tui-guide/user-guide.en.md +38 -23
- package/guide/dsh-tui-guide/user-guide.md +22 -11
- package/guide/dsh-tui-guide/vscode.en.md +1 -0
- package/guide/dsh-tui-guide/vscode.md +1 -0
- package/lib/settings.json +139 -6
- package/lib/types/adapter/channel/state.d.ts.map +1 -1
- package/lib/types/adapter/channel/state.js +1 -0
- package/lib/types/adapter/channel/ui-policy.d.ts +17 -2
- package/lib/types/adapter/channel/ui-policy.d.ts.map +1 -1
- package/lib/types/adapter/channel/ui-policy.js +29 -0
- package/lib/types/adapter/channel/ui.d.ts.map +1 -1
- package/lib/types/adapter/channel/ui.js +45 -5
- package/lib/types/adapter/ports/channel-catalog.d.ts +7 -0
- package/lib/types/adapter/ports/channel-catalog.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-display.d.ts +7 -1
- package/lib/types/adapter/ports/channel-display.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-session.d.ts +5 -0
- package/lib/types/adapter/ports/channel-session.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-settings.d.ts +20 -0
- package/lib/types/adapter/ports/channel-settings.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-ui.d.ts +183 -6
- package/lib/types/adapter/ports/channel-ui.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-view.d.ts +477 -13
- package/lib/types/adapter/ports/channel-view.d.ts.map +1 -1
- package/lib/types/agent/backend.d.ts +168 -0
- package/lib/types/agent/backend.d.ts.map +1 -0
- package/lib/types/agent/backend.js +1 -0
- package/lib/types/agent/capabilities.d.ts +461 -0
- package/lib/types/agent/capabilities.d.ts.map +1 -0
- package/lib/types/agent/capabilities.js +1 -0
- package/lib/types/agent/events.d.ts +733 -0
- package/lib/types/agent/events.d.ts.map +1 -0
- package/lib/types/agent/events.js +2 -0
- package/lib/types/agent/index.d.ts +8 -0
- package/lib/types/agent/index.d.ts.map +1 -0
- package/lib/types/agent/index.js +7 -0
- package/lib/types/agent/messages.d.ts +52 -0
- package/lib/types/agent/messages.d.ts.map +1 -0
- package/lib/types/agent/messages.js +91 -0
- package/lib/types/agent/presentation.d.ts +29 -0
- package/lib/types/agent/presentation.d.ts.map +1 -0
- package/lib/types/agent/presentation.js +4 -0
- package/lib/types/agent/refs.d.ts +30 -0
- package/lib/types/agent/refs.d.ts.map +1 -0
- package/lib/types/agent/refs.js +39 -0
- package/lib/types/agent/session.d.ts +78 -0
- package/lib/types/agent/session.d.ts.map +1 -0
- package/lib/types/agent/session.js +1 -0
- package/lib/types/backends/claude/activity.d.ts +53 -0
- package/lib/types/backends/claude/activity.d.ts.map +1 -0
- package/lib/types/backends/claude/activity.js +103 -0
- package/lib/types/backends/claude/auth.d.ts +245 -0
- package/lib/types/backends/claude/auth.d.ts.map +1 -0
- package/lib/types/backends/claude/auth.js +503 -0
- package/lib/types/backends/claude/backend.d.ts +32 -0
- package/lib/types/backends/claude/backend.d.ts.map +1 -0
- package/lib/types/backends/claude/backend.js +296 -0
- package/lib/types/backends/claude/catalog.d.ts +17 -0
- package/lib/types/backends/claude/catalog.d.ts.map +1 -0
- package/lib/types/backends/claude/catalog.js +94 -0
- package/lib/types/backends/claude/channels.d.ts +63 -0
- package/lib/types/backends/claude/channels.d.ts.map +1 -0
- package/lib/types/backends/claude/channels.js +275 -0
- package/lib/types/backends/claude/contract.d.ts +37 -0
- package/lib/types/backends/claude/contract.d.ts.map +1 -0
- package/lib/types/backends/claude/contract.js +46 -0
- package/lib/types/backends/claude/controls.d.ts +134 -0
- package/lib/types/backends/claude/controls.d.ts.map +1 -0
- package/lib/types/backends/claude/controls.js +425 -0
- package/lib/types/backends/claude/dialogs.d.ts +62 -0
- package/lib/types/backends/claude/dialogs.d.ts.map +1 -0
- package/lib/types/backends/claude/dialogs.js +253 -0
- package/lib/types/backends/claude/flag-settings.d.ts +12 -0
- package/lib/types/backends/claude/flag-settings.d.ts.map +1 -0
- package/lib/types/backends/claude/flag-settings.js +49 -0
- package/lib/types/backends/claude/images.d.ts +49 -0
- package/lib/types/backends/claude/images.d.ts.map +1 -0
- package/lib/types/backends/claude/images.js +94 -0
- package/lib/types/backends/claude/index.d.ts +5 -0
- package/lib/types/backends/claude/index.d.ts.map +1 -0
- package/lib/types/backends/claude/index.js +4 -0
- package/lib/types/backends/claude/install.d.ts +15 -0
- package/lib/types/backends/claude/install.d.ts.map +1 -0
- package/lib/types/backends/claude/install.js +91 -0
- package/lib/types/backends/claude/modelEnv.d.ts +64 -0
- package/lib/types/backends/claude/modelEnv.d.ts.map +1 -0
- package/lib/types/backends/claude/modelEnv.js +199 -0
- package/lib/types/backends/claude/narrow.d.ts +10 -0
- package/lib/types/backends/claude/narrow.d.ts.map +1 -0
- package/lib/types/backends/claude/narrow.js +8 -0
- package/lib/types/backends/claude/older-history.d.ts +16 -0
- package/lib/types/backends/claude/older-history.d.ts.map +1 -0
- package/lib/types/backends/claude/older-history.js +101 -0
- package/lib/types/backends/claude/options.d.ts +181 -0
- package/lib/types/backends/claude/options.d.ts.map +1 -0
- package/lib/types/backends/claude/options.js +208 -0
- package/lib/types/backends/claude/permissions.d.ts +83 -0
- package/lib/types/backends/claude/permissions.d.ts.map +1 -0
- package/lib/types/backends/claude/permissions.js +331 -0
- package/lib/types/backends/claude/prefs.d.ts +55 -0
- package/lib/types/backends/claude/prefs.d.ts.map +1 -0
- package/lib/types/backends/claude/prefs.js +150 -0
- package/lib/types/backends/claude/process.d.ts +19 -0
- package/lib/types/backends/claude/process.d.ts.map +1 -0
- package/lib/types/backends/claude/process.js +156 -0
- package/lib/types/backends/claude/replay.d.ts +129 -0
- package/lib/types/backends/claude/replay.d.ts.map +1 -0
- package/lib/types/backends/claude/replay.js +505 -0
- package/lib/types/backends/claude/sdk-warnings.d.ts +23 -0
- package/lib/types/backends/claude/sdk-warnings.d.ts.map +1 -0
- package/lib/types/backends/claude/sdk-warnings.js +55 -0
- package/lib/types/backends/claude/sdk.d.ts +12 -0
- package/lib/types/backends/claude/sdk.d.ts.map +1 -0
- package/lib/types/backends/claude/sdk.js +34 -0
- package/lib/types/backends/claude/send-message.d.ts +54 -0
- package/lib/types/backends/claude/send-message.d.ts.map +1 -0
- package/lib/types/backends/claude/send-message.js +65 -0
- package/lib/types/backends/claude/session/auth.d.ts +47 -0
- package/lib/types/backends/claude/session/auth.d.ts.map +1 -0
- package/lib/types/backends/claude/session/auth.js +226 -0
- package/lib/types/backends/claude/session/channels.d.ts +82 -0
- package/lib/types/backends/claude/session/channels.d.ts.map +1 -0
- package/lib/types/backends/claude/session/channels.js +45 -0
- package/lib/types/backends/claude/session/input.d.ts +16 -0
- package/lib/types/backends/claude/session/input.d.ts.map +1 -0
- package/lib/types/backends/claude/session/input.js +64 -0
- package/lib/types/backends/claude/session/lifecycle.d.ts +6 -0
- package/lib/types/backends/claude/session/lifecycle.d.ts.map +1 -0
- package/lib/types/backends/claude/session/lifecycle.js +852 -0
- package/lib/types/backends/claude/session/store.d.ts +17 -0
- package/lib/types/backends/claude/session/store.d.ts.map +1 -0
- package/lib/types/backends/claude/session/store.js +122 -0
- package/lib/types/backends/claude/session/subagents.d.ts +13 -0
- package/lib/types/backends/claude/session/subagents.d.ts.map +1 -0
- package/lib/types/backends/claude/session/subagents.js +77 -0
- package/lib/types/backends/claude/session/types.d.ts +89 -0
- package/lib/types/backends/claude/session/types.d.ts.map +1 -0
- package/lib/types/backends/claude/session/types.js +1 -0
- package/lib/types/backends/claude/session.d.ts +4 -0
- package/lib/types/backends/claude/session.d.ts.map +1 -0
- package/lib/types/backends/claude/session.js +2 -0
- package/lib/types/backends/claude/side-query.d.ts +34 -0
- package/lib/types/backends/claude/side-query.d.ts.map +1 -0
- package/lib/types/backends/claude/side-query.js +116 -0
- package/lib/types/backends/claude/task-output.d.ts +13 -0
- package/lib/types/backends/claude/task-output.d.ts.map +1 -0
- package/lib/types/backends/claude/task-output.js +101 -0
- package/lib/types/backends/claude/tools.d.ts +45 -0
- package/lib/types/backends/claude/tools.d.ts.map +1 -0
- package/lib/types/backends/claude/tools.js +231 -0
- package/lib/types/backends/claude/transcript-file.d.ts +41 -0
- package/lib/types/backends/claude/transcript-file.d.ts.map +1 -0
- package/lib/types/backends/claude/transcript-file.js +195 -0
- package/lib/types/backends/claude/translate/attempts.d.ts +33 -0
- package/lib/types/backends/claude/translate/attempts.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/attempts.js +243 -0
- package/lib/types/backends/claude/translate/content.d.ts +33 -0
- package/lib/types/backends/claude/translate/content.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/content.js +91 -0
- package/lib/types/backends/claude/translate/core.d.ts +76 -0
- package/lib/types/backends/claude/translate/core.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/core.js +447 -0
- package/lib/types/backends/claude/translate/events.d.ts +9 -0
- package/lib/types/backends/claude/translate/events.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/events.js +77 -0
- package/lib/types/backends/claude/translate/lanes.d.ts +31 -0
- package/lib/types/backends/claude/translate/lanes.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/lanes.js +177 -0
- package/lib/types/backends/claude/translate/messages.d.ts +36 -0
- package/lib/types/backends/claude/translate/messages.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/messages.js +202 -0
- package/lib/types/backends/claude/translate/system.d.ts +40 -0
- package/lib/types/backends/claude/translate/system.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/system.js +399 -0
- package/lib/types/backends/claude/translate/tasks.d.ts +19 -0
- package/lib/types/backends/claude/translate/tasks.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/tasks.js +159 -0
- package/lib/types/backends/claude/translate/types.d.ts +114 -0
- package/lib/types/backends/claude/translate/types.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/types.js +1 -0
- package/lib/types/backends/claude/translate.d.ts +9 -0
- package/lib/types/backends/claude/translate.d.ts.map +1 -0
- package/lib/types/backends/claude/translate.js +6 -0
- package/lib/types/backends/codex/auth/external-tokens.d.ts +66 -0
- package/lib/types/backends/codex/auth/external-tokens.d.ts.map +1 -0
- package/lib/types/backends/codex/auth/external-tokens.js +325 -0
- package/lib/types/backends/codex/auth/route.d.ts +14 -0
- package/lib/types/backends/codex/auth/route.d.ts.map +1 -0
- package/lib/types/backends/codex/auth/route.js +52 -0
- package/lib/types/backends/codex/auth/status.d.ts +16 -0
- package/lib/types/backends/codex/auth/status.d.ts.map +1 -0
- package/lib/types/backends/codex/auth/status.js +115 -0
- package/lib/types/backends/codex/backend.d.ts +58 -0
- package/lib/types/backends/codex/backend.d.ts.map +1 -0
- package/lib/types/backends/codex/backend.js +201 -0
- package/lib/types/backends/codex/catalog.d.ts +17 -0
- package/lib/types/backends/codex/catalog.d.ts.map +1 -0
- package/lib/types/backends/codex/catalog.js +128 -0
- package/lib/types/backends/codex/channels.d.ts +59 -0
- package/lib/types/backends/codex/channels.d.ts.map +1 -0
- package/lib/types/backends/codex/channels.js +274 -0
- package/lib/types/backends/codex/contract.d.ts +46 -0
- package/lib/types/backends/codex/contract.d.ts.map +1 -0
- package/lib/types/backends/codex/contract.js +80 -0
- package/lib/types/backends/codex/detect.d.ts +14 -0
- package/lib/types/backends/codex/detect.d.ts.map +1 -0
- package/lib/types/backends/codex/detect.js +90 -0
- package/lib/types/backends/codex/index.d.ts +6 -0
- package/lib/types/backends/codex/index.d.ts.map +1 -0
- package/lib/types/backends/codex/index.js +5 -0
- package/lib/types/backends/codex/modes.d.ts +16 -0
- package/lib/types/backends/codex/modes.d.ts.map +1 -0
- package/lib/types/backends/codex/modes.js +49 -0
- package/lib/types/backends/codex/narrow.d.ts +20 -0
- package/lib/types/backends/codex/narrow.d.ts.map +1 -0
- package/lib/types/backends/codex/narrow.js +18 -0
- package/lib/types/backends/codex/prefs.d.ts +42 -0
- package/lib/types/backends/codex/prefs.d.ts.map +1 -0
- package/lib/types/backends/codex/prefs.js +124 -0
- package/lib/types/backends/codex/protocol/index.d.ts +149 -0
- package/lib/types/backends/codex/protocol/index.d.ts.map +1 -0
- package/lib/types/backends/codex/protocol/index.js +130 -0
- package/lib/types/backends/codex/rpc/binary.d.ts +35 -0
- package/lib/types/backends/codex/rpc/binary.d.ts.map +1 -0
- package/lib/types/backends/codex/rpc/binary.js +174 -0
- package/lib/types/backends/codex/rpc/client.d.ts +72 -0
- package/lib/types/backends/codex/rpc/client.d.ts.map +1 -0
- package/lib/types/backends/codex/rpc/client.js +214 -0
- package/lib/types/backends/codex/rpc/hub.d.ts +105 -0
- package/lib/types/backends/codex/rpc/hub.d.ts.map +1 -0
- package/lib/types/backends/codex/rpc/hub.js +532 -0
- package/lib/types/backends/codex/rpc/transport.d.ts +39 -0
- package/lib/types/backends/codex/rpc/transport.d.ts.map +1 -0
- package/lib/types/backends/codex/rpc/transport.js +212 -0
- package/lib/types/backends/codex/session/activity.d.ts +18 -0
- package/lib/types/backends/codex/session/activity.d.ts.map +1 -0
- package/lib/types/backends/codex/session/activity.js +108 -0
- package/lib/types/backends/codex/session/approvals.d.ts +39 -0
- package/lib/types/backends/codex/session/approvals.d.ts.map +1 -0
- package/lib/types/backends/codex/session/approvals.js +477 -0
- package/lib/types/backends/codex/session/commands.d.ts +37 -0
- package/lib/types/backends/codex/session/commands.d.ts.map +1 -0
- package/lib/types/backends/codex/session/commands.js +141 -0
- package/lib/types/backends/codex/session/controls.d.ts +37 -0
- package/lib/types/backends/codex/session/controls.d.ts.map +1 -0
- package/lib/types/backends/codex/session/controls.js +303 -0
- package/lib/types/backends/codex/session/goals.d.ts +25 -0
- package/lib/types/backends/codex/session/goals.d.ts.map +1 -0
- package/lib/types/backends/codex/session/goals.js +97 -0
- package/lib/types/backends/codex/session/history.d.ts +52 -0
- package/lib/types/backends/codex/session/history.d.ts.map +1 -0
- package/lib/types/backends/codex/session/history.js +196 -0
- package/lib/types/backends/codex/session/images.d.ts +17 -0
- package/lib/types/backends/codex/session/images.d.ts.map +1 -0
- package/lib/types/backends/codex/session/images.js +138 -0
- package/lib/types/backends/codex/session/input.d.ts +75 -0
- package/lib/types/backends/codex/session/input.d.ts.map +1 -0
- package/lib/types/backends/codex/session/input.js +294 -0
- package/lib/types/backends/codex/session/plan-review.d.ts +19 -0
- package/lib/types/backends/codex/session/plan-review.d.ts.map +1 -0
- package/lib/types/backends/codex/session/plan-review.js +48 -0
- package/lib/types/backends/codex/session/prompts.d.ts +7 -0
- package/lib/types/backends/codex/session/prompts.d.ts.map +1 -0
- package/lib/types/backends/codex/session/prompts.js +47 -0
- package/lib/types/backends/codex/session/session.d.ts +12 -0
- package/lib/types/backends/codex/session/session.d.ts.map +1 -0
- package/lib/types/backends/codex/session/session.js +871 -0
- package/lib/types/backends/codex/session/side-query.d.ts +25 -0
- package/lib/types/backends/codex/session/side-query.d.ts.map +1 -0
- package/lib/types/backends/codex/session/side-query.js +121 -0
- package/lib/types/backends/codex/session/state.d.ts +57 -0
- package/lib/types/backends/codex/session/state.d.ts.map +1 -0
- package/lib/types/backends/codex/session/state.js +1 -0
- package/lib/types/backends/codex/session/subagents.d.ts +28 -0
- package/lib/types/backends/codex/session/subagents.d.ts.map +1 -0
- package/lib/types/backends/codex/session/subagents.js +286 -0
- package/lib/types/backends/codex/session/tasks.d.ts +25 -0
- package/lib/types/backends/codex/session/tasks.d.ts.map +1 -0
- package/lib/types/backends/codex/session/tasks.js +207 -0
- package/lib/types/backends/codex/session/tool-output.d.ts +9 -0
- package/lib/types/backends/codex/session/tool-output.d.ts.map +1 -0
- package/lib/types/backends/codex/session/tool-output.js +29 -0
- package/lib/types/backends/codex/translate/commands.d.ts +30 -0
- package/lib/types/backends/codex/translate/commands.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/commands.js +103 -0
- package/lib/types/backends/codex/translate/events.d.ts +9 -0
- package/lib/types/backends/codex/translate/events.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/events.js +71 -0
- package/lib/types/backends/codex/translate/items.d.ts +112 -0
- package/lib/types/backends/codex/translate/items.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/items.js +375 -0
- package/lib/types/backends/codex/translate/live.d.ts +39 -0
- package/lib/types/backends/codex/translate/live.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/live.js +315 -0
- package/lib/types/backends/codex/translate/notices.d.ts +27 -0
- package/lib/types/backends/codex/translate/notices.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/notices.js +99 -0
- package/lib/types/backends/codex/translate/presentation.d.ts +49 -0
- package/lib/types/backends/codex/translate/presentation.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/presentation.js +237 -0
- package/lib/types/backends/codex/translate/replay.d.ts +18 -0
- package/lib/types/backends/codex/translate/replay.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/replay.js +33 -0
- package/lib/types/backends/codex/translate/usage.d.ts +29 -0
- package/lib/types/backends/codex/translate/usage.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/usage.js +65 -0
- package/lib/types/backends/shared/atomic-file.d.ts +4 -0
- package/lib/types/backends/shared/atomic-file.d.ts.map +1 -0
- package/lib/types/backends/shared/atomic-file.js +52 -0
- package/lib/types/backends/shared/channel-tokens.d.ts +29 -0
- package/lib/types/backends/shared/channel-tokens.d.ts.map +1 -0
- package/lib/types/backends/shared/channel-tokens.js +161 -0
- package/lib/types/backends/shared/display-path.d.ts +3 -0
- package/lib/types/backends/shared/display-path.d.ts.map +1 -0
- package/lib/types/backends/shared/display-path.js +12 -0
- package/lib/types/branding.d.ts +92 -0
- package/lib/types/branding.d.ts.map +1 -0
- package/lib/types/branding.js +117 -0
- package/lib/types/channel/activity.d.ts +53 -0
- package/lib/types/channel/activity.d.ts.map +1 -0
- package/lib/types/channel/activity.js +955 -0
- package/lib/types/channel/capabilities.d.ts +24 -0
- package/lib/types/channel/capabilities.d.ts.map +1 -0
- package/lib/types/channel/capabilities.js +57 -0
- package/lib/types/channel/channel-slug.d.ts +9 -0
- package/lib/types/channel/channel-slug.d.ts.map +1 -0
- package/lib/types/channel/channel-slug.js +15 -0
- package/lib/types/channel/channel-wizard.d.ts +30 -0
- package/lib/types/channel/channel-wizard.d.ts.map +1 -0
- package/lib/types/channel/channel-wizard.js +226 -0
- package/lib/types/channel/elicitation.d.ts +135 -0
- package/lib/types/channel/elicitation.d.ts.map +1 -0
- package/lib/types/channel/elicitation.js +360 -0
- package/lib/types/channel/goal-command.d.ts +49 -0
- package/lib/types/channel/goal-command.d.ts.map +1 -0
- package/lib/types/channel/goal-command.js +72 -0
- package/lib/types/channel/history-restore.d.ts +16 -0
- package/lib/types/channel/history-restore.d.ts.map +1 -0
- package/lib/types/channel/history-restore.js +214 -0
- package/lib/types/channel/interaction.d.ts +38 -0
- package/lib/types/channel/interaction.d.ts.map +1 -0
- package/lib/types/channel/interaction.js +110 -0
- package/lib/types/channel/job-format.d.ts +6 -0
- package/lib/types/channel/job-format.d.ts.map +1 -0
- package/lib/types/channel/job-format.js +12 -0
- package/lib/types/channel/live-output.d.ts +35 -0
- package/lib/types/channel/live-output.d.ts.map +1 -0
- package/lib/types/channel/live-output.js +74 -0
- package/lib/types/channel/model-capabilities.d.ts +10 -0
- package/lib/types/channel/model-capabilities.d.ts.map +1 -0
- package/lib/types/channel/model-capabilities.js +51 -0
- package/lib/types/channel/permissions.d.ts +155 -0
- package/lib/types/channel/permissions.d.ts.map +1 -0
- package/lib/types/channel/permissions.js +188 -0
- package/lib/types/channel/projection.d.ts +110 -0
- package/lib/types/channel/projection.d.ts.map +1 -0
- package/lib/types/channel/projection.js +1521 -0
- package/lib/types/channel/question-record.d.ts +76 -0
- package/lib/types/channel/question-record.d.ts.map +1 -0
- package/lib/types/channel/question-record.js +109 -0
- package/lib/types/channel/questions.d.ts +204 -0
- package/lib/types/channel/questions.d.ts.map +1 -0
- package/lib/types/channel/questions.js +286 -0
- package/lib/types/channel/sanitize.d.ts +49 -0
- package/lib/types/channel/sanitize.d.ts.map +1 -0
- package/lib/types/channel/sanitize.js +88 -0
- package/lib/types/channel/selection-record.d.ts +18 -0
- package/lib/types/channel/selection-record.d.ts.map +1 -0
- package/lib/types/channel/selection-record.js +45 -0
- package/lib/types/channel/side-prompts.d.ts +59 -0
- package/lib/types/channel/side-prompts.d.ts.map +1 -0
- package/lib/types/channel/side-prompts.js +127 -0
- package/lib/types/channel/transcript.d.ts +17 -0
- package/lib/types/channel/transcript.d.ts.map +1 -0
- package/lib/types/channel/transcript.js +19 -0
- package/lib/types/channel/usage.d.ts +48 -0
- package/lib/types/channel/usage.d.ts.map +1 -0
- package/lib/types/channel/usage.js +143 -0
- package/lib/types/commands.d.ts +147 -0
- package/lib/types/commands.d.ts.map +1 -1
- package/lib/types/commands.js +196 -2
- package/lib/types/components/AgentMessageComposer.d.ts +50 -0
- package/lib/types/components/AgentMessageComposer.d.ts.map +1 -0
- package/lib/types/components/AgentMessageComposer.js +159 -0
- package/lib/types/components/BtwPanel.d.ts +13 -12
- package/lib/types/components/BtwPanel.d.ts.map +1 -1
- package/lib/types/components/BtwPanel.js +35 -24
- package/lib/types/components/ChannelPicker.d.ts +40 -0
- package/lib/types/components/ChannelPicker.d.ts.map +1 -0
- package/lib/types/components/ChannelPicker.js +26 -0
- package/lib/types/components/Chat/JobCard.d.ts +29 -31
- package/lib/types/components/Chat/JobCard.d.ts.map +1 -1
- package/lib/types/components/Chat/JobCard.js +31 -112
- package/lib/types/components/Chat/SubagentMessage.d.ts +4 -1
- package/lib/types/components/Chat/SubagentMessage.d.ts.map +1 -1
- package/lib/types/components/Chat/SubagentMessage.js +10 -3
- package/lib/types/components/ClaudeGirl.d.ts +27 -0
- package/lib/types/components/ClaudeGirl.d.ts.map +1 -0
- package/lib/types/components/ClaudeGirl.js +30 -0
- package/lib/types/components/CodeBlockFrame.d.ts +19 -0
- package/lib/types/components/CodeBlockFrame.d.ts.map +1 -0
- package/lib/types/components/CodeBlockFrame.js +138 -0
- package/lib/types/components/CommandSuggestions.d.ts +10 -1
- package/lib/types/components/CommandSuggestions.d.ts.map +1 -1
- package/lib/types/components/CommandSuggestions.js +20 -3
- package/lib/types/components/ContextBarView.d.ts +2 -2
- package/lib/types/components/ContextBarView.d.ts.map +1 -1
- package/lib/types/components/ContextBarView.js +18 -8
- package/lib/types/components/EffortChargeGlyph.d.ts +1 -1
- package/lib/types/components/EffortChargeGlyph.d.ts.map +1 -1
- package/lib/types/components/EffortChargeGlyph.js +3 -4
- package/lib/types/components/EffortInputBorder.d.ts +1 -2
- package/lib/types/components/EffortInputBorder.d.ts.map +1 -1
- package/lib/types/components/EffortInputBorder.js +7 -4
- package/lib/types/components/EffortSlider.d.ts +5 -1
- package/lib/types/components/EffortSlider.d.ts.map +1 -1
- package/lib/types/components/EffortSlider.js +2 -2
- package/lib/types/components/EffortTierBadge.d.ts +1 -2
- package/lib/types/components/EffortTierBadge.d.ts.map +1 -1
- package/lib/types/components/EffortTierBadge.js +8 -5
- package/lib/types/components/GoalTodoPanel.d.ts +2 -1
- package/lib/types/components/GoalTodoPanel.d.ts.map +1 -1
- package/lib/types/components/GoalTodoPanel.js +11 -5
- package/lib/types/components/InlineMathParagraph.js +1 -1
- package/lib/types/components/JobsPanel.d.ts +8 -9
- package/lib/types/components/JobsPanel.d.ts.map +1 -1
- package/lib/types/components/JobsPanel.js +72 -13
- package/lib/types/components/KernelPicker.d.ts +28 -0
- package/lib/types/components/KernelPicker.d.ts.map +1 -0
- package/lib/types/components/KernelPicker.js +37 -0
- package/lib/types/components/LogoV2.d.ts +7 -1
- package/lib/types/components/LogoV2.d.ts.map +1 -1
- package/lib/types/components/LogoV2.js +120 -24
- package/lib/types/components/Markdown.d.ts +2 -1
- package/lib/types/components/Markdown.d.ts.map +1 -1
- package/lib/types/components/Markdown.js +37 -8
- package/lib/types/components/MathBlock.d.ts.map +1 -1
- package/lib/types/components/MathBlock.js +3 -1
- package/lib/types/components/MermaidDiagram.d.ts.map +1 -1
- package/lib/types/components/MermaidDiagram.js +7 -5
- package/lib/types/components/MessageList.d.ts +21 -3
- package/lib/types/components/MessageList.d.ts.map +1 -1
- package/lib/types/components/MessageList.js +62 -42
- package/lib/types/components/ModePicker.d.ts +20 -0
- package/lib/types/components/ModePicker.d.ts.map +1 -0
- package/lib/types/components/ModePicker.js +17 -0
- package/lib/types/components/PromptInput.d.ts +2 -2
- package/lib/types/components/PromptInput.d.ts.map +1 -1
- package/lib/types/components/PromptInput.js +308 -55
- package/lib/types/components/SdkInstallWizard.d.ts +44 -0
- package/lib/types/components/SdkInstallWizard.d.ts.map +1 -0
- package/lib/types/components/SdkInstallWizard.js +18 -0
- package/lib/types/components/SearchBox.d.ts +7 -8
- package/lib/types/components/SearchBox.d.ts.map +1 -1
- package/lib/types/components/SearchBox.js +18 -9
- package/lib/types/components/SplitDiffView.d.ts.map +1 -1
- package/lib/types/components/SplitDiffView.js +113 -6
- package/lib/types/components/StarPrompt.d.ts.map +1 -1
- package/lib/types/components/StarPrompt.js +5 -3
- package/lib/types/components/StreamingMarkdown.d.ts.map +1 -1
- package/lib/types/components/StreamingMarkdown.js +6 -4
- package/lib/types/components/SubagentCard.d.ts +2 -1
- package/lib/types/components/SubagentCard.d.ts.map +1 -1
- package/lib/types/components/SubagentCard.js +25 -18
- package/lib/types/components/SubagentDashboard.d.ts +10 -6
- package/lib/types/components/SubagentDashboard.d.ts.map +1 -1
- package/lib/types/components/SubagentDashboard.js +32 -21
- package/lib/types/components/SubagentDetailScene.d.ts +16 -1
- package/lib/types/components/SubagentDetailScene.d.ts.map +1 -1
- package/lib/types/components/SubagentDetailScene.js +196 -45
- package/lib/types/components/SyntaxText.d.ts.map +1 -1
- package/lib/types/components/SyntaxText.js +4 -1
- package/lib/types/components/TurnInterruptedRow.d.ts +3 -1
- package/lib/types/components/TurnInterruptedRow.d.ts.map +1 -1
- package/lib/types/components/TurnInterruptedRow.js +6 -3
- package/lib/types/components/TurnUsageRow.d.ts +24 -0
- package/lib/types/components/TurnUsageRow.d.ts.map +1 -0
- package/lib/types/components/TurnUsageRow.js +46 -0
- package/lib/types/components/WorkingSpinner.d.ts +2 -1
- package/lib/types/components/WorkingSpinner.d.ts.map +1 -1
- package/lib/types/components/WorkingSpinner.js +21 -4
- package/lib/types/components/approvals/ApprovalPanel.d.ts +36 -13
- package/lib/types/components/approvals/ApprovalPanel.d.ts.map +1 -1
- package/lib/types/components/approvals/ApprovalPanel.js +173 -25
- package/lib/types/components/claudeGirlSprite.d.ts +18 -0
- package/lib/types/components/claudeGirlSprite.d.ts.map +1 -0
- package/lib/types/components/claudeGirlSprite.js +48 -0
- package/lib/types/components/design-system/ThemeProvider.d.ts.map +1 -1
- package/lib/types/components/design-system/ThemeProvider.js +46 -13
- package/lib/types/components/design-system/ThemedText.d.ts +3 -1
- package/lib/types/components/design-system/ThemedText.d.ts.map +1 -1
- package/lib/types/components/design-system/ThemedText.js +2 -2
- package/lib/types/components/diffPatch.d.ts +55 -0
- package/lib/types/components/diffPatch.d.ts.map +1 -0
- package/lib/types/components/diffPatch.js +142 -0
- package/lib/types/components/kernelCatalog.d.ts +48 -0
- package/lib/types/components/kernelCatalog.d.ts.map +1 -0
- package/lib/types/components/kernelCatalog.js +53 -0
- package/lib/types/components/launchpadActions.d.ts +13 -6
- package/lib/types/components/launchpadActions.d.ts.map +1 -1
- package/lib/types/components/launchpadActions.js +26 -4
- package/lib/types/components/launchpadParams.d.ts +101 -0
- package/lib/types/components/launchpadParams.d.ts.map +1 -0
- package/lib/types/components/launchpadParams.js +171 -0
- package/lib/types/components/maidPortrait.d.ts +37 -5
- package/lib/types/components/maidPortrait.d.ts.map +1 -1
- package/lib/types/components/maidPortrait.js +73 -54
- package/lib/types/components/messages/AgentMessageFlow.d.ts +20 -0
- package/lib/types/components/messages/AgentMessageFlow.d.ts.map +1 -0
- package/lib/types/components/messages/AgentMessageFlow.js +37 -0
- package/lib/types/components/messages/AssistantThinkingMessage.d.ts +6 -1
- package/lib/types/components/messages/AssistantThinkingMessage.d.ts.map +1 -1
- package/lib/types/components/messages/AssistantThinkingMessage.js +29 -5
- package/lib/types/components/messages/AssistantToolUseMessage.d.ts +11 -2
- package/lib/types/components/messages/AssistantToolUseMessage.d.ts.map +1 -1
- package/lib/types/components/messages/AssistantToolUseMessage.js +289 -36
- package/lib/types/components/messages/TranscriptLeaves.d.ts +85 -0
- package/lib/types/components/messages/TranscriptLeaves.d.ts.map +1 -0
- package/lib/types/components/messages/TranscriptLeaves.js +74 -0
- package/lib/types/components/messages/agentTeam.d.ts +69 -0
- package/lib/types/components/messages/agentTeam.d.ts.map +1 -0
- package/lib/types/components/messages/agentTeam.js +53 -0
- package/lib/types/components/messages/liveOutputLines.d.ts +33 -0
- package/lib/types/components/messages/liveOutputLines.d.ts.map +1 -0
- package/lib/types/components/messages/liveOutputLines.js +100 -0
- package/lib/types/components/messages/subagentTranscript.d.ts +146 -0
- package/lib/types/components/messages/subagentTranscript.d.ts.map +1 -0
- package/lib/types/components/messages/subagentTranscript.js +304 -0
- package/lib/types/components/questions/AskUserQuestionPanel.d.ts +16 -1
- package/lib/types/components/questions/AskUserQuestionPanel.d.ts.map +1 -1
- package/lib/types/components/questions/AskUserQuestionPanel.js +76 -6
- package/lib/types/components/questions/PlanReviewPanel.d.ts +8 -3
- package/lib/types/components/questions/PlanReviewPanel.d.ts.map +1 -1
- package/lib/types/components/questions/PlanReviewPanel.js +11 -6
- package/lib/types/components/questions/ProviderModelEditor.d.ts +12 -0
- package/lib/types/components/questions/ProviderModelEditor.d.ts.map +1 -0
- package/lib/types/components/questions/ProviderModelEditor.js +266 -0
- package/lib/types/components/shimmer.d.ts +26 -0
- package/lib/types/components/shimmer.d.ts.map +1 -1
- package/lib/types/components/shimmer.js +26 -0
- package/lib/types/components/sidePanel/InfoPanel.d.ts.map +1 -1
- package/lib/types/components/sidePanel/InfoPanel.js +13 -8
- package/lib/types/components/sidePanel/PanelBar.d.ts +0 -24
- package/lib/types/components/sidePanel/PanelBar.d.ts.map +1 -1
- package/lib/types/components/sidePanel/PanelBar.js +55 -77
- package/lib/types/components/sidePanel/PanelStore.d.ts +3 -1
- package/lib/types/components/sidePanel/PanelStore.d.ts.map +1 -1
- package/lib/types/components/sidePanel/PanelStore.js +8 -4
- package/lib/types/components/sidePanel/SidePanelColumn.d.ts +3 -10
- package/lib/types/components/sidePanel/SidePanelColumn.d.ts.map +1 -1
- package/lib/types/components/sidePanel/SidePanelColumn.js +9 -12
- package/lib/types/components/sidePanel/TrajectoryPanel.d.ts.map +1 -1
- package/lib/types/components/sidePanel/TrajectoryPanel.js +78 -14
- package/lib/types/components/sidePanel/agentViewStore.d.ts +20 -0
- package/lib/types/components/sidePanel/agentViewStore.d.ts.map +1 -0
- package/lib/types/components/sidePanel/agentViewStore.js +26 -0
- package/lib/types/components/sidePanel/btw/BtwComposer.d.ts +50 -0
- package/lib/types/components/sidePanel/btw/BtwComposer.d.ts.map +1 -0
- package/lib/types/components/sidePanel/btw/BtwComposer.js +45 -0
- package/lib/types/components/sidePanel/btw/BtwPanelAdapter.d.ts +13 -0
- package/lib/types/components/sidePanel/btw/BtwPanelAdapter.d.ts.map +1 -0
- package/lib/types/components/sidePanel/btw/BtwPanelAdapter.js +147 -0
- package/lib/types/components/sidePanel/btw/BtwThreadScene.d.ts +14 -0
- package/lib/types/components/sidePanel/btw/BtwThreadScene.d.ts.map +1 -0
- package/lib/types/components/sidePanel/btw/BtwThreadScene.js +131 -0
- package/lib/types/components/sidePanel/btw/BtwThreadView.d.ts +30 -0
- package/lib/types/components/sidePanel/btw/BtwThreadView.d.ts.map +1 -0
- package/lib/types/components/sidePanel/btw/BtwThreadView.js +87 -0
- package/lib/types/components/sidePanel/btw/threads.d.ts +111 -0
- package/lib/types/components/sidePanel/btw/threads.d.ts.map +1 -0
- package/lib/types/components/sidePanel/btw/threads.js +302 -0
- package/lib/types/components/sidePanel/builtinPanels.d.ts.map +1 -1
- package/lib/types/components/sidePanel/builtinPanels.js +70 -30
- package/lib/types/components/sidePanel/companion/CompanionPanel.d.ts +4 -46
- package/lib/types/components/sidePanel/companion/CompanionPanel.d.ts.map +1 -1
- package/lib/types/components/sidePanel/companion/CompanionPanel.js +19 -55
- package/lib/types/components/sidePanel/companion/mood.d.ts +32 -0
- package/lib/types/components/sidePanel/companion/mood.d.ts.map +1 -1
- package/lib/types/components/sidePanel/companion/mood.js +44 -0
- package/lib/types/components/sidePanel/companion/skins.d.ts +34 -0
- package/lib/types/components/sidePanel/companion/skins.d.ts.map +1 -1
- package/lib/types/components/sidePanel/companion/skins.js +203 -29
- package/lib/types/components/splashFonts.d.ts +17 -9
- package/lib/types/components/splashFonts.d.ts.map +1 -1
- package/lib/types/components/splashFonts.js +119 -15
- package/lib/types/components/splashLayout.d.ts.map +1 -1
- package/lib/types/components/splashLayout.js +3 -1
- package/lib/types/components/subagentDetailMemory.d.ts +17 -0
- package/lib/types/components/subagentDetailMemory.d.ts.map +1 -0
- package/lib/types/components/subagentDetailMemory.js +28 -0
- package/lib/types/components/trajectory/Inspector.d.ts.map +1 -1
- package/lib/types/components/trajectory/Inspector.js +9 -0
- package/lib/types/components/trajectory/Ledger.d.ts.map +1 -1
- package/lib/types/components/trajectory/Ledger.js +7 -1
- package/lib/types/components/trajectory/scope.d.ts +64 -0
- package/lib/types/components/trajectory/scope.d.ts.map +1 -0
- package/lib/types/components/trajectory/scope.js +88 -0
- package/lib/types/components/trajectory/useTrajectoryScope.d.ts +42 -0
- package/lib/types/components/trajectory/useTrajectoryScope.d.ts.map +1 -0
- package/lib/types/components/trajectory/useTrajectoryScope.js +86 -0
- package/lib/types/customTheme.d.ts +4 -6
- package/lib/types/customTheme.d.ts.map +1 -1
- package/lib/types/customTheme.js +6 -8
- package/lib/types/dsh-adapter/approvals.d.ts +18 -5
- package/lib/types/dsh-adapter/approvals.d.ts.map +1 -1
- package/lib/types/dsh-adapter/approvals.js +17 -4
- package/lib/types/dsh-adapter/backend/session.d.ts +64 -0
- package/lib/types/dsh-adapter/backend/session.d.ts.map +1 -0
- package/lib/types/dsh-adapter/backend/session.js +291 -0
- package/lib/types/dsh-adapter/backend/translate.d.ts +58 -0
- package/lib/types/dsh-adapter/backend/translate.d.ts.map +1 -0
- package/lib/types/dsh-adapter/backend/translate.js +467 -0
- package/lib/types/dsh-adapter/backends.d.ts +49 -0
- package/lib/types/dsh-adapter/backends.d.ts.map +1 -0
- package/lib/types/dsh-adapter/backends.js +124 -0
- package/lib/types/dsh-adapter/channel/action-readiness.d.ts +16 -0
- package/lib/types/dsh-adapter/channel/action-readiness.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/action-readiness.js +109 -0
- package/lib/types/dsh-adapter/channel/agent-view-projection.d.ts +2 -2
- package/lib/types/dsh-adapter/channel/agent-view-projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/background-action.d.ts +2 -2
- package/lib/types/dsh-adapter/channel/background-action.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/background-action.js +7 -5
- package/lib/types/dsh-adapter/channel/binding-events.d.ts +19 -9
- package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/binding-events.js +58 -135
- package/lib/types/dsh-adapter/channel/binding.d.ts +61 -14
- package/lib/types/dsh-adapter/channel/binding.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/binding.js +102 -35
- package/lib/types/dsh-adapter/channel/command-completions.d.ts +3 -0
- package/lib/types/dsh-adapter/channel/command-completions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/command-completions.js +33 -4
- package/lib/types/dsh-adapter/channel/compaction.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/compaction.js +3 -2
- package/lib/types/dsh-adapter/channel/composer-images.d.ts +5 -0
- package/lib/types/dsh-adapter/channel/composer-images.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/composer-images.js +4 -3
- package/lib/types/dsh-adapter/channel/core/actions.d.ts +39 -0
- package/lib/types/dsh-adapter/channel/core/actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/actions.js +152 -0
- package/lib/types/dsh-adapter/channel/core/binding-feed.d.ts +145 -0
- package/lib/types/dsh-adapter/channel/core/binding-feed.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/binding-feed.js +289 -0
- package/lib/types/dsh-adapter/channel/core/compose.d.ts +217 -0
- package/lib/types/dsh-adapter/channel/core/compose.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/compose.js +938 -0
- package/lib/types/dsh-adapter/channel/core/files.d.ts +57 -0
- package/lib/types/dsh-adapter/channel/core/files.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/files.js +45 -0
- package/lib/types/dsh-adapter/channel/core/host.d.ts +55 -0
- package/lib/types/dsh-adapter/channel/core/host.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/host.js +116 -0
- package/lib/types/dsh-adapter/channel/core/local-actions.d.ts +46 -0
- package/lib/types/dsh-adapter/channel/core/local-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/local-actions.js +117 -0
- package/lib/types/dsh-adapter/channel/core/local-images.d.ts +20 -0
- package/lib/types/dsh-adapter/channel/core/local-images.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/local-images.js +147 -0
- package/lib/types/dsh-adapter/channel/core/reports.d.ts +12 -0
- package/lib/types/dsh-adapter/channel/core/reports.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/reports.js +77 -0
- package/lib/types/dsh-adapter/channel/core/session-controls.d.ts +39 -0
- package/lib/types/dsh-adapter/channel/core/session-controls.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/session-controls.js +219 -0
- package/lib/types/dsh-adapter/channel/core/session-switch.d.ts +174 -0
- package/lib/types/dsh-adapter/channel/core/session-switch.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/session-switch.js +390 -0
- package/lib/types/dsh-adapter/channel/core/sessions.d.ts +40 -0
- package/lib/types/dsh-adapter/channel/core/sessions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/sessions.js +268 -0
- package/lib/types/dsh-adapter/channel/decisions.d.ts +4 -3
- package/lib/types/dsh-adapter/channel/decisions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/decisions.js +4 -4
- package/lib/types/dsh-adapter/channel/emitter.d.ts +15 -2
- package/lib/types/dsh-adapter/channel/emitter.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/emitter.js +5 -3
- package/lib/types/dsh-adapter/channel/extensions.d.ts +36 -0
- package/lib/types/dsh-adapter/channel/extensions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/extensions.js +714 -0
- package/lib/types/dsh-adapter/channel/ide-selection.d.ts +1 -10
- package/lib/types/dsh-adapter/channel/ide-selection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/ide-selection.js +4 -46
- package/lib/types/dsh-adapter/channel/input-actions.d.ts +27 -4
- package/lib/types/dsh-adapter/channel/input-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/input-actions.js +240 -21
- package/lib/types/dsh-adapter/channel/input-delivery.d.ts +21 -5
- package/lib/types/dsh-adapter/channel/input-delivery.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/input-delivery.js +65 -27
- package/lib/types/dsh-adapter/channel/local-actions.d.ts +10 -32
- package/lib/types/dsh-adapter/channel/local-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/local-actions.js +10 -78
- package/lib/types/dsh-adapter/channel/local-fs.d.ts +3 -0
- package/lib/types/dsh-adapter/channel/local-fs.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/local-fs.js +46 -0
- package/lib/types/dsh-adapter/channel/mode-actions.d.ts +3 -3
- package/lib/types/dsh-adapter/channel/mode-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts +2 -2
- package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/model-actions.d.ts +3 -3
- package/lib/types/dsh-adapter/channel/model-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/model-actions.js +38 -5
- package/lib/types/dsh-adapter/channel/model-switch.d.ts +2 -2
- package/lib/types/dsh-adapter/channel/model-switch.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/model-switch.js +9 -6
- package/lib/types/dsh-adapter/channel/preferences.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/preferences.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/preferences.js +16 -0
- package/lib/types/dsh-adapter/channel/projection.d.ts +16 -13
- package/lib/types/dsh-adapter/channel/projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/projection.js +38 -1143
- package/lib/types/dsh-adapter/channel/question-record.d.ts +3 -75
- package/lib/types/dsh-adapter/channel/question-record.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/question-record.js +3 -107
- package/lib/types/dsh-adapter/channel/session-activity.d.ts +9 -0
- package/lib/types/dsh-adapter/channel/session-activity.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-activity.js +42 -0
- package/lib/types/dsh-adapter/channel/session-adoption.d.ts +4 -4
- package/lib/types/dsh-adapter/channel/session-adoption.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-adoption.js +3 -1
- package/lib/types/dsh-adapter/channel/session-fork.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/session-fork.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-fork.js +2 -1
- package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts +7 -3
- package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-live-adoption.js +1 -1
- package/lib/types/dsh-adapter/channel/session-metadata.d.ts +2 -9
- package/lib/types/dsh-adapter/channel/session-metadata.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-reset.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/session-reset.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-reset.js +4 -0
- package/lib/types/dsh-adapter/channel/session-resume.d.ts +5 -10
- package/lib/types/dsh-adapter/channel/session-resume.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-resume.js +74 -113
- package/lib/types/dsh-adapter/channel/session-rewind.d.ts +4 -4
- package/lib/types/dsh-adapter/channel/session-rewind.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-rewind.js +7 -6
- package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts +4 -4
- package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-tree-actions.js +8 -7
- package/lib/types/dsh-adapter/channel/settings-host.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/settings-host.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/settings-host.js +8 -0
- package/lib/types/dsh-adapter/channel/skill-catalog.d.ts +5 -1
- package/lib/types/dsh-adapter/channel/skill-catalog.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/skill-catalog.js +2 -2
- package/lib/types/dsh-adapter/channel/state.d.ts +72 -1
- package/lib/types/dsh-adapter/channel/state.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/state.js +7 -3
- package/lib/types/dsh-adapter/channel/subagent-projection.d.ts +58 -3
- package/lib/types/dsh-adapter/channel/subagent-projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/subagent-projection.js +153 -9
- package/lib/types/dsh-adapter/channel/subagent-transcript.d.ts +114 -0
- package/lib/types/dsh-adapter/channel/subagent-transcript.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/subagent-transcript.js +279 -0
- package/lib/types/dsh-adapter/channel/transcript.d.ts +7 -15
- package/lib/types/dsh-adapter/channel/transcript.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/transcript.js +17 -21
- package/lib/types/dsh-adapter/channel/types.d.ts +16 -7
- package/lib/types/dsh-adapter/channel/types.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/usage.d.ts +3 -23
- package/lib/types/dsh-adapter/channel/usage.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/usage.js +5 -111
- package/lib/types/dsh-adapter/channel/workspace-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/workspace-actions.js +2 -1
- package/lib/types/dsh-adapter/channel.d.ts +17 -8
- package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel.js +24 -1059
- package/lib/types/dsh-adapter/context-occupancy.d.ts +6 -1
- package/lib/types/dsh-adapter/context-occupancy.d.ts.map +1 -1
- package/lib/types/dsh-adapter/context-occupancy.js +6 -1
- package/lib/types/dsh-adapter/decision-guard.d.ts +24 -0
- package/lib/types/dsh-adapter/decision-guard.d.ts.map +1 -1
- package/lib/types/dsh-adapter/decision-guard.js +44 -0
- package/lib/types/dsh-adapter/extension-events.d.ts +4 -1
- package/lib/types/dsh-adapter/extension-events.d.ts.map +1 -1
- package/lib/types/dsh-adapter/extension-events.js +22 -10
- package/lib/types/dsh-adapter/index.d.ts +41 -3
- package/lib/types/dsh-adapter/index.d.ts.map +1 -1
- package/lib/types/dsh-adapter/index.js +28 -1
- package/lib/types/dsh-adapter/jobs.d.ts +5 -3
- package/lib/types/dsh-adapter/jobs.d.ts.map +1 -1
- package/lib/types/dsh-adapter/jobs.js +53 -14
- package/lib/types/dsh-adapter/migrate/parse/jsonl.d.ts +1 -16
- package/lib/types/dsh-adapter/migrate/parse/jsonl.d.ts.map +1 -1
- package/lib/types/dsh-adapter/migrate/parse/jsonl.js +3 -29
- package/lib/types/dsh-adapter/oauth-credential-source.d.ts +34 -0
- package/lib/types/dsh-adapter/oauth-credential-source.d.ts.map +1 -0
- package/lib/types/dsh-adapter/oauth-credential-source.js +66 -0
- package/lib/types/dsh-adapter/plugin.d.ts +38 -2
- package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin.js +546 -110
- package/lib/types/dsh-adapter/provider-model-capabilities.d.ts +10 -0
- package/lib/types/dsh-adapter/provider-model-capabilities.d.ts.map +1 -0
- package/lib/types/dsh-adapter/provider-model-capabilities.js +80 -0
- package/lib/types/dsh-adapter/providerWizard.d.ts +8 -2
- package/lib/types/dsh-adapter/providerWizard.d.ts.map +1 -1
- package/lib/types/dsh-adapter/providerWizard.js +118 -52
- package/lib/types/dsh-adapter/questions.d.ts +29 -124
- package/lib/types/dsh-adapter/questions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/questions.js +33 -267
- package/lib/types/dsh-adapter/recap.d.ts +3 -15
- package/lib/types/dsh-adapter/recap.d.ts.map +1 -1
- package/lib/types/dsh-adapter/recap.js +3 -46
- package/lib/types/dsh-adapter/sanitize.d.ts +4 -44
- package/lib/types/dsh-adapter/sanitize.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sanitize.js +4 -84
- package/lib/types/dsh-adapter/session-mount-heartbeat.d.ts +3 -1
- package/lib/types/dsh-adapter/session-mount-heartbeat.d.ts.map +1 -1
- package/lib/types/dsh-adapter/session-mount-heartbeat.js +4 -2
- package/lib/types/dsh-adapter/sessions/digest.d.ts +18 -3
- package/lib/types/dsh-adapter/sessions/digest.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/digest.js +60 -27
- package/lib/types/dsh-adapter/sessions/list.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/list.js +6 -4
- package/lib/types/dsh-adapter/sessions/recovery.d.ts +2 -2
- package/lib/types/dsh-adapter/sessions/recovery.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/recovery.js +23 -14
- package/lib/types/dsh-adapter/sessions/store.d.ts +2 -0
- package/lib/types/dsh-adapter/sessions/store.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/store.js +1 -0
- package/lib/types/dsh-adapter/sessions/types.d.ts +2 -0
- package/lib/types/dsh-adapter/sessions/types.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sideQuestion.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sideQuestion.js +3 -13
- package/lib/types/dsh-adapter/subagents.d.ts.map +1 -1
- package/lib/types/dsh-adapter/subagents.js +7 -0
- package/lib/types/dsh-adapter/themes.d.ts +1 -1
- package/lib/types/dsh-adapter/themes.d.ts.map +1 -1
- package/lib/types/dsh-adapter/trajectory/agent-source.d.ts +84 -0
- package/lib/types/dsh-adapter/trajectory/agent-source.d.ts.map +1 -0
- package/lib/types/dsh-adapter/trajectory/agent-source.js +601 -0
- package/lib/types/dsh-adapter/trajectory/guards.d.ts +31 -1
- package/lib/types/dsh-adapter/trajectory/guards.d.ts.map +1 -1
- package/lib/types/dsh-adapter/trajectory/guards.js +28 -0
- package/lib/types/dsh-adapter/trajectory/index.d.ts +3 -1
- package/lib/types/dsh-adapter/trajectory/index.d.ts.map +1 -1
- package/lib/types/dsh-adapter/trajectory/index.js +1 -0
- package/lib/types/dsh-adapter/trajectory/inspect.d.ts +7 -0
- package/lib/types/dsh-adapter/trajectory/inspect.d.ts.map +1 -1
- package/lib/types/dsh-adapter/trajectory/inspect.js +70 -2
- package/lib/types/dsh-adapter/trajectory/projection.d.ts +4 -0
- package/lib/types/dsh-adapter/trajectory/projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/trajectory/projection.js +36 -0
- package/lib/types/dsh-adapter/trajectory/types.d.ts +13 -0
- package/lib/types/dsh-adapter/trajectory/types.d.ts.map +1 -1
- package/lib/types/effortPrefs.d.ts +7 -0
- package/lib/types/effortPrefs.d.ts.map +1 -1
- package/lib/types/effortPrefs.js +11 -2
- package/lib/types/handoffAck.d.ts +57 -0
- package/lib/types/handoffAck.d.ts.map +1 -0
- package/lib/types/handoffAck.js +154 -0
- package/lib/types/handoffEvents.d.ts +52 -0
- package/lib/types/handoffEvents.d.ts.map +1 -0
- package/lib/types/handoffEvents.js +128 -0
- package/lib/types/i18n.d.ts +3189 -68
- package/lib/types/i18n.d.ts.map +1 -1
- package/lib/types/i18n.js +855 -9
- package/lib/types/ink/colorize.d.ts.map +1 -1
- package/lib/types/ink/colorize.js +8 -2
- package/lib/types/ink/components/AlternateScreen.d.ts +12 -1
- package/lib/types/ink/components/AlternateScreen.d.ts.map +1 -1
- package/lib/types/ink/components/AlternateScreen.js +25 -4
- package/lib/types/ink/components/App.d.ts +5 -1
- package/lib/types/ink/components/App.d.ts.map +1 -1
- package/lib/types/ink/components/App.js +52 -5
- package/lib/types/ink/components/Image.d.ts +8 -1
- package/lib/types/ink/components/Image.d.ts.map +1 -1
- package/lib/types/ink/components/Image.js +2 -2
- package/lib/types/ink/components/Text.d.ts +8 -1
- package/lib/types/ink/components/Text.d.ts.map +1 -1
- package/lib/types/ink/components/Text.js +11 -1
- package/lib/types/ink/dom.d.ts.map +1 -1
- package/lib/types/ink/dom.js +75 -3
- package/lib/types/ink/hooks/use-input.d.ts.map +1 -1
- package/lib/types/ink/hooks/use-input.js +9 -4
- package/lib/types/ink/ink.d.ts.map +1 -1
- package/lib/types/ink/ink.js +8 -2
- package/lib/types/ink/kitty-graphics.d.ts +7 -2
- package/lib/types/ink/kitty-graphics.d.ts.map +1 -1
- package/lib/types/ink/kitty-graphics.js +15 -7
- package/lib/types/ink/node-cache.d.ts +15 -1
- package/lib/types/ink/node-cache.d.ts.map +1 -1
- package/lib/types/ink/node-cache.js +4 -1
- package/lib/types/ink/output.d.ts.map +1 -1
- package/lib/types/ink/output.js +2 -0
- package/lib/types/ink/parse-keypress.d.ts +13 -0
- package/lib/types/ink/parse-keypress.d.ts.map +1 -1
- package/lib/types/ink/parse-keypress.js +438 -19
- package/lib/types/ink/reconciler.d.ts.map +1 -1
- package/lib/types/ink/reconciler.js +9 -0
- package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
- package/lib/types/ink/render-node-to-output.js +200 -4
- package/lib/types/ink/render-stats.d.ts +35 -0
- package/lib/types/ink/render-stats.d.ts.map +1 -0
- package/lib/types/ink/render-stats.js +53 -0
- package/lib/types/ink/sixel-codec.d.ts +11 -1
- package/lib/types/ink/sixel-codec.d.ts.map +1 -1
- package/lib/types/ink/sixel-codec.js +10 -3
- package/lib/types/ink/sixel-graphics.js +2 -2
- package/lib/types/ink/styles.d.ts +46 -0
- package/lib/types/ink/styles.d.ts.map +1 -1
- package/lib/types/ink/terminal-image.d.ts +7 -0
- package/lib/types/ink/terminal-image.d.ts.map +1 -1
- package/lib/types/ink/terminal-querier.d.ts +1 -1
- package/lib/types/ink/terminal-querier.js +4 -4
- package/lib/types/ink/text-decoration.d.ts +49 -0
- package/lib/types/ink/text-decoration.d.ts.map +1 -0
- package/lib/types/ink/text-decoration.js +235 -0
- package/lib/types/ink/update-overflow-guard.d.ts +9 -0
- package/lib/types/ink/update-overflow-guard.d.ts.map +1 -1
- package/lib/types/ink/update-overflow-guard.js +41 -0
- package/lib/types/ink/wrap-text.d.ts.map +1 -1
- package/lib/types/ink/wrap-text.js +5 -1
- package/lib/types/kernelPrefs.d.ts +51 -0
- package/lib/types/kernelPrefs.d.ts.map +1 -0
- package/lib/types/kernelPrefs.js +126 -0
- package/lib/types/modelRecents.d.ts +10 -2
- package/lib/types/modelRecents.d.ts.map +1 -1
- package/lib/types/modelRecents.js +20 -7
- package/lib/types/screens/AgentTranscriptScene.d.ts +42 -0
- package/lib/types/screens/AgentTranscriptScene.d.ts.map +1 -0
- package/lib/types/screens/AgentTranscriptScene.js +269 -0
- package/lib/types/screens/Chat.d.ts +45 -7
- package/lib/types/screens/Chat.d.ts.map +1 -1
- package/lib/types/screens/Chat.js +625 -113
- package/lib/types/screens/Launchpad.d.ts +24 -7
- package/lib/types/screens/Launchpad.d.ts.map +1 -1
- package/lib/types/screens/Launchpad.js +147 -28
- package/lib/types/screens/SessionSupervisor.d.ts +3 -3
- package/lib/types/screens/SessionSupervisor.d.ts.map +1 -1
- package/lib/types/screens/SessionSupervisor.js +69 -5
- package/lib/types/screens/Settings.d.ts.map +1 -1
- package/lib/types/screens/Settings.js +211 -7
- package/lib/types/screens/StatusLine.d.ts +40 -1
- package/lib/types/screens/StatusLine.d.ts.map +1 -1
- package/lib/types/screens/StatusLine.js +131 -19
- package/lib/types/screens/StatusMetrics.d.ts +53 -17
- package/lib/types/screens/StatusMetrics.d.ts.map +1 -1
- package/lib/types/screens/StatusMetrics.js +141 -30
- package/lib/types/screens/TrajectoryScene.d.ts.map +1 -1
- package/lib/types/screens/TrajectoryScene.js +74 -12
- package/lib/types/screens/chat/backendCommands.d.ts +37 -0
- package/lib/types/screens/chat/backendCommands.d.ts.map +1 -0
- package/lib/types/screens/chat/backendCommands.js +51 -0
- package/lib/types/screens/chat/useBackendChannels.d.ts +20 -0
- package/lib/types/screens/chat/useBackendChannels.d.ts.map +1 -0
- package/lib/types/screens/chat/useBackendChannels.js +117 -0
- package/lib/types/screens/chat/useKernelPicker.d.ts +23 -0
- package/lib/types/screens/chat/useKernelPicker.d.ts.map +1 -0
- package/lib/types/screens/chat/useKernelPicker.js +72 -0
- package/lib/types/screens/chatOverlay.d.ts +32 -2
- package/lib/types/screens/chatOverlay.d.ts.map +1 -1
- package/lib/types/screens/chatOverlay.js +9 -0
- package/lib/types/screens/sessionSupervisor/useForeignSessions.d.ts.map +1 -1
- package/lib/types/screens/sessionSupervisor/useForeignSessions.js +5 -1
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts +14 -0
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts.map +1 -1
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.js +97 -22
- package/lib/types/sessionHistory.d.ts +18 -1
- package/lib/types/sessionHistory.d.ts.map +1 -1
- package/lib/types/sessionHistory.js +46 -4
- package/lib/types/sessionPins.d.ts +7 -0
- package/lib/types/sessionPins.d.ts.map +1 -1
- package/lib/types/sessionPins.js +9 -0
- package/lib/types/sessions/resumeFailure.d.ts.map +1 -1
- package/lib/types/sessions/resumeFailure.js +2 -1
- package/lib/types/settings/definitions.d.ts +74 -0
- package/lib/types/settings/definitions.d.ts.map +1 -1
- package/lib/types/settings/definitions.js +50 -4
- package/lib/types/terminal-utils/hyperlink.d.ts +2 -2
- package/lib/types/terminal-utils/hyperlink.d.ts.map +1 -1
- package/lib/types/terminal-utils/hyperlink.js +21 -4
- package/lib/types/terminal-utils/markdown.d.ts +34 -6
- package/lib/types/terminal-utils/markdown.d.ts.map +1 -1
- package/lib/types/terminal-utils/markdown.js +257 -66
- package/lib/types/theme.d.ts +49 -8
- package/lib/types/theme.d.ts.map +1 -1
- package/lib/types/theme.js +514 -18
- package/lib/types/tips.js +2 -2
- package/lib/types/trajectory/effortIgnition.d.ts +25 -7
- package/lib/types/trajectory/effortIgnition.d.ts.map +1 -1
- package/lib/types/trajectory/effortIgnition.js +106 -34
- package/lib/types/trajectory/window.d.ts +26 -0
- package/lib/types/trajectory/window.d.ts.map +1 -0
- package/lib/types/trajectory/window.js +27 -0
- package/lib/types/tuiDisplayPrefs.d.ts +38 -1
- package/lib/types/tuiDisplayPrefs.d.ts.map +1 -1
- package/lib/types/tuiDisplayPrefs.js +45 -1
- package/lib/types/update.d.ts +88 -3
- package/lib/types/update.d.ts.map +1 -1
- package/lib/types/update.js +285 -18
- package/lib/types/utils/crashDetail.d.ts +56 -0
- package/lib/types/utils/crashDetail.d.ts.map +1 -0
- package/lib/types/utils/crashDetail.js +175 -0
- package/lib/types/utils/imageResize.d.ts +9 -23
- package/lib/types/utils/imageResize.d.ts.map +1 -1
- package/lib/types/utils/imageResize.js +24 -20
- package/lib/types/utils/inputPaste.d.ts +9 -8
- package/lib/types/utils/inputPaste.d.ts.map +1 -1
- package/lib/types/utils/inputPaste.js +53 -16
- package/lib/types/utils/jsonl.d.ts +24 -0
- package/lib/types/utils/jsonl.d.ts.map +1 -0
- package/lib/types/utils/jsonl.js +36 -0
- package/package.json +18 -2
package/lib/types/i18n.js
CHANGED
|
@@ -164,6 +164,390 @@ const dict = {
|
|
|
164
164
|
'input-images-staged': { zh: '已附加 {{count}} 张图片', en: { one: 'Attached {{count}} image', other: 'Attached {{count}} images' } },
|
|
165
165
|
'input-images-staged-adapted': { zh: '已附加 {{count}} 张图片 · {{adapted}} 张已适配', en: { one: 'Attached {{count}} image · {{adapted}} adapted', other: 'Attached {{count}} images · {{adapted}} adapted' } },
|
|
166
166
|
'send-failed': { zh: '发送失败 · {{err}}', en: 'Send failed · {{err}}' },
|
|
167
|
+
// ── agent team: 用户发给子代理的消息,由父代理转发(模型可见) ──────
|
|
168
|
+
'agent-message-native-envelope': { zh: '请通过 {{tool}} 将下面的消息发送给子代理 {{name}}(id: {{id}})。不要代替子代理回复。\n\n{{text}}', en: 'Use {{tool}} to send the following message to subagent {{name}} (id: {{id}}). Do not answer on behalf of the subagent.\n\n{{text}}' },
|
|
169
|
+
'agent-message-envelope': {
|
|
170
|
+
zh: '请把下面这条用户消息原样转发给子代理「{{name}}」(目标标识 {{id}}):使用 SendMessage 工具投递,不要改写内容,也不要代替它作答。转发后简短告知结果即可。\n\n{{text}}',
|
|
171
|
+
en: 'Please relay the following user message verbatim to subagent "{{name}}" (target id {{id}}): deliver it with the SendMessage tool, do not rewrite its content and do not answer on its behalf. Briefly report the outcome afterwards.\n\n{{text}}',
|
|
172
|
+
},
|
|
173
|
+
// ── backends: capability-gated actions and commands ─────────────────
|
|
174
|
+
'session-cleared': { zh: '会话已清屏', en: 'Session cleared' },
|
|
175
|
+
'conversation-reset': { zh: '对话已重置,之前的上下文已清空', en: 'The conversation was reset; the earlier context is gone' },
|
|
176
|
+
'conversation-reset-clear': { zh: '对话已清空,接下来从新的上下文开始', en: 'Conversation cleared; continuing with a fresh context' },
|
|
177
|
+
'conversation-reset-plan': { zh: '退出计划模式时清空了上下文,接下来带着计划从新的上下文开始', en: 'Context cleared on leaving plan mode; continuing from a fresh context with the plan' },
|
|
178
|
+
'conversation-reset-fresh': { zh: '已开新会话来执行计划', en: 'Started a fresh session to carry out the plan' },
|
|
179
|
+
'cost-source-backend': { zh: '内核上报的会话费用', en: 'session cost reported by the kernel' },
|
|
180
|
+
'capability-unavailable-backend': { zh: '当前内核不支持:{{name}}', en: 'Not supported by this kernel: {{name}}' },
|
|
181
|
+
'capability-failed': { zh: '{{name}} 失败 · {{err}}', en: '{{name}} failed · {{err}}' },
|
|
182
|
+
// ── backends/claude (Claude Agent backend) ─────────────────────────
|
|
183
|
+
'claude-permission-denied': { zh: '{{tool}} 被权限规则拒绝', en: '{{tool}} was denied by a permission rule' },
|
|
184
|
+
'claude-permission-denied-reason': { zh: '{{tool}} 被自动拒绝:{{reason}}', en: '{{tool}} was denied automatically: {{reason}}' },
|
|
185
|
+
'claude-denied-reason': { zh: '拒绝原因:{{reason}}', en: 'Denied: {{reason}}' },
|
|
186
|
+
'claude-question-unreadable': { zh: '无法读取这次提问的内容,已拒绝', en: 'The question could not be read and was declined' },
|
|
187
|
+
'claude-always-rules-session': { zh: '允许,本次会话不再询问 {{rules}}', en: 'Yes, and don\'t ask again for {{rules}} this session' },
|
|
188
|
+
'claude-always-rules-project': { zh: '允许,本项目不再询问 {{rules}}', en: 'Yes, and don\'t ask again for {{rules}} in this project' },
|
|
189
|
+
'claude-always-rules-user': { zh: '允许,所有项目都不再询问 {{rules}}', en: 'Yes, and don\'t ask again for {{rules}} in any project' },
|
|
190
|
+
'claude-always-accept-edits': { zh: '允许,本次会话自动接受编辑', en: 'Yes, and auto-accept edits this session' },
|
|
191
|
+
'claude-always-mode': { zh: '允许,并切换到 {{mode}} 模式', en: 'Yes, and switch to {{mode}} mode' },
|
|
192
|
+
'claude-always-directories': { zh: '允许,并允许访问 {{dirs}}', en: 'Yes, and allow access to {{dirs}}' },
|
|
193
|
+
'claude-plan-review-header': { zh: '计划评审', en: 'Plan review' },
|
|
194
|
+
'claude-plan-review-question': { zh: 'Claude 准备好了计划,要开始执行吗?', en: 'Claude has a plan. Ready to start?' },
|
|
195
|
+
'claude-plan-accept-edits': { zh: '批准,并自动接受编辑', en: 'Yes, and auto-accept edits' },
|
|
196
|
+
'claude-plan-accept-edits-desc': { zh: '退出计划模式,之后的文件编辑不再逐个询问', en: 'Leave plan mode; file edits no longer ask one by one' },
|
|
197
|
+
'claude-plan-manual': { zh: '批准,编辑仍逐个确认', en: 'Yes, and approve each edit' },
|
|
198
|
+
'claude-plan-manual-desc': { zh: '退出计划模式,回到默认权限模式', en: 'Leave plan mode for the default permission mode' },
|
|
199
|
+
'claude-plan-keep': { zh: '继续规划', en: 'No, keep planning' },
|
|
200
|
+
'claude-plan-keep-desc': { zh: '可在输入行写下要修改的地方', en: 'Type what to change on the input row' },
|
|
201
|
+
'claude-plan-approved': { zh: '计划已批准,开始执行', en: 'Plan approved; starting' },
|
|
202
|
+
'claude-plan-kept': { zh: '计划未批准,继续规划', en: 'Plan not approved; planning continues' },
|
|
203
|
+
'claude-model-unknown': { zh: 'Claude 没有模型 {{model}}(/model 查看可用模型)', en: 'Claude has no model {{model}} (see /model)' },
|
|
204
|
+
'claude-mode-default': { zh: '默认', en: 'Default' },
|
|
205
|
+
'claude-mode-acceptEdits': { zh: '自动接受编辑', en: 'Accept edits' },
|
|
206
|
+
'claude-mode-plan': { zh: '计划模式', en: 'Plan mode' },
|
|
207
|
+
'claude-mode-auto': { zh: '自动审批', en: 'Auto' },
|
|
208
|
+
'claude-mode-dontAsk': { zh: '不询问', en: "Don't ask" },
|
|
209
|
+
'claude-mode-bypassPermissions': { zh: '跳过权限', en: 'Bypass permissions' },
|
|
210
|
+
'claude-mode-desc-default': { zh: '默认:每个危险操作前都询问', en: 'Default: asks before every risky action' },
|
|
211
|
+
'claude-mode-desc-acceptEdits': { zh: '自动接受文件编辑,其他操作仍询问', en: 'Auto-accepts file edits, still asks for the rest' },
|
|
212
|
+
'claude-mode-desc-plan': { zh: '计划模式:只读,先出方案不动手', en: 'Plan mode: read-only, proposes before acting' },
|
|
213
|
+
'claude-mode-desc-auto': { zh: '自动审批:由模型分类器判定', en: 'Auto: a model classifier decides' },
|
|
214
|
+
'claude-mode-desc-dontAsk': { zh: '不询问:未预先批准的操作一律拒绝', en: "Don't ask: anything not pre-approved is denied" },
|
|
215
|
+
'claude-mode-desc-bypassPermissions': { zh: '跳过全部权限检查(谨慎使用)', en: 'Skips every permission check (use with care)' },
|
|
216
|
+
'claude-effort-low': { zh: '低', en: 'Low' },
|
|
217
|
+
'claude-effort-medium': { zh: '中', en: 'Medium' },
|
|
218
|
+
'claude-effort-high': { zh: '高', en: 'High' },
|
|
219
|
+
'claude-effort-xhigh': { zh: '超高', en: 'Extra high' },
|
|
220
|
+
'claude-effort-max': { zh: '最高', en: 'Max' },
|
|
221
|
+
'claude-auth-failed-login': { zh: 'Claude 凭证仍被拒绝:用 /login 重新登录,或设置 ANTHROPIC_API_KEY、在终端运行 claude login', en: 'Claude still refuses the credential: sign in again with /login, set ANTHROPIC_API_KEY, or run `claude login` in a terminal' },
|
|
222
|
+
'claude-auth-reconnected': { zh: '凭证已刷新并重新连接同一会话,请重发上一条消息', en: 'Credential renewed and the same session reconnected; send your last message again' },
|
|
223
|
+
'claude-auth-refresh-failed': { zh: '刷新 Claude 凭证失败{{detail}}(可用 /login 重新登录)', en: 'Renewing the Claude credential failed{{detail}} (sign in again with /login)' },
|
|
224
|
+
'claude-channel-token-missing': {
|
|
225
|
+
zh: '渠道 {{name}}({{host}})指向自定义端点,但没有可用的 token,已拒绝启动,以免向中转端点发送不带凭据的请求。请在 /channel → 管理渠道 里补上 token,或换一个渠道后重试。',
|
|
226
|
+
en: 'Channel {{name}} ({{host}}) points at a custom endpoint but has no usable token, so the session was not started (no unauthenticated requests to a relay). Add a token under /channel → Manage channels, or switch to another channel, then retry.',
|
|
227
|
+
},
|
|
228
|
+
'claude-channel-helper-conflict': {
|
|
229
|
+
zh: 'settings.json 配置了 apiKeyHelper,与当前渠道冲突:它生成的 x-api-key 会随请求发到渠道端点。请从 settings.json 删掉 apiKeyHelper,或在 /channel 里停用该渠道后再启动。',
|
|
230
|
+
en: 'settings.json sets apiKeyHelper, which conflicts with the active channel: the x-api-key it produces would be sent to the channel endpoint. Remove apiKeyHelper from settings.json, or deactivate the channel in /channel, then retry.',
|
|
231
|
+
},
|
|
232
|
+
'claude-auth-refresh-status': { zh: ' · HTTP {{status}}', en: ' · HTTP {{status}}' },
|
|
233
|
+
'claude-auth-reconnect-failed': { zh: '重新连接 Claude 会话失败;可用 /login 重新登录', en: 'Reconnecting the Claude session failed; sign in again with /login' },
|
|
234
|
+
'claude-auth-reconnect-deferred': { zh: '当前回合结束后再用新凭证重新连接', en: 'Reconnecting with the new credential once the current turn ends' },
|
|
235
|
+
'claude-auth-reconnect-forced': { zh: '等待当前回合结束超时,现在重新连接,正在运行的回合会被中断', en: 'The turn did not finish in time; reconnecting now, which interrupts the running turn' },
|
|
236
|
+
'claude-auth-inputs-dropped': { zh: '重新连接失败,{{n}} 条尚未开始的消息未能送达', en: 'Reconnecting failed; {{n}} message(s) that had not started were not delivered' },
|
|
237
|
+
'claude-auth-route': { zh: '未使用订阅登录:{{route}}', en: 'Subscription sign-in not used: {{route}}' },
|
|
238
|
+
'claude-route-custom-endpoint': { zh: '自定义端点 {{host}}(ANTHROPIC_BASE_URL)', en: 'custom endpoint {{host}} (ANTHROPIC_BASE_URL)' },
|
|
239
|
+
'claude-route-custom-oauth': { zh: '自定义 OAuth 部署', en: 'custom OAuth deployment' },
|
|
240
|
+
'claude-route-unix-socket': { zh: 'Unix 套接字(ANTHROPIC_UNIX_SOCKET)', en: 'Unix socket (ANTHROPIC_UNIX_SOCKET)' },
|
|
241
|
+
'claude-route-gateway': { zh: '云网关', en: 'cloud gateway' },
|
|
242
|
+
'claude-route-api-key-helper': { zh: '设置中的 apiKeyHelper', en: 'apiKeyHelper in settings' },
|
|
243
|
+
'claude-route-settings-unreadable': { zh: '无法读取 Claude 设置,无法确认连接方式', en: 'Claude settings could not be read, so the connection route is unknown' },
|
|
244
|
+
'claude-auth-source': { zh: '凭证来源:{{source}}', en: 'Credential: {{source}}' },
|
|
245
|
+
'claude-auth-missing-hint': { zh: '未找到 Claude 凭证:用 /login 登录 anthropic,或设置 ANTHROPIC_API_KEY、在终端运行 claude login', en: 'No Claude credential found: sign in to anthropic with /login, set ANTHROPIC_API_KEY, or run `claude login` in a terminal' },
|
|
246
|
+
'claude-auth-cli': { zh: 'CLI 报告 · apiKeySource:{{source}} · tokenSource:{{token}}', en: 'CLI reports · apiKeySource: {{source}} · tokenSource: {{token}}' },
|
|
247
|
+
'claude-auth-source-dsh-auth': { zh: 'dsh-auth anthropic 登录', en: 'dsh-auth anthropic sign-in' },
|
|
248
|
+
'claude-auth-source-dsh-auth-expires': { zh: 'dsh-auth anthropic 登录(令牌到期 {{time}})', en: 'dsh-auth anthropic sign-in (token expires {{time}})' },
|
|
249
|
+
'claude-auth-source-cloud': { zh: '云厂商 {{provider}}(环境变量)', en: 'Cloud provider {{provider}} (environment)' },
|
|
250
|
+
'claude-auth-source-claude-login': { zh: '本机 claude login', en: 'Local `claude login`' },
|
|
251
|
+
'claude-auth-account': { zh: '账户:{{account}}', en: 'Account: {{account}}' },
|
|
252
|
+
'login-backend-heading': { zh: '{{backend}} 登录状态', en: '{{backend}} sign-in' },
|
|
253
|
+
'login-backend-no-oauth': { zh: '未挂载 dsh-auth 登录服务:只能用内核自己的凭证(环境变量或它自己的登录)', en: 'No dsh-auth sign-in service is mounted: only the kernel\'s own credentials apply (environment or its own login)' },
|
|
254
|
+
'login-backend-oauth-removed': { zh: '已移除 {{provider}} 的 dsh-auth 登录;内核原生登录未修改,已载入令牌需正常重启后停止使用', en: 'Removed the {{provider}} dsh-auth credential; native login is unchanged. Restart normally to stop using already-loaded tokens' },
|
|
255
|
+
'login-backend-oauth-missing': { zh: 'dsh-auth 没有 {{provider}} 的登录可移除;内核原生登录未修改', en: 'No {{provider}} dsh-auth credential to remove; native login is unchanged' },
|
|
256
|
+
'login-backend-reconnected': { zh: '已用新凭证重新连接 {{backend}} 会话', en: 'The {{backend}} session reconnected with the new credential' },
|
|
257
|
+
'login-backend-reconnect-failed': { zh: '用新凭证重新连接失败 · {{err}}', en: 'Reconnecting with the new credential failed · {{err}}' },
|
|
258
|
+
'provider-oauth-unmounted': { zh: 'dsh-auth 未挂载 {{provider}} 登录(在 dsh-auth 配置的 providers 中加入它)', en: 'dsh-auth does not mount the {{provider}} sign-in (add it to the dsh-auth providers config)' },
|
|
259
|
+
'backend-mcp-heading': { zh: 'MCP 服务器({{n}})', en: 'MCP servers ({{n}})' },
|
|
260
|
+
'backend-mcp-row': { zh: ' {{name}} · {{status}}{{tools}}', en: ' {{name}} · {{status}}{{tools}}' },
|
|
261
|
+
'backend-mcp-tools': { zh: ' · {{n}} 个工具', en: ' · {{n}} tools' },
|
|
262
|
+
'backend-mcp-none': { zh: '没有配置 MCP 服务器', en: 'No MCP servers configured' },
|
|
263
|
+
'backend-mcp-loading': { zh: '正在读取 MCP 状态,稍后再运行 /mcp', en: 'Reading MCP status; run /mcp again in a moment' },
|
|
264
|
+
'mcp-control-usage': { zh: '用法:/mcp reconnect <服务器> 或 /mcp toggle <服务器> on|off', en: 'Usage: /mcp reconnect <server> or /mcp toggle <server> on|off' },
|
|
265
|
+
'mcp-reconnected': { zh: '已重新连接 MCP 服务器 {{name}}', en: 'Reconnected the MCP server {{name}}' },
|
|
266
|
+
'mcp-enabled': { zh: '已开启 MCP 服务器 {{name}}', en: 'Enabled the MCP server {{name}}' },
|
|
267
|
+
'mcp-disabled': { zh: '已关闭 MCP 服务器 {{name}}', en: 'Disabled the MCP server {{name}}' },
|
|
268
|
+
'claude-side-query-empty': { zh: '会话还没有保存任何对话,暂无内容可问', en: 'The session has no saved conversation to ask about yet' },
|
|
269
|
+
'claude-side-query-no-answer': { zh: '没有得到回答', en: 'No answer was received' },
|
|
270
|
+
'backend-mcp-needs-auth': { zh: '需要授权的服务器请在终端运行 claude 后用 /mcp 完成', en: 'For servers that need auth, finish it with /mcp in an interactive `claude`' },
|
|
271
|
+
'context-tokens': { zh: '{{n}} tokens', en: '{{n}} tokens' },
|
|
272
|
+
'status-rate-limit': { zh: '订阅用量 {{usage}}', en: 'Subscription usage {{usage}}' },
|
|
273
|
+
'status-rate-limit-five-hour': { zh: '5小时', en: '5h' },
|
|
274
|
+
'status-rate-limit-seven-day': { zh: '7天', en: '7d' },
|
|
275
|
+
'claude-process-exited': { zh: 'Claude 进程已退出:{{reason}}', en: 'The Claude process exited: {{reason}}' },
|
|
276
|
+
'claude-process-ended': { zh: '会话流已结束', en: 'the session stream ended' },
|
|
277
|
+
'claude-cancel-forced': { zh: '中断 30 秒未得到确认,已强制结束本回合', en: 'The interrupt was not confirmed within 30s; the turn was force-closed' },
|
|
278
|
+
'interrupt-failed': { zh: '打断请求失败:排队消息没有撤回,仍会在下一回合发送;已取消暂存,避免重复发送', en: 'The interrupt request failed: the queued messages were not withdrawn and will still run next turn; they are no longer held, so nothing is sent twice' },
|
|
279
|
+
'interrupt-unconfirmed': { zh: '无法确认排队消息已撤回:它们仍会在下一回合发送,不再暂存', en: 'Could not confirm the queued messages were withdrawn: they will still run next turn and are no longer held' },
|
|
280
|
+
'claude-version-drift': { zh: 'Claude CLI {{version}} 未经本版 dsh-tui 验证(已验证:{{validated}}),继续运行', en: 'Claude CLI {{version}} is not validated with this dsh-tui (validated: {{validated}}); continuing' },
|
|
281
|
+
'claude-sdk-drift': { zh: 'Claude Agent SDK {{version}} 与验证版本 {{validated}} 不一致,继续运行', en: 'Claude Agent SDK {{version}} differs from the validated {{validated}}; continuing' },
|
|
282
|
+
'claude-sdk-missing': { zh: '未安装 Claude Agent SDK:在 dsh-tui 安装目录运行 pnpm add @anthropic-ai/claude-agent-sdk@{{version}}', en: 'The Claude Agent SDK is not installed: run pnpm add @anthropic-ai/claude-agent-sdk@{{version}} in the dsh-tui install directory' },
|
|
283
|
+
'claude-resume-not-found': { zh: '本机 Claude 会话库中没有会话 {{id}}', en: 'No Claude session {{id}} in the local session store' },
|
|
284
|
+
'claude-rewind-files-unavailable': { zh: '该会话没有可用的文件检查点', en: 'No file checkpoints are available for this session' },
|
|
285
|
+
'claude-fork-empty': { zh: '会话还没有保存任何消息,无可分叉的内容', en: 'Nothing to fork yet — the session has no saved messages' },
|
|
286
|
+
'claude-task-unnamed': { zh: '任务 {{id}}(标题未恢复)', en: 'Task {{id}} (subject not recovered)' },
|
|
287
|
+
'claude-task-output-refused': { zh: '不读取任务 {{id}} 的输出:路径不在 Claude 的目录内', en: 'Not reading the output of task {{id}}: the path is outside the Claude directories' },
|
|
288
|
+
'claude-task-output-missing': { zh: '任务 {{id}} 的输出文件还不存在', en: 'The output file of task {{id}} does not exist yet' },
|
|
289
|
+
'claude-task-output-unknown': { zh: '任务 {{id}} 没有报告输出文件', en: 'Task {{id}} reported no output file' },
|
|
290
|
+
'claude-transcript-missing': { zh: '找不到会话 {{id}} 的转录文件', en: 'The transcript file of session {{id}} was not found' },
|
|
291
|
+
'claude-transcript-too-large': { zh: '会话转录超过 {{mb}} MB,不读取', en: 'The session transcript is larger than {{mb}} MB; not reading it' },
|
|
292
|
+
'claude-rewind-not-found': { zh: '该消息不在会话已保存的对话链中', en: 'That message is not in the session\'s saved conversation' },
|
|
293
|
+
'claude-images-too-many': { zh: '一条消息最多附 {{n}} 张图片', en: 'A message carries at most {{n}} images' },
|
|
294
|
+
'claude-images-too-large': { zh: '这条消息的图片合计超过 {{mb}} MB', en: 'The images of this message exceed {{mb}} MB together' },
|
|
295
|
+
'claude-image-too-large': { zh: '图片 {{name}} 超过 {{mb}} MB', en: 'The image {{name}} exceeds {{mb}} MB' },
|
|
296
|
+
'claude-image-type-refused': { zh: 'Claude 不接受图片 {{name}} 的格式({{type}})', en: 'Claude does not take the format of {{name}} ({{type}})' },
|
|
297
|
+
'claude-image-unreadable': { zh: '无法读取图片 {{name}}:{{err}}', en: 'The image {{name}} could not be read: {{err}}' },
|
|
298
|
+
'claude-image-gone': { zh: '暂存的图片已不在内存中,请重新粘贴', en: 'the staged image is no longer in memory; paste it again' },
|
|
299
|
+
'claude-session-closed': { zh: 'Claude 会话已关闭', en: 'The Claude session is closed' },
|
|
300
|
+
'claude-start-timeout': { zh: 'Claude CLI 未在时限内完成启动握手', en: 'The Claude CLI did not finish its start handshake in time' },
|
|
301
|
+
'claude-start-mode-downgraded': { zh: '设置中的权限模式 {{mode}} 需在 /permission 里显式选择,本会话先以 default 启动', en: 'The configured permission mode {{mode}} needs an explicit choice in /permission; this session starts in default' },
|
|
302
|
+
'claude-start-mode-env': { zh: '权限模式由 DSH_TUI_CLAUDE_PERMISSION_MODE 指定:{{mode}}', en: 'Permission mode set by DSH_TUI_CLAUDE_PERMISSION_MODE: {{mode}}' },
|
|
303
|
+
'claude-start-mode-env-ignored': { zh: '已忽略 DSH_TUI_CLAUDE_PERMISSION_MODE={{mode}}(只接受 default/acceptEdits/plan/dontAsk/bypassPermissions)', en: 'Ignored DSH_TUI_CLAUDE_PERMISSION_MODE={{mode}} (accepts default/acceptEdits/plan/dontAsk/bypassPermissions)' },
|
|
304
|
+
'claude-start-mode-bypass-not-carried': { zh: '上次的「跳过权限」不会带到新会话,本会话照常审批;可用 /permission 重新开启', en: 'Bypass permissions from the last session is not carried into a new one; approvals are on. Turn it back on with /permission' },
|
|
305
|
+
'claude-input-refused': { zh: 'Claude 拒绝了这条输入', en: 'Claude refused this input' },
|
|
306
|
+
'claude-assistant-error': { zh: 'Claude 错误:{{error}}', en: 'Claude error: {{error}}' },
|
|
307
|
+
'claude-api-retry': { zh: 'API 重试 {{attempt}}/{{max}}{{detail}}…', en: 'API retry {{attempt}}/{{max}}{{detail}}…' },
|
|
308
|
+
'claude-api-retry-status': { zh: ' · HTTP {{status}}', en: ' · HTTP {{status}}' },
|
|
309
|
+
'claude-notification-turn': { zh: '后台任务完成,模型继续处理', en: 'A background task finished; the model continues' },
|
|
310
|
+
'claude-model-fallback': { zh: '{{original}} 拒绝了这次请求{{category}},已改用 {{model}} 重试(本会话之后都用它)', en: '{{original}} declined this request{{category}}; retried on {{model}} (the session continues on it)' },
|
|
311
|
+
'claude-model-fallback-local': { zh: '一个子任务改由 {{model}} 回答({{original}} 拒绝了它),会话模型不变', en: 'A side task was answered by {{model}} ({{original}} declined it); the session model is unchanged' },
|
|
312
|
+
'claude-model-refused': { zh: '{{model}} 拒绝了这次请求{{category}},没有可用的回退模型', en: '{{model}} declined this request{{category}} and no fallback model is available' },
|
|
313
|
+
'claude-refusal-category-suffix': { zh: '(类别:{{category}})', en: ' (category: {{category}})' },
|
|
314
|
+
'claude-rate-limit-warning': { zh: '订阅用量接近{{window}}上限({{percent}}%){{resets}}', en: 'Approaching the {{window}} usage limit ({{percent}}%){{resets}}' },
|
|
315
|
+
'claude-rate-limit-rejected': { zh: '已达到{{window}}用量上限{{resets}}', en: 'The {{window}} usage limit is reached{{resets}}' },
|
|
316
|
+
'claude-rate-limit-resets': { zh: ',{{time}}重置', en: ' — resets {{time}}' },
|
|
317
|
+
'claude-rate-limit-in': { zh: '{{duration}}后', en: 'in {{duration}}' },
|
|
318
|
+
'claude-auth-status-error': { zh: 'Claude 认证出错:{{error}}', en: 'Claude authentication error: {{error}}' },
|
|
319
|
+
'claude-memory-recalled': { zh: '已回忆 {{count}} 条记忆', en: { one: 'Recalled {{count}} memory', other: 'Recalled {{count}} memories' } },
|
|
320
|
+
'claude-memory-synthesized': { zh: '已从记忆中归纳相关上下文', en: 'Recalled a summary of relevant memories' },
|
|
321
|
+
'claude-activity-thinking': { zh: '思考中', en: 'Thinking' },
|
|
322
|
+
'claude-activity-waiting': { zh: '等待确认', en: 'Waiting for approval' },
|
|
323
|
+
'claude-activity-done': { zh: '完成', en: 'Done' },
|
|
324
|
+
'claude-activity-done-tools': { zh: '完成 · {{count}} 个工具', en: { one: 'Done · 1 tool', other: 'Done · {{count}} tools' } },
|
|
325
|
+
// ── MCP elicitation → questionnaire (backend-neutral: src/channel/elicitation.ts)
|
|
326
|
+
'elicit-skip': { zh: '跳过', en: 'Skip' },
|
|
327
|
+
'elicit-skip-desc': { zh: '这一项不填', en: 'Leave this field empty' },
|
|
328
|
+
'elicit-optional': { zh: '{{title}}(可选)', en: '{{title}} (optional)' },
|
|
329
|
+
'elicit-yes': { zh: '是', en: 'Yes' },
|
|
330
|
+
'elicit-no': { zh: '否', en: 'No' },
|
|
331
|
+
'elicit-send': { zh: '发送', en: 'Send' },
|
|
332
|
+
'elicit-send-desc': { zh: '把这些回答交给 MCP 服务器', en: 'Give these answers to the MCP server' },
|
|
333
|
+
'elicit-decline': { zh: '拒绝', en: 'Decline' },
|
|
334
|
+
'elicit-decline-desc': { zh: '不提供,告诉服务器你拒绝了', en: 'Provide nothing; tell the server you declined' },
|
|
335
|
+
'elicit-confirm': { zh: '把回答发送给 MCP 服务器 {{server}}?', en: 'Send your answers to the MCP server {{server}}?' },
|
|
336
|
+
'elicit-invalid': { zh: '请重新填写:{{reason}}', en: 'Please answer again: {{reason}}' },
|
|
337
|
+
'elicit-invalid-required': { zh: '这一项必填', en: 'this field is required' },
|
|
338
|
+
'elicit-invalid-choice': { zh: '请选择一项', en: 'pick one of the options' },
|
|
339
|
+
'elicit-invalid-number': { zh: '需要一个数字', en: 'a number is expected' },
|
|
340
|
+
'elicit-invalid-integer': { zh: '需要一个整数', en: 'a whole number is expected' },
|
|
341
|
+
'elicit-invalid-min': { zh: '不能小于 {{min}}', en: 'must be at least {{min}}' },
|
|
342
|
+
'elicit-invalid-max': { zh: '不能大于 {{max}}', en: 'must be at most {{max}}' },
|
|
343
|
+
'elicit-invalid-min-length': { zh: '至少 {{n}} 个字符', en: 'at least {{n}} characters' },
|
|
344
|
+
'elicit-invalid-max-length': { zh: '至多 {{n}} 个字符', en: 'at most {{n}} characters' },
|
|
345
|
+
'elicit-invalid-min-items': { zh: '至少选 {{n}} 项', en: 'pick at least {{n}}' },
|
|
346
|
+
'elicit-invalid-max-items': { zh: '至多选 {{n}} 项', en: 'pick at most {{n}}' },
|
|
347
|
+
'elicit-invalid-email': { zh: '需要一个邮箱地址', en: 'an email address is expected' },
|
|
348
|
+
'elicit-invalid-uri': { zh: '需要一个完整的网址(URI)', en: 'a full URI is expected' },
|
|
349
|
+
'elicit-invalid-date': { zh: '需要日期(YYYY-MM-DD)', en: 'a date is expected (YYYY-MM-DD)' },
|
|
350
|
+
'elicit-invalid-date-time': { zh: '需要日期时间(ISO 8601)', en: 'a date and time is expected (ISO 8601)' },
|
|
351
|
+
'elicit-invalid-pattern': { zh: '格式不符合要求', en: 'the format does not match' },
|
|
352
|
+
'elicit-invalid-json': { zh: '需要 JSON 形式的值', en: 'a JSON value is expected' },
|
|
353
|
+
'elicit-kind-number': { zh: '数字', en: 'number' },
|
|
354
|
+
'elicit-kind-integer': { zh: '整数', en: 'whole number' },
|
|
355
|
+
'elicit-hint-range': { zh: '{{kind}},{{min}}–{{max}}', en: '{{kind}}, {{min}}–{{max}}' },
|
|
356
|
+
'elicit-hint-min': { zh: '{{kind}},不小于 {{min}}', en: '{{kind}}, at least {{min}}' },
|
|
357
|
+
'elicit-hint-max': { zh: '{{kind}},不大于 {{max}}', en: '{{kind}}, at most {{max}}' },
|
|
358
|
+
'elicit-hint-json': { zh: '以 JSON 形式输入', en: 'enter it as JSON' },
|
|
359
|
+
'elicit-hint-format': { zh: '格式:{{format}}', en: 'format: {{format}}' },
|
|
360
|
+
'elicit-url-notice': { zh: 'MCP 服务器 {{server}} 请你在浏览器中打开:{{url}}', en: 'The MCP server {{server}} asks you to open: {{url}}' },
|
|
361
|
+
'elicit-url-question': { zh: 'MCP 服务器 {{server}} 需要你在浏览器中完成一步', en: 'The MCP server {{server}} needs you to finish a step in the browser' },
|
|
362
|
+
'elicit-url-detail': { zh: '打开下面的链接完成后选「继续」;完成时服务器也可能自动关闭这个面板', en: 'Open the link below, then choose Continue; the server may also close this panel when it is done' },
|
|
363
|
+
'elicit-url-accept': { zh: '继续(已打开链接)', en: 'Continue (link opened)' },
|
|
364
|
+
'elicit-url-accept-desc': { zh: '告诉服务器你同意并已打开链接', en: 'Tell the server you agreed and opened the link' },
|
|
365
|
+
'elicit-url-complete': { zh: 'MCP 服务器 {{server}} 确认已完成', en: 'The MCP server {{server}} confirmed it is done' },
|
|
366
|
+
'elicit-url-missing': { zh: 'MCP 服务器 {{server}} 请求打开链接却没有给出网址,已拒绝', en: 'The MCP server {{server}} asked to open a link but gave none; declined' },
|
|
367
|
+
'elicit-unsupported': { zh: 'MCP 服务器 {{server}} 的请求({{mode}})无法在此显示,已拒绝', en: 'The request of the MCP server {{server}} ({{mode}}) cannot be shown here; declined' },
|
|
368
|
+
'claude-refusal-header': { zh: '模型拒绝', en: 'Model declined' },
|
|
369
|
+
'claude-refusal-question': { zh: '{{model}} 拒绝了这次请求,要换模型重试吗?', en: '{{model}} declined this request. Retry on another model?' },
|
|
370
|
+
'claude-refusal-this-model': { zh: '当前模型', en: 'The current model' },
|
|
371
|
+
'claude-refusal-retry': { zh: '用 {{model}} 重试', en: 'Retry on {{model}}' },
|
|
372
|
+
'claude-refusal-retry-desc': { zh: '本次请求改由回退模型回答', en: 'The fallback model answers this request' },
|
|
373
|
+
'claude-refusal-cancel': { zh: '取消', en: 'Cancel' },
|
|
374
|
+
'claude-refusal-cancel-desc': { zh: '保留拒绝结果,结束本回合', en: 'Keep the refusal and end the turn' },
|
|
375
|
+
'claude-refusal-category': { zh: '拒绝类别:{{category}}', en: 'Refusal category: {{category}}' },
|
|
376
|
+
'claude-doctor-cli': { zh: 'Claude CLI: {{path}}({{source}})· 版本 {{version}}', en: 'Claude CLI: {{path}} ({{source}}) · version {{version}}' },
|
|
377
|
+
'claude-doctor-bundled': { zh: 'SDK 自带二进制', en: 'SDK bundled binary' },
|
|
378
|
+
'claude-doctor-sdk': { zh: 'Claude Agent SDK {{version}}(已验证 {{validated}})', en: 'Claude Agent SDK {{version}} (validated {{validated}})' },
|
|
379
|
+
'claude-doctor-mode': { zh: '起始权限模式: {{mode}}(来源 {{source}})', en: 'Start permission mode: {{mode}} (from {{source}})' },
|
|
380
|
+
// Codex backend (src/backends/codex/): approval wording follows the official
|
|
381
|
+
// client (docs/codex-backend-design.md §8.4); notices name what to do next.
|
|
382
|
+
'codex-approve-accept': { zh: '是,执行', en: 'Yes, proceed' },
|
|
383
|
+
'codex-approve-decline': { zh: '否,跳过它继续', en: 'No, continue without running it' },
|
|
384
|
+
'codex-approve-cancel': { zh: '否,并告诉 Codex 怎么做', en: 'No, and tell Codex what to do differently' },
|
|
385
|
+
'codex-approve-decline-files': { zh: '否,不应用这些改动,继续', en: 'No, continue without these changes' },
|
|
386
|
+
'codex-approve-grant-turn': { zh: '是,本回合授予这些权限', en: 'Yes, grant these permissions for this turn' },
|
|
387
|
+
'codex-approve-deny-permissions': { zh: '否,不授予权限继续', en: 'No, continue without permissions' },
|
|
388
|
+
'codex-approve-stdin-name': { zh: '终端输入', en: 'Terminal input' },
|
|
389
|
+
'codex-approve-stdin': { zh: '向运行中的终端写入输入', en: 'writes input to a running terminal' },
|
|
390
|
+
'codex-approve-network-context': { zh: '访问网络主机 {{host}}({{protocol}})', en: 'network access to {{host}} ({{protocol}})' },
|
|
391
|
+
'codex-approve-extra-permissions': { zh: '额外权限:{{what}}', en: 'extra permissions: {{what}}' },
|
|
392
|
+
'codex-approve-cwd': { zh: '在 {{cwd}} 中运行', en: 'runs in {{cwd}}' },
|
|
393
|
+
'codex-approve-prefix': { zh: '是,以后以 `{{prefix}}` 开头的命令不再询问', en: 'Yes, and don\'t ask again for commands that start with `{{prefix}}`' },
|
|
394
|
+
'codex-approve-session-command': { zh: '是,本会话内此命令不再询问', en: 'Yes, and don\'t ask again for this command in this session' },
|
|
395
|
+
'codex-approve-session-files': { zh: '是,本会话内这些文件不再询问', en: 'Yes, and don\'t ask again for these files' },
|
|
396
|
+
'codex-approve-session-permissions': { zh: '是,本会话内都授予这些权限', en: 'Yes, grant these permissions for this session' },
|
|
397
|
+
'codex-approve-network': { zh: '是,以后允许访问 {{host}}', en: 'Yes, and allow {{host}} in the future' },
|
|
398
|
+
'codex-permissions-name': { zh: '额外权限', en: 'Extra permissions' },
|
|
399
|
+
'codex-perm-network': { zh: '联网', en: 'network' },
|
|
400
|
+
'codex-perm-read': { zh: '读取 {{paths}}', en: 'read {{paths}}' },
|
|
401
|
+
'codex-perm-write': { zh: '写入 {{paths}}', en: 'write {{paths}}' },
|
|
402
|
+
'codex-declined': { zh: '已拒绝', en: 'Declined' },
|
|
403
|
+
'codex-interrupted': { zh: '已中断', en: 'Interrupted' },
|
|
404
|
+
'codex-tool-failed': { zh: '执行失败', en: 'Failed' },
|
|
405
|
+
'codex-tool-unfinished': { zh: '回合结束时仍未完成', en: 'Unfinished when the turn ended' },
|
|
406
|
+
'codex-turn-failed': { zh: '回合失败', en: 'The turn failed' },
|
|
407
|
+
'codex-turn-start-failed': { zh: 'Codex 没有接受这条消息:{{err}}', en: 'Codex did not take this message: {{err}}' },
|
|
408
|
+
'codex-steer-fallback': { zh: '当前回合无法插话,这条消息会在回合结束后发送', en: 'The running turn cannot take this message now; it will be sent when the turn ends' },
|
|
409
|
+
'codex-cancel-forced': { zh: '中断 15 秒未得到确认,已在本地结束本回合', en: 'The interrupt was not confirmed within 15s; the turn was closed here' },
|
|
410
|
+
'codex-session-closed': { zh: 'Codex 会话已关闭', en: 'The Codex session is closed' },
|
|
411
|
+
'codex-retrying': { zh: '请求失败,Codex 正在重试:{{message}}', en: 'The request failed; Codex is retrying: {{message}}' },
|
|
412
|
+
'codex-rerouted': { zh: '模型已由 {{from}} 改为 {{to}}({{reason}})', en: 'The model was rerouted from {{from}} to {{to}} ({{reason}})' },
|
|
413
|
+
'codex-system-error': { zh: 'Codex 报告该会话出现系统错误', en: 'Codex reported a system error on this thread' },
|
|
414
|
+
'codex-review-start': { zh: '开始代码审查:{{review}}', en: 'Code review started: {{review}}' },
|
|
415
|
+
'codex-auto-review-started': { zh: '自动审查中…', en: 'Auto-review in progress…' },
|
|
416
|
+
'codex-auto-review-approved': { zh: '自动审查:已批准', en: 'Auto-review: approved' },
|
|
417
|
+
'codex-auto-review-denied': { zh: '自动审查:已拒绝', en: 'Auto-review: denied' },
|
|
418
|
+
'codex-auto-review-ended': { zh: '自动审查已结束', en: 'Auto-review ended' },
|
|
419
|
+
'codex-strict-review': { zh: '本回合之后的命令需要先通过审查', en: 'Further commands in this turn need a review first' },
|
|
420
|
+
'codex-hook-started': { zh: 'hook {{event}} 运行中…', en: 'Hook {{event}} running…' },
|
|
421
|
+
'codex-hook-done': { zh: 'hook {{event}} 完成 {{duration}}', en: 'Hook {{event}} finished {{duration}}' },
|
|
422
|
+
'codex-hook-failed': { zh: 'hook {{event}} 失败 {{duration}}', en: 'Hook {{event}} failed {{duration}}' },
|
|
423
|
+
'codex-mcp-failed': { zh: 'MCP 服务器 {{name}} 启动失败:{{error}}', en: 'The MCP server {{name}} failed to start: {{error}}' },
|
|
424
|
+
'codex-thread-closed': { zh: '该会话已在别处关闭,仍可继续对话', en: 'This thread was closed elsewhere; you can keep talking' },
|
|
425
|
+
'codex-thread-archived': { zh: '该会话已在别处归档,仍可继续对话', en: 'This thread was archived elsewhere; you can keep talking' },
|
|
426
|
+
'codex-thread-deleted': { zh: '该会话已在别处删除', en: 'This thread was deleted elsewhere' },
|
|
427
|
+
'codex-rate-limit-reached': { zh: '已达到 Codex 用量上限({{kind}})', en: 'The Codex usage limit is reached ({{kind}})' },
|
|
428
|
+
'codex-hint-unauthorized': { zh: 'Codex 凭据无效或已过期:在终端运行 codex login 重新登录', en: 'The Codex credential is invalid or expired: sign in again with `codex login` in a terminal' },
|
|
429
|
+
'codex-hint-context': { zh: '上下文已满:可以用 /compact 压缩后继续', en: 'The context is full: run /compact and continue' },
|
|
430
|
+
'codex-hint-limit': { zh: '已达到用量上限,稍后再试', en: 'A usage limit is reached; try again later' },
|
|
431
|
+
'codex-hint-sandbox': { zh: '沙箱出错:Linux 上请安装 bubblewrap(例如 apt install bubblewrap)', en: 'Sandbox error: on Linux install bubblewrap (e.g. apt install bubblewrap)' },
|
|
432
|
+
'codex-connection-lost': { zh: 'Codex 进程退出,正在重连…', en: 'The Codex process exited; reconnecting…' },
|
|
433
|
+
'codex-connection-failed': { zh: 'Codex 进程无法启动:{{err}}', en: 'The Codex process cannot start: {{err}}' },
|
|
434
|
+
'codex-connection-dead': { zh: '连接已断开且无法恢复,请重新打开会话', en: 'The connection is gone for good; please reopen the session' },
|
|
435
|
+
'codex-reconnected': { zh: '已重新连接 Codex', en: 'Reconnected to Codex' },
|
|
436
|
+
'codex-not-installed': { zh: '未找到 codex:npm i -g @openai/codex 或 brew install codex,或设置 CODEX_EXECUTABLE', en: 'codex was not found: npm i -g @openai/codex or brew install codex, or set CODEX_EXECUTABLE' },
|
|
437
|
+
'codex-too-old': { zh: 'codex {{version}} 太旧(至少 {{min}}):请升级', en: 'codex {{version}} is too old (needs {{min}}): please upgrade' },
|
|
438
|
+
'codex-auth-missing-hint': { zh: '未检测到 Codex 凭据:启动后用 /login 登录,或设置 OPENAI_API_KEY', en: 'No Codex credential found: sign in with /login after start, or set OPENAI_API_KEY' },
|
|
439
|
+
'codex-start-failed': { zh: 'Codex app-server 启动失败:{{err}}', en: 'The Codex app-server failed to start: {{err}}' },
|
|
440
|
+
'codex-open-failed': { zh: '无法打开 Codex 会话:{{err}}', en: 'Could not open the Codex thread: {{err}}' },
|
|
441
|
+
'codex-thread-busy': { zh: 'Codex 会话 {{id}} 正被另一个 Codex 进程使用,先关闭那边再打开', en: 'The Codex thread {{id}} is in use by another Codex process; close it there first' },
|
|
442
|
+
'codex-resume-not-found': { zh: '找不到 Codex 会话 {{id}}({{err}})', en: 'The Codex thread {{id}} was not found ({{err}})' },
|
|
443
|
+
'codex-version-drift': { zh: 'codex {{version}} 未经本版 dsh-tui 验证(已验证:{{validated}}),继续运行', en: 'codex {{version}} is not validated with this dsh-tui (validated: {{validated}}); continuing' },
|
|
444
|
+
'codex-doctor-cli': { zh: 'Codex CLI: {{path}}({{source}})· 版本 {{version}}', en: 'Codex CLI: {{path}} ({{source}}) · version {{version}}' },
|
|
445
|
+
'codex-doctor-home': { zh: 'Codex 主目录: {{home}}', en: 'Codex home: {{home}}' },
|
|
446
|
+
'codex-doctor-thread': { zh: 'Codex 会话: {{id}} · provider {{provider}} · 模型 {{model}}', en: 'Codex thread: {{id}} · provider {{provider}} · model {{model}}' },
|
|
447
|
+
'codex-doctor-mode': { zh: '权限模式: {{mode}}', en: 'Permission mode: {{mode}}' },
|
|
448
|
+
'codex-doctor-bubblewrap': { zh: '未找到 bubblewrap:Codex 改用自带沙箱;建议用系统包管理器安装 bubblewrap', en: 'bubblewrap was not found: Codex uses its bundled sandbox; installing bubblewrap from the system package manager is recommended' },
|
|
449
|
+
'codex-mode-read-only': { zh: '只读', en: 'Read Only' },
|
|
450
|
+
'codex-mode-read-only-desc': { zh: '只读取文件;命令和修改需审批', en: 'Read files; commands and changes require approval' },
|
|
451
|
+
'codex-mode-auto': { zh: '默认', en: 'Default' },
|
|
452
|
+
'codex-mode-auto-desc': { zh: '可修改工作区;工作区外和网络操作需审批', en: 'Edit the workspace; ask before outside-workspace or network access' },
|
|
453
|
+
'codex-mode-full-access': { zh: '完全访问', en: 'Full Access' },
|
|
454
|
+
'codex-mode-full-access-desc': { zh: '关闭沙箱和审批,仅通过显式选择进入', en: 'Disable sandbox and approvals; explicit selection only' },
|
|
455
|
+
'codex-mode-plan': { zh: '计划', en: 'Plan' },
|
|
456
|
+
'codex-mode-plan-desc': { zh: '先调研和规划,保留当前权限档', en: 'Research and plan, preserving the current permissions' },
|
|
457
|
+
'codex-mode-invalid': { zh: '未知 Codex 模式:{{mode}}', en: 'Unknown Codex mode: {{mode}}' },
|
|
458
|
+
'codex-settings-deferred': { zh: '当前 Codex 版本不支持即时改设置,选择将在下一回合生效', en: 'This Codex version cannot update idle settings; your choices apply on the next turn' },
|
|
459
|
+
'codex-capability-unavailable': { zh: '当前 Codex 版本不支持 {{feature}},请升级', en: 'This Codex version does not support {{feature}}; please upgrade' },
|
|
460
|
+
'codex-effort-none': { zh: '无', en: 'None' },
|
|
461
|
+
'codex-effort-minimal': { zh: '极低', en: 'Minimal' },
|
|
462
|
+
'codex-effort-low': { zh: '低', en: 'Low' },
|
|
463
|
+
'codex-effort-medium': { zh: '中', en: 'Medium' },
|
|
464
|
+
'codex-effort-high': { zh: '高', en: 'High' },
|
|
465
|
+
'codex-effort-xhigh': { zh: '极高', en: 'Extra high' },
|
|
466
|
+
'codex-effort-ultra': { zh: '超高', en: 'Ultra' },
|
|
467
|
+
'codex-command-idle': { zh: '请先结束或中断当前回合', en: 'Finish or interrupt the current turn first' },
|
|
468
|
+
'codex-command-review': { zh: '审查未提交改动、分支、提交或自定义范围', en: 'Review working changes, a branch, a commit, or custom instructions' },
|
|
469
|
+
'codex-command-diff': { zh: '显示最近回合的文件差异', en: 'Show the latest turn\'s file diff' },
|
|
470
|
+
'codex-command-plan': { zh: '切换到 Plan 模式,可附带提示词', en: 'Enter Plan mode, optionally with a prompt' },
|
|
471
|
+
'codex-command-usage': { zh: '查看 Codex 额度和重置时间', en: 'Show Codex usage limits and reset times' },
|
|
472
|
+
'codex-diff-empty': { zh: '没有文件差异', en: 'No file differences' },
|
|
473
|
+
'codex-usage-window': { zh: '{{name}}:已用 {{used}}% · 重置 {{reset}}', en: '{{name}}: {{used}}% used · resets {{reset}}' },
|
|
474
|
+
'codex-usage-credits': { zh: '额度余额 {{balance}} · 不限量:{{unlimited}}', en: 'Credits {{balance}} · unlimited: {{unlimited}}' },
|
|
475
|
+
'codex-usage-unavailable': { zh: '当前 provider 未提供额度信息', en: 'The current provider supplies no usage-limit information' },
|
|
476
|
+
'codex-yes': { zh: '是', en: 'yes' },
|
|
477
|
+
'codex-no': { zh: '否', en: 'no' },
|
|
478
|
+
'codex-question-auto-answered': { zh: '问卷等待超时,已按服务端设置选择默认答案', en: 'The question timed out; the server\'s default answer was selected' },
|
|
479
|
+
'codex-plan-implement': { zh: '要实施这个计划吗?', en: 'Implement this plan?' },
|
|
480
|
+
'codex-plan-yes': { zh: '是,实施这个计划', en: 'Yes, implement this plan' },
|
|
481
|
+
'codex-plan-clear': { zh: '是,清空上下文后实施', en: 'Yes, clear context and implement' },
|
|
482
|
+
'codex-plan-stay': { zh: '否,留在 Plan 模式', en: 'No, stay in Plan mode' },
|
|
483
|
+
'codex-plan-action-failed': { zh: '无法开始实施计划:{{error}}', en: 'Could not start implementing the plan: {{error}}' },
|
|
484
|
+
'codex-bwrap-warning': { zh: '未找到 bubblewrap,沙箱命令可能失败。请安装(如 apt install bubblewrap),或在 /permission 中明确选择完全访问', en: 'bubblewrap was not found; sandboxed commands may fail. Install it (e.g. apt install bubblewrap), or explicitly select Full Access in /permission' },
|
|
485
|
+
'codex-model-waiting': { zh: '等待模型响应…', en: 'Waiting for the model…' },
|
|
486
|
+
'codex-model-stalled': { zh: '模型长时间无响应,可按 Esc 中断', en: 'The model has not responded for a long time; press Esc to interrupt' },
|
|
487
|
+
'codex-working-command': { zh: '运行 {{command}}', en: 'Running {{command}}' },
|
|
488
|
+
'codex-working-files': { zh: '编辑 {{files}}', en: 'Editing {{files}}' },
|
|
489
|
+
'codex-working-subagents': { zh: '等待子代理', en: 'Waiting for subagents' },
|
|
490
|
+
'codex-working-thinking': { zh: '思考中…', en: 'Thinking…' },
|
|
491
|
+
'codex-channel-url-required': { zh: '渠道连接缺少 base URL,请用 /channel 配置', en: 'The channel connection has no base URL; configure it with /channel' },
|
|
492
|
+
'codex-channel-token-missing': { zh: '渠道 {{name}} 缺少可用令牌,请用 /channel 补充', en: 'Channel {{name}} has no usable token; add one with /channel' },
|
|
493
|
+
'codex-channel-store-unavailable': { zh: '宿主未提供渠道令牌库,无法保存令牌', en: 'The host did not provide a channel token store; the token cannot be saved' },
|
|
494
|
+
'codex-channel-token-write-failed': { zh: '渠道令牌保存失败,连接未更新', en: 'The channel token could not be saved; the connection was not updated' },
|
|
495
|
+
'codex-auth-login-needed': { zh: 'Codex 需要凭据:用 /login 登录', en: 'Codex needs credentials: sign in with /login' },
|
|
496
|
+
'codex-auth-refresh-failed': { zh: 'ChatGPT 订阅令牌刷新失败,已停止注入;用 /login 重新登录,或使用自己的 Codex 登录', en: 'The ChatGPT subscription token refresh failed; injection stopped. Use /login again or your own Codex login' },
|
|
497
|
+
'codex-auth-login-failed': { zh: 'Codex 登录未完成,已停止托管令牌注入;请用 /login 重试', en: 'Codex login did not complete; managed token injection stopped. Retry with /login' },
|
|
498
|
+
'codex-auth-claims-missing': { zh: '内置 OAuth 令牌缺少 ChatGPT 账户信息,未注入;请用 /login 重新登录', en: 'The built-in OAuth token has no ChatGPT account identity and was not injected; sign in again with /login' },
|
|
499
|
+
'codex-auth-source-channel': { zh: '凭据来源:渠道 {{name}}', en: 'Credential source: channel {{name}}' },
|
|
500
|
+
'codex-auth-source-oauth': { zh: '凭据来源:dsh-auth ChatGPT 订阅', en: 'Credential source: dsh-auth ChatGPT subscription' },
|
|
501
|
+
'codex-auth-source-native': { zh: '凭据来源:Codex 自己的登录', en: 'Credential source: Codex native login' },
|
|
502
|
+
'codex-auth-source-api-key': { zh: '凭据来源:API key', en: 'Credential source: API key' },
|
|
503
|
+
'codex-auth-source-missing': { zh: '凭据来源:未登录', en: 'Credential source: not signed in' },
|
|
504
|
+
'codex-auth-source-unknown': { zh: '凭据来源:由 Codex 配置管理(无法确定)', en: 'Credential source: managed by Codex configuration (unknown)' },
|
|
505
|
+
'codex-auth-plan': { zh: '订阅:{{plan}}', en: 'Subscription: {{plan}}' },
|
|
506
|
+
'codex-auth-host': { zh: 'Provider 主机:{{host}}', en: 'Provider host: {{host}}' },
|
|
507
|
+
'codex-auth-route-blocked': { zh: '当前路由不接受内置订阅令牌;请使用自己的 Codex 登录或 /channel 渠道', en: 'This route does not accept built-in subscription tokens; use your own Codex login or /channel' },
|
|
508
|
+
'codex-auth-channel-active': { zh: '当前使用渠道凭据;请在 /channel 管理连接,不改动 OpenAI 登录', en: 'Channel credentials are active; manage the connection in /channel without changing OpenAI login' },
|
|
509
|
+
'codex-auth-api-key-required': { zh: '请输入非空 API key', en: 'Enter a non-empty API key' },
|
|
510
|
+
'codex-login-choose': { zh: '选择 Codex 登录方式', en: 'Choose a Codex sign-in method' },
|
|
511
|
+
'codex-login-oauth': { zh: '内置 ChatGPT OAuth', en: 'Built-in ChatGPT OAuth' },
|
|
512
|
+
'codex-login-oauth-desc': { zh: '复用 dsh-auth 登录,只向第一方路由提供内存令牌', en: 'Use dsh-auth; supply in-memory tokens only to first-party routes' },
|
|
513
|
+
'codex-login-device': { zh: 'Codex 设备码登录', en: 'Codex device-code login' },
|
|
514
|
+
'codex-login-device-desc': { zh: '在浏览器输入设备码,凭据由 Codex 保存', en: 'Enter a device code in a browser; Codex stores the credential' },
|
|
515
|
+
'codex-login-api-key': { zh: 'API key', en: 'API key' },
|
|
516
|
+
'codex-login-api-key-prompt': { zh: '输入 OpenAI API key', en: 'Enter an OpenAI API key' },
|
|
517
|
+
'codex-login-api-key-storage': { zh: '此方式会把 API key 写入用户的 Codex 凭据存储', en: 'This method writes the API key into your Codex credential store' },
|
|
518
|
+
'codex-login-device-code': { zh: '在验证页面输入设备码:{{code}}', en: 'Enter this device code on the verification page: {{code}}' },
|
|
519
|
+
'codex-login-device-wait': { zh: '等待浏览器授权完成;可取消此次登录', en: 'Waiting for browser authorization; you can cancel this login' },
|
|
520
|
+
'codex-login-cancel': { zh: '取消此次登录', en: 'Cancel this login' },
|
|
521
|
+
'codex-login-success': { zh: 'Codex 登录已完成', en: 'Codex sign-in completed' },
|
|
522
|
+
'codex-goal-usage-limited': { zh: 'Codex 用量额度已达到上限', en: 'The Codex usage limit was reached' },
|
|
523
|
+
'codex-goal-budget-limited': { zh: '目标的 token 预算已用尽', en: 'The goal token budget was exhausted' },
|
|
524
|
+
'codex-goal-blocked': { zh: 'Codex 目标暂时受阻', en: 'The Codex goal is blocked' },
|
|
525
|
+
'codex-tasks-unsupported': { zh: '此 Codex 不支持后台终端监控,任务能力已关闭', en: 'This Codex does not support background terminal monitoring; task controls are unavailable' },
|
|
526
|
+
'codex-terminal-ended': { zh: '终端已不在运行列表中;退出状态不可用', en: 'The terminal is no longer running; exit status is unavailable' },
|
|
527
|
+
'codex-terminal-stopped': { zh: '后台终端已停止', en: 'The background terminal was stopped' },
|
|
528
|
+
'codex-terminal-no-output': { zh: '此后台终端暂没有可读取的输出', en: 'No readable output is available for this background terminal' },
|
|
529
|
+
'codex-side-open-failed': { zh: '无法创建临时旁问会话', en: 'Could not create the ephemeral side-question thread' },
|
|
530
|
+
'codex-images-too-many': { zh: 'Codex 一条消息最多接受 {{n}} 张图片', en: 'Codex accepts at most {{n}} images per message' },
|
|
531
|
+
'codex-image-type-refused': { zh: '图片 {{name}} 的格式 {{type}} 不受 Codex 支持', en: 'Image {{name}} uses {{type}}, which Codex does not accept' },
|
|
532
|
+
'codex-image-unreadable': { zh: '无法读取图片 {{name}}', en: 'Image {{name}} could not be read' },
|
|
533
|
+
'codex-image-too-large': { zh: '图片 {{name}} 超过 Codex 的 {{mb}} MiB 限制', en: 'Image {{name}} exceeds the Codex {{mb}} MiB limit' },
|
|
534
|
+
'codex-images-too-large': { zh: '本条消息的图片总大小超过 {{mb}} MiB', en: 'The message images exceed {{mb}} MiB in total' },
|
|
535
|
+
'codex-image-dimensions-refused': { zh: '图片 {{name}} 超过 {{px}} 像素限制,请缩小后重试', en: 'Image {{name}} exceeds the {{px}} pixel limit; resize it and retry' },
|
|
536
|
+
'codex-history-fetch-failed': { zh: 'Codex 更早历史连续读取失败,暂时停止预取;可重新打开会话后重试', en: 'Earlier Codex history could not be read after three attempts; reopen the session to retry' },
|
|
537
|
+
'codex-preview-image': { zh: '[图片]', en: '[Image]' },
|
|
538
|
+
'codex-archive-busy': { zh: '该 Codex 会话由活动中的内部任务使用,暂时无法归档', en: 'This Codex thread is owned by an active internal worker and cannot be archived yet' },
|
|
539
|
+
'codex-orphan-request': { zh: '无法确定 Codex 子代理请求所属会话,已取消该请求', en: 'Could not find the session owning a Codex subagent request; the request was cancelled' },
|
|
540
|
+
'codex-channel-url-invalid': { zh: '渠道 URL 只接受 HTTPS(HTTP 仅限 localhost/127.0.0.1),不能含账号密码、查询串、片段或疑似密钥路径', en: 'A channel URL must use HTTPS (HTTP only on localhost/127.0.0.1), without userinfo, query, fragment, or key-like path segments' },
|
|
541
|
+
'codex-channel-id-invalid': { zh: '渠道 ID 只能含字母、数字、下划线和连字符', en: 'A channel ID may only contain letters, digits, underscores and hyphens' },
|
|
542
|
+
'codex-channel-wire-api-invalid': { zh: 'Codex 渠道仅支持 Responses API', en: 'Codex channels only support the Responses API' },
|
|
543
|
+
'codex-channel-env-invalid': { zh: '渠道 env 只能存非凭据变量;令牌请填入令牌输入框', en: 'Channel env may only hold non-credential variables; use the token input for credentials' },
|
|
544
|
+
'codex-anchor-missing': { zh: '找不到这条消息的原生回合,无法 fork 或回退', en: 'The native turn for this message is unavailable; it cannot be forked or rewound' },
|
|
545
|
+
'codex-rewind-files-unsupported': { zh: 'Codex 仅支持对话回退,不恢复工作区文件', en: 'Codex supports conversation rewind only; workspace files are not restored' },
|
|
546
|
+
'codex-rewind-load-older': { zh: '请先加载更早的消息,再回退到这一回合', en: 'Load earlier messages before rewinding to this turn' },
|
|
547
|
+
'codex-goals-unsupported': { zh: '此 Codex 不支持目标管理,目标能力已关闭', en: 'This Codex does not support goal management; goal controls are unavailable' },
|
|
548
|
+
'codex-subagent-unavailable': { zh: '无法读取此 Codex 子代理的历史', en: 'This Codex subagent history is unavailable' },
|
|
549
|
+
'codex-reconnect-incomplete': { zh: 'Codex 恢复缺口超过读取预算或游标失效,请重新打开会话', en: 'Codex recovery exceeded its history budget or could not reach a known turn; reopen the session' },
|
|
550
|
+
'cmd-unavailable-backend': { zh: '/{{cmd}} 在 {{backend}} 内核下不可用', en: '/{{cmd}} is not available on the {{backend}} kernel' },
|
|
167
551
|
'export-user-section': { zh: '## 用户', en: '## User' },
|
|
168
552
|
'export-thinking-section': { zh: '## 思考', en: '## Thinking' },
|
|
169
553
|
'export-assistant-section': { zh: '## 助手', en: '## Assistant' },
|
|
@@ -183,6 +567,7 @@ const dict = {
|
|
|
183
567
|
'doctor-context-window': { zh: '上下文窗口: {{window}} tokens', en: 'Context window: {{window}} tokens' },
|
|
184
568
|
'doctor-unknown': { zh: '未知', en: 'unknown' },
|
|
185
569
|
'doctor-session': { zh: '会话: {{id}}', en: 'Session: {{id}}' },
|
|
570
|
+
'doctor-backend': { zh: '内核: {{label}} ({{id}})', en: 'Kernel: {{label}} ({{id}})' },
|
|
186
571
|
'doctor-config': { zh: '配置: {{candidate}} {{state}}', en: 'Config: {{candidate}} {{state}}' },
|
|
187
572
|
'doctor-config-missing': { zh: '(不存在)', en: '(missing)' },
|
|
188
573
|
'doctor-storage': { zh: '会话存储: {{dir}} {{state}}', en: 'Session storage: {{dir}} {{state}}' },
|
|
@@ -199,6 +584,10 @@ const dict = {
|
|
|
199
584
|
'subagent-status-running': { zh: '运行中', en: 'running' },
|
|
200
585
|
'subagent-status-completed': { zh: '已完成', en: 'completed' },
|
|
201
586
|
'subagent-status-failed': { zh: '失败', en: 'failed' },
|
|
587
|
+
'subagent-status-unknown': { zh: '状态未知', en: 'status unknown' },
|
|
588
|
+
'subagent-task-fallback': { zh: '{{kind}} 任务', en: '{{kind}} task' },
|
|
589
|
+
'subagent-background': { zh: '后台', en: 'background' },
|
|
590
|
+
'subagent-interrupt-failed': { zh: '无法停止子代理 {{id}}(已结束或被拒绝)', en: 'Could not stop subagent {{id}} (already finished or refused)' },
|
|
202
591
|
'agent-preset-switched': { zh: 'Agent preset 已切换:{{preset}}', en: 'Agent preset switched: {{preset}}' },
|
|
203
592
|
'context-low-warning': { zh: '上下文即将耗尽(剩余 {{percent}}%)· 运行 /clear 或新建会话', en: 'Context low ({{percent}}% remaining) · Run /clear or start a new session' },
|
|
204
593
|
'rewind-unavailable': { zh: '回退不可用——会话服务未加载', en: 'Rewind unavailable — session services not loaded' },
|
|
@@ -210,6 +599,18 @@ const dict = {
|
|
|
210
599
|
'rewind-load-failed': { zh: '无法读取该会话日志 · {{err}}', en: 'Could not read that session log · {{err}}' },
|
|
211
600
|
'rewind-first-message': { zh: '不能回退到第一条消息之前', en: 'Cannot rewind past the very first message' },
|
|
212
601
|
'rewind-noop': { zh: '该点之后没有可回退的内容', en: 'Nothing to rewind past this point' },
|
|
602
|
+
'rewind-while-working': { zh: '回合运行中,无法回退', en: 'Cannot rewind while a turn is running' },
|
|
603
|
+
'rewind-unanchored': { zh: '这条消息没有可回退的锚点', en: 'This message has no rewind anchor' },
|
|
604
|
+
'rewind-files-count': { zh: '{{n}} 个文件', en: '{{n}} file(s)' },
|
|
605
|
+
'rewind-files-restored': { zh: '已恢复文件 · {{summary}}', en: 'Files restored · {{summary}}' },
|
|
606
|
+
'session-switch-input-parked': { zh: '还有输入未送达当前会话({{input}}),送达后再切换', en: 'An input is still on its way to this session ({{input}}); switch once it has been delivered' },
|
|
607
|
+
'rewind-conversation-failed': { zh: '文件已恢复,但会话回退失败 · {{err}}', en: 'Files restored, but the conversation rewind failed · {{err}}' },
|
|
608
|
+
'rewind-fork-kept': { zh: '回退副本已保存但未能切换过去;可用此命令进入:{{command}}', en: 'The rewound copy is saved but could not be opened here; enter it with: {{command}}' },
|
|
609
|
+
'rewind-mode-both': { zh: '回退会话并恢复文件', en: 'Rewind conversation and restore files' },
|
|
610
|
+
'rewind-mode-files': { zh: '仅恢复文件(会话不变)', en: 'Restore files only (conversation unchanged)' },
|
|
611
|
+
'rename-failed': { zh: '重命名失败 · {{err}}', en: 'Rename failed · {{err}}' },
|
|
612
|
+
'session-archive-failed': { zh: '归档会话失败 · {{err}}', en: 'Archiving the session failed · {{err}}' },
|
|
613
|
+
'session-delete-failed': { zh: '删除会话失败 · {{err}}', en: 'Deleting the session failed · {{err}}' },
|
|
213
614
|
'rewind-session-changed': { zh: '会话已切换,回退已放弃', en: 'The session changed; the rewind was dropped' },
|
|
214
615
|
'tree-unavailable': { zh: '会话树不可用——持久化服务未加载', en: 'Session tree unavailable — session persistence not loaded' },
|
|
215
616
|
'fork-unavailable': { zh: '分叉不可用——会话服务未加载', en: 'Fork unavailable — session services not loaded' },
|
|
@@ -282,6 +683,8 @@ const dict = {
|
|
|
282
683
|
'new-session-while-working': { zh: '回合运行中,无法新建会话', en: 'Cannot start a new session while a turn is running' },
|
|
283
684
|
'new-session-unavailable': { zh: '新建会话不可用——agents 服务未加载', en: 'New session unavailable — agents service not loaded' },
|
|
284
685
|
'new-session-failed': { zh: '新建会话失败 · {{err}}', en: 'New session failed · {{err}}' },
|
|
686
|
+
'resume-raced': { zh: '会话打开期间当前会话开始了新的回合,已取消恢复;该回合在当前会话中继续', en: 'The current session started a turn while the other one was opening — the resume was cancelled; the turn continues here' },
|
|
687
|
+
'new-session-raced': { zh: '新会话打开期间当前会话开始了新的回合,已取消 /new;该回合在当前会话中继续', en: 'The current session started a turn while the new one was opening — /new was cancelled; the turn continues here' },
|
|
285
688
|
'new-session-attach-failed': { zh: '会话已创建,但工作区挂载失败 · {{err}}', en: 'Session created, but workspace attachment failed · {{err}}' },
|
|
286
689
|
'model-switch-while-working': { zh: '回合运行中,无法切换模型', en: 'Cannot switch models while a turn is running' },
|
|
287
690
|
'model-switch-unavailable': { zh: '模型切换不可用——会话服务未加载', en: 'Model switch unavailable — session services not loaded' },
|
|
@@ -489,6 +892,17 @@ const dict = {
|
|
|
489
892
|
'supervisor-stop-current': { zh: '不能停止当前正在使用的会话', en: 'The session you are attached to cannot be stopped' },
|
|
490
893
|
'supervisor-open-failed': { zh: '无法进入会话「{{name}}」· {{reason}}', en: 'Could not enter {{name}} · {{reason}}' },
|
|
491
894
|
// 外部来源标签页(其他 coding agent 的会话,选中即导入)
|
|
895
|
+
'supervisor-hint-list-backend': { zh: '**←/→** 切换栏位 · **Enter** 进入会话 · Ctrl+R 重命名 · Ctrl+D 删除 · Esc 返回', en: '**←/→** switch pane · **Enter** enter · Ctrl+R rename · Ctrl+D delete · Esc back' },
|
|
896
|
+
'supervisor-hint-list-archive': { zh: '**←/→** 切换栏位 · **Enter** 进入会话 · Ctrl+R 重命名 · Ctrl+D 归档 · Esc 返回', en: '**←/→** switch pane · **Enter** enter · Ctrl+R rename · Ctrl+D archive · Esc back' },
|
|
897
|
+
'supervisor-archive-confirm': { zh: '归档会话「{{name}}」?原生对话记录保留 · **Enter** 确认 · Esc 取消', en: 'Archive session {{name}}? The native transcript is kept · **Enter** confirm · Esc cancel' },
|
|
898
|
+
'supervisor-archive-current': { zh: '不能归档当前正在使用的会话', en: 'The session you are attached to cannot be archived' },
|
|
899
|
+
'supervisor-archive-failed': { zh: '无法归档会话「{{name}}」', en: 'Could not archive {{name}}' },
|
|
900
|
+
'supervisor-archived': { zh: '已归档会话「{{name}}」', en: 'Archived session {{name}}' },
|
|
901
|
+
'supervisor-hint-session-rename': { zh: '输入新标题 · **Enter** 保存 · Esc 取消', en: 'Type a new title · **Enter** save · Esc cancel' },
|
|
902
|
+
'supervisor-delete-confirm': { zh: '删除会话「{{name}}」?对话记录会从磁盘移除 · **Enter** 确认 · Esc 取消', en: 'Delete session {{name}}? Its transcript is removed from disk · **Enter** confirm · Esc cancel' },
|
|
903
|
+
'supervisor-delete-current': { zh: '不能删除当前正在使用的会话', en: 'The session you are attached to cannot be deleted' },
|
|
904
|
+
'supervisor-delete-failed': { zh: '无法删除会话「{{name}}」', en: 'Could not delete {{name}}' },
|
|
905
|
+
'supervisor-deleted': { zh: '已删除会话「{{name}}」', en: 'Deleted session {{name}}' },
|
|
492
906
|
'supervisor-hint-tabs': { zh: '**Tab** 切换来源', en: '**Tab** switch source' },
|
|
493
907
|
'supervisor-foreign-sessions-title': { zh: '{{source}} · {{name}} 的会话', en: '{{source}} · sessions in {{name}}' },
|
|
494
908
|
'supervisor-foreign-count': { zh: '共 {{total}}', en: '{{total}} total' },
|
|
@@ -512,6 +926,7 @@ const dict = {
|
|
|
512
926
|
// 占用只有一个真源(官方 contextPressure 投影,见 dsh-adapter/context-occupancy.ts):
|
|
513
927
|
// 与 /tokens、状态栏 ctx 字段、告警共用同一读数。
|
|
514
928
|
'context-occupancy': { zh: '上下文占用 {{percent}}%({{used}}/{{window}})', en: 'Context occupancy {{percent}}% ({{used}}/{{window}})' },
|
|
929
|
+
'context-bar-used': { zh: '已用', en: 'used' },
|
|
515
930
|
'status-title': { zh: '标题 {{title}}', en: 'Title {{title}}' },
|
|
516
931
|
'cost-cache-hit-rate': { zh: '本次请求缓存命中率 {{rate}}% · 缓存 {{read}} 读 / {{write}} 写', en: 'Cache hit rate of this request: {{rate}}% · cache {{read}} read / {{write}} write' },
|
|
517
932
|
// /cost 末尾口径:有金额 → 本地估算(官方单价 × 用量)、非平台账单;
|
|
@@ -589,6 +1004,10 @@ const dict = {
|
|
|
589
1004
|
'permission-current': { zh: '当前预设 {{name}}', en: 'Current preset {{name}}' },
|
|
590
1005
|
'permission-roster-unavailable': { zh: '权限预设名册不可用', en: 'Permission preset roster unavailable' },
|
|
591
1006
|
'permission-picker-title': { zh: '权限预设', en: 'Permission preset' },
|
|
1007
|
+
'permission-mode-picker-title': { zh: '权限模式', en: 'Permission mode' },
|
|
1008
|
+
'permission-mode-current': { zh: '当前权限模式 {{name}}', en: 'Current permission mode {{name}}' },
|
|
1009
|
+
'permission-mode-switch-hint': { zh: '切换:/permission <模式>,或点击底栏模式段', en: 'Switch with /permission <mode>, or click the mode segment in the footer' },
|
|
1010
|
+
'permission-mode-unknown': { zh: '没有这个权限模式:{{id}}', en: 'No such permission mode: {{id}}' },
|
|
592
1011
|
'permission-preset-readonly': { zh: '只读', en: 'Read-only' },
|
|
593
1012
|
'permission-preset-readonly-desc': { zh: '会话只读:不写文件、不执行命令', en: 'Read-only session: no file writes, no commands' },
|
|
594
1013
|
'permission-preset-workspace-write': { zh: '工作区读写', en: 'Workspace read/write' },
|
|
@@ -637,8 +1056,24 @@ const dict = {
|
|
|
637
1056
|
'terminal-paste-hint': { zh: '{{keys}} 粘贴文本、文件路径或图片;Ctrl+Shift+V 终端原生粘贴;右键粘贴同样可用;快捷键可在 /settings 修改。', en: '{{keys}} pastes text, file paths, or images; Ctrl+Shift+V is native terminal paste; right-click paste also works; remappable via /settings.' },
|
|
638
1057
|
'connect-none': { zh: '当前环境未提供远程连接服务。', en: 'No remote connection service is available in this environment.' },
|
|
639
1058
|
'theme-switch-failed': { zh: '主题「{{name}}」切换失败(无法写入 ~/.dsh-tui/theme.json)', en: 'Theme "{{name}}" switch failed (cannot write ~/.dsh-tui/theme.json)' },
|
|
640
|
-
'interrupt-delivered': { zh: '已打断当前回合,{{n}} 条消息立即处理', en: 'Interrupted current turn, {{n}} messages processed immediately' },
|
|
641
1059
|
'btw-usage': { zh: '用法:/btw <问题> —— 不打断当前对话的快速侧问', en: 'Usage: /btw <question> — quick side question without interrupting the conversation' },
|
|
1060
|
+
'panel-title-btw': { zh: '侧问', en: 'btw' },
|
|
1061
|
+
'btw-thread-empty': { zh: '还没有侧问。输入 /btw <问题>,或在下方直接追问。', en: 'No side questions yet. Type /btw <question>, or ask a follow-up below.' },
|
|
1062
|
+
'btw-thread-new': { zh: '新话题', en: 'New topic' },
|
|
1063
|
+
'btw-thread-clear': { zh: '已开始新话题:上下文与未读已清空', en: 'New topic started: context and unread cleared' },
|
|
1064
|
+
'btw-thread-context-recent': { zh: '后续答案参考最近 {{n}} 组问答', en: 'Answers use the last {{n}} Q/A pairs as context' },
|
|
1065
|
+
'btw-thread-context-omitted': { zh: '已省略更早 {{n}} 组问答', en: '{{n}} earlier Q/A pair(s) omitted' },
|
|
1066
|
+
'btw-thread-followup': { zh: '输入追问…(Enter 发送 · Esc 回到对话 · Tab 切列表)', en: 'Type a follow-up… (Enter send · Esc back to chat · Tab list)' },
|
|
1067
|
+
'btw-thread-busy': { zh: '上一个侧问还在回答,等它结束再追问', en: 'Still answering the last side question; ask again once it finishes' },
|
|
1068
|
+
'btw-thread-error': { zh: '本轮失败', en: 'This turn failed' },
|
|
1069
|
+
'btw-thread-cancelled': { zh: '已取消本轮侧问', en: 'Side question cancelled' },
|
|
1070
|
+
'btw-thread-unread': { zh: '有新回答', en: 'New answer' },
|
|
1071
|
+
'btw-thread-send-to-chat': { zh: '发送到聊天', en: 'Send to chat' },
|
|
1072
|
+
'btw-thread-answer-attached': { zh: '答案已附加到下一次主聊天提交', en: 'Answer attached to your next main chat submission' },
|
|
1073
|
+
'btw-thread-answer-truncated': { zh: '答案过长,附加时已截断', en: 'Answer exceeded the attach limit and was truncated' },
|
|
1074
|
+
'btw-fullscreen-title': { zh: 'btw 侧问线程', en: 'btw side thread' },
|
|
1075
|
+
'btw-panel-unavailable': { zh: 'btw 面板未启用(/settings → dsh-tui.sidePanel.panels)', en: 'btw panel not enabled (/settings → dsh-tui.sidePanel.panels)' },
|
|
1076
|
+
'btw-output-unavailable': { zh: '没有收到回答', en: 'No answer received' },
|
|
642
1077
|
'btw-answering': { zh: '思考中…', en: 'Answering…' },
|
|
643
1078
|
'btw-hint-loading': { zh: 'Esc 取消', en: 'Esc cancel' },
|
|
644
1079
|
'btw-hint-done': { zh: '↑/↓ 滚动 · Space/Enter/Esc 关闭 · c 复制', en: '↑/↓ scroll · Space/Enter/Esc dismiss · c copy' },
|
|
@@ -743,6 +1178,7 @@ const dict = {
|
|
|
743
1178
|
'effort-invalid': { zh: '未知推理等级 {{id}}(当前模型可选:{{ids}})', en: 'Unknown reasoning effort {{id}} (this model offers: {{ids}})' },
|
|
744
1179
|
'effort-current': { zh: '当前推理强度 {{name}}', en: 'Current reasoning effort {{name}}' },
|
|
745
1180
|
'effort-usage': { zh: '用法:/effort(滑杆)| /effort <id> | /effort status', en: 'Usage: /effort (slider) | /effort <id> | /effort status' },
|
|
1181
|
+
'effort-fallback-tier-note': { zh: '该模型没有声明推理档位,这里列出的是通用档位', en: 'This model declares no effort levels; these are the standard ones' },
|
|
746
1182
|
// ── channel.ts — Shift+Tab session modes ────────────────────────────
|
|
747
1183
|
'mode-switched': { zh: '模式 → {{name}}', en: 'Mode → {{name}}' },
|
|
748
1184
|
'mode-default': { zh: '默认', en: 'default' },
|
|
@@ -854,7 +1290,12 @@ const dict = {
|
|
|
854
1290
|
'input-image-format-unsupported': { zh: '剪贴板图片格式不受支持;请使用 PNG、JPEG、WebP 或 GIF', en: 'Clipboard image format is unsupported; use PNG, JPEG, WebP, or GIF' },
|
|
855
1291
|
'input-pending-steer-label': { zh: '插话 · 下一步送达', en: 'Steer · delivered next' },
|
|
856
1292
|
'input-pending-queue-label': { zh: '排队 · 回合结束后送达', en: 'Queued · delivered after the turn' },
|
|
857
|
-
'input-pending-actions-hint': { zh: '撤回 · Esc
|
|
1293
|
+
'input-pending-actions-hint': { zh: '撤回 · Esc 打断并暂存排队消息', en: 'Retract · Esc interrupts and holds the queue' },
|
|
1294
|
+
'input-pending-dock-label': { zh: '已暂存 · 打断后保留,不会自动发送', en: 'Held · kept after the interrupt, not sent automatically' },
|
|
1295
|
+
'input-pending-dock-hint': { zh: '按 ↑ 编辑排队消息,⏎ 立即发送', en: 'Press ↑ to edit queued messages, ⏎ to send now' },
|
|
1296
|
+
'input-dock-sent': { zh: '已发送 {{n}} 条暂存消息', en: 'Sent {{n}} held message(s)' },
|
|
1297
|
+
'input-dock-swapped': { zh: '已交换:草稿暂存,所点消息回到输入框(Ctrl+Z 换回)', en: 'Swapped: the draft is held and the picked message is back in the input (Ctrl+Z swaps back)' },
|
|
1298
|
+
'input-dock-confirming': { zh: '{{n}} 条暂存消息还在等打断完成,稍后再发送或编辑', en: '{{n}} held message(s) are waiting for the interrupt to finish; send or edit again in a moment' },
|
|
858
1299
|
// U+30FB (not U+00B7): the separator participates in the folded-chip
|
|
859
1300
|
// width arithmetic; U+00B7 is EA-ambiguous and paints 2 cells on CJK
|
|
860
1301
|
// terminal fonts while the model measures 1 (see PromptInput foldBadge).
|
|
@@ -893,16 +1334,41 @@ const dict = {
|
|
|
893
1334
|
'tool-name-todo_write': { zh: '待办清单', en: 'TodoWrite' },
|
|
894
1335
|
'tool-name-subagent': { zh: '子代理', en: 'Task' },
|
|
895
1336
|
'tool-name-web_search': { zh: '联网搜索', en: 'WebSearch' },
|
|
1337
|
+
'tool-name-multiedit': { zh: '多处编辑', en: 'MultiEdit' },
|
|
1338
|
+
'tool-name-notebookedit': { zh: '笔记本编辑', en: 'NotebookEdit' },
|
|
1339
|
+
'tool-name-webfetch': { zh: '网页抓取', en: 'WebFetch' },
|
|
1340
|
+
'tool-name-skill': { zh: '技能', en: 'Skill' },
|
|
896
1341
|
// 正文错误行与运行中占位(区别于上面 tooltip 的短促小写风格):
|
|
897
1342
|
'tool-exit-code': { zh: '退出码 {{code}}', en: 'Exit code {{code}}' },
|
|
898
1343
|
'tool-killed-signal': { zh: '被信号 {{name}} 终止', en: 'Killed by signal {{name}}' },
|
|
899
1344
|
'tool-running-elapsed': { zh: '运行中…({{duration}})', en: 'Running… ({{duration}})' },
|
|
1345
|
+
'diff-patch-added': { zh: '新文件', en: 'new file' },
|
|
1346
|
+
'diff-patch-deleted': { zh: '已删除', en: 'deleted' },
|
|
1347
|
+
'tool-live-omitted': { zh: '… 已省略 {{count}} 行', en: { one: '… {{count}} line omitted', other: '… {{count}} lines omitted' } },
|
|
900
1348
|
// 搜索结果截断行(search 卡 paths 形态):
|
|
901
1349
|
'search-results-total': { zh: '…(共 {{n}} 条)', en: '… ({{n}} total)' },
|
|
902
1350
|
// 按行折叠的溢出提示:卡片正文行预算(capLines)、终端卡多行命令折叠
|
|
903
1351
|
// (foldTerminalCommand)、分屏 diff 隐藏行(SplitDiffView)。按字符折叠
|
|
904
1352
|
// 的行内标记见 long-line-folded。
|
|
905
1353
|
'lines-folded-expand': { zh: '… +{{n}} 行({{key}} 展开)', en: '… +{{n}} lines ({{key}} to expand)' },
|
|
1354
|
+
// 工具卡折叠量(行/字符)与展开态的「只是预览」说明。
|
|
1355
|
+
'tool-card-lines-unit': { zh: '{{n}} 行', en: '{{n}} lines' },
|
|
1356
|
+
'tool-card-chars-unit': { zh: '{{n}} 字符', en: '{{n}} chars' },
|
|
1357
|
+
'tool-card-lines-hidden': { zh: '… 已折叠 {{parts}}({{key}} 展开)', en: '… folded {{parts}} ({{key}} to expand)' },
|
|
1358
|
+
'tool-card-source-truncated': { zh: '原始数据已折叠:以上是预览,全文保留在会话日志里', en: 'Source folded: the above is a preview; the session log keeps the full text' },
|
|
1359
|
+
'tool-card-full-unavailable': { zh: '以上是整理后的视图,没有保留可展开的原始全文', en: 'Formatted view above; no raw full text was kept to expand' },
|
|
1360
|
+
'tool-card-window-shown': { zh: '… 只显示前 {{shown}}/{{total}} 行(全文仍保留)', en: '… showing the first {{shown}}/{{total}} lines (the full text is kept)' },
|
|
1361
|
+
// 单回合用量行(/tokens、/cost、底栏 hover)。缓存段只在后端上报了缓存
|
|
1362
|
+
// token 时显示,未上报不当作 0。
|
|
1363
|
+
'usage-turn-summary': { zh: '本轮', en: 'turn' },
|
|
1364
|
+
'usage-cache-read': { zh: '读 {{n}}', en: 'read {{n}}' },
|
|
1365
|
+
'usage-cache-write': { zh: '写 {{n}}', en: 'write {{n}}' },
|
|
1366
|
+
'usage-cache-segment': { zh: '缓存 {{parts}}', en: 'cache {{parts}}' },
|
|
1367
|
+
'usage-retry-segment': { zh: '重试 {{n}} 次', en: '{{n}} retries' },
|
|
1368
|
+
'usage-turn-outcome-interrupted': { zh: '已中断', en: 'interrupted' },
|
|
1369
|
+
'usage-turn-outcome-error': { zh: '未完成', en: 'unfinished' },
|
|
1370
|
+
'usage-sampled-at': { zh: '截至 {{time}}', en: 'as of {{time}}' },
|
|
1371
|
+
'usage-last-turn': { zh: '上一轮', en: 'last turn' },
|
|
906
1372
|
// ── components/SuggestionCard.tsx(/ 命令菜单 · @ 文件菜单)─────────
|
|
907
1373
|
'sugg-commands-title': { zh: '命令', en: 'commands' },
|
|
908
1374
|
'sugg-files-title': { zh: '文件', en: 'files' },
|
|
@@ -921,6 +1387,11 @@ const dict = {
|
|
|
921
1387
|
'sugg-activity-frames-desc': { zh: '列出或切换动画帧预设', en: 'List or switch frame presets' },
|
|
922
1388
|
'sugg-activity-frame-desc': { zh: '动画帧预设', en: 'Animation frame preset' },
|
|
923
1389
|
'sugg-color-reset-desc': { zh: '清除会话颜色,恢复主题默认', en: 'Clear the session color' },
|
|
1390
|
+
'sugg-mcp-reconnect-desc': { zh: '重新连接一个 MCP 服务器', en: 'Reconnect an MCP server' },
|
|
1391
|
+
'sugg-mcp-toggle-desc': { zh: '开启或关闭一个 MCP 服务器', en: 'Turn an MCP server on or off' },
|
|
1392
|
+
'sugg-mcp-server-desc': { zh: 'MCP 服务器', en: 'MCP server' },
|
|
1393
|
+
'sugg-mcp-on-desc': { zh: '开启该服务器', en: 'Enable the server' },
|
|
1394
|
+
'sugg-mcp-off-desc': { zh: '关闭该服务器', en: 'Disable the server' },
|
|
924
1395
|
'sugg-color-name-desc': { zh: '会话强调色', en: 'Session accent color' },
|
|
925
1396
|
// ── dsh-adapter/plugin.ts(/settings 渲染设置)───────────────────────
|
|
926
1397
|
'settings-fullscreen-restart': { zh: '全屏设置已保存,重启 dsh-tui 后生效', en: 'Fullscreen preference saved — restart dsh-tui to apply' },
|
|
@@ -944,6 +1415,25 @@ const dict = {
|
|
|
944
1415
|
'help-open-editor': { zh: '{{key}} 打开编辑器', en: '{{key}} to open editor' },
|
|
945
1416
|
'help-fold-todos': { zh: '{{key}} 折叠待办', en: '{{key}} to fold todos' },
|
|
946
1417
|
'goal-todo-fold-hint': { zh: '{{key}} 折叠', en: '{{key}} to fold' },
|
|
1418
|
+
// ── goal budget and the backend-neutral /goal (src/channel/goal-command.ts)
|
|
1419
|
+
'goal-budget-used': { zh: '已用 {{used}} / {{budget}} tokens · {{time}}', en: 'Used {{used}} / {{budget}} tokens · {{time}}' },
|
|
1420
|
+
'goal-budget-used-open': { zh: '已用 {{used}} tokens · {{time}}', en: 'Used {{used}} tokens · {{time}}' },
|
|
1421
|
+
'goal-phase-active': { zh: '进行中', en: 'active' },
|
|
1422
|
+
'goal-phase-paused': { zh: '已暂停', en: 'paused' },
|
|
1423
|
+
'goal-phase-blocked': { zh: '受阻', en: 'blocked' },
|
|
1424
|
+
'goal-phase-complete': { zh: '已完成', en: 'complete' },
|
|
1425
|
+
'goal-backend-none': { zh: '当前没有目标', en: 'No goal is set' },
|
|
1426
|
+
'goal-backend-usage': { zh: '用法:/goal <目标>(可加 --budget 50k 设 token 预算)· /goal pause · /goal resume · /goal clear', en: 'Usage: /goal <objective> (add --budget 50k for a token budget) · /goal pause · /goal resume · /goal clear' },
|
|
1427
|
+
'goal-backend-objective': { zh: '目标:{{objective}}', en: 'Goal: {{objective}}' },
|
|
1428
|
+
'goal-backend-phase': { zh: '状态:{{phase}}', en: 'Status: {{phase}}' },
|
|
1429
|
+
'goal-backend-rounds': { zh: '轮次:{{started}}/{{max}}', en: 'Rounds: {{started}}/{{max}}' },
|
|
1430
|
+
'goal-backend-blocked': { zh: '受阻原因:{{message}}', en: 'Blocked: {{message}}' },
|
|
1431
|
+
'goal-backend-bad-budget': { zh: '无效的 token 预算「{{value}}」(例:50000、50k、1.5m)', en: 'Invalid token budget "{{value}}" (e.g. 50000, 50k, 1.5m)' },
|
|
1432
|
+
'goal-backend-missing-objective': { zh: '请写出目标内容:/goal <目标>', en: 'Say what the goal is: /goal <objective>' },
|
|
1433
|
+
'goal-backend-set': { zh: '已设置目标', en: 'Goal set' },
|
|
1434
|
+
'goal-backend-paused': { zh: '目标已暂停', en: 'Goal paused' },
|
|
1435
|
+
'goal-backend-resumed': { zh: '目标已恢复', en: 'Goal resumed' },
|
|
1436
|
+
'goal-backend-cleared': { zh: '目标已清除', en: 'Goal cleared' },
|
|
947
1437
|
'help-commands-title': { zh: '命令:', en: 'commands:' },
|
|
948
1438
|
'help-scroll-hint': {
|
|
949
1439
|
zh: '↑/↓ 滚动 · PgUp/PgDn 翻页 · Home/End 首尾 · Esc 关闭',
|
|
@@ -954,6 +1444,7 @@ const dict = {
|
|
|
954
1444
|
// ── components/TurnInterruptedRow.tsx ────────────────────────────────
|
|
955
1445
|
'interrupted-by-user': { zh: '已打断 ', en: 'Interrupted ' },
|
|
956
1446
|
'interrupted-ask-next': { zh: '· 接下来想让 DeepSeek 做什么?', en: '· What should DeepSeek do instead?' },
|
|
1447
|
+
'interrupted-ask-backend': { zh: '· 接下来想让 {{name}} 做什么?', en: '· What should {{name}} do instead?' },
|
|
957
1448
|
// ── components/MessageList.tsx ──────────────────────────────────────
|
|
958
1449
|
'load-earlier': { zh: ' ↑ 加载更早消息(会话日志完整,/export 导出全文) ', en: ' ↑ load earlier messages (full session log; /export for full text) ' },
|
|
959
1450
|
'show-previous-messages': { zh: ' {{key}} 显示前 {{n}} 条消息 ', en: ' {{key}} to show {{n}} previous messages ' },
|
|
@@ -989,6 +1480,11 @@ const dict = {
|
|
|
989
1480
|
'settings-saved': { zh: '已保存 {{ns}}', en: 'Saved {{ns}}' },
|
|
990
1481
|
'settings-save-failed': { zh: '保存 {{ns}} 失败——请重试', en: 'Saving {{ns}} failed — please retry' },
|
|
991
1482
|
'settings-secret-ref-reserved': { zh: '凭据 {{ref}} 由宿主保留,写入被拒绝:第三方设置区块不能覆盖宿主共享凭据', en: 'Credential {{ref}} is reserved by the host; write rejected: third-party settings sections cannot overwrite host-shared credentials' },
|
|
1483
|
+
// /settings 里 sidePanel.panels 的勾选列表。
|
|
1484
|
+
'settings-panels-unclaimed': { zh: '暂无面板使用此 id:先保留,等插件注册后生效', en: 'No panel uses this id yet; kept until a plugin registers it' },
|
|
1485
|
+
'settings-panels-plugin': { zh: '插件面板({{plugin}})', en: 'Plugin panel ({{plugin}})' },
|
|
1486
|
+
'settings-panels-advanced': { zh: '高级:编辑原始面板列表', en: 'Advanced: edit raw panel list' },
|
|
1487
|
+
'settings-panels-min-one': { zh: '至少保留一个启用的面板', en: 'Keep at least one panel enabled' },
|
|
992
1488
|
'settings-hint-list': { zh: '**Enter** 进入/编辑/切换(改动即保存) · Esc 退出', en: '**Enter** open/edit/toggle (auto-saves) · Esc exit' },
|
|
993
1489
|
'settings-hint-group': { zh: '**Enter** 编辑/切换(改动即保存) · Esc 返回', en: '**Enter** edit/toggle (auto-saves) · Esc back' },
|
|
994
1490
|
'settings-hint-edit': { zh: '**Enter** 确认并保存 · Esc 取消', en: '**Enter** to confirm & save · Esc to cancel' },
|
|
@@ -1028,6 +1524,9 @@ const dict = {
|
|
|
1028
1524
|
'statusline-hint-shortcuts': { zh: '? 查看快捷键', en: '? for shortcuts' },
|
|
1029
1525
|
// ── 底栏字段 hover 明细(补充行读出;技术标签 ctx/free/read 等保持不译)──
|
|
1030
1526
|
'status-detail-session-id': { zh: '会话日志目录与此 id 同名', en: 'the session log directory is named after this id' },
|
|
1527
|
+
'status-detail-mode': { zh: '点击或 /permission 切换权限模式', en: 'click or /permission to switch the permission mode' },
|
|
1528
|
+
'status-detail-model': { zh: '点击或 /model 切换模型', en: 'click or /model to switch the model' },
|
|
1529
|
+
'status-detail-effort': { zh: '点击或 /effort 调整推理强度', en: 'click or /effort to adjust reasoning effort' },
|
|
1031
1530
|
'hint-ext-dialog-input': { zh: '**Enter** 确认 · Esc 取消', en: '**Enter** to confirm · Esc to cancel' },
|
|
1032
1531
|
'hint-adjust-done': { zh: '**←/→** 调整 · Enter/Esc 完成', en: '**←/→** to adjust · Enter/Esc to done' },
|
|
1033
1532
|
'hint-history-search': { zh: '↑/↓ 选择 · **Enter** 确认 · Esc 取消', en: '↑/↓ to navigate · **Enter** to select · Esc to cancel' },
|
|
@@ -1135,6 +1634,9 @@ const dict = {
|
|
|
1135
1634
|
'thinking-disabled': { zh: '隐藏', en: 'Hidden' },
|
|
1136
1635
|
'thinking-disabled-desc': { zh: '隐藏思考过程;模型仍会照常思考', en: 'Hide reasoning; the model will still think as usual' },
|
|
1137
1636
|
'thinking-label': { zh: '思考', en: 'Thinking' },
|
|
1637
|
+
// Thinking reported only as an estimated token count (no thinking text).
|
|
1638
|
+
'thinking-tokens-live': { zh: '思考中 · ~{{n}} tokens', en: 'Thinking · ~{{n}} tokens' },
|
|
1639
|
+
'thinking-tokens-done': { zh: '已思考 · ~{{n}} tokens', en: 'Thought · ~{{n}} tokens' },
|
|
1138
1640
|
// ── components/HistorySearchDialog.tsx ──────────────────────────────
|
|
1139
1641
|
'history-search-title': { zh: '搜索历史', en: 'Search history' },
|
|
1140
1642
|
'history-search-placeholder': { zh: '输入以搜索…', en: 'Type to search…' },
|
|
@@ -1204,7 +1706,12 @@ const dict = {
|
|
|
1204
1706
|
'approval-proceed': { zh: '要允许这次操作吗?', en: 'Allow this operation?' },
|
|
1205
1707
|
'approval-yes': { zh: '允许(仅本次)', en: 'Yes, allow once' },
|
|
1206
1708
|
'approval-no': { zh: '拒绝', en: 'No' },
|
|
1709
|
+
'approval-always': { zh: '允许,且不再询问', en: 'Yes, and don\'t ask again' },
|
|
1207
1710
|
'approval-hint': { zh: '↑/↓ 选择 · Enter 确认 · Esc 拒绝', en: '↑/↓ select · Enter confirm · Esc reject' },
|
|
1711
|
+
'approval-hint-feedback': { zh: '↑/↓/Tab 选择 · Enter 确认 · 选中拒绝后可输入理由 · Esc 拒绝', en: '↑/↓/Tab select · Enter confirm · on No, type a reason · Esc reject' },
|
|
1712
|
+
'approval-feedback-row': { zh: '{{label}}:{{reason}}', en: '{{label}}: {{reason}}' },
|
|
1713
|
+
'approval-subagent': { zh: '来自子代理 {{id}} 的请求', en: 'Requested by subagent {{id}}' },
|
|
1714
|
+
'approval-blocked-path': { zh: '涉及允许目录之外的路径:{{path}}', en: 'Outside the allowed directories: {{path}}' },
|
|
1208
1715
|
// ── components/Subagent*.tsx ────────────────────────────────────────
|
|
1209
1716
|
'subagent-model': { zh: '模型', en: 'Model' },
|
|
1210
1717
|
'subagent-duration': { zh: '时长', en: 'Duration' },
|
|
@@ -1221,8 +1728,6 @@ const dict = {
|
|
|
1221
1728
|
'subagent-dashboard-title': { zh: ' 子代理面板 ', en: ' Subagent Dashboard ' },
|
|
1222
1729
|
'subagent-dashboard-hint-basic': { zh: '↑/↓ 浏览 · Esc 关闭', en: '↑/↓ browse · Esc close' },
|
|
1223
1730
|
'subagent-dashboard-hint-detail': { zh: '↑/↓ 选择 · Enter 查看详情 · Esc 关闭', en: '↑/↓ select · Enter view detail · Esc close' },
|
|
1224
|
-
// 侧栏形态的 Esc 语义与整屏不同:让出焦点回聊天(面板不自己关侧栏)。
|
|
1225
|
-
'subagent-dashboard-hint-panel': { zh: '↑/↓ 选择 · Enter 查看详情 · Esc 回到聊天', en: '↑/↓ select · Enter view detail · Esc chat' },
|
|
1226
1731
|
'subagent-card-prefix': { zh: '子代理:', en: 'Subagent: ' },
|
|
1227
1732
|
'subagent-mode-continuable': { zh: '♻ 可继续', en: '♻ continuable' },
|
|
1228
1733
|
'subagent-mode-one-shot': { zh: '◇ 一次性', en: '◇ one-shot' },
|
|
@@ -1234,10 +1739,107 @@ const dict = {
|
|
|
1234
1739
|
'subagent-conclusion': { zh: '结论', en: 'Conclusion' },
|
|
1235
1740
|
'subagent-hint-fold': { zh: 'Enter 思考折叠', en: 'Enter thinking' },
|
|
1236
1741
|
'subagent-no-tools': { zh: '暂无工具调用', en: 'No tool calls' },
|
|
1742
|
+
'subagent-last-tool': { zh: '最近工具', en: 'last tool' },
|
|
1743
|
+
'subagent-tools-kept': { zh: '显示 {{kept}} 条记录(共 {{reported}} 次工具调用,其余未保留)', en: '{{kept}} records shown ({{reported}} tool uses in total; the rest were not kept)' },
|
|
1744
|
+
'subagent-tab-transcript': { zh: '转录', en: 'Transcript' },
|
|
1745
|
+
'subagent-transcript-loading': { zh: '正在读取子代理转录…', en: 'Reading the subagent transcript…' },
|
|
1746
|
+
'subagent-transcript-unavailable': { zh: '子代理转录暂时读不到', en: 'Subagent transcript unavailable' },
|
|
1747
|
+
'subagent-transcript-empty': { zh: '子代理转录为空', en: 'The subagent transcript is empty' },
|
|
1748
|
+
'subagent-transcript-history': { zh: '历史', en: 'history' },
|
|
1749
|
+
'subagent-transcript-live': { zh: '实时', en: 'live' },
|
|
1750
|
+
'subagent-transcript-readonly': { zh: '只读', en: 'read-only' },
|
|
1751
|
+
'subagent-transcript-load-older': { zh: '载入更早 {{count}} 条', en: 'Load {{count}} older' },
|
|
1752
|
+
'subagent-thinking-count-only': { zh: '思考内容不可见 · 约 {{tokens}} tokens', en: 'Thinking not shown · ~{{tokens}} tokens' },
|
|
1753
|
+
'subagent-thinking-unavailable': { zh: '思考内容不可见', en: 'Thinking not shown' },
|
|
1754
|
+
'subagent-transcript-retained': { zh: '已保留 {{count}} 条', en: '{{count}} lines retained' },
|
|
1755
|
+
'subagent-transcript-parent': { zh: '父代理 {{id}}', en: 'parent {{id}}' },
|
|
1756
|
+
'subagent-transcript-old-format': { zh: '旧格式:没有记录父代理,按深度 {{depth}} 显示', en: 'old format: no parent recorded; shown at depth {{depth}}' },
|
|
1237
1757
|
'subagent-hint-page': { zh: '切页', en: 'page' },
|
|
1238
1758
|
'subagent-hint-scroll': { zh: '滚动', en: 'scroll' },
|
|
1239
1759
|
'subagent-hint-back': { zh: '返回', en: 'back' },
|
|
1760
|
+
'subagent-hint-compose': { zh: '发消息', en: 'compose' },
|
|
1240
1761
|
'subagent-empty-hint': { zh: '让主代理发起 Task 后,子代理会出现在这里', en: 'Subagents appear here once the main agent starts Task delegations' },
|
|
1762
|
+
// ── agent team:子代理转录视图、发消息输入框、消息流 ──
|
|
1763
|
+
'agent-view-title': { zh: '子代理转录', en: 'Agent transcript' },
|
|
1764
|
+
'agent-view-readonly': { zh: '只读', en: 'read-only' },
|
|
1765
|
+
'agent-view-live': { zh: '实时', en: 'live' },
|
|
1766
|
+
'agent-view-history': { zh: '历史', en: 'history' },
|
|
1767
|
+
'agent-view-back': { zh: '返回来源', en: 'back to source' },
|
|
1768
|
+
'agent-view-open-action': { zh: '主屏查看', en: 'open in main view' },
|
|
1769
|
+
'agent-view-source-chat': { zh: '来自聊天', en: 'from chat' },
|
|
1770
|
+
'agent-view-source-dashboard': { zh: '来自代理面板', en: 'from agents panel' },
|
|
1771
|
+
'agent-view-source-detail': { zh: '来自详情', en: 'from detail' },
|
|
1772
|
+
'agent-view-source-card': { zh: '来自转录卡', en: 'from transcript card' },
|
|
1773
|
+
'agent-view-no-transcript': { zh: '此代理没有可查看的转录', en: 'No transcript for this agent' },
|
|
1774
|
+
'agent-view-retained-tail': { zh: '没有完整历史,只显示最近 {{count}} 条输出', en: 'No full history; showing the last {{count}} output lines' },
|
|
1775
|
+
// 转录视图右侧的工作台:信息、工具、父代理与同级切换
|
|
1776
|
+
'agent-view-panel-title': { zh: '工作台', en: 'workbench' },
|
|
1777
|
+
'agent-view-panel-metadata': { zh: '信息', en: 'metadata' },
|
|
1778
|
+
'agent-view-panel-tools': { zh: '工具', en: 'tools' },
|
|
1779
|
+
'agent-view-parent-context': { zh: '父代理与同级', en: 'parent & siblings' },
|
|
1780
|
+
'agent-view-field-status': { zh: '状态', en: 'status' },
|
|
1781
|
+
'agent-view-field-mode': { zh: '模式', en: 'mode' },
|
|
1782
|
+
'agent-view-field-model': { zh: '模型', en: 'model' },
|
|
1783
|
+
'agent-view-field-tokens': { zh: 'token', en: 'tokens' },
|
|
1784
|
+
'agent-view-field-duration': { zh: '时长', en: 'duration' },
|
|
1785
|
+
'agent-view-field-run': { zh: '运行', en: 'run' },
|
|
1786
|
+
'agent-view-field-session': { zh: '会话', en: 'session' },
|
|
1787
|
+
'agent-view-field-depth': { zh: '深度', en: 'depth' },
|
|
1788
|
+
'agent-view-tools-none': { zh: '无工具记录', en: 'no tool records' },
|
|
1789
|
+
'agent-view-tools-reported': { zh: '共 {{reported}} 次 · 显示 {{kept}}', en: '{{reported}} in total · {{kept}} shown' },
|
|
1790
|
+
'agent-view-tools-more': { zh: '还有 {{count}} 条', en: '{{count}} more' },
|
|
1791
|
+
'agent-view-parent-main': { zh: '↑ 主循环', en: '↑ main loop' },
|
|
1792
|
+
'agent-view-parent-unknown': { zh: '父代理未知', en: 'parent unknown' },
|
|
1793
|
+
'agent-view-parent-agent': { zh: '父代理 {{id}}', en: 'parent {{id}}' },
|
|
1794
|
+
'agent-view-parent-not-in-roster': { zh: '父代理 {{id}}(不在当前列表)', en: 'parent {{id}} (not in the list)' },
|
|
1795
|
+
'agent-view-siblings-none': { zh: '没有同级代理', en: 'no siblings' },
|
|
1796
|
+
'agent-view-siblings-more': { zh: '还有 {{count}} 个同级', en: '{{count}} more siblings' },
|
|
1797
|
+
'agent-view-select-sibling': { zh: 'Tab 工作台 · 切换同级', en: 'Tab workbench · switch siblings' },
|
|
1798
|
+
'agent-view-select-sibling-focused': { zh: '↑↓ 选择 · ⏎ 切换 · Esc 退出面板', en: '↑↓ select · ⏎ switch · Esc leave panel' },
|
|
1799
|
+
// 代理面板里「其他会话的代理」一栏
|
|
1800
|
+
'agents-peers-title': { zh: '其他会话的代理', en: 'agents in other sessions' },
|
|
1801
|
+
'agents-peers-empty': { zh: '列表为空', en: 'none' },
|
|
1802
|
+
'agents-peers-note': { zh: '无法从这里给其他会话的代理发消息', en: 'agents in other sessions cannot be messaged from here' },
|
|
1803
|
+
'subagent-count-nested': { zh: '嵌套', en: 'nested' },
|
|
1804
|
+
'subagent-nested-mark': { zh: '嵌套子代理', en: 'nested subagent' },
|
|
1805
|
+
'agent-message-source-user': { zh: '用户', en: 'user' },
|
|
1806
|
+
'agent-message-source-parent': { zh: '父代理', en: 'parent' },
|
|
1807
|
+
'agent-message-source-child': { zh: '子代理', en: 'child' },
|
|
1808
|
+
'agent-message-from-to': { zh: '{{from}} → {{to}}', en: '{{from}} → {{to}}' },
|
|
1809
|
+
'agent-message-unknown-target': { zh: '收发方未知', en: 'unknown sender/recipient' },
|
|
1810
|
+
'agent-message-no-delivery-fact': { zh: '送达状态未知', en: 'delivery status unknown' },
|
|
1811
|
+
'agent-message-delivery-issued': { zh: '已发出', en: 'issued' },
|
|
1812
|
+
'agent-message-delivery-queued': { zh: '已入队', en: 'queued' },
|
|
1813
|
+
'agent-message-delivery-delivered': { zh: '已送达', en: 'delivered' },
|
|
1814
|
+
'agent-message-delivery-held': { zh: '暂扣', en: 'held' },
|
|
1815
|
+
'agent-message-delivery-refused': { zh: '已拒收', en: 'refused' },
|
|
1816
|
+
'agent-message-delivery-expired': { zh: '已过期', en: 'expired' },
|
|
1817
|
+
'agent-message-delivery-unknown': { zh: '未知', en: 'unknown' },
|
|
1818
|
+
'agent-message-via-parent-mediated': { zh: '经父代理转发', en: 'via parent relay' },
|
|
1819
|
+
'agent-message-via-direct-continuable': { zh: '直发子代理', en: 'direct to child' },
|
|
1820
|
+
'agent-message-via-agent-relay': { zh: '代理中继', en: 'agent relay' },
|
|
1821
|
+
'agent-message-compose-title': { zh: '发送给 {{name}}', en: 'Send to {{name}}' },
|
|
1822
|
+
'agent-message-submitted': { zh: '最近发送', en: 'submitted' },
|
|
1823
|
+
'agent-message-inbox-note': { zh: '已送进对方收件箱,不代表已读或已执行', en: 'in the inbox; not necessarily read or acted on' },
|
|
1824
|
+
'agent-message-unavailable': { zh: '当前无法发送', en: 'sending is unavailable right now' },
|
|
1825
|
+
'agent-message-target-ambiguous': { zh: '有同名代理,按 id {{id}} 区分', en: 'duplicate names; told apart by id {{id}}' },
|
|
1826
|
+
'agent-message-target-nameless': { zh: '此代理没有可用的名称,无法发送', en: 'this agent has no name to address; cannot send' },
|
|
1827
|
+
'agent-message-target-not-resumable': { zh: '目标代理已无法恢复', en: 'target cannot be resumed' },
|
|
1828
|
+
'agent-message-parent-unavailable': { zh: '父代理不可用,未发送', en: 'parent unavailable; not sent' },
|
|
1829
|
+
'agent-message-unauthorized': { zh: '没有向该代理发消息的权限', en: 'not allowed to message this agent' },
|
|
1830
|
+
'agent-message-delivery-unavailable': { zh: '当前无法投递给目标代理', en: 'delivery to the target is unavailable' },
|
|
1831
|
+
'send-message-card-resuming': { zh: '唤醒中', en: 'resuming' },
|
|
1832
|
+
'send-message-card-resumed': { zh: '已唤醒 {{id}}', en: 'resumed {{id}}' },
|
|
1833
|
+
'send-message-card-args': { zh: '── 参数 ──', en: '── args ──' },
|
|
1834
|
+
'send-message-card-result': { zh: '── 结果 ──', en: '── result ──' },
|
|
1835
|
+
'send-message-card-summary-label': { zh: '摘要', en: 'summary' },
|
|
1836
|
+
'agent-message-dispatch-failed': { zh: '发送失败', en: 'dispatch failed' },
|
|
1837
|
+
'agent-message-parent-interrupted': { zh: '父回合被中断,未送达', en: 'parent turn interrupted; not delivered' },
|
|
1838
|
+
'agent-message-draft-retained': { zh: '草稿已保留', en: 'draft retained' },
|
|
1839
|
+
'agent-message-hint-queue': { zh: 'Enter 发送(排在父代理当前回合之后,不打断)· Esc 退出输入', en: 'Enter send (after the parent\'s current turn, no interrupt) · Esc leave input' },
|
|
1840
|
+
'agent-message-hint-queue-steer': { zh: 'Enter 排队 · Ctrl+Enter 插话 · Esc 退出输入', en: 'Enter queue · Ctrl+Enter steer · Esc leave input' },
|
|
1841
|
+
'agent-message-hint-nameless': { zh: '此代理没有名称:只能查看,不能发送', en: 'nameless agent: view only, cannot send' },
|
|
1842
|
+
'agent-messages-tab': { zh: '消息', en: 'Messages' },
|
|
1241
1843
|
// ── background jobs (ctx.jobs): JobCard / JobsPanel / status chip ─────
|
|
1242
1844
|
'jobs-card-prefix': { zh: '任务:', en: 'job: ' },
|
|
1243
1845
|
'jobs-status-running': { zh: '运行中', en: 'running' },
|
|
@@ -1251,21 +1853,40 @@ const dict = {
|
|
|
1251
1853
|
'jobs-panel-count-failed': { zh: '失败', en: 'failed' },
|
|
1252
1854
|
'jobs-panel-empty': { zh: '当前会话暂无后台任务', en: 'No background jobs in the current session' },
|
|
1253
1855
|
'jobs-panel-empty-hint': { zh: '后台运行的命令(run_in_background)会出现在这里', en: 'Commands the agent runs in the background appear here' },
|
|
1254
|
-
'jobs-panel-hint': { zh: '↑/↓
|
|
1856
|
+
'jobs-panel-hint': { zh: '↑/↓ 选择 · e 展开/收起 · k 两次停止 · Esc 关闭', en: '↑/↓ select · e expand/fold · press k twice to stop · Esc close' },
|
|
1255
1857
|
'jobs-kill-armed': { zh: '再按 k 确认停止', en: 'press k again to confirm' },
|
|
1256
1858
|
'jobs-panel-started': { zh: '开始', en: 'started' },
|
|
1257
1859
|
'jobs-panel-finished': { zh: '结束', en: 'finished' },
|
|
1258
|
-
'jobs-panel-
|
|
1860
|
+
'jobs-panel-context-title': { zh: '后台任务 {{id}}', en: 'Background job {{id}}' },
|
|
1861
|
+
'jobs-panel-context-heading': { zh: '后台任务 {{id}}({{status}})', en: 'Background job {{id}} ({{status}})' },
|
|
1862
|
+
'jobs-panel-context-command': { zh: '命令:{{command}}', en: 'Command: {{command}}' },
|
|
1863
|
+
'jobs-panel-context-output': { zh: '输出(末 {{n}} 行):', en: 'Output (last {{n}} lines):' },
|
|
1864
|
+
'jobs-panel-context-no-output': { zh: '(暂无输出)', en: '(no output yet)' },
|
|
1259
1865
|
'jobs-panel-output': { zh: '输出', en: 'output' },
|
|
1260
1866
|
'jobs-panel-output-at': { zh: '输出更新于', en: 'output updated' },
|
|
1261
1867
|
'jobs-panel-no-output-yet': { zh: '(暂无镜像输出——agent 读取后显示)', en: '(no mirrored output yet — appears when the agent reads it)' },
|
|
1262
1868
|
'jobs-output-gap': { zh: '……较早的输出已丢弃……', en: '……earlier output discarded……' },
|
|
1263
1869
|
'jobs-output-dropped': { zh: '部分输出未保留', en: 'some output not retained' },
|
|
1870
|
+
// jobs 详情:最近进度、时间线、只保留尾部输出的说明。进度文本原样显示,
|
|
1871
|
+
// 不解析成百分比。
|
|
1872
|
+
'jobs-progress-latest': { zh: '进度', en: 'progress' },
|
|
1873
|
+
'jobs-progress-updated-at': { zh: '更新 {{time}}', en: 'updated {{time}}' },
|
|
1874
|
+
'jobs-progress-source': { zh: '来源 {{source}}', en: 'source {{source}}' },
|
|
1875
|
+
'jobs-timeline': { zh: '时间线(最近)', en: 'timeline (latest)' },
|
|
1876
|
+
'jobs-timeline-started': { zh: '启动', en: 'started' },
|
|
1877
|
+
'jobs-timeline-progress': { zh: '进度', en: 'progress' },
|
|
1878
|
+
'jobs-timeline-output': { zh: '输出', en: 'output' },
|
|
1879
|
+
'jobs-timeline-gap': { zh: '缺口', en: 'gap' },
|
|
1880
|
+
'jobs-timeline-settled': { zh: '结束', en: 'ended' },
|
|
1881
|
+
'jobs-timeline-gap-count': { zh: '输出缺口 {{n}} 处', en: '{{n}} output gaps' },
|
|
1882
|
+
'jobs-timeline-events-unavailable': { zh: '时间线不可用(任务在本次启动前就已开始)', en: 'timeline unavailable (the job started before this launch)' },
|
|
1883
|
+
'jobs-output-retained-tail': { zh: '仅保留最近 {{n}} 行', en: 'last {{n}} lines retained' },
|
|
1264
1884
|
'jobs-output-spill': { zh: '完整输出落盘:{{path}}', en: 'full output retained at: {{path}}' },
|
|
1265
1885
|
'jobs-toast-completed': { zh: '后台任务完成:{{label}}({{id}} · 用时 {{duration}})', en: 'Background job completed: {{label}} ({{id}} · {{duration}})' },
|
|
1266
1886
|
'jobs-toast-failed': { zh: '后台任务失败:{{label}}({{id}} · {{detail}})', en: 'Background job failed: {{label}} ({{id}} · {{detail}})' },
|
|
1267
1887
|
'jobs-toast-killed': { zh: '后台任务已停止:{{label}}({{id}} · 用时 {{duration}})', en: 'Background job killed: {{label}} ({{id}} · {{duration}})' },
|
|
1268
1888
|
'jobs-kill-failed': { zh: '无法停止任务 {{id}}(任务不存在或任务服务未挂载)', en: 'Could not kill job {{id}} (unknown job or jobs service not mounted)' },
|
|
1889
|
+
'jobs-detail-unknown': { zh: '状态未知', en: 'status unknown' },
|
|
1269
1890
|
'jobs-steer-killed': { zh: '我通过 /jobs 面板停止了后台任务 {{id}}({{label}})', en: 'I killed background job {{id}} ({{label}}) via the /jobs panel' },
|
|
1270
1891
|
// 连续任务卡成组(JobGroupHeader):一批 run_in_background 连着落下时,
|
|
1271
1892
|
// 组头一行汇总整组、组内不再互相空行;全组落定后整组折叠成这一行。
|
|
@@ -1310,6 +1931,37 @@ const dict = {
|
|
|
1310
1931
|
'provider-discovery-running': { zh: '正在探测该端点公布的模型…', en: 'Discovering the models this endpoint advertises…' },
|
|
1311
1932
|
'provider-discovery-failed': { zh: '模型探测失败,改为手动输入模型 id', en: 'Model discovery failed — enter model ids manually instead' },
|
|
1312
1933
|
'provider-q-models': { zh: '选择要启用的模型(可在输入行逗号分隔补充)', en: 'Select the models to enable (add more comma-separated on the input row)' },
|
|
1934
|
+
'provider-model-edit-hint': { zh: '聚焦模型 / 输入自定义 id 后按 Tab 编辑能力', en: 'Tab edits the focused model or last manual id' },
|
|
1935
|
+
'provider-model-editor-title': { zh: '编辑模型能力', en: 'Edit model capabilities' },
|
|
1936
|
+
'provider-model-context-window': { zh: '上下文窗口', en: 'Context window' },
|
|
1937
|
+
'provider-model-max-tokens': { zh: '最大输出 token', en: 'Max output tokens' },
|
|
1938
|
+
'provider-model-reasoning-efforts': { zh: '支持的推理档位', en: 'Supported reasoning efforts' },
|
|
1939
|
+
'provider-model-multimodal': { zh: '多模态(图片)', en: 'Multimodal (images)' },
|
|
1940
|
+
'provider-model-multimodal-short': { zh: '图片', en: 'image' },
|
|
1941
|
+
'provider-model-save': { zh: '保存能力草稿', en: 'Save capability draft' },
|
|
1942
|
+
'provider-model-save-short': { zh: '保存', en: 'save' },
|
|
1943
|
+
'provider-model-enter-to-save': { zh: 'Enter 保存', en: 'Enter saves' },
|
|
1944
|
+
'provider-model-inherit': { zh: '继承默认', en: 'Inherit default' },
|
|
1945
|
+
'provider-model-default-capacity': { zh: '目录/端点公布:{{n}}', en: 'Catalog/endpoint reports: {{n}}' },
|
|
1946
|
+
'provider-model-default-image': { zh: '继承默认 · 文本+图片', en: 'Inherit · text+images' },
|
|
1947
|
+
'provider-model-default-text': { zh: '继承默认 · 仅文本', en: 'Inherit · text only' },
|
|
1948
|
+
'provider-model-input-image': { zh: '是 · 文本+图片', en: 'Yes · text+images' },
|
|
1949
|
+
'provider-model-input-text': { zh: '否 · 仅文本', en: 'No · text only' },
|
|
1950
|
+
'provider-model-capacity-hint': { zh: '正整数/K/M;留空恢复继承', en: 'Positive tokens / K / M; blank inherits' },
|
|
1951
|
+
'provider-model-reasoning-hint': { zh: 'none 禁用 · 如 off,low,high,max=ultra', en: 'none disables · e.g. off,low,high,max=ultra' },
|
|
1952
|
+
'provider-model-input-hint': { zh: '←/→ 或空格切换;目前支持文本/图片', en: '←/→ or Space changes text/image support' },
|
|
1953
|
+
'provider-model-capacity-invalid': { zh: '容量必须为正的安全整数(支持 K/M)', en: 'Capacity must be a positive safe integer (K/M supported)' },
|
|
1954
|
+
'provider-model-reasoning-invalid': { zh: '档位须为 off/minimal/low/medium/high/xhigh/max;不能重复或只含 off', en: 'Use off/minimal/low/medium/high/xhigh/max; no duplicates or off-only list' },
|
|
1955
|
+
'provider-model-input-invalid': { zh: '至少保留文本或图片输入', en: 'Keep at least one text or image input modality' },
|
|
1956
|
+
'provider-model-field-too-long': { zh: '字段最多 {{n}} 个字符', en: 'Field limit: {{n}} characters' },
|
|
1957
|
+
'provider-model-paste-text-only': { zh: '此字段只接受文本粘贴', en: 'This field only accepts text paste' },
|
|
1958
|
+
'provider-model-reasoning-unavailable': { zh: '推理档位编辑需要 DSH 0.2.0-rc.1+', en: 'Reasoning effort editing requires DSH 0.2.0-rc.1+' },
|
|
1959
|
+
'provider-model-reasoning-unavailable-short': { zh: '上游版本不支持', en: 'unsupported by host' },
|
|
1960
|
+
'provider-model-override-unavailable': { zh: '保持整个 catalog 时的单模型覆盖需要 DSH 0.2.0-rc.2+;请更新 DSH 后重试', en: 'Per-model overrides while keeping the full catalog require DSH 0.2.0-rc.2+; update DSH and retry' },
|
|
1961
|
+
'provider-model-edited': { zh: '(能力已编辑)', en: '(capabilities edited)' },
|
|
1962
|
+
'provider-models-stored-only': { zh: '模型探测失败,仍可编辑已有模型的能力', en: 'Discovery failed; stored model capabilities are still editable' },
|
|
1963
|
+
'provider-line-model-capabilities': { zh: '能力覆盖:{{models}}', en: 'Capability overrides: {{models}}' },
|
|
1964
|
+
'hint-provider-model-editor': { zh: '↑/↓/Tab 字段 · Enter 保存 · Esc 返回', en: '↑/↓/Tab fields · Enter save · Esc back' },
|
|
1313
1965
|
'provider-q-models-fallback': { zh: '输入模型 id(逗号分隔)', en: 'Enter model ids (comma-separated)' },
|
|
1314
1966
|
'provider-models-required': { zh: '自定义端点至少需要一个模型 id', en: 'A custom endpoint needs at least one model id' },
|
|
1315
1967
|
'provider-q-confirm': { zh: '确认写入该 provider 配置?', en: 'Write this provider configuration?' },
|
|
@@ -1455,8 +2107,8 @@ const dict = {
|
|
|
1455
2107
|
},
|
|
1456
2108
|
'cmd-desc-resume': { zh: '恢复历史会话' },
|
|
1457
2109
|
'cmd-desc-agentview': { zh: '打开会话总览' },
|
|
1458
|
-
'cmd-desc-bg': { zh: '
|
|
1459
|
-
'cmd-desc-background': { zh: '
|
|
2110
|
+
'cmd-desc-bg': { zh: '打开会话总览(DSH 先转后台)' },
|
|
2111
|
+
'cmd-desc-background': { zh: '打开会话总览(DSH 先转后台)' },
|
|
1460
2112
|
'cmd-desc-rename': { zh: '重命名当前会话' },
|
|
1461
2113
|
'cmd-desc-recap': { zh: '生成最近会话活动摘要(可应用建议标题)' },
|
|
1462
2114
|
'cmd-desc-quit': { zh: '退出 dsh-tui' },
|
|
@@ -1479,6 +2131,8 @@ const dict = {
|
|
|
1479
2131
|
'cmd-desc-agents': { zh: '查看本会话的子代理' },
|
|
1480
2132
|
'cmd-desc-jobs': { zh: '查看本会话的后台任务' },
|
|
1481
2133
|
'cmd-desc-panel': { zh: '侧栏面板:开关 / 聚焦 / 缩放 / 切换', en: 'Side panel: toggle / focus / zoom / switch' },
|
|
2134
|
+
'cmd-desc-kernel': { zh: '选择内核(切换后重启进入)', en: 'Choose the kernel (restarts into it)' },
|
|
2135
|
+
'cmd-desc-channel': { zh: '渠道档案:切换 / 导入 / 查看映射(Claude)', en: 'Channel profiles: switch / import / view mappings (Claude)' },
|
|
1482
2136
|
// Side panel(侧栏)
|
|
1483
2137
|
'panel-title-todo': { zh: '待办', en: 'Todo' },
|
|
1484
2138
|
'panel-title-jobs': { zh: '任务', en: 'Jobs' },
|
|
@@ -1487,8 +2141,38 @@ const dict = {
|
|
|
1487
2141
|
'panel-title-trajectory': { zh: '轨迹', en: 'Trajectory' },
|
|
1488
2142
|
'panel-title-info': { zh: '信息', en: 'Info' },
|
|
1489
2143
|
'panel-title-workspace': { zh: '工作区', en: 'Workspace' },
|
|
2144
|
+
// 面板一句话描述:/settings 的 sidePanel.panels 勾选行用(panel-desc-<id>)。
|
|
2145
|
+
'panel-desc-todo': { zh: '目标与待办清单,Enter 勾选完成', en: 'Goal and todo checklist; Enter ticks items done' },
|
|
2146
|
+
'panel-desc-info': { zh: '模型、上下文与消耗的信息栏', en: 'Model, context and cost readout' },
|
|
2147
|
+
'panel-desc-trajectory': { zh: '回合轨迹:耗时、工具与重试', en: 'Per-turn trace: timing, tools, retries' },
|
|
2148
|
+
'panel-desc-jobs': { zh: '后台任务名册与实时输出', en: 'Background jobs roster and live output' },
|
|
2149
|
+
'panel-desc-agents': { zh: '子代理列表与详情', en: 'Subagent list and detail' },
|
|
2150
|
+
'panel-desc-workspace': { zh: '工作区目录与最近会话', en: 'Workspace directories and recent sessions' },
|
|
2151
|
+
'panel-desc-btw': { zh: '侧问线程:不打断主线的旁路问答', en: 'btw threads: side questions without derailing' },
|
|
2152
|
+
'panel-desc-companion': { zh: '桌面宠物:状态、互动与通知气泡', en: 'Desktop pet: mood, interactions, notice bubbles' },
|
|
1490
2153
|
'panel-trajectory-empty': { zh: '本次会话还没有轨迹:发出第一条消息后,这里会画出唤醒带与账本。', en: 'No trajectory yet — the wake band and ledger appear once this session has turns.' },
|
|
1491
2154
|
'panel-trajectory-hint': { zh: '↑/↓ 选中 · Enter 展开 · Tab 热点 · ⤢ 全屏', en: '↑/↓ select · Enter expand · Tab hotspots · ⤢ fullscreen' },
|
|
2155
|
+
// 内核不提供轨迹数据时的说明,与上面的「还没有轨迹」是两种状态:这里不承诺
|
|
2156
|
+
// 下一回合会有数据。
|
|
2157
|
+
'trajectory-unsupported': { zh: '当前内核不提供轨迹数据,本会话没有可显示的时间线。', en: 'This kernel provides no trajectory data; there is no session timeline to show.' },
|
|
2158
|
+
'trajectory-unsupported-fullscreen': { zh: '当前内核没有轨迹数据,⤢ 全屏不可用。', en: 'This kernel has no trajectory data, so ⤢ fullscreen is unavailable.' },
|
|
2159
|
+
'trajectory-unsupported-exit': { zh: 'q / Esc 返回对话', en: 'q / Esc to return' },
|
|
2160
|
+
// 事件本身没有时间戳时,行时间取收到事件的时刻,检查器要注明。
|
|
2161
|
+
'trajectory-time-observed': { zh: '时间为收到事件的时刻', en: 'time is when the event was received' },
|
|
2162
|
+
// 审批/问卷等待段的已等待时长;事件原文已被压缩时的说明。
|
|
2163
|
+
'trajectory-wait-elapsed': { zh: '已等待 {{duration}}', en: 'waiting {{duration}}' },
|
|
2164
|
+
'trajectory-inspect-unavailable': { zh: '事件原文已读不到(可能已被压缩)', en: 'source event no longer readable (likely compacted)' },
|
|
2165
|
+
// 按代理过滤轨迹:范围标签(当前代理 / 父回合 / 全部后代)与按键提示。
|
|
2166
|
+
'trajectory-view-agent': { zh: '代理 {{label}}', en: 'agent {{label}}' },
|
|
2167
|
+
'trajectory-view-parent': { zh: '父回合 {{turn}}', en: 'parent turn {{turn}}' },
|
|
2168
|
+
'trajectory-view-descendants': { zh: '后代 {{label}}', en: 'descendants {{label}}' },
|
|
2169
|
+
'trajectory-drill-hint': { zh: 'a 只看该代理', en: 'a focus this agent' },
|
|
2170
|
+
'trajectory-scope-hint-panel': { zh: 'a 切换范围', en: 'a cycle scope' },
|
|
2171
|
+
'trajectory-scope-hint': { zh: 'a 切换范围 · Esc 返回会话', en: 'a cycle scope · Esc back to session' },
|
|
2172
|
+
// 全屏轨迹标注数据来源:DSH 会话日志,或其他内核的会话事件。
|
|
2173
|
+
'trajectory-backend-label': { zh: '轨迹源:{{name}}', en: 'trajectory source: {{name}}' },
|
|
2174
|
+
'trajectory-backend-dsh': { zh: 'DSH 会话日志', en: 'DSH session log' },
|
|
2175
|
+
'trajectory-backend-agent-events': { zh: '会话事件', en: 'session events' },
|
|
1492
2176
|
'info-section-session': { zh: '会话', en: 'Session' },
|
|
1493
2177
|
'info-section-model': { zh: '模型', en: 'Model' },
|
|
1494
2178
|
'info-section-context': { zh: '上下文', en: 'Context' },
|
|
@@ -1661,7 +2345,7 @@ const dict = {
|
|
|
1661
2345
|
},
|
|
1662
2346
|
// Tips 前缀(第三版:● 彩色圆点 + Tips: 前缀,整行居中)。
|
|
1663
2347
|
'launchpad-tip-prefix': { zh: 'Tips:', en: 'Tips: ' },
|
|
1664
|
-
//
|
|
2348
|
+
// 入口行:Continue(条件) · 会话与工作区 · 设置 · 内核 · 条件位。
|
|
1665
2349
|
// (launchpad-action-theme / -lang 三键早已删;第六版的 -sessions / -workspace
|
|
1666
2350
|
// / -doctor / -setup / -setup-provider 五键随第七版合并/移除一并删除——
|
|
1667
2351
|
// 历史会话与工作区合并成 -sessions-workspace,doctor 入口退役,首启由
|
|
@@ -1670,11 +2354,173 @@ const dict = {
|
|
|
1670
2354
|
'launchpad-action-continue-titled': { zh: '继续「{{title}}」', en: 'Continue "{{title}}"' },
|
|
1671
2355
|
'launchpad-action-sessions-workspace': { zh: '会话与工作区', en: 'Sessions & workspaces' },
|
|
1672
2356
|
'launchpad-action-settings': { zh: '设置', en: 'Settings' },
|
|
2357
|
+
// 内核入口;{{name}} 是品牌名(DSH / Claude),不翻译。
|
|
2358
|
+
'launchpad-action-backend': { zh: '内核', en: 'Kernel' },
|
|
2359
|
+
'launchpad-action-backend-named': { zh: '内核 · {{name}}', en: 'Kernel · {{name}}' },
|
|
1673
2360
|
'launchpad-action-help': { zh: '帮助', en: 'Help' },
|
|
1674
2361
|
// 条件位(优先级 jobs > update > star > help,见 launchpadActions.ts)。
|
|
1675
2362
|
'launchpad-action-jobs': { zh: '后台任务', en: 'Background jobs' },
|
|
1676
2363
|
'launchpad-action-update': { zh: '有新版本', en: 'Update available' },
|
|
1677
2364
|
'launchpad-action-star': { zh: '投喂一颗 Star', en: 'Feed us a star' },
|
|
2365
|
+
// 内核选择器:行标签、不可选原因、切换重启提示。
|
|
2366
|
+
'kernel-label-dsh': { zh: 'DeepSeek Harness', en: 'DeepSeek Harness' },
|
|
2367
|
+
'kernel-label-claude': { zh: 'Claude Agent', en: 'Claude Agent' },
|
|
2368
|
+
'kernel-label-codex': { zh: 'Codex', en: 'Codex' },
|
|
2369
|
+
'kernel-login-in-session': { zh: '未登录 · 启动后用 /login 登录', en: 'Not signed in · sign in with /login after start' },
|
|
2370
|
+
'kernel-unavailable-not-installed': { zh: '未安装', en: 'Not installed' },
|
|
2371
|
+
'kernel-unavailable-auth-missing': { zh: '未登录', en: 'Not signed in' },
|
|
2372
|
+
'kernel-unavailable-too-old': { zh: '版本过旧 · 需升级', en: 'Too old · upgrade needed' },
|
|
2373
|
+
'kernel-switch-restarting': { zh: '正在以 {{name}} 内核重启…', en: 'Restarting on the {{name}} kernel…' },
|
|
2374
|
+
// 切换内核时的过场行。failed/crashed 由旧进程报告新进程的结局;安全模式
|
|
2375
|
+
// 提示只跟在失败之后。
|
|
2376
|
+
'kernel-handoff-starting': { zh: '正在切换到 {{name}},启动新会话…', en: 'Switching to {{name}} and starting a new session…' },
|
|
2377
|
+
'kernel-handoff-session-kept': { zh: '当前会话仍保留,可随时切回', en: 'The current session is preserved; switch back anytime' },
|
|
2378
|
+
'kernel-handoff-stage-start': { zh: '正在启动 {{name}}…', en: 'Starting {{name}}…' },
|
|
2379
|
+
'kernel-handoff-failed': { zh: '切换未完成({{reason}})。当前会话仍保留。', en: 'Switch did not complete ({{reason}}). The current session is preserved.' },
|
|
2380
|
+
'kernel-handoff-failed-reason-boot': { zh: '新会话启动失败', en: 'the new session failed to start' },
|
|
2381
|
+
'kernel-handoff-failed-reason-spawn': { zh: '无法启动替换进程', en: 'could not spawn the replacement process' },
|
|
2382
|
+
'kernel-handoff-crashed': { zh: '新会话异常退出(代码 {{code}})。', en: 'The new session exited abnormally (code {{code}}).' },
|
|
2383
|
+
'kernel-handoff-safe-hint': { zh: '可运行 dsh-tui safe 进入安全模式诊断。', en: 'Run dsh-tui safe for read-only diagnostics.' },
|
|
2384
|
+
'kernel-picker-title': { zh: '选择内核', en: 'Choose kernel' },
|
|
2385
|
+
'kernel-probing': { zh: '检测中…', en: 'Checking…' },
|
|
2386
|
+
'kernel-already-current': { zh: '已经是当前内核', en: 'Already the current kernel' },
|
|
2387
|
+
'kernel-switch-unavailable': { zh: '当前环境不支持切换内核', en: 'Switching kernels is unavailable here' },
|
|
2388
|
+
'kernel-switch-while-working': { zh: '回合运行中,无法切换内核', en: 'Cannot switch kernels while a turn is running' },
|
|
2389
|
+
'kernel-memory-fallback': {
|
|
2390
|
+
zh: '上次选择的 {{name}} 内核启动失败,已先以 DSH 内核启动:{{reason}}',
|
|
2391
|
+
en: 'The remembered {{name}} kernel failed to start; booted on DSH instead: {{reason}}',
|
|
2392
|
+
},
|
|
2393
|
+
'kernel-pinned-hint': {
|
|
2394
|
+
zh: '启动参数已指定内核:本次会按你的选择重启,下次直接启动仍按参数进入。',
|
|
2395
|
+
en: 'A startup flag pins the kernel: this restart follows your choice, a later direct launch follows the flag.',
|
|
2396
|
+
},
|
|
2397
|
+
// SDK 安装向导(内核选择器「未安装」行 Enter 进入):确认、安装中、结果
|
|
2398
|
+
// 与手动兜底。{{dir}} 是 profile 目录,{{specifier}} 是锁定版本的完整包名。
|
|
2399
|
+
'kernel-not-installed-installable': { zh: '未安装 · 按 Enter 安装', en: 'Not installed · Enter to install' },
|
|
2400
|
+
'sdk-install-title': { zh: '安装 Claude 内核', en: 'Install the Claude kernel' },
|
|
2401
|
+
'sdk-install-confirm-what': { zh: '将安装 Claude Agent SDK {{version}}(内置 Claude Code CLI)', en: 'This installs Claude Agent SDK {{version}} (bundles the Claude Code CLI)' },
|
|
2402
|
+
'sdk-install-confirm-where': { zh: '安装位置:{{dir}}', en: 'Install location: {{dir}}' },
|
|
2403
|
+
'sdk-install-confirm-note': {
|
|
2404
|
+
zh: '只装进 dsh-tui 自己的目录:版本经过验证、不随全局变化;PATH 上已有的 Claude Code 会优先使用,不受影响。需要网络与 pnpm。',
|
|
2405
|
+
en: 'Installs only into the dsh-tui directory: the version is validated and never follows your global one; a Claude Code already on PATH is used first and is not touched. Needs network and pnpm.',
|
|
2406
|
+
},
|
|
2407
|
+
'sdk-install-confirm-hint': { zh: '**Enter** 安装 · Esc 返回', en: '**Enter** install · Esc back' },
|
|
2408
|
+
'sdk-install-checking': { zh: '正在检查 pnpm…', en: 'Checking pnpm…' },
|
|
2409
|
+
'sdk-install-running': { zh: '正在安装,可能需要一分钟…', en: 'Installing… this can take a minute' },
|
|
2410
|
+
'sdk-install-running-sub': { zh: 'Esc 取消', en: 'Esc to cancel' },
|
|
2411
|
+
'sdk-install-done': { zh: 'SDK 安装完成,Claude 内核已可用。', en: 'SDK installed — the Claude kernel is ready.' },
|
|
2412
|
+
'sdk-install-done-hint': { zh: '**Enter** 返回内核选择 · Esc 关闭', en: '**Enter** back to the kernel picker · Esc close' },
|
|
2413
|
+
'sdk-install-failed': { zh: '安装失败(pnpm 退出码 {{code}})。可手动安装:', en: 'Install failed (pnpm exit code {{code}}). Manual install:' },
|
|
2414
|
+
'sdk-install-manual': { zh: '{{command}}', en: '{{command}}' },
|
|
2415
|
+
'sdk-install-failed-hint': { zh: 'r 重试 · Esc 返回', en: 'r retry · Esc back' },
|
|
2416
|
+
'sdk-install-pnpm-missing': { zh: '未检测到 pnpm。先运行 npm install -g pnpm 再回来重试,或手动安装:', en: 'pnpm was not found. Run npm install -g pnpm first and retry, or install manually:' },
|
|
2417
|
+
'sdk-install-cancelled': { zh: '已取消安装。', en: 'Install cancelled.' },
|
|
2418
|
+
'sdk-install-no-target-standalone': {
|
|
2419
|
+
zh: '当前是独立构建,没有可安装的 profile 目录;一键安装暂不支持。',
|
|
2420
|
+
en: 'This is a standalone build — there is no profile directory to install into; one-click install is unavailable here.',
|
|
2421
|
+
},
|
|
2422
|
+
'sdk-install-no-target-no-profile': {
|
|
2423
|
+
zh: '本次启动未关联 dsh profile(源码运行或 --config 启动),没有可安装的目录;请用 dsh --profile 启动后重试。',
|
|
2424
|
+
en: 'This launch has no dsh profile (source checkout or --config start), so there is no install directory; launch via dsh --profile and retry.',
|
|
2425
|
+
},
|
|
2426
|
+
'sdk-install-exit-hint': { zh: 'Esc 返回', en: 'Esc back' },
|
|
2427
|
+
// 渠道档案(/channel,仅 Claude 内核):选择器、动作行、切换/导入反馈、映射明细。
|
|
2428
|
+
'channel-picker-title': { zh: '渠道档案', en: 'Channel profiles' },
|
|
2429
|
+
'channel-empty-hint': {
|
|
2430
|
+
zh: '还没有渠道:从 settings.json 导入一个,或直接编辑 channels.json(路径见「查看映射」)。',
|
|
2431
|
+
en: 'No channels yet: import one from settings.json, or edit channels.json directly (the path is in the mapping view).',
|
|
2432
|
+
},
|
|
2433
|
+
'channel-row-summary': { zh: '{{models}} 条精确映射 · {{tiers}} 条档位规则', en: '{{models}} exact mappings · {{tiers}} tier rules' },
|
|
2434
|
+
'channel-action-import': { zh: '+ 从 settings.json 导入', en: '+ Import from settings.json' },
|
|
2435
|
+
'channel-action-view': { zh: '≡ 查看映射', en: '≡ View mappings' },
|
|
2436
|
+
'channel-picker-hint': { zh: '↑↓ 移动 · Enter 切换/执行 · Esc 关闭', en: '↑↓ move · Enter switch/run · Esc close' },
|
|
2437
|
+
'channel-already-active': { zh: '已是当前渠道', en: 'Already the active channel' },
|
|
2438
|
+
'channel-switch-while-working': { zh: '回合运行中,无法切换或改动渠道', en: 'Cannot switch or change channels while a turn is running' },
|
|
2439
|
+
'channel-conn-settings-mismatch': {
|
|
2440
|
+
zh: 'settings.json 的 ANTHROPIC_BASE_URL 与当前渠道 {{name}} 不一致;本会话按渠道配置连接(settings.json 不改,直接运行 claude 时仍按它)',
|
|
2441
|
+
en: 'The ANTHROPIC_BASE_URL in settings.json differs from the active channel {{name}}; this session connects as the channel says (settings.json is left as is for running claude directly)',
|
|
2442
|
+
},
|
|
2443
|
+
'channel-conn-creds-superseded': {
|
|
2444
|
+
zh: '本会话使用渠道凭据,settings.json 里的 {{keys}} 本次不生效(settings.json 不改,直接运行 claude 时仍会用到)',
|
|
2445
|
+
en: 'This session uses the channel credential; {{keys}} from settings.json do not apply (settings.json is left as is for running claude directly)',
|
|
2446
|
+
},
|
|
2447
|
+
'channel-switched': { zh: '已切换到 {{name}},模型显示已刷新', en: 'Switched to {{name}}; the model display refreshed' },
|
|
2448
|
+
'channel-import-done': { zh: '已导入渠道 {{name}}(重复导入会刷新它)', en: 'Imported channel {{name}} (a re-import refreshes it)' },
|
|
2449
|
+
'channel-import-none': { zh: 'settings.json 里没有可导入的映射(ANTHROPIC_BASE_URL / ANTHROPIC_*_MODEL)', en: 'Nothing importable in settings.json (ANTHROPIC_BASE_URL / ANTHROPIC_*_MODEL)' },
|
|
2450
|
+
'channel-map-none': { zh: '当前没有激活的渠道(/channel 里选一个)', en: 'No active channel (pick one in /channel)' },
|
|
2451
|
+
'channel-map-heading': { zh: '当前渠道:{{name}}', en: 'Active channel: {{name}}' },
|
|
2452
|
+
'channel-map-models-heading': { zh: '精确映射(models)', en: 'Exact mappings (models)' },
|
|
2453
|
+
'channel-map-models-none': { zh: '精确映射(models):无', en: 'Exact mappings (models): none' },
|
|
2454
|
+
'channel-map-tiers-heading': { zh: '档位规则(tiers)', en: 'Tier rules (tiers)' },
|
|
2455
|
+
'channel-map-tiers-none': { zh: '档位规则(tiers):无', en: 'Tier rules (tiers): none' },
|
|
2456
|
+
'channel-map-row': { zh: '{{from}} → {{to}}', en: '{{from}} → {{to}}' },
|
|
2457
|
+
'channel-map-file-hint': {
|
|
2458
|
+
zh: '编辑 ~/.dsh-tui/backends/claude/channels.json 可增删映射,改动会立即反映到模型显示。',
|
|
2459
|
+
en: 'Edit ~/.dsh-tui/backends/claude/channels.json to change mappings; the model display follows the changes right away.',
|
|
2460
|
+
},
|
|
2461
|
+
// 渠道连接(baseUrl / token / 渠道自带的环境变量):选择器行、切换重启与
|
|
2462
|
+
// 新增/管理向导。
|
|
2463
|
+
'channel-row-summary-conn': { zh: '{{url}} · token {{token}} · 环境变量 {{env}} · 精确 {{models}} · 档位 {{tiers}}', en: '{{url}} · token {{token}} · env {{env}} · exact {{models}} · tiers {{tiers}}' },
|
|
2464
|
+
'channel-row-no-url': { zh: '未设 baseUrl', en: 'no baseUrl' },
|
|
2465
|
+
'channel-action-add': { zh: '* 新增渠道(向导)', en: '* Add a channel (wizard)' },
|
|
2466
|
+
'channel-action-manage': { zh: '⚙ 管理渠道(编辑/删除)', en: '⚙ Manage channels (edit/delete)' },
|
|
2467
|
+
'channel-switch-restart': { zh: '已切换到 {{name}}:连接信息不同,正在以新会话重启……', en: 'Switched to {{name}}: the connection differs — restarting with a fresh session…' },
|
|
2468
|
+
'channel-switch-restart-unavailable': { zh: '已切换到 {{name}},新连接从下次会话起生效', en: 'Switched to {{name}}; the new connection applies from the next session' },
|
|
2469
|
+
'channel-wiz-active-channel': { zh: '激活渠道', en: 'the active channel' },
|
|
2470
|
+
'channel-wiz-q-action': { zh: '要做什么?', en: 'What would you like to do?' },
|
|
2471
|
+
'channel-wiz-opt-add': { zh: '新增渠道', en: 'Add a channel' },
|
|
2472
|
+
'channel-wiz-opt-add-desc': { zh: '名字 → baseUrl → token → 映射来源,向导一次配好', en: 'Name → baseUrl → token → mapping source, in one pass' },
|
|
2473
|
+
'channel-wiz-opt-manage': { zh: '管理已有渠道', en: 'Manage an existing channel' },
|
|
2474
|
+
'channel-wiz-opt-manage-desc': { zh: '编辑 baseUrl / token / 映射,或删除', en: 'Edit baseUrl / token / mappings, or delete' },
|
|
2475
|
+
'channel-wiz-cancelled': { zh: '已取消(未写入任何内容)', en: 'Cancelled (nothing was written)' },
|
|
2476
|
+
'channel-wiz-q-name': { zh: '渠道名字(id 由它派生)', en: 'Channel name (its id is derived from it)' },
|
|
2477
|
+
'channel-wiz-q-name-detail': { zh: '例如 智谱、packycode;重复的名字会刷新同一条渠道', en: 'e.g. ZhiPu, packycode; the same name refreshes the same channel' },
|
|
2478
|
+
'channel-wiz-name-required': { zh: '名字不能为空', en: 'The name cannot be empty' },
|
|
2479
|
+
'channel-wiz-q-clash': { zh: '名字「{{name}}」会派生出与它相同的渠道 ID({{id}}),继续将覆盖该渠道的连接与凭据。覆盖?', en: 'The name would derive the same channel id ({{id}}) as "{{name}}" — continuing replaces that channel\'s connection and stored token. Overwrite?' },
|
|
2480
|
+
'channel-wiz-opt-clash-overwrite': { zh: '覆盖该渠道', en: 'Overwrite that channel' },
|
|
2481
|
+
'channel-wiz-opt-clash-overwrite-desc': { zh: '旧渠道的 baseUrl/token/映射将被本次输入替换', en: 'Replaces the old channel\'s baseUrl/token/mappings with this input' },
|
|
2482
|
+
'channel-wiz-opt-clash-cancel': { zh: '取消(不写入任何内容)', en: 'Cancel (nothing is written)' },
|
|
2483
|
+
'channel-wiz-opt-clash-cancel-desc': { zh: '换一个名字重试即可避开冲突', en: 'Retry with a different name to avoid the clash' },
|
|
2484
|
+
'channel-wiz-q-baseurl': { zh: 'API base URL(留空跳过)', en: 'API base URL (leave blank to skip)' },
|
|
2485
|
+
'channel-wiz-q-baseurl-detail': { zh: '渠道的中转端点,如 https://open.bigmodel.cn/api/anthropic;settings.json 当前值:{{current}}', en: 'The relay endpoint, e.g. https://open.bigmodel.cn/api/anthropic; settings.json currently says: {{current}}' },
|
|
2486
|
+
'channel-wiz-q-token': { zh: '渠道 Token(留空跳过)', en: 'Channel token (leave blank to skip)' },
|
|
2487
|
+
'channel-wiz-q-token-detail': { zh: '存入 ~/.dsh/.credentials.yaml(权限 0600),channels.json 只存引用,不存明文', en: 'Stored in ~/.dsh/.credentials.yaml (mode 0600); channels.json keeps only a reference, never the token itself' },
|
|
2488
|
+
'channel-wiz-q-tiers': { zh: '模型映射来源?', en: 'Model mapping source?' },
|
|
2489
|
+
'channel-wiz-opt-tiers-absorb': { zh: '从 settings.json 导入档位规则', en: 'Import the tier rules from settings.json' },
|
|
2490
|
+
'channel-wiz-opt-tiers-absorb-desc': { zh: '导入 {{n}} 条 ANTHROPIC_*_MODEL 档位规则', en: 'Imports {{n}} ANTHROPIC_*_MODEL tier rules' },
|
|
2491
|
+
'channel-wiz-opt-tiers-skip': { zh: '跳过(以后可再导入或手编 channels.json)', en: 'Skip (import later or hand-edit channels.json)' },
|
|
2492
|
+
'channel-wiz-opt-tiers-skip-desc': { zh: '渠道先只有连接信息', en: 'The channel starts connection-only' },
|
|
2493
|
+
'channel-wiz-save-failed': { zh: '写入失败(详情见调试日志)', en: 'The write failed (see the debug log)' },
|
|
2494
|
+
'channel-wiz-saved': { zh: '已保存渠道 {{name}}', en: 'Saved channel {{name}}' },
|
|
2495
|
+
'channel-wiz-q-switch': { zh: '立即切换到 {{name}}?', en: 'Switch to {{name}} now?' },
|
|
2496
|
+
'channel-wiz-opt-switch-yes': { zh: '切换(连接不同会以新会话重启)', en: 'Switch (a different connection restarts with a fresh session)' },
|
|
2497
|
+
'channel-wiz-opt-switch-no': { zh: '先不切(/channel 里随时可切)', en: 'Not now (switch any time in /channel)' },
|
|
2498
|
+
'channel-wiz-empty': { zh: '还没有渠道可管理(先新增或导入)', en: 'No channels to manage yet (add or import one first)' },
|
|
2499
|
+
'channel-wiz-q-pick': { zh: '管理哪条渠道?', en: 'Which channel?' },
|
|
2500
|
+
'channel-wiz-row-mapping-only': { zh: '仅映射(未管理连接)', en: 'mapping-only (connection not managed)' },
|
|
2501
|
+
'channel-wiz-q-edit': { zh: '编辑 {{name}} 的什么?', en: 'Edit what of {{name}}?' },
|
|
2502
|
+
'channel-wiz-opt-edit-baseurl': { zh: 'baseUrl', en: 'baseUrl' },
|
|
2503
|
+
'channel-wiz-opt-edit-token': { zh: 'token', en: 'token' },
|
|
2504
|
+
'channel-wiz-opt-edit-tiers': { zh: '从 settings.json 刷新映射', en: 'Refresh mappings from settings.json' },
|
|
2505
|
+
'channel-wiz-opt-edit-tiers-desc': { zh: '当前 {{n}} 条档位规则,将被 settings.json 的值替换', en: '{{n}} tier rules now; replaced by settings.json\'s values' },
|
|
2506
|
+
'channel-wiz-opt-edit-delete': { zh: '删除这条渠道', en: 'Delete this channel' },
|
|
2507
|
+
'channel-wiz-opt-edit-delete-desc': { zh: '连同凭据库里的 token 一起删', en: 'Removes the stored token too' },
|
|
2508
|
+
'channel-wiz-opt-edit-done': { zh: '完成(不改动)', en: 'Done (change nothing)' },
|
|
2509
|
+
'channel-wiz-token-present': { zh: '已存 token(输入新值替换,- 清除)', en: 'token stored (type a new one to replace, - to clear)' },
|
|
2510
|
+
'channel-wiz-token-absent': { zh: '未存 token(输入即保存)', en: 'no token stored (typing stores one)' },
|
|
2511
|
+
'channel-wiz-q-delete': { zh: '删除 {{name}}?', en: 'Delete {{name}}?' },
|
|
2512
|
+
'channel-wiz-opt-delete-yes': { zh: '删除', en: 'Delete' },
|
|
2513
|
+
'channel-wiz-opt-delete-no': { zh: '取消', en: 'Cancel' },
|
|
2514
|
+
'channel-wiz-deleted': { zh: '已删除渠道 {{name}}', en: 'Deleted channel {{name}}' },
|
|
2515
|
+
'channel-wiz-q-edit-value-hint': { zh: '留空保持不变;输入 - 清除该值', en: 'Leave blank to keep; type - to clear' },
|
|
2516
|
+
'channel-wiz-summary-heading': { zh: '即将保存渠道:{{name}}', en: 'About to save the channel: {{name}}' },
|
|
2517
|
+
'channel-wiz-summary-url-set': { zh: 'baseUrl:将设置', en: 'baseUrl: will be set' },
|
|
2518
|
+
'channel-wiz-summary-url-skip': { zh: 'baseUrl:不设置', en: 'baseUrl: not set' },
|
|
2519
|
+
'channel-wiz-summary-token-set': { zh: 'token:将写入凭据库(0600)', en: 'token: stored in the credential store (0600)' },
|
|
2520
|
+
'channel-wiz-summary-token-skip': { zh: 'token:不设置', en: 'token: not set' },
|
|
2521
|
+
'channel-wiz-summary-tiers': { zh: '档位规则:导入 {{n}} 条', en: 'tier rules: {{n}} imported' },
|
|
2522
|
+
'channel-wiz-summary-tiers-none': { zh: '档位规则:无', en: 'tier rules: none' },
|
|
2523
|
+
'channel-wiz-summary-store': { zh: 'channels.json 不保存 token 明文;新连接在下次启动会话时生效', en: 'channels.json never stores the token itself; the connection applies when the next session starts' },
|
|
1678
2524
|
// Continue 的失败/空态(Chat 的 /continue 分支):绝不静默。
|
|
1679
2525
|
'launchpad-continue-none': {
|
|
1680
2526
|
zh: '没有可继续的会话,已打开历史会话列表',
|