@deepseek-harness-tui/dsh-tui 0.9.0 → 0.9.2
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 +69 -256
- package/bin/dsh-tui.js +172 -5
- package/cordis.patch.yml +16 -4
- package/dsh-ecosystem-spec/protocols/profile-definitions.d.ts +13 -13
- package/dsh-ecosystem-spec/protocols/profile-definitions.js +59 -59
- package/dsh-ecosystem-spec/protocols/tui-channel-http.d.ts +15 -15
- package/dsh-ecosystem-spec/protocols/tui-channel-http.js +32 -32
- package/dsh-ecosystem-spec/protocols/tui-channel.d.ts +59 -59
- package/dsh-ecosystem-spec/protocols/tui-channel.js +166 -166
- package/dsh-ecosystem-spec/protocols/tui-contributions.d.ts +42 -42
- package/dsh-ecosystem-spec/protocols/tui-contributions.js +143 -143
- package/dsh-ecosystem-spec/registry/README.md +14 -14
- package/dsh-ecosystem-spec/registry/host-descriptor.tui.example.json +56 -56
- package/dsh-ecosystem-spec/registry/permissions-0.1.json +13 -13
- package/dsh-ecosystem-spec/registry/registry-0.15.json +149 -149
- package/lib/types/cc/hyperlink.d.ts +7 -1
- package/lib/types/cc/hyperlink.d.ts.map +1 -1
- package/lib/types/cc/hyperlink.js +3 -2
- package/lib/types/cc/markdown.d.ts.map +1 -1
- package/lib/types/cc/markdown.js +33 -3
- package/lib/types/cc/sessionColors.d.ts +27 -0
- package/lib/types/cc/sessionColors.d.ts.map +1 -0
- package/lib/types/cc/sessionColors.js +39 -0
- package/lib/types/commands.d.ts.map +1 -1
- package/lib/types/commands.js +6 -0
- package/lib/types/components/AutoRecapRow.d.ts +23 -0
- package/lib/types/components/AutoRecapRow.d.ts.map +1 -0
- package/lib/types/components/AutoRecapRow.js +23 -0
- package/lib/types/components/ColorPicker.d.ts +17 -0
- package/lib/types/components/ColorPicker.d.ts.map +1 -0
- package/lib/types/components/ColorPicker.js +20 -0
- package/lib/types/components/CommandSuggestions.d.ts +3 -1
- package/lib/types/components/CommandSuggestions.d.ts.map +1 -1
- package/lib/types/components/ContextBarView.d.ts +33 -0
- package/lib/types/components/ContextBarView.d.ts.map +1 -0
- package/lib/types/components/ContextBarView.js +46 -0
- package/lib/types/components/EffortInputBorder.d.ts +12 -1
- package/lib/types/components/EffortInputBorder.d.ts.map +1 -1
- package/lib/types/components/EffortInputBorder.js +22 -5
- package/lib/types/components/FileActionsPanel.d.ts +22 -0
- package/lib/types/components/FileActionsPanel.d.ts.map +1 -0
- package/lib/types/components/FileActionsPanel.js +28 -0
- package/lib/types/components/FileSuggestions.d.ts +3 -1
- package/lib/types/components/FileSuggestions.d.ts.map +1 -1
- package/lib/types/components/MessageList.d.ts +3 -1
- package/lib/types/components/MessageList.d.ts.map +1 -1
- package/lib/types/components/MessageList.js +13 -6
- package/lib/types/components/ModelPicker.d.ts +26 -4
- package/lib/types/components/ModelPicker.d.ts.map +1 -1
- package/lib/types/components/ModelPicker.js +26 -6
- package/lib/types/components/PromptInput.d.ts.map +1 -1
- package/lib/types/components/PromptInput.js +365 -57
- package/lib/types/components/RecapPanel.d.ts +25 -0
- package/lib/types/components/RecapPanel.d.ts.map +1 -0
- package/lib/types/components/RecapPanel.js +55 -0
- package/lib/types/components/ScrollbarGutter.d.ts.map +1 -1
- package/lib/types/components/ScrollbarGutter.js +55 -4
- package/lib/types/components/SubagentCard.d.ts.map +1 -1
- package/lib/types/components/SubagentCard.js +6 -4
- package/lib/types/components/SuggestionCard.d.ts +4 -2
- package/lib/types/components/SuggestionCard.d.ts.map +1 -1
- package/lib/types/components/TimelineRail.d.ts.map +1 -1
- package/lib/types/components/TimelineRail.js +9 -2
- package/lib/types/components/design-system/ThemeProvider.d.ts +7 -0
- package/lib/types/components/design-system/ThemeProvider.d.ts.map +1 -1
- package/lib/types/components/design-system/ThemeProvider.js +2 -1
- package/lib/types/components/messages/AssistantToolUseMessage.d.ts +8 -1
- package/lib/types/components/messages/AssistantToolUseMessage.d.ts.map +1 -1
- package/lib/types/components/messages/AssistantToolUseMessage.js +36 -8
- package/lib/types/components/questions/AskUserQuestionPanel.d.ts +7 -3
- package/lib/types/components/questions/AskUserQuestionPanel.d.ts.map +1 -1
- package/lib/types/components/questions/AskUserQuestionPanel.js +41 -9
- package/lib/types/dsh-adapter/channel.d.ts +101 -2
- package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel.js +969 -93
- package/lib/types/dsh-adapter/compat/index.d.ts +8 -6
- package/lib/types/dsh-adapter/compat/index.d.ts.map +1 -1
- package/lib/types/dsh-adapter/compat/index.js +8 -6
- package/lib/types/dsh-adapter/compat/sessionLog.d.ts +150 -0
- package/lib/types/dsh-adapter/compat/sessionLog.d.ts.map +1 -1
- package/lib/types/dsh-adapter/compat/sessionLog.js +518 -41
- package/lib/types/dsh-adapter/contract.d.ts +1 -1
- package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
- package/lib/types/dsh-adapter/contract.js +1 -0
- package/lib/types/dsh-adapter/extension-events.d.ts +1 -1
- package/lib/types/dsh-adapter/extension-events.d.ts.map +1 -1
- package/lib/types/dsh-adapter/index.d.ts +10 -0
- package/lib/types/dsh-adapter/index.d.ts.map +1 -1
- package/lib/types/dsh-adapter/index.js +5 -0
- package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin.js +317 -8
- package/lib/types/dsh-adapter/presets.d.ts +18 -0
- package/lib/types/dsh-adapter/presets.d.ts.map +1 -1
- package/lib/types/dsh-adapter/presets.js +31 -0
- package/lib/types/dsh-adapter/providerWizard.d.ts +29 -1
- package/lib/types/dsh-adapter/providerWizard.d.ts.map +1 -1
- package/lib/types/dsh-adapter/providerWizard.js +89 -5
- package/lib/types/dsh-adapter/questions.d.ts +19 -2
- package/lib/types/dsh-adapter/questions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/questions.js +53 -10
- package/lib/types/dsh-adapter/recap.d.ts +49 -0
- package/lib/types/dsh-adapter/recap.d.ts.map +1 -0
- package/lib/types/dsh-adapter/recap.js +121 -0
- package/lib/types/dsh-adapter/sessionTree.d.ts +314 -0
- package/lib/types/dsh-adapter/sessionTree.d.ts.map +1 -0
- package/lib/types/dsh-adapter/sessionTree.js +954 -0
- package/lib/types/dsh-adapter/shortcuts.d.ts +15 -44
- package/lib/types/dsh-adapter/shortcuts.d.ts.map +1 -1
- package/lib/types/dsh-adapter/shortcuts.js +28 -165
- package/lib/types/dsh-adapter/types.d.ts +1 -1
- package/lib/types/dsh-adapter/types.d.ts.map +1 -1
- package/lib/types/herdr.js +1 -1
- package/lib/types/i18n.d.ts +604 -176
- package/lib/types/i18n.d.ts.map +1 -1
- package/lib/types/i18n.js +206 -72
- package/lib/types/ink/log-update.d.ts.map +1 -1
- package/lib/types/ink/log-update.js +21 -0
- package/lib/types/migrationPrefs.d.ts +60 -0
- package/lib/types/migrationPrefs.d.ts.map +1 -0
- package/lib/types/migrationPrefs.js +97 -0
- package/lib/types/modelGroups.d.ts +72 -0
- package/lib/types/modelGroups.d.ts.map +1 -0
- package/lib/types/modelGroups.js +97 -0
- package/lib/types/modelRecents.d.ts +39 -0
- package/lib/types/modelRecents.d.ts.map +1 -0
- package/lib/types/modelRecents.js +97 -0
- package/lib/types/native-ts/yoga-layout/index.d.ts +11 -0
- package/lib/types/native-ts/yoga-layout/index.d.ts.map +1 -1
- package/lib/types/native-ts/yoga-layout/index.js +31 -1
- package/lib/types/oauth.d.ts +15 -0
- package/lib/types/oauth.d.ts.map +1 -0
- package/lib/types/oauth.js +14 -0
- package/lib/types/plugin-spec/registry.d.ts +1 -1
- package/lib/types/plugin-spec/registry.js +1 -1
- package/lib/types/reload.d.ts +109 -0
- package/lib/types/reload.d.ts.map +1 -0
- package/lib/types/reload.js +118 -0
- package/lib/types/screens/Chat.d.ts +3 -1
- package/lib/types/screens/Chat.d.ts.map +1 -1
- package/lib/types/screens/Chat.js +588 -64
- package/lib/types/screens/SessionTree.d.ts +27 -0
- package/lib/types/screens/SessionTree.d.ts.map +1 -0
- package/lib/types/screens/SessionTree.js +555 -0
- package/lib/types/screens/StatusLine.d.ts +0 -9
- package/lib/types/screens/StatusLine.d.ts.map +1 -1
- package/lib/types/screens/StatusLine.js +215 -52
- package/lib/types/screens/StatusMetrics.d.ts +35 -3
- package/lib/types/screens/StatusMetrics.d.ts.map +1 -1
- package/lib/types/screens/StatusMetrics.js +63 -8
- package/lib/types/screens/chatOverlay.d.ts +17 -1
- package/lib/types/screens/chatOverlay.d.ts.map +1 -1
- package/lib/types/screens/chatOverlay.js +3 -1
- package/lib/types/tips.d.ts.map +1 -1
- package/lib/types/tips.js +22 -4
- package/lib/types/update.d.ts +159 -0
- package/lib/types/update.d.ts.map +1 -1
- package/lib/types/update.js +496 -30
- package/lib/types/utils/debug.d.ts +1 -1
- package/lib/types/utils/debug.js +3 -3
- package/lib/types/utils/fileTarget.d.ts +46 -0
- package/lib/types/utils/fileTarget.d.ts.map +1 -0
- package/lib/types/utils/fileTarget.js +178 -0
- package/lib/types/utils/keymap.d.ts +134 -0
- package/lib/types/utils/keymap.d.ts.map +1 -0
- package/lib/types/utils/keymap.js +311 -0
- package/lib/types/utils/mentions.d.ts +25 -2
- package/lib/types/utils/mentions.d.ts.map +1 -1
- package/lib/types/utils/mentions.js +69 -10
- package/lib/types/utils/openExternal.d.ts +50 -0
- package/lib/types/utils/openExternal.d.ts.map +1 -0
- package/lib/types/utils/openExternal.js +170 -0
- package/node_modules/@deepseek-harness-tui/dsh-auth/LICENSE +21 -0
- package/node_modules/@deepseek-harness-tui/dsh-auth/README.md +140 -0
- package/node_modules/@deepseek-harness-tui/dsh-auth/cordis.patch.yml +11 -0
- package/node_modules/@deepseek-harness-tui/dsh-auth/dsh-plugin.json +44 -0
- package/node_modules/@deepseek-harness-tui/dsh-auth/lib/command.d.ts +14 -0
- package/node_modules/@deepseek-harness-tui/dsh-auth/lib/command.js +67 -0
- package/node_modules/@deepseek-harness-tui/dsh-auth/lib/credentials.d.ts +64 -0
- package/node_modules/@deepseek-harness-tui/dsh-auth/lib/credentials.js +170 -0
- package/node_modules/@deepseek-harness-tui/dsh-auth/lib/index.d.ts +79 -0
- package/node_modules/@deepseek-harness-tui/dsh-auth/lib/index.js +196 -0
- package/node_modules/@deepseek-harness-tui/dsh-auth/lib/interaction.d.ts +68 -0
- package/node_modules/@deepseek-harness-tui/dsh-auth/lib/interaction.js +193 -0
- package/node_modules/@deepseek-harness-tui/dsh-auth/lib/opener.d.ts +32 -0
- package/node_modules/@deepseek-harness-tui/dsh-auth/lib/opener.js +101 -0
- package/node_modules/@deepseek-harness-tui/dsh-auth/lib/profiles.d.ts +31 -0
- package/node_modules/@deepseek-harness-tui/dsh-auth/lib/profiles.js +68 -0
- package/node_modules/@deepseek-harness-tui/dsh-auth/lib/service.d.ts +69 -0
- package/node_modules/@deepseek-harness-tui/dsh-auth/lib/service.js +129 -0
- package/node_modules/@deepseek-harness-tui/dsh-auth/package.json +70 -0
- package/node_modules/@dsh-std/command/CHANGELOG.md +8 -8
- package/node_modules/@dsh-std/command/LICENSE +21 -21
- package/node_modules/@dsh-std/command/README.md +26 -26
- package/node_modules/@dsh-std/command/README.zh.md +28 -28
- package/node_modules/@dsh-std/command/lib/index.js.map +1 -1
- package/node_modules/@dsh-std/command/package.json +22 -22
- package/node_modules/@dsh-std/connection/CHANGELOG.md +8 -8
- package/node_modules/@dsh-std/connection/LICENSE +21 -21
- package/node_modules/@dsh-std/connection/README.md +42 -42
- package/node_modules/@dsh-std/connection/README.zh.md +42 -42
- package/node_modules/@dsh-std/connection/lib/index.js.map +1 -1
- package/node_modules/@dsh-std/connection/lib/memory.js.map +1 -1
- package/node_modules/@dsh-std/connection/lib/resolve-3X6ausgz.js.map +1 -1
- package/node_modules/@dsh-std/connection/package.json +20 -20
- package/node_modules/@dsh-std/core/CHANGELOG.md +8 -8
- package/node_modules/@dsh-std/core/LICENSE +21 -21
- package/node_modules/@dsh-std/core/README.md +13 -13
- package/node_modules/@dsh-std/core/README.zh.md +13 -13
- package/node_modules/@dsh-std/core/lib/index.js.map +1 -1
- package/node_modules/@dsh-std/core/package.json +21 -21
- package/node_modules/@dsh-std/manifest/CHANGELOG.md +9 -9
- package/node_modules/@dsh-std/manifest/LICENSE +21 -21
- package/node_modules/@dsh-std/manifest/README.md +5 -5
- package/node_modules/@dsh-std/manifest/README.zh.md +5 -5
- package/node_modules/@dsh-std/manifest/lib/index.js.map +1 -1
- package/node_modules/@dsh-std/manifest/package.json +20 -20
- package/node_modules/@dsh-std/manifest/schema/dsh-plugin-0.15.schema.json +144 -144
- package/node_modules/@dsh-std/messages/CHANGELOG.md +8 -8
- package/node_modules/@dsh-std/messages/LICENSE +21 -21
- package/node_modules/@dsh-std/messages/README.md +5 -5
- package/node_modules/@dsh-std/messages/README.zh.md +7 -7
- package/node_modules/@dsh-std/messages/lib/index.js.map +1 -1
- package/node_modules/@dsh-std/messages/package.json +20 -20
- package/node_modules/@dsh-std/messages/schema/message-observer-envelope-0.15.schema.json +54 -54
- package/node_modules/@dsh-std/presentation/CHANGELOG.md +9 -9
- package/node_modules/@dsh-std/presentation/LICENSE +21 -21
- package/node_modules/@dsh-std/presentation/README.md +27 -27
- package/node_modules/@dsh-std/presentation/README.zh.md +29 -29
- package/node_modules/@dsh-std/presentation/lib/callback.js.map +1 -1
- package/node_modules/@dsh-std/presentation/lib/index.js.map +1 -1
- package/node_modules/@dsh-std/presentation/package.json +25 -25
- package/node_modules/@dsh-std/storage/CHANGELOG.md +8 -8
- package/node_modules/@dsh-std/storage/LICENSE +21 -21
- package/node_modules/@dsh-std/storage/README.md +5 -5
- package/node_modules/@dsh-std/storage/README.zh.md +7 -7
- package/node_modules/@dsh-std/storage/lib/index.js.map +1 -1
- package/node_modules/@dsh-std/storage/package.json +20 -20
- package/node_modules/@dsh-std/storage/schema/local-storage-0.15.schema.json +56 -56
- package/package.json +17 -5
- package/presets/liangshen/.dsh-tui-managed.json +1 -1
- package/presets/liangshen/instruction-hint.mjs +8 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/CHANGELOG.md +8 -8
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/LICENSE +21 -21
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/README.md +42 -42
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/README.zh.md +42 -42
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/index.js.map +1 -1
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/memory.js.map +1 -1
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/resolve-3X6ausgz.js.map +1 -1
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/package.json +20 -20
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/CHANGELOG.md +8 -8
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/LICENSE +21 -21
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/README.md +13 -13
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/README.zh.md +13 -13
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/lib/index.js.map +1 -1
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/package.json +21 -21
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/CHANGELOG.md +9 -9
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/LICENSE +21 -21
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/README.md +5 -5
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/README.zh.md +5 -5
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/lib/index.js.map +1 -1
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/package.json +20 -20
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/schema/dsh-plugin-0.15.schema.json +144 -144
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/CHANGELOG.md +9 -9
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/LICENSE +21 -21
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/README.md +27 -27
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/README.zh.md +29 -29
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/callback.js.map +1 -1
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/index.js.map +1 -1
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/package.json +25 -25
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/CHANGELOG.md +8 -8
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/LICENSE +21 -21
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/README.md +13 -13
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/README.zh.md +13 -13
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/lib/index.js.map +1 -1
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/package.json +21 -21
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/CHANGELOG.md +8 -8
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/LICENSE +21 -21
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/README.md +13 -13
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/README.zh.md +13 -13
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/lib/index.js.map +1 -1
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/package.json +21 -21
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/CHANGELOG.md +8 -8
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/LICENSE +21 -21
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/README.md +13 -13
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/README.zh.md +13 -13
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/lib/index.js.map +1 -1
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/package.json +21 -21
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/CHANGELOG.md +8 -8
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/LICENSE +21 -21
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/README.md +42 -42
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/README.zh.md +42 -42
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/index.js.map +1 -1
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/memory.js.map +1 -1
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/resolve-3X6ausgz.js.map +1 -1
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/package.json +20 -20
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/CHANGELOG.md +8 -8
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/LICENSE +21 -21
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/README.md +13 -13
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/README.zh.md +13 -13
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/lib/index.js.map +1 -1
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/package.json +21 -21
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/CHANGELOG.md +8 -8
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/LICENSE +21 -21
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/README.md +13 -13
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/README.zh.md +13 -13
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/lib/index.js.map +1 -1
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/package.json +21 -21
package/lib/types/i18n.d.ts
CHANGED
|
@@ -11,13 +11,32 @@
|
|
|
11
11
|
* 5. `zh` (the original hard-coded language)
|
|
12
12
|
*
|
|
13
13
|
* `/lang` switches at runtime and hot-swaps the whole UI. The dictionary is
|
|
14
|
-
* a flat key → per-language
|
|
15
|
-
* `{{name}}` placeholders with the given params.
|
|
16
|
-
*
|
|
14
|
+
* a flat key → per-language text map; `t(key, params)` substitutes
|
|
15
|
+
* `{{name}}` placeholders with the given params. A per-language value is
|
|
16
|
+
* either a plain template or `{ one, other }` plural forms selected via
|
|
17
|
+
* `Intl.PluralRules` on the `count` param (zh has no grammatical number and
|
|
18
|
+
* always resolves to `other`). Missing keys render the key itself so a typo
|
|
19
|
+
* is visible in the UI instead of silently blank.
|
|
20
|
+
*
|
|
21
|
+
* The dictionary shape is enforced at compile time (`satisfies` below):
|
|
22
|
+
* every entry carries zh, and en is optional only for the `cmd-desc-*`
|
|
23
|
+
* family whose en truth lives in the command registry (see {@link tOr}).
|
|
24
|
+
* scripts/verify-i18n.ts adds the checks types cannot express: placeholder
|
|
25
|
+
* parity between languages, single-brace typos, and dead keys.
|
|
17
26
|
*/
|
|
18
27
|
export type Lang = 'zh' | 'en';
|
|
19
28
|
/** The languages shipped with the plugin, in display order. */
|
|
20
29
|
export declare const LANGS: readonly ["zh", "en"];
|
|
30
|
+
/**
|
|
31
|
+
* One dictionary value in one language: a plain `{{name}}` template, or
|
|
32
|
+
* plural forms picked by the `count` param through `Intl.PluralRules`.
|
|
33
|
+
* Only `one`/`other` exist because those are the only CLDR categories zh
|
|
34
|
+
* and en use; a third shipped language may need more.
|
|
35
|
+
*/
|
|
36
|
+
export type I18nText = string | {
|
|
37
|
+
one: string;
|
|
38
|
+
other: string;
|
|
39
|
+
};
|
|
21
40
|
declare const dict: {
|
|
22
41
|
readonly 'activity-indicator-already': {
|
|
23
42
|
readonly zh: "指示器已是:{{name}}";
|
|
@@ -129,7 +148,10 @@ declare const dict: {
|
|
|
129
148
|
};
|
|
130
149
|
readonly 'mentions-attached': {
|
|
131
150
|
readonly zh: "已附加 {{count}} 个文件引用";
|
|
132
|
-
readonly en:
|
|
151
|
+
readonly en: {
|
|
152
|
+
readonly one: "Attached {{count}} file reference";
|
|
153
|
+
readonly other: "Attached {{count}} file references";
|
|
154
|
+
};
|
|
133
155
|
};
|
|
134
156
|
readonly 'mentions-missing': {
|
|
135
157
|
readonly zh: "未找到引用: {{paths}}";
|
|
@@ -267,10 +289,6 @@ declare const dict: {
|
|
|
267
289
|
readonly zh: "工具";
|
|
268
290
|
readonly en: "Tools";
|
|
269
291
|
};
|
|
270
|
-
readonly 'subagent-expand-hint': {
|
|
271
|
-
readonly zh: "按 Enter 展开完整输出";
|
|
272
|
-
readonly en: "Press Enter to expand full output";
|
|
273
|
-
};
|
|
274
292
|
readonly 'subagent-status-running': {
|
|
275
293
|
readonly zh: "运行中";
|
|
276
294
|
readonly en: "running";
|
|
@@ -311,6 +329,234 @@ declare const dict: {
|
|
|
311
329
|
readonly zh: "已回退,但工作区挂载失败 · {{err}}";
|
|
312
330
|
readonly en: "Session rewound, but workspace attachment failed · {{err}}";
|
|
313
331
|
};
|
|
332
|
+
readonly 'rewind-no-persistence': {
|
|
333
|
+
readonly zh: "回退不可用——持久化服务未加载";
|
|
334
|
+
readonly en: "Rewind unavailable — session persistence not loaded";
|
|
335
|
+
};
|
|
336
|
+
readonly 'rewind-load-failed': {
|
|
337
|
+
readonly zh: "无法读取该会话日志 · {{err}}";
|
|
338
|
+
readonly en: "Could not read that session log · {{err}}";
|
|
339
|
+
};
|
|
340
|
+
readonly 'rewind-first-message': {
|
|
341
|
+
readonly zh: "不能回退到第一条消息之前";
|
|
342
|
+
readonly en: "Cannot rewind past the very first message";
|
|
343
|
+
};
|
|
344
|
+
readonly 'rewind-noop': {
|
|
345
|
+
readonly zh: "该点之后没有可回退的内容";
|
|
346
|
+
readonly en: "Nothing to rewind past this point";
|
|
347
|
+
};
|
|
348
|
+
readonly 'rewind-session-changed': {
|
|
349
|
+
readonly zh: "会话已切换,回退已放弃";
|
|
350
|
+
readonly en: "The session changed; the rewind was dropped";
|
|
351
|
+
};
|
|
352
|
+
readonly 'tree-unavailable': {
|
|
353
|
+
readonly zh: "会话树不可用——持久化服务未加载";
|
|
354
|
+
readonly en: "Session tree unavailable — session persistence not loaded";
|
|
355
|
+
};
|
|
356
|
+
readonly 'fork-unavailable': {
|
|
357
|
+
readonly zh: "分叉不可用——会话服务未加载";
|
|
358
|
+
readonly en: "Fork unavailable — session services not loaded";
|
|
359
|
+
};
|
|
360
|
+
readonly 'fork-while-working': {
|
|
361
|
+
readonly zh: "回合运行中,无法分叉会话";
|
|
362
|
+
readonly en: "Cannot fork while a turn is running";
|
|
363
|
+
};
|
|
364
|
+
readonly 'fork-failed': {
|
|
365
|
+
readonly zh: "分叉失败 · {{err}}";
|
|
366
|
+
readonly en: "Fork failed · {{err}}";
|
|
367
|
+
};
|
|
368
|
+
readonly 'fork-create-failed': {
|
|
369
|
+
readonly zh: "分叉失败——无法创建分叉会话";
|
|
370
|
+
readonly en: "Fork failed — could not create the forked session";
|
|
371
|
+
};
|
|
372
|
+
readonly 'fork-attach-failed': {
|
|
373
|
+
readonly zh: "已分叉,但工作区挂载失败 · {{err}}";
|
|
374
|
+
readonly en: "Session forked, but workspace attachment failed · {{err}}";
|
|
375
|
+
};
|
|
376
|
+
readonly 'fork-done': {
|
|
377
|
+
readonly zh: "已分叉({{id}})——仍在原会话中\n新进程进入分叉:{{command}}";
|
|
378
|
+
readonly en: "Forked ({{id}}) — still in the original session\nEnter the fork in a new process: {{command}}";
|
|
379
|
+
};
|
|
380
|
+
readonly 'tree-title': {
|
|
381
|
+
readonly zh: "会话树";
|
|
382
|
+
readonly en: "Session tree";
|
|
383
|
+
};
|
|
384
|
+
readonly 'tree-sessions': {
|
|
385
|
+
readonly zh: "会话";
|
|
386
|
+
readonly en: "sessions";
|
|
387
|
+
};
|
|
388
|
+
readonly 'tree-loading': {
|
|
389
|
+
readonly zh: "正在加载会话树…";
|
|
390
|
+
readonly en: "Loading the session tree…";
|
|
391
|
+
};
|
|
392
|
+
readonly 'tree-rewinding': {
|
|
393
|
+
readonly zh: "正在分叉并切换…";
|
|
394
|
+
readonly en: "Forking and switching…";
|
|
395
|
+
};
|
|
396
|
+
readonly 'tree-empty': {
|
|
397
|
+
readonly zh: "没有可显示的条目";
|
|
398
|
+
readonly en: "No entries to show";
|
|
399
|
+
};
|
|
400
|
+
readonly 'tree-truncated': {
|
|
401
|
+
readonly zh: "已截断";
|
|
402
|
+
readonly en: "truncated";
|
|
403
|
+
};
|
|
404
|
+
readonly 'tree-search': {
|
|
405
|
+
readonly zh: "输入即搜索…";
|
|
406
|
+
readonly en: "Type to search…";
|
|
407
|
+
};
|
|
408
|
+
readonly 'tree-filter-default': {
|
|
409
|
+
readonly zh: "默认";
|
|
410
|
+
readonly en: "default";
|
|
411
|
+
};
|
|
412
|
+
readonly 'tree-filter-no-tools': {
|
|
413
|
+
readonly zh: "无工具";
|
|
414
|
+
readonly en: "no tools";
|
|
415
|
+
};
|
|
416
|
+
readonly 'tree-filter-user-only': {
|
|
417
|
+
readonly zh: "仅用户";
|
|
418
|
+
readonly en: "user only";
|
|
419
|
+
};
|
|
420
|
+
readonly 'tree-filter-all': {
|
|
421
|
+
readonly zh: "全部";
|
|
422
|
+
readonly en: "all";
|
|
423
|
+
};
|
|
424
|
+
readonly 'tree-kind-user': {
|
|
425
|
+
readonly zh: "用户消息";
|
|
426
|
+
readonly en: "user message";
|
|
427
|
+
};
|
|
428
|
+
readonly 'tree-kind-assistant': {
|
|
429
|
+
readonly zh: "助手回复";
|
|
430
|
+
readonly en: "assistant message";
|
|
431
|
+
};
|
|
432
|
+
readonly 'tree-kind-tool': {
|
|
433
|
+
readonly zh: "工具调用";
|
|
434
|
+
readonly en: "tool call";
|
|
435
|
+
};
|
|
436
|
+
readonly 'tree-kind-compact': {
|
|
437
|
+
readonly zh: "压缩检查点";
|
|
438
|
+
readonly en: "compaction";
|
|
439
|
+
};
|
|
440
|
+
readonly 'tree-kind-interrupt': {
|
|
441
|
+
readonly zh: "中断";
|
|
442
|
+
readonly en: "interrupt";
|
|
443
|
+
};
|
|
444
|
+
readonly 'tree-kind-notice': {
|
|
445
|
+
readonly zh: "通知";
|
|
446
|
+
readonly en: "notice";
|
|
447
|
+
};
|
|
448
|
+
readonly 'tree-empty-fork': {
|
|
449
|
+
readonly zh: "(空分叉)";
|
|
450
|
+
readonly en: "(empty fork)";
|
|
451
|
+
};
|
|
452
|
+
readonly 'tree-unreadable': {
|
|
453
|
+
readonly zh: "(日志无法读取)";
|
|
454
|
+
readonly en: "(unreadable log)";
|
|
455
|
+
};
|
|
456
|
+
readonly 'tree-unloaded': {
|
|
457
|
+
readonly zh: "(超出预算未加载)";
|
|
458
|
+
readonly en: "(not loaded — over budget)";
|
|
459
|
+
};
|
|
460
|
+
readonly 'tree-first-message': {
|
|
461
|
+
readonly zh: "不能回退到第一条消息之前";
|
|
462
|
+
readonly en: "Cannot rewind past the very first message";
|
|
463
|
+
};
|
|
464
|
+
readonly 'tree-adopt-live': {
|
|
465
|
+
readonly zh: "当前会话就在这条分支上";
|
|
466
|
+
readonly en: "The live session is already on this branch";
|
|
467
|
+
};
|
|
468
|
+
readonly 'tree-adopt-unavailable': {
|
|
469
|
+
readonly zh: "该分支无法整体切换(未加载到末端)";
|
|
470
|
+
readonly en: "Cannot adopt this branch (its tip was not loaded)";
|
|
471
|
+
};
|
|
472
|
+
readonly 'tree-menu-rewind': {
|
|
473
|
+
readonly zh: "回退到这里";
|
|
474
|
+
readonly en: "Rewind here";
|
|
475
|
+
};
|
|
476
|
+
readonly 'tree-menu-rewind-detail': {
|
|
477
|
+
readonly zh: "丢弃该轮对话,提示词回到输入框";
|
|
478
|
+
readonly en: "Drops that turn; its prompt returns to the input";
|
|
479
|
+
};
|
|
480
|
+
readonly 'tree-menu-fork': {
|
|
481
|
+
readonly zh: "从这分叉";
|
|
482
|
+
readonly en: "Fork here";
|
|
483
|
+
};
|
|
484
|
+
readonly 'tree-menu-fork-detail': {
|
|
485
|
+
readonly zh: "保留这条消息,从这里开新分支";
|
|
486
|
+
readonly en: "Keeps this entry and branches here";
|
|
487
|
+
};
|
|
488
|
+
readonly 'tree-menu-adopt': {
|
|
489
|
+
readonly zh: "切换到该分支";
|
|
490
|
+
readonly en: "Adopt this branch";
|
|
491
|
+
};
|
|
492
|
+
readonly 'tree-menu-adopt-detail': {
|
|
493
|
+
readonly zh: "保留整条分支并切换过去";
|
|
494
|
+
readonly en: "Switches to the whole branch, content kept";
|
|
495
|
+
};
|
|
496
|
+
readonly 'tree-menu-cancel': {
|
|
497
|
+
readonly zh: "取消";
|
|
498
|
+
readonly en: "Cancel";
|
|
499
|
+
};
|
|
500
|
+
readonly 'tree-confirm-rewind': {
|
|
501
|
+
readonly zh: "回退到「{{text}}」?";
|
|
502
|
+
readonly en: "Rewind to \"{{text}}\"?";
|
|
503
|
+
};
|
|
504
|
+
readonly 'tree-confirm-drop': {
|
|
505
|
+
readonly zh: "回退到「{{text}}」?该轮 {{n}} 条消息将丢弃";
|
|
506
|
+
readonly en: "Rewind to \"{{text}}\"? Drops that turn ({{n}} entries)";
|
|
507
|
+
};
|
|
508
|
+
readonly 'tree-confirm-adopt': {
|
|
509
|
+
readonly zh: "切换到「{{text}}」所在分支?";
|
|
510
|
+
readonly en: "Switch to the branch of \"{{text}}\"?";
|
|
511
|
+
};
|
|
512
|
+
readonly 'tree-confirm-drops-branch': {
|
|
513
|
+
readonly zh: "注意:该分支的全部内容都在这一轮里,回退后将看不到它们";
|
|
514
|
+
readonly en: "Heads-up: this branch’s whole content is that one turn — it disappears from the fork";
|
|
515
|
+
};
|
|
516
|
+
readonly 'tree-hint': {
|
|
517
|
+
readonly zh: "**Enter** 菜单 · **{{mod}}F** 从这分叉 · **{{mod}}B** 切到分支 · **{{mod}}O** 过滤 · 点击行出菜单 · 输入搜索 · Esc 退出";
|
|
518
|
+
readonly en: "**Enter** menu · **{{mod}}F** fork here · **{{mod}}B** adopt branch · **{{mod}}O** filter · click a row for the menu · type to search · Esc exits";
|
|
519
|
+
};
|
|
520
|
+
readonly 'tree-hint-short': {
|
|
521
|
+
readonly zh: "**Enter** 菜单 · 点击行出菜单 · Esc 退出";
|
|
522
|
+
readonly en: "**Enter** menu · click a row · Esc exits";
|
|
523
|
+
};
|
|
524
|
+
readonly 'tree-hint-menu': {
|
|
525
|
+
readonly zh: "**↑↓** 选择 · **Enter** 执行 · 首字母直达 · Esc 返回";
|
|
526
|
+
readonly en: "**↑↓** move · **Enter** run · letter keys jump · Esc back";
|
|
527
|
+
};
|
|
528
|
+
readonly 'tree-hint-confirm': {
|
|
529
|
+
readonly zh: "**Enter** 确认 · Esc 取消";
|
|
530
|
+
readonly en: "**Enter** to confirm · Esc to cancel";
|
|
531
|
+
};
|
|
532
|
+
readonly 'tree-refused': {
|
|
533
|
+
readonly zh: "操作未执行(原因已记录到会话通知)";
|
|
534
|
+
readonly en: "Not executed — the reason was notified to the conversation";
|
|
535
|
+
};
|
|
536
|
+
readonly 'tree-rewind-failed': {
|
|
537
|
+
readonly zh: "操作失败 · {{message}}";
|
|
538
|
+
readonly en: "Action failed · {{message}}";
|
|
539
|
+
};
|
|
540
|
+
readonly 'tree-rewound': {
|
|
541
|
+
readonly zh: "已回退——编辑后重新发送";
|
|
542
|
+
readonly en: "Rewound — edit and resend";
|
|
543
|
+
};
|
|
544
|
+
readonly 'tree-forked': {
|
|
545
|
+
readonly zh: "已从此处分叉";
|
|
546
|
+
readonly en: "Forked from this point";
|
|
547
|
+
};
|
|
548
|
+
readonly 'tree-adopted': {
|
|
549
|
+
readonly zh: "已切换到该分支";
|
|
550
|
+
readonly en: "Switched to that branch";
|
|
551
|
+
};
|
|
552
|
+
readonly 'tree-preview-title': {
|
|
553
|
+
readonly zh: "预览";
|
|
554
|
+
readonly en: "Preview";
|
|
555
|
+
};
|
|
556
|
+
readonly 'tree-branch-live': {
|
|
557
|
+
readonly zh: "当前会话";
|
|
558
|
+
readonly en: "live session";
|
|
559
|
+
};
|
|
314
560
|
readonly 'resume-while-working': {
|
|
315
561
|
readonly zh: "回合运行中,无法恢复会话";
|
|
316
562
|
readonly en: "Cannot resume while a turn is running";
|
|
@@ -403,10 +649,6 @@ declare const dict: {
|
|
|
403
649
|
readonly zh: "📋 问卷已答 · {{total}} 题";
|
|
404
650
|
readonly en: "📋 Questionnaire answered · {{total}} questions";
|
|
405
651
|
};
|
|
406
|
-
readonly 'theme-sakura-name': {
|
|
407
|
-
readonly zh: "樱花粉";
|
|
408
|
-
readonly en: "Sakura Pink";
|
|
409
|
-
};
|
|
410
652
|
readonly 'context-truncated': {
|
|
411
653
|
readonly zh: "…(已截断)";
|
|
412
654
|
readonly en: "… (truncated)";
|
|
@@ -479,10 +721,6 @@ declare const dict: {
|
|
|
479
721
|
readonly zh: "已复制 {{n}} 个字符";
|
|
480
722
|
readonly en: "Copied {{n}} characters";
|
|
481
723
|
};
|
|
482
|
-
readonly 'activity-usage-name': {
|
|
483
|
-
readonly zh: "/activity frames <名>";
|
|
484
|
-
readonly en: "/activity frames <name>";
|
|
485
|
-
};
|
|
486
724
|
readonly 'activity-current-preset': {
|
|
487
725
|
readonly zh: "当前预设 {{name}}";
|
|
488
726
|
readonly en: "Current preset {{name}}";
|
|
@@ -535,10 +773,6 @@ declare const dict: {
|
|
|
535
773
|
readonly zh: "当前组合未挂载 agent-presets 名册(preset 不可用)";
|
|
536
774
|
readonly en: "The agent-presets roster is not mounted (presets unavailable)";
|
|
537
775
|
};
|
|
538
|
-
readonly 'theme-name-arg': {
|
|
539
|
-
readonly zh: "/theme <名字>";
|
|
540
|
-
readonly en: "/theme <name>";
|
|
541
|
-
};
|
|
542
776
|
readonly 'theme-current': {
|
|
543
777
|
readonly zh: "当前主题 {{name}}";
|
|
544
778
|
readonly en: "Current theme {{name}}";
|
|
@@ -620,8 +854,8 @@ declare const dict: {
|
|
|
620
854
|
readonly en: "Cannot switch workspaces while the agent is running";
|
|
621
855
|
};
|
|
622
856
|
readonly 'workspace-open-invalid': {
|
|
623
|
-
readonly zh: "无法打开工作区:{target} 不是存在的目录";
|
|
624
|
-
readonly en: "Cannot open workspace: {target} is not an existing directory";
|
|
857
|
+
readonly zh: "无法打开工作区:{{target}} 不是存在的目录";
|
|
858
|
+
readonly en: "Cannot open workspace: {{target}} is not an existing directory";
|
|
625
859
|
};
|
|
626
860
|
readonly 'workspace-switched': {
|
|
627
861
|
readonly zh: "已切换工作区:{{target}}";
|
|
@@ -647,10 +881,6 @@ declare const dict: {
|
|
|
647
881
|
readonly zh: "正在连接并读取目录… · Esc 关闭";
|
|
648
882
|
readonly en: "Connecting and loading directories… · Esc to close";
|
|
649
883
|
};
|
|
650
|
-
readonly 'workspace-command-usage': {
|
|
651
|
-
readonly zh: "用法:/workspace resume | rename <名称> | open <路径或 URI>{{commands}}";
|
|
652
|
-
readonly en: "Usage: /workspace resume | rename <name> | open <path-or-URI>{{commands}}";
|
|
653
|
-
};
|
|
654
884
|
readonly 'workspace-menu-title': {
|
|
655
885
|
readonly zh: "Workspace 操作";
|
|
656
886
|
readonly en: "Workspace actions";
|
|
@@ -799,6 +1029,30 @@ declare const dict: {
|
|
|
799
1029
|
readonly zh: "使用 /provider 管理 DSH 凭据;若来源为 env,请删除对应环境变量并重启 dsh-tui";
|
|
800
1030
|
readonly en: "Manage DSH credentials with /provider; for env sources, remove the corresponding environment variable and restart dsh-tui";
|
|
801
1031
|
};
|
|
1032
|
+
readonly 'login-oauth-heading': {
|
|
1033
|
+
readonly zh: "订阅账号(OAuth):";
|
|
1034
|
+
readonly en: "Subscriptions (OAuth):";
|
|
1035
|
+
};
|
|
1036
|
+
readonly 'login-oauth-row': {
|
|
1037
|
+
readonly zh: " {{provider}} — {{state}}";
|
|
1038
|
+
readonly en: " {{provider}} — {{state}}";
|
|
1039
|
+
};
|
|
1040
|
+
readonly 'login-oauth-in': {
|
|
1041
|
+
readonly zh: "已登录 · 令牌到期 {{time}}";
|
|
1042
|
+
readonly en: "signed in · token expires {{time}}";
|
|
1043
|
+
};
|
|
1044
|
+
readonly 'login-oauth-expired': {
|
|
1045
|
+
readonly zh: "已登录但令牌已过期,重新登录可恢复";
|
|
1046
|
+
readonly en: "signed in but the token expired — sign in again to restore";
|
|
1047
|
+
};
|
|
1048
|
+
readonly 'login-oauth-signed-out': {
|
|
1049
|
+
readonly zh: "未登录";
|
|
1050
|
+
readonly en: "not signed in";
|
|
1051
|
+
};
|
|
1052
|
+
readonly 'login-oauth-hint': {
|
|
1053
|
+
readonly zh: " 登录/登出:/provider 订阅账号登录,或 /auth login <provider>";
|
|
1054
|
+
readonly en: " Sign in/out: /provider subscription sign-in, or /auth login <provider>";
|
|
1055
|
+
};
|
|
802
1056
|
readonly 'permission-policy-hint': {
|
|
803
1057
|
readonly zh: "DSH 权限策略由 fs-policy / bash-sandbox 配置决定(当前 leaf:workspace 内读写、写入需已读文件)。";
|
|
804
1058
|
readonly en: "DSH permission policy is set by fs-policy / bash-sandbox config (current leaf: read/write in workspace, writes need a prior read).";
|
|
@@ -907,6 +1161,62 @@ declare const dict: {
|
|
|
907
1161
|
readonly zh: "镜像 registry 滞后:本次安装 v{{latest}};官方最新 v{{authoritative}},镜像同步后可再 /update。";
|
|
908
1162
|
readonly en: "Mirror registry lag: installing v{{latest}} now; official latest is v{{authoritative}} — run /update again once the mirror syncs.";
|
|
909
1163
|
};
|
|
1164
|
+
readonly 'reload-header': {
|
|
1165
|
+
readonly zh: "已重读偏好文件:";
|
|
1166
|
+
readonly en: "Preferences reloaded:";
|
|
1167
|
+
};
|
|
1168
|
+
readonly 'reload-applied': {
|
|
1169
|
+
readonly zh: "{{kind}} {{from}} → {{to}}(已应用)";
|
|
1170
|
+
readonly en: "{{kind}} {{from}} → {{to}} (applied)";
|
|
1171
|
+
};
|
|
1172
|
+
readonly 'reload-unchanged': {
|
|
1173
|
+
readonly zh: "{{kind}} 无变化";
|
|
1174
|
+
readonly en: "{{kind}} unchanged";
|
|
1175
|
+
};
|
|
1176
|
+
readonly 'reload-skipped-env': {
|
|
1177
|
+
readonly zh: "{{kind}} 跳过:环境变量优先";
|
|
1178
|
+
readonly en: "{{kind}} skipped: env override wins";
|
|
1179
|
+
};
|
|
1180
|
+
readonly 'reload-skipped-config': {
|
|
1181
|
+
readonly zh: "{{kind}} 跳过:显式配置优先";
|
|
1182
|
+
readonly en: "{{kind}} skipped: explicit config wins";
|
|
1183
|
+
};
|
|
1184
|
+
readonly 'reload-skipped-invalid': {
|
|
1185
|
+
readonly zh: "{{kind}} 跳过:文件缺失或无效";
|
|
1186
|
+
readonly en: "{{kind}} skipped: missing or invalid file";
|
|
1187
|
+
};
|
|
1188
|
+
readonly 'reload-footer': {
|
|
1189
|
+
readonly zh: "提示:settings.yaml / cordis.patch.yml 由 watcher 自动热重载;cordis.yml 根配置改动需 /restart";
|
|
1190
|
+
readonly en: "Note: settings.yaml / cordis.patch.yml hot-reload via watchers; cordis.yml root config changes need /restart";
|
|
1191
|
+
};
|
|
1192
|
+
readonly 'reload-kind-theme': {
|
|
1193
|
+
readonly zh: "主题";
|
|
1194
|
+
readonly en: "theme";
|
|
1195
|
+
};
|
|
1196
|
+
readonly 'reload-kind-lang': {
|
|
1197
|
+
readonly zh: "语言";
|
|
1198
|
+
readonly en: "language";
|
|
1199
|
+
};
|
|
1200
|
+
readonly 'reload-kind-preset': {
|
|
1201
|
+
readonly zh: "预设";
|
|
1202
|
+
readonly en: "preset";
|
|
1203
|
+
};
|
|
1204
|
+
readonly 'reload-kind-model': {
|
|
1205
|
+
readonly zh: "模型";
|
|
1206
|
+
readonly en: "model";
|
|
1207
|
+
};
|
|
1208
|
+
readonly 'reload-kind-activity': {
|
|
1209
|
+
readonly zh: "活动指示";
|
|
1210
|
+
readonly en: "activity";
|
|
1211
|
+
};
|
|
1212
|
+
readonly 'restart-starting': {
|
|
1213
|
+
readonly zh: "正在重启 dsh-tui,完成后自动恢复当前会话……";
|
|
1214
|
+
readonly en: "Restarting dsh-tui. The session resumes when it comes back…";
|
|
1215
|
+
};
|
|
1216
|
+
readonly 'restart-unavailable': {
|
|
1217
|
+
readonly zh: "当前运行方式不支持进程内重启(未挂载重启通道)。";
|
|
1218
|
+
readonly en: "Restart is unavailable in this launch mode (no restart channel mounted).";
|
|
1219
|
+
};
|
|
910
1220
|
readonly 'streaming-folded': {
|
|
911
1221
|
readonly zh: "…(前 {{count}} 字符流式期间已折叠,落定后完整显示)";
|
|
912
1222
|
readonly en: "…(first {{count}} chars folded while streaming; full text renders once the turn settles)";
|
|
@@ -920,8 +1230,8 @@ declare const dict: {
|
|
|
920
1230
|
readonly en: "Recommended: Windows Terminal (≥110 columns, monospace, TrueColor).";
|
|
921
1231
|
};
|
|
922
1232
|
readonly 'terminal-paste-hint': {
|
|
923
|
-
readonly zh: "{{mod}}V 粘贴文本、文件路径或图片;Ctrl+Shift+V
|
|
924
|
-
readonly en: "{{mod}}V pastes text, file paths, or images; Ctrl+Shift+V is native terminal paste; right-click paste also works.";
|
|
1233
|
+
readonly zh: "{{mod}}V 或 Alt+V 粘贴文本、文件路径或图片;Ctrl+Shift+V 终端原生粘贴;右键粘贴同样可用;快捷键可在 /settings 修改。";
|
|
1234
|
+
readonly en: "{{mod}}V or Alt+V pastes text, file paths, or images; Ctrl+Shift+V is native terminal paste; right-click paste also works; remappable via /settings.";
|
|
925
1235
|
};
|
|
926
1236
|
readonly 'connect-none': {
|
|
927
1237
|
readonly zh: "DSH 暂无远程连接机制(CC 的 /connect 对应能力未适配)。";
|
|
@@ -955,6 +1265,82 @@ declare const dict: {
|
|
|
955
1265
|
readonly zh: "侧问不可用(llm 服务未挂载)";
|
|
956
1266
|
readonly en: "Side question unavailable (llm service not mounted)";
|
|
957
1267
|
};
|
|
1268
|
+
readonly 'recap-llm-unavailable': {
|
|
1269
|
+
readonly zh: "recap 不可用(llm 服务未挂载)";
|
|
1270
|
+
readonly en: "Recap unavailable (llm service not mounted)";
|
|
1271
|
+
};
|
|
1272
|
+
readonly 'recap-no-activity': {
|
|
1273
|
+
readonly zh: "会话还没有可总结的活动";
|
|
1274
|
+
readonly en: "No session activity to recap yet";
|
|
1275
|
+
};
|
|
1276
|
+
readonly 'recap-answering': {
|
|
1277
|
+
readonly zh: "正在总结最近活动…";
|
|
1278
|
+
readonly en: "Summarizing recent activity…";
|
|
1279
|
+
};
|
|
1280
|
+
readonly 'recap-title-label': {
|
|
1281
|
+
readonly zh: "建议标题";
|
|
1282
|
+
readonly en: "Suggested title";
|
|
1283
|
+
};
|
|
1284
|
+
readonly 'recap-apply-title': {
|
|
1285
|
+
readonly zh: "应用";
|
|
1286
|
+
readonly en: "Apply";
|
|
1287
|
+
};
|
|
1288
|
+
readonly 'recap-title-applied': {
|
|
1289
|
+
readonly zh: "已应用";
|
|
1290
|
+
readonly en: "Applied";
|
|
1291
|
+
};
|
|
1292
|
+
readonly 'recap-title-applied-notify': {
|
|
1293
|
+
readonly zh: "已将会话标题设为「{{title}}」";
|
|
1294
|
+
readonly en: "Session title set to \"{{title}}\"";
|
|
1295
|
+
};
|
|
1296
|
+
readonly 'recap-hint': {
|
|
1297
|
+
readonly zh: "↑/↓ 滚动 · Space/Enter/Esc 关闭 · c 复制{{apply}}";
|
|
1298
|
+
readonly en: "↑/↓ scroll · Space/Enter/Esc dismiss · c copy{{apply}}";
|
|
1299
|
+
};
|
|
1300
|
+
readonly 'recap-auto-hint': {
|
|
1301
|
+
readonly zh: "点击展开查看/应用";
|
|
1302
|
+
readonly en: "Click to expand & apply";
|
|
1303
|
+
};
|
|
1304
|
+
readonly 'recap-auto-close': {
|
|
1305
|
+
readonly zh: "关闭";
|
|
1306
|
+
readonly en: "Dismiss";
|
|
1307
|
+
};
|
|
1308
|
+
readonly 'recap-auto-line': {
|
|
1309
|
+
readonly zh: "回顾:{{summary}}";
|
|
1310
|
+
readonly en: "Recap: {{summary}}";
|
|
1311
|
+
};
|
|
1312
|
+
readonly 'recap-panel-title': {
|
|
1313
|
+
readonly zh: "会话回顾";
|
|
1314
|
+
readonly en: "Session recap";
|
|
1315
|
+
};
|
|
1316
|
+
readonly 'recap-panel-subtitle': {
|
|
1317
|
+
readonly zh: "最近活动的快速复盘";
|
|
1318
|
+
readonly en: "A quick recap of recent activity";
|
|
1319
|
+
};
|
|
1320
|
+
readonly 'color-current': {
|
|
1321
|
+
readonly zh: "当前会话颜色 {{name}}";
|
|
1322
|
+
readonly en: "Current session color {{name}}";
|
|
1323
|
+
};
|
|
1324
|
+
readonly 'color-current-none': {
|
|
1325
|
+
readonly zh: "当前会话未设置颜色(用主题默认)";
|
|
1326
|
+
readonly en: "No session color set (theme default)";
|
|
1327
|
+
};
|
|
1328
|
+
readonly 'color-usage': {
|
|
1329
|
+
readonly zh: "用法:/color <{{list}}|reset> —— 颜色按会话保存,resume 后仍在";
|
|
1330
|
+
readonly en: "Usage: /color <{{list}}|reset> — per-session, survives resume";
|
|
1331
|
+
};
|
|
1332
|
+
readonly 'color-reset': {
|
|
1333
|
+
readonly zh: "已清除会话颜色,恢复主题默认";
|
|
1334
|
+
readonly en: "Session color cleared — back to the theme default";
|
|
1335
|
+
};
|
|
1336
|
+
readonly 'color-unknown': {
|
|
1337
|
+
readonly zh: "未知颜色「{{name}}」· 可选:{{list}}";
|
|
1338
|
+
readonly en: "Unknown color \"{{name}}\" · available: {{list}}";
|
|
1339
|
+
};
|
|
1340
|
+
readonly 'color-set': {
|
|
1341
|
+
readonly zh: "会话颜色已设为 {{name}}";
|
|
1342
|
+
readonly en: "Session color set to {{name}}";
|
|
1343
|
+
};
|
|
958
1344
|
readonly 'exit-press-again': {
|
|
959
1345
|
readonly zh: "再次按 Ctrl+C 退出";
|
|
960
1346
|
readonly en: "Press Ctrl+C again to exit";
|
|
@@ -1008,12 +1394,12 @@ declare const dict: {
|
|
|
1008
1394
|
readonly en: "dsh-tui update aborted: no dsh profile resolved.";
|
|
1009
1395
|
};
|
|
1010
1396
|
readonly 'update-launcher-align-unknown': {
|
|
1011
|
-
readonly zh: "Profile 已更新到 v{{version}}。如果你平时使用全局 dsh-tui 命令启动,请同步更新全局启动器:\n npm install -g @deepseek-harness-tui/dsh-tui@{{version}}";
|
|
1012
|
-
readonly en: "The profile is now v{{version}}. If you normally launch with the global dsh-tui command, align the global launcher too:\n npm install -g @deepseek-harness-tui/dsh-tui@{{version}}";
|
|
1397
|
+
readonly zh: "Profile 已更新到 v{{version}}。如果你平时使用全局 dsh-tui 命令启动,请同步更新全局启动器:\n npm install -g --legacy-peer-deps @deepseek-harness-tui/dsh-tui@{{version}}\n(--legacy-peer-deps 可绕过 npm 12 的 peer 解析崩溃,全局启动器是瘦壳,跳过全局 peer 解析是安全的)";
|
|
1398
|
+
readonly en: "The profile is now v{{version}}. If you normally launch with the global dsh-tui command, align the global launcher too:\n npm install -g --legacy-peer-deps @deepseek-harness-tui/dsh-tui@{{version}}\n(--legacy-peer-deps works around an npm 12 peer-resolution crash; the global launcher is a thin shim, so skipping global peer resolution is safe.)";
|
|
1013
1399
|
};
|
|
1014
1400
|
readonly 'update-launcher-outdated': {
|
|
1015
|
-
readonly zh: "Profile 已更新到 v{{profile}},但全局启动器仍是 v{{launcher}}。请同步更新:\n npm install -g @deepseek-harness-tui/dsh-tui@{{profile}}";
|
|
1016
|
-
readonly en: "The profile is now v{{profile}}, but the global launcher is still v{{launcher}}. Align it with:\n npm install -g @deepseek-harness-tui/dsh-tui@{{profile}}";
|
|
1401
|
+
readonly zh: "Profile 已更新到 v{{profile}},但全局启动器仍是 v{{launcher}}。请同步更新:\n npm install -g --legacy-peer-deps @deepseek-harness-tui/dsh-tui@{{profile}}\n(--legacy-peer-deps 可绕过 npm 12 的 peer 解析崩溃,见 #459)";
|
|
1402
|
+
readonly en: "The profile is now v{{profile}}, but the global launcher is still v{{launcher}}. Align it with:\n npm install -g --legacy-peer-deps @deepseek-harness-tui/dsh-tui@{{profile}}\n(--legacy-peer-deps works around an npm 12 peer-resolution crash, see #459.)";
|
|
1017
1403
|
};
|
|
1018
1404
|
readonly 'activity-ctx-warn': {
|
|
1019
1405
|
readonly zh: "⚠ 上下文";
|
|
@@ -1159,10 +1545,6 @@ declare const dict: {
|
|
|
1159
1545
|
readonly zh: "无法读取剪贴板:没有可用的 wl-paste / xclip / xsel(未安装或会话不可连接)";
|
|
1160
1546
|
readonly en: "Cannot read clipboard: no usable wl-paste / xclip / xsel (not installed or session unreachable)";
|
|
1161
1547
|
};
|
|
1162
|
-
readonly 'input-clipboard-image-saved': {
|
|
1163
|
-
readonly zh: "剪贴板图片已保存为临时文件,已插入路径";
|
|
1164
|
-
readonly en: "Clipboard image saved to a temp file; path inserted";
|
|
1165
|
-
};
|
|
1166
1548
|
readonly 'input-image-pasted': {
|
|
1167
1549
|
readonly zh: "已粘贴图片 {{token}}";
|
|
1168
1550
|
readonly en: "Pasted image {{token}}";
|
|
@@ -1183,53 +1565,17 @@ declare const dict: {
|
|
|
1183
1565
|
readonly zh: "撤回 · Esc 打断并立即发送";
|
|
1184
1566
|
readonly en: "Retract · Esc interrupts and sends immediately";
|
|
1185
1567
|
};
|
|
1186
|
-
readonly '
|
|
1187
|
-
readonly zh: "
|
|
1188
|
-
readonly en: "
|
|
1189
|
-
};
|
|
1190
|
-
readonly 'frame-fin-1': {
|
|
1191
|
-
readonly zh: "动腹鳍1";
|
|
1192
|
-
readonly en: "fin1";
|
|
1193
|
-
};
|
|
1194
|
-
readonly 'frame-fin-2': {
|
|
1195
|
-
readonly zh: "动腹鳍2";
|
|
1196
|
-
readonly en: "fin2";
|
|
1197
|
-
};
|
|
1198
|
-
readonly 'frame-spout-1': {
|
|
1199
|
-
readonly zh: "喷水花1";
|
|
1200
|
-
readonly en: "spout1";
|
|
1201
|
-
};
|
|
1202
|
-
readonly 'frame-spout-2': {
|
|
1203
|
-
readonly zh: "喷水花2";
|
|
1204
|
-
readonly en: "spout2";
|
|
1205
|
-
};
|
|
1206
|
-
readonly 'frame-spout-3': {
|
|
1207
|
-
readonly zh: "喷水花3";
|
|
1208
|
-
readonly en: "spout3";
|
|
1209
|
-
};
|
|
1210
|
-
readonly 'frame-spout-4': {
|
|
1211
|
-
readonly zh: "喷水花4";
|
|
1212
|
-
readonly en: "spout4";
|
|
1213
|
-
};
|
|
1214
|
-
readonly 'frame-spout-5': {
|
|
1215
|
-
readonly zh: "喷水花5";
|
|
1216
|
-
readonly en: "spout5";
|
|
1217
|
-
};
|
|
1218
|
-
readonly 'frame-spout-6': {
|
|
1219
|
-
readonly zh: "喷水花6";
|
|
1220
|
-
readonly en: "spout6";
|
|
1221
|
-
};
|
|
1222
|
-
readonly 'frame-tail-1': {
|
|
1223
|
-
readonly zh: "摆尾巴1";
|
|
1224
|
-
readonly en: "tail1";
|
|
1568
|
+
readonly 'input-fold-stats': {
|
|
1569
|
+
readonly zh: "{{lines}} 行 · {{chars}} 字";
|
|
1570
|
+
readonly en: "{{lines}} lines · {{chars}} chars";
|
|
1225
1571
|
};
|
|
1226
|
-
readonly '
|
|
1227
|
-
readonly zh: "
|
|
1228
|
-
readonly en: "
|
|
1572
|
+
readonly 'input-fold-hover': {
|
|
1573
|
+
readonly zh: "悬停查看";
|
|
1574
|
+
readonly en: "hover to peek";
|
|
1229
1575
|
};
|
|
1230
|
-
readonly '
|
|
1231
|
-
readonly zh: "
|
|
1232
|
-
readonly en: "
|
|
1576
|
+
readonly 'input-fold-peek-footer': {
|
|
1577
|
+
readonly zh: "… 共 {{lines}} 行 · 点击展开编辑";
|
|
1578
|
+
readonly en: "… {{lines}} lines total · click to edit";
|
|
1233
1579
|
};
|
|
1234
1580
|
readonly 'sugg-commands-title': {
|
|
1235
1581
|
readonly zh: "命令";
|
|
@@ -1287,10 +1633,22 @@ declare const dict: {
|
|
|
1287
1633
|
readonly zh: "动画帧预设";
|
|
1288
1634
|
readonly en: "Animation frame preset";
|
|
1289
1635
|
};
|
|
1636
|
+
readonly 'sugg-color-reset-desc': {
|
|
1637
|
+
readonly zh: "清除会话颜色,恢复主题默认";
|
|
1638
|
+
readonly en: "Clear the session color";
|
|
1639
|
+
};
|
|
1640
|
+
readonly 'sugg-color-name-desc': {
|
|
1641
|
+
readonly zh: "会话强调色";
|
|
1642
|
+
readonly en: "Session accent color";
|
|
1643
|
+
};
|
|
1290
1644
|
readonly 'settings-fullscreen-restart': {
|
|
1291
1645
|
readonly zh: "全屏设置已保存,重启 dsh-tui 后生效";
|
|
1292
1646
|
readonly en: "Fullscreen preference saved — restart dsh-tui to apply";
|
|
1293
1647
|
};
|
|
1648
|
+
readonly 'settings-fullscreen-migrated': {
|
|
1649
|
+
readonly zh: "全屏已是出厂默认(已清除更新前的 inline 选择);偏好 inline 可在 /settings 改回";
|
|
1650
|
+
readonly en: "Fullscreen is now the factory default (pre-update inline choice cleared); prefer inline? Switch back in /settings";
|
|
1651
|
+
};
|
|
1294
1652
|
readonly 'help-for-commands': {
|
|
1295
1653
|
readonly zh: "/ 查看命令";
|
|
1296
1654
|
readonly en: "/ for commands";
|
|
@@ -1639,10 +1997,6 @@ declare const dict: {
|
|
|
1639
1997
|
readonly zh: "**Enter** 确认 · Esc 退出";
|
|
1640
1998
|
readonly en: "**Enter** to confirm · Esc to exit";
|
|
1641
1999
|
};
|
|
1642
|
-
readonly 'hint-confirm-cancel': {
|
|
1643
|
-
readonly zh: "**Enter** 确认 · Esc 取消";
|
|
1644
|
-
readonly en: "**Enter** to confirm · Esc to cancel";
|
|
1645
|
-
};
|
|
1646
2000
|
readonly 'hint-select-exit': {
|
|
1647
2001
|
readonly zh: "**Enter** 选择 · Esc 退出";
|
|
1648
2002
|
readonly en: "**Enter** to select · Esc to exit";
|
|
@@ -1667,6 +2021,14 @@ declare const dict: {
|
|
|
1667
2021
|
readonly zh: "? 查看快捷键";
|
|
1668
2022
|
readonly en: "? for shortcuts";
|
|
1669
2023
|
};
|
|
2024
|
+
readonly 'status-detail-of-window': {
|
|
2025
|
+
readonly zh: "的窗口";
|
|
2026
|
+
readonly en: "of window";
|
|
2027
|
+
};
|
|
2028
|
+
readonly 'status-detail-session-id': {
|
|
2029
|
+
readonly zh: "会话日志目录与此 id 同名";
|
|
2030
|
+
readonly en: "the session log directory is named after this id";
|
|
2031
|
+
};
|
|
1670
2032
|
readonly 'hint-ext-dialog-input': {
|
|
1671
2033
|
readonly zh: "**Enter** 确认 · Esc 取消";
|
|
1672
2034
|
readonly en: "**Enter** to confirm · Esc to cancel";
|
|
@@ -1683,10 +2045,46 @@ declare const dict: {
|
|
|
1683
2045
|
readonly zh: "(ctrl+o 展开)";
|
|
1684
2046
|
readonly en: "(ctrl+o to expand)";
|
|
1685
2047
|
};
|
|
2048
|
+
readonly 'file-actions-title': {
|
|
2049
|
+
readonly zh: "文件操作";
|
|
2050
|
+
readonly en: "File actions";
|
|
2051
|
+
};
|
|
2052
|
+
readonly 'file-actions-open': {
|
|
2053
|
+
readonly zh: "打开文件";
|
|
2054
|
+
readonly en: "Open file";
|
|
2055
|
+
};
|
|
2056
|
+
readonly 'file-actions-open-dir': {
|
|
2057
|
+
readonly zh: "打开文件夹";
|
|
2058
|
+
readonly en: "Open folder";
|
|
2059
|
+
};
|
|
2060
|
+
readonly 'file-actions-reveal': {
|
|
2061
|
+
readonly zh: "打开所在文件夹";
|
|
2062
|
+
readonly en: "Reveal in folder";
|
|
2063
|
+
};
|
|
2064
|
+
readonly 'file-actions-copy': {
|
|
2065
|
+
readonly zh: "复制绝对路径";
|
|
2066
|
+
readonly en: "Copy absolute path";
|
|
2067
|
+
};
|
|
1686
2068
|
readonly 'picker-title-model': {
|
|
1687
2069
|
readonly zh: "模型";
|
|
1688
2070
|
readonly en: "Model";
|
|
1689
2071
|
};
|
|
2072
|
+
readonly 'picker-group-recent': {
|
|
2073
|
+
readonly zh: "最近使用";
|
|
2074
|
+
readonly en: "Recently used";
|
|
2075
|
+
};
|
|
2076
|
+
readonly 'picker-group-count': {
|
|
2077
|
+
readonly zh: "{{count}} 个模型";
|
|
2078
|
+
readonly en: "{{count}} models";
|
|
2079
|
+
};
|
|
2080
|
+
readonly 'hint-model-groups': {
|
|
2081
|
+
readonly zh: "**Enter** 查看模型 · Esc 退出";
|
|
2082
|
+
readonly en: "**Enter** to view models · Esc to exit";
|
|
2083
|
+
};
|
|
2084
|
+
readonly 'hint-model-back': {
|
|
2085
|
+
readonly zh: "**Enter** 切换模型 · Esc/⌫ 返回上级";
|
|
2086
|
+
readonly en: "**Enter** to switch · Esc/⌫ to go back";
|
|
2087
|
+
};
|
|
1690
2088
|
readonly 'picker-title-skills': {
|
|
1691
2089
|
readonly zh: "技能";
|
|
1692
2090
|
readonly en: "Skills";
|
|
@@ -1747,6 +2145,10 @@ declare const dict: {
|
|
|
1747
2145
|
readonly zh: "指示器预设";
|
|
1748
2146
|
readonly en: "Indicator preset";
|
|
1749
2147
|
};
|
|
2148
|
+
readonly 'picker-title-color': {
|
|
2149
|
+
readonly zh: "会话强调色";
|
|
2150
|
+
readonly en: "Session accent color";
|
|
2151
|
+
};
|
|
1750
2152
|
readonly 'picker-title-effort': {
|
|
1751
2153
|
readonly zh: "推理强度";
|
|
1752
2154
|
readonly en: "Reasoning effort";
|
|
@@ -1839,10 +2241,6 @@ declare const dict: {
|
|
|
1839
2241
|
readonly zh: "命令 \"/{{name}}\" 的调用已被拒绝——注册它的插件 \"{{owner}}\" 已被撤销 commands.invoke";
|
|
1840
2242
|
readonly en: "Command \"/{{name}}\" invocation denied — its owner plugin \"{{owner}}\" lost commands.invoke";
|
|
1841
2243
|
};
|
|
1842
|
-
readonly 'plugins-check-tui-extension': {
|
|
1843
|
-
readonly zh: "注:该 manifest 依赖 TUI 宿主扩展面(tui.dsh/v1alpha1 DecisionEvents / session.*.intercept 权限),判定基于宿主扩展覆盖层而非 vendored 社区注册表。";
|
|
1844
|
-
readonly en: "Note: this manifest relies on the TUI host-extension surface (tui.dsh/v1alpha1 DecisionEvents / session.*.intercept permissions); the verdict used the host extension overlay, not the vendored community registry.";
|
|
1845
|
-
};
|
|
1846
2244
|
readonly 'plugins-trust-banner': {
|
|
1847
2245
|
readonly zh: "插件与宿主同进程运行:授权是行为约束而非安全隔离;通过校验 ≠ 插件安全(C-070)。";
|
|
1848
2246
|
readonly en: "Plugins run in-process with the host: grants are behavioral constraints, not a security boundary; passing validation ≠ a safe plugin (C-070).";
|
|
@@ -1869,7 +2267,10 @@ declare const dict: {
|
|
|
1869
2267
|
};
|
|
1870
2268
|
readonly 'plugins-footprint-overflow': {
|
|
1871
2269
|
readonly zh: "…另有 {{count}} 个插件未显示";
|
|
1872
|
-
readonly en:
|
|
2270
|
+
readonly en: {
|
|
2271
|
+
readonly one: "…{{count}} more plugin not shown";
|
|
2272
|
+
readonly other: "…{{count}} more plugins not shown";
|
|
2273
|
+
};
|
|
1873
2274
|
};
|
|
1874
2275
|
readonly 'plugins-ledger-empty': {
|
|
1875
2276
|
readonly zh: "效果台账为空。";
|
|
@@ -2095,6 +2496,14 @@ declare const dict: {
|
|
|
2095
2496
|
readonly zh: "Esc 中断";
|
|
2096
2497
|
readonly en: "Esc cancel";
|
|
2097
2498
|
};
|
|
2499
|
+
readonly 'question-hint-previous': {
|
|
2500
|
+
readonly zh: "Esc 上一题";
|
|
2501
|
+
readonly en: "Esc previous question";
|
|
2502
|
+
};
|
|
2503
|
+
readonly 'question-hint-cancel': {
|
|
2504
|
+
readonly zh: "Ctrl+C 取消整批";
|
|
2505
|
+
readonly en: "Ctrl+C cancel batch";
|
|
2506
|
+
};
|
|
2098
2507
|
readonly 'question-hint-selected': {
|
|
2099
2508
|
readonly zh: "已选 {{n}}";
|
|
2100
2509
|
readonly en: "Selected {{n}}";
|
|
@@ -2171,10 +2580,6 @@ declare const dict: {
|
|
|
2171
2580
|
readonly zh: "失败";
|
|
2172
2581
|
readonly en: "failed";
|
|
2173
2582
|
};
|
|
2174
|
-
readonly 'subagent-running-label': {
|
|
2175
|
-
readonly zh: "运行中";
|
|
2176
|
-
readonly en: "Running";
|
|
2177
|
-
};
|
|
2178
2583
|
readonly 'subagent-started': {
|
|
2179
2584
|
readonly zh: "开始时间";
|
|
2180
2585
|
readonly en: "Started";
|
|
@@ -2183,10 +2588,6 @@ declare const dict: {
|
|
|
2183
2588
|
readonly zh: "完成时间";
|
|
2184
2589
|
readonly en: "Completed";
|
|
2185
2590
|
};
|
|
2186
|
-
readonly 'subagent-id': {
|
|
2187
|
-
readonly zh: "ID";
|
|
2188
|
-
readonly en: "ID";
|
|
2189
|
-
};
|
|
2190
2591
|
readonly 'subagent-error-label': {
|
|
2191
2592
|
readonly zh: "错误";
|
|
2192
2593
|
readonly en: "Error";
|
|
@@ -2211,14 +2612,6 @@ declare const dict: {
|
|
|
2211
2612
|
readonly zh: "↑/↓ 选择 · Enter 查看详情 · Esc 关闭";
|
|
2212
2613
|
readonly en: "↑/↓ select · Enter view detail · Esc close";
|
|
2213
2614
|
};
|
|
2214
|
-
readonly 'subagent-detail-hint-basic': {
|
|
2215
|
-
readonly zh: "↑/↓ 滚动 · Enter/Esc 返回";
|
|
2216
|
-
readonly en: "↑/↓ scroll · Enter/Esc back";
|
|
2217
|
-
};
|
|
2218
|
-
readonly 'subagent-detail-hint-enhanced': {
|
|
2219
|
-
readonly zh: "↑/↓ 滚动 · X 中断 · Esc 返回";
|
|
2220
|
-
readonly en: "↑/↓ scroll · X interrupt · Esc back";
|
|
2221
|
-
};
|
|
2222
2615
|
readonly 'subagent-card-prefix': {
|
|
2223
2616
|
readonly zh: "子代理:";
|
|
2224
2617
|
readonly en: "Subagent: ";
|
|
@@ -2455,6 +2848,78 @@ declare const dict: {
|
|
|
2455
2848
|
readonly zh: "保持当前模型";
|
|
2456
2849
|
readonly en: "Keep the current model";
|
|
2457
2850
|
};
|
|
2851
|
+
readonly 'provider-opt-oauth': {
|
|
2852
|
+
readonly zh: "订阅账号登录(OAuth)";
|
|
2853
|
+
readonly en: "Subscription sign-in (OAuth)";
|
|
2854
|
+
};
|
|
2855
|
+
readonly 'provider-opt-oauth-desc': {
|
|
2856
|
+
readonly zh: "用 ChatGPT / Claude / Grok 等官方订阅账号登录,无需 API key";
|
|
2857
|
+
readonly en: "Sign in with an official subscription (ChatGPT / Claude / Grok) — no API key";
|
|
2858
|
+
};
|
|
2859
|
+
readonly 'provider-q-oauth': {
|
|
2860
|
+
readonly zh: "登录哪个订阅账号?";
|
|
2861
|
+
readonly en: "Sign in to which subscription?";
|
|
2862
|
+
};
|
|
2863
|
+
readonly 'provider-oauth-state-in': {
|
|
2864
|
+
readonly zh: "已登录 · 令牌到期 {{time}}";
|
|
2865
|
+
readonly en: "Signed in · token expires {{time}}";
|
|
2866
|
+
};
|
|
2867
|
+
readonly 'provider-oauth-state-expired': {
|
|
2868
|
+
readonly zh: "已登录但令牌已过期,重新登录即可恢复";
|
|
2869
|
+
readonly en: "Signed in but the token expired — sign in again to restore";
|
|
2870
|
+
};
|
|
2871
|
+
readonly 'provider-q-oauth-signed': {
|
|
2872
|
+
readonly zh: "{{provider}} 已登录,接下来?";
|
|
2873
|
+
readonly en: "{{provider}} is signed in — what next?";
|
|
2874
|
+
};
|
|
2875
|
+
readonly 'provider-opt-oauth-relogin': {
|
|
2876
|
+
readonly zh: "重新登录";
|
|
2877
|
+
readonly en: "Sign in again";
|
|
2878
|
+
};
|
|
2879
|
+
readonly 'provider-opt-oauth-relogin-desc': {
|
|
2880
|
+
readonly zh: "更换账号或刷新已有凭据";
|
|
2881
|
+
readonly en: "Switch accounts or refresh the stored credential";
|
|
2882
|
+
};
|
|
2883
|
+
readonly 'provider-opt-oauth-logout': {
|
|
2884
|
+
readonly zh: "登出";
|
|
2885
|
+
readonly en: "Sign out";
|
|
2886
|
+
};
|
|
2887
|
+
readonly 'provider-opt-oauth-logout-desc': {
|
|
2888
|
+
readonly zh: "删除本地保存的 OAuth 凭据";
|
|
2889
|
+
readonly en: "Remove the locally stored OAuth credential";
|
|
2890
|
+
};
|
|
2891
|
+
readonly 'provider-oauth-none': {
|
|
2892
|
+
readonly zh: "没有可 OAuth 登录的 provider(检查 dsh-auth 插件是否挂载)";
|
|
2893
|
+
readonly en: "No OAuth-capable providers (check whether the dsh-auth plugin is mounted)";
|
|
2894
|
+
};
|
|
2895
|
+
readonly 'provider-oauth-login-ok': {
|
|
2896
|
+
readonly zh: "{{provider}} 登录成功";
|
|
2897
|
+
readonly en: "Signed in to {{provider}}";
|
|
2898
|
+
};
|
|
2899
|
+
readonly 'provider-oauth-login-failed': {
|
|
2900
|
+
readonly zh: "OAuth 登录失败 · {{{err}}}";
|
|
2901
|
+
readonly en: "OAuth sign-in failed · {{{err}}}";
|
|
2902
|
+
};
|
|
2903
|
+
readonly 'provider-oauth-logout-ok': {
|
|
2904
|
+
readonly zh: "{{provider}} 已登出";
|
|
2905
|
+
readonly en: "Signed out of {{provider}}";
|
|
2906
|
+
};
|
|
2907
|
+
readonly 'provider-line-oauth-provider': {
|
|
2908
|
+
readonly zh: "路由:{{provider}}";
|
|
2909
|
+
readonly en: "Route: {{provider}}";
|
|
2910
|
+
};
|
|
2911
|
+
readonly 'provider-line-oauth-flow': {
|
|
2912
|
+
readonly zh: "登录方式:{{flow}}";
|
|
2913
|
+
readonly en: "Sign-in: {{flow}}";
|
|
2914
|
+
};
|
|
2915
|
+
readonly 'provider-line-oauth-expires': {
|
|
2916
|
+
readonly zh: "令牌到期:{{time}}";
|
|
2917
|
+
readonly en: "Token expires: {{time}}";
|
|
2918
|
+
};
|
|
2919
|
+
readonly 'provider-line-oauth-out': {
|
|
2920
|
+
readonly zh: "已登出,本地 OAuth 凭据已删除";
|
|
2921
|
+
readonly en: "Signed out — the stored OAuth credential was removed";
|
|
2922
|
+
};
|
|
2458
2923
|
readonly 'cmd-desc-new': {
|
|
2459
2924
|
readonly zh: "新开会话";
|
|
2460
2925
|
};
|
|
@@ -2470,6 +2935,9 @@ declare const dict: {
|
|
|
2470
2935
|
readonly 'cmd-desc-rename': {
|
|
2471
2936
|
readonly zh: "重命名当前会话";
|
|
2472
2937
|
};
|
|
2938
|
+
readonly 'cmd-desc-recap': {
|
|
2939
|
+
readonly zh: "生成最近会话活动摘要(可应用建议标题)";
|
|
2940
|
+
};
|
|
2473
2941
|
readonly 'cmd-desc-quit': {
|
|
2474
2942
|
readonly zh: "退出 dsh-tui";
|
|
2475
2943
|
};
|
|
@@ -2479,6 +2947,12 @@ declare const dict: {
|
|
|
2479
2947
|
readonly 'cmd-desc-rewind': {
|
|
2480
2948
|
readonly zh: "回退会话到历史消息";
|
|
2481
2949
|
};
|
|
2950
|
+
readonly 'cmd-desc-tree': {
|
|
2951
|
+
readonly zh: "浏览会话分叉树(回退/分叉/切分支)";
|
|
2952
|
+
};
|
|
2953
|
+
readonly 'cmd-desc-fork': {
|
|
2954
|
+
readonly zh: "把当前会话分叉为可恢复副本";
|
|
2955
|
+
};
|
|
2482
2956
|
readonly 'cmd-desc-export': {
|
|
2483
2957
|
readonly zh: "导出会话为 Markdown 文件";
|
|
2484
2958
|
};
|
|
@@ -2494,6 +2968,9 @@ declare const dict: {
|
|
|
2494
2968
|
readonly 'cmd-desc-config': {
|
|
2495
2969
|
readonly zh: "查看 dsh-tui 配置来源";
|
|
2496
2970
|
};
|
|
2971
|
+
readonly 'cmd-desc-reload': {
|
|
2972
|
+
readonly zh: "重读偏好文件并立即生效";
|
|
2973
|
+
};
|
|
2497
2974
|
readonly 'cmd-desc-settings': {
|
|
2498
2975
|
readonly zh: "查看和编辑插件设置";
|
|
2499
2976
|
};
|
|
@@ -2515,6 +2992,9 @@ declare const dict: {
|
|
|
2515
2992
|
readonly 'cmd-desc-theme': {
|
|
2516
2993
|
readonly zh: "切换配色主题(auto 跟随系统,或内置/自定义)";
|
|
2517
2994
|
};
|
|
2995
|
+
readonly 'cmd-desc-color': {
|
|
2996
|
+
readonly zh: "设置当前会话强调色(输入框边框与会话标签)";
|
|
2997
|
+
};
|
|
2518
2998
|
readonly 'cmd-desc-lang': {
|
|
2519
2999
|
readonly zh: "切换界面语言(en / zh)";
|
|
2520
3000
|
};
|
|
@@ -2602,6 +3082,9 @@ declare const dict: {
|
|
|
2602
3082
|
readonly 'cmd-desc-help': {
|
|
2603
3083
|
readonly zh: "查看快捷键与命令";
|
|
2604
3084
|
};
|
|
3085
|
+
readonly 'cmd-desc-restart': {
|
|
3086
|
+
readonly zh: "重启 dsh-tui 并恢复当前会话";
|
|
3087
|
+
};
|
|
2605
3088
|
readonly 'cmd-desc-exit': {
|
|
2606
3089
|
readonly zh: "退出 dsh-tui";
|
|
2607
3090
|
};
|
|
@@ -2734,74 +3217,10 @@ declare const dict: {
|
|
|
2734
3217
|
readonly zh: "**j/k** 翻页 · **enter/esc** 收起 · **q** 退出";
|
|
2735
3218
|
readonly en: "**j/k** page · **enter/esc** collapse · **q** exit";
|
|
2736
3219
|
};
|
|
2737
|
-
readonly 'traj-empty': {
|
|
2738
|
-
readonly zh: "暂无轨迹事件";
|
|
2739
|
-
readonly en: "No trajectory events yet";
|
|
2740
|
-
};
|
|
2741
3220
|
readonly 'traj-hint-failure': {
|
|
2742
3221
|
readonly zh: "{{key}} 看完整轨迹";
|
|
2743
3222
|
readonly en: "{{key}} for the full trajectory";
|
|
2744
3223
|
};
|
|
2745
|
-
readonly 'subagent.unnamed': {
|
|
2746
|
-
readonly zh: "未命名子代理";
|
|
2747
|
-
readonly en: "Unnamed subagent";
|
|
2748
|
-
};
|
|
2749
|
-
readonly 'subagent.no-model': {
|
|
2750
|
-
readonly zh: "未知模型";
|
|
2751
|
-
readonly en: "Unknown model";
|
|
2752
|
-
};
|
|
2753
|
-
readonly 'subagent.status.running': {
|
|
2754
|
-
readonly zh: "运行中";
|
|
2755
|
-
readonly en: "Running";
|
|
2756
|
-
};
|
|
2757
|
-
readonly 'subagent.status.completed': {
|
|
2758
|
-
readonly zh: "已完成";
|
|
2759
|
-
readonly en: "Completed";
|
|
2760
|
-
};
|
|
2761
|
-
readonly 'subagent.status.failed': {
|
|
2762
|
-
readonly zh: "失败";
|
|
2763
|
-
readonly en: "Failed";
|
|
2764
|
-
};
|
|
2765
|
-
readonly 'subagent.status.pending': {
|
|
2766
|
-
readonly zh: "等待中";
|
|
2767
|
-
readonly en: "Pending";
|
|
2768
|
-
};
|
|
2769
|
-
readonly 'subagent.dashboard.title': {
|
|
2770
|
-
readonly zh: "子代理面板";
|
|
2771
|
-
readonly en: "Subagent Dashboard";
|
|
2772
|
-
};
|
|
2773
|
-
readonly 'subagent.dashboard.stats': {
|
|
2774
|
-
readonly zh: "运行中: {{running}} · 已完成: {{completed}} · 失败: {{failed}}";
|
|
2775
|
-
readonly en: "Running: {{running}} · Completed: {{completed}} · Failed: {{failed}}";
|
|
2776
|
-
};
|
|
2777
|
-
readonly 'subagent.dashboard.empty': {
|
|
2778
|
-
readonly zh: "暂无子代理";
|
|
2779
|
-
readonly en: "No subagents yet";
|
|
2780
|
-
};
|
|
2781
|
-
readonly 'subagent.dashboard.help': {
|
|
2782
|
-
readonly zh: "↑↓ 选择 · Enter 查看详情 · Esc 返回";
|
|
2783
|
-
readonly en: "↑↓ select · Enter view details · Esc back";
|
|
2784
|
-
};
|
|
2785
|
-
readonly 'subagent.detail.not-found': {
|
|
2786
|
-
readonly zh: "子代理未找到";
|
|
2787
|
-
readonly en: "Subagent not found";
|
|
2788
|
-
};
|
|
2789
|
-
readonly 'subagent.detail.press-esc': {
|
|
2790
|
-
readonly zh: "按 Esc 返回";
|
|
2791
|
-
readonly en: "Press Esc to go back";
|
|
2792
|
-
};
|
|
2793
|
-
readonly 'subagent.detail.output': {
|
|
2794
|
-
readonly zh: "输出";
|
|
2795
|
-
readonly en: "Output";
|
|
2796
|
-
};
|
|
2797
|
-
readonly 'subagent.detail.no-output': {
|
|
2798
|
-
readonly zh: "暂无输出";
|
|
2799
|
-
readonly en: "No output yet";
|
|
2800
|
-
};
|
|
2801
|
-
readonly 'subagent.detail.help': {
|
|
2802
|
-
readonly zh: "Esc 返回面板";
|
|
2803
|
-
readonly en: "Esc back to dashboard";
|
|
2804
|
-
};
|
|
2805
3224
|
};
|
|
2806
3225
|
export type I18nKey = keyof typeof dict;
|
|
2807
3226
|
export type I18nParams = Record<string, string | number>;
|
|
@@ -2834,6 +3253,11 @@ export declare function t(key: I18nKey, params?: I18nParams): string;
|
|
|
2834
3253
|
* @param params - Placeholder values substituted into whichever text wins.
|
|
2835
3254
|
*/
|
|
2836
3255
|
export declare function tOr(key: string, fallback: string, params?: I18nParams): string;
|
|
3256
|
+
/** Read-only view of the dictionary for audits (scripts/verify-i18n.ts). */
|
|
3257
|
+
export declare const i18nDict: Readonly<Record<string, {
|
|
3258
|
+
readonly zh?: I18nText;
|
|
3259
|
+
readonly en?: I18nText;
|
|
3260
|
+
}>>;
|
|
2837
3261
|
/**
|
|
2838
3262
|
* Parse a persisted `{ lang }` value; anything else yields undefined.
|
|
2839
3263
|
* @param text - Raw file contents.
|
|
@@ -2845,12 +3269,16 @@ export declare function readLangPref(dir?: string): Lang | undefined;
|
|
|
2845
3269
|
export declare function writeLangPref(lang: Lang, dir?: string): boolean;
|
|
2846
3270
|
/**
|
|
2847
3271
|
* Guess the user's language from the OS locale (`LC_ALL`, `LC_MESSAGES`,
|
|
2848
|
-
* `LANG`)
|
|
2849
|
-
*
|
|
2850
|
-
*
|
|
2851
|
-
*
|
|
2852
|
-
*
|
|
2853
|
-
*
|
|
3272
|
+
* `LANG`). Only consulted when nothing else (env var, cordis.yml `lang`,
|
|
3273
|
+
* persisted `/lang` choice) pinned a language. `zh*` maps to zh; every
|
|
3274
|
+
* other stated locale (en, but also fr/de/ja/…) maps to en — English is
|
|
3275
|
+
* the lingua-franca fallback for a locale we don't ship, and a German
|
|
3276
|
+
* user must not get a Chinese UI. The POSIX/C locale means "no locale
|
|
3277
|
+
* selected" and conventionally maps to English — importantly it is what
|
|
3278
|
+
* CI runners (LANG=C.UTF-8) report, so tests asserting English UI copy
|
|
3279
|
+
* stay deterministic. Only an ABSENT locale (typical on Windows, where
|
|
3280
|
+
* these POSIX vars don't exist and imply nothing about the user) keeps
|
|
3281
|
+
* the zh default.
|
|
2854
3282
|
*/
|
|
2855
3283
|
export declare function detectLocaleLang(): Lang;
|
|
2856
3284
|
/**
|