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

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 (1023) hide show
  1. package/README.md +85 -5
  2. package/assets/claude-girl/claude-girl-happy.png +0 -0
  3. package/assets/claude-girl/claude-girl.png +0 -0
  4. package/assets/codex-girl/codex-girl-happy.png +0 -0
  5. package/assets/codex-girl/codex-girl.png +0 -0
  6. package/bin/dsh-tui.js +104 -18
  7. package/cordis.patch.yml +2 -0
  8. package/cordis.yml +2 -0
  9. package/guide/dsh-tui-guide/SKILL.md +4 -2
  10. package/guide/dsh-tui-guide/claude-backend.en.md +203 -0
  11. package/guide/dsh-tui-guide/claude-backend.md +161 -0
  12. package/guide/dsh-tui-guide/codex-backend.en.md +297 -0
  13. package/guide/dsh-tui-guide/codex-backend.md +257 -0
  14. package/guide/dsh-tui-guide/configuration.en.md +9 -2
  15. package/guide/dsh-tui-guide/configuration.md +9 -2
  16. package/guide/dsh-tui-guide/interaction.en.md +169 -27
  17. package/guide/dsh-tui-guide/interaction.md +115 -17
  18. package/guide/dsh-tui-guide/themes.en.md +24 -2
  19. package/guide/dsh-tui-guide/themes.md +21 -2
  20. package/guide/dsh-tui-guide/user-guide.en.md +38 -23
  21. package/guide/dsh-tui-guide/user-guide.md +22 -11
  22. package/guide/dsh-tui-guide/vscode.en.md +1 -0
  23. package/guide/dsh-tui-guide/vscode.md +1 -0
  24. package/lib/settings.json +139 -6
  25. package/lib/types/adapter/channel/state.d.ts.map +1 -1
  26. package/lib/types/adapter/channel/state.js +1 -0
  27. package/lib/types/adapter/channel/ui-policy.d.ts +17 -2
  28. package/lib/types/adapter/channel/ui-policy.d.ts.map +1 -1
  29. package/lib/types/adapter/channel/ui-policy.js +29 -0
  30. package/lib/types/adapter/channel/ui.d.ts.map +1 -1
  31. package/lib/types/adapter/channel/ui.js +45 -5
  32. package/lib/types/adapter/ports/channel-catalog.d.ts +7 -0
  33. package/lib/types/adapter/ports/channel-catalog.d.ts.map +1 -1
  34. package/lib/types/adapter/ports/channel-display.d.ts +7 -1
  35. package/lib/types/adapter/ports/channel-display.d.ts.map +1 -1
  36. package/lib/types/adapter/ports/channel-session.d.ts +5 -0
  37. package/lib/types/adapter/ports/channel-session.d.ts.map +1 -1
  38. package/lib/types/adapter/ports/channel-settings.d.ts +20 -0
  39. package/lib/types/adapter/ports/channel-settings.d.ts.map +1 -1
  40. package/lib/types/adapter/ports/channel-ui.d.ts +183 -6
  41. package/lib/types/adapter/ports/channel-ui.d.ts.map +1 -1
  42. package/lib/types/adapter/ports/channel-view.d.ts +477 -13
  43. package/lib/types/adapter/ports/channel-view.d.ts.map +1 -1
  44. package/lib/types/agent/backend.d.ts +168 -0
  45. package/lib/types/agent/backend.d.ts.map +1 -0
  46. package/lib/types/agent/backend.js +1 -0
  47. package/lib/types/agent/capabilities.d.ts +461 -0
  48. package/lib/types/agent/capabilities.d.ts.map +1 -0
  49. package/lib/types/agent/capabilities.js +1 -0
  50. package/lib/types/agent/events.d.ts +733 -0
  51. package/lib/types/agent/events.d.ts.map +1 -0
  52. package/lib/types/agent/events.js +2 -0
  53. package/lib/types/agent/index.d.ts +8 -0
  54. package/lib/types/agent/index.d.ts.map +1 -0
  55. package/lib/types/agent/index.js +7 -0
  56. package/lib/types/agent/messages.d.ts +52 -0
  57. package/lib/types/agent/messages.d.ts.map +1 -0
  58. package/lib/types/agent/messages.js +91 -0
  59. package/lib/types/agent/presentation.d.ts +29 -0
  60. package/lib/types/agent/presentation.d.ts.map +1 -0
  61. package/lib/types/agent/presentation.js +4 -0
  62. package/lib/types/agent/refs.d.ts +30 -0
  63. package/lib/types/agent/refs.d.ts.map +1 -0
  64. package/lib/types/agent/refs.js +39 -0
  65. package/lib/types/agent/session.d.ts +78 -0
  66. package/lib/types/agent/session.d.ts.map +1 -0
  67. package/lib/types/agent/session.js +1 -0
  68. package/lib/types/backends/claude/activity.d.ts +53 -0
  69. package/lib/types/backends/claude/activity.d.ts.map +1 -0
  70. package/lib/types/backends/claude/activity.js +103 -0
  71. package/lib/types/backends/claude/auth.d.ts +245 -0
  72. package/lib/types/backends/claude/auth.d.ts.map +1 -0
  73. package/lib/types/backends/claude/auth.js +503 -0
  74. package/lib/types/backends/claude/backend.d.ts +32 -0
  75. package/lib/types/backends/claude/backend.d.ts.map +1 -0
  76. package/lib/types/backends/claude/backend.js +296 -0
  77. package/lib/types/backends/claude/catalog.d.ts +17 -0
  78. package/lib/types/backends/claude/catalog.d.ts.map +1 -0
  79. package/lib/types/backends/claude/catalog.js +94 -0
  80. package/lib/types/backends/claude/channels.d.ts +63 -0
  81. package/lib/types/backends/claude/channels.d.ts.map +1 -0
  82. package/lib/types/backends/claude/channels.js +275 -0
  83. package/lib/types/backends/claude/contract.d.ts +37 -0
  84. package/lib/types/backends/claude/contract.d.ts.map +1 -0
  85. package/lib/types/backends/claude/contract.js +46 -0
  86. package/lib/types/backends/claude/controls.d.ts +134 -0
  87. package/lib/types/backends/claude/controls.d.ts.map +1 -0
  88. package/lib/types/backends/claude/controls.js +425 -0
  89. package/lib/types/backends/claude/dialogs.d.ts +62 -0
  90. package/lib/types/backends/claude/dialogs.d.ts.map +1 -0
  91. package/lib/types/backends/claude/dialogs.js +253 -0
  92. package/lib/types/backends/claude/flag-settings.d.ts +12 -0
  93. package/lib/types/backends/claude/flag-settings.d.ts.map +1 -0
  94. package/lib/types/backends/claude/flag-settings.js +49 -0
  95. package/lib/types/backends/claude/images.d.ts +49 -0
  96. package/lib/types/backends/claude/images.d.ts.map +1 -0
  97. package/lib/types/backends/claude/images.js +94 -0
  98. package/lib/types/backends/claude/index.d.ts +5 -0
  99. package/lib/types/backends/claude/index.d.ts.map +1 -0
  100. package/lib/types/backends/claude/index.js +4 -0
  101. package/lib/types/backends/claude/install.d.ts +15 -0
  102. package/lib/types/backends/claude/install.d.ts.map +1 -0
  103. package/lib/types/backends/claude/install.js +91 -0
  104. package/lib/types/backends/claude/modelEnv.d.ts +64 -0
  105. package/lib/types/backends/claude/modelEnv.d.ts.map +1 -0
  106. package/lib/types/backends/claude/modelEnv.js +199 -0
  107. package/lib/types/backends/claude/narrow.d.ts +10 -0
  108. package/lib/types/backends/claude/narrow.d.ts.map +1 -0
  109. package/lib/types/backends/claude/narrow.js +8 -0
  110. package/lib/types/backends/claude/older-history.d.ts +16 -0
  111. package/lib/types/backends/claude/older-history.d.ts.map +1 -0
  112. package/lib/types/backends/claude/older-history.js +101 -0
  113. package/lib/types/backends/claude/options.d.ts +181 -0
  114. package/lib/types/backends/claude/options.d.ts.map +1 -0
  115. package/lib/types/backends/claude/options.js +208 -0
  116. package/lib/types/backends/claude/permissions.d.ts +83 -0
  117. package/lib/types/backends/claude/permissions.d.ts.map +1 -0
  118. package/lib/types/backends/claude/permissions.js +331 -0
  119. package/lib/types/backends/claude/prefs.d.ts +55 -0
  120. package/lib/types/backends/claude/prefs.d.ts.map +1 -0
  121. package/lib/types/backends/claude/prefs.js +150 -0
  122. package/lib/types/backends/claude/process.d.ts +19 -0
  123. package/lib/types/backends/claude/process.d.ts.map +1 -0
  124. package/lib/types/backends/claude/process.js +156 -0
  125. package/lib/types/backends/claude/replay.d.ts +129 -0
  126. package/lib/types/backends/claude/replay.d.ts.map +1 -0
  127. package/lib/types/backends/claude/replay.js +505 -0
  128. package/lib/types/backends/claude/sdk-warnings.d.ts +23 -0
  129. package/lib/types/backends/claude/sdk-warnings.d.ts.map +1 -0
  130. package/lib/types/backends/claude/sdk-warnings.js +55 -0
  131. package/lib/types/backends/claude/sdk.d.ts +12 -0
  132. package/lib/types/backends/claude/sdk.d.ts.map +1 -0
  133. package/lib/types/backends/claude/sdk.js +34 -0
  134. package/lib/types/backends/claude/send-message.d.ts +54 -0
  135. package/lib/types/backends/claude/send-message.d.ts.map +1 -0
  136. package/lib/types/backends/claude/send-message.js +65 -0
  137. package/lib/types/backends/claude/session/auth.d.ts +47 -0
  138. package/lib/types/backends/claude/session/auth.d.ts.map +1 -0
  139. package/lib/types/backends/claude/session/auth.js +226 -0
  140. package/lib/types/backends/claude/session/channels.d.ts +82 -0
  141. package/lib/types/backends/claude/session/channels.d.ts.map +1 -0
  142. package/lib/types/backends/claude/session/channels.js +45 -0
  143. package/lib/types/backends/claude/session/input.d.ts +16 -0
  144. package/lib/types/backends/claude/session/input.d.ts.map +1 -0
  145. package/lib/types/backends/claude/session/input.js +64 -0
  146. package/lib/types/backends/claude/session/lifecycle.d.ts +6 -0
  147. package/lib/types/backends/claude/session/lifecycle.d.ts.map +1 -0
  148. package/lib/types/backends/claude/session/lifecycle.js +852 -0
  149. package/lib/types/backends/claude/session/store.d.ts +17 -0
  150. package/lib/types/backends/claude/session/store.d.ts.map +1 -0
  151. package/lib/types/backends/claude/session/store.js +122 -0
  152. package/lib/types/backends/claude/session/subagents.d.ts +13 -0
  153. package/lib/types/backends/claude/session/subagents.d.ts.map +1 -0
  154. package/lib/types/backends/claude/session/subagents.js +77 -0
  155. package/lib/types/backends/claude/session/types.d.ts +89 -0
  156. package/lib/types/backends/claude/session/types.d.ts.map +1 -0
  157. package/lib/types/backends/claude/session/types.js +1 -0
  158. package/lib/types/backends/claude/session.d.ts +4 -0
  159. package/lib/types/backends/claude/session.d.ts.map +1 -0
  160. package/lib/types/backends/claude/session.js +2 -0
  161. package/lib/types/backends/claude/side-query.d.ts +34 -0
  162. package/lib/types/backends/claude/side-query.d.ts.map +1 -0
  163. package/lib/types/backends/claude/side-query.js +116 -0
  164. package/lib/types/backends/claude/task-output.d.ts +13 -0
  165. package/lib/types/backends/claude/task-output.d.ts.map +1 -0
  166. package/lib/types/backends/claude/task-output.js +101 -0
  167. package/lib/types/backends/claude/tools.d.ts +45 -0
  168. package/lib/types/backends/claude/tools.d.ts.map +1 -0
  169. package/lib/types/backends/claude/tools.js +231 -0
  170. package/lib/types/backends/claude/transcript-file.d.ts +41 -0
  171. package/lib/types/backends/claude/transcript-file.d.ts.map +1 -0
  172. package/lib/types/backends/claude/transcript-file.js +195 -0
  173. package/lib/types/backends/claude/translate/attempts.d.ts +33 -0
  174. package/lib/types/backends/claude/translate/attempts.d.ts.map +1 -0
  175. package/lib/types/backends/claude/translate/attempts.js +243 -0
  176. package/lib/types/backends/claude/translate/content.d.ts +33 -0
  177. package/lib/types/backends/claude/translate/content.d.ts.map +1 -0
  178. package/lib/types/backends/claude/translate/content.js +91 -0
  179. package/lib/types/backends/claude/translate/core.d.ts +76 -0
  180. package/lib/types/backends/claude/translate/core.d.ts.map +1 -0
  181. package/lib/types/backends/claude/translate/core.js +447 -0
  182. package/lib/types/backends/claude/translate/events.d.ts +9 -0
  183. package/lib/types/backends/claude/translate/events.d.ts.map +1 -0
  184. package/lib/types/backends/claude/translate/events.js +77 -0
  185. package/lib/types/backends/claude/translate/lanes.d.ts +31 -0
  186. package/lib/types/backends/claude/translate/lanes.d.ts.map +1 -0
  187. package/lib/types/backends/claude/translate/lanes.js +177 -0
  188. package/lib/types/backends/claude/translate/messages.d.ts +36 -0
  189. package/lib/types/backends/claude/translate/messages.d.ts.map +1 -0
  190. package/lib/types/backends/claude/translate/messages.js +202 -0
  191. package/lib/types/backends/claude/translate/system.d.ts +40 -0
  192. package/lib/types/backends/claude/translate/system.d.ts.map +1 -0
  193. package/lib/types/backends/claude/translate/system.js +399 -0
  194. package/lib/types/backends/claude/translate/tasks.d.ts +19 -0
  195. package/lib/types/backends/claude/translate/tasks.d.ts.map +1 -0
  196. package/lib/types/backends/claude/translate/tasks.js +159 -0
  197. package/lib/types/backends/claude/translate/types.d.ts +114 -0
  198. package/lib/types/backends/claude/translate/types.d.ts.map +1 -0
  199. package/lib/types/backends/claude/translate/types.js +1 -0
  200. package/lib/types/backends/claude/translate.d.ts +9 -0
  201. package/lib/types/backends/claude/translate.d.ts.map +1 -0
  202. package/lib/types/backends/claude/translate.js +6 -0
  203. package/lib/types/backends/codex/auth/external-tokens.d.ts +66 -0
  204. package/lib/types/backends/codex/auth/external-tokens.d.ts.map +1 -0
  205. package/lib/types/backends/codex/auth/external-tokens.js +325 -0
  206. package/lib/types/backends/codex/auth/route.d.ts +14 -0
  207. package/lib/types/backends/codex/auth/route.d.ts.map +1 -0
  208. package/lib/types/backends/codex/auth/route.js +52 -0
  209. package/lib/types/backends/codex/auth/status.d.ts +16 -0
  210. package/lib/types/backends/codex/auth/status.d.ts.map +1 -0
  211. package/lib/types/backends/codex/auth/status.js +115 -0
  212. package/lib/types/backends/codex/backend.d.ts +58 -0
  213. package/lib/types/backends/codex/backend.d.ts.map +1 -0
  214. package/lib/types/backends/codex/backend.js +201 -0
  215. package/lib/types/backends/codex/catalog.d.ts +17 -0
  216. package/lib/types/backends/codex/catalog.d.ts.map +1 -0
  217. package/lib/types/backends/codex/catalog.js +128 -0
  218. package/lib/types/backends/codex/channels.d.ts +59 -0
  219. package/lib/types/backends/codex/channels.d.ts.map +1 -0
  220. package/lib/types/backends/codex/channels.js +274 -0
  221. package/lib/types/backends/codex/contract.d.ts +46 -0
  222. package/lib/types/backends/codex/contract.d.ts.map +1 -0
  223. package/lib/types/backends/codex/contract.js +80 -0
  224. package/lib/types/backends/codex/detect.d.ts +14 -0
  225. package/lib/types/backends/codex/detect.d.ts.map +1 -0
  226. package/lib/types/backends/codex/detect.js +90 -0
  227. package/lib/types/backends/codex/index.d.ts +6 -0
  228. package/lib/types/backends/codex/index.d.ts.map +1 -0
  229. package/lib/types/backends/codex/index.js +5 -0
  230. package/lib/types/backends/codex/modes.d.ts +16 -0
  231. package/lib/types/backends/codex/modes.d.ts.map +1 -0
  232. package/lib/types/backends/codex/modes.js +49 -0
  233. package/lib/types/backends/codex/narrow.d.ts +20 -0
  234. package/lib/types/backends/codex/narrow.d.ts.map +1 -0
  235. package/lib/types/backends/codex/narrow.js +18 -0
  236. package/lib/types/backends/codex/prefs.d.ts +42 -0
  237. package/lib/types/backends/codex/prefs.d.ts.map +1 -0
  238. package/lib/types/backends/codex/prefs.js +124 -0
  239. package/lib/types/backends/codex/protocol/index.d.ts +149 -0
  240. package/lib/types/backends/codex/protocol/index.d.ts.map +1 -0
  241. package/lib/types/backends/codex/protocol/index.js +130 -0
  242. package/lib/types/backends/codex/rpc/binary.d.ts +35 -0
  243. package/lib/types/backends/codex/rpc/binary.d.ts.map +1 -0
  244. package/lib/types/backends/codex/rpc/binary.js +174 -0
  245. package/lib/types/backends/codex/rpc/client.d.ts +72 -0
  246. package/lib/types/backends/codex/rpc/client.d.ts.map +1 -0
  247. package/lib/types/backends/codex/rpc/client.js +214 -0
  248. package/lib/types/backends/codex/rpc/hub.d.ts +105 -0
  249. package/lib/types/backends/codex/rpc/hub.d.ts.map +1 -0
  250. package/lib/types/backends/codex/rpc/hub.js +532 -0
  251. package/lib/types/backends/codex/rpc/transport.d.ts +39 -0
  252. package/lib/types/backends/codex/rpc/transport.d.ts.map +1 -0
  253. package/lib/types/backends/codex/rpc/transport.js +212 -0
  254. package/lib/types/backends/codex/session/activity.d.ts +18 -0
  255. package/lib/types/backends/codex/session/activity.d.ts.map +1 -0
  256. package/lib/types/backends/codex/session/activity.js +108 -0
  257. package/lib/types/backends/codex/session/approvals.d.ts +39 -0
  258. package/lib/types/backends/codex/session/approvals.d.ts.map +1 -0
  259. package/lib/types/backends/codex/session/approvals.js +477 -0
  260. package/lib/types/backends/codex/session/commands.d.ts +37 -0
  261. package/lib/types/backends/codex/session/commands.d.ts.map +1 -0
  262. package/lib/types/backends/codex/session/commands.js +141 -0
  263. package/lib/types/backends/codex/session/controls.d.ts +37 -0
  264. package/lib/types/backends/codex/session/controls.d.ts.map +1 -0
  265. package/lib/types/backends/codex/session/controls.js +303 -0
  266. package/lib/types/backends/codex/session/goals.d.ts +25 -0
  267. package/lib/types/backends/codex/session/goals.d.ts.map +1 -0
  268. package/lib/types/backends/codex/session/goals.js +97 -0
  269. package/lib/types/backends/codex/session/history.d.ts +52 -0
  270. package/lib/types/backends/codex/session/history.d.ts.map +1 -0
  271. package/lib/types/backends/codex/session/history.js +196 -0
  272. package/lib/types/backends/codex/session/images.d.ts +17 -0
  273. package/lib/types/backends/codex/session/images.d.ts.map +1 -0
  274. package/lib/types/backends/codex/session/images.js +138 -0
  275. package/lib/types/backends/codex/session/input.d.ts +75 -0
  276. package/lib/types/backends/codex/session/input.d.ts.map +1 -0
  277. package/lib/types/backends/codex/session/input.js +294 -0
  278. package/lib/types/backends/codex/session/plan-review.d.ts +19 -0
  279. package/lib/types/backends/codex/session/plan-review.d.ts.map +1 -0
  280. package/lib/types/backends/codex/session/plan-review.js +48 -0
  281. package/lib/types/backends/codex/session/prompts.d.ts +7 -0
  282. package/lib/types/backends/codex/session/prompts.d.ts.map +1 -0
  283. package/lib/types/backends/codex/session/prompts.js +47 -0
  284. package/lib/types/backends/codex/session/session.d.ts +12 -0
  285. package/lib/types/backends/codex/session/session.d.ts.map +1 -0
  286. package/lib/types/backends/codex/session/session.js +871 -0
  287. package/lib/types/backends/codex/session/side-query.d.ts +25 -0
  288. package/lib/types/backends/codex/session/side-query.d.ts.map +1 -0
  289. package/lib/types/backends/codex/session/side-query.js +121 -0
  290. package/lib/types/backends/codex/session/state.d.ts +57 -0
  291. package/lib/types/backends/codex/session/state.d.ts.map +1 -0
  292. package/lib/types/backends/codex/session/state.js +1 -0
  293. package/lib/types/backends/codex/session/subagents.d.ts +28 -0
  294. package/lib/types/backends/codex/session/subagents.d.ts.map +1 -0
  295. package/lib/types/backends/codex/session/subagents.js +286 -0
  296. package/lib/types/backends/codex/session/tasks.d.ts +25 -0
  297. package/lib/types/backends/codex/session/tasks.d.ts.map +1 -0
  298. package/lib/types/backends/codex/session/tasks.js +207 -0
  299. package/lib/types/backends/codex/session/tool-output.d.ts +9 -0
  300. package/lib/types/backends/codex/session/tool-output.d.ts.map +1 -0
  301. package/lib/types/backends/codex/session/tool-output.js +29 -0
  302. package/lib/types/backends/codex/translate/commands.d.ts +30 -0
  303. package/lib/types/backends/codex/translate/commands.d.ts.map +1 -0
  304. package/lib/types/backends/codex/translate/commands.js +103 -0
  305. package/lib/types/backends/codex/translate/events.d.ts +9 -0
  306. package/lib/types/backends/codex/translate/events.d.ts.map +1 -0
  307. package/lib/types/backends/codex/translate/events.js +71 -0
  308. package/lib/types/backends/codex/translate/items.d.ts +112 -0
  309. package/lib/types/backends/codex/translate/items.d.ts.map +1 -0
  310. package/lib/types/backends/codex/translate/items.js +375 -0
  311. package/lib/types/backends/codex/translate/live.d.ts +39 -0
  312. package/lib/types/backends/codex/translate/live.d.ts.map +1 -0
  313. package/lib/types/backends/codex/translate/live.js +315 -0
  314. package/lib/types/backends/codex/translate/notices.d.ts +27 -0
  315. package/lib/types/backends/codex/translate/notices.d.ts.map +1 -0
  316. package/lib/types/backends/codex/translate/notices.js +99 -0
  317. package/lib/types/backends/codex/translate/presentation.d.ts +49 -0
  318. package/lib/types/backends/codex/translate/presentation.d.ts.map +1 -0
  319. package/lib/types/backends/codex/translate/presentation.js +237 -0
  320. package/lib/types/backends/codex/translate/replay.d.ts +18 -0
  321. package/lib/types/backends/codex/translate/replay.d.ts.map +1 -0
  322. package/lib/types/backends/codex/translate/replay.js +33 -0
  323. package/lib/types/backends/codex/translate/usage.d.ts +29 -0
  324. package/lib/types/backends/codex/translate/usage.d.ts.map +1 -0
  325. package/lib/types/backends/codex/translate/usage.js +65 -0
  326. package/lib/types/backends/shared/atomic-file.d.ts +4 -0
  327. package/lib/types/backends/shared/atomic-file.d.ts.map +1 -0
  328. package/lib/types/backends/shared/atomic-file.js +52 -0
  329. package/lib/types/backends/shared/channel-tokens.d.ts +29 -0
  330. package/lib/types/backends/shared/channel-tokens.d.ts.map +1 -0
  331. package/lib/types/backends/shared/channel-tokens.js +161 -0
  332. package/lib/types/backends/shared/display-path.d.ts +3 -0
  333. package/lib/types/backends/shared/display-path.d.ts.map +1 -0
  334. package/lib/types/backends/shared/display-path.js +12 -0
  335. package/lib/types/branding.d.ts +92 -0
  336. package/lib/types/branding.d.ts.map +1 -0
  337. package/lib/types/branding.js +117 -0
  338. package/lib/types/channel/activity.d.ts +53 -0
  339. package/lib/types/channel/activity.d.ts.map +1 -0
  340. package/lib/types/channel/activity.js +955 -0
  341. package/lib/types/channel/capabilities.d.ts +24 -0
  342. package/lib/types/channel/capabilities.d.ts.map +1 -0
  343. package/lib/types/channel/capabilities.js +57 -0
  344. package/lib/types/channel/channel-slug.d.ts +9 -0
  345. package/lib/types/channel/channel-slug.d.ts.map +1 -0
  346. package/lib/types/channel/channel-slug.js +15 -0
  347. package/lib/types/channel/channel-wizard.d.ts +30 -0
  348. package/lib/types/channel/channel-wizard.d.ts.map +1 -0
  349. package/lib/types/channel/channel-wizard.js +226 -0
  350. package/lib/types/channel/elicitation.d.ts +135 -0
  351. package/lib/types/channel/elicitation.d.ts.map +1 -0
  352. package/lib/types/channel/elicitation.js +360 -0
  353. package/lib/types/channel/goal-command.d.ts +49 -0
  354. package/lib/types/channel/goal-command.d.ts.map +1 -0
  355. package/lib/types/channel/goal-command.js +72 -0
  356. package/lib/types/channel/history-restore.d.ts +16 -0
  357. package/lib/types/channel/history-restore.d.ts.map +1 -0
  358. package/lib/types/channel/history-restore.js +214 -0
  359. package/lib/types/channel/interaction.d.ts +38 -0
  360. package/lib/types/channel/interaction.d.ts.map +1 -0
  361. package/lib/types/channel/interaction.js +110 -0
  362. package/lib/types/channel/job-format.d.ts +6 -0
  363. package/lib/types/channel/job-format.d.ts.map +1 -0
  364. package/lib/types/channel/job-format.js +12 -0
  365. package/lib/types/channel/live-output.d.ts +35 -0
  366. package/lib/types/channel/live-output.d.ts.map +1 -0
  367. package/lib/types/channel/live-output.js +74 -0
  368. package/lib/types/channel/model-capabilities.d.ts +10 -0
  369. package/lib/types/channel/model-capabilities.d.ts.map +1 -0
  370. package/lib/types/channel/model-capabilities.js +51 -0
  371. package/lib/types/channel/permissions.d.ts +155 -0
  372. package/lib/types/channel/permissions.d.ts.map +1 -0
  373. package/lib/types/channel/permissions.js +188 -0
  374. package/lib/types/channel/projection.d.ts +110 -0
  375. package/lib/types/channel/projection.d.ts.map +1 -0
  376. package/lib/types/channel/projection.js +1521 -0
  377. package/lib/types/channel/question-record.d.ts +76 -0
  378. package/lib/types/channel/question-record.d.ts.map +1 -0
  379. package/lib/types/channel/question-record.js +109 -0
  380. package/lib/types/channel/questions.d.ts +204 -0
  381. package/lib/types/channel/questions.d.ts.map +1 -0
  382. package/lib/types/channel/questions.js +286 -0
  383. package/lib/types/channel/sanitize.d.ts +49 -0
  384. package/lib/types/channel/sanitize.d.ts.map +1 -0
  385. package/lib/types/channel/sanitize.js +88 -0
  386. package/lib/types/channel/selection-record.d.ts +18 -0
  387. package/lib/types/channel/selection-record.d.ts.map +1 -0
  388. package/lib/types/channel/selection-record.js +45 -0
  389. package/lib/types/channel/side-prompts.d.ts +59 -0
  390. package/lib/types/channel/side-prompts.d.ts.map +1 -0
  391. package/lib/types/channel/side-prompts.js +127 -0
  392. package/lib/types/channel/transcript.d.ts +17 -0
  393. package/lib/types/channel/transcript.d.ts.map +1 -0
  394. package/lib/types/channel/transcript.js +19 -0
  395. package/lib/types/channel/usage.d.ts +48 -0
  396. package/lib/types/channel/usage.d.ts.map +1 -0
  397. package/lib/types/channel/usage.js +143 -0
  398. package/lib/types/commands.d.ts +147 -0
  399. package/lib/types/commands.d.ts.map +1 -1
  400. package/lib/types/commands.js +196 -2
  401. package/lib/types/components/AgentMessageComposer.d.ts +50 -0
  402. package/lib/types/components/AgentMessageComposer.d.ts.map +1 -0
  403. package/lib/types/components/AgentMessageComposer.js +159 -0
  404. package/lib/types/components/BtwPanel.d.ts +13 -12
  405. package/lib/types/components/BtwPanel.d.ts.map +1 -1
  406. package/lib/types/components/BtwPanel.js +35 -24
  407. package/lib/types/components/ChannelPicker.d.ts +40 -0
  408. package/lib/types/components/ChannelPicker.d.ts.map +1 -0
  409. package/lib/types/components/ChannelPicker.js +26 -0
  410. package/lib/types/components/Chat/JobCard.d.ts +29 -31
  411. package/lib/types/components/Chat/JobCard.d.ts.map +1 -1
  412. package/lib/types/components/Chat/JobCard.js +31 -112
  413. package/lib/types/components/Chat/SubagentMessage.d.ts +4 -1
  414. package/lib/types/components/Chat/SubagentMessage.d.ts.map +1 -1
  415. package/lib/types/components/Chat/SubagentMessage.js +10 -3
  416. package/lib/types/components/ClaudeGirl.d.ts +27 -0
  417. package/lib/types/components/ClaudeGirl.d.ts.map +1 -0
  418. package/lib/types/components/ClaudeGirl.js +30 -0
  419. package/lib/types/components/CodeBlockFrame.d.ts +19 -0
  420. package/lib/types/components/CodeBlockFrame.d.ts.map +1 -0
  421. package/lib/types/components/CodeBlockFrame.js +138 -0
  422. package/lib/types/components/CommandSuggestions.d.ts +10 -1
  423. package/lib/types/components/CommandSuggestions.d.ts.map +1 -1
  424. package/lib/types/components/CommandSuggestions.js +20 -3
  425. package/lib/types/components/ContextBarView.d.ts +2 -2
  426. package/lib/types/components/ContextBarView.d.ts.map +1 -1
  427. package/lib/types/components/ContextBarView.js +18 -8
  428. package/lib/types/components/EffortChargeGlyph.d.ts +1 -1
  429. package/lib/types/components/EffortChargeGlyph.d.ts.map +1 -1
  430. package/lib/types/components/EffortChargeGlyph.js +3 -4
  431. package/lib/types/components/EffortInputBorder.d.ts +1 -2
  432. package/lib/types/components/EffortInputBorder.d.ts.map +1 -1
  433. package/lib/types/components/EffortInputBorder.js +7 -4
  434. package/lib/types/components/EffortSlider.d.ts +5 -1
  435. package/lib/types/components/EffortSlider.d.ts.map +1 -1
  436. package/lib/types/components/EffortSlider.js +2 -2
  437. package/lib/types/components/EffortTierBadge.d.ts +1 -2
  438. package/lib/types/components/EffortTierBadge.d.ts.map +1 -1
  439. package/lib/types/components/EffortTierBadge.js +8 -5
  440. package/lib/types/components/GoalTodoPanel.d.ts +2 -1
  441. package/lib/types/components/GoalTodoPanel.d.ts.map +1 -1
  442. package/lib/types/components/GoalTodoPanel.js +11 -5
  443. package/lib/types/components/InlineMathParagraph.js +1 -1
  444. package/lib/types/components/JobsPanel.d.ts +8 -9
  445. package/lib/types/components/JobsPanel.d.ts.map +1 -1
  446. package/lib/types/components/JobsPanel.js +72 -13
  447. package/lib/types/components/KernelPicker.d.ts +28 -0
  448. package/lib/types/components/KernelPicker.d.ts.map +1 -0
  449. package/lib/types/components/KernelPicker.js +37 -0
  450. package/lib/types/components/LogoV2.d.ts +7 -1
  451. package/lib/types/components/LogoV2.d.ts.map +1 -1
  452. package/lib/types/components/LogoV2.js +120 -24
  453. package/lib/types/components/Markdown.d.ts +2 -1
  454. package/lib/types/components/Markdown.d.ts.map +1 -1
  455. package/lib/types/components/Markdown.js +37 -8
  456. package/lib/types/components/MathBlock.d.ts.map +1 -1
  457. package/lib/types/components/MathBlock.js +3 -1
  458. package/lib/types/components/MermaidDiagram.d.ts.map +1 -1
  459. package/lib/types/components/MermaidDiagram.js +7 -5
  460. package/lib/types/components/MessageList.d.ts +21 -3
  461. package/lib/types/components/MessageList.d.ts.map +1 -1
  462. package/lib/types/components/MessageList.js +62 -42
  463. package/lib/types/components/ModePicker.d.ts +20 -0
  464. package/lib/types/components/ModePicker.d.ts.map +1 -0
  465. package/lib/types/components/ModePicker.js +17 -0
  466. package/lib/types/components/PromptInput.d.ts +2 -2
  467. package/lib/types/components/PromptInput.d.ts.map +1 -1
  468. package/lib/types/components/PromptInput.js +308 -55
  469. package/lib/types/components/SdkInstallWizard.d.ts +44 -0
  470. package/lib/types/components/SdkInstallWizard.d.ts.map +1 -0
  471. package/lib/types/components/SdkInstallWizard.js +18 -0
  472. package/lib/types/components/SearchBox.d.ts +7 -8
  473. package/lib/types/components/SearchBox.d.ts.map +1 -1
  474. package/lib/types/components/SearchBox.js +18 -9
  475. package/lib/types/components/SplitDiffView.d.ts.map +1 -1
  476. package/lib/types/components/SplitDiffView.js +113 -6
  477. package/lib/types/components/StarPrompt.d.ts.map +1 -1
  478. package/lib/types/components/StarPrompt.js +5 -3
  479. package/lib/types/components/StreamingMarkdown.d.ts.map +1 -1
  480. package/lib/types/components/StreamingMarkdown.js +6 -4
  481. package/lib/types/components/SubagentCard.d.ts +2 -1
  482. package/lib/types/components/SubagentCard.d.ts.map +1 -1
  483. package/lib/types/components/SubagentCard.js +25 -18
  484. package/lib/types/components/SubagentDashboard.d.ts +10 -6
  485. package/lib/types/components/SubagentDashboard.d.ts.map +1 -1
  486. package/lib/types/components/SubagentDashboard.js +32 -21
  487. package/lib/types/components/SubagentDetailScene.d.ts +16 -1
  488. package/lib/types/components/SubagentDetailScene.d.ts.map +1 -1
  489. package/lib/types/components/SubagentDetailScene.js +196 -45
  490. package/lib/types/components/SyntaxText.d.ts.map +1 -1
  491. package/lib/types/components/SyntaxText.js +4 -1
  492. package/lib/types/components/TurnInterruptedRow.d.ts +3 -1
  493. package/lib/types/components/TurnInterruptedRow.d.ts.map +1 -1
  494. package/lib/types/components/TurnInterruptedRow.js +6 -3
  495. package/lib/types/components/TurnUsageRow.d.ts +24 -0
  496. package/lib/types/components/TurnUsageRow.d.ts.map +1 -0
  497. package/lib/types/components/TurnUsageRow.js +46 -0
  498. package/lib/types/components/WorkingSpinner.d.ts +2 -1
  499. package/lib/types/components/WorkingSpinner.d.ts.map +1 -1
  500. package/lib/types/components/WorkingSpinner.js +21 -4
  501. package/lib/types/components/approvals/ApprovalPanel.d.ts +36 -13
  502. package/lib/types/components/approvals/ApprovalPanel.d.ts.map +1 -1
  503. package/lib/types/components/approvals/ApprovalPanel.js +173 -25
  504. package/lib/types/components/claudeGirlSprite.d.ts +18 -0
  505. package/lib/types/components/claudeGirlSprite.d.ts.map +1 -0
  506. package/lib/types/components/claudeGirlSprite.js +48 -0
  507. package/lib/types/components/design-system/ThemeProvider.d.ts.map +1 -1
  508. package/lib/types/components/design-system/ThemeProvider.js +46 -13
  509. package/lib/types/components/design-system/ThemedText.d.ts +3 -1
  510. package/lib/types/components/design-system/ThemedText.d.ts.map +1 -1
  511. package/lib/types/components/design-system/ThemedText.js +2 -2
  512. package/lib/types/components/diffPatch.d.ts +55 -0
  513. package/lib/types/components/diffPatch.d.ts.map +1 -0
  514. package/lib/types/components/diffPatch.js +142 -0
  515. package/lib/types/components/kernelCatalog.d.ts +48 -0
  516. package/lib/types/components/kernelCatalog.d.ts.map +1 -0
  517. package/lib/types/components/kernelCatalog.js +53 -0
  518. package/lib/types/components/launchpadActions.d.ts +13 -6
  519. package/lib/types/components/launchpadActions.d.ts.map +1 -1
  520. package/lib/types/components/launchpadActions.js +26 -4
  521. package/lib/types/components/launchpadParams.d.ts +101 -0
  522. package/lib/types/components/launchpadParams.d.ts.map +1 -0
  523. package/lib/types/components/launchpadParams.js +171 -0
  524. package/lib/types/components/maidPortrait.d.ts +37 -5
  525. package/lib/types/components/maidPortrait.d.ts.map +1 -1
  526. package/lib/types/components/maidPortrait.js +73 -54
  527. package/lib/types/components/messages/AgentMessageFlow.d.ts +20 -0
  528. package/lib/types/components/messages/AgentMessageFlow.d.ts.map +1 -0
  529. package/lib/types/components/messages/AgentMessageFlow.js +37 -0
  530. package/lib/types/components/messages/AssistantThinkingMessage.d.ts +6 -1
  531. package/lib/types/components/messages/AssistantThinkingMessage.d.ts.map +1 -1
  532. package/lib/types/components/messages/AssistantThinkingMessage.js +29 -5
  533. package/lib/types/components/messages/AssistantToolUseMessage.d.ts +11 -2
  534. package/lib/types/components/messages/AssistantToolUseMessage.d.ts.map +1 -1
  535. package/lib/types/components/messages/AssistantToolUseMessage.js +289 -36
  536. package/lib/types/components/messages/TranscriptLeaves.d.ts +85 -0
  537. package/lib/types/components/messages/TranscriptLeaves.d.ts.map +1 -0
  538. package/lib/types/components/messages/TranscriptLeaves.js +74 -0
  539. package/lib/types/components/messages/agentTeam.d.ts +69 -0
  540. package/lib/types/components/messages/agentTeam.d.ts.map +1 -0
  541. package/lib/types/components/messages/agentTeam.js +53 -0
  542. package/lib/types/components/messages/liveOutputLines.d.ts +33 -0
  543. package/lib/types/components/messages/liveOutputLines.d.ts.map +1 -0
  544. package/lib/types/components/messages/liveOutputLines.js +100 -0
  545. package/lib/types/components/messages/subagentTranscript.d.ts +146 -0
  546. package/lib/types/components/messages/subagentTranscript.d.ts.map +1 -0
  547. package/lib/types/components/messages/subagentTranscript.js +304 -0
  548. package/lib/types/components/questions/AskUserQuestionPanel.d.ts +16 -1
  549. package/lib/types/components/questions/AskUserQuestionPanel.d.ts.map +1 -1
  550. package/lib/types/components/questions/AskUserQuestionPanel.js +76 -6
  551. package/lib/types/components/questions/PlanReviewPanel.d.ts +8 -3
  552. package/lib/types/components/questions/PlanReviewPanel.d.ts.map +1 -1
  553. package/lib/types/components/questions/PlanReviewPanel.js +11 -6
  554. package/lib/types/components/questions/ProviderModelEditor.d.ts +12 -0
  555. package/lib/types/components/questions/ProviderModelEditor.d.ts.map +1 -0
  556. package/lib/types/components/questions/ProviderModelEditor.js +266 -0
  557. package/lib/types/components/shimmer.d.ts +26 -0
  558. package/lib/types/components/shimmer.d.ts.map +1 -1
  559. package/lib/types/components/shimmer.js +26 -0
  560. package/lib/types/components/sidePanel/InfoPanel.d.ts.map +1 -1
  561. package/lib/types/components/sidePanel/InfoPanel.js +13 -8
  562. package/lib/types/components/sidePanel/PanelBar.d.ts +0 -24
  563. package/lib/types/components/sidePanel/PanelBar.d.ts.map +1 -1
  564. package/lib/types/components/sidePanel/PanelBar.js +55 -77
  565. package/lib/types/components/sidePanel/PanelStore.d.ts +3 -1
  566. package/lib/types/components/sidePanel/PanelStore.d.ts.map +1 -1
  567. package/lib/types/components/sidePanel/PanelStore.js +8 -4
  568. package/lib/types/components/sidePanel/SidePanelColumn.d.ts +3 -10
  569. package/lib/types/components/sidePanel/SidePanelColumn.d.ts.map +1 -1
  570. package/lib/types/components/sidePanel/SidePanelColumn.js +9 -12
  571. package/lib/types/components/sidePanel/TrajectoryPanel.d.ts.map +1 -1
  572. package/lib/types/components/sidePanel/TrajectoryPanel.js +78 -14
  573. package/lib/types/components/sidePanel/agentViewStore.d.ts +20 -0
  574. package/lib/types/components/sidePanel/agentViewStore.d.ts.map +1 -0
  575. package/lib/types/components/sidePanel/agentViewStore.js +26 -0
  576. package/lib/types/components/sidePanel/btw/BtwComposer.d.ts +50 -0
  577. package/lib/types/components/sidePanel/btw/BtwComposer.d.ts.map +1 -0
  578. package/lib/types/components/sidePanel/btw/BtwComposer.js +45 -0
  579. package/lib/types/components/sidePanel/btw/BtwPanelAdapter.d.ts +13 -0
  580. package/lib/types/components/sidePanel/btw/BtwPanelAdapter.d.ts.map +1 -0
  581. package/lib/types/components/sidePanel/btw/BtwPanelAdapter.js +147 -0
  582. package/lib/types/components/sidePanel/btw/BtwThreadScene.d.ts +14 -0
  583. package/lib/types/components/sidePanel/btw/BtwThreadScene.d.ts.map +1 -0
  584. package/lib/types/components/sidePanel/btw/BtwThreadScene.js +131 -0
  585. package/lib/types/components/sidePanel/btw/BtwThreadView.d.ts +30 -0
  586. package/lib/types/components/sidePanel/btw/BtwThreadView.d.ts.map +1 -0
  587. package/lib/types/components/sidePanel/btw/BtwThreadView.js +87 -0
  588. package/lib/types/components/sidePanel/btw/threads.d.ts +111 -0
  589. package/lib/types/components/sidePanel/btw/threads.d.ts.map +1 -0
  590. package/lib/types/components/sidePanel/btw/threads.js +302 -0
  591. package/lib/types/components/sidePanel/builtinPanels.d.ts.map +1 -1
  592. package/lib/types/components/sidePanel/builtinPanels.js +70 -30
  593. package/lib/types/components/sidePanel/companion/CompanionPanel.d.ts +4 -46
  594. package/lib/types/components/sidePanel/companion/CompanionPanel.d.ts.map +1 -1
  595. package/lib/types/components/sidePanel/companion/CompanionPanel.js +19 -55
  596. package/lib/types/components/sidePanel/companion/mood.d.ts +32 -0
  597. package/lib/types/components/sidePanel/companion/mood.d.ts.map +1 -1
  598. package/lib/types/components/sidePanel/companion/mood.js +44 -0
  599. package/lib/types/components/sidePanel/companion/skins.d.ts +34 -0
  600. package/lib/types/components/sidePanel/companion/skins.d.ts.map +1 -1
  601. package/lib/types/components/sidePanel/companion/skins.js +203 -29
  602. package/lib/types/components/splashFonts.d.ts +17 -9
  603. package/lib/types/components/splashFonts.d.ts.map +1 -1
  604. package/lib/types/components/splashFonts.js +119 -15
  605. package/lib/types/components/splashLayout.d.ts.map +1 -1
  606. package/lib/types/components/splashLayout.js +3 -1
  607. package/lib/types/components/subagentDetailMemory.d.ts +17 -0
  608. package/lib/types/components/subagentDetailMemory.d.ts.map +1 -0
  609. package/lib/types/components/subagentDetailMemory.js +28 -0
  610. package/lib/types/components/trajectory/Inspector.d.ts.map +1 -1
  611. package/lib/types/components/trajectory/Inspector.js +9 -0
  612. package/lib/types/components/trajectory/Ledger.d.ts.map +1 -1
  613. package/lib/types/components/trajectory/Ledger.js +7 -1
  614. package/lib/types/components/trajectory/scope.d.ts +64 -0
  615. package/lib/types/components/trajectory/scope.d.ts.map +1 -0
  616. package/lib/types/components/trajectory/scope.js +88 -0
  617. package/lib/types/components/trajectory/useTrajectoryScope.d.ts +42 -0
  618. package/lib/types/components/trajectory/useTrajectoryScope.d.ts.map +1 -0
  619. package/lib/types/components/trajectory/useTrajectoryScope.js +86 -0
  620. package/lib/types/customTheme.d.ts +4 -6
  621. package/lib/types/customTheme.d.ts.map +1 -1
  622. package/lib/types/customTheme.js +6 -8
  623. package/lib/types/dsh-adapter/approvals.d.ts +18 -5
  624. package/lib/types/dsh-adapter/approvals.d.ts.map +1 -1
  625. package/lib/types/dsh-adapter/approvals.js +17 -4
  626. package/lib/types/dsh-adapter/backend/session.d.ts +64 -0
  627. package/lib/types/dsh-adapter/backend/session.d.ts.map +1 -0
  628. package/lib/types/dsh-adapter/backend/session.js +291 -0
  629. package/lib/types/dsh-adapter/backend/translate.d.ts +58 -0
  630. package/lib/types/dsh-adapter/backend/translate.d.ts.map +1 -0
  631. package/lib/types/dsh-adapter/backend/translate.js +467 -0
  632. package/lib/types/dsh-adapter/backends.d.ts +49 -0
  633. package/lib/types/dsh-adapter/backends.d.ts.map +1 -0
  634. package/lib/types/dsh-adapter/backends.js +124 -0
  635. package/lib/types/dsh-adapter/channel/action-readiness.d.ts +16 -0
  636. package/lib/types/dsh-adapter/channel/action-readiness.d.ts.map +1 -1
  637. package/lib/types/dsh-adapter/channel/action-readiness.js +109 -0
  638. package/lib/types/dsh-adapter/channel/agent-view-projection.d.ts +2 -2
  639. package/lib/types/dsh-adapter/channel/agent-view-projection.d.ts.map +1 -1
  640. package/lib/types/dsh-adapter/channel/background-action.d.ts +2 -2
  641. package/lib/types/dsh-adapter/channel/background-action.d.ts.map +1 -1
  642. package/lib/types/dsh-adapter/channel/background-action.js +7 -5
  643. package/lib/types/dsh-adapter/channel/binding-events.d.ts +19 -9
  644. package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -1
  645. package/lib/types/dsh-adapter/channel/binding-events.js +58 -135
  646. package/lib/types/dsh-adapter/channel/binding.d.ts +61 -14
  647. package/lib/types/dsh-adapter/channel/binding.d.ts.map +1 -1
  648. package/lib/types/dsh-adapter/channel/binding.js +102 -35
  649. package/lib/types/dsh-adapter/channel/command-completions.d.ts +3 -0
  650. package/lib/types/dsh-adapter/channel/command-completions.d.ts.map +1 -1
  651. package/lib/types/dsh-adapter/channel/command-completions.js +33 -4
  652. package/lib/types/dsh-adapter/channel/compaction.d.ts.map +1 -1
  653. package/lib/types/dsh-adapter/channel/compaction.js +3 -2
  654. package/lib/types/dsh-adapter/channel/composer-images.d.ts +5 -0
  655. package/lib/types/dsh-adapter/channel/composer-images.d.ts.map +1 -1
  656. package/lib/types/dsh-adapter/channel/composer-images.js +4 -3
  657. package/lib/types/dsh-adapter/channel/core/actions.d.ts +39 -0
  658. package/lib/types/dsh-adapter/channel/core/actions.d.ts.map +1 -0
  659. package/lib/types/dsh-adapter/channel/core/actions.js +152 -0
  660. package/lib/types/dsh-adapter/channel/core/binding-feed.d.ts +145 -0
  661. package/lib/types/dsh-adapter/channel/core/binding-feed.d.ts.map +1 -0
  662. package/lib/types/dsh-adapter/channel/core/binding-feed.js +289 -0
  663. package/lib/types/dsh-adapter/channel/core/compose.d.ts +217 -0
  664. package/lib/types/dsh-adapter/channel/core/compose.d.ts.map +1 -0
  665. package/lib/types/dsh-adapter/channel/core/compose.js +938 -0
  666. package/lib/types/dsh-adapter/channel/core/files.d.ts +57 -0
  667. package/lib/types/dsh-adapter/channel/core/files.d.ts.map +1 -0
  668. package/lib/types/dsh-adapter/channel/core/files.js +45 -0
  669. package/lib/types/dsh-adapter/channel/core/host.d.ts +55 -0
  670. package/lib/types/dsh-adapter/channel/core/host.d.ts.map +1 -0
  671. package/lib/types/dsh-adapter/channel/core/host.js +116 -0
  672. package/lib/types/dsh-adapter/channel/core/local-actions.d.ts +46 -0
  673. package/lib/types/dsh-adapter/channel/core/local-actions.d.ts.map +1 -0
  674. package/lib/types/dsh-adapter/channel/core/local-actions.js +117 -0
  675. package/lib/types/dsh-adapter/channel/core/local-images.d.ts +20 -0
  676. package/lib/types/dsh-adapter/channel/core/local-images.d.ts.map +1 -0
  677. package/lib/types/dsh-adapter/channel/core/local-images.js +147 -0
  678. package/lib/types/dsh-adapter/channel/core/reports.d.ts +12 -0
  679. package/lib/types/dsh-adapter/channel/core/reports.d.ts.map +1 -0
  680. package/lib/types/dsh-adapter/channel/core/reports.js +77 -0
  681. package/lib/types/dsh-adapter/channel/core/session-controls.d.ts +39 -0
  682. package/lib/types/dsh-adapter/channel/core/session-controls.d.ts.map +1 -0
  683. package/lib/types/dsh-adapter/channel/core/session-controls.js +219 -0
  684. package/lib/types/dsh-adapter/channel/core/session-switch.d.ts +174 -0
  685. package/lib/types/dsh-adapter/channel/core/session-switch.d.ts.map +1 -0
  686. package/lib/types/dsh-adapter/channel/core/session-switch.js +390 -0
  687. package/lib/types/dsh-adapter/channel/core/sessions.d.ts +40 -0
  688. package/lib/types/dsh-adapter/channel/core/sessions.d.ts.map +1 -0
  689. package/lib/types/dsh-adapter/channel/core/sessions.js +268 -0
  690. package/lib/types/dsh-adapter/channel/decisions.d.ts +4 -3
  691. package/lib/types/dsh-adapter/channel/decisions.d.ts.map +1 -1
  692. package/lib/types/dsh-adapter/channel/decisions.js +4 -4
  693. package/lib/types/dsh-adapter/channel/emitter.d.ts +15 -2
  694. package/lib/types/dsh-adapter/channel/emitter.d.ts.map +1 -1
  695. package/lib/types/dsh-adapter/channel/emitter.js +5 -3
  696. package/lib/types/dsh-adapter/channel/extensions.d.ts +36 -0
  697. package/lib/types/dsh-adapter/channel/extensions.d.ts.map +1 -0
  698. package/lib/types/dsh-adapter/channel/extensions.js +714 -0
  699. package/lib/types/dsh-adapter/channel/ide-selection.d.ts +1 -10
  700. package/lib/types/dsh-adapter/channel/ide-selection.d.ts.map +1 -1
  701. package/lib/types/dsh-adapter/channel/ide-selection.js +4 -46
  702. package/lib/types/dsh-adapter/channel/input-actions.d.ts +27 -4
  703. package/lib/types/dsh-adapter/channel/input-actions.d.ts.map +1 -1
  704. package/lib/types/dsh-adapter/channel/input-actions.js +240 -21
  705. package/lib/types/dsh-adapter/channel/input-delivery.d.ts +21 -5
  706. package/lib/types/dsh-adapter/channel/input-delivery.d.ts.map +1 -1
  707. package/lib/types/dsh-adapter/channel/input-delivery.js +65 -27
  708. package/lib/types/dsh-adapter/channel/local-actions.d.ts +10 -32
  709. package/lib/types/dsh-adapter/channel/local-actions.d.ts.map +1 -1
  710. package/lib/types/dsh-adapter/channel/local-actions.js +10 -78
  711. package/lib/types/dsh-adapter/channel/local-fs.d.ts +3 -0
  712. package/lib/types/dsh-adapter/channel/local-fs.d.ts.map +1 -0
  713. package/lib/types/dsh-adapter/channel/local-fs.js +46 -0
  714. package/lib/types/dsh-adapter/channel/mode-actions.d.ts +3 -3
  715. package/lib/types/dsh-adapter/channel/mode-actions.d.ts.map +1 -1
  716. package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts +2 -2
  717. package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts.map +1 -1
  718. package/lib/types/dsh-adapter/channel/model-actions.d.ts +3 -3
  719. package/lib/types/dsh-adapter/channel/model-actions.d.ts.map +1 -1
  720. package/lib/types/dsh-adapter/channel/model-actions.js +38 -5
  721. package/lib/types/dsh-adapter/channel/model-switch.d.ts +2 -2
  722. package/lib/types/dsh-adapter/channel/model-switch.d.ts.map +1 -1
  723. package/lib/types/dsh-adapter/channel/model-switch.js +9 -6
  724. package/lib/types/dsh-adapter/channel/preferences.d.ts +1 -1
  725. package/lib/types/dsh-adapter/channel/preferences.d.ts.map +1 -1
  726. package/lib/types/dsh-adapter/channel/preferences.js +16 -0
  727. package/lib/types/dsh-adapter/channel/projection.d.ts +16 -13
  728. package/lib/types/dsh-adapter/channel/projection.d.ts.map +1 -1
  729. package/lib/types/dsh-adapter/channel/projection.js +38 -1143
  730. package/lib/types/dsh-adapter/channel/question-record.d.ts +3 -75
  731. package/lib/types/dsh-adapter/channel/question-record.d.ts.map +1 -1
  732. package/lib/types/dsh-adapter/channel/question-record.js +3 -107
  733. package/lib/types/dsh-adapter/channel/session-activity.d.ts +9 -0
  734. package/lib/types/dsh-adapter/channel/session-activity.d.ts.map +1 -0
  735. package/lib/types/dsh-adapter/channel/session-activity.js +42 -0
  736. package/lib/types/dsh-adapter/channel/session-adoption.d.ts +4 -4
  737. package/lib/types/dsh-adapter/channel/session-adoption.d.ts.map +1 -1
  738. package/lib/types/dsh-adapter/channel/session-adoption.js +3 -1
  739. package/lib/types/dsh-adapter/channel/session-fork.d.ts +1 -1
  740. package/lib/types/dsh-adapter/channel/session-fork.d.ts.map +1 -1
  741. package/lib/types/dsh-adapter/channel/session-fork.js +2 -1
  742. package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts +7 -3
  743. package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts.map +1 -1
  744. package/lib/types/dsh-adapter/channel/session-live-adoption.js +1 -1
  745. package/lib/types/dsh-adapter/channel/session-metadata.d.ts +2 -9
  746. package/lib/types/dsh-adapter/channel/session-metadata.d.ts.map +1 -1
  747. package/lib/types/dsh-adapter/channel/session-reset.d.ts +1 -1
  748. package/lib/types/dsh-adapter/channel/session-reset.d.ts.map +1 -1
  749. package/lib/types/dsh-adapter/channel/session-reset.js +4 -0
  750. package/lib/types/dsh-adapter/channel/session-resume.d.ts +5 -10
  751. package/lib/types/dsh-adapter/channel/session-resume.d.ts.map +1 -1
  752. package/lib/types/dsh-adapter/channel/session-resume.js +74 -113
  753. package/lib/types/dsh-adapter/channel/session-rewind.d.ts +4 -4
  754. package/lib/types/dsh-adapter/channel/session-rewind.d.ts.map +1 -1
  755. package/lib/types/dsh-adapter/channel/session-rewind.js +7 -6
  756. package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts +4 -4
  757. package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts.map +1 -1
  758. package/lib/types/dsh-adapter/channel/session-tree-actions.js +8 -7
  759. package/lib/types/dsh-adapter/channel/settings-host.d.ts +1 -1
  760. package/lib/types/dsh-adapter/channel/settings-host.d.ts.map +1 -1
  761. package/lib/types/dsh-adapter/channel/settings-host.js +8 -0
  762. package/lib/types/dsh-adapter/channel/skill-catalog.d.ts +5 -1
  763. package/lib/types/dsh-adapter/channel/skill-catalog.d.ts.map +1 -1
  764. package/lib/types/dsh-adapter/channel/skill-catalog.js +2 -2
  765. package/lib/types/dsh-adapter/channel/state.d.ts +72 -1
  766. package/lib/types/dsh-adapter/channel/state.d.ts.map +1 -1
  767. package/lib/types/dsh-adapter/channel/state.js +7 -3
  768. package/lib/types/dsh-adapter/channel/subagent-projection.d.ts +58 -3
  769. package/lib/types/dsh-adapter/channel/subagent-projection.d.ts.map +1 -1
  770. package/lib/types/dsh-adapter/channel/subagent-projection.js +153 -9
  771. package/lib/types/dsh-adapter/channel/subagent-transcript.d.ts +114 -0
  772. package/lib/types/dsh-adapter/channel/subagent-transcript.d.ts.map +1 -0
  773. package/lib/types/dsh-adapter/channel/subagent-transcript.js +279 -0
  774. package/lib/types/dsh-adapter/channel/transcript.d.ts +7 -15
  775. package/lib/types/dsh-adapter/channel/transcript.d.ts.map +1 -1
  776. package/lib/types/dsh-adapter/channel/transcript.js +17 -21
  777. package/lib/types/dsh-adapter/channel/types.d.ts +16 -7
  778. package/lib/types/dsh-adapter/channel/types.d.ts.map +1 -1
  779. package/lib/types/dsh-adapter/channel/usage.d.ts +3 -23
  780. package/lib/types/dsh-adapter/channel/usage.d.ts.map +1 -1
  781. package/lib/types/dsh-adapter/channel/usage.js +5 -111
  782. package/lib/types/dsh-adapter/channel/workspace-actions.d.ts.map +1 -1
  783. package/lib/types/dsh-adapter/channel/workspace-actions.js +2 -1
  784. package/lib/types/dsh-adapter/channel.d.ts +17 -8
  785. package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
  786. package/lib/types/dsh-adapter/channel.js +24 -1059
  787. package/lib/types/dsh-adapter/context-occupancy.d.ts +6 -1
  788. package/lib/types/dsh-adapter/context-occupancy.d.ts.map +1 -1
  789. package/lib/types/dsh-adapter/context-occupancy.js +6 -1
  790. package/lib/types/dsh-adapter/decision-guard.d.ts +24 -0
  791. package/lib/types/dsh-adapter/decision-guard.d.ts.map +1 -1
  792. package/lib/types/dsh-adapter/decision-guard.js +44 -0
  793. package/lib/types/dsh-adapter/extension-events.d.ts +4 -1
  794. package/lib/types/dsh-adapter/extension-events.d.ts.map +1 -1
  795. package/lib/types/dsh-adapter/extension-events.js +22 -10
  796. package/lib/types/dsh-adapter/index.d.ts +41 -3
  797. package/lib/types/dsh-adapter/index.d.ts.map +1 -1
  798. package/lib/types/dsh-adapter/index.js +28 -1
  799. package/lib/types/dsh-adapter/jobs.d.ts +5 -3
  800. package/lib/types/dsh-adapter/jobs.d.ts.map +1 -1
  801. package/lib/types/dsh-adapter/jobs.js +53 -14
  802. package/lib/types/dsh-adapter/migrate/parse/jsonl.d.ts +1 -16
  803. package/lib/types/dsh-adapter/migrate/parse/jsonl.d.ts.map +1 -1
  804. package/lib/types/dsh-adapter/migrate/parse/jsonl.js +3 -29
  805. package/lib/types/dsh-adapter/oauth-credential-source.d.ts +34 -0
  806. package/lib/types/dsh-adapter/oauth-credential-source.d.ts.map +1 -0
  807. package/lib/types/dsh-adapter/oauth-credential-source.js +66 -0
  808. package/lib/types/dsh-adapter/plugin.d.ts +38 -2
  809. package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
  810. package/lib/types/dsh-adapter/plugin.js +546 -110
  811. package/lib/types/dsh-adapter/provider-model-capabilities.d.ts +10 -0
  812. package/lib/types/dsh-adapter/provider-model-capabilities.d.ts.map +1 -0
  813. package/lib/types/dsh-adapter/provider-model-capabilities.js +80 -0
  814. package/lib/types/dsh-adapter/providerWizard.d.ts +8 -2
  815. package/lib/types/dsh-adapter/providerWizard.d.ts.map +1 -1
  816. package/lib/types/dsh-adapter/providerWizard.js +118 -52
  817. package/lib/types/dsh-adapter/questions.d.ts +29 -124
  818. package/lib/types/dsh-adapter/questions.d.ts.map +1 -1
  819. package/lib/types/dsh-adapter/questions.js +33 -267
  820. package/lib/types/dsh-adapter/recap.d.ts +3 -15
  821. package/lib/types/dsh-adapter/recap.d.ts.map +1 -1
  822. package/lib/types/dsh-adapter/recap.js +3 -46
  823. package/lib/types/dsh-adapter/sanitize.d.ts +4 -44
  824. package/lib/types/dsh-adapter/sanitize.d.ts.map +1 -1
  825. package/lib/types/dsh-adapter/sanitize.js +4 -84
  826. package/lib/types/dsh-adapter/session-mount-heartbeat.d.ts +3 -1
  827. package/lib/types/dsh-adapter/session-mount-heartbeat.d.ts.map +1 -1
  828. package/lib/types/dsh-adapter/session-mount-heartbeat.js +4 -2
  829. package/lib/types/dsh-adapter/sessions/digest.d.ts +18 -3
  830. package/lib/types/dsh-adapter/sessions/digest.d.ts.map +1 -1
  831. package/lib/types/dsh-adapter/sessions/digest.js +60 -27
  832. package/lib/types/dsh-adapter/sessions/list.d.ts.map +1 -1
  833. package/lib/types/dsh-adapter/sessions/list.js +6 -4
  834. package/lib/types/dsh-adapter/sessions/recovery.d.ts +2 -2
  835. package/lib/types/dsh-adapter/sessions/recovery.d.ts.map +1 -1
  836. package/lib/types/dsh-adapter/sessions/recovery.js +23 -14
  837. package/lib/types/dsh-adapter/sessions/store.d.ts +2 -0
  838. package/lib/types/dsh-adapter/sessions/store.d.ts.map +1 -1
  839. package/lib/types/dsh-adapter/sessions/store.js +1 -0
  840. package/lib/types/dsh-adapter/sessions/types.d.ts +2 -0
  841. package/lib/types/dsh-adapter/sessions/types.d.ts.map +1 -1
  842. package/lib/types/dsh-adapter/sideQuestion.d.ts.map +1 -1
  843. package/lib/types/dsh-adapter/sideQuestion.js +3 -13
  844. package/lib/types/dsh-adapter/subagents.d.ts.map +1 -1
  845. package/lib/types/dsh-adapter/subagents.js +7 -0
  846. package/lib/types/dsh-adapter/themes.d.ts +1 -1
  847. package/lib/types/dsh-adapter/themes.d.ts.map +1 -1
  848. package/lib/types/dsh-adapter/trajectory/agent-source.d.ts +84 -0
  849. package/lib/types/dsh-adapter/trajectory/agent-source.d.ts.map +1 -0
  850. package/lib/types/dsh-adapter/trajectory/agent-source.js +601 -0
  851. package/lib/types/dsh-adapter/trajectory/guards.d.ts +31 -1
  852. package/lib/types/dsh-adapter/trajectory/guards.d.ts.map +1 -1
  853. package/lib/types/dsh-adapter/trajectory/guards.js +28 -0
  854. package/lib/types/dsh-adapter/trajectory/index.d.ts +3 -1
  855. package/lib/types/dsh-adapter/trajectory/index.d.ts.map +1 -1
  856. package/lib/types/dsh-adapter/trajectory/index.js +1 -0
  857. package/lib/types/dsh-adapter/trajectory/inspect.d.ts +7 -0
  858. package/lib/types/dsh-adapter/trajectory/inspect.d.ts.map +1 -1
  859. package/lib/types/dsh-adapter/trajectory/inspect.js +70 -2
  860. package/lib/types/dsh-adapter/trajectory/projection.d.ts +4 -0
  861. package/lib/types/dsh-adapter/trajectory/projection.d.ts.map +1 -1
  862. package/lib/types/dsh-adapter/trajectory/projection.js +36 -0
  863. package/lib/types/dsh-adapter/trajectory/types.d.ts +13 -0
  864. package/lib/types/dsh-adapter/trajectory/types.d.ts.map +1 -1
  865. package/lib/types/effortPrefs.d.ts +7 -0
  866. package/lib/types/effortPrefs.d.ts.map +1 -1
  867. package/lib/types/effortPrefs.js +11 -2
  868. package/lib/types/handoffAck.d.ts +57 -0
  869. package/lib/types/handoffAck.d.ts.map +1 -0
  870. package/lib/types/handoffAck.js +154 -0
  871. package/lib/types/handoffEvents.d.ts +52 -0
  872. package/lib/types/handoffEvents.d.ts.map +1 -0
  873. package/lib/types/handoffEvents.js +128 -0
  874. package/lib/types/i18n.d.ts +3189 -68
  875. package/lib/types/i18n.d.ts.map +1 -1
  876. package/lib/types/i18n.js +855 -9
  877. package/lib/types/ink/colorize.d.ts.map +1 -1
  878. package/lib/types/ink/colorize.js +8 -2
  879. package/lib/types/ink/components/AlternateScreen.d.ts +12 -1
  880. package/lib/types/ink/components/AlternateScreen.d.ts.map +1 -1
  881. package/lib/types/ink/components/AlternateScreen.js +25 -4
  882. package/lib/types/ink/components/App.d.ts +5 -1
  883. package/lib/types/ink/components/App.d.ts.map +1 -1
  884. package/lib/types/ink/components/App.js +52 -5
  885. package/lib/types/ink/components/Image.d.ts +8 -1
  886. package/lib/types/ink/components/Image.d.ts.map +1 -1
  887. package/lib/types/ink/components/Image.js +2 -2
  888. package/lib/types/ink/components/Text.d.ts +8 -1
  889. package/lib/types/ink/components/Text.d.ts.map +1 -1
  890. package/lib/types/ink/components/Text.js +11 -1
  891. package/lib/types/ink/dom.d.ts.map +1 -1
  892. package/lib/types/ink/dom.js +75 -3
  893. package/lib/types/ink/hooks/use-input.d.ts.map +1 -1
  894. package/lib/types/ink/hooks/use-input.js +9 -4
  895. package/lib/types/ink/ink.d.ts.map +1 -1
  896. package/lib/types/ink/ink.js +8 -2
  897. package/lib/types/ink/kitty-graphics.d.ts +7 -2
  898. package/lib/types/ink/kitty-graphics.d.ts.map +1 -1
  899. package/lib/types/ink/kitty-graphics.js +15 -7
  900. package/lib/types/ink/node-cache.d.ts +15 -1
  901. package/lib/types/ink/node-cache.d.ts.map +1 -1
  902. package/lib/types/ink/node-cache.js +4 -1
  903. package/lib/types/ink/output.d.ts.map +1 -1
  904. package/lib/types/ink/output.js +2 -0
  905. package/lib/types/ink/parse-keypress.d.ts +13 -0
  906. package/lib/types/ink/parse-keypress.d.ts.map +1 -1
  907. package/lib/types/ink/parse-keypress.js +438 -19
  908. package/lib/types/ink/reconciler.d.ts.map +1 -1
  909. package/lib/types/ink/reconciler.js +9 -0
  910. package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
  911. package/lib/types/ink/render-node-to-output.js +200 -4
  912. package/lib/types/ink/render-stats.d.ts +35 -0
  913. package/lib/types/ink/render-stats.d.ts.map +1 -0
  914. package/lib/types/ink/render-stats.js +53 -0
  915. package/lib/types/ink/sixel-codec.d.ts +11 -1
  916. package/lib/types/ink/sixel-codec.d.ts.map +1 -1
  917. package/lib/types/ink/sixel-codec.js +10 -3
  918. package/lib/types/ink/sixel-graphics.js +2 -2
  919. package/lib/types/ink/styles.d.ts +46 -0
  920. package/lib/types/ink/styles.d.ts.map +1 -1
  921. package/lib/types/ink/terminal-image.d.ts +7 -0
  922. package/lib/types/ink/terminal-image.d.ts.map +1 -1
  923. package/lib/types/ink/terminal-querier.d.ts +1 -1
  924. package/lib/types/ink/terminal-querier.js +4 -4
  925. package/lib/types/ink/text-decoration.d.ts +49 -0
  926. package/lib/types/ink/text-decoration.d.ts.map +1 -0
  927. package/lib/types/ink/text-decoration.js +235 -0
  928. package/lib/types/ink/update-overflow-guard.d.ts +9 -0
  929. package/lib/types/ink/update-overflow-guard.d.ts.map +1 -1
  930. package/lib/types/ink/update-overflow-guard.js +41 -0
  931. package/lib/types/ink/wrap-text.d.ts.map +1 -1
  932. package/lib/types/ink/wrap-text.js +5 -1
  933. package/lib/types/kernelPrefs.d.ts +51 -0
  934. package/lib/types/kernelPrefs.d.ts.map +1 -0
  935. package/lib/types/kernelPrefs.js +126 -0
  936. package/lib/types/modelRecents.d.ts +10 -2
  937. package/lib/types/modelRecents.d.ts.map +1 -1
  938. package/lib/types/modelRecents.js +20 -7
  939. package/lib/types/screens/AgentTranscriptScene.d.ts +42 -0
  940. package/lib/types/screens/AgentTranscriptScene.d.ts.map +1 -0
  941. package/lib/types/screens/AgentTranscriptScene.js +269 -0
  942. package/lib/types/screens/Chat.d.ts +45 -7
  943. package/lib/types/screens/Chat.d.ts.map +1 -1
  944. package/lib/types/screens/Chat.js +625 -113
  945. package/lib/types/screens/Launchpad.d.ts +24 -7
  946. package/lib/types/screens/Launchpad.d.ts.map +1 -1
  947. package/lib/types/screens/Launchpad.js +147 -28
  948. package/lib/types/screens/SessionSupervisor.d.ts +3 -3
  949. package/lib/types/screens/SessionSupervisor.d.ts.map +1 -1
  950. package/lib/types/screens/SessionSupervisor.js +69 -5
  951. package/lib/types/screens/Settings.d.ts.map +1 -1
  952. package/lib/types/screens/Settings.js +211 -7
  953. package/lib/types/screens/StatusLine.d.ts +40 -1
  954. package/lib/types/screens/StatusLine.d.ts.map +1 -1
  955. package/lib/types/screens/StatusLine.js +131 -19
  956. package/lib/types/screens/StatusMetrics.d.ts +53 -17
  957. package/lib/types/screens/StatusMetrics.d.ts.map +1 -1
  958. package/lib/types/screens/StatusMetrics.js +141 -30
  959. package/lib/types/screens/TrajectoryScene.d.ts.map +1 -1
  960. package/lib/types/screens/TrajectoryScene.js +74 -12
  961. package/lib/types/screens/chat/backendCommands.d.ts +37 -0
  962. package/lib/types/screens/chat/backendCommands.d.ts.map +1 -0
  963. package/lib/types/screens/chat/backendCommands.js +51 -0
  964. package/lib/types/screens/chat/useBackendChannels.d.ts +20 -0
  965. package/lib/types/screens/chat/useBackendChannels.d.ts.map +1 -0
  966. package/lib/types/screens/chat/useBackendChannels.js +117 -0
  967. package/lib/types/screens/chat/useKernelPicker.d.ts +23 -0
  968. package/lib/types/screens/chat/useKernelPicker.d.ts.map +1 -0
  969. package/lib/types/screens/chat/useKernelPicker.js +72 -0
  970. package/lib/types/screens/chatOverlay.d.ts +32 -2
  971. package/lib/types/screens/chatOverlay.d.ts.map +1 -1
  972. package/lib/types/screens/chatOverlay.js +9 -0
  973. package/lib/types/screens/sessionSupervisor/useForeignSessions.d.ts.map +1 -1
  974. package/lib/types/screens/sessionSupervisor/useForeignSessions.js +5 -1
  975. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts +14 -0
  976. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts.map +1 -1
  977. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.js +97 -22
  978. package/lib/types/sessionHistory.d.ts +18 -1
  979. package/lib/types/sessionHistory.d.ts.map +1 -1
  980. package/lib/types/sessionHistory.js +46 -4
  981. package/lib/types/sessionPins.d.ts +7 -0
  982. package/lib/types/sessionPins.d.ts.map +1 -1
  983. package/lib/types/sessionPins.js +9 -0
  984. package/lib/types/sessions/resumeFailure.d.ts.map +1 -1
  985. package/lib/types/sessions/resumeFailure.js +2 -1
  986. package/lib/types/settings/definitions.d.ts +74 -0
  987. package/lib/types/settings/definitions.d.ts.map +1 -1
  988. package/lib/types/settings/definitions.js +50 -4
  989. package/lib/types/terminal-utils/hyperlink.d.ts +2 -2
  990. package/lib/types/terminal-utils/hyperlink.d.ts.map +1 -1
  991. package/lib/types/terminal-utils/hyperlink.js +21 -4
  992. package/lib/types/terminal-utils/markdown.d.ts +34 -6
  993. package/lib/types/terminal-utils/markdown.d.ts.map +1 -1
  994. package/lib/types/terminal-utils/markdown.js +257 -66
  995. package/lib/types/theme.d.ts +49 -8
  996. package/lib/types/theme.d.ts.map +1 -1
  997. package/lib/types/theme.js +514 -18
  998. package/lib/types/tips.js +2 -2
  999. package/lib/types/trajectory/effortIgnition.d.ts +25 -7
  1000. package/lib/types/trajectory/effortIgnition.d.ts.map +1 -1
  1001. package/lib/types/trajectory/effortIgnition.js +106 -34
  1002. package/lib/types/trajectory/window.d.ts +26 -0
  1003. package/lib/types/trajectory/window.d.ts.map +1 -0
  1004. package/lib/types/trajectory/window.js +27 -0
  1005. package/lib/types/tuiDisplayPrefs.d.ts +38 -1
  1006. package/lib/types/tuiDisplayPrefs.d.ts.map +1 -1
  1007. package/lib/types/tuiDisplayPrefs.js +45 -1
  1008. package/lib/types/update.d.ts +88 -3
  1009. package/lib/types/update.d.ts.map +1 -1
  1010. package/lib/types/update.js +285 -18
  1011. package/lib/types/utils/crashDetail.d.ts +56 -0
  1012. package/lib/types/utils/crashDetail.d.ts.map +1 -0
  1013. package/lib/types/utils/crashDetail.js +175 -0
  1014. package/lib/types/utils/imageResize.d.ts +9 -23
  1015. package/lib/types/utils/imageResize.d.ts.map +1 -1
  1016. package/lib/types/utils/imageResize.js +24 -20
  1017. package/lib/types/utils/inputPaste.d.ts +9 -8
  1018. package/lib/types/utils/inputPaste.d.ts.map +1 -1
  1019. package/lib/types/utils/inputPaste.js +53 -16
  1020. package/lib/types/utils/jsonl.d.ts +24 -0
  1021. package/lib/types/utils/jsonl.d.ts.map +1 -0
  1022. package/lib/types/utils/jsonl.js +36 -0
  1023. package/package.json +18 -2
@@ -1 +1 @@
1
- {"version":3,"file":"PromptInput.d.ts","sourceRoot":"","sources":["../../../src/components/PromptInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AA6BzB,OAAO,KAAK,EAAE,SAAS,IAAI,OAAO,EAAE,MAAM,iCAAiC,CAAA;AAC3E,OAAO,KAAK,EACV,gBAAgB,EAGjB,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAA;AAY1E,OAAO,EAIL,KAAK,gBAAgB,EAEtB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAkOjF;gFACgF;AAChF,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GACzC,gBAAgB,EAAE,CAWpB;AA+MD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,IAAI,OAAO,CAAA;IAClB,yFAAyF;IACzF,IAAI,IAAI,MAAM,CAAA;IACd,4EAA4E;IAC5E,aAAa,CAAC,IAAI,SAAS;QAAE,KAAK,EAAE,eAAe,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACtE,KAAK,IAAI,IAAI,CAAA;IACb;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;IAC5B;;;;;OAKG;IACH,oBAAoB,IAAI,OAAO,CAAA;IAC/B,yEAAyE;IACzE,aAAa,IAAI,OAAO,CAAA;IACxB,2EAA2E;IAC3E,SAAS,IAAI,OAAO,CAAA;IACpB;yEACqE;IACrE,SAAS,IAAI,OAAO,CAAA;CAAC;AAEvB;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAA;IAChB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,KAAK,OAAO,CAAA;IACrE;;;;;;;;;;;;;;OAcG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,0EAA0E;IAC1E,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,IAAI,IAAI,CAAA;IACpB;;;OAGG;IACH,YAAY,CACV,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,gBAAgB,EAAE,GAClC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC7B,6EAA6E;IAC7E,eAAe,EAAE,OAAO,CAAA;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,cAAc,CAAC,IAAI,IAAI,CAAA;IACvB,kEAAkE;IAClE,eAAe,CAAC,IAAI,IAAI,CAAA;IACxB;;;OAGG;IACH,mBAAmB,CAAC,IAAI,IAAI,CAAA;IAC5B;;;;;;;;OAQG;IACH,cAAc,CAAC,IAAI,IAAI,CAAA;IACvB;;;;OAIG;IACH,4BAA4B,CAAC,EAAE,MAAM,CAAA;IACrC,0EAA0E;IAC1E,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAA;IACxD;;;;;;;OAOG;IACH,YAAY,CAAC,CAAC,KAAK,EAAE,eAAe,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAAA;IAC7G;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,qBAAqB,CAAC,IAAI,IAAI,CAAA;IAC9B;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,eAAe,EACf,SAAiB,EACjB,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,4BAA4B,EAC5B,aAAa,EACb,YAAY,EACZ,gBAAwB,EACxB,qBAAqB,EACrB,GAAc,GACf,EAAE,gBAAgB,4BA0lHlB"}
1
+ {"version":3,"file":"PromptInput.d.ts","sourceRoot":"","sources":["../../../src/components/PromptInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AA+BzB,OAAO,KAAK,EAAE,SAAS,IAAI,OAAO,EAAE,MAAM,iCAAiC,CAAA;AAC3E,OAAO,KAAK,EACV,gBAAgB,EAGjB,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAA;AAa1E,OAAO,EAIL,KAAK,gBAAgB,EAEtB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAkOjF;gFACgF;AAChF,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GACzC,gBAAgB,EAAE,CAWpB;AA+MD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,IAAI,OAAO,CAAA;IAClB,yFAAyF;IACzF,IAAI,IAAI,MAAM,CAAA;IACd,4EAA4E;IAC5E,aAAa,CAAC,IAAI,SAAS;QAAE,KAAK,EAAE,eAAe,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACtE,KAAK,IAAI,IAAI,CAAA;IACb;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;IAC5B;;;;;OAKG;IACH,oBAAoB,IAAI,OAAO,CAAA;IAC/B,yEAAyE;IACzE,aAAa,IAAI,OAAO,CAAA;IACxB,2EAA2E;IAC3E,SAAS,IAAI,OAAO,CAAA;IACpB;yEACqE;IACrE,SAAS,IAAI,OAAO,CAAA;CAAC;AAEvB;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAA;IAChB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,KAAK,OAAO,CAAA;IACrE;;;;;;;;;;;;;;OAcG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,0EAA0E;IAC1E,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,IAAI,IAAI,CAAA;IACpB;;;OAGG;IACH,YAAY,CACV,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,gBAAgB,EAAE,GAClC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC7B,6EAA6E;IAC7E,eAAe,EAAE,OAAO,CAAA;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,cAAc,CAAC,IAAI,IAAI,CAAA;IACvB,kEAAkE;IAClE,eAAe,CAAC,IAAI,IAAI,CAAA;IACxB;;;OAGG;IACH,mBAAmB,CAAC,IAAI,IAAI,CAAA;IAC5B;;;;;;;;OAQG;IACH,cAAc,CAAC,IAAI,IAAI,CAAA;IACvB;;;;OAIG;IACH,4BAA4B,CAAC,EAAE,MAAM,CAAA;IACrC,0EAA0E;IAC1E,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAA;IACxD;;;;;;;OAOG;IACH,YAAY,CAAC,CAAC,KAAK,EAAE,eAAe,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAAA;IAC7G;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,qBAAqB,CAAC,IAAI,IAAI,CAAA;IAC9B;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,eAAe,EACf,SAAiB,EACjB,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,4BAA4B,EAC5B,aAAa,EACb,YAAY,EACZ,gBAAwB,EACxB,qBAAqB,EACrB,GAAc,GACf,EAAE,gBAAgB,4BAw3HlB"}
@@ -7,11 +7,12 @@ import { constants as fsConstants } from 'node:fs';
7
7
  import { open, unlink } from 'node:fs/promises';
8
8
  import { basename, resolve } from 'node:path';
9
9
  import { t } from '../i18n.js';
10
+ import { kernelDisplayName } from './kernelCatalog.js';
10
11
  import { Box, Text, useInput, useTerminalSize, useTheme } from '../ui.js';
11
12
  import { EffortChargeGlyph } from './EffortChargeGlyph.js';
12
13
  import { EffortInputBorder } from './EffortInputBorder.js';
13
14
  import { EffortTierBadge } from './EffortTierBadge.js';
14
- import { isLightThemeActive } from '../theme.js';
15
+ import { cursorGlyphColor, getTheme } from '../theme.js';
15
16
  import { sessionColorHex } from '../terminal-utils/sessionColors.js';
16
17
  import { useDeclaredCursor } from '../ink/hooks/use-declared-cursor.js';
17
18
  import { TerminalWriteContext } from '../ink/useTerminalNotification.js';
@@ -26,7 +27,7 @@ import { formatClipboardInsert, readClipboard } from '../utils/clipboard.js';
26
27
  import { imagePathMediaType, parsePastedImagePath, stageClipboardFilePaths } from '../utils/pastedImagePath.js';
27
28
  import { editInExternalEditor } from '../utils/externalEditor.js';
28
29
  import { setPromptEditorNode, EditorButton } from './PromptEditor.js';
29
- import { isHiddenCommandName, parseCommandName } from '../commands.js';
30
+ import { isHiddenCommandName, isUnavailableLocalCommand, parseCommandName, workingHoldOf } from '../commands.js';
30
31
  import { appendHistory, HISTORY_LIMIT, historyProjectKey, loadHistoryOldestFirst } from '../history.js';
31
32
  import { mentionAtCaret } from '../utils/mentions.js';
32
33
  import { preserveSelection } from '../utils/fileSuggestions.js';
@@ -35,7 +36,8 @@ import { actionMatches } from '../utils/keymap.js';
35
36
  import { CommandSuggestions } from './CommandSuggestions.js';
36
37
  import { FileSuggestions } from './FileSuggestions.js';
37
38
  import { HelpMenu } from './HelpMenu.js';
38
- import { OverlayAbove } from './OverlayAbove.js';
39
+ import { OverlayAbove, useOverlayListRows } from './OverlayAbove.js';
40
+ import { listWindow } from './listWindow.js';
39
41
  import { SuggestionCard, cardContentWidth } from './SuggestionCard.js';
40
42
  import { filterLiveImageBindings, isUsableDraftSnapshot, resolveBindingGeneration, } from './promptDraftCache.js';
41
43
  export { sanitizeEditableText, sanitizePastedText } from '../utils/inputPaste.js';
@@ -421,6 +423,23 @@ const DOUBLE_CLICK_MS = 500;
421
423
  */
422
424
  export function PromptInput({ channel, toastSuppressed, suspended = false, draftCache, helpOpen, onToggleHelp, onRunCommand, selectionActive, fillText, onFillConsumed, onRewindRequest, onBackgroundRequest, onOpenSessions, backgroundAgentsNeedingInput, controllerRef, onCaretImage, caretPreviewOpen = false, onDismissCaretPreview, now = Date.now, }) {
423
425
  const [themeName] = useTheme();
426
+ /**
427
+ * Caret fill. The face is self-drawn (the native cursor is hidden), and it
428
+ * used to be `inverse` only — i.e. always the ink color, which a theme whose
429
+ * input surface is already ink-adjacent cannot make readable. `cursor` names
430
+ * the block fill, and the glyph on it is whichever ink contrasts with that
431
+ * fill (cursorGlyphColor) — `inverseText` alone cannot serve a light caret;
432
+ * empty keeps the inverse-video caret for palettes that predate the key.
433
+ *
434
+ * A palette a legacy runtime resolver returns can be missing the key
435
+ * altogether (normalizeThemePalette hands such a palette back untouched), so
436
+ * the undefined case normalizes here — ONE place, both consumers below read
437
+ * `''` and take the inverse path. Without it the caret renders with no
438
+ * background at all (the native cursor is hidden: the caret disappears).
439
+ */
440
+ const cursorTheme = getTheme(themeName);
441
+ const cursorColor = cursorTheme.cursor ?? '';
442
+ const cursorGlyph = cursorGlyphColor(cursorTheme);
424
443
  // Raw stdout writer for OSC 52 clipboard writes (selection copy) — must
425
444
  // bypass the frame pipeline; null outside a mounted Ink App.
426
445
  const writeRaw = React.useContext(TerminalWriteContext);
@@ -573,6 +592,15 @@ export function PromptInput({ channel, toastSuppressed, suspended = false, draft
573
592
  const [homeHovered, setHomeHovered] = React.useState(false);
574
593
  /** Pointer over the input box (drives the hover peek card). */
575
594
  const [hovered, setHovered] = React.useState(false);
595
+ /** Highlighted row of the docked-queue selector (null = inactive; the
596
+ * index runs over the docked subset of `channel.pending`, oldest first).
597
+ * The ref mirrors it for the deferred consumeEscape controller closure. */
598
+ const [dockSelected, setDockSelectedState] = React.useState(null);
599
+ const dockSelectedRef = React.useRef(null);
600
+ const setDockSelected = (index) => {
601
+ dockSelectedRef.current = index;
602
+ setDockSelectedState(index);
603
+ };
576
604
  /** 120ms grace so the pointer crossing the input border row from the
577
605
  * chip up onto the peek card never flickers the card. */
578
606
  const hoverLeaveTimerRef = React.useRef(null);
@@ -995,7 +1023,24 @@ export function PromptInput({ channel, toastSuppressed, suspended = false, draft
995
1023
  // loses nothing functional. (PR #446; restored after the picker
996
1024
  // snapshot's cherry-pick resurrected the old formula.)
997
1025
  const helpViewportHeight = Math.max(3, Math.min(terminalRows - 7, 15));
998
- const suggestions = value.startsWith('/') ? channel.commandCompletions(value) : [];
1026
+ // Issue #1072: while a turn runs, the overlay groups the commands that
1027
+ // AFFECT the running conversation (gated / conversation-acting / steering)
1028
+ // below the ones that do not. The partition is a stable reorder and keeps ONE
1029
+ // index space: `suggestions` stays the only list selection, Enter dispatch and
1030
+ // clicks read, and the default selection stays the first normal-region row.
1031
+ // The region is marked by colour only — it costs no display row.
1032
+ const completions = value.startsWith('/') ? channel.commandCompletions(value) : [];
1033
+ const holdOf = (commandLine) => workingHoldOf(commandLine, channel.commandList.find(command => command.name === commandLine.replace(/^\//, '').split(/[\t ]/u)[0])?.skill === true) !== undefined;
1034
+ const normalCompletions = channel.working
1035
+ ? completions.filter(completion => !holdOf(completion.commandLine))
1036
+ : completions;
1037
+ /** 灰区起始索引;灰区为空时不分区。 */
1038
+ const suggestionsHoldFrom = channel.working && normalCompletions.length < completions.length
1039
+ ? normalCompletions.length
1040
+ : undefined;
1041
+ const suggestions = suggestionsHoldFrom === undefined
1042
+ ? completions
1043
+ : [...normalCompletions, ...completions.filter(completion => holdOf(completion.commandLine))];
999
1044
  const overlayOpen = suggestions.length > 0 &&
1000
1045
  !expanded &&
1001
1046
  !helpOpen &&
@@ -1163,6 +1208,12 @@ export function PromptInput({ channel, toastSuppressed, suspended = false, draft
1163
1208
  // this edit replaces, and `diffSpan` needs both texts. `reset` ends the
1164
1209
  // draft's history, `silent` (undo itself, a recall) leaves it untouched.
1165
1210
  if (next !== prev) {
1211
+ // Every real text change (typing, paste, history, external editor,
1212
+ // undo) hands the arrows back to the draft: a held-queue selection
1213
+ // must not survive an edited draft and steer ↑/↓ over the text.
1214
+ // Caret-only moves (next === prev) never land here.
1215
+ if (dockSelectedRef.current !== null)
1216
+ setDockSelected(null);
1166
1217
  if (undo === 'reset')
1167
1218
  clearDraftUndo();
1168
1219
  else if (undo !== 'silent') {
@@ -1448,6 +1499,9 @@ export function PromptInput({ channel, toastSuppressed, suspended = false, draft
1448
1499
  * cannot withdraw inbox messages (released package without the inbox API).
1449
1500
  */
1450
1501
  const pullBackLast = () => {
1502
+ // Alt+↑ keeps its direct last-item meaning even while the dock selector
1503
+ // is open — one press, one retracted row (the selector closes with it).
1504
+ setDockSelected(null);
1451
1505
  const item = channel.pending[channel.pending.length - 1];
1452
1506
  if (!item)
1453
1507
  return;
@@ -1489,6 +1543,87 @@ export function PromptInput({ channel, toastSuppressed, suspended = false, draft
1489
1543
  channel.notify(t('input-cannot-retract'), { color: 'warning', timeoutMs: 2500 });
1490
1544
  }
1491
1545
  };
1546
+ /**
1547
+ * The docked queue (Esc parked it while interrupting, Claude Code parity):
1548
+ * previews the composer keeps until the user sends them all (⏎ on an empty
1549
+ * draft / the clickable hint) or retracts items (the ↑ selector / Alt+↑).
1550
+ */
1551
+ const dockedPending = channel.pending.filter(item => item.docked === true);
1552
+ const dockCount = dockedPending.length;
1553
+ /** Send the whole dock now (⏎ on an empty draft, or the hint row click):
1554
+ * FIFO, exactly once, through the channel's own delivery chain. */
1555
+ const sendDocked = () => {
1556
+ const sent = channel.deliverDocked();
1557
+ if (sent > 0)
1558
+ channel.notify(t('input-dock-sent', { n: sent }), { timeoutMs: 2500 });
1559
+ setDockSelected(null);
1560
+ };
1561
+ /** Retract one docked row into the draft for editing (selector ⏎, row
1562
+ * click, Alt+↑ on the last): purely local — the backend dropped its copy
1563
+ * with the aborted turn, so every backend can do it.
1564
+ *
1565
+ * A draft with real content is never destroyed by the retraction: it
1566
+ * SWAPS — the whole draft (text + staged images) parks at
1567
+ * the dock's tail while the clicked row comes into the input. Nothing
1568
+ * sends; the swap is one undo step, so Ctrl+Z brings the parked draft
1569
+ * back (text, caret, images and fold block; the parked row retains the
1570
+ * image capabilities, see stageIdIsRetained). Only an empty (or
1571
+ * whitespace-only) draft takes the plain retraction path. */
1572
+ const editDocked = (index) => {
1573
+ const item = dockedPending[index];
1574
+ setDockSelected(null);
1575
+ if (item === undefined)
1576
+ return;
1577
+ if (valueRef.current.trim() !== '') {
1578
+ // Park the draft FIRST: its capabilities must already be retained by
1579
+ // the pending row when setInput's undo bookkeeping and sidecar pruning
1580
+ // run below, or a later swap-back would find them discarded.
1581
+ const swapped = channel.swapDockedForDraft(item.id, {
1582
+ text: valueRef.current,
1583
+ images: imageRefsFor(valueRef.current),
1584
+ });
1585
+ if (!swapped) {
1586
+ channel.notify(t('input-cannot-retract'), { color: 'warning', timeoutMs: 2500 });
1587
+ return;
1588
+ }
1589
+ // One sealed undo step captures the draft the swap replaces (same
1590
+ // shape as the external-editor refill): snapshot the fold block
1591
+ // BEFORE clearing it, so Ctrl+Z restores the chip too. setInput runs
1592
+ // while the sidecar still maps the parked draft's tokens — the undo
1593
+ // snapshot then carries them, and its pruning sees the pending row
1594
+ // already retains every capability (nothing is discarded).
1595
+ const beforeBlock = foldBlockRef.current;
1596
+ updateFoldBlock(null);
1597
+ setInput(item.text, item.text.length, 'step', beforeBlock);
1598
+ replaceDraftImages(item.images ?? []);
1599
+ setSelectedCommand(0);
1600
+ setFileSelected(0);
1601
+ channel.notify(t('input-dock-swapped'), { timeoutMs: 2000 });
1602
+ return;
1603
+ }
1604
+ if (!channel.removePending(item.id)) {
1605
+ channel.notify(t('input-cannot-retract'), { color: 'warning', timeoutMs: 2500 });
1606
+ return;
1607
+ }
1608
+ restoreDraftImages({
1609
+ text: item.text,
1610
+ images: item.images ?? [],
1611
+ });
1612
+ setInput(item.text, item.text.length, 'silent');
1613
+ updateFoldBlock(null);
1614
+ setSelectedCommand(0);
1615
+ setFileSelected(0);
1616
+ channel.notify(t('input-retracted'), { timeoutMs: 2000 });
1617
+ };
1618
+ // A dock that empties or shrinks under an open selector (rows claimed,
1619
+ // a receipt un-docking them, a session reset) leaves the highlight
1620
+ // pointing past the list — fold it instead of steering arrows at an
1621
+ // invisible row.
1622
+ React.useEffect(() => {
1623
+ if (dockSelected !== null && (dockSelected >= dockCount || dockCount === 0)) {
1624
+ setDockSelected(null);
1625
+ }
1626
+ }, [dockSelected, dockCount]);
1492
1627
  /**
1493
1628
  * Ctrl+Enter: abort the running turn and send the input immediately — the
1494
1629
  * model stops what it is doing and starts on this message right away.
@@ -1501,10 +1636,12 @@ export function PromptInput({ channel, toastSuppressed, suspended = false, draft
1501
1636
  }
1502
1637
  // Abort the running turn and deliver: previously queued pending
1503
1638
  // messages first (FIFO), then the current input — all processed
1504
- // immediately once the abort settles.
1639
+ // immediately once the abort settles. Docked rows are NOT listed here:
1640
+ // the channel's interruptAndDeliver takes the dock itself first (same
1641
+ // FIFO order), so including them would send each docked text twice.
1505
1642
  const images = imageRefsFor(trimmed);
1506
1643
  const queued = [
1507
- ...channel.pending.map(item => ({ text: item.text, images: item.images ?? [] })),
1644
+ ...channel.pending.filter(item => item.docked !== true).map(item => ({ text: item.text, images: item.images ?? [] })),
1508
1645
  { text: value, images },
1509
1646
  ];
1510
1647
  const count = channel.interruptAndDeliver(queued);
@@ -1529,6 +1666,18 @@ export function PromptInput({ channel, toastSuppressed, suspended = false, draft
1529
1666
  if (parsed === undefined)
1530
1667
  return false;
1531
1668
  const command = channel.commandList.find(entry => entry.name === parsed.name);
1669
+ // A built-in the bound backend does not serve is hidden from the menu and
1670
+ // Tab, and a typed one must neither run nor reach the model as text. A
1671
+ // partial embedder channel carries no snapshot: everything is served.
1672
+ // oxlint-disable-next-line typescript/no-unnecessary-condition -- partial embedder channels omit the snapshot
1673
+ const capabilities = channel.backendCapabilities;
1674
+ if (command === undefined && isUnavailableLocalCommand(parsed.name, capabilities)) {
1675
+ channel.notify(t('cmd-unavailable-backend', { cmd: parsed.name, backend: capabilities === undefined ? '' : kernelDisplayName(capabilities.backendId) }), {
1676
+ color: 'warning',
1677
+ timeoutMs: 4000,
1678
+ });
1679
+ return true;
1680
+ }
1532
1681
  const known = command !== undefined || isHiddenCommandName(parsed.name);
1533
1682
  if (!known)
1534
1683
  return false;
@@ -1603,8 +1752,9 @@ export function PromptInput({ channel, toastSuppressed, suspended = false, draft
1603
1752
  * The Enter main path, shared by the inline prompt, the expanded
1604
1753
  * editor's Ctrl+Enter, and its Send button:
1605
1754
  * - command menu open → run the SELECTED command (never send `/mo`);
1606
- * - model working → STEER into the running turn (next step boundary,
1607
- * agent continues — the "immediate" send; Codex/pi semantics);
1755
+ * - model working → a KNOWN command is still a command; anything else
1756
+ * STEERS into the running turn (next step boundary, agent continues —
1757
+ * the "immediate" send; Codex/pi semantics);
1608
1758
  * - otherwise → submit directly (or run a unique command).
1609
1759
  * Reads valueRef so a key batch (typing + Enter in one stdin read)
1610
1760
  * operates on the text the preceding keys produced.
@@ -1618,6 +1768,12 @@ export function PromptInput({ channel, toastSuppressed, suspended = false, draft
1618
1768
  return;
1619
1769
  lastEnterAtRef.current = now;
1620
1770
  const value = valueRef.current;
1771
+ // The docked-queue selector owns Enter while a row is highlighted and
1772
+ // the draft is untouched: retract that row into the input for editing.
1773
+ if (dockSelectedRef.current !== null && value.trim() === '' && dockCount > 0) {
1774
+ editDocked(dockSelectedRef.current);
1775
+ return;
1776
+ }
1621
1777
  if (overlayOpen) {
1622
1778
  const command = suggestions[selectedCommand];
1623
1779
  if (command) {
@@ -1634,19 +1790,23 @@ export function PromptInput({ channel, toastSuppressed, suspended = false, draft
1634
1790
  return;
1635
1791
  }
1636
1792
  }
1793
+ // A docked queue (Esc parked it) owns a bare Enter on an EMPTY draft
1794
+ // (Claude Code parity: "…or Enter to send them now"). A draft in
1795
+ // progress keeps the ordinary submit path and the dock stays parked —
1796
+ // sending parked messages silently along with the next typed submit is
1797
+ // exactly the surprise the dock exists to prevent.
1798
+ if (value.trim() === '' && !channel.working && dockCount > 0) {
1799
+ sendDocked();
1800
+ return;
1801
+ }
1637
1802
  if (channel.working && value.trim() !== '') {
1638
- // Immediate-command semantics: /btw and /skills are exempt from
1639
- // steering — neither command interrupts the running turn. Hidden
1640
- // UI-only easter eggs (e.g. /deepseek) are also safe to run while
1641
- // streaming. Every other input keeps the steer behavior so /new
1642
- // /model etc. stay idle-only.
1643
- const parsed = value.startsWith('/') ? parseCommandName(value) : undefined;
1644
- if (parsed !== undefined && (((parsed.name === 'btw' || parsed.name === 'skills')
1645
- && channel.commandList.some(c => c.name === parsed.name))
1646
- || isHiddenCommandName(parsed.name))) {
1647
- if (tryRunCommand(value))
1648
- return;
1649
- }
1803
+ // While a turn is running a KNOWN command is dispatched as a command:
1804
+ // with or without arguments, with the completion overlay open or closed,
1805
+ // from the inline prompt or the fullscreen editor (issue #1072). Each
1806
+ // command's own gate decides whether it can run mid-turn and says why;
1807
+ // steering is reserved for input that is NOT a command.
1808
+ if (tryRunCommand(value))
1809
+ return;
1650
1810
  steerSend(value);
1651
1811
  return;
1652
1812
  }
@@ -1684,6 +1844,12 @@ export function PromptInput({ channel, toastSuppressed, suspended = false, draft
1684
1844
  /** Local Esc layers, shared by the prompt listener and Chat's delegation.
1685
1845
  * Refs preserve this order even when expansion and Esc share a stdin batch. */
1686
1846
  const consumeEditingEscape = () => {
1847
+ // The docked-queue selector folds first: Esc leaves the selector and the
1848
+ // dock itself stays put (⏎/↑ keep working afterwards).
1849
+ if (dockSelectedRef.current !== null) {
1850
+ setDockSelected(null);
1851
+ return true;
1852
+ }
1687
1853
  if (selectionRef.current && !helpOpen && !overlayOpen && !fileOverlayOpen) {
1688
1854
  clearSelection();
1689
1855
  return true;
@@ -2276,6 +2442,12 @@ export function PromptInput({ channel, toastSuppressed, suspended = false, draft
2276
2442
  // indentation arm so the expanded editor participates in the cycle too —
2277
2443
  // the parser reports backtab as key.tab + key.shift.
2278
2444
  if (key.tab && key.shift) {
2445
+ // A backend without native modes has nothing to cycle (capability
2446
+ // snapshots absent on test stubs = DSH).
2447
+ if (channel.backendCapabilities?.modes === false) {
2448
+ channel.notify(t('capability-unavailable-backend', { name: 'mode' }), { color: 'warning', timeoutMs: 4000 });
2449
+ return;
2450
+ }
2279
2451
  // The key is consumed either way. `cycleMode` is best-effort inside the
2280
2452
  // channel, but a dropped rejection here would be an unhandledRejection
2281
2453
  // (the process guard rethrows everything that is not React #185), and
@@ -2358,6 +2530,17 @@ export function PromptInput({ channel, toastSuppressed, suspended = false, draft
2358
2530
  return;
2359
2531
  }
2360
2532
  if (key.upArrow) {
2533
+ // The docked-queue selector owns ↑ while a row is highlighted
2534
+ // (Claude Code parity: "Press up to select a queued message to
2535
+ // edit"); the walk wraps around the dock. The REF drives it: one
2536
+ // stdin read can carry several ↑ (key repeat / a coalescing
2537
+ // terminal), and the state value would pin every handler in the
2538
+ // batch to the same row — N presses collapsing to one step.
2539
+ if (dockSelectedRef.current !== null) {
2540
+ const current = dockSelectedRef.current;
2541
+ setDockSelected(current <= 0 ? dockCount - 1 : current - 1);
2542
+ return;
2543
+ }
2361
2544
  // A history walk owns the arrows until it returns to the draft: a
2362
2545
  // recalled entry can itself open the @ menu or the slash menu (e.g.
2363
2546
  // `/model`), and letting the overlay navigate here strands the stashed
@@ -2395,6 +2578,14 @@ export function PromptInput({ channel, toastSuppressed, suspended = false, draft
2395
2578
  setSelectedCommand(index => index <= 0 ? suggestions.length - 1 : index - 1);
2396
2579
  return;
2397
2580
  }
2581
+ // An EMPTY draft while idle with a docked queue takes ↑ into the dock
2582
+ // selector, ahead of the history walk (Claude Code parity). Any draft
2583
+ // keeps ↑ as cursor movement; the menus above keep their priority.
2584
+ if (value === '' && !channel.working && !expandedRef.current
2585
+ && !overlayOpen && !fileOverlayOpen && dockCount > 0) {
2586
+ setDockSelected(dockCount - 1);
2587
+ return;
2588
+ }
2398
2589
  // A workspace switch mid-walk keeps the draft that walk started from:
2399
2590
  // the composer shows the previous project's entry, not a new draft.
2400
2591
  const interrupted = seedHistory();
@@ -2426,6 +2617,13 @@ export function PromptInput({ channel, toastSuppressed, suspended = false, draft
2426
2617
  return;
2427
2618
  }
2428
2619
  if (key.downArrow) {
2620
+ // The docked-queue selector owns ↓ too (wraps down around the dock;
2621
+ // the REF, so a batch of ↓ advances one row per press — see ↑).
2622
+ if (dockSelectedRef.current !== null) {
2623
+ const current = dockSelectedRef.current;
2624
+ setDockSelected(current >= dockCount - 1 ? 0 : current + 1);
2625
+ return;
2626
+ }
2429
2627
  // Same history-walk ownership as ↑ above.
2430
2628
  if (fileOverlayOpen && historyIndex.current < 0) {
2431
2629
  setFileSelected(index => index >= fileMatches.length - 1 ? 0 : index + 1);
@@ -2510,8 +2708,8 @@ export function PromptInput({ channel, toastSuppressed, suspended = false, draft
2510
2708
  return;
2511
2709
  }
2512
2710
  if (key.leftArrow) {
2513
- // ← on an EMPTY prompt backgrounds this session
2514
- // and opens the agent view; with text it moves the caret as usual.
2711
+ // ← on an EMPTY prompt opens the session manager; the caller decides
2712
+ // whether the backend can background the session first.
2515
2713
  // (The command/file overlays both imply non-empty text, so no extra
2516
2714
  // gate beyond the help menu is needed.)
2517
2715
  if (value.length === 0 && !helpOpen) {
@@ -2886,17 +3084,20 @@ export function PromptInput({ channel, toastSuppressed, suspended = false, draft
2886
3084
  fileEscRef.current = mention?.start ?? -1;
2887
3085
  return;
2888
3086
  }
2889
- // With pending messages while working, Esc = interrupt and deliver
2890
- // them right away (Codex's "interrupt and send immediately"): the
2891
- // turn is aborted and each message is re-queued once it settles.
3087
+ // The docked-queue selector folds before anything else: Esc leaves the
3088
+ // selector (Chat's delegation reaches this through consumeEscape too).
3089
+ if (dockSelectedRef.current !== null) {
3090
+ setDockSelected(null);
3091
+ return;
3092
+ }
3093
+ // With pending messages while working, Esc = interrupt and DOCK the
3094
+ // queue (Claude Code parity): the previews park channel-side and the
3095
+ // dock hint offers ↑ to edit one / ⏎ to send them all — nothing
3096
+ // auto-sends. A queue already fully docked docks nothing new; the
3097
+ // turn still needs its plain abort.
2892
3098
  if (channel.working && channel.pending.length > 0) {
2893
- const count = channel.interruptAndDeliver(channel.pending.map(item => ({
2894
- text: item.text,
2895
- images: item.images ?? [],
2896
- })));
2897
- channel.notify(t('interrupt-delivered', { n: count }), {
2898
- timeoutMs: 2500,
2899
- });
3099
+ if (channel.interruptAndDock() === 0)
3100
+ channel.cancel();
2900
3101
  return;
2901
3102
  }
2902
3103
  // "Send to Chat" chips peel before the draft: the first Esc drops the
@@ -2950,9 +3151,13 @@ export function PromptInput({ channel, toastSuppressed, suspended = false, draft
2950
3151
  return;
2951
3152
  }
2952
3153
  if (input && !key.ctrl && !key.meta && !key.super && !key.tab && !key.escape) {
2953
- // Typing anything else dismisses the help menu.
3154
+ // Typing anything else dismisses the help menu…
2954
3155
  if (helpOpen)
2955
3156
  onToggleHelp();
3157
+ // …and leaves the docked-queue selector: the draft is no longer empty,
3158
+ // so ↑ goes back to cursor movement.
3159
+ if (dockSelectedRef.current !== null)
3160
+ setDockSelected(null);
2956
3161
  // An active selection is REPLACED by the typed text, caret after it.
2957
3162
  const sel = selectionRef.current;
2958
3163
  const at = sel ? sel.start : cursor;
@@ -3121,23 +3326,30 @@ export function PromptInput({ channel, toastSuppressed, suspended = false, draft
3121
3326
  ]
3122
3327
  : visualLineRanges(value, inputWidth);
3123
3328
  /**
3124
- * Inverse runs for one rendered row, shared by the inline prompt and the
3329
+ * Highlight runs for one rendered row, shared by the inline prompt and the
3125
3330
  * expanded editor: the selection's intersection (if any) and the caret
3126
- * cluster on the caret's row. Both render <Text inverse>; overlapping
3127
- * intervals merge so a caret inside the selection stays one continuous
3128
- * highlight. The caret row inverts the WHOLE cluster at the caret column
3129
- * (solid block) — [col, next boundary) covers a surrogate pair or ZWJ
3130
- * emoji as one glyph; at the text end it shows a blank inverse cell like
3131
- * the empty-input caret (appended after everything, so a selection
3331
+ * cluster on the caret's row. Without a palette `cursor` both are inverse
3332
+ * runs and overlapping intervals merge, so a caret inside the selection
3333
+ * stays one continuous highlight. The caret row inverts the WHOLE cluster at
3334
+ * the caret column (solid block) — [col, next boundary) covers a surrogate
3335
+ * pair or ZWJ emoji as one glyph; at the text end it shows a blank inverse
3336
+ * cell like the empty-input caret (appended after everything, so a selection
3132
3337
  * ending there cannot swallow it).
3338
+ *
3339
+ * A palette that sets `cursor` splits the caret off the selection: the
3340
+ * caret is then its own kind (painted with `caretCell`) instead of merging
3341
+ * into the selection's inverse run.
3133
3342
  */
3134
3343
  const rowHighlightPieces = (text, absoluteLine) => {
3135
3344
  const [rowStart] = lineRanges[absoluteLine] ?? [0, 0];
3136
3345
  // Per-character style: 0 plain, 1 chip (a staged token), 2 inverse
3137
- // (selection or caret cluster). Inverse wins over chip.
3346
+ // (selection, or caret when the palette has no `cursor`), 3 caret.
3347
+ // Later fills win: chip < selection < caret.
3138
3348
  const PLAIN = 0;
3139
3349
  const CHIP = 1;
3140
3350
  const INVERSE = 2;
3351
+ const CARET = 3;
3352
+ const caretKind = cursorColor === '' ? INVERSE : CARET;
3141
3353
  const kinds = new Uint8Array(text.length);
3142
3354
  const fill = (lo, hi, kind) => {
3143
3355
  for (let i = Math.max(lo, 0); i < Math.min(hi, text.length); i++)
@@ -3159,7 +3371,7 @@ export function PromptInput({ channel, toastSuppressed, suspended = false, draft
3159
3371
  ? Math.min(tokenAtCaret.end - rowStart, text.length)
3160
3372
  : nextGraphemeBoundary(graphemeBoundaries(text), col);
3161
3373
  if (clusterEnd > col)
3162
- fill(col, clusterEnd, INVERSE);
3374
+ fill(col, clusterEnd, caretKind);
3163
3375
  else
3164
3376
  endBlankCaret = col === text.length;
3165
3377
  }
@@ -3170,13 +3382,27 @@ export function PromptInput({ channel, toastSuppressed, suspended = false, draft
3170
3382
  let end = pos + 1;
3171
3383
  while (end < text.length && kinds[end] === kind)
3172
3384
  end++;
3173
- pieces.push({ text: text.slice(pos, end), inverse: kind === INVERSE, chip: kind === CHIP });
3385
+ pieces.push({
3386
+ text: text.slice(pos, end),
3387
+ inverse: kind === INVERSE,
3388
+ chip: kind === CHIP,
3389
+ caret: kind === CARET,
3390
+ });
3174
3391
  pos = end;
3175
3392
  }
3176
- if (endBlankCaret)
3177
- pieces.push({ text: ' ', inverse: true, chip: false });
3393
+ if (endBlankCaret) {
3394
+ pieces.push({ text: ' ', inverse: caretKind === INVERSE, chip: false, caret: caretKind === CARET });
3395
+ }
3178
3396
  return pieces;
3179
3397
  };
3398
+ /**
3399
+ * One caret cell: the palette's `cursor` fill with the glyph in whichever
3400
+ * palette ink contrasts with it, or the inverse-video block it replaces when
3401
+ * the palette predates the key.
3402
+ */
3403
+ const caretCell = (key, text) => cursorColor === ''
3404
+ ? _jsx(Text, { inverse: true, children: text }, key)
3405
+ : _jsx(Text, { backgroundColor: cursorColor, color: cursorGlyph, children: text }, key);
3180
3406
  const rendered = visibleLines.map((line, index) => {
3181
3407
  const absoluteLine = windowStart + index;
3182
3408
  if (block && absoluteLine === chipRow) {
@@ -3191,7 +3417,7 @@ export function PromptInput({ channel, toastSuppressed, suspended = false, draft
3191
3417
  const text = withPrefix ? truncateToWidth(line, inputWidth - prefixCols) : line;
3192
3418
  const prefix = withPrefix ? _jsx(Text, { dimColor: true, children: prefixLabel }) : null;
3193
3419
  const pieces = rowHighlightPieces(text, absoluteLine);
3194
- return (_jsxs(Text, { wrap: "truncate-end", children: [prefix, pieces.length === 0 ? ' ' : pieces.map((piece, pieceIndex) => piece.inverse ? (_jsx(Text, { inverse: true, children: piece.text }, pieceIndex)) : piece.chip ? (_jsx(Text, { color: "suggestion", children: piece.text }, pieceIndex)) : (piece.text))] }, absoluteLine));
3420
+ return (_jsxs(Text, { wrap: "truncate-end", children: [prefix, pieces.length === 0 ? ' ' : pieces.map((piece, pieceIndex) => piece.caret ? (caretCell(pieceIndex, piece.text)) : piece.inverse ? (_jsx(Text, { inverse: true, children: piece.text }, pieceIndex)) : piece.chip ? (_jsx(Text, { color: "suggestion", children: piece.text }, pieceIndex)) : (piece.text))] }, absoluteLine));
3195
3421
  });
3196
3422
  // ── 展开态编辑行 ────────────────────────────────────────────────────
3197
3423
  // Logical line number per visual row (a wrapped continuation keeps its
@@ -3216,7 +3442,7 @@ export function PromptInput({ channel, toastSuppressed, suspended = false, draft
3216
3442
  ? ' '.repeat(editorNoWidth)
3217
3443
  : String(logicalNo + 1).padStart(editorNoWidth, ' ');
3218
3444
  const pieces = rowHighlightPieces(line, absoluteLine);
3219
- return (_jsxs(Text, { wrap: "truncate-end", backgroundColor: isCaretRow ? 'toolCardBackgroundDim' : undefined, children: [_jsx(Text, { dimColor: !isCaretRow, bold: isCaretRow, color: isCaretRow ? promptAccent : undefined, children: `${gutterLabel} │ ` }), pieces.map((piece, pieceIndex) => piece.inverse ? (_jsx(Text, { inverse: true, children: piece.text }, pieceIndex)) : piece.chip ? (_jsx(Text, { color: "suggestion", children: piece.text }, pieceIndex)) : (piece.text))] }, absoluteLine));
3445
+ return (_jsxs(Text, { wrap: "truncate-end", backgroundColor: isCaretRow ? 'toolCardBackgroundDim' : undefined, children: [_jsx(Text, { dimColor: !isCaretRow, bold: isCaretRow, color: isCaretRow ? promptAccent : undefined, children: `${gutterLabel} │ ` }), pieces.map((piece, pieceIndex) => piece.caret ? (caretCell(pieceIndex, piece.text)) : piece.inverse ? (_jsx(Text, { inverse: true, children: piece.text }, pieceIndex)) : piece.chip ? (_jsx(Text, { color: "suggestion", children: piece.text }, pieceIndex)) : (piece.text))] }, absoluteLine));
3220
3446
  })
3221
3447
  : null;
3222
3448
  // Peek card content: the BLOCK's text wrapped to the card's inner width,
@@ -3489,6 +3715,22 @@ export function PromptInput({ channel, toastSuppressed, suspended = false, draft
3489
3715
  // 的 style.position,常驻浮层 + 移除普通子节点不会触发 blit 解毒,被
3490
3716
  // 覆盖的转录行会留空(见 Chat.tsx dialogOverlayOpen 注释)。展开态由
3491
3717
  // 全屏编辑器接管,内联浮层全部撤下。
3718
+ // The dock rows are windowed, never rendered in full: OverlayAbove clips
3719
+ // overflow from the top without scrolling, so a long dock would push the
3720
+ // highlighted row off-screen while Enter still retracts by index. The
3721
+ // window keeps the focused row
3722
+ // visible (listWindow centers on it); Enter and the row click both
3723
+ // operate on the absolute dock index, so they always name the row the
3724
+ // user SEES highlighted. The budget subtracts every other row the
3725
+ // pending block paints (steer/followup previews, labels, hints, padding)
3726
+ // so the window always fits the overlay's effective height.
3727
+ const steerPreviewCount = channel.pending.filter(item => item.placement === 'steer' && item.docked !== true).length;
3728
+ const followupPreviewCount = channel.pending.filter(item => item.placement === 'followup' && item.docked !== true).length;
3729
+ const dockWindowRows = useOverlayListRows((steerPreviewCount > 0 ? 1 + steerPreviewCount : 0)
3730
+ + (followupPreviewCount > 0 ? 1 + followupPreviewCount : 0)
3731
+ + 1 /* dock label */ + 1 /* dock hint row */ + 1 /* Alt+↑ hint */ + 1 /* block paddingBottom */);
3732
+ const dockFocus = dockSelected ?? Math.max(dockCount - 1, 0);
3733
+ const { start: dockStart, end: dockEnd } = listWindow(dockedPending.map(() => 1), dockFocus, dockWindowRows);
3492
3734
  const floatersOpen = !suspended &&
3493
3735
  !expanded &&
3494
3736
  (helpOpen || channel.pending.length > 0 || fileOverlayOpen || overlayOpen || peekOpen);
@@ -3597,11 +3839,22 @@ export function PromptInput({ channel, toastSuppressed, suspended = false, draft
3597
3839
  // `/${name} ` — the whole fill is one undo step.
3598
3840
  setInput(`/${name} `, name.length + 2, 'step');
3599
3841
  onToggleHelp();
3600
- } }) })), !helpOpen && channel.pending.length > 0 && (_jsxs(Box, { flexDirection: "column", paddingLeft: 2, paddingBottom: 1, children: [channel.pending.some(item => item.placement === 'steer') && (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { dimColor: true, children: ["\u26A1 ", t('input-pending-steer-label')] }), channel.pending
3601
- .filter(item => item.placement === 'steer')
3602
- .map(item => (_jsxs(Text, { dimColor: true, wrap: "truncate", children: [' ', "\u21B3 ", item.text] }, item.id)))] })), channel.pending.some(item => item.placement === 'followup') && (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { dimColor: true, children: ["\u23F3 ", t('input-pending-queue-label')] }), channel.pending
3603
- .filter(item => item.placement === 'followup')
3604
- .map(item => (_jsxs(Text, { dimColor: true, wrap: "truncate", children: [' ', "\u21B3 ", item.text] }, item.id)))] })), _jsxs(Text, { dimColor: true, children: ["Alt+\u2191 ", t('input-pending-actions-hint')] })] })), fileOverlayOpen && (_jsx(FileSuggestions, { files: fileMatches, selectedIndex: fileSelected, columns: columns, query: mention?.query ?? '', accent: promptAccent,
3842
+ } }) })), !helpOpen && channel.pending.length > 0 && (_jsxs(Box, { flexDirection: "column", paddingLeft: 2, paddingBottom: 1, children: [channel.pending.some(item => item.placement === 'steer' && item.docked !== true) && (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { dimColor: true, children: ["\u26A1 ", t('input-pending-steer-label')] }), channel.pending
3843
+ .filter(item => item.placement === 'steer' && item.docked !== true)
3844
+ .map(item => (_jsxs(Text, { dimColor: true, wrap: "truncate", children: [' ', "\u21B3 ", item.text] }, item.id)))] })), channel.pending.some(item => item.placement === 'followup' && item.docked !== true) && (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { dimColor: true, children: ["\u23F3 ", t('input-pending-queue-label')] }), channel.pending
3845
+ .filter(item => item.placement === 'followup' && item.docked !== true)
3846
+ .map(item => (_jsxs(Text, { dimColor: true, wrap: "truncate", children: [' ', "\u21B3 ", item.text] }, item.id)))] })), dockCount > 0 && (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { dimColor: true, children: ["\u23F8 ", t('input-pending-dock-label')] }), dockedPending.slice(dockStart, dockEnd).map((item, index) => {
3847
+ // The window maps to absolute dock indices: the click and
3848
+ // the highlight name the same row the user sees.
3849
+ const absoluteIndex = dockStart + index;
3850
+ return (_jsx(Box, {
3851
+ // 点击停靠行 = 撤回该条进输入框编辑(与选择器 ⏎ 同路径)
3852
+ onClick: () => { editDocked(absoluteIndex); }, children: _jsxs(Text, { wrap: "truncate", dimColor: dockSelected === null || dockSelected !== absoluteIndex, color: dockSelected === absoluteIndex ? promptAccent : undefined, children: [' ', dockSelected === absoluteIndex ? '❯' : '↳', " ", item.text] }) }, item.id));
3853
+ }), _jsx(Box
3854
+ // 点击提示行 = 全部发送(与空输入 ⏎ 同路径)
3855
+ , {
3856
+ // 点击提示行 = 全部发送(与空输入 ⏎ 同路径)
3857
+ onClick: () => { sendDocked(); }, children: _jsxs(Text, { dimColor: true, children: [' ', t('input-pending-dock-hint')] }) })] })), _jsxs(Text, { dimColor: true, children: ["Alt+\u2191 ", t('input-pending-actions-hint')] })] })), fileOverlayOpen && (_jsx(FileSuggestions, { files: fileMatches, selectedIndex: fileSelected, columns: columns, query: mention?.query ?? '', accent: promptAccent,
3605
3858
  // 点击行 = 接受该项(与 Enter 同路径)
3606
3859
  onPick: (index) => {
3607
3860
  const file = fileMatches[index];
@@ -3611,7 +3864,7 @@ export function PromptInput({ channel, toastSuppressed, suspended = false, draft
3611
3864
  // 滚轮 = 移动选中行(与 ↑/↓ 同路径,窗口跟随)
3612
3865
  onWheelStep: (step) => {
3613
3866
  setFileSelected(i => Math.max(0, Math.min(fileMatches.length - 1, i + step)));
3614
- } })), overlayOpen && (_jsx(CommandSuggestions, { commands: suggestions, selectedIndex: selectedCommand, columns: columns, query: value, accent: promptAccent,
3867
+ } })), overlayOpen && (_jsx(CommandSuggestions, { commands: suggestions, selectedIndex: selectedCommand, columns: columns, query: value, accent: promptAccent, holdFrom: suggestionsHoldFrom,
3615
3868
  // 点击行 = 运行该命令(与 Enter 同路径)
3616
3869
  onPick: (index) => {
3617
3870
  const command = suggestions[index];
@@ -3626,14 +3879,14 @@ export function PromptInput({ channel, toastSuppressed, suspended = false, draft
3626
3879
  : undefined, rows: peekVisualLines.map((row, index) => (_jsx(Text, { wrap: "truncate-end", children: row }, index))), onRowPick: () => {
3627
3880
  updateFoldBlock(null);
3628
3881
  setHovered(false);
3629
- } }) }))] })), attachedContexts.length > 0 && (_jsx(Box, { flexDirection: "row", width: "100%", height: 1, overflow: "hidden", paddingLeft: 2, columnGap: 2, children: attachedContexts.map(item => (_jsx(Box, { overflow: "hidden", children: _jsx(Text, { color: promptAccent, wrap: "truncate-end", children: t('prompt-attached-context-chip', { title: item.title }) }) }, item.id))) })), lastNotification && toastVisible && (_jsx(Box, { position: "absolute", marginTop: -1, height: 1, width: "100%", paddingLeft: 2, paddingRight: 1, flexDirection: "column", justifyContent: "flex-end", overflow: "hidden", children: _jsx(Box, { justifyContent: "flex-end", children: _jsx(Text, { color: lastNotification.color, dimColor: !lastNotification.color, wrap: "truncate", children: lastNotification.text }) }) })), _jsx(EffortInputBorder, { effort: channel.reasoningEffort, levels: channel.effortLevels, columns: columns, onLight: isLightThemeActive(themeName), idleColor: promptAccent, topRightLabel: topRightLabel, children: _jsxs(Box, { flexDirection: "row", alignItems: "flex-start", width: "100%", children: [onOpenSessions !== undefined && (_jsx(Box, { flexShrink: 0, onClick: (event) => {
3882
+ } }) }))] })), attachedContexts.length > 0 && (_jsx(Box, { flexDirection: "row", width: "100%", height: 1, overflow: "hidden", paddingLeft: 2, columnGap: 2, children: attachedContexts.map(item => (_jsx(Box, { overflow: "hidden", children: _jsx(Text, { color: promptAccent, wrap: "truncate-end", children: t('prompt-attached-context-chip', { title: item.title }) }) }, item.id))) })), lastNotification && toastVisible && (_jsx(Box, { position: "absolute", marginTop: -1, height: 1, width: "100%", paddingLeft: 2, paddingRight: 1, flexDirection: "column", justifyContent: "flex-end", overflow: "hidden", children: _jsx(Box, { justifyContent: "flex-end", children: _jsx(Text, { color: lastNotification.color, dimColor: !lastNotification.color, wrap: "truncate", children: lastNotification.text }) }) })), _jsx(EffortInputBorder, { effort: channel.reasoningEffort, levels: channel.effortLevels, columns: columns, idleColor: promptAccent, topRightLabel: topRightLabel, children: _jsxs(Box, { flexDirection: "row", alignItems: "flex-start", width: "100%", children: [onOpenSessions !== undefined && (_jsx(Box, { flexShrink: 0, onClick: (event) => {
3630
3883
  event.stopImmediatePropagation();
3631
3884
  onOpenSessions?.();
3632
3885
  }, onMouseEnter: () => {
3633
3886
  setHomeHovered(true);
3634
3887
  }, onMouseLeave: () => {
3635
3888
  setHomeHovered(false);
3636
- }, children: _jsx(Text, { dimColor: !homeHovered, bold: homeHovered, color: homeHovered ? promptAccent : undefined, children: HOME_BUTTON_TEXT }) })), _jsx(EffortChargeGlyph, { effort: channel.reasoningEffort, levels: channel.effortLevels, working: channel.working }), vimEnabled && (_jsxs(Text, { bold: true, color: vimInsert ? 'success' : 'warning', children: [vimInsert ? 'INSERT' : 'NORMAL', " "] })), _jsx(Box, { ref: expanded ? undefined : valueBoxRef, flexGrow: 1, flexShrink: 1, onClick: handleValueClick, onDragStart: handleDragStart, onDragMove: handleDragMove, onDragEnd: handleDragEnd, children: value.length === 0 ? (_jsxs(_Fragment, { children: [_jsx(Text, { inverse: true, children: " " }), _jsx(EffortTierBadge, { effort: channel.reasoningEffort, levels: channel.effortLevels, onLight: isLightThemeActive(themeName), columns: columns, leadingColumns: 3 + homeButtonCols })] })) : (_jsx(Box, { flexDirection: "column", children: rendered })) }), expandEnabled && (_jsx(Box, { flexShrink: 0, onClick: (event) => {
3889
+ }, children: _jsx(Text, { dimColor: !homeHovered, bold: homeHovered, color: homeHovered ? promptAccent : undefined, children: HOME_BUTTON_TEXT }) })), _jsx(EffortChargeGlyph, { effort: channel.reasoningEffort, levels: channel.effortLevels, working: channel.working }), vimEnabled && (_jsxs(Text, { bold: true, color: vimInsert ? 'success' : 'warning', children: [vimInsert ? 'INSERT' : 'NORMAL', " "] })), _jsx(Box, { ref: expanded ? undefined : valueBoxRef, flexGrow: 1, flexShrink: 1, onClick: handleValueClick, onDragStart: handleDragStart, onDragMove: handleDragMove, onDragEnd: handleDragEnd, children: value.length === 0 ? (_jsxs(_Fragment, { children: [caretCell('empty', ' '), _jsx(EffortTierBadge, { effort: channel.reasoningEffort, levels: channel.effortLevels, columns: columns, leadingColumns: 3 + homeButtonCols })] })) : (_jsx(Box, { flexDirection: "column", children: rendered })) }), expandEnabled && (_jsx(Box, { flexShrink: 0, onClick: (event) => {
3637
3890
  event.stopImmediatePropagation();
3638
3891
  toggleExpand();
3639
3892
  }, onMouseEnter: () => {