@deepseek-harness-tui/dsh-tui 0.8.6 → 0.8.8
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 +15 -5
- package/bin/dsh-tui.js +269 -218
- package/cordis.patch.yml +48 -22
- package/lib/types/cc/figures.d.ts.map +1 -1
- package/lib/types/cc/figures.js +14 -13
- package/lib/types/cc/syntaxRuns.d.ts +16 -0
- package/lib/types/cc/syntaxRuns.d.ts.map +1 -0
- package/lib/types/cc/syntaxRuns.js +79 -0
- package/lib/types/commands.d.ts +14 -0
- package/lib/types/commands.d.ts.map +1 -1
- package/lib/types/commands.js +20 -1
- package/lib/types/components/Chat/SubagentMessage.d.ts +19 -0
- package/lib/types/components/Chat/SubagentMessage.d.ts.map +1 -0
- package/lib/types/components/Chat/SubagentMessage.js +75 -0
- package/lib/types/components/EffortInputBorder.d.ts.map +1 -1
- package/lib/types/components/EffortInputBorder.js +2 -2
- package/lib/types/components/EffortTierBadge.js +1 -1
- package/lib/types/components/FileSuggestions.d.ts +8 -4
- package/lib/types/components/FileSuggestions.d.ts.map +1 -1
- package/lib/types/components/FileSuggestions.js +22 -12
- package/lib/types/components/HelpMenu.d.ts +8 -1
- package/lib/types/components/HelpMenu.d.ts.map +1 -1
- package/lib/types/components/HelpMenu.js +15 -4
- 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 +13 -4
- package/lib/types/components/MessageList.d.ts +6 -2
- package/lib/types/components/MessageList.d.ts.map +1 -1
- package/lib/types/components/MessageList.js +17 -6
- package/lib/types/components/ModelPicker.js +2 -2
- package/lib/types/components/PromptInput.d.ts +1 -1
- package/lib/types/components/PromptInput.d.ts.map +1 -1
- package/lib/types/components/PromptInput.js +100 -36
- package/lib/types/components/SkillsPicker.js +2 -2
- package/lib/types/components/SplitDiffView.d.ts +1 -13
- package/lib/types/components/SplitDiffView.d.ts.map +1 -1
- package/lib/types/components/SplitDiffView.js +6 -105
- package/lib/types/components/SubagentCard.d.ts +9 -0
- package/lib/types/components/SubagentCard.d.ts.map +1 -0
- package/lib/types/components/SubagentCard.js +26 -0
- package/lib/types/components/SubagentDashboard.d.ts +13 -0
- package/lib/types/components/SubagentDashboard.d.ts.map +1 -0
- package/lib/types/components/SubagentDashboard.js +50 -0
- package/lib/types/components/SubagentDetailScene.d.ts +16 -0
- package/lib/types/components/SubagentDetailScene.d.ts.map +1 -0
- package/lib/types/components/SubagentDetailScene.js +141 -0
- package/lib/types/components/SyntaxText.d.ts +15 -0
- package/lib/types/components/SyntaxText.d.ts.map +1 -0
- package/lib/types/components/SyntaxText.js +34 -0
- package/lib/types/components/ThinkingToggle.d.ts +3 -10
- package/lib/types/components/ThinkingToggle.d.ts.map +1 -1
- package/lib/types/components/ThinkingToggle.js +4 -9
- package/lib/types/components/design-system/ListItem.d.ts.map +1 -1
- package/lib/types/components/design-system/ListItem.js +1 -1
- package/lib/types/components/messages/AssistantThinkingMessage.d.ts.map +1 -1
- package/lib/types/components/messages/AssistantThinkingMessage.js +18 -7
- package/lib/types/components/messages/AssistantToolUseMessage.d.ts +2 -0
- package/lib/types/components/messages/AssistantToolUseMessage.d.ts.map +1 -1
- package/lib/types/components/messages/AssistantToolUseMessage.js +42 -6
- package/lib/types/components/messages/UserPromptMessage.d.ts.map +1 -1
- package/lib/types/components/messages/UserPromptMessage.js +15 -2
- package/lib/types/dsh-adapter/channel.d.ts +64 -3
- package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel.js +387 -37
- package/lib/types/dsh-adapter/contract.d.ts +67 -4
- package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
- package/lib/types/dsh-adapter/contract.js +149 -15
- package/lib/types/dsh-adapter/index.d.ts.map +1 -1
- package/lib/types/dsh-adapter/index.js +6 -6
- package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin.js +38 -0
- package/lib/types/dsh-adapter/shortcuts.js +3 -3
- package/lib/types/dsh-adapter/subagents.d.ts +87 -0
- package/lib/types/dsh-adapter/subagents.d.ts.map +1 -0
- package/lib/types/dsh-adapter/subagents.js +204 -0
- package/lib/types/herdr.d.ts +28 -0
- package/lib/types/herdr.d.ts.map +1 -0
- package/lib/types/herdr.js +133 -0
- package/lib/types/i18n.d.ts +233 -32
- package/lib/types/i18n.d.ts.map +1 -1
- package/lib/types/i18n.js +87 -16
- package/lib/types/ink/ink.d.ts +4 -0
- package/lib/types/ink/ink.d.ts.map +1 -1
- package/lib/types/ink/ink.js +84 -38
- package/lib/types/ink/render-node-to-output.d.ts +6 -3
- package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
- package/lib/types/ink/render-node-to-output.js +33 -7
- package/lib/types/ink/selection.d.ts +29 -4
- package/lib/types/ink/selection.d.ts.map +1 -1
- package/lib/types/ink/selection.js +41 -5
- package/lib/types/minimalMode.d.ts +13 -0
- package/lib/types/minimalMode.d.ts.map +1 -0
- package/lib/types/minimalMode.js +17 -0
- package/lib/types/screens/Chat.d.ts +1 -1
- package/lib/types/screens/Chat.d.ts.map +1 -1
- package/lib/types/screens/Chat.js +94 -43
- package/lib/types/screens/StatusLine.d.ts.map +1 -1
- package/lib/types/screens/StatusLine.js +6 -2
- package/lib/types/screens/TrajectoryScene.d.ts.map +1 -1
- package/lib/types/screens/TrajectoryScene.js +4 -2
- package/lib/types/theme.d.ts +8 -0
- package/lib/types/theme.d.ts.map +1 -1
- package/lib/types/theme.js +38 -14
- package/lib/types/tips.d.ts.map +1 -1
- package/lib/types/tips.js +25 -7
- package/lib/types/update.d.ts +18 -0
- package/lib/types/update.d.ts.map +1 -1
- package/lib/types/update.js +73 -2
- package/lib/types/utils/execFileNoThrow.d.ts +3 -20
- package/lib/types/utils/execFileNoThrow.d.ts.map +1 -1
- package/lib/types/utils/execFileNoThrow.js +53 -32
- package/lib/types/utils/externalEditor.d.ts +12 -11
- package/lib/types/utils/externalEditor.d.ts.map +1 -1
- package/lib/types/utils/externalEditor.js +11 -11
- package/lib/types/utils/fileSuggestions.d.ts +19 -0
- package/lib/types/utils/fileSuggestions.d.ts.map +1 -0
- package/lib/types/utils/fileSuggestions.js +40 -0
- package/lib/types/utils/mentions.d.ts.map +1 -1
- package/lib/types/utils/mentions.js +3 -1
- package/package.json +81 -74
package/lib/types/i18n.d.ts
CHANGED
|
@@ -263,6 +263,26 @@ declare const dict: {
|
|
|
263
263
|
readonly zh: "查询失败 · {{err}}";
|
|
264
264
|
readonly en: "Query failed · {{err}}";
|
|
265
265
|
};
|
|
266
|
+
readonly 'subagent-tools': {
|
|
267
|
+
readonly zh: "工具";
|
|
268
|
+
readonly en: "Tools";
|
|
269
|
+
};
|
|
270
|
+
readonly 'subagent-expand-hint': {
|
|
271
|
+
readonly zh: "按 Enter 展开完整输出";
|
|
272
|
+
readonly en: "Press Enter to expand full output";
|
|
273
|
+
};
|
|
274
|
+
readonly 'subagent-status-running': {
|
|
275
|
+
readonly zh: "运行中";
|
|
276
|
+
readonly en: "running";
|
|
277
|
+
};
|
|
278
|
+
readonly 'subagent-status-completed': {
|
|
279
|
+
readonly zh: "已完成";
|
|
280
|
+
readonly en: "completed";
|
|
281
|
+
};
|
|
282
|
+
readonly 'subagent-status-failed': {
|
|
283
|
+
readonly zh: "失败";
|
|
284
|
+
readonly en: "failed";
|
|
285
|
+
};
|
|
266
286
|
readonly 'agent-preset-switched': {
|
|
267
287
|
readonly zh: "Agent preset 已切换:{{preset}}";
|
|
268
288
|
readonly en: "Agent preset switched: {{preset}}";
|
|
@@ -884,16 +904,16 @@ declare const dict: {
|
|
|
884
904
|
readonly en: "/{{name}}: no such command";
|
|
885
905
|
};
|
|
886
906
|
readonly 'thinking-toggled': {
|
|
887
|
-
readonly zh: "
|
|
888
|
-
readonly en: "Thinking {{state}}";
|
|
907
|
+
readonly zh: "思考过程:{{state}}";
|
|
908
|
+
readonly en: "Thinking display: {{state}}";
|
|
889
909
|
};
|
|
890
910
|
readonly 'thinking-on': {
|
|
891
|
-
readonly zh: "
|
|
892
|
-
readonly en: "
|
|
911
|
+
readonly zh: "显示";
|
|
912
|
+
readonly en: "shown";
|
|
893
913
|
};
|
|
894
914
|
readonly 'thinking-off': {
|
|
895
|
-
readonly zh: "
|
|
896
|
-
readonly en: "
|
|
915
|
+
readonly zh: "隐藏";
|
|
916
|
+
readonly en: "hidden";
|
|
897
917
|
};
|
|
898
918
|
readonly 'tokens-usage': {
|
|
899
919
|
readonly zh: "Tokens:{{in}} 输入 · {{out}} 输出";
|
|
@@ -1003,6 +1023,22 @@ declare const dict: {
|
|
|
1003
1023
|
readonly zh: "更多技巧";
|
|
1004
1024
|
readonly en: "more tips";
|
|
1005
1025
|
};
|
|
1026
|
+
readonly 'logo-drift-newer': {
|
|
1027
|
+
readonly zh: "dsh 引擎为 {{installed}},比本界面验证过的 {{validated}} 新,可能出现兼容问题;求稳可执行 npm i -g @deepseek-ai/dsh@{{primary}} 降级,或等待 dsh-tui 适配新版。";
|
|
1028
|
+
readonly en: "The dsh engine ({{installed}}) is newer than the {{validated}} this UI is validated against, so issues are possible; downgrade via npm i -g @deepseek-ai/dsh@{{primary}} for stability, or wait for a dsh-tui update.";
|
|
1029
|
+
};
|
|
1030
|
+
readonly 'logo-drift-older': {
|
|
1031
|
+
readonly zh: "dsh 引擎为 {{installed}},低于本界面验证过的 {{validated}},部分功能可能不可用;建议执行 npm i -g @deepseek-ai/dsh@{{primary}} 升级。";
|
|
1032
|
+
readonly en: "The dsh engine ({{installed}}) is older than the {{validated}} this UI is validated against; some features may be missing. Upgrade via npm i -g @deepseek-ai/dsh@{{primary}}.";
|
|
1033
|
+
};
|
|
1034
|
+
readonly 'logo-drift-mixed': {
|
|
1035
|
+
readonly zh: "检测到 dsh 引擎多版本混装({{installed}}),容易出现奇怪问题;建议执行 npm i -g @deepseek-ai/dsh@{{primary}} 统一版本。";
|
|
1036
|
+
readonly en: "Mixed dsh engine versions detected ({{installed}}), which can cause odd behavior; unify them via npm i -g @deepseek-ai/dsh@{{primary}}.";
|
|
1037
|
+
};
|
|
1038
|
+
readonly 'logo-drift-broken': {
|
|
1039
|
+
readonly zh: "dsh 引擎版本异常({{installed}}),本界面验证过 {{validated}};建议执行 npm i -g @deepseek-ai/dsh@{{primary}} 重装。";
|
|
1040
|
+
readonly en: "Unexpected dsh engine versions ({{installed}}); this UI is validated against {{validated}}. Reinstall via npm i -g @deepseek-ai/dsh@{{primary}}.";
|
|
1041
|
+
};
|
|
1006
1042
|
readonly 'input-sent-after-turn': {
|
|
1007
1043
|
readonly zh: "已发送,当前回合结束后处理";
|
|
1008
1044
|
readonly en: "Sent, processed after the current turn";
|
|
@@ -1036,8 +1072,8 @@ declare const dict: {
|
|
|
1036
1072
|
readonly en: "Clipboard is empty";
|
|
1037
1073
|
};
|
|
1038
1074
|
readonly 'input-editor-unavailable': {
|
|
1039
|
-
readonly zh: "
|
|
1040
|
-
readonly en: "No editor
|
|
1075
|
+
readonly zh: "错误:未配置编辑器。请设置 $VISUAL 或 $EDITOR 环境变量。";
|
|
1076
|
+
readonly en: "Error: No editor configured. Set $VISUAL or $EDITOR environment variable.";
|
|
1041
1077
|
};
|
|
1042
1078
|
readonly 'input-editor-failed': {
|
|
1043
1079
|
readonly zh: "外部编辑器失败:{{name}}";
|
|
@@ -1180,13 +1216,17 @@ declare const dict: {
|
|
|
1180
1216
|
readonly en: "shift+tab to cycle mode";
|
|
1181
1217
|
};
|
|
1182
1218
|
readonly 'help-open-editor': {
|
|
1183
|
-
readonly zh: "ctrl+
|
|
1184
|
-
readonly en: "ctrl+
|
|
1219
|
+
readonly zh: "ctrl+g 打开编辑器";
|
|
1220
|
+
readonly en: "ctrl+g to open editor";
|
|
1185
1221
|
};
|
|
1186
1222
|
readonly 'help-commands-title': {
|
|
1187
1223
|
readonly zh: "命令:";
|
|
1188
1224
|
readonly en: "commands:";
|
|
1189
1225
|
};
|
|
1226
|
+
readonly 'help-scroll-hint': {
|
|
1227
|
+
readonly zh: "↑/↓ 滚动 · PgUp/PgDn 翻页 · Home/End 首尾 · Esc 关闭";
|
|
1228
|
+
readonly en: "↑/↓ scroll · PgUp/PgDn page · Home/End jump · Esc close";
|
|
1229
|
+
};
|
|
1190
1230
|
readonly 'tips-title': {
|
|
1191
1231
|
readonly zh: "使用技巧(快捷键 · 命令 · 工作流 · 个性化 · 避坑)";
|
|
1192
1232
|
readonly en: "Usage tips (shortcuts · commands · workflow · display · gotchas)";
|
|
@@ -1748,36 +1788,28 @@ declare const dict: {
|
|
|
1748
1788
|
readonly en: "No";
|
|
1749
1789
|
};
|
|
1750
1790
|
readonly 'thinking-title': {
|
|
1751
|
-
readonly zh: "
|
|
1752
|
-
readonly en: "
|
|
1791
|
+
readonly zh: "思考过程显示";
|
|
1792
|
+
readonly en: "Thinking display";
|
|
1753
1793
|
};
|
|
1754
1794
|
readonly 'thinking-subtitle': {
|
|
1755
|
-
readonly zh: "
|
|
1756
|
-
readonly en: "
|
|
1795
|
+
readonly zh: "只控制思考过程是否显示,不改变模型的思考行为。";
|
|
1796
|
+
readonly en: "Only controls whether reasoning is shown; it does not change model behavior.";
|
|
1757
1797
|
};
|
|
1758
1798
|
readonly 'thinking-enabled': {
|
|
1759
|
-
readonly zh: "
|
|
1760
|
-
readonly en: "
|
|
1799
|
+
readonly zh: "显示";
|
|
1800
|
+
readonly en: "Shown";
|
|
1761
1801
|
};
|
|
1762
1802
|
readonly 'thinking-enabled-desc': {
|
|
1763
|
-
readonly zh: "DeepSeek
|
|
1764
|
-
readonly en: "DeepSeek
|
|
1803
|
+
readonly zh: "在对话中显示 DeepSeek 的思考过程";
|
|
1804
|
+
readonly en: "Show DeepSeek's reasoning in the conversation";
|
|
1765
1805
|
};
|
|
1766
1806
|
readonly 'thinking-disabled': {
|
|
1767
|
-
readonly zh: "
|
|
1768
|
-
readonly en: "
|
|
1807
|
+
readonly zh: "隐藏";
|
|
1808
|
+
readonly en: "Hidden";
|
|
1769
1809
|
};
|
|
1770
1810
|
readonly 'thinking-disabled-desc': {
|
|
1771
|
-
readonly zh: "
|
|
1772
|
-
readonly en: "
|
|
1773
|
-
};
|
|
1774
|
-
readonly 'thinking-mid-warning': {
|
|
1775
|
-
readonly zh: "在对话中途切换思考模式会增加延迟,并可能降低质量。建议在会话开始时设置。";
|
|
1776
|
-
readonly en: "Changing thinking mode mid-conversation will increase latency and may reduce quality. For best results, set this at the start of a session.";
|
|
1777
|
-
};
|
|
1778
|
-
readonly 'thinking-proceed': {
|
|
1779
|
-
readonly zh: "要继续吗?";
|
|
1780
|
-
readonly en: "Do you want to proceed?";
|
|
1811
|
+
readonly zh: "隐藏思考过程;模型仍会照常思考";
|
|
1812
|
+
readonly en: "Hide reasoning; the model will still think as usual";
|
|
1781
1813
|
};
|
|
1782
1814
|
readonly 'thinking-label': {
|
|
1783
1815
|
readonly zh: "思考";
|
|
@@ -1959,6 +1991,114 @@ declare const dict: {
|
|
|
1959
1991
|
readonly zh: "↑/↓ 选择 · Enter 确认 · Esc 拒绝";
|
|
1960
1992
|
readonly en: "↑/↓ select · Enter confirm · Esc reject";
|
|
1961
1993
|
};
|
|
1994
|
+
readonly 'subagent-model': {
|
|
1995
|
+
readonly zh: "模型";
|
|
1996
|
+
readonly en: "Model";
|
|
1997
|
+
};
|
|
1998
|
+
readonly 'subagent-duration': {
|
|
1999
|
+
readonly zh: "时长";
|
|
2000
|
+
readonly en: "Duration";
|
|
2001
|
+
};
|
|
2002
|
+
readonly 'subagent-status-label': {
|
|
2003
|
+
readonly zh: "状态";
|
|
2004
|
+
readonly en: "Status";
|
|
2005
|
+
};
|
|
2006
|
+
readonly 'subagent-status-cancelled': {
|
|
2007
|
+
readonly zh: "已取消";
|
|
2008
|
+
readonly en: "Cancelled";
|
|
2009
|
+
};
|
|
2010
|
+
readonly 'subagent-count-running': {
|
|
2011
|
+
readonly zh: "运行中";
|
|
2012
|
+
readonly en: "running";
|
|
2013
|
+
};
|
|
2014
|
+
readonly 'subagent-count-completed': {
|
|
2015
|
+
readonly zh: "已完成";
|
|
2016
|
+
readonly en: "completed";
|
|
2017
|
+
};
|
|
2018
|
+
readonly 'subagent-count-failed': {
|
|
2019
|
+
readonly zh: "失败";
|
|
2020
|
+
readonly en: "failed";
|
|
2021
|
+
};
|
|
2022
|
+
readonly 'subagent-running-label': {
|
|
2023
|
+
readonly zh: "运行中";
|
|
2024
|
+
readonly en: "Running";
|
|
2025
|
+
};
|
|
2026
|
+
readonly 'subagent-started': {
|
|
2027
|
+
readonly zh: "开始时间";
|
|
2028
|
+
readonly en: "Started";
|
|
2029
|
+
};
|
|
2030
|
+
readonly 'subagent-completed': {
|
|
2031
|
+
readonly zh: "完成时间";
|
|
2032
|
+
readonly en: "Completed";
|
|
2033
|
+
};
|
|
2034
|
+
readonly 'subagent-id': {
|
|
2035
|
+
readonly zh: "ID";
|
|
2036
|
+
readonly en: "ID";
|
|
2037
|
+
};
|
|
2038
|
+
readonly 'subagent-error-label': {
|
|
2039
|
+
readonly zh: "错误";
|
|
2040
|
+
readonly en: "Error";
|
|
2041
|
+
};
|
|
2042
|
+
readonly 'subagent-output-label': {
|
|
2043
|
+
readonly zh: "输出";
|
|
2044
|
+
readonly en: "Output";
|
|
2045
|
+
};
|
|
2046
|
+
readonly 'subagent-no-output': {
|
|
2047
|
+
readonly zh: "暂无输出";
|
|
2048
|
+
readonly en: "No output yet";
|
|
2049
|
+
};
|
|
2050
|
+
readonly 'subagent-dashboard-title': {
|
|
2051
|
+
readonly zh: " 子代理面板 ";
|
|
2052
|
+
readonly en: " Subagent Dashboard ";
|
|
2053
|
+
};
|
|
2054
|
+
readonly 'subagent-dashboard-hint-basic': {
|
|
2055
|
+
readonly zh: "↑/↓ 浏览 · Esc 关闭";
|
|
2056
|
+
readonly en: "↑/↓ browse · Esc close";
|
|
2057
|
+
};
|
|
2058
|
+
readonly 'subagent-dashboard-hint-detail': {
|
|
2059
|
+
readonly zh: "↑/↓ 选择 · Enter 查看详情 · Esc 关闭";
|
|
2060
|
+
readonly en: "↑/↓ select · Enter view detail · Esc close";
|
|
2061
|
+
};
|
|
2062
|
+
readonly 'subagent-detail-hint-basic': {
|
|
2063
|
+
readonly zh: "↑/↓ 滚动 · Enter/Esc 返回";
|
|
2064
|
+
readonly en: "↑/↓ scroll · Enter/Esc back";
|
|
2065
|
+
};
|
|
2066
|
+
readonly 'subagent-detail-hint-enhanced': {
|
|
2067
|
+
readonly zh: "↑/↓ 滚动 · X 中断 · Esc 返回";
|
|
2068
|
+
readonly en: "↑/↓ scroll · X interrupt · Esc back";
|
|
2069
|
+
};
|
|
2070
|
+
readonly 'subagent-card-prefix': {
|
|
2071
|
+
readonly zh: "子代理:";
|
|
2072
|
+
readonly en: "Subagent: ";
|
|
2073
|
+
};
|
|
2074
|
+
readonly 'subagent-tab-summary': {
|
|
2075
|
+
readonly zh: "摘要";
|
|
2076
|
+
readonly en: "Summary";
|
|
2077
|
+
};
|
|
2078
|
+
readonly 'subagent-no-summary': {
|
|
2079
|
+
readonly zh: "暂无摘要";
|
|
2080
|
+
readonly en: "No summary yet";
|
|
2081
|
+
};
|
|
2082
|
+
readonly 'subagent-no-tools': {
|
|
2083
|
+
readonly zh: "暂无工具调用";
|
|
2084
|
+
readonly en: "No tool calls";
|
|
2085
|
+
};
|
|
2086
|
+
readonly 'subagent-hint-page': {
|
|
2087
|
+
readonly zh: "切页";
|
|
2088
|
+
readonly en: "page";
|
|
2089
|
+
};
|
|
2090
|
+
readonly 'subagent-hint-scroll': {
|
|
2091
|
+
readonly zh: "滚动";
|
|
2092
|
+
readonly en: "scroll";
|
|
2093
|
+
};
|
|
2094
|
+
readonly 'subagent-hint-back': {
|
|
2095
|
+
readonly zh: "返回";
|
|
2096
|
+
readonly en: "back";
|
|
2097
|
+
};
|
|
2098
|
+
readonly 'subagent-empty-hint': {
|
|
2099
|
+
readonly zh: "让主代理发起 Task 后,子代理会出现在这里";
|
|
2100
|
+
readonly en: "Subagents appear here once the main agent starts Task delegations";
|
|
2101
|
+
};
|
|
1962
2102
|
readonly 'plan-review-fallback-header': {
|
|
1963
2103
|
readonly zh: "计划评审";
|
|
1964
2104
|
readonly en: "Plan review";
|
|
@@ -2230,7 +2370,7 @@ declare const dict: {
|
|
|
2230
2370
|
readonly zh: "查看当前模型";
|
|
2231
2371
|
};
|
|
2232
2372
|
readonly 'cmd-desc-thinking': {
|
|
2233
|
-
readonly zh: "
|
|
2373
|
+
readonly zh: "显示或隐藏思考过程";
|
|
2234
2374
|
};
|
|
2235
2375
|
readonly 'cmd-desc-tokens': {
|
|
2236
2376
|
readonly zh: "查看会话 token 用量";
|
|
@@ -2441,6 +2581,66 @@ declare const dict: {
|
|
|
2441
2581
|
readonly zh: "{{key}} 看完整轨迹";
|
|
2442
2582
|
readonly en: "{{key}} for the full trajectory";
|
|
2443
2583
|
};
|
|
2584
|
+
readonly 'subagent.unnamed': {
|
|
2585
|
+
readonly zh: "未命名子代理";
|
|
2586
|
+
readonly en: "Unnamed subagent";
|
|
2587
|
+
};
|
|
2588
|
+
readonly 'subagent.no-model': {
|
|
2589
|
+
readonly zh: "未知模型";
|
|
2590
|
+
readonly en: "Unknown model";
|
|
2591
|
+
};
|
|
2592
|
+
readonly 'subagent.status.running': {
|
|
2593
|
+
readonly zh: "运行中";
|
|
2594
|
+
readonly en: "Running";
|
|
2595
|
+
};
|
|
2596
|
+
readonly 'subagent.status.completed': {
|
|
2597
|
+
readonly zh: "已完成";
|
|
2598
|
+
readonly en: "Completed";
|
|
2599
|
+
};
|
|
2600
|
+
readonly 'subagent.status.failed': {
|
|
2601
|
+
readonly zh: "失败";
|
|
2602
|
+
readonly en: "Failed";
|
|
2603
|
+
};
|
|
2604
|
+
readonly 'subagent.status.pending': {
|
|
2605
|
+
readonly zh: "等待中";
|
|
2606
|
+
readonly en: "Pending";
|
|
2607
|
+
};
|
|
2608
|
+
readonly 'subagent.dashboard.title': {
|
|
2609
|
+
readonly zh: "子代理面板";
|
|
2610
|
+
readonly en: "Subagent Dashboard";
|
|
2611
|
+
};
|
|
2612
|
+
readonly 'subagent.dashboard.stats': {
|
|
2613
|
+
readonly zh: "运行中: {{running}} · 已完成: {{completed}} · 失败: {{failed}}";
|
|
2614
|
+
readonly en: "Running: {{running}} · Completed: {{completed}} · Failed: {{failed}}";
|
|
2615
|
+
};
|
|
2616
|
+
readonly 'subagent.dashboard.empty': {
|
|
2617
|
+
readonly zh: "暂无子代理";
|
|
2618
|
+
readonly en: "No subagents yet";
|
|
2619
|
+
};
|
|
2620
|
+
readonly 'subagent.dashboard.help': {
|
|
2621
|
+
readonly zh: "↑↓ 选择 · Enter 查看详情 · Esc 返回";
|
|
2622
|
+
readonly en: "↑↓ select · Enter view details · Esc back";
|
|
2623
|
+
};
|
|
2624
|
+
readonly 'subagent.detail.not-found': {
|
|
2625
|
+
readonly zh: "子代理未找到";
|
|
2626
|
+
readonly en: "Subagent not found";
|
|
2627
|
+
};
|
|
2628
|
+
readonly 'subagent.detail.press-esc': {
|
|
2629
|
+
readonly zh: "按 Esc 返回";
|
|
2630
|
+
readonly en: "Press Esc to go back";
|
|
2631
|
+
};
|
|
2632
|
+
readonly 'subagent.detail.output': {
|
|
2633
|
+
readonly zh: "输出";
|
|
2634
|
+
readonly en: "Output";
|
|
2635
|
+
};
|
|
2636
|
+
readonly 'subagent.detail.no-output': {
|
|
2637
|
+
readonly zh: "暂无输出";
|
|
2638
|
+
readonly en: "No output yet";
|
|
2639
|
+
};
|
|
2640
|
+
readonly 'subagent.detail.help': {
|
|
2641
|
+
readonly zh: "Esc 返回面板";
|
|
2642
|
+
readonly en: "Esc back to dashboard";
|
|
2643
|
+
};
|
|
2444
2644
|
};
|
|
2445
2645
|
export type I18nKey = keyof typeof dict;
|
|
2446
2646
|
export type I18nParams = Record<string, string | number>;
|
|
@@ -2470,8 +2670,9 @@ export declare function t(key: I18nKey, params?: I18nParams): string;
|
|
|
2470
2670
|
* lives in `LOCAL_COMMANDS` / the DSH registry, the dict carries zh only).
|
|
2471
2671
|
* @param key - Dictionary key, computed at runtime so it is not type-checked.
|
|
2472
2672
|
* @param fallback - Text used when no translation exists.
|
|
2673
|
+
* @param params - Placeholder values substituted into whichever text wins.
|
|
2473
2674
|
*/
|
|
2474
|
-
export declare function tOr(key: string, fallback: string): string;
|
|
2675
|
+
export declare function tOr(key: string, fallback: string, params?: I18nParams): string;
|
|
2475
2676
|
/**
|
|
2476
2677
|
* Parse a persisted `{ lang }` value; anything else yields undefined.
|
|
2477
2678
|
* @param text - Raw file contents.
|
package/lib/types/i18n.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/i18n.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAI9B,+DAA+D;AAC/D,eAAO,MAAM,KAAK,uBAAwB,CAAA;AAE1C,QAAA,MAAM,IAAI
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/i18n.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAI9B,+DAA+D;AAC/D,eAAO,MAAM,KAAK,uBAAwB,CAAA;AAE1C,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6yBA,CAAA;AAEV,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,IAAI,CAAA;AACvC,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;AAUxD,uEAAuE;AACvE,KAAK,QAAQ,GAAG,MAAM,IAAI,CAAA;AAG1B,8EAA8E;AAC9E,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,IAAI,CAG5D;AAED,qCAAqC;AACrC,wBAAgB,OAAO,IAAI,IAAI,CAE9B;AAED,yDAAyD;AACzD,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAGxC;AAED,iDAAiD;AACjD,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,IAAI,CAEpD;AAED;;;;;;GAMG;AACH,wBAAgB,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,GAAE,UAAe,GAAG,MAAM,CAM/D;AAED;;;;;;;;;GASG;AACH,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,UAAe,GAAG,MAAM,CAMlF;AAID;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAS5D;AAED,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,GAAG,GAAE,MAAkB,GAAG,IAAI,GAAG,SAAS,CAMtE;AAED,iDAAiD;AACjD,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,GAAE,MAAkB,GAAG,OAAO,CAQ1E;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAavC;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC"}
|
package/lib/types/i18n.js
CHANGED
|
@@ -84,6 +84,11 @@ const dict = {
|
|
|
84
84
|
'subagent-running': { zh: ' 运行中', en: ' running' },
|
|
85
85
|
'subagent-archived': { zh: ' 已归档', en: ' archived' },
|
|
86
86
|
'subagent-query-failed': { zh: '查询失败 · {{err}}', en: 'Query failed · {{err}}' },
|
|
87
|
+
'subagent-tools': { zh: '工具', en: 'Tools' },
|
|
88
|
+
'subagent-expand-hint': { zh: '按 Enter 展开完整输出', en: 'Press Enter to expand full output' },
|
|
89
|
+
'subagent-status-running': { zh: '运行中', en: 'running' },
|
|
90
|
+
'subagent-status-completed': { zh: '已完成', en: 'completed' },
|
|
91
|
+
'subagent-status-failed': { zh: '失败', en: 'failed' },
|
|
87
92
|
'agent-preset-switched': { zh: 'Agent preset 已切换:{{preset}}', en: 'Agent preset switched: {{preset}}' },
|
|
88
93
|
'context-low-warning': { zh: '上下文即将耗尽(剩余 {{percent}}%)· 运行 /clear 或新建会话', en: 'Context low ({{percent}}% remaining) · Run /clear or start a new session' },
|
|
89
94
|
'rewind-unavailable': { zh: '回退不可用——会话服务未加载', en: 'Rewind unavailable — session services not loaded' },
|
|
@@ -243,9 +248,9 @@ const dict = {
|
|
|
243
248
|
'esc-again-clear': { zh: '再次按 Esc 清空', en: 'Press Esc again to clear' },
|
|
244
249
|
'new-session-started': { zh: '已新建会话', en: 'New session started' },
|
|
245
250
|
'command-not-found': { zh: '/{{name}}:没有这个命令', en: '/{{name}}: no such command' },
|
|
246
|
-
'thinking-toggled': { zh: '
|
|
247
|
-
'thinking-on': { zh: '
|
|
248
|
-
'thinking-off': { zh: '
|
|
251
|
+
'thinking-toggled': { zh: '思考过程:{{state}}', en: 'Thinking display: {{state}}' },
|
|
252
|
+
'thinking-on': { zh: '显示', en: 'shown' },
|
|
253
|
+
'thinking-off': { zh: '隐藏', en: 'hidden' },
|
|
249
254
|
'tokens-usage': { zh: 'Tokens:{{in}} 输入 · {{out}} 输出', en: 'Tokens: {{in}} in · {{out}} out' },
|
|
250
255
|
'tokens-usage-context': { zh: '{{usage}} · 上下文 {{percent}}%', en: '{{usage}} · {{percent}}% of context' },
|
|
251
256
|
// ── plugin.ts — boot-time rename notices (issue #120) ───────────────
|
|
@@ -289,6 +294,24 @@ const dict = {
|
|
|
289
294
|
'logo-tagline': { zh: '探索未至之境!', en: 'Explore the uncharted!' },
|
|
290
295
|
'logo-tip-prefix': { zh: '提示:', en: 'Tip: ' },
|
|
291
296
|
'logo-tip-more': { zh: '更多技巧', en: 'more tips' },
|
|
297
|
+
// Upstream-drift notice (merged one-liner under the tip; copy explains
|
|
298
|
+
// the problem AND the fix — the command pins the validated line).
|
|
299
|
+
'logo-drift-newer': {
|
|
300
|
+
zh: 'dsh 引擎为 {{installed}},比本界面验证过的 {{validated}} 新,可能出现兼容问题;求稳可执行 npm i -g @deepseek-ai/dsh@{{primary}} 降级,或等待 dsh-tui 适配新版。',
|
|
301
|
+
en: 'The dsh engine ({{installed}}) is newer than the {{validated}} this UI is validated against, so issues are possible; downgrade via npm i -g @deepseek-ai/dsh@{{primary}} for stability, or wait for a dsh-tui update.',
|
|
302
|
+
},
|
|
303
|
+
'logo-drift-older': {
|
|
304
|
+
zh: 'dsh 引擎为 {{installed}},低于本界面验证过的 {{validated}},部分功能可能不可用;建议执行 npm i -g @deepseek-ai/dsh@{{primary}} 升级。',
|
|
305
|
+
en: 'The dsh engine ({{installed}}) is older than the {{validated}} this UI is validated against; some features may be missing. Upgrade via npm i -g @deepseek-ai/dsh@{{primary}}.',
|
|
306
|
+
},
|
|
307
|
+
'logo-drift-mixed': {
|
|
308
|
+
zh: '检测到 dsh 引擎多版本混装({{installed}}),容易出现奇怪问题;建议执行 npm i -g @deepseek-ai/dsh@{{primary}} 统一版本。',
|
|
309
|
+
en: 'Mixed dsh engine versions detected ({{installed}}), which can cause odd behavior; unify them via npm i -g @deepseek-ai/dsh@{{primary}}.',
|
|
310
|
+
},
|
|
311
|
+
'logo-drift-broken': {
|
|
312
|
+
zh: 'dsh 引擎版本异常({{installed}}),本界面验证过 {{validated}};建议执行 npm i -g @deepseek-ai/dsh@{{primary}} 重装。',
|
|
313
|
+
en: 'Unexpected dsh engine versions ({{installed}}); this UI is validated against {{validated}}. Reinstall via npm i -g @deepseek-ai/dsh@{{primary}}.',
|
|
314
|
+
},
|
|
292
315
|
// ── components/PromptInput.tsx ──────────────────────────────────────
|
|
293
316
|
'input-sent-after-turn': { zh: '已发送,当前回合结束后处理', en: 'Sent, processed after the current turn' },
|
|
294
317
|
'input-interrupted-next': { zh: '已插话 · 下一步立即处理', en: 'Interrupted · processed next' },
|
|
@@ -298,7 +321,7 @@ const dict = {
|
|
|
298
321
|
'input-empty': { zh: '输入为空,没有可发送的内容', en: 'Empty input, nothing to send' },
|
|
299
322
|
'input-interrupt-immediate': { zh: '已打断当前回合,正在立即处理', en: 'Interrupted current turn, processing immediately' },
|
|
300
323
|
'input-clipboard-empty': { zh: '剪贴板为空', en: 'Clipboard is empty' },
|
|
301
|
-
'input-editor-unavailable': { zh: '
|
|
324
|
+
'input-editor-unavailable': { zh: '错误:未配置编辑器。请设置 $VISUAL 或 $EDITOR 环境变量。', en: 'Error: No editor configured. Set $VISUAL or $EDITOR environment variable.' },
|
|
302
325
|
'input-editor-failed': { zh: '外部编辑器失败:{{name}}', en: 'External editor failed: {{name}}' },
|
|
303
326
|
'input-clipboard-read-failed': { zh: '读取剪贴板失败', en: 'Failed to read the clipboard' },
|
|
304
327
|
'input-clipboard-unavailable': { zh: '无法读取剪贴板:没有可用的 wl-paste / xclip / xsel(未安装或会话不可连接)', en: 'Cannot read clipboard: no usable wl-paste / xclip / xsel (not installed or session unreachable)' },
|
|
@@ -336,8 +359,12 @@ const dict = {
|
|
|
336
359
|
'help-word-jumps': { zh: '{{mod}}←/→ 按词跳转', en: '{{mod}}←/→ for word jumps' },
|
|
337
360
|
'help-complete-command': { zh: 'tab 补全命令', en: 'tab to complete command' },
|
|
338
361
|
'help-cycle-mode': { zh: 'shift+tab 切换模式', en: 'shift+tab to cycle mode' },
|
|
339
|
-
'help-open-editor': { zh: 'ctrl+
|
|
362
|
+
'help-open-editor': { zh: 'ctrl+g 打开编辑器', en: 'ctrl+g to open editor' },
|
|
340
363
|
'help-commands-title': { zh: '命令:', en: 'commands:' },
|
|
364
|
+
'help-scroll-hint': {
|
|
365
|
+
zh: '↑/↓ 滚动 · PgUp/PgDn 翻页 · Home/End 首尾 · Esc 关闭',
|
|
366
|
+
en: '↑/↓ scroll · PgUp/PgDn page · Home/End jump · Esc close',
|
|
367
|
+
},
|
|
341
368
|
'tips-title': { zh: '使用技巧(快捷键 · 命令 · 工作流 · 个性化 · 避坑)', en: 'Usage tips (shortcuts · commands · workflow · display · gotchas)' },
|
|
342
369
|
'tips-hint': { zh: '↑/↓ 滚动 · Esc 关闭', en: '↑/↓ scroll · Esc to close' },
|
|
343
370
|
// ── components/InterruptedByUser.tsx ────────────────────────────────
|
|
@@ -501,14 +528,12 @@ const dict = {
|
|
|
501
528
|
'ext-dialog-yes': { zh: '是', en: 'Yes' },
|
|
502
529
|
'ext-dialog-no': { zh: '否', en: 'No' },
|
|
503
530
|
// ── components/ThinkingToggle.tsx + messages/AssistantThinkingMessage.tsx ──
|
|
504
|
-
'thinking-title': { zh: '
|
|
505
|
-
'thinking-subtitle': { zh: '
|
|
506
|
-
'thinking-enabled': { zh: '
|
|
507
|
-
'thinking-enabled-desc': { zh: 'DeepSeek
|
|
508
|
-
'thinking-disabled': { zh: '
|
|
509
|
-
'thinking-disabled-desc': { zh: '
|
|
510
|
-
'thinking-mid-warning': { zh: '在对话中途切换思考模式会增加延迟,并可能降低质量。建议在会话开始时设置。', en: 'Changing thinking mode mid-conversation will increase latency and may reduce quality. For best results, set this at the start of a session.' },
|
|
511
|
-
'thinking-proceed': { zh: '要继续吗?', en: 'Do you want to proceed?' },
|
|
531
|
+
'thinking-title': { zh: '思考过程显示', en: 'Thinking display' },
|
|
532
|
+
'thinking-subtitle': { zh: '只控制思考过程是否显示,不改变模型的思考行为。', en: 'Only controls whether reasoning is shown; it does not change model behavior.' },
|
|
533
|
+
'thinking-enabled': { zh: '显示', en: 'Shown' },
|
|
534
|
+
'thinking-enabled-desc': { zh: '在对话中显示 DeepSeek 的思考过程', en: "Show DeepSeek's reasoning in the conversation" },
|
|
535
|
+
'thinking-disabled': { zh: '隐藏', en: 'Hidden' },
|
|
536
|
+
'thinking-disabled-desc': { zh: '隐藏思考过程;模型仍会照常思考', en: 'Hide reasoning; the model will still think as usual' },
|
|
512
537
|
'thinking-label': { zh: '思考', en: 'Thinking' },
|
|
513
538
|
// ── components/HistorySearchDialog.tsx ──────────────────────────────
|
|
514
539
|
'history-search-title': { zh: '搜索历史', en: 'Search history' },
|
|
@@ -560,6 +585,34 @@ const dict = {
|
|
|
560
585
|
'approval-yes': { zh: '允许(仅本次)', en: 'Yes, allow once' },
|
|
561
586
|
'approval-no': { zh: '拒绝', en: 'No' },
|
|
562
587
|
'approval-hint': { zh: '↑/↓ 选择 · Enter 确认 · Esc 拒绝', en: '↑/↓ select · Enter confirm · Esc reject' },
|
|
588
|
+
// ── components/Subagent*.tsx ────────────────────────────────────────
|
|
589
|
+
'subagent-model': { zh: '模型', en: 'Model' },
|
|
590
|
+
'subagent-duration': { zh: '时长', en: 'Duration' },
|
|
591
|
+
'subagent-status-label': { zh: '状态', en: 'Status' },
|
|
592
|
+
'subagent-status-cancelled': { zh: '已取消', en: 'Cancelled' },
|
|
593
|
+
'subagent-count-running': { zh: '运行中', en: 'running' },
|
|
594
|
+
'subagent-count-completed': { zh: '已完成', en: 'completed' },
|
|
595
|
+
'subagent-count-failed': { zh: '失败', en: 'failed' },
|
|
596
|
+
'subagent-running-label': { zh: '运行中', en: 'Running' },
|
|
597
|
+
'subagent-started': { zh: '开始时间', en: 'Started' },
|
|
598
|
+
'subagent-completed': { zh: '完成时间', en: 'Completed' },
|
|
599
|
+
'subagent-id': { zh: 'ID', en: 'ID' },
|
|
600
|
+
'subagent-error-label': { zh: '错误', en: 'Error' },
|
|
601
|
+
'subagent-output-label': { zh: '输出', en: 'Output' },
|
|
602
|
+
'subagent-no-output': { zh: '暂无输出', en: 'No output yet' },
|
|
603
|
+
'subagent-dashboard-title': { zh: ' 子代理面板 ', en: ' Subagent Dashboard ' },
|
|
604
|
+
'subagent-dashboard-hint-basic': { zh: '↑/↓ 浏览 · Esc 关闭', en: '↑/↓ browse · Esc close' },
|
|
605
|
+
'subagent-dashboard-hint-detail': { zh: '↑/↓ 选择 · Enter 查看详情 · Esc 关闭', en: '↑/↓ select · Enter view detail · Esc close' },
|
|
606
|
+
'subagent-detail-hint-basic': { zh: '↑/↓ 滚动 · Enter/Esc 返回', en: '↑/↓ scroll · Enter/Esc back' },
|
|
607
|
+
'subagent-detail-hint-enhanced': { zh: '↑/↓ 滚动 · X 中断 · Esc 返回', en: '↑/↓ scroll · X interrupt · Esc back' },
|
|
608
|
+
'subagent-card-prefix': { zh: '子代理:', en: 'Subagent: ' },
|
|
609
|
+
'subagent-tab-summary': { zh: '摘要', en: 'Summary' },
|
|
610
|
+
'subagent-no-summary': { zh: '暂无摘要', en: 'No summary yet' },
|
|
611
|
+
'subagent-no-tools': { zh: '暂无工具调用', en: 'No tool calls' },
|
|
612
|
+
'subagent-hint-page': { zh: '切页', en: 'page' },
|
|
613
|
+
'subagent-hint-scroll': { zh: '滚动', en: 'scroll' },
|
|
614
|
+
'subagent-hint-back': { zh: '返回', en: 'back' },
|
|
615
|
+
'subagent-empty-hint': { zh: '让主代理发起 Task 后,子代理会出现在这里', en: 'Subagents appear here once the main agent starts Task delegations' },
|
|
563
616
|
// ── components/questions/PlanReviewPanel.tsx ────────────────────────
|
|
564
617
|
'plan-review-fallback-header': { zh: '计划评审', en: 'Plan review' },
|
|
565
618
|
'plan-review-feedback-placeholder': { zh: '输入反馈,告诉模型要改什么…', en: 'Tell the model what to change…' },
|
|
@@ -644,7 +697,7 @@ const dict = {
|
|
|
644
697
|
'cmd-desc-theme': { zh: '切换配色主题(auto 跟随系统,或内置/自定义)' },
|
|
645
698
|
'cmd-desc-lang': { zh: '切换界面语言(en / zh)' },
|
|
646
699
|
'cmd-desc-model': { zh: '查看当前模型' },
|
|
647
|
-
'cmd-desc-thinking': { zh: '
|
|
700
|
+
'cmd-desc-thinking': { zh: '显示或隐藏思考过程' },
|
|
648
701
|
'cmd-desc-tokens': { zh: '查看会话 token 用量' },
|
|
649
702
|
// Account / policy
|
|
650
703
|
'cmd-desc-provider': { zh: '添加模型提供方(内置目录或自定义 API 端点)' },
|
|
@@ -725,6 +778,22 @@ const dict = {
|
|
|
725
778
|
},
|
|
726
779
|
'traj-empty': { zh: '暂无轨迹事件', en: 'No trajectory events yet' },
|
|
727
780
|
'traj-hint-failure': { zh: '{{key}} 看完整轨迹', en: '{{key}} for the full trajectory' },
|
|
781
|
+
// ── subagent UI ──────────────────────────────────────────────────────
|
|
782
|
+
'subagent.unnamed': { zh: '未命名子代理', en: 'Unnamed subagent' },
|
|
783
|
+
'subagent.no-model': { zh: '未知模型', en: 'Unknown model' },
|
|
784
|
+
'subagent.status.running': { zh: '运行中', en: 'Running' },
|
|
785
|
+
'subagent.status.completed': { zh: '已完成', en: 'Completed' },
|
|
786
|
+
'subagent.status.failed': { zh: '失败', en: 'Failed' },
|
|
787
|
+
'subagent.status.pending': { zh: '等待中', en: 'Pending' },
|
|
788
|
+
'subagent.dashboard.title': { zh: '子代理面板', en: 'Subagent Dashboard' },
|
|
789
|
+
'subagent.dashboard.stats': { zh: '运行中: {{running}} · 已完成: {{completed}} · 失败: {{failed}}', en: 'Running: {{running}} · Completed: {{completed}} · Failed: {{failed}}' },
|
|
790
|
+
'subagent.dashboard.empty': { zh: '暂无子代理', en: 'No subagents yet' },
|
|
791
|
+
'subagent.dashboard.help': { zh: '↑↓ 选择 · Enter 查看详情 · Esc 返回', en: '↑↓ select · Enter view details · Esc back' },
|
|
792
|
+
'subagent.detail.not-found': { zh: '子代理未找到', en: 'Subagent not found' },
|
|
793
|
+
'subagent.detail.press-esc': { zh: '按 Esc 返回', en: 'Press Esc to go back' },
|
|
794
|
+
'subagent.detail.output': { zh: '输出', en: 'Output' },
|
|
795
|
+
'subagent.detail.no-output': { zh: '暂无输出', en: 'No output yet' },
|
|
796
|
+
'subagent.detail.help': { zh: 'Esc 返回面板', en: 'Esc back to dashboard' },
|
|
728
797
|
};
|
|
729
798
|
/** The active language, module-level so non-React modules (channel.ts,
|
|
730
799
|
* loaded-context.ts) resolve strings without a context. Defaults to `zh`
|
|
@@ -773,10 +842,12 @@ export function t(key, params = {}) {
|
|
|
773
842
|
* lives in `LOCAL_COMMANDS` / the DSH registry, the dict carries zh only).
|
|
774
843
|
* @param key - Dictionary key, computed at runtime so it is not type-checked.
|
|
775
844
|
* @param fallback - Text used when no translation exists.
|
|
845
|
+
* @param params - Placeholder values substituted into whichever text wins.
|
|
776
846
|
*/
|
|
777
|
-
export function tOr(key, fallback) {
|
|
847
|
+
export function tOr(key, fallback, params = {}) {
|
|
778
848
|
const entry = dict[key];
|
|
779
|
-
|
|
849
|
+
const template = entry?.[activeLang] ?? fallback;
|
|
850
|
+
return template.replace(/\{\{(\w+)\}\}/g, (match, name) => name in params ? String(params[name]) : match);
|
|
780
851
|
}
|
|
781
852
|
// ── persistence (~/.dsh-tui/lang.json) ─────────────────────────────────
|
|
782
853
|
/**
|
package/lib/types/ink/ink.d.ts
CHANGED
|
@@ -40,6 +40,8 @@ export default class Ink {
|
|
|
40
40
|
private backFrame;
|
|
41
41
|
private lastPoolResetTime;
|
|
42
42
|
private drainTimer;
|
|
43
|
+
private renderGeneration;
|
|
44
|
+
private pendingRenderGeneration;
|
|
43
45
|
private lastYogaCounters;
|
|
44
46
|
private altScreenParkPatch;
|
|
45
47
|
readonly selection: SelectionState;
|
|
@@ -95,6 +97,8 @@ export default class Ink {
|
|
|
95
97
|
* burn the flag before the real frame lands.
|
|
96
98
|
*/
|
|
97
99
|
reanchorViewport(): void;
|
|
100
|
+
/** Render synchronously and invalidate older trailing/drain callbacks. */
|
|
101
|
+
private renderNow;
|
|
98
102
|
onRender(): void;
|
|
99
103
|
pause(): void;
|
|
100
104
|
resume(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ink.d.ts","sourceRoot":"","sources":["../../../src/ink/ink.tsx"],"names":[],"mappings":"AAIA,OAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAa9C,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAQrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAA4B,KAAK,aAAa,EAAiB,MAAM,uBAAuB,CAAC;AAIpG,OAAO,EAAqG,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"ink.d.ts","sourceRoot":"","sources":["../../../src/ink/ink.tsx"],"names":[],"mappings":"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"}
|