@oh-my-pi/pi-tui 18.2.3 → 18.2.5

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 (750) hide show
  1. package/CHANGELOG.md +29 -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/image.d.ts +18 -16
  92. package/dist/types/components/key-value-list.d.ts +24 -0
  93. package/dist/types/components/layout/geometry.d.ts +73 -0
  94. package/dist/types/components/layout/row.d.ts +55 -0
  95. package/dist/types/components/layout/split-pane.d.ts +80 -0
  96. package/dist/types/components/layout/stack.d.ts +50 -0
  97. package/dist/types/components/menu-selection.d.ts +71 -0
  98. package/dist/types/components/metric.d.ts +44 -0
  99. package/dist/types/components/progress-bar.d.ts +36 -0
  100. package/dist/types/components/scroll-view.d.ts +53 -19
  101. package/dist/types/components/scroll-viewport.d.ts +46 -0
  102. package/dist/types/components/section.d.ts +19 -0
  103. package/dist/types/components/select-list.d.ts +46 -2
  104. package/dist/types/components/settings-list.d.ts +20 -0
  105. package/dist/types/components/table.d.ts +32 -0
  106. package/dist/types/components/tree-view.d.ts +130 -0
  107. package/dist/types/components/wizard-step.d.ts +60 -0
  108. package/dist/types/hotkeys-markdown.d.ts +7 -0
  109. package/dist/types/index.d.ts +17 -0
  110. package/dist/types/keybinding-matchers.d.ts +35 -0
  111. package/dist/types/keys.d.ts +2 -2
  112. package/dist/types/lang-from-path.d.ts +9 -0
  113. package/dist/types/overlays/advisor-config.d.ts +114 -0
  114. package/dist/types/overlays/agent-activity.d.ts +41 -0
  115. package/dist/types/overlays/agent-hub-projection.d.ts +33 -0
  116. package/dist/types/overlays/agent-hub-renderer.d.ts +53 -0
  117. package/dist/types/overlays/agent-hub-types.d.ts +99 -0
  118. package/dist/types/overlays/agent-hub.d.ts +126 -0
  119. package/dist/types/overlays/agent-transcript-viewer.d.ts +71 -0
  120. package/dist/types/overlays/agents-hub.d.ts +72 -0
  121. package/dist/types/overlays/ask-dialog.d.ts +88 -0
  122. package/dist/types/overlays/bordered-loader.d.ts +11 -0
  123. package/dist/types/overlays/btw-history-panel.d.ts +29 -0
  124. package/dist/types/overlays/btw-history.d.ts +17 -0
  125. package/dist/types/overlays/btw-panel.d.ts +26 -0
  126. package/dist/types/overlays/cleanse-panel.d.ts +36 -0
  127. package/dist/types/overlays/codex-reset-fireworks.d.ts +52 -0
  128. package/dist/types/overlays/composer-shape-preview.d.ts +47 -0
  129. package/dist/types/overlays/composer-shape-registry.d.ts +50 -0
  130. package/dist/types/overlays/copy-selector.d.ts +48 -0
  131. package/dist/types/overlays/copy-targets.d.ts +63 -0
  132. package/dist/types/overlays/error-banner.d.ts +13 -0
  133. package/dist/types/overlays/extensions/display-text.d.ts +10 -0
  134. package/dist/types/overlays/extensions/extension-dashboard.d.ts +63 -0
  135. package/dist/types/overlays/extensions/extension-list.d.ts +54 -0
  136. package/dist/types/overlays/extensions/inspector-model.d.ts +109 -0
  137. package/dist/types/overlays/extensions/inspector-panel.d.ts +17 -0
  138. package/dist/types/overlays/extensions/live-tool-session.d.ts +28 -0
  139. package/dist/types/overlays/extensions/mcp-runtime.d.ts +107 -0
  140. package/dist/types/overlays/extensions/state-manager.d.ts +42 -0
  141. package/dist/types/overlays/extensions/types.d.ts +165 -0
  142. package/dist/types/overlays/history-search.d.ts +16 -0
  143. package/dist/types/overlays/hook-editor.d.ts +44 -0
  144. package/dist/types/overlays/hook-input.d.ts +20 -0
  145. package/dist/types/overlays/hook-selector.d.ts +71 -0
  146. package/dist/types/overlays/hub-frame.d.ts +77 -0
  147. package/dist/types/overlays/login-dialog.d.ts +43 -0
  148. package/dist/types/overlays/logout-account-selector.d.ts +15 -0
  149. package/dist/types/overlays/mcp-add-wizard.d.ts +87 -0
  150. package/dist/types/overlays/model-browser.d.ts +213 -0
  151. package/dist/types/overlays/model-hub.d.ts +72 -0
  152. package/dist/types/overlays/model-picker.d.ts +74 -0
  153. package/dist/types/overlays/model-selector.d.ts +52 -0
  154. package/dist/types/overlays/move-overlay.d.ts +39 -0
  155. package/dist/types/overlays/oauth-selector.d.ts +41 -0
  156. package/dist/types/overlays/omfg-panel.d.ts +20 -0
  157. package/dist/types/overlays/pause-screen.d.ts +43 -0
  158. package/dist/types/overlays/plan-review-overlay.d.ts +89 -0
  159. package/dist/types/overlays/plan-save-overlay.d.ts +19 -0
  160. package/dist/types/overlays/plan-toc.d.ts +41 -0
  161. package/dist/types/overlays/plugin-selector.d.ts +28 -0
  162. package/dist/types/overlays/plugin-settings.d.ts +180 -0
  163. package/dist/types/overlays/queue-mode-selector.d.ts +11 -0
  164. package/dist/types/overlays/reset-usage-selector.d.ts +23 -0
  165. package/dist/types/overlays/rewind-selector.d.ts +61 -0
  166. package/dist/types/overlays/running-subagent-badge.d.ts +6 -0
  167. package/dist/types/overlays/session-account-selector.d.ts +24 -0
  168. package/dist/types/overlays/session-info-overlay.d.ts +17 -0
  169. package/dist/types/overlays/session-observer-registry.d.ts +77 -0
  170. package/dist/types/overlays/session-selector.d.ts +131 -0
  171. package/dist/types/overlays/settings-defs.d.ts +119 -0
  172. package/dist/types/overlays/settings-selector.d.ts +73 -0
  173. package/dist/types/overlays/show-images-selector.d.ts +11 -0
  174. package/dist/types/overlays/snapcompact-shape-preview.d.ts +31 -0
  175. package/dist/types/overlays/theme-selector.d.ts +12 -0
  176. package/dist/types/overlays/thinking-selector.d.ts +12 -0
  177. package/dist/types/overlays/tiny-title-download-progress.d.ts +21 -0
  178. package/dist/types/overlays/tree-selector.d.ts +92 -0
  179. package/dist/types/overlays/usage-dashboard.d.ts +94 -0
  180. package/dist/types/overlays/usage-display.d.ts +5 -0
  181. package/dist/types/overlays/usage-row.d.ts +17 -0
  182. package/dist/types/prompt/attachment-chips.d.ts +19 -0
  183. package/dist/types/prompt/composer-attachments.d.ts +71 -0
  184. package/dist/types/prompt/composer-cache.d.ts +37 -0
  185. package/dist/types/prompt/composer.d.ts +159 -0
  186. package/dist/types/prompt/custom-editor.d.ts +261 -0
  187. package/dist/types/prompt/editor-top-gap.d.ts +18 -0
  188. package/dist/types/prompt/emoji-autocomplete.d.ts +16 -0
  189. package/dist/types/prompt/github-ref-autocomplete.d.ts +35 -0
  190. package/dist/types/prompt/gradient-highlight.d.ts +32 -0
  191. package/dist/types/prompt/image-format.d.ts +4 -0
  192. package/dist/types/prompt/image-references.d.ts +26 -0
  193. package/dist/types/prompt/interactive-context-helpers.d.ts +43 -0
  194. package/dist/types/prompt/internal-url-autocomplete.d.ts +56 -0
  195. package/dist/types/prompt/macos-spelling.d.ts +44 -0
  196. package/dist/types/prompt/magic-keyword-boundary.d.ts +9 -0
  197. package/dist/types/prompt/magic-keywords.d.ts +26 -0
  198. package/dist/types/prompt/markdown-prose.d.ts +15 -0
  199. package/dist/types/prompt/model-mention-autocomplete.d.ts +25 -0
  200. package/dist/types/prompt/model-mention-syntax.d.ts +24 -0
  201. package/dist/types/prompt/orchestrate.d.ts +13 -0
  202. package/dist/types/prompt/prompt-action-autocomplete.d.ts +56 -0
  203. package/dist/types/prompt/queue-input.d.ts +8 -0
  204. package/dist/types/prompt/skill-tokens.d.ts +13 -0
  205. package/dist/types/prompt/tools-markdown.d.ts +12 -0
  206. package/dist/types/prompt/ultrathink.d.ts +13 -0
  207. package/dist/types/prompt/usage-amounts.d.ts +26 -0
  208. package/dist/types/prompt/video.d.ts +18 -0
  209. package/dist/types/prompt/welcome.d.ts +83 -0
  210. package/dist/types/prompt/workflow.d.ts +13 -0
  211. package/dist/types/render/code-cell.d.ts +51 -0
  212. package/dist/types/render/file-list.d.ts +22 -0
  213. package/dist/types/render/hyperlink.d.ts +80 -0
  214. package/dist/types/render/index.d.ts +16 -0
  215. package/dist/types/render/output-block.d.ts +54 -0
  216. package/dist/types/render/output-pane.d.ts +80 -0
  217. package/dist/types/render/render-utils.d.ts +312 -0
  218. package/dist/types/render/sixel.d.ts +21 -0
  219. package/dist/types/render/status-line.d.ts +23 -0
  220. package/dist/types/render/tool-card.d.ts +71 -0
  221. package/dist/types/render/tree-list.d.ts +29 -0
  222. package/dist/types/render/types.d.ts +17 -0
  223. package/dist/types/render/utils.d.ts +43 -0
  224. package/dist/types/render/width-aware-text.d.ts +23 -0
  225. package/dist/types/setup/lazy.d.ts +3 -0
  226. package/dist/types/setup/scenes/composer.d.ts +3 -0
  227. package/dist/types/setup/scenes/glyph.d.ts +3 -0
  228. package/dist/types/setup/scenes/model.d.ts +3 -0
  229. package/dist/types/setup/scenes/outro.d.ts +2 -0
  230. package/dist/types/setup/scenes/providers.d.ts +3 -0
  231. package/dist/types/setup/scenes/sign-in.d.ts +21 -0
  232. package/dist/types/setup/scenes/splash.d.ts +11 -0
  233. package/dist/types/setup/scenes/theme.d.ts +3 -0
  234. package/dist/types/setup/scenes/types.d.ts +110 -0
  235. package/dist/types/setup/scenes/web-search.d.ts +22 -0
  236. package/dist/types/setup/setup-version.d.ts +11 -0
  237. package/dist/types/setup/startup-splash.d.ts +9 -0
  238. package/dist/types/setup/wizard-overlay.d.ts +16 -0
  239. package/dist/types/setup/wizard.d.ts +25 -0
  240. package/dist/types/status-line/component.d.ts +182 -0
  241. package/dist/types/status-line/context-usage.d.ts +156 -0
  242. package/dist/types/status-line/footer.d.ts +30 -0
  243. package/dist/types/status-line/git-utils.d.ts +22 -0
  244. package/dist/types/status-line/host.d.ts +129 -0
  245. package/dist/types/status-line/index.d.ts +6 -0
  246. package/dist/types/status-line/loop.d.ts +18 -0
  247. package/dist/types/status-line/metrics.d.ts +21 -0
  248. package/dist/types/status-line/presets.d.ts +3 -0
  249. package/dist/types/status-line/schema.d.ts +15 -0
  250. package/dist/types/status-line/segments.d.ts +5 -0
  251. package/dist/types/status-line/separators.d.ts +3 -0
  252. package/dist/types/status-line/types.d.ts +236 -0
  253. package/dist/types/stdin-buffer.d.ts +4 -0
  254. package/dist/types/theme/color.d.ts +24 -0
  255. package/dist/types/theme/defaults/index.d.ts +9489 -0
  256. package/dist/types/theme/index.d.ts +4 -0
  257. package/dist/types/theme/loader.d.ts +23 -0
  258. package/dist/types/theme/mermaid-cache.d.ts +26 -0
  259. package/dist/types/theme/schema-validation.d.ts +3 -0
  260. package/dist/types/theme/schema.d.ts +25 -0
  261. package/dist/types/theme/session-color.d.ts +43 -0
  262. package/dist/types/theme/shimmer.d.ts +44 -0
  263. package/dist/types/theme/symbols.d.ts +34 -0
  264. package/dist/types/theme/theme-class.d.ts +299 -0
  265. package/dist/types/theme/theme.d.ts +111 -0
  266. package/dist/types/theme/tui-adapters.d.ts +30 -0
  267. package/dist/types/thinking.d.ts +165 -0
  268. package/dist/types/tools/agent-tree.d.ts +36 -0
  269. package/dist/types/tools/ask.d.ts +67 -0
  270. package/dist/types/tools/ast-edit.d.ts +53 -0
  271. package/dist/types/tools/ast-grep.d.ts +52 -0
  272. package/dist/types/tools/autoresearch.d.ts +156 -0
  273. package/dist/types/tools/bash-interactive.d.ts +28 -0
  274. package/dist/types/tools/bash.d.ts +103 -0
  275. package/dist/types/tools/conflict-detect.d.ts +43 -0
  276. package/dist/types/tools/debug.d.ts +60 -0
  277. package/dist/types/tools/default-renderer.d.ts +24 -0
  278. package/dist/types/tools/edit.d.ts +158 -0
  279. package/dist/types/tools/eval-format/code-mode-declarations.d.ts +5 -0
  280. package/dist/types/tools/eval-format/index.d.ts +5 -0
  281. package/dist/types/tools/eval-format/javascript.d.ts +2 -0
  282. package/dist/types/tools/eval-format/python.d.ts +2 -0
  283. package/dist/types/tools/eval.d.ts +94 -0
  284. package/dist/types/tools/fetch.d.ts +42 -0
  285. package/dist/types/tools/gh-format.d.ts +8 -0
  286. package/dist/types/tools/github.d.ts +144 -0
  287. package/dist/types/tools/glob.d.ts +44 -0
  288. package/dist/types/tools/goal.d.ts +42 -0
  289. package/dist/types/tools/grep.d.ts +64 -0
  290. package/dist/types/tools/grouped-file-output.d.ts +71 -0
  291. package/dist/types/tools/hashline-format.d.ts +28 -0
  292. package/dist/types/tools/hub.d.ts +340 -0
  293. package/dist/types/tools/index.d.ts +4 -0
  294. package/dist/types/tools/json-tree.d.ts +59 -0
  295. package/dist/types/tools/line-ranges.d.ts +29 -0
  296. package/dist/types/tools/list-limit.d.ts +15 -0
  297. package/dist/types/tools/lsp.d.ts +72 -0
  298. package/dist/types/tools/match-line-format.d.ts +11 -0
  299. package/dist/types/tools/mcp.d.ts +81 -0
  300. package/dist/types/tools/memory.d.ts +67 -0
  301. package/dist/types/tools/output-meta.d.ts +151 -0
  302. package/dist/types/tools/read.d.ts +139 -0
  303. package/dist/types/tools/renderer.d.ts +98 -0
  304. package/dist/types/tools/report-tool-issue.d.ts +8 -0
  305. package/dist/types/tools/resolve.d.ts +47 -0
  306. package/dist/types/tools/streaming-output.d.ts +282 -0
  307. package/dist/types/tools/subprocess.d.ts +24 -0
  308. package/dist/types/tools/task-repair-args.d.ts +53 -0
  309. package/dist/types/tools/task-yield-assembly.d.ts +20 -0
  310. package/dist/types/tools/task.d.ts +425 -0
  311. package/dist/types/tools/terminal-output.d.ts +8 -0
  312. package/dist/types/tools/think.d.ts +13 -0
  313. package/dist/types/tools/todo.d.ts +118 -0
  314. package/dist/types/tools/tool-errors.d.ts +7 -0
  315. package/dist/types/tools/vibe.d.ts +120 -0
  316. package/dist/types/tools/web-search.d.ts +195 -0
  317. package/dist/types/tools/write.d.ts +76 -0
  318. package/dist/types/tools/xd-url.d.ts +13 -0
  319. package/dist/types/tools/xdev.d.ts +52 -0
  320. package/dist/types/tui.d.ts +18 -0
  321. package/dist/types/utils.d.ts +2 -0
  322. package/package.json +37 -3
  323. package/src/app-keybindings.ts +760 -0
  324. package/src/apps/autoresearch-dashboard.ts +500 -0
  325. package/src/apps/autoresearch-data.ts +64 -0
  326. package/src/apps/cleanse-board.ts +341 -0
  327. package/src/apps/cleanse-picker.ts +57 -0
  328. package/src/apps/debug/log-formatting.ts +53 -0
  329. package/src/apps/debug/log-viewer.ts +868 -0
  330. package/src/apps/debug/protocol-probe.ts +267 -0
  331. package/src/apps/debug/raw-sse-buffer.ts +449 -0
  332. package/src/apps/debug/raw-sse.ts +282 -0
  333. package/src/apps/debug/terminal-info.ts +115 -0
  334. package/src/apps/debug/viewer-frame.ts +174 -0
  335. package/src/apps/git/avatar.ts +52 -0
  336. package/src/apps/git/colors.ts +109 -0
  337. package/src/apps/git/diff-pane.ts +1512 -0
  338. package/src/apps/git/git-tui.ts +889 -0
  339. package/src/apps/git/sidebar.ts +1204 -0
  340. package/src/apps/git/state.ts +113 -0
  341. package/src/apps/if-bench-board.ts +324 -0
  342. package/src/apps/live-visualizer.ts +238 -0
  343. package/src/apps/ps-data.ts +116 -0
  344. package/src/apps/ps-top.ts +422 -0
  345. package/src/apps/session-picker.ts +95 -0
  346. package/src/apps/setup-model-picker.ts +21 -0
  347. package/src/apps/standalone-picker.ts +111 -0
  348. package/src/autocomplete.ts +9 -13
  349. package/src/chat/advisor-message.ts +175 -0
  350. package/src/chat/assistant-message.ts +1214 -0
  351. package/src/chat/background-tan-message.ts +35 -0
  352. package/src/chat/bash-execution.ts +394 -0
  353. package/src/chat/cache-invalidation-marker.ts +94 -0
  354. package/src/chat/chat-transcript-builder.ts +593 -0
  355. package/src/chat/collab-prompt-message.ts +34 -0
  356. package/src/chat/compaction-summary-message.ts +261 -0
  357. package/src/chat/custom-message.ts +23 -0
  358. package/src/chat/display-preferences.ts +24 -0
  359. package/src/chat/eval-execution.ts +172 -0
  360. package/src/chat/execution-shared.ts +113 -0
  361. package/src/chat/extension-types.ts +46 -0
  362. package/src/chat/hook-message.ts +20 -0
  363. package/src/chat/image-loading.ts +122 -0
  364. package/src/chat/late-diagnostics-message.ts +92 -0
  365. package/src/chat/messages.ts +305 -0
  366. package/src/chat/reaction.ts +65 -0
  367. package/src/chat/read-target.ts +7 -0
  368. package/src/chat/read-tool-group.ts +873 -0
  369. package/src/chat/served-model-marker.ts +91 -0
  370. package/src/chat/skill-message.ts +220 -0
  371. package/src/chat/skill-title-input.ts +41 -0
  372. package/src/chat/stripped-tool-calls-placeholder.ts +35 -0
  373. package/src/chat/thinking-display.ts +312 -0
  374. package/src/chat/todo-reminder.ts +33 -0
  375. package/src/chat/tool-execution.ts +1395 -0
  376. package/src/chat/transcript-browser.ts +268 -0
  377. package/src/chat/transcript-entry.ts +96 -0
  378. package/src/chat/transcript-outline.ts +260 -0
  379. package/src/chat/transcript-render-helpers.ts +315 -0
  380. package/src/chat/ttsr-notification.ts +123 -0
  381. package/src/chat/user-message.ts +287 -0
  382. package/src/chrome/chat-block.ts +110 -0
  383. package/src/chrome/collab-qrcode.ts +74 -0
  384. package/src/chrome/context-thresholds.ts +85 -0
  385. package/src/chrome/countdown-timer.ts +74 -0
  386. package/src/chrome/diff.ts +266 -0
  387. package/src/chrome/dynamic-border.ts +36 -0
  388. package/src/chrome/error-block.ts +63 -0
  389. package/src/chrome/form-theme.ts +10 -0
  390. package/src/chrome/format.ts +66 -0
  391. package/src/chrome/index.ts +21 -0
  392. package/src/chrome/keybinding-hints.ts +55 -0
  393. package/src/chrome/live-board.ts +123 -0
  394. package/src/chrome/local-date.ts +20 -0
  395. package/src/chrome/message-divider.ts +51 -0
  396. package/src/chrome/message-frame.ts +164 -0
  397. package/src/chrome/message-notice.ts +103 -0
  398. package/src/chrome/overlay-box.ts +301 -0
  399. package/src/chrome/qrcode.ts +539 -0
  400. package/src/chrome/segment-track.ts +86 -0
  401. package/src/chrome/select-list-mouse-routing.ts +11 -0
  402. package/src/chrome/selector-helpers.ts +119 -0
  403. package/src/chrome/shared.ts +27 -0
  404. package/src/chrome/streaming-panel.ts +72 -0
  405. package/src/chrome/tool-activity.ts +44 -0
  406. package/src/chrome/transcript-container.ts +902 -0
  407. package/src/chrome/transcript-status.ts +27 -0
  408. package/src/chrome/visual-truncate.ts +70 -0
  409. package/src/components/disclosure.ts +235 -0
  410. package/src/components/editor.ts +10 -12
  411. package/src/components/form.ts +566 -0
  412. package/src/components/image.ts +80 -53
  413. package/src/components/input.ts +6 -27
  414. package/src/components/key-value-list.ts +88 -0
  415. package/src/components/layout/geometry.ts +202 -0
  416. package/src/components/layout/row.ts +283 -0
  417. package/src/components/layout/split-pane.ts +349 -0
  418. package/src/components/layout/stack.ts +261 -0
  419. package/src/components/markdown.ts +16 -12
  420. package/src/components/menu-selection.ts +248 -0
  421. package/src/components/metric.ts +132 -0
  422. package/src/components/progress-bar.ts +140 -0
  423. package/src/components/scroll-view.ts +372 -70
  424. package/src/components/scroll-viewport.ts +154 -0
  425. package/src/components/section.ts +77 -0
  426. package/src/components/select-list.ts +238 -159
  427. package/src/components/settings-list.ts +103 -80
  428. package/src/components/table.ts +127 -0
  429. package/src/components/tree-view.ts +481 -0
  430. package/src/components/wizard-step.ts +229 -0
  431. package/src/deccara.ts +1 -3
  432. package/src/hotkeys-markdown.ts +100 -0
  433. package/src/index.ts +18 -0
  434. package/src/keybinding-matchers.ts +99 -0
  435. package/src/keys.ts +2 -2
  436. package/src/lang-from-path.ts +252 -0
  437. package/src/overlays/advisor-config.ts +761 -0
  438. package/src/overlays/agent-activity.ts +113 -0
  439. package/src/overlays/agent-hub-projection.ts +250 -0
  440. package/src/overlays/agent-hub-renderer.ts +281 -0
  441. package/src/overlays/agent-hub-types.ts +74 -0
  442. package/src/overlays/agent-hub.ts +1562 -0
  443. package/src/overlays/agent-transcript-viewer.ts +669 -0
  444. package/src/overlays/agents-hub.ts +1203 -0
  445. package/src/overlays/ask-dialog.ts +1202 -0
  446. package/src/overlays/bordered-loader.ts +41 -0
  447. package/src/overlays/btw-history-panel.ts +591 -0
  448. package/src/overlays/btw-history.ts +33 -0
  449. package/src/overlays/btw-panel.ts +167 -0
  450. package/src/overlays/cleanse-panel.ts +167 -0
  451. package/src/overlays/codex-reset-fireworks.ts +375 -0
  452. package/src/overlays/composer-shape-preview.ts +137 -0
  453. package/src/overlays/composer-shape-registry.ts +82 -0
  454. package/src/overlays/copy-selector.ts +618 -0
  455. package/src/overlays/copy-targets.ts +210 -0
  456. package/src/overlays/error-banner.ts +39 -0
  457. package/src/overlays/extensions/display-text.ts +39 -0
  458. package/src/overlays/extensions/extension-dashboard.ts +645 -0
  459. package/src/overlays/extensions/extension-list.ts +667 -0
  460. package/src/overlays/extensions/inspector-model.ts +484 -0
  461. package/src/overlays/extensions/inspector-panel.ts +669 -0
  462. package/src/overlays/extensions/live-tool-session.ts +67 -0
  463. package/src/overlays/extensions/mcp-runtime.ts +289 -0
  464. package/src/overlays/extensions/state-manager.ts +337 -0
  465. package/src/overlays/extensions/types.ts +208 -0
  466. package/src/overlays/history-search.ts +268 -0
  467. package/src/overlays/hook-editor.ts +272 -0
  468. package/src/overlays/hook-input.ts +84 -0
  469. package/src/overlays/hook-selector.ts +635 -0
  470. package/src/overlays/hub-frame.ts +262 -0
  471. package/src/overlays/login-dialog.ts +231 -0
  472. package/src/overlays/logout-account-selector.ts +115 -0
  473. package/src/overlays/mcp-add-wizard.ts +1436 -0
  474. package/src/overlays/model-browser.ts +1176 -0
  475. package/src/overlays/model-hub.ts +2279 -0
  476. package/src/overlays/model-picker.ts +285 -0
  477. package/src/overlays/model-selector.ts +107 -0
  478. package/src/overlays/move-overlay.ts +197 -0
  479. package/src/overlays/oauth-selector.ts +446 -0
  480. package/src/overlays/omfg-panel.ts +136 -0
  481. package/src/overlays/pause-screen.ts +198 -0
  482. package/src/overlays/plan-review-overlay.ts +1227 -0
  483. package/src/overlays/plan-save-overlay.ts +74 -0
  484. package/src/overlays/plan-toc.ts +139 -0
  485. package/src/overlays/plugin-selector.ts +97 -0
  486. package/src/overlays/plugin-settings.ts +839 -0
  487. package/src/overlays/queue-mode-selector.ts +55 -0
  488. package/src/overlays/reset-usage-selector.ts +170 -0
  489. package/src/overlays/rewind-selector.ts +499 -0
  490. package/src/overlays/running-subagent-badge.ts +19 -0
  491. package/src/overlays/session-account-selector.ts +68 -0
  492. package/src/overlays/session-info-overlay.ts +96 -0
  493. package/src/overlays/session-observer-registry.ts +289 -0
  494. package/src/overlays/session-selector.ts +1137 -0
  495. package/src/overlays/settings-defs.ts +315 -0
  496. package/src/overlays/settings-selector.ts +1415 -0
  497. package/src/overlays/show-images-selector.ts +44 -0
  498. package/src/overlays/snapcompact-shape-preview-doc.md +14 -0
  499. package/src/overlays/snapcompact-shape-preview.ts +192 -0
  500. package/src/overlays/theme-selector.ts +62 -0
  501. package/src/overlays/thinking-selector.ts +51 -0
  502. package/src/overlays/tiny-title-download-progress.ts +102 -0
  503. package/src/overlays/tree-selector.ts +1121 -0
  504. package/src/overlays/usage-dashboard.ts +629 -0
  505. package/src/overlays/usage-display.ts +45 -0
  506. package/src/overlays/usage-row.ts +118 -0
  507. package/src/prompt/attachment-chips.ts +201 -0
  508. package/src/prompt/composer-attachments.ts +280 -0
  509. package/src/prompt/composer-cache.ts +304 -0
  510. package/src/prompt/composer.ts +934 -0
  511. package/src/prompt/custom-editor.ts +1392 -0
  512. package/src/prompt/data/emojis.json +1 -0
  513. package/src/prompt/editor-top-gap.ts +28 -0
  514. package/src/prompt/emoji-autocomplete.ts +285 -0
  515. package/src/prompt/github-ref-autocomplete.ts +75 -0
  516. package/src/prompt/gradient-highlight.ts +101 -0
  517. package/src/prompt/image-format.ts +28 -0
  518. package/src/prompt/image-references.ts +102 -0
  519. package/src/prompt/interactive-context-helpers.ts +126 -0
  520. package/src/prompt/internal-url-autocomplete.ts +155 -0
  521. package/src/prompt/macos-spelling.ts +456 -0
  522. package/src/prompt/magic-keyword-boundary.ts +23 -0
  523. package/src/prompt/magic-keywords.ts +42 -0
  524. package/src/prompt/markdown-prose.ts +245 -0
  525. package/src/prompt/model-mention-autocomplete.ts +94 -0
  526. package/src/prompt/model-mention-syntax.ts +41 -0
  527. package/src/prompt/orchestrate.ts +26 -0
  528. package/src/prompt/prompt-action-autocomplete.ts +337 -0
  529. package/src/prompt/queue-input.ts +132 -0
  530. package/src/prompt/skill-tokens.ts +36 -0
  531. package/src/prompt/tips.txt +27 -0
  532. package/src/prompt/tools-markdown.ts +29 -0
  533. package/src/prompt/ultrathink.ts +26 -0
  534. package/src/prompt/usage-amounts.ts +99 -0
  535. package/src/prompt/video.ts +47 -0
  536. package/src/prompt/welcome.ts +605 -0
  537. package/src/prompt/workflow.ts +26 -0
  538. package/src/render/code-cell.ts +244 -0
  539. package/src/render/file-list.ts +58 -0
  540. package/src/render/hyperlink.ts +192 -0
  541. package/src/render/index.ts +17 -0
  542. package/src/render/output-block.ts +267 -0
  543. package/src/render/output-pane.ts +299 -0
  544. package/src/render/render-utils.ts +1182 -0
  545. package/src/render/sixel.ts +69 -0
  546. package/src/render/status-line.ts +55 -0
  547. package/src/render/tool-card.ts +272 -0
  548. package/src/render/tree-list.ts +188 -0
  549. package/src/render/types.ts +19 -0
  550. package/src/render/utils.ts +109 -0
  551. package/src/render/width-aware-text.ts +60 -0
  552. package/src/setup/lazy.ts +17 -0
  553. package/src/setup/scenes/composer.ts +127 -0
  554. package/src/setup/scenes/glyph.ts +120 -0
  555. package/src/setup/scenes/model.ts +138 -0
  556. package/src/setup/scenes/outro.ts +24 -0
  557. package/src/setup/scenes/providers.ts +107 -0
  558. package/src/setup/scenes/sign-in.ts +373 -0
  559. package/src/setup/scenes/splash.ts +192 -0
  560. package/src/setup/scenes/theme.ts +343 -0
  561. package/src/setup/scenes/types.ts +111 -0
  562. package/src/setup/scenes/web-search.ts +165 -0
  563. package/src/setup/setup-version.ts +11 -0
  564. package/src/setup/startup-splash.ts +107 -0
  565. package/src/setup/wizard-overlay.ts +319 -0
  566. package/src/setup/wizard.ts +101 -0
  567. package/src/status-line/component.ts +3003 -0
  568. package/src/status-line/context-usage.ts +688 -0
  569. package/src/status-line/footer.ts +323 -0
  570. package/src/status-line/git-utils.ts +42 -0
  571. package/src/status-line/host.ts +97 -0
  572. package/src/status-line/index.ts +6 -0
  573. package/src/status-line/loop.ts +28 -0
  574. package/src/status-line/metrics.ts +94 -0
  575. package/src/status-line/presets.ts +107 -0
  576. package/src/status-line/schema.ts +57 -0
  577. package/src/status-line/segments.ts +934 -0
  578. package/src/status-line/separators.ts +55 -0
  579. package/src/status-line/types.ts +227 -0
  580. package/src/stdin-buffer.ts +4 -2
  581. package/src/theme/color.ts +95 -0
  582. package/src/theme/dark.json +95 -0
  583. package/src/theme/defaults/alabaster.json +93 -0
  584. package/src/theme/defaults/amethyst.json +96 -0
  585. package/src/theme/defaults/anthracite.json +93 -0
  586. package/src/theme/defaults/basalt.json +91 -0
  587. package/src/theme/defaults/birch.json +95 -0
  588. package/src/theme/defaults/dark-abyss.json +91 -0
  589. package/src/theme/defaults/dark-arctic.json +104 -0
  590. package/src/theme/defaults/dark-aurora.json +95 -0
  591. package/src/theme/defaults/dark-catppuccin.json +107 -0
  592. package/src/theme/defaults/dark-cavern.json +91 -0
  593. package/src/theme/defaults/dark-celestial.json +106 -0
  594. package/src/theme/defaults/dark-copper.json +95 -0
  595. package/src/theme/defaults/dark-cosmos.json +90 -0
  596. package/src/theme/defaults/dark-cyberpunk.json +102 -0
  597. package/src/theme/defaults/dark-dracula.json +98 -0
  598. package/src/theme/defaults/dark-eclipse.json +91 -0
  599. package/src/theme/defaults/dark-ember.json +95 -0
  600. package/src/theme/defaults/dark-equinox.json +90 -0
  601. package/src/theme/defaults/dark-forest.json +96 -0
  602. package/src/theme/defaults/dark-github.json +105 -0
  603. package/src/theme/defaults/dark-gruvbox.json +112 -0
  604. package/src/theme/defaults/dark-lavender.json +95 -0
  605. package/src/theme/defaults/dark-lunar.json +89 -0
  606. package/src/theme/defaults/dark-midnight.json +95 -0
  607. package/src/theme/defaults/dark-monochrome.json +94 -0
  608. package/src/theme/defaults/dark-monokai.json +98 -0
  609. package/src/theme/defaults/dark-nebula.json +90 -0
  610. package/src/theme/defaults/dark-nord.json +98 -0
  611. package/src/theme/defaults/dark-ocean.json +101 -0
  612. package/src/theme/defaults/dark-one.json +100 -0
  613. package/src/theme/defaults/dark-poimandres.json +115 -0
  614. package/src/theme/defaults/dark-rainforest.json +91 -0
  615. package/src/theme/defaults/dark-reef.json +91 -0
  616. package/src/theme/defaults/dark-retro.json +92 -0
  617. package/src/theme/defaults/dark-rose-pine.json +96 -0
  618. package/src/theme/defaults/dark-sakura.json +95 -0
  619. package/src/theme/defaults/dark-slate.json +95 -0
  620. package/src/theme/defaults/dark-solarized.json +97 -0
  621. package/src/theme/defaults/dark-solstice.json +90 -0
  622. package/src/theme/defaults/dark-starfall.json +91 -0
  623. package/src/theme/defaults/dark-sunset.json +99 -0
  624. package/src/theme/defaults/dark-swamp.json +90 -0
  625. package/src/theme/defaults/dark-synthwave.json +103 -0
  626. package/src/theme/defaults/dark-taiga.json +91 -0
  627. package/src/theme/defaults/dark-terminal.json +95 -0
  628. package/src/theme/defaults/dark-tokyo-night.json +101 -0
  629. package/src/theme/defaults/dark-tundra.json +91 -0
  630. package/src/theme/defaults/dark-twilight.json +91 -0
  631. package/src/theme/defaults/dark-volcanic.json +91 -0
  632. package/src/theme/defaults/graphite.json +92 -0
  633. package/src/theme/defaults/index.ts +201 -0
  634. package/src/theme/defaults/light-arctic.json +107 -0
  635. package/src/theme/defaults/light-aurora-day.json +91 -0
  636. package/src/theme/defaults/light-canyon.json +91 -0
  637. package/src/theme/defaults/light-catppuccin.json +106 -0
  638. package/src/theme/defaults/light-cirrus.json +90 -0
  639. package/src/theme/defaults/light-coral.json +95 -0
  640. package/src/theme/defaults/light-cyberpunk.json +96 -0
  641. package/src/theme/defaults/light-dawn.json +90 -0
  642. package/src/theme/defaults/light-dunes.json +91 -0
  643. package/src/theme/defaults/light-eucalyptus.json +95 -0
  644. package/src/theme/defaults/light-forest.json +100 -0
  645. package/src/theme/defaults/light-frost.json +95 -0
  646. package/src/theme/defaults/light-github.json +115 -0
  647. package/src/theme/defaults/light-glacier.json +91 -0
  648. package/src/theme/defaults/light-gruvbox.json +108 -0
  649. package/src/theme/defaults/light-haze.json +90 -0
  650. package/src/theme/defaults/light-honeycomb.json +95 -0
  651. package/src/theme/defaults/light-lagoon.json +91 -0
  652. package/src/theme/defaults/light-lavender.json +95 -0
  653. package/src/theme/defaults/light-meadow.json +91 -0
  654. package/src/theme/defaults/light-mint.json +95 -0
  655. package/src/theme/defaults/light-monochrome.json +101 -0
  656. package/src/theme/defaults/light-ocean.json +99 -0
  657. package/src/theme/defaults/light-one.json +99 -0
  658. package/src/theme/defaults/light-opal.json +91 -0
  659. package/src/theme/defaults/light-orchard.json +91 -0
  660. package/src/theme/defaults/light-paper.json +95 -0
  661. package/src/theme/defaults/light-poimandres.json +115 -0
  662. package/src/theme/defaults/light-prism.json +90 -0
  663. package/src/theme/defaults/light-retro.json +98 -0
  664. package/src/theme/defaults/light-sand.json +95 -0
  665. package/src/theme/defaults/light-savanna.json +91 -0
  666. package/src/theme/defaults/light-solarized.json +102 -0
  667. package/src/theme/defaults/light-soleil.json +90 -0
  668. package/src/theme/defaults/light-sunset.json +99 -0
  669. package/src/theme/defaults/light-synthwave.json +98 -0
  670. package/src/theme/defaults/light-tokyo-night.json +111 -0
  671. package/src/theme/defaults/light-wetland.json +91 -0
  672. package/src/theme/defaults/light-zenith.json +89 -0
  673. package/src/theme/defaults/limestone.json +94 -0
  674. package/src/theme/defaults/mahogany.json +97 -0
  675. package/src/theme/defaults/marble.json +93 -0
  676. package/src/theme/defaults/obsidian.json +91 -0
  677. package/src/theme/defaults/onyx.json +91 -0
  678. package/src/theme/defaults/pearl.json +93 -0
  679. package/src/theme/defaults/porcelain.json +91 -0
  680. package/src/theme/defaults/quartz.json +96 -0
  681. package/src/theme/defaults/sandstone.json +95 -0
  682. package/src/theme/defaults/titanium.json +90 -0
  683. package/src/theme/index.ts +5 -0
  684. package/src/theme/light.json +93 -0
  685. package/src/theme/loader.ts +200 -0
  686. package/src/theme/mermaid-cache.ts +92 -0
  687. package/src/theme/schema-validation.ts +119 -0
  688. package/src/theme/schema.ts +168 -0
  689. package/src/theme/session-color.ts +253 -0
  690. package/src/theme/shimmer.ts +307 -0
  691. package/src/theme/symbols.ts +1433 -0
  692. package/src/theme/theme-class.ts +787 -0
  693. package/src/theme/theme-schema.json +463 -0
  694. package/src/theme/theme.ts +810 -0
  695. package/src/theme/tui-adapters.ts +339 -0
  696. package/src/thinking.ts +380 -0
  697. package/src/tools/agent-tree.ts +128 -0
  698. package/src/tools/ask.ts +482 -0
  699. package/src/tools/ast-edit.ts +210 -0
  700. package/src/tools/ast-grep.ts +171 -0
  701. package/src/tools/autoresearch.ts +287 -0
  702. package/src/tools/bash-interactive.ts +295 -0
  703. package/src/tools/bash.ts +468 -0
  704. package/src/tools/conflict-detect.ts +77 -0
  705. package/src/tools/debug.ts +167 -0
  706. package/src/tools/default-renderer.ts +172 -0
  707. package/src/tools/edit.ts +1258 -0
  708. package/src/tools/eval-format/code-mode-declarations.ts +61 -0
  709. package/src/tools/eval-format/index.ts +16 -0
  710. package/src/tools/eval-format/javascript.ts +952 -0
  711. package/src/tools/eval-format/python.ts +544 -0
  712. package/src/tools/eval.ts +835 -0
  713. package/src/tools/fetch.ts +226 -0
  714. package/src/tools/gh-format.ts +18 -0
  715. package/src/tools/github.ts +686 -0
  716. package/src/tools/glob.ts +213 -0
  717. package/src/tools/goal.ts +153 -0
  718. package/src/tools/grep.ts +385 -0
  719. package/src/tools/grouped-file-output.ts +211 -0
  720. package/src/tools/hashline-format.ts +59 -0
  721. package/src/tools/hub.ts +1488 -0
  722. package/src/tools/index.ts +71 -0
  723. package/src/tools/json-tree.ts +388 -0
  724. package/src/tools/line-ranges.ts +98 -0
  725. package/src/tools/list-limit.ts +43 -0
  726. package/src/tools/lsp.ts +702 -0
  727. package/src/tools/match-line-format.ts +20 -0
  728. package/src/tools/mcp.ts +309 -0
  729. package/src/tools/memory.ts +220 -0
  730. package/src/tools/output-meta.ts +367 -0
  731. package/src/tools/read.ts +628 -0
  732. package/src/tools/renderer.ts +107 -0
  733. package/src/tools/report-tool-issue.ts +13 -0
  734. package/src/tools/resolve.ts +139 -0
  735. package/src/tools/streaming-output.ts +1576 -0
  736. package/src/tools/subprocess.ts +39 -0
  737. package/src/tools/task-repair-args.ts +118 -0
  738. package/src/tools/task-yield-assembly.ts +147 -0
  739. package/src/tools/task.ts +2110 -0
  740. package/src/tools/terminal-output.ts +153 -0
  741. package/src/tools/think.ts +28 -0
  742. package/src/tools/todo.ts +580 -0
  743. package/src/tools/tool-errors.ts +15 -0
  744. package/src/tools/vibe.ts +420 -0
  745. package/src/tools/web-search.ts +409 -0
  746. package/src/tools/write.ts +511 -0
  747. package/src/tools/xd-url.ts +28 -0
  748. package/src/tools/xdev.ts +201 -0
  749. package/src/tui.ts +70 -8
  750. package/src/utils.ts +8 -0
@@ -0,0 +1,106 @@
1
+ import type { AssistantMessage, ImageContent } from "@oh-my-pi/pi-ai";
2
+ import { type Component, Container } from "../tui.js";
3
+ import { type ImageBudget } from "../components/image.js";
4
+ import type { AssistantThinkingRenderer } from "./extension-types.js";
5
+ import { type CacheInvalidation } from "./cache-invalidation-marker.js";
6
+ import { type ServedModelMismatch } from "./served-model-marker.js";
7
+ import { type TranscriptStableRow } from "../chrome/transcript-container.js";
8
+ /** Test-only: clear the shared gauge so observations don't leak across cases. */
9
+ export declare function resetThinkingSpeedTracker(): void;
10
+ /**
11
+ * Renders an assistant message; streaming content remains mutable until the
12
+ * provider finalizes it because later deltas can revise earlier Markdown.
13
+ * The exception is the leading run of visible thinking blocks: raw thinking
14
+ * only ever appends, so its frozen Markdown prefix publishes as append-only
15
+ * stable rows ({@link AppendOnlyTranscriptBlock}) and can retire into native
16
+ * scrollback while the block still streams — a long reasoning trace is no
17
+ * longer clipped to the mutable viewport.
18
+ */
19
+ export declare class AssistantMessageComponent extends Container {
20
+ #private;
21
+ readonly transcriptBlockMode: "appendOnly";
22
+ setTextColorTransform(transform?: (text: string) => string): void;
23
+ /**
24
+ * Install resolved destinations for model-authored prose links. A fresh
25
+ * theme object is required whenever the map changes because Markdown's
26
+ * render cache keys themes by object identity.
27
+ */
28
+ setLinkTargets(targets: ReadonlyMap<string, string>): void;
29
+ /**
30
+ * Choose the block this reply reacts to from the transcript it is about to
31
+ * join: the nearest preceding reaction-capable block (the user's bubble),
32
+ * looking past turn attachments such as file mentions or injected notices
33
+ * but never past an earlier reply — a continuation after tool calls has
34
+ * nothing to react to. Call before adding this component. An
35
+ * already-resolved reaction is re-applied, and a message rendered verbatim
36
+ * for lack of a target is re-rendered with its reaction stripped.
37
+ */
38
+ pickReactionTarget(transcript: readonly Component[]): void;
39
+ constructor(message?: AssistantMessage, hideThinkingBlock?: boolean, onImageUpdate?: () => void, thinkingRenderers?: readonly AssistantThinkingRenderer[], imageBudget?: ImageBudget, proseOnlyThinking?: boolean, linkTargets?: ReadonlyMap<string, string>);
40
+ /**
41
+ * Show or clear the trailing cache-invalidation divider. Set at `message_end`
42
+ * (live) or during rebuild, once the turn's usage is known and compared
43
+ * against the previous turn's cache footprint.
44
+ */
45
+ setCacheInvalidation(info: CacheInvalidation | undefined): void;
46
+ /**
47
+ * Show or clear the trailing served-model divider. Set once the turn's
48
+ * signed thinking block (or router report) has named the model that actually
49
+ * answered, when it differs from the one requested.
50
+ */
51
+ setServedModelMismatch(info: ServedModelMismatch | undefined): void;
52
+ invalidate(): void;
53
+ setHideThinkingBlock(hide: boolean): void;
54
+ /**
55
+ * Allow or withhold retiring finished lines into native scrollback while the
56
+ * turn is still streaming. Wires the `stream-revision` axis marks as able to
57
+ * revise already-streamed text must withhold it: published bytes go to
58
+ * terminal history once and cannot be retracted, so a later revision would
59
+ * leave the reader with a stale copy. Withholding costs only reachability —
60
+ * the block still retires whole when the turn ends.
61
+ */
62
+ setMidStreamPublication(allowed: boolean): void;
63
+ setProseOnlyThinking(proseOnly: boolean): void;
64
+ dispose(): void;
65
+ /**
66
+ * Toggle suppression of the inline `Error: …` line while the same error is
67
+ * pinned in the banner above the editor. Re-renders so the change is visible.
68
+ */
69
+ setErrorPinned(pinned: boolean): void;
70
+ /**
71
+ * Expand or collapse the inline turn-ending error block so Ctrl+O
72
+ * (tool-output expansion) can reveal a long provider error's hidden tail.
73
+ * Only re-renders when the current message carries a truncatable error, so
74
+ * toggling expansion across the transcript skips ordinary turns. Works even
75
+ * while the error is pinned in the banner: the inline block is drawn (in full)
76
+ * when expanded so the complete body is reachable without sending a message.
77
+ */
78
+ setExpanded(expanded: boolean): void;
79
+ isTranscriptBlockFinalized(): boolean;
80
+ render(width: number): readonly string[];
81
+ /** Width-independent stable identities for the streamed leading thinking run. */
82
+ getTranscriptStableRows(): readonly TranscriptStableRow[];
83
+ /**
84
+ * Drop every published thinking stable row. Called by the transcript
85
+ * container during a visibility-driven destructive replay so the head no
86
+ * longer re-emits reasoning captured while thinking was visible. Safe only
87
+ * because the paired display reset clears the scrollback those rows occupied
88
+ * — see {@link AppendOnlyTranscriptBlock.resetTranscriptStableRows}.
89
+ */
90
+ resetTranscriptStableRows(): void;
91
+ renderTranscriptStableRows(count: number, width: number): readonly string[];
92
+ /** Render completed prose rather than an earlier thinking row under emergency viewport pressure. */
93
+ renderTranscriptBlockEmergencyRow(width: number): string | undefined;
94
+ getTranscriptBlockVersion(): number;
95
+ markTranscriptBlockFinalized(): void;
96
+ applyRetryRecovery(retryRecovery: AssistantMessage["retryRecovery"]): void;
97
+ messagePersistenceKey(): string | undefined;
98
+ /** Toggle rendering for assistant-native and tool-result images. */
99
+ setImagesVisible(visible: boolean): void;
100
+ /** Toggle only images produced by tool results; assistant-native images remain governed by setImagesVisible. */
101
+ setToolResultImagesVisible(visible: boolean): void;
102
+ setToolResultImages(toolCallId: string, images: ImageContent[]): void;
103
+ updateContent(message: AssistantMessage, opts?: {
104
+ transient?: boolean;
105
+ }): void;
106
+ }
@@ -0,0 +1,9 @@
1
+ import type { CustomMessage } from "./messages.js";
2
+ import type { TranscriptBlock } from "../chrome/transcript-container.js";
3
+ /**
4
+ * Single-line transcript pill for a `/tan` background-dispatch breadcrumb,
5
+ * styled as a sibling of the "Background job completed" line. The full
6
+ * system-notice content (the persisted `content`) is for the model only — the
7
+ * user sees one compact line, not the raw `<system-notice>` block.
8
+ */
9
+ export declare function createBackgroundTanDispatchBlock(message: CustomMessage<unknown>): TranscriptBlock;
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Component for displaying bash command execution with streaming output.
3
+ */
4
+ import type { ImageContent } from "@oh-my-pi/pi-ai";
5
+ import { Container, type TUI } from "../tui.js";
6
+ import type { OutputArtifactError } from "../tools/streaming-output.js";
7
+ import type { TruncationMeta } from "../tools/output-meta.js";
8
+ /** PTY size for `!` commands: the execution frame's inner content area. */
9
+ export declare function bashPtyViewport(ui: TUI): {
10
+ cols: number;
11
+ rows: number;
12
+ };
13
+ export declare class BashExecutionComponent extends Container {
14
+ #private;
15
+ constructor(command: string, ui: TUI, excludeFromContext?: boolean);
16
+ /**
17
+ * Transcript finalization contract (see `FinalizableBlock`): the collapsed
18
+ * streaming preview rewrites its tail window every chunk, so the block must
19
+ * stay out of native scrollback until the command completes.
20
+ */
21
+ isTranscriptBlockFinalized(): boolean;
22
+ getTranscriptBlockVersion(): number;
23
+ /**
24
+ * Set whether the output is expanded (shows full output) or collapsed (preview only).
25
+ */
26
+ setExpanded(expanded: boolean): void;
27
+ invalidate(): void;
28
+ appendOutput(chunk: string): void;
29
+ /** Switch to PTY rendering and feed raw terminal bytes through the vterm replay. */
30
+ appendPtyChunk(chunk: string): void;
31
+ setComplete(exitCode: number | undefined, cancelled: boolean, options?: {
32
+ output?: string;
33
+ truncation?: TruncationMeta;
34
+ artifactError?: OutputArtifactError;
35
+ images?: readonly ImageContent[];
36
+ showImages?: boolean;
37
+ }): void;
38
+ render(width: number): readonly string[];
39
+ /**
40
+ * Get the raw output for creating BashExecutionMessage.
41
+ */
42
+ getOutput(): string;
43
+ /**
44
+ * Get the command that was executed.
45
+ */
46
+ getCommand(): string;
47
+ }
@@ -0,0 +1,50 @@
1
+ import type { Usage } from "@oh-my-pi/pi-ai";
2
+ import { MessageDividerComponent } from "../chrome/message-divider.js";
3
+ /** A prompt-cache invalidation detected from a turn's usage. */
4
+ export interface CacheInvalidation {
5
+ /** Prompt tokens the cold turn had to (re)process instead of reading from cache. */
6
+ reprocessedTokens: number;
7
+ }
8
+ /**
9
+ * Decide whether `current` turn lost a *working* prompt cache that `prev` was
10
+ * reusing.
11
+ *
12
+ * The provider reports a warm prefix as `cacheRead`; a model/thinking/tool/
13
+ * system-prompt change (or a history rewrite) breaks the prefix, so the next
14
+ * request reads nothing from cache and re-pays for the whole prompt. We flag
15
+ * only the transition where a demonstrably warm cache goes cold: the previous
16
+ * turn must have actually READ a meaningful prefix back, and this turn's
17
+ * `cacheRead` collapsed to zero while it still reprocessed a non-trivial prompt.
18
+ *
19
+ * Requiring a prior warm read is deliberate. A turn that merely WROTE the prefix
20
+ * (`cacheRead` 0) has not proven the cache is live — that is the session's first
21
+ * request, or a re-write after expiry — so a following cold turn there is
22
+ * expected, not an invalidation the user caused (e.g. a long-running first tool
23
+ * call outliving the provider's 5-minute cache TTL surfaced a spurious "cache
24
+ * miss" right under the opening message). It also collapses a run of consecutive
25
+ * cold turns to the single marker at the moment the cache actually broke, instead
26
+ * of repeating the banner on every turn while it re-warms.
27
+ *
28
+ * Returns `undefined` (no marker) for the first turn, turns whose predecessor
29
+ * never read a warm prefix, tiny contexts, turns that reused any cache, and —
30
+ * crucially — turns on providers with *implicit* best-effort caching. Only an
31
+ * explicit, prefix-controlled cache (Anthropic / Bedrock `cache_control`)
32
+ * re-creates the prefix on a cold turn (`cacheWrite > 0`); implicit caches
33
+ * (Google / OpenAI / Fireworks) report `cacheWrite: 0` and drop `cacheRead` to
34
+ * zero intermittently as routine propagation noise that self-heals the next
35
+ * turn, so flagging it would be a false positive.
36
+ */
37
+ export declare function detectCacheInvalidation(prev: Usage | undefined, current: Usage): CacheInvalidation | undefined;
38
+ /**
39
+ * Slim left-aligned divider rendered after an assistant turn whose request lost
40
+ * the prompt cache. It trails streamed content because usage arrives at message
41
+ * end, after completed rows may already be in native history.
42
+ *
43
+ * Mirrors the compaction divider's banner styling but spans only a short rule
44
+ * plus label (not the full width) and carries no expandable detail:
45
+ *
46
+ * ────────── ⊘ cache miss · 50.9k tokens
47
+ */
48
+ export declare class CacheInvalidationMarkerComponent extends MessageDividerComponent {
49
+ constructor(info: CacheInvalidation);
50
+ }
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Builds transcript components from persisted session message entries — the
3
+ * file/remote-backed counterpart to {@link UiHelpers.addMessageToChat} (which is
4
+ * bound to the live InteractiveModeContext). Used by the fullscreen transcript
5
+ * viewer ({@link AgentTranscriptViewer}) to render a parked subagent / advisor /
6
+ * collab-guest transcript that has no live session.
7
+ *
8
+ * Unlike the old incremental hub sync, {@link ChatTranscriptBuilder.rebuild}
9
+ * always discards prior components and rebuilds the whole transcript from the
10
+ * supplied entries. Re-rendering a growing transcript is therefore O(n) in the
11
+ * entry count, but it cannot duplicate or misorder rows the way incremental
12
+ * component reuse could.
13
+ */
14
+ import type { AgentTool } from "@oh-my-pi/pi-agent-core";
15
+ import { type TUI } from "../tui.js";
16
+ import type { MessageRenderer } from "./extension-types.js";
17
+ import { type TranscriptEntryLike as TranscriptEntry } from "./transcript-entry.js";
18
+ import { TranscriptContainer } from "../chrome/transcript-container.js";
19
+ export interface ChatTranscriptBuilderDeps {
20
+ ui: TUI;
21
+ getTool?: (name: string) => AgentTool | undefined;
22
+ /** Whether the active registry entry came from a built-in factory. */
23
+ isBuiltInTool?: (name: string) => boolean;
24
+ getMessageRenderer?: (customType: string) => MessageRenderer | undefined;
25
+ cwd: string;
26
+ hideThinkingBlock?: () => boolean;
27
+ proseOnlyThinking?: () => boolean;
28
+ /** Session-scoped resolved destinations for model-authored Markdown links. */
29
+ linkTargets?: ReadonlyMap<string, string>;
30
+ requestRender: () => void;
31
+ }
32
+ export declare class ChatTranscriptBuilder {
33
+ #private;
34
+ readonly container: TranscriptContainer;
35
+ constructor(deps: ChatTranscriptBuilderDeps);
36
+ /** Whether the transcript currently holds any rendered rows. */
37
+ get isEmpty(): boolean;
38
+ /** Discard all components and rebuild the whole transcript from `entries`. */
39
+ rebuild(entries: TranscriptEntry[]): void;
40
+ /** Append newly persisted entries without rebuilding already rendered rows. */
41
+ append(entries: TranscriptEntry[]): void;
42
+ /** Toggle tool-output expansion across every expandable component. */
43
+ setExpanded(expanded: boolean): void;
44
+ get expanded(): boolean;
45
+ /** Rendered row where a persisted entry begins, after the container has painted once. */
46
+ rowForEntry(entryId: string): number | undefined;
47
+ /** Tear down components (sealing pending spinners) and clear build state. */
48
+ reset(): void;
49
+ dispose(): void;
50
+ }
@@ -0,0 +1,10 @@
1
+ import { Container } from "../tui.js";
2
+ import type { CollabPromptDetails } from "./messages.js";
3
+ import type { CustomMessage } from "./messages.js";
4
+ /**
5
+ * Renders a collab guest prompt on every participant's transcript: a
6
+ * user-message-styled bubble prefixed with the author's name.
7
+ */
8
+ export declare class CollabPromptMessageComponent extends Container {
9
+ constructor(message: CustomMessage<CollabPromptDetails>);
10
+ }
@@ -0,0 +1,54 @@
1
+ import { type Component } from "../tui.js";
2
+ import type { BranchSummaryMessage, CompactionSummaryMessage, CustomMessage } from "./messages.js";
3
+ interface SummaryDividerOptions {
4
+ label: () => string;
5
+ detailMarkdown: () => string;
6
+ }
7
+ /**
8
+ * Common summary/detail delegate behind the compaction, handoff, and branch
9
+ * banners: the width-aware divider is always shown while the Markdown detail
10
+ * box is constructed lazily only on the first expanded render and retained
11
+ * across collapse/re-expand cycles.
12
+ */
13
+ declare class SummaryMessageComponent implements Component {
14
+ #private;
15
+ constructor(options: SummaryDividerOptions);
16
+ setExpanded(expanded: boolean): void;
17
+ setIgnoreTight(ignore: boolean): this;
18
+ invalidate(): void;
19
+ dispose(): void;
20
+ render(width: number): readonly string[];
21
+ }
22
+ /**
23
+ * Compaction point in the transcript, rendered as a slim horizontal divider:
24
+ *
25
+ * ──────── 📷 remote-compacted · 256K→20K · ctrl+o ────────
26
+ *
27
+ * The label names the maintenance method that fired (remote/soft/handoff/
28
+ * snapcompact; "compacted" for legacy or extension-provided entries) and the
29
+ * before → after context amounts when the entry recorded them. The
30
+ * conversation above the divider stays visible (display transcript keeps
31
+ * full history); only the LLM context was reset. Expanding (ctrl+o) reveals
32
+ * the compaction summary below the divider.
33
+ */
34
+ export declare class CompactionSummaryMessageComponent extends SummaryMessageComponent {
35
+ constructor(message: CompactionSummaryMessage);
36
+ }
37
+ /**
38
+ * Handoff is a compaction strategy too, but it is persisted as a custom message
39
+ * so the LLM sees the handoff-specific developer context. Render it with the
40
+ * same divider affordance as `/compact` instead of the generic `[handoff]` box.
41
+ */
42
+ export declare class HandoffSummaryMessageComponent extends SummaryMessageComponent {
43
+ constructor(message: CustomMessage<unknown>);
44
+ }
45
+ export declare function createHandoffSummaryMessageComponent(message: CustomMessage<unknown>, expanded: boolean): HandoffSummaryMessageComponent | undefined;
46
+ /**
47
+ * A branch summary collapses a side branch back into the main line. Render it
48
+ * with the same slim divider as `/compact` and handoff rather than a `[branch]`
49
+ * box, so every history-collapse point reads as one consistent banner.
50
+ */
51
+ export declare class BranchSummaryMessageComponent extends SummaryMessageComponent {
52
+ constructor(message: BranchSummaryMessage);
53
+ }
54
+ export {};
@@ -0,0 +1,10 @@
1
+ import { FramedMessageComponent } from "../chrome/message-frame.js";
2
+ import type { MessageRenderer } from "./extension-types.js";
3
+ import { type CustomMessage } from "./messages.js";
4
+ /**
5
+ * Component that renders a custom message entry from extensions.
6
+ * Uses distinct styling to differentiate from user messages.
7
+ */
8
+ export declare class CustomMessageComponent extends FramedMessageComponent<CustomMessage<unknown>> {
9
+ constructor(message: CustomMessage<unknown>, customRenderer?: MessageRenderer);
10
+ }
@@ -0,0 +1,13 @@
1
+ /** Process-wide display preferences applied by the host settings hooks. */
2
+ export interface ChatTranscriptDisplayPreferences {
3
+ hideToolActivity: boolean;
4
+ readToolResultPreview: boolean;
5
+ showImages: boolean;
6
+ cacheMissMarker: boolean;
7
+ showTokenUsage: boolean;
8
+ showTurnTime: boolean;
9
+ }
10
+ /** Current transcript display preferences. */
11
+ export declare const chatTranscriptDisplayPreferences: ChatTranscriptDisplayPreferences;
12
+ /** Apply host display preferences without pulling settings into the renderer. */
13
+ export declare function setChatTranscriptDisplayPreferences(preferences: Partial<ChatTranscriptDisplayPreferences>): void;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Component for displaying user-initiated eval execution with streaming output.
3
+ * Shares the same kernel session as the agent's eval tool.
4
+ */
5
+ import { Container, type TUI } from "../tui.js";
6
+ import type { OutputArtifactError } from "../tools/streaming-output.js";
7
+ import type { TruncationMeta } from "../tools/output-meta.js";
8
+ export type EvalExecutionLanguage = "python" | "js";
9
+ export declare class EvalExecutionComponent extends Container {
10
+ #private;
11
+ constructor(code: string, ui: TUI, excludeFromContext?: boolean, language?: EvalExecutionLanguage);
12
+ /**
13
+ * Transcript finalization contract (see `FinalizableBlock`): the collapsed
14
+ * streaming preview rewrites its tail window every chunk, so the block must
15
+ * stay out of native scrollback until the cell completes.
16
+ */
17
+ isTranscriptBlockFinalized(): boolean;
18
+ getTranscriptBlockVersion(): number;
19
+ setExpanded(expanded: boolean): void;
20
+ invalidate(): void;
21
+ appendOutput(chunk: string): void;
22
+ setComplete(exitCode: number | undefined, cancelled: boolean, options?: {
23
+ output?: string;
24
+ truncation?: TruncationMeta;
25
+ artifactError?: OutputArtifactError;
26
+ }): void;
27
+ getOutput(): string;
28
+ getCode(): string;
29
+ }
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Shared rendering primitives for bash/eval execution components.
3
+ *
4
+ * Each helper isolates a piece of structure both components share verbatim
5
+ * (frame layout and post-run status line). Differences in
6
+ * how each component prepares its header, output lines, or sixel masking
7
+ * stay in their respective files.
8
+ */
9
+ import { Loader } from "../components/loader.js";
10
+ import { Text } from "../components/text.js";
11
+ import { Container, type TUI } from "../tui.js";
12
+ import type { OutputArtifactError } from "../tools/streaming-output.js";
13
+ import { type TruncationMeta } from "../tools/output-meta.js";
14
+ /** Output rows shown while an execution is collapsed. */
15
+ export declare const PREVIEW_LINES = 20;
16
+ /** Maximum visible columns retained from an execution output line. */
17
+ export declare const MAX_DISPLAY_LINE_CHARS = 4000;
18
+ /** Clamp execution output by visible width without splitting ANSI sequences. */
19
+ export declare function clampDisplayLine(line: string): string;
20
+ export type ExecutionStatus = "running" | "complete" | "cancelled" | "error";
21
+ /** Theme color keys valid for an execution frame. */
22
+ export type ExecutionColorKey = "dim" | "bashMode" | "pythonMode";
23
+ /**
24
+ * Build the spacer + top border + content container + bottom border scaffold
25
+ * that bash and eval execution components share. The caller appends the
26
+ * header (command vs `>>>` prompt) and the returned loader to
27
+ * `contentContainer` so per-mode order is preserved.
28
+ */
29
+ export declare function buildExecutionFrame(parent: Container, ui: TUI, colorKey: ExecutionColorKey): {
30
+ contentContainer: Container;
31
+ loader: Loader;
32
+ };
33
+ /**
34
+ * Build the post-run status block (hidden-line hint, exit/cancel marker,
35
+ * truncation notice). Returns undefined when there is nothing to display so
36
+ * callers can skip appending a stray Text child.
37
+ */
38
+ export declare function buildStatusFooter(opts: {
39
+ status: ExecutionStatus;
40
+ exitCode: number | undefined;
41
+ truncation: TruncationMeta | undefined;
42
+ artifactError?: OutputArtifactError;
43
+ hiddenLineCount: number;
44
+ /** Suppress the "… N more lines" hint (used when sixel passthrough renders the full output). */
45
+ suppressHiddenCount?: boolean;
46
+ }): Text | undefined;
47
+ /**
48
+ * Derive the post-run status from an exit code + cancellation flag using the
49
+ * same precedence both execution components apply.
50
+ */
51
+ export declare function resolveExecutionStatus(exitCode: number | undefined, cancelled: boolean): ExecutionStatus;
@@ -0,0 +1,28 @@
1
+ import type { Component, TUI } from "../tui.js";
2
+ import type { Theme } from "../theme/theme.js";
3
+ import type { CustomMessage, HookMessage } from "./messages.js";
4
+ export type ExtensionUiComponent = Component & {
5
+ dispose?(): void;
6
+ };
7
+ export type ExtensionUiComponentFactory = (tui: TUI, theme: Theme) => ExtensionUiComponent;
8
+ export type ExtensionWidgetContent = string[] | ExtensionUiComponentFactory | undefined;
9
+ export interface MessageRenderOptions {
10
+ expanded: boolean;
11
+ }
12
+ export type MessageRenderer<T = unknown> = (message: CustomMessage<T>, options: MessageRenderOptions, theme: Theme) => Component | undefined;
13
+ export interface AssistantThinkingRenderContext {
14
+ contentIndex: number;
15
+ thinkingIndex: number;
16
+ text: string;
17
+ requestRender(): void;
18
+ }
19
+ export type AssistantThinkingRenderer = (context: AssistantThinkingRenderContext, theme: Theme) => Component | undefined;
20
+ export interface HookMessageRenderOptions {
21
+ /** Whether the view is expanded */
22
+ expanded: boolean;
23
+ }
24
+ /**
25
+ * Renderer for hook messages.
26
+ * Hooks register these to provide custom TUI rendering for their message types.
27
+ */
28
+ export type HookMessageRenderer<T = unknown> = (message: HookMessage<T>, options: HookMessageRenderOptions, theme: Theme) => Component | undefined;
@@ -0,0 +1,10 @@
1
+ import { FramedMessageComponent } from "../chrome/message-frame.js";
2
+ import type { HookMessageRenderer } from "./extension-types.js";
3
+ import type { HookMessage } from "./messages.js";
4
+ /**
5
+ * Component that renders a custom message entry from hooks.
6
+ * Uses distinct styling to differentiate from user messages.
7
+ */
8
+ export declare class HookMessageComponent extends FramedMessageComponent<HookMessage<unknown>> {
9
+ constructor(message: HookMessage<unknown>, customRenderer?: HookMessageRenderer);
10
+ }
@@ -0,0 +1,46 @@
1
+ import type { ImageContent, Model } from "@oh-my-pi/pi-ai";
2
+ export declare const MAX_IMAGE_INPUT_BYTES: number;
3
+ export declare const SUPPORTED_INPUT_IMAGE_MIME_TYPES: Set<string>;
4
+ /**
5
+ * Ollama and its local-backend family decode image input through llama.cpp /
6
+ * `stb_image`, which is compiled without WebP support, so a WebP upload fails
7
+ * with an opaque HTTP 400. Detect those models so the resize pipeline encodes
8
+ * to PNG/JPEG instead — the automatic equivalent of `OMP_NO_WEBP=1`.
9
+ */
10
+ export declare function modelLacksWebpSupport(model: Pick<Model, "provider" | "api" | "imageInputDecoder"> | undefined): boolean;
11
+ /**
12
+ * `true` when `model` cannot decode WebP, otherwise `undefined` so the
13
+ * `OMP_NO_WEBP` env fallback in {@link resizeImage} still applies. Feed straight
14
+ * into {@link ImageResizeOptions.excludeWebP}.
15
+ */
16
+ export declare function webpExclusionForModel(model: Pick<Model, "provider" | "api"> | undefined): true | undefined;
17
+ export declare class ImageInputTooLargeError extends Error {
18
+ readonly bytes: number;
19
+ readonly maxBytes: number;
20
+ constructor(bytes: number, maxBytes: number);
21
+ }
22
+ /**
23
+ * Raised when image bytes cannot be decoded — a truncated stream, a payload
24
+ * with a hole in the middle, or bytes that are not the container they claim.
25
+ * Failing at ingress keeps them out of the transcript, where they would
26
+ * otherwise be persisted and rejected by the provider on every later request,
27
+ * with no way to resume the session.
28
+ */
29
+ export declare class InvalidImageDataError extends Error {
30
+ readonly reason: string;
31
+ constructor(label: string, mimeType: string, reason: string);
32
+ }
33
+ /**
34
+ * Why an image cannot be decoded, or `null` when it decodes.
35
+ *
36
+ * A full decode is the only check that matches what vision backends accept: a
37
+ * middle-elided PNG keeps its signature, its header, and even a well-formed
38
+ * `IEND` trailer, so header sniffing and chunk-framing walks both pass it —
39
+ * while real-world images that decoders render happily do have odd framing, so
40
+ * a structural walk rejects payloads providers accept. Decoding is the ground
41
+ * truth on both sides. Callers on hot paths must cache the verdict.
42
+ */
43
+ export declare function imageDecodeFailureReason(image: ImageContent): Promise<string | null>;
44
+ /** Converts an image to PNG, rejecting when the runtime cannot decode or encode it. */
45
+ export declare function convertImageToPng(image: ImageContent): Promise<ImageContent>;
46
+ export declare function ensureSupportedImageInput(image: ImageContent): Promise<ImageContent | null>;
@@ -0,0 +1,21 @@
1
+ import { Container } from "../tui.js";
2
+ /** One file's worth of late LSP diagnostics, as carried on the transcript message. */
3
+ export interface LateDiagnosticsFile {
4
+ path?: string;
5
+ summary?: string;
6
+ errored?: boolean;
7
+ messages?: string[];
8
+ }
9
+ /**
10
+ * Renders late LSP diagnostics (arrived after edit/write returned) in the
11
+ * transcript, reusing the same tree renderer the edit/write tools use so the
12
+ * styling stays consistent. Supports the global tool-output expand toggle.
13
+ */
14
+ export declare class LateDiagnosticsMessageComponent extends Container {
15
+ #private;
16
+ constructor(files: LateDiagnosticsFile[]);
17
+ setExpanded(expanded: boolean): void;
18
+ setToolActivityVisible(visible: boolean): void;
19
+ render(width: number): readonly string[];
20
+ invalidate(): void;
21
+ }