@oh-my-pi/pi-tui 18.4.2 → 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 (463) hide show
  1. package/CHANGELOG.md +56 -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/thinking-display.d.ts +2 -0
  22. package/dist/types/chat/todo-reminder.d.ts +4 -1
  23. package/dist/types/chat/tool-execution.d.ts +25 -1
  24. package/dist/types/chat/transcript-actions.d.ts +37 -0
  25. package/dist/types/chat/transcript-entry.d.ts +3 -1
  26. package/dist/types/chat/user-message.d.ts +25 -0
  27. package/dist/types/chrome/collab-qrcode.d.ts +7 -0
  28. package/dist/types/chrome/context-thresholds.d.ts +11 -0
  29. package/dist/types/chrome/countdown-timer.d.ts +9 -3
  30. package/dist/types/chrome/diff.d.ts +12 -0
  31. package/dist/types/chrome/dynamic-border.d.ts +3 -0
  32. package/dist/types/chrome/format.d.ts +6 -0
  33. package/dist/types/chrome/message-divider.d.ts +13 -0
  34. package/dist/types/chrome/message-frame.d.ts +10 -0
  35. package/dist/types/chrome/message-notice.d.ts +23 -0
  36. package/dist/types/chrome/overlay-box.d.ts +11 -2
  37. package/dist/types/chrome/qrcode.d.ts +7 -0
  38. package/dist/types/chrome/segment-track.d.ts +7 -0
  39. package/dist/types/chrome/selector-helpers.d.ts +0 -6
  40. package/dist/types/chrome/status-notice.d.ts +14 -0
  41. package/dist/types/chrome/streaming-panel.d.ts +3 -0
  42. package/dist/types/chrome/tool-activity.d.ts +3 -0
  43. package/dist/types/chrome/transcript-container.d.ts +13 -0
  44. package/dist/types/chrome/transcript-status.d.ts +15 -3
  45. package/dist/types/components/box.d.ts +7 -0
  46. package/dist/types/components/disclosure.d.ts +9 -0
  47. package/dist/types/components/editor.d.ts +42 -0
  48. package/dist/types/components/form.d.ts +14 -0
  49. package/dist/types/components/image.d.ts +7 -0
  50. package/dist/types/components/input.d.ts +20 -1
  51. package/dist/types/components/key-value-list.d.ts +3 -0
  52. package/dist/types/components/layout/geometry.d.ts +16 -0
  53. package/dist/types/components/layout/row.d.ts +7 -0
  54. package/dist/types/components/layout/split-pane.d.ts +8 -0
  55. package/dist/types/components/layout/stack.d.ts +6 -0
  56. package/dist/types/components/loader.d.ts +48 -0
  57. package/dist/types/components/markdown.d.ts +8 -0
  58. package/dist/types/components/metric.d.ts +7 -0
  59. package/dist/types/components/progress-bar.d.ts +3 -0
  60. package/dist/types/components/scroll-view.d.ts +6 -0
  61. package/dist/types/components/section.d.ts +3 -0
  62. package/dist/types/components/select-list.d.ts +33 -0
  63. package/dist/types/components/settings-list.d.ts +68 -0
  64. package/dist/types/components/spacer.d.ts +4 -0
  65. package/dist/types/components/tab-bar.d.ts +9 -0
  66. package/dist/types/components/table.d.ts +7 -0
  67. package/dist/types/components/text.d.ts +6 -0
  68. package/dist/types/components/tree-view.d.ts +9 -0
  69. package/dist/types/components/truncated-text.d.ts +3 -0
  70. package/dist/types/components/wizard-step.d.ts +6 -0
  71. package/dist/types/hotkeys-markdown.d.ts +24 -0
  72. package/dist/types/index.d.ts +5 -0
  73. package/dist/types/latex-block.d.ts +7 -0
  74. package/dist/types/loop-watchdog.d.ts +9 -0
  75. package/dist/types/native/apply.d.ts +39 -0
  76. package/dist/types/native/backend.d.ts +94 -0
  77. package/dist/types/native/blobs.d.ts +29 -0
  78. package/dist/types/native/describe.d.ts +56 -0
  79. package/dist/types/native/encode.d.ts +50 -0
  80. package/dist/types/native/icons.d.ts +18 -0
  81. package/dist/types/native/memo.d.ts +27 -0
  82. package/dist/types/native/node.d.ts +107 -0
  83. package/dist/types/native/overlay.d.ts +64 -0
  84. package/dist/types/native/picker.d.ts +124 -0
  85. package/dist/types/native/reconcile.d.ts +41 -0
  86. package/dist/types/native/settle.d.ts +11 -0
  87. package/dist/types/native/spans.d.ts +21 -0
  88. package/dist/types/native/state.d.ts +6 -0
  89. package/dist/types/native/tone.d.ts +24 -0
  90. package/dist/types/overlays/advisor-config.d.ts +20 -0
  91. package/dist/types/overlays/agent-hub-renderer.d.ts +27 -11
  92. package/dist/types/overlays/agent-hub.d.ts +10 -0
  93. package/dist/types/overlays/agent-transcript-viewer.d.ts +7 -0
  94. package/dist/types/overlays/agents-hub.d.ts +8 -0
  95. package/dist/types/overlays/annotation-overlay.d.ts +3 -0
  96. package/dist/types/overlays/ask-dialog.d.ts +23 -0
  97. package/dist/types/overlays/bordered-loader.d.ts +3 -0
  98. package/dist/types/overlays/btw-history-panel.d.ts +9 -0
  99. package/dist/types/overlays/btw-panel.d.ts +3 -0
  100. package/dist/types/overlays/cleanse-panel.d.ts +5 -2
  101. package/dist/types/overlays/composer-shape-preview.d.ts +7 -1
  102. package/dist/types/overlays/copy-selector.d.ts +38 -0
  103. package/dist/types/overlays/error-banner.d.ts +9 -0
  104. package/dist/types/overlays/extensions/extension-list.d.ts +1 -0
  105. package/dist/types/overlays/history-search.d.ts +18 -0
  106. package/dist/types/overlays/hook-editor.d.ts +28 -1
  107. package/dist/types/overlays/hook-input.d.ts +3 -0
  108. package/dist/types/overlays/hook-selector.d.ts +10 -0
  109. package/dist/types/overlays/hub-frame.d.ts +18 -0
  110. package/dist/types/overlays/jobs-panel.d.ts +24 -0
  111. package/dist/types/overlays/login-dialog.d.ts +10 -0
  112. package/dist/types/overlays/logout-account-selector.d.ts +4 -0
  113. package/dist/types/overlays/mcp-add-wizard.d.ts +4 -0
  114. package/dist/types/overlays/model-browser.d.ts +69 -0
  115. package/dist/types/overlays/model-hub.d.ts +7 -0
  116. package/dist/types/overlays/model-picker.d.ts +9 -1
  117. package/dist/types/overlays/move-overlay.d.ts +3 -0
  118. package/dist/types/overlays/oauth-selector.d.ts +4 -0
  119. package/dist/types/overlays/omfg-panel.d.ts +3 -0
  120. package/dist/types/overlays/pause-screen.d.ts +12 -0
  121. package/dist/types/overlays/plan-review-overlay.d.ts +5 -0
  122. package/dist/types/overlays/plan-save-overlay.d.ts +10 -0
  123. package/dist/types/overlays/plugin-selector.d.ts +4 -0
  124. package/dist/types/overlays/plugin-settings.d.ts +30 -0
  125. package/dist/types/overlays/queue-mode-selector.d.ts +4 -0
  126. package/dist/types/overlays/reset-usage-selector.d.ts +8 -0
  127. package/dist/types/overlays/rewind-selector.d.ts +5 -0
  128. package/dist/types/overlays/session-info-overlay.d.ts +19 -1
  129. package/dist/types/overlays/session-selector.d.ts +64 -1
  130. package/dist/types/overlays/settings-defs.d.ts +14 -0
  131. package/dist/types/overlays/settings-selector.d.ts +21 -0
  132. package/dist/types/overlays/show-images-selector.d.ts +4 -0
  133. package/dist/types/overlays/snapcompact-shape-preview.d.ts +2 -0
  134. package/dist/types/overlays/stats-notice.d.ts +8 -0
  135. package/dist/types/overlays/theme-selector.d.ts +11 -0
  136. package/dist/types/overlays/thinking-selector.d.ts +4 -0
  137. package/dist/types/overlays/tree-selector.d.ts +60 -2
  138. package/dist/types/overlays/usage-dashboard.d.ts +26 -3
  139. package/dist/types/overlays/usage-row.d.ts +36 -2
  140. package/dist/types/prompt/attachment-chips.d.ts +8 -0
  141. package/dist/types/prompt/composer-attachments.d.ts +15 -3
  142. package/dist/types/prompt/composer.d.ts +18 -1
  143. package/dist/types/prompt/custom-editor.d.ts +48 -2
  144. package/dist/types/prompt/editor-top-gap.d.ts +2 -0
  145. package/dist/types/prompt/macos-spelling.d.ts +6 -0
  146. package/dist/types/prompt/magic-keywords.d.ts +9 -0
  147. package/dist/types/prompt/queued-messages.d.ts +23 -0
  148. package/dist/types/prompt/skill-tokens.d.ts +4 -2
  149. package/dist/types/prompt/welcome.d.ts +16 -0
  150. package/dist/types/render/code-cell.d.ts +10 -0
  151. package/dist/types/render/file-list.d.ts +8 -0
  152. package/dist/types/render/hyperlink.d.ts +14 -0
  153. package/dist/types/render/output-block.d.ts +43 -0
  154. package/dist/types/render/output-pane.d.ts +17 -0
  155. package/dist/types/render/tool-card.d.ts +8 -0
  156. package/dist/types/render/tree-list.d.ts +8 -0
  157. package/dist/types/render/width-aware-text.d.ts +7 -0
  158. package/dist/types/setup/scenes/outro.d.ts +7 -0
  159. package/dist/types/setup/scenes/sign-in.d.ts +16 -9
  160. package/dist/types/setup/scenes/splash.d.ts +8 -0
  161. package/dist/types/setup/scenes/types.d.ts +6 -27
  162. package/dist/types/setup/wizard-overlay.d.ts +9 -0
  163. package/dist/types/status-line/component.d.ts +49 -5
  164. package/dist/types/status-line/context-usage.d.ts +20 -0
  165. package/dist/types/status-line/footer.d.ts +8 -0
  166. package/dist/types/status-line/metrics.d.ts +1 -2
  167. package/dist/types/status-line/segments.d.ts +10 -1
  168. package/dist/types/status-line/types.d.ts +40 -1
  169. package/dist/types/stdin-buffer.d.ts +10 -7
  170. package/dist/types/terminal-capabilities.d.ts +1 -1
  171. package/dist/types/terminal.d.ts +36 -0
  172. package/dist/types/theme/defaults/index.d.ts +100 -0
  173. package/dist/types/theme/schema.d.ts +2 -0
  174. package/dist/types/theme/shimmer.d.ts +8 -0
  175. package/dist/types/theme/theme-class.d.ts +2 -0
  176. package/dist/types/theme/theme.d.ts +33 -1
  177. package/dist/types/tools/ask.d.ts +3 -0
  178. package/dist/types/tools/ast-edit.d.ts +10 -1
  179. package/dist/types/tools/ast-grep.d.ts +10 -1
  180. package/dist/types/tools/autoresearch.d.ts +21 -4
  181. package/dist/types/tools/bash.d.ts +30 -1
  182. package/dist/types/tools/cfg-render.d.ts +5 -1
  183. package/dist/types/tools/debug.d.ts +3 -1
  184. package/dist/types/tools/default-renderer.d.ts +6 -1
  185. package/dist/types/tools/edit.d.ts +14 -1
  186. package/dist/types/tools/eval.d.ts +12 -1
  187. package/dist/types/tools/fetch.d.ts +16 -1
  188. package/dist/types/tools/find.d.ts +15 -1
  189. package/dist/types/tools/github.d.ts +3 -0
  190. package/dist/types/tools/glob.d.ts +14 -1
  191. package/dist/types/tools/goal.d.ts +3 -1
  192. package/dist/types/tools/grep.d.ts +14 -1
  193. package/dist/types/tools/grouped-file-output.d.ts +58 -0
  194. package/dist/types/tools/json-tree.d.ts +20 -0
  195. package/dist/types/tools/lsp.d.ts +3 -10
  196. package/dist/types/tools/mcp.d.ts +16 -1
  197. package/dist/types/tools/memory.d.ts +26 -0
  198. package/dist/types/tools/native-view.d.ts +90 -0
  199. package/dist/types/tools/proc-render.d.ts +7 -1
  200. package/dist/types/tools/read.d.ts +23 -1
  201. package/dist/types/tools/renderer.d.ts +57 -0
  202. package/dist/types/tools/report-tool-issue.d.ts +3 -0
  203. package/dist/types/tools/resolve.d.ts +14 -1
  204. package/dist/types/tools/task.d.ts +3 -0
  205. package/dist/types/tools/think.d.ts +3 -0
  206. package/dist/types/tools/todo.d.ts +12 -0
  207. package/dist/types/tools/vibe.d.ts +3 -1
  208. package/dist/types/tools/wait.d.ts +3 -0
  209. package/dist/types/tools/web-search-types.d.ts +90 -0
  210. package/dist/types/tools/web-search.d.ts +9 -168
  211. package/dist/types/tools/write.d.ts +14 -1
  212. package/dist/types/tools/xdev.d.ts +13 -0
  213. package/dist/types/tui.d.ts +49 -0
  214. package/package.json +9 -9
  215. package/src/apps/autoresearch-dashboard.ts +362 -4
  216. package/src/apps/cleanse-board.ts +219 -1
  217. package/src/apps/cleanse-picker.ts +9 -1
  218. package/src/apps/debug/log-viewer.ts +15 -15
  219. package/src/apps/debug/protocol-probe.ts +2 -20
  220. package/src/apps/git/avatar.ts +2 -22
  221. package/src/apps/git/git-tui.ts +406 -59
  222. package/src/apps/git/help.ts +130 -0
  223. package/src/apps/git/sidebar.ts +491 -0
  224. package/src/apps/live-visualizer.ts +65 -0
  225. package/src/apps/ps-top.ts +448 -17
  226. package/src/apps/session-picker.ts +1 -0
  227. package/src/apps/setup-model-picker.ts +5 -1
  228. package/src/apps/standalone-picker.ts +55 -1
  229. package/src/autocomplete.ts +44 -1
  230. package/src/chat/advisor-message.ts +72 -3
  231. package/src/chat/assistant-message.ts +538 -51
  232. package/src/chat/background-tan-message.ts +4 -4
  233. package/src/chat/bash-execution.ts +81 -0
  234. package/src/chat/cache-invalidation-marker.ts +8 -0
  235. package/src/chat/chat-transcript-builder.ts +37 -6
  236. package/src/chat/collab-prompt-message.ts +15 -3
  237. package/src/chat/compaction-summary-message.ts +74 -1
  238. package/src/chat/custom-message.ts +3 -1
  239. package/src/chat/eval-execution.ts +57 -0
  240. package/src/chat/execution-shared.ts +153 -1
  241. package/src/chat/hook-message.ts +1 -0
  242. package/src/chat/late-diagnostics-message.ts +85 -2
  243. package/src/chat/read-tool-group.ts +341 -1
  244. package/src/chat/served-model-marker.ts +8 -0
  245. package/src/chat/skill-message.ts +63 -0
  246. package/src/chat/stripped-tool-calls-placeholder.ts +18 -10
  247. package/src/chat/thinking-display.ts +73 -11
  248. package/src/chat/todo-reminder.ts +34 -4
  249. package/src/chat/tool-execution.ts +385 -10
  250. package/src/chat/transcript-actions.ts +38 -0
  251. package/src/chat/transcript-browser.ts +2 -9
  252. package/src/chat/transcript-entry.ts +10 -1
  253. package/src/chat/transcript-render-helpers.ts +16 -15
  254. package/src/chat/ttsr-notification.ts +38 -1
  255. package/src/chat/user-message.ts +167 -4
  256. package/src/chrome/collab-qrcode.ts +27 -2
  257. package/src/chrome/context-thresholds.ts +34 -0
  258. package/src/chrome/countdown-timer.ts +24 -1
  259. package/src/chrome/diff.ts +60 -1
  260. package/src/chrome/dynamic-border.ts +7 -0
  261. package/src/chrome/format.ts +12 -0
  262. package/src/chrome/message-divider.ts +33 -1
  263. package/src/chrome/message-frame.ts +53 -10
  264. package/src/chrome/message-notice.ts +71 -0
  265. package/src/chrome/overlay-box.ts +45 -2
  266. package/src/chrome/qrcode.ts +28 -0
  267. package/src/chrome/segment-track.ts +26 -0
  268. package/src/chrome/selector-helpers.ts +1 -17
  269. package/src/chrome/status-notice.ts +46 -0
  270. package/src/chrome/streaming-panel.ts +25 -1
  271. package/src/chrome/tool-activity.ts +20 -0
  272. package/src/chrome/transcript-container.ts +139 -17
  273. package/src/chrome/transcript-status.ts +40 -11
  274. package/src/components/box.ts +51 -0
  275. package/src/components/disclosure.ts +33 -0
  276. package/src/components/editor.ts +239 -36
  277. package/src/components/form.ts +93 -9
  278. package/src/components/image.ts +30 -0
  279. package/src/components/input.ts +77 -26
  280. package/src/components/key-value-list.ts +18 -0
  281. package/src/components/layout/geometry.ts +44 -0
  282. package/src/components/layout/row.ts +30 -0
  283. package/src/components/layout/split-pane.ts +65 -0
  284. package/src/components/layout/stack.ts +27 -0
  285. package/src/components/loader.ts +183 -1
  286. package/src/components/markdown.ts +131 -56
  287. package/src/components/metric.ts +39 -0
  288. package/src/components/progress-bar.ts +28 -0
  289. package/src/components/scroll-view.ts +23 -0
  290. package/src/components/section.ts +16 -0
  291. package/src/components/select-list.ts +174 -25
  292. package/src/components/settings-list.ts +264 -7
  293. package/src/components/spacer.ts +17 -0
  294. package/src/components/tab-bar.ts +42 -0
  295. package/src/components/table.ts +34 -0
  296. package/src/components/text.ts +23 -0
  297. package/src/components/tree-view.ts +65 -0
  298. package/src/components/truncated-text.ts +14 -0
  299. package/src/components/wizard-step.ts +18 -9
  300. package/src/debug-server.ts +14 -7
  301. package/src/hotkeys-markdown.ts +251 -69
  302. package/src/index.ts +6 -0
  303. package/src/latex-block.ts +11 -0
  304. package/src/loop-watchdog.ts +38 -10
  305. package/src/native/apply.ts +275 -0
  306. package/src/native/backend.ts +682 -0
  307. package/src/native/blobs.ts +70 -0
  308. package/src/native/describe.ts +124 -0
  309. package/src/native/encode.ts +233 -0
  310. package/src/native/icons.ts +184 -0
  311. package/src/native/memo.ts +64 -0
  312. package/src/native/node.ts +112 -0
  313. package/src/native/overlay.ts +131 -0
  314. package/src/native/picker.ts +333 -0
  315. package/src/native/reconcile.ts +1063 -0
  316. package/src/native/settle.ts +23 -0
  317. package/src/native/spans.ts +308 -0
  318. package/src/native/state.ts +28 -0
  319. package/src/native/tone.ts +79 -0
  320. package/src/overlays/advisor-config.ts +420 -0
  321. package/src/overlays/agent-hub-renderer.ts +155 -18
  322. package/src/overlays/agent-hub.ts +1037 -44
  323. package/src/overlays/agent-transcript-viewer.ts +129 -0
  324. package/src/overlays/agents-hub.ts +688 -53
  325. package/src/overlays/annotation-overlay.ts +391 -52
  326. package/src/overlays/ask-dialog.ts +435 -24
  327. package/src/overlays/bordered-loader.ts +17 -0
  328. package/src/overlays/btw-history-panel.ts +182 -0
  329. package/src/overlays/btw-panel.ts +68 -2
  330. package/src/overlays/cleanse-panel.ts +105 -15
  331. package/src/overlays/codex-reset-fireworks.ts +65 -5
  332. package/src/overlays/composer-shape-preview.ts +26 -1
  333. package/src/overlays/copy-selector.ts +545 -23
  334. package/src/overlays/error-banner.ts +44 -0
  335. package/src/overlays/extensions/extension-list.ts +23 -17
  336. package/src/overlays/history-search.ts +175 -33
  337. package/src/overlays/hook-editor.ts +113 -6
  338. package/src/overlays/hook-input.ts +22 -1
  339. package/src/overlays/hook-selector.ts +311 -22
  340. package/src/overlays/hub-frame.ts +80 -0
  341. package/src/overlays/jobs-panel.ts +112 -0
  342. package/src/overlays/login-dialog.ts +183 -1
  343. package/src/overlays/logout-account-selector.ts +102 -4
  344. package/src/overlays/mcp-add-wizard.ts +232 -53
  345. package/src/overlays/model-browser.ts +681 -22
  346. package/src/overlays/model-hub.ts +1402 -78
  347. package/src/overlays/model-picker.ts +184 -7
  348. package/src/overlays/move-overlay.ts +45 -0
  349. package/src/overlays/oauth-selector.ts +227 -23
  350. package/src/overlays/omfg-panel.ts +86 -2
  351. package/src/overlays/pause-screen.ts +55 -4
  352. package/src/overlays/plan-review-overlay.ts +352 -0
  353. package/src/overlays/plan-save-overlay.ts +45 -0
  354. package/src/overlays/plugin-selector.ts +21 -1
  355. package/src/overlays/plugin-settings.ts +195 -5
  356. package/src/overlays/queue-mode-selector.ts +19 -1
  357. package/src/overlays/reset-usage-selector.ts +110 -40
  358. package/src/overlays/rewind-selector.ts +458 -44
  359. package/src/overlays/session-account-selector.ts +1 -1
  360. package/src/overlays/session-info-overlay.ts +137 -1
  361. package/src/overlays/session-selector.ts +807 -46
  362. package/src/overlays/settings-defs.ts +41 -0
  363. package/src/overlays/settings-selector.ts +585 -33
  364. package/src/overlays/show-images-selector.ts +18 -1
  365. package/src/overlays/snapcompact-shape-preview.ts +48 -3
  366. package/src/overlays/stats-notice.ts +31 -0
  367. package/src/overlays/theme-selector.ts +31 -1
  368. package/src/overlays/thinking-selector.ts +22 -1
  369. package/src/overlays/tree-selector.ts +570 -110
  370. package/src/overlays/usage-dashboard.ts +587 -12
  371. package/src/overlays/usage-row.ts +161 -25
  372. package/src/prompt/attachment-chips.ts +60 -0
  373. package/src/prompt/composer-attachments.ts +31 -9
  374. package/src/prompt/composer.ts +55 -2
  375. package/src/prompt/custom-editor.ts +302 -4
  376. package/src/prompt/editor-top-gap.ts +8 -0
  377. package/src/prompt/macos-spelling.ts +24 -9
  378. package/src/prompt/magic-keywords.ts +22 -1
  379. package/src/prompt/model-mention-autocomplete.ts +1 -0
  380. package/src/prompt/queued-messages.ts +101 -0
  381. package/src/prompt/skill-tokens.ts +5 -3
  382. package/src/prompt/welcome.ts +213 -6
  383. package/src/render/code-cell.ts +103 -2
  384. package/src/render/file-list.ts +29 -0
  385. package/src/render/hyperlink.ts +32 -0
  386. package/src/render/output-block.ts +110 -0
  387. package/src/render/output-pane.ts +37 -0
  388. package/src/render/tool-card.ts +137 -0
  389. package/src/render/tree-list.ts +39 -0
  390. package/src/render/width-aware-text.ts +20 -0
  391. package/src/setup/scenes/composer.ts +29 -0
  392. package/src/setup/scenes/glyph.ts +15 -0
  393. package/src/setup/scenes/model.ts +36 -8
  394. package/src/setup/scenes/outro.ts +28 -1
  395. package/src/setup/scenes/sign-in.ts +138 -24
  396. package/src/setup/scenes/splash.ts +28 -1
  397. package/src/setup/scenes/theme.ts +88 -3
  398. package/src/setup/scenes/types.ts +7 -28
  399. package/src/setup/startup-splash.ts +46 -9
  400. package/src/setup/wizard-overlay.ts +140 -23
  401. package/src/setup/wizard.ts +1 -1
  402. package/src/status-line/component.ts +414 -18
  403. package/src/status-line/context-usage.ts +279 -50
  404. package/src/status-line/footer.ts +94 -1
  405. package/src/status-line/metrics.ts +3 -6
  406. package/src/status-line/segments.ts +463 -97
  407. package/src/status-line/separators.ts +3 -16
  408. package/src/status-line/types.ts +43 -1
  409. package/src/stdin-buffer.ts +27 -21
  410. package/src/terminal-capabilities.ts +7 -0
  411. package/src/terminal.ts +153 -11
  412. package/src/theme/defaults/dark-neon-noir.json +100 -0
  413. package/src/theme/defaults/index.ts +2 -0
  414. package/src/theme/defaults/light-prism.json +5 -5
  415. package/src/theme/defaults/onyx.json +62 -62
  416. package/src/theme/mermaid-cache.ts +10 -1
  417. package/src/theme/schema.ts +15 -0
  418. package/src/theme/shimmer.ts +33 -0
  419. package/src/theme/theme-class.ts +24 -19
  420. package/src/theme/theme.ts +111 -9
  421. package/src/theme/tui-adapters.ts +14 -1
  422. package/src/tools/ask.ts +157 -1
  423. package/src/tools/ast-edit.ts +174 -1
  424. package/src/tools/ast-grep.ts +82 -2
  425. package/src/tools/autoresearch.ts +149 -1
  426. package/src/tools/bash.ts +233 -62
  427. package/src/tools/cfg-render.ts +66 -1
  428. package/src/tools/debug.ts +78 -1
  429. package/src/tools/default-renderer.ts +35 -1
  430. package/src/tools/edit.ts +357 -31
  431. package/src/tools/eval.ts +257 -1
  432. package/src/tools/fetch.ts +102 -3
  433. package/src/tools/find.ts +127 -1
  434. package/src/tools/github.ts +119 -10
  435. package/src/tools/glob.ts +116 -1
  436. package/src/tools/goal.ts +56 -1
  437. package/src/tools/grep.ts +83 -2
  438. package/src/tools/grouped-file-output.ts +205 -0
  439. package/src/tools/json-tree.ts +116 -1
  440. package/src/tools/lsp.ts +318 -1
  441. package/src/tools/mcp.ts +80 -1
  442. package/src/tools/memory.ts +93 -11
  443. package/src/tools/native-view.ts +292 -0
  444. package/src/tools/proc-render.ts +221 -1
  445. package/src/tools/read.ts +199 -4
  446. package/src/tools/renderer.ts +61 -0
  447. package/src/tools/report-tool-issue.ts +7 -1
  448. package/src/tools/resolve.ts +63 -1
  449. package/src/tools/streaming-output.ts +79 -16
  450. package/src/tools/task.ts +406 -4
  451. package/src/tools/think.ts +19 -1
  452. package/src/tools/todo.ts +89 -0
  453. package/src/tools/vibe.ts +230 -2
  454. package/src/tools/wait.ts +181 -1
  455. package/src/tools/web-search-types.ts +99 -0
  456. package/src/tools/web-search.ts +111 -170
  457. package/src/tools/write.ts +144 -5
  458. package/src/tools/xdev.ts +64 -1
  459. package/src/tui.ts +295 -4
  460. package/dist/types/setup/scenes/providers.d.ts +0 -3
  461. package/dist/types/setup/scenes/web-search.d.ts +0 -22
  462. package/src/setup/scenes/providers.ts +0 -110
  463. package/src/setup/scenes/web-search.ts +0 -165
@@ -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
  /** Display fields captured from a debugger session. */
5
5
  export interface DebugSessionSnapshot {
6
6
  id: string;
@@ -55,6 +55,8 @@ export declare const debugToolRenderer: {
55
55
  details?: DebugToolDetails;
56
56
  isError?: boolean;
57
57
  }, options: RenderResultOptions, theme: Theme, args?: DebugRenderArgs): Component;
58
+ describeCall(args: DebugRenderArgs): NativeToolView;
59
+ describeResult(result: ToolRenderResult<DebugToolDetails>, _options: RenderResultOptions, args?: DebugRenderArgs): NativeToolView | undefined;
58
60
  mergeCallAndResult: true;
59
61
  inline: true;
60
62
  };
@@ -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
  /** Inputs rendered by the fallback card used when a tool has no bespoke renderer. */
5
5
  export interface DefaultToolRenderInput {
@@ -20,5 +20,10 @@ export interface DefaultToolRenderInput {
20
20
  }
21
21
  /** Format one generic tool call/result card at the available content width. */
22
22
  export declare function formatDefaultToolExecution(input: DefaultToolRenderInput, contentWidth: number, uiTheme: Theme): string;
23
+ /**
24
+ * TSP view of the generic fallback card: the tool label with a one-line args
25
+ * summary as the head target; the result as a JSON tree or raw `ansi` output.
26
+ */
27
+ export declare function describeDefaultToolExecution(input: DefaultToolRenderInput): NativeToolView;
23
28
  /** Render the generic fallback as the state-tinted card used by direct custom tools. */
24
29
  export declare function renderDefaultToolExecution(input: DefaultToolRenderInput, uiTheme: Theme): Component;
@@ -2,7 +2,7 @@
2
2
  * Edit tool renderer.
3
3
  */
4
4
  import type { Component } from "../tui.js";
5
- import type { RenderResultOptions } from "./renderer.js";
5
+ import type { NativeToolView, RenderResultOptions } from "./renderer.js";
6
6
  import type { FileDiagnosticsResult } from "./lsp.js";
7
7
  import type { Theme } from "../theme/theme.js";
8
8
  import type { OutputMeta } from "./output-meta.js";
@@ -144,6 +144,19 @@ export declare const editToolRenderer: {
144
144
  renderCall(args: EditRenderArgs, options: RenderResultOptions & {
145
145
  renderContext?: EditRenderContext;
146
146
  }, uiTheme: Theme): Component;
147
+ describeCall(args: EditRenderArgs, options: RenderResultOptions & {
148
+ renderContext?: EditRenderContext;
149
+ }): NativeToolView;
150
+ describeResult(result: {
151
+ content: Array<{
152
+ type: string;
153
+ text?: string;
154
+ }>;
155
+ details?: EditToolDetails;
156
+ isError?: boolean;
157
+ }, options: RenderResultOptions & {
158
+ renderContext?: EditRenderContext;
159
+ }, args?: EditRenderArgs): NativeToolView;
147
160
  renderResult(result: {
148
161
  content: Array<{
149
162
  type: string;
@@ -1,5 +1,5 @@
1
1
  import type { Component } from "../index.js";
2
- import type { RenderResultOptions } from "./renderer.js";
2
+ import type { NativeToolView, RenderResultContextOptions, RenderResultOptions } from "./renderer.js";
3
3
  import { type Theme } from "../theme/theme.js";
4
4
  import type { ImageContent } from "@oh-my-pi/pi-ai";
5
5
  import type { OutputMeta } from "./output-meta.js";
@@ -95,6 +95,17 @@ export declare const evalToolRenderer: {
95
95
  }, options: RenderResultOptions & {
96
96
  renderContext?: EvalRenderContext;
97
97
  }, uiTheme: Theme, _args?: EvalRenderArgs): Component;
98
+ describeCall(args: EvalRenderArgs, _options: RenderResultOptions): NativeToolView;
99
+ describeResult(result: {
100
+ content: Array<{
101
+ type: string;
102
+ text?: string;
103
+ }>;
104
+ details?: EvalToolDetails;
105
+ isError?: boolean;
106
+ }, options: RenderResultContextOptions & {
107
+ renderContext?: EvalRenderContext;
108
+ }, args?: EvalRenderArgs): NativeToolView;
98
109
  mergeCallAndResult: true;
99
110
  inline: true;
100
111
  };
@@ -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
  /** Display metadata for fetch tool results. */
@@ -31,6 +31,21 @@ export declare function renderReadUrlCall(args: {
31
31
  url?: string;
32
32
  raw?: boolean;
33
33
  }, _options: RenderResultOptions, uiTheme?: Theme): Component;
34
+ /** TSP call view of a URL read: the head only, inline while pending. */
35
+ export declare function describeReadUrlCall(args: {
36
+ path?: string;
37
+ url?: string;
38
+ raw?: boolean;
39
+ }): NativeToolView;
40
+ /** TSP result view of a URL read: a bounded content preview over one quiet stats line. */
41
+ export declare function describeReadUrlResult(result: {
42
+ content: Array<{
43
+ type: string;
44
+ text?: string;
45
+ }>;
46
+ details?: ReadUrlToolDetails;
47
+ isError?: boolean;
48
+ }): NativeToolView;
34
49
  /** Render URL read result with tree-based layout */
35
50
  export declare function renderReadUrlResult(result: {
36
51
  content: Array<{
@@ -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. */