@deepseek-harness-tui/dsh-tui 0.10.1 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. package/README.md +175 -269
  2. package/bin/dsh-tui.js +748 -22
  3. package/cordis.patch.yml +38 -10
  4. package/cordis.yml +2 -0
  5. package/lib/types/adapter/channel/session-projection.d.ts.map +1 -1
  6. package/lib/types/adapter/channel/session-projection.js +2 -0
  7. package/lib/types/adapter/channel/ui-policy.d.ts +4 -1
  8. package/lib/types/adapter/channel/ui-policy.d.ts.map +1 -1
  9. package/lib/types/adapter/channel/ui-policy.js +5 -1
  10. package/lib/types/adapter/kernel/host-facade.d.ts.map +1 -1
  11. package/lib/types/adapter/kernel/host-facade.js +1 -0
  12. package/lib/types/adapter/kernel/replay.d.ts.map +1 -1
  13. package/lib/types/adapter/kernel/replay.js +3 -0
  14. package/lib/types/adapter/kernel/runtime.d.ts.map +1 -1
  15. package/lib/types/adapter/kernel/runtime.js +2 -0
  16. package/lib/types/adapter/kernel/slices/workspace.d.ts.map +1 -1
  17. package/lib/types/adapter/kernel/slices/workspace.js +1 -0
  18. package/lib/types/adapter/ports/channel-session.d.ts +3 -1
  19. package/lib/types/adapter/ports/channel-session.d.ts.map +1 -1
  20. package/lib/types/adapter/ports/channel-ui.d.ts +22 -2
  21. package/lib/types/adapter/ports/channel-ui.d.ts.map +1 -1
  22. package/lib/types/adapter/ports/channel-view.d.ts +66 -0
  23. package/lib/types/adapter/ports/channel-view.d.ts.map +1 -1
  24. package/lib/types/adapter/ports/channel-workspace.d.ts +23 -0
  25. package/lib/types/adapter/ports/channel-workspace.d.ts.map +1 -1
  26. package/lib/types/adapter/ports/workspace.d.ts +2 -0
  27. package/lib/types/adapter/ports/workspace.d.ts.map +1 -1
  28. package/lib/types/adapter/upstream/workspace-driver.d.ts.map +1 -1
  29. package/lib/types/adapter/upstream/workspace-driver.js +10 -2
  30. package/lib/types/commands.d.ts.map +1 -1
  31. package/lib/types/commands.js +1 -0
  32. package/lib/types/components/Chat/JobCard.d.ts.map +1 -1
  33. package/lib/types/components/Chat/JobCard.js +8 -1
  34. package/lib/types/components/ContextBarView.d.ts +15 -7
  35. package/lib/types/components/ContextBarView.d.ts.map +1 -1
  36. package/lib/types/components/ContextBarView.js +26 -22
  37. package/lib/types/components/ImagePreviewOverlay.d.ts.map +1 -1
  38. package/lib/types/components/ImagePreviewOverlay.js +11 -5
  39. package/lib/types/components/Markdown.d.ts +13 -3
  40. package/lib/types/components/Markdown.d.ts.map +1 -1
  41. package/lib/types/components/Markdown.js +47 -4
  42. package/lib/types/components/MermaidDiagram.d.ts +13 -0
  43. package/lib/types/components/MermaidDiagram.d.ts.map +1 -0
  44. package/lib/types/components/MermaidDiagram.js +61 -0
  45. package/lib/types/components/MessageList.d.ts +26 -1
  46. package/lib/types/components/MessageList.d.ts.map +1 -1
  47. package/lib/types/components/MessageList.js +82 -16
  48. package/lib/types/components/PageMargin.d.ts +1 -1
  49. package/lib/types/components/PromptInput.d.ts +37 -1
  50. package/lib/types/components/PromptInput.d.ts.map +1 -1
  51. package/lib/types/components/PromptInput.js +243 -28
  52. package/lib/types/components/ScrollbarGutter.d.ts +20 -5
  53. package/lib/types/components/ScrollbarGutter.d.ts.map +1 -1
  54. package/lib/types/components/ScrollbarGutter.js +88 -10
  55. package/lib/types/components/StreamingMarkdown.d.ts.map +1 -1
  56. package/lib/types/components/StreamingMarkdown.js +88 -34
  57. package/lib/types/components/Tooltip.d.ts.map +1 -1
  58. package/lib/types/components/Tooltip.js +45 -7
  59. package/lib/types/components/messages/UserPromptMessage.d.ts.map +1 -1
  60. package/lib/types/components/messages/UserPromptMessage.js +5 -7
  61. package/lib/types/components/messages/useImageInspection.d.ts.map +1 -1
  62. package/lib/types/components/messages/useImageInspection.js +19 -9
  63. package/lib/types/components/promptDraftCache.d.ts +102 -0
  64. package/lib/types/components/promptDraftCache.d.ts.map +1 -0
  65. package/lib/types/components/promptDraftCache.js +76 -0
  66. package/lib/types/components/questions/AskUserQuestionPanel.d.ts +17 -1
  67. package/lib/types/components/questions/AskUserQuestionPanel.d.ts.map +1 -1
  68. package/lib/types/components/questions/AskUserQuestionPanel.js +40 -7
  69. package/lib/types/components/questions/QuestionMinimizedBar.d.ts +12 -0
  70. package/lib/types/components/questions/QuestionMinimizedBar.d.ts.map +1 -0
  71. package/lib/types/components/questions/QuestionMinimizedBar.js +43 -0
  72. package/lib/types/components/sessions/SessionListRow.d.ts +23 -1
  73. package/lib/types/components/sessions/SessionListRow.d.ts.map +1 -1
  74. package/lib/types/components/sessions/SessionListRow.js +52 -5
  75. package/lib/types/components/workspaces/HomeWorkspaceRow.d.ts +49 -0
  76. package/lib/types/components/workspaces/HomeWorkspaceRow.d.ts.map +1 -0
  77. package/lib/types/components/workspaces/HomeWorkspaceRow.js +50 -0
  78. package/lib/types/dsh-adapter/bundled-presets.d.ts +10 -0
  79. package/lib/types/dsh-adapter/bundled-presets.d.ts.map +1 -0
  80. package/lib/types/dsh-adapter/bundled-presets.js +80 -0
  81. package/lib/types/dsh-adapter/channel/action-readiness.d.ts +1 -1
  82. package/lib/types/dsh-adapter/channel/action-readiness.d.ts.map +1 -1
  83. package/lib/types/dsh-adapter/channel/action-readiness.js +3 -0
  84. package/lib/types/dsh-adapter/channel/agent-view-projection.d.ts +1 -1
  85. package/lib/types/dsh-adapter/channel/agent-view-projection.d.ts.map +1 -1
  86. package/lib/types/dsh-adapter/channel/agent-view-projection.js +19 -2
  87. package/lib/types/dsh-adapter/channel/background-action.d.ts.map +1 -1
  88. package/lib/types/dsh-adapter/channel/background-action.js +52 -29
  89. package/lib/types/dsh-adapter/channel/binding-events.d.ts +5 -0
  90. package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -1
  91. package/lib/types/dsh-adapter/channel/binding-events.js +12 -2
  92. package/lib/types/dsh-adapter/channel/binding.d.ts +19 -2
  93. package/lib/types/dsh-adapter/channel/binding.d.ts.map +1 -1
  94. package/lib/types/dsh-adapter/channel/binding.js +78 -18
  95. package/lib/types/dsh-adapter/channel/composer-images.d.ts +5 -0
  96. package/lib/types/dsh-adapter/channel/composer-images.d.ts.map +1 -1
  97. package/lib/types/dsh-adapter/channel/composer-images.js +105 -6
  98. package/lib/types/dsh-adapter/channel/context-bookkeeping.d.ts +8 -0
  99. package/lib/types/dsh-adapter/channel/context-bookkeeping.d.ts.map +1 -1
  100. package/lib/types/dsh-adapter/channel/context-bookkeeping.js +3 -2
  101. package/lib/types/dsh-adapter/channel/ide-selection.d.ts +58 -0
  102. package/lib/types/dsh-adapter/channel/ide-selection.d.ts.map +1 -0
  103. package/lib/types/dsh-adapter/channel/ide-selection.js +226 -0
  104. package/lib/types/dsh-adapter/channel/input-delivery.d.ts +11 -3
  105. package/lib/types/dsh-adapter/channel/input-delivery.d.ts.map +1 -1
  106. package/lib/types/dsh-adapter/channel/input-delivery.js +80 -8
  107. package/lib/types/dsh-adapter/channel/local-actions.d.ts +3 -19
  108. package/lib/types/dsh-adapter/channel/local-actions.d.ts.map +1 -1
  109. package/lib/types/dsh-adapter/channel/local-actions.js +2 -1
  110. package/lib/types/dsh-adapter/channel/model-actions.d.ts +4 -1
  111. package/lib/types/dsh-adapter/channel/model-actions.d.ts.map +1 -1
  112. package/lib/types/dsh-adapter/channel/model-actions.js +82 -6
  113. package/lib/types/dsh-adapter/channel/model-switch.d.ts.map +1 -1
  114. package/lib/types/dsh-adapter/channel/model-switch.js +49 -31
  115. package/lib/types/dsh-adapter/channel/permissions.d.ts.map +1 -1
  116. package/lib/types/dsh-adapter/channel/permissions.js +10 -7
  117. package/lib/types/dsh-adapter/channel/projection.d.ts +4 -0
  118. package/lib/types/dsh-adapter/channel/projection.d.ts.map +1 -1
  119. package/lib/types/dsh-adapter/channel/projection.js +29 -19
  120. package/lib/types/dsh-adapter/channel/reports.d.ts.map +1 -1
  121. package/lib/types/dsh-adapter/channel/reports.js +4 -12
  122. package/lib/types/dsh-adapter/channel/session-fork.d.ts.map +1 -1
  123. package/lib/types/dsh-adapter/channel/session-fork.js +26 -2
  124. package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts +3 -0
  125. package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts.map +1 -1
  126. package/lib/types/dsh-adapter/channel/session-live-adoption.js +1 -0
  127. package/lib/types/dsh-adapter/channel/session-metadata.d.ts +10 -0
  128. package/lib/types/dsh-adapter/channel/session-metadata.d.ts.map +1 -1
  129. package/lib/types/dsh-adapter/channel/session-metadata.js +2 -2
  130. package/lib/types/dsh-adapter/channel/session-resume.d.ts +11 -2
  131. package/lib/types/dsh-adapter/channel/session-resume.d.ts.map +1 -1
  132. package/lib/types/dsh-adapter/channel/session-resume.js +291 -94
  133. package/lib/types/dsh-adapter/channel/session-rewind.d.ts.map +1 -1
  134. package/lib/types/dsh-adapter/channel/session-rewind.js +42 -17
  135. package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts.map +1 -1
  136. package/lib/types/dsh-adapter/channel/session-tree-actions.js +28 -6
  137. package/lib/types/dsh-adapter/channel/settings-host.d.ts.map +1 -1
  138. package/lib/types/dsh-adapter/channel/settings-host.js +4 -3
  139. package/lib/types/dsh-adapter/channel/skill-catalog.d.ts +8 -2
  140. package/lib/types/dsh-adapter/channel/skill-catalog.d.ts.map +1 -1
  141. package/lib/types/dsh-adapter/channel/skill-catalog.js +49 -17
  142. package/lib/types/dsh-adapter/channel/state.d.ts +1 -1
  143. package/lib/types/dsh-adapter/channel/state.d.ts.map +1 -1
  144. package/lib/types/dsh-adapter/channel/state.js +1 -1
  145. package/lib/types/dsh-adapter/channel/transcript.d.ts.map +1 -1
  146. package/lib/types/dsh-adapter/channel/transcript.js +6 -12
  147. package/lib/types/dsh-adapter/channel/types.d.ts +6 -1
  148. package/lib/types/dsh-adapter/channel/types.d.ts.map +1 -1
  149. package/lib/types/dsh-adapter/channel/workspace-actions.d.ts +4 -1
  150. package/lib/types/dsh-adapter/channel/workspace-actions.d.ts.map +1 -1
  151. package/lib/types/dsh-adapter/channel/workspace-actions.js +41 -1
  152. package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
  153. package/lib/types/dsh-adapter/channel.js +72 -8
  154. package/lib/types/dsh-adapter/compat/liveSession.d.ts +5 -3
  155. package/lib/types/dsh-adapter/compat/liveSession.d.ts.map +1 -1
  156. package/lib/types/dsh-adapter/compat/liveSession.js +5 -3
  157. package/lib/types/dsh-adapter/compat/messages.d.ts +15 -0
  158. package/lib/types/dsh-adapter/compat/messages.d.ts.map +1 -0
  159. package/lib/types/dsh-adapter/compat/messages.js +15 -0
  160. package/lib/types/dsh-adapter/compat/settings.d.ts +33 -0
  161. package/lib/types/dsh-adapter/compat/settings.d.ts.map +1 -0
  162. package/lib/types/dsh-adapter/compat/settings.js +43 -0
  163. package/lib/types/dsh-adapter/compat/shell.d.ts +25 -0
  164. package/lib/types/dsh-adapter/compat/shell.d.ts.map +1 -0
  165. package/lib/types/dsh-adapter/compat/shell.js +11 -0
  166. package/lib/types/dsh-adapter/contract.d.ts +4 -4
  167. package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
  168. package/lib/types/dsh-adapter/contract.js +15 -6
  169. package/lib/types/dsh-adapter/ide-channel.d.ts +224 -0
  170. package/lib/types/dsh-adapter/ide-channel.d.ts.map +1 -0
  171. package/lib/types/dsh-adapter/ide-channel.js +556 -0
  172. package/lib/types/dsh-adapter/index.d.ts +18 -3
  173. package/lib/types/dsh-adapter/index.d.ts.map +1 -1
  174. package/lib/types/dsh-adapter/index.js +32 -5
  175. package/lib/types/dsh-adapter/plugin.d.ts +5 -2
  176. package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
  177. package/lib/types/dsh-adapter/plugin.js +173 -42
  178. package/lib/types/dsh-adapter/preset-resolution.d.ts +8 -0
  179. package/lib/types/dsh-adapter/preset-resolution.d.ts.map +1 -1
  180. package/lib/types/dsh-adapter/preset-resolution.js +10 -0
  181. package/lib/types/dsh-adapter/session-mount-heartbeat.d.ts +53 -0
  182. package/lib/types/dsh-adapter/session-mount-heartbeat.d.ts.map +1 -0
  183. package/lib/types/dsh-adapter/session-mount-heartbeat.js +100 -0
  184. package/lib/types/dsh-adapter/sessionTree.d.ts.map +1 -1
  185. package/lib/types/dsh-adapter/sessionTree.js +3 -2
  186. package/lib/types/dsh-adapter/sessions/digest.d.ts.map +1 -1
  187. package/lib/types/dsh-adapter/sessions/digest.js +40 -19
  188. package/lib/types/dsh-adapter/sessions/frames.js +2 -0
  189. package/lib/types/dsh-adapter/sessions/list.js +3 -3
  190. package/lib/types/dsh-adapter/sessions/store.d.ts +2 -2
  191. package/lib/types/dsh-adapter/sessions/store.d.ts.map +1 -1
  192. package/lib/types/dsh-adapter/sessions/store.js +12 -11
  193. package/lib/types/dsh-adapter/sessions/types.d.ts +2 -0
  194. package/lib/types/dsh-adapter/sessions/types.d.ts.map +1 -1
  195. package/lib/types/dsh-adapter/subagents.d.ts.map +1 -1
  196. package/lib/types/dsh-adapter/subagents.js +6 -5
  197. package/lib/types/dsh-adapter/workspaces.d.ts +46 -3
  198. package/lib/types/dsh-adapter/workspaces.d.ts.map +1 -1
  199. package/lib/types/dsh-adapter/workspaces.js +116 -0
  200. package/lib/types/effortPrefs.d.ts +15 -3
  201. package/lib/types/effortPrefs.d.ts.map +1 -1
  202. package/lib/types/effortPrefs.js +37 -3
  203. package/lib/types/homePrefs.d.ts +15 -0
  204. package/lib/types/homePrefs.d.ts.map +1 -0
  205. package/lib/types/homePrefs.js +53 -0
  206. package/lib/types/i18n.d.ts +257 -296
  207. package/lib/types/i18n.d.ts.map +1 -1
  208. package/lib/types/i18n.js +78 -84
  209. package/lib/types/ink/colorize.d.ts +10 -0
  210. package/lib/types/ink/colorize.d.ts.map +1 -1
  211. package/lib/types/ink/colorize.js +21 -0
  212. package/lib/types/ink/components/ScrollBox.d.ts.map +1 -1
  213. package/lib/types/ink/components/ScrollBox.js +41 -33
  214. package/lib/types/ink/dom.d.ts +1 -0
  215. package/lib/types/ink/dom.d.ts.map +1 -1
  216. package/lib/types/ink/dom.js +32 -64
  217. package/lib/types/ink/get-max-width.d.ts +7 -15
  218. package/lib/types/ink/get-max-width.d.ts.map +1 -1
  219. package/lib/types/ink/get-max-width.js +7 -20
  220. package/lib/types/ink/hooks/use-copy-on-select.d.ts +5 -1
  221. package/lib/types/ink/hooks/use-copy-on-select.d.ts.map +1 -1
  222. package/lib/types/ink/hooks/use-copy-on-select.js +15 -1
  223. package/lib/types/ink/ink.d.ts +1 -0
  224. package/lib/types/ink/ink.d.ts.map +1 -1
  225. package/lib/types/ink/ink.js +58 -4
  226. package/lib/types/ink/layout/node.d.ts +2 -0
  227. package/lib/types/ink/layout/node.d.ts.map +1 -1
  228. package/lib/types/ink/layout/yoga.d.ts +1 -0
  229. package/lib/types/ink/layout/yoga.d.ts.map +1 -1
  230. package/lib/types/ink/layout/yoga.js +3 -0
  231. package/lib/types/ink/node-cache.d.ts +11 -0
  232. package/lib/types/ink/node-cache.d.ts.map +1 -1
  233. package/lib/types/ink/node-cache.js +3 -0
  234. package/lib/types/ink/output.d.ts +16 -2
  235. package/lib/types/ink/output.d.ts.map +1 -1
  236. package/lib/types/ink/output.js +163 -81
  237. package/lib/types/ink/render-border.d.ts +6 -1
  238. package/lib/types/ink/render-border.d.ts.map +1 -1
  239. package/lib/types/ink/render-border.js +25 -9
  240. package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
  241. package/lib/types/ink/render-node-to-output.js +140 -73
  242. package/lib/types/ink/renderer.d.ts +6 -0
  243. package/lib/types/ink/renderer.d.ts.map +1 -1
  244. package/lib/types/ink/renderer.js +2 -1
  245. package/lib/types/ink/selection.d.ts +60 -0
  246. package/lib/types/ink/selection.d.ts.map +1 -1
  247. package/lib/types/ink/selection.js +129 -0
  248. package/lib/types/ink/sixel-graphics.d.ts +19 -1
  249. package/lib/types/ink/sixel-graphics.d.ts.map +1 -1
  250. package/lib/types/ink/sixel-graphics.js +124 -12
  251. package/lib/types/ink/tabstops.d.ts +3 -2
  252. package/lib/types/ink/tabstops.d.ts.map +1 -1
  253. package/lib/types/ink/tabstops.js +5 -4
  254. package/lib/types/ink/terminal-image.d.ts +18 -1
  255. package/lib/types/ink/terminal-image.d.ts.map +1 -1
  256. package/lib/types/ink/terminal.d.ts +17 -0
  257. package/lib/types/ink/terminal.d.ts.map +1 -1
  258. package/lib/types/ink/terminal.js +20 -1
  259. package/lib/types/ink/wrap-text.js +2 -2
  260. package/lib/types/native-ts/yoga-layout/index.d.ts +8 -3
  261. package/lib/types/native-ts/yoga-layout/index.d.ts.map +1 -1
  262. package/lib/types/native-ts/yoga-layout/index.js +23 -8
  263. package/lib/types/screens/Chat.d.ts +17 -1
  264. package/lib/types/screens/Chat.d.ts.map +1 -1
  265. package/lib/types/screens/Chat.js +303 -79
  266. package/lib/types/screens/SessionSupervisor.d.ts +84 -0
  267. package/lib/types/screens/SessionSupervisor.d.ts.map +1 -0
  268. package/lib/types/screens/SessionSupervisor.js +350 -0
  269. package/lib/types/screens/SessionTree.js +2 -2
  270. package/lib/types/screens/Settings.d.ts.map +1 -1
  271. package/lib/types/screens/Settings.js +32 -9
  272. package/lib/types/screens/StatusLine.d.ts +13 -0
  273. package/lib/types/screens/StatusLine.d.ts.map +1 -1
  274. package/lib/types/screens/StatusLine.js +36 -17
  275. package/lib/types/screens/StatusMetrics.d.ts +79 -22
  276. package/lib/types/screens/StatusMetrics.d.ts.map +1 -1
  277. package/lib/types/screens/StatusMetrics.js +153 -88
  278. package/lib/types/screens/sessionSupervisor/model.d.ts +83 -0
  279. package/lib/types/screens/sessionSupervisor/model.d.ts.map +1 -0
  280. package/lib/types/screens/sessionSupervisor/model.js +69 -0
  281. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts +120 -0
  282. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts.map +1 -0
  283. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.js +593 -0
  284. package/lib/types/sessionMounts.d.ts +272 -0
  285. package/lib/types/sessionMounts.d.ts.map +1 -0
  286. package/lib/types/sessionMounts.js +706 -0
  287. package/lib/types/sessions/format.d.ts.map +1 -1
  288. package/lib/types/sessions/format.js +4 -1
  289. package/lib/types/sessions/resumeFailure.d.ts +38 -0
  290. package/lib/types/sessions/resumeFailure.d.ts.map +1 -0
  291. package/lib/types/sessions/resumeFailure.js +58 -0
  292. package/lib/types/terminal-utils/mermaid.d.ts +44 -0
  293. package/lib/types/terminal-utils/mermaid.d.ts.map +1 -0
  294. package/lib/types/terminal-utils/mermaid.js +83 -0
  295. package/lib/types/tips.d.ts.map +1 -1
  296. package/lib/types/tips.js +175 -19
  297. package/lib/types/tuiDisplayPrefs.d.ts +7 -9
  298. package/lib/types/tuiDisplayPrefs.d.ts.map +1 -1
  299. package/lib/types/tuiDisplayPrefs.js +31 -28
  300. package/lib/types/update.d.ts +61 -0
  301. package/lib/types/update.d.ts.map +1 -1
  302. package/lib/types/update.js +194 -0
  303. package/lib/types/utils/imageResize.d.ts +90 -0
  304. package/lib/types/utils/imageResize.d.ts.map +1 -0
  305. package/lib/types/utils/imageResize.js +272 -0
  306. package/lib/types/utils/keymap.d.ts +5 -1
  307. package/lib/types/utils/keymap.d.ts.map +1 -1
  308. package/lib/types/utils/keymap.js +23 -0
  309. package/lib/types/workspaces.d.ts +2 -1
  310. package/lib/types/workspaces.d.ts.map +1 -1
  311. package/lib/types/workspaces.js +1 -1
  312. package/node_modules/@deepseek-harness-tui/dsh-auth/package.json +10 -10
  313. package/package.json +121 -103
  314. package/presets/liangshen/.dsh-tui-managed.json +1 -1
  315. package/presets/liangshen/agent.cordis.yml +15 -0
  316. package/lib/types/screens/AgentView.d.ts +0 -23
  317. package/lib/types/screens/AgentView.d.ts.map +0 -1
  318. package/lib/types/screens/AgentView.js +0 -546
  319. package/lib/types/screens/SessionBrowser.d.ts +0 -42
  320. package/lib/types/screens/SessionBrowser.d.ts.map +0 -1
  321. package/lib/types/screens/SessionBrowser.js +0 -911
@@ -2,6 +2,7 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
2
2
  import React, { useState } from 'react';
3
3
  import { getLang, subscribeLang, t } from '../i18n.js';
4
4
  import { Box, Text, useTerminalSize } from '../ui.js';
5
+ import { normalizeIdePath } from '../dsh-adapter/ide-channel.js';
5
6
  import { Divider } from './design-system/Divider.js';
6
7
  import { UserPromptMessage } from './messages/UserPromptMessage.js';
7
8
  import { AssistantTextMessage } from './messages/AssistantTextMessage.js';
@@ -92,6 +93,48 @@ function revealDisplayLen(row, enabled) {
92
93
  }
93
94
  return row.text.length;
94
95
  }
96
+ /**
97
+ * Display form of an IDE-selection path (T-FIX-01): when the path lives
98
+ * under the session cwd, strip that prefix so the indicator line reads
99
+ * `src/a.ts` instead of a long absolute path (UAT finding — the extension
100
+ * anchors at its workspace root while the TUI session cwd is the git
101
+ * worktree root, so raw paths are long and redundant). Pure display layer:
102
+ * the `<attached-file>` block keeps its absolute path for the model.
103
+ *
104
+ * Comparison reuses normalizeIdePath (the ide-channel lock matcher's
105
+ * normalizer: backslashes folded to forward slashes, trailing slashes
106
+ * stripped, case folded on case-insensitive filesystems) so Windows forms
107
+ * like `d:/x` vs `D:\X` still match. Prefix hits return the remainder
108
+ * (`src/a.ts`); everything else — outside cwd, empty/undefined cwd, or the
109
+ * path being the cwd itself — returns the input unchanged. NOT basename:
110
+ * that would drop the directory context and collide on same-named files.
111
+ * `caseInsensitive` is parameterized so verifiers can pin either mode on
112
+ * any host.
113
+ */
114
+ export function displaySelectionPath(path, sessionCwd, caseInsensitive = process.platform === 'win32' || process.platform === 'darwin') {
115
+ if (sessionCwd === undefined || sessionCwd === '')
116
+ return path;
117
+ // Shared normalizer (lock matching uses the same): backslashes fold to
118
+ // forward slashes, trailing slashes stripped — transforms that preserve
119
+ // character positions, so slicing the canonical path at the cwd's length
120
+ // keeps the file's own casing in the displayed relative string. Folding
121
+ // decides only WHETHER the prefix matches, never what gets sliced off.
122
+ const pathNorm = normalizeIdePath(path, false);
123
+ const cwdNorm = normalizeIdePath(sessionCwd, false);
124
+ if (cwdNorm === '' || cwdNorm.length >= pathNorm.length)
125
+ return path;
126
+ // The POSIX root `/` is a prefix of every absolute path without a further
127
+ // separator — `/repo/file.ts` under cwd `/` displays as `repo/file.ts`.
128
+ // (A `startsWith('/' + '/')` check would never match; coderabbit review.)
129
+ if (cwdNorm === '/') {
130
+ return pathNorm.startsWith('/') ? pathNorm.slice(1) : path;
131
+ }
132
+ const foldedPath = normalizeIdePath(pathNorm, caseInsensitive);
133
+ const foldedCwd = normalizeIdePath(cwdNorm, caseInsensitive);
134
+ if (!foldedPath.startsWith(`${foldedCwd}/`))
135
+ return path;
136
+ return pathNorm.slice(cwdNorm.length + 1);
137
+ }
95
138
  /**
96
139
  * Per-kind layout signature PARTS: the O(1) identity of every input that
97
140
  * decides a row's rendered HEIGHT (see sigRef in MessageList). Fields are
@@ -113,7 +156,7 @@ function revealDisplayLen(row, enabled) {
113
156
  * (parts.slice()).
114
157
  */
115
158
  const signatureScratch = [];
116
- function signatureParts(row, columns, expanded, expandedRows, streamViewToggledRows, thinkingVisible, thinkingFold, diffLayout, foldTerminalCommand, model, failureHintRowId, failureHint, displayTextLen) {
159
+ function signatureParts(row, columns, expanded, expandedRows, streamViewToggledRows, thinkingVisible, thinkingFold, diffLayout, foldTerminalCommand, model, failureHintRowId, failureHint, displayTextLen, sessionCwd) {
117
160
  signatureScratch.length = 0;
118
161
  // Universal height inputs: width reflows every row; kind switches height
119
162
  // semantics wholesale; text length drives wrapping. `displayTextLen` is the
@@ -156,8 +199,26 @@ function signatureParts(row, columns, expanded, expandedRows, streamViewToggledR
156
199
  // Folded one-liner vs full summary text.
157
200
  signatureScratch.push(expanded, expandedRows.has(row.id));
158
201
  break;
202
+ case 'user':
203
+ // T06: the selection indicator line above the bubble adds one rendered
204
+ // row whose text wraps with width — its presence and content length
205
+ // are height inputs. Missing this would leave offscreen spacer heights
206
+ // stale when the field arrives (scroll jump, DESIGN R4).
207
+ // T-FIX-01: the indicator renders the cwd-relative display path, so
208
+ // the signature hashes THAT string — a cwd switch (/workspace) that
209
+ // changes the display form must invalidate the cached height too.
210
+ // width is the display-CELL width (emoji / CJK / combining / ANSI
211
+ // differ from JS length), not the JS string length — two paths with
212
+ // equal length but different terminal widths must not share a cached
213
+ // height (coderabbit review, repo width convention).
214
+ signatureScratch.push(row.selectionAttached === undefined ? 0 : 1, stringWidth(displaySelectionPath(row.selectionAttached?.path ?? '', sessionCwd)), String(row.selectionAttached?.lines ?? ''));
215
+ // Long-line fold: expanding a folded row swaps the folded preview for
216
+ // the raw line (thousands of rows), so both expansion switches are
217
+ // height inputs on user rows too — same rationale as the default arm.
218
+ signatureScratch.push(expanded, expandedRows.has(row.id));
219
+ break;
159
220
  default:
160
- // user / notice / interrupt / local / local-output: height follows
221
+ // notice / interrupt / local / local-output: height follows
161
222
  // text + columns alone (selection/background never change height) —
162
223
  // EXCEPT the long-line fold: expanding a folded row swaps ~10 rows of
163
224
  // folded text for the raw line (thousands), so both expansion switches
@@ -169,7 +230,7 @@ function signatureParts(row, columns, expanded, expandedRows, streamViewToggledR
169
230
  }
170
231
  return signatureScratch;
171
232
  }
172
- export function MessageList({ rows, expanded, expandedRows, selectedId, onToggleRow, streamViewToggledRows = NO_STREAM_VIEW_TOGGLED, onToggleStreamView = NOOP_TOGGLE_STREAM_VIEW, model, diffLayout = 'auto', thinkingFold = 'preview', toolBackground = 'none', foldTerminalCommand = false, smoothStreaming = false, activityFrames, showAll, onToggleAll, onLoadOlder, thinkingVisible = true, historyPaintEnabled = true, registerRowRef, scrollHandle, forceMountRowId, newSinceRowId, onUnseenCount, onTimeline, failureHintRowId, failureHint, onOpenSubagent, onOpenJobs, onOpenFile, onPreviewImage, suppressImageGraphics = false, }) {
233
+ export function MessageList({ rows, expanded, expandedRows, selectedId, onToggleRow, streamViewToggledRows = NO_STREAM_VIEW_TOGGLED, onToggleStreamView = NOOP_TOGGLE_STREAM_VIEW, model, diffLayout = 'auto', thinkingFold = 'preview', toolBackground = 'none', foldTerminalCommand = false, smoothStreaming = false, activityFrames, showAll, onToggleAll, onLoadOlder, thinkingVisible = true, historyPaintEnabled = true, registerRowRef, scrollHandle, forceMountRowId, newSinceRowId, onUnseenCount, onTimeline, failureHintRowId, failureHint, onOpenSubagent, onOpenJobs, onOpenFile, sessionCwd, onPreviewImage, suppressImageGraphics = false, }) {
173
234
  const lang = React.useSyncExternalStore(subscribeLang, getLang);
174
235
  const hiddenCount = rows.length - RENDERED_ROW_CAP;
175
236
  // The thinking filter runs BEFORE virtualization so window indices line up.
@@ -396,7 +457,7 @@ export function MessageList({ rows, expanded, expandedRows, selectedId, onToggle
396
457
  // reasoning height at once, remounting the widened window over rows
397
458
  // whose rendering never changed (Yoga spike + measure churn for
398
459
  // nothing). Base parts cover the universal height inputs.
399
- const parts = signatureParts(row, columns, expanded, expandedRows, streamViewToggledRows, thinkingVisible, thinkingFold, diffLayout, foldTerminalCommand, model, failureHintRowId, failureHint, revealDisplayLen(row, smoothStreaming));
460
+ const parts = signatureParts(row, columns, expanded, expandedRows, streamViewToggledRows, thinkingVisible, thinkingFold, diffLayout, foldTerminalCommand, model, failureHintRowId, failureHint, revealDisplayLen(row, smoothStreaming), sessionCwd);
400
461
  const cachedParts = sigs.get(row.id);
401
462
  let same = false;
402
463
  if (cachedParts !== undefined && cachedParts.length === parts.length) {
@@ -457,6 +518,12 @@ export function MessageList({ rows, expanded, expandedRows, selectedId, onToggle
457
518
  let start = 0;
458
519
  while (start < visibleRows.length && offsets[start] + heightOf(visibleRows[start]) <= relTop)
459
520
  start++;
521
+ // Resize invalidates cached heights, so a manual scrollTop can overshoot
522
+ // the entire estimated list. Keep its last row mounted to re-measure:
523
+ // an empty window has no measurement wakeup and collapses scrollHeight,
524
+ // leaving the transcript blank and the gutter believing nothing scrolls.
525
+ if (start === visibleRows.length && start > 0)
526
+ start--;
460
527
  let end = start;
461
528
  while (end < visibleRows.length && offsets[end] < relBottom)
462
529
  end++;
@@ -629,15 +696,10 @@ export function MessageList({ rows, expanded, expandedRows, selectedId, onToggle
629
696
  end = Math.max(end, idx + 1);
630
697
  }
631
698
  }
632
- // The newest failed tool call carries the trajectory footnote
633
- // (failureHint). Virtualization must not unmount it: before the window
634
- // clamp the row was always mounted, now keep mounting it explicitly while
635
- // the hint is live (verify-trace-scene's footnote check).
636
- if (failureHintRowId !== undefined && failureHintRowId !== null) {
637
- const idx = visibleRows.findIndex(row => row.id === failureHintRowId);
638
- if (idx !== -1)
639
- start = Math.min(start, idx);
640
- }
699
+ // The failure footnote is row content, not a seek request. Pinning its
700
+ // row also mounted EVERY later tool card until the trajectory was opened,
701
+ // defeating virtualization for the rest of a tool-heavy conversation.
702
+ // It reappears when scrolled into view; only forceMountRowId widens for a seek.
641
703
  const topPad = offsets[start] ?? 0;
642
704
  const mountedBottom = end < visibleRows.length ? offsets[end] : total;
643
705
  const bottomPad = total - mountedBottom;
@@ -958,7 +1020,7 @@ export function MessageList({ rows, expanded, expandedRows, selectedId, onToggle
958
1020
  else if (row.kind === 'reasoning' && smoothStreaming) {
959
1021
  displayText = revealTextOf(`r${row.id}`, row.text, { enabled: true, active: displayStreaming });
960
1022
  }
961
- return (_jsx(MemoRow, { rowId: row.id, kind: row.kind, text: displayText, images: row.images, textFull: row.kind === 'reasoning' ? row.text : undefined, executionTarget: row.executionTarget, streaming: displayStreaming, durationMs: row.durationMs, time: row.time, marginTopOnTurn: marginTopOnTurn, isSelected: selectedId === row.id, isExpanded: expandedRows.has(row.id), expanded: expanded, model: model, diffLayout: diffLayout, thinkingFold: thinkingFold, toolBackground: toolBackground, foldTerminalCommand: foldTerminalCommand, smoothStreaming: smoothStreaming, fresh: row.fresh === true, revealVersion: revealVersion, activityFrames: activityFrames, background: rowBackground(row.id), toolCallId: tool?.callId, toolName: tool?.name, toolArgsText: tool?.argsText, toolArgsFull: tool?.argsFull, toolStatus: tool?.status, toolResultText: tool?.resultText, toolResultFull: tool?.resultFull, toolErrorText: tool?.errorText, toolFootnote: failureHintRowId === row.id ? failureHint : undefined, toolCallView: tool?.callView, toolResultView: tool?.resultView, toolStartedAt: tool?.startedAt, toolDurationMs: tool?.durationMs, subagent: subagent, job: job, onToggleRow: onToggleRow, onToggleStreamView: onToggleStreamView, streamViewToggled: streamViewToggledRows.has(row.id), onOpenSubagent: onOpenSubagent, onOpenJobs: onOpenJobs, onOpenFile: onOpenFile, onPreviewImage: onPreviewImage, suppressImageGraphics: suppressImageGraphics, setRowRef: setRowRef }, row.id));
1023
+ return (_jsx(MemoRow, { rowId: row.id, kind: row.kind, text: displayText, images: row.images, textFull: row.kind === 'reasoning' ? row.text : undefined, executionTarget: row.executionTarget, selectionAttached: row.selectionAttached, streaming: displayStreaming, durationMs: row.durationMs, time: row.time, marginTopOnTurn: marginTopOnTurn, isSelected: selectedId === row.id, isExpanded: expandedRows.has(row.id), expanded: expanded, model: model, diffLayout: diffLayout, thinkingFold: thinkingFold, toolBackground: toolBackground, foldTerminalCommand: foldTerminalCommand, smoothStreaming: smoothStreaming, fresh: row.fresh === true, revealVersion: revealVersion, activityFrames: activityFrames, background: rowBackground(row.id), toolCallId: tool?.callId, toolName: tool?.name, toolArgsText: tool?.argsText, toolArgsFull: tool?.argsFull, toolStatus: tool?.status, toolResultText: tool?.resultText, toolResultFull: tool?.resultFull, toolErrorText: tool?.errorText, toolFootnote: failureHintRowId === row.id ? failureHint : undefined, toolCallView: tool?.callView, toolResultView: tool?.resultView, toolStartedAt: tool?.startedAt, toolDurationMs: tool?.durationMs, subagent: subagent, job: job, onToggleRow: onToggleRow, onToggleStreamView: onToggleStreamView, streamViewToggled: streamViewToggledRows.has(row.id), onOpenSubagent: onOpenSubagent, onOpenJobs: onOpenJobs, onOpenFile: onOpenFile, sessionCwd: sessionCwd, onPreviewImage: onPreviewImage, suppressImageGraphics: suppressImageGraphics, setRowRef: setRowRef }, row.id));
962
1024
  }), bottomPad > 0 && _jsx(Box, { height: bottomPad, flexShrink: 0 })] }));
963
1025
  }
964
1026
  /** Load-earlier / show-previous divider row with a mouse hover tint — the
@@ -967,7 +1029,7 @@ function ClickableDivider({ title, onClick }) {
967
1029
  const [hovered, setHovered] = useState(false);
968
1030
  return (_jsx(Box, { marginTop: 1, onClick: onClick, onMouseEnter: () => setHovered(true), onMouseLeave: () => setHovered(false), backgroundColor: hovered ? 'userMessageBackgroundHover' : undefined, children: _jsx(Divider, { title: title }) }));
969
1031
  }
970
- function TranscriptRow({ rowId, kind, text, images, textFull, executionTarget, streaming, durationMs, time, marginTopOnTurn, isSelected, isExpanded, expanded, model, diffLayout, smoothStreaming, fresh, revealVersion, thinkingFold, toolBackground, foldTerminalCommand, activityFrames, background, toolCallId, toolName, toolArgsText, toolArgsFull, toolStatus, toolResultText, toolResultFull, toolErrorText, toolFootnote, toolCallView, toolResultView, toolStartedAt, toolDurationMs, subagent, job, onToggleRow, onToggleStreamView, streamViewToggled, onOpenSubagent, onOpenJobs, onOpenFile, onPreviewImage, suppressImageGraphics, setRowRef, }) {
1032
+ function TranscriptRow({ rowId, kind, text, images, textFull, executionTarget, selectionAttached, sessionCwd, streaming, durationMs, time, marginTopOnTurn, isSelected, isExpanded, expanded, model, diffLayout, smoothStreaming, fresh, revealVersion, thinkingFold, toolBackground, foldTerminalCommand, activityFrames, background, toolCallId, toolName, toolArgsText, toolArgsFull, toolStatus, toolResultText, toolResultFull, toolErrorText, toolFootnote, toolCallView, toolResultView, toolStartedAt, toolDurationMs, subagent, job, onToggleRow, onToggleStreamView, streamViewToggled, onOpenSubagent, onOpenJobs, onOpenFile, onPreviewImage, suppressImageGraphics, setRowRef, }) {
971
1033
  const ref = React.useCallback((el) => {
972
1034
  setRowRef(rowId, el);
973
1035
  }, [setRowRef, rowId]);
@@ -1017,7 +1079,11 @@ function TranscriptRow({ rowId, kind, text, images, textFull, executionTarget, s
1017
1079
  const foldClickable = foldable && folded.hiddenChars > 0;
1018
1080
  switch (kind) {
1019
1081
  case 'user':
1020
- return (_jsxs(Box, { flexDirection: "column", ref: ref, onClick: foldClickable ? foldOnClick : undefined, children: [text !== '' && (_jsx(UserPromptMessage, { text: displayText, marginTopOnTurn: marginTopOnTurn, isSelected: isSelected })), images !== undefined && (_jsx(Box, { marginTop: text === '' && marginTopOnTurn ? 1 : 0, children: _jsx(TranscriptImages, { images: images, onPreview: onPreviewImage, suppressGraphics: suppressImageGraphics }) }))] }));
1082
+ return (_jsxs(Box, { flexDirection: "column", ref: ref, onClick: foldClickable ? foldOnClick : undefined, children: [selectionAttached && (_jsxs(Text, { dimColor: true, children: ['⧉ ', t('selection-attached', {
1083
+ lines: selectionAttached.lines,
1084
+ count: selectionAttached.lines,
1085
+ path: displaySelectionPath(selectionAttached.path, sessionCwd),
1086
+ })] })), text !== '' && (_jsx(UserPromptMessage, { text: displayText, marginTopOnTurn: marginTopOnTurn, isSelected: isSelected })), images !== undefined && (_jsx(Box, { marginTop: text === '' && marginTopOnTurn ? 1 : 0, children: _jsx(TranscriptImages, { images: images, onPreview: onPreviewImage, suppressGraphics: suppressImageGraphics }) }))] }));
1021
1087
  case 'assistant':
1022
1088
  return streaming ? (_jsxs(Box, { alignItems: "flex-start", flexDirection: "row", marginTop: marginTopOnTurn ? 1 : 0, width: "100%", backgroundColor: background, ref: ref, onClick: foldClickable ? foldOnClick : undefined, children: [_jsx(Box, { minWidth: 2, children: _jsx(Text, { color: "text", children: "\u25CF" }) }), _jsxs(Box, { flexDirection: "column", children: [_jsx(StreamingMarkdown, { children: stripNarration(displayText) }), images !== undefined && _jsx(TranscriptImages, { images: images, indent: 0, onPreview: onPreviewImage, suppressGraphics: suppressImageGraphics })] })] })) : (_jsxs(Box, { width: "100%", flexDirection: "column", backgroundColor: background, ref: ref, onClick: foldClickable ? foldOnClick : undefined, children: [expanded && (_jsx(Box, { flexDirection: "row", justifyContent: "flex-end", gap: 1, marginTop: 1, children: _jsx(MessageMetadata, { timestamp: time, model: model }) })), _jsx(AssistantTextMessage, { text: stripNarration(displayText), marginTopOnTurn: marginTopOnTurn, isSelected: isSelected, isExpanded: isExpanded }), images !== undefined && _jsx(TranscriptImages, { images: images, onPreview: onPreviewImage, suppressGraphics: suppressImageGraphics })] }));
1023
1089
  case 'reasoning': {
@@ -17,7 +17,7 @@ import React from 'react';
17
17
  * 组件(换行宽度、虚拟化、输入区预算、表格布局……)无需各自知道
18
18
  * 边距存在——它们拿到的就是内容区尺寸;
19
19
  * 3. 坐标层:`PageInsetContext` 报告内容区相对屏幕原点的偏移,供少数
20
- * 以「屏幕坐标」做 absolute 定位的浮层(Tooltip、SessionBrowser
20
+ * 以「屏幕坐标」做 absolute 定位的浮层(Tooltip、会话列表
21
21
  * 右键菜单)补偿——它们的锚点来自指针事件(屏幕坐标),而 absolute
22
22
  * 盒子相对的是内缩后的内容区原点。
23
23
  *
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  import type { ChannelUi as Channel } from '../adapter/channel/ui-policy.js';
3
3
  import type { ComposerImageRef } from '../dsh-adapter/channel.js';
4
4
  import type { TranscriptImage } from '../dsh-adapter/transcript-images.js';
5
+ import { type PromptDraftCache } from './promptDraftCache.js';
5
6
  /** Capabilities referenced by `text`, in first occurrence order. A raw token
6
7
  * restored from disk/history has no sidecar entry and therefore stays inert. */
7
8
  export declare function composerImageRefsForText(text: string, stagedByToken: ReadonlyMap<string, string>): ComposerImageRef[];
@@ -13,6 +14,8 @@ export declare function composerImageRefsForText(text: string, stagedByToken: Re
13
14
  */
14
15
  export interface PromptController {
15
16
  hasText(): boolean;
17
+ /** The draft text, for a caller that must not lose it (see {@link PromptDraftCache}). */
18
+ text(): string;
16
19
  /** Current capability-backed draft images in token order, without reads. */
17
20
  previewImages?(): readonly {
18
21
  image: TranscriptImage;
@@ -39,10 +42,33 @@ export interface PromptController {
39
42
  * Chat's working-turn Esc interrupt must yield in BOTH submodes. */
40
43
  vimActive(): boolean;
41
44
  }
45
+ /**
46
+ * Owner-held slot for the composer draft, so a screen that unmounts the
47
+ * prompt (every early return in Chat) does not discard what the user typed.
48
+ *
49
+ * The composer writes ONE complete snapshot as it unmounts and consumes it on
50
+ * the way back; the shape and the reasoning live in `promptDraftCache.ts`.
51
+ */
42
52
  export interface PromptInputProps {
43
53
  channel: Channel;
44
54
  /** Keep the draft mounted while another prompt-slot panel owns the UI. */
45
55
  suspended?: boolean;
56
+ /**
57
+ * Owner-held slot for the unsent draft.
58
+ *
59
+ * The prompt owns its text in local state, and several screens REPLACE the
60
+ * conversation (the session screen, the session tree, settings, the jobs and
61
+ * subagent panels, the trajectory scene) — early returns that unmount this
62
+ * component and would take a half-written prompt down with it. Chat owns the
63
+ * slot, so the text, its caret AND its image bindings survive that unmount
64
+ * and come back when the composer does. The owner also drops it on a session
65
+ * change, so a draft can never leak into a different conversation.
66
+ *
67
+ * Nothing is written from render: a commit-time assignment would run before
68
+ * the restore effect has read the slot and overwrite the draft with the
69
+ * empty first value.
70
+ */
71
+ draftCache?: PromptDraftCache;
46
72
  /** Whether the `?` help menu is open (state lives in the Chat screen). */
47
73
  helpOpen: boolean;
48
74
  onToggleHelp(): void;
@@ -67,6 +93,16 @@ export interface PromptInputProps {
67
93
  * opens the agent view (with text, ← moves the caret as usual).
68
94
  */
69
95
  onBackgroundRequest?(): void;
96
+ /**
97
+ * Open the session screen (the one `/resume`, `/agentview` and `/home`
98
+ * share) from the `⌂` entry at the head of the input row.
99
+ *
100
+ * Optional on purpose: the entry is rendered ONLY when this is provided, so
101
+ * hosts that mount the prompt without a session screen — and the layout
102
+ * regressions that pin this row's column budget — keep exactly the row they
103
+ * had before.
104
+ */
105
+ onOpenSessions?(): void;
70
106
  /**
71
107
  * Background sessions waiting on the user (agent view "needs input" rows
72
108
  * excluding this session); the prompt footer shows the
@@ -123,5 +159,5 @@ export interface PromptInputProps {
123
159
  * working) interrupts the turn and delivers them right away; Ctrl+Enter
124
160
  * aborts the turn and sends the current input immediately.
125
161
  */
126
- export declare function PromptInput({ channel, suspended, helpOpen, onToggleHelp, onRunCommand, selectionActive, fillText, onFillConsumed, onRewindRequest, onBackgroundRequest, backgroundAgentsNeedingInput, controllerRef, onCaretImage, caretPreviewOpen, onDismissCaretPreview, }: PromptInputProps): React.JSX.Element | null;
162
+ export declare function PromptInput({ channel, suspended, draftCache, helpOpen, onToggleHelp, onRunCommand, selectionActive, fillText, onFillConsumed, onRewindRequest, onBackgroundRequest, onOpenSessions, backgroundAgentsNeedingInput, controllerRef, onCaretImage, caretPreviewOpen, onDismissCaretPreview, }: PromptInputProps): React.JSX.Element | null;
127
163
  //# sourceMappingURL=PromptInput.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PromptInput.d.ts","sourceRoot":"","sources":["../../../src/components/PromptInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AA0BzB,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;AAgH1E;gFACgF;AAChF,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GACzC,gBAAgB,EAAE,CAWpB;AA+MD;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,IAAI,OAAO,CAAA;IAClB,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,2EAA2E;IAC3E,SAAS,IAAI,OAAO,CAAA;IACpB;yEACqE;IACrE,SAAS,IAAI,OAAO,CAAA;CAAC;AAEvB,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAA;IAChB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,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;;;;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;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,SAAiB,EACjB,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,4BAA4B,EAC5B,aAAa,EACb,YAAY,EACZ,gBAAwB,EACxB,qBAAqB,GACtB,EAAE,gBAAgB,4BA6hGlB"}
1
+ {"version":3,"file":"PromptInput.d.ts","sourceRoot":"","sources":["../../../src/components/PromptInput.tsx"],"names":[],"mappings":"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"}