@oh-my-pi/pi-tui 18.4.3 → 18.4.4

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 (447) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/types/apps/cleanse-board.d.ts +17 -0
  3. package/dist/types/apps/git/help.d.ts +16 -0
  4. package/dist/types/apps/git/sidebar.d.ts +18 -0
  5. package/dist/types/apps/live-visualizer.d.ts +10 -0
  6. package/dist/types/apps/ps-top.d.ts +15 -0
  7. package/dist/types/apps/standalone-picker.d.ts +3 -0
  8. package/dist/types/autocomplete.d.ts +8 -0
  9. package/dist/types/chat/advisor-message.d.ts +12 -2
  10. package/dist/types/chat/assistant-message.d.ts +20 -0
  11. package/dist/types/chat/bash-execution.d.ts +9 -0
  12. package/dist/types/chat/chat-transcript-builder.d.ts +6 -1
  13. package/dist/types/chat/collab-prompt-message.d.ts +4 -0
  14. package/dist/types/chat/compaction-summary-message.d.ts +15 -0
  15. package/dist/types/chat/eval-execution.d.ts +8 -0
  16. package/dist/types/chat/execution-shared.d.ts +58 -0
  17. package/dist/types/chat/late-diagnostics-message.d.ts +15 -1
  18. package/dist/types/chat/read-tool-group.d.ts +15 -0
  19. package/dist/types/chat/skill-message.d.ts +9 -0
  20. package/dist/types/chat/stripped-tool-calls-placeholder.d.ts +3 -0
  21. package/dist/types/chat/todo-reminder.d.ts +4 -1
  22. package/dist/types/chat/tool-execution.d.ts +25 -1
  23. package/dist/types/chat/transcript-actions.d.ts +37 -0
  24. package/dist/types/chat/transcript-entry.d.ts +3 -1
  25. package/dist/types/chat/user-message.d.ts +25 -0
  26. package/dist/types/chrome/collab-qrcode.d.ts +7 -0
  27. package/dist/types/chrome/context-thresholds.d.ts +11 -0
  28. package/dist/types/chrome/countdown-timer.d.ts +9 -3
  29. package/dist/types/chrome/diff.d.ts +12 -0
  30. package/dist/types/chrome/dynamic-border.d.ts +3 -0
  31. package/dist/types/chrome/format.d.ts +6 -0
  32. package/dist/types/chrome/message-divider.d.ts +13 -0
  33. package/dist/types/chrome/message-frame.d.ts +10 -0
  34. package/dist/types/chrome/message-notice.d.ts +23 -0
  35. package/dist/types/chrome/overlay-box.d.ts +11 -2
  36. package/dist/types/chrome/qrcode.d.ts +7 -0
  37. package/dist/types/chrome/segment-track.d.ts +7 -0
  38. package/dist/types/chrome/selector-helpers.d.ts +0 -6
  39. package/dist/types/chrome/status-notice.d.ts +14 -0
  40. package/dist/types/chrome/streaming-panel.d.ts +3 -0
  41. package/dist/types/chrome/tool-activity.d.ts +3 -0
  42. package/dist/types/chrome/transcript-container.d.ts +13 -0
  43. package/dist/types/chrome/transcript-status.d.ts +15 -3
  44. package/dist/types/components/box.d.ts +7 -0
  45. package/dist/types/components/disclosure.d.ts +9 -0
  46. package/dist/types/components/editor.d.ts +37 -0
  47. package/dist/types/components/form.d.ts +14 -0
  48. package/dist/types/components/image.d.ts +7 -0
  49. package/dist/types/components/input.d.ts +20 -1
  50. package/dist/types/components/key-value-list.d.ts +3 -0
  51. package/dist/types/components/layout/geometry.d.ts +16 -0
  52. package/dist/types/components/layout/row.d.ts +7 -0
  53. package/dist/types/components/layout/split-pane.d.ts +8 -0
  54. package/dist/types/components/layout/stack.d.ts +6 -0
  55. package/dist/types/components/loader.d.ts +48 -0
  56. package/dist/types/components/markdown.d.ts +8 -0
  57. package/dist/types/components/metric.d.ts +7 -0
  58. package/dist/types/components/progress-bar.d.ts +3 -0
  59. package/dist/types/components/scroll-view.d.ts +6 -0
  60. package/dist/types/components/section.d.ts +3 -0
  61. package/dist/types/components/select-list.d.ts +33 -0
  62. package/dist/types/components/settings-list.d.ts +68 -0
  63. package/dist/types/components/spacer.d.ts +4 -0
  64. package/dist/types/components/tab-bar.d.ts +9 -0
  65. package/dist/types/components/table.d.ts +7 -0
  66. package/dist/types/components/text.d.ts +6 -0
  67. package/dist/types/components/tree-view.d.ts +9 -0
  68. package/dist/types/components/truncated-text.d.ts +3 -0
  69. package/dist/types/components/wizard-step.d.ts +6 -0
  70. package/dist/types/hotkeys-markdown.d.ts +24 -0
  71. package/dist/types/index.d.ts +5 -0
  72. package/dist/types/latex-block.d.ts +7 -0
  73. package/dist/types/native/apply.d.ts +39 -0
  74. package/dist/types/native/backend.d.ts +94 -0
  75. package/dist/types/native/blobs.d.ts +29 -0
  76. package/dist/types/native/describe.d.ts +56 -0
  77. package/dist/types/native/encode.d.ts +50 -0
  78. package/dist/types/native/icons.d.ts +18 -0
  79. package/dist/types/native/memo.d.ts +27 -0
  80. package/dist/types/native/node.d.ts +107 -0
  81. package/dist/types/native/overlay.d.ts +64 -0
  82. package/dist/types/native/picker.d.ts +124 -0
  83. package/dist/types/native/reconcile.d.ts +41 -0
  84. package/dist/types/native/settle.d.ts +11 -0
  85. package/dist/types/native/spans.d.ts +21 -0
  86. package/dist/types/native/state.d.ts +6 -0
  87. package/dist/types/native/tone.d.ts +24 -0
  88. package/dist/types/overlays/advisor-config.d.ts +20 -0
  89. package/dist/types/overlays/agent-hub-renderer.d.ts +27 -11
  90. package/dist/types/overlays/agent-hub.d.ts +10 -0
  91. package/dist/types/overlays/agent-transcript-viewer.d.ts +7 -0
  92. package/dist/types/overlays/agents-hub.d.ts +8 -0
  93. package/dist/types/overlays/annotation-overlay.d.ts +3 -0
  94. package/dist/types/overlays/ask-dialog.d.ts +23 -0
  95. package/dist/types/overlays/bordered-loader.d.ts +3 -0
  96. package/dist/types/overlays/btw-history-panel.d.ts +9 -0
  97. package/dist/types/overlays/btw-panel.d.ts +3 -0
  98. package/dist/types/overlays/cleanse-panel.d.ts +5 -2
  99. package/dist/types/overlays/composer-shape-preview.d.ts +7 -1
  100. package/dist/types/overlays/copy-selector.d.ts +38 -0
  101. package/dist/types/overlays/error-banner.d.ts +9 -0
  102. package/dist/types/overlays/extensions/extension-list.d.ts +1 -0
  103. package/dist/types/overlays/history-search.d.ts +18 -0
  104. package/dist/types/overlays/hook-editor.d.ts +28 -1
  105. package/dist/types/overlays/hook-input.d.ts +3 -0
  106. package/dist/types/overlays/hook-selector.d.ts +10 -0
  107. package/dist/types/overlays/hub-frame.d.ts +18 -0
  108. package/dist/types/overlays/jobs-panel.d.ts +24 -0
  109. package/dist/types/overlays/login-dialog.d.ts +10 -0
  110. package/dist/types/overlays/logout-account-selector.d.ts +4 -0
  111. package/dist/types/overlays/mcp-add-wizard.d.ts +4 -0
  112. package/dist/types/overlays/model-browser.d.ts +69 -0
  113. package/dist/types/overlays/model-hub.d.ts +7 -0
  114. package/dist/types/overlays/model-picker.d.ts +7 -0
  115. package/dist/types/overlays/move-overlay.d.ts +3 -0
  116. package/dist/types/overlays/oauth-selector.d.ts +4 -0
  117. package/dist/types/overlays/omfg-panel.d.ts +3 -0
  118. package/dist/types/overlays/pause-screen.d.ts +12 -0
  119. package/dist/types/overlays/plan-review-overlay.d.ts +5 -0
  120. package/dist/types/overlays/plan-save-overlay.d.ts +10 -0
  121. package/dist/types/overlays/plugin-selector.d.ts +4 -0
  122. package/dist/types/overlays/plugin-settings.d.ts +30 -0
  123. package/dist/types/overlays/queue-mode-selector.d.ts +4 -0
  124. package/dist/types/overlays/reset-usage-selector.d.ts +8 -0
  125. package/dist/types/overlays/rewind-selector.d.ts +5 -0
  126. package/dist/types/overlays/session-info-overlay.d.ts +19 -1
  127. package/dist/types/overlays/session-selector.d.ts +64 -1
  128. package/dist/types/overlays/settings-defs.d.ts +14 -0
  129. package/dist/types/overlays/settings-selector.d.ts +21 -0
  130. package/dist/types/overlays/show-images-selector.d.ts +4 -0
  131. package/dist/types/overlays/snapcompact-shape-preview.d.ts +2 -0
  132. package/dist/types/overlays/stats-notice.d.ts +8 -0
  133. package/dist/types/overlays/theme-selector.d.ts +11 -0
  134. package/dist/types/overlays/thinking-selector.d.ts +4 -0
  135. package/dist/types/overlays/tree-selector.d.ts +60 -2
  136. package/dist/types/overlays/usage-dashboard.d.ts +26 -3
  137. package/dist/types/overlays/usage-row.d.ts +36 -2
  138. package/dist/types/prompt/attachment-chips.d.ts +8 -0
  139. package/dist/types/prompt/composer-attachments.d.ts +15 -3
  140. package/dist/types/prompt/composer.d.ts +18 -1
  141. package/dist/types/prompt/custom-editor.d.ts +48 -2
  142. package/dist/types/prompt/editor-top-gap.d.ts +2 -0
  143. package/dist/types/prompt/macos-spelling.d.ts +6 -0
  144. package/dist/types/prompt/magic-keywords.d.ts +9 -0
  145. package/dist/types/prompt/queued-messages.d.ts +23 -0
  146. package/dist/types/prompt/skill-tokens.d.ts +4 -2
  147. package/dist/types/prompt/welcome.d.ts +16 -0
  148. package/dist/types/render/code-cell.d.ts +10 -0
  149. package/dist/types/render/file-list.d.ts +8 -0
  150. package/dist/types/render/hyperlink.d.ts +14 -0
  151. package/dist/types/render/output-block.d.ts +43 -0
  152. package/dist/types/render/output-pane.d.ts +17 -0
  153. package/dist/types/render/tool-card.d.ts +8 -0
  154. package/dist/types/render/tree-list.d.ts +8 -0
  155. package/dist/types/render/width-aware-text.d.ts +7 -0
  156. package/dist/types/setup/scenes/outro.d.ts +7 -0
  157. package/dist/types/setup/scenes/sign-in.d.ts +7 -0
  158. package/dist/types/setup/scenes/splash.d.ts +8 -0
  159. package/dist/types/setup/scenes/types.d.ts +6 -1
  160. package/dist/types/setup/wizard-overlay.d.ts +9 -0
  161. package/dist/types/status-line/component.d.ts +49 -5
  162. package/dist/types/status-line/context-usage.d.ts +20 -0
  163. package/dist/types/status-line/footer.d.ts +8 -0
  164. package/dist/types/status-line/metrics.d.ts +1 -2
  165. package/dist/types/status-line/segments.d.ts +10 -1
  166. package/dist/types/status-line/types.d.ts +40 -1
  167. package/dist/types/terminal-capabilities.d.ts +1 -1
  168. package/dist/types/terminal.d.ts +27 -0
  169. package/dist/types/theme/defaults/index.d.ts +100 -0
  170. package/dist/types/theme/schema.d.ts +2 -0
  171. package/dist/types/theme/shimmer.d.ts +8 -0
  172. package/dist/types/theme/theme-class.d.ts +2 -0
  173. package/dist/types/theme/theme.d.ts +33 -1
  174. package/dist/types/tools/ask.d.ts +3 -0
  175. package/dist/types/tools/ast-edit.d.ts +10 -1
  176. package/dist/types/tools/ast-grep.d.ts +10 -1
  177. package/dist/types/tools/autoresearch.d.ts +21 -4
  178. package/dist/types/tools/bash.d.ts +30 -1
  179. package/dist/types/tools/cfg-render.d.ts +5 -1
  180. package/dist/types/tools/debug.d.ts +3 -1
  181. package/dist/types/tools/default-renderer.d.ts +6 -1
  182. package/dist/types/tools/edit.d.ts +14 -1
  183. package/dist/types/tools/eval.d.ts +12 -1
  184. package/dist/types/tools/fetch.d.ts +16 -1
  185. package/dist/types/tools/find.d.ts +15 -1
  186. package/dist/types/tools/github.d.ts +3 -0
  187. package/dist/types/tools/glob.d.ts +14 -1
  188. package/dist/types/tools/goal.d.ts +3 -1
  189. package/dist/types/tools/grep.d.ts +14 -1
  190. package/dist/types/tools/grouped-file-output.d.ts +58 -0
  191. package/dist/types/tools/json-tree.d.ts +20 -0
  192. package/dist/types/tools/lsp.d.ts +3 -10
  193. package/dist/types/tools/mcp.d.ts +16 -1
  194. package/dist/types/tools/memory.d.ts +26 -0
  195. package/dist/types/tools/native-view.d.ts +90 -0
  196. package/dist/types/tools/proc-render.d.ts +7 -1
  197. package/dist/types/tools/read.d.ts +23 -1
  198. package/dist/types/tools/renderer.d.ts +57 -0
  199. package/dist/types/tools/report-tool-issue.d.ts +3 -0
  200. package/dist/types/tools/resolve.d.ts +14 -1
  201. package/dist/types/tools/task.d.ts +3 -0
  202. package/dist/types/tools/think.d.ts +3 -0
  203. package/dist/types/tools/todo.d.ts +12 -0
  204. package/dist/types/tools/vibe.d.ts +3 -1
  205. package/dist/types/tools/wait.d.ts +3 -0
  206. package/dist/types/tools/web-search.d.ts +8 -0
  207. package/dist/types/tools/write.d.ts +14 -1
  208. package/dist/types/tools/xdev.d.ts +13 -0
  209. package/dist/types/tui.d.ts +49 -0
  210. package/package.json +9 -9
  211. package/src/apps/autoresearch-dashboard.ts +362 -4
  212. package/src/apps/cleanse-board.ts +219 -1
  213. package/src/apps/cleanse-picker.ts +9 -1
  214. package/src/apps/debug/log-viewer.ts +15 -15
  215. package/src/apps/debug/protocol-probe.ts +2 -20
  216. package/src/apps/git/avatar.ts +2 -22
  217. package/src/apps/git/git-tui.ts +406 -59
  218. package/src/apps/git/help.ts +130 -0
  219. package/src/apps/git/sidebar.ts +491 -0
  220. package/src/apps/live-visualizer.ts +65 -0
  221. package/src/apps/ps-top.ts +448 -17
  222. package/src/apps/session-picker.ts +1 -0
  223. package/src/apps/setup-model-picker.ts +5 -1
  224. package/src/apps/standalone-picker.ts +55 -1
  225. package/src/autocomplete.ts +44 -1
  226. package/src/chat/advisor-message.ts +72 -3
  227. package/src/chat/assistant-message.ts +346 -11
  228. package/src/chat/background-tan-message.ts +4 -4
  229. package/src/chat/bash-execution.ts +81 -0
  230. package/src/chat/cache-invalidation-marker.ts +8 -0
  231. package/src/chat/chat-transcript-builder.ts +37 -6
  232. package/src/chat/collab-prompt-message.ts +15 -3
  233. package/src/chat/compaction-summary-message.ts +74 -1
  234. package/src/chat/custom-message.ts +3 -1
  235. package/src/chat/eval-execution.ts +57 -0
  236. package/src/chat/execution-shared.ts +153 -1
  237. package/src/chat/hook-message.ts +1 -0
  238. package/src/chat/late-diagnostics-message.ts +85 -2
  239. package/src/chat/read-tool-group.ts +341 -1
  240. package/src/chat/served-model-marker.ts +8 -0
  241. package/src/chat/skill-message.ts +63 -0
  242. package/src/chat/stripped-tool-calls-placeholder.ts +18 -10
  243. package/src/chat/todo-reminder.ts +34 -4
  244. package/src/chat/tool-execution.ts +385 -10
  245. package/src/chat/transcript-actions.ts +38 -0
  246. package/src/chat/transcript-browser.ts +2 -9
  247. package/src/chat/transcript-entry.ts +10 -1
  248. package/src/chat/transcript-render-helpers.ts +16 -15
  249. package/src/chat/ttsr-notification.ts +38 -1
  250. package/src/chat/user-message.ts +167 -4
  251. package/src/chrome/collab-qrcode.ts +27 -2
  252. package/src/chrome/context-thresholds.ts +34 -0
  253. package/src/chrome/countdown-timer.ts +24 -1
  254. package/src/chrome/diff.ts +60 -1
  255. package/src/chrome/dynamic-border.ts +7 -0
  256. package/src/chrome/format.ts +12 -0
  257. package/src/chrome/message-divider.ts +33 -1
  258. package/src/chrome/message-frame.ts +53 -10
  259. package/src/chrome/message-notice.ts +71 -0
  260. package/src/chrome/overlay-box.ts +45 -2
  261. package/src/chrome/qrcode.ts +28 -0
  262. package/src/chrome/segment-track.ts +26 -0
  263. package/src/chrome/selector-helpers.ts +1 -17
  264. package/src/chrome/status-notice.ts +46 -0
  265. package/src/chrome/streaming-panel.ts +25 -1
  266. package/src/chrome/tool-activity.ts +20 -0
  267. package/src/chrome/transcript-container.ts +37 -0
  268. package/src/chrome/transcript-status.ts +40 -11
  269. package/src/components/box.ts +51 -0
  270. package/src/components/disclosure.ts +33 -0
  271. package/src/components/editor.ts +216 -27
  272. package/src/components/form.ts +93 -9
  273. package/src/components/image.ts +30 -0
  274. package/src/components/input.ts +77 -26
  275. package/src/components/key-value-list.ts +18 -0
  276. package/src/components/layout/geometry.ts +44 -0
  277. package/src/components/layout/row.ts +30 -0
  278. package/src/components/layout/split-pane.ts +65 -0
  279. package/src/components/layout/stack.ts +27 -0
  280. package/src/components/loader.ts +183 -1
  281. package/src/components/markdown.ts +21 -0
  282. package/src/components/metric.ts +39 -0
  283. package/src/components/progress-bar.ts +28 -0
  284. package/src/components/scroll-view.ts +23 -0
  285. package/src/components/section.ts +16 -0
  286. package/src/components/select-list.ts +174 -25
  287. package/src/components/settings-list.ts +264 -7
  288. package/src/components/spacer.ts +17 -0
  289. package/src/components/tab-bar.ts +42 -0
  290. package/src/components/table.ts +34 -0
  291. package/src/components/text.ts +23 -0
  292. package/src/components/tree-view.ts +65 -0
  293. package/src/components/truncated-text.ts +14 -0
  294. package/src/components/wizard-step.ts +18 -9
  295. package/src/debug-server.ts +14 -7
  296. package/src/hotkeys-markdown.ts +251 -69
  297. package/src/index.ts +6 -0
  298. package/src/latex-block.ts +11 -0
  299. package/src/native/apply.ts +275 -0
  300. package/src/native/backend.ts +682 -0
  301. package/src/native/blobs.ts +70 -0
  302. package/src/native/describe.ts +124 -0
  303. package/src/native/encode.ts +233 -0
  304. package/src/native/icons.ts +184 -0
  305. package/src/native/memo.ts +64 -0
  306. package/src/native/node.ts +112 -0
  307. package/src/native/overlay.ts +131 -0
  308. package/src/native/picker.ts +333 -0
  309. package/src/native/reconcile.ts +1063 -0
  310. package/src/native/settle.ts +23 -0
  311. package/src/native/spans.ts +308 -0
  312. package/src/native/state.ts +28 -0
  313. package/src/native/tone.ts +79 -0
  314. package/src/overlays/advisor-config.ts +420 -0
  315. package/src/overlays/agent-hub-renderer.ts +155 -18
  316. package/src/overlays/agent-hub.ts +1037 -44
  317. package/src/overlays/agent-transcript-viewer.ts +129 -0
  318. package/src/overlays/agents-hub.ts +688 -53
  319. package/src/overlays/annotation-overlay.ts +391 -52
  320. package/src/overlays/ask-dialog.ts +435 -24
  321. package/src/overlays/bordered-loader.ts +17 -0
  322. package/src/overlays/btw-history-panel.ts +182 -0
  323. package/src/overlays/btw-panel.ts +68 -2
  324. package/src/overlays/cleanse-panel.ts +105 -15
  325. package/src/overlays/codex-reset-fireworks.ts +65 -5
  326. package/src/overlays/composer-shape-preview.ts +26 -1
  327. package/src/overlays/copy-selector.ts +545 -23
  328. package/src/overlays/error-banner.ts +44 -0
  329. package/src/overlays/extensions/extension-list.ts +23 -17
  330. package/src/overlays/history-search.ts +175 -33
  331. package/src/overlays/hook-editor.ts +113 -6
  332. package/src/overlays/hook-input.ts +22 -1
  333. package/src/overlays/hook-selector.ts +311 -22
  334. package/src/overlays/hub-frame.ts +80 -0
  335. package/src/overlays/jobs-panel.ts +112 -0
  336. package/src/overlays/login-dialog.ts +183 -1
  337. package/src/overlays/logout-account-selector.ts +102 -4
  338. package/src/overlays/mcp-add-wizard.ts +232 -53
  339. package/src/overlays/model-browser.ts +681 -22
  340. package/src/overlays/model-hub.ts +1402 -78
  341. package/src/overlays/model-picker.ts +175 -1
  342. package/src/overlays/move-overlay.ts +45 -0
  343. package/src/overlays/oauth-selector.ts +227 -23
  344. package/src/overlays/omfg-panel.ts +86 -2
  345. package/src/overlays/pause-screen.ts +55 -4
  346. package/src/overlays/plan-review-overlay.ts +352 -0
  347. package/src/overlays/plan-save-overlay.ts +45 -0
  348. package/src/overlays/plugin-selector.ts +21 -1
  349. package/src/overlays/plugin-settings.ts +195 -5
  350. package/src/overlays/queue-mode-selector.ts +19 -1
  351. package/src/overlays/reset-usage-selector.ts +110 -40
  352. package/src/overlays/rewind-selector.ts +458 -44
  353. package/src/overlays/session-account-selector.ts +1 -1
  354. package/src/overlays/session-info-overlay.ts +137 -1
  355. package/src/overlays/session-selector.ts +807 -46
  356. package/src/overlays/settings-defs.ts +41 -0
  357. package/src/overlays/settings-selector.ts +583 -23
  358. package/src/overlays/show-images-selector.ts +18 -1
  359. package/src/overlays/snapcompact-shape-preview.ts +48 -3
  360. package/src/overlays/stats-notice.ts +31 -0
  361. package/src/overlays/theme-selector.ts +31 -1
  362. package/src/overlays/thinking-selector.ts +22 -1
  363. package/src/overlays/tree-selector.ts +570 -110
  364. package/src/overlays/usage-dashboard.ts +587 -12
  365. package/src/overlays/usage-row.ts +161 -25
  366. package/src/prompt/attachment-chips.ts +60 -0
  367. package/src/prompt/composer-attachments.ts +31 -9
  368. package/src/prompt/composer.ts +55 -2
  369. package/src/prompt/custom-editor.ts +302 -4
  370. package/src/prompt/editor-top-gap.ts +8 -0
  371. package/src/prompt/macos-spelling.ts +24 -9
  372. package/src/prompt/magic-keywords.ts +22 -1
  373. package/src/prompt/model-mention-autocomplete.ts +1 -0
  374. package/src/prompt/queued-messages.ts +101 -0
  375. package/src/prompt/skill-tokens.ts +5 -3
  376. package/src/prompt/welcome.ts +213 -6
  377. package/src/render/code-cell.ts +103 -2
  378. package/src/render/file-list.ts +29 -0
  379. package/src/render/hyperlink.ts +32 -0
  380. package/src/render/output-block.ts +110 -0
  381. package/src/render/output-pane.ts +37 -0
  382. package/src/render/tool-card.ts +137 -0
  383. package/src/render/tree-list.ts +39 -0
  384. package/src/render/width-aware-text.ts +20 -0
  385. package/src/setup/scenes/composer.ts +29 -0
  386. package/src/setup/scenes/glyph.ts +15 -0
  387. package/src/setup/scenes/model.ts +36 -8
  388. package/src/setup/scenes/outro.ts +28 -1
  389. package/src/setup/scenes/sign-in.ts +122 -13
  390. package/src/setup/scenes/splash.ts +28 -1
  391. package/src/setup/scenes/theme.ts +88 -3
  392. package/src/setup/scenes/types.ts +7 -1
  393. package/src/setup/startup-splash.ts +46 -9
  394. package/src/setup/wizard-overlay.ts +140 -23
  395. package/src/status-line/component.ts +398 -16
  396. package/src/status-line/context-usage.ts +279 -50
  397. package/src/status-line/footer.ts +94 -1
  398. package/src/status-line/metrics.ts +3 -6
  399. package/src/status-line/segments.ts +463 -97
  400. package/src/status-line/separators.ts +3 -16
  401. package/src/status-line/types.ts +43 -1
  402. package/src/terminal-capabilities.ts +7 -0
  403. package/src/terminal.ts +130 -2
  404. package/src/theme/defaults/dark-neon-noir.json +100 -0
  405. package/src/theme/defaults/index.ts +2 -0
  406. package/src/theme/defaults/light-prism.json +5 -5
  407. package/src/theme/defaults/onyx.json +62 -62
  408. package/src/theme/schema.ts +15 -0
  409. package/src/theme/shimmer.ts +33 -0
  410. package/src/theme/theme-class.ts +24 -19
  411. package/src/theme/theme.ts +111 -9
  412. package/src/tools/ask.ts +157 -1
  413. package/src/tools/ast-edit.ts +174 -1
  414. package/src/tools/ast-grep.ts +82 -2
  415. package/src/tools/autoresearch.ts +149 -1
  416. package/src/tools/bash.ts +180 -49
  417. package/src/tools/cfg-render.ts +66 -1
  418. package/src/tools/debug.ts +78 -1
  419. package/src/tools/default-renderer.ts +35 -1
  420. package/src/tools/edit.ts +247 -2
  421. package/src/tools/eval.ts +257 -1
  422. package/src/tools/fetch.ts +102 -3
  423. package/src/tools/find.ts +127 -1
  424. package/src/tools/github.ts +119 -10
  425. package/src/tools/glob.ts +116 -1
  426. package/src/tools/goal.ts +56 -1
  427. package/src/tools/grep.ts +83 -2
  428. package/src/tools/grouped-file-output.ts +205 -0
  429. package/src/tools/json-tree.ts +116 -1
  430. package/src/tools/lsp.ts +318 -1
  431. package/src/tools/mcp.ts +80 -1
  432. package/src/tools/memory.ts +93 -11
  433. package/src/tools/native-view.ts +292 -0
  434. package/src/tools/proc-render.ts +221 -1
  435. package/src/tools/read.ts +199 -4
  436. package/src/tools/renderer.ts +61 -0
  437. package/src/tools/report-tool-issue.ts +7 -1
  438. package/src/tools/resolve.ts +63 -1
  439. package/src/tools/task.ts +406 -4
  440. package/src/tools/think.ts +19 -1
  441. package/src/tools/todo.ts +89 -0
  442. package/src/tools/vibe.ts +230 -2
  443. package/src/tools/wait.ts +181 -1
  444. package/src/tools/web-search.ts +113 -1
  445. package/src/tools/write.ts +144 -5
  446. package/src/tools/xdev.ts +64 -1
  447. package/src/tui.ts +294 -3
@@ -1,7 +1,7 @@
1
1
  import type { Theme } from "../theme/theme.js";
2
2
  import type { Component } from "../tui.js";
3
3
  import type { OutputMeta } from "./output-meta.js";
4
- import type { RenderResultOptions } from "./renderer.js";
4
+ import type { NativeToolView, RenderResultOptions } from "./renderer.js";
5
5
  /** A verified line range with its yes-probability and a one-line preview. */
6
6
  export interface FindRange {
7
7
  start: number;
@@ -75,6 +75,20 @@ export declare const findToolRenderer: {
75
75
  details?: FindToolDetails;
76
76
  isError?: boolean;
77
77
  }, options: RenderResultOptions, uiTheme: Theme, args?: FindRenderArgs): Component;
78
+ describeCall(args: FindRenderArgs): NativeToolView;
79
+ /**
80
+ * Inline (§7.3 find): `Find “query” 2 hits · 8 files`, then per hit its
81
+ * score bar, path and coverage over the strongest snippets. The search
82
+ * accounting (τ, tokens, cost, time) is the footnote's tooltip.
83
+ */
84
+ describeResult(result: {
85
+ content: Array<{
86
+ type: string;
87
+ text?: string;
88
+ }>;
89
+ details?: FindToolDetails;
90
+ isError?: boolean;
91
+ }, options: RenderResultOptions, args?: FindRenderArgs): NativeToolView;
78
92
  mergeCallAndResult: true;
79
93
  animatedPendingPreview: true;
80
94
  animatedPartialResult: true;
@@ -1,3 +1,4 @@
1
+ import type { NativeToolView, ToolRenderResult } from "./renderer.js";
1
2
  import { type Component } from "../index.js";
2
3
  import type { RenderResultOptions } from "./renderer.js";
3
4
  import type { Theme } from "../theme/theme.js";
@@ -20,6 +21,8 @@ export declare const githubToolRenderer: {
20
21
  details?: GhToolDetails;
21
22
  isError?: boolean;
22
23
  }, options: RenderResultOptions, uiTheme: Theme, args?: GithubToolRenderArgs): Component;
24
+ describeCall(args: GithubToolRenderArgs): NativeToolView;
25
+ describeResult(result: ToolRenderResult<GhToolDetails>, options: RenderResultOptions, args?: GithubToolRenderArgs): NativeToolView | undefined;
23
26
  mergeCallAndResult: true;
24
27
  };
25
28
  import type { OutputMeta } from "./output-meta.js";
@@ -1,5 +1,5 @@
1
1
  import type { Component } from "../tui.js";
2
- import type { RenderResultOptions } from "./renderer.js";
2
+ import type { NativeToolView, RenderResultOptions } from "./renderer.js";
3
3
  import { type Theme } from "../theme/theme.js";
4
4
  import type { OutputMeta } from "./output-meta.js";
5
5
  import type { TruncationResult } from "./streaming-output.js";
@@ -39,6 +39,19 @@ export declare const globToolRenderer: {
39
39
  details?: GlobToolDetails;
40
40
  isError?: boolean;
41
41
  }, options: RenderResultOptions, uiTheme: Theme, args?: GlobRenderArgs): Component;
42
+ describeCall(args: GlobRenderArgs): NativeToolView;
43
+ /**
44
+ * Inline (§7.3 glob): `Glob “pattern” 5 files`, then the files as rows
45
+ * (≤ 6) or a wrap of chips; one quiet footnote for limits and skipped paths.
46
+ */
47
+ describeResult(result: {
48
+ content: Array<{
49
+ type: string;
50
+ text?: string;
51
+ }>;
52
+ details?: GlobToolDetails;
53
+ isError?: boolean;
54
+ }, _options: RenderResultOptions, args?: GlobRenderArgs): NativeToolView;
42
55
  mergeCallAndResult: true;
43
56
  };
44
57
  export {};
@@ -1,6 +1,6 @@
1
1
  import type { Component } from "../tui.js";
2
2
  import type { Theme } from "../theme/theme.js";
3
- import type { RenderResultOptions } from "./renderer.js";
3
+ import type { NativeToolView, RenderResultOptions, ToolRenderResult } from "./renderer.js";
4
4
  /** Lifecycle state of a tracked goal. */
5
5
  export type GoalStatus = "active" | "paused" | "budget-limited" | "complete" | "dropped";
6
6
  /** Serializable goal progress and resource budget. */
@@ -37,6 +37,8 @@ export declare const goalToolRenderer: {
37
37
  details?: GoalToolDetails;
38
38
  isError?: boolean;
39
39
  }, _options: RenderResultOptions, uiTheme: Theme, args?: GoalRenderArgs): Component;
40
+ describeCall(args: GoalRenderArgs): NativeToolView;
41
+ describeResult(result: ToolRenderResult<GoalToolDetails>, _options: RenderResultOptions, args?: GoalRenderArgs): NativeToolView | undefined;
40
42
  mergeCallAndResult: true;
41
43
  };
42
44
  export {};
@@ -1,5 +1,5 @@
1
1
  import type { Component } from "../tui.js";
2
- import type { RenderResultOptions } from "./renderer.js";
2
+ import type { NativeToolView, RenderResultOptions } from "./renderer.js";
3
3
  import { type Theme } from "../theme/theme.js";
4
4
  import type { OutputMeta } from "./output-meta.js";
5
5
  import type { TruncationResult } from "./streaming-output.js";
@@ -59,6 +59,19 @@ export declare const grepToolRenderer: {
59
59
  details?: GrepToolDetails;
60
60
  isError?: boolean;
61
61
  }, options: RenderResultOptions, uiTheme: Theme, args?: GrepRenderArgs): Component;
62
+ describeCall(args: GrepRenderArgs): NativeToolView;
63
+ /**
64
+ * Inline (§7.3 grep): `Grep “pattern” 5 matches · 2 files in src`, then
65
+ * the matches grouped by file; collapsed shows the first two files.
66
+ */
67
+ describeResult(result: {
68
+ content: Array<{
69
+ type: string;
70
+ text?: string;
71
+ }>;
72
+ details?: GrepToolDetails;
73
+ isError?: boolean;
74
+ }, options: RenderResultOptions, args?: GrepRenderArgs): NativeToolView;
62
75
  mergeCallAndResult: true;
63
76
  };
64
77
  export {};
@@ -1,3 +1,4 @@
1
+ import type { NativeNode } from "../native/node.js";
1
2
  /**
2
3
  * One file's contribution to a grouped file output. The header itself is generated
3
4
  * by `formatGroupedFiles` (one `#` per nesting level); use `headerSuffix` to tack
@@ -35,6 +36,19 @@ export interface GroupedFilesOutput {
35
36
  * root-level file so the renderers can split the output into collapsible groups.
36
37
  */
37
38
  export declare function formatGroupedFiles(files: string[], renderFile: (filePath: string) => GroupedFileSection): GroupedFilesOutput;
39
+ /** One file's rendered search matches, plus its hashline tag when editable. */
40
+ export interface FileMatchSection {
41
+ model: string[];
42
+ display: string[];
43
+ tag?: string;
44
+ }
45
+ /**
46
+ * Render per-file search matches (grep / ast-grep). Grouped mode nests files
47
+ * via {@link formatGroupedFiles}, appending `#tag` to headers; flat mode
48
+ * blank-separates files and prefixes each with a hashline header when tagged.
49
+ * Files with no model lines are omitted.
50
+ */
51
+ export declare function formatFileMatches(files: string[], grouped: boolean, renderFile: (filePath: string) => FileMatchSection): GroupedFilesOutput;
38
52
  /** Per-line classification of grouped output, used by renderers for hyperlinks. */
39
53
  export interface GroupedLineContext {
40
54
  /** Directory header, file header, or any non-header body/content line. */
@@ -69,3 +83,47 @@ export declare function classifyGroupedLines(lines: readonly string[], headerBas
69
83
  * indices lets callers slice parallel arrays (raw lines, styled lines, contexts).
70
84
  */
71
85
  export declare function groupLineIndicesByBlank(rawLines: readonly string[]): number[][];
86
+ /** One event of {@link walkGroupedOutput}: a directory header, a file header, or a non-blank body line. */
87
+ export type GroupedOutputEvent = {
88
+ readonly kind: "dir";
89
+ } | {
90
+ readonly kind: "file";
91
+ readonly path: string;
92
+ readonly suffix?: string;
93
+ } | {
94
+ readonly kind: "line";
95
+ readonly text: string;
96
+ };
97
+ /**
98
+ * Walk grouped output (`# dir/`, `## file.ts (suffix)`, body lines), resolving
99
+ * each file header to its full display path (the folded directory chain
100
+ * joined with the name) and dropping blank separator lines.
101
+ */
102
+ export declare function walkGroupedOutput(lines: readonly string[]): Generator<GroupedOutputEvent>;
103
+ /** One source line for {@link numberedCode}: its number (`null` for an elision marker), text and match mark. */
104
+ export interface NumberedLine {
105
+ n: number | null;
106
+ text: string;
107
+ mark?: boolean;
108
+ }
109
+ /**
110
+ * Numbered `code` for possibly non-contiguous source lines: one block per run
111
+ * of consecutive line numbers (`start` = the run's first line, match lines
112
+ * `mark`ed), with a `…` row wherever the numbers jump or an elision marker
113
+ * (`n: null`) sits. No path header: the row or head above names the file.
114
+ */
115
+ export declare function numberedCode(lines: readonly NumberedLine[], opts?: {
116
+ lang?: string;
117
+ }): NativeNode[];
118
+ /**
119
+ * Describe grouped search output (grep / ast-grep / ast-edit display content)
120
+ * by file (§7.3 grep): per file a 22px path row (dim dir, strong name, the
121
+ * header's suffix or the match count as a chip), then its lines as
122
+ * {@link numberedCode} with match lines marked and `…` between non-adjacent
123
+ * runs. Unnumbered body lines stay plain `code`. `maxFiles` keeps only the
124
+ * first files (the caller says how many were left out).
125
+ */
126
+ export declare function describeGroupedOutput(lines: readonly string[], options?: {
127
+ lang?: (path: string) => string | undefined;
128
+ maxFiles?: number;
129
+ }): NativeNode[];
@@ -1,4 +1,5 @@
1
1
  import type { Theme } from "../theme/theme.js";
2
+ import type { NativeNode } from "../native/node.js";
2
3
  /** Max depth for JSON tree rendering */
3
4
  export declare const JSON_TREE_MAX_DEPTH_COLLAPSED = 2;
4
5
  /** Maximum expanded JSON tree depth. */
@@ -57,3 +58,22 @@ export declare function renderJsonTreeLines(value: unknown, theme: Theme, option
57
58
  lines: string[];
58
59
  truncated: boolean;
59
60
  };
61
+ /** Data caps for {@link describeJsonTree}. */
62
+ export interface JsonTreeDescribeOptions {
63
+ /** Deepest level expanded into child nodes; deeper containers get a `…` child. */
64
+ maxDepth?: number;
65
+ /** Tree nodes emitted before the remaining siblings collapse into `… N more`. */
66
+ maxNodes?: number;
67
+ /** Characters kept per string scalar (data cap, not a width). */
68
+ maxScalarLen?: number;
69
+ /** Levels open initially; deeper containers start closed. */
70
+ openDepth?: number;
71
+ /** Root object keys omitted. Defaults to internal tool argument metadata. */
72
+ hiddenRootKeys?: readonly string[];
73
+ }
74
+ /**
75
+ * TSP `tree` of a JSON value: containers become expandable nodes labelled with
76
+ * their key and size, scalars become `key: value` leaves styled by type.
77
+ * Bounded by depth, node count and scalar length; no width math.
78
+ */
79
+ export declare function describeJsonTree(value: unknown, options?: JsonTreeDescribeOptions): NativeNode;
@@ -1,13 +1,4 @@
1
- /**
2
- * LSP Tool TUI Rendering
3
- *
4
- * Renders LSP tool calls and results in the TUI with:
5
- * - Syntax-highlighted hover information
6
- * - Color-coded diagnostics by severity
7
- * - Grouped references and symbols
8
- * - Collapsible/expandable views
9
- */
10
- import type { RenderResultOptions } from "./renderer.js";
1
+ import type { NativeToolView, RenderResultOptions, ToolRenderResult } from "./renderer.js";
11
2
  import type { Component } from "../tui.js";
12
3
  import { Text } from "../components/text.js";
13
4
  import { type Theme } from "../theme/theme.js";
@@ -67,6 +58,8 @@ export declare function renderResult(result: {
67
58
  export declare const lspToolRenderer: {
68
59
  renderCall: typeof renderCall;
69
60
  renderResult: typeof renderResult;
61
+ describeCall(args: LspParams): NativeToolView;
62
+ describeResult(result: ToolRenderResult<LspToolDetails>, _options: RenderResultOptions, args?: LspParams): NativeToolView | undefined;
70
63
  mergeCallAndResult: true;
71
64
  inline: true;
72
65
  };
@@ -5,7 +5,7 @@
5
5
  * showing args and output in JSON tree format similar to task tool.
6
6
  */
7
7
  import { type Component } from "../index.js";
8
- import type { RenderResultOptions } from "./renderer.js";
8
+ import type { NativeToolView, RenderResultOptions } from "./renderer.js";
9
9
  import { type Theme } from "../theme/theme.js";
10
10
  /**
11
11
  * Render MCP tool call.
@@ -22,6 +22,21 @@ export declare function renderMCPResult(result: {
22
22
  details?: MCPToolDetails;
23
23
  isError?: boolean;
24
24
  }, options: RenderResultOptions, theme: Theme, args?: Record<string, unknown>): Component;
25
+ /** Native MCP call view: the head only, inline while pending. */
26
+ export declare function describeMCPCall(args: Record<string, unknown>, label: string): NativeToolView;
27
+ /**
28
+ * Native MCP result view: JSON output as a JSON tree, Markdown when the
29
+ * preference is on, otherwise the raw text as tool output. The head's args
30
+ * summary stands in for the ANSI card's Args tree.
31
+ */
32
+ export declare function describeMCPResult(result: {
33
+ content: Array<{
34
+ type: string;
35
+ text?: string;
36
+ }>;
37
+ details?: MCPToolDetails;
38
+ isError?: boolean;
39
+ }, _options: RenderResultOptions, args?: Record<string, unknown>): NativeToolView | undefined;
25
40
  import type { OutputMeta } from "./output-meta.js";
26
41
  /** Set whether plain MCP text results render as Markdown. */
27
42
  export declare function setMcpRenderMarkdownResults(enabled: boolean): void;
@@ -1,3 +1,4 @@
1
+ import type { NativeToolView } from "./renderer.js";
1
2
  /**
2
3
  * Inline TUI renderers for the long-term memory tools (`retain`, `recall`,
3
4
  * `reflect`).
@@ -33,6 +34,15 @@ export declare const retainToolRenderer: {
33
34
  };
34
35
  isError?: boolean;
35
36
  }, options: RenderResultOptions, theme: Theme, args?: RetainRenderArgs): Component;
37
+ describeCall(args: RetainRenderArgs): NativeToolView | undefined;
38
+ describeResult(result: {
39
+ content: Array<{
40
+ type: string;
41
+ text?: string;
42
+ }>;
43
+ details?: MemoryRetainDetails;
44
+ isError?: boolean;
45
+ }, _options: RenderResultOptions, args?: RetainRenderArgs): NativeToolView | undefined;
36
46
  };
37
47
  /** Render recalled memories with an expandable body. */
38
48
  export declare const recallToolRenderer: {
@@ -46,6 +56,14 @@ export declare const recallToolRenderer: {
46
56
  }>;
47
57
  isError?: boolean;
48
58
  }, options: RenderResultOptions, theme: Theme, args?: QueryRenderArgs): Component;
59
+ describeCall(args: QueryRenderArgs): NativeToolView;
60
+ describeResult(result: {
61
+ content: Array<{
62
+ type: string;
63
+ text?: string;
64
+ }>;
65
+ isError?: boolean;
66
+ }, _options: RenderResultOptions, args?: QueryRenderArgs): NativeToolView | undefined;
49
67
  };
50
68
  /** Render synthesized memory reflections. */
51
69
  export declare const reflectToolRenderer: {
@@ -59,6 +77,14 @@ export declare const reflectToolRenderer: {
59
77
  }>;
60
78
  isError?: boolean;
61
79
  }, options: RenderResultOptions, theme: Theme, args?: QueryRenderArgs): Component;
80
+ describeCall(args: QueryRenderArgs): NativeToolView;
81
+ describeResult(result: {
82
+ content: Array<{
83
+ type: string;
84
+ text?: string;
85
+ }>;
86
+ isError?: boolean;
87
+ }, _options: RenderResultOptions, args?: QueryRenderArgs): NativeToolView | undefined;
62
88
  };
63
89
  /** Number of memories accepted by retain. */
64
90
  export interface MemoryRetainDetails {
@@ -0,0 +1,90 @@
1
+ import type { TspSpan, TspText, TspTone } from "@oh-my-pi/pi-wire";
2
+ import type { NativeChild, NativeNode } from "../native/node.js";
3
+ import { type ParsedDiagnostic } from "../render/render-utils.js";
4
+ import type { FileDiagnosticsResult } from "./lsp.js";
5
+ import { type OutputMeta } from "./output-meta.js";
6
+ import type { NativeToolHead, NativeToolView, ToolRenderResult } from "./renderer.js";
7
+ /** A path for native heads: relative to the working directory when inside it, else `~`-shortened. */
8
+ export declare function displayPath(filePath: string): string;
9
+ /** `file://` link for a head's path target, when the path is absolute. */
10
+ export declare function fileHref(filePath: string | undefined): string | undefined;
11
+ /** Diff stats as one head `meta` string, `+8 −1` (U+2212 minus), or undefined when nothing changed. */
12
+ export declare function diffStatsMeta(added: number, removed: number): string | undefined;
13
+ /**
14
+ * One file of a multi-file edit: a borderless `section` headed by the path
15
+ * (→ rename) and its `+a −d`, over the file's body (its diff, diagnostics).
16
+ */
17
+ export declare function fileDiffSection(file: {
18
+ path: string;
19
+ rename?: string;
20
+ added?: number;
21
+ removed?: number;
22
+ }, body: readonly NativeChild[], p: {
23
+ role: string;
24
+ tone?: TspTone;
25
+ }): NativeNode;
26
+ /**
27
+ * One 22px file row (role `omp.tool.file`) for read groups, grep files, glob
28
+ * lists and find hits: a leading glyph (the file icon unless `lead` replaces
29
+ * it), the path with a dim directory and a strong name (cut in the middle),
30
+ * a quiet `range` suffix (`:13-36`), then an optional count `chip` and a
31
+ * muted `detail`.
32
+ */
33
+ export declare function fileRow(filePath: string, p?: {
34
+ range?: string;
35
+ chip?: {
36
+ text: string;
37
+ title?: string;
38
+ };
39
+ detail?: TspText;
40
+ href?: string;
41
+ lead?: NativeNode;
42
+ icon?: string;
43
+ tone?: TspTone;
44
+ title?: string;
45
+ key?: string;
46
+ }): NativeNode;
47
+ /**
48
+ * Inline error view (§7.3 read error): error tone, the message's first line
49
+ * after `—` in the head's meta, so a collapsed inline call never hides it,
50
+ * and the full message as the body only when the head had to cut it short.
51
+ */
52
+ export declare function inlineErrorView(head: NativeToolHead, message: string): NativeToolView;
53
+ /** Text blocks of a tool result joined by newlines, or `""`. */
54
+ export declare function resultText(result: ToolRenderResult<unknown>): string;
55
+ /**
56
+ * Card head: the bold `toolTitle` title, then detail spans; string details
57
+ * become muted plain text, empty details are skipped.
58
+ */
59
+ export declare function toolHead(title: string, ...details: readonly (TspSpan | string | undefined)[]): TspSpan[];
60
+ /** Error body: wrapped error text, or a JSON `code` block when the message is structured. */
61
+ export declare function errorText(message: string): NativeNode;
62
+ /** Error card view: error tone, the tool head and the error body (`<title> failed` when empty). */
63
+ export declare function errorView(title: string, message: string, ...meta: readonly (string | undefined)[]): NativeToolView;
64
+ /** Wrapped placeholder or secondary line (`(no output)`, `No matches`, …); `lines` clamps it. */
65
+ export declare function noteText(message: string, token?: string, lines?: number): NativeNode;
66
+ /** Muted `a · b · c` metadata line, or undefined when there are no parts. */
67
+ export declare function statsText(parts: readonly string[]): NativeNode | undefined;
68
+ /** Warning line for truncation / artifact capture failures, or undefined. */
69
+ export declare function truncationNotice(meta: OutputMeta | undefined): NativeNode | undefined;
70
+ /**
71
+ * The one final quiet line of a tool body (§7.2): `a · b` facts, then any
72
+ * truncation / artifact-capture notice from `meta`; undefined when empty.
73
+ */
74
+ export declare function footnoteText(parts: readonly string[], meta?: OutputMeta): NativeNode | undefined;
75
+ /** A diagnostic's severity glyph: `x-circle` error, `warn` warning, `info`, `lightbulb` hint, in the severity tone. */
76
+ export declare function diagnosticGlyph(severity: ParsedDiagnostic["severity"]): NativeNode;
77
+ /**
78
+ * LSP diagnostics section for write/edit results: rows of severity icon ·
79
+ * `line:col` · message, most severe first, capped at five with `+N more`.
80
+ * Rows name the file too when the messages span several files (or `withPath`).
81
+ * Undefined when there is nothing to show.
82
+ */
83
+ export declare function diagnosticsSection(diagnostics: FileDiagnosticsResult | undefined, opts?: {
84
+ withPath?: boolean;
85
+ }): NativeNode | undefined;
86
+ /** Head chip counting LSP diagnostics across files (`2 diagnostics`), or undefined when there are none. */
87
+ export declare function diagnosticsBadge(files: readonly (FileDiagnosticsResult | undefined)[]): {
88
+ text: string;
89
+ tone: TspTone;
90
+ } | undefined;
@@ -1,6 +1,6 @@
1
1
  import type { Component } from "../tui.js";
2
2
  import type { Theme } from "../theme/theme.js";
3
- import type { RenderResultOptions } from "./renderer.js";
3
+ import type { NativeToolView, RenderResultOptions } from "./renderer.js";
4
4
  import type { AgentActivitySnapshot, CoordinationDetails, JobSnapshot } from "./wait.js";
5
5
  import type { DaemonSnapshot } from "./daemon.js";
6
6
  import { type CardToolResult as ToolResult } from "./result-card.js";
@@ -25,3 +25,9 @@ export declare function renderAgentWrite(to: string, body: string, result: ToolR
25
25
  /** Render live and completed process writes with the URL-selected operation. */
26
26
  export declare function renderProcWrite(id: string, action: ProcWriteAction, content: string | undefined, result: ToolResult | undefined, details: ProcWriteDetails | undefined, options: RenderResultOptions, theme: Theme): Component;
27
27
  export declare function renderProcRead(id: string, result: ToolResult | undefined, details: ProcReadDetails | undefined, options: RenderResultOptions, theme: Theme): Component;
28
+ /** TSP view of an `agent://` write (IRC message). */
29
+ export declare function describeAgentWrite(to: string, body: string, result: ToolResult | undefined, details: CoordinationDetails | undefined): NativeToolView;
30
+ /** TSP view of a `proc://` write (stdin, mode change, kill). */
31
+ export declare function describeProcWrite(id: string, action: ProcWriteAction, content: string | undefined, result: ToolResult | undefined, details: ProcWriteDetails | undefined): NativeToolView;
32
+ /** TSP view of a `proc://` read: job/service detail, logs, or the process table. */
33
+ export declare function describeProcRead(id: string, result: ToolResult | undefined, details: ProcReadDetails | undefined): NativeToolView;
@@ -1,6 +1,7 @@
1
1
  import type { SummaryResult } from "@oh-my-pi/pi-natives";
2
2
  import type { Component } from "../tui.js";
3
- import type { RenderResultOptions, ToolActivityContext, ToolActivitySummary } from "./renderer.js";
3
+ import type { NativeToolView, RenderResultOptions, ToolActivityContext, ToolActivitySummary } from "./renderer.js";
4
+ import type { NativeNode } from "../native/node.js";
4
5
  import type { Theme } from "../theme/theme.js";
5
6
  import type { OutputMeta } from "./output-meta.js";
6
7
  import type { TruncationResult } from "./streaming-output.js";
@@ -107,6 +108,13 @@ export declare function pendingFileLinkPath(inputPath: string): string;
107
108
  * image reads only record the path in `meta.source`). URL/internal sources are
108
109
  * not fs paths, so only `type: "path"` qualifies. */
109
110
  export declare function readSourceFsPath(details: ReadToolDetails | undefined): string | undefined;
111
+ /**
112
+ * Read content as numbered `code` (no path header: the head names the file).
113
+ * Numbers come from `lineNumbers` (`displayContent`'s per-line numbers,
114
+ * `null` for an elided block; runs split with `…` between) when they cover
115
+ * every line, else count up from `start`.
116
+ */
117
+ export declare function readContentCode(content: string, start: number, numbers: readonly (number | null)[] | undefined, lang: string | undefined): NativeNode[];
110
118
  /** Render file, image, and URL reads in the transcript. */
111
119
  export declare const readToolRenderer: {
112
120
  activitySummary(args: unknown, _context: ToolActivityContext): ToolActivitySummary;
@@ -119,6 +127,20 @@ export declare const readToolRenderer: {
119
127
  details?: ReadToolDetails;
120
128
  isError?: boolean;
121
129
  }, options: RenderResultOptions, uiTheme: Theme, args?: ReadRenderArgs): Component;
130
+ describeCall(args: ReadRenderArgs): NativeToolView;
131
+ /**
132
+ * Inline (§7.3 read): the head names the file and range; the content
133
+ * (numbered from the range start, no path header) is the disclosed body.
134
+ * An error shows its message in the head, never behind the disclosure.
135
+ */
136
+ describeResult(result: {
137
+ content: Array<{
138
+ type: string;
139
+ text?: string;
140
+ }>;
141
+ details?: ReadToolDetails;
142
+ isError?: boolean;
143
+ }, _options: RenderResultOptions, args?: ReadRenderArgs): NativeToolView;
122
144
  mergeCallAndResult: true;
123
145
  };
124
146
  /** Inclusive line range describing one elided span in a structural summary. */
@@ -3,6 +3,8 @@
3
3
  * transcript components. Built-in renderers live beside this file; the
4
4
  * coding-agent tools implement the matching `*Details` payloads.
5
5
  */
6
+ import type { TspPreview, TspText, TspTone, TspToolProps } from "@oh-my-pi/pi-wire";
7
+ import type { NativeChild } from "../native/node.js";
6
8
  import type { Component } from "../tui.js";
7
9
  import type { Theme } from "../theme/theme.js";
8
10
  /** Display state handed to `renderCall`/`renderResult`. */
@@ -58,6 +60,54 @@ export interface ToolActivityContext {
58
60
  /** Tool-specific render context (same shape `renderCall` receives), when available. */
59
61
  readonly renderContext?: Record<string, unknown>;
60
62
  }
63
+ /**
64
+ * The data head of a tool call (NATIVE_REDESIGN §7.2): what the terminal
65
+ * draws in the `tool` kind's head. Each fact appears once — a target named
66
+ * here is never repeated in the body.
67
+ */
68
+ export interface NativeToolHead {
69
+ /** The verb ("Bash", "Edit"); defaults to the tool's label. */
70
+ readonly title?: TspText;
71
+ /** The primary argument, shown once: command, path, pattern, query. */
72
+ readonly target?: TspText;
73
+ readonly targetKind?: TspToolProps["targetKind"];
74
+ /** Language for `command` targets. */
75
+ readonly lang?: string;
76
+ /** `file://` link for path targets. */
77
+ readonly href?: string;
78
+ /** Short facts after the target (`+8 −1`, `5 matches · 2 files`). */
79
+ readonly meta?: readonly TspText[];
80
+ readonly badges?: TspToolProps["badges"];
81
+ /** A one-word state note ("timed out", "partial"). */
82
+ readonly note?: TspText;
83
+ /** A non-zero exit code (error chip). */
84
+ readonly exit?: number | null;
85
+ }
86
+ /**
87
+ * A tool's semantic presentation for Tern Surface Protocol terminals.
88
+ * `ToolExecutionComponent` wraps it in a `tool` node (terminals that list
89
+ * the kind) or, as the fallback, a `card` (role `omp.tool.<name>`, status,
90
+ * elapsed timer, collapse): the renderer supplies only the head data and the
91
+ * body nodes, never frames, padding or width math.
92
+ */
93
+ export interface NativeToolView {
94
+ /** The data head; the fallback card's head spans derive from it when {@link head} is absent. */
95
+ readonly tool?: NativeToolHead;
96
+ /** Header spans for the fallback card (and the `tool` title when {@link tool} is absent). */
97
+ readonly head?: TspText;
98
+ /** Body: sections, never frames. */
99
+ readonly body?: readonly NativeChild[];
100
+ /** Tone override; the frame otherwise derives it from the call status. */
101
+ readonly tone?: TspTone;
102
+ /** Body clamp while collapsed; `{tail}` keeps the end (terminal output). Defaults to the transcript's preview size. */
103
+ readonly preview?: TspPreview | {
104
+ readonly tail: number;
105
+ } | "none";
106
+ /** Render frameless (`frame:"inline"`): a head line plus a disclosed body. */
107
+ readonly inline?: boolean;
108
+ /** Head actions offered on hover (`copy`, `retry`). */
109
+ readonly tools?: TspToolProps["tools"];
110
+ }
61
111
  /**
62
112
  * A tool's transcript presentation: call preview, result view, and repaint/animation hints.
63
113
  * Method signatures are intentionally bivariant so a renderer typed over its own
@@ -67,6 +117,13 @@ export interface ToolActivityContext {
67
117
  export interface ToolRenderer<TArgs = unknown, TDetails = unknown> {
68
118
  renderCall(args: TArgs, options: RenderResultOptions, theme: Theme): Component | undefined;
69
119
  renderResult(result: ToolRenderResult<TDetails>, options: RenderResultContextOptions, theme: Theme, args?: TArgs): Component | undefined;
120
+ /**
121
+ * Semantic call preview for TSP terminals. When a renderer implements the
122
+ * describe hooks, the native backend never calls `renderCall`/`renderResult`.
123
+ */
124
+ describeCall?(args: TArgs, options: RenderResultOptions): NativeToolView | undefined;
125
+ /** Semantic result view for TSP terminals; merged with the call view when {@link mergeCallAndResult}. */
126
+ describeResult?(result: ToolRenderResult<TDetails>, options: RenderResultContextOptions, args?: TArgs): NativeToolView | undefined;
70
127
  mergeCallAndResult?: boolean;
71
128
  /** Describes current activity without coupling a renderer to terminal layout. */
72
129
  activitySummary?(args: TArgs, context: ToolActivityContext): ToolActivitySummary;
@@ -1,7 +1,10 @@
1
1
  import type { Component } from "../index.js";
2
2
  import type { Theme } from "../theme/theme.js";
3
+ import type { NativeToolView } from "./renderer.js";
3
4
  /** Call preview for an `xd://report_issue` write. */
4
5
  export declare function renderReportIssueDeviceCall(content: unknown, uiTheme: Theme): Component;
6
+ /** Native call preview for an `xd://report_issue` write. */
7
+ export declare function describeReportIssueDeviceCall(content: unknown): NativeToolView;
5
8
  /** Device name for automatic tool issue reports. */
6
9
  export declare const REPORT_ISSUE_DEVICE_NAME = "report_issue";
7
10
  /** Internal device URL for automatic tool issue reports. */
@@ -1,5 +1,5 @@
1
1
  import type { Component } from "../index.js";
2
- import type { RenderResultOptions } from "./renderer.js";
2
+ import type { NativeToolView, RenderResultOptions } from "./renderer.js";
3
3
  import type { Theme } from "../theme/theme.js";
4
4
  import { Ellipsis } from "../render/index.js";
5
5
  /** Device name for applying a staged action. */
@@ -27,6 +27,10 @@ export interface ResolveInvocation {
27
27
  }
28
28
  /** Streaming-safe call preview for a resolution-device write: `Resolve/Reject/Propose: <text>`. */
29
29
  export declare function renderResolutionDeviceCall(device: ResolutionDeviceName, content: unknown, uiTheme: Theme): Component;
30
+ /** Native form of {@link renderResolutionDeviceCall}: `Resolve/Reject/Propose` head with the first content line. */
31
+ export declare function describeResolutionDeviceCall(device: ResolutionDeviceName, content: unknown): NativeToolView;
32
+ /** Native form of {@link renderDeviceCallPreview}: title head plus the first content line of a pending device write. */
33
+ export declare function describeDeviceCallPreview(title: string, content: unknown): NativeToolView;
30
34
  /** Render the first content line of a pending device write. */
31
35
  export declare function renderDeviceCallPreview(title: string, content: unknown, uiTheme: Theme, ellipsis?: Ellipsis): Component;
32
36
  /** Render staged-action acceptance or rejection. */
@@ -40,6 +44,15 @@ export declare const resolveRenderer: {
40
44
  details?: ResolveDetails;
41
45
  isError?: boolean;
42
46
  }, _options: RenderResultOptions, uiTheme: Theme): Component;
47
+ describeCall(args: Partial<ResolveInvocation>): NativeToolView;
48
+ describeResult(result: {
49
+ content: Array<{
50
+ type: string;
51
+ text?: string;
52
+ }>;
53
+ details?: ResolveDetails;
54
+ isError?: boolean;
55
+ }): NativeToolView | undefined;
43
56
  inline: true;
44
57
  mergeCallAndResult: true;
45
58
  };
@@ -4,6 +4,7 @@ import type { ConfiguredThinkingLevel } from "../render/render-utils.js";
4
4
  import { type Component } from "../tui.js";
5
5
  import type { RenderResultOptions } from "./renderer.js";
6
6
  import { type Theme } from "../theme/theme.js";
7
+ import type { NativeToolView, ToolRenderResult } from "./renderer.js";
7
8
  /** Render context threaded in from `ToolExecutionComponent.#buildRenderContext`. */
8
9
  interface TaskRenderContext {
9
10
  hasResult?: boolean;
@@ -61,6 +62,8 @@ export declare function renderNestedTaskResults(detailsList: TaskToolDetails[],
61
62
  export declare const taskToolRenderer: {
62
63
  renderCall: typeof renderCall;
63
64
  renderResult: typeof renderResult;
65
+ describeCall(args: TaskParams, options: RenderResultOptions): NativeToolView | undefined;
66
+ describeResult(result: ToolRenderResult<TaskToolDetails>, options: TaskRenderOptions, args?: TaskParams): NativeToolView | undefined;
64
67
  mergeCallAndResult: true;
65
68
  };
66
69
  /** Source of an agent definition */
@@ -1,3 +1,4 @@
1
+ import type { NativeToolView } from "./renderer.js";
1
2
  import { type Component } from "../index.js";
2
3
  import type { RenderResultOptions } from "./renderer.js";
3
4
  import { type Theme } from "../theme/theme.js";
@@ -10,4 +11,6 @@ export declare const thinkToolRenderer: {
10
11
  inline: true;
11
12
  renderCall(args: ThinkRenderArgs, _options: RenderResultOptions, uiTheme: Theme): Component;
12
13
  renderResult(): undefined;
14
+ describeCall(args: ThinkRenderArgs, options: RenderResultOptions): NativeToolView;
15
+ describeResult(): undefined;
13
16
  };