@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
@@ -2,6 +2,8 @@ import type { AgentMessage, Tokenizer } from "@oh-my-pi/pi-agent-core";
2
2
  import type { CompactionSettings } from "@oh-my-pi/pi-agent-core/compaction";
3
3
  import type { Tool as AiTool, Model } from "@oh-my-pi/pi-ai";
4
4
  import type { Theme } from "../theme/index.js";
5
+ import { Container } from "../tui.js";
6
+ import type { DescribeContext, NativeNode } from "../native/node.js";
5
7
  interface ContextSkill {
6
8
  readonly name: string;
7
9
  readonly description?: string;
@@ -70,6 +72,8 @@ export interface ContextBreakdown {
70
72
  usedTokens: number;
71
73
  autoCompactBufferTokens: number;
72
74
  freeTokens: number;
75
+ /** Where auto-compaction fires, in tokens; undefined when compaction is off. */
76
+ thresholdTokens?: number;
73
77
  /** Estimated snapcompact wire savings; set when requested and a snapcompact.* setting is enabled. */
74
78
  snapcompact?: ContextSavingsEstimate;
75
79
  }
@@ -150,6 +154,22 @@ export declare function computeNonMessageBreakdown(session: NonMessageTokenSourc
150
154
  * session and model.
151
155
  */
152
156
  export declare function computeContextBreakdown(session: ContextUsageSession, options: ContextUsageOptions): ContextBreakdown;
157
+ /**
158
+ * Native context-usage panel for terminals without `meter`: the cell grid as
159
+ * unwrapped styled rows beside the legend. The terminal places the legend
160
+ * beside the grid, or below it when narrow.
161
+ */
162
+ export declare function describeContextUsage(breakdown: ContextBreakdown): NativeNode;
163
+ /**
164
+ * The `/context` transcript block: ANSI renders the titled cell grid between
165
+ * rules; natively it is one frame, drawn with `meter`s where the terminal
166
+ * has them and as the glyph grid otherwise.
167
+ */
168
+ export declare class ContextUsageView extends Container {
169
+ #private;
170
+ constructor(breakdown: ContextBreakdown, theme: Theme);
171
+ describe(cx: DescribeContext): NativeNode;
172
+ }
153
173
  /**
154
174
  * Render a colorful context-usage panel as ANSI text. Output is a series of
155
175
  * lines pairing the grid (left) with the legend (right).
@@ -1,5 +1,6 @@
1
1
  import { type Component } from "../index.js";
2
2
  import type { FooterHost, FooterSession } from "./host.js";
3
+ import type { NativeNode } from "../native/node.js";
3
4
  /**
4
5
  * Footer component that shows pwd, token stats, and context usage
5
6
  */
@@ -26,5 +27,12 @@ export declare class FooterComponent implements Component {
26
27
  */
27
28
  dispose(): void;
28
29
  invalidate(): void;
30
+ /**
31
+ * Native footer: a `status` bar (path and branch, usage counters, billing
32
+ * and context on the left, model on the right) plus the extension statuses.
33
+ * Rebuilt per call from cheap session reads; the node identity holds while
34
+ * the description is unchanged.
35
+ */
36
+ describe(): NativeNode;
29
37
  render(width: number): readonly string[];
30
38
  }
@@ -1,4 +1,5 @@
1
1
  import type { Theme } from "../theme/index.js";
2
+ export { normalizePremiumRequests } from "@oh-my-pi/pi-utils";
2
3
  /** Inputs whose differences are intentionally preserved between current status segments and the legacy footer. */
3
4
  export interface BillingSummaryOptions {
4
5
  readonly cost: number;
@@ -11,8 +12,6 @@ export interface BillingSummaryOptions {
11
12
  readonly usingSubscription: boolean;
12
13
  };
13
14
  }
14
- /** Round premium-request counters without losing legitimate fractional requests. */
15
- export declare function normalizePremiumRequests(value: number): number;
16
15
  /**
17
16
  * Shared billing metric presentation. Callers select precision explicitly so
18
17
  * the legacy footer keeps three decimals while current status segments keep two.
@@ -1,5 +1,14 @@
1
- import type { RenderedSegment, SegmentContext, StatusLineSegment, StatusLineSegmentId } from "./types.js";
1
+ import type { StatusLineSession } from "./host.js";
2
+ import type { RenderedSegment, SegmentContext, SegmentView, StatusLineSegment, StatusLineSegmentId } from "./types.js";
2
3
  export type { SegmentContext } from "./types.js";
4
+ /**
5
+ * The thinking-effort word (`high`, `off`; `auto` until auto thinking resolves
6
+ * a level), or undefined when the model has no thinking. Drives the native
7
+ * model segment and the composer's effort chip.
8
+ */
9
+ export declare function thinkingLevelWord(session: Pick<StatusLineSession, "state" | "isAutoThinking" | "autoResolvedThinkingLevel">): string | undefined;
3
10
  export declare const SEGMENTS: Record<StatusLineSegmentId, StatusLineSegment>;
4
11
  export declare function renderSegment(id: StatusLineSegmentId, ctx: SegmentContext): RenderedSegment;
12
+ /** Native description of one segment; null when it is hidden or unknown. */
13
+ export declare function describeSegment(id: StatusLineSegmentId, ctx: SegmentContext): SegmentView | null;
5
14
  export declare const ALL_SEGMENT_IDS: StatusLineSegmentId[];
@@ -1,5 +1,6 @@
1
1
  import type { Model } from "@oh-my-pi/pi-ai";
2
- import type { SessionState } from "@oh-my-pi/pi-wire";
2
+ import type { SessionState, TspSpan, TspTone } from "@oh-my-pi/pi-wire";
3
+ import type { NativeNode, NativeUiEvent } from "../native/node.js";
3
4
  import type { ContextLineMode, StatusLinePreset, StatusLineSegmentId, StatusLineSeparatorStyle } from "./schema.js";
4
5
  import type { ActiveRepoContext, StatusLineSession } from "./host.js";
5
6
  import type { LoopConditionConfig, LoopLimitRuntime } from "./loop.js";
@@ -222,9 +223,47 @@ export interface RenderedSegment {
222
223
  content: string;
223
224
  visible: boolean;
224
225
  }
226
+ /**
227
+ * A segment described for a TSP terminal: styled spans (theme/semantic
228
+ * tokens, no ANSI), a named icon, a tone, and terminal-clocked nodes
229
+ * (`spinner`, `elapsed`, `rate`) laid out after the spans.
230
+ */
231
+ export interface SegmentView {
232
+ readonly spans: readonly TspSpan[];
233
+ readonly icon?: string;
234
+ readonly tone?: TspTone;
235
+ readonly motion?: readonly NativeNode[];
236
+ /** Tooltip on the segment. */
237
+ readonly title?: string;
238
+ }
239
+ /**
240
+ * The status line's facts for the native composer. A TSP terminal shows no
241
+ * status strip: the tab title carries the session, the pane header the path
242
+ * and branch, and the composer the rest.
243
+ */
244
+ export interface ComposerFacts {
245
+ /** `meter` (role `omp.composer.context`): context usage along the composer's top edge. */
246
+ readonly context: NativeNode;
247
+ /** The model chip's label: name plus the advisor, fast-mode and slow-mode marks. */
248
+ readonly model: SegmentView;
249
+ /**
250
+ * `status` (role `omp.composer.extras`, `grow: 1`) of the other configured
251
+ * segments as `seg`s; the bar's flexible space, so present even when empty.
252
+ */
253
+ readonly extras: NativeNode;
254
+ /** `text` (role `omp.composer.usage`): the context share of the window and the session cost. */
255
+ readonly usage: NativeNode;
256
+ }
257
+ /** Supplies {@link ComposerFacts} and takes the clicks on them (`status.*` actions). */
258
+ export interface ComposerFactsSource {
259
+ describeComposerFacts(): ComposerFacts;
260
+ handleNativeEvent(event: NativeUiEvent): void;
261
+ }
225
262
  export interface StatusLineSegment {
226
263
  id: StatusLineSegmentId;
227
264
  render(ctx: SegmentContext): RenderedSegment;
265
+ /** Native description; null when the segment is hidden. */
266
+ describe(ctx: SegmentContext): SegmentView | null;
228
267
  }
229
268
  export interface SeparatorDef {
230
269
  left: string;
@@ -63,14 +63,17 @@ export declare class StdinBuffer extends EventEmitter<StdinBufferEventMap> {
63
63
  constructor(options?: StdinBufferOptions);
64
64
  process(data: string | Buffer): void;
65
65
  /**
66
- * Enable or disable unbracketed raw-paste classification. Terminal disables
67
- * it once DECRQM confirms bracketed-paste (mode 2004) support: a genuine
68
- * paste then always arrives wrapped, so the heuristic can only misfire on
69
- * keystrokes an event-loop stall batched into one read (issue #12540).
70
- * Disabling flushes any candidate already held by the classification window
71
- * as ordinary key events so no buffered input is lost.
66
+ * Gate unbracketed raw-paste classification on event-loop responsiveness.
67
+ * Terminal installs a probe once DECRQM confirms bracketed-paste (mode
68
+ * 2004) support: a genuine paste then always arrives wrapped, so an
69
+ * unmarked multiline burst is either an input-method commit — IME,
70
+ * dictation, and emoji commits are typed input, never bracketed (#13344) —
71
+ * or keystrokes an event-loop stall batched into one read (#12540). A burst
72
+ * classified while `stalled()` reports a stall is replayed as the original
73
+ * keys so every Enter submits; otherwise it is delivered as one paste.
74
+ * `undefined` restores unconditional classification.
72
75
  */
73
- setRawPasteClassification(enabled: boolean): void;
76
+ setRawPasteStallProbe(stalled: (() => boolean) | undefined): void;
74
77
  flush(): string[];
75
78
  clear(): void;
76
79
  getBuffer(): string;
@@ -11,7 +11,7 @@ export declare enum NotifyProtocol {
11
11
  Osc99 = "\u001B]99;;",
12
12
  Osc9 = "\u001B]9;"
13
13
  }
14
- export type TerminalId = "kitty" | "ghostty" | "wezterm" | "iterm2" | "vscode" | "alacritty" | "warp" | "orca" | "otty" | "rio" | "base" | "trueColor";
14
+ export type TerminalId = "kitty" | "ghostty" | "wezterm" | "iterm2" | "vscode" | "alacritty" | "warp" | "orca" | "otty" | "rio" | "tern" | "base" | "trueColor";
15
15
  /** Terminal capability details used for rendering and protocol selection. */
16
16
  export declare class TerminalInfo {
17
17
  readonly id: TerminalId;
@@ -1,3 +1,4 @@
1
+ import { type TspHello } from "./native/encode.js";
1
2
  /**
2
3
  * Split `data` into chunks whose encoded UTF-8 byte length is no greater than
3
4
  * `maxChunkBytes`, preferring a line boundary (`\n`) as the cut point so
@@ -96,6 +97,15 @@ export interface TerminalStartOptions {
96
97
  * echoes even while module loading blocks the event loop.
97
98
  */
98
99
  deferInput?: boolean;
100
+ /**
101
+ * Reports whether the event loop is stalled or just recovered from a
102
+ * stall. Once the terminal confirms bracketed paste, an unmarked multiline
103
+ * burst is an input-method commit (IME, dictation) delivered as one paste
104
+ * on a responsive loop, but keystrokes a stall batched into one read —
105
+ * replayed as keys so Enter submits — while this returns true. Without a
106
+ * probe every such burst is treated as an input-method commit.
107
+ */
108
+ isLoopStalled?: () => boolean;
99
109
  }
100
110
  /** Identity of an accepted explicit terminal appearance refresh request. */
101
111
  export type TerminalAppearanceRequestToken = number;
@@ -113,6 +123,12 @@ export type PrivateModeReportHandler = (mode: number, supported: boolean, confir
113
123
  * glossary, so a host can safely repaint — or switch to the nerd preset.
114
124
  */
115
125
  export type GlyphProtocolReportHandler = (supported: boolean) => void;
126
+ /**
127
+ * Outcome of the Tern Surface Protocol `hello` probe: the terminal's reply,
128
+ * or null when it answered the DA1 sentinel first (no TSP) or the probe was
129
+ * skipped (`PI_TUI_NATIVE=0`, multiplexers).
130
+ */
131
+ export type TspHelloHandler = (hello: TspHello | null) => void;
116
132
  /**
117
133
  * Cursor shapes addressable via DECSCUSR (`CSI <n> SP q`). `"default"` (0) hands the shape back to
118
134
  * the terminal's own configuration, which is what teardown restores rather than guessing a shape
@@ -223,6 +239,23 @@ export interface Terminal {
223
239
  * pi-tui versions keep working.
224
240
  */
225
241
  onGlyphProtocolReport?(callback: GlyphProtocolReportHandler): void;
242
+ /**
243
+ * Register a callback fired once the Tern Surface Protocol `hello` probe
244
+ * resolves (see {@link TspHelloHandler}); a resolved outcome is replayed to
245
+ * late subscribers. TSP events arriving afterwards are delivered through
246
+ * `onInput` as complete `ESC _ tsp;e;… ESC \` strings. Optional so custom
247
+ * Terminals built against older pi-tui versions keep working.
248
+ */
249
+ onTspHello?(callback: TspHelloHandler): void;
250
+ /** True while the `hello` probe awaits its reply or DA1 sentinel. */
251
+ readonly tspProbePending?: boolean;
252
+ /**
253
+ * The environment names a Tern Surface Protocol terminal
254
+ * (`TERM_PROGRAM=tern`) and the `hello` probe will run: the TUI takes input
255
+ * at start and opens its surface before the reply, which then confirms or
256
+ * revokes it.
257
+ */
258
+ readonly tspExpected?: boolean;
226
259
  }
227
260
  /**
228
261
  * True when stdout flows through a ConPTY pseudo-console (native win32, or
@@ -270,6 +303,9 @@ export declare class ProcessTerminal implements Terminal {
270
303
  refreshAppearance(requestToken?: TerminalAppearanceRequestToken): TerminalAppearanceRequestToken | void;
271
304
  onPrivateModeReport(callback: PrivateModeReportHandler): void;
272
305
  onGlyphProtocolReport(callback: GlyphProtocolReportHandler): void;
306
+ onTspHello(callback: TspHelloHandler): void;
307
+ get tspProbePending(): boolean;
308
+ get tspExpected(): boolean;
273
309
  start(onInput: (data: string) => void, onResize: () => void, onDisconnect?: () => void, options?: TerminalStartOptions): void;
274
310
  enableInput(): void;
275
311
  drainInput(maxMs?: number, idleMs?: number): Promise<void>;
@@ -2596,6 +2596,106 @@ export declare const defaultThemes: {
2596
2596
  infoBg: string;
2597
2597
  };
2598
2598
  };
2599
+ "dark-neon-noir": {
2600
+ $schema: string;
2601
+ name: string;
2602
+ vars: {
2603
+ magenta: string;
2604
+ hotMagenta: string;
2605
+ deepMagenta: string;
2606
+ cyan: string;
2607
+ paleCyan: string;
2608
+ deepCyan: string;
2609
+ violet: string;
2610
+ amber: string;
2611
+ ash: string;
2612
+ smoke: string;
2613
+ soot: string;
2614
+ black: string;
2615
+ panelBg: string;
2616
+ selectedBg: string;
2617
+ userMsgBg: string;
2618
+ toolPendingBg: string;
2619
+ toolSuccessBg: string;
2620
+ toolErrorBg: string;
2621
+ customMsgBg: string;
2622
+ };
2623
+ colors: {
2624
+ accent: string;
2625
+ border: string;
2626
+ borderAccent: string;
2627
+ borderMuted: string;
2628
+ success: string;
2629
+ error: string;
2630
+ warning: string;
2631
+ muted: string;
2632
+ dim: string;
2633
+ text: string;
2634
+ thinkingText: string;
2635
+ selectedBg: string;
2636
+ userMessageBg: string;
2637
+ userMessageText: string;
2638
+ customMessageBg: string;
2639
+ customMessageText: string;
2640
+ customMessageLabel: string;
2641
+ toolPendingBg: string;
2642
+ toolSuccessBg: string;
2643
+ toolErrorBg: string;
2644
+ toolText: string;
2645
+ toolTitle: string;
2646
+ toolOutput: string;
2647
+ mdHeading: string;
2648
+ mdLink: string;
2649
+ mdLinkUrl: string;
2650
+ mdCode: string;
2651
+ mdCodeBlock: string;
2652
+ mdCodeBlockBorder: string;
2653
+ mdQuote: string;
2654
+ mdQuoteBorder: string;
2655
+ mdHr: string;
2656
+ mdListBullet: string;
2657
+ toolDiffAdded: string;
2658
+ toolDiffRemoved: string;
2659
+ toolDiffContext: string;
2660
+ link: string;
2661
+ syntaxComment: string;
2662
+ syntaxKeyword: string;
2663
+ syntaxFunction: string;
2664
+ syntaxVariable: string;
2665
+ syntaxString: string;
2666
+ syntaxNumber: string;
2667
+ syntaxType: string;
2668
+ syntaxOperator: string;
2669
+ syntaxPunctuation: string;
2670
+ thinkingOff: string;
2671
+ thinkingMinimal: string;
2672
+ thinkingLow: string;
2673
+ thinkingMedium: string;
2674
+ thinkingHigh: string;
2675
+ thinkingXhigh: string;
2676
+ bashMode: string;
2677
+ statusLineBg: string;
2678
+ statusLineSep: number;
2679
+ statusLineModel: string;
2680
+ statusLinePath: string;
2681
+ statusLineGitClean: string;
2682
+ statusLineGitDirty: string;
2683
+ statusLineContext: string;
2684
+ statusLineSpend: string;
2685
+ statusLineStaged: string;
2686
+ statusLineDirty: string;
2687
+ statusLineUntracked: string;
2688
+ statusLineOutput: string;
2689
+ statusLineCost: string;
2690
+ statusLineSubagents: string;
2691
+ pythonMode: string;
2692
+ };
2693
+ export: {
2694
+ pageBg: string;
2695
+ cardBg: string;
2696
+ infoBg: string;
2697
+ };
2698
+ };
2599
2699
  "dark-nord": {
2600
2700
  $schema: string;
2601
2701
  name: string;
@@ -22,4 +22,6 @@ export type ThemeColor = "accent" | "border" | "borderAccent" | "borderMuted" |
22
22
  /** Check if a string is a valid ThemeColor value */
23
23
  export declare function isValidThemeColor(color: string): color is ThemeColor;
24
24
  export type ThemeBg = "selectedBg" | "userMessageBg" | "customMessageBg" | "toolPendingBg" | "toolSuccessBg" | "toolErrorBg" | "statusLineBg";
25
+ /** Check if a string is a valid ThemeBg value */
26
+ export declare function isValidThemeBg(color: string): color is ThemeBg;
25
27
  export type ColorMode = "truecolor" | "256color";
@@ -1,3 +1,4 @@
1
+ import type { NativeNode } from "../native/node.js";
1
2
  import type { Theme, ThemeColor } from "./theme.js";
2
3
  type ShimmerTheme = Pick<Theme, "bold" | "fg" | "getFgAnsi">;
3
4
  /** Sweep style for animated shimmer text; `disabled` renders every tier as the mid color. */
@@ -26,6 +27,13 @@ export interface ShimmerSegment {
26
27
  export declare const DEFAULT_SHIMMER_PALETTE: ShimmerPalette;
27
28
  /** Whether shimmer animations are active (any mode other than `disabled`). */
28
29
  export declare function shimmerEnabled(): boolean;
30
+ /**
31
+ * Describe shimmering segments for a TSP terminal, which clocks the sweep
32
+ * itself: a `shimmer` node in the active mode, or plain spans in the mid tier
33
+ * color when shimmer is disabled. Palette tiers given as theme colors travel as
34
+ * token names; raw-ANSI tiers are dropped (the terminal's theme decides).
35
+ */
36
+ export declare function describeShimmer(segments: readonly ShimmerSegment[], key?: string): NativeNode;
29
37
  /**
30
38
  * Apply a shimmer sweep across one or more segments, treating them as a
31
39
  * single continuous string for band positioning. Each segment can supply
@@ -1,6 +1,8 @@
1
1
  import { type ColorMode, type ThemeBg, type ThemeColor } from "./schema.js";
2
2
  import type { SessionAccentTheme } from "./session-color.js";
3
3
  import { type SlashCommandIconName, type SpinnerType, type SymbolKey, type SymbolPreset } from "./symbols.js";
4
+ /** Theme token of a thinking/effort level name (`off`…`max`); unknown levels (`auto`) map to `thinkingOff`. */
5
+ export declare function thinkingLevelToken(level: string): ThemeColor;
4
6
  export declare class Theme {
5
7
  #private;
6
8
  private readonly mode;
@@ -1,5 +1,5 @@
1
1
  import type { Terminal } from "../terminal.js";
2
- import type { ThemeColor } from "./schema.js";
2
+ import { type ThemeColor } from "./schema.js";
3
3
  import type { SymbolPreset } from "./symbols.js";
4
4
  import type { Theme } from "./theme-class.js";
5
5
  export { getAvailableThemes, getAvailableThemesWithPaths, getThemeByName, type ThemeInfo } from "./loader.js";
@@ -59,6 +59,15 @@ export declare function setSymbolPreset(preset: SymbolPreset): Promise<void>;
59
59
  * Get the current symbol preset override.
60
60
  */
61
61
  export declare function getSymbolPresetOverride(): SymbolPreset | undefined;
62
+ /**
63
+ * Force `preset` while a Tern Surface Protocol surface is live (the terminal's
64
+ * font carries every Nerd Font glyph, so icons need no Glyph Protocol
65
+ * registration); `undefined` restores the user's preset. Process-local and
66
+ * never persisted. Rebuilds the active theme synchronously so the next frame
67
+ * already uses it, and notifies theme listeners like a preset change. Returns
68
+ * whether the active theme was rebuilt (callers invalidate render caches).
69
+ */
70
+ export declare function setNativeSymbolPreset(preset: SymbolPreset | undefined): boolean;
62
71
  /**
63
72
  * Set color blind mode, recreating the theme with the new setting.
64
73
  * When enabled, uses blue instead of green for diff additions.
@@ -94,6 +103,29 @@ export declare function stopThemeWatcher(): void;
94
103
  * Used by HTML export to generate CSS custom properties.
95
104
  */
96
105
  export declare function getResolvedThemeColors(themeName?: string): Promise<Record<string, string>>;
106
+ /** One appearance variant of {@link NativeThemePalette}: token name → `#rrggbb`. */
107
+ export type NativeThemeVariant = Record<string, string>;
108
+ /** omp's resolved theme for a Tern Surface Protocol terminal (the `t` verb body minus `sf`). */
109
+ export interface NativeThemePalette {
110
+ dark?: NativeThemeVariant;
111
+ light?: NativeThemeVariant;
112
+ name: {
113
+ dark?: string;
114
+ light?: string;
115
+ };
116
+ }
117
+ /**
118
+ * Cheap identity of everything {@link getNativeThemePalette} depends on;
119
+ * recompute the palette only when it changes.
120
+ */
121
+ export declare function getNativeThemePaletteKey(): string;
122
+ /**
123
+ * omp's theme for a native surface: with auto theme, the configured dark and
124
+ * light themes; otherwise (or while the theme selector previews one) the
125
+ * active theme under its own appearance only. Themes without a loadable
126
+ * definition (in-memory instances) contribute nothing.
127
+ */
128
+ export declare function getNativeThemePalette(): NativeThemePalette;
97
129
  /**
98
130
  * Check if a theme is a "light" theme by analyzing its status-line background
99
131
  * luminance. Loads theme JSON synchronously (built-in or custom file on disk)
@@ -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";
@@ -54,6 +55,8 @@ interface AskRenderArgs {
54
55
  export declare function optionMarker(uiTheme: Theme, multi: boolean | undefined, selected: boolean): string;
55
56
  /** Render question forms and their recorded answers. */
56
57
  export declare const askToolRenderer: {
58
+ describeCall(args: AskRenderArgs): NativeToolView | undefined;
59
+ describeResult(result: ToolRenderResult<AskToolDetails>, _options?: RenderResultOptions, args?: AskRenderArgs): NativeToolView | undefined;
57
60
  mergeCallAndResult: true;
58
61
  renderCall(args: AskRenderArgs, _options: RenderResultOptions, uiTheme: Theme): Component;
59
62
  renderResult(result: {
@@ -1,7 +1,7 @@
1
1
  import type { Component } from "../tui.js";
2
2
  import type { Theme } from "../theme/theme.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
  /** Display metadata returned by ast-edit. */
6
6
  export interface AstEditToolDetails {
7
7
  totalReplacements: number;
@@ -48,6 +48,15 @@ export declare const astEditToolRenderer: {
48
48
  details?: AstEditToolDetails;
49
49
  isError?: boolean;
50
50
  }, options: RenderResultOptions, uiTheme: Theme, args?: AstEditRenderArgs): Component;
51
+ describeCall(args: AstEditRenderArgs): NativeToolView;
52
+ describeResult(result: {
53
+ content: Array<{
54
+ type: string;
55
+ text?: string;
56
+ }>;
57
+ details?: AstEditToolDetails;
58
+ isError?: boolean;
59
+ }, _options: RenderResultOptions, args?: AstEditRenderArgs): NativeToolView;
51
60
  mergeCallAndResult: true;
52
61
  };
53
62
  export {};
@@ -1,7 +1,7 @@
1
1
  import type { Component } from "../tui.js";
2
2
  import type { Theme } from "../theme/theme.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
  /** Display metadata returned by ast-grep. */
6
6
  export interface AstGrepToolDetails {
7
7
  matchCount: number;
@@ -47,6 +47,15 @@ export declare const astGrepToolRenderer: {
47
47
  details?: AstGrepToolDetails;
48
48
  isError?: boolean;
49
49
  }, options: RenderResultOptions, uiTheme: Theme, args?: AstGrepRenderArgs): Component;
50
+ describeCall(args: AstGrepRenderArgs): NativeToolView;
51
+ describeResult(result: {
52
+ content: Array<{
53
+ type: string;
54
+ text?: string;
55
+ }>;
56
+ details?: AstGrepToolDetails;
57
+ isError?: boolean;
58
+ }, _options: RenderResultOptions, args?: AstGrepRenderArgs): NativeToolView;
50
59
  mergeCallAndResult: true;
51
60
  };
52
61
  export {};
@@ -1,5 +1,6 @@
1
1
  import { Text } from "../components/text.js";
2
2
  import type { Theme } from "../theme/theme.js";
3
+ import type { NativeToolView, ToolRenderResult } from "./renderer.js";
3
4
  import type { TruncationResult } from "./streaming-output.js";
4
5
  /** Whether a lower or higher metric is better. */
5
6
  export type MetricDirection = "lower" | "higher";
@@ -127,7 +128,11 @@ export declare const initExperimentToolRenderer: {
127
128
  renderCall(args: {
128
129
  name: string;
129
130
  }, _options: import("./renderer.js").RenderResultOptions, theme: Theme): Text;
130
- renderResult(result: import("./renderer.js").ToolRenderResult<InitExperimentDetails>): Text;
131
+ renderResult(result: ToolRenderResult<InitExperimentDetails>): Text;
132
+ describeCall(args: {
133
+ name: string;
134
+ }): NativeToolView;
135
+ describeResult(result: ToolRenderResult<InitExperimentDetails>): NativeToolView | undefined;
131
136
  };
132
137
  /** Render log-experiment tool calls and results. */
133
138
  export declare const logExperimentToolRenderer: {
@@ -135,12 +140,19 @@ export declare const logExperimentToolRenderer: {
135
140
  status: ExperimentStatus;
136
141
  description: string;
137
142
  }, _options: import("./renderer.js").RenderResultOptions, theme: Theme): Text;
138
- renderResult(result: import("./renderer.js").ToolRenderResult<LogDetails>, _options: import("./renderer.js").RenderResultContextOptions, theme: Theme): Text;
143
+ renderResult(result: ToolRenderResult<LogDetails>, _options: import("./renderer.js").RenderResultContextOptions, theme: Theme): Text;
144
+ describeCall(args: {
145
+ status: ExperimentStatus;
146
+ description: string;
147
+ }): NativeToolView;
148
+ describeResult(result: ToolRenderResult<LogDetails>): NativeToolView | undefined;
139
149
  };
140
150
  /** Render run-experiment tool calls and results. */
141
151
  export declare const runExperimentToolRenderer: {
142
152
  renderCall(_args: unknown, _options: import("./renderer.js").RenderResultOptions, theme: Theme): Text;
143
- renderResult(result: import("./renderer.js").ToolRenderResult<RunDetails | RunExperimentProgressDetails>, options: import("./renderer.js").RenderResultContextOptions, theme: Theme): Text;
153
+ renderResult(result: ToolRenderResult<RunDetails | RunExperimentProgressDetails>, options: import("./renderer.js").RenderResultContextOptions, theme: Theme): Text;
154
+ describeCall(): NativeToolView;
155
+ describeResult(result: ToolRenderResult<RunDetails | RunExperimentProgressDetails>): NativeToolView | undefined;
144
156
  };
145
157
  /** Persisted experiment notes after an update. */
146
158
  export interface UpdateNotesDetails {
@@ -152,5 +164,10 @@ export declare const updateNotesToolRenderer: {
152
164
  body: string;
153
165
  append_idea?: string;
154
166
  }, _options: import("./renderer.js").RenderResultOptions, theme: Theme): Text;
155
- renderResult(result: import("./renderer.js").ToolRenderResult<UpdateNotesDetails>, _options: import("./renderer.js").RenderResultContextOptions, theme: Theme): Text;
167
+ renderResult(result: ToolRenderResult<UpdateNotesDetails>, _options: import("./renderer.js").RenderResultContextOptions, theme: Theme): Text;
168
+ describeCall(args: {
169
+ body: string;
170
+ append_idea?: string;
171
+ }): NativeToolView;
172
+ describeResult(result: ToolRenderResult<UpdateNotesDetails>): NativeToolView | undefined;
156
173
  };
@@ -1,7 +1,7 @@
1
1
  import type { Component } from "../tui.js";
2
2
  import { type Theme } from "../theme/theme.js";
3
3
  import { type OutputMeta } from "./output-meta.js";
4
- import type { RenderResultOptions } from "./renderer.js";
4
+ import type { NativeToolView, RenderResultContextOptions, RenderResultOptions } from "./renderer.js";
5
5
  /** Default collapsed shell output preview height. */
6
6
  export declare const BASH_DEFAULT_PREVIEW_LINES = 10;
7
7
  /** LLM-facing footer appended when a tool call becomes a background job. */
@@ -76,6 +76,11 @@ export declare function getBashEnvForDisplay(args: BashRenderArgs): Record<strin
76
76
  * `theme.fg("dim", ...)` form render only the first line as dim.
77
77
  */
78
78
  export declare function formatBashCommandLines(args: BashRenderArgs, uiTheme: Theme): string[];
79
+ /**
80
+ * Plain (unstyled) command line for native views: `cd <dir> && NAME="…" <command>`,
81
+ * built from the same decoded display args (incl. streamed `__partialJson` env) as the ANSI path.
82
+ */
83
+ export declare function formatBashCommandText(args: BashRenderArgs): string;
79
84
  /** Builds a shell transcript renderer with caller-supplied command labels. */
80
85
  export declare function createShellRenderer<TArgs>(config: ShellRendererConfig<TArgs>): {
81
86
  renderCall(args: TArgs, options: RenderResultOptions, uiTheme: Theme): Component;
@@ -89,6 +94,17 @@ export declare function createShellRenderer<TArgs>(config: ShellRendererConfig<T
89
94
  }, options: RenderResultOptions & {
90
95
  renderContext?: BashRenderContext;
91
96
  }, uiTheme: Theme, args?: TArgs): Component;
97
+ describeCall(args: TArgs, options: RenderResultOptions): NativeToolView;
98
+ describeResult(result: {
99
+ content: Array<{
100
+ type: string;
101
+ text?: string;
102
+ }>;
103
+ details?: BashToolDetails;
104
+ isError?: boolean;
105
+ }, options: RenderResultContextOptions & {
106
+ renderContext?: BashRenderContext;
107
+ }, args?: TArgs): NativeToolView;
92
108
  mergeCallAndResult: true;
93
109
  inline: true;
94
110
  };
@@ -105,6 +121,19 @@ export declare const bashToolRenderer: {
105
121
  }, options: RenderResultOptions & {
106
122
  renderContext?: BashRenderContext;
107
123
  }, uiTheme: Theme, args?: BashRenderArgs | undefined): Component;
124
+ describeCall(args: BashRenderArgs, options: RenderResultOptions): NativeToolView;
125
+ describeResult(result: {
126
+ content: {
127
+ type: string;
128
+ text?: string;
129
+ }[];
130
+ details?: BashToolDetails;
131
+ isError?: boolean;
132
+ }, options: RenderResultOptions & {
133
+ renderContext?: Record<string, unknown>;
134
+ } & {
135
+ renderContext?: BashRenderContext;
136
+ }, args?: BashRenderArgs | undefined): NativeToolView;
108
137
  mergeCallAndResult: true;
109
138
  inline: true;
110
139
  };
@@ -7,7 +7,7 @@
7
7
  */
8
8
  import type { Component } from "../tui.js";
9
9
  import { type Theme } from "../theme/theme.js";
10
- import type { RenderResultOptions } from "./renderer.js";
10
+ import type { NativeToolView, RenderResultOptions } from "./renderer.js";
11
11
  import { type CardToolResult } from "./result-card.js";
12
12
  /** Summary of a `cfg://` read, attached to read tool details. */
13
13
  export interface CfgReadDetails {
@@ -33,5 +33,9 @@ export interface CfgWriteDetails {
33
33
  }
34
34
  /** Render `read cfg://…`: pending header, or the highlighted listing with counts. */
35
35
  export declare function renderCfgRead(url: string, result: CardToolResult | undefined, details: CfgReadDetails | undefined, options: RenderResultOptions, theme: Theme): Component;
36
+ /** TSP view of `read cfg://…`: path and counts in the head, the listing as YAML. */
37
+ export declare function describeCfgRead(url: string, result: CardToolResult | undefined, details: CfgReadDetails | undefined): NativeToolView;
38
+ /** TSP view of `write cfg://…[/save]`: scope/outcome in the head, then `previous → value`. */
39
+ export declare function describeCfgWrite(url: string, content: string | undefined, result: CardToolResult | undefined, details: CfgWriteDetails | undefined): NativeToolView;
36
40
  /** Render `write cfg://…[/save]`: the proposed value while pending, then the approved/declined change. */
37
41
  export declare function renderCfgWrite(url: string, content: string | undefined, result: CardToolResult | undefined, details: CfgWriteDetails | undefined, options: RenderResultOptions, theme: Theme): Component;