@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,4 +1,4 @@
1
- import { t } from '../../../i18n.js';
1
+ import { codexText } from '../text.js';
2
2
  import { rec, str } from '../narrow.js';
3
3
  import { CLIENT, NOTIFY, SERVER_REQUEST } from '../protocol/index.js';
4
4
  import { REAL_CLOCK, RPC_ERROR } from '../rpc/client.js';
@@ -62,7 +62,7 @@ export function createCodexAuth(deps) {
62
62
  if (managedFailed)
63
63
  source = 'unknown';
64
64
  debug('codex auth: managed credential failed; injection stopped');
65
- note('codex-auth', 'error', t(key));
65
+ note('codex-auth', 'error', codexText(key));
66
66
  };
67
67
  const fresh = async (rejected) => {
68
68
  if (deps.credential === undefined)
@@ -156,7 +156,7 @@ export function createCodexAuth(deps) {
156
156
  if (access !== undefined) {
157
157
  const tokens = externalTokensOf(access);
158
158
  if (tokens === undefined) {
159
- note('codex-auth', 'warning', t('codex-auth-claims-missing'));
159
+ note('codex-auth', 'warning', codexText('codex-auth-claims-missing'));
160
160
  }
161
161
  else {
162
162
  epoch += 1;
@@ -175,7 +175,7 @@ export function createCodexAuth(deps) {
175
175
  }
176
176
  }
177
177
  if (source === 'missing')
178
- note('codex-auth-required', 'warning', t('codex-auth-login-needed'));
178
+ note('codex-auth-required', 'warning', codexText('codex-auth-login-needed'));
179
179
  };
180
180
  const runtime = {
181
181
  get source() { return source; },
@@ -213,14 +213,14 @@ export function createCodexAuth(deps) {
213
213
  await runtime.start();
214
214
  const account = await runtime.account();
215
215
  const labels = {
216
- channel: t('codex-auth-source-channel', { name: deps.channel?.name ?? '' }),
217
- 'dsh-auth': t('codex-auth-source-oauth'),
218
- 'codex-login': t('codex-auth-source-native'),
219
- 'api-key': t('codex-auth-source-api-key'),
220
- missing: t('codex-auth-source-missing'),
221
- unknown: t('codex-auth-source-unknown'),
216
+ channel: codexText('codex-auth-source-channel', { name: deps.channel?.name ?? '' }),
217
+ 'dsh-auth': codexText('codex-auth-source-oauth'),
218
+ 'codex-login': codexText('codex-auth-source-native'),
219
+ 'api-key': codexText('codex-auth-source-api-key'),
220
+ missing: codexText('codex-auth-source-missing'),
221
+ unknown: codexText('codex-auth-source-unknown'),
222
222
  };
223
- return { lines: [labels[source], ...(account.subscription === undefined ? [] : [t('codex-auth-plan', { plan: account.subscription })]), ...(route.host === undefined ? [] : [t('codex-auth-host', { host: route.host })]), ...(!route.firstParty || deps.externalAllowed === false ? [t('codex-auth-route-blocked')] : []), ...[...notices.values()].map(notice => notice.text)] };
223
+ return { lines: [labels[source], ...(account.subscription === undefined ? [] : [codexText('codex-auth-plan', { plan: account.subscription })]), ...(route.host === undefined ? [] : [codexText('codex-auth-host', { host: route.host })]), ...(!route.firstParty || deps.externalAllowed === false ? [codexText('codex-auth-route-blocked')] : []), ...[...notices.values()].map(notice => notice.text)] };
224
224
  },
225
225
  async account() {
226
226
  await readOwnAccount();
@@ -234,7 +234,7 @@ export function createCodexAuth(deps) {
234
234
  },
235
235
  async deviceLogin() {
236
236
  if (deps.channel !== undefined)
237
- throw new Error(t('codex-auth-channel-active'));
237
+ throw new Error(codexText('codex-auth-channel-active'));
238
238
  let finish;
239
239
  const done = new Promise(resolve => { finish = resolve; });
240
240
  const early = [];
@@ -290,14 +290,14 @@ export function createCodexAuth(deps) {
290
290
  catch {
291
291
  off();
292
292
  finish(false);
293
- throw new Error(t('codex-auth-login-failed'));
293
+ throw new Error(codexText('codex-auth-login-failed'));
294
294
  }
295
295
  },
296
296
  async apiKeyLogin(apiKey) {
297
297
  if (deps.channel !== undefined)
298
- throw new Error(t('codex-auth-channel-active'));
298
+ throw new Error(codexText('codex-auth-channel-active'));
299
299
  if (apiKey.trim() === '')
300
- throw new Error(t('codex-auth-api-key-required'));
300
+ throw new Error(codexText('codex-auth-api-key-required'));
301
301
  try {
302
302
  await hub.call(CLIENT.accountLoginStart, { type: 'apiKey', apiKey });
303
303
  disable();
@@ -307,7 +307,7 @@ export function createCodexAuth(deps) {
307
307
  source = 'api-key';
308
308
  }
309
309
  catch {
310
- throw new Error(t('codex-auth-login-failed'));
310
+ throw new Error(codexText('codex-auth-login-failed'));
311
311
  }
312
312
  },
313
313
  };
@@ -1,7 +1,7 @@
1
1
  /** /login's three methods over the shared question UI. API-key answers go
2
2
  * directly to auth; events contain only the secret question and settlement. */
3
3
  import { randomUUID } from 'node:crypto';
4
- import { t } from '../../../i18n.js';
4
+ import { codexText } from '../text.js';
5
5
  import { CODEX_OAUTH_PROVIDER } from './external-tokens.js';
6
6
  export function createCodexAuthCapability(runtime, emit) {
7
7
  const pending = new Map();
@@ -32,15 +32,15 @@ export function createCodexAuthCapability(runtime, emit) {
32
32
  if (disposed)
33
33
  return;
34
34
  if (runtime.source === 'channel') {
35
- notice('warning', t('codex-auth-channel-active'));
35
+ notice('warning', codexText('codex-auth-channel-active'));
36
36
  return;
37
37
  }
38
38
  const methods = [
39
- ...(loginOAuth === undefined ? [] : [{ id: 'oauth', label: t('codex-login-oauth'), description: t('codex-login-oauth-desc') }]),
40
- { id: 'device', label: t('codex-login-device'), description: t('codex-login-device-desc') },
41
- { id: 'api-key', label: t('codex-login-api-key'), description: t('codex-login-api-key-storage') },
39
+ ...(loginOAuth === undefined ? [] : [{ id: 'oauth', label: codexText('codex-login-oauth'), description: codexText('codex-login-oauth-desc') }]),
40
+ { id: 'device', label: codexText('codex-login-device'), description: codexText('codex-login-device-desc') },
41
+ { id: 'api-key', label: codexText('codex-login-api-key'), description: codexText('codex-login-api-key-storage') },
42
42
  ];
43
- const selection = await ask({ header: 'Codex', question: t('codex-login-choose'), options: methods.map(({ label, description }) => ({ label, description })), hideCustomInput: true }).answer;
43
+ const selection = await ask({ header: 'Codex', question: codexText('codex-login-choose'), options: methods.map(({ label, description }) => ({ label, description })), hideCustomInput: true }).answer;
44
44
  const label = selection?.answers[0]?.selected[0];
45
45
  const method = methods.find(row => row.label === label)?.id;
46
46
  if (disposed || method === undefined)
@@ -48,26 +48,26 @@ export function createCodexAuthCapability(runtime, emit) {
48
48
  try {
49
49
  if (method === 'oauth') {
50
50
  if (!runtime.route.firstParty) {
51
- notice('warning', t('codex-auth-route-blocked'));
51
+ notice('warning', codexText('codex-auth-route-blocked'));
52
52
  return;
53
53
  }
54
54
  if (await loginOAuth?.() !== true || disposed)
55
55
  return;
56
56
  await runtime.reconnect();
57
- notice(runtime.source === 'dsh-auth' ? 'info' : 'error', t(runtime.source === 'dsh-auth' ? 'codex-login-success' : 'codex-auth-login-failed'));
57
+ notice(runtime.source === 'dsh-auth' ? 'info' : 'error', codexText(runtime.source === 'dsh-auth' ? 'codex-login-success' : 'codex-auth-login-failed'));
58
58
  return;
59
59
  }
60
60
  if (method === 'api-key') {
61
- const answers = await ask({ header: 'Codex', question: t('codex-login-api-key-prompt'), detail: t('codex-login-api-key-storage'), options: [], secret: true }).answer;
61
+ const answers = await ask({ header: 'Codex', question: codexText('codex-login-api-key-prompt'), detail: codexText('codex-login-api-key-storage'), options: [], secret: true }).answer;
62
62
  if (answers === undefined || disposed)
63
63
  return;
64
64
  const apiKey = answers.answers[0]?.custom;
65
65
  if (apiKey === undefined || apiKey.trim() === '') {
66
- notice('warning', t('codex-auth-api-key-required'));
66
+ notice('warning', codexText('codex-auth-api-key-required'));
67
67
  return;
68
68
  }
69
69
  await runtime.apiKeyLogin(apiKey);
70
- notice('info', t('codex-login-success'));
70
+ notice('info', codexText('codex-login-success'));
71
71
  return;
72
72
  }
73
73
  const device = await runtime.deviceLogin();
@@ -75,7 +75,7 @@ export function createCodexAuthCapability(runtime, emit) {
75
75
  await device.cancel();
76
76
  return;
77
77
  }
78
- const prompt = ask({ header: 'Codex', question: t('codex-login-device-code', { code: device.userCode }), detail: t('codex-login-device-wait'), link: device.verificationUrl, options: [{ label: t('codex-login-cancel') }], hideCustomInput: true });
78
+ const prompt = ask({ header: 'Codex', question: codexText('codex-login-device-code', { code: device.userCode }), detail: codexText('codex-login-device-wait'), link: device.verificationUrl, options: [{ label: codexText('codex-login-cancel') }], hideCustomInput: true });
79
79
  const outcome = await Promise.race([
80
80
  device.done.then(success => ({ kind: 'done', success })),
81
81
  prompt.answer.then(() => ({ kind: 'cancel' })),
@@ -84,11 +84,11 @@ export function createCodexAuthCapability(runtime, emit) {
84
84
  await device.cancel();
85
85
  else {
86
86
  prompt.withdraw();
87
- notice(outcome.success ? 'info' : 'error', t(outcome.success ? 'codex-login-success' : 'codex-auth-login-failed'));
87
+ notice(outcome.success ? 'info' : 'error', codexText(outcome.success ? 'codex-login-success' : 'codex-auth-login-failed'));
88
88
  }
89
89
  }
90
90
  catch {
91
- notice('error', t('codex-auth-login-failed'));
91
+ notice('error', codexText('codex-auth-login-failed'));
92
92
  }
93
93
  };
94
94
  return {
@@ -1,29 +1,12 @@
1
- /**
2
- * The Codex backend (docs/codex-backend-design.md §5.5): detection, opening
3
- * a thread (create or resume) on the process-wide app-server hub, and the
4
- * launcher's per-backend session markers.
5
- *
6
- * The child runs the user's own `codex` with the user's own `CODEX_HOME`
7
- * (D6): their config, instructions, MCP servers, provider and login apply
8
- * as in the official client, and threads are shared with it. dsh-tui's
9
- * choices (start mode, model, effort) travel per thread as request
10
- * parameters; nothing is written into Codex's configuration.
11
- */
12
1
  import type { AgentBackend, BackendHost, OpenTarget } from '../../agent/backend.js';
13
2
  import type { AgentSession } from '../../agent/session.js';
14
3
  import { type CodexAuthRuntime } from './auth/external-tokens.js';
15
4
  import { type CodexChannels, type CodexChannelsRuntime } from './channels.js';
16
- import type { ChannelTokenStore } from '../shared/channel-tokens.js';
17
5
  import { type Rec } from './narrow.js';
18
6
  import { type CodexPrefs } from './prefs.js';
19
7
  import { type CodexExecutable } from './rpc/binary.js';
20
8
  import { type CodexHub, type CodexHubDeps } from './rpc/hub.js';
21
9
  import { type RpcClock } from './rpc/client.js';
22
- /** Structural until the neutral BackendHost addition is merged; the shared
23
- * ChannelTokenStore interface is the real host read/write/erase/declared seam. */
24
- export type CodexBackendHost = BackendHost & {
25
- readonly tokenStore?: ChannelTokenStore;
26
- };
27
10
  export interface CodexRuntime {
28
11
  readonly hub: CodexHub;
29
12
  readonly release: () => void;
@@ -34,6 +17,8 @@ export interface CodexRuntime {
34
17
  readonly config?: Rec;
35
18
  readonly auth: CodexAuthRuntime;
36
19
  readonly channels: CodexChannelsRuntime;
20
+ /** Store identity captured from this child, not later process env changes. */
21
+ readonly catalogSource?: string;
37
22
  readonly startNotices?: readonly string[];
38
23
  /** Rejoin an idle native thread retained by the local daemon, if available. */
39
24
  readonly rejoinNativeDaemon?: () => Promise<CodexRuntime | undefined>;
@@ -49,9 +34,9 @@ export interface CodexRuntimeOptions {
49
34
  }
50
35
  /** Acquire the same platform runtime for open/resume/catalog. Tests replace
51
36
  * only the process, executable discovery and profile file, not the plumbing. */
52
- export declare function prepareCodexRuntime(target: OpenTarget, host: CodexBackendHost, options?: CodexRuntimeOptions): Promise<CodexRuntime>;
37
+ export declare function prepareCodexRuntime(target: OpenTarget, host: BackendHost, options?: CodexRuntimeOptions): Promise<CodexRuntime>;
53
38
  /** Open a native thread, rejoining its idle daemon writer on conflict. */
54
- export declare function openCodexBackendSession(target: OpenTarget, host: CodexBackendHost, options?: CodexRuntimeOptions & {
39
+ export declare function openCodexBackendSession(target: OpenTarget, host: BackendHost, options?: CodexRuntimeOptions & {
55
40
  readonly prefs?: CodexPrefs;
56
41
  }): Promise<AgentSession>;
57
42
  export declare const codexBackend: AgentBackend;
@@ -1 +1 @@
1
- {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../../../src/backends/codex/backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAI1D,OAAO,EAA0C,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAEzG,OAAO,EAAiD,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAC5H,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAGpE,OAAO,EAAuB,KAAK,GAAG,EAAE,MAAM,aAAa,CAAA;AAE3D,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AAC5D,OAAO,EAAyC,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAC7F,OAAO,EAAmB,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAoB,MAAM,cAAc,CAAA;AAClG,OAAO,EAAsB,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAMnE;kFACkF;AAClF,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,iBAAiB,CAAA;CAAE,CAAA;AAExF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAA;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,UAAU,EAAE,eAAe,GAAG;QAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACpE,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;IAC/B,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAA;IACvC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACzC,+EAA+E;IAC/E,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAAA;CACtE;AACD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,eAAe,GAAG;QAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACrE,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAA;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAA;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAA;CAC9B;AAED;gFACgF;AAChF,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,YAAY,CAAC,CA8G9I;AAKD,0EAA0E;AAC1E,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,GAAE,mBAAmB,GAAG;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAA;CAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAiBpL;AAED,eAAO,MAAM,YAAY,EAAE,YA6B1B,CAAA"}
1
+ {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../../../src/backends/codex/backend.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAG1D,OAAO,EAA0C,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAEzG,OAAO,EAAsE,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAGjJ,OAAO,EAAuB,KAAK,GAAG,EAAE,MAAM,aAAa,CAAA;AAE3D,OAAO,EAAoC,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AAC9E,OAAO,EAAyC,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAC7F,OAAO,EAAmB,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAoB,MAAM,cAAc,CAAA;AAClG,OAAO,EAAsB,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAMnE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAA;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,UAAU,EAAE,eAAe,GAAG;QAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACpE,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;IAC/B,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAA;IACvC,8EAA8E;IAC9E,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACzC,+EAA+E;IAC/E,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAAA;CACtE;AACD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,eAAe,GAAG;QAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACrE,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAA;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAA;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAA;CAC9B;AAED;gFACgF;AAChF,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,YAAY,CAAC,CA6IzI;AAmCD,0EAA0E;AAC1E,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,GAAE,mBAAmB,GAAG;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAA;CAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAoB/K;AAED,eAAO,MAAM,YAAY,EAAE,YAgD1B,CAAA"}
@@ -1,14 +1,25 @@
1
- import { t } from '../../i18n.js';
2
- import { installedTuiVersion } from '../../update.js';
1
+ /**
2
+ * The Codex backend (docs/codex-backend-design.md §5.5): detection, opening
3
+ * a thread (create or resume) on the process-wide app-server hub, and the
4
+ * launcher's per-backend session markers.
5
+ *
6
+ * The child runs the user's own `codex` with the user's own `CODEX_HOME`
7
+ * (D6): their config, instructions, MCP servers, provider and login apply
8
+ * as in the official client, and threads are shared with it. dsh-tui's
9
+ * choices (start mode, model, effort) travel per thread as request
10
+ * parameters; nothing is written into Codex's configuration.
11
+ */
12
+ import { isAbsolute, normalize } from 'node:path';
13
+ import { codexLocale, codexText, installCodexLocale } from './text.js';
3
14
  import { CODEX_BACKEND_ID, CODEX_BACKEND_LABEL, codexResumeCommand, codexVersionSupported, MIN_CODEX_VERSION } from './contract.js';
4
15
  import { acquireCodexAuth, CODEX_OAUTH_PROVIDER } from './auth/external-tokens.js';
5
16
  import { codexAuthRoute } from './auth/route.js';
6
- import { createCodexChannelsRuntime, fileCodexChannels } from './channels.js';
17
+ import { createCodexChannelsRuntime, fileCodexChannels, memoryCodexChannels } from './channels.js';
7
18
  import { createCodexCatalog } from './catalog.js';
8
- import { detectCodex } from './detect.js';
19
+ import { codexHomeDir, detectCodex } from './detect.js';
9
20
  import { errorText, rec, str } from './narrow.js';
10
21
  import { CLIENT } from './protocol/index.js';
11
- import { fileCodexPrefs } from './prefs.js';
22
+ import { fileCodexPrefs, memoryCodexPrefs } from './prefs.js';
12
23
  import { buildCodexEnv, resolveCodexExecutable } from './rpc/binary.js';
13
24
  import { acquireCodexHub } from './rpc/hub.js';
14
25
  import { rpcCode, RPC_ERROR } from './rpc/client.js';
@@ -21,10 +32,10 @@ export async function prepareCodexRuntime(target, host, options = {}) {
21
32
  const env = options.env ?? process.env;
22
33
  const executable = options.executable ?? await resolveCodexExecutable(env);
23
34
  if (executable === undefined)
24
- throw new Error(t('codex-not-installed'));
35
+ throw new Error(codexText('codex-not-installed'));
25
36
  if (!codexVersionSupported(executable.version))
26
- throw new Error(t('codex-too-old', { version: executable.version ?? '', min: MIN_CODEX_VERSION }));
27
- const channels = createCodexChannelsRuntime({ store: options.channels ?? fileCodexChannels(undefined, host.debug), tokens: host.tokenStore, env });
37
+ throw new Error(codexText('codex-too-old', { version: executable.version ?? '', min: MIN_CODEX_VERSION }));
38
+ const channels = createCodexChannelsRuntime({ store: options.channels ?? (host.dataDir === undefined ? memoryCodexChannels() : fileCodexChannels(host.dataDir, host.debug)), tokens: host.tokenStore, env });
28
39
  const launch = channels.launch();
29
40
  const credential = launch.provider === undefined ? host.oauthCredential?.(CODEX_OAUTH_PROVIDER) : undefined;
30
41
  let cwd = target.cwd ?? host.cwd;
@@ -37,7 +48,7 @@ export async function prepareCodexRuntime(target, host, options = {}) {
37
48
  debug: host.debug,
38
49
  stderr: line => { if (!STDERR_NOISE.some(pattern => pattern.test(line)))
39
50
  host.stderr?.(line); },
40
- clientVersion: installedTuiVersion() ?? 'dev',
51
+ clientVersion: host.appVersion ?? 'dev',
41
52
  ...options.hubDeps,
42
53
  };
43
54
  let hub = acquireCodexHub(settings, deps);
@@ -69,6 +80,34 @@ export async function prepareCodexRuntime(target, host, options = {}) {
69
80
  host.debug('codex: config/read failed; managed injection disabled');
70
81
  }
71
82
  }
83
+ // A provider in the user's own config can take its credential from an
84
+ // environment key (`env_key`, e.g. DEEPSEEK_API_KEY). When the launching
85
+ // environment does not export it but the DSH credential store declares
86
+ // it, inject it into the child: a stored key then works without an
87
+ // exported variable. The key joins `injectedEnvKeys`, so the hub
88
+ // fingerprint separates keyless and keyed children and a keyless hub is
89
+ // never reused for a session whose provider needs the key. A key nothing
90
+ // can supply is not a startup failure — Codex itself rejects each turn —
91
+ // so it is remembered and reported once at start instead.
92
+ let missingProviderEnvKey;
93
+ if (launch.provider === undefined) {
94
+ const providerId = str(config?.model_provider) || 'openai';
95
+ const providerEnvKey = str(rec(rec(config?.model_providers)?.[providerId])?.env_key);
96
+ if (providerEnvKey !== undefined && providerEnvKey !== '' && (settings.env[providerEnvKey] ?? '') === '') {
97
+ const stored = host.tokenStore?.read(providerEnvKey);
98
+ if (stored !== undefined) {
99
+ release();
100
+ settings = { ...settings, env: { ...settings.env, [providerEnvKey]: stored }, injectedEnvKeys: [...(settings.injectedEnvKeys ?? []), providerEnvKey] };
101
+ hub = acquireCodexHub(settings, deps);
102
+ release = hub.retain();
103
+ await hub.ready;
104
+ host.debug(`codex: provider env ${providerEnvKey} resolved from the DSH credential store`);
105
+ }
106
+ else {
107
+ missingProviderEnvKey = { provider: providerId, env: providerEnvKey };
108
+ }
109
+ }
110
+ }
72
111
  const route = codexAuthRoute(config, env, launch.provider !== undefined);
73
112
  const externalAllowed = settings.credentialMode === 'external' && route.firstParty;
74
113
  if (settings.credentialMode === 'external' && !externalAllowed) {
@@ -89,9 +128,13 @@ export async function prepareCodexRuntime(target, host, options = {}) {
89
128
  debug: host.debug,
90
129
  });
91
130
  await auth.start();
92
- let startNotices;
131
+ // Codex rejects every turn of a provider whose env key is unset: name the
132
+ // reason once at start instead of leaving a bare turn failure behind.
133
+ let startNotices = missingProviderEnvKey === undefined || route.firstParty
134
+ ? undefined
135
+ : [codexText('codex-provider-env-key-missing', { provider: missingProviderEnvKey.provider, env: missingProviderEnvKey.env })];
93
136
  if (auth.managedFailed) {
94
- startNotices = [t('codex-auth-login-failed')];
137
+ startNotices = [...(startNotices ?? []), codexText('codex-auth-login-failed')];
95
138
  // Only an already-observed startup failure takes this path. No logout:
96
139
  // a different process starts clean on the user's native credentials.
97
140
  release();
@@ -140,28 +183,59 @@ export async function prepareCodexRuntime(target, host, options = {}) {
140
183
  }
141
184
  }
142
185
  };
143
- return { hub, release, cwd, executable, config, auth, channels, ...(startNotices === undefined ? {} : { startNotices }), ...(rejoinNativeDaemon === undefined ? {} : { rejoinNativeDaemon }) };
186
+ return { hub, release, cwd, executable, config, auth, channels, catalogSource: catalogSource(settings.env, hub.info?.codexHome), ...(startNotices === undefined ? {} : { startNotices }), ...(rejoinNativeDaemon === undefined ? {} : { rejoinNativeDaemon }) };
144
187
  }
145
188
  catch (error) {
146
189
  release();
147
190
  host.debug(`codex: app-server start failed (${errorText(error)})`);
148
- throw new Error(t('codex-start-failed', { err: errorText(error) }), { cause: error });
191
+ throw new Error(codexText('codex-start-failed', { err: errorText(error) }), { cause: error });
149
192
  }
150
193
  }
151
194
  let catalogHost;
152
- const catalogPrefs = fileCodexPrefs();
195
+ let catalogRuntime;
196
+ function catalogSource(env = process.env, actualHome) {
197
+ const home = actualHome ?? codexHomeDir(env);
198
+ const sqlite = env.CODEX_SQLITE_HOME;
199
+ if (!isAbsolute(home) || (sqlite !== undefined && sqlite !== '' && !isAbsolute(sqlite)))
200
+ return undefined;
201
+ return JSON.stringify(['codex', normalize(home), sqlite ? normalize(sqlite) : null]);
202
+ }
203
+ function rememberCatalogRuntime(runtime, host) {
204
+ const source = runtime.catalogSource;
205
+ if (source !== undefined)
206
+ catalogRuntime = { source, host, hub: runtime.hub };
207
+ }
208
+ /** The prefs store of the captured host, or undefined when no host has been
209
+ * seen yet (see {@link catalogHost}). Built lazily: a module-level call would
210
+ * resolve a directory before any host exists to name one (D2). */
211
+ const catalogPrefs = () => {
212
+ const dir = catalogHost?.dataDir;
213
+ const host = catalogHost;
214
+ return dir === undefined || host === undefined ? undefined : fileCodexPrefs(dir, message => host.debug(message));
215
+ };
216
+ /** Remember the host of the most recent detect / open: the catalog's only way
217
+ * to reach this backend's own directory without a host parameter, and where
218
+ * this backend's copy takes its language from (read live, so a `/lang`
219
+ * switch applies to the next string). */
220
+ const rememberHost = (host) => {
221
+ catalogHost = host;
222
+ installCodexLocale(host.locale);
223
+ };
153
224
  /** Open a native thread, rejoining its idle daemon writer on conflict. */
154
225
  export async function openCodexBackendSession(target, host, options = {}) {
155
- catalogHost = host;
226
+ rememberHost(host);
156
227
  const runtime = await prepareCodexRuntime(target, host, options);
157
228
  const open = (active) => openCodexSession({
158
229
  ...active, target,
159
- prefs: options.prefs ?? fileCodexPrefs(undefined, host.debug),
160
- host: { debug: host.debug },
230
+ prefs: options.prefs ?? (host.dataDir === undefined ? memoryCodexPrefs() : fileCodexPrefs(host.dataDir, host.debug)),
231
+ host: { debug: host.debug, locale: host.locale },
161
232
  doctor: { get bubblewrapMissing() { return active.hub.bubblewrapMissing; } },
162
233
  });
163
234
  try {
164
- return await open(runtime);
235
+ const session = await open(runtime);
236
+ if (options.env === undefined && options.executable === undefined)
237
+ rememberCatalogRuntime(runtime, host);
238
+ return session;
165
239
  }
166
240
  catch (error) {
167
241
  const cause = error instanceof Error ? error.cause : undefined;
@@ -176,18 +250,37 @@ export async function openCodexBackendSession(target, host, options = {}) {
176
250
  export const codexBackend = {
177
251
  id: CODEX_BACKEND_ID,
178
252
  descriptor: { label: CODEX_BACKEND_LABEL },
179
- detect: (host) => { catalogHost = host; return detectCodex(host); },
253
+ detect: (host) => { rememberHost(host); return detectCodex(host); },
180
254
  catalog: createCodexCatalog({
181
- acquire: cwd => {
182
- const host = catalogHost ?? { cwd: process.cwd(), debug: () => undefined, warn: () => undefined };
183
- return prepareCodexRuntime({ kind: 'create', cwd: cwd ?? host.cwd }, host);
255
+ acquire: async (cwd) => {
256
+ // Before detect/open supplies a host, keep stores in memory and use
257
+ // this backend's locale without guessing a host data directory.
258
+ const host = catalogHost ?? { cwd: process.cwd(), debug: () => undefined, warn: () => undefined, locale: codexLocale };
259
+ catalogHost = host;
260
+ const source = catalogSource();
261
+ const known = catalogRuntime;
262
+ // Metadata listing needs the native store, not another executable probe,
263
+ // config read or auth startup. Borrow the already-running session hub.
264
+ if (known !== undefined && known.source === source && known.host === host && known.hub.state !== 'closed' && known.hub.state !== 'failed') {
265
+ return { hub: known.hub, release: known.hub.retain() };
266
+ }
267
+ const runtime = await prepareCodexRuntime({ kind: 'create', cwd: cwd ?? host.cwd }, host);
268
+ rememberCatalogRuntime(runtime, host);
269
+ return runtime;
184
270
  },
185
271
  cwd: () => catalogHost?.cwd ?? process.cwd(),
186
- lastUsed: () => catalogPrefs.read().lastUsed ?? {},
272
+ lastUsed: () => catalogPrefs()?.read().lastUsed ?? {},
273
+ snapshotKey: catalogSource,
187
274
  }),
188
275
  launch: {
189
- sessionPrefs: debug => {
190
- const prefs = fileCodexPrefs(undefined, debug);
276
+ // `host` replaces the old `debug` parameter (B-3 widened
277
+ // `AgentBackend.launch.sessionPrefs`). The launcher asks before a session
278
+ // exists, so this store is built from the host it is handed; a host that
279
+ // hands over no directory keeps nothing — there is simply no remembered
280
+ // session to resume (D-3's feature-detect, never a path this backend
281
+ // guessed — D2).
282
+ sessionPrefs: host => {
283
+ const prefs = host.dataDir === undefined ? memoryCodexPrefs() : fileCodexPrefs(host.dataDir, host.debug);
191
284
  return {
192
285
  lastSession: () => prefs.read().lastSession,
193
286
  setLastSession: threadId => { prefs.write({ lastSession: threadId }); },
@@ -1,5 +1,5 @@
1
1
  import type { SessionCatalog } from '../../agent/backend.js';
2
- import type { PreviewEntry, SessionSummary } from '../../adapter/ports/channel-session.js';
2
+ import type { PreviewEntry, SessionSummary } from '../../agent/index.js';
3
3
  import type { CodexHub } from './rpc/hub.js';
4
4
  export interface CodexCatalogDeps {
5
5
  acquire(cwd?: string): Promise<{
@@ -8,6 +8,7 @@ export interface CodexCatalogDeps {
8
8
  }>;
9
9
  cwd(): string;
10
10
  lastUsed?(): Readonly<Record<string, number>>;
11
+ snapshotKey?(): string | undefined;
11
12
  }
12
13
  /** Metadata only. Absence of preview text is not proof of an empty thread. */
13
14
  export declare function codexSessionSummary(value: unknown, lastUsed?: Readonly<Record<string, number>>): SessionSummary | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../../src/backends/codex/catalog.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAoB,MAAM,wBAAwB,CAAA;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAA;AAM1F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAE5C,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC,CAAA;IACtG,GAAG,IAAI,MAAM,CAAA;IACb,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAC9C;AAKD,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,GAAG,cAAc,GAAG,SAAS,CAqB/H;AAED,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,EAAE,KAAK,SAAgB,GAAG,YAAY,EAAE,CAkBpG;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,cAAc,CAwDzE"}
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../../src/backends/codex/catalog.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAoB,MAAM,wBAAwB,CAAA;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAMxE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAE5C,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC,CAAA;IACtG,GAAG,IAAI,MAAM,CAAA;IACb,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAC7C,WAAW,CAAC,IAAI,MAAM,GAAG,SAAS,CAAA;CACnC;AAMD,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,GAAG,cAAc,GAAG,SAAS,CAqB/H;AAED,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,EAAE,KAAK,SAAgB,GAAG,YAAY,EAAE,CAkBpG;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,cAAc,CAgGzE"}
@@ -1,13 +1,14 @@
1
1
  /** The native app-server catalog: no rollout/sqlite parsing or second index.
2
2
  * Each bounded operation borrows the same hub and releases it in finally. */
3
3
  import { basename } from 'node:path';
4
- import { t } from '../../i18n.js';
4
+ import { codexText } from './text.js';
5
5
  import { CODEX_BACKEND_ID } from './contract.js';
6
6
  import { arr, num, rec, str, text } from './narrow.js';
7
7
  import { CLIENT } from './protocol/index.js';
8
8
  import { rpcCode, RPC_ERROR } from './rpc/client.js';
9
9
  const LIST_LIMIT = 500;
10
10
  const LIST_PAGE = 200;
11
+ const FIRST_PAGE = 32;
11
12
  const PREVIEW_LIMIT = 6;
12
13
  /** Metadata only. Absence of preview text is not proof of an empty thread. */
13
14
  export function codexSessionSummary(value, lastUsed = {}) {
@@ -44,7 +45,7 @@ export function codexPreviewEntries(turns, limit = PREVIEW_LIMIT) {
44
45
  if (item?.type === 'userMessage') {
45
46
  const content = arr(item.content).map(rec);
46
47
  const first = content.find(block => block?.type === 'text');
47
- const body = text(first?.text) ?? (content.some(block => block?.type === 'image' || block?.type === 'localImage') ? t('codex-preview-image') : undefined);
48
+ const body = text(first?.text) ?? (content.some(block => block?.type === 'image' || block?.type === 'localImage') ? codexText('codex-preview-image') : undefined);
48
49
  if (body !== undefined)
49
50
  entries.push({ role: 'user', text: body, at: at === undefined ? undefined : at * 1000 });
50
51
  }
@@ -67,29 +68,73 @@ export function createCodexCatalog(deps) {
67
68
  };
68
69
  return {
69
70
  deleteAction: 'archive',
70
- list(scope = {}) {
71
+ ...(deps.snapshotKey === undefined ? {} : { snapshotKey: deps.snapshotKey }),
72
+ list(scope = {}, onPartial) {
71
73
  const cwd = scope.allProjects === true ? undefined : scope.cwd ?? deps.cwd();
72
74
  return borrow(cwd, async (hub) => {
73
75
  const rows = new Map();
76
+ const initial = new Map();
74
77
  let cursor;
75
78
  let scanned = 0;
76
79
  const seen = new Set();
77
- // The row budget also bounds the number of empty/malformed pages.
78
- for (let page = 0; page < Math.ceil(LIST_LIMIT / LIST_PAGE) && scanned < LIST_LIMIT; page += 1) {
79
- const answer = rec(await hub.call(CLIENT.threadList, { limit: Math.min(LIST_PAGE, LIST_LIMIT - scanned), sortKey: 'recency_at', sortDirection: 'desc', archived: false, modelProviders: [], ...(cwd === undefined ? {} : { cwd }), ...(cursor === undefined ? {} : { cursor }) }));
80
- const data = arr(answer?.data);
81
- scanned += data.length;
82
- for (const raw of data.slice(0, LIST_LIMIT - rows.size)) {
83
- const row = codexSessionSummary(raw, deps.lastUsed?.());
84
- if (row !== undefined && row.kind.kind !== 'subagent')
85
- rows.set(row.id, row);
80
+ // Read file-backed preferences once, rather than synchronously reading
81
+ // and parsing them for every thread in every page.
82
+ const used = deps.lastUsed?.();
83
+ const params = { sortKey: 'recency_at', sortDirection: 'desc', archived: false, modelProviders: [], ...(cwd === undefined ? {} : { cwd }) };
84
+ const publish = () => {
85
+ onPartial?.([...new Map([...initial, ...rows]).values()].sort((a, b) => b.updatedAt - a.updatedAt));
86
+ };
87
+ const initialAbort = new AbortController();
88
+ let finished = false;
89
+ let firstPage;
90
+ if (onPartial !== undefined) {
91
+ // The DB shortcut must not delay discovery of new rollout files.
92
+ // Repaired rows win even if the DB response arrives later.
93
+ firstPage = hub.call(CLIENT.threadList, { ...params, limit: FIRST_PAGE, useStateDbOnly: true }, { timeoutMs: 1000, signal: initialAbort.signal }).then(answer => {
94
+ if (finished)
95
+ return;
96
+ for (const raw of arr(rec(answer)?.data)) {
97
+ const row = codexSessionSummary(raw, used);
98
+ if (row !== undefined && row.kind.kind !== 'subagent')
99
+ initial.set(row.id, row);
100
+ }
101
+ if (initial.size > 0)
102
+ publish();
103
+ }, () => { });
104
+ // Attach a rejection handler now; publication errors are rethrown
105
+ // by the final await after the other pending RPC has settled.
106
+ void firstPage.catch(() => { });
107
+ }
108
+ try {
109
+ // Servers may cap pages below our requested size. Bound empty pages
110
+ // separately, rather than stopping after three capped pages.
111
+ for (let page = 0; page < Math.ceil(LIST_LIMIT / FIRST_PAGE) && scanned < LIST_LIMIT; page += 1) {
112
+ const limit = page === 0 && onPartial !== undefined ? FIRST_PAGE : LIST_PAGE;
113
+ const answer = rec(await hub.call(CLIENT.threadList, { ...params, limit: Math.min(limit, LIST_LIMIT - scanned), ...(cursor === undefined ? {} : { cursor }) }));
114
+ const data = arr(answer?.data);
115
+ scanned += data.length;
116
+ for (const raw of data.slice(0, LIST_LIMIT - rows.size)) {
117
+ const row = codexSessionSummary(raw, used);
118
+ if (row !== undefined && row.kind.kind !== 'subagent')
119
+ rows.set(row.id, row);
120
+ }
121
+ // Progress is cumulative; repaired rows supersede the DB metadata,
122
+ // and only the resolved result may drop unconfirmed initial IDs.
123
+ publish();
124
+ cursor = text(answer?.nextCursor);
125
+ if (cursor === undefined || seen.has(cursor))
126
+ break;
127
+ seen.add(cursor);
86
128
  }
87
- cursor = text(answer?.nextCursor);
88
- if (cursor === undefined || seen.has(cursor))
89
- break;
90
- seen.add(cursor);
129
+ return [...rows.values()].sort((a, b) => b.updatedAt - a.updatedAt).slice(0, LIST_LIMIT);
130
+ }
131
+ finally {
132
+ finished = true;
133
+ initialAbort.abort();
134
+ // Keep the runtime borrowed until the speculative DB request has
135
+ // settled; it can never publish after completion or failure.
136
+ await firstPage;
91
137
  }
92
- return [...rows.values()].sort((a, b) => b.updatedAt - a.updatedAt).slice(0, LIST_LIMIT);
93
138
  });
94
139
  },
95
140
  info(sessionId, cwd) {
@@ -120,7 +165,7 @@ export function createCodexCatalog(deps) {
120
165
  }
121
166
  catch (error) {
122
167
  if (rpcCode(error) === RPC_ERROR.invalidRequest && /active.*worker/iu.test(error instanceof Error ? error.message : ''))
123
- throw new Error(t('codex-archive-busy'));
168
+ throw new Error(codexText('codex-archive-busy'));
124
169
  throw error;
125
170
  }
126
171
  }),
@@ -1,5 +1,5 @@
1
1
  import type { SessionCapabilities } from '../../agent/capabilities.js';
2
- import { channelProfileSlug } from '../../channel/channel-slug.js';
2
+ import { channelProfileSlug } from '../shared/channel-slug.js';
3
3
  import { type ChannelTokenStore } from '../shared/channel-tokens.js';
4
4
  import { type Rec } from './narrow.js';
5
5
  export interface CodexChannelProfile {
@@ -43,8 +43,11 @@ export declare function validateCodexBaseUrl(value: string): string;
43
43
  export declare function parseCodexChannels(value: unknown): CodexChannelsData;
44
44
  export declare const activeProfileOf: (data: CodexChannelsData) => CodexChannelProfile | undefined;
45
45
  export declare const hasChannelConnection: (profile: CodexChannelProfile | undefined) => boolean;
46
- /** Same atomic/upsert/damaged-file semantics as the mature Claude store. */
47
- export declare function fileCodexChannels(dir?: string, debug?: (message: string) => void): CodexChannels;
46
+ /** The file-backed profiles under `<dir>` (the host's `dataDir` for this
47
+ * backend). The directory is required: a backend never picks a location of
48
+ * its own under the host's data directory (D2, B-3/B-5). Same
49
+ * atomic/upsert/damaged-file semantics as the mature Claude store. */
50
+ export declare function fileCodexChannels(dir: string, debug?: (message: string) => void): CodexChannels;
48
51
  export declare function memoryCodexChannels(initial?: CodexChannelsData): CodexChannels;
49
52
  /** The token only goes into the child environment, never an argv override. */
50
53
  export declare function codexChannelLaunch(profile: CodexChannelProfile | undefined, tokens?: ChannelTokenStore): CodexChannelLaunch;