@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
@@ -1,19 +1,35 @@
1
- /** Kernels the TUI can run on (the Config.backend values). */
2
- export declare const KERNEL_IDS: readonly ["dsh", "claude", "codex"];
3
- export type KernelBackendId = typeof KERNEL_IDS[number];
4
- export declare function isKernelId(value: unknown): value is KernelBackendId;
5
- /**
6
- * Per-kernel facts: the picker label, the product a version belongs to, and
7
- * whether the host can install a missing kernel itself (the Claude SDK
8
- * wizard); the others only say how (their detection hint).
9
- */
10
- export declare const KERNEL_INFO: Record<KernelBackendId, {
11
- labelKey: string;
12
- product: string;
13
- installable: boolean;
14
- }>;
15
- /** Brand names used by kernel chips and notices. */
16
- export declare function kernelDisplayName(id: string): string;
1
+ import { type BackendId } from './agent/backend-manifest.js';
2
+ /**
3
+ * The backends that ship inside this package, in picker order. They are the
4
+ * registry's seed and the vocabulary the launcher's messages use — **not** the
5
+ * validation source any more: since P0 D1 any syntactically valid id may name a
6
+ * plugin backend, and membership is decided by
7
+ * `src/dsh-adapter/backend-registry.ts` (which the launcher cannot import when
8
+ * it runs without compiled modules, hence the mirrored copy in `bin/dsh-tui.js`).
9
+ */
10
+ export declare const BUILTIN_BACKEND_IDS: readonly ["dsh", "claude", "codex"];
11
+ /**
12
+ * An id that passed the id-syntax gate (the rule and the brand live in
13
+ * `agent/backend-manifest.ts`, next to the manifest that declares it).
14
+ *
15
+ * It marks "validated input", which is what the session-ref and path builders
16
+ * need. *Membership* ("is this backend installed?") is a runtime question:
17
+ * `parseBackendChoice()` in the registry answers both halves, and the boot falls
18
+ * back to dsh when the second half misses — exactly like an unknown value always
19
+ * did (P0 D1).
20
+ */
21
+ export type KernelBackendId = BackendId;
22
+ /** The fallback every path lands on. `dsh` passes the syntax gate by
23
+ * construction and is always registered, so it needs no runtime check. */
24
+ export declare const DSH_BACKEND_ID: KernelBackendId;
25
+ /**
26
+ * The first half of the parse: trim, lowercase, id syntax. Anything else (a
27
+ * blank, a typo, `has:colon`, `a/b`) is undefined, which every caller reads as
28
+ * "no choice made". The second half — is it registered? — belongs to the
29
+ * registry, which is deliberately not imported here (this module is reachable
30
+ * from the UI, which may not import the adapter).
31
+ */
32
+ export declare function parseBackendId(value: unknown): KernelBackendId | undefined;
17
33
  /** Stored shape. */
18
34
  export interface KernelPrefsData {
19
35
  readonly backend?: KernelBackendId;
@@ -31,6 +47,13 @@ export declare function writeKernelPrefs(data: KernelPrefsData, file?: string, d
31
47
  * config > env > remembered choice.
32
48
  */
33
49
  export declare const KERNEL_SWITCH_HANDOFF_ENV = "DSH_TUI_BACKEND_HANDOFF";
50
+ /** The entry's path, set by the launcher: every replacement
51
+ * relaunches through it (src/update.ts restartArgv). */
52
+ export declare const HOST_ENTRY_PATH_ENV = "DSH_TUI_HOST_ENTRY_PATH";
53
+ export declare function hostEntryDisabled(env?: NodeJS.ProcessEnv): boolean;
54
+ /** Why the entry could not use the installed dsh; set by the entry, read and
55
+ * cleared once by the runtime (plugin.ts), also in a delegated `dsh --profile`. */
56
+ export declare const HOST_NOTICE_ENV = "DSH_TUI_HOST_NOTICE";
34
57
  /**
35
58
  * The kernel boot runs on (plugin.ts backendChoice): a valid switch handoff
36
59
  * first, then the Config row, then DSH_TUI_BACKEND, then the remembered
@@ -41,11 +64,101 @@ export declare const KERNEL_SWITCH_HANDOFF_ENV = "DSH_TUI_BACKEND_HANDOFF";
41
64
  export declare function resolveRememberedBackend(input: {
42
65
  /** KERNEL_SWITCH_HANDOFF_ENV, normalized; undefined on ordinary launches. */
43
66
  readonly handoff?: KernelBackendId | undefined;
44
- /** Config.backend (normalized by the schema). */
67
+ /** Config.backend after the boot's post-discovery membership check. */
45
68
  readonly configured?: KernelBackendId | undefined;
46
69
  /** process.env.DSH_TUI_BACKEND as given. */
47
70
  readonly envRaw?: string | undefined;
71
+ /**
72
+ * Whether DSH_TUI_BACKEND names an *installed* backend. Absent means the
73
+ * syntax gate alone, which is what callers without a registry (the
74
+ * crash-retry regressions) can offer. The boot passes the registry's
75
+ * `isRegisteredBackend`: an uninstalled plugin id must fall back to dsh
76
+ * exactly like a typo does, instead of reaching `loadBackend()` and crashing
77
+ * the boot on a pinned choice (P0 D1).
78
+ */
79
+ readonly envKnown?: ((id: string) => boolean) | undefined;
48
80
  /** The kernel remembered in kernel.json. */
49
81
  readonly memory?: KernelBackendId | undefined;
50
82
  }): KernelBackendId;
83
+ /**
84
+ * The backend a **derived** resume target was read from (launcher → boot handoff).
85
+ *
86
+ * `DSH_TUI_RESUME_SESSION` alone cannot be trusted across backends. The launcher
87
+ * derives a bare `--resume` target from the chosen backend's own
88
+ * `backends/<id>/prefs.json` (`envFromLastRun` does the same from `last-run.json`),
89
+ * and this boot may then land on a *different* backend: an uninstalled plugin id
90
+ * falls back to dsh (P0 D1), and an unset `DSH_TUI_BACKEND` follows the remembered
91
+ * kernel instead. Handing the id to whoever booted resumes the wrong backend's
92
+ * session, or fails on one that never heard of it. This variable records the
93
+ * source so the boot can refuse it.
94
+ *
95
+ * An id the user placed themselves (`--resume <id>`, a Config row, `/restart`)
96
+ * carries no mark — where it belongs is theirs to decide, and the boot only says
97
+ * what it knows. Boot deletes this from process.env as soon as it reads it,
98
+ * exactly like {@link KERNEL_SWITCH_HANDOFF_ENV}.
99
+ */
100
+ export declare const RESUME_BACKEND_ENV = "DSH_TUI_RESUME_BACKEND";
101
+ /**
102
+ * Marks a boot the launcher started as the safe-mode **retry** (`dsh-tui safe`
103
+ * → option 1, and the first-run fallback that shares it).
104
+ *
105
+ * A retry derives its target from `last-run.json` — "the kernel and session that
106
+ * were running when the crash happened" — and the recorded kernel may no longer
107
+ * be in the registry, which is exactly the case {@link resolveResumeTarget}
108
+ * revokes. Failing the boot there would close the user's last way back, so a
109
+ * retry gets the tolerated branch instead: warn, then cold-start on the kernel
110
+ * that did open. The launcher sets it for the whole retry env, the boot deletes
111
+ * it as soon as it reads it (one-shot, like the mark above), and it never
112
+ * reaches the plugin protocol — `lastSession` and this handoff are implementation
113
+ * details, not a backend contract (roadmap §6 item 11).
114
+ */
115
+ export declare const RESUME_RETRY_ENV = "DSH_TUI_RESUME_RETRY";
116
+ /**
117
+ * What the boot must do with the resume request it inherited.
118
+ *
119
+ * The four outcomes the decision names (roadmap §6 item 11): only the selected
120
+ * backend is ever asked, a target is bound to the backend that derived it, and a
121
+ * request that cannot be honored fails the boot instead of degrading into a cold
122
+ * start or a session nobody asked for. `none` and `usable` are the two ordinary
123
+ * outcomes; `revoked` carries everything the caller needs to report the refusal —
124
+ * which backend the target came from, and whether the refusal is allowed to be
125
+ * soft (safe-mode retry only).
126
+ */
127
+ export type ResumeTarget =
128
+ /** No resume request survives (nothing was asked for, or the id was blank). */
129
+ {
130
+ readonly kind: 'none';
131
+ }
132
+ /** Hand this id to `backendChoice`, the backend this boot landed on. */
133
+ | {
134
+ readonly kind: 'usable';
135
+ readonly sessionId: string;
136
+ }
137
+ /**
138
+ * A **derived** target whose source backend is not the one this boot landed on.
139
+ * `fatal` says how loud the refusal is: `true` fails the boot (the target is
140
+ * neither carried across nor silently replaced by a new session), `false`
141
+ * (safe-mode retry) only warns and lets the boot continue on `backendChoice`.
142
+ */
143
+ | {
144
+ readonly kind: 'revoked';
145
+ readonly from: KernelBackendId;
146
+ readonly fatal: boolean;
147
+ };
148
+ /**
149
+ * Whether a resume target may be handed to the backend this boot landed on. A
150
+ * derived target is usable only on the backend it came from; a revoked one is
151
+ * dropped rather than carried over, which is why the result hands the source back
152
+ * for the caller's refusal instead of returning nothing. Pure.
153
+ */
154
+ export declare function resolveResumeTarget(input: {
155
+ /** The id as given: DSH_TUI_RESUME_SESSION, else Config.sessionId. */
156
+ readonly sessionId?: string | undefined;
157
+ /** RESUME_BACKEND_ENV, normalized. Absent = the user named the target. */
158
+ readonly sourceBackend?: KernelBackendId | undefined;
159
+ /** The backend this boot landed on (plugin.ts `backendChoice`). */
160
+ readonly backendChoice: KernelBackendId;
161
+ /** RESUME_RETRY_ENV: a safe-mode retry must survive a revoked target. */
162
+ readonly retry?: boolean | undefined;
163
+ }): ResumeTarget;
51
164
  //# sourceMappingURL=kernelPrefs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"kernelPrefs.d.ts","sourceRoot":"","sources":["../../src/kernelPrefs.ts"],"names":[],"mappings":"AAgBA,8DAA8D;AAC9D,eAAO,MAAM,UAAU,qCAAsC,CAAA;AAC7D,MAAM,MAAM,eAAe,GAAG,OAAO,UAAU,CAAC,MAAM,CAAC,CAAA;AAEvD,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAEnE;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,eAAe,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAI5G,CAAA;AAED,oDAAoD;AACpD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,oBAAoB;AACpB,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,CAAA;CACnC;AASD,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,IAAI,GAAE,MAAsC,GAAG,eAAe,CAM7F;AAuBD,sFAAsF;AACtF,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,eAAe,EACrB,IAAI,GAAE,MAAsC,EAC5C,KAAK,GAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAsB,GACjD,IAAI,CAcN;AAWD;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,4BAA4B,CAAA;AAElE;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,SAAS,CAAA;IAC9C,iDAAiD;IACjD,QAAQ,CAAC,UAAU,CAAC,EAAE,eAAe,GAAG,SAAS,CAAA;IACjD,4CAA4C;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,4CAA4C;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,SAAS,CAAA;CAC9C,GAAG,eAAe,CAOlB"}
1
+ {"version":3,"file":"kernelPrefs.d.ts","sourceRoot":"","sources":["../../src/kernelPrefs.ts"],"names":[],"mappings":"AAcA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAG/E;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,qCAAsC,CAAA;AAEtE;;;;;;;;;GASG;AACH,MAAM,MAAM,eAAe,GAAG,SAAS,CAAA;AAEvC;2EAC2E;AAC3E,eAAO,MAAM,cAAc,EAAY,eAAe,CAAA;AAEtD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,GAAG,SAAS,CAI1E;AAED,oBAAoB;AACpB,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,CAAA;CACnC;AASD,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,IAAI,GAAE,MAAsC,GAAG,eAAe,CAM7F;AAuBD,sFAAsF;AACtF,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,eAAe,EACrB,IAAI,GAAE,MAAsC,EAC5C,KAAK,GAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAsB,GACjD,IAAI,CAcN;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,4BAA4B,CAAA;AAQlE;yDACyD;AACzD,eAAO,MAAM,mBAAmB,4BAA4B,CAAA;AAE5D,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAE/E;AAED;oFACoF;AACpF,eAAO,MAAM,eAAe,wBAAwB,CAAA;AAEpD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,SAAS,CAAA;IAC9C,uEAAuE;IACvE,QAAQ,CAAC,UAAU,CAAC,EAAE,eAAe,GAAG,SAAS,CAAA;IACjD,4CAA4C;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,SAAS,CAAA;IACzD,4CAA4C;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,SAAS,CAAA;CAC9C,GAAG,eAAe,CASlB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,kBAAkB,2BAA2B,CAAA;AAE1D;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gBAAgB,yBAAyB,CAAA;AAEtD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,YAAY;AACtB,+EAA+E;AAC7E;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAC3B,wEAAwE;GACtE;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE;AACzD;;;;;GAKG;GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAA;AAEzF;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,sEAAsE;IACtE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC,0EAA0E;IAC1E,QAAQ,CAAC,aAAa,CAAC,EAAE,eAAe,GAAG,SAAS,CAAA;IACpD,mEAAmE;IACnE,QAAQ,CAAC,aAAa,EAAE,eAAe,CAAA;IACvC,yEAAyE;IACzE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CACrC,GAAG,YAAY,CAOf"}
@@ -12,32 +12,39 @@
12
12
  */
13
13
  import { mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from 'node:fs';
14
14
  import { basename, dirname, join } from 'node:path';
15
+ import { isBackendIdSyntax } from './agent/backend-manifest.js';
15
16
  import { DATA_DIR } from './utils/paths.js';
16
- /** Kernels the TUI can run on (the Config.backend values). */
17
- export const KERNEL_IDS = ['dsh', 'claude', 'codex'];
18
- export function isKernelId(value) {
19
- return typeof value === 'string' && KERNEL_IDS.includes(value);
20
- }
21
17
  /**
22
- * Per-kernel facts: the picker label, the product a version belongs to, and
23
- * whether the host can install a missing kernel itself (the Claude SDK
24
- * wizard); the others only say how (their detection hint).
18
+ * The backends that ship inside this package, in picker order. They are the
19
+ * registry's seed and the vocabulary the launcher's messages use — **not** the
20
+ * validation source any more: since P0 D1 any syntactically valid id may name a
21
+ * plugin backend, and membership is decided by
22
+ * `src/dsh-adapter/backend-registry.ts` (which the launcher cannot import when
23
+ * it runs without compiled modules, hence the mirrored copy in `bin/dsh-tui.js`).
24
+ */
25
+ export const BUILTIN_BACKEND_IDS = ['dsh', 'claude', 'codex'];
26
+ /** The fallback every path lands on. `dsh` passes the syntax gate by
27
+ * construction and is always registered, so it needs no runtime check. */
28
+ export const DSH_BACKEND_ID = 'dsh';
29
+ /**
30
+ * The first half of the parse: trim, lowercase, id syntax. Anything else (a
31
+ * blank, a typo, `has:colon`, `a/b`) is undefined, which every caller reads as
32
+ * "no choice made". The second half — is it registered? — belongs to the
33
+ * registry, which is deliberately not imported here (this module is reachable
34
+ * from the UI, which may not import the adapter).
25
35
  */
26
- export const KERNEL_INFO = {
27
- dsh: { labelKey: 'kernel-label-dsh', product: 'dsh-core', installable: false },
28
- claude: { labelKey: 'kernel-label-claude', product: 'claude-code', installable: true },
29
- codex: { labelKey: 'kernel-label-codex', product: 'codex-cli', installable: false },
30
- };
31
- /** Brand names used by kernel chips and notices. */
32
- export function kernelDisplayName(id) {
33
- return id === 'dsh' ? 'DSH' : id === 'claude' ? 'Claude' : id === 'codex' ? 'Codex' : id;
36
+ export function parseBackendId(value) {
37
+ if (typeof value !== 'string')
38
+ return undefined;
39
+ const id = value.trim().toLowerCase();
40
+ return isBackendIdSyntax(id) ? id : undefined;
34
41
  }
35
42
  /** Keep only a valid backend value; anything else reads as no preference. */
36
43
  function parseKernelPrefs(parsed) {
37
44
  if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed))
38
45
  return {};
39
- const backend = parsed.backend;
40
- return isKernelId(backend) ? { backend } : {};
46
+ const backend = parseBackendId(parsed.backend);
47
+ return backend === undefined ? {} : { backend };
41
48
  }
42
49
  /** Read the preference; missing, broken or unreadable means none. Never throws. */
43
50
  export function readKernelPrefs(file = join(DATA_DIR, 'kernel.json')) {
@@ -87,15 +94,6 @@ export function writeKernelPrefs(data, file = join(DATA_DIR, 'kernel.json'), deb
87
94
  debug(`dsh-tui: kernel prefs write failed (${error instanceof Error ? error.message : String(error)})`);
88
95
  }
89
96
  }
90
- /** Same rules as dsh-adapter's normalizeBackendChoice (kept local so this
91
- * module does not import the adapter): trimmed, case-insensitive; empty or
92
- * unknown gives undefined. */
93
- function normalizeBackend(value) {
94
- if (typeof value !== 'string')
95
- return undefined;
96
- const id = value.trim().toLowerCase();
97
- return isKernelId(id) ? id : undefined;
98
- }
99
97
  /**
100
98
  * The kernel this one boot must land on, set by a kernel switch (restartTui's
101
99
  * backend option) and by the launcher's crash retry. Boot deletes it from
@@ -105,6 +103,21 @@ function normalizeBackend(value) {
105
103
  * config > env > remembered choice.
106
104
  */
107
105
  export const KERNEL_SWITCH_HANDOFF_ENV = 'DSH_TUI_BACKEND_HANDOFF';
106
+ /**
107
+ * The package's own entry, which hosts every kernel by default (routing in
108
+ * hostEntryRoute.ts). Kept here so src/update.ts does not pull that module in.
109
+ * `DSH_TUI_HOST_ENTRY=0` keeps every kernel on `dsh --profile`.
110
+ */
111
+ const HOST_ENTRY_ENV = 'DSH_TUI_HOST_ENTRY';
112
+ /** The entry's path, set by the launcher: every replacement
113
+ * relaunches through it (src/update.ts restartArgv). */
114
+ export const HOST_ENTRY_PATH_ENV = 'DSH_TUI_HOST_ENTRY_PATH';
115
+ export function hostEntryDisabled(env = process.env) {
116
+ return env[HOST_ENTRY_ENV] === '0';
117
+ }
118
+ /** Why the entry could not use the installed dsh; set by the entry, read and
119
+ * cleared once by the runtime (plugin.ts), also in a delegated `dsh --profile`. */
120
+ export const HOST_NOTICE_ENV = 'DSH_TUI_HOST_NOTICE';
108
121
  /**
109
122
  * The kernel boot runs on (plugin.ts backendChoice): a valid switch handoff
110
123
  * first, then the Config row, then DSH_TUI_BACKEND, then the remembered
@@ -113,14 +126,64 @@ export const KERNEL_SWITCH_HANDOFF_ENV = 'DSH_TUI_BACKEND_HANDOFF';
113
126
  * choice; an invalid handoff value is ignored. Pure.
114
127
  */
115
128
  export function resolveRememberedBackend(input) {
116
- if (isKernelId(input.handoff))
117
- return input.handoff;
118
- if (isKernelId(input.configured))
119
- return input.configured;
120
- const env = normalizeBackend(input.envRaw);
121
- if (env !== undefined)
129
+ const handoff = parseBackendId(input.handoff);
130
+ if (handoff !== undefined)
131
+ return handoff;
132
+ const configured = parseBackendId(input.configured);
133
+ if (configured !== undefined)
134
+ return configured;
135
+ const env = parseBackendId(input.envRaw);
136
+ if (env !== undefined && (input.envKnown === undefined || input.envKnown(env)))
122
137
  return env;
123
138
  if (input.envRaw !== undefined && input.envRaw.trim() !== '')
124
- return 'dsh';
125
- return input.memory ?? 'dsh';
139
+ return DSH_BACKEND_ID;
140
+ return input.memory ?? DSH_BACKEND_ID;
141
+ }
142
+ /**
143
+ * The backend a **derived** resume target was read from (launcher → boot handoff).
144
+ *
145
+ * `DSH_TUI_RESUME_SESSION` alone cannot be trusted across backends. The launcher
146
+ * derives a bare `--resume` target from the chosen backend's own
147
+ * `backends/<id>/prefs.json` (`envFromLastRun` does the same from `last-run.json`),
148
+ * and this boot may then land on a *different* backend: an uninstalled plugin id
149
+ * falls back to dsh (P0 D1), and an unset `DSH_TUI_BACKEND` follows the remembered
150
+ * kernel instead. Handing the id to whoever booted resumes the wrong backend's
151
+ * session, or fails on one that never heard of it. This variable records the
152
+ * source so the boot can refuse it.
153
+ *
154
+ * An id the user placed themselves (`--resume <id>`, a Config row, `/restart`)
155
+ * carries no mark — where it belongs is theirs to decide, and the boot only says
156
+ * what it knows. Boot deletes this from process.env as soon as it reads it,
157
+ * exactly like {@link KERNEL_SWITCH_HANDOFF_ENV}.
158
+ */
159
+ export const RESUME_BACKEND_ENV = 'DSH_TUI_RESUME_BACKEND';
160
+ /**
161
+ * Marks a boot the launcher started as the safe-mode **retry** (`dsh-tui safe`
162
+ * → option 1, and the first-run fallback that shares it).
163
+ *
164
+ * A retry derives its target from `last-run.json` — "the kernel and session that
165
+ * were running when the crash happened" — and the recorded kernel may no longer
166
+ * be in the registry, which is exactly the case {@link resolveResumeTarget}
167
+ * revokes. Failing the boot there would close the user's last way back, so a
168
+ * retry gets the tolerated branch instead: warn, then cold-start on the kernel
169
+ * that did open. The launcher sets it for the whole retry env, the boot deletes
170
+ * it as soon as it reads it (one-shot, like the mark above), and it never
171
+ * reaches the plugin protocol — `lastSession` and this handoff are implementation
172
+ * details, not a backend contract (roadmap §6 item 11).
173
+ */
174
+ export const RESUME_RETRY_ENV = 'DSH_TUI_RESUME_RETRY';
175
+ /**
176
+ * Whether a resume target may be handed to the backend this boot landed on. A
177
+ * derived target is usable only on the backend it came from; a revoked one is
178
+ * dropped rather than carried over, which is why the result hands the source back
179
+ * for the caller's refusal instead of returning nothing. Pure.
180
+ */
181
+ export function resolveResumeTarget(input) {
182
+ const sessionId = input.sessionId?.trim();
183
+ if (sessionId === undefined || sessionId === '')
184
+ return { kind: 'none' };
185
+ if (input.sourceBackend === undefined || input.sourceBackend === input.backendChoice) {
186
+ return { kind: 'usable', sessionId };
187
+ }
188
+ return { kind: 'revoked', from: input.sourceBackend, fatal: input.retry !== true };
126
189
  }
@@ -15,6 +15,8 @@ export type InlineRow = {
15
15
  readonly width: number;
16
16
  /** The row continues the previous one (a wrap, not a source newline). */
17
17
  readonly continuation: boolean;
18
+ /** A separator omitted at a full row boundary; restore it on copy. */
19
+ readonly gap: boolean;
18
20
  };
19
21
  /** The placeholder run standing in for formula `index`, `columns` cells wide. */
20
22
  export declare function inlineMediaPlaceholder(index: number, columns: number): string;
@@ -1 +1 @@
1
- {"version":3,"file":"inline-layout.d.ts","sourceRoot":"","sources":["../../../src/math/inline-layout.ts"],"names":[],"mappings":"AAoBA,2EAA2E;AAC3E,eAAO,MAAM,gBAAgB,OAAS,CAAA;AAItC,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACxE;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAA;IACvC,uCAAuC;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,yEAAyE;IACzE,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;CAC/B,CAAA;AAED,iFAAiF;AACjF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAK7E;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,SAAS,EAAE,GAAG,SAAS,CA2CzB"}
1
+ {"version":3,"file":"inline-layout.d.ts","sourceRoot":"","sources":["../../../src/math/inline-layout.ts"],"names":[],"mappings":"AAoBA,2EAA2E;AAC3E,eAAO,MAAM,gBAAgB,OAAS,CAAA;AAItC,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACxE;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAA;IACvC,uCAAuC;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,yEAAyE;IACzE,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,sEAAsE;IACtE,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAA;CACtB,CAAA;AAED,iFAAiF;AACjF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAK7E;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,SAAS,EAAE,GAAG,SAAS,CAyCzB"}
@@ -5,15 +5,15 @@
5
5
  * its image (one private-use code point per formula, so neighbouring
6
6
  * formulas stay distinguishable), and the formatted paragraph is wrapped by
7
7
  * the same `wrapText` that <Text> uses. A run holds no spaces, so it wraps
8
- * as one unbreakable word: a formula never splits across rows, and a
9
- * paragraph with no formulas lays out exactly as it does in <Text>. Each
8
+ * as one unbreakable word: a formula never splits across rows. The display
9
+ * helper hides separators moved past a full row without changing row count. Each
10
10
  * wrapped row is then cut into ANSI-balanced text pieces (sliceAnsi re-opens
11
11
  * the styles and links a cut crosses) and the image slots between them.
12
12
  * Pure: no React, no terminal.
13
13
  */
14
14
  import stripAnsi from 'strip-ansi';
15
15
  import { stringWidth } from '../ink/stringWidth.js';
16
- import wrapText from '../ink/wrap-text.js';
16
+ import { wrapTextLines } from '../ink/wrap-text.js';
17
17
  import sliceAnsi from '../utils/sliceAnsi.js';
18
18
  /** First placeholder code point (Private Use Area, width 1). */
19
19
  const PLACEHOLDER_BASE = 0xe000;
@@ -39,9 +39,7 @@ export function layoutInlineMedia(formatted, width, columns) {
39
39
  return undefined;
40
40
  const seen = new Set();
41
41
  const rows = [];
42
- const wrapped = wrapText(formatted, width, 'wrap');
43
- const continuations = wrapContinuations(stripAnsi(formatted), stripAnsi(wrapped));
44
- for (const [lineIndex, line] of wrapped.split('\n').entries()) {
42
+ for (const { text: line, continuation, gap } of wrapTextLines(formatted, width)) {
45
43
  const pieces = [];
46
44
  const plain = stripAnsi(line);
47
45
  let column = 0;
@@ -80,27 +78,7 @@ export function layoutInlineMedia(formatted, width, columns) {
80
78
  if (!closeRun())
81
79
  return undefined;
82
80
  flushText(column);
83
- rows.push({ pieces, width: column, continuation: continuations[lineIndex] === true });
81
+ rows.push({ pieces, width: column, continuation, gap });
84
82
  }
85
83
  return seen.size === columns.length ? rows : undefined;
86
84
  }
87
- /**
88
- * For each line of `wrapped`, whether the newline before it was inserted by
89
- * wrapping (true) or was in `source` (false). wrapAnsi (trim off) only
90
- * inserts newlines, so walking both plain strings in step finds them.
91
- */
92
- function wrapContinuations(source, wrapped) {
93
- const result = [false];
94
- let at = 0;
95
- for (const char of wrapped) {
96
- if (char === '\n') {
97
- const inSource = source[at] === '\n';
98
- result.push(!inSource);
99
- if (inSource)
100
- at += 1;
101
- continue;
102
- }
103
- at += char.length;
104
- }
105
- return result;
106
- }
@@ -1,10 +1,8 @@
1
1
  /**
2
- * Pure derivation for the two-level `/model` picker: providers as top-level
3
- * groups, their models one level down, with a pinned "recently used"
4
- * pseudo-group first. Kept free of React/channel/i18n state so
5
- * `scripts/verify-model-picker-groups.mjs` can drive it headless; the
6
- * recents row's localized label is resolved at render time (its `label`
7
- * field is the {@link RECENTS_LABEL_PLACEHOLDER} sentinel).
2
+ * Pure derivation for the `/model` provider tabs, with a pinned
3
+ * "recently used" pseudo-provider first. Kept free of React/channel/i18n state so
4
+ * `scripts/verify-model-picker-groups.mjs` can drive it headless. Renderers
5
+ * derive the localized recents label from its provider key.
8
6
  *
9
7
  * @module dsh-tui/modelGroups
10
8
  */
@@ -15,14 +13,14 @@ import type { LlmModelInfo, LlmProviderInfo } from './adapter/ports/channel-view
15
13
  * never collide with a real route.
16
14
  */
17
15
  export declare const RECENTS_GROUP_PROVIDER = "__recents__";
18
- /** The recents row's raw label; renderers replace it with the localized one. */
16
+ /** Placeholder for pure group data; the UI labels recents by provider key. */
19
17
  export declare const RECENTS_LABEL_PLACEHOLDER = "__recent__";
20
18
  /** One recent-model reference (same shape as modelRecents' persisted ref). */
21
19
  export interface ModelRef {
22
20
  readonly provider: string;
23
21
  readonly id: string;
24
22
  }
25
- /** One top-level row: a provider route with its picker-facing identity. */
23
+ /** One provider tab with its picker-facing identity. */
26
24
  export interface ModelGroupRow {
27
25
  /** Harness route key (also the grouping key over `LlmModelInfo.provider`). */
28
26
  readonly provider: string;
@@ -33,7 +31,7 @@ export interface ModelGroupRow {
33
31
  }
34
32
  /**
35
33
  * The recent refs that the current catalog still lists, most-recent-first —
36
- * the second level of the recents group. Refs whose model vanished from the
34
+ * the model list of the recents tab. Refs whose model vanished from the
37
35
  * catalog (provider removed, or an OAuth provider signed out and
38
36
  * credential-gated away) drop out here, so the group never offers a row the
39
37
  * picker could not switch to.
@@ -42,31 +40,21 @@ export declare function recentCatalogModels(recents: readonly ModelRef[], models
42
40
  /**
43
41
  * Group a flat model catalog into provider rows, first-appearance order
44
42
  * (the registry's own listing order), labels resolved through
45
- * `providerInfos` with a route-key fallback. Recent refs (when supplied and
46
- * still catalogued) pin one extra pseudo-group at the top.
43
+ * `providerInfos` with a route-key fallback. Supplying recent refs pins an
44
+ * extra pseudo-group at the top, including an empty tab.
47
45
  */
48
46
  export declare function deriveModelGroups(models: readonly LlmModelInfo[], providerInfos: readonly LlmProviderInfo[], recents?: readonly ModelRef[]): readonly ModelGroupRow[];
49
- /** Where `/model` should open (or re-land after the fresh catalog arrives). */
47
+ /** Where `/model` should open. */
50
48
  export interface ModelPickerLanding {
51
- /**
52
- * The group to open *inside* — set only by the single-provider fast path,
53
- * where a one-row top level would be pure friction (and there are no
54
- * recents to pin). Multi-provider catalogs — and any catalog with recents
55
- * — land at the top level (`undefined`).
56
- */
49
+ /** Active provider tab; undefined only for an empty catalog without recents. */
57
50
  readonly group: string | undefined;
58
- /** Focus index within the landed level's rows. */
51
+ /** Focus index within that tab's model list. */
59
52
  readonly index: number;
60
53
  }
61
54
  /**
62
- * Compute the picker's landing: with a meaningful recents list pinned, focus
63
- * the recents row itself (its first entry is the most recently used model —
64
- * the likeliest destination); without recents, focus the current provider's
65
- * group. The single-provider fast path applies while recents carry no
66
- * navigation value — an empty list, or a lone entry that can only be the
67
- * current model (the picker seeds it): drilling straight into the only
68
- * provider's list beats a top level whose recents row duplicates it. Two or
69
- * more recents (or any multi-provider catalog) land at the top level.
55
+ * Open on the first recent model when the recents tab is present. Otherwise
56
+ * open the current provider and focus its current model, falling back to the
57
+ * first provider/model when the current route is absent.
70
58
  */
71
59
  export declare function modelPickerLanding(models: readonly LlmModelInfo[], currentProvider: string | undefined, currentModel: string | undefined, recents?: readonly ModelRef[]): ModelPickerLanding;
72
60
  //# sourceMappingURL=modelGroups.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"modelGroups.d.ts","sourceRoot":"","sources":["../../src/modelGroups.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAEpF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,gBAAgB,CAAA;AAEnD,gFAAgF;AAChF,eAAO,MAAM,yBAAyB,eAAe,CAAA;AAErD,8EAA8E;AAC9E,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CACpB;AAED,2EAA2E;AAC3E,MAAM,WAAW,aAAa;IAC5B,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,mFAAmF;IACnF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,SAAS,QAAQ,EAAE,EAC5B,MAAM,EAAE,SAAS,YAAY,EAAE,GAC9B,SAAS,YAAY,EAAE,CAUzB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,YAAY,EAAE,EAC/B,aAAa,EAAE,SAAS,eAAe,EAAE,EACzC,OAAO,CAAC,EAAE,SAAS,QAAQ,EAAE,GAC5B,SAAS,aAAa,EAAE,CAsB1B;AAED,+EAA+E;AAC/E,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,kDAAkD;IAClD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,YAAY,EAAE,EAC/B,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,OAAO,CAAC,EAAE,SAAS,QAAQ,EAAE,GAC5B,kBAAkB,CAiBpB"}
1
+ {"version":3,"file":"modelGroups.d.ts","sourceRoot":"","sources":["../../src/modelGroups.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAEpF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,gBAAgB,CAAA;AAEnD,8EAA8E;AAC9E,eAAO,MAAM,yBAAyB,eAAe,CAAA;AAErD,8EAA8E;AAC9E,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CACpB;AAED,wDAAwD;AACxD,MAAM,WAAW,aAAa;IAC5B,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,mFAAmF;IACnF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,SAAS,QAAQ,EAAE,EAC5B,MAAM,EAAE,SAAS,YAAY,EAAE,GAC9B,SAAS,YAAY,EAAE,CAUzB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,YAAY,EAAE,EAC/B,aAAa,EAAE,SAAS,eAAe,EAAE,EACzC,OAAO,CAAC,EAAE,SAAS,QAAQ,EAAE,GAC5B,SAAS,aAAa,EAAE,CAoB1B;AAED,kCAAkC;AAClC,MAAM,WAAW,kBAAkB;IACjC,gFAAgF;IAChF,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,gDAAgD;IAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,YAAY,EAAE,EAC/B,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,OAAO,CAAC,EAAE,SAAS,QAAQ,EAAE,GAC5B,kBAAkB,CAUpB"}
@@ -1,10 +1,8 @@
1
1
  /**
2
- * Pure derivation for the two-level `/model` picker: providers as top-level
3
- * groups, their models one level down, with a pinned "recently used"
4
- * pseudo-group first. Kept free of React/channel/i18n state so
5
- * `scripts/verify-model-picker-groups.mjs` can drive it headless; the
6
- * recents row's localized label is resolved at render time (its `label`
7
- * field is the {@link RECENTS_LABEL_PLACEHOLDER} sentinel).
2
+ * Pure derivation for the `/model` provider tabs, with a pinned
3
+ * "recently used" pseudo-provider first. Kept free of React/channel/i18n state so
4
+ * `scripts/verify-model-picker-groups.mjs` can drive it headless. Renderers
5
+ * derive the localized recents label from its provider key.
8
6
  *
9
7
  * @module dsh-tui/modelGroups
10
8
  */
@@ -14,11 +12,11 @@
14
12
  * never collide with a real route.
15
13
  */
16
14
  export const RECENTS_GROUP_PROVIDER = '__recents__';
17
- /** The recents row's raw label; renderers replace it with the localized one. */
15
+ /** Placeholder for pure group data; the UI labels recents by provider key. */
18
16
  export const RECENTS_LABEL_PLACEHOLDER = '__recent__';
19
17
  /**
20
18
  * The recent refs that the current catalog still lists, most-recent-first —
21
- * the second level of the recents group. Refs whose model vanished from the
19
+ * the model list of the recents tab. Refs whose model vanished from the
22
20
  * catalog (provider removed, or an OAuth provider signed out and
23
21
  * credential-gated away) drop out here, so the group never offers a row the
24
22
  * picker could not switch to.
@@ -40,8 +38,8 @@ export function recentCatalogModels(recents, models) {
40
38
  /**
41
39
  * Group a flat model catalog into provider rows, first-appearance order
42
40
  * (the registry's own listing order), labels resolved through
43
- * `providerInfos` with a route-key fallback. Recent refs (when supplied and
44
- * still catalogued) pin one extra pseudo-group at the top.
41
+ * `providerInfos` with a route-key fallback. Supplying recent refs pins an
42
+ * extra pseudo-group at the top, including an empty tab.
45
43
  */
46
44
  export function deriveModelGroups(models, providerInfos, recents) {
47
45
  const order = [];
@@ -60,23 +58,18 @@ export function deriveModelGroups(models, providerInfos, recents) {
60
58
  }));
61
59
  if (recents !== undefined) {
62
60
  const recentCount = recentCatalogModels(recents, models).length;
63
- if (recentCount > 0) {
64
- groups.unshift({ provider: RECENTS_GROUP_PROVIDER, label: RECENTS_LABEL_PLACEHOLDER, count: recentCount });
65
- }
61
+ groups.unshift({ provider: RECENTS_GROUP_PROVIDER, label: RECENTS_LABEL_PLACEHOLDER, count: recentCount });
66
62
  }
67
63
  return groups;
68
64
  }
69
65
  /**
70
- * Compute the picker's landing: with a meaningful recents list pinned, focus
71
- * the recents row itself (its first entry is the most recently used model —
72
- * the likeliest destination); without recents, focus the current provider's
73
- * group. The single-provider fast path applies while recents carry no
74
- * navigation value — an empty list, or a lone entry that can only be the
75
- * current model (the picker seeds it): drilling straight into the only
76
- * provider's list beats a top level whose recents row duplicates it. Two or
77
- * more recents (or any multi-provider catalog) land at the top level.
66
+ * Open on the first recent model when the recents tab is present. Otherwise
67
+ * open the current provider and focus its current model, falling back to the
68
+ * first provider/model when the current route is absent.
78
69
  */
79
70
  export function modelPickerLanding(models, currentProvider, currentModel, recents) {
71
+ if (recents !== undefined)
72
+ return { group: RECENTS_GROUP_PROVIDER, index: 0 };
80
73
  const providers = [];
81
74
  for (const model of models) {
82
75
  if (!providers.includes(model.provider))
@@ -84,14 +77,7 @@ export function modelPickerLanding(models, currentProvider, currentModel, recent
84
77
  }
85
78
  if (providers.length === 0)
86
79
  return { group: undefined, index: 0 };
87
- const recentCount = recents === undefined ? 0 : recentCatalogModels(recents, models).length;
88
- if (providers.length === 1 && recentCount <= 1) {
89
- const only = providers[0];
90
- const index = models.findIndex(model => model.provider === currentProvider && model.id === currentModel);
91
- return { group: only, index: index >= 0 ? index : 0 };
92
- }
93
- if (recentCount > 0)
94
- return { group: undefined, index: 0 };
95
- const groupIndex = providers.indexOf(currentProvider ?? '');
96
- return { group: undefined, index: groupIndex >= 0 ? groupIndex : 0 };
80
+ const group = providers.includes(currentProvider ?? '') ? currentProvider : providers[0];
81
+ const index = models.filter(model => model.provider === group).findIndex(model => model.id === currentModel && model.provider === currentProvider);
82
+ return { group, index: Math.max(0, index) };
97
83
  }
@@ -3,10 +3,11 @@
3
3
  * `~/.dsh-tui/model.json` (`provider` + `model` keys) so the choice survives
4
4
  * restarts — same pattern as agent-preset.json. The file is best-effort: a
5
5
  * missing/corrupt file or an incomplete route simply falls back to the
6
- * harness default. Explicit `provider`/`model` keys in cordis.yml win over
7
- * this preference (deployment choice over runtime preference, matching
8
- * activityFrames and agent-preset) — but only as a COMPLETE pair; the
9
- * atomic resolution itself lives in modelRoute.ts (issue #67).
6
+ * deployment default. This preference is the standing user choice and wins
7
+ * over explicit `provider`/`model` keys in cordis.yml, which are the
8
+ * deployment DEFAULT for the first run — but only as a COMPLETE pair, so a
9
+ * config route can never merge with half of this file; the atomic resolution
10
+ * itself lives in modelRoute.ts (issue #67).
10
11
  */
11
12
  /** One persisted model route: the provider route plus its model id. */
12
13
  export interface ModelPref {
@@ -1 +1 @@
1
- {"version":3,"file":"modelPrefs.d.ts","sourceRoot":"","sources":["../../src/modelPrefs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,uEAAuE;AACvE,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAWlE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAkB,GAAG,SAAS,GAAG,SAAS,CAM5E;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,MAAkB,GAAG,OAAO,CAQhG"}
1
+ {"version":3,"file":"modelPrefs.d.ts","sourceRoot":"","sources":["../../src/modelPrefs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,uEAAuE;AACvE,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAWlE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAkB,GAAG,SAAS,GAAG,SAAS,CAM5E;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,MAAkB,GAAG,OAAO,CAQhG"}