@deepseek-harness-tui/dsh-tui 0.14.1 → 0.16.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 (886) hide show
  1. package/README.md +163 -17
  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 +47 -10
  8. package/guide/dsh-tui-guide/codex-backend.md +26 -4
  9. package/guide/dsh-tui-guide/configuration.en.md +168 -18
  10. package/guide/dsh-tui-guide/configuration.md +144 -16
  11. package/guide/dsh-tui-guide/getting-started.en.md +15 -0
  12. package/guide/dsh-tui-guide/getting-started.md +15 -0
  13. package/guide/dsh-tui-guide/interaction.en.md +64 -24
  14. package/guide/dsh-tui-guide/interaction.md +49 -19
  15. package/guide/dsh-tui-guide/plugins.en.md +97 -3
  16. package/guide/dsh-tui-guide/plugins.md +55 -2
  17. package/guide/dsh-tui-guide/themes.en.md +23 -14
  18. package/guide/dsh-tui-guide/themes.md +19 -12
  19. package/guide/dsh-tui-guide/user-guide.en.md +53 -21
  20. package/guide/dsh-tui-guide/user-guide.md +43 -22
  21. package/lib/settings.json +103 -9
  22. package/lib/types/adapter/channel/projection.d.ts.map +1 -1
  23. package/lib/types/adapter/channel/projection.js +1 -0
  24. package/lib/types/adapter/channel/ui-policy.d.ts +1 -1
  25. package/lib/types/adapter/channel/ui-policy.d.ts.map +1 -1
  26. package/lib/types/adapter/channel/ui-policy.js +4 -0
  27. package/lib/types/adapter/channel/ui.d.ts +2 -0
  28. package/lib/types/adapter/channel/ui.d.ts.map +1 -1
  29. package/lib/types/adapter/channel/ui.js +6 -2
  30. package/lib/types/adapter/kernel/runtime.d.ts.map +1 -1
  31. package/lib/types/adapter/kernel/runtime.js +2 -0
  32. package/lib/types/adapter/ports/channel-catalog.d.ts +5 -1
  33. package/lib/types/adapter/ports/channel-catalog.d.ts.map +1 -1
  34. package/lib/types/adapter/ports/channel-settings.d.ts +14 -3
  35. package/lib/types/adapter/ports/channel-settings.d.ts.map +1 -1
  36. package/lib/types/adapter/ports/channel-ui.d.ts +56 -12
  37. package/lib/types/adapter/ports/channel-ui.d.ts.map +1 -1
  38. package/lib/types/adapter/ports/channel-view.d.ts +68 -0
  39. package/lib/types/adapter/ports/channel-view.d.ts.map +1 -1
  40. package/lib/types/adapter/ports/channel.d.ts +2 -0
  41. package/lib/types/adapter/ports/channel.d.ts.map +1 -1
  42. package/lib/types/adapter/spec/backend-capabilities.d.ts +22 -0
  43. package/lib/types/adapter/spec/backend-capabilities.d.ts.map +1 -0
  44. package/lib/types/adapter/spec/backend-capabilities.js +49 -0
  45. package/lib/types/adapter/spec/protocol-constants.d.ts.map +1 -1
  46. package/lib/types/adapter/spec/protocol-constants.js +10 -3
  47. package/lib/types/adapter/spec/tui-contributions.d.ts +3 -0
  48. package/lib/types/adapter/spec/tui-contributions.d.ts.map +1 -1
  49. package/lib/types/adapter/spec/tui-contributions.js +7 -0
  50. package/lib/types/adapter/standard/registry.d.ts +6 -0
  51. package/lib/types/adapter/standard/registry.d.ts.map +1 -1
  52. package/lib/types/adapter/standard/registry.js +65 -15
  53. package/lib/types/adapter/standard/tui-extension.d.ts.map +1 -1
  54. package/lib/types/adapter/standard/tui-extension.js +7 -1
  55. package/lib/types/adapter/standard/types.d.ts +10 -1
  56. package/lib/types/adapter/standard/types.d.ts.map +1 -1
  57. package/lib/types/adapter/upstream/host-descriptor-driver.d.ts.map +1 -1
  58. package/lib/types/adapter/upstream/host-descriptor-driver.js +52 -0
  59. package/lib/types/agent/backend-manifest.d.ts +152 -0
  60. package/lib/types/agent/backend-manifest.d.ts.map +1 -0
  61. package/lib/types/agent/backend-manifest.js +14 -0
  62. package/lib/types/agent/backend.d.ts +71 -5
  63. package/lib/types/agent/backend.d.ts.map +1 -1
  64. package/lib/types/agent/capabilities.d.ts +6 -0
  65. package/lib/types/agent/capabilities.d.ts.map +1 -1
  66. package/lib/types/agent/events.d.ts +3 -2
  67. package/lib/types/agent/events.d.ts.map +1 -1
  68. package/lib/types/agent/index.d.ts +2 -0
  69. package/lib/types/agent/index.d.ts.map +1 -1
  70. package/lib/types/agent/refs.d.ts +11 -1
  71. package/lib/types/agent/refs.d.ts.map +1 -1
  72. package/lib/types/agent/starting-session.d.ts +4 -0
  73. package/lib/types/agent/starting-session.d.ts.map +1 -0
  74. package/lib/types/agent/starting-session.js +19 -0
  75. package/lib/types/backends/claude/activity.d.ts +1 -1
  76. package/lib/types/backends/claude/activity.d.ts.map +1 -1
  77. package/lib/types/backends/claude/activity.js +5 -5
  78. package/lib/types/backends/claude/auth.d.ts.map +1 -1
  79. package/lib/types/backends/claude/auth.js +10 -3
  80. package/lib/types/backends/claude/backend.d.ts.map +1 -1
  81. package/lib/types/backends/claude/backend.js +103 -29
  82. package/lib/types/backends/claude/catalog.d.ts +2 -1
  83. package/lib/types/backends/claude/catalog.d.ts.map +1 -1
  84. package/lib/types/backends/claude/catalog.js +15 -5
  85. package/lib/types/backends/claude/channels.d.ts +5 -3
  86. package/lib/types/backends/claude/channels.d.ts.map +1 -1
  87. package/lib/types/backends/claude/channels.js +5 -4
  88. package/lib/types/backends/claude/contract.d.ts +4 -0
  89. package/lib/types/backends/claude/contract.d.ts.map +1 -1
  90. package/lib/types/backends/claude/contract.js +4 -0
  91. package/lib/types/backends/claude/controls.d.ts +4 -0
  92. package/lib/types/backends/claude/controls.d.ts.map +1 -1
  93. package/lib/types/backends/claude/controls.js +34 -42
  94. package/lib/types/backends/claude/dialogs.d.ts +8 -2
  95. package/lib/types/backends/claude/dialogs.d.ts.map +1 -1
  96. package/lib/types/backends/claude/dialogs.js +24 -16
  97. package/lib/types/backends/claude/images.d.ts +1 -1
  98. package/lib/types/backends/claude/images.d.ts.map +1 -1
  99. package/lib/types/backends/claude/images.js +7 -7
  100. package/lib/types/backends/claude/manifest.d.ts +21 -0
  101. package/lib/types/backends/claude/manifest.d.ts.map +1 -0
  102. package/lib/types/backends/claude/manifest.js +29 -0
  103. package/lib/types/backends/claude/older-history.js +2 -2
  104. package/lib/types/backends/claude/permissions.js +11 -11
  105. package/lib/types/backends/claude/prefs.d.ts +4 -2
  106. package/lib/types/backends/claude/prefs.d.ts.map +1 -1
  107. package/lib/types/backends/claude/prefs.js +4 -3
  108. package/lib/types/backends/claude/process.d.ts +16 -4
  109. package/lib/types/backends/claude/process.d.ts.map +1 -1
  110. package/lib/types/backends/claude/process.js +100 -37
  111. package/lib/types/backends/claude/send-message.d.ts +1 -1
  112. package/lib/types/backends/claude/send-message.d.ts.map +1 -1
  113. package/lib/types/backends/claude/session/auth.js +22 -22
  114. package/lib/types/backends/claude/session/channels.d.ts +4 -0
  115. package/lib/types/backends/claude/session/channels.d.ts.map +1 -1
  116. package/lib/types/backends/claude/session/channels.js +5 -3
  117. package/lib/types/backends/claude/session/lifecycle.d.ts.map +1 -1
  118. package/lib/types/backends/claude/session/lifecycle.js +31 -23
  119. package/lib/types/backends/claude/session/store.js +8 -8
  120. package/lib/types/backends/claude/session/subagents.js +2 -2
  121. package/lib/types/backends/claude/session/types.d.ts +7 -0
  122. package/lib/types/backends/claude/session/types.d.ts.map +1 -1
  123. package/lib/types/backends/claude/side-query.js +3 -3
  124. package/lib/types/backends/claude/task-output.js +5 -5
  125. package/lib/types/backends/claude/text.d.ts +778 -0
  126. package/lib/types/backends/claude/text.d.ts.map +1 -0
  127. package/lib/types/backends/claude/text.js +298 -0
  128. package/lib/types/backends/claude/transcript-file.d.ts +1 -1
  129. package/lib/types/backends/claude/transcript-file.d.ts.map +1 -1
  130. package/lib/types/backends/claude/transcript-file.js +4 -4
  131. package/lib/types/backends/claude/translate/attempts.js +2 -2
  132. package/lib/types/backends/claude/translate/core.js +3 -3
  133. package/lib/types/backends/claude/translate/messages.js +4 -4
  134. package/lib/types/backends/claude/translate/system.js +14 -14
  135. package/lib/types/backends/claude/translate/tasks.js +2 -2
  136. package/lib/types/backends/claude/translate/types.d.ts +1 -1
  137. package/lib/types/backends/claude/translate/types.d.ts.map +1 -1
  138. package/lib/types/backends/codex/auth/external-tokens.js +16 -16
  139. package/lib/types/backends/codex/auth/status.js +14 -14
  140. package/lib/types/backends/codex/backend.d.ts +4 -19
  141. package/lib/types/backends/codex/backend.d.ts.map +1 -1
  142. package/lib/types/backends/codex/backend.js +118 -25
  143. package/lib/types/backends/codex/catalog.d.ts +2 -1
  144. package/lib/types/backends/codex/catalog.d.ts.map +1 -1
  145. package/lib/types/backends/codex/catalog.js +63 -18
  146. package/lib/types/backends/codex/channels.d.ts +6 -3
  147. package/lib/types/backends/codex/channels.d.ts.map +1 -1
  148. package/lib/types/backends/codex/channels.js +15 -13
  149. package/lib/types/backends/codex/contract.d.ts +3 -0
  150. package/lib/types/backends/codex/contract.d.ts.map +1 -1
  151. package/lib/types/backends/codex/contract.js +3 -0
  152. package/lib/types/backends/codex/detect.d.ts.map +1 -1
  153. package/lib/types/backends/codex/detect.js +9 -6
  154. package/lib/types/backends/codex/manifest.d.ts +30 -0
  155. package/lib/types/backends/codex/manifest.d.ts.map +1 -0
  156. package/lib/types/backends/codex/manifest.js +23 -0
  157. package/lib/types/backends/codex/prefs.d.ts +4 -2
  158. package/lib/types/backends/codex/prefs.d.ts.map +1 -1
  159. package/lib/types/backends/codex/prefs.js +4 -3
  160. package/lib/types/backends/codex/rpc/hub.js +2 -2
  161. package/lib/types/backends/codex/session/activity.d.ts +1 -1
  162. package/lib/types/backends/codex/session/activity.d.ts.map +1 -1
  163. package/lib/types/backends/codex/session/activity.js +13 -13
  164. package/lib/types/backends/codex/session/approvals.js +30 -30
  165. package/lib/types/backends/codex/session/async-questions.d.ts +17 -0
  166. package/lib/types/backends/codex/session/async-questions.d.ts.map +1 -0
  167. package/lib/types/backends/codex/session/async-questions.js +89 -0
  168. package/lib/types/backends/codex/session/commands.d.ts +8 -2
  169. package/lib/types/backends/codex/session/commands.d.ts.map +1 -1
  170. package/lib/types/backends/codex/session/commands.js +71 -23
  171. package/lib/types/backends/codex/session/controls.d.ts +1 -1
  172. package/lib/types/backends/codex/session/controls.d.ts.map +1 -1
  173. package/lib/types/backends/codex/session/controls.js +21 -16
  174. package/lib/types/backends/codex/session/goals.d.ts.map +1 -1
  175. package/lib/types/backends/codex/session/goals.js +3 -3
  176. package/lib/types/backends/codex/session/history.js +2 -2
  177. package/lib/types/backends/codex/session/images.js +8 -8
  178. package/lib/types/backends/codex/session/input.d.ts +6 -2
  179. package/lib/types/backends/codex/session/input.d.ts.map +1 -1
  180. package/lib/types/backends/codex/session/input.js +55 -13
  181. package/lib/types/backends/codex/session/plan-review.js +6 -6
  182. package/lib/types/backends/codex/session/session.d.ts.map +1 -1
  183. package/lib/types/backends/codex/session/session.js +100 -42
  184. package/lib/types/backends/codex/session/side-query.d.ts.map +1 -1
  185. package/lib/types/backends/codex/session/side-query.js +27 -9
  186. package/lib/types/backends/codex/session/state.d.ts +6 -1
  187. package/lib/types/backends/codex/session/state.d.ts.map +1 -1
  188. package/lib/types/backends/codex/session/subagents.js +5 -5
  189. package/lib/types/backends/codex/session/tasks.js +4 -4
  190. package/lib/types/backends/codex/text.d.ts +933 -0
  191. package/lib/types/backends/codex/text.d.ts.map +1 -0
  192. package/lib/types/backends/codex/text.js +313 -0
  193. package/lib/types/backends/codex/translate/items.d.ts.map +1 -1
  194. package/lib/types/backends/codex/translate/items.js +7 -5
  195. package/lib/types/backends/codex/translate/live.d.ts.map +1 -1
  196. package/lib/types/backends/codex/translate/live.js +11 -8
  197. package/lib/types/backends/codex/translate/notices.js +10 -10
  198. package/lib/types/backends/codex/translate/question-reply.d.ts +11 -0
  199. package/lib/types/backends/codex/translate/question-reply.d.ts.map +1 -0
  200. package/lib/types/backends/codex/translate/question-reply.js +53 -0
  201. package/lib/types/backends/shared/channel-slug.d.ts +4 -0
  202. package/lib/types/backends/shared/channel-slug.d.ts.map +1 -0
  203. package/lib/types/backends/shared/channel-slug.js +25 -0
  204. package/lib/types/backends/shared/channel-tokens.d.ts.map +1 -1
  205. package/lib/types/backends/shared/channel-tokens.js +30 -23
  206. package/lib/types/{channel → backends/shared}/elicitation.d.ts +78 -21
  207. package/lib/types/backends/shared/elicitation.d.ts.map +1 -0
  208. package/lib/types/{channel → backends/shared}/elicitation.js +64 -66
  209. package/lib/types/backends/shared/image-size.d.ts +33 -0
  210. package/lib/types/backends/shared/image-size.d.ts.map +1 -0
  211. package/lib/types/backends/shared/image-size.js +134 -0
  212. package/lib/types/{utils → backends/shared}/jsonl.d.ts +5 -1
  213. package/lib/types/backends/shared/jsonl.d.ts.map +1 -0
  214. package/lib/types/{utils → backends/shared}/jsonl.js +5 -1
  215. package/lib/types/backends/shared/localized-text.d.ts +30 -0
  216. package/lib/types/backends/shared/localized-text.d.ts.map +1 -0
  217. package/lib/types/backends/shared/localized-text.js +24 -0
  218. package/lib/types/backends/shared/platform-text.d.ts +88 -0
  219. package/lib/types/backends/shared/platform-text.d.ts.map +1 -0
  220. package/lib/types/backends/shared/platform-text.js +33 -0
  221. package/lib/types/branding.d.ts +13 -0
  222. package/lib/types/branding.d.ts.map +1 -1
  223. package/lib/types/branding.js +18 -0
  224. package/lib/types/channel/channel-slug.d.ts +3 -1
  225. package/lib/types/channel/channel-slug.d.ts.map +1 -1
  226. package/lib/types/channel/channel-slug.js +3 -1
  227. package/lib/types/channel/projection.d.ts.map +1 -1
  228. package/lib/types/channel/projection.js +10 -0
  229. package/lib/types/channel/sanitize.d.ts +7 -0
  230. package/lib/types/channel/sanitize.d.ts.map +1 -1
  231. package/lib/types/channel/sanitize.js +9 -0
  232. package/lib/types/channel/usage.d.ts.map +1 -1
  233. package/lib/types/channel/usage.js +5 -0
  234. package/lib/types/commands.d.ts +15 -0
  235. package/lib/types/commands.d.ts.map +1 -1
  236. package/lib/types/commands.js +58 -10
  237. package/lib/types/components/AgentMessageComposer.d.ts.map +1 -1
  238. package/lib/types/components/AgentMessageComposer.js +3 -2
  239. package/lib/types/components/BtwPanel.d.ts.map +1 -1
  240. package/lib/types/components/BtwPanel.js +4 -2
  241. package/lib/types/components/Chat/JobCard.js +3 -3
  242. package/lib/types/components/CommandSuggestions.d.ts.map +1 -1
  243. package/lib/types/components/CommandSuggestions.js +24 -7
  244. package/lib/types/components/ContextBarView.d.ts +5 -1
  245. package/lib/types/components/ContextBarView.d.ts.map +1 -1
  246. package/lib/types/components/ContextBarView.js +6 -3
  247. package/lib/types/components/ExtensionDialog.d.ts.map +1 -1
  248. package/lib/types/components/ExtensionDialog.js +2 -3
  249. package/lib/types/components/GoalTodoPanel.d.ts.map +1 -1
  250. package/lib/types/components/GoalTodoPanel.js +14 -3
  251. package/lib/types/components/InlineMathParagraph.js +1 -1
  252. package/lib/types/components/KernelPicker.d.ts.map +1 -1
  253. package/lib/types/components/KernelPicker.js +1 -1
  254. package/lib/types/components/LogoV2.d.ts +4 -1
  255. package/lib/types/components/LogoV2.d.ts.map +1 -1
  256. package/lib/types/components/LogoV2.js +14 -9
  257. package/lib/types/components/MarkdownTable.d.ts.map +1 -1
  258. package/lib/types/components/MarkdownTable.js +4 -3
  259. package/lib/types/components/MessageList.d.ts.map +1 -1
  260. package/lib/types/components/MessageList.js +109 -15
  261. package/lib/types/components/ModelPicker.d.ts +24 -31
  262. package/lib/types/components/ModelPicker.d.ts.map +1 -1
  263. package/lib/types/components/ModelPicker.js +115 -40
  264. package/lib/types/components/PermissionsPicker.d.ts +10 -1
  265. package/lib/types/components/PermissionsPicker.d.ts.map +1 -1
  266. package/lib/types/components/PermissionsPicker.js +24 -16
  267. package/lib/types/components/PluginInstallPane.d.ts +21 -0
  268. package/lib/types/components/PluginInstallPane.d.ts.map +1 -0
  269. package/lib/types/components/PluginInstallPane.js +84 -0
  270. package/lib/types/components/PluginManagePane.d.ts +21 -0
  271. package/lib/types/components/PluginManagePane.d.ts.map +1 -0
  272. package/lib/types/components/PluginManagePane.js +69 -0
  273. package/lib/types/components/PromptEditor.d.ts +3 -3
  274. package/lib/types/components/PromptInput.d.ts +21 -3
  275. package/lib/types/components/PromptInput.d.ts.map +1 -1
  276. package/lib/types/components/PromptInput.js +65 -121
  277. package/lib/types/components/SdkInstallWizard.d.ts +3 -1
  278. package/lib/types/components/SdkInstallWizard.d.ts.map +1 -1
  279. package/lib/types/components/SdkInstallWizard.js +8 -1
  280. package/lib/types/components/SearchBox.d.ts +13 -15
  281. package/lib/types/components/SearchBox.d.ts.map +1 -1
  282. package/lib/types/components/SearchBox.js +58 -27
  283. package/lib/types/components/SubagentCard.d.ts +13 -1
  284. package/lib/types/components/SubagentCard.d.ts.map +1 -1
  285. package/lib/types/components/SubagentCard.js +27 -12
  286. package/lib/types/components/SubagentDashboard.d.ts +8 -1
  287. package/lib/types/components/SubagentDashboard.d.ts.map +1 -1
  288. package/lib/types/components/SubagentDashboard.js +58 -16
  289. package/lib/types/components/ThemePicker.d.ts +1 -1
  290. package/lib/types/components/ThemePicker.d.ts.map +1 -1
  291. package/lib/types/components/ThemePicker.js +14 -11
  292. package/lib/types/components/Tooltip.js +1 -1
  293. package/lib/types/components/WorkingSpinner.js +1 -1
  294. package/lib/types/components/WorkspaceFlowPicker.d.ts.map +1 -1
  295. package/lib/types/components/WorkspaceFlowPicker.js +4 -3
  296. package/lib/types/components/composerImageTokens.d.ts +24 -0
  297. package/lib/types/components/composerImageTokens.d.ts.map +1 -0
  298. package/lib/types/components/composerImageTokens.js +37 -0
  299. package/lib/types/components/design-system/InputCaret.d.ts +7 -0
  300. package/lib/types/components/design-system/InputCaret.d.ts.map +1 -0
  301. package/lib/types/components/design-system/InputCaret.js +9 -0
  302. package/lib/types/components/design-system/ListItem.d.ts +13 -2
  303. package/lib/types/components/design-system/ListItem.d.ts.map +1 -1
  304. package/lib/types/components/design-system/ListItem.js +11 -5
  305. package/lib/types/components/design-system/ThemeProvider.d.ts.map +1 -1
  306. package/lib/types/components/design-system/ThemeProvider.js +6 -8
  307. package/lib/types/components/kernelCatalog.d.ts +55 -11
  308. package/lib/types/components/kernelCatalog.d.ts.map +1 -1
  309. package/lib/types/components/kernelCatalog.js +42 -23
  310. package/lib/types/components/launchpadActions.d.ts +4 -0
  311. package/lib/types/components/launchpadActions.d.ts.map +1 -1
  312. package/lib/types/components/launchpadActions.js +5 -4
  313. package/lib/types/components/launchpadLayout.d.ts +14 -1
  314. package/lib/types/components/launchpadLayout.d.ts.map +1 -1
  315. package/lib/types/components/launchpadLayout.js +38 -19
  316. package/lib/types/components/messages/TeamMessageBubble.d.ts +20 -0
  317. package/lib/types/components/messages/TeamMessageBubble.d.ts.map +1 -0
  318. package/lib/types/components/messages/TeamMessageBubble.js +15 -0
  319. package/lib/types/components/messages/UserPromptMessage.d.ts +4 -3
  320. package/lib/types/components/messages/UserPromptMessage.d.ts.map +1 -1
  321. package/lib/types/components/messages/UserPromptMessage.js +4 -3
  322. package/lib/types/components/questions/AskUserQuestionPanel.d.ts.map +1 -1
  323. package/lib/types/components/questions/AskUserQuestionPanel.js +8 -3
  324. package/lib/types/components/questions/PlanReviewPanel.d.ts.map +1 -1
  325. package/lib/types/components/questions/PlanReviewPanel.js +4 -3
  326. package/lib/types/components/questions/ProviderModelEditor.d.ts.map +1 -1
  327. package/lib/types/components/questions/ProviderModelEditor.js +3 -13
  328. package/lib/types/components/sessions/ForeignSessionRow.d.ts +3 -1
  329. package/lib/types/components/sessions/ForeignSessionRow.d.ts.map +1 -1
  330. package/lib/types/components/sessions/ForeignSessionRow.js +5 -2
  331. package/lib/types/components/sessions/SessionListRow.d.ts +3 -1
  332. package/lib/types/components/sessions/SessionListRow.d.ts.map +1 -1
  333. package/lib/types/components/sessions/SessionListRow.js +5 -2
  334. package/lib/types/components/sidePanel/PanelBar.d.ts +1 -0
  335. package/lib/types/components/sidePanel/PanelBar.d.ts.map +1 -1
  336. package/lib/types/components/sidePanel/PanelBar.js +21 -17
  337. package/lib/types/components/sidePanel/PanelHost.d.ts.map +1 -1
  338. package/lib/types/components/sidePanel/PanelHost.js +5 -1
  339. package/lib/types/components/sidePanel/PanelStore.d.ts +8 -0
  340. package/lib/types/components/sidePanel/PanelStore.d.ts.map +1 -1
  341. package/lib/types/components/sidePanel/PanelStore.js +11 -0
  342. package/lib/types/components/sidePanel/SidePanelColumn.d.ts +1 -1
  343. package/lib/types/components/sidePanel/SidePanelColumn.d.ts.map +1 -1
  344. package/lib/types/components/sidePanel/SidePanelColumn.js +15 -2
  345. package/lib/types/components/sidePanel/SidePanelLayout.d.ts +6 -4
  346. package/lib/types/components/sidePanel/SidePanelLayout.d.ts.map +1 -1
  347. package/lib/types/components/sidePanel/SidePanelLayout.js +33 -7
  348. package/lib/types/components/sidePanel/SidePanelRuntimeContext.d.ts +7 -0
  349. package/lib/types/components/sidePanel/SidePanelRuntimeContext.d.ts.map +1 -1
  350. package/lib/types/components/sidePanel/SidePanelRuntimeContext.js +4 -0
  351. package/lib/types/components/sidePanel/btw/BtwComposer.d.ts +7 -2
  352. package/lib/types/components/sidePanel/btw/BtwComposer.d.ts.map +1 -1
  353. package/lib/types/components/sidePanel/btw/BtwComposer.js +28 -8
  354. package/lib/types/components/sidePanel/btw/BtwPanelAdapter.d.ts +2 -1
  355. package/lib/types/components/sidePanel/btw/BtwPanelAdapter.d.ts.map +1 -1
  356. package/lib/types/components/sidePanel/btw/BtwPanelAdapter.js +156 -21
  357. package/lib/types/components/sidePanel/btw/BtwThreadScene.d.ts +6 -2
  358. package/lib/types/components/sidePanel/btw/BtwThreadScene.d.ts.map +1 -1
  359. package/lib/types/components/sidePanel/btw/BtwThreadScene.js +64 -16
  360. package/lib/types/components/sidePanel/btw/BtwThreadView.d.ts +15 -5
  361. package/lib/types/components/sidePanel/btw/BtwThreadView.d.ts.map +1 -1
  362. package/lib/types/components/sidePanel/btw/BtwThreadView.js +101 -10
  363. package/lib/types/components/sidePanel/btw/threads.d.ts +18 -0
  364. package/lib/types/components/sidePanel/btw/threads.d.ts.map +1 -1
  365. package/lib/types/components/sidePanel/btw/threads.js +51 -0
  366. package/lib/types/components/sidePanel/builtinPanels.d.ts.map +1 -1
  367. package/lib/types/components/sidePanel/builtinPanels.js +5 -1
  368. package/lib/types/components/sidePanel/companion/CompanionPanel.js +2 -2
  369. package/lib/types/components/sidePanel/companion/SplashMascot.d.ts +5 -1
  370. package/lib/types/components/sidePanel/companion/SplashMascot.d.ts.map +1 -1
  371. package/lib/types/components/sidePanel/companion/SplashMascot.js +19 -4
  372. package/lib/types/components/sidePanel/companion/skins.d.ts +8 -0
  373. package/lib/types/components/sidePanel/companion/skins.d.ts.map +1 -1
  374. package/lib/types/components/sidePanel/companion/skins.js +57 -12
  375. package/lib/types/components/sidePanel/types.d.ts +7 -1
  376. package/lib/types/components/sidePanel/types.d.ts.map +1 -1
  377. package/lib/types/components/sidePanel/useSidePanel.d.ts +2 -0
  378. package/lib/types/components/sidePanel/useSidePanel.d.ts.map +1 -1
  379. package/lib/types/components/sidePanel/useSidePanel.js +11 -1
  380. package/lib/types/components/splashArtRows.d.ts +29 -0
  381. package/lib/types/components/splashArtRows.d.ts.map +1 -0
  382. package/lib/types/components/splashArtRows.js +31 -0
  383. package/lib/types/components/splashFonts.d.ts +24 -1
  384. package/lib/types/components/splashFonts.d.ts.map +1 -1
  385. package/lib/types/components/splashFonts.js +40 -5
  386. package/lib/types/components/teamRoster.d.ts +70 -0
  387. package/lib/types/components/teamRoster.d.ts.map +1 -0
  388. package/lib/types/components/teamRoster.js +78 -0
  389. package/lib/types/components/workspaces/HomeWorkspaceRow.d.ts +3 -1
  390. package/lib/types/components/workspaces/HomeWorkspaceRow.d.ts.map +1 -1
  391. package/lib/types/components/workspaces/HomeWorkspaceRow.js +5 -2
  392. package/lib/types/dsh-adapter/admission-loader.d.ts +102 -0
  393. package/lib/types/dsh-adapter/admission-loader.d.ts.map +1 -0
  394. package/lib/types/dsh-adapter/admission-loader.js +301 -0
  395. package/lib/types/dsh-adapter/agent-view.d.ts.map +1 -1
  396. package/lib/types/dsh-adapter/agent-view.js +3 -1
  397. package/lib/types/dsh-adapter/approvals.d.ts +7 -0
  398. package/lib/types/dsh-adapter/approvals.d.ts.map +1 -1
  399. package/lib/types/dsh-adapter/approvals.js +45 -1
  400. package/lib/types/dsh-adapter/backend/translate.d.ts.map +1 -1
  401. package/lib/types/dsh-adapter/backend/translate.js +71 -8
  402. package/lib/types/dsh-adapter/backend-admission.d.ts +64 -0
  403. package/lib/types/dsh-adapter/backend-admission.d.ts.map +1 -0
  404. package/lib/types/dsh-adapter/backend-admission.js +34 -0
  405. package/lib/types/dsh-adapter/backend-assembly.d.ts +31 -0
  406. package/lib/types/dsh-adapter/backend-assembly.d.ts.map +1 -0
  407. package/lib/types/dsh-adapter/backend-assembly.js +225 -0
  408. package/lib/types/dsh-adapter/backend-contribution.d.ts +62 -0
  409. package/lib/types/dsh-adapter/backend-contribution.d.ts.map +1 -0
  410. package/lib/types/dsh-adapter/backend-contribution.js +78 -0
  411. package/lib/types/dsh-adapter/backend-registry.d.ts +136 -0
  412. package/lib/types/dsh-adapter/backend-registry.d.ts.map +1 -0
  413. package/lib/types/dsh-adapter/backend-registry.js +304 -0
  414. package/lib/types/dsh-adapter/backends.d.ts +67 -24
  415. package/lib/types/dsh-adapter/backends.d.ts.map +1 -1
  416. package/lib/types/dsh-adapter/backends.generated.d.ts +12 -0
  417. package/lib/types/dsh-adapter/backends.generated.d.ts.map +1 -0
  418. package/lib/types/dsh-adapter/backends.generated.js +6 -0
  419. package/lib/types/dsh-adapter/backends.js +91 -46
  420. package/lib/types/dsh-adapter/bundled-presets.d.ts.map +1 -1
  421. package/lib/types/dsh-adapter/bundled-presets.js +60 -3
  422. package/lib/types/dsh-adapter/channel/action-readiness.d.ts +2 -0
  423. package/lib/types/dsh-adapter/channel/action-readiness.d.ts.map +1 -1
  424. package/lib/types/dsh-adapter/channel/action-readiness.js +9 -3
  425. package/lib/types/dsh-adapter/channel/agent-view-projection.js +2 -2
  426. package/lib/types/dsh-adapter/channel/background-action.d.ts.map +1 -1
  427. package/lib/types/dsh-adapter/channel/background-action.js +8 -3
  428. package/lib/types/dsh-adapter/channel/binding-events.d.ts +17 -3
  429. package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -1
  430. package/lib/types/dsh-adapter/channel/binding-events.js +19 -46
  431. package/lib/types/dsh-adapter/channel/channel-host.d.ts +45 -0
  432. package/lib/types/dsh-adapter/channel/channel-host.d.ts.map +1 -0
  433. package/lib/types/dsh-adapter/channel/channel-host.js +1 -0
  434. package/lib/types/dsh-adapter/channel/command-completions.d.ts +5 -0
  435. package/lib/types/dsh-adapter/channel/command-completions.d.ts.map +1 -1
  436. package/lib/types/dsh-adapter/channel/command-completions.js +79 -6
  437. package/lib/types/dsh-adapter/channel/compaction.d.ts +7 -2
  438. package/lib/types/dsh-adapter/channel/compaction.d.ts.map +1 -1
  439. package/lib/types/dsh-adapter/channel/compaction.js +100 -26
  440. package/lib/types/dsh-adapter/channel/composer-images.d.ts +4 -2
  441. package/lib/types/dsh-adapter/channel/composer-images.d.ts.map +1 -1
  442. package/lib/types/dsh-adapter/channel/composer-images.js +36 -5
  443. package/lib/types/dsh-adapter/channel/cordis-host.d.ts +14 -0
  444. package/lib/types/dsh-adapter/channel/cordis-host.d.ts.map +1 -0
  445. package/lib/types/dsh-adapter/channel/cordis-host.js +35 -0
  446. package/lib/types/dsh-adapter/channel/core/actions.d.ts +3 -3
  447. package/lib/types/dsh-adapter/channel/core/actions.d.ts.map +1 -1
  448. package/lib/types/dsh-adapter/channel/core/actions.js +15 -6
  449. package/lib/types/dsh-adapter/channel/core/binding-feed.d.ts +10 -3
  450. package/lib/types/dsh-adapter/channel/core/binding-feed.d.ts.map +1 -1
  451. package/lib/types/dsh-adapter/channel/core/binding-feed.js +5 -1
  452. package/lib/types/dsh-adapter/channel/core/compose.d.ts +12 -28
  453. package/lib/types/dsh-adapter/channel/core/compose.d.ts.map +1 -1
  454. package/lib/types/dsh-adapter/channel/core/compose.js +330 -117
  455. package/lib/types/dsh-adapter/channel/core/files.d.ts +7 -2
  456. package/lib/types/dsh-adapter/channel/core/files.d.ts.map +1 -1
  457. package/lib/types/dsh-adapter/channel/core/files.js +1 -0
  458. package/lib/types/dsh-adapter/channel/core/host.d.ts +12 -6
  459. package/lib/types/dsh-adapter/channel/core/host.d.ts.map +1 -1
  460. package/lib/types/dsh-adapter/channel/core/host.js +69 -35
  461. package/lib/types/dsh-adapter/channel/core/local-actions.d.ts +5 -3
  462. package/lib/types/dsh-adapter/channel/core/local-actions.d.ts.map +1 -1
  463. package/lib/types/dsh-adapter/channel/core/local-actions.js +5 -2
  464. package/lib/types/dsh-adapter/channel/core/session-controls.js +2 -2
  465. package/lib/types/dsh-adapter/channel/core/session-switch.d.ts +7 -4
  466. package/lib/types/dsh-adapter/channel/core/session-switch.d.ts.map +1 -1
  467. package/lib/types/dsh-adapter/channel/core/session-switch.js +8 -4
  468. package/lib/types/dsh-adapter/channel/core/sessions.d.ts +1 -1
  469. package/lib/types/dsh-adapter/channel/core/sessions.d.ts.map +1 -1
  470. package/lib/types/dsh-adapter/channel/core/sessions.js +75 -16
  471. package/lib/types/dsh-adapter/channel/extensions.d.ts +4 -3
  472. package/lib/types/dsh-adapter/channel/extensions.d.ts.map +1 -1
  473. package/lib/types/dsh-adapter/channel/extensions.js +109 -30
  474. package/lib/types/dsh-adapter/channel/input-delivery.d.ts +2 -2
  475. package/lib/types/dsh-adapter/channel/input-delivery.d.ts.map +1 -1
  476. package/lib/types/dsh-adapter/channel/input-delivery.js +14 -5
  477. package/lib/types/dsh-adapter/channel/job-projection.d.ts +4 -0
  478. package/lib/types/dsh-adapter/channel/job-projection.d.ts.map +1 -1
  479. package/lib/types/dsh-adapter/channel/job-projection.js +205 -24
  480. package/lib/types/dsh-adapter/channel/mentions.d.ts +3 -3
  481. package/lib/types/dsh-adapter/channel/mentions.d.ts.map +1 -1
  482. package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts +7 -0
  483. package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts.map +1 -1
  484. package/lib/types/dsh-adapter/channel/mode-permission-actions.js +235 -13
  485. package/lib/types/dsh-adapter/channel/model-actions.d.ts +5 -1
  486. package/lib/types/dsh-adapter/channel/model-actions.d.ts.map +1 -1
  487. package/lib/types/dsh-adapter/channel/model-actions.js +48 -29
  488. package/lib/types/dsh-adapter/channel/model-selection.d.ts +17 -0
  489. package/lib/types/dsh-adapter/channel/model-selection.d.ts.map +1 -0
  490. package/lib/types/dsh-adapter/channel/model-selection.js +109 -0
  491. package/lib/types/dsh-adapter/channel/model-switch.d.ts +12 -21
  492. package/lib/types/dsh-adapter/channel/model-switch.d.ts.map +1 -1
  493. package/lib/types/dsh-adapter/channel/model-switch.js +39 -102
  494. package/lib/types/dsh-adapter/channel/permissions.d.ts.map +1 -1
  495. package/lib/types/dsh-adapter/channel/permissions.js +4 -1
  496. package/lib/types/dsh-adapter/channel/projection-helpers.d.ts.map +1 -1
  497. package/lib/types/dsh-adapter/channel/projection-helpers.js +2 -0
  498. package/lib/types/dsh-adapter/channel/projection.js +1 -1
  499. package/lib/types/dsh-adapter/channel/reports.d.ts +1 -1
  500. package/lib/types/dsh-adapter/channel/reports.d.ts.map +1 -1
  501. package/lib/types/dsh-adapter/channel/reports.js +11 -3
  502. package/lib/types/dsh-adapter/channel/session-fork.d.ts.map +1 -1
  503. package/lib/types/dsh-adapter/channel/session-fork.js +33 -20
  504. package/lib/types/dsh-adapter/channel/session-listing.d.ts +20 -0
  505. package/lib/types/dsh-adapter/channel/session-listing.d.ts.map +1 -0
  506. package/lib/types/dsh-adapter/channel/session-listing.js +51 -0
  507. package/lib/types/dsh-adapter/channel/session-metadata.d.ts +3 -1
  508. package/lib/types/dsh-adapter/channel/session-metadata.d.ts.map +1 -1
  509. package/lib/types/dsh-adapter/channel/session-metadata.js +60 -30
  510. package/lib/types/dsh-adapter/channel/session-reset.js +2 -2
  511. package/lib/types/dsh-adapter/channel/session-resume.d.ts.map +1 -1
  512. package/lib/types/dsh-adapter/channel/session-resume.js +22 -8
  513. package/lib/types/dsh-adapter/channel/session-rewind.d.ts.map +1 -1
  514. package/lib/types/dsh-adapter/channel/session-rewind.js +38 -24
  515. package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts.map +1 -1
  516. package/lib/types/dsh-adapter/channel/session-tree-actions.js +38 -24
  517. package/lib/types/dsh-adapter/channel/settings-host.d.ts +5 -2
  518. package/lib/types/dsh-adapter/channel/settings-host.d.ts.map +1 -1
  519. package/lib/types/dsh-adapter/channel/settings-host.js +136 -5
  520. package/lib/types/dsh-adapter/channel/state.d.ts +43 -1
  521. package/lib/types/dsh-adapter/channel/state.d.ts.map +1 -1
  522. package/lib/types/dsh-adapter/channel/state.js +14 -1
  523. package/lib/types/dsh-adapter/channel/subagent-projection.d.ts.map +1 -1
  524. package/lib/types/dsh-adapter/channel/subagent-projection.js +84 -12
  525. package/lib/types/dsh-adapter/channel/task-completion.d.ts +6 -0
  526. package/lib/types/dsh-adapter/channel/task-completion.d.ts.map +1 -0
  527. package/lib/types/dsh-adapter/channel/task-completion.js +114 -0
  528. package/lib/types/dsh-adapter/channel/transcript.d.ts +8 -1
  529. package/lib/types/dsh-adapter/channel/transcript.d.ts.map +1 -1
  530. package/lib/types/dsh-adapter/channel/transcript.js +20 -3
  531. package/lib/types/dsh-adapter/channel/upstream-retry.d.ts +81 -0
  532. package/lib/types/dsh-adapter/channel/upstream-retry.d.ts.map +1 -0
  533. package/lib/types/dsh-adapter/channel/upstream-retry.js +138 -0
  534. package/lib/types/dsh-adapter/channel/workspace-actions.d.ts.map +1 -1
  535. package/lib/types/dsh-adapter/channel/workspace-actions.js +9 -8
  536. package/lib/types/dsh-adapter/channel-ui.d.ts +3 -1
  537. package/lib/types/dsh-adapter/channel-ui.d.ts.map +1 -1
  538. package/lib/types/dsh-adapter/channel-ui.js +4 -2
  539. package/lib/types/dsh-adapter/channel.d.ts +2 -2
  540. package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
  541. package/lib/types/dsh-adapter/channel.js +19 -5
  542. package/lib/types/dsh-adapter/compat/agent-team-0.2.0.d.ts +55 -0
  543. package/lib/types/dsh-adapter/compat/agent-team-0.2.0.d.ts.map +1 -0
  544. package/lib/types/dsh-adapter/compat/agent-team-0.2.0.js +96 -0
  545. package/lib/types/dsh-adapter/context-occupancy.d.ts +81 -4
  546. package/lib/types/dsh-adapter/context-occupancy.d.ts.map +1 -1
  547. package/lib/types/dsh-adapter/context-occupancy.js +108 -17
  548. package/lib/types/dsh-adapter/contract.d.ts +4 -4
  549. package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
  550. package/lib/types/dsh-adapter/contract.js +20 -5
  551. package/lib/types/dsh-adapter/effect-ledger.d.ts +7 -0
  552. package/lib/types/dsh-adapter/effect-ledger.d.ts.map +1 -1
  553. package/lib/types/dsh-adapter/effect-ledger.js +8 -1
  554. package/lib/types/dsh-adapter/entry-slot.d.ts +38 -0
  555. package/lib/types/dsh-adapter/entry-slot.d.ts.map +1 -0
  556. package/lib/types/dsh-adapter/entry-slot.js +28 -0
  557. package/lib/types/dsh-adapter/fresh-agent.d.ts +22 -0
  558. package/lib/types/dsh-adapter/fresh-agent.d.ts.map +1 -0
  559. package/lib/types/dsh-adapter/fresh-agent.js +226 -0
  560. package/lib/types/dsh-adapter/host-access.d.ts +16 -1
  561. package/lib/types/dsh-adapter/host-access.d.ts.map +1 -1
  562. package/lib/types/dsh-adapter/host-access.js +148 -2
  563. package/lib/types/dsh-adapter/host-contract.d.ts +103 -0
  564. package/lib/types/dsh-adapter/host-contract.d.ts.map +1 -0
  565. package/lib/types/dsh-adapter/host-contract.js +77 -0
  566. package/lib/types/dsh-adapter/host-dsh.d.ts +112 -0
  567. package/lib/types/dsh-adapter/host-dsh.d.ts.map +1 -0
  568. package/lib/types/dsh-adapter/host-dsh.js +481 -0
  569. package/lib/types/dsh-adapter/host-entry.d.ts +9 -0
  570. package/lib/types/dsh-adapter/host-entry.d.ts.map +1 -0
  571. package/lib/types/dsh-adapter/host-entry.js +253 -0
  572. package/lib/types/dsh-adapter/index.d.ts +53 -17
  573. package/lib/types/dsh-adapter/index.d.ts.map +1 -1
  574. package/lib/types/dsh-adapter/index.js +63 -9
  575. package/lib/types/dsh-adapter/install/executors.d.ts +44 -0
  576. package/lib/types/dsh-adapter/install/executors.d.ts.map +1 -0
  577. package/lib/types/dsh-adapter/install/executors.js +15 -0
  578. package/lib/types/dsh-adapter/install/pnpm-profile-add.d.ts +3 -0
  579. package/lib/types/dsh-adapter/install/pnpm-profile-add.d.ts.map +1 -0
  580. package/lib/types/dsh-adapter/install/pnpm-profile-add.js +150 -0
  581. package/lib/types/dsh-adapter/invariant.d.ts +7 -2
  582. package/lib/types/dsh-adapter/invariant.d.ts.map +1 -1
  583. package/lib/types/dsh-adapter/invariant.js +6 -3
  584. package/lib/types/dsh-adapter/jobs.d.ts +7 -0
  585. package/lib/types/dsh-adapter/jobs.d.ts.map +1 -1
  586. package/lib/types/dsh-adapter/jobs.js +13 -0
  587. package/lib/types/dsh-adapter/lite-profile.d.ts +50 -0
  588. package/lib/types/dsh-adapter/lite-profile.d.ts.map +1 -0
  589. package/lib/types/dsh-adapter/lite-profile.js +49 -0
  590. package/lib/types/dsh-adapter/migrate/index.js +2 -2
  591. package/lib/types/dsh-adapter/migrate/parse/jsonl.d.ts +1 -1
  592. package/lib/types/dsh-adapter/migrate/parse/jsonl.d.ts.map +1 -1
  593. package/lib/types/dsh-adapter/migrate/parse/jsonl.js +4 -3
  594. package/lib/types/dsh-adapter/oauth/profiles.d.ts.map +1 -1
  595. package/lib/types/dsh-adapter/oauth/profiles.js +5 -1
  596. package/lib/types/dsh-adapter/panels.d.ts +7 -0
  597. package/lib/types/dsh-adapter/panels.d.ts.map +1 -1
  598. package/lib/types/dsh-adapter/panels.js +41 -2
  599. package/lib/types/dsh-adapter/plugin-completions.d.ts +32 -0
  600. package/lib/types/dsh-adapter/plugin-completions.d.ts.map +1 -0
  601. package/lib/types/dsh-adapter/plugin-completions.js +80 -0
  602. package/lib/types/dsh-adapter/plugin-declaration.d.ts +119 -0
  603. package/lib/types/dsh-adapter/plugin-declaration.d.ts.map +1 -0
  604. package/lib/types/dsh-adapter/plugin-declaration.js +183 -0
  605. package/lib/types/dsh-adapter/plugin-feed.d.ts +94 -0
  606. package/lib/types/dsh-adapter/plugin-feed.d.ts.map +1 -0
  607. package/lib/types/dsh-adapter/plugin-feed.js +135 -0
  608. package/lib/types/dsh-adapter/plugin-guard.d.ts +115 -0
  609. package/lib/types/dsh-adapter/plugin-guard.d.ts.map +1 -0
  610. package/lib/types/dsh-adapter/plugin-guard.js +108 -0
  611. package/lib/types/dsh-adapter/plugin-host.d.ts +13 -2
  612. package/lib/types/dsh-adapter/plugin-host.d.ts.map +1 -1
  613. package/lib/types/dsh-adapter/plugin-host.js +34 -8
  614. package/lib/types/dsh-adapter/plugin-install.d.ts +160 -0
  615. package/lib/types/dsh-adapter/plugin-install.d.ts.map +1 -0
  616. package/lib/types/dsh-adapter/plugin-install.js +545 -0
  617. package/lib/types/dsh-adapter/plugin-manage.d.ts +178 -0
  618. package/lib/types/dsh-adapter/plugin-manage.d.ts.map +1 -0
  619. package/lib/types/dsh-adapter/plugin-manage.js +468 -0
  620. package/lib/types/dsh-adapter/plugin-manager.d.ts +144 -0
  621. package/lib/types/dsh-adapter/plugin-manager.d.ts.map +1 -0
  622. package/lib/types/dsh-adapter/plugin-manager.js +83 -0
  623. package/lib/types/dsh-adapter/plugin.d.ts +50 -1
  624. package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
  625. package/lib/types/dsh-adapter/plugin.js +918 -234
  626. package/lib/types/dsh-adapter/plugins-info.d.ts +130 -8
  627. package/lib/types/dsh-adapter/plugins-info.d.ts.map +1 -1
  628. package/lib/types/dsh-adapter/plugins-info.js +469 -44
  629. package/lib/types/dsh-adapter/process-exit.d.ts +43 -0
  630. package/lib/types/dsh-adapter/process-exit.d.ts.map +1 -0
  631. package/lib/types/dsh-adapter/process-exit.js +60 -0
  632. package/lib/types/dsh-adapter/root-dispose.d.ts +18 -0
  633. package/lib/types/dsh-adapter/root-dispose.d.ts.map +1 -0
  634. package/lib/types/dsh-adapter/root-dispose.js +28 -0
  635. package/lib/types/dsh-adapter/session-list-metadata.d.ts +20 -0
  636. package/lib/types/dsh-adapter/session-list-metadata.d.ts.map +1 -0
  637. package/lib/types/dsh-adapter/session-list-metadata.js +56 -0
  638. package/lib/types/dsh-adapter/session-projection-store.d.ts +66 -0
  639. package/lib/types/dsh-adapter/session-projection-store.d.ts.map +1 -0
  640. package/lib/types/dsh-adapter/session-projection-store.js +149 -0
  641. package/lib/types/dsh-adapter/session-seed.d.ts +11 -0
  642. package/lib/types/dsh-adapter/session-seed.d.ts.map +1 -0
  643. package/lib/types/dsh-adapter/session-seed.js +47 -0
  644. package/lib/types/dsh-adapter/sessions/list.d.ts +3 -1
  645. package/lib/types/dsh-adapter/sessions/list.d.ts.map +1 -1
  646. package/lib/types/dsh-adapter/sessions/list.js +11 -5
  647. package/lib/types/dsh-adapter/sessions/snapshot.d.ts +0 -2
  648. package/lib/types/dsh-adapter/sessions/snapshot.d.ts.map +1 -1
  649. package/lib/types/dsh-adapter/sessions/snapshot.js +7 -70
  650. package/lib/types/dsh-adapter/settingsEditor.js +2 -2
  651. package/lib/types/dsh-adapter/sideQuestion.d.ts +21 -0
  652. package/lib/types/dsh-adapter/sideQuestion.d.ts.map +1 -1
  653. package/lib/types/dsh-adapter/sideQuestion.js +53 -0
  654. package/lib/types/dsh-adapter/startup-args.d.ts +2 -0
  655. package/lib/types/dsh-adapter/startup-args.d.ts.map +1 -1
  656. package/lib/types/dsh-adapter/startup-args.js +5 -0
  657. package/lib/types/dsh-adapter/subagents.d.ts +33 -1
  658. package/lib/types/dsh-adapter/subagents.d.ts.map +1 -1
  659. package/lib/types/dsh-adapter/subagents.js +112 -9
  660. package/lib/types/dsh-adapter/team-mode.d.ts +74 -0
  661. package/lib/types/dsh-adapter/team-mode.d.ts.map +1 -0
  662. package/lib/types/dsh-adapter/team-mode.js +188 -0
  663. package/lib/types/dsh-adapter/team-roster.d.ts +67 -0
  664. package/lib/types/dsh-adapter/team-roster.d.ts.map +1 -0
  665. package/lib/types/dsh-adapter/team-roster.js +136 -0
  666. package/lib/types/dsh-adapter/team-tools.d.ts +58 -0
  667. package/lib/types/dsh-adapter/team-tools.d.ts.map +1 -0
  668. package/lib/types/dsh-adapter/team-tools.js +208 -0
  669. package/lib/types/dsh-adapter/tui-settings.d.ts +57 -0
  670. package/lib/types/dsh-adapter/tui-settings.d.ts.map +1 -0
  671. package/lib/types/dsh-adapter/tui-settings.js +199 -0
  672. package/lib/types/dsh-adapter/types.d.ts +1 -1
  673. package/lib/types/dsh-adapter/types.d.ts.map +1 -1
  674. package/lib/types/effortPrefs.d.ts +6 -3
  675. package/lib/types/effortPrefs.d.ts.map +1 -1
  676. package/lib/types/effortPrefs.js +7 -4
  677. package/lib/types/hostEntryRoute.d.ts +18 -0
  678. package/lib/types/hostEntryRoute.d.ts.map +1 -0
  679. package/lib/types/hostEntryRoute.js +57 -0
  680. package/lib/types/i18n.d.ts +961 -1439
  681. package/lib/types/i18n.d.ts.map +1 -1
  682. package/lib/types/i18n.js +443 -387
  683. package/lib/types/ink/components/AlternateScreen.js +2 -2
  684. package/lib/types/ink/components/App.d.ts +1 -0
  685. package/lib/types/ink/components/App.d.ts.map +1 -1
  686. package/lib/types/ink/components/App.js +16 -4
  687. package/lib/types/ink/components/CursorDeclarationContext.d.ts +9 -0
  688. package/lib/types/ink/components/CursorDeclarationContext.d.ts.map +1 -1
  689. package/lib/types/ink/components/CursorDeclarationContext.js +2 -0
  690. package/lib/types/ink/components/ScrollBox.d.ts +9 -0
  691. package/lib/types/ink/components/ScrollBox.d.ts.map +1 -1
  692. package/lib/types/ink/components/ScrollBox.js +23 -0
  693. package/lib/types/ink/dom.d.ts.map +1 -1
  694. package/lib/types/ink/hooks/use-copy-on-select.d.ts +2 -2
  695. package/lib/types/ink/hooks/use-copy-on-select.d.ts.map +1 -1
  696. package/lib/types/ink/hooks/use-copy-on-select.js +13 -7
  697. package/lib/types/ink/hooks/use-declared-cursor.d.ts +11 -3
  698. package/lib/types/ink/hooks/use-declared-cursor.d.ts.map +1 -1
  699. package/lib/types/ink/hooks/use-declared-cursor.js +30 -10
  700. package/lib/types/ink/ink.d.ts +22 -17
  701. package/lib/types/ink/ink.d.ts.map +1 -1
  702. package/lib/types/ink/ink.js +151 -40
  703. package/lib/types/ink/kitty-graphics.d.ts +2 -0
  704. package/lib/types/ink/kitty-graphics.d.ts.map +1 -1
  705. package/lib/types/ink/kitty-graphics.js +6 -1
  706. package/lib/types/ink/node-cache.d.ts +2 -1
  707. package/lib/types/ink/node-cache.d.ts.map +1 -1
  708. package/lib/types/ink/output.d.ts +10 -4
  709. package/lib/types/ink/output.d.ts.map +1 -1
  710. package/lib/types/ink/output.js +14 -10
  711. package/lib/types/ink/render-node-to-output.d.ts +5 -2
  712. package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
  713. package/lib/types/ink/render-node-to-output.js +27 -9
  714. package/lib/types/ink/renderer.d.ts +1 -0
  715. package/lib/types/ink/renderer.d.ts.map +1 -1
  716. package/lib/types/ink/renderer.js +4 -3
  717. package/lib/types/ink/root.d.ts +4 -1
  718. package/lib/types/ink/root.d.ts.map +1 -1
  719. package/lib/types/ink/screen.d.ts +4 -2
  720. package/lib/types/ink/screen.d.ts.map +1 -1
  721. package/lib/types/ink/selection.d.ts +10 -1
  722. package/lib/types/ink/selection.d.ts.map +1 -1
  723. package/lib/types/ink/selection.js +94 -25
  724. package/lib/types/ink/stdin-handoff.d.ts +11 -0
  725. package/lib/types/ink/stdin-handoff.d.ts.map +1 -0
  726. package/lib/types/ink/stdin-handoff.js +20 -0
  727. package/lib/types/ink/styles.d.ts +2 -1
  728. package/lib/types/ink/styles.d.ts.map +1 -1
  729. package/lib/types/ink/terminal-image.d.ts +6 -4
  730. package/lib/types/ink/terminal-image.d.ts.map +1 -1
  731. package/lib/types/ink/terminal-image.js +16 -39
  732. package/lib/types/ink/terminal-notification.d.ts +8 -0
  733. package/lib/types/ink/terminal-notification.d.ts.map +1 -0
  734. package/lib/types/ink/terminal-notification.js +83 -0
  735. package/lib/types/ink/terminal.d.ts +9 -0
  736. package/lib/types/ink/terminal.d.ts.map +1 -1
  737. package/lib/types/ink/terminal.js +34 -1
  738. package/lib/types/ink/termio/csi.d.ts +11 -0
  739. package/lib/types/ink/termio/csi.d.ts.map +1 -1
  740. package/lib/types/ink/termio/csi.js +13 -0
  741. package/lib/types/ink/update-overflow-guard.d.ts +6 -0
  742. package/lib/types/ink/update-overflow-guard.d.ts.map +1 -1
  743. package/lib/types/ink/update-overflow-guard.js +17 -0
  744. package/lib/types/ink/wrap-text.d.ts +6 -0
  745. package/lib/types/ink/wrap-text.d.ts.map +1 -1
  746. package/lib/types/ink/wrap-text.js +17 -0
  747. package/lib/types/kernelPrefs.d.ts +130 -17
  748. package/lib/types/kernelPrefs.d.ts.map +1 -1
  749. package/lib/types/kernelPrefs.js +98 -35
  750. package/lib/types/math/inline-layout.d.ts +2 -0
  751. package/lib/types/math/inline-layout.d.ts.map +1 -1
  752. package/lib/types/math/inline-layout.js +5 -27
  753. package/lib/types/modelGroups.d.ts +15 -27
  754. package/lib/types/modelGroups.d.ts.map +1 -1
  755. package/lib/types/modelGroups.js +17 -31
  756. package/lib/types/modelPrefs.d.ts +5 -4
  757. package/lib/types/modelPrefs.d.ts.map +1 -1
  758. package/lib/types/modelPrefs.js +5 -4
  759. package/lib/types/modelRoute.d.ts +23 -9
  760. package/lib/types/modelRoute.d.ts.map +1 -1
  761. package/lib/types/modelRoute.js +25 -11
  762. package/lib/types/native-ts/yoga-layout/index.d.ts.map +1 -1
  763. package/lib/types/native-ts/yoga-layout/index.js +8 -1
  764. package/lib/types/permissionPrefs.d.ts +34 -0
  765. package/lib/types/permissionPrefs.d.ts.map +1 -0
  766. package/lib/types/permissionPrefs.js +61 -0
  767. package/lib/types/permissionPresetLabels.d.ts +25 -0
  768. package/lib/types/permissionPresetLabels.d.ts.map +1 -0
  769. package/lib/types/permissionPresetLabels.js +33 -0
  770. package/lib/types/plugin-host.d.ts +1 -0
  771. package/lib/types/plugin-host.d.ts.map +1 -1
  772. package/lib/types/preset-patch.d.ts +22 -0
  773. package/lib/types/preset-patch.d.ts.map +1 -0
  774. package/lib/types/preset-patch.js +14 -0
  775. package/lib/types/presetPrefs.d.ts +17 -3
  776. package/lib/types/presetPrefs.d.ts.map +1 -1
  777. package/lib/types/presetPrefs.js +20 -3
  778. package/lib/types/reload.d.ts +6 -10
  779. package/lib/types/reload.d.ts.map +1 -1
  780. package/lib/types/reload.js +14 -14
  781. package/lib/types/screens/Chat.d.ts +55 -16
  782. package/lib/types/screens/Chat.d.ts.map +1 -1
  783. package/lib/types/screens/Chat.js +742 -280
  784. package/lib/types/screens/Launchpad.d.ts +33 -17
  785. package/lib/types/screens/Launchpad.d.ts.map +1 -1
  786. package/lib/types/screens/Launchpad.js +256 -78
  787. package/lib/types/screens/SessionSupervisor.d.ts.map +1 -1
  788. package/lib/types/screens/SessionSupervisor.js +53 -12
  789. package/lib/types/screens/Settings.d.ts.map +1 -1
  790. package/lib/types/screens/Settings.js +7 -0
  791. package/lib/types/screens/StatusLine.d.ts.map +1 -1
  792. package/lib/types/screens/StatusLine.js +24 -7
  793. package/lib/types/screens/StatusMetrics.d.ts +46 -1
  794. package/lib/types/screens/StatusMetrics.d.ts.map +1 -1
  795. package/lib/types/screens/StatusMetrics.js +72 -0
  796. package/lib/types/screens/chat/useKernelPicker.d.ts +8 -4
  797. package/lib/types/screens/chat/useKernelPicker.d.ts.map +1 -1
  798. package/lib/types/screens/chat/useKernelPicker.js +61 -21
  799. package/lib/types/screens/chat/useModelPicker.d.ts +42 -0
  800. package/lib/types/screens/chat/useModelPicker.d.ts.map +1 -0
  801. package/lib/types/screens/chat/useModelPicker.js +182 -0
  802. package/lib/types/screens/chat/usePluginWriteFlow.d.ts +68 -0
  803. package/lib/types/screens/chat/usePluginWriteFlow.d.ts.map +1 -0
  804. package/lib/types/screens/chat/usePluginWriteFlow.js +92 -0
  805. package/lib/types/screens/chatOverlay.d.ts +30 -5
  806. package/lib/types/screens/chatOverlay.d.ts.map +1 -1
  807. package/lib/types/screens/chatOverlay.js +0 -1
  808. package/lib/types/screens/sessionSupervisor/ForeignSessionPanes.d.ts +4 -1
  809. package/lib/types/screens/sessionSupervisor/ForeignSessionPanes.d.ts.map +1 -1
  810. package/lib/types/screens/sessionSupervisor/ForeignSessionPanes.js +26 -5
  811. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts +1 -1
  812. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts.map +1 -1
  813. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.js +51 -29
  814. package/lib/types/sessionHistory.d.ts +5 -0
  815. package/lib/types/sessionHistory.d.ts.map +1 -1
  816. package/lib/types/sessionHistory.js +5 -0
  817. package/lib/types/sessionModes.d.ts +5 -3
  818. package/lib/types/sessionModes.d.ts.map +1 -1
  819. package/lib/types/sessionModes.js +9 -3
  820. package/lib/types/sessions/listSnapshot.d.ts +6 -0
  821. package/lib/types/sessions/listSnapshot.d.ts.map +1 -0
  822. package/lib/types/sessions/listSnapshot.js +67 -0
  823. package/lib/types/settings/definitions.d.ts +50 -0
  824. package/lib/types/settings/definitions.d.ts.map +1 -1
  825. package/lib/types/settings/definitions.js +42 -8
  826. package/lib/types/terminal-utils/cjk-emphasis.d.ts +28 -0
  827. package/lib/types/terminal-utils/cjk-emphasis.d.ts.map +1 -0
  828. package/lib/types/terminal-utils/cjk-emphasis.js +31 -0
  829. package/lib/types/terminal-utils/markdown.d.ts +3 -1
  830. package/lib/types/terminal-utils/markdown.d.ts.map +1 -1
  831. package/lib/types/terminal-utils/markdown.js +7 -2
  832. package/lib/types/theme.d.ts +29 -12
  833. package/lib/types/theme.d.ts.map +1 -1
  834. package/lib/types/theme.js +310 -23
  835. package/lib/types/themeCatalog.d.ts.map +1 -1
  836. package/lib/types/themeCatalog.js +21 -2
  837. package/lib/types/tips.js +4 -4
  838. package/lib/types/tuiSettingsFile.d.ts +56 -0
  839. package/lib/types/tuiSettingsFile.d.ts.map +1 -0
  840. package/lib/types/tuiSettingsFile.js +206 -0
  841. package/lib/types/ui.d.ts +2 -0
  842. package/lib/types/ui.d.ts.map +1 -1
  843. package/lib/types/ui.js +2 -0
  844. package/lib/types/update.d.ts +72 -26
  845. package/lib/types/update.d.ts.map +1 -1
  846. package/lib/types/update.js +131 -43
  847. package/lib/types/utils/bmp.d.ts +7 -0
  848. package/lib/types/utils/bmp.d.ts.map +1 -1
  849. package/lib/types/utils/bmp.js +27 -0
  850. package/lib/types/utils/bootTrace.d.ts +2 -0
  851. package/lib/types/utils/bootTrace.d.ts.map +1 -0
  852. package/lib/types/utils/bootTrace.js +20 -0
  853. package/lib/types/utils/clipboard.d.ts.map +1 -1
  854. package/lib/types/utils/clipboard.js +11 -3
  855. package/lib/types/utils/credentials.d.ts +14 -2
  856. package/lib/types/utils/credentials.d.ts.map +1 -1
  857. package/lib/types/utils/credentials.js +34 -11
  858. package/lib/types/utils/imageResize.d.ts +10 -20
  859. package/lib/types/utils/imageResize.d.ts.map +1 -1
  860. package/lib/types/utils/imageResize.js +61 -134
  861. package/lib/types/utils/inputPaste.d.ts +2 -2
  862. package/lib/types/utils/inputPaste.js +2 -2
  863. package/lib/types/utils/pastedImagePath.d.ts +5 -0
  864. package/lib/types/utils/pastedImagePath.d.ts.map +1 -1
  865. package/lib/types/utils/pastedImagePath.js +33 -0
  866. package/lib/types/utils/paths.d.ts +11 -0
  867. package/lib/types/utils/paths.d.ts.map +1 -1
  868. package/lib/types/utils/paths.js +13 -0
  869. package/package.json +150 -114
  870. package/presets/winbash.mjs +716 -0
  871. package/tui-profile/feed/README.md +63 -0
  872. package/tui-profile/feed/first-party.json +10 -0
  873. package/tui-profile/protocols/profile-definitions.d.ts +1 -0
  874. package/tui-profile/protocols/profile-definitions.js +14 -0
  875. package/tui-profile/protocols/tui-contributions.d.ts +55 -0
  876. package/tui-profile/protocols/tui-contributions.js +141 -0
  877. package/tui-profile/registry/contracts/backend-v1alpha1.json +13 -0
  878. package/tui-profile/registry/registry-0.15.json +12 -0
  879. package/lib/types/backends/claude/install.d.ts +0 -15
  880. package/lib/types/backends/claude/install.d.ts.map +0 -1
  881. package/lib/types/backends/claude/install.js +0 -91
  882. package/lib/types/channel/elicitation.d.ts.map +0 -1
  883. package/lib/types/dsh-adapter/channel/session-lineage.d.ts +0 -42
  884. package/lib/types/dsh-adapter/channel/session-lineage.d.ts.map +0 -1
  885. package/lib/types/dsh-adapter/channel/session-lineage.js +0 -51
  886. package/lib/types/utils/jsonl.d.ts.map +0 -1
@@ -60,8 +60,9 @@
60
60
  - 富状态最多三行,只能用宿主的 `Box`、`Text`、`Image` 与终端尺寸。
61
61
  - 点击/悬停/拖动只在 fullscreen 下生效,不会取得键盘。
62
62
  - `Image` 接收已解码 RGBA,另有同尺寸字符回退。
63
- - 探测到 Kitty graphics 时,按终端报告的单元格像素比例等比居中。
64
- - 像素比例不可用时用保守默认值;必要时透明留边并降采样。
63
+ - 探测到 Kitty graphics 时,按终端报告的单元格像素将图像等比放大或缩小到预留格子盒,并居中留透明边。
64
+ - 像素比例不可用时用保守默认值;超出像素预算时降采样。
65
+ - 整帧 16 MiB 预算同时约束原图与放大后的栅格;超限图片显示文字回退。
65
66
  - 否则自动显示回退内容(inline、辅助功能、多路复用器同样如此)。
66
67
 
67
68
  同一动作的键盘路径由插件另提供 slash 命令,或注册 `tuiShortcuts`。
@@ -74,12 +75,11 @@
74
75
  启动**落地页**与**首次引导向导**各自独占键盘;两者都只把结果交回对话页,不新增行为。
75
76
 
76
77
  - **落地页**:可打印字符接进输入框(行首 `/` 时前缀由 `❯` 变 `⌘`),`Backspace`/`Delete`/`←`/`→`/`Home`/`End` 编辑;
77
- - **落地页**:可打印字符接进输入框(行首 `/` 时前缀由 `❯` 变 `⌘`),`Backspace`/`Delete`/`←`/`→`/`Home`/`End` 编辑;
78
- 输入光标是**压在当前字符身上的反显块**(对那一个字符 inverse,行尾是反显空格;主题声明了 `cursor`
79
- 键时改用该填充色的实色块配对比字形,见[主题系统](themes.md)),闪烁是纯样式切换
80
- (inverse ↔ 常规,约 550ms 一相位),绝不另起一格、绝不吃掉字符;`Alt+R` 继续最近一条会话
78
+ 输入使用**终端原生光标**,形状、颜色、闪烁及已启用的动画或拖尾继承终端设置;
79
+ 光标移动不增删字符。静态呈现保留[主题绘制的光标回退](themes.md);`Alt+R` 继续最近一条会话
81
80
  (= 入口行第一格「继续「…」」,仅此屏生效,无可继续会话时无动作,键位可在 `/settings` 改);
82
- **执行**选中命令,`Esc` 只收面板、草稿不动);面板没收时 `Enter` 直接**发送**这一行(行首 `/` 的命令——含
81
+ 行首 `/` 弹出**命令补全面板**(数据与组件与聊天页同源:`↑`/`↓` 移选中,`Tab` **补全**选中命令到输入框、光标移到末尾,
82
+ `Enter`/点击**执行**并清空输入,`Esc` 只收面板、草稿不动);面板收起后 `Enter` 直接**发送**这一行(行首 `/` 的命令——含
83
83
  插件/registry 命令——按对话页同一条合并命令表判定,是命令就不发模型);
84
84
  `↑`/`↓`/`Tab` 沿焦点环走(输入框 → 框下参数行四段 → 快捷入口行 → Tips 行),`Enter` 激活焦点上的那一条
85
85
  (焦点在 Tips 行上 `Enter` = 切下一条 Tip),在入口/参数段上敲字会把焦点收回输入框;有字时 `Esc` 只清空,
@@ -105,11 +105,13 @@
105
105
  还会**自动轮换**(约 10s 一换,手动切换后计时重置),切换只改文本、行高与居中位置不变。
106
106
  - **双角铭牌**:左下角工作目录**可点**——点开既有的 `/workspace` 菜单
107
107
  (盖在落地页之上、`Esc` 回落地页),键盘路径 = 焦点环末格 + `Enter`,悬停/焦点 =
108
- 文字高亮;右下角第一行是 `dsh-tui v<TUI>`,其下两个内核各占一行:
109
- `▸ DSH · dsh-core v<内核>` / `Claude · claude-code v<CLI>`。`▸` 标出当前内核,其余行暗色;
110
- 不可用的内核在版本后写原因(如「未安装」「未登录」),读不到版本时只写名字,检测期间显示
111
- 「检测中…」。整块可点,打开同一个内核选择器(键盘路径 = 焦点环 + `Enter`)。
112
- 各行右对齐,左下目录铭牌与第一行顶对齐,窄屏按既有 truncate-middle 截断。
108
+ 文字高亮;右下角第一行是 `dsh-tui v<TUI>`,其下**每个已注册后端各占一行**:
109
+ `▸ DSH · dsh-core v<内核>` / `Claude · claude-code v<CLI>`(还有 `Codex · codex-cli v<CLI>`,
110
+ 装了插件后端就再往后排)。名字取该后端 manifest 的短品牌名,`▸` 标出当前内核,其余行暗色;
111
+ 不可用的内核在版本后写原因(如「未安装」「版本过旧 · 需升级」),读不到版本时只写名字,检测期间显示
112
+ 「检测中…」;**登录状态不进铭牌**——要切内核时在选择器里看(未登录行可选,副标题标注「未登录」)。
113
+ 整块可点,打开同一个内核选择器(键盘路径 = 焦点环 + `Enter`)。
114
+ 各行右端贴齐同一条右边界,左下目录铭牌与第一行顶对齐,窄屏按既有 truncate-middle 截断。
113
115
  - **引导向导**:`←`/`→` 换步骤(例外:第三步的强度区、以及已钻进去的模型列表,横向键归子控件,不换步骤)、
114
116
  `Tab` 在「语言 / 主题」与「模型 / 强度 / 工作区」两组面板间切、`↑`/`↓` 移动选择;
115
117
  `Enter` 执行这一步(第一步 = 重新检查连通性,第三步 = 钻进 provider / 换模型 / 打开工作区选择器——**强度不走 Enter**,只用 `←`/`→` 调且移动即生效);
@@ -322,6 +324,7 @@ Bracketed paste(右键或终端原生粘贴)保留普通文本与换行。
322
324
  四条命令和输入框行首的 `⌸` 按钮打开的是**同一个界面**。
323
325
 
324
326
  - 左边是工作区(durable registry)栏,右边是所选工作区里的会话列表。
327
+ - 默认聚焦当前工作区最近使用的会话,`Enter` 直接进入;没有历史时聚焦“新建会话”卡片。
325
328
  - 每行带该会话的实时状态。
326
329
  - 原来是三个各自演化的实现(会话浏览器 / 会话总览 / 工作区首页)。
327
330
  - 同一个会话会被三个界面各自列出、各自定义"打开"的含义。
@@ -343,7 +346,7 @@ Bracketed paste(右键或终端原生粘贴)保留普通文本与换行。
343
346
 
344
347
  | 按键 | 作用 |
345
348
  | --- | --- |
346
- | `←` `→` | 切换键盘所在栏(工作区栏 / 会话栏),屏幕上永远只有一个 `❯` |
349
+ | `←` `→` | 切换键盘所在栏(工作区栏 / 会话栏),同一工作区保留会话选择,屏幕上永远只有一个 `❯` |
347
350
  | `↑` `↓` / `PgUp` `PgDn` / 滚轮 | 在工作区栏移动工作区;在会话栏移动会话(第 0 行是"新建会话"卡片) |
348
351
  | 直接输入 | 实时筛选当前工作区下的会话(标题、目录、分支、模型) |
349
352
  | `Enter` | 会话栏:进入光标所在行(第 0 行 = 在该工作区新建会话);工作区栏:打开该工作区的操作菜单 |
@@ -365,6 +368,10 @@ Bracketed paste(右键或终端原生粘贴)保留普通文本与换行。
365
368
  - 外部标签下 `Ctrl+N`、`Ctrl+X`、固定不生效;`Ctrl+L` 改为重新扫描该来源。
366
369
  - 导入与 `/migrate` 用同一套解析和确定性 id,两个入口导入同一条会话得到的是同一个 DSH 会话。
367
370
 
371
+ 每个工作区默认选中当前可见的最新会话,没有匹配会话时落在“新建会话”卡片。左右切栏或鼠标移入列表不会重置选择;换工作区时选中该工作区最新会话,返回之前的工作区时也重新选最新会话,不记忆各工作区的旧选择。尚未主动选择列表行时,首批结果、完整读取和后续刷新都会跟随最新可见会话;主动选择会话行或“新建会话”后,刷新保持该选择。
372
+
373
+ 原生光标与模型选择器一样跟随最后操作的区域:导航工作区时停在工作区行,导航会话时停在会话行或“新建会话”卡片,输入或点击筛选框时移到文本光标。行光标停稳 0.5 秒后隐藏,搜索光标保持可见;动画与拖尾沿用终端设置。窄屏隐藏工作区栏后,光标会回落到可见位置。筛选期间方向键与 Enter 的作用保持一致。
374
+
368
375
  工作区栏的菜单有四项:
369
376
 
370
377
  - **编辑**:选中该工作区,右侧列出它的会话。
@@ -454,6 +461,13 @@ Windows `dsh-tui.cmd --resume` 使用 `~/.dsh-tui/resume.txt` 中最后选择的
454
461
  - **不进会话历史**:问答不写入 session log,也不会出现在主上下文与 token 计数里(关闭面板即消失)。
455
462
  - **不打断主回合**:模型正在流式输出时也可以触发,主任务继续运行。
456
463
  - 面板内 `↑`/`↓` 滚动,`Space`/`Enter`/`Esc` 关闭,`c` 复制答案;等待答案时 `Esc` 取消。
464
+ - 侧栏面板形态(面板列展开时)分两层:默认**阅读层**——`←`/`→` 切面板、`↑`/`↓` 在轮之间移动**选中**、`PgUp`/`PgDn` 翻页、`n` 新话题、`s` 把**选中轮**的答案送进主输入框(再按一次 `s` = 撤回)、`c` 复制选中轮的答案;`Enter`/`Tab`(或点击输入框)进**编辑层**(`Esc` 逐层退出:先退编辑、草稿保留),编辑层里 `←`/`→` 先移光标,光标贴到行首/行尾后再按同一个键就交回宿主切面板,`↑` 则直接回到标题(列表)。
465
+ - 侧栏那行底栏提示**按层换**(面板自己广告、宿主只拼):光标在**列表**里说 `↑/↓ 选择 · s 送聊天 · c 复制`(已附加的那一轮说 `s 撤回`),光标在**输入框**里则不说 s/c(那里 `s` 只是打字),改说 `↑ 选择`;空线程没有可选的轮,这一段不画。输入框里只留一句 `Enter 提问` 占位。
466
+ - 选中的标记只有两点:标题**文字**反色(不铺满整行),以及终端光标停在那一行(所以按 `↑`/`↓` 时原生光标的拖尾是在标题之间上下走)。光标在主输入框或侧栏输入框里时两者都不显示——它表示的是「列表正拿着键盘」。**点标题行**也能把选中挪到那一轮。
467
+ - 滚动只在必要时发生:目标标题已经在视口里就一行都不滚;走出视口才滚,而且只滚到**恰好露出**这一行(往上走贴视口顶、往下走贴视口底)。
468
+ - **送聊天之后焦点自动回主输入框**:chip 就在眼前、可以直接接着打字,`Esc` 也立刻能把它撤掉(在面板里按 `Esc` 是退出面板,不是撤 chip)。
469
+ - 点**消息区**(问题/答案正文)跟点面板其它地方一样,只把列焦点交给面板,不会注入任何东西——注入只有 `s` 一个入口。
470
+ - `⤢` 全屏场景与侧栏面板同一套键位与选中态(线程 store 共享),区别只是送完聊天后整屏场景让位、回到主输入框。
457
471
  - 再次触发 `/btw` 会中止上一个侧问。
458
472
 
459
473
  ### 轨迹场景(/trace / Ctrl+T)
@@ -504,10 +518,15 @@ Windows `dsh-tui.cmd --resume` 使用 `~/.dsh-tui/resume.txt` 中最后选择的
504
518
 
505
519
  ### Model 与 preset
506
520
 
507
- `/model` 通过在当前历史末尾 fork 会话来切换模型,因为 DSH 没有原位换模型 API。
521
+ `/model` 在同一页展示模型列表与当前高亮模型的推理等级。DSH 额外显示提供商标签,首个为「最近使用」;打开时将当前模型记为最近一次使用并去重置顶,目录中仍可选的当前模型排在第一项并默认高亮。
522
+ Codex 与 Claude 直接展示完整模型目录,不显示提供商或最近使用标签;目录加载后默认高亮当前模型。
523
+ DSH 中 `Tab` 切到下一个提供商,`Shift+Tab` 切到上一个,首尾循环;所有后端均用 `↑/↓` 选择模型、`←/→` 调整推理等级。
524
+ 终端原生光标跟随**最后操作的区域**:`Tab`/`Shift+Tab` 移到提供商标签,`↑/↓` 移到聚焦模型的 `❯`,`←/→` 移到推理档位。移动时显示终端原本的光标形状、闪烁及已启用的动画或拖尾;停稳 **0.5 秒后隐藏**,再次移动时重新显示并计时。普通重绘不延长显示时间,输入框光标继续常显;无障碍模式保留可见焦点锚点。标签被裁剪或档位区不可见时回落到模型行。反色标签与 `❯` 始终保留,静态呈现也沿用这些焦点标记。
525
+ 确认时仅提交用户显式调整的推理草稿;只换模型时由后端沿用或校验保存的推理偏好,候选模型的默认档位不会写成新的偏好。模型选择器打开时,`Ctrl+B` 与 `Alt+Z` 仍控制侧栏,其余选择器按键由模型选择器消费。
526
+ `Enter` 确认模型与等级,`Esc` 取消草稿。操作提示放在标题下,推理区在模型列表下独立显示标题与档位,`←/→` 提示紧贴推理标题;可选档位使用正文色,当前档位高亮。DSH、Claude、Codex 均沿用终端背景,并遮住底层文字。
527
+ 鼠标点击标签、模型和档位后,可点击标题下的「选择」应用或「取消」退出;滚轮在模型列表中移动。输入框上方空间不足时,省略导航提示、隐藏模型描述及邻项、合并推理区为一行,并把「选择 / 取消」保留在底部;仅剩两行时再隐藏推理行,保留聚焦模型与操作入口。
508
528
 
509
- - 旧会话仍保留在 `/resume` 中。
510
- - 还没有人说过话的会话不记分支:此时换模型得到的是一个不写 `parentSession` 的独立会话(继承同一份会话脚手架前缀),这样你随后打的第一个真实 prompt 仍能触发自动生成会话标题;已经对话过的会话照旧记血缘。
529
+ `/model` 通过 DSH 的请求路由选择机制在同一会话内切换模型,保留 session ID、历史和标题。运行中的回合不能切换。下一次请求会记录实际使用的模型与模型变化提示;停放中的 agent 保留所选路由,返回该会话时也会保留;退出进程后,尚未发出请求的选择仅作为全局默认保存,从磁盘恢复仍按最后一次实际请求的路由解析。DSH 低于 `0.1.2-alpha.3` 时拒绝切换并提示升级,避免旧版子代理继续使用原模型。
511
530
 
512
531
  `/preset` 只允许空白会话原地切换。
513
532
 
@@ -619,7 +638,7 @@ dsh-tui 不修改 `~/.claude/settings.json`;会话启动时若其中的 `ANTHR
619
638
  - 浮层打开时不穿透滚动背后转录。
620
639
  - 轨迹场景移动光标(时间线一格 ±3 行、热点 ±1 行、详情展开时滚详情)。
621
640
  - 设置屏移动焦点行。
622
- - **拖拽**:选择文本,松开后立即复制并清除选区,弹出「已复制 N 字符」提示。
641
+ - **拖拽**:选择文本,松开后立即复制并保留选区,弹出「已复制 N 字符」提示;重新拖选会替换现有选区。
623
642
  - `dsh-tui.scrollGutter: scrollbar` 时,右缘滚动条是拖拽目标。
624
643
  - 未修饰左键按住拖动,按轨道位置连续滚动(与点击轨道同一映射:拖到哪滚到哪)。
625
644
  - `Shift`/`Alt`/`Ctrl`+拖动仍是选字(拖拽协议只对无修饰左键开启)。
@@ -792,7 +811,7 @@ Claude 后端的审批来自 CLI:CLI 给出建议时多一个「始终允许
792
811
 
793
812
  - `/provider`、`/login`、`/logout`、`/permission`、`/add-dir`、`/hooks`、`/mcp`。
794
813
  - `/auth login deepseek-account` 或 `/provider` 完成 DeepSeek 登录后,若 Platform 返回尚未展示的登录赠金,鲸鱼女仆娘弹窗会显示“鲸鱼券”的金额与到期时间;按 Enter/Esc 关闭。
795
- - `/plugins`:`check <路径>` 校验插件清单。
814
+ - `/plugin`:`list` 简洁列出你装的额外插件(不含安装自带);`install <spec>` 把插件装进当前 profile(装前提醒 + 信任确认,嫡系包按随包清单免确认;`esc` 收起面板,安装中尝试取消并等待写操作结束,来不及时等待安装完成,已登记的版本豁免保留;构建脚本被拦时在面板里批准,版本不兼容可登记精确版本豁免);`remove <bundle>` / `enable <名称|id>` / `disable <名称|id>` 是生命周期动作(bundle 名优先于行身份,模块名匹配多行时须改用具体行 ID;门禁 2 对提供本应用的 bundle、宿主层 `dsh-base` 与本包自己的行硬拒并给原因,任何启用与卸载都要确认(已装包来源无法验证);**没有取消**——`esc` 只关面板,写入继续,卸载不删你自己的数据);`check <路径>` 校验插件清单、`info <id>` 查已装条目或待装 spec、`registries` 列安装源;无参 `/plugin` 给完整诊断。
796
815
 
797
816
  **Skills**
798
817
 
@@ -802,11 +821,14 @@ Claude 后端的审批来自 CLI:CLI 给出建议时多一个「始终允许
802
821
  **其他**
803
822
 
804
823
  - `/update`、`/vim`(vim 编辑模式开关,见「输入编辑」)、`/terminal-setup`、`/connect`、`/help`。
805
- - `/kernel`:打开内核选择器(当前内核打勾,每行带版本与一句说明),在 DSH 与 Claude 会话里都可用。
824
+ - `/kernel`:打开内核选择器(当前内核打勾,每行带版本与一句说明),在 DSH、Codex 与 Claude 会话里都可用。
806
825
  选中另一个内核会记住选择并重启进入它,在新内核里开新会话;原会话仍可在 `/resume` 找到,新会话
807
826
  启动失败时回到原会话。回合进行中不能切换。启动页的「内核」入口与右下角内核区打开的是同一个
808
827
  选择器。用 `--backend` 或配置行指定了内核时,本次按选择重启,之后直接启动仍按参数。全新启动
809
828
  不论记住的是哪个内核都先到启动页,带恢复目标的启动直接进入会话。
829
+ - `/dsh`、`/codex`、`/claude`:直接选择对应内核,沿用 `/kernel` 的检查与重启流程。
830
+ 选择当前内核只提示「已经是当前内核」;回合运行中不能切换。未安装 Claude 时打开安装向导;
831
+ Codex 未安装或版本过旧时显示安装/升级提示。启动尚未就绪时也可使用这三个命令。
810
832
  - `/exit`(别名 `/quit`、`/q`)。
811
833
 
812
834
  **注册表**
@@ -839,6 +861,14 @@ dsh-TUI 不预装通用技能;技能内容与发现规则由 DSH 及当前组
839
861
  - registry 服务缺失时 TUI 使用三项 legacy 兼容名册。
840
862
  - 服务已挂载但损坏、为空或不一致时标记 unavailable 并 fail closed。
841
863
  - 退出计划模式先恢复进入前的 sandbox/approval,再还原进入前所在的权限预设(registry 仍提供时)。
864
+ - DSH 的 `/permission` 选择以同样方式存进 `~/.dsh-tui/permission.json`:任何一次持久的预设切换
865
+ (选择器、手敲命令、Shift+Tab 静态模式、官方命令自行完成的切换)都会更新它;从未自定义过
866
+ 权限面的会话按记住的预设启动,走同一条官方切换路径。这里的"从未自定义"以**用户是否动过**为准:
867
+ 合成层自己会在每个新会话创建时写入默认预设(`dsh-permission-presets` 的 `session/created` →
868
+ `pinInitialPermission`),那三个事件不算用户选择——只有跑过回合、或身份不是合成默认预设的
869
+ 会话才保有自己的权限面。计划模式的临时切换不记入(进入计划保持计划前的记忆、退出还原后再次
870
+ 记入);`DSH_PERMISSION_MODE` 是本次启动的初始权限面,显式设置时优先于该文件;名册已不提供
871
+ 的身份会被跳过。
842
872
  - 非 DSH 后端(如 Claude)声明原生权限模式时,`/permission` 列的是该后端的模式:
843
873
  `default`(逐个询问)、`acceptEdits`(自动接受编辑)、`plan`(只读规划)、
844
874
  `bypassPermissions`(跳过全部权限确认),模型支持时还有 `auto`,每行带一句解释。
@@ -26,9 +26,13 @@ live in the admission & development guide.
26
26
 
27
27
  ## Seam stability reference
28
28
 
29
- An **informal** maturity grading to help plugin authors gauge investment;
30
- the authoritative status and compatibility agreement live in the
31
- [admission & development guide](../tui-profile/docs/plugin-admission-and-development.md):
29
+ A maturity grading to help plugin authors gauge investment; the authoritative
30
+ status and compatibility agreement live in the
31
+ [admission & development guide](../tui-profile/docs/plugin-admission-and-development.md).
32
+ **The "stable candidate" tier is part of the frozen public surface as of the first
33
+ published apiVersion (`tui.dsh/v1alpha1`)** — the four commitments are in
34
+ `tui-profile/CHANGELOG.md`'s freeze entry; the other two tiers stay a **maturity
35
+ reference**, not a promise:
32
36
 
33
37
  | Tier | Seams |
34
38
  | --- | --- |
@@ -39,6 +43,10 @@ the authoritative status and compatibility agreement live in the
39
43
  Also an experimental public surface:
40
44
 
41
45
  - `@deepseek-harness-tui/dsh-tui/api` (types-only entry).
46
+ - **Rows inside a preset (experimental, seam VII)**: a bundle changes the `config` of a row
47
+ inside a preset dsh-TUI registers (for example, turning off `standard`'s
48
+ `compaction-basic` auto-compaction) with a `@deepseek-harness-tui/dsh-tui/preset-patch` row;
49
+ see seam VII of the [admission and development guide](../tui-profile/docs/plugin-admission-and-development.md).
42
50
  - **Side panels (experimental, §18)**: `ctx.tuiPanels.register({ apiVersion:
43
51
  1, id, title, icon?, component | compact })` registers a right-sidebar
44
52
  panel (the host prefixes `<pluginId>:`; ≤4 panels per plugin, ≤32 globally;
@@ -52,6 +60,71 @@ Also an experimental public surface:
52
60
  - The `@deepseek-harness-tui/dsh-tui/test-utils` subpath and
53
61
  `ctx.tuiPluginHost.grants.corrupt` were removed in the adapter layering
54
62
  refactor (#705).
63
+ - **The backend contribution family (`tui.dsh/v1alpha1` `Backend`, seam XIV) has its
64
+ public surface frozen with the first published apiVersion**: the type surface
65
+ (`BackendSpec`, `validateBackendSpec`, `backendAdmission`) and conformance
66
+ (`TUI-BACKEND-001`) are usable, and **both the admission chain (manifest →
67
+ registry → descriptor) and the install chain are wired**: the boot scans the
68
+ bundles the profile declares (`dsh.profile.bundles`, written by `/plugin install`
69
+ and by `dsh plugin add` alike), reads `dsh-plugin.json` from the package root
70
+ nearest the actual ESM entry, and registers what the validator and the admission
71
+ accept — so "install a third-party backend, restart, see it in the picker" holds.
72
+ Three boundaries: that scan runs **before** backend-choice registry membership
73
+ is checked (the Config schema checks syntax only, and the standalone entry's
74
+ full/light composition follows the final, assembled kernel); a backend's
75
+ implementation is read from its entry module's `backend` export
76
+ (`backendExport` is an in-tree private field, so a declaration cannot name another
77
+ export) and that module is imported only when the backend is actually selected;
78
+ and installing **without restarting** still does not put it in the picker — that
79
+ is not a promise.
80
+ Each bundle currently binds one `Backend` declaration. Its manifest must pass
81
+ canonical projection, including unique contribution identities, and the handler
82
+ id must match the declaration. Entries awaiting authorization stay registered
83
+ but are neither probed nor loaded; explicitly selecting one at startup fails too.
84
+ - **Installing a package is available in the terminal itself (C-4)**: `/plugin
85
+ install <spec>` goes through the host's `ctx.pluginManager` — a pre-install
86
+ notice, a trust confirmation decided by provenance of the package (the judge is
87
+ the packaged `tui-profile/feed/first-party.json`, decided offline; anything it
88
+ cannot vouch for falls back to the confirmation), and `esc` to close the pane.
89
+ During an install, it attempts cancellation and waits for profile writes to
90
+ settle: the service rolls the profile back on cancellation, or finishes the
91
+ install if applying has already made cancellation too late. Blocked build
92
+ scripts can be approved in the pane, and an incompatible version can receive
93
+ an **exact-version exemption**. Cancelling during exemption registration waits
94
+ for the current write and stops subsequent grants and the retry; exemptions
95
+ already written remain. **Known gaps**:
96
+ provenance is only a one-vote-to-veto seam with no online check at all (the
97
+ host service exposes no such API), and with no service the transcript reports
98
+ the CLI command and the reason instead of **running `dsh plugin` on the user's
99
+ behalf** (no pane opens: there is no flow to drive).
100
+ - **Lifecycle actions are available in the terminal itself (C-5)**: `/plugin remove
101
+ <bundle>`, `/plugin enable <name|id>` and `/plugin disable <name|id>` go through the
102
+ same host service. **A bundle and a row are two levels**: a bundle is a composition
103
+ layer (the profile manifest's `dsh.profile.bundles`), a row is one patch entry's
104
+ `disabled`. The argument resolves against one snapshot, a bundle name first and
105
+ exactly, then `entryId` → `patchId` → module name; nothing that matches is reported
106
+ with what is addressable rather than guessed at. A module name matching multiple rows
107
+ is refused with their row IDs; use a specific ID. **Gate 2** (this application may not
108
+ switch itself off) refuses three kinds of target hard — the bundle providing this app,
109
+ the host layer `@deepseek-ai/dsh-base`, and this application's own rows (those loading
110
+ a module of this package, **or inserted by its own patch**: measured, that patch inserts
111
+ 17 rows and 8 of them load a first-party `@deepseek-ai/*` module, of which the host locks
112
+ exactly one) — with a reason line and **no service call at all**, and it does so whether or not hot
113
+ reload is live (the host's own `stop-profile` guard only fires without HMR, and this
114
+ profile runs `patchReload: live`). `enable` is never refused by gate 2: it is the
115
+ repair action, and refusing it would seal off the only in-UI way back from a profile
116
+ somebody edited by hand. The host's own lock (`management-required` / `unaddressable`)
117
+ refuses both directions and its reason is quoted as given. **Every `enable` and `remove` requires confirmation** (a removal lists the
118
+ rows and overrides it drops), while `disable` asks only about a row the host layer
119
+ owns (switching one off unloads services this app injects). The host does not attest
120
+ installed package sources: local and Git packages can claim the same name and version,
121
+ so an exact feed match cannot waive confirmation when enabling. These actions have **no
122
+ cancellation**: the service offers none, so `esc` only closes the pane while the write
123
+ finishes and reports itself into the transcript (same session). **Known gaps**: a
124
+ removal deletes no user data — `~/.dsh-tui/backends/<id>/`, grants and storage
125
+ namespaces are **reported once** and left for the person to delete; when a package's
126
+ declaration cannot be read, the flow says it could not judge rather than claiming the
127
+ removal was clean.
55
128
  - `grants` is now the narrower `HostGrantFacade`; see that PR for migration
56
129
  details.
57
130
  - On `TuiSceneProps.channel` (`ChannelUi`), `minimal` / `setMinimal()` were
@@ -68,6 +141,27 @@ Also an experimental public surface:
68
141
  callers means both aliases and the `'setMinimal': 'mutate'` row in
69
142
  `ui-policy.ts` are deleted in v0.13; any remaining caller is migrated within
70
143
  that same release rather than postponing the removal again.
144
+ - **The DSH kernel in the package's own entry** (the default since the
145
+ standalone host, [configuration](configuration.en.md)): the screen mounts
146
+ before the profile composes, so plugin rows activate *after* the first
147
+ frame and every `ctx.tui*` registration reaches an already-mounted screen
148
+ (themes, panels, status views and the rest join live). A runtime theme the
149
+ user had chosen is applied once its plugin registers it; until then the
150
+ first frames use the auto-detected palette. The root-capability guard is
151
+ the same as under `dsh --profile`: a row activating after the first TUI row
152
+ cannot use `ctx.root` capabilities (`root.plugin`, `root.effect`,
153
+ `root.on`, …) in its apply. A plugin that waits for something in its apply
154
+ holds the composition: start long work detached, not awaited. On a scene's
155
+ `TuiSceneProps.channel`, `ready` is `false` (and `status` `'starting'`)
156
+ while no session stands behind the channel, e.g. after the startup session
157
+ failed to open (`startupFailure`).
158
+ - **Claude and Codex kernels** (light profile; accepted on Claude, not yet on
159
+ Codex, which takes the same composition path): the entry composes this
160
+ package's rows and the third-party bundles the profile declares, without
161
+ `@deepseek-ai/dsh-base`, after the first frame, on the same terms as above.
162
+ A row whose `inject` names a service only DSH's core provides (`agents`,
163
+ `llm`, `tools`, `sessionPersistence`, …) stays pending on these kernels;
164
+ the `tui*` services are all there.
71
165
 
72
166
  - The core repository remains independent; community plugins live in their own
73
167
  repos.
@@ -24,8 +24,10 @@
24
24
 
25
25
  ## 接缝稳定性参考
26
26
 
27
- 按当前实现成熟度给出的**非正式**分级,帮助插件作者评估投入;正式
28
- 状态与兼容性协定以[准入与开发指南](../tui-profile/docs/plugin-admission-and-development.md)为准:
27
+ 按当前实现成熟度给出的分级,帮助插件作者评估投入;正式
28
+ 状态与兼容性协定以[准入与开发指南](../tui-profile/docs/plugin-admission-and-development.md)为准。
29
+ **「稳定候选」那一档已随第一版 apiVersion(`tui.dsh/v1alpha1`)纳入冻结的公开面承诺**
30
+ (四条承诺见 `tui-profile/CHANGELOG.md` 的冻结条目);其余两档仍是**成熟度参考**,不构成承诺:
29
31
 
30
32
  | 分级 | 接缝 |
31
33
  | --- | --- |
@@ -36,6 +38,9 @@
36
38
  另:
37
39
 
38
40
  - `@deepseek-harness-tui/dsh-tui/api`(纯类型入口)为实验性公开面。
41
+ - **preset 内的行(实验性,接缝七)**:bundle 用 `@deepseek-harness-tui/dsh-tui/preset-patch`
42
+ 行改 dsh-TUI 注册的 preset 里某一行的 `config`(例如关掉 `standard` 的
43
+ `compaction-basic` 自动压缩),写法见[准入与开发指南](../tui-profile/docs/plugin-admission-and-development.md)接缝七。
39
44
  - **侧栏 Panel(实验性,§18)**:`ctx.tuiPanels.register({ apiVersion: 1,
40
45
  id, title, icon?, component | compact })` 向右侧栏注册面板(宿主自动加
41
46
  `<pluginId>:` 前缀;每插件 ≤4 个、全局 ≤32 个;`open()` 限速每 5s 一次;
@@ -46,6 +51,42 @@
46
51
  `@deepseek-harness-tui/dsh-tui/panels` 与 `./api`。
47
52
  - `@deepseek-harness-tui/dsh-tui/test-utils` 子路径与
48
53
  `ctx.tuiPluginHost.grants.corrupt` 已随 adapter 分层重构(#705)移除。
54
+ - **后端贡献族(`tui.dsh/v1alpha1` `Backend`,接缝十四)的公开面已随第一版 apiVersion 冻结**:类型面
55
+ (`BackendSpec`、`validateBackendSpec`、`backendAdmission`)与 conformance
56
+ (`TUI-BACKEND-001`)已可用,**准入链路(清单 → registry → descriptor)与装链路都已接线**:
57
+ 启动时扫 profile 声明的已装 bundle(`dsh.profile.bundles`——`/plugin install` 与 `dsh plugin add`
58
+ 都写它),按**实际 ESM 入口最近的包根**读 `dsh-plugin.json`,校验 + 准入后注册,于是
59
+ 「装一个第三方后端、重启后出现在 picker 里」成立。三条边界:这份扫描**早于**后端选择的注册表成员判定
60
+ (Config Schema 只校验语法,独立入口的完整/轻量组合由装配后的最终内核决定);后端实现从包入口模块的 `backend` 导出取
61
+ (`backendExport` 是 in-tree 私有项,声明里写不了别的导出名),模块只在真的选中时才 import;
62
+ 装完**不重启**仍然不会出现在 picker 里——那不是承诺。
63
+ 当前每个 bundle 只接一个 `Backend` 声明;清单须通过规范投影(含贡献身份唯一性),handler 的 id 必须与声明一致。
64
+ 等待授权的条目仍注册身份,但不探测、不加载;启动参数或配置显式指定它也会报错。
65
+ - **装包本身已在终端里可用(C-4)**:`/plugin install <spec>` 走宿主
66
+ `ctx.pluginManager`,装前给提醒、按来源决定要不要确认信任(嫡系判据是随包发布的
67
+ `tui-profile/feed/first-party.json`,离线可判;验不过一律 fail closed 退回确认),
68
+ `esc` 收起面板;安装进行中会尝试取消,面板等写操作结束后才关闭。取消成功由服务回滚 profile,
69
+ 已进入应用阶段而来不及时则等待安装完成。构建脚本被拦时在面板里批准,
70
+ 版本不兼容可登记 **精确版本豁免**;登记期间取消会等待当前写入、停止后续登记和重试,
71
+ 已写入的豁免保留。**已知缺口**:provenance 只留了「一票否决」的缝、
72
+ 没有任何在线校验(宿主服务不暴露这类 API);服务缺席时由转录给出 CLI 命令与原因
73
+ (不弹面板:没有可驱动的流程),**不在 TUI 内代跑 `dsh plugin`**。
74
+ - **生命周期动作已在终端里可用(C-5)**:`/plugin remove <bundle>`、`/plugin enable
75
+ <名称|id>`、`/plugin disable <名称|id>` 走同一套宿主服务。**bundle 与行是两级语义**:
76
+ bundle 是组合层(写 profile 清单的 `dsh.profile.bundles`),行是 patch 的 `disabled`;
77
+ 解析顺序是 bundle 名精确匹配优先,其次 `entryId` → `patchId` → 模块名,都不中就给可寻址
78
+ 清单、不猜;模块名匹配多行时,列出行 ID 并拒绝写入,须改用具体 ID。**门禁 2**(不能自己杀自己)在 TUI 侧硬拒三类目标——提供本应用的 bundle、
79
+ 宿主层 `@deepseek-ai/dsh-base`、本应用自己的行(加载本包模块的行,**或由本包 patch
80
+ 插入的行**:实测本包的 patch 插入 17 行,其中 8 行加载的是首方 `@deepseek-ai/*` 模块,
81
+ 上游只锁住其中一个)——拒绝时给一行原因且**不发起任何服务调用**,与 HMR 是否生效无关(上游 `stop-profile` 守卫只在没有 HMR 时生效,本 profile 是
82
+ `patchReload: live`,所以那道守卫靠不住)。`enable` 不因门禁 2 被拒:它是复原动作,把手工
83
+ 改坏的 profile 关在门外等于封死唯一的 UI 退路;上游自己的锁(`management-required` /
84
+ `unaddressable`)则两个方向都拒,并原样转述上游的理由。**任何 `enable` 与 `remove` 都要确认**(卸载列出它会动的行数与覆盖数),
85
+ `disable` 只对宿主层自己的行问一句(关掉它会卸载本应用注入的服务)。宿主不提供
86
+ 已装包的来源证明,本地或 Git 包也能声明嫡系的名称与版本,因此即使命中 feed 也不能免确认。这些动作**没有取消面**:
87
+ 服务不提供,Esc 只关面板,写入照旧跑完并(在同一会话里)把结果写进转录。**已知缺口**:
88
+ 卸载不删用户数据——`~/.dsh-tui/backends/<id>/`、grants、存储命名空间只**报告一次**,由
89
+ 用户自己决定删不删;包内声明读不到时明说「判断不了」,不制造「已清理」的假象。
49
90
  - `grants` 收窄为 `HostGrantFacade`,迁移细节见该 PR。
50
91
  - `TuiSceneProps.channel`(`ChannelUi`)上的 `minimal` / `setMinimal()` 已更名为
51
92
  `minimalUi` / `setMinimalUi()`;旧名保留为 **deprecated 别名**,读写同一个
@@ -57,6 +98,18 @@
57
98
  `TuiSceneProps.channel` 取用该端口的插件)做一次 `.minimal` / `.setMinimal(`
58
99
  扫描:零调用方即在 v0.13 删除这两个别名与 `ui-policy.ts` 里的
59
100
  `'setMinimal': 'mutate'` 行;仍有调用方则在同一版本内完成迁移,不再顺延。
101
+ - **DSH 内核在本包入口进程内**(独立宿主起的默认,见[配置](configuration.md)):
102
+ 界面先挂、profile 后组合,插件行在首帧**之后**激活,所有 `ctx.tui*` 注册都落到
103
+ 已挂载的界面上(主题、面板、状态视图等实时加入)。用户选定的运行时主题在其插件
104
+ 注册后生效,此前的首帧用自动检测的配色。根能力守卫与 `dsh --profile` 一致:在首个
105
+ TUI 行之后激活的行,apply 里不能用 `ctx.root` 的能力(`root.plugin`、
106
+ `root.effect`、`root.on` 等)。apply 里等待会拖住组合:耗时工作脱离 apply 启动、
107
+ 不要 await。场景的 `TuiSceneProps.channel` 在没有会话撑着时(例如启动会话打开失败,
108
+ 见 `startupFailure`)`ready` 为 `false`、`status` 为 `'starting'`。
109
+ - **Claude 与 Codex 内核**(轻量 profile;Claude 已验收,Codex 走同一条组合路径但尚未验收):入口在首帧之后组合本包的行与 profile 声明的
110
+ 第三方 bundle,不含 `@deepseek-ai/dsh-base`,规则同上条。`inject` 里有只由 DSH 核心
111
+ 提供的服务(`agents`、`llm`、`tools`、`sessionPersistence` 等)的行在这两个内核下保持
112
+ pending;`tui*` 服务都在。
60
113
 
61
114
  核心仓库保持独立,社区插件各居其位。
62
115
  生态组织只维护收录与准入规则——不对社区插件的功能、质量或安全性
@@ -4,22 +4,30 @@
4
4
 
5
5
  ## Built-in themes
6
6
 
7
- dsh-TUI provides three Gentle Mist Blue palettes, plus an `auto` pseudo-theme:
7
+ dsh-TUI ships two palette families (six themes) plus an `auto` pseudo-theme:
8
8
 
9
- | Name | Purpose |
10
- | --- | --- |
11
- | `auto` | Pseudo-theme: follows the system/terminal background, resolving to `light` or `dark` |
12
- | `light` | White panels, ink body text, and mist-blue interaction color |
13
- | `dark` | Dark-terminal adaptation with warm-gray text and soft blue accents |
14
- | `dark-ansi` | Compatibility fallback using only the 16 ANSI colors (except the ignition pair) |
9
+ | Name | Family | Purpose |
10
+ | --- | --- | --- |
11
+ | `auto` | — | Pseudo-theme: follows the system/terminal background, resolving to `light` or `dark` |
12
+ | `light` | Mist Blue | White panels, ink body text, and mist-blue interaction color |
13
+ | `dark` | Mist Blue | Dark-terminal adaptation with warm-gray text and soft blue accents |
14
+ | `dark-ansi` | Mist Blue | 16-color ANSI fallback (except the ignition pair) |
15
+ | `pink-day` | Sakura Pink | Light terminals: blush panels and sakura-pink interaction color |
16
+ | `pink-night` | Sakura Pink | Dark terminals: warm surfaces and sakura-pink interaction color |
17
+ | `pink-ansi` | Sakura Pink | 16-color ANSI fallback (except the ignition pair) |
18
+
19
+ Both families keep the same role split (light / dark / ANSI fallback). `auto`
20
+ resolves within the Mist Blue family only; the Sakura Pink family is selected
21
+ explicitly.
15
22
 
16
23
  Without an explicit choice, the TUI queries the terminal background with OSC
17
24
  11 and selects `light` or `dark`. It falls back to `dark` when the terminal
18
25
  does not answer.
19
26
 
20
- Light-theme panels, tool cards, and image previews use white (`#FFFFFF`)
21
- surfaces by default; image previews use neutral borders. Dark palettes and
22
- accent colors are unchanged. This does not modify the terminal's own
27
+ Light-theme panels and tool cards take their own family's surface colors (`light`
28
+ uses white `#FFFFFF`; `pink-day` uses blush `#F9ECF1`), and their input fills are
29
+ the warm `#F6F3ED` / `#FBF3F0`; image previews always use neutral borders. Dark
30
+ palettes and accent colors are unchanged. This does not modify the terminal's own
23
31
  background or wallpaper.
24
32
 
25
33
  `auto` turns that one-shot startup detection into a standing choice:
@@ -131,13 +139,14 @@ A few keys carry behavior worth knowing:
131
139
  channels (`#rgb`, `#rrggbb`, `#rrggbbaa` with the alpha ignored, or `rgb(r,g,b)`); `ansi:*` /
132
140
  `ansi256(n)` — or a missing key — falls back **per key** to the built-in pair selected by the
133
141
  palette's lightness, so the other key is unaffected.
134
- - `cursor`: the caret fill in the main prompt, launchpad input and picker search boxes.
142
+ - `cursor`: the painted caret fill in the main prompt, launchpad input and picker search boxes
143
+ during static rendering without a native cursor, plus image-token focus in the main prompt.
144
+ Ordinary TTY text editing uses the native cursor; shape, color, blinking and animation follow terminal settings.
135
145
  The glyph on it is whichever of `text` / `inverseText`
136
146
  contrasts better with that fill (a 16-color `ansi:*` fill, or a palette whose `text`/`inverseText`
137
147
  has no parseable channels, cannot be measured and keeps `inverseText`), so a light caret can still
138
- carry dark ink. The built-ins leave it empty — empty
139
- keeps the inverse-video caret for backwards compatibility; declare it only when the caret must
140
- stop following the body text color.
148
+ carry dark ink. The built-ins leave it empty, giving the painted fallback an inverse-video block.
149
+ A custom fill affects these painted highlights only.
141
150
  - Transcript link text follows `accent`; an empty or unparseable accent keeps the old fixed blue.
142
151
 
143
152
  ## npm plugin themes
@@ -4,21 +4,27 @@
4
4
 
5
5
  ## 内置主题
6
6
 
7
- dsh-TUI 提供三套 Gentle Mist Blue 色板,外加一个 `auto` 伪主题:
7
+ dsh-TUI 内置两个色板族共六套主题,外加一个 `auto` 伪主题:
8
8
 
9
- | 名称 | 用途 |
10
- | --- | --- |
11
- | `auto` | 伪主题:跟随系统/终端背景,自动解析为 `light` 或 `dark` |
12
- | `light` | 白色面板、墨色正文、雾蓝交互色 |
13
- | `dark` | 深色终端适配,暖灰正文与柔雾蓝强调色 |
14
- | `dark-ansi` | 只依赖 16 色 ANSI 的兼容回退(点火色对除外) |
9
+ | 名称 | 族 | 用途 |
10
+ | --- | --- | --- |
11
+ | `auto` | — | 伪主题:跟随系统/终端背景,自动解析为 `light` 或 `dark` |
12
+ | `light` | 雾蓝 | 白色面板、墨色正文、雾蓝交互色 |
13
+ | `dark` | 雾蓝 | 深色终端适配,暖灰正文与柔雾蓝强调色 |
14
+ | `dark-ansi` | 雾蓝 | 16 色 ANSI 兼容回退(点火色对除外) |
15
+ | `pink-day` | 樱 | 浅色终端:淡粉面板、樱粉交互色 |
16
+ | `pink-night` | 樱 | 深色终端:暖调面板、樱粉交互色 |
17
+ | `pink-ansi` | 樱 | 16 色 ANSI 兼容回退(点火色对除外) |
18
+
19
+ 两族保持相同的角色划分(浅色 / 深色 / ANSI 回退)。`auto` 只在雾蓝族内解析,
20
+ 樱族需要显式选择。
15
21
 
16
22
  未明确指定主题时,TUI 通过 OSC 11 查询终端背景,
17
23
  在 `light` 与 `dark` 之间选择;终端不响应时回退到 `dark`。
18
24
 
19
- 浅色主题的面板、工具卡和图片预览默认用纯白底色(`#FFFFFF`),
20
- 图片预览用中性边框。深色主题及强调色保持原样。
21
- 此设置不修改终端自身的背景色或壁纸。
25
+ 浅色主题的面板与工具卡各用本族的浅色表面色(雾蓝 `light` 为纯白 `#FFFFFF`,
26
+ 樱 `pink-day` 为淡粉 `#F9ECF1`;两族的输入框底色另有暖色 `#F6F3ED` / `#FBF3F0`),
27
+ 图片预览一律用中性边框。深色主题及强调色保持原样。此设置不修改终端自身的背景色或壁纸。
22
28
 
23
29
  `auto` 把这一次性启动检测变成常驻选择:
24
30
 
@@ -130,11 +136,12 @@ DSH_TUI_THEME
130
136
  出固定通道的形式(`#rgb`、`#rrggbb`、`#rrggbbaa`(alpha 会被忽略)或 `rgb(r,g,b)`);
131
137
  写成 `ansi:*` / `ansi256(n)`(或整键缺失)时**逐键**回退到按主题明暗选定的内置点火色对,
132
138
  另一个键不受牵连。
133
- - `cursor`:主输入框、落地页输入框及选择器搜索框光标的填充色。
139
+ - `cursor`:无原生光标的静态呈现中,主输入框、落地页输入框及选择器搜索框绘制光标的填充色,
140
+ 也用于主输入框的图片标记焦点高亮。常规 TTY 文本输入使用原生光标,形状、颜色、闪烁与动画由终端配置控制。
134
141
  块上的字形取 `text` 与 `inverseText` 中对该填充对比度更高
135
142
  的一个(16 色的 `ansi:*` 填充,或 `text`/`inverseText` 解析不出通道的调色板,
136
143
  都量不出对比度,仍用 `inverseText`),所以浅色光标也能配深墨字形。
137
- 内置主题留空——空值表示沿用原来的反色块光标(向后兼容);只有需要光标独立于正文色时才声明。
144
+ 内置主题留空——绘制回退采用反色块;自定义填充只影响这些绘制高亮。
138
145
  - 正文链接的文字色跟随 `accent`;accent 为空或解析不出时回落到原来的固定蓝。
139
146
 
140
147
  ## npm 插件主题