@pentoshi/clai 2.0.62 → 3.5.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 (475) hide show
  1. package/README.md +262 -368
  2. package/dist/agent/classic-renderer.js +9 -1
  3. package/dist/agent/classic-renderer.js.map +1 -1
  4. package/dist/agent/context-manager.d.ts +5 -0
  5. package/dist/agent/context-manager.js +14 -2
  6. package/dist/agent/context-manager.js.map +1 -1
  7. package/dist/agent/events.d.ts +9 -1
  8. package/dist/agent/plan-tool.js +80 -8
  9. package/dist/agent/plan-tool.js.map +1 -1
  10. package/dist/agent/runner.js +261 -122
  11. package/dist/agent/runner.js.map +1 -1
  12. package/dist/agent/tool-call-parser.d.ts +20 -0
  13. package/dist/agent/tool-call-parser.js +186 -2
  14. package/dist/agent/tool-call-parser.js.map +1 -1
  15. package/dist/app/adapters/agent-event-adapter.d.ts +29 -0
  16. package/dist/app/adapters/agent-event-adapter.js +148 -0
  17. package/dist/app/adapters/agent-event-adapter.js.map +1 -0
  18. package/dist/app/adapters/current-agent-adapter.d.ts +7 -0
  19. package/dist/app/adapters/current-agent-adapter.js +27 -0
  20. package/dist/app/adapters/current-agent-adapter.js.map +1 -0
  21. package/dist/app/adapters/current-jobs-adapter.d.ts +4 -0
  22. package/dist/app/adapters/current-jobs-adapter.js +13 -0
  23. package/dist/app/adapters/current-jobs-adapter.js.map +1 -0
  24. package/dist/app/adapters/current-store-adapter.d.ts +3 -0
  25. package/dist/app/adapters/current-store-adapter.js +22 -0
  26. package/dist/app/adapters/current-store-adapter.js.map +1 -0
  27. package/dist/app/adapters/current-terminal-adapter.d.ts +9 -0
  28. package/dist/app/adapters/current-terminal-adapter.js +31 -0
  29. package/dist/app/adapters/current-terminal-adapter.js.map +1 -0
  30. package/dist/app/adapters/current-updates-adapter.d.ts +7 -0
  31. package/dist/app/adapters/current-updates-adapter.js +31 -0
  32. package/dist/app/adapters/current-updates-adapter.js.map +1 -0
  33. package/dist/app/adapters/in-memory-clipboard-adapter.d.ts +10 -0
  34. package/dist/app/adapters/in-memory-clipboard-adapter.js +20 -0
  35. package/dist/app/adapters/in-memory-clipboard-adapter.js.map +1 -0
  36. package/dist/app/commands/command.d.ts +24 -0
  37. package/dist/app/commands/command.js +4 -0
  38. package/dist/app/commands/command.js.map +1 -0
  39. package/dist/app/commands/registry.d.ts +45 -0
  40. package/dist/app/commands/registry.js +164 -0
  41. package/dist/app/commands/registry.js.map +1 -0
  42. package/dist/app/controllers/disposable.d.ts +15 -0
  43. package/dist/app/controllers/disposable.js +38 -0
  44. package/dist/app/controllers/disposable.js.map +1 -0
  45. package/dist/app/controllers/job-controller.d.ts +22 -0
  46. package/dist/app/controllers/job-controller.js +35 -0
  47. package/dist/app/controllers/job-controller.js.map +1 -0
  48. package/dist/app/controllers/plan-controller.d.ts +31 -0
  49. package/dist/app/controllers/plan-controller.js +69 -0
  50. package/dist/app/controllers/plan-controller.js.map +1 -0
  51. package/dist/app/controllers/session-controller.d.ts +167 -0
  52. package/dist/app/controllers/session-controller.js +467 -0
  53. package/dist/app/controllers/session-controller.js.map +1 -0
  54. package/dist/app/controllers/turn-controller.d.ts +52 -0
  55. package/dist/app/controllers/turn-controller.js +118 -0
  56. package/dist/app/controllers/turn-controller.js.map +1 -0
  57. package/dist/app/events/app-event.d.ts +122 -0
  58. package/dist/app/events/app-event.js +25 -0
  59. package/dist/app/events/app-event.js.map +1 -0
  60. package/dist/app/events/event-buffer.d.ts +51 -0
  61. package/dist/app/events/event-buffer.js +109 -0
  62. package/dist/app/events/event-buffer.js.map +1 -0
  63. package/dist/app/events/sequencer.d.ts +32 -0
  64. package/dist/app/events/sequencer.js +55 -0
  65. package/dist/app/events/sequencer.js.map +1 -0
  66. package/dist/app/ports/agent-port.d.ts +29 -0
  67. package/dist/app/ports/agent-port.js +2 -0
  68. package/dist/app/ports/agent-port.js.map +1 -0
  69. package/dist/app/ports/clipboard-port.d.ts +9 -0
  70. package/dist/app/ports/clipboard-port.js +2 -0
  71. package/dist/app/ports/clipboard-port.js.map +1 -0
  72. package/dist/app/ports/confirm-port.d.ts +17 -0
  73. package/dist/app/ports/confirm-port.js +2 -0
  74. package/dist/app/ports/confirm-port.js.map +1 -0
  75. package/dist/app/ports/jobs-port.d.ts +18 -0
  76. package/dist/app/ports/jobs-port.js +2 -0
  77. package/dist/app/ports/jobs-port.js.map +1 -0
  78. package/dist/app/ports/persistence-port.d.ts +21 -0
  79. package/dist/app/ports/persistence-port.js +2 -0
  80. package/dist/app/ports/persistence-port.js.map +1 -0
  81. package/dist/app/ports/secret-port.d.ts +12 -0
  82. package/dist/app/ports/secret-port.js +2 -0
  83. package/dist/app/ports/secret-port.js.map +1 -0
  84. package/dist/app/ports/terminal-port.d.ts +18 -0
  85. package/dist/app/ports/terminal-port.js +2 -0
  86. package/dist/app/ports/terminal-port.js.map +1 -0
  87. package/dist/app/ports/updates-port.d.ts +12 -0
  88. package/dist/app/ports/updates-port.js +2 -0
  89. package/dist/app/ports/updates-port.js.map +1 -0
  90. package/dist/commands/doctor.js +19 -0
  91. package/dist/commands/doctor.js.map +1 -1
  92. package/dist/commands/update.js +1 -1
  93. package/dist/commands/update.js.map +1 -1
  94. package/dist/index.js +47 -12
  95. package/dist/index.js.map +1 -1
  96. package/dist/llm/router.js +4 -2
  97. package/dist/llm/router.js.map +1 -1
  98. package/dist/prompts/index.d.ts +1 -1
  99. package/dist/prompts/index.js +11 -8
  100. package/dist/prompts/index.js.map +1 -1
  101. package/dist/repl/slash-commands.js +1 -1
  102. package/dist/repl/slash-commands.js.map +1 -1
  103. package/dist/repl.js +35 -107
  104. package/dist/repl.js.map +1 -1
  105. package/dist/store/config.js +3 -1
  106. package/dist/store/config.js.map +1 -1
  107. package/dist/store/history.d.ts +26 -2
  108. package/dist/store/history.js +383 -72
  109. package/dist/store/history.js.map +1 -1
  110. package/dist/store/logs.js +3 -3
  111. package/dist/store/logs.js.map +1 -1
  112. package/dist/store/paths.d.ts +6 -0
  113. package/dist/store/paths.js +38 -0
  114. package/dist/store/paths.js.map +1 -0
  115. package/dist/store/plan.js +8 -5
  116. package/dist/store/plan.js.map +1 -1
  117. package/dist/tools/fs.d.ts +6 -0
  118. package/dist/tools/fs.js +56 -6
  119. package/dist/tools/fs.js.map +1 -1
  120. package/dist/tools/jobs.js +2 -2
  121. package/dist/tools/jobs.js.map +1 -1
  122. package/dist/tools/registry.js +189 -67
  123. package/dist/tools/registry.js.map +1 -1
  124. package/dist/tools/shell.js +2 -2
  125. package/dist/tools/shell.js.map +1 -1
  126. package/dist/tui/runtime.d.ts +19 -0
  127. package/dist/tui/runtime.js +92 -0
  128. package/dist/tui/runtime.js.map +1 -0
  129. package/dist/tui/state.js +22 -17
  130. package/dist/tui/state.js.map +1 -1
  131. package/dist/tui-v2/actions/action-id.d.ts +14 -0
  132. package/dist/tui-v2/actions/action-id.js +109 -0
  133. package/dist/tui-v2/actions/action-id.js.map +1 -0
  134. package/dist/tui-v2/actions/action-router.d.ts +18 -0
  135. package/dist/tui-v2/actions/action-router.js +62 -0
  136. package/dist/tui-v2/actions/action-router.js.map +1 -0
  137. package/dist/tui-v2/actions/chord-from-key.d.ts +26 -0
  138. package/dist/tui-v2/actions/chord-from-key.js +45 -0
  139. package/dist/tui-v2/actions/chord-from-key.js.map +1 -0
  140. package/dist/tui-v2/actions/keymap.d.ts +24 -0
  141. package/dist/tui-v2/actions/keymap.js +134 -0
  142. package/dist/tui-v2/actions/keymap.js.map +1 -0
  143. package/dist/tui-v2/app/App.d.ts +13 -0
  144. package/dist/tui-v2/app/App.js +332 -0
  145. package/dist/tui-v2/app/App.js.map +1 -0
  146. package/dist/tui-v2/app/command-handlers.d.ts +8 -0
  147. package/dist/tui-v2/app/command-handlers.js +66 -0
  148. package/dist/tui-v2/app/command-handlers.js.map +1 -0
  149. package/dist/tui-v2/app/commands/config-commands.d.ts +14 -0
  150. package/dist/tui-v2/app/commands/config-commands.js +161 -0
  151. package/dist/tui-v2/app/commands/config-commands.js.map +1 -0
  152. package/dist/tui-v2/app/commands/key-commands.d.ts +9 -0
  153. package/dist/tui-v2/app/commands/key-commands.js +263 -0
  154. package/dist/tui-v2/app/commands/key-commands.js.map +1 -0
  155. package/dist/tui-v2/app/commands/picker-commands.d.ts +24 -0
  156. package/dist/tui-v2/app/commands/picker-commands.js +423 -0
  157. package/dist/tui-v2/app/commands/picker-commands.js.map +1 -0
  158. package/dist/tui-v2/app/commands/session-commands.d.ts +19 -0
  159. package/dist/tui-v2/app/commands/session-commands.js +162 -0
  160. package/dist/tui-v2/app/commands/session-commands.js.map +1 -0
  161. package/dist/tui-v2/app/plan-lifecycle.d.ts +22 -0
  162. package/dist/tui-v2/app/plan-lifecycle.js +95 -0
  163. package/dist/tui-v2/app/plan-lifecycle.js.map +1 -0
  164. package/dist/tui-v2/app/providers.d.ts +17 -0
  165. package/dist/tui-v2/app/providers.js +32 -0
  166. package/dist/tui-v2/app/providers.js.map +1 -0
  167. package/dist/tui-v2/bootstrap/capabilities.d.ts +35 -0
  168. package/dist/tui-v2/bootstrap/capabilities.js +93 -0
  169. package/dist/tui-v2/bootstrap/capabilities.js.map +1 -0
  170. package/dist/tui-v2/bootstrap/composition-root.d.ts +85 -0
  171. package/dist/tui-v2/bootstrap/composition-root.js +131 -0
  172. package/dist/tui-v2/bootstrap/composition-root.js.map +1 -0
  173. package/dist/tui-v2/bootstrap/disable-native-selection.d.ts +11 -0
  174. package/dist/tui-v2/bootstrap/disable-native-selection.js +13 -0
  175. package/dist/tui-v2/bootstrap/disable-native-selection.js.map +1 -0
  176. package/dist/tui-v2/bootstrap/lifecycle.d.ts +62 -0
  177. package/dist/tui-v2/bootstrap/lifecycle.js +123 -0
  178. package/dist/tui-v2/bootstrap/lifecycle.js.map +1 -0
  179. package/dist/tui-v2/bootstrap/osc52-clipboard.d.ts +28 -0
  180. package/dist/tui-v2/bootstrap/osc52-clipboard.js +44 -0
  181. package/dist/tui-v2/bootstrap/osc52-clipboard.js.map +1 -0
  182. package/dist/tui-v2/bootstrap/overlay-ports.d.ts +12 -0
  183. package/dist/{tui/confirm.js → tui-v2/bootstrap/overlay-ports.js} +17 -25
  184. package/dist/tui-v2/bootstrap/overlay-ports.js.map +1 -0
  185. package/dist/tui-v2/bootstrap/pager-export.d.ts +24 -0
  186. package/dist/tui-v2/bootstrap/pager-export.js +87 -0
  187. package/dist/tui-v2/bootstrap/pager-export.js.map +1 -0
  188. package/dist/tui-v2/bootstrap/start-tui-v2.d.ts +15 -0
  189. package/dist/tui-v2/bootstrap/start-tui-v2.js +95 -0
  190. package/dist/tui-v2/bootstrap/start-tui-v2.js.map +1 -0
  191. package/dist/tui-v2/bootstrap/ui-selection.d.ts +30 -0
  192. package/dist/tui-v2/bootstrap/ui-selection.js +59 -0
  193. package/dist/tui-v2/bootstrap/ui-selection.js.map +1 -0
  194. package/dist/tui-v2/components/completion/completion-menu.d.ts +23 -0
  195. package/dist/tui-v2/components/completion/completion-menu.js +84 -0
  196. package/dist/tui-v2/components/completion/completion-menu.js.map +1 -0
  197. package/dist/tui-v2/components/jobs/jobs-panel.d.ts +16 -0
  198. package/dist/tui-v2/components/jobs/jobs-panel.js +92 -0
  199. package/dist/tui-v2/components/jobs/jobs-panel.js.map +1 -0
  200. package/dist/tui-v2/components/modal/confirm-modal.d.ts +20 -0
  201. package/dist/tui-v2/components/modal/confirm-modal.js +110 -0
  202. package/dist/tui-v2/components/modal/confirm-modal.js.map +1 -0
  203. package/dist/tui-v2/components/modal/prompt-actions-modal.d.ts +15 -0
  204. package/dist/tui-v2/components/modal/prompt-actions-modal.js +80 -0
  205. package/dist/tui-v2/components/modal/prompt-actions-modal.js.map +1 -0
  206. package/dist/tui-v2/components/modal/secret-modal.d.ts +18 -0
  207. package/dist/tui-v2/components/modal/secret-modal.js +50 -0
  208. package/dist/tui-v2/components/modal/secret-modal.js.map +1 -0
  209. package/dist/tui-v2/components/overlay/overlay-host.d.ts +26 -0
  210. package/dist/tui-v2/components/overlay/overlay-host.js +43 -0
  211. package/dist/tui-v2/components/overlay/overlay-host.js.map +1 -0
  212. package/dist/tui-v2/components/pager/pager.d.ts +20 -0
  213. package/dist/tui-v2/components/pager/pager.js +396 -0
  214. package/dist/tui-v2/components/pager/pager.js.map +1 -0
  215. package/dist/tui-v2/components/picker/picker.d.ts +17 -0
  216. package/dist/tui-v2/components/picker/picker.js +222 -0
  217. package/dist/tui-v2/components/picker/picker.js.map +1 -0
  218. package/dist/tui-v2/components/plan/plan-view.d.ts +20 -0
  219. package/dist/tui-v2/components/plan/plan-view.js +120 -0
  220. package/dist/tui-v2/components/plan/plan-view.js.map +1 -0
  221. package/dist/tui-v2/components/queue/queue-panel.d.ts +23 -0
  222. package/dist/tui-v2/components/queue/queue-panel.js +58 -0
  223. package/dist/tui-v2/components/queue/queue-panel.js.map +1 -0
  224. package/dist/tui-v2/components/status/status-line.d.ts +27 -0
  225. package/dist/tui-v2/components/status/status-line.js +167 -0
  226. package/dist/tui-v2/components/status/status-line.js.map +1 -0
  227. package/dist/tui-v2/components/toast/toast-host.d.ts +15 -0
  228. package/dist/tui-v2/components/toast/toast-host.js +48 -0
  229. package/dist/tui-v2/components/toast/toast-host.js.map +1 -0
  230. package/dist/tui-v2/components/transcript/assistant-message.d.ts +20 -0
  231. package/dist/tui-v2/components/transcript/assistant-message.js +41 -0
  232. package/dist/tui-v2/components/transcript/assistant-message.js.map +1 -0
  233. package/dist/tui-v2/components/transcript/compacted-row.d.ts +19 -0
  234. package/dist/tui-v2/components/transcript/compacted-row.js +69 -0
  235. package/dist/tui-v2/components/transcript/compacted-row.js.map +1 -0
  236. package/dist/tui-v2/components/transcript/intro-card.d.ts +19 -0
  237. package/dist/tui-v2/components/transcript/intro-card.js +50 -0
  238. package/dist/tui-v2/components/transcript/intro-card.js.map +1 -0
  239. package/dist/tui-v2/components/transcript/linkable-text.d.ts +21 -0
  240. package/dist/tui-v2/components/transcript/linkable-text.js +46 -0
  241. package/dist/tui-v2/components/transcript/linkable-text.js.map +1 -0
  242. package/dist/tui-v2/components/transcript/notice-row.d.ts +14 -0
  243. package/dist/tui-v2/components/transcript/notice-row.js +40 -0
  244. package/dist/tui-v2/components/transcript/notice-row.js.map +1 -0
  245. package/dist/tui-v2/components/transcript/search-bar.d.ts +19 -0
  246. package/dist/tui-v2/components/transcript/search-bar.js +7 -0
  247. package/dist/tui-v2/components/transcript/search-bar.js.map +1 -0
  248. package/dist/tui-v2/components/transcript/thinking-block.d.ts +22 -0
  249. package/dist/tui-v2/components/transcript/thinking-block.js +27 -0
  250. package/dist/tui-v2/components/transcript/thinking-block.js.map +1 -0
  251. package/dist/tui-v2/components/transcript/tool-card.d.ts +26 -0
  252. package/dist/tui-v2/components/transcript/tool-card.js +205 -0
  253. package/dist/tui-v2/components/transcript/tool-card.js.map +1 -0
  254. package/dist/tui-v2/components/transcript/transcript-row.d.ts +25 -0
  255. package/dist/tui-v2/components/transcript/transcript-row.js +37 -0
  256. package/dist/tui-v2/components/transcript/transcript-row.js.map +1 -0
  257. package/dist/tui-v2/components/transcript/transcript-scroll-port.d.ts +52 -0
  258. package/dist/tui-v2/components/transcript/transcript-scroll-port.js +86 -0
  259. package/dist/tui-v2/components/transcript/transcript-scroll-port.js.map +1 -0
  260. package/dist/tui-v2/components/transcript/transcript-view.d.ts +24 -0
  261. package/dist/tui-v2/components/transcript/transcript-view.js +403 -0
  262. package/dist/tui-v2/components/transcript/transcript-view.js.map +1 -0
  263. package/dist/tui-v2/components/transcript/use-click-without-drag.d.ts +13 -0
  264. package/dist/tui-v2/components/transcript/use-click-without-drag.js +35 -0
  265. package/dist/tui-v2/components/transcript/use-click-without-drag.js.map +1 -0
  266. package/dist/tui-v2/components/transcript/use-native-selection-copy.d.ts +10 -0
  267. package/dist/tui-v2/components/transcript/use-native-selection-copy.js +37 -0
  268. package/dist/tui-v2/components/transcript/use-native-selection-copy.js.map +1 -0
  269. package/dist/tui-v2/components/transcript/use-transcript-selection.d.ts +23 -0
  270. package/dist/tui-v2/components/transcript/use-transcript-selection.js +136 -0
  271. package/dist/tui-v2/components/transcript/use-transcript-selection.js.map +1 -0
  272. package/dist/tui-v2/components/transcript/user-message.d.ts +10 -0
  273. package/dist/tui-v2/components/transcript/user-message.js +23 -0
  274. package/dist/tui-v2/components/transcript/user-message.js.map +1 -0
  275. package/dist/tui-v2/composer/arrow-intent.d.ts +23 -0
  276. package/dist/tui-v2/composer/arrow-intent.js +35 -0
  277. package/dist/tui-v2/composer/arrow-intent.js.map +1 -0
  278. package/dist/tui-v2/composer/completion.d.ts +37 -0
  279. package/dist/tui-v2/composer/completion.js +67 -0
  280. package/dist/tui-v2/composer/completion.js.map +1 -0
  281. package/dist/tui-v2/composer/composer-editor.d.ts +33 -0
  282. package/dist/tui-v2/composer/composer-editor.js +620 -0
  283. package/dist/tui-v2/composer/composer-editor.js.map +1 -0
  284. package/dist/tui-v2/composer/composer-height.d.ts +21 -0
  285. package/dist/tui-v2/composer/composer-height.js +29 -0
  286. package/dist/tui-v2/composer/composer-height.js.map +1 -0
  287. package/dist/tui-v2/composer/composer-meta.d.ts +9 -0
  288. package/dist/tui-v2/composer/composer-meta.js +38 -0
  289. package/dist/tui-v2/composer/composer-meta.js.map +1 -0
  290. package/dist/tui-v2/composer/history-nav.d.ts +15 -0
  291. package/dist/tui-v2/composer/history-nav.js +16 -0
  292. package/dist/tui-v2/composer/history-nav.js.map +1 -0
  293. package/dist/tui-v2/composer/newline-hint.d.ts +13 -0
  294. package/dist/tui-v2/composer/newline-hint.js +13 -0
  295. package/dist/tui-v2/composer/newline-hint.js.map +1 -0
  296. package/dist/tui-v2/composer/paste-placeholder.d.ts +35 -0
  297. package/dist/tui-v2/composer/paste-placeholder.js +55 -0
  298. package/dist/tui-v2/composer/paste-placeholder.js.map +1 -0
  299. package/dist/tui-v2/composer/prompt-history.d.ts +22 -0
  300. package/dist/tui-v2/composer/prompt-history.js +51 -0
  301. package/dist/tui-v2/composer/prompt-history.js.map +1 -0
  302. package/dist/tui-v2/composer/secret-buffer.d.ts +20 -0
  303. package/dist/tui-v2/composer/secret-buffer.js +42 -0
  304. package/dist/tui-v2/composer/secret-buffer.js.map +1 -0
  305. package/dist/tui-v2/composer/textarea-keybindings.d.ts +22 -0
  306. package/dist/tui-v2/composer/textarea-keybindings.js +27 -0
  307. package/dist/tui-v2/composer/textarea-keybindings.js.map +1 -0
  308. package/dist/tui-v2/controllers/focus-controller.d.ts +30 -0
  309. package/dist/tui-v2/controllers/focus-controller.js +80 -0
  310. package/dist/tui-v2/controllers/focus-controller.js.map +1 -0
  311. package/dist/tui-v2/controllers/overlay-controller.d.ts +99 -0
  312. package/dist/tui-v2/controllers/overlay-controller.js +195 -0
  313. package/dist/tui-v2/controllers/overlay-controller.js.map +1 -0
  314. package/dist/tui-v2/controllers/selection-controller.d.ts +76 -0
  315. package/dist/tui-v2/controllers/selection-controller.js +238 -0
  316. package/dist/tui-v2/controllers/selection-controller.js.map +1 -0
  317. package/dist/tui-v2/controllers/toast-controller.d.ts +35 -0
  318. package/dist/tui-v2/controllers/toast-controller.js +88 -0
  319. package/dist/tui-v2/controllers/toast-controller.js.map +1 -0
  320. package/dist/tui-v2/layout/compute-layout.d.ts +59 -0
  321. package/dist/tui-v2/layout/compute-layout.js +170 -0
  322. package/dist/tui-v2/layout/compute-layout.js.map +1 -0
  323. package/dist/tui-v2/rendering/ansi-to-styled.d.ts +17 -0
  324. package/dist/tui-v2/rendering/ansi-to-styled.js +217 -0
  325. package/dist/tui-v2/rendering/ansi-to-styled.js.map +1 -0
  326. package/dist/tui-v2/rendering/batch-sections.d.ts +57 -0
  327. package/dist/tui-v2/rendering/batch-sections.js +177 -0
  328. package/dist/tui-v2/rendering/batch-sections.js.map +1 -0
  329. package/dist/tui-v2/rendering/link-detector.d.ts +16 -0
  330. package/dist/tui-v2/rendering/link-detector.js +43 -0
  331. package/dist/tui-v2/rendering/link-detector.js.map +1 -0
  332. package/dist/tui-v2/rendering/open-tool-output.d.ts +28 -0
  333. package/dist/tui-v2/rendering/open-tool-output.js +138 -0
  334. package/dist/tui-v2/rendering/open-tool-output.js.map +1 -0
  335. package/dist/tui-v2/rendering/picker-filter.d.ts +22 -0
  336. package/dist/tui-v2/rendering/picker-filter.js +68 -0
  337. package/dist/tui-v2/rendering/picker-filter.js.map +1 -0
  338. package/dist/tui-v2/rendering/plan-view.d.ts +32 -0
  339. package/dist/tui-v2/rendering/plan-view.js +196 -0
  340. package/dist/tui-v2/rendering/plan-view.js.map +1 -0
  341. package/dist/tui-v2/rendering/render-markdown-lines.d.ts +29 -0
  342. package/dist/tui-v2/rendering/render-markdown-lines.js +46 -0
  343. package/dist/tui-v2/rendering/render-markdown-lines.js.map +1 -0
  344. package/dist/tui-v2/rendering/sanitize-display.d.ts +13 -0
  345. package/dist/tui-v2/rendering/sanitize-display.js +24 -0
  346. package/dist/tui-v2/rendering/sanitize-display.js.map +1 -0
  347. package/dist/tui-v2/rendering/strip-tool-surfaces.d.ts +10 -0
  348. package/dist/tui-v2/rendering/strip-tool-surfaces.js +32 -0
  349. package/dist/tui-v2/rendering/strip-tool-surfaces.js.map +1 -0
  350. package/dist/tui-v2/rendering/theme.d.ts +67 -0
  351. package/dist/tui-v2/rendering/theme.js +74 -0
  352. package/dist/tui-v2/rendering/theme.js.map +1 -0
  353. package/dist/tui-v2/rendering/tool-presenter.d.ts +39 -0
  354. package/dist/tui-v2/rendering/tool-presenter.js +209 -0
  355. package/dist/tui-v2/rendering/tool-presenter.js.map +1 -0
  356. package/dist/tui-v2/rendering/transcript-export.d.ts +11 -0
  357. package/dist/tui-v2/rendering/transcript-export.js +18 -0
  358. package/dist/tui-v2/rendering/transcript-export.js.map +1 -0
  359. package/dist/tui-v2/rendering/transcript-semantic.d.ts +17 -0
  360. package/dist/tui-v2/rendering/transcript-semantic.js +67 -0
  361. package/dist/tui-v2/rendering/transcript-semantic.js.map +1 -0
  362. package/dist/tui-v2/state/pager-search.d.ts +22 -0
  363. package/dist/tui-v2/state/pager-search.js +78 -0
  364. package/dist/tui-v2/state/pager-search.js.map +1 -0
  365. package/dist/tui-v2/state/semantic-document.d.ts +34 -0
  366. package/dist/tui-v2/state/semantic-document.js +201 -0
  367. package/dist/tui-v2/state/semantic-document.js.map +1 -0
  368. package/dist/tui-v2/state/transcript-compaction.d.ts +24 -0
  369. package/dist/tui-v2/state/transcript-compaction.js +79 -0
  370. package/dist/tui-v2/state/transcript-compaction.js.map +1 -0
  371. package/dist/tui-v2/state/transcript-hydrate.d.ts +27 -0
  372. package/dist/tui-v2/state/transcript-hydrate.js +276 -0
  373. package/dist/tui-v2/state/transcript-hydrate.js.map +1 -0
  374. package/dist/tui-v2/state/transcript-reducer.d.ts +10 -0
  375. package/dist/tui-v2/state/transcript-reducer.js +339 -0
  376. package/dist/tui-v2/state/transcript-reducer.js.map +1 -0
  377. package/dist/tui-v2/state/transcript-search.d.ts +17 -0
  378. package/dist/tui-v2/state/transcript-search.js +38 -0
  379. package/dist/tui-v2/state/transcript-search.js.map +1 -0
  380. package/dist/tui-v2/state/transcript-store.d.ts +32 -0
  381. package/dist/tui-v2/state/transcript-store.js +66 -0
  382. package/dist/tui-v2/state/transcript-store.js.map +1 -0
  383. package/dist/tui-v2/state/transcript-struct.d.ts +15 -0
  384. package/dist/tui-v2/state/transcript-struct.js +133 -0
  385. package/dist/tui-v2/state/transcript-struct.js.map +1 -0
  386. package/dist/tui-v2/state/transcript-types.d.ts +76 -0
  387. package/dist/tui-v2/state/transcript-types.js +65 -0
  388. package/dist/tui-v2/state/transcript-types.js.map +1 -0
  389. package/dist/tui-v2/state/use-overlay.d.ts +3 -0
  390. package/dist/tui-v2/state/use-overlay.js +6 -0
  391. package/dist/tui-v2/state/use-overlay.js.map +1 -0
  392. package/dist/tui-v2/state/use-plan.d.ts +4 -0
  393. package/dist/tui-v2/state/use-plan.js +6 -0
  394. package/dist/tui-v2/state/use-plan.js.map +1 -0
  395. package/dist/tui-v2/state/use-session-state.d.ts +2 -0
  396. package/dist/tui-v2/state/use-session-state.js +7 -0
  397. package/dist/tui-v2/state/use-session-state.js.map +1 -0
  398. package/dist/tui-v2/state/use-toast.d.ts +3 -0
  399. package/dist/tui-v2/state/use-toast.js +15 -0
  400. package/dist/tui-v2/state/use-toast.js.map +1 -0
  401. package/dist/tui-v2/state/use-transcript-store.d.ts +10 -0
  402. package/dist/tui-v2/state/use-transcript-store.js +12 -0
  403. package/dist/tui-v2/state/use-transcript-store.js.map +1 -0
  404. package/dist/ui/intro-card.js +3 -3
  405. package/dist/ui/intro-card.js.map +1 -1
  406. package/dist/ui/intro-header.d.ts +23 -0
  407. package/dist/ui/intro-header.js +232 -0
  408. package/dist/ui/intro-header.js.map +1 -0
  409. package/dist/ui/markdown.js +0 -1
  410. package/dist/ui/markdown.js.map +1 -1
  411. package/dist/ui/mentions.d.ts +9 -2
  412. package/dist/ui/mentions.js +102 -4
  413. package/dist/ui/mentions.js.map +1 -1
  414. package/dist/ui/output-pane.js +1 -1
  415. package/dist/ui/output-pane.js.map +1 -1
  416. package/dist/ui/plan-pane.d.ts +8 -0
  417. package/dist/ui/plan-pane.js +38 -0
  418. package/dist/ui/plan-pane.js.map +1 -1
  419. package/dist/ui/wordmark.d.ts +5 -0
  420. package/dist/ui/wordmark.js +6 -1
  421. package/dist/ui/wordmark.js.map +1 -1
  422. package/package.json +25 -12
  423. package/dist/tui/App.d.ts +0 -12
  424. package/dist/tui/App.js +0 -2174
  425. package/dist/tui/App.js.map +0 -1
  426. package/dist/tui/components/ConfirmModal.d.ts +0 -9
  427. package/dist/tui/components/ConfirmModal.js +0 -55
  428. package/dist/tui/components/ConfirmModal.js.map +0 -1
  429. package/dist/tui/components/JobsPanel.d.ts +0 -11
  430. package/dist/tui/components/JobsPanel.js +0 -55
  431. package/dist/tui/components/JobsPanel.js.map +0 -1
  432. package/dist/tui/components/Pager.d.ts +0 -14
  433. package/dist/tui/components/Pager.js +0 -56
  434. package/dist/tui/components/Pager.js.map +0 -1
  435. package/dist/tui/components/PickerPanel.d.ts +0 -15
  436. package/dist/tui/components/PickerPanel.js +0 -126
  437. package/dist/tui/components/PickerPanel.js.map +0 -1
  438. package/dist/tui/components/PlanSidebar.d.ts +0 -6
  439. package/dist/tui/components/PlanSidebar.js +0 -99
  440. package/dist/tui/components/PlanSidebar.js.map +0 -1
  441. package/dist/tui/components/SecretInputPanel.d.ts +0 -7
  442. package/dist/tui/components/SecretInputPanel.js +0 -38
  443. package/dist/tui/components/SecretInputPanel.js.map +0 -1
  444. package/dist/tui/confirm.d.ts +0 -16
  445. package/dist/tui/confirm.js.map +0 -1
  446. package/dist/tui/default.d.ts +0 -6
  447. package/dist/tui/default.js +0 -11
  448. package/dist/tui/default.js.map +0 -1
  449. package/dist/tui/hooks/useAgentRunner.d.ts +0 -73
  450. package/dist/tui/hooks/useAgentRunner.js +0 -277
  451. package/dist/tui/hooks/useAgentRunner.js.map +0 -1
  452. package/dist/tui/hooks/useJobs.d.ts +0 -7
  453. package/dist/tui/hooks/useJobs.js +0 -39
  454. package/dist/tui/hooks/useJobs.js.map +0 -1
  455. package/dist/tui/hooks/useSpinner.d.ts +0 -5
  456. package/dist/tui/hooks/useSpinner.js +0 -21
  457. package/dist/tui/hooks/useSpinner.js.map +0 -1
  458. package/dist/tui/hooks/useTerminalSize.d.ts +0 -9
  459. package/dist/tui/hooks/useTerminalSize.js +0 -26
  460. package/dist/tui/hooks/useTerminalSize.js.map +0 -1
  461. package/dist/tui/index.d.ts +0 -10
  462. package/dist/tui/index.js +0 -37
  463. package/dist/tui/index.js.map +0 -1
  464. package/dist/tui/key-intent.d.ts +0 -36
  465. package/dist/tui/key-intent.js +0 -54
  466. package/dist/tui/key-intent.js.map +0 -1
  467. package/dist/tui/mouse.d.ts +0 -8
  468. package/dist/tui/mouse.js +0 -34
  469. package/dist/tui/mouse.js.map +0 -1
  470. package/dist/tui/plan-sidebar-lines.d.ts +0 -2
  471. package/dist/tui/plan-sidebar-lines.js +0 -140
  472. package/dist/tui/plan-sidebar-lines.js.map +0 -1
  473. package/dist/tui/render-lines.d.ts +0 -22
  474. package/dist/tui/render-lines.js +0 -611
  475. package/dist/tui/render-lines.js.map +0 -1
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Structural helpers for normalized transcript state: append-only order
3
+ * proxies and byId maps (shared by the pure transcript reducer).
4
+ */
5
+ const orderNodes = new WeakMap();
6
+ function resolveOrder(node) {
7
+ if (node.cache)
8
+ return node.cache;
9
+ const nodes = [];
10
+ let current = node;
11
+ while (current && !current.cache) {
12
+ nodes.push(current);
13
+ current = current.parent;
14
+ }
15
+ const values = current?.cache ? [...current.cache] : [...(nodes.at(-1)?.base ?? [])];
16
+ for (let index = nodes.length - 1; index >= 0; index -= 1)
17
+ values.push(nodes[index].item);
18
+ node.cache = values;
19
+ return values;
20
+ }
21
+ function appendOrder(order, item) {
22
+ const parent = orderNodes.get(order);
23
+ const node = { parent, base: parent ? undefined : order, item, cache: undefined };
24
+ const proxy = new Proxy([], {
25
+ get(_target, property) {
26
+ const values = resolveOrder(node);
27
+ const value = Reflect.get(values, property, values);
28
+ return typeof value === "function" ? value.bind(values) : value;
29
+ },
30
+ });
31
+ orderNodes.set(proxy, node);
32
+ return proxy;
33
+ }
34
+ class AppendedMap {
35
+ node;
36
+ [Symbol.toStringTag] = "Map";
37
+ constructor(node) {
38
+ this.node = node;
39
+ }
40
+ get size() {
41
+ return this.resolve().size;
42
+ }
43
+ get(key) {
44
+ return this.resolve().get(key);
45
+ }
46
+ has(key) {
47
+ return this.resolve().has(key);
48
+ }
49
+ entries() {
50
+ return this.resolve().entries();
51
+ }
52
+ keys() {
53
+ return this.resolve().keys();
54
+ }
55
+ values() {
56
+ return this.resolve().values();
57
+ }
58
+ forEach(callbackfn, thisArg) {
59
+ this.resolve().forEach((value, key) => callbackfn.call(thisArg, value, key, this));
60
+ }
61
+ [Symbol.iterator]() {
62
+ return this.entries();
63
+ }
64
+ resolve() {
65
+ if (this.node.cache)
66
+ return this.node.cache;
67
+ const nodes = [];
68
+ let current = this.node;
69
+ while (current && !current.cache) {
70
+ nodes.push(current);
71
+ current = current.parent;
72
+ }
73
+ const values = new Map(current?.cache ?? nodes.at(-1)?.base);
74
+ for (let index = nodes.length - 1; index >= 0; index -= 1) {
75
+ const node = nodes[index];
76
+ values.set(node.key, node.value);
77
+ }
78
+ this.node.cache = values;
79
+ return values;
80
+ }
81
+ }
82
+ function appendById(byId, key, value) {
83
+ const parent = byId instanceof AppendedMap ? byId.node : undefined;
84
+ return new AppendedMap({ parent, base: parent ? undefined : byId, key, value, cache: undefined });
85
+ }
86
+ export function appendItem(state, item) {
87
+ return {
88
+ ...state,
89
+ order: appendOrder(state.order, item.id),
90
+ byId: appendById(state.byId, item.id, item),
91
+ };
92
+ }
93
+ export function updateItem(state, id, update) {
94
+ const existing = state.byId.get(id);
95
+ if (!existing)
96
+ return state;
97
+ const byId = new Map(state.byId);
98
+ byId.set(id, update(existing));
99
+ return { ...state, byId };
100
+ }
101
+ export function removeItem(state, id) {
102
+ if (!state.byId.has(id))
103
+ return state;
104
+ const byId = new Map(state.byId);
105
+ byId.delete(id);
106
+ return {
107
+ ...state,
108
+ byId,
109
+ order: state.order.filter((entry) => entry !== id),
110
+ };
111
+ }
112
+ /**
113
+ * Move `itemId` so it sits immediately before `beforeId` in display order.
114
+ * No-op when either id is missing or the item already precedes `beforeId`.
115
+ * Used to keep thinking → response → tools order when reasoning is finalized
116
+ * after assistant prose already opened a row.
117
+ */
118
+ export function moveItemBefore(state, itemId, beforeId) {
119
+ if (itemId === beforeId)
120
+ return state;
121
+ const from = state.order.indexOf(itemId);
122
+ const to = state.order.indexOf(beforeId);
123
+ if (from < 0 || to < 0 || from < to)
124
+ return state;
125
+ const order = state.order.slice();
126
+ order.splice(from, 1);
127
+ const insertAt = order.indexOf(beforeId);
128
+ if (insertAt < 0)
129
+ return state;
130
+ order.splice(insertAt, 0, itemId);
131
+ return { ...state, order };
132
+ }
133
+ //# sourceMappingURL=transcript-struct.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript-struct.js","sourceRoot":"","sources":["../../../src/tui-v2/state/transcript-struct.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,MAAM,UAAU,GAAG,IAAI,OAAO,EAAqB,CAAC;AAEpD,SAAS,YAAY,CAAC,IAAe;IACnC,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC;IAClC,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,IAAI,OAAO,GAA0B,IAAI,CAAC;IAC1C,OAAO,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAC3B,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;IACrF,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAE,CAAC,IAAI,CAAC,CAAC;IAC3F,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;IACpB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,KAAwB,EAAE,IAAY;IACzD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,KAAe,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAc,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAC7F,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAc,EAAE;QACtC,GAAG,CAAC,OAAO,EAAE,QAAQ;YACnB,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YACpD,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAClE,CAAC;KACF,CAAC,CAAC;IACH,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC5B,OAAO,KAAK,CAAC;AACf,CAAC;AAUD,MAAM,WAAW;IAGM;IAFZ,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;IAEtC,YAAqB,IAAa;QAAb,SAAI,GAAJ,IAAI,CAAS;IAAG,CAAC;IAEtC,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;IAC7B,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC;IACjC,CAAC;IAED,OAAO,CACL,UAAkG,EAClG,OAAiB;QAEjB,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAEO,OAAO;QACb,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5C,MAAM,KAAK,GAAc,EAAE,CAAC;QAC5B,IAAI,OAAO,GAAwB,IAAI,CAAC,IAAI,CAAC;QAC7C,OAAO,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;QAC3B,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC7D,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,SAAS,UAAU,CACjB,IAAyC,EACzC,GAAW,EACX,KAAqB;IAErB,MAAM,MAAM,GAAG,IAAI,YAAY,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,OAAO,IAAI,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AACpG,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAsB,EAAE,IAAoB;IACrE,OAAO;QACL,GAAG,KAAK;QACR,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;QACxC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,KAAsB,EACtB,EAAU,EACV,MAAgD;IAEhD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpC,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/B,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAsB,EAAE,EAAU;IAC3D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO;QACL,GAAG,KAAK;QACR,IAAI;QACJ,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC;KACnD,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAsB,EACtB,MAAc,EACd,QAAgB;IAEhB,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAClC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/B,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAClC,OAAO,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Normalized transcript entities (V2-050).
3
+ *
4
+ * Items are keyed by a stable domain id — never an array index — so a
5
+ * component can subscribe by id and the ScrollBox can give every row a
6
+ * stable renderable id (ARCHITECTURE "Every dynamic row has a stable domain
7
+ * id"). `order` is the append order; `byId` is the normalized lookup.
8
+ */
9
+ import type { ToolCallId, TurnId } from "../../app/events/app-event.js";
10
+ interface ItemBase {
11
+ readonly id: string;
12
+ readonly sequence: number;
13
+ readonly turnId: TurnId | undefined;
14
+ readonly timestamp: number;
15
+ }
16
+ export interface UserItem extends ItemBase {
17
+ readonly kind: "user";
18
+ readonly text: string;
19
+ }
20
+ export interface AssistantItem extends ItemBase {
21
+ readonly kind: "assistant";
22
+ readonly text: string;
23
+ readonly streaming: boolean;
24
+ }
25
+ export interface ThinkingItem extends ItemBase {
26
+ readonly kind: "thinking";
27
+ readonly content: string;
28
+ readonly streaming: boolean;
29
+ }
30
+ export type ToolStatus = "queued" | "running" | "ok" | "failed" | "blocked";
31
+ export interface ToolItem extends ItemBase {
32
+ readonly kind: "tool";
33
+ readonly toolCallId: ToolCallId;
34
+ readonly name: string;
35
+ readonly argsDisplay: string;
36
+ readonly status: ToolStatus;
37
+ readonly exitCode: number | undefined;
38
+ readonly summary: string | undefined;
39
+ readonly artifactPath: string | undefined;
40
+ readonly reason: string | undefined;
41
+ readonly outputBytes: number;
42
+ }
43
+ export type NoticeLevel = "info" | "warn" | "error";
44
+ export interface NoticeItem extends ItemBase {
45
+ readonly kind: "notice";
46
+ readonly level: NoticeLevel;
47
+ readonly text: string;
48
+ }
49
+ export interface CompactedItem extends ItemBase {
50
+ readonly kind: "compacted";
51
+ readonly summary: string;
52
+ readonly beforeTokens: number;
53
+ readonly afterTokens: number;
54
+ }
55
+ export type TranscriptItem = UserItem | AssistantItem | ThinkingItem | ToolItem | NoticeItem | CompactedItem;
56
+ export interface TranscriptState {
57
+ readonly order: readonly string[];
58
+ readonly byId: ReadonlyMap<string, TranscriptItem>;
59
+ /** Open streaming item id per kind, cleared once the final event lands. */
60
+ readonly pendingAssistantId: string | undefined;
61
+ readonly pendingThinkingId: string | undefined;
62
+ readonly lastSequence: number;
63
+ /** "step N" text from the most recent `status` event while a turn runs. */
64
+ readonly runningStatus: string | undefined;
65
+ readonly expandThinkingGlobal: boolean;
66
+ readonly expandOutputGlobal: boolean;
67
+ /** Per-item expand/collapse override; absent means "inherit the global". */
68
+ readonly itemOverrides: ReadonlyMap<string, boolean>;
69
+ }
70
+ export declare const EMPTY_TRANSCRIPT_STATE: TranscriptState;
71
+ /** CHAT-005/006/007: a per-item override always wins over the global toggle. */
72
+ export declare function isItemExpanded(state: TranscriptState, item: TranscriptItem): boolean;
73
+ export declare function transcriptItems(state: TranscriptState): TranscriptItem[];
74
+ /** Plain text a search/export pass should scan for a given item. */
75
+ export declare function itemSearchText(item: TranscriptItem): string;
76
+ export {};
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Normalized transcript entities (V2-050).
3
+ *
4
+ * Items are keyed by a stable domain id — never an array index — so a
5
+ * component can subscribe by id and the ScrollBox can give every row a
6
+ * stable renderable id (ARCHITECTURE "Every dynamic row has a stable domain
7
+ * id"). `order` is the append order; `byId` is the normalized lookup.
8
+ */
9
+ export const EMPTY_TRANSCRIPT_STATE = {
10
+ order: [],
11
+ byId: new Map(),
12
+ pendingAssistantId: undefined,
13
+ pendingThinkingId: undefined,
14
+ lastSequence: 0,
15
+ runningStatus: undefined,
16
+ expandThinkingGlobal: false,
17
+ expandOutputGlobal: false,
18
+ itemOverrides: new Map(),
19
+ };
20
+ /** CHAT-005/006/007: a per-item override always wins over the global toggle. */
21
+ export function isItemExpanded(state, item) {
22
+ const override = state.itemOverrides.get(item.id);
23
+ if (override !== undefined)
24
+ return override;
25
+ if (item.kind === "thinking")
26
+ return state.expandThinkingGlobal;
27
+ // Compacted memory cards share Ctrl+O with tool OUTPUT (classic parity).
28
+ if (item.kind === "tool" || item.kind === "compacted") {
29
+ return state.expandOutputGlobal;
30
+ }
31
+ return true;
32
+ }
33
+ export function transcriptItems(state) {
34
+ const items = [];
35
+ for (const id of state.order) {
36
+ const item = state.byId.get(id);
37
+ if (item)
38
+ items.push(item);
39
+ }
40
+ return items;
41
+ }
42
+ /** Plain text a search/export pass should scan for a given item. */
43
+ export function itemSearchText(item) {
44
+ switch (item.kind) {
45
+ case "user":
46
+ return item.text;
47
+ case "assistant":
48
+ return item.text;
49
+ case "thinking":
50
+ return item.content;
51
+ case "tool":
52
+ return [item.name, item.argsDisplay, item.summary, item.reason]
53
+ .filter((part) => Boolean(part))
54
+ .join("\n");
55
+ case "notice":
56
+ return item.text;
57
+ case "compacted":
58
+ return item.summary;
59
+ default: {
60
+ const unreachable = item;
61
+ throw new Error(`unhandled transcript item: ${JSON.stringify(unreachable)}`);
62
+ }
63
+ }
64
+ }
65
+ //# sourceMappingURL=transcript-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript-types.js","sourceRoot":"","sources":["../../../src/tui-v2/state/transcript-types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAiFH,MAAM,CAAC,MAAM,sBAAsB,GAAoB;IACrD,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,IAAI,GAAG,EAAE;IACf,kBAAkB,EAAE,SAAS;IAC7B,iBAAiB,EAAE,SAAS;IAC5B,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,SAAS;IACxB,oBAAoB,EAAE,KAAK;IAC3B,kBAAkB,EAAE,KAAK;IACzB,aAAa,EAAE,IAAI,GAAG,EAAE;CACzB,CAAC;AAEF,gFAAgF;AAChF,MAAM,UAAU,cAAc,CAAC,KAAsB,EAAE,IAAoB;IACzE,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClD,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC,oBAAoB,CAAC;IAChE,yEAAyE;IACzE,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACtD,OAAO,KAAK,CAAC,kBAAkB,CAAC;IAClC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAsB;IACpD,MAAM,KAAK,GAAqB,EAAE,CAAC;IACnC,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,cAAc,CAAC,IAAoB;IACjD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,MAAM;YACT,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,KAAK,WAAW;YACd,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,KAAK,UAAU;YACb,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,KAAK,MAAM;YACT,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;iBAC5D,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC/C,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,KAAK,WAAW;YACd,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,WAAW,GAAU,IAAI,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** React binding for `OverlayController`, mirroring `use-transcript-store.ts`. */
2
+ import type { OverlayController, OverlayState } from "../controllers/overlay-controller.js";
3
+ export declare function useOverlayState(controller: OverlayController): OverlayState;
@@ -0,0 +1,6 @@
1
+ /** React binding for `OverlayController`, mirroring `use-transcript-store.ts`. */
2
+ import { useSyncExternalStore } from "react";
3
+ export function useOverlayState(controller) {
4
+ return useSyncExternalStore((listener) => controller.subscribe(listener), () => controller.getState());
5
+ }
6
+ //# sourceMappingURL=use-overlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-overlay.js","sourceRoot":"","sources":["../../../src/tui-v2/state/use-overlay.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAElF,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAG7C,MAAM,UAAU,eAAe,CAAC,UAA6B;IAC3D,OAAO,oBAAoB,CACzB,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,EAC5C,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAC5B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ /** React binding for `PlanController` (V2-070), mirroring `use-transcript-store.ts`. */
2
+ import type { PlanController } from "../../app/controllers/plan-controller.js";
3
+ import type { SessionPlan } from "../../store/plan.js";
4
+ export declare function usePlan(controller: PlanController): SessionPlan | undefined;
@@ -0,0 +1,6 @@
1
+ /** React binding for `PlanController` (V2-070), mirroring `use-transcript-store.ts`. */
2
+ import { useSyncExternalStore } from "react";
3
+ export function usePlan(controller) {
4
+ return useSyncExternalStore((listener) => controller.subscribe(listener), () => controller.current());
5
+ }
6
+ //# sourceMappingURL=use-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-plan.js","sourceRoot":"","sources":["../../../src/tui-v2/state/use-plan.ts"],"names":[],"mappings":"AAAA,wFAAwF;AAExF,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAI7C,MAAM,UAAU,OAAO,CAAC,UAA0B;IAChD,OAAO,oBAAoB,CACzB,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,EAC5C,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAC3B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { SessionController } from "../../app/controllers/session-controller.js";
2
+ export declare function useSessionState(session: SessionController): import("../../app/controllers/session-controller.js").SessionState;
@@ -0,0 +1,7 @@
1
+ import { useEffect, useState } from "react";
2
+ export function useSessionState(session) {
3
+ const [state, setState] = useState(() => session.getState());
4
+ useEffect(() => session.subscribe(() => setState(session.getState())), [session]);
5
+ return state;
6
+ }
7
+ //# sourceMappingURL=use-session-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-session-state.js","sourceRoot":"","sources":["../../../src/tui-v2/state/use-session-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAG5C,MAAM,UAAU,eAAe,CAAC,OAA0B;IACxD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7D,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAClF,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** React subscription hook for ToastController. */
2
+ import type { ToastController, ToastItem } from "../controllers/toast-controller.js";
3
+ export declare function useToastState(toast: ToastController): readonly ToastItem[];
@@ -0,0 +1,15 @@
1
+ /** React subscription hook for ToastController. */
2
+ import { useCallback, useRef, useSyncExternalStore } from "react";
3
+ export function useToastState(toast) {
4
+ // Cache snapshot so useSyncExternalStore only re-renders when the toast
5
+ // list identity changes (ToastController replaces the array on mutate).
6
+ const cache = useRef(toast.getToasts());
7
+ const getSnapshot = useCallback(() => {
8
+ const next = toast.getToasts();
9
+ if (next !== cache.current)
10
+ cache.current = next;
11
+ return cache.current;
12
+ }, [toast]);
13
+ return useSyncExternalStore((onStoreChange) => toast.subscribe(onStoreChange), getSnapshot, getSnapshot);
14
+ }
15
+ //# sourceMappingURL=use-toast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-toast.js","sourceRoot":"","sources":["../../../src/tui-v2/state/use-toast.ts"],"names":[],"mappings":"AAAA,mDAAmD;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAGlE,MAAM,UAAU,aAAa,CAAC,KAAsB;IAClD,wEAAwE;IACxE,wEAAwE;IACxE,MAAM,KAAK,GAAG,MAAM,CAAuB,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAC/B,IAAI,IAAI,KAAK,KAAK,CAAC,OAAO;YAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QACjD,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACZ,OAAO,oBAAoB,CACzB,CAAC,aAAa,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,EACjD,WAAW,EACX,WAAW,CACZ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * React binding for `TranscriptStore` (V2-050).
3
+ *
4
+ * Isolated to this one file so the store, reducer, and types stay renderer-
5
+ * independent (see `test/tui-v2/architecture.test.ts`); every transcript
6
+ * component reads state through this hook instead of subscribing by hand.
7
+ */
8
+ import type { TranscriptStore } from "./transcript-store.js";
9
+ import type { TranscriptState } from "./transcript-types.js";
10
+ export declare function useTranscriptState(store: TranscriptStore): TranscriptState;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * React binding for `TranscriptStore` (V2-050).
3
+ *
4
+ * Isolated to this one file so the store, reducer, and types stay renderer-
5
+ * independent (see `test/tui-v2/architecture.test.ts`); every transcript
6
+ * component reads state through this hook instead of subscribing by hand.
7
+ */
8
+ import { useSyncExternalStore } from "react";
9
+ export function useTranscriptState(store) {
10
+ return useSyncExternalStore((listener) => store.subscribe(listener), () => store.getState());
11
+ }
12
+ //# sourceMappingURL=use-transcript-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-transcript-store.js","sourceRoot":"","sources":["../../../src/tui-v2/state/use-transcript-store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAI7C,MAAM,UAAU,kBAAkB,CAAC,KAAsB;IACvD,OAAO,oBAAoB,CACzB,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EACvC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CACvB,CAAC;AACJ,CAAC"}
@@ -57,9 +57,9 @@ export function renderIntroCard(opts) {
57
57
  parts.push(badgeLine);
58
58
  }
59
59
  // Shortcuts — pick a set that fits the terminal width
60
- const fullShortcuts = "ESC abort │ Ctrl+C clears input │ @ attach files │ Ctrl+T thinking │ Ctrl+O output │ Ctrl+P plan";
61
- const shortShortcuts = "ESC abort │ Ctrl+C clear │ @ files │ Ctrl+T think │ Ctrl+O out │ Ctrl+P plan";
62
- const miniShortcuts = "ESC abort │ Ctrl+C clear │ /help";
60
+ const fullShortcuts = "ESC abort │ Ctrl+C quit │ @ files │ /history past chats │ Ctrl+T thinking │ Ctrl+O output";
61
+ const shortShortcuts = "ESC abort │ Ctrl+C quit │ @ files │ /history │ Ctrl+T think │ Ctrl+O out";
62
+ const miniShortcuts = "ESC abort │ /history │ /help";
63
63
  const shortcutsText = cols >= 110
64
64
  ? fullShortcuts
65
65
  : cols >= 80
@@ -1 +1 @@
1
- {"version":3,"file":"intro-card.js","sourceRoot":"","sources":["../../src/ui/intro-card.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"intro-card.js","sourceRoot":"","sources":["../../src/ui/intro-card.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Shared TUI intro / model card: two-partition box with CLAI wordmark +
3
+ * session info (workdir/model/provider/version + mode/permission badges),
4
+ * plus centered tagline and welcome line.
5
+ *
6
+ * Used by the legacy Ink TUI and OpenTUI v2 so both show the same card.
7
+ * Width is a hard budget: when the chat pane shrinks (plan split / overlay),
8
+ * the card reflows so borders never overflow or "break".
9
+ */
10
+ export interface IntroHeaderOptions {
11
+ width: number;
12
+ version: string;
13
+ mode: string;
14
+ provider: string;
15
+ model: string;
16
+ permissions: string;
17
+ workdir: string;
18
+ }
19
+ /**
20
+ * Full startup intro card as ANSI lines. Always the first transcript block;
21
+ * it scrolls up naturally with the conversation.
22
+ */
23
+ export declare function renderIntroHeaderLines(opts: IntroHeaderOptions): string[];