@deepseek-harness-tui/dsh-tui 0.14.1 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (735) hide show
  1. package/README.md +73 -14
  2. package/bin/dsh-tui.js +200 -34
  3. package/cordis.patch.yml +16 -52
  4. package/cordis.yml +6 -2
  5. package/guide/dsh-tui-guide/claude-backend.en.md +44 -7
  6. package/guide/dsh-tui-guide/claude-backend.md +28 -6
  7. package/guide/dsh-tui-guide/codex-backend.en.md +34 -7
  8. package/guide/dsh-tui-guide/codex-backend.md +17 -2
  9. package/guide/dsh-tui-guide/configuration.en.md +129 -16
  10. package/guide/dsh-tui-guide/configuration.md +110 -14
  11. package/guide/dsh-tui-guide/interaction.en.md +57 -24
  12. package/guide/dsh-tui-guide/interaction.md +42 -19
  13. package/guide/dsh-tui-guide/plugins.en.md +36 -3
  14. package/guide/dsh-tui-guide/plugins.md +21 -2
  15. package/guide/dsh-tui-guide/themes.en.md +23 -14
  16. package/guide/dsh-tui-guide/themes.md +19 -12
  17. package/guide/dsh-tui-guide/user-guide.en.md +51 -20
  18. package/guide/dsh-tui-guide/user-guide.md +41 -21
  19. package/lib/settings.json +103 -9
  20. package/lib/types/adapter/channel/ui-policy.d.ts +1 -1
  21. package/lib/types/adapter/channel/ui-policy.d.ts.map +1 -1
  22. package/lib/types/adapter/channel/ui-policy.js +3 -0
  23. package/lib/types/adapter/channel/ui.d.ts +2 -0
  24. package/lib/types/adapter/channel/ui.d.ts.map +1 -1
  25. package/lib/types/adapter/channel/ui.js +6 -2
  26. package/lib/types/adapter/kernel/runtime.d.ts.map +1 -1
  27. package/lib/types/adapter/kernel/runtime.js +2 -0
  28. package/lib/types/adapter/ports/channel-settings.d.ts +9 -0
  29. package/lib/types/adapter/ports/channel-settings.d.ts.map +1 -1
  30. package/lib/types/adapter/ports/channel-ui.d.ts +50 -12
  31. package/lib/types/adapter/ports/channel-ui.d.ts.map +1 -1
  32. package/lib/types/adapter/ports/channel-view.d.ts +21 -0
  33. package/lib/types/adapter/ports/channel-view.d.ts.map +1 -1
  34. package/lib/types/adapter/spec/backend-capabilities.d.ts +22 -0
  35. package/lib/types/adapter/spec/backend-capabilities.d.ts.map +1 -0
  36. package/lib/types/adapter/spec/backend-capabilities.js +49 -0
  37. package/lib/types/adapter/spec/protocol-constants.d.ts.map +1 -1
  38. package/lib/types/adapter/spec/protocol-constants.js +10 -3
  39. package/lib/types/adapter/spec/tui-contributions.d.ts +3 -0
  40. package/lib/types/adapter/spec/tui-contributions.d.ts.map +1 -1
  41. package/lib/types/adapter/spec/tui-contributions.js +7 -0
  42. package/lib/types/adapter/standard/registry.d.ts +6 -0
  43. package/lib/types/adapter/standard/registry.d.ts.map +1 -1
  44. package/lib/types/adapter/standard/registry.js +65 -15
  45. package/lib/types/adapter/standard/tui-extension.d.ts.map +1 -1
  46. package/lib/types/adapter/standard/tui-extension.js +7 -1
  47. package/lib/types/adapter/standard/types.d.ts +10 -1
  48. package/lib/types/adapter/standard/types.d.ts.map +1 -1
  49. package/lib/types/adapter/upstream/host-descriptor-driver.d.ts.map +1 -1
  50. package/lib/types/adapter/upstream/host-descriptor-driver.js +52 -0
  51. package/lib/types/agent/backend-manifest.d.ts +152 -0
  52. package/lib/types/agent/backend-manifest.d.ts.map +1 -0
  53. package/lib/types/agent/backend-manifest.js +14 -0
  54. package/lib/types/agent/backend.d.ts +71 -5
  55. package/lib/types/agent/backend.d.ts.map +1 -1
  56. package/lib/types/agent/capabilities.d.ts +6 -0
  57. package/lib/types/agent/capabilities.d.ts.map +1 -1
  58. package/lib/types/agent/index.d.ts +2 -0
  59. package/lib/types/agent/index.d.ts.map +1 -1
  60. package/lib/types/agent/refs.d.ts +11 -1
  61. package/lib/types/agent/refs.d.ts.map +1 -1
  62. package/lib/types/agent/starting-session.d.ts +4 -0
  63. package/lib/types/agent/starting-session.d.ts.map +1 -0
  64. package/lib/types/agent/starting-session.js +19 -0
  65. package/lib/types/backends/claude/activity.d.ts +1 -1
  66. package/lib/types/backends/claude/activity.d.ts.map +1 -1
  67. package/lib/types/backends/claude/activity.js +5 -5
  68. package/lib/types/backends/claude/auth.d.ts.map +1 -1
  69. package/lib/types/backends/claude/auth.js +10 -3
  70. package/lib/types/backends/claude/backend.d.ts.map +1 -1
  71. package/lib/types/backends/claude/backend.js +103 -29
  72. package/lib/types/backends/claude/catalog.d.ts +2 -1
  73. package/lib/types/backends/claude/catalog.d.ts.map +1 -1
  74. package/lib/types/backends/claude/catalog.js +15 -5
  75. package/lib/types/backends/claude/channels.d.ts +5 -3
  76. package/lib/types/backends/claude/channels.d.ts.map +1 -1
  77. package/lib/types/backends/claude/channels.js +5 -4
  78. package/lib/types/backends/claude/contract.d.ts +4 -0
  79. package/lib/types/backends/claude/contract.d.ts.map +1 -1
  80. package/lib/types/backends/claude/contract.js +4 -0
  81. package/lib/types/backends/claude/controls.d.ts +4 -0
  82. package/lib/types/backends/claude/controls.d.ts.map +1 -1
  83. package/lib/types/backends/claude/controls.js +34 -42
  84. package/lib/types/backends/claude/dialogs.d.ts +8 -2
  85. package/lib/types/backends/claude/dialogs.d.ts.map +1 -1
  86. package/lib/types/backends/claude/dialogs.js +24 -16
  87. package/lib/types/backends/claude/images.d.ts +1 -1
  88. package/lib/types/backends/claude/images.d.ts.map +1 -1
  89. package/lib/types/backends/claude/images.js +7 -7
  90. package/lib/types/backends/claude/manifest.d.ts +21 -0
  91. package/lib/types/backends/claude/manifest.d.ts.map +1 -0
  92. package/lib/types/backends/claude/manifest.js +29 -0
  93. package/lib/types/backends/claude/older-history.js +2 -2
  94. package/lib/types/backends/claude/permissions.js +11 -11
  95. package/lib/types/backends/claude/prefs.d.ts +4 -2
  96. package/lib/types/backends/claude/prefs.d.ts.map +1 -1
  97. package/lib/types/backends/claude/prefs.js +4 -3
  98. package/lib/types/backends/claude/process.d.ts +16 -4
  99. package/lib/types/backends/claude/process.d.ts.map +1 -1
  100. package/lib/types/backends/claude/process.js +100 -37
  101. package/lib/types/backends/claude/send-message.d.ts +1 -1
  102. package/lib/types/backends/claude/send-message.d.ts.map +1 -1
  103. package/lib/types/backends/claude/session/auth.js +22 -22
  104. package/lib/types/backends/claude/session/channels.d.ts +4 -0
  105. package/lib/types/backends/claude/session/channels.d.ts.map +1 -1
  106. package/lib/types/backends/claude/session/channels.js +5 -3
  107. package/lib/types/backends/claude/session/lifecycle.d.ts.map +1 -1
  108. package/lib/types/backends/claude/session/lifecycle.js +31 -23
  109. package/lib/types/backends/claude/session/store.js +8 -8
  110. package/lib/types/backends/claude/session/subagents.js +2 -2
  111. package/lib/types/backends/claude/session/types.d.ts +7 -0
  112. package/lib/types/backends/claude/session/types.d.ts.map +1 -1
  113. package/lib/types/backends/claude/side-query.js +3 -3
  114. package/lib/types/backends/claude/task-output.js +5 -5
  115. package/lib/types/backends/claude/text.d.ts +778 -0
  116. package/lib/types/backends/claude/text.d.ts.map +1 -0
  117. package/lib/types/backends/claude/text.js +298 -0
  118. package/lib/types/backends/claude/transcript-file.d.ts +1 -1
  119. package/lib/types/backends/claude/transcript-file.d.ts.map +1 -1
  120. package/lib/types/backends/claude/transcript-file.js +4 -4
  121. package/lib/types/backends/claude/translate/attempts.js +2 -2
  122. package/lib/types/backends/claude/translate/core.js +3 -3
  123. package/lib/types/backends/claude/translate/messages.js +4 -4
  124. package/lib/types/backends/claude/translate/system.js +14 -14
  125. package/lib/types/backends/claude/translate/tasks.js +2 -2
  126. package/lib/types/backends/claude/translate/types.d.ts +1 -1
  127. package/lib/types/backends/claude/translate/types.d.ts.map +1 -1
  128. package/lib/types/backends/codex/auth/external-tokens.js +16 -16
  129. package/lib/types/backends/codex/auth/status.js +14 -14
  130. package/lib/types/backends/codex/backend.d.ts +4 -19
  131. package/lib/types/backends/codex/backend.d.ts.map +1 -1
  132. package/lib/types/backends/codex/backend.js +118 -25
  133. package/lib/types/backends/codex/catalog.d.ts +2 -1
  134. package/lib/types/backends/codex/catalog.d.ts.map +1 -1
  135. package/lib/types/backends/codex/catalog.js +63 -18
  136. package/lib/types/backends/codex/channels.d.ts +6 -3
  137. package/lib/types/backends/codex/channels.d.ts.map +1 -1
  138. package/lib/types/backends/codex/channels.js +15 -13
  139. package/lib/types/backends/codex/detect.d.ts.map +1 -1
  140. package/lib/types/backends/codex/detect.js +9 -6
  141. package/lib/types/backends/codex/manifest.d.ts +30 -0
  142. package/lib/types/backends/codex/manifest.d.ts.map +1 -0
  143. package/lib/types/backends/codex/manifest.js +23 -0
  144. package/lib/types/backends/codex/prefs.d.ts +4 -2
  145. package/lib/types/backends/codex/prefs.d.ts.map +1 -1
  146. package/lib/types/backends/codex/prefs.js +4 -3
  147. package/lib/types/backends/codex/rpc/hub.js +2 -2
  148. package/lib/types/backends/codex/session/activity.d.ts +1 -1
  149. package/lib/types/backends/codex/session/activity.d.ts.map +1 -1
  150. package/lib/types/backends/codex/session/activity.js +13 -13
  151. package/lib/types/backends/codex/session/approvals.js +30 -30
  152. package/lib/types/backends/codex/session/commands.d.ts +8 -2
  153. package/lib/types/backends/codex/session/commands.d.ts.map +1 -1
  154. package/lib/types/backends/codex/session/commands.js +71 -23
  155. package/lib/types/backends/codex/session/controls.d.ts +1 -1
  156. package/lib/types/backends/codex/session/controls.d.ts.map +1 -1
  157. package/lib/types/backends/codex/session/controls.js +21 -16
  158. package/lib/types/backends/codex/session/goals.d.ts.map +1 -1
  159. package/lib/types/backends/codex/session/goals.js +3 -3
  160. package/lib/types/backends/codex/session/history.js +2 -2
  161. package/lib/types/backends/codex/session/images.js +8 -8
  162. package/lib/types/backends/codex/session/input.d.ts +6 -2
  163. package/lib/types/backends/codex/session/input.d.ts.map +1 -1
  164. package/lib/types/backends/codex/session/input.js +55 -13
  165. package/lib/types/backends/codex/session/plan-review.js +6 -6
  166. package/lib/types/backends/codex/session/session.d.ts.map +1 -1
  167. package/lib/types/backends/codex/session/session.js +66 -34
  168. package/lib/types/backends/codex/session/side-query.d.ts.map +1 -1
  169. package/lib/types/backends/codex/session/side-query.js +27 -9
  170. package/lib/types/backends/codex/session/state.d.ts +6 -1
  171. package/lib/types/backends/codex/session/state.d.ts.map +1 -1
  172. package/lib/types/backends/codex/session/subagents.js +5 -5
  173. package/lib/types/backends/codex/session/tasks.js +4 -4
  174. package/lib/types/backends/codex/text.d.ts +933 -0
  175. package/lib/types/backends/codex/text.d.ts.map +1 -0
  176. package/lib/types/backends/codex/text.js +313 -0
  177. package/lib/types/backends/codex/translate/items.js +4 -4
  178. package/lib/types/backends/codex/translate/live.d.ts.map +1 -1
  179. package/lib/types/backends/codex/translate/live.js +11 -8
  180. package/lib/types/backends/codex/translate/notices.js +10 -10
  181. package/lib/types/backends/shared/channel-slug.d.ts +4 -0
  182. package/lib/types/backends/shared/channel-slug.d.ts.map +1 -0
  183. package/lib/types/backends/shared/channel-slug.js +25 -0
  184. package/lib/types/backends/shared/channel-tokens.d.ts.map +1 -1
  185. package/lib/types/backends/shared/channel-tokens.js +30 -23
  186. package/lib/types/{channel → backends/shared}/elicitation.d.ts +78 -21
  187. package/lib/types/backends/shared/elicitation.d.ts.map +1 -0
  188. package/lib/types/{channel → backends/shared}/elicitation.js +64 -66
  189. package/lib/types/backends/shared/image-size.d.ts +33 -0
  190. package/lib/types/backends/shared/image-size.d.ts.map +1 -0
  191. package/lib/types/backends/shared/image-size.js +134 -0
  192. package/lib/types/{utils → backends/shared}/jsonl.d.ts +5 -1
  193. package/lib/types/backends/shared/jsonl.d.ts.map +1 -0
  194. package/lib/types/{utils → backends/shared}/jsonl.js +5 -1
  195. package/lib/types/backends/shared/localized-text.d.ts +30 -0
  196. package/lib/types/backends/shared/localized-text.d.ts.map +1 -0
  197. package/lib/types/backends/shared/localized-text.js +24 -0
  198. package/lib/types/backends/shared/platform-text.d.ts +88 -0
  199. package/lib/types/backends/shared/platform-text.d.ts.map +1 -0
  200. package/lib/types/backends/shared/platform-text.js +33 -0
  201. package/lib/types/branding.d.ts +13 -0
  202. package/lib/types/branding.d.ts.map +1 -1
  203. package/lib/types/branding.js +18 -0
  204. package/lib/types/channel/channel-slug.d.ts +3 -1
  205. package/lib/types/channel/channel-slug.d.ts.map +1 -1
  206. package/lib/types/channel/channel-slug.js +3 -1
  207. package/lib/types/channel/sanitize.d.ts +7 -0
  208. package/lib/types/channel/sanitize.d.ts.map +1 -1
  209. package/lib/types/channel/sanitize.js +9 -0
  210. package/lib/types/channel/usage.d.ts.map +1 -1
  211. package/lib/types/channel/usage.js +5 -0
  212. package/lib/types/commands.d.ts +5 -0
  213. package/lib/types/commands.d.ts.map +1 -1
  214. package/lib/types/commands.js +47 -8
  215. package/lib/types/components/AgentMessageComposer.d.ts.map +1 -1
  216. package/lib/types/components/AgentMessageComposer.js +3 -2
  217. package/lib/types/components/BtwPanel.d.ts.map +1 -1
  218. package/lib/types/components/BtwPanel.js +4 -2
  219. package/lib/types/components/Chat/JobCard.js +3 -3
  220. package/lib/types/components/CommandSuggestions.d.ts.map +1 -1
  221. package/lib/types/components/CommandSuggestions.js +20 -6
  222. package/lib/types/components/ContextBarView.d.ts +5 -1
  223. package/lib/types/components/ContextBarView.d.ts.map +1 -1
  224. package/lib/types/components/ContextBarView.js +6 -3
  225. package/lib/types/components/ExtensionDialog.d.ts.map +1 -1
  226. package/lib/types/components/ExtensionDialog.js +2 -3
  227. package/lib/types/components/GoalTodoPanel.d.ts.map +1 -1
  228. package/lib/types/components/GoalTodoPanel.js +14 -3
  229. package/lib/types/components/InlineMathParagraph.js +1 -1
  230. package/lib/types/components/KernelPicker.d.ts.map +1 -1
  231. package/lib/types/components/KernelPicker.js +1 -1
  232. package/lib/types/components/LogoV2.d.ts.map +1 -1
  233. package/lib/types/components/LogoV2.js +9 -6
  234. package/lib/types/components/MarkdownTable.d.ts.map +1 -1
  235. package/lib/types/components/MarkdownTable.js +4 -3
  236. package/lib/types/components/MessageList.d.ts.map +1 -1
  237. package/lib/types/components/MessageList.js +18 -5
  238. package/lib/types/components/ModelPicker.d.ts +24 -31
  239. package/lib/types/components/ModelPicker.d.ts.map +1 -1
  240. package/lib/types/components/ModelPicker.js +115 -40
  241. package/lib/types/components/PromptEditor.d.ts +3 -3
  242. package/lib/types/components/PromptInput.d.ts +21 -3
  243. package/lib/types/components/PromptInput.d.ts.map +1 -1
  244. package/lib/types/components/PromptInput.js +58 -118
  245. package/lib/types/components/SdkInstallWizard.d.ts +3 -1
  246. package/lib/types/components/SdkInstallWizard.d.ts.map +1 -1
  247. package/lib/types/components/SdkInstallWizard.js +8 -1
  248. package/lib/types/components/SearchBox.d.ts +13 -15
  249. package/lib/types/components/SearchBox.d.ts.map +1 -1
  250. package/lib/types/components/SearchBox.js +58 -27
  251. package/lib/types/components/ThemePicker.d.ts +1 -1
  252. package/lib/types/components/ThemePicker.d.ts.map +1 -1
  253. package/lib/types/components/ThemePicker.js +14 -11
  254. package/lib/types/components/Tooltip.js +1 -1
  255. package/lib/types/components/WorkingSpinner.js +1 -1
  256. package/lib/types/components/WorkspaceFlowPicker.d.ts.map +1 -1
  257. package/lib/types/components/WorkspaceFlowPicker.js +4 -3
  258. package/lib/types/components/composerImageTokens.d.ts +24 -0
  259. package/lib/types/components/composerImageTokens.d.ts.map +1 -0
  260. package/lib/types/components/composerImageTokens.js +37 -0
  261. package/lib/types/components/design-system/InputCaret.d.ts +7 -0
  262. package/lib/types/components/design-system/InputCaret.d.ts.map +1 -0
  263. package/lib/types/components/design-system/InputCaret.js +9 -0
  264. package/lib/types/components/design-system/ListItem.d.ts +13 -2
  265. package/lib/types/components/design-system/ListItem.d.ts.map +1 -1
  266. package/lib/types/components/design-system/ListItem.js +11 -5
  267. package/lib/types/components/design-system/ThemeProvider.d.ts.map +1 -1
  268. package/lib/types/components/design-system/ThemeProvider.js +6 -8
  269. package/lib/types/components/kernelCatalog.d.ts +55 -11
  270. package/lib/types/components/kernelCatalog.d.ts.map +1 -1
  271. package/lib/types/components/kernelCatalog.js +42 -23
  272. package/lib/types/components/launchpadActions.d.ts +4 -0
  273. package/lib/types/components/launchpadActions.d.ts.map +1 -1
  274. package/lib/types/components/launchpadActions.js +5 -4
  275. package/lib/types/components/launchpadLayout.d.ts.map +1 -1
  276. package/lib/types/components/launchpadLayout.js +2 -2
  277. package/lib/types/components/messages/UserPromptMessage.d.ts +4 -3
  278. package/lib/types/components/messages/UserPromptMessage.d.ts.map +1 -1
  279. package/lib/types/components/messages/UserPromptMessage.js +4 -3
  280. package/lib/types/components/questions/AskUserQuestionPanel.d.ts.map +1 -1
  281. package/lib/types/components/questions/AskUserQuestionPanel.js +8 -3
  282. package/lib/types/components/questions/PlanReviewPanel.d.ts.map +1 -1
  283. package/lib/types/components/questions/PlanReviewPanel.js +4 -3
  284. package/lib/types/components/questions/ProviderModelEditor.d.ts.map +1 -1
  285. package/lib/types/components/questions/ProviderModelEditor.js +3 -13
  286. package/lib/types/components/sessions/ForeignSessionRow.d.ts +3 -1
  287. package/lib/types/components/sessions/ForeignSessionRow.d.ts.map +1 -1
  288. package/lib/types/components/sessions/ForeignSessionRow.js +5 -2
  289. package/lib/types/components/sessions/SessionListRow.d.ts +3 -1
  290. package/lib/types/components/sessions/SessionListRow.d.ts.map +1 -1
  291. package/lib/types/components/sessions/SessionListRow.js +5 -2
  292. package/lib/types/components/sidePanel/PanelBar.d.ts +1 -0
  293. package/lib/types/components/sidePanel/PanelBar.d.ts.map +1 -1
  294. package/lib/types/components/sidePanel/PanelBar.js +21 -17
  295. package/lib/types/components/sidePanel/SidePanelColumn.d.ts +1 -1
  296. package/lib/types/components/sidePanel/SidePanelColumn.d.ts.map +1 -1
  297. package/lib/types/components/sidePanel/SidePanelColumn.js +2 -1
  298. package/lib/types/components/sidePanel/SidePanelLayout.d.ts +6 -4
  299. package/lib/types/components/sidePanel/SidePanelLayout.d.ts.map +1 -1
  300. package/lib/types/components/sidePanel/SidePanelLayout.js +33 -7
  301. package/lib/types/components/sidePanel/btw/BtwComposer.d.ts +4 -2
  302. package/lib/types/components/sidePanel/btw/BtwComposer.d.ts.map +1 -1
  303. package/lib/types/components/sidePanel/btw/BtwComposer.js +12 -4
  304. package/lib/types/components/sidePanel/btw/BtwPanelAdapter.d.ts.map +1 -1
  305. package/lib/types/components/sidePanel/btw/BtwPanelAdapter.js +59 -15
  306. package/lib/types/components/sidePanel/btw/BtwThreadScene.d.ts.map +1 -1
  307. package/lib/types/components/sidePanel/btw/BtwThreadScene.js +4 -2
  308. package/lib/types/components/sidePanel/btw/BtwThreadView.d.ts +1 -1
  309. package/lib/types/components/sidePanel/btw/BtwThreadView.d.ts.map +1 -1
  310. package/lib/types/components/sidePanel/btw/BtwThreadView.js +12 -6
  311. package/lib/types/components/sidePanel/companion/CompanionPanel.js +2 -2
  312. package/lib/types/components/sidePanel/types.d.ts +1 -1
  313. package/lib/types/components/sidePanel/types.d.ts.map +1 -1
  314. package/lib/types/components/sidePanel/useSidePanel.d.ts +2 -0
  315. package/lib/types/components/sidePanel/useSidePanel.d.ts.map +1 -1
  316. package/lib/types/components/sidePanel/useSidePanel.js +11 -1
  317. package/lib/types/components/splashFonts.d.ts +24 -1
  318. package/lib/types/components/splashFonts.d.ts.map +1 -1
  319. package/lib/types/components/splashFonts.js +40 -5
  320. package/lib/types/components/workspaces/HomeWorkspaceRow.d.ts +3 -1
  321. package/lib/types/components/workspaces/HomeWorkspaceRow.d.ts.map +1 -1
  322. package/lib/types/components/workspaces/HomeWorkspaceRow.js +5 -2
  323. package/lib/types/dsh-adapter/admission-loader.d.ts +20 -0
  324. package/lib/types/dsh-adapter/admission-loader.d.ts.map +1 -0
  325. package/lib/types/dsh-adapter/admission-loader.js +256 -0
  326. package/lib/types/dsh-adapter/backend/translate.d.ts.map +1 -1
  327. package/lib/types/dsh-adapter/backend/translate.js +3 -0
  328. package/lib/types/dsh-adapter/backend-admission.d.ts +64 -0
  329. package/lib/types/dsh-adapter/backend-admission.d.ts.map +1 -0
  330. package/lib/types/dsh-adapter/backend-admission.js +34 -0
  331. package/lib/types/dsh-adapter/backend-contribution.d.ts +26 -0
  332. package/lib/types/dsh-adapter/backend-contribution.d.ts.map +1 -0
  333. package/lib/types/dsh-adapter/backend-contribution.js +37 -0
  334. package/lib/types/dsh-adapter/backend-registry.d.ts +136 -0
  335. package/lib/types/dsh-adapter/backend-registry.d.ts.map +1 -0
  336. package/lib/types/dsh-adapter/backend-registry.js +285 -0
  337. package/lib/types/dsh-adapter/backends.d.ts +67 -24
  338. package/lib/types/dsh-adapter/backends.d.ts.map +1 -1
  339. package/lib/types/dsh-adapter/backends.generated.d.ts +12 -0
  340. package/lib/types/dsh-adapter/backends.generated.d.ts.map +1 -0
  341. package/lib/types/dsh-adapter/backends.generated.js +6 -0
  342. package/lib/types/dsh-adapter/backends.js +92 -46
  343. package/lib/types/dsh-adapter/channel/action-readiness.d.ts +2 -0
  344. package/lib/types/dsh-adapter/channel/action-readiness.d.ts.map +1 -1
  345. package/lib/types/dsh-adapter/channel/action-readiness.js +9 -3
  346. package/lib/types/dsh-adapter/channel/agent-view-projection.js +2 -2
  347. package/lib/types/dsh-adapter/channel/background-action.d.ts.map +1 -1
  348. package/lib/types/dsh-adapter/channel/background-action.js +8 -3
  349. package/lib/types/dsh-adapter/channel/binding-events.d.ts +16 -3
  350. package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -1
  351. package/lib/types/dsh-adapter/channel/binding-events.js +18 -46
  352. package/lib/types/dsh-adapter/channel/channel-host.d.ts +45 -0
  353. package/lib/types/dsh-adapter/channel/channel-host.d.ts.map +1 -0
  354. package/lib/types/dsh-adapter/channel/channel-host.js +1 -0
  355. package/lib/types/dsh-adapter/channel/command-completions.d.ts +5 -0
  356. package/lib/types/dsh-adapter/channel/command-completions.d.ts.map +1 -1
  357. package/lib/types/dsh-adapter/channel/command-completions.js +16 -0
  358. package/lib/types/dsh-adapter/channel/composer-images.d.ts +4 -2
  359. package/lib/types/dsh-adapter/channel/composer-images.d.ts.map +1 -1
  360. package/lib/types/dsh-adapter/channel/composer-images.js +36 -5
  361. package/lib/types/dsh-adapter/channel/cordis-host.d.ts +14 -0
  362. package/lib/types/dsh-adapter/channel/cordis-host.d.ts.map +1 -0
  363. package/lib/types/dsh-adapter/channel/cordis-host.js +35 -0
  364. package/lib/types/dsh-adapter/channel/core/actions.d.ts +3 -3
  365. package/lib/types/dsh-adapter/channel/core/actions.d.ts.map +1 -1
  366. package/lib/types/dsh-adapter/channel/core/actions.js +15 -6
  367. package/lib/types/dsh-adapter/channel/core/binding-feed.d.ts +7 -3
  368. package/lib/types/dsh-adapter/channel/core/binding-feed.d.ts.map +1 -1
  369. package/lib/types/dsh-adapter/channel/core/binding-feed.js +3 -0
  370. package/lib/types/dsh-adapter/channel/core/compose.d.ts +12 -28
  371. package/lib/types/dsh-adapter/channel/core/compose.d.ts.map +1 -1
  372. package/lib/types/dsh-adapter/channel/core/compose.js +318 -117
  373. package/lib/types/dsh-adapter/channel/core/files.d.ts +7 -2
  374. package/lib/types/dsh-adapter/channel/core/files.d.ts.map +1 -1
  375. package/lib/types/dsh-adapter/channel/core/files.js +1 -0
  376. package/lib/types/dsh-adapter/channel/core/host.d.ts +12 -6
  377. package/lib/types/dsh-adapter/channel/core/host.d.ts.map +1 -1
  378. package/lib/types/dsh-adapter/channel/core/host.js +69 -35
  379. package/lib/types/dsh-adapter/channel/core/local-actions.d.ts +5 -3
  380. package/lib/types/dsh-adapter/channel/core/local-actions.d.ts.map +1 -1
  381. package/lib/types/dsh-adapter/channel/core/local-actions.js +5 -2
  382. package/lib/types/dsh-adapter/channel/core/session-controls.js +2 -2
  383. package/lib/types/dsh-adapter/channel/core/session-switch.d.ts +7 -4
  384. package/lib/types/dsh-adapter/channel/core/session-switch.d.ts.map +1 -1
  385. package/lib/types/dsh-adapter/channel/core/session-switch.js +8 -4
  386. package/lib/types/dsh-adapter/channel/core/sessions.d.ts +1 -1
  387. package/lib/types/dsh-adapter/channel/core/sessions.d.ts.map +1 -1
  388. package/lib/types/dsh-adapter/channel/core/sessions.js +75 -16
  389. package/lib/types/dsh-adapter/channel/extensions.d.ts +4 -3
  390. package/lib/types/dsh-adapter/channel/extensions.d.ts.map +1 -1
  391. package/lib/types/dsh-adapter/channel/extensions.js +41 -22
  392. package/lib/types/dsh-adapter/channel/input-delivery.d.ts +2 -2
  393. package/lib/types/dsh-adapter/channel/input-delivery.d.ts.map +1 -1
  394. package/lib/types/dsh-adapter/channel/input-delivery.js +14 -5
  395. package/lib/types/dsh-adapter/channel/job-projection.d.ts +4 -0
  396. package/lib/types/dsh-adapter/channel/job-projection.d.ts.map +1 -1
  397. package/lib/types/dsh-adapter/channel/job-projection.js +205 -24
  398. package/lib/types/dsh-adapter/channel/mentions.d.ts +3 -3
  399. package/lib/types/dsh-adapter/channel/mentions.d.ts.map +1 -1
  400. package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts +1 -0
  401. package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts.map +1 -1
  402. package/lib/types/dsh-adapter/channel/mode-permission-actions.js +138 -8
  403. package/lib/types/dsh-adapter/channel/model-actions.d.ts +5 -1
  404. package/lib/types/dsh-adapter/channel/model-actions.d.ts.map +1 -1
  405. package/lib/types/dsh-adapter/channel/model-actions.js +40 -28
  406. package/lib/types/dsh-adapter/channel/model-selection.d.ts +17 -0
  407. package/lib/types/dsh-adapter/channel/model-selection.d.ts.map +1 -0
  408. package/lib/types/dsh-adapter/channel/model-selection.js +109 -0
  409. package/lib/types/dsh-adapter/channel/model-switch.d.ts +12 -21
  410. package/lib/types/dsh-adapter/channel/model-switch.d.ts.map +1 -1
  411. package/lib/types/dsh-adapter/channel/model-switch.js +39 -102
  412. package/lib/types/dsh-adapter/channel/projection.js +1 -1
  413. package/lib/types/dsh-adapter/channel/reports.d.ts +1 -1
  414. package/lib/types/dsh-adapter/channel/reports.d.ts.map +1 -1
  415. package/lib/types/dsh-adapter/channel/reports.js +11 -3
  416. package/lib/types/dsh-adapter/channel/session-fork.d.ts.map +1 -1
  417. package/lib/types/dsh-adapter/channel/session-fork.js +33 -20
  418. package/lib/types/dsh-adapter/channel/session-listing.d.ts +20 -0
  419. package/lib/types/dsh-adapter/channel/session-listing.d.ts.map +1 -0
  420. package/lib/types/dsh-adapter/channel/session-listing.js +51 -0
  421. package/lib/types/dsh-adapter/channel/session-metadata.d.ts +3 -1
  422. package/lib/types/dsh-adapter/channel/session-metadata.d.ts.map +1 -1
  423. package/lib/types/dsh-adapter/channel/session-metadata.js +56 -27
  424. package/lib/types/dsh-adapter/channel/session-resume.d.ts.map +1 -1
  425. package/lib/types/dsh-adapter/channel/session-resume.js +15 -8
  426. package/lib/types/dsh-adapter/channel/session-rewind.d.ts.map +1 -1
  427. package/lib/types/dsh-adapter/channel/session-rewind.js +38 -24
  428. package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts.map +1 -1
  429. package/lib/types/dsh-adapter/channel/session-tree-actions.js +38 -24
  430. package/lib/types/dsh-adapter/channel/settings-host.d.ts +2 -2
  431. package/lib/types/dsh-adapter/channel/settings-host.d.ts.map +1 -1
  432. package/lib/types/dsh-adapter/channel/settings-host.js +1 -0
  433. package/lib/types/dsh-adapter/channel/state.d.ts +37 -1
  434. package/lib/types/dsh-adapter/channel/state.d.ts.map +1 -1
  435. package/lib/types/dsh-adapter/channel/state.js +14 -1
  436. package/lib/types/dsh-adapter/channel/subagent-projection.d.ts.map +1 -1
  437. package/lib/types/dsh-adapter/channel/subagent-projection.js +66 -6
  438. package/lib/types/dsh-adapter/channel/task-completion.d.ts +6 -0
  439. package/lib/types/dsh-adapter/channel/task-completion.d.ts.map +1 -0
  440. package/lib/types/dsh-adapter/channel/task-completion.js +114 -0
  441. package/lib/types/dsh-adapter/channel/transcript.d.ts +1 -1
  442. package/lib/types/dsh-adapter/channel/transcript.js +1 -1
  443. package/lib/types/dsh-adapter/channel/upstream-retry.d.ts +81 -0
  444. package/lib/types/dsh-adapter/channel/upstream-retry.d.ts.map +1 -0
  445. package/lib/types/dsh-adapter/channel/upstream-retry.js +138 -0
  446. package/lib/types/dsh-adapter/channel/workspace-actions.d.ts.map +1 -1
  447. package/lib/types/dsh-adapter/channel/workspace-actions.js +9 -8
  448. package/lib/types/dsh-adapter/channel-ui.d.ts +3 -1
  449. package/lib/types/dsh-adapter/channel-ui.d.ts.map +1 -1
  450. package/lib/types/dsh-adapter/channel-ui.js +4 -2
  451. package/lib/types/dsh-adapter/channel.d.ts +2 -2
  452. package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
  453. package/lib/types/dsh-adapter/channel.js +19 -5
  454. package/lib/types/dsh-adapter/context-occupancy.d.ts +81 -4
  455. package/lib/types/dsh-adapter/context-occupancy.d.ts.map +1 -1
  456. package/lib/types/dsh-adapter/context-occupancy.js +108 -17
  457. package/lib/types/dsh-adapter/contract.d.ts +1 -1
  458. package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
  459. package/lib/types/dsh-adapter/contract.js +15 -0
  460. package/lib/types/dsh-adapter/entry-slot.d.ts +36 -0
  461. package/lib/types/dsh-adapter/entry-slot.d.ts.map +1 -0
  462. package/lib/types/dsh-adapter/entry-slot.js +28 -0
  463. package/lib/types/dsh-adapter/fresh-agent.d.ts +22 -0
  464. package/lib/types/dsh-adapter/fresh-agent.d.ts.map +1 -0
  465. package/lib/types/dsh-adapter/fresh-agent.js +221 -0
  466. package/lib/types/dsh-adapter/host-access.d.ts +16 -1
  467. package/lib/types/dsh-adapter/host-access.d.ts.map +1 -1
  468. package/lib/types/dsh-adapter/host-access.js +53 -2
  469. package/lib/types/dsh-adapter/host-contract.d.ts +103 -0
  470. package/lib/types/dsh-adapter/host-contract.d.ts.map +1 -0
  471. package/lib/types/dsh-adapter/host-contract.js +76 -0
  472. package/lib/types/dsh-adapter/host-dsh.d.ts +106 -0
  473. package/lib/types/dsh-adapter/host-dsh.d.ts.map +1 -0
  474. package/lib/types/dsh-adapter/host-dsh.js +466 -0
  475. package/lib/types/dsh-adapter/host-entry.d.ts +9 -0
  476. package/lib/types/dsh-adapter/host-entry.d.ts.map +1 -0
  477. package/lib/types/dsh-adapter/host-entry.js +228 -0
  478. package/lib/types/dsh-adapter/index.d.ts +55 -18
  479. package/lib/types/dsh-adapter/index.d.ts.map +1 -1
  480. package/lib/types/dsh-adapter/index.js +59 -7
  481. package/lib/types/dsh-adapter/install/executors.d.ts +44 -0
  482. package/lib/types/dsh-adapter/install/executors.d.ts.map +1 -0
  483. package/lib/types/dsh-adapter/install/executors.js +15 -0
  484. package/lib/types/dsh-adapter/install/pnpm-profile-add.d.ts +3 -0
  485. package/lib/types/dsh-adapter/install/pnpm-profile-add.d.ts.map +1 -0
  486. package/lib/types/dsh-adapter/install/pnpm-profile-add.js +150 -0
  487. package/lib/types/dsh-adapter/jobs.d.ts +7 -0
  488. package/lib/types/dsh-adapter/jobs.d.ts.map +1 -1
  489. package/lib/types/dsh-adapter/jobs.js +13 -0
  490. package/lib/types/dsh-adapter/lite-profile.d.ts +50 -0
  491. package/lib/types/dsh-adapter/lite-profile.d.ts.map +1 -0
  492. package/lib/types/dsh-adapter/lite-profile.js +49 -0
  493. package/lib/types/dsh-adapter/migrate/parse/jsonl.d.ts +1 -1
  494. package/lib/types/dsh-adapter/migrate/parse/jsonl.d.ts.map +1 -1
  495. package/lib/types/dsh-adapter/migrate/parse/jsonl.js +4 -3
  496. package/lib/types/dsh-adapter/oauth/profiles.d.ts.map +1 -1
  497. package/lib/types/dsh-adapter/oauth/profiles.js +5 -1
  498. package/lib/types/dsh-adapter/panels.d.ts +7 -0
  499. package/lib/types/dsh-adapter/panels.d.ts.map +1 -1
  500. package/lib/types/dsh-adapter/panels.js +35 -2
  501. package/lib/types/dsh-adapter/plugin-completions.d.ts +32 -0
  502. package/lib/types/dsh-adapter/plugin-completions.d.ts.map +1 -0
  503. package/lib/types/dsh-adapter/plugin-completions.js +80 -0
  504. package/lib/types/dsh-adapter/plugin-declaration.d.ts +21 -0
  505. package/lib/types/dsh-adapter/plugin-declaration.d.ts.map +1 -0
  506. package/lib/types/dsh-adapter/plugin-declaration.js +53 -0
  507. package/lib/types/dsh-adapter/plugin-host.d.ts +13 -2
  508. package/lib/types/dsh-adapter/plugin-host.d.ts.map +1 -1
  509. package/lib/types/dsh-adapter/plugin-host.js +34 -8
  510. package/lib/types/dsh-adapter/plugin-manager.d.ts +68 -0
  511. package/lib/types/dsh-adapter/plugin-manager.d.ts.map +1 -0
  512. package/lib/types/dsh-adapter/plugin-manager.js +51 -0
  513. package/lib/types/dsh-adapter/plugin.d.ts +50 -1
  514. package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
  515. package/lib/types/dsh-adapter/plugin.js +870 -233
  516. package/lib/types/dsh-adapter/plugins-info.d.ts +44 -8
  517. package/lib/types/dsh-adapter/plugins-info.d.ts.map +1 -1
  518. package/lib/types/dsh-adapter/plugins-info.js +354 -34
  519. package/lib/types/dsh-adapter/process-exit.d.ts +43 -0
  520. package/lib/types/dsh-adapter/process-exit.d.ts.map +1 -0
  521. package/lib/types/dsh-adapter/process-exit.js +60 -0
  522. package/lib/types/dsh-adapter/root-dispose.d.ts +18 -0
  523. package/lib/types/dsh-adapter/root-dispose.d.ts.map +1 -0
  524. package/lib/types/dsh-adapter/root-dispose.js +28 -0
  525. package/lib/types/dsh-adapter/session-list-metadata.d.ts +20 -0
  526. package/lib/types/dsh-adapter/session-list-metadata.d.ts.map +1 -0
  527. package/lib/types/dsh-adapter/session-list-metadata.js +56 -0
  528. package/lib/types/dsh-adapter/session-seed.d.ts +11 -0
  529. package/lib/types/dsh-adapter/session-seed.d.ts.map +1 -0
  530. package/lib/types/dsh-adapter/session-seed.js +47 -0
  531. package/lib/types/dsh-adapter/sessions/list.d.ts +3 -1
  532. package/lib/types/dsh-adapter/sessions/list.d.ts.map +1 -1
  533. package/lib/types/dsh-adapter/sessions/list.js +11 -5
  534. package/lib/types/dsh-adapter/sessions/snapshot.d.ts +0 -2
  535. package/lib/types/dsh-adapter/sessions/snapshot.d.ts.map +1 -1
  536. package/lib/types/dsh-adapter/sessions/snapshot.js +7 -70
  537. package/lib/types/dsh-adapter/startup-args.d.ts +2 -0
  538. package/lib/types/dsh-adapter/startup-args.d.ts.map +1 -1
  539. package/lib/types/dsh-adapter/startup-args.js +5 -0
  540. package/lib/types/dsh-adapter/subagents.d.ts +33 -1
  541. package/lib/types/dsh-adapter/subagents.d.ts.map +1 -1
  542. package/lib/types/dsh-adapter/subagents.js +110 -8
  543. package/lib/types/dsh-adapter/tui-settings.d.ts +57 -0
  544. package/lib/types/dsh-adapter/tui-settings.d.ts.map +1 -0
  545. package/lib/types/dsh-adapter/tui-settings.js +199 -0
  546. package/lib/types/effortPrefs.d.ts +6 -3
  547. package/lib/types/effortPrefs.d.ts.map +1 -1
  548. package/lib/types/effortPrefs.js +7 -4
  549. package/lib/types/hostEntryRoute.d.ts +18 -0
  550. package/lib/types/hostEntryRoute.d.ts.map +1 -0
  551. package/lib/types/hostEntryRoute.js +57 -0
  552. package/lib/types/i18n.d.ts +363 -1432
  553. package/lib/types/i18n.d.ts.map +1 -1
  554. package/lib/types/i18n.js +155 -385
  555. package/lib/types/ink/components/AlternateScreen.js +2 -2
  556. package/lib/types/ink/components/App.d.ts +1 -0
  557. package/lib/types/ink/components/App.d.ts.map +1 -1
  558. package/lib/types/ink/components/App.js +16 -4
  559. package/lib/types/ink/components/CursorDeclarationContext.d.ts +9 -0
  560. package/lib/types/ink/components/CursorDeclarationContext.d.ts.map +1 -1
  561. package/lib/types/ink/components/CursorDeclarationContext.js +2 -0
  562. package/lib/types/ink/hooks/use-copy-on-select.d.ts +2 -2
  563. package/lib/types/ink/hooks/use-copy-on-select.d.ts.map +1 -1
  564. package/lib/types/ink/hooks/use-copy-on-select.js +13 -7
  565. package/lib/types/ink/hooks/use-declared-cursor.d.ts +11 -3
  566. package/lib/types/ink/hooks/use-declared-cursor.d.ts.map +1 -1
  567. package/lib/types/ink/hooks/use-declared-cursor.js +30 -10
  568. package/lib/types/ink/ink.d.ts +22 -17
  569. package/lib/types/ink/ink.d.ts.map +1 -1
  570. package/lib/types/ink/ink.js +151 -40
  571. package/lib/types/ink/kitty-graphics.d.ts +2 -0
  572. package/lib/types/ink/kitty-graphics.d.ts.map +1 -1
  573. package/lib/types/ink/kitty-graphics.js +6 -1
  574. package/lib/types/ink/node-cache.d.ts +2 -1
  575. package/lib/types/ink/node-cache.d.ts.map +1 -1
  576. package/lib/types/ink/output.d.ts +10 -4
  577. package/lib/types/ink/output.d.ts.map +1 -1
  578. package/lib/types/ink/output.js +14 -10
  579. package/lib/types/ink/render-node-to-output.d.ts +5 -2
  580. package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
  581. package/lib/types/ink/render-node-to-output.js +27 -9
  582. package/lib/types/ink/renderer.d.ts +1 -0
  583. package/lib/types/ink/renderer.d.ts.map +1 -1
  584. package/lib/types/ink/renderer.js +4 -3
  585. package/lib/types/ink/root.d.ts +4 -1
  586. package/lib/types/ink/root.d.ts.map +1 -1
  587. package/lib/types/ink/screen.d.ts +4 -2
  588. package/lib/types/ink/screen.d.ts.map +1 -1
  589. package/lib/types/ink/selection.d.ts +10 -1
  590. package/lib/types/ink/selection.d.ts.map +1 -1
  591. package/lib/types/ink/selection.js +94 -25
  592. package/lib/types/ink/stdin-handoff.d.ts +11 -0
  593. package/lib/types/ink/stdin-handoff.d.ts.map +1 -0
  594. package/lib/types/ink/stdin-handoff.js +20 -0
  595. package/lib/types/ink/styles.d.ts +2 -1
  596. package/lib/types/ink/styles.d.ts.map +1 -1
  597. package/lib/types/ink/terminal-image.d.ts +6 -4
  598. package/lib/types/ink/terminal-image.d.ts.map +1 -1
  599. package/lib/types/ink/terminal-image.js +16 -39
  600. package/lib/types/ink/terminal-notification.d.ts +8 -0
  601. package/lib/types/ink/terminal-notification.d.ts.map +1 -0
  602. package/lib/types/ink/terminal-notification.js +83 -0
  603. package/lib/types/ink/terminal.d.ts +9 -0
  604. package/lib/types/ink/terminal.d.ts.map +1 -1
  605. package/lib/types/ink/terminal.js +34 -1
  606. package/lib/types/ink/termio/csi.d.ts +11 -0
  607. package/lib/types/ink/termio/csi.d.ts.map +1 -1
  608. package/lib/types/ink/termio/csi.js +13 -0
  609. package/lib/types/ink/update-overflow-guard.d.ts +6 -0
  610. package/lib/types/ink/update-overflow-guard.d.ts.map +1 -1
  611. package/lib/types/ink/update-overflow-guard.js +17 -0
  612. package/lib/types/ink/wrap-text.d.ts +6 -0
  613. package/lib/types/ink/wrap-text.d.ts.map +1 -1
  614. package/lib/types/ink/wrap-text.js +17 -0
  615. package/lib/types/kernelPrefs.d.ts +129 -16
  616. package/lib/types/kernelPrefs.d.ts.map +1 -1
  617. package/lib/types/kernelPrefs.js +98 -35
  618. package/lib/types/math/inline-layout.d.ts +2 -0
  619. package/lib/types/math/inline-layout.d.ts.map +1 -1
  620. package/lib/types/math/inline-layout.js +5 -27
  621. package/lib/types/modelGroups.d.ts +15 -27
  622. package/lib/types/modelGroups.d.ts.map +1 -1
  623. package/lib/types/modelGroups.js +17 -31
  624. package/lib/types/modelPrefs.d.ts +5 -4
  625. package/lib/types/modelPrefs.d.ts.map +1 -1
  626. package/lib/types/modelPrefs.js +5 -4
  627. package/lib/types/modelRoute.d.ts +23 -9
  628. package/lib/types/modelRoute.d.ts.map +1 -1
  629. package/lib/types/modelRoute.js +25 -11
  630. package/lib/types/permissionPrefs.d.ts +34 -0
  631. package/lib/types/permissionPrefs.d.ts.map +1 -0
  632. package/lib/types/permissionPrefs.js +61 -0
  633. package/lib/types/plugin-host.d.ts +1 -0
  634. package/lib/types/plugin-host.d.ts.map +1 -1
  635. package/lib/types/presetPrefs.d.ts +17 -3
  636. package/lib/types/presetPrefs.d.ts.map +1 -1
  637. package/lib/types/presetPrefs.js +20 -3
  638. package/lib/types/reload.d.ts +6 -10
  639. package/lib/types/reload.d.ts.map +1 -1
  640. package/lib/types/reload.js +14 -14
  641. package/lib/types/screens/Chat.d.ts +22 -15
  642. package/lib/types/screens/Chat.d.ts.map +1 -1
  643. package/lib/types/screens/Chat.js +442 -272
  644. package/lib/types/screens/Launchpad.d.ts +27 -17
  645. package/lib/types/screens/Launchpad.d.ts.map +1 -1
  646. package/lib/types/screens/Launchpad.js +241 -78
  647. package/lib/types/screens/SessionSupervisor.d.ts.map +1 -1
  648. package/lib/types/screens/SessionSupervisor.js +53 -12
  649. package/lib/types/screens/Settings.d.ts.map +1 -1
  650. package/lib/types/screens/Settings.js +6 -0
  651. package/lib/types/screens/StatusLine.d.ts.map +1 -1
  652. package/lib/types/screens/StatusLine.js +24 -7
  653. package/lib/types/screens/StatusMetrics.d.ts +46 -1
  654. package/lib/types/screens/StatusMetrics.d.ts.map +1 -1
  655. package/lib/types/screens/StatusMetrics.js +72 -0
  656. package/lib/types/screens/chat/useKernelPicker.d.ts +8 -4
  657. package/lib/types/screens/chat/useKernelPicker.d.ts.map +1 -1
  658. package/lib/types/screens/chat/useKernelPicker.js +61 -21
  659. package/lib/types/screens/chat/useModelPicker.d.ts +42 -0
  660. package/lib/types/screens/chat/useModelPicker.d.ts.map +1 -0
  661. package/lib/types/screens/chat/useModelPicker.js +182 -0
  662. package/lib/types/screens/chatOverlay.d.ts +11 -4
  663. package/lib/types/screens/chatOverlay.d.ts.map +1 -1
  664. package/lib/types/screens/chatOverlay.js +0 -1
  665. package/lib/types/screens/sessionSupervisor/ForeignSessionPanes.d.ts +4 -1
  666. package/lib/types/screens/sessionSupervisor/ForeignSessionPanes.d.ts.map +1 -1
  667. package/lib/types/screens/sessionSupervisor/ForeignSessionPanes.js +26 -5
  668. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts +1 -1
  669. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts.map +1 -1
  670. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.js +51 -29
  671. package/lib/types/sessionHistory.d.ts +5 -0
  672. package/lib/types/sessionHistory.d.ts.map +1 -1
  673. package/lib/types/sessionHistory.js +5 -0
  674. package/lib/types/sessions/listSnapshot.d.ts +6 -0
  675. package/lib/types/sessions/listSnapshot.d.ts.map +1 -0
  676. package/lib/types/sessions/listSnapshot.js +67 -0
  677. package/lib/types/settings/definitions.d.ts +50 -0
  678. package/lib/types/settings/definitions.d.ts.map +1 -1
  679. package/lib/types/settings/definitions.js +42 -8
  680. package/lib/types/terminal-utils/cjk-emphasis.d.ts +28 -0
  681. package/lib/types/terminal-utils/cjk-emphasis.d.ts.map +1 -0
  682. package/lib/types/terminal-utils/cjk-emphasis.js +31 -0
  683. package/lib/types/terminal-utils/markdown.d.ts +3 -1
  684. package/lib/types/terminal-utils/markdown.d.ts.map +1 -1
  685. package/lib/types/terminal-utils/markdown.js +7 -2
  686. package/lib/types/theme.d.ts +29 -12
  687. package/lib/types/theme.d.ts.map +1 -1
  688. package/lib/types/theme.js +310 -23
  689. package/lib/types/themeCatalog.d.ts.map +1 -1
  690. package/lib/types/themeCatalog.js +21 -2
  691. package/lib/types/tips.js +4 -4
  692. package/lib/types/tuiSettingsFile.d.ts +56 -0
  693. package/lib/types/tuiSettingsFile.d.ts.map +1 -0
  694. package/lib/types/tuiSettingsFile.js +206 -0
  695. package/lib/types/ui.d.ts +2 -0
  696. package/lib/types/ui.d.ts.map +1 -1
  697. package/lib/types/ui.js +2 -0
  698. package/lib/types/update.d.ts +72 -26
  699. package/lib/types/update.d.ts.map +1 -1
  700. package/lib/types/update.js +131 -43
  701. package/lib/types/utils/bmp.d.ts +7 -0
  702. package/lib/types/utils/bmp.d.ts.map +1 -1
  703. package/lib/types/utils/bmp.js +27 -0
  704. package/lib/types/utils/bootTrace.d.ts +2 -0
  705. package/lib/types/utils/bootTrace.d.ts.map +1 -0
  706. package/lib/types/utils/bootTrace.js +20 -0
  707. package/lib/types/utils/clipboard.d.ts.map +1 -1
  708. package/lib/types/utils/clipboard.js +11 -3
  709. package/lib/types/utils/credentials.d.ts +14 -2
  710. package/lib/types/utils/credentials.d.ts.map +1 -1
  711. package/lib/types/utils/credentials.js +34 -11
  712. package/lib/types/utils/imageResize.d.ts +10 -20
  713. package/lib/types/utils/imageResize.d.ts.map +1 -1
  714. package/lib/types/utils/imageResize.js +61 -134
  715. package/lib/types/utils/inputPaste.d.ts +2 -2
  716. package/lib/types/utils/inputPaste.js +2 -2
  717. package/lib/types/utils/pastedImagePath.d.ts +5 -0
  718. package/lib/types/utils/pastedImagePath.d.ts.map +1 -1
  719. package/lib/types/utils/pastedImagePath.js +33 -0
  720. package/package.json +36 -6
  721. package/presets/winbash.mjs +716 -0
  722. package/tui-profile/protocols/profile-definitions.d.ts +1 -0
  723. package/tui-profile/protocols/profile-definitions.js +14 -0
  724. package/tui-profile/protocols/tui-contributions.d.ts +55 -0
  725. package/tui-profile/protocols/tui-contributions.js +141 -0
  726. package/tui-profile/registry/contracts/backend-v1alpha1.json +13 -0
  727. package/tui-profile/registry/registry-0.15.json +12 -0
  728. package/lib/types/backends/claude/install.d.ts +0 -15
  729. package/lib/types/backends/claude/install.d.ts.map +0 -1
  730. package/lib/types/backends/claude/install.js +0 -91
  731. package/lib/types/channel/elicitation.d.ts.map +0 -1
  732. package/lib/types/dsh-adapter/channel/session-lineage.d.ts +0 -42
  733. package/lib/types/dsh-adapter/channel/session-lineage.d.ts.map +0 -1
  734. package/lib/types/dsh-adapter/channel/session-lineage.js +0 -51
  735. package/lib/types/utils/jsonl.d.ts.map +0 -1
@@ -44,7 +44,8 @@ dsh-tui
44
44
  the marker — when `Enter` lands on a **shortcut card** (on a command card `Enter` tries the command).
45
45
  Re-run it any time with `/setup`.
46
46
  2. **Launchpad** (the first screen of an **ordinary launch** — no `--resume`, no workspace target,
47
- no prompt; `DSH_TUI_NO_LAUNCHPAD=1` skips it entirely): the pixel-whale header (`✦ dsh-TUI`
47
+ no prompt; turn it off in `/settings` (`launchpad`, on by default, restart to apply), or
48
+ `DSH_TUI_NO_LAUNCHPAD=1` skips it entirely): the pixel-whale header (`✦ dsh-TUI`
48
49
  version, `DEEPSEEK / HARNESS` big text, current model and effort, working directory, and a
49
50
  **startup hint**; the header here is **frozen from the first frame** — the intro animation is
50
51
  left to the transcript header once you are in the chat), a **real input box** underneath
@@ -164,7 +165,7 @@ Unrecognized keys are ignored, `Esc` does nothing, clear with `Ctrl+C`/`dd`.
164
165
 
165
166
  | Action | Effect |
166
167
  |---|---|
167
- | left-drag | select text, **copy on release** (OSC 52 + system clipboard tools as fallback), auto-clear the selection |
168
+ | left-drag | select text, **copy on release** (OSC 52 + system clipboard tools as fallback), keep the selection after copying; a new selection replaces it |
168
169
  | double-click / triple-click | select word / line, copy immediately |
169
170
  | wheel | scroll the message list (±3 rows/notch); **with a text selection, pan the selection with the content** |
170
171
  | in the input box | drag / Shift+click / double-click build a selection; `Backspace`/`Delete` delete it, typing replaces, `←/→` collapse, `Esc` clears only the selection, `Ctrl+C` copies it |
@@ -274,8 +275,11 @@ one-column seam between the two surfaces.
274
275
  reach the chat, while `Ctrl+C`/`Ctrl+D`/`Ctrl+L` and the other Ctrl combos still do.
275
276
  - **Mouse**: click the chat column to focus the chat, click the panel column to focus the panel;
276
277
  clicking a tab on the bar switches to that panel (hover highlights it), and the `⤢` on its right
277
- edge blows the active panel up to the full screen. The panel column is excluded from
278
- drag-selection.
278
+ edge blows the active panel up to the full screen. Hovering over the seam highlights it; hold
279
+ the left mouse button and drag it left to widen the panel or right to narrow it. Chat keeps
280
+ at least 64 columns and the panel at least 28. Dragging exits zoom, preserves keyboard focus,
281
+ and keeps the width for the current session. Text drags starting in chat select only chat;
282
+ drags starting inside the panel can select panel text.
279
283
  - **Panels**: all eight built-in panels are enabled by default and can be changed in `sidePanel.panels`. `todo` (Goals/Todos — with a split it moves here from above the input), `jobs`
280
284
  (background jobs; clicking a job card in the transcript focuses that job here), `agents`
281
285
  (subagent dashboard and detail: Enter opens the detail, Esc steps back), `companion`
@@ -302,6 +306,7 @@ one-column seam between the two surfaces.
302
306
  drags, plus its own hearts and thumbs-up) or `whale` (the splash's pixel whale). **On terminals
303
307
  with an image protocol (kitty/sixel) whaleGirl renders at native 240px with all 267 frames**
304
308
  (transparent float, decoded on demand); without one it falls back to the character-art form.
309
+ The splash uses these skins only under the DeepSeek brand: `deepy` and `whaleGirl` replace the maid portrait; choose `whale` and enable Maid portrait to use it. Claude uses its own artwork; Codex uses its own raster portrait or the maid character-art fallback. Both brands ignore these settings for splash artwork. See the [precedence table](configuration.en.md).
305
310
 
306
311
  | Subcommand | Effect |
307
312
  |---|---|
@@ -324,7 +329,7 @@ one-column seam between the two surfaces.
324
329
 
325
330
  ## 3. Command reference
326
331
 
327
- The command menu = built-in commands (58, aliases included) + DSH registry commands (`/plan` `/goal` etc.) + the skill catalog
332
+ The command menu = built-in commands (aliases included) + DSH registry commands (`/plan` `/goal` etc.) + the skill catalog
328
333
  (completion only, hidden from the `/help` menu). `/lang` switches the UI and command descriptions between English and Chinese.
329
334
 
330
335
  ### 3.1 Session
@@ -337,7 +342,8 @@ The command menu = built-in commands (58, aliases included) + DSH registry comma
337
342
  | `/tree` | none | session fork tree: hover to preview, click to rewind / fork / switch branch |
338
343
  | `/fork` | none | copy the current session into a resumable clone (original unaffected) |
339
344
  | `/restart` | none | restart the process and resume this session (rejected mid-turn, `Ctrl+C` first) |
340
- | `/kernel` | none | kernel picker: switch between DSH and the experimental Claude backend; remembers the pick and restarts into a new session (rejected mid-turn); see [Claude backend](claude-backend.en.md) |
345
+ | `/kernel` | none | kernel picker: switch between DSH, Codex and the experimental Claude backend; remembers the pick and restarts into a new session (rejected mid-turn); see [Claude backend](claude-backend.en.md) |
346
+ | `/dsh` / `/codex` / `/claude` | none | directly choose the named kernel through the same checks and restart flow as `/kernel`; the current kernel does not restart, a running turn blocks switching, and missing Claude opens the install wizard |
341
347
  | `/rename` | `<新名称>` | rename the current session (no arg shows the current title and usage) |
342
348
  | `/recap` | none | recent-activity summary (one line) + suggested title; press `a` or click to apply the title. With `dsh-tui.recapOnOpen` (default on), opening/resuming a session auto-shows a divider + `回顾:` summary line at the bottom; hover to view actions, click to expand, gone after the next message |
343
349
  | `/workspace` | `resume` / `rename <名称>` / `open <路径或URI>` | manage workspaces; `open` accepts an absolute path, file URI, or plugin scheme |
@@ -372,8 +378,8 @@ The command menu = built-in commands (58, aliases included) + DSH registry comma
372
378
  | Command | Args | Effect |
373
379
  |---|---|---|
374
380
  | `/channel` | none | relay channel profiles (Claude backend only); **import / add / manage and any switch that needs a process restart are refused while a turn runs** (the picker itself still opens), see [Interaction](interaction.en.md#channel-profiles-channel-claude-only) |
375
- | `/model` | none | model selector; **switching = fork the session** (history kept, only routing changes; a session nobody has typed into records no branch, keeping automatic titles for its first prompt), choice persisted to `~/.dsh-tui/model.json` |
376
- | `/effort` | `status` / `<id>` | reasoning effort: no-arg slider (`←/→` adjust); `status` current level; `<id>` set directly. Persisted to `~/.dsh-tui/effort.json`; new-session start level follows /settings `effortDefault` (§5.3) |
381
+ | `/model` | none | model selector; **switch within the same session** (ID, history, and title kept; the next request uses the new route), choice persisted to `~/.dsh-tui/model.json` |
382
+ | `/effort` | `status` / `<id>` | reasoning effort: no-arg slider (`←/→` adjust); `status` current level; `<id>` set directly. Persisted to `~/.dsh-tui/effort.json` and reused by the next launch (it outranks the cordis.yml `effort` default); new-session start level follows /settings `effortDefault` (§5.3) |
377
383
  | `/thinking` | none | extended-thinking display toggle (thinking expands item by item while streaming) |
378
384
  | `/tokens` | none | three separate figures, never two different quantities side by side: **this request**'s upload (input + cache read + cache write — the harness's four buckets are disjoint), the **session totals** (uncached input / output / cache read / cache write), and **context occupancy** |
379
385
  | `/activity` | `frames <名>` / `status` | working-status animation: no-arg selector, `frames <名>` sets directly (includes `random`), default `moon8`. Persisted to `~/.dsh-tui/working-activity.json` |
@@ -397,7 +403,7 @@ The command menu = built-in commands (58, aliases included) + DSH registry comma
397
403
  | `/hooks` | none | placeholder: notes when DSH hooks aren't mounted in the composition |
398
404
  | `/mcp` | none | MCP connection state (tools grouped as `mcp__服务器__工具`); shows a `cordis.patch.yml` snippet when unconfigured |
399
405
  | `/skills` | none | skill-catalog selector (name+source+blurb); Enter fills a direct-call skill as `/name ` |
400
- | `/plugins` | `check <dsh-plugin.json 路径>` | plugin diagnostics: trust banner + host descriptor + authorization matrix + ledger; `check` validates a manifest and reports compatibility |
406
+ | `/plugin` | `list` · `check <dsh-plugin.json 路径>` · `info <id or spec>` · `registries` | `list` shows the plugins you added, without the installation-supplied bundles; bare `/plugin` gives the full diagnostics — trust banner + host descriptor + authorization matrix + ledger + the profile's bundles and rows (reserved for the plugin management panel, a later stage); `check` validates a manifest and reports compatibility, `info` describes an installed bundle or an install spec, `registries` lists where installations ask |
401
407
  | `/update` | none | update the TUI and auto-restart to resume the session (only via `dsh --profile`; rejected mid-turn) |
402
408
  | `/terminal-setup` | none | terminal setup advice (Windows Terminal ≥110 columns, paste keys) |
403
409
 
@@ -436,7 +442,11 @@ dsh-TUI ships no generic skills; `/skills` browses skills DSH discovers, and a d
436
442
  | Exit | `/exit` (or `/quit` `/q`) | double-press `Ctrl+C` or `Ctrl+D` also exits when idle; mid-work, press `Ctrl+C`/`Ctrl+D` again to force quit when the interrupt won't settle |
437
443
 
438
444
  Command-line resume: `dsh-tui --resume` (last session) / `dsh-tui --resume <id>` (specific session).
439
- `-c` / `--continue` are equivalent.
445
+ `-c` / `--continue` are equivalent. Startup recovery only ever targets **the backend this
446
+ launch selected**: a backend with no last session, or a derived target belonging to a
447
+ different backend, refuses with a clear error and exit code 1 — no silent cold start, no new
448
+ session (safe mode's "retry normal startup" degrades to a warning plus a cold start, see the
449
+ [README](../README.md)).
440
450
 
441
451
  ### 4.2 Time-travel rewind (double-press Esc)
442
452
 
@@ -471,8 +481,12 @@ Full-screen view of the whole session timeline (doesn't pollute scrollback); key
471
481
 
472
482
  ### 4.6 Model switching and presets
473
483
 
474
- - `/model`: selector. **Switching = fork the session** (history kept, only routing changes, the old session stays in `/resume`);
475
- persisted to `~/.dsh-tui/model.json`.
484
+ Switching within a session requires DSH `0.1.2-alpha.3` or later; older versions prompt an upgrade so subagents cannot keep using the previous model. Parked sessions retain their selection.
485
+
486
+ - `/model`: selector. **Switch within the same session** (ID and history kept; the next request uses the new route);
487
+ persisted to `~/.dsh-tui/model.json` and reused by the next launch (a `provider`/`model`
488
+ pair in cordis.yml/profile is only the first-run deployment default).
489
+ - DSH provider tabs start with **Recently used**, and `Tab` / `Shift+Tab` switch providers; Codex and Claude show their catalogs directly without these tabs. All backends use `↑/↓` to select a model, `←/→` to adjust its effort, `Enter` to apply both, and `Esc` to cancel the draft. Click the available tabs, models, effort levels, or select/cancel hints; clicking an effort level immediately applies the focused model and that effort and closes the picker. The wheel moves model focus.
476
490
  - Switching is rejected mid-turn.
477
491
  - `/preset` options: `standard` (default full features), `ptc`, `minimal` (the kernel's Minimal preset: one persistent-shell tool only, no compaction, no plan mode — and therefore no compaction and no tool-result pruning, so a long session can hit the context limit and `/compact` plus questions are unavailable; Help and `/` completion mark the command, and entering the preset says so once),
478
492
  `cordis`, `liangshen` (Liangshen mode).
@@ -497,6 +511,9 @@ Keys are in §2.7. Key points:
497
511
  - `/plan` `/goal` `/feedback` `/permission` come from the DSH registry, merged into the `/` menu.
498
512
  - **Goals/Todos panel appears automatically**: when the model writes a goal/todo, it renders above the input
499
513
  (🎯 goal + phase badge + tree todo), no action needed; with a split it moves to the `todo` panel on the right (see §2.8).
514
+ The goal bar keeps a one-line summary: hovering truncated goal text reads the whole objective, and a bare `/goal` prints the
515
+ full status (objective, phase, rounds or budget, available commands) as a `/plugins`-shaped transcript block — inline mode has
516
+ no pointer, so a long objective is read from that block.
500
517
 
501
518
  ### 4.9 MCP / Workspace / other
502
519
 
@@ -522,7 +539,7 @@ An empty session shows the whale logo area at the top (scrolls away with the con
522
539
 
523
540
  - **Intro animation** (~3.4 s, three picked each launch, `/deepseek` egg re-rolls): classic / heart / sleep.
524
541
  - **Welcome idle animation** (`whaleIdle`, default on): fin, blink, tail wag, sleeps with Z after 10 s idle; **click to show a heart and wake it**.
525
- - **Maid portrait** (`whaleGirl`, default off): swaps the header's pixel whale for the author-drawn maid — FIRST as a **real raster** through the terminal image protocols (Kitty/Sixel); terminals without graphics support fall back to the character-art maid. **Click her** and she turns into the "happy" portrait for a few seconds, then eases back on her own; the first agent task freezes her (no more reactions).
542
+ - **Maid portrait** (`whaleGirl`, default off): under the DeepSeek brand, enable it with Companion skin set to `whale` to show the author-drawn maid — a **real raster** through Kitty/Sixel when available, with character-art fallback. **When the raster portrait is displayed, click her** to show the happy portrait for a few seconds; the first agent task freezes her reactions. Character-art fallback stays static. The `deepy` and `whaleGirl` skins take the slot instead; Claude uses its own artwork; Codex uses its own raster portrait or the maid character-art fallback. Both brands ignore these settings for splash artwork. See the [precedence table](configuration.en.md).
526
543
  - After the first agent task, it freezes to a static frame (`/new` re-enters the welcome period).
527
544
  - Text column right of the whale: `✦ dsh-TUI v版本号` →
528
545
  `DEEPSEEK / HARNESS` big text (bold glyphs, both rows the same width, one blank row between) →
@@ -552,7 +569,20 @@ An empty session shows the whale logo area at the top (scrolls away with the con
552
569
  **Row 1 — context segment bar** (`/settings → statusBar.contextBar`, default on)
553
570
 
554
571
  - Colored by content type (system / prompt / assistant / thinking / tools).
555
- - Segment token counts are a **local estimate** (CJK/full-width ≈1.4 chars/token, ASCII ≈4, other scripts ≈2): they describe what the bar is made of and **never** feed the occupancy total — that comes from the ctx reading below.
572
+ - Colored by content type (system / prompt / assistant / thinking / tools). **The used span's length is
573
+ exactly the reading** (the 13k of `13k/64k`): the five segments only split that span by composition, so
574
+ an over- or under-estimate can no longer draw the bar short or long.
575
+ - The composition comes from two layers: the harness's `contextBreakdown` projection (system prompt / the
576
+ request envelope's tool schemas / every other visible node, injected context included) plus this app's
577
+ local estimate, which alone splits the meter's message side into prompt / assistant / thinking / tool
578
+ results (ASCII ≈4 chars/token, CJK ≈1.4, other scripts ≈2). A meter that predates the projection leaves
579
+ the local estimate as the only source.
580
+ - The hover legend reports those same shares, attributed to the occupancy, so **the five segments plus
581
+ free add up to the window** (`1.2k`-style abbreviations cost at most half a unit each) instead of
582
+ reporting a second, smaller total. The estimates themselves **never** feed the occupancy total — that
583
+ comes from the ctx reading below.
584
+ - When no content category can be attributed, the bar keeps one used block and both the bar and ctx
585
+ hover details report its measured `used` count instead of five zero categories.
556
586
  - The only text on the bar is the right-edge reading `13k/64k 19.5%` (narrow screens show only `19.5%`).
557
587
  - The reading colors by usage: <80% gray-blue, **≥80% amber, ≥95% red**.
558
588
  - Hover the whole bar for the legend: color block + name + token count (narrow screens shorten the names).
@@ -592,6 +622,7 @@ Common items below, full list on the /settings screen. Most topics (**Appearance
592
622
  |---|---|
593
623
  | lang | UI language zh/en (locked when DSH_TUI_LANG is pinned) |
594
624
  | fullscreen | fullscreen mode (default on); takes effect after `/restart` |
625
+ | launchpad | launchpad landing page (default on): an ordinary launch starts on the launchpad where the first sentence gets typed; off boots straight into the chat page (launches with a `--resume` target are unaffected — they open their conversation directly either way). Takes effect after `/restart` |
595
626
  | minimal | Minimal UI (default off): hide the header splash, emoji glyphs and decorative colors, and trim the footer to model + cwd; code highlight and tool colors stay. **An interface switch** with no effect on model capability — do not confuse it with the kernel Minimal agent preset in `/preset` |
596
627
  | terminalImages | terminal image preview (default on, needs terminal support); takes effect after `/restart`. Off shows text only and skips preview decode, sending images to the model is unaffected |
597
628
  | imageBacking | image backing (default `transparent`, same **Rendering** topic as the row above): what sits behind chat photos and illustrations. Transparent paints only the pixels of the image itself — the terminal background or wallpaper shows at anti-aliased edges and transparent corners; Terminal colour composites onto the terminal background for smooth soft edges. Applies immediately |
@@ -599,7 +630,7 @@ Common items below, full list on the /settings screen. Most topics (**Appearance
599
630
  | whale | pixel whale header (default on); three intro animations picked per launch (classic/heart/sleep), `/deepseek` egg re-rolls |
600
631
  | whaleIdle | whale welcome idle animation (default on): fin/tail/blink, sleeps with Z after 10 s idle; click for a heart. Freezes after the first task |
601
632
  | splashFont | big-text face on the header splash: Daily rotation (default, changes with the local date) / bold / square / bevel / wide / dot matrix / stencil / thin (classic) / slab. Picking a face pins it; picking Daily rotation restores the rotation. Applies immediately |
602
- | whaleGirl | maid portrait (default off): swaps the header's pixel whale for the author-drawn maid as a **real raster** (Kitty/Sixel); falls back to the pixel whale without graphics support |
633
+ | whaleGirl | maid portrait (default off): under the DeepSeek brand, enable with `companion.skin=whale`; the `deepy` and `whaleGirl` skins override it. Claude uses its own artwork; Codex uses its own raster portrait or the maid character-art fallback. Both brands ignore these settings for splash artwork. Real raster (Kitty/Sixel), with character-art fallback. See the [precedence table](configuration.en.md) |
603
634
  | diffLayout | Edit/Write diff layout: auto (two columns ≥110 cols) / split / unified |
604
635
  | thinkingFold | thinking block: preview (2-3 line preview + folded when settled) / full (expanded to end of turn) |
605
636
  | btw.contextBudget | Total character budget of recent Q/A pairs carried into a `/btw` follow-up (default 24000, range 1000-200000); oldest whole pairs are dropped first. Applies immediately |
@@ -618,8 +649,8 @@ Common items below, full list on the /settings screen. Most topics (**Appearance
618
649
  | expandEditor | full-screen draft editor (default on): `⛶` at the input line end or `Ctrl+Shift+E` expands to a full-screen editor; `Ctrl+Enter` send, `Esc` collapse (draft kept); off hides both entries |
619
650
  | statusBar.* | all status-bar toggles above (compact/model/thinking/cwd/contextUsage/cache/tokens/cost/tps/gitBranch/sessionTitle/sessionId/mode/contextBar/activity/trajectory; statusBar.sessionId is the bottom-bar display toggle, unrelated to cordis startup sessionId) |
620
651
 
621
- **effortDefault**: when the model lacks that level, drop one level and show a notice; priority settings user layer > cordis `effort` >
622
- last `/effort` (effort.json) > model default.
652
+ **effortDefault**: when the model lacks that level, drop one level and show a notice; priority settings user layer > the last `/effort`
653
+ (effort.json, the level the last session ran) > cordis `effort` (deployment default) > model default.
623
654
 
624
655
  **scrollGutter**: the scrollbar track can be dragged directly; `Shift`/`Alt`/`Ctrl`+drag is still text selection.
625
656
 
@@ -666,10 +697,10 @@ When dsh exits unexpectedly, safe mode gives a **read-only** environment diagnos
666
697
 
667
698
  | Item | Command | Notes |
668
699
  |---|---|---|
669
- | Model | `/model` | selector; **switching = fork the session** (history kept, routing only); persisted to `~/.dsh-tui/model.json`, reused on restart and `/new`. Never chosen → built-in default (currently `deepseek-flash`) |
700
+ | Model | `/model` | selector; **switch within the same session** (ID and history kept; subsequent requests use the new route); persisted to `~/.dsh-tui/model.json` and reused on restart and `/new` (a resumed session keeps its last recorded request route) — it OUTRANKS a `provider`/`model` pair written in cordis.yml/profile (that pair is only the first-run deployment default). Never chosen → the configured pair, else the harness default (currently `deepseek-flash`) |
670
701
  | Reasoning effort | `/effort` | slider (`←/→` live) or `/effort <id>`; `/effort status` for current; new-session default in /settings → default reasoning effort |
671
702
  | Agent preset | `/preset` | `standard` / `ptc` (old 0.1.1 name `code`) / `minimal` / `cordis` / **Liangshen mode `liangshen`**; **can't switch an already-started session** |
672
- | Theme | `/theme` | `auto` (OSC 11 follows terminal background) / `light` / `dark` / `dark-ansi`; `/theme <名>` direct; `/theme status` for the result |
703
+ | Theme | `/theme` | `auto` (OSC 11 follows terminal background) / `light` / `dark` / `dark-ansi` / `pink-day` / `pink-night` / `pink-ansi`; `/theme <名>` direct; `/theme status` for the result |
673
704
  | Custom theme | manual | `~/.dsh-tui/themes/<名>.json`, `{base, colors}` format, hot-swap on select; naming it `auto` gets shadowed by the built-in |
674
705
  | Language | `/lang` | `en` / `zh` hot switch; priority `DSH_TUI_LANG` > profile config (legacy: settings.yaml user layer > cordis.yml) > persisted |
675
706
  | Status animation | `/activity` | selector or `/activity frames <名>`; default `moon8`, `random` randomizes |
@@ -716,7 +747,7 @@ When dsh exits unexpectedly, safe mode gives a **read-only** environment diagnos
716
747
  12. Session manager (`/resume`, `/home`, `/agentview`, `/bg`, or `⌸` at the input line start):
717
748
  type to filter, `★` pin, `Ctrl+X` stop a background session; switching just parks it.
718
749
  13. Mid-turn, `/compact`, `/model`, `/restart` are rejected — `Ctrl+C` first or wait for the turn to end.
719
- 14. `/model` switch = fork (history kept), persisted and reused on restart and `/new`.
750
+ 14. `/model` switches subsequent requests in the same session (ID and history kept); the choice is saved as the default for new sessions, while a resumed session keeps its last recorded request route.
720
751
 
721
752
  **Ask the manual**
722
753
 
@@ -41,7 +41,7 @@ dsh-tui
41
41
  **跳过不记账**(下次启动还会问),最后一步要在**键位卡**上按 `Enter` 才算"完成"并写入记账文件
42
42
  (焦点落在命令卡上时 `Enter` 是"试一下")。之后随时可用 `/setup` 重跑。
43
43
  2. **落地页**(**普通启动**的第一屏:没带 `--resume`、没指定工作区、也没带首句提示词;
44
- `DSH_TUI_NO_LAUNCHPAD=1` 可整体跳过):像素鲸鱼顶栏(`✦ dsh-TUI` 版本号、
44
+ 可在 /settings 用 `launchpad` 关掉(默认开,重启生效),`DSH_TUI_NO_LAUNCHPAD=1` 可整体跳过):像素鲸鱼顶栏(`✦ dsh-TUI` 版本号、
45
45
  `DEEPSEEK / HARNESS` 大字、当前模型与 effort、工作目录,及一行**启动提示**;
46
46
  这一屏的头部**直接定格**——开场动画留给进入对话后的转录区顶部),
47
47
  下面是一个**真输入框**(第一句话在这里打,**回车直接发送**)与框下一行**参数行**
@@ -152,7 +152,7 @@ dsh-tui
152
152
 
153
153
  | 操作 | 功能 |
154
154
  |---|---|
155
- | 左键拖拽 | 选文本,**松开即复制**(OSC 52 + 系统剪贴板工具兜底),自动取消选区 |
155
+ | 左键拖拽 | 选文本,**松开即复制**(OSC 52 + 系统剪贴板工具兜底),复制后保留选区;重新拖选会替换现有选区 |
156
156
  | 双击 / 三击 | 选词 / 选行,即选即复制 |
157
157
  | 滚轮 | 滚动消息列表(±3 行/格);**有文本选区时随内容平移选区** |
158
158
  | 输入框内 | 拖拽 / Shift+click / 双击建立选区;`Backspace`/`Delete` 删选区、打字替换、`←/→` 坍缩、`Esc` 仅清选区、`Ctrl+C` 复制选区 |
@@ -251,7 +251,9 @@ dsh-tui
251
251
  `z` 或 `Alt+Z` 缩放 · `+`/`-` 调宽(`+` 加宽面板,步长 4 列) · `↑`/`↓`/`PgUp`/`PgDn` 交给活动面板(jobs 用它选择与滚动);
252
252
  面板没吃下的键不会再落到聊天,但 `Ctrl+C`/`Ctrl+D`/`Ctrl+L` 等 Ctrl 组合照旧作用于聊天。
253
253
  - **鼠标**:点聊天栏把焦点给聊天,点右栏把焦点给面板;点标签栏上的标签直接切到那个面板(悬停会高亮),
254
- 点右端的 `⤢` 把当前面板放大成整屏;右栏不参与拖拽选字。
254
+ 点右端的 `⤢` 把当前面板放大成整屏。悬停中缝会提亮,按住鼠标左键左右拖拽即可实时调宽:
255
+ 向左加宽侧栏、向右缩窄,聊天列至少 64 列、侧栏至少 28 列;拖拽会退出 zoom,保留键盘焦点,
256
+ 宽度在当前会话内保留。聊天内起拖只选聊天文字,右栏内起拖可选右栏文字。
255
257
  - **面板**:全部 8 个内置面板默认启用,可在 `sidePanel.panels` 调整。`todo`(Goals/Todos,分栏时从输入框上方迁到这里)、`jobs`(后台任务,点转录里的任务卡
256
258
  会直接定位到该任务)、`agents`(子代理 Dashboard 与详情:Enter 进详情、Esc 逐级返回)、`companion`
257
259
  (宠物:跟随会话状态换心情动画,点击
@@ -271,6 +273,7 @@ dsh-tui
271
273
  表情包,22 个动画,被戳/被挠/被拎起来都有对应反应,独有「冒爱心」「举大拇指」)、`whale`(开屏
272
274
  同款像素鲸)。**鲸娘在有图像协议(kitty/sixel)的终端里按原帧数 240px 像素级渲染**(267 帧全保留、
273
275
  透明悬浮、按需解码),无图像协议自动回退字符画版。
276
+ 开屏仅在 DeepSeek 品牌下使用这些皮肤:`deepy` 和 `whaleGirl` 会取代女仆娘立绘;选择 `whale` 并开启「女仆娘立绘」才会显示女仆娘。Claude 使用自己的图案,Codex 使用自己的真图或女仆娘字符画回退;这两个品牌的开屏图案不受宠物皮肤和女仆娘开关影响。见[优先级表](configuration.md)。
274
277
 
275
278
  | 子命令 | 作用 |
276
279
  |---|---|
@@ -290,7 +293,7 @@ dsh-tui
290
293
 
291
294
  ## 3. 命令全集
292
295
 
293
- 命令菜单 = 内置命令(58 条,含别名) + DSH 注册表命令(`/plan` `/goal` 等) + 技能目录
296
+ 命令菜单 = 内置命令(含别名) + DSH 注册表命令(`/plan` `/goal` 等) + 技能目录
294
297
  (仅补全,`/help` 菜单隐藏)。`/lang` 可切换中英文界面与命令描述。
295
298
 
296
299
  ### 3.1 会话
@@ -303,7 +306,8 @@ dsh-tui
303
306
  | `/tree` | 无 | 会话分叉树:悬停预览、点击回退 / 分叉 / 切换分支 |
304
307
  | `/fork` | 无 | 把当前会话复制成可恢复的副本(原会话不受影响) |
305
308
  | `/restart` | 无 | 重启进程并恢复本会话(回合运行中会被拒绝,先 `Ctrl+C`) |
306
- | `/kernel` | 无 | 内核选择器:在 DSH 与实验性的 Claude 后端之间切换,记住选择并重启进入新会话(回合运行中会被拒绝);见 [Claude 后端](claude-backend.md) |
309
+ | `/kernel` | 无 | 内核选择器:在 DSH、Codex 与实验性的 Claude 后端之间切换,记住选择并重启进入新会话(回合运行中会被拒绝);见 [Claude 后端](claude-backend.md) |
310
+ | `/dsh` / `/codex` / `/claude` | 无 | 直接选择对应内核,检查与重启流程同 `/kernel`;选择当前内核不重启,回合运行中不能切换,未安装 Claude 时进入安装向导 |
307
311
  | `/rename` | `<新名称>` | 重命名当前会话(无参时显示当前标题与用法) |
308
312
  | `/recap` | 无 | 最近活动摘要(一行)+ 建议标题;面板内 `a` 键或点击一键应用标题。设置 `dsh-tui.recapOnOpen`(默认开)开启时,打开/恢复会话自动在底部显示一条分隔线 + `回顾:` 摘要行,悬停可查看操作、点击展开,发送新消息后自动消失 |
309
313
  | `/workspace` | `resume` / `rename <名称>` / `open <路径或URI>` | 管理工作区;`open` 支持绝对路径、file URI、插件 scheme |
@@ -338,7 +342,7 @@ dsh-tui
338
342
  | 命令 | 参数 | 作用 |
339
343
  |---|---|---|
340
344
  | `/channel` | 无 | 中转渠道档案(仅 Claude 后端);**回合运行中导入 / 新建 / 管理,以及需要重启进程的切换会被拒绝**(选择器本身仍可打开),见 [交互与命令](interaction.md#渠道档案channel仅-claude) |
341
- | `/model` | 无 | 模型选择器;**切换 = fork 会话续聊**(历史保留、仅换路由;还没有人说过话的会话不记分支,保留首个 prompt 的自动标题),选择持久化到 `~/.dsh-tui/model.json` |
345
+ | `/model` | 无 | 模型选择器;**同会话切换模型**(保留 session ID、历史和标题,下一次请求使用新路由),选择持久化到 `~/.dsh-tui/model.json` |
342
346
  | `/effort` | `status` / `<id>` | 推理强度:无参滑杆(`←/→` 实时调整);`status` 当前档位;`<id>` 直接设定。持久化 `~/.dsh-tui/effort.json`;新会话起始档看 /settings 的 `effortDefault`(§5.3) |
343
347
  | `/thinking` | 无 | 扩展思考显示开关(流式时思考逐条展开) |
344
348
  | `/tokens` | 无 | 分三段报数,不再并列两个不同量:**本次请求**上传量(input + 缓存读 + 缓存写,harness 的四个桶互斥)、**会话累计**(未缓存输入 / 输出 / 缓存读 / 缓存写)、**上下文占用** |
@@ -363,7 +367,7 @@ dsh-tui
363
367
  | `/hooks` | 无 | 占位:DSH hooks 未在组合中挂载时给出说明 |
364
368
  | `/mcp` | 无 | MCP 连接状态(工具按 `mcp__服务器__工具` 分组);未配置时给出 `cordis.patch.yml` 插入示例 |
365
369
  | `/skills` | 无 | 技能目录选择器(名称+来源+简述),Enter 将可直调技能以 `/name ` 填回输入行 |
366
- | `/plugins` | `check <dsh-plugin.json 路径>` | 插件诊断:信任横幅 + host 描述符 + 授权矩阵 + 台账;`check` 校验清单文件并给兼容状态 |
370
+ | `/plugin` | `list` · `check <dsh-plugin.json 路径>` · `info <id 或 spec>` · `registries` | `list` 简洁列出你装的额外插件(不含安装自带);无参给完整诊断:信任横幅 + host 描述符 + 授权矩阵 + 台账 + profile 的 bundle/行(预留为插件管理面板,后续段实现);`check` 校验清单并给兼容状态,`info` 查已装条目或待装 spec,`registries` 列安装源 |
367
371
  | `/update` | 无 | 更新 TUI 并自动重启恢复会话(仅 `dsh --profile` 启动可用;回合运行中会拒绝) |
368
372
  | `/terminal-setup` | 无 | 终端配置建议(Windows Terminal ≥110 列、粘贴键位) |
369
373
 
@@ -402,7 +406,9 @@ dsh-TUI 不预装通用技能;`/skills` 浏览 DSH 发现的技能,可直调
402
406
  | 退出 | `/exit`(或 `/quit` `/q`) | 空闲 `Ctrl+C` 双击或 `Ctrl+D` 双击也可退出;工作中中断迟迟不收敛时再按 `Ctrl+C`/`Ctrl+D` 强制退出 |
403
407
 
404
408
  命令行恢复:`dsh-tui --resume`(最近会话)/ `dsh-tui --resume <id>`(指定会话)。
405
- `-c` / `--continue` 等价。
409
+ `-c` / `--continue` 等价。启动恢复只针对**本次启动所选的后端**:该后端没有上次会话,
410
+ 或派生出的目标属于别的后端时,启动器明确报错并以退出码 1 收束,不静默冷启动、不新建
411
+ 会话(安全模式的「重试正常启动」降级为告警 + 冷启动,见 [README](../README_ZH.md))。
406
412
 
407
413
  ### 4.2 时间回溯 rewind(双击 Esc)
408
414
 
@@ -436,8 +442,12 @@ dsh-TUI 不预装通用技能;`/skills` 浏览 DSH 发现的技能,可直调
436
442
 
437
443
  ### 4.6 模型切换与预设
438
444
 
439
- - `/model`:选择器。**切换 = fork 会话续聊**(历史保留、仅换路由,旧会话留在 `/resume`);
440
- 持久化 `~/.dsh-tui/model.json`。
445
+ 同会话切换需要 DSH `0.1.2-alpha.3` 或更高版本;旧版会提示升级,防止子代理继续使用切换前的模型。停放中的会话保留所选路由。
446
+
447
+ - `/model`:选择器。**同会话切换模型**(保留 session ID 和历史,下一次请求使用新路由);
448
+ 持久化 `~/.dsh-tui/model.json`,下次启动直接沿用它(cordis.yml/profile 中的
449
+ `provider`/`model` 只是首次启动的部署默认值)。
450
+ - DSH 的顶部标签以「最近使用」开头,再列各提供商,`Tab` / `Shift+Tab` 切换提供商;Codex 与 Claude 直接显示模型目录,不显示这些标签。所有后端均用 `↑/↓` 选模型、`←/→` 调推理等级、`Enter` 一并应用、`Esc` 取消草稿,支持点击可用的标签、模型、档位与选择/取消提示,以及滚轮移动模型焦点。点击推理档位会立即应用当前聚焦模型与该强度,并关闭选择器。
441
451
  - 回合运行中切换会被拒绝。
442
452
  - `/preset` 可选:`standard`(默认全功能)、`ptc`、`minimal`(内核「极简模式」:只暴露一个持久 shell 工具,无 compaction、无计划模式;也因此没有压缩、工具结果不剪枝——长会话可能撞上下文上限,`/compact` 与问卷不可用,Help 与 `/` 补全会标注,进入该预设时提示一次)、
443
453
  `cordis`、`liangshen`(梁神模式)。
@@ -460,7 +470,8 @@ dsh-TUI 不预装通用技能;`/skills` 浏览 DSH 发现的技能,可直调
460
470
  - `/skills` 浏览技能目录,可直调技能以 `/name` 加入命令菜单(dsh-TUI 不自带通用技能)。
461
471
  - `/plan` `/goal` `/feedback` `/permission` 来自 DSH 注册表,随组合并入 `/` 菜单。
462
472
  - **Goals/Todos 面板自动出现**:模型写入 goal/todo 时在输入框上方实时渲染(🎯 目标 + phase 徽章 + 树形 todo),
463
- 无需操作;分栏开启时它迁到右栏的 `todo` 面板(见 §2.8)。
473
+ 无需操作;分栏开启时它迁到右栏的 `todo` 面板(见 §2.8)。目标栏保留单行摘要:悬停被截断的目标正文看全文;
474
+ 裸 `/goal` 把完整状态(目标全文、阶段、轮次或预算、可用命令)打印成 `/plugins` 同款的转录块——inline 没有鼠标指针,长目标靠这个块读。
464
475
 
465
476
  ### 4.9 MCP / Workspace / 其他
466
477
 
@@ -484,7 +495,7 @@ dsh-TUI 不预装通用技能;`/skills` 浏览 DSH 发现的技能,可直调
484
495
 
485
496
  - **开场动画**(约 3.4 秒,每次启动三选一,`/deepseek` 彩蛋重掷):经典 / 爱心 / 睡觉。
486
497
  - **欢迎期闲置动画**(`whaleIdle`,默认开):摆鱼鳍、眨眼、拍尾巴,空闲 10 秒入睡冒 Z;**点击冒爱心唤醒**。
487
- - **女仆娘立绘**(`whaleGirl`,默认关):把标题的像素鲸鱼换成作者绘制的女仆娘——**最优先**走终端图像协议(Kitty/Sixel)的真图渲染;终端不支持(如内联模式)时回落到字符画版女仆娘。**点她一下**会换成「高兴鲸娘」几秒再自动回安静版;开始第一个任务后定格、不再响应点击。
498
+ - **女仆娘立绘**(`whaleGirl`,默认关):DeepSeek 品牌下,宠物皮肤设为 `whale` 并开启本项后,显示作者绘制的女仆娘——优先走 Kitty/Sixel 真图,不支持时回落字符画。**显示真图时,点她一下**会换成「高兴鲸娘」几秒,再自动回安静版;第一个任务后定格,不再响应点击。字符画保持静态。`deepy` 和 `whaleGirl` 皮肤会取代立绘;Claude 使用自己的图案,Codex 使用自己的真图或女仆娘字符画回退;这两个品牌的开屏图案不受宠物皮肤和女仆娘开关影响。见[优先级表](configuration.md)。
488
499
  - 开始第一个 agent 任务后定格为静态帧(`/new` 重新进入欢迎期)。
489
500
  - 鲸鱼右侧文字列:`✦ dsh-TUI v版本号` → 块体大字 `DEEPSEEK / HARNESS`(加粗字形,两行等宽、中间空一行)→
490
501
  当前模型 + effort → 工作目录 → 启动提示行。
@@ -510,8 +521,16 @@ dsh-TUI 不预装通用技能;`/skills` 浏览 DSH 发现的技能,可直调
510
521
  **Row 1 — 上下文分段进度条**(`/settings → statusBar.contextBar`,默认开)
511
522
 
512
523
  - 按内容类型分段着色(system / prompt / assistant / thinking / tools)。
513
- - 分段 token 数是**本地估算**(CJK/全角按 ~1.4 字符/token、ASCII 按 ~4 字符/token、其它脚本按 ~2),
514
- 只描述这条由什么构成,**不参与占用总量**——占用以 ctx 字段/读数为准(见下)。
524
+ - 分段着色按内容类型(system / prompt / assistant / thinking / tools)。**已用段的长短严格等于读数**
525
+ (`13k/64k` 里的 13k):五段只按构成把这个长度切开,估算偏小/偏大都不会再让条画短或画长。
526
+ - 构成分两层:harness 的 `contextBreakdown` 投影(system 提示 / 本次请求信封里的工具 schema /
527
+ 其余可见内容,注入的上下文也在这一项)+ 本地估算(把 meter 的消息侧再按 prompt / assistant /
528
+ thinking / 工具结果细分;ASCII ~4 字符/token、CJK ~1.4、其它脚本 ~2)。旧版 meter 不发布该投影时
529
+ 只用本地估算。
530
+ - 悬停图例报的就是条上那批份额(按占用归因),**五段 + free 合起来正好是窗口**(`1.2k` 这类缩写
531
+ 每项最多差半个单位),不再出现「五段加起来只有读数一半」。估算本身**不参与占用总量**——占用以
532
+ ctx 字段/读数为准(见下)。
533
+ - 构成无法归因到任何类别时,条保持单块已用区域;条和 ctx 字段的悬停明细都报实测 `used`,不列五个零分类。
515
534
  - 条上唯一文字是最右缘读数 `13k/64k 19.5%`(窄屏只显示 `19.5%`)。
516
535
  - 读数按占用率变色:<80% 灰蓝,**≥80% 琥珀、≥95% 红**。
517
536
  - 悬停整条弹出图例:色块 + 名称 + token 数(窄屏自动改用短名)。
@@ -545,6 +564,7 @@ dsh-tui 自身区块在 0.1.7 写入当前 profile 的 `cordis.patch.yml`,旧
545
564
  |---|---|
546
565
  | lang | 界面语言 zh/en(DSH_TUI_LANG 钉死时不可改) |
547
566
  | fullscreen | 全屏模式(默认开);保存后用 `/restart` 生效 |
567
+ | launchpad | 启动页(落地页,默认开):普通启动先落启动页输入第一句话;关闭后直接进入聊天页(带 `--resume` 等恢复目标的启动不受影响,仍直接进会话)。保存后用 `/restart` 生效 |
548
568
  | minimal | 极简界面 Minimal UI(默认关):隐藏开屏头部、emoji 状态符与装饰性配色,底栏只留模型与目录;代码高亮与工具配色保留。**这是界面开关**,对模型能力没有任何影响——别和 `/preset` 的内核「极简模式」预设搞混 |
549
569
  | terminalImages | 终端图片预览(默认开,需终端支持);保存后用 `/restart` 生效。关闭后只显示文字信息并跳过预览解码,不影响向模型发送图片 |
550
570
  | imageBacking | 图片底色(默认 `transparent`,与上一条同在**图表与图片**主题下):聊天照片/插图背后垫什么。透明:只画图片自己的像素,抗锯齿边缘和透明圆角透出终端底色或壁纸;终端底色:先合成到终端背景色,柔和边缘更平滑。立即生效 |
@@ -552,7 +572,7 @@ dsh-tui 自身区块在 0.1.7 写入当前 profile 的 `cordis.patch.yml`,旧
552
572
  | whale | 开屏头部像素鲸鱼娘(默认开);每次启动随机三选一开场动画(经典/爱心/睡觉),`/deepseek` 彩蛋重掷 |
553
573
  | whaleIdle | 鲸鱼娘欢迎期闲置动画(默认开):定格后摆鱼鳍/拍尾巴/眨眼,空闲 10 秒入睡冒 Z;点击冒爱心。开始第一个任务后定格 |
554
574
  | splashFont | 开屏大字字体:按天轮换(默认,随本地日期换款)/ 加粗 / 方角实心 / 半立体 / 宽体 / 点阵灰度 / 镂空模板 / 细笔 / 方板。选某一款即固定那一款,选回「按天轮换」恢复。立即生效 |
555
- | whaleGirl | 女仆娘立绘(默认关):标题像素鲸鱼换成作者绘制的女仆娘**真图**(Kitty/Sixel 图像协议);不支持时回落像素鲸鱼 |
575
+ | whaleGirl | 女仆娘立绘(默认关):DeepSeek 品牌下,设 `companion.skin=whale` 并开启本项;`deepy` 和 `whaleGirl` 皮肤会取代立绘。Claude 使用自己的图案,Codex 使用自己的真图或女仆娘字符画回退;这两个品牌的开屏图案不受宠物皮肤和女仆娘开关影响。优先 Kitty/Sixel 真图,不支持时回落字符画。见[优先级表](configuration.md) |
556
576
  | diffLayout | Edit/Write diff 布局:auto(≥110 列双栏)/ split / unified |
557
577
  | thinkingFold | 思考块:preview(流式 2-3 行预览 + 落定折叠)/ full(展开到轮末) |
558
578
  | btw.contextBudget | `/btw` 追问携带的最近问答总字符预算(默认 24000,范围 1000-200000);超出时从最旧的整组开始裁剪。立即生效 |
@@ -571,8 +591,8 @@ dsh-tui 自身区块在 0.1.7 写入当前 profile 的 `cordis.patch.yml`,旧
571
591
  | expandEditor | 全屏草稿编辑(默认开):输入行尾 `⛶` 或 `Ctrl+Shift+E` 展开成整屏编辑器;`Ctrl+Enter` 发送、`Esc` 收起(草稿还在);关掉后入口不显示 |
572
592
  | statusBar.* | 上表全部状态栏开关(compact/model/thinking/cwd/contextUsage/cache/tokens/cost/tps/gitBranch/sessionTitle/sessionId/mode/contextBar/activity/trajectory;statusBar.sessionId 是底栏显示开关,与 cordis 的启动 sessionId 无关) |
573
593
 
574
- **effortDefault**:模型没有该档时自动就近降级并弹提示;优先级 settings 用户层 > cordis `effort` >
575
- 上次 `/effort`(effort.json)> 模型默认。
594
+ **effortDefault**:模型没有该档时自动就近降级并弹提示;优先级 settings 用户层 > 上次 `/effort`
595
+ (effort.json,即上次实际运行的档位)> cordis `effort`(部署默认值)> 模型默认。
576
596
 
577
597
  **scrollGutter**:scrollbar 轨道可直接拖;`Shift`/`Alt`/`Ctrl`+拖动仍是文字选择。
578
598
 
@@ -618,10 +638,10 @@ dsh 意外退出时,安全模式给出**只读**的环境诊断、profile 插
618
638
 
619
639
  | 项 | 命令 | 说明 |
620
640
  |---|---|---|
621
- | 模型 | `/model` | 选择器;**切换 = fork 会话续聊**(历史保留、仅换路由);持久化 `~/.dsh-tui/model.json`,重启与 `/new` 沿用。从没选过的话,用内置默认模型(当前为 `deepseek-flash`) |
622
- | 推理强度 | `/effort` | 滑杆(←/→ 实时)或 `/effort <id>`;`/effort status` 看当前;新会话默认档在 /settings → 默认推理强度 |
641
+ | 模型 | `/model` | 选择器;**同会话切换模型**(保留 session ID 和历史,仅换后续请求路由);持久化 `~/.dsh-tui/model.json`,重启与 `/new` 沿用(恢复的会话沿用其最后一次请求的路由)——它**优先于** cordis.yml/profile 里写的 `provider`/`model`(后者只是首次启动的部署默认值)。从没选过的话,用配置值,再没有才用 Harness 默认(当前为 `deepseek-flash`) |
642
+ | 推理强度 | `/effort` | 滑杆(←/→ 实时)或 `/effort <id>`;`/effort status` 看当前;持久化 `~/.dsh-tui/effort.json` 并被下一次启动沿用(优先于 cordis.yml 的 `effort`),新会话默认档在 /settings → 默认推理强度 |
623
643
  | Agent 预设 | `/preset` | `standard` / `ptc`(旧 0.1.1 名 `code`)/ `minimal` / `cordis` / **梁神模式 `liangshen`**;**已开始会话不可切换** |
624
- | 主题 | `/theme` | `auto`(OSC 11 跟随终端背景)/ `light` / `dark` / `dark-ansi`;`/theme <名>` 直接切;`/theme status` 看解析结果 |
644
+ | 主题 | `/theme` | `auto`(OSC 11 跟随终端背景)/ `light` / `dark` / `dark-ansi` / `pink-day` / `pink-night` / `pink-ansi`;`/theme <名>` 直接切;`/theme status` 看解析结果 |
625
645
  | 自定义主题 | 手动 | `~/.dsh-tui/themes/<名>.json`,`{base, colors}` 格式,选中即热切换;命名为 `auto` 会被内置遮蔽 |
626
646
  | 语言 | `/lang` | `en` / `zh` 热切换;优先级 `DSH_TUI_LANG` > profile 配置(旧版 settings.yaml 用户层 > cordis.yml)> 持久化 |
627
647
  | 状态行动画 | `/activity` | 选择器或 `/activity frames <名>`;默认 `moon8`,`random` 随机 |
@@ -667,7 +687,7 @@ dsh 意外退出时,安全模式给出**只读**的环境诊断、profile 插
667
687
  12. 会话管理界面(`/resume`、`/home`、`/agentview`、`/bg` 或输入框行首 `⌸`):
668
688
  打字筛选、`★` 固定、`Ctrl+X` 停后台会话;切换只是**停放**。
669
689
  13. 回合运行中 `/compact`、`/model`、`/restart` 会被拒绝——先 `Ctrl+C` 或等回合结束。
670
- 14. `/model` 切换 = fork 续聊(历史保留),持久化后重启与 `/new` 沿用。
690
+ 14. `/model` 在同一会话内切换后续请求的模型(ID 和历史保留);选择保存为新会话默认,恢复的会话沿用其最后一次请求的路由。
671
691
 
672
692
  **问手册**
673
693
 
package/lib/settings.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "package": "@deepseek-harness-tui/dsh-tui",
4
- "packageVersion": "0.14.1",
4
+ "packageVersion": "0.15.0",
5
5
  "namespace": "dsh-tui",
6
6
  "groups": [
7
7
  {
@@ -197,8 +197,8 @@
197
197
  "zh": "宠物皮肤"
198
198
  },
199
199
  "description": {
200
- "en": "Look of the companion panel pet (the panel is enabled by default and can be changed in sidePanel.panels): deepy (default, the deepy whale kit), whale (the same layered pixel whale as the splash) or whaleGirl (the user-provided whale-girl sticker pack, 22 animations). Applies immediately.",
201
- "zh": "伙伴面板里宠物的外形(面板默认启用,可在 sidePanel.panels 中调整):deepy(默认,deepy 小鲸鱼素材包)、whale(与开屏同款的分层像素鲸鱼)或 whaleGirl(用户提供的鲸娘表情包,22 个动画)。立即生效。"
200
+ "en": "DeepSeek brand: whale allows the maid portrait; deepy/whaleGirl replace it. Claude uses its own art; Codex uses its own raster portrait or maid character-art fallback. Look of the companion panel pet (the panel is enabled by default and can be changed in sidePanel.panels): deepy (default, the deepy whale kit), whale (the same layered pixel whale as the splash) or whaleGirl (the user-provided whale-girl sticker pack, 22 animations). Applies immediately.",
201
+ "zh": "DeepSeek 品牌:whale 才能用女仆娘立绘;deepy/whaleGirl 会替换它。Claude 使用自己的图案;Codex 优先显示自己的真图,不可用时回落女仆娘字符画。伙伴面板里宠物的外形(面板默认启用,可在 sidePanel.panels 中调整):deepy(默认,deepy 小鲸鱼素材包)、whale(与开屏同款的分层像素鲸鱼)或 whaleGirl(用户提供的鲸娘表情包,22 个动画)。立即生效。"
202
202
  },
203
203
  "default": "deepy",
204
204
  "options": [
@@ -470,6 +470,22 @@
470
470
  "restartRequired": false,
471
471
  "deprecated": false
472
472
  },
473
+ {
474
+ "key": "launchpad",
475
+ "kind": "boolean",
476
+ "group": "splash",
477
+ "label": {
478
+ "en": "Launchpad on boot",
479
+ "zh": "启动页(落地页)"
480
+ },
481
+ "description": {
482
+ "en": "On: an ordinary launch (no --resume, no first prompt) starts on the launchpad — the landing page where the first sentence gets typed, with the Continue / Sessions / Settings / Kernel row. Off: boots straight into the chat page. A resume target always skips the launchpad either way. On by default. Restart to apply.",
483
+ "zh": "开启:普通启动(不带 --resume、不带首句)先落启动页——输入第一句话的落地页,带「继续上次 / 会话与工作区 / 设置 / 内核」一行;关闭:直接进入聊天页。无论开关,指定恢复的会话总是直接打开。默认开启。重启生效。"
484
+ },
485
+ "default": null,
486
+ "restartRequired": true,
487
+ "deprecated": false
488
+ },
473
489
  {
474
490
  "key": "mathImageBacking",
475
491
  "kind": "select",
@@ -619,6 +635,45 @@
619
635
  "restartRequired": false,
620
636
  "deprecated": false
621
637
  },
638
+ {
639
+ "key": "notificationMethod",
640
+ "kind": "select",
641
+ "group": "conversation",
642
+ "label": {
643
+ "en": "Notification method",
644
+ "zh": "通知方式"
645
+ },
646
+ "description": {
647
+ "en": "Auto uses separate title/body notifications on Ghostty and WezTerm (OSC 777) and Kitty (OSC 99). iTerm2 and Warp use OSC 9 with a title prefix; other terminals ring the bell. Explicit OSC 9 also uses the title prefix. Delivery depends on terminal settings. In tmux, OSC notifications need allow-passthrough on. Applies immediately.",
648
+ "zh": "自动:Ghostty、WezTerm 使用 OSC 777,Kitty 使用 OSC 99,分别显示标题与正文;iTerm2、Warp 使用 OSC 9,将标题放在正文前;其他终端响铃。显式 OSC 9 同样使用标题前缀。实际提醒取决于终端设置;tmux 中 OSC 通知需要开启 allow-passthrough。立即生效。"
649
+ },
650
+ "default": null,
651
+ "options": [
652
+ {
653
+ "value": "auto",
654
+ "label": {
655
+ "en": "Auto",
656
+ "zh": "自动"
657
+ }
658
+ },
659
+ {
660
+ "value": "osc9",
661
+ "label": {
662
+ "en": "OSC 9",
663
+ "zh": "OSC 9"
664
+ }
665
+ },
666
+ {
667
+ "value": "bel",
668
+ "label": {
669
+ "en": "Terminal bell",
670
+ "zh": "终端响铃"
671
+ }
672
+ }
673
+ ],
674
+ "restartRequired": false,
675
+ "deprecated": false
676
+ },
622
677
  {
623
678
  "key": "pageMargin",
624
679
  "kind": "text",
@@ -1049,8 +1104,8 @@
1049
1104
  "zh": "聊天列占比"
1050
1105
  },
1051
1106
  "description": {
1052
- "en": "Chat column as a fraction of the content width: 0.1-0.95, default 0.68. Type a decimal such as `0.6`; while the panel has focus the +/- shortcuts nudge it live for the current session. Applies immediately.",
1053
- "zh": "聊天列占内容宽度的比例:0.1-0.95,默认 0.68。输入小数如 `0.6`;面板获得焦点时可用 +/- 在会话内实时微调。立即生效。"
1107
+ "en": "Chat column as a fraction of the content width: 0.1-0.95, default 0.68. Type a decimal such as `0.6`; drag the divider or use +/- while the panel has focus to resize for the current session. Applies immediately.",
1108
+ "zh": "聊天列占内容宽度的比例:0.1-0.95,默认 0.68。输入小数如 `0.6`;拖拽分隔线,或在面板获得焦点时用 +/-,可在当前会话内实时调宽。立即生效。"
1054
1109
  },
1055
1110
  "default": 0.68,
1056
1111
  "restartRequired": false,
@@ -1464,6 +1519,45 @@
1464
1519
  "restartRequired": false,
1465
1520
  "deprecated": false
1466
1521
  },
1522
+ {
1523
+ "key": "taskNotifications",
1524
+ "kind": "select",
1525
+ "group": "conversation",
1526
+ "label": {
1527
+ "en": "Task completion notifications",
1528
+ "zh": "任务完成通知"
1529
+ },
1530
+ "description": {
1531
+ "en": "Notify when successful live work finishes with no queued follow-up or active goal. The title is dsh-TUI · Task complete; the body previews the latest reply as plain text in one line, with Markdown formatting removed, up to 200 characters. OSC 777/9 may shorten it further to fit a 2048-byte sequence budget without splitting characters. No reply shows only the title; BEL only rings. Default: only while the terminal is unfocused. Off disables notifications; Always also notifies while focused or when focus reporting is unavailable. Replay, cancellation and errors stay quiet. Applies immediately.",
1532
+ "zh": "实时任务成功结束、没有排队的后续输入或活动目标时提醒。标题为「dsh-TUI · 任务已完成」,正文显示最新回复的单行纯文本摘要,去掉 Markdown 样式,最多 200 字符;OSC 777/9 还会按完整序列的 2048 字节预算截短,不拆字符;没有回复时只显示标题,BEL 只响铃。默认仅在终端失去焦点时通知;关闭可禁用,每次完成则在终端聚焦或不支持焦点报告时也通知。回放、取消和失败不通知。立即生效。"
1533
+ },
1534
+ "default": null,
1535
+ "options": [
1536
+ {
1537
+ "value": "unfocused",
1538
+ "label": {
1539
+ "en": "When unfocused",
1540
+ "zh": "仅失焦时"
1541
+ }
1542
+ },
1543
+ {
1544
+ "value": "always",
1545
+ "label": {
1546
+ "en": "Always",
1547
+ "zh": "每次完成"
1548
+ }
1549
+ },
1550
+ {
1551
+ "value": "off",
1552
+ "label": {
1553
+ "en": "Off",
1554
+ "zh": "关闭"
1555
+ }
1556
+ }
1557
+ ],
1558
+ "restartRequired": false,
1559
+ "deprecated": false
1560
+ },
1467
1561
  {
1468
1562
  "key": "terminalImages",
1469
1563
  "kind": "boolean",
@@ -1576,8 +1670,8 @@
1576
1670
  "zh": "标题图形 logo"
1577
1671
  },
1578
1672
  "description": {
1579
- "en": "Show the header splash art — the pixel whale, or the maid portrait when the setting below is on. Off leaves a text-only header.",
1580
- "zh": "开屏头部显示图形 logo:像素鲸鱼(打开下方「女仆娘立绘」时显示女仆娘)。关闭则只留文字标题。"
1673
+ "en": "Header art. DeepSeek follows Companion skin and the maid toggle; Claude uses its own art; Codex uses its own raster portrait or maid character-art fallback. Off leaves a text-only header.",
1674
+ "zh": "标题图形:DeepSeek 品牌随宠物皮肤与女仆娘开关,Claude 使用自己的图案;Codex 优先显示自己的真图,不可用时回落女仆娘字符画。关闭则只留文字标题。"
1581
1675
  },
1582
1676
  "default": true,
1583
1677
  "restartRequired": false,
@@ -1592,8 +1686,8 @@
1592
1686
  "zh": "女仆娘立绘"
1593
1687
  },
1594
1688
  "description": {
1595
- "en": "Swap the header splash's pixel whale for the author-designed maid portrait, rendered FIRST as a real raster through the terminal image protocols (Kitty/Sixel); terminals without graphics support fall back to the character-art maid.",
1596
- "zh": "把开屏头部的像素鲸鱼换成项目作者绘制的女仆娘立绘,最优先走终端图像协议(Kitty/Sixel)的真图渲染;终端不支持时回落到字符画版女仆娘。"
1689
+ "en": "DeepSeek brand: choose whale in Companion skin, then enable this toggle. Claude uses its own art; Codex uses its own raster portrait or maid character-art fallback. Swaps the pixel whale for the author-designed maid portrait, preferring the real raster (Kitty/Sixel) with character-art fallback.",
1690
+ "zh": "DeepSeek 品牌:选 whale 皮肤并开启本项。Claude 使用自己的图案;Codex 优先显示自己的真图,不可用时回落女仆娘字符画。把像素鲸鱼换成项目作者绘制的女仆娘立绘,优先用终端图像协议(Kitty/Sixel)渲染真图,不支持时回落字符画。"
1597
1691
  },
1598
1692
  "default": false,
1599
1693
  "restartRequired": false,
@@ -132,5 +132,5 @@ export declare const CHANNEL_UI_EFFECTS: Readonly<{
132
132
  trajectoryBackendLabel: "read-only";
133
133
  subscribe: "subscribe";
134
134
  }>;
135
- export declare const CHANNEL_UI_PROPERTIES: readonly ["version", "rows", "status", "sessionTitle", "sessionColor", "agentId", "sessionId", "agentBindingGeneration", "sessionRef", "backendCapabilities", "costReport", "rateLimit", "olderHistory", "autoRecapOnOpen", "settingsNamespace", "model", "provider", "configuredProvider", "configuredModel", "configuredPreset", "configuredActivityFrames", "configuredLang", "tokens", "mainCost", "subagentCost", "cwd", "displayCwd", "gitBranch", "working", "compaction", "cancelPending", "spinnerMode", "responseChars", "activeToolCount", "turnStart", "lastUserText", "notifications", "contextWindow", "reasoningEffort", "effortLevels", "lastUsage", "turnUsage", "contextOccupancy", "tps", "tpsSamples", "activityFrames", "diffLayout", "thinkingFold", "jobGroupFold", "toolBackground", "scrollGutter", "pageMargin", "foldTerminalCommand", "turnUsageRow", "promptSessionLabel", "expandEditor", "smoothStreaming", "statusBar", "whale", "whaleIdle", "splashFont", "brand", "whaleGirl", "minimalUi", "minimal", "activityEnabled", "contextBarEnabled", "goal", "todos", "loadedContext", "pending", "commandList", "pluginScene", "contextSegments", "subagents", "subagentControl", "backgroundJobs", "jobControl", "mode", "modeIndex", "modelDisplay", "agentPreset", "selection", "attachedContexts"];
135
+ export declare const CHANNEL_UI_PROPERTIES: readonly ["version", "ready", "startupFailure", "rows", "status", "sessionTitle", "sessionColor", "agentId", "sessionId", "agentBindingGeneration", "sessionRef", "backendCapabilities", "costReport", "rateLimit", "olderHistory", "autoRecapOnOpen", "settingsNamespace", "model", "provider", "configuredProvider", "configuredModel", "configuredPreset", "configuredActivityFrames", "configuredLang", "tokens", "mainCost", "subagentCost", "cwd", "displayCwd", "gitBranch", "working", "compaction", "cancelPending", "spinnerMode", "responseChars", "activeToolCount", "turnStart", "lastUserText", "notifications", "contextWindow", "reasoningEffort", "effortLevels", "lastUsage", "turnUsage", "contextOccupancy", "contextBreakdown", "tps", "tpsSamples", "activityFrames", "diffLayout", "thinkingFold", "jobGroupFold", "toolBackground", "scrollGutter", "pageMargin", "foldTerminalCommand", "turnUsageRow", "promptSessionLabel", "expandEditor", "smoothStreaming", "statusBar", "whale", "whaleIdle", "splashFont", "brand", "whaleGirl", "minimalUi", "minimal", "activityEnabled", "contextBarEnabled", "goal", "todos", "loadedContext", "pending", "commandList", "pluginScene", "contextSegments", "subagents", "subagentControl", "backgroundJobs", "jobControl", "mode", "modeIndex", "modelDisplay", "agentPreset", "selection", "attachedContexts"];
136
136
  //# sourceMappingURL=ui-policy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ui-policy.d.ts","sourceRoot":"","sources":["../../../../src/adapter/channel/ui-policy.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AACvD,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAIvD,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,EAC3C,eAAe,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,mBAAmB,GAAG,iBAAiB,GACjG,eAAe,GAAG,wBAAwB,GAAG,uBAAuB,GACpE,iBAAiB,GAAG,oBAAoB,GAAG,cAAc,GAAG,UAAU,GAAG,cAAc,GAAG,cAAc,GAAG,cAAc,GAAG,YAAY,GAAG,eAAe,GAAG,UAAU,CAC1K,CAAA;AACD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2I4B,CAAA;AAE3D,eAAO,MAAM,qBAAqB,swCAsFe,CAAA"}
1
+ {"version":3,"file":"ui-policy.d.ts","sourceRoot":"","sources":["../../../../src/adapter/channel/ui-policy.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AACvD,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAIvD,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,EAC3C,eAAe,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,mBAAmB,GAAG,iBAAiB,GACjG,eAAe,GAAG,wBAAwB,GAAG,uBAAuB,GACpE,iBAAiB,GAAG,oBAAoB,GAAG,cAAc,GAAG,UAAU,GAAG,cAAc,GAAG,cAAc,GAAG,cAAc,GAAG,YAAY,GAAG,eAAe,GAAG,UAAU,CAC1K,CAAA;AACD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2I4B,CAAA;AAE3D,eAAO,MAAM,qBAAqB,qzCAyFe,CAAA"}