@oh-my-pi/pi-tui 18.2.4 → 18.2.6

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 (748) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +43 -0
  3. package/dist/types/app-keybindings.d.ts +395 -0
  4. package/dist/types/apps/autoresearch-dashboard.d.ts +43 -0
  5. package/dist/types/apps/autoresearch-data.d.ts +15 -0
  6. package/dist/types/apps/cleanse-board.d.ts +66 -0
  7. package/dist/types/apps/cleanse-picker.d.ts +23 -0
  8. package/dist/types/apps/debug/log-formatting.d.ts +6 -0
  9. package/dist/types/apps/debug/log-viewer.d.ts +81 -0
  10. package/dist/types/apps/debug/protocol-probe.d.ts +42 -0
  11. package/dist/types/apps/debug/raw-sse-buffer.d.ts +58 -0
  12. package/dist/types/apps/debug/raw-sse.d.ts +26 -0
  13. package/dist/types/apps/debug/terminal-info.d.ts +34 -0
  14. package/dist/types/apps/debug/viewer-frame.d.ts +52 -0
  15. package/dist/types/apps/git/avatar.d.ts +9 -0
  16. package/dist/types/apps/git/colors.d.ts +49 -0
  17. package/dist/types/apps/git/diff-pane.d.ts +188 -0
  18. package/dist/types/apps/git/git-tui.d.ts +66 -0
  19. package/dist/types/apps/git/sidebar.d.ts +149 -0
  20. package/dist/types/apps/git/state.d.ts +117 -0
  21. package/dist/types/apps/if-bench-board.d.ts +75 -0
  22. package/dist/types/apps/live-visualizer.d.ts +33 -0
  23. package/dist/types/apps/ps-data.d.ts +51 -0
  24. package/dist/types/apps/ps-top.d.ts +33 -0
  25. package/dist/types/apps/session-picker.d.ts +26 -0
  26. package/dist/types/apps/setup-model-picker.d.ts +13 -0
  27. package/dist/types/apps/standalone-picker.d.ts +42 -0
  28. package/dist/types/autocomplete.d.ts +4 -0
  29. package/dist/types/chat/advisor-message.d.ts +11 -0
  30. package/dist/types/chat/assistant-message.d.ts +106 -0
  31. package/dist/types/chat/background-tan-message.d.ts +9 -0
  32. package/dist/types/chat/bash-execution.d.ts +47 -0
  33. package/dist/types/chat/cache-invalidation-marker.d.ts +50 -0
  34. package/dist/types/chat/chat-transcript-builder.d.ts +50 -0
  35. package/dist/types/chat/collab-prompt-message.d.ts +10 -0
  36. package/dist/types/chat/compaction-summary-message.d.ts +54 -0
  37. package/dist/types/chat/custom-message.d.ts +10 -0
  38. package/dist/types/chat/display-preferences.d.ts +13 -0
  39. package/dist/types/chat/eval-execution.d.ts +29 -0
  40. package/dist/types/chat/execution-shared.d.ts +51 -0
  41. package/dist/types/chat/extension-types.d.ts +28 -0
  42. package/dist/types/chat/hook-message.d.ts +10 -0
  43. package/dist/types/chat/image-loading.d.ts +46 -0
  44. package/dist/types/chat/late-diagnostics-message.d.ts +21 -0
  45. package/dist/types/chat/messages.d.ts +189 -0
  46. package/dist/types/chat/reaction.d.ts +30 -0
  47. package/dist/types/chat/read-target.d.ts +4 -0
  48. package/dist/types/chat/read-tool-group.d.ts +67 -0
  49. package/dist/types/chat/served-model-marker.d.ts +47 -0
  50. package/dist/types/chat/skill-message.d.ts +33 -0
  51. package/dist/types/chat/skill-title-input.d.ts +14 -0
  52. package/dist/types/chat/stripped-tool-calls-placeholder.d.ts +12 -0
  53. package/dist/types/chat/thinking-display.d.ts +12 -0
  54. package/dist/types/chat/todo-reminder.d.ts +13 -0
  55. package/dist/types/chat/tool-execution.d.ts +138 -0
  56. package/dist/types/chat/transcript-browser.d.ts +93 -0
  57. package/dist/types/chat/transcript-entry.d.ts +45 -0
  58. package/dist/types/chat/transcript-outline.d.ts +86 -0
  59. package/dist/types/chat/transcript-render-helpers.d.ts +92 -0
  60. package/dist/types/chat/ttsr-notification.d.ts +23 -0
  61. package/dist/types/chat/user-message.d.ts +52 -0
  62. package/dist/types/chrome/chat-block.d.ts +64 -0
  63. package/dist/types/chrome/collab-qrcode.d.ts +28 -0
  64. package/dist/types/chrome/context-thresholds.d.ts +10 -0
  65. package/dist/types/chrome/countdown-timer.d.ts +14 -0
  66. package/dist/types/chrome/diff.d.ts +14 -0
  67. package/dist/types/chrome/dynamic-border.d.ts +16 -0
  68. package/dist/types/chrome/error-block.d.ts +17 -0
  69. package/dist/types/chrome/form-theme.d.ts +3 -0
  70. package/dist/types/chrome/format.d.ts +12 -0
  71. package/dist/types/chrome/index.d.ts +20 -0
  72. package/dist/types/chrome/keybinding-hints.d.ts +40 -0
  73. package/dist/types/chrome/live-board.d.ts +23 -0
  74. package/dist/types/chrome/local-date.d.ts +4 -0
  75. package/dist/types/chrome/message-divider.d.ts +22 -0
  76. package/dist/types/chrome/message-frame.d.ts +52 -0
  77. package/dist/types/chrome/message-notice.d.ts +35 -0
  78. package/dist/types/chrome/overlay-box.d.ts +74 -0
  79. package/dist/types/chrome/qrcode.d.ts +48 -0
  80. package/dist/types/chrome/segment-track.d.ts +27 -0
  81. package/dist/types/chrome/select-list-mouse-routing.d.ts +4 -0
  82. package/dist/types/chrome/selector-helpers.d.ts +52 -0
  83. package/dist/types/chrome/shared.d.ts +5 -0
  84. package/dist/types/chrome/streaming-panel.d.ts +19 -0
  85. package/dist/types/chrome/tool-activity.d.ts +17 -0
  86. package/dist/types/chrome/transcript-container.d.ts +129 -0
  87. package/dist/types/chrome/transcript-status.d.ts +12 -0
  88. package/dist/types/chrome/visual-truncate.d.ts +19 -0
  89. package/dist/types/components/disclosure.d.ts +42 -0
  90. package/dist/types/components/form.d.ts +130 -0
  91. package/dist/types/components/key-value-list.d.ts +24 -0
  92. package/dist/types/components/layout/geometry.d.ts +73 -0
  93. package/dist/types/components/layout/row.d.ts +55 -0
  94. package/dist/types/components/layout/split-pane.d.ts +80 -0
  95. package/dist/types/components/layout/stack.d.ts +50 -0
  96. package/dist/types/components/menu-selection.d.ts +71 -0
  97. package/dist/types/components/metric.d.ts +44 -0
  98. package/dist/types/components/progress-bar.d.ts +36 -0
  99. package/dist/types/components/scroll-view.d.ts +53 -19
  100. package/dist/types/components/scroll-viewport.d.ts +46 -0
  101. package/dist/types/components/section.d.ts +19 -0
  102. package/dist/types/components/select-list.d.ts +46 -2
  103. package/dist/types/components/settings-list.d.ts +20 -0
  104. package/dist/types/components/table.d.ts +32 -0
  105. package/dist/types/components/tree-view.d.ts +130 -0
  106. package/dist/types/components/wizard-step.d.ts +60 -0
  107. package/dist/types/hotkeys-markdown.d.ts +7 -0
  108. package/dist/types/index.d.ts +17 -0
  109. package/dist/types/keybinding-matchers.d.ts +35 -0
  110. package/dist/types/keys.d.ts +2 -2
  111. package/dist/types/lang-from-path.d.ts +9 -0
  112. package/dist/types/overlays/advisor-config.d.ts +114 -0
  113. package/dist/types/overlays/agent-activity.d.ts +41 -0
  114. package/dist/types/overlays/agent-hub-projection.d.ts +33 -0
  115. package/dist/types/overlays/agent-hub-renderer.d.ts +53 -0
  116. package/dist/types/overlays/agent-hub-types.d.ts +99 -0
  117. package/dist/types/overlays/agent-hub.d.ts +126 -0
  118. package/dist/types/overlays/agent-transcript-viewer.d.ts +71 -0
  119. package/dist/types/overlays/agents-hub.d.ts +72 -0
  120. package/dist/types/overlays/ask-dialog.d.ts +88 -0
  121. package/dist/types/overlays/bordered-loader.d.ts +11 -0
  122. package/dist/types/overlays/btw-history-panel.d.ts +29 -0
  123. package/dist/types/overlays/btw-history.d.ts +17 -0
  124. package/dist/types/overlays/btw-panel.d.ts +26 -0
  125. package/dist/types/overlays/cleanse-panel.d.ts +36 -0
  126. package/dist/types/overlays/codex-reset-fireworks.d.ts +52 -0
  127. package/dist/types/overlays/composer-shape-preview.d.ts +47 -0
  128. package/dist/types/overlays/composer-shape-registry.d.ts +50 -0
  129. package/dist/types/overlays/copy-selector.d.ts +48 -0
  130. package/dist/types/overlays/copy-targets.d.ts +63 -0
  131. package/dist/types/overlays/error-banner.d.ts +13 -0
  132. package/dist/types/overlays/extensions/display-text.d.ts +10 -0
  133. package/dist/types/overlays/extensions/extension-dashboard.d.ts +63 -0
  134. package/dist/types/overlays/extensions/extension-list.d.ts +54 -0
  135. package/dist/types/overlays/extensions/inspector-model.d.ts +109 -0
  136. package/dist/types/overlays/extensions/inspector-panel.d.ts +17 -0
  137. package/dist/types/overlays/extensions/live-tool-session.d.ts +28 -0
  138. package/dist/types/overlays/extensions/mcp-runtime.d.ts +107 -0
  139. package/dist/types/overlays/extensions/state-manager.d.ts +42 -0
  140. package/dist/types/overlays/extensions/types.d.ts +165 -0
  141. package/dist/types/overlays/history-search.d.ts +16 -0
  142. package/dist/types/overlays/hook-editor.d.ts +44 -0
  143. package/dist/types/overlays/hook-input.d.ts +20 -0
  144. package/dist/types/overlays/hook-selector.d.ts +71 -0
  145. package/dist/types/overlays/hub-frame.d.ts +77 -0
  146. package/dist/types/overlays/login-dialog.d.ts +43 -0
  147. package/dist/types/overlays/logout-account-selector.d.ts +15 -0
  148. package/dist/types/overlays/mcp-add-wizard.d.ts +87 -0
  149. package/dist/types/overlays/model-browser.d.ts +213 -0
  150. package/dist/types/overlays/model-hub.d.ts +72 -0
  151. package/dist/types/overlays/model-picker.d.ts +74 -0
  152. package/dist/types/overlays/model-selector.d.ts +52 -0
  153. package/dist/types/overlays/move-overlay.d.ts +39 -0
  154. package/dist/types/overlays/oauth-selector.d.ts +41 -0
  155. package/dist/types/overlays/omfg-panel.d.ts +20 -0
  156. package/dist/types/overlays/pause-screen.d.ts +43 -0
  157. package/dist/types/overlays/plan-review-overlay.d.ts +89 -0
  158. package/dist/types/overlays/plan-save-overlay.d.ts +19 -0
  159. package/dist/types/overlays/plan-toc.d.ts +41 -0
  160. package/dist/types/overlays/plugin-selector.d.ts +28 -0
  161. package/dist/types/overlays/plugin-settings.d.ts +180 -0
  162. package/dist/types/overlays/queue-mode-selector.d.ts +11 -0
  163. package/dist/types/overlays/reset-usage-selector.d.ts +23 -0
  164. package/dist/types/overlays/rewind-selector.d.ts +61 -0
  165. package/dist/types/overlays/running-subagent-badge.d.ts +6 -0
  166. package/dist/types/overlays/session-account-selector.d.ts +24 -0
  167. package/dist/types/overlays/session-info-overlay.d.ts +17 -0
  168. package/dist/types/overlays/session-observer-registry.d.ts +77 -0
  169. package/dist/types/overlays/session-selector.d.ts +131 -0
  170. package/dist/types/overlays/settings-defs.d.ts +119 -0
  171. package/dist/types/overlays/settings-selector.d.ts +73 -0
  172. package/dist/types/overlays/show-images-selector.d.ts +11 -0
  173. package/dist/types/overlays/snapcompact-shape-preview.d.ts +31 -0
  174. package/dist/types/overlays/theme-selector.d.ts +12 -0
  175. package/dist/types/overlays/thinking-selector.d.ts +12 -0
  176. package/dist/types/overlays/tiny-title-download-progress.d.ts +21 -0
  177. package/dist/types/overlays/tree-selector.d.ts +92 -0
  178. package/dist/types/overlays/usage-dashboard.d.ts +94 -0
  179. package/dist/types/overlays/usage-display.d.ts +5 -0
  180. package/dist/types/overlays/usage-row.d.ts +17 -0
  181. package/dist/types/prompt/attachment-chips.d.ts +19 -0
  182. package/dist/types/prompt/composer-attachments.d.ts +71 -0
  183. package/dist/types/prompt/composer-cache.d.ts +37 -0
  184. package/dist/types/prompt/composer.d.ts +159 -0
  185. package/dist/types/prompt/custom-editor.d.ts +261 -0
  186. package/dist/types/prompt/editor-top-gap.d.ts +18 -0
  187. package/dist/types/prompt/emoji-autocomplete.d.ts +16 -0
  188. package/dist/types/prompt/github-ref-autocomplete.d.ts +35 -0
  189. package/dist/types/prompt/gradient-highlight.d.ts +32 -0
  190. package/dist/types/prompt/image-format.d.ts +4 -0
  191. package/dist/types/prompt/image-references.d.ts +26 -0
  192. package/dist/types/prompt/interactive-context-helpers.d.ts +43 -0
  193. package/dist/types/prompt/internal-url-autocomplete.d.ts +56 -0
  194. package/dist/types/prompt/macos-spelling.d.ts +44 -0
  195. package/dist/types/prompt/magic-keyword-boundary.d.ts +9 -0
  196. package/dist/types/prompt/magic-keywords.d.ts +26 -0
  197. package/dist/types/prompt/markdown-prose.d.ts +15 -0
  198. package/dist/types/prompt/model-mention-autocomplete.d.ts +25 -0
  199. package/dist/types/prompt/model-mention-syntax.d.ts +24 -0
  200. package/dist/types/prompt/orchestrate.d.ts +13 -0
  201. package/dist/types/prompt/prompt-action-autocomplete.d.ts +56 -0
  202. package/dist/types/prompt/queue-input.d.ts +8 -0
  203. package/dist/types/prompt/skill-tokens.d.ts +13 -0
  204. package/dist/types/prompt/tools-markdown.d.ts +12 -0
  205. package/dist/types/prompt/ultrathink.d.ts +13 -0
  206. package/dist/types/prompt/usage-amounts.d.ts +26 -0
  207. package/dist/types/prompt/video.d.ts +18 -0
  208. package/dist/types/prompt/welcome.d.ts +83 -0
  209. package/dist/types/prompt/workflow.d.ts +13 -0
  210. package/dist/types/render/code-cell.d.ts +51 -0
  211. package/dist/types/render/file-list.d.ts +22 -0
  212. package/dist/types/render/hyperlink.d.ts +80 -0
  213. package/dist/types/render/index.d.ts +16 -0
  214. package/dist/types/render/output-block.d.ts +54 -0
  215. package/dist/types/render/output-pane.d.ts +80 -0
  216. package/dist/types/render/render-utils.d.ts +312 -0
  217. package/dist/types/render/sixel.d.ts +21 -0
  218. package/dist/types/render/status-line.d.ts +23 -0
  219. package/dist/types/render/tool-card.d.ts +71 -0
  220. package/dist/types/render/tree-list.d.ts +29 -0
  221. package/dist/types/render/types.d.ts +17 -0
  222. package/dist/types/render/utils.d.ts +43 -0
  223. package/dist/types/render/width-aware-text.d.ts +23 -0
  224. package/dist/types/setup/lazy.d.ts +3 -0
  225. package/dist/types/setup/scenes/composer.d.ts +3 -0
  226. package/dist/types/setup/scenes/glyph.d.ts +3 -0
  227. package/dist/types/setup/scenes/model.d.ts +3 -0
  228. package/dist/types/setup/scenes/outro.d.ts +2 -0
  229. package/dist/types/setup/scenes/providers.d.ts +3 -0
  230. package/dist/types/setup/scenes/sign-in.d.ts +21 -0
  231. package/dist/types/setup/scenes/splash.d.ts +11 -0
  232. package/dist/types/setup/scenes/theme.d.ts +3 -0
  233. package/dist/types/setup/scenes/types.d.ts +110 -0
  234. package/dist/types/setup/scenes/web-search.d.ts +22 -0
  235. package/dist/types/setup/setup-version.d.ts +11 -0
  236. package/dist/types/setup/startup-splash.d.ts +9 -0
  237. package/dist/types/setup/wizard-overlay.d.ts +16 -0
  238. package/dist/types/setup/wizard.d.ts +25 -0
  239. package/dist/types/status-line/component.d.ts +182 -0
  240. package/dist/types/status-line/context-usage.d.ts +156 -0
  241. package/dist/types/status-line/footer.d.ts +30 -0
  242. package/dist/types/status-line/git-utils.d.ts +22 -0
  243. package/dist/types/status-line/host.d.ts +129 -0
  244. package/dist/types/status-line/index.d.ts +6 -0
  245. package/dist/types/status-line/loop.d.ts +18 -0
  246. package/dist/types/status-line/metrics.d.ts +21 -0
  247. package/dist/types/status-line/presets.d.ts +3 -0
  248. package/dist/types/status-line/schema.d.ts +15 -0
  249. package/dist/types/status-line/segments.d.ts +5 -0
  250. package/dist/types/status-line/separators.d.ts +3 -0
  251. package/dist/types/status-line/types.d.ts +236 -0
  252. package/dist/types/stdin-buffer.d.ts +4 -0
  253. package/dist/types/theme/color.d.ts +24 -0
  254. package/dist/types/theme/defaults/index.d.ts +9489 -0
  255. package/dist/types/theme/index.d.ts +4 -0
  256. package/dist/types/theme/loader.d.ts +23 -0
  257. package/dist/types/theme/mermaid-cache.d.ts +26 -0
  258. package/dist/types/theme/schema-validation.d.ts +3 -0
  259. package/dist/types/theme/schema.d.ts +25 -0
  260. package/dist/types/theme/session-color.d.ts +43 -0
  261. package/dist/types/theme/shimmer.d.ts +44 -0
  262. package/dist/types/theme/symbols.d.ts +34 -0
  263. package/dist/types/theme/theme-class.d.ts +299 -0
  264. package/dist/types/theme/theme.d.ts +111 -0
  265. package/dist/types/theme/tui-adapters.d.ts +30 -0
  266. package/dist/types/thinking.d.ts +165 -0
  267. package/dist/types/tools/agent-tree.d.ts +36 -0
  268. package/dist/types/tools/ask.d.ts +67 -0
  269. package/dist/types/tools/ast-edit.d.ts +53 -0
  270. package/dist/types/tools/ast-grep.d.ts +52 -0
  271. package/dist/types/tools/autoresearch.d.ts +156 -0
  272. package/dist/types/tools/bash-interactive.d.ts +28 -0
  273. package/dist/types/tools/bash.d.ts +103 -0
  274. package/dist/types/tools/conflict-detect.d.ts +43 -0
  275. package/dist/types/tools/debug.d.ts +60 -0
  276. package/dist/types/tools/default-renderer.d.ts +24 -0
  277. package/dist/types/tools/edit.d.ts +158 -0
  278. package/dist/types/tools/eval-format/code-mode-declarations.d.ts +5 -0
  279. package/dist/types/tools/eval-format/index.d.ts +5 -0
  280. package/dist/types/tools/eval-format/javascript.d.ts +2 -0
  281. package/dist/types/tools/eval-format/python.d.ts +2 -0
  282. package/dist/types/tools/eval.d.ts +94 -0
  283. package/dist/types/tools/fetch.d.ts +42 -0
  284. package/dist/types/tools/gh-format.d.ts +8 -0
  285. package/dist/types/tools/github.d.ts +144 -0
  286. package/dist/types/tools/glob.d.ts +44 -0
  287. package/dist/types/tools/goal.d.ts +42 -0
  288. package/dist/types/tools/grep.d.ts +64 -0
  289. package/dist/types/tools/grouped-file-output.d.ts +71 -0
  290. package/dist/types/tools/hashline-format.d.ts +28 -0
  291. package/dist/types/tools/hub.d.ts +340 -0
  292. package/dist/types/tools/index.d.ts +4 -0
  293. package/dist/types/tools/json-tree.d.ts +59 -0
  294. package/dist/types/tools/line-ranges.d.ts +29 -0
  295. package/dist/types/tools/list-limit.d.ts +15 -0
  296. package/dist/types/tools/lsp.d.ts +72 -0
  297. package/dist/types/tools/match-line-format.d.ts +11 -0
  298. package/dist/types/tools/mcp.d.ts +81 -0
  299. package/dist/types/tools/memory.d.ts +67 -0
  300. package/dist/types/tools/output-meta.d.ts +151 -0
  301. package/dist/types/tools/read.d.ts +139 -0
  302. package/dist/types/tools/renderer.d.ts +98 -0
  303. package/dist/types/tools/report-tool-issue.d.ts +8 -0
  304. package/dist/types/tools/resolve.d.ts +47 -0
  305. package/dist/types/tools/streaming-output.d.ts +282 -0
  306. package/dist/types/tools/subprocess.d.ts +24 -0
  307. package/dist/types/tools/task-repair-args.d.ts +53 -0
  308. package/dist/types/tools/task-yield-assembly.d.ts +20 -0
  309. package/dist/types/tools/task.d.ts +425 -0
  310. package/dist/types/tools/terminal-output.d.ts +8 -0
  311. package/dist/types/tools/think.d.ts +13 -0
  312. package/dist/types/tools/todo.d.ts +118 -0
  313. package/dist/types/tools/tool-errors.d.ts +7 -0
  314. package/dist/types/tools/vibe.d.ts +120 -0
  315. package/dist/types/tools/web-search.d.ts +195 -0
  316. package/dist/types/tools/write.d.ts +76 -0
  317. package/dist/types/tools/xd-url.d.ts +13 -0
  318. package/dist/types/tools/xdev.d.ts +52 -0
  319. package/dist/types/tui.d.ts +18 -0
  320. package/dist/types/utils.d.ts +2 -0
  321. package/package.json +37 -3
  322. package/src/app-keybindings.ts +760 -0
  323. package/src/apps/autoresearch-dashboard.ts +500 -0
  324. package/src/apps/autoresearch-data.ts +64 -0
  325. package/src/apps/cleanse-board.ts +341 -0
  326. package/src/apps/cleanse-picker.ts +57 -0
  327. package/src/apps/debug/log-formatting.ts +53 -0
  328. package/src/apps/debug/log-viewer.ts +868 -0
  329. package/src/apps/debug/protocol-probe.ts +267 -0
  330. package/src/apps/debug/raw-sse-buffer.ts +449 -0
  331. package/src/apps/debug/raw-sse.ts +282 -0
  332. package/src/apps/debug/terminal-info.ts +115 -0
  333. package/src/apps/debug/viewer-frame.ts +174 -0
  334. package/src/apps/git/avatar.ts +52 -0
  335. package/src/apps/git/colors.ts +109 -0
  336. package/src/apps/git/diff-pane.ts +1512 -0
  337. package/src/apps/git/git-tui.ts +889 -0
  338. package/src/apps/git/sidebar.ts +1204 -0
  339. package/src/apps/git/state.ts +113 -0
  340. package/src/apps/if-bench-board.ts +324 -0
  341. package/src/apps/live-visualizer.ts +238 -0
  342. package/src/apps/ps-data.ts +116 -0
  343. package/src/apps/ps-top.ts +422 -0
  344. package/src/apps/session-picker.ts +95 -0
  345. package/src/apps/setup-model-picker.ts +21 -0
  346. package/src/apps/standalone-picker.ts +111 -0
  347. package/src/autocomplete.ts +9 -13
  348. package/src/chat/advisor-message.ts +175 -0
  349. package/src/chat/assistant-message.ts +1214 -0
  350. package/src/chat/background-tan-message.ts +35 -0
  351. package/src/chat/bash-execution.ts +394 -0
  352. package/src/chat/cache-invalidation-marker.ts +94 -0
  353. package/src/chat/chat-transcript-builder.ts +593 -0
  354. package/src/chat/collab-prompt-message.ts +34 -0
  355. package/src/chat/compaction-summary-message.ts +261 -0
  356. package/src/chat/custom-message.ts +23 -0
  357. package/src/chat/display-preferences.ts +24 -0
  358. package/src/chat/eval-execution.ts +172 -0
  359. package/src/chat/execution-shared.ts +113 -0
  360. package/src/chat/extension-types.ts +46 -0
  361. package/src/chat/hook-message.ts +20 -0
  362. package/src/chat/image-loading.ts +122 -0
  363. package/src/chat/late-diagnostics-message.ts +92 -0
  364. package/src/chat/messages.ts +305 -0
  365. package/src/chat/reaction.ts +65 -0
  366. package/src/chat/read-target.ts +7 -0
  367. package/src/chat/read-tool-group.ts +873 -0
  368. package/src/chat/served-model-marker.ts +91 -0
  369. package/src/chat/skill-message.ts +220 -0
  370. package/src/chat/skill-title-input.ts +41 -0
  371. package/src/chat/stripped-tool-calls-placeholder.ts +35 -0
  372. package/src/chat/thinking-display.ts +312 -0
  373. package/src/chat/todo-reminder.ts +33 -0
  374. package/src/chat/tool-execution.ts +1395 -0
  375. package/src/chat/transcript-browser.ts +268 -0
  376. package/src/chat/transcript-entry.ts +96 -0
  377. package/src/chat/transcript-outline.ts +260 -0
  378. package/src/chat/transcript-render-helpers.ts +315 -0
  379. package/src/chat/ttsr-notification.ts +123 -0
  380. package/src/chat/user-message.ts +287 -0
  381. package/src/chrome/chat-block.ts +110 -0
  382. package/src/chrome/collab-qrcode.ts +74 -0
  383. package/src/chrome/context-thresholds.ts +85 -0
  384. package/src/chrome/countdown-timer.ts +74 -0
  385. package/src/chrome/diff.ts +266 -0
  386. package/src/chrome/dynamic-border.ts +36 -0
  387. package/src/chrome/error-block.ts +63 -0
  388. package/src/chrome/form-theme.ts +10 -0
  389. package/src/chrome/format.ts +66 -0
  390. package/src/chrome/index.ts +21 -0
  391. package/src/chrome/keybinding-hints.ts +55 -0
  392. package/src/chrome/live-board.ts +123 -0
  393. package/src/chrome/local-date.ts +20 -0
  394. package/src/chrome/message-divider.ts +51 -0
  395. package/src/chrome/message-frame.ts +164 -0
  396. package/src/chrome/message-notice.ts +103 -0
  397. package/src/chrome/overlay-box.ts +301 -0
  398. package/src/chrome/qrcode.ts +539 -0
  399. package/src/chrome/segment-track.ts +86 -0
  400. package/src/chrome/select-list-mouse-routing.ts +11 -0
  401. package/src/chrome/selector-helpers.ts +119 -0
  402. package/src/chrome/shared.ts +27 -0
  403. package/src/chrome/streaming-panel.ts +72 -0
  404. package/src/chrome/tool-activity.ts +44 -0
  405. package/src/chrome/transcript-container.ts +902 -0
  406. package/src/chrome/transcript-status.ts +27 -0
  407. package/src/chrome/visual-truncate.ts +70 -0
  408. package/src/components/disclosure.ts +235 -0
  409. package/src/components/editor.ts +10 -12
  410. package/src/components/form.ts +566 -0
  411. package/src/components/input.ts +6 -27
  412. package/src/components/key-value-list.ts +88 -0
  413. package/src/components/layout/geometry.ts +202 -0
  414. package/src/components/layout/row.ts +283 -0
  415. package/src/components/layout/split-pane.ts +349 -0
  416. package/src/components/layout/stack.ts +261 -0
  417. package/src/components/markdown.ts +16 -12
  418. package/src/components/menu-selection.ts +248 -0
  419. package/src/components/metric.ts +132 -0
  420. package/src/components/progress-bar.ts +140 -0
  421. package/src/components/scroll-view.ts +372 -70
  422. package/src/components/scroll-viewport.ts +154 -0
  423. package/src/components/section.ts +77 -0
  424. package/src/components/select-list.ts +238 -159
  425. package/src/components/settings-list.ts +103 -80
  426. package/src/components/table.ts +127 -0
  427. package/src/components/tree-view.ts +481 -0
  428. package/src/components/wizard-step.ts +229 -0
  429. package/src/deccara.ts +1 -3
  430. package/src/hotkeys-markdown.ts +100 -0
  431. package/src/index.ts +18 -0
  432. package/src/keybinding-matchers.ts +99 -0
  433. package/src/keys.ts +2 -2
  434. package/src/lang-from-path.ts +252 -0
  435. package/src/overlays/advisor-config.ts +761 -0
  436. package/src/overlays/agent-activity.ts +113 -0
  437. package/src/overlays/agent-hub-projection.ts +250 -0
  438. package/src/overlays/agent-hub-renderer.ts +281 -0
  439. package/src/overlays/agent-hub-types.ts +74 -0
  440. package/src/overlays/agent-hub.ts +1562 -0
  441. package/src/overlays/agent-transcript-viewer.ts +669 -0
  442. package/src/overlays/agents-hub.ts +1203 -0
  443. package/src/overlays/ask-dialog.ts +1202 -0
  444. package/src/overlays/bordered-loader.ts +41 -0
  445. package/src/overlays/btw-history-panel.ts +591 -0
  446. package/src/overlays/btw-history.ts +33 -0
  447. package/src/overlays/btw-panel.ts +167 -0
  448. package/src/overlays/cleanse-panel.ts +167 -0
  449. package/src/overlays/codex-reset-fireworks.ts +375 -0
  450. package/src/overlays/composer-shape-preview.ts +137 -0
  451. package/src/overlays/composer-shape-registry.ts +82 -0
  452. package/src/overlays/copy-selector.ts +618 -0
  453. package/src/overlays/copy-targets.ts +210 -0
  454. package/src/overlays/error-banner.ts +39 -0
  455. package/src/overlays/extensions/display-text.ts +39 -0
  456. package/src/overlays/extensions/extension-dashboard.ts +645 -0
  457. package/src/overlays/extensions/extension-list.ts +667 -0
  458. package/src/overlays/extensions/inspector-model.ts +484 -0
  459. package/src/overlays/extensions/inspector-panel.ts +669 -0
  460. package/src/overlays/extensions/live-tool-session.ts +67 -0
  461. package/src/overlays/extensions/mcp-runtime.ts +289 -0
  462. package/src/overlays/extensions/state-manager.ts +337 -0
  463. package/src/overlays/extensions/types.ts +208 -0
  464. package/src/overlays/history-search.ts +268 -0
  465. package/src/overlays/hook-editor.ts +272 -0
  466. package/src/overlays/hook-input.ts +84 -0
  467. package/src/overlays/hook-selector.ts +635 -0
  468. package/src/overlays/hub-frame.ts +262 -0
  469. package/src/overlays/login-dialog.ts +231 -0
  470. package/src/overlays/logout-account-selector.ts +115 -0
  471. package/src/overlays/mcp-add-wizard.ts +1436 -0
  472. package/src/overlays/model-browser.ts +1176 -0
  473. package/src/overlays/model-hub.ts +2279 -0
  474. package/src/overlays/model-picker.ts +285 -0
  475. package/src/overlays/model-selector.ts +107 -0
  476. package/src/overlays/move-overlay.ts +197 -0
  477. package/src/overlays/oauth-selector.ts +446 -0
  478. package/src/overlays/omfg-panel.ts +136 -0
  479. package/src/overlays/pause-screen.ts +198 -0
  480. package/src/overlays/plan-review-overlay.ts +1227 -0
  481. package/src/overlays/plan-save-overlay.ts +74 -0
  482. package/src/overlays/plan-toc.ts +139 -0
  483. package/src/overlays/plugin-selector.ts +97 -0
  484. package/src/overlays/plugin-settings.ts +839 -0
  485. package/src/overlays/queue-mode-selector.ts +55 -0
  486. package/src/overlays/reset-usage-selector.ts +170 -0
  487. package/src/overlays/rewind-selector.ts +499 -0
  488. package/src/overlays/running-subagent-badge.ts +19 -0
  489. package/src/overlays/session-account-selector.ts +68 -0
  490. package/src/overlays/session-info-overlay.ts +96 -0
  491. package/src/overlays/session-observer-registry.ts +289 -0
  492. package/src/overlays/session-selector.ts +1137 -0
  493. package/src/overlays/settings-defs.ts +315 -0
  494. package/src/overlays/settings-selector.ts +1415 -0
  495. package/src/overlays/show-images-selector.ts +44 -0
  496. package/src/overlays/snapcompact-shape-preview-doc.md +14 -0
  497. package/src/overlays/snapcompact-shape-preview.ts +192 -0
  498. package/src/overlays/theme-selector.ts +62 -0
  499. package/src/overlays/thinking-selector.ts +51 -0
  500. package/src/overlays/tiny-title-download-progress.ts +102 -0
  501. package/src/overlays/tree-selector.ts +1121 -0
  502. package/src/overlays/usage-dashboard.ts +629 -0
  503. package/src/overlays/usage-display.ts +45 -0
  504. package/src/overlays/usage-row.ts +118 -0
  505. package/src/prompt/attachment-chips.ts +201 -0
  506. package/src/prompt/composer-attachments.ts +280 -0
  507. package/src/prompt/composer-cache.ts +304 -0
  508. package/src/prompt/composer.ts +934 -0
  509. package/src/prompt/custom-editor.ts +1392 -0
  510. package/src/prompt/data/emojis.json +1 -0
  511. package/src/prompt/editor-top-gap.ts +28 -0
  512. package/src/prompt/emoji-autocomplete.ts +285 -0
  513. package/src/prompt/github-ref-autocomplete.ts +75 -0
  514. package/src/prompt/gradient-highlight.ts +101 -0
  515. package/src/prompt/image-format.ts +28 -0
  516. package/src/prompt/image-references.ts +102 -0
  517. package/src/prompt/interactive-context-helpers.ts +126 -0
  518. package/src/prompt/internal-url-autocomplete.ts +155 -0
  519. package/src/prompt/macos-spelling.ts +456 -0
  520. package/src/prompt/magic-keyword-boundary.ts +23 -0
  521. package/src/prompt/magic-keywords.ts +42 -0
  522. package/src/prompt/markdown-prose.ts +245 -0
  523. package/src/prompt/model-mention-autocomplete.ts +94 -0
  524. package/src/prompt/model-mention-syntax.ts +41 -0
  525. package/src/prompt/orchestrate.ts +26 -0
  526. package/src/prompt/prompt-action-autocomplete.ts +337 -0
  527. package/src/prompt/queue-input.ts +132 -0
  528. package/src/prompt/skill-tokens.ts +36 -0
  529. package/src/prompt/tips.txt +27 -0
  530. package/src/prompt/tools-markdown.ts +29 -0
  531. package/src/prompt/ultrathink.ts +26 -0
  532. package/src/prompt/usage-amounts.ts +99 -0
  533. package/src/prompt/video.ts +47 -0
  534. package/src/prompt/welcome.ts +605 -0
  535. package/src/prompt/workflow.ts +26 -0
  536. package/src/render/code-cell.ts +244 -0
  537. package/src/render/file-list.ts +58 -0
  538. package/src/render/hyperlink.ts +192 -0
  539. package/src/render/index.ts +17 -0
  540. package/src/render/output-block.ts +267 -0
  541. package/src/render/output-pane.ts +299 -0
  542. package/src/render/render-utils.ts +1182 -0
  543. package/src/render/sixel.ts +69 -0
  544. package/src/render/status-line.ts +55 -0
  545. package/src/render/tool-card.ts +272 -0
  546. package/src/render/tree-list.ts +188 -0
  547. package/src/render/types.ts +19 -0
  548. package/src/render/utils.ts +109 -0
  549. package/src/render/width-aware-text.ts +60 -0
  550. package/src/setup/lazy.ts +17 -0
  551. package/src/setup/scenes/composer.ts +127 -0
  552. package/src/setup/scenes/glyph.ts +120 -0
  553. package/src/setup/scenes/model.ts +138 -0
  554. package/src/setup/scenes/outro.ts +24 -0
  555. package/src/setup/scenes/providers.ts +107 -0
  556. package/src/setup/scenes/sign-in.ts +373 -0
  557. package/src/setup/scenes/splash.ts +192 -0
  558. package/src/setup/scenes/theme.ts +343 -0
  559. package/src/setup/scenes/types.ts +111 -0
  560. package/src/setup/scenes/web-search.ts +165 -0
  561. package/src/setup/setup-version.ts +11 -0
  562. package/src/setup/startup-splash.ts +107 -0
  563. package/src/setup/wizard-overlay.ts +319 -0
  564. package/src/setup/wizard.ts +101 -0
  565. package/src/status-line/component.ts +3003 -0
  566. package/src/status-line/context-usage.ts +688 -0
  567. package/src/status-line/footer.ts +323 -0
  568. package/src/status-line/git-utils.ts +42 -0
  569. package/src/status-line/host.ts +97 -0
  570. package/src/status-line/index.ts +6 -0
  571. package/src/status-line/loop.ts +28 -0
  572. package/src/status-line/metrics.ts +94 -0
  573. package/src/status-line/presets.ts +107 -0
  574. package/src/status-line/schema.ts +57 -0
  575. package/src/status-line/segments.ts +934 -0
  576. package/src/status-line/separators.ts +55 -0
  577. package/src/status-line/types.ts +227 -0
  578. package/src/stdin-buffer.ts +4 -2
  579. package/src/theme/color.ts +95 -0
  580. package/src/theme/dark.json +95 -0
  581. package/src/theme/defaults/alabaster.json +93 -0
  582. package/src/theme/defaults/amethyst.json +96 -0
  583. package/src/theme/defaults/anthracite.json +93 -0
  584. package/src/theme/defaults/basalt.json +91 -0
  585. package/src/theme/defaults/birch.json +95 -0
  586. package/src/theme/defaults/dark-abyss.json +91 -0
  587. package/src/theme/defaults/dark-arctic.json +104 -0
  588. package/src/theme/defaults/dark-aurora.json +95 -0
  589. package/src/theme/defaults/dark-catppuccin.json +107 -0
  590. package/src/theme/defaults/dark-cavern.json +91 -0
  591. package/src/theme/defaults/dark-celestial.json +106 -0
  592. package/src/theme/defaults/dark-copper.json +95 -0
  593. package/src/theme/defaults/dark-cosmos.json +90 -0
  594. package/src/theme/defaults/dark-cyberpunk.json +102 -0
  595. package/src/theme/defaults/dark-dracula.json +98 -0
  596. package/src/theme/defaults/dark-eclipse.json +91 -0
  597. package/src/theme/defaults/dark-ember.json +95 -0
  598. package/src/theme/defaults/dark-equinox.json +90 -0
  599. package/src/theme/defaults/dark-forest.json +96 -0
  600. package/src/theme/defaults/dark-github.json +105 -0
  601. package/src/theme/defaults/dark-gruvbox.json +112 -0
  602. package/src/theme/defaults/dark-lavender.json +95 -0
  603. package/src/theme/defaults/dark-lunar.json +89 -0
  604. package/src/theme/defaults/dark-midnight.json +95 -0
  605. package/src/theme/defaults/dark-monochrome.json +94 -0
  606. package/src/theme/defaults/dark-monokai.json +98 -0
  607. package/src/theme/defaults/dark-nebula.json +90 -0
  608. package/src/theme/defaults/dark-nord.json +98 -0
  609. package/src/theme/defaults/dark-ocean.json +101 -0
  610. package/src/theme/defaults/dark-one.json +100 -0
  611. package/src/theme/defaults/dark-poimandres.json +115 -0
  612. package/src/theme/defaults/dark-rainforest.json +91 -0
  613. package/src/theme/defaults/dark-reef.json +91 -0
  614. package/src/theme/defaults/dark-retro.json +92 -0
  615. package/src/theme/defaults/dark-rose-pine.json +96 -0
  616. package/src/theme/defaults/dark-sakura.json +95 -0
  617. package/src/theme/defaults/dark-slate.json +95 -0
  618. package/src/theme/defaults/dark-solarized.json +97 -0
  619. package/src/theme/defaults/dark-solstice.json +90 -0
  620. package/src/theme/defaults/dark-starfall.json +91 -0
  621. package/src/theme/defaults/dark-sunset.json +99 -0
  622. package/src/theme/defaults/dark-swamp.json +90 -0
  623. package/src/theme/defaults/dark-synthwave.json +103 -0
  624. package/src/theme/defaults/dark-taiga.json +91 -0
  625. package/src/theme/defaults/dark-terminal.json +95 -0
  626. package/src/theme/defaults/dark-tokyo-night.json +101 -0
  627. package/src/theme/defaults/dark-tundra.json +91 -0
  628. package/src/theme/defaults/dark-twilight.json +91 -0
  629. package/src/theme/defaults/dark-volcanic.json +91 -0
  630. package/src/theme/defaults/graphite.json +92 -0
  631. package/src/theme/defaults/index.ts +201 -0
  632. package/src/theme/defaults/light-arctic.json +107 -0
  633. package/src/theme/defaults/light-aurora-day.json +91 -0
  634. package/src/theme/defaults/light-canyon.json +91 -0
  635. package/src/theme/defaults/light-catppuccin.json +106 -0
  636. package/src/theme/defaults/light-cirrus.json +90 -0
  637. package/src/theme/defaults/light-coral.json +95 -0
  638. package/src/theme/defaults/light-cyberpunk.json +96 -0
  639. package/src/theme/defaults/light-dawn.json +90 -0
  640. package/src/theme/defaults/light-dunes.json +91 -0
  641. package/src/theme/defaults/light-eucalyptus.json +95 -0
  642. package/src/theme/defaults/light-forest.json +100 -0
  643. package/src/theme/defaults/light-frost.json +95 -0
  644. package/src/theme/defaults/light-github.json +115 -0
  645. package/src/theme/defaults/light-glacier.json +91 -0
  646. package/src/theme/defaults/light-gruvbox.json +108 -0
  647. package/src/theme/defaults/light-haze.json +90 -0
  648. package/src/theme/defaults/light-honeycomb.json +95 -0
  649. package/src/theme/defaults/light-lagoon.json +91 -0
  650. package/src/theme/defaults/light-lavender.json +95 -0
  651. package/src/theme/defaults/light-meadow.json +91 -0
  652. package/src/theme/defaults/light-mint.json +95 -0
  653. package/src/theme/defaults/light-monochrome.json +101 -0
  654. package/src/theme/defaults/light-ocean.json +99 -0
  655. package/src/theme/defaults/light-one.json +99 -0
  656. package/src/theme/defaults/light-opal.json +91 -0
  657. package/src/theme/defaults/light-orchard.json +91 -0
  658. package/src/theme/defaults/light-paper.json +95 -0
  659. package/src/theme/defaults/light-poimandres.json +115 -0
  660. package/src/theme/defaults/light-prism.json +90 -0
  661. package/src/theme/defaults/light-retro.json +98 -0
  662. package/src/theme/defaults/light-sand.json +95 -0
  663. package/src/theme/defaults/light-savanna.json +91 -0
  664. package/src/theme/defaults/light-solarized.json +102 -0
  665. package/src/theme/defaults/light-soleil.json +90 -0
  666. package/src/theme/defaults/light-sunset.json +99 -0
  667. package/src/theme/defaults/light-synthwave.json +98 -0
  668. package/src/theme/defaults/light-tokyo-night.json +111 -0
  669. package/src/theme/defaults/light-wetland.json +91 -0
  670. package/src/theme/defaults/light-zenith.json +89 -0
  671. package/src/theme/defaults/limestone.json +94 -0
  672. package/src/theme/defaults/mahogany.json +97 -0
  673. package/src/theme/defaults/marble.json +93 -0
  674. package/src/theme/defaults/obsidian.json +91 -0
  675. package/src/theme/defaults/onyx.json +91 -0
  676. package/src/theme/defaults/pearl.json +93 -0
  677. package/src/theme/defaults/porcelain.json +91 -0
  678. package/src/theme/defaults/quartz.json +96 -0
  679. package/src/theme/defaults/sandstone.json +95 -0
  680. package/src/theme/defaults/titanium.json +90 -0
  681. package/src/theme/index.ts +5 -0
  682. package/src/theme/light.json +93 -0
  683. package/src/theme/loader.ts +200 -0
  684. package/src/theme/mermaid-cache.ts +92 -0
  685. package/src/theme/schema-validation.ts +119 -0
  686. package/src/theme/schema.ts +168 -0
  687. package/src/theme/session-color.ts +253 -0
  688. package/src/theme/shimmer.ts +307 -0
  689. package/src/theme/symbols.ts +1433 -0
  690. package/src/theme/theme-class.ts +787 -0
  691. package/src/theme/theme-schema.json +463 -0
  692. package/src/theme/theme.ts +810 -0
  693. package/src/theme/tui-adapters.ts +339 -0
  694. package/src/thinking.ts +380 -0
  695. package/src/tools/agent-tree.ts +128 -0
  696. package/src/tools/ask.ts +482 -0
  697. package/src/tools/ast-edit.ts +210 -0
  698. package/src/tools/ast-grep.ts +171 -0
  699. package/src/tools/autoresearch.ts +287 -0
  700. package/src/tools/bash-interactive.ts +295 -0
  701. package/src/tools/bash.ts +468 -0
  702. package/src/tools/conflict-detect.ts +77 -0
  703. package/src/tools/debug.ts +167 -0
  704. package/src/tools/default-renderer.ts +172 -0
  705. package/src/tools/edit.ts +1258 -0
  706. package/src/tools/eval-format/code-mode-declarations.ts +61 -0
  707. package/src/tools/eval-format/index.ts +16 -0
  708. package/src/tools/eval-format/javascript.ts +952 -0
  709. package/src/tools/eval-format/python.ts +544 -0
  710. package/src/tools/eval.ts +835 -0
  711. package/src/tools/fetch.ts +226 -0
  712. package/src/tools/gh-format.ts +18 -0
  713. package/src/tools/github.ts +686 -0
  714. package/src/tools/glob.ts +213 -0
  715. package/src/tools/goal.ts +153 -0
  716. package/src/tools/grep.ts +385 -0
  717. package/src/tools/grouped-file-output.ts +211 -0
  718. package/src/tools/hashline-format.ts +59 -0
  719. package/src/tools/hub.ts +1488 -0
  720. package/src/tools/index.ts +71 -0
  721. package/src/tools/json-tree.ts +388 -0
  722. package/src/tools/line-ranges.ts +98 -0
  723. package/src/tools/list-limit.ts +43 -0
  724. package/src/tools/lsp.ts +702 -0
  725. package/src/tools/match-line-format.ts +20 -0
  726. package/src/tools/mcp.ts +309 -0
  727. package/src/tools/memory.ts +220 -0
  728. package/src/tools/output-meta.ts +367 -0
  729. package/src/tools/read.ts +628 -0
  730. package/src/tools/renderer.ts +107 -0
  731. package/src/tools/report-tool-issue.ts +13 -0
  732. package/src/tools/resolve.ts +139 -0
  733. package/src/tools/streaming-output.ts +1576 -0
  734. package/src/tools/subprocess.ts +39 -0
  735. package/src/tools/task-repair-args.ts +118 -0
  736. package/src/tools/task-yield-assembly.ts +147 -0
  737. package/src/tools/task.ts +2110 -0
  738. package/src/tools/terminal-output.ts +153 -0
  739. package/src/tools/think.ts +28 -0
  740. package/src/tools/todo.ts +580 -0
  741. package/src/tools/tool-errors.ts +15 -0
  742. package/src/tools/vibe.ts +420 -0
  743. package/src/tools/web-search.ts +409 -0
  744. package/src/tools/write.ts +511 -0
  745. package/src/tools/xd-url.ts +28 -0
  746. package/src/tools/xdev.ts +201 -0
  747. package/src/tui.ts +57 -4
  748. package/src/utils.ts +8 -0
@@ -0,0 +1,312 @@
1
+ /**
2
+ * Shared utilities and constants for tool renderers.
3
+ *
4
+ * Provides consistent formatting, truncation, and display patterns across all
5
+ * tool renderers to ensure a unified TUI experience.
6
+ */
7
+ import { ThinkingLevel } from "@oh-my-pi/pi-agent-core";
8
+ import type { Ellipsis } from "@oh-my-pi/pi-natives";
9
+ import type { Theme } from "../theme/theme.js";
10
+ import type { Component } from "../tui.js";
11
+ export { Ellipsis } from "@oh-my-pi/pi-natives";
12
+ export { replaceTabs, truncateToWidth, wrapTextWithAnsi } from "../utils.js";
13
+ /** A thinking selector configured as a concrete level or automatic selection. */
14
+ export type ConfiguredThinkingLevel = ThinkingLevel | "auto";
15
+ /**
16
+ * Normalize stray carriage returns in model-authored display text. Some models
17
+ * (observed with GLM via OpenRouter) degenerate into injecting `\r` runs between
18
+ * words inside JSON string values; CommonMark treats a lone `\r` as a line
19
+ * ending, which splatters the text one word per row. CRLF becomes LF, CR runs
20
+ * collapse to a single space — word separators in prose, one indent unit in
21
+ * mangled code previews.
22
+ */
23
+ export declare function sanitizeCarriageReturns(text: string): string;
24
+ /**
25
+ * Sanitize raw ask option labels into unique, action-safe display copies.
26
+ * Degenerate input can sanitize alike (`Retry\rnow`/`Retry now`) or match a
27
+ * runtime action row (`Other (type your own)`); both would answer the wrong
28
+ * row, so colliding entries take a numeric suffix. Order and length are
29
+ * preserved, so indices still align with the original labels for mapping
30
+ * answers and dialog state back. Every ask race participant (local dialog,
31
+ * guest selector) must call this with the same `reservedLabels` so a
32
+ * question renders identically wherever it is answered.
33
+ */
34
+ export declare function disambiguateDisplayLabels(rawLabels: string[], reservedLabels: readonly string[]): string[];
35
+ /** Set the maximum inline image width in terminal columns; zero leaves it uncapped. */
36
+ export declare function setInlineImageMaxColumns(maxColumns: number): void;
37
+ /** Set the maximum inline image height in terminal rows; zero uses the viewport limit. */
38
+ export declare function setInlineImageMaxRows(maxRows: number): void;
39
+ /** Resolve inline image dimension caps from the configured limits and viewport. */
40
+ export declare function resolveImageOptions(): {
41
+ maxWidthCells: number;
42
+ maxHeightCells?: number;
43
+ };
44
+ /** Preview limits for collapsed/expanded views */
45
+ export declare const PREVIEW_LIMITS: {
46
+ /** Lines shown in collapsed view */
47
+ readonly COLLAPSED_LINES: 3;
48
+ /** Lines shown in expanded view */
49
+ readonly EXPANDED_LINES: 12;
50
+ /** Items (files, results) shown in collapsed view */
51
+ readonly COLLAPSED_ITEMS: 8;
52
+ /** Output preview lines in collapsed view */
53
+ readonly OUTPUT_COLLAPSED: 3;
54
+ /** Output preview lines in expanded view */
55
+ readonly OUTPUT_EXPANDED: 10;
56
+ /** Computer script lines shown in collapsed view */
57
+ readonly COMPUTER_CODE_COLLAPSED: 10;
58
+ /** Max hunks shown when collapsed (edit tool) */
59
+ readonly DIFF_COLLAPSED_HUNKS: 8;
60
+ /** Max diff lines shown when collapsed (edit tool) */
61
+ readonly DIFF_COLLAPSED_LINES: 40;
62
+ };
63
+ /** Default number of terminal output rows shown before expansion. */
64
+ export declare const DEFAULT_TERMINAL_PREVIEW_LINES = 10;
65
+ /** Match a Markdown fenced-code opener and capture its indentation and marker. */
66
+ export declare const FENCE_RE: RegExp;
67
+ /** Shared empty link-target lookup for renderers without interactive links. */
68
+ export declare const EMPTY_LINK_TARGETS: ReadonlyMap<string, string>;
69
+ /** Default display width reserved for a resolved model badge. */
70
+ export declare const FEED_MODEL_BADGE_WIDTH = 30;
71
+ /** Set whether feed rows display their resolved model badge. */
72
+ export declare function setFeedModelBadgeEnabled(enabled: boolean): void;
73
+ /** Return whether resolved model badges are enabled. */
74
+ export declare function isFeedModelBadgeEnabled(): boolean;
75
+ /** Compact glyph for a configured thinking level; empty for `inherit` (nothing to show). */
76
+ export declare function thinkingLevelGlyph(level: ConfiguredThinkingLevel, uiTheme: Theme): string;
77
+ /**
78
+ * Compact feed-row prefix: explicit thinking glyph, sanitized model identity,
79
+ * then advisor eye. Keep fitting icons if no model fits; preserve literal identity suffixes.
80
+ */
81
+ export declare function formatFeedModelBadge(modelIdentity: string | undefined, thinkingLevel: ConfiguredThinkingLevel | undefined, advisor: boolean | undefined, uiTheme: Theme, maxWidth?: number): string;
82
+ /** Truncation lengths for different content types */
83
+ export declare const TRUNCATE_LENGTHS: {
84
+ /** Short titles, labels */
85
+ readonly TITLE: 60;
86
+ /** Medium-length content (messages, previews) */
87
+ readonly CONTENT: 80;
88
+ /** Longer content (code, explanations) */
89
+ readonly LONG: 100;
90
+ /** Full line content */
91
+ readonly LINE: 110;
92
+ /** Very short (task previews, badges) */
93
+ readonly SHORT: 40;
94
+ /** Idle recap status line (~40-word LLM reply) */
95
+ readonly RECAP: 280;
96
+ };
97
+ /** Human-readable key currently bound to tool-output expansion, e.g. `Ctrl+O`. */
98
+ export declare function expandKeyHint(): string;
99
+ /** Select a leading line window and count the lines hidden after it. */
100
+ export declare function cappedHeadLines(lines: readonly string[], max: number): {
101
+ lines: readonly string[];
102
+ hidden: number;
103
+ };
104
+ /** Get the first nonblank preview lines, trimmed and width-capped. */
105
+ export declare function getPreviewLines(text: string, maxLines: number, maxLineLen: number, ellipsis?: Ellipsis): string[];
106
+ /**
107
+ * Collapse a possibly multi-line string into a single line, then truncate it to
108
+ * `maxWidth` display cells. {@link truncateToWidth} alone caps width but
109
+ * newlines are zero-width, so multi-line content (markdown briefs, tool args,
110
+ * provider errors) would otherwise spill a single status row across several
111
+ * visual lines. Whitespace runs collapse to one space, so tabs are handled too.
112
+ */
113
+ export declare function previewLine(text: string, maxWidth: number, ellipsis?: Ellipsis): string;
114
+ /**
115
+ * Extract domain from URL, stripping www. prefix.
116
+ */
117
+ export declare function getDomain(url: string): string;
118
+ export { formatAge, formatBytes, formatCount, formatDuration, formatNumber, pluralize } from "@oh-my-pi/pi-utils";
119
+ /**
120
+ * Get the appropriate status icon with color for a given state.
121
+ * Standardizes status icon usage across all renderers.
122
+ */
123
+ export declare function formatStatusIcon(status: ToolUIStatus, theme: Theme, spinnerFrame?: number): string;
124
+ /**
125
+ * Format the expand hint with proper theming.
126
+ * Returns empty string if already expanded or there is nothing more to show.
127
+ */
128
+ export declare function formatExpandHint(theme: Theme, expanded?: boolean, hasMore?: boolean): string;
129
+ /**
130
+ * Format a badge like [done] or [failed] with brackets and color.
131
+ */
132
+ export declare function formatBadge(label: string, color: ToolUIColor, theme: Theme): string;
133
+ /**
134
+ * Build a "more items" suffix line for truncated lists.
135
+ * Uses consistent wording pattern.
136
+ */
137
+ export declare function formatMoreItems(remaining: number, itemType: string): string;
138
+ /** Tail-window height for collapsed command/code previews. */
139
+ export declare function previewWindowRows(): number;
140
+ /**
141
+ * Cap a pre-rendered command preview to a viewport-sized tail window: the end
142
+ * of the command stays visible (it is the live edge while args stream) behind
143
+ * an "… N earlier lines" marker on top. The same window applies while
144
+ * streaming and after completion so the block never jumps; only `expanded`
145
+ * (ctrl+o) uncaps it.
146
+ *
147
+ * `prefix` (raw, e.g. a dim tree gutter) is prepended to the marker line so
148
+ * nested previews stay aligned. `expandHint: false` drops the "ctrl+o: Expand"
149
+ * suffix for callers that cap even inside the expanded view (task recent
150
+ * output), where the hint would point the wrong way.
151
+ */
152
+ export declare function capPreviewLines(lines: string[], theme: Theme, options?: {
153
+ max?: number;
154
+ expanded?: boolean;
155
+ prefix?: string;
156
+ expandHint?: boolean;
157
+ }): string[];
158
+ /** Join metadata with the theme separator and muted styling. */
159
+ export declare function formatMeta(meta: string[], theme: Theme): string;
160
+ /**
161
+ * Split multi-line tool text into TUI-safe display lines.
162
+ * Splits CRLF/LF, collapses stray `\r` progress overwrites to the final
163
+ * segment (mirroring terminal rendering), and expands tabs — so raw
164
+ * subprocess or fetched output (e.g. Windows ssh emitting CRLF, tab-indented
165
+ * web content) can't corrupt the framed block layout with cursor-moving
166
+ * control characters or tab-stop width mismatches.
167
+ */
168
+ export declare function sanitizeDisplayLines(text: string): string[];
169
+ /** Render a sanitized error message with its status icon. */
170
+ export declare function formatErrorMessage(message: string | undefined, theme: Theme): string;
171
+ /**
172
+ * Error message rendered as a subordinate detail line beneath a status header
173
+ * that already carries the error icon (e.g. `✘ Write: <path>`). The header's
174
+ * icon already signals failure, so this omits the redundant error symbol and
175
+ * "Error:" prefix that `formatErrorMessage` adds for standalone single-line
176
+ * errors, indenting two columns to sit under the header title instead.
177
+ */
178
+ export declare function formatErrorDetail(message: string | undefined, theme: Theme): string;
179
+ /** Render a muted empty-state message with a warning icon. */
180
+ export declare function formatEmptyMessage(message: string, theme: Theme): string;
181
+ /** Marker displayed in the gutter of a code frame. */
182
+ export type CodeFrameMarker = "" | " " | "*" | "+" | "-" | ">";
183
+ /** Format a code-frame row with a padded line-number gutter. */
184
+ export declare function formatCodeFrameLine(marker: CodeFrameMarker, lineNumber: string | number, content: string, lineNumberWidth: number): string;
185
+ /** Status states supported by shared tool renderer icons. */
186
+ export type ToolUIStatus = "success" | "done" | "error" | "warning" | "info" | "pending" | "running" | "aborted";
187
+ /** Semantic foreground colors used by tool renderer labels. */
188
+ export type ToolUIColor = "success" | "error" | "warning" | "accent" | "muted";
189
+ /** Presentation options for a tool title. */
190
+ export interface ToolUITitleOptions {
191
+ bold?: boolean;
192
+ }
193
+ /** Render a themed tool title with optional bold emphasis. */
194
+ export declare function formatTitle(label: string, theme: Theme, options?: ToolUITitleOptions): string;
195
+ /** Parsed diagnostic location, severity, and optional source and code metadata. */
196
+ export interface ParsedDiagnostic {
197
+ filePath: string;
198
+ line: number;
199
+ col: number;
200
+ severity: "error" | "warning" | "info" | "hint";
201
+ source?: string;
202
+ message: string;
203
+ code?: string;
204
+ }
205
+ /** Expand tabs in diagnostic text for terminal display. */
206
+ export declare function sanitizeDiagnosticDisplayText(text: string): string;
207
+ /** Parse a diagnostic location and message, including optional source and code. */
208
+ export declare function parseDiagnosticMessage(msg: string): ParsedDiagnostic | null;
209
+ /** Render diagnostic summaries and optionally expanded messages. */
210
+ export declare function formatDiagnostics(diag: {
211
+ errored: boolean;
212
+ summary: string;
213
+ messages: string[];
214
+ }, expanded: boolean, theme: Theme, getLangIcon: (filePath: string) => string, options?: {
215
+ title?: string;
216
+ }): string;
217
+ /** Added and removed line counts and hunk metadata for a diff. */
218
+ export interface DiffStats {
219
+ added: number;
220
+ removed: number;
221
+ hunks: number;
222
+ lines: number;
223
+ }
224
+ /** Count added lines, removed lines, and hunks in a unified diff. */
225
+ export declare function getDiffStats(diffText: string): DiffStats;
226
+ /** Render a compact themed summary of diff counts. */
227
+ export declare function formatDiffStats(added: number, removed: number, hunks: number, theme: Theme): string;
228
+ /** Truncate a unified diff at hunk boundaries within the supplied preview limits. */
229
+ export declare function truncateDiffByHunk(diffText: string, maxHunks: number, maxLines: number, options?: {
230
+ fromTail?: boolean;
231
+ }): {
232
+ text: string;
233
+ hiddenHunks: number;
234
+ hiddenLines: number;
235
+ };
236
+ /** Replace a leading home directory with a portable tilde prefix. */
237
+ export declare function shortenPath(filePath: unknown, homeDir?: string): string;
238
+ /** Shorten embedded home paths; normalize Windows separators unless the caller preserves native error text. */
239
+ export declare function shortenEmbeddedPaths(text: string, homeDir?: string, preserveSeparators?: boolean): string;
240
+ /** Sanitize warning text before showing it in TUI, including embedded home paths. */
241
+ export declare function sanitizeDisplayWarning(text: string): string;
242
+ /** Sanitize and bound warning text before showing it in TUI. */
243
+ export declare function sanitizeDisplayWarnings(warnings: readonly string[]): string[];
244
+ /** Format a tool working directory when it differs from the project directory. */
245
+ export declare function formatToolWorkingDirectory(workdir: string | undefined, projectDir: string): string | undefined;
246
+ /** Wrap text in the theme-specific bracket pair. */
247
+ export declare function wrapBrackets(text: string, theme: Theme): string;
248
+ /** Maximum number of parse errors displayed in expanded details. */
249
+ export declare const PARSE_ERRORS_LIMIT = 20;
250
+ /** Deduplicate parse errors while preserving their original order. */
251
+ export declare function dedupeParseErrors(errors: string[] | undefined): string[];
252
+ /** Format deduplicated parse errors with a bounded detail list. */
253
+ export declare function formatParseErrors(errors: string[], total?: number): string[];
254
+ /**
255
+ * Cap an upstream parse-error list to {@link PARSE_ERRORS_LIMIT} unique entries,
256
+ * preserving the original deduplicated total. Use this at the source so tool
257
+ * details never carry thousands of per-file parse errors into traces or
258
+ * renderers.
259
+ */
260
+ export declare function capParseErrors(errors: string[] | undefined, limit?: number): {
261
+ errors: string[];
262
+ total: number;
263
+ };
264
+ /**
265
+ * Standard width+expand keyed render cache used by every search-style tool
266
+ * renderer. `compute` re-runs only when the cache key changes; the returned
267
+ * Component is the canonical `{ render, invalidate }` pair.
268
+ */
269
+ export declare function createCachedComponent(getExpanded: () => boolean, compute: (width: number, expanded: boolean) => string[], options?: {
270
+ paddingX?: number;
271
+ }): Component;
272
+ /**
273
+ * Single-slot memo for an expensive rendered string (syntax highlighting, diff
274
+ * coloring) keyed by the exact inputs that shape the bytes: theme instance,
275
+ * expanded state, a caller-chosen salt (path/language), and the source content.
276
+ * Field-wise comparison instead of a concatenated key string: a cache hit costs
277
+ * one string value-compare (engines short-circuit on length) and a miss never
278
+ * allocates a key. Comparing the {@link Theme} by reference is sound because
279
+ * theme switches replace the instance wholesale (`setTheme`/`previewTheme`/
280
+ * `setSymbolPreset` in pi-tui theme/theme.ts) — themes are never mutated in
281
+ * place.
282
+ */
283
+ export interface RenderedStringCache {
284
+ theme: Theme | null;
285
+ expanded: boolean;
286
+ salt: string;
287
+ content: string;
288
+ value: string;
289
+ }
290
+ /** Create an empty memo for rendered tool strings. */
291
+ export declare function createRenderedStringCache(): RenderedStringCache;
292
+ /** Drop the memo so the next lookup re-renders (e.g. the render function identity changed). */
293
+ export declare function invalidateRenderedStringCache(cache: RenderedStringCache): void;
294
+ /** Reuse a rendered string while its theme, expansion, content, and salt match. */
295
+ export declare function cachedRenderedString(cache: RenderedStringCache | undefined, theme: Theme, expanded: boolean, salt: string, content: string, render: () => string): string;
296
+ /**
297
+ * Append the indented bullet list of parse errors (capped at
298
+ * {@link PARSE_ERRORS_LIMIT}) to `lines`, with an overflow summary line if the
299
+ * total exceeds the cap. No-op when `parseErrors` is empty.
300
+ */
301
+ export declare function appendParseErrorsBulletList(lines: string[], parseErrors: readonly string[] | undefined, theme: Theme, total?: number): void;
302
+ /**
303
+ * Human-readable summary string for the parse-issues count, capped by
304
+ * {@link PARSE_ERRORS_LIMIT}.
305
+ */
306
+ export declare function formatParseErrorsCountLabel(parseErrors: readonly string[], total?: number): string;
307
+ /**
308
+ * Normalize a path argument that may arrive as a single string, a JSON-encoded
309
+ * string array (`'["a.ts"]'`), or an actual array into a flat `string[]`.
310
+ * Delimited single strings (`"a.ts b.ts"`) remain literal.
311
+ */
312
+ export declare function toPathList(input: string | string[] | undefined): string[];
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Returns whether SIXEL passthrough is explicitly enabled.
3
+ *
4
+ * Both gates must be enabled to preserve SIXEL control sequences:
5
+ * - PI_FORCE_IMAGE_PROTOCOL=sixel
6
+ * - PI_ALLOW_SIXEL_PASSTHROUGH=1
7
+ */
8
+ export declare function isSixelPassthroughEnabled(): boolean;
9
+ /** Returns true when the text contains a SIXEL start sequence. */
10
+ export declare function containsSixelSequence(text: string): boolean;
11
+ /**
12
+ * Returns a boolean mask indicating which lines belong to a SIXEL sequence block.
13
+ * Supports multi-line SIXEL payloads generated by libsixel.
14
+ */
15
+ export declare function getSixelLineMask(lines: readonly string[]): boolean[];
16
+ /** Returns true when the line contains a SIXEL start sequence. */
17
+ export declare function isSixelLine(line: string): boolean;
18
+ /**
19
+ * Sanitizes text while preserving embedded SIXEL sequences when passthrough is enabled.
20
+ */
21
+ export declare function sanitizeWithOptionalSixelPassthrough(text: string, sanitize: (text: string) => string): string;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Standardized status header rendering for tool output.
3
+ */
4
+ import type { Theme, ThemeColor } from "../theme/theme.js";
5
+ import { type ToolUIStatus } from "./render-utils.js";
6
+ /** Status icon, title, description, and metadata for a single header row. */
7
+ export interface StatusLineOptions {
8
+ icon?: ToolUIStatus;
9
+ /** Pre-rendered glyph that replaces the status icon (e.g. a magnifier for
10
+ * search-family tools). Takes precedence over `icon`. */
11
+ iconOverride?: string;
12
+ spinnerFrame?: number;
13
+ title: string;
14
+ titleColor?: ThemeColor;
15
+ description?: string;
16
+ badge?: {
17
+ label: string;
18
+ color: ThemeColor;
19
+ };
20
+ meta?: string[];
21
+ }
22
+ /** Render a single-line status header, flattening multiline fields. */
23
+ export declare function renderStatusLine(options: StatusLineOptions, theme: Theme): string;
@@ -0,0 +1,71 @@
1
+ import type { Theme, ThemeColor } from "../theme/theme.js";
2
+ import type { Component } from "../tui.js";
3
+ import { type StatusLineOptions } from "./status-line.js";
4
+ import type { State } from "./types.js";
5
+ /** Lifecycle distinctions shared by tool call and result cards. */
6
+ export type ToolCardPhase = "pending" | "running" | "partial" | "success" | "warning" | "error" | "info";
7
+ /** Fixed card topology. Framed cards own their border; plain cards flow inline. */
8
+ export type ToolCardVariant = "framed" | "plain";
9
+ /** Lazily rendered slot content. Components retain their own width caches. */
10
+ export type ToolCardContent = readonly string[] | Component | ((width: number) => readonly string[] | Component);
11
+ /** A labeled body section in a tool card. */
12
+ export interface ToolCardSection {
13
+ label?: string;
14
+ content: ToolCardContent;
15
+ separator?: boolean;
16
+ }
17
+ /** Snapshot returned by a ToolCard builder on each render. */
18
+ export interface ToolCardSnapshot {
19
+ /** Pre-rendered header. Prefer `status` for ordinary tool lifecycle rows. */
20
+ header?: string;
21
+ /** Structured status header, rendered by the shared status-line primitive. */
22
+ status?: StatusLineOptions;
23
+ headerMeta?: string;
24
+ phase?: ToolCardPhase;
25
+ body?: ToolCardContent;
26
+ sections?: readonly ToolCardSection[];
27
+ footer?: ToolCardContent;
28
+ applyBg?: boolean;
29
+ contentPaddingLeft?: number;
30
+ contentPaddingRight?: number;
31
+ borderColor?: ThemeColor;
32
+ }
33
+ /** Width information supplied to a ToolCard's lazy snapshot builder. */
34
+ export interface ToolCardBuildContext {
35
+ width: number;
36
+ /** Inner width for the default one-column framed padding. */
37
+ contentWidth: number;
38
+ /** Compute an inner width when this snapshot opts into custom frame padding. */
39
+ contentWidthFor(contentPaddingLeft?: number, contentPaddingRight?: number): number;
40
+ }
41
+ /** Construction options whose topology remains fixed for a card's lifetime. */
42
+ export interface ToolCardOptions {
43
+ variant: ToolCardVariant;
44
+ paddingX?: number;
45
+ paddingY?: number;
46
+ ignoreTight?: boolean;
47
+ onInvalidate?: () => void;
48
+ onDispose?: () => void;
49
+ }
50
+ /** Map transcript lifecycle terminology onto the output frame's visual states. */
51
+ export declare function toolCardState(phase: ToolCardPhase | undefined): State | undefined;
52
+ /**
53
+ * Cached tool-card layout with lazy body/section/footer children. The builder
54
+ * may read mutable streaming state at render time; unchanged snapshots retain
55
+ * their rendered array identity through CachedOutputBlock or Text.
56
+ */
57
+ export declare class ToolCard implements Component {
58
+ #private;
59
+ constructor(theme: Theme, options: ToolCardOptions, build: (context: ToolCardBuildContext) => ToolCardSnapshot);
60
+ render(width: number): readonly string[];
61
+ get debugChildren(): readonly Component[];
62
+ get wantsKeyRelease(): boolean;
63
+ handleInput(data: string): void;
64
+ setIgnoreTight(ignore: boolean): void;
65
+ invalidate(): void;
66
+ dispose(): void;
67
+ }
68
+ /** Construct a lazy framed tool card. */
69
+ export declare function framedToolCard(theme: Theme, build: (context: ToolCardBuildContext) => ToolCardSnapshot, options?: Omit<ToolCardOptions, "variant">): ToolCard;
70
+ /** Construct a lazy inline tool card, optionally state-tinted. */
71
+ export declare function plainToolCard(theme: Theme, build: (context: ToolCardBuildContext) => ToolCardSnapshot, options?: Omit<ToolCardOptions, "variant">): ToolCard;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Hierarchical tree list rendering helper.
3
+ */
4
+ import type { Theme } from "../theme/theme.js";
5
+ import type { TreeContext } from "./types.js";
6
+ /** Tree items and callbacks controlling their presentation. */
7
+ export interface TreeListOptions<T> {
8
+ items: T[];
9
+ expanded?: boolean;
10
+ maxCollapsed?: number;
11
+ /** Strict total-line budget for collapsed mode. When set (and not expanded),
12
+ * rendered item lines plus the trailing summary line must fit within this budget.
13
+ */
14
+ maxCollapsedLines?: number;
15
+ itemType?: string;
16
+ truncateFrom?: "start" | "end";
17
+ /** Caller-supplied trailing summary line. When set (and not expanded),
18
+ * `renderTreeList` renders exactly the provided `items` (the caller has
19
+ * already applied its own selection/cap) and appends this text as the
20
+ * final `└` row, with the last item using `├`. Empty string renders the
21
+ * items with no summary. Bypasses the built-in truncation/`maxCollapsed`
22
+ * path. */
23
+ trailingSummary?: string;
24
+ /** Called once per item with `isLast: false` during budget calculation;
25
+ * line count MUST NOT vary based on `isLast`. */
26
+ renderItem: (item: T, context: TreeContext) => string | string[];
27
+ }
28
+ /** Render tree items with themed branches and optional expansion. */
29
+ export declare function renderTreeList<T>(options: TreeListOptions<T>, theme: Theme): string[];
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Shared types for TUI rendering components.
3
+ */
4
+ import type { Theme } from "../theme/theme.js";
5
+ /** Visual state of a rendered tool output. */
6
+ export type State = "pending" | "running" | "success" | "error" | "warning";
7
+ /** Position and theme context passed to tree item renderers. */
8
+ export interface TreeContext {
9
+ index: number;
10
+ isLast: boolean;
11
+ depth: number;
12
+ theme: Theme;
13
+ prefix: string;
14
+ continuePrefix: string;
15
+ /** Maximum rendered branch/continuation prefix width reserved during pre-rendering. */
16
+ prefixWidth?: number;
17
+ }
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Shared helpers for tool-rendered UI components.
3
+ */
4
+ import type { Theme, ThemeBg } from "../theme/theme.js";
5
+ import type { State } from "./types.js";
6
+ /**
7
+ * Incremental xxHash64 key builder.
8
+ *
9
+ * Chains `Bun.hash.xxHash64` calls via seeding — each fed value
10
+ * mixes into the running hash without intermediate string allocations.
11
+ * Accepts strings, numbers (u32), booleans, bigints, and `undefined`/`null`
12
+ * (hashed as a sentinel byte) natively.
13
+ */
14
+ export declare class Hasher {
15
+ #private;
16
+ /** Feed a string. */
17
+ str(s: string): this;
18
+ /** Feed an unsigned 32-bit integer. */
19
+ u32(n: number): this;
20
+ /** Feed a 64-bit bigint. */
21
+ u64(n: bigint): this;
22
+ /** Feed a boolean (single byte: 1 = true, 0 = false). */
23
+ bool(b: boolean): this;
24
+ /** Feed a value that may be `undefined` or `null` (hashed as a 0xFF sentinel byte). */
25
+ optional(v: string | undefined | null): this;
26
+ /** Return the final hash digest. */
27
+ digest(): bigint;
28
+ }
29
+ /** Render-cache entry used by tool renderers. */
30
+ export interface RenderCache {
31
+ key: bigint;
32
+ lines: string[];
33
+ }
34
+ /** Build indentation and continuing branches for ancestor levels. */
35
+ export declare function buildTreePrefix(ancestors: boolean[], theme: Theme): string;
36
+ /** Return the branch glyph for a final or continuing tree item. */
37
+ export declare function getTreeBranch(isLast: boolean, theme: Theme): string;
38
+ /** Return the continuation prefix for subsequent lines of a tree item. */
39
+ export declare function getTreeContinuePrefix(isLast: boolean, theme: Theme): string;
40
+ /** Pad or truncate visible text to exactly `width` columns and optionally apply a background. */
41
+ export declare function padToWidth(text: string, width: number, bgFn?: (s: string) => string): string;
42
+ /** Resolve a tool output state to its background color token. */
43
+ export declare function getStateBgColor(state: State): ThemeBg;
@@ -0,0 +1,23 @@
1
+ import type { Component } from "../tui.js";
2
+ /**
3
+ * Text whose content is (re)formatted against the actual render width.
4
+ *
5
+ * A plain `Text` receives an already-formatted string and only wraps it at
6
+ * render time, so width-dependent layout (per-line truncation, inline previews)
7
+ * has to be decided before the width is known. Renderers used to cope by
8
+ * hard-capping output lines at a fixed column count (e.g. 80), which truncated
9
+ * to roughly a third of a wide terminal. This defers formatting to
10
+ * `render(width)`: it computes the same content width the inner `Text` uses
11
+ * (mirroring its tight-layout flag so the budget can't desync), hands that to
12
+ * the formatter, and delegates margins/background/vertical padding to the inner
13
+ * `Text`. Lines the formatter caps at `contentWidth` fit exactly and so never
14
+ * wrap.
15
+ */
16
+ export declare class WidthAwareText implements Component {
17
+ #private;
18
+ constructor(format: (contentWidth: number) => string, paddingX?: number, paddingY?: number);
19
+ setCustomBgFn(customBgFn?: (text: string) => string): void;
20
+ setIgnoreTight(ignore: boolean): this;
21
+ invalidate(): void;
22
+ render(width: number): readonly string[];
23
+ }
@@ -0,0 +1,3 @@
1
+ import type { SetupHost } from "./scenes/types.js";
2
+ /** Load and run provider setup without completing onboarding or replaying the welcome intro. */
3
+ export declare function runProviderSetupWizard(ctx: SetupHost): Promise<void>;
@@ -0,0 +1,3 @@
1
+ import type { SetupScene } from "./types.js";
2
+ /** Select and persist the prompt composer layout. */
3
+ export declare const composerSetupScene: SetupScene;
@@ -0,0 +1,3 @@
1
+ import type { SetupScene } from "./types.js";
2
+ /** Preview and persist the terminal glyph preset. */
3
+ export declare const glyphSetupScene: SetupScene;
@@ -0,0 +1,3 @@
1
+ import type { SetupScene } from "./types.js";
2
+ /** Setup step that assigns one available model to the persisted default role. */
3
+ export declare const modelSetupScene: SetupScene;
@@ -0,0 +1,2 @@
1
+ export declare const SETUP_OUTRO_MS = 1200;
2
+ export declare function renderSetupOutro(width: number, height: number, elapsedMs: number): string[];
@@ -0,0 +1,3 @@
1
+ import type { SetupScene } from "./types.js";
2
+ /** Configure provider sign-in and the preferred web search backend. */
3
+ export declare const providersSetupScene: SetupScene;
@@ -0,0 +1,21 @@
1
+ import { type SgrMouseEvent } from "../../mouse.js";
2
+ import type { SetupSceneHost, SetupTab } from "./types.js";
3
+ /**
4
+ * "Sign in" panel: lets the user authenticate one or more model providers via
5
+ * OAuth. Unlike a standalone scene it never auto-advances the wizard — the user
6
+ * may sign in to several providers and then continue with Esc.
7
+ */
8
+ export declare class SignInTab implements SetupTab {
9
+ #private;
10
+ readonly id = "sign-in";
11
+ readonly label = "Sign in";
12
+ constructor(host: SetupSceneHost);
13
+ /** Modal while an OAuth flow is running so the scene won't switch tabs or finish. */
14
+ get modal(): boolean;
15
+ dispose(): void;
16
+ invalidate(): void;
17
+ handleInput(data: string): void;
18
+ /** Forward mouse to the provider selector; pointer is inert during an active login or code prompt. */
19
+ routeMouse(event: SgrMouseEvent, line: number, col: number): void;
20
+ render(width: number, maxLines?: number): readonly string[];
21
+ }
@@ -0,0 +1,11 @@
1
+ export declare const SETUP_SPLASH_MS = 2600;
2
+ export declare const SETUP_TICK_MS = 33;
3
+ export declare function renderStarfield(width: number, height: number, frame: number): string[];
4
+ /**
5
+ * Animated setup splash, in the spirit of the omp landing page: the brand π
6
+ * mark rendered with the live diagonal gradient + shine sweep, rising out of a
7
+ * rippling, gradient-lit water surface, under a faint twinkling starfield. The
8
+ * mark and water share one continuous gradient so the sweep reads across the
9
+ * whole scene; the water surface drifts each frame.
10
+ */
11
+ export declare function renderSetupSplash(width: number, height: number, elapsedMs: number): string[];
@@ -0,0 +1,3 @@
1
+ import type { SetupScene } from "./types.js";
2
+ /** Preview and persist the terminal color theme. */
3
+ export declare const themeSetupScene: SetupScene;