@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 { errorText, rec, str } from '../narrow.js';
3
3
  import { CLIENT } from '../protocol/index.js';
4
4
  import { codexImageInputs } from './images.js';
@@ -18,8 +18,13 @@ export function userInputOf(input) {
18
18
  export function createInputQueue(deps) {
19
19
  /** The running turn (from its start answer or `turn/started`). */
20
20
  let activeTurnId;
21
+ /** Inline reviews can use a different id for items/completion than the
22
+ * one announced by `turn/started` (Codex 0.160.1). */
23
+ let reviewTurnId;
21
24
  /** A `turn/start` in flight: resolves with the turn id (undefined = it failed). */
22
25
  let starting;
26
+ /** Reviews announce their interrupt id separately from their request id. */
27
+ let resolveReviewStart;
23
28
  /** Inputs not sent yet (the client follow-up queue). */
24
29
  let queue = [];
25
30
  /** Sent with `turn/start`, not yet claimed by their user message. */
@@ -45,6 +50,13 @@ export function createInputQueue(deps) {
45
50
  deps.clock.clearTimeout(forceTimer);
46
51
  forceTimer = undefined;
47
52
  };
53
+ const settleReviewStart = (id) => {
54
+ if (resolveReviewStart === undefined)
55
+ return;
56
+ resolveReviewStart(id);
57
+ resolveReviewStart = undefined;
58
+ starting = undefined;
59
+ };
48
60
  /** Send one input as a new turn. */
49
61
  const startTurn = async (entry) => {
50
62
  started.set(entry.id, entry);
@@ -68,7 +80,7 @@ export function createInputQueue(deps) {
68
80
  deps.startFailed?.(error, overrides);
69
81
  started.delete(entry.id);
70
82
  resolveStart(undefined);
71
- const reason = t('codex-turn-start-failed', { err: errorText(error) });
83
+ const reason = codexText('codex-turn-start-failed', { err: errorText(error) });
72
84
  deps.debug(`codex: turn/start failed (${errorText(error)})`);
73
85
  deps.emit([pendingEvent({ discarded: [entry.id] })]);
74
86
  return { accepted: false, reason };
@@ -86,7 +98,7 @@ export function createInputQueue(deps) {
86
98
  return;
87
99
  void startTurn(next).then(result => {
88
100
  if (!result.accepted)
89
- deps.emit([{ type: 'notice', level: 'error', text: result.reason ?? t('codex-turn-start-failed', { err: '' }) }]);
101
+ deps.emit([{ type: 'notice', level: 'error', text: result.reason ?? codexText('codex-turn-start-failed', { err: '' }) }]);
90
102
  else
91
103
  drain();
92
104
  });
@@ -112,14 +124,16 @@ export function createInputQueue(deps) {
112
124
  queue.push(entry);
113
125
  if (!steerFallbackSaid) {
114
126
  steerFallbackSaid = true;
115
- deps.emit([{ type: 'notice', level: 'info', text: t('codex-steer-fallback') }]);
127
+ deps.emit([{ type: 'notice', level: 'info', text: codexText('codex-steer-fallback') }]);
116
128
  }
117
129
  drain();
118
130
  return { accepted: true };
119
131
  }
120
132
  };
121
- const interrupt = async () => {
122
- const turnId = activeTurnId ?? await starting;
133
+ const interrupt = async (waitForReviewStart = true) => {
134
+ // Dispose has already stopped notification delivery. It cannot wait for
135
+ // a review lifecycle id that only a notification could resolve.
136
+ const turnId = activeTurnId ?? (resolveReviewStart !== undefined && !waitForReviewStart ? undefined : await starting);
123
137
  if (turnId === undefined)
124
138
  return true;
125
139
  try {
@@ -134,8 +148,8 @@ export function createInputQueue(deps) {
134
148
  forceTimer = undefined;
135
149
  if (activeTurnId !== turnId)
136
150
  return;
137
- deps.emit([{ type: 'notice', level: 'warning', text: t('codex-cancel-forced') }]);
138
- deps.forceClose();
151
+ deps.emit([{ type: 'notice', level: 'warning', text: codexText('codex-cancel-forced') }]);
152
+ deps.forceClose(turnId, reviewTurnId);
139
153
  onTurnCompleted(turnId, true);
140
154
  }, deps.forceSettleMs);
141
155
  }
@@ -143,10 +157,12 @@ export function createInputQueue(deps) {
143
157
  };
144
158
  /** The turn ended: settle unclaimed inputs, then start the next queued one. */
145
159
  const onTurnCompleted = (turnId, interrupted) => {
146
- if (turnId !== undefined && activeTurnId !== undefined && turnId !== activeTurnId)
160
+ if (turnId !== undefined && activeTurnId !== undefined && turnId !== activeTurnId && turnId !== reviewTurnId)
147
161
  return;
148
162
  clearForceTimer();
163
+ settleReviewStart();
149
164
  activeTurnId = undefined;
165
+ reviewTurnId = undefined;
150
166
  const cause = cancelCause;
151
167
  cancelCause = undefined;
152
168
  const events = [];
@@ -184,14 +200,14 @@ export function createInputQueue(deps) {
184
200
  busy() { return activeTurnId !== undefined || starting !== undefined; },
185
201
  async submit(input, placement, wireInput) {
186
202
  if (deps.closed())
187
- throw new Error(t('codex-session-closed'));
203
+ throw new Error(codexText('codex-session-closed'));
188
204
  if (dead)
189
- throw new Error(t('codex-connection-dead'));
205
+ throw new Error(codexText('codex-connection-dead'));
190
206
  if ((input.images ?? []).length === 0 && (input.blocks ?? []).some(block => block.type === 'image'))
191
- throw new Error(t('codex-image-unreadable', { name: input.clientMessageId }));
207
+ throw new Error(codexText('codex-image-unreadable', { name: input.clientMessageId }));
192
208
  const pictureInputs = await codexImageInputs(input.images ?? []);
193
209
  if (deps.closed())
194
- throw new Error(t('codex-session-closed'));
210
+ throw new Error(codexText('codex-session-closed'));
195
211
  const entry = { id: input.clientMessageId, text: input.text, input: [...(wireInput ?? userInputOf(input)), ...pictureInputs], placement: placement === 'steer' ? 'steer' : 'followup' };
196
212
  if (offline) {
197
213
  queue.push(entry);
@@ -249,6 +265,28 @@ export function createInputQueue(deps) {
249
265
  },
250
266
  onTurnStarted(turnId) {
251
267
  activeTurnId = turnId;
268
+ settleReviewStart(turnId);
269
+ },
270
+ /** Reserve the turn before review/start reaches the server. The returned
271
+ * cleanup releases only this request's wait if its RPC fails. */
272
+ beginReview() {
273
+ const pending = new Promise(resolve => { resolveReviewStart = resolve; });
274
+ starting = pending;
275
+ return () => {
276
+ if (starting !== pending)
277
+ return;
278
+ settleReviewStart();
279
+ reviewTurnId = undefined;
280
+ cancelCause = undefined;
281
+ drain();
282
+ };
283
+ },
284
+ onReviewStarted(turnId) {
285
+ reviewTurnId = turnId;
286
+ // review/start's id cannot be used by turn/interrupt. Keep submissions
287
+ // queued and let an early Esc wait for the native lifecycle id.
288
+ if (activeTurnId === undefined && starting === undefined)
289
+ starting = new Promise(resolve => { resolveReviewStart = resolve; });
252
290
  },
253
291
  onTurnCompleted,
254
292
  /** Re-queue a rejection's reason as the next turn (D10). */
@@ -260,7 +298,9 @@ export function createInputQueue(deps) {
260
298
  connectionLost() {
261
299
  offline = true;
262
300
  clearForceTimer();
301
+ settleReviewStart();
263
302
  activeTurnId = undefined;
303
+ reviewTurnId = undefined;
264
304
  const lost = [...started.keys(), ...steered.keys()];
265
305
  started.clear();
266
306
  steered.clear();
@@ -284,9 +324,11 @@ export function createInputQueue(deps) {
284
324
  /** Dispose: forget everything, stop the timer. */
285
325
  close() {
286
326
  clearForceTimer();
327
+ settleReviewStart();
287
328
  queue = [];
288
329
  started.clear();
289
330
  steered.clear();
331
+ reviewTurnId = undefined;
290
332
  },
291
333
  /** Interrupt the running turn (best-effort, dispose path). */
292
334
  interrupt,
@@ -1,4 +1,4 @@
1
- import { t } from '../../../i18n.js';
1
+ import { codexText } from '../text.js';
2
2
  import { errorText } from '../narrow.js';
3
3
  import { PLAN_IMPLEMENTATION_PROMPT } from './prompts.js';
4
4
  export function createPlanReview(deps) {
@@ -15,13 +15,13 @@ export function createPlanReview(deps) {
15
15
  withdraw();
16
16
  if (plan.trim() === '')
17
17
  return;
18
- const yes = t('codex-plan-yes');
19
- const clear = t('codex-plan-clear');
20
- const stay = t('codex-plan-stay');
18
+ const yes = codexText('codex-plan-yes');
19
+ const clear = codexText('codex-plan-clear');
20
+ const stay = codexText('codex-plan-stay');
21
21
  const id = `codex-plan:${turnId}`;
22
22
  pending = { id, plan, yes, clear, stay };
23
23
  deps.emit([{ type: 'question.request', request: { requestId: id, questions: [{
24
- question: t('codex-plan-implement'), header: t('codex-mode-plan'), detail: plan,
24
+ question: codexText('codex-plan-implement'), header: codexText('codex-mode-plan'), detail: plan,
25
25
  options: [{ label: yes }, { label: clear }, { label: stay }],
26
26
  intent: { kind: 'plan-review', approve: yes, approveAlso: [clear], decline: stay },
27
27
  }] } }]);
@@ -38,7 +38,7 @@ export function createPlanReview(deps) {
38
38
  : selected === current.yes ? () => deps.implement()
39
39
  : answer?.custom?.trim() ? () => deps.followup(answer.custom.trim()) : undefined;
40
40
  if (action !== undefined)
41
- void action().catch(error => deps.emit([{ type: 'notice', level: 'error', key: 'codex-plan-action', text: t('codex-plan-action-failed', { error: errorText(error) }) }]));
41
+ void action().catch(error => deps.emit([{ type: 'notice', level: 'error', key: 'codex-plan-action', text: codexText('codex-plan-action-failed', { error: errorText(error) }) }]));
42
42
  },
43
43
  cancel(id) { if (pending?.id === id)
44
44
  withdraw(); },
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../../src/backends/codex/session/session.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAc,YAAY,EAAoD,MAAM,2BAA2B,CAAA;AAI3H,OAAO,EAAuC,KAAK,GAAG,EAAE,MAAM,cAAc,CAAA;AAwB5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAOhE,qEAAqE;AACrE,wBAAgB,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,GAAG,YAAY,CAkB7E;AAED,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAKpF;AAED;;qBAEqB;AACrB,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAwrBpF"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../../src/backends/codex/session/session.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAc,YAAY,EAAoD,MAAM,2BAA2B,CAAA;AAI3H,OAAO,EAAuC,KAAK,GAAG,EAAE,MAAM,cAAc,CAAA;AAyB5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAOhE,qEAAqE;AACrE,wBAAgB,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,GAAG,YAAY,CAkB7E;AAED,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAKpF;AAED;;qBAEqB;AACrB,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAuuBpF"}
@@ -20,8 +20,8 @@
20
20
  * detach and release the hub. Idempotent.
21
21
  */
22
22
  import { randomUUID } from 'node:crypto';
23
- import { t } from '../../../i18n.js';
24
- import { CODEX_BACKEND_ID, codexVersionDrift, VALIDATED_CODEX_VERSIONS } from '../contract.js';
23
+ import { codexText, installCodexLocale } from '../text.js';
24
+ import { CODEX_BACKEND_ID, codexVersionDrift, compareCodexVersions, MIN_CODEX_BEFORE_TURN_FORK_VERSION, parseCodexVersion, VALIDATED_CODEX_VERSIONS } from '../contract.js';
25
25
  import { CODEX_MODE_PARAMS, DEFAULT_CODEX_MODE, isCodexModeId, modeIdOf } from '../modes.js';
26
26
  import { arr, errorText, num, rec, str, text } from '../narrow.js';
27
27
  import { CLIENT, NOTIFY } from '../protocol/index.js';
@@ -34,6 +34,7 @@ import { rateLimitOf } from '../translate/usage.js';
34
34
  import { resolveCodexStartOptions } from '../prefs.js';
35
35
  import { createCodexAuthCapability } from '../auth/status.js';
36
36
  import { createApprovalBridge } from './approvals.js';
37
+ import { createAsyncQuestions } from './async-questions.js';
37
38
  import { createCodexControls } from './controls.js';
38
39
  import { createCodexCommands } from './commands.js';
39
40
  import { createPlanReview, PLAN_IMPLEMENTATION_PROMPT } from './plan-review.js';
@@ -73,15 +74,21 @@ export function openedThread(response, fallbackCwd) {
73
74
  export function openFailureText(error, threadId) {
74
75
  const message = errorText(error);
75
76
  if (/already has an active writer/iu.test(message))
76
- return t('codex-thread-busy', { id: threadId ?? '' });
77
+ return codexText('codex-thread-busy', { id: threadId ?? '' });
77
78
  if (threadId !== undefined && rpcCode(error) === RPC_ERROR.invalidRequest)
78
- return t('codex-resume-not-found', { id: threadId, err: message });
79
+ return codexText('codex-resume-not-found', { id: threadId, err: message });
79
80
  return message;
80
81
  }
81
82
  /** Open (create or resume) a thread and wrap it as a session. Throws a
82
83
  * user-facing sentence when the thread cannot be opened; the hub retain is
83
84
  * released then. */
84
85
  export async function openCodexSession(deps) {
86
+ // This backend's own copy follows the host's language (B-5): a session the
87
+ // host opened has already installed it in `detect()`/`open()`, and a caller
88
+ // that builds the deps itself (a regression fixture) says so here or keeps
89
+ // the documented `zh` fallback.
90
+ if (deps.host.locale !== undefined)
91
+ installCodexLocale(deps.host.locale);
85
92
  const { hub } = deps;
86
93
  const clock = deps.clock ?? REAL_CLOCK;
87
94
  const debug = deps.host.debug;
@@ -127,7 +134,7 @@ export async function openCodexSession(deps) {
127
134
  if (opened.threadId === '') {
128
135
  detach?.();
129
136
  deps.release();
130
- throw new Error(t('codex-open-failed', { err: 'no thread id' }));
137
+ throw new Error(codexText('codex-open-failed', { err: 'no thread id' }));
131
138
  }
132
139
  let threadId = opened.threadId;
133
140
  const ctx = createItemContext({ cwd: opened.cwd, debug, model: opened.model, ...(deps.now === undefined ? {} : { now: deps.now }) });
@@ -215,7 +222,14 @@ export async function openCodexSession(deps) {
215
222
  overrides: () => controls.turnOverrides(),
216
223
  startFailed: (error, overrides) => controls.turnFailed(error, overrides),
217
224
  closed: () => disposing || permanentlyLost,
218
- forceClose: () => { output.flush(); emit(live.forceClose({ kind: 'interrupted' })); },
225
+ forceClose: (turnId, reviewTurnId) => {
226
+ output.flush();
227
+ asyncQuestions.withdraw();
228
+ seenOf(turnId).ended = true;
229
+ if (reviewTurnId !== undefined)
230
+ seenOf(reviewTurnId).ended = true;
231
+ emit([...live.forceClose({ kind: 'interrupted' }), { type: 'session.status', status: 'idle' }]);
232
+ },
219
233
  clock,
220
234
  forceSettleMs: deps.forceSettleMs ?? DEFAULT_FORCE_SETTLE_MS,
221
235
  });
@@ -235,6 +249,7 @@ export async function openCodexSession(deps) {
235
249
  enqueueFollowup: (id, followup) => input.enqueueFollowup(id, followup),
236
250
  interruptTurn: () => { void input.interrupt(); },
237
251
  });
252
+ const asyncQuestions = createAsyncQuestions({ input, emit: events => emit(events, 'sync', true) });
238
253
  const activity = createCodexActivity({ clock, now: ctx.now, emit });
239
254
  const subagents = createCodexSubagents({ hub, cwd: opened.cwd, threadId: () => threadId, nextSeq: ctx.nextSeq, now: ctx.now, emit: (events, wake) => deliver(events, wake ?? 'sync'), debug });
240
255
  subagents.seed(replayHistory ?? []);
@@ -244,7 +259,7 @@ export async function openCodexSession(deps) {
244
259
  const submitText = async (text) => {
245
260
  const result = await input.submit({ text, clientMessageId: randomUUID() }, 'followup');
246
261
  if (!result.accepted)
247
- throw new Error(result.reason ?? t('codex-turn-start-failed', { err: '' }));
262
+ throw new Error(result.reason ?? codexText('codex-turn-start-failed', { err: '' }));
248
263
  };
249
264
  const controls = createCodexControls({
250
265
  hub, prefs: deps.prefs, ctx, settings, cwd: opened.cwd,
@@ -254,12 +269,27 @@ export async function openCodexSession(deps) {
254
269
  actualModel: id => deps.channels?.active()?.models?.[id] ?? id,
255
270
  });
256
271
  const sideQueries = createCodexSideQuery({ hub, settings, cwd: opened.cwd, clock, threadId: () => threadId, closed: () => disposing || permanentlyLost, debug });
272
+ const noteReviewStarted = (id) => {
273
+ // Completed and force-settled reviews may still send new item ids or a
274
+ // late review/start answer; neither may reopen the input wait gate.
275
+ if (seenTurns.get(id)?.ended !== true)
276
+ input.onReviewStarted(id);
277
+ };
257
278
  const commands = createCodexCommands({
258
279
  hub, ctx, cwd: opened.cwd, threadId: () => threadId, busy: () => input.busy(), emit,
259
280
  lastDiff: () => lastDiff, planSupported: () => controls.planSupported,
260
281
  setPlan: () => controls.capabilities.modes.set('plan'),
282
+ exitPlan: async () => {
283
+ // The same target the plan-review exits use: the permission preset that
284
+ // was active before Plan. Skip the write when Plan is already off —
285
+ // there is nothing to restore and `set` still issues a settings update.
286
+ if (controls.capabilities.modes.current() !== 'plan')
287
+ return;
288
+ await controls.capabilities.modes.set(settings.permissionMode ?? DEFAULT_CODEX_MODE);
289
+ },
261
290
  submit: (next, placement, wire) => input.submit(next, placement, wire),
262
- noteTurnStarted: id => input.onTurnStarted(id),
291
+ beginReview: () => input.beginReview(),
292
+ noteReviewStarted,
263
293
  });
264
294
  const planReview = createPlanReview({
265
295
  emit: events => emit(events, 'sync', true),
@@ -311,9 +341,10 @@ export async function openCodexSession(deps) {
311
341
  const response = rec(await hub.call(CLIENT.threadStart, { cwd: opened.cwd, ...resumeOverrides() })) ?? {};
312
342
  const next = openedThread(response, opened.cwd);
313
343
  if (next.threadId === '')
314
- throw new Error(t('codex-open-failed', { err: 'no thread id' }));
344
+ throw new Error(codexText('codex-open-failed', { err: 'no thread id' }));
315
345
  const previous = threadId;
316
346
  approvals.withdrawAll();
347
+ asyncQuestions.withdraw();
317
348
  authBridge?.withdrawAll();
318
349
  output.close();
319
350
  for (const unroute of childRoutes.values())
@@ -364,7 +395,7 @@ export async function openCodexSession(deps) {
364
395
  if (entry.kind === 'stderr' && /bubblewrap/iu.test(entry.message)) {
365
396
  bubblewrapWarned = true;
366
397
  if (process.platform === 'linux' && settings.permissionMode !== 'full-access')
367
- emit([{ type: 'notice', level: 'warning', key: 'codex-bwrap', text: t('codex-bwrap-warning') }]);
398
+ emit([{ type: 'notice', level: 'warning', key: 'codex-bwrap', text: codexText('codex-bwrap-warning') }]);
368
399
  }
369
400
  },
370
401
  notification(method, params) {
@@ -411,6 +442,7 @@ export async function openCodexSession(deps) {
411
442
  tasks.notification(method, params);
412
443
  if (goals.notification(method, params))
413
444
  return;
445
+ asyncQuestions.notification(method, params);
414
446
  commands.note(method);
415
447
  if (controls.note(method, params))
416
448
  return;
@@ -426,6 +458,8 @@ export async function openCodexSession(deps) {
426
458
  }
427
459
  case NOTIFY.itemStarted: {
428
460
  const item = rec(params.item);
461
+ if (item?.type === 'enteredReviewMode' && nativeTurn !== undefined)
462
+ noteReviewStarted(nativeTurn);
429
463
  const clientId = item?.type === 'userMessage' ? str(item.clientId) : undefined;
430
464
  if (clientId !== undefined) {
431
465
  const claimed = input.claim(clientId);
@@ -454,9 +488,13 @@ export async function openCodexSession(deps) {
454
488
  }
455
489
  if (method === NOTIFY.turnCompleted) {
456
490
  approvals.turnEnded();
491
+ asyncQuestions.withdraw();
457
492
  const turn = rec(params.turn);
458
493
  deliver([...before, ...events, { type: 'session.status', status: 'idle' }], wakeOf(method, events));
494
+ const activeTurnId = input.activeTurnId;
459
495
  input.onTurnCompleted(str(turn?.id), str(turn?.status) === 'interrupted');
496
+ if (activeTurnId !== undefined && input.activeTurnId !== activeTurnId)
497
+ seenOf(activeTurnId).ended = true;
460
498
  if (str(turn?.status) === 'completed' && settings.modeId === 'plan' && lastPlan !== undefined && approvals.size === 0 && !input.busy())
461
499
  planReview.offer(str(turn?.id) ?? ctx.turnId, lastPlan);
462
500
  return;
@@ -484,6 +522,7 @@ export async function openCodexSession(deps) {
484
522
  sideQueries.reset();
485
523
  permanentlyLost = permanent;
486
524
  approvals.withdrawAll();
525
+ asyncQuestions.withdraw();
487
526
  authBridge?.withdrawAll();
488
527
  activity.reset();
489
528
  planReview.withdraw();
@@ -494,7 +533,7 @@ export async function openCodexSession(deps) {
494
533
  // ever drain that queue, so parking forever would lie to the user.
495
534
  ...(permanent ? live.forceClose({ kind: 'error', message: errorText(error) }) : []),
496
535
  ...(permanent ? input.permanentLoss() : input.connectionLost()),
497
- { type: 'notice', level: permanent ? 'error' : 'warning', key: 'codex-connection', text: permanent ? t('codex-connection-failed', { err: errorText(error) }) : t('codex-connection-lost') },
536
+ { type: 'notice', level: permanent ? 'error' : 'warning', key: 'codex-connection', text: permanent ? codexText('codex-connection-failed', { err: errorText(error) }) : codexText('codex-connection-lost') },
498
537
  { type: 'session.status', status: !permanent && ctx.turnOpen ? 'running' : 'idle' },
499
538
  ]);
500
539
  },
@@ -530,8 +569,8 @@ export async function openCodexSession(deps) {
530
569
  permanentlyLost = true;
531
570
  rejoining = false;
532
571
  reconnectHeld.length = 0;
533
- emit([...live.forceClose({ kind: 'error', message: t('codex-reconnect-incomplete') }),
534
- { type: 'notice', level: 'warning', key: 'codex-connection', text: t('codex-reconnect-incomplete') },
572
+ emit([...live.forceClose({ kind: 'error', message: codexText('codex-reconnect-incomplete') }),
573
+ { type: 'notice', level: 'warning', key: 'codex-connection', text: codexText('codex-reconnect-incomplete') },
535
574
  { type: 'session.status', status: 'idle' }]);
536
575
  };
537
576
  while (cursor !== undefined && !atKnownTurn()) {
@@ -586,7 +625,7 @@ export async function openCodexSession(deps) {
586
625
  connected = true;
587
626
  if (active !== undefined)
588
627
  input.onTurnStarted(active);
589
- emit([{ type: 'notice', level: 'info', key: 'codex-connection', text: t('codex-reconnected') }, { type: 'session.status', status: active === undefined ? 'idle' : 'running' }]);
628
+ emit([{ type: 'notice', level: 'info', key: 'codex-connection', text: codexText('codex-reconnected') }, { type: 'session.status', status: active === undefined ? 'idle' : 'running' }]);
590
629
  for (const deliver of reconnectHeld.splice(0))
591
630
  deliver();
592
631
  await tasks.refresh();
@@ -610,7 +649,7 @@ export async function openCodexSession(deps) {
610
649
  reconnectHeld.length = 0;
611
650
  emit([...live.forceClose({ kind: 'error', message: errorText(error) }),
612
651
  ...input.permanentLoss(),
613
- { type: 'notice', level: 'error', key: 'codex-connection', text: t('codex-connection-failed', { err: errorText(error) }) },
652
+ { type: 'notice', level: 'error', key: 'codex-connection', text: codexText('codex-connection-failed', { err: errorText(error) }) },
614
653
  { type: 'session.status', status: 'idle' }]);
615
654
  });
616
655
  },
@@ -630,7 +669,7 @@ export async function openCodexSession(deps) {
630
669
  if (view !== undefined)
631
670
  events.push({ type: 'rate-limit', info: view });
632
671
  if (reached !== undefined)
633
- events.push({ type: 'notice', level: 'warning', key: 'codex-rate-limit', text: t('codex-rate-limit-reached', { kind: reached }) });
672
+ events.push({ type: 'notice', level: 'warning', key: 'codex-rate-limit', text: codexText('codex-rate-limit-reached', { kind: reached }) });
634
673
  emit(events);
635
674
  return;
636
675
  }
@@ -639,7 +678,7 @@ export async function openCodexSession(deps) {
639
678
  if (method === NOTIFY.configWarning && /bubblewrap/iu.test(summary)) {
640
679
  bubblewrapWarned = true;
641
680
  if (process.platform === 'linux' && settings.permissionMode !== 'full-access')
642
- emit([{ type: 'notice', level: 'warning', key: 'codex-bwrap', text: t('codex-bwrap-warning') }]);
681
+ emit([{ type: 'notice', level: 'warning', key: 'codex-bwrap', text: codexText('codex-bwrap-warning') }]);
643
682
  return;
644
683
  }
645
684
  const notice = warningNotice(method, params);
@@ -666,7 +705,7 @@ export async function openCodexSession(deps) {
666
705
  for (const notice of deps.startNotices ?? [])
667
706
  emit([{ type: 'notice', level: 'warning', text: notice }]);
668
707
  if (drift !== undefined)
669
- emit([{ type: 'notice', level: 'warning', key: 'codex-drift', text: t('codex-version-drift', { version: drift, validated: VALIDATED_CODEX_VERSIONS.join(', ') }) }]);
708
+ emit([{ type: 'notice', level: 'warning', key: 'codex-drift', text: codexText('codex-version-drift', { version: drift, validated: VALIDATED_CODEX_VERSIONS.join(', ') }) }]);
670
709
  emit([{ type: 'mode.changed', modeId: opened.modeId }], 'none');
671
710
  const rememberedColor = deps.prefs.read().colors?.[threadId];
672
711
  if (rememberedColor !== undefined)
@@ -712,11 +751,11 @@ export async function openCodexSession(deps) {
712
751
  async fork(anchor, title) {
713
752
  const lastTurnId = anchor === undefined ? undefined : ctx.anchorTurns.get(anchor) ?? str(history.turns.find(turn => arr(turn.items).some(item => str(rec(item)?.id) === anchor))?.id);
714
753
  if (anchor !== undefined && lastTurnId === undefined)
715
- throw new Error(t('codex-anchor-missing'));
754
+ throw new Error(codexText('codex-anchor-missing'));
716
755
  const response = rec(await hub.call(CLIENT.threadFork, { threadId, excludeTurns: true, ...(lastTurnId === undefined ? {} : { lastTurnId }) }));
717
756
  const id = str(rec(response?.thread)?.id);
718
757
  if (id === undefined)
719
- throw new Error(t('codex-open-failed', { err: 'no thread id' }));
758
+ throw new Error(codexText('codex-open-failed', { err: 'no thread id' }));
720
759
  if (title !== undefined)
721
760
  await hub.call(CLIENT.threadNameSet, { threadId: id, name: title });
722
761
  await hub.call(CLIENT.threadUnsubscribe, { threadId: id });
@@ -726,23 +765,31 @@ export async function openCodexSession(deps) {
726
765
  rewind: {
727
766
  async rewind(anchor, mode) {
728
767
  if (mode !== 'conversation')
729
- return { kind: 'refused', reason: t('codex-rewind-files-unsupported') };
768
+ return { kind: 'refused', reason: codexText('codex-rewind-files-unsupported') };
730
769
  const selected = ctx.anchorTurns.get(anchor) ?? str(history.turns.find(turn => arr(turn.items).some(item => str(rec(item)?.id) === anchor))?.id);
731
770
  if (selected === undefined)
732
- return { kind: 'refused', reason: t('codex-anchor-missing') };
771
+ return { kind: 'refused', reason: codexText('codex-anchor-missing') };
733
772
  if (input.busy())
734
- return { kind: 'refused', reason: t('codex-command-idle') };
773
+ return { kind: 'refused', reason: codexText('codex-command-idle') };
735
774
  const previous = history.previousTurnId(anchor);
736
- const retained = history.turns;
737
- const index = retained.findIndex(turn => str(turn.id) === selected);
738
- if (previous === undefined && (index < 0 || history.capability.hasOlder()))
739
- return { kind: 'refused', reason: t('codex-rewind-load-older') };
740
- const response = rec(await hub.call(previous === undefined ? CLIENT.threadStart : CLIENT.threadFork, previous === undefined
741
- ? { cwd: opened.cwd, ...resumeOverrides() }
742
- : { threadId, lastTurnId: previous, excludeTurns: true, ...resumeOverrides() }));
775
+ // A daemon may differ from the local CLI. Use the live handshake,
776
+ // and never let an unknown/old server ignore the cutoff silently.
777
+ const serverVersion = parseCodexVersion(hub.info?.userAgent ?? '');
778
+ if (previous === undefined && (serverVersion === undefined || (compareCodexVersions(serverVersion, MIN_CODEX_BEFORE_TURN_FORK_VERSION) ?? -1) < 0)) {
779
+ return { kind: 'refused', reason: codexText('codex-rewind-upgrade', { min: MIN_CODEX_BEFORE_TURN_FORK_VERSION }) };
780
+ }
781
+ // Codex can cut before a known turn even when its predecessor is
782
+ // not loaded or retained locally. For the first turn this persists
783
+ // an empty branch; a turnless thread/start cannot be resumed.
784
+ const response = rec(await hub.call(CLIENT.threadFork, {
785
+ threadId,
786
+ ...(previous === undefined ? { beforeTurnId: selected } : { lastTurnId: previous }),
787
+ excludeTurns: true,
788
+ ...resumeOverrides(),
789
+ }));
743
790
  const id = str(rec(response?.thread)?.id);
744
791
  if (id === undefined)
745
- throw new Error(t('codex-open-failed', { err: 'no thread id' }));
792
+ throw new Error(codexText('codex-open-failed', { err: 'no thread id' }));
746
793
  await hub.call(CLIENT.threadUnsubscribe, { threadId: id });
747
794
  return { kind: 'rewound', session: { backendId: CODEX_BACKEND_ID, sessionId: id } };
748
795
  },
@@ -758,6 +805,10 @@ export async function openCodexSession(deps) {
758
805
  respond: (requestId, answers) => {
759
806
  if (authBridge?.respondQuestion(requestId, answers))
760
807
  return;
808
+ if (asyncQuestions.owns(requestId)) {
809
+ asyncQuestions.respond(requestId, answers);
810
+ return;
811
+ }
761
812
  if (planReview.owns(requestId))
762
813
  planReview.respond(requestId, answers);
763
814
  else
@@ -766,6 +817,10 @@ export async function openCodexSession(deps) {
766
817
  cancel: requestId => {
767
818
  if (authBridge?.cancelQuestion(requestId))
768
819
  return;
820
+ if (asyncQuestions.owns(requestId)) {
821
+ asyncQuestions.cancel(requestId);
822
+ return;
823
+ }
769
824
  if (planReview.owns(requestId))
770
825
  planReview.cancel(requestId);
771
826
  else
@@ -775,13 +830,13 @@ export async function openCodexSession(deps) {
775
830
  pendingRetraction: { remove: id => input.remove(id) },
776
831
  diagnostics: {
777
832
  lines: () => [
778
- t('codex-doctor-cli', { path: deps.executable.path, source: deps.executable.source, version: version ?? t('doctor-unknown') }),
779
- ...(drift === undefined ? [] : [t('codex-version-drift', { version: drift, validated: VALIDATED_CODEX_VERSIONS.join(', ') })]),
780
- t('codex-doctor-home', { home: hub.info?.codexHome ?? t('doctor-unknown') }),
781
- t('codex-doctor-thread', { id: threadId, provider: opened.provider === '' ? t('doctor-unknown') : opened.provider, model: settings.model === '' ? t('doctor-unknown') : settings.model }),
782
- t('codex-doctor-mode', { mode: settings.modeId }),
783
- ...(connected ? [] : [t('codex-connection-lost')]),
784
- ...((bubblewrapWarned || hub.bubblewrapMissing || deps.doctor?.bubblewrapMissing === true) && process.platform === 'linux' ? [t('codex-doctor-bubblewrap')] : []),
833
+ codexText('codex-doctor-cli', { path: deps.executable.path, source: deps.executable.source, version: version ?? codexText('doctor-unknown') }),
834
+ ...(drift === undefined ? [] : [codexText('codex-version-drift', { version: drift, validated: VALIDATED_CODEX_VERSIONS.join(', ') })]),
835
+ codexText('codex-doctor-home', { home: hub.info?.codexHome ?? codexText('doctor-unknown') }),
836
+ codexText('codex-doctor-thread', { id: threadId, provider: opened.provider === '' ? codexText('doctor-unknown') : opened.provider, model: settings.model === '' ? codexText('doctor-unknown') : settings.model }),
837
+ codexText('codex-doctor-mode', { mode: settings.modeId }),
838
+ ...(connected ? [] : [codexText('codex-connection-lost')]),
839
+ ...((bubblewrapWarned || hub.bubblewrapMissing || deps.doctor?.bubblewrapMissing === true) && process.platform === 'linux' ? [codexText('codex-doctor-bubblewrap')] : []),
785
840
  ],
786
841
  },
787
842
  },
@@ -804,17 +859,19 @@ export async function openCodexSession(deps) {
804
859
  },
805
860
  submit(next, placement) {
806
861
  if (disposing)
807
- return Promise.reject(new Error(t('codex-session-closed')));
862
+ return Promise.reject(new Error(codexText('codex-session-closed')));
808
863
  if (permanentlyLost)
809
- return Promise.reject(new Error(t('codex-connection-failed', { err: '' })));
864
+ return Promise.reject(new Error(codexText('codex-connection-failed', { err: '' })));
810
865
  planReview.withdraw();
811
866
  return commands.submit(next, placement).then(result => result ?? input.submit(next, placement));
812
867
  },
813
868
  async cancel(cause) {
814
869
  if (disposing)
815
870
  return { stillQueued: [], outcome: 'unknown' };
816
- if (cause === 'switch' || cause === 'dispose')
871
+ if (cause === 'switch' || cause === 'dispose') {
817
872
  approvals.withdrawAll();
873
+ asyncQuestions.withdraw();
874
+ }
818
875
  return input.cancel(cause);
819
876
  },
820
877
  dispose() {
@@ -822,6 +879,7 @@ export async function openCodexSession(deps) {
822
879
  return disposePromise;
823
880
  disposePromise = (async () => {
824
881
  approvals.withdrawAll();
882
+ asyncQuestions.withdraw();
825
883
  authBridge?.dispose();
826
884
  planReview.withdraw();
827
885
  output.close();
@@ -835,7 +893,7 @@ export async function openCodexSession(deps) {
835
893
  const busy = input.busy();
836
894
  disposing = true;
837
895
  if (busy)
838
- await input.interrupt().catch(() => false);
896
+ await input.interrupt(false).catch(() => false);
839
897
  input.close();
840
898
  offGlobal();
841
899
  for (const unroute of childRoutes.values())
@@ -1 +1 @@
1
- {"version":3,"file":"side-query.d.ts","sourceRoot":"","sources":["../../../../../src/backends/codex/session/side-query.ts"],"names":[],"mappings":"AAMA,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,eAAe,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAG5D,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IAAC,QAAQ,IAAI,MAAM,CAAC;IAAC,MAAM,IAAI,OAAO,CAAC;IAAC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE;;;2BA4F+3N,CAAC;2BAA8B,CAAC;;;0BAAsF,CAAC;;;iBAzF7rO,IAAI;aAuFsB,IAAI;EACrD"}
1
+ {"version":3,"file":"side-query.d.ts","sourceRoot":"","sources":["../../../../../src/backends/codex/session/side-query.ts"],"names":[],"mappings":"AAMA,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,eAAe,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAG5D,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IAAC,QAAQ,IAAI,MAAM,CAAC;IAAC,MAAM,IAAI,OAAO,CAAC;IAAC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE;;;2BA6GuiM,CAAC;2BAA8B,CAAC;;;0BAAsF,CAAC;;;iBA1Gr2M,IAAI;aAwGsB,IAAI;EACrD"}