@oh-my-pi/pi-tui 18.2.4 → 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 (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,4 @@
1
+ export * from "../lang-from-path.js";
2
+ export * from "./session-color.js";
3
+ export * from "./shimmer.js";
4
+ export * from "./theme.js";
@@ -0,0 +1,23 @@
1
+ import type { ColorMode, ThemeJson } from "./schema.js";
2
+ import { type SymbolPreset } from "./symbols.js";
3
+ import { Theme } from "./theme-class.js";
4
+ export declare function getBuiltinThemes(): Record<string, ThemeJson>;
5
+ export declare function getAvailableThemes(): Promise<string[]>;
6
+ export interface ThemeInfo {
7
+ name: string;
8
+ path: string | undefined;
9
+ }
10
+ export declare function getAvailableThemesWithPaths(): Promise<ThemeInfo[]>;
11
+ export declare function loadThemeJson(name: string): Promise<ThemeJson>;
12
+ /** Load a theme definition synchronously for the first terminal frame. */
13
+ export declare function loadThemeJsonSync(name: string): ThemeJson;
14
+ export interface CreateThemeOptions {
15
+ mode?: ColorMode;
16
+ symbolPresetOverride?: SymbolPreset;
17
+ colorBlindMode?: boolean;
18
+ }
19
+ export declare function createTheme(themeJson: ThemeJson, options?: CreateThemeOptions): Theme;
20
+ export declare function loadTheme(name: string, options?: CreateThemeOptions): Promise<Theme>;
21
+ /** Load and construct a theme synchronously for latency-sensitive first paint. */
22
+ export declare function loadThemeSync(name: string, options?: CreateThemeOptions): Theme;
23
+ export declare function getThemeByName(name: string): Promise<Theme | undefined>;
@@ -0,0 +1,26 @@
1
+ import { type MermaidAsciiRenderOptions } from "@oh-my-pi/pi-utils/mermaid-ascii";
2
+ /**
3
+ * Options controlling how fenced Mermaid source is resolved to terminal ASCII.
4
+ * Extends the raw render options (theme, color mode, spacing, `useAscii`) with a
5
+ * viewport-fitting hint.
6
+ */
7
+ export interface MermaidResolveOptions extends MermaidAsciiRenderOptions {
8
+ /**
9
+ * Maximum display width (terminal columns) the diagram should occupy. A
10
+ * layout that overflows this width is re-rendered in the perpendicular
11
+ * orientation — a wide horizontal chain collapses to a tall vertical column
12
+ * (which the terminal can scroll), and a wide vertical fan-out collapses to a
13
+ * tall horizontal column. Omit to keep the source's own layout regardless of
14
+ * width.
15
+ */
16
+ maxWidth?: number;
17
+ }
18
+ /**
19
+ * Resolve mermaid ASCII from fenced block source text.
20
+ * Returns null when rendering fails, while memoizing failures to avoid repeated work.
21
+ */
22
+ export declare function resolveMermaidAscii(source: string, options?: MermaidResolveOptions): string | null;
23
+ /**
24
+ * Clear the mermaid cache.
25
+ */
26
+ export declare function clearMermaidCache(): void;
@@ -0,0 +1,3 @@
1
+ import type { ThemeJson } from "./schema.js";
2
+ /** Validate a custom theme with the full omptype contract. */
3
+ export declare function validateThemeJson(value: unknown): ThemeJson;
@@ -0,0 +1,25 @@
1
+ import type { SpinnerFramesOverride } from "./symbols.js";
2
+ export type ColorValue = string | number;
3
+ export interface ThemeJson {
4
+ $schema?: string;
5
+ name: string;
6
+ vars?: Record<string, ColorValue>;
7
+ colors: Omit<Record<ThemeColor | ThemeBg, ColorValue>, "thinkingMax"> & {
8
+ thinkingMax?: ColorValue;
9
+ };
10
+ export?: {
11
+ pageBg?: ColorValue;
12
+ cardBg?: ColorValue;
13
+ infoBg?: ColorValue;
14
+ };
15
+ symbols?: {
16
+ preset?: "unicode" | "nerd" | "ascii";
17
+ overrides?: Record<string, string>;
18
+ spinnerFrames?: SpinnerFramesOverride;
19
+ };
20
+ }
21
+ export type ThemeColor = "accent" | "border" | "borderAccent" | "borderMuted" | "success" | "error" | "warning" | "muted" | "dim" | "text" | "thinkingText" | "userMessageText" | "customMessageText" | "customMessageLabel" | "toolTitle" | "toolOutput" | "mdHeading" | "mdLink" | "mdLinkUrl" | "mdCode" | "mdCodeBlock" | "mdCodeBlockBorder" | "mdQuote" | "mdQuoteBorder" | "mdHr" | "mdListBullet" | "toolDiffAdded" | "toolDiffRemoved" | "toolDiffContext" | "syntaxComment" | "syntaxKeyword" | "syntaxFunction" | "syntaxVariable" | "syntaxString" | "syntaxNumber" | "syntaxType" | "syntaxOperator" | "syntaxPunctuation" | "thinkingOff" | "thinkingMinimal" | "thinkingLow" | "thinkingMedium" | "thinkingHigh" | "thinkingXhigh" | "thinkingMax" | "bashMode" | "pythonMode" | "statusLineSep" | "statusLineModel" | "statusLinePath" | "statusLineGitClean" | "statusLineGitDirty" | "statusLineContext" | "statusLineSpend" | "statusLineStaged" | "statusLineDirty" | "statusLineUntracked" | "statusLineOutput" | "statusLineCost" | "statusLineSubagents";
22
+ /** Check if a string is a valid ThemeColor value */
23
+ export declare function isValidThemeColor(color: string): color is ThemeColor;
24
+ export type ThemeBg = "selectedBg" | "userMessageBg" | "customMessageBg" | "toolPendingBg" | "toolSuccessBg" | "toolErrorBg" | "statusLineBg";
25
+ export type ColorMode = "truecolor" | "256color";
@@ -0,0 +1,43 @@
1
+ /** Theme-derived inputs for {@link getSessionAccentHex}; see `Theme.sessionAccentInputs`. */
2
+ export interface SessionAccentTheme {
3
+ /** Theme accent hex; the session accent adopts its OKLCH lightness and chroma. */
4
+ accentHex: string;
5
+ /** Major theme color hexes checked for hue collision. */
6
+ colorHexes: string[];
7
+ /** WCAG luminance of the status-line surface on light themes; undefined on dark themes. */
8
+ surfaceLuminance?: number;
9
+ }
10
+ /**
11
+ * Derive a stable CSS hex accent color from a session name and the active theme.
12
+ *
13
+ * The session name hash picks only the **hue**, from a dark/light-specific
14
+ * hue arc so the accent feels natural for the theme type: the full wheel on
15
+ * dark minus hues whose vividness peak is unreachable under the dark
16
+ * lightness cap (see {@link DARK_HUE_INTERVALS}); cool on light. **Lightness and chroma are carried over from the theme's own accent
17
+ * color**, normalized to the sRGB gamut cusp of each hue: the lightness at
18
+ * which a hue peaks in chroma varies wildly (yellow ≈ 0.97, blue ≈ 0.45), so
19
+ * absolute OKLCH lightness cannot transfer between hues — a pink accent's
20
+ * l≈0.67 re-hued to yellow is mustard, not vivid yellow. Instead the
21
+ * accent's position relative to its own hue's cusp (lightness side and
22
+ * chroma fraction) is re-applied at the target hue's cusp, so the session
23
+ * accent inherits the theme's vividness at every hue. The hue is checked against all
24
+ * theme color hues and shifted if it lands within {@link MIN_HUE_DISTANCE}
25
+ * of one, but the shift walks along the admissible arc so it never drifts
26
+ * into an unrelated or excluded part of the spectrum.
27
+ *
28
+ * On dark themes (`surfaceLuminance` undefined) the carried lightness is
29
+ * clamped to stay visible on dark surfaces. On light themes it is reduced
30
+ * until the accent's luminance clears {@link ACCENT_MIN_CONTRAST} against
31
+ * the actual surface it renders on — legible on near-white *and* mid-light
32
+ * backgrounds.
33
+ *
34
+ * @param name — session name for per-session uniqueness.
35
+ * @param theme — accent hex, collision colors, and surface luminance of the active theme.
36
+ */
37
+ export declare function getSessionAccentHex(name: string, theme: SessionAccentTheme): string;
38
+ /**
39
+ * Convert a hex accent color to an ANSI foreground escape sequence matching
40
+ * the detected terminal color depth.
41
+ * Returns `undefined` if `hex` is nullish or Bun.color conversion fails.
42
+ */
43
+ export declare function getSessionAccentAnsi(hex: string | undefined): string | undefined;
@@ -0,0 +1,44 @@
1
+ import type { Theme, ThemeColor } from "./theme.js";
2
+ type ShimmerTheme = Pick<Theme, "bold" | "fg" | "getFgAnsi">;
3
+ /** Sweep style for animated shimmer text; `disabled` renders every tier as the low color. */
4
+ export type ShimmerMode = "classic" | "kitt" | "disabled";
5
+ /** Select the shimmer sweep style. The host pushes its `display.shimmer` preference here. */
6
+ export declare function setShimmerMode(mode: ShimmerMode): void;
7
+ type ShimmerPaletteTier = ThemeColor | {
8
+ ansi: string;
9
+ };
10
+ /** Three-tier color stack a shimmer character cycles through as the band sweeps. */
11
+ export interface ShimmerPalette {
12
+ /** Color for chars outside / at the edge of the band (intensity < ~0.22). */
13
+ low: ShimmerPaletteTier;
14
+ /** Color for chars approaching the crest (~0.22 ≤ intensity < ~0.65). */
15
+ mid: ShimmerPaletteTier;
16
+ /** Color at the band's crest (intensity ≥ ~0.65). */
17
+ high: ShimmerPaletteTier;
18
+ /** Whether to bold the crest tier. Default `false`. */
19
+ bold?: boolean;
20
+ }
21
+ /** One run of text that shares a palette inside a larger shimmer sweep. */
22
+ export interface ShimmerSegment {
23
+ text: string;
24
+ palette?: ShimmerPalette;
25
+ }
26
+ export declare const DEFAULT_SHIMMER_PALETTE: ShimmerPalette;
27
+ /** Whether shimmer animations are active (any mode other than `disabled`). */
28
+ export declare function shimmerEnabled(): boolean;
29
+ /**
30
+ * Apply a shimmer sweep across one or more segments, treating them as a
31
+ * single continuous string for band positioning. Each segment can supply
32
+ * its own palette so the gradient stays in lockstep while the colors
33
+ * differ.
34
+ *
35
+ * Performance shape (per call, dominant cost):
36
+ * - One `Date.now()` read.
37
+ * - One `compile()` lookup per segment (Symbol-keyed cache slot, hot path
38
+ * skipped after first frame).
39
+ * - One ANSI open/close pair per **run of same-tier chars**, not per char.
40
+ * - No per-char allocations beyond the run buffer.
41
+ */
42
+ export declare function shimmerSegments(segments: readonly ShimmerSegment[], theme: ShimmerTheme): string;
43
+ export declare function shimmerText(text: string, theme: ShimmerTheme, palette?: ShimmerPalette): string;
44
+ export {};
@@ -0,0 +1,34 @@
1
+ export type SymbolPreset = "unicode" | "nerd" | "ascii";
2
+ /**
3
+ * All available symbol keys organized by category.
4
+ */
5
+ export type SymbolKey = "status.success" | "status.error" | "status.warning" | "status.info" | "status.pending" | "status.disabled" | "status.enabled" | "status.running" | "status.shadowed" | "status.aborted" | "status.done" | "nav.cursor" | "nav.selected" | "nav.expand" | "nav.collapse" | "nav.back" | "tree.branch" | "tree.last" | "tree.vertical" | "tree.horizontal" | "tree.hook" | "progress.filled" | "progress.empty" | "context.speculation" | "context.compaction" | "boxRound.topLeft" | "boxRound.topRight" | "boxRound.bottomLeft" | "boxRound.bottomRight" | "boxRound.horizontal" | "boxRound.vertical" | "boxDotted.horizontal" | "boxDotted.vertical" | "boxSharp.topLeft" | "boxSharp.topRight" | "boxSharp.bottomLeft" | "boxSharp.bottomRight" | "boxSharp.horizontal" | "boxSharp.vertical" | "boxSharp.cross" | "boxSharp.teeDown" | "boxSharp.teeUp" | "boxSharp.teeRight" | "boxSharp.teeLeft" | "sep.powerline" | "sep.powerlineThin" | "sep.powerlineLeft" | "sep.powerlineRight" | "sep.powerlineThinLeft" | "sep.powerlineThinRight" | "sep.powerlineCapLeft" | "sep.block" | "sep.space" | "sep.asciiLeft" | "sep.asciiRight" | "sep.dot" | "sep.slash" | "sep.pipe" | "icon.model" | "icon.plan" | "icon.prewalk" | "icon.goal" | "icon.pause" | "icon.loop" | "icon.folder" | "icon.worktree" | "icon.search" | "icon.scratchFolder" | "icon.file" | "icon.git" | "icon.branch" | "icon.pr" | "icon.pin" | "icon.tokens" | "icon.context" | "icon.cost" | "icon.subscription" | "icon.advisor" | "icon.advisorClosed" | "icon.time" | "icon.omp" | "icon.esc" | "icon.ghost" | "icon.agents" | "icon.job" | "icon.cache" | "icon.cacheMiss" | "icon.input" | "icon.output" | "icon.throughput" | "icon.intelligence" | "icon.host" | "icon.session" | "icon.package" | "icon.warning" | "icon.rewind" | "icon.auto" | "icon.fast" | "icon.extensionSkill" | "icon.extensionTool" | "icon.extensionSlashCommand" | "icon.extensionMcp" | "icon.extensionRule" | "icon.extensionHook" | "icon.extensionPrompt" | "icon.extensionContextFile" | "icon.extensionInstruction" | "icon.vimNormal" | "icon.vimInsert" | "icon.vimVisual" | "icon.vimVisualLine" | "cmd.action" | "cmd.prompt" | "cmd.extension" | "cmd.settings" | "cmd.gear" | "cmd.shield" | "cmd.wave" | "cmd.compass" | "cmd.inbox" | "cmd.swap" | "cmd.expand" | "cmd.computer" | "cmd.eye" | "cmd.todo" | "cmd.stats" | "cmd.news" | "cmd.keyboard" | "cmd.export" | "cmd.clipboard" | "cmd.share" | "cmd.broadcast" | "cmd.globe" | "cmd.copy" | "cmd.plus" | "cmd.restart" | "cmd.eraser" | "cmd.trash" | "cmd.compress" | "cmd.vibrate" | "cmd.handoff" | "cmd.history" | "cmd.question" | "cmd.rocket" | "cmd.stethoscope" | "cmd.redo" | "cmd.bug" | "cmd.memory" | "cmd.pencil" | "cmd.folderMove" | "cmd.folderPlus" | "cmd.folderMinus" | "cmd.hammer" | "cmd.power" | "cmd.cart" | "icon.mic" | "icon.camera" | "thinking.minimal" | "thinking.low" | "thinking.medium" | "thinking.high" | "thinking.xhigh" | "thinking.max" | "thinking.autoPending" | "checkbox.checked" | "checkbox.unchecked" | "radio.selected" | "radio.unselected" | "format.bullet" | "format.dash" | "format.bracketLeft" | "format.bracketRight" | "md.quoteBorder" | "md.hrChar" | "md.bullet" | "md.colorSwatch" | "advisor.rail" | "skill.rail" | "lang.default" | "lang.typescript" | "lang.javascript" | "lang.python" | "lang.rust" | "lang.go" | "lang.java" | "lang.c" | "lang.cpp" | "lang.csharp" | "lang.ruby" | "lang.julia" | "lang.php" | "lang.swift" | "lang.kotlin" | "lang.shell" | "lang.html" | "lang.css" | "lang.json" | "lang.yaml" | "lang.markdown" | "lang.sql" | "lang.docker" | "lang.lua" | "lang.text" | "lang.env" | "lang.toml" | "lang.xml" | "lang.ini" | "lang.conf" | "lang.log" | "lang.csv" | "lang.tsv" | "lang.image" | "lang.pdf" | "lang.archive" | "lang.binary" | "chip.image" | "chip.video" | "chip.paste" | "tab.appearance" | "tab.model" | "tab.interaction" | "tab.context" | "tab.files" | "tab.shell" | "tab.tools" | "tab.memory" | "tab.tasks" | "tab.providers" | "tool.write" | "tool.edit" | "tool.bash" | "tool.ssh" | "tool.lsp" | "tool.gh" | "tool.webSearch" | "tool.exa" | "tool.browser" | "tool.eval" | "tool.debug" | "tool.mcp" | "tool.job" | "tool.launch" | "tool.task" | "tool.todo" | "tool.memory" | "tool.ask" | "tool.resolve" | "tool.review" | "tool.goal" | "tool.irc" | "tool.delete" | "tool.move";
6
+ export type SymbolMap = Record<SymbolKey, string>;
7
+ /**
8
+ * Icon vocabulary for slash-command autocomplete type indicators. Each name
9
+ * resolves through `Theme.cmd` to either a dedicated `cmd.*` symbol or an
10
+ * existing `icon.*` symbol shared with the rest of the UI.
11
+ */
12
+ export type SlashCommandIconName = "action" | "prompt" | "extension" | "settings" | "gear" | "shield" | "wave" | "compass" | "inbox" | "swap" | "expand" | "computer" | "eye" | "todo" | "stats" | "news" | "keyboard" | "export" | "clipboard" | "share" | "broadcast" | "globe" | "copy" | "plus" | "restart" | "eraser" | "trash" | "compress" | "vibrate" | "handoff" | "history" | "question" | "rocket" | "stethoscope" | "redo" | "bug" | "memory" | "pencil" | "folderMove" | "folderPlus" | "folderMinus" | "hammer" | "power" | "cart" | "model" | "plan" | "prewalk" | "goal" | "pause" | "loop" | "session" | "jobs" | "gauge" | "context" | "agents" | "branch" | "tree" | "signIn" | "signOut" | "advisor" | "host" | "package" | "fast" | "voice" | "tools" | "rule" | "skill" | "mcp" | "pin";
13
+ export declare const SYMBOL_PRESETS: Record<SymbolPreset, SymbolMap>;
14
+ export type SpinnerType = "status" | "activity";
15
+ export declare const SPINNER_FRAMES: Record<SymbolPreset, Record<SpinnerType, string[]>>;
16
+ /**
17
+ * Shape accepted by `themeJson.symbols.spinnerFrames`. A flat array applies to
18
+ * both spinner types; an object lets a theme override `status` and/or
19
+ * `activity` independently. Anything not specified falls back to the symbol
20
+ * preset's default frames.
21
+ */
22
+ export type SpinnerFramesOverride = string[] | {
23
+ status?: string[];
24
+ activity?: string[];
25
+ };
26
+ export declare function normalizeSpinnerFramesOverride(value: SpinnerFramesOverride | undefined): Partial<Record<SpinnerType, string[]>>;
27
+ /**
28
+ * Get available symbol presets.
29
+ */
30
+ export declare function getAvailableSymbolPresets(): SymbolPreset[];
31
+ /**
32
+ * Check if a string is a valid symbol preset.
33
+ */
34
+ export declare function isValidSymbolPreset(preset: string): preset is SymbolPreset;
@@ -0,0 +1,299 @@
1
+ import { type ColorMode, type ThemeBg, type ThemeColor } from "./schema.js";
2
+ import type { SessionAccentTheme } from "./session-color.js";
3
+ import { type SlashCommandIconName, type SpinnerType, type SymbolKey, type SymbolPreset } from "./symbols.js";
4
+ export declare class Theme {
5
+ #private;
6
+ private readonly mode;
7
+ private readonly symbolPreset;
8
+ /**
9
+ * Perceptual luma (0..1) of the status-line background — used to classify the
10
+ * theme light/dark. Undefined when it can't be resolved. Classified against the
11
+ * status line (the surface session accents render on) rather than the chat bubble
12
+ * (`userMessageBg`), which some themes (e.g. `porcelain`) style dark on an
13
+ * otherwise-light theme.
14
+ */
15
+ readonly statusLineLuminance: number | undefined;
16
+ constructor(fgColors: Record<ThemeColor, string | number>, bgColors: Record<ThemeBg, string | number>, mode: ColorMode, symbolPreset: SymbolPreset, symbolOverrides: Partial<Record<SymbolKey, string>>, spinnerFramesOverrides?: Partial<Record<SpinnerType, string[]>>);
17
+ /** True when the active theme has a light status-line background. */
18
+ get isLight(): boolean;
19
+ /**
20
+ * Surface luminance to size session accents against on light themes; undefined on
21
+ * dark themes so accents stay vivid. Pass straight to `getSessionAccentHex`.
22
+ */
23
+ get accentSurfaceLuminance(): number | undefined;
24
+ /**
25
+ * Get the resolved CSS hex string for a foreground theme color.
26
+ */
27
+ getColorHex(color: ThemeColor): string;
28
+ /**
29
+ * Get the resolved CSS hex string for a background theme color.
30
+ */
31
+ getBgHex(color: ThemeBg): string;
32
+ /**
33
+ * Get all foreground and background theme colors as CSS hex strings.
34
+ * Skips colors resolved to the default terminal color (unstyled).
35
+ */
36
+ getAllThemeColorHexes(): string[];
37
+ /**
38
+ * Get the most visually dominant theme colors as CSS hex strings — accent,
39
+ * border, success, error, warning, heading, link, diff markers, etc.
40
+ * These are the colors the session accent could visually clash with.
41
+ * Skips colors resolved to the default terminal color (unstyled).
42
+ */
43
+ getMajorThemeColorHexes(): string[];
44
+ /**
45
+ * Get the resolved CSS hex string for the theme's accent color.
46
+ */
47
+ getAccentColorHex(): string;
48
+ /**
49
+ * Theme-derived inputs for `getSessionAccentHex`: the accent hex whose
50
+ * OKLCH weight session accents adopt, the major colors they must not
51
+ * hue-collide with, and the light-theme surface luminance to contrast
52
+ * against.
53
+ */
54
+ get sessionAccentInputs(): SessionAccentTheme;
55
+ fg(color: ThemeColor, text: string): string;
56
+ /** Apply a foreground, replacing terminal-default tokens with the theme's contrast-safe fallback. */
57
+ fgResolved(color: ThemeColor, text: string): string;
58
+ bg(color: ThemeBg, text: string): string;
59
+ /**
60
+ * Apply a background fill that resumes after nested full/background resets.
61
+ *
62
+ * Composer rows contain styled text and cursor escapes; a normal background
63
+ * wrapper would otherwise stop at the first nested reset.
64
+ */
65
+ bgFill(color: ThemeBg, text: string): string;
66
+ /**
67
+ * Apply a foreground over a controlled background, choosing a contrast-safe
68
+ * fallback only when the theme token requests the terminal default and
69
+ * reapplying it after nested full/foreground resets.
70
+ */
71
+ fgOnBg(color: ThemeColor, background: ThemeBg, text: string): string;
72
+ bold(text: string): string;
73
+ italic(text: string): string;
74
+ underline(text: string): string;
75
+ strikethrough(text: string): string;
76
+ inverse(text: string): string;
77
+ getFgAnsi(color: ThemeColor): string;
78
+ getBgAnsi(color: ThemeBg): string;
79
+ /**
80
+ * Foreground ANSI for text rendered over a controlled theme background.
81
+ * Explicit theme colors win; terminal-default tokens become black or near-white.
82
+ */
83
+ getFgOnBgAnsi(color: ThemeColor, background: ThemeBg): string;
84
+ /**
85
+ * Foreground ANSI for text drawn **on top of** `fillColor` used as a solid
86
+ * background (e.g. a powerline chip). Picks near-black or near-white by the
87
+ * fill's perceived luminance (Rec. 601 luma) so the label stays legible on
88
+ * both bright and dark fills, across light and dark themes.
89
+ *
90
+ * Reads the RGB out of the already-resolved truecolor escape; when the fill
91
+ * is encoded as a 256-palette index (limited terminals) the RGB is
92
+ * unavailable, so it falls back to the theme `text` color.
93
+ */
94
+ getContrastFgAnsi(fillColor: ThemeColor): string;
95
+ getColorMode(): ColorMode;
96
+ /** Border color for a thinking/effort level name (`off`…`max`); unknown levels fall back to `thinkingOff`. */
97
+ getThinkingBorderColor(level: string): (str: string) => string;
98
+ getBashModeBorderColor(): (str: string) => string;
99
+ getPythonModeBorderColor(): (str: string) => string;
100
+ /**
101
+ * Get a symbol by key.
102
+ */
103
+ symbol(key: SymbolKey): string;
104
+ /**
105
+ * Get a symbol styled with a color.
106
+ */
107
+ styledSymbol(key: SymbolKey, color: ThemeColor): string;
108
+ /**
109
+ * Get the current symbol preset.
110
+ */
111
+ getSymbolPreset(): SymbolPreset;
112
+ get status(): {
113
+ success: string;
114
+ error: string;
115
+ warning: string;
116
+ info: string;
117
+ pending: string;
118
+ disabled: string;
119
+ enabled: string;
120
+ running: string;
121
+ shadowed: string;
122
+ aborted: string;
123
+ done: string;
124
+ };
125
+ get nav(): {
126
+ cursor: string;
127
+ selected: string;
128
+ expand: string;
129
+ collapse: string;
130
+ back: string;
131
+ };
132
+ get tree(): {
133
+ branch: string;
134
+ last: string;
135
+ vertical: string;
136
+ horizontal: string;
137
+ hook: string;
138
+ };
139
+ get progress(): {
140
+ filled: string;
141
+ empty: string;
142
+ };
143
+ get boxRound(): {
144
+ topLeft: string;
145
+ topRight: string;
146
+ bottomLeft: string;
147
+ bottomRight: string;
148
+ horizontal: string;
149
+ vertical: string;
150
+ cross: string;
151
+ teeDown: string;
152
+ teeUp: string;
153
+ teeRight: string;
154
+ teeLeft: string;
155
+ };
156
+ /**
157
+ * Dotted rules/verticals for transient selection outlines. Corners come from
158
+ * {@link boxRound} — Unicode has no rounded dotted corner glyphs.
159
+ */
160
+ get boxDotted(): {
161
+ horizontal: string;
162
+ vertical: string;
163
+ };
164
+ get boxSharp(): {
165
+ topLeft: string;
166
+ topRight: string;
167
+ bottomLeft: string;
168
+ bottomRight: string;
169
+ horizontal: string;
170
+ vertical: string;
171
+ cross: string;
172
+ teeDown: string;
173
+ teeUp: string;
174
+ teeRight: string;
175
+ teeLeft: string;
176
+ };
177
+ get sep(): {
178
+ powerline: string;
179
+ powerlineThin: string;
180
+ powerlineLeft: string;
181
+ powerlineRight: string;
182
+ powerlineThinLeft: string;
183
+ powerlineThinRight: string;
184
+ powerlineCapLeft: string;
185
+ block: string;
186
+ space: string;
187
+ asciiLeft: string;
188
+ asciiRight: string;
189
+ dot: string;
190
+ slash: string;
191
+ pipe: string;
192
+ };
193
+ get icon(): {
194
+ model: string;
195
+ plan: string;
196
+ prewalk: string;
197
+ goal: string;
198
+ pause: string;
199
+ loop: string;
200
+ folder: string;
201
+ worktree: string;
202
+ scratchFolder: string;
203
+ file: string;
204
+ git: string;
205
+ branch: string;
206
+ pr: string;
207
+ pin: string;
208
+ tokens: string;
209
+ context: string;
210
+ cost: string;
211
+ subscription: string;
212
+ advisor: string;
213
+ advisorClosed: string;
214
+ time: string;
215
+ omp: string;
216
+ esc: string;
217
+ ghost: string;
218
+ agents: string;
219
+ job: string;
220
+ cache: string;
221
+ cacheMiss: string;
222
+ input: string;
223
+ output: string;
224
+ throughput: string;
225
+ host: string;
226
+ session: string;
227
+ package: string;
228
+ warning: string;
229
+ rewind: string;
230
+ auto: string;
231
+ fast: string;
232
+ extensionSkill: string;
233
+ extensionTool: string;
234
+ extensionSlashCommand: string;
235
+ extensionMcp: string;
236
+ extensionRule: string;
237
+ extensionHook: string;
238
+ extensionPrompt: string;
239
+ extensionContextFile: string;
240
+ extensionInstruction: string;
241
+ vimNormal: string;
242
+ vimInsert: string;
243
+ vimVisual: string;
244
+ vimVisualLine: string;
245
+ mic: string;
246
+ camera: string;
247
+ };
248
+ /** Slash-command type-indicator glyphs for the autocomplete icon column. */
249
+ get cmd(): Record<SlashCommandIconName, string>;
250
+ get thinking(): {
251
+ minimal: string;
252
+ low: string;
253
+ medium: string;
254
+ high: string;
255
+ xhigh: string;
256
+ max: string;
257
+ autoPending: string;
258
+ };
259
+ get checkbox(): {
260
+ checked: string;
261
+ unchecked: string;
262
+ };
263
+ get radio(): {
264
+ selected: string;
265
+ unselected: string;
266
+ };
267
+ get format(): {
268
+ bullet: string;
269
+ dash: string;
270
+ bracketLeft: string;
271
+ bracketRight: string;
272
+ };
273
+ get md(): {
274
+ quoteBorder: string;
275
+ hrChar: string;
276
+ bullet: string;
277
+ colorSwatch: string;
278
+ };
279
+ /**
280
+ * Default spinner frames (status spinner).
281
+ */
282
+ get spinnerFrames(): string[];
283
+ /**
284
+ * Get spinner frames by type.
285
+ */
286
+ getSpinnerFrames(type?: SpinnerType): string[];
287
+ /**
288
+ * Get language icon for a language name.
289
+ * Maps common language names to their corresponding symbol keys.
290
+ */
291
+ getLangIcon(lang: string | undefined): string;
292
+ /**
293
+ * Language icon tinted with the language's brand color (see
294
+ * {@link LANG_BRAND_COLORS}). Falls back to the muted theme color for
295
+ * languages without a brand entry, and returns the bare (possibly empty)
296
+ * icon when the active symbol preset has none.
297
+ */
298
+ getLangIconStyled(lang: string | undefined): string;
299
+ }
@@ -0,0 +1,111 @@
1
+ import type { Terminal } from "../terminal.js";
2
+ import type { ThemeColor } from "./schema.js";
3
+ import type { SymbolPreset } from "./symbols.js";
4
+ import type { Theme } from "./theme-class.js";
5
+ export { getAvailableThemes, getAvailableThemesWithPaths, getThemeByName, type ThemeInfo } from "./loader.js";
6
+ export { isValidThemeColor, type ThemeBg, type ThemeColor } from "./schema.js";
7
+ export { getAvailableSymbolPresets, isValidSymbolPreset, type SpinnerType, type SymbolKey, type SymbolPreset, } from "./symbols.js";
8
+ export { Theme } from "./theme-class.js";
9
+ export { createHighlightStream, getEditorTheme, getMarkdownTheme, getSelectListTheme, getSettingsListTheme, getSymbolTheme, highlightCode, setMarkdownMermaidRendering, warmHighlighter, } from "./tui-adapters.js";
10
+ /** Active theme; imports remain live across initialization, previews, and theme switches. */
11
+ export declare var theme: Theme;
12
+ type ThemeBinding = (value: Theme) => void;
13
+ /** @internal Mirror assignments into bundled module bindings without replacing the UI change listener. */
14
+ export declare function bindTheme(binding: ThemeBinding): () => void;
15
+ /** Get the name of the currently active theme. */
16
+ export declare function getCurrentThemeName(): string | undefined;
17
+ /** Returns unstyled `text` before `initTheme()` assigns the global theme; use only for early-render paths. */
18
+ export declare function fgOrPlain(color: ThemeColor, text: string, styledText?: string): string;
19
+ export interface ThemeChangeEvent {
20
+ /** Preview/presentation-only changes should repaint live UI without replacing native scrollback. */
21
+ ephemeral?: boolean;
22
+ }
23
+ /** Initialize the active theme synchronously before the first terminal paint. */
24
+ export declare function initThemeSync(symbolPreset?: SymbolPreset, colorBlindMode?: boolean, darkTheme?: string, lightTheme?: string): void;
25
+ /** Ensure the module-local theme is initialized before synchronous component work. */
26
+ export declare function ensureThemeSync(): void;
27
+ /** Initialize the default theme only when no earlier prepaint initialized one. */
28
+ export declare function ensureTheme(): Promise<void>;
29
+ export declare function initTheme(enableWatcher?: boolean, symbolPreset?: SymbolPreset, colorBlindMode?: boolean, darkTheme?: string, lightTheme?: string): Promise<void>;
30
+ export declare function setTheme(name: string, enableWatcher?: boolean): Promise<{
31
+ success: boolean;
32
+ error?: string;
33
+ }>;
34
+ export declare function previewTheme(name: string, event?: ThemeChangeEvent): Promise<{
35
+ success: boolean;
36
+ error?: string;
37
+ }>;
38
+ /**
39
+ * Enable auto-detection mode, switching to the appropriate dark/light theme.
40
+ */
41
+ export declare function enableAutoTheme(event?: ThemeChangeEvent): void;
42
+ /**
43
+ * Update the theme mappings for auto-detection mode.
44
+ * When a dark/light mapping changes and auto-detection is active, re-evaluate the theme.
45
+ */
46
+ export declare function setAutoThemeMapping(mode: "dark" | "light", themeName: string): void;
47
+ /**
48
+ * Called when the terminal detects a dark/light appearance change.
49
+ * The terminal layer queries OSC 11 (background color) and computes luminance;
50
+ * Mode 2031 notifications trigger re-queries rather than providing the value directly.
51
+ */
52
+ export declare function onTerminalAppearanceChange(mode: "dark" | "light", event?: ThemeChangeEvent): void;
53
+ export declare function setThemeInstance(themeInstance: Theme): void;
54
+ /**
55
+ * Set the symbol preset override, recreating the theme with the new preset.
56
+ */
57
+ export declare function setSymbolPreset(preset: SymbolPreset): Promise<void>;
58
+ /**
59
+ * Get the current symbol preset override.
60
+ */
61
+ export declare function getSymbolPresetOverride(): SymbolPreset | undefined;
62
+ /**
63
+ * Set color blind mode, recreating the theme with the new setting.
64
+ * When enabled, uses blue instead of green for diff additions.
65
+ */
66
+ export declare function setColorBlindMode(enabled: boolean): Promise<void>;
67
+ /**
68
+ * Get the current color blind mode setting.
69
+ */
70
+ export declare function getColorBlindMode(): boolean;
71
+ export declare function onThemeChange(callback: (event: ThemeChangeEvent) => void): () => void;
72
+ /**
73
+ * Monotonic counter bumped on any theme-affecting change that should invalidate
74
+ * cached renders: theme swaps and reloads (including the invalid-theme dark
75
+ * fallback), theme previews, symbol-preset changes, and color-blind-mode
76
+ * changes — everything that routes through {@link notifyThemeChange}. Consumers
77
+ * key cached renders on it so the next render re-shapes their output.
78
+ */
79
+ export declare function getThemeEpoch(): number;
80
+ type MacOSAppearanceReprobeTerminal = Pick<Terminal, "appearance" | "onAppearanceChange" | "onAppearanceReport" | "onPrivateModeReport" | "refreshAppearance">;
81
+ /**
82
+ * Fall back to native macOS appearance notifications when the terminal
83
+ * explicitly confirms that Mode 2031 notifications are unsupported.
84
+ *
85
+ * Native notifications provisionally repaint from the host appearance and
86
+ * synchronously trigger an OSC 11 probe, followed by a bounded burst of six
87
+ * retries. A changed terminal classification cancels the sequence; otherwise
88
+ * a confirmed terminal classification is restored at the validation deadline.
89
+ */
90
+ export declare function startMacOSAppearanceReprobeFallback(terminal: MacOSAppearanceReprobeTerminal): () => void;
91
+ export declare function stopThemeWatcher(): void;
92
+ /**
93
+ * Get resolved theme colors as CSS-compatible hex strings.
94
+ * Used by HTML export to generate CSS custom properties.
95
+ */
96
+ export declare function getResolvedThemeColors(themeName?: string): Promise<Record<string, string>>;
97
+ /**
98
+ * Check if a theme is a "light" theme by analyzing its status-line background
99
+ * luminance. Loads theme JSON synchronously (built-in or custom file on disk)
100
+ * for callers in synchronous flows (settings migration, setup wizard).
101
+ */
102
+ export declare function isLightTheme(themeName?: string): boolean;
103
+ /**
104
+ * Get explicit export colors from theme JSON, if specified.
105
+ * Returns undefined for each color that isn't explicitly set.
106
+ */
107
+ export declare function getThemeExportColors(themeName?: string): Promise<{
108
+ pageBg?: string;
109
+ cardBg?: string;
110
+ infoBg?: string;
111
+ }>;
@@ -0,0 +1,30 @@
1
+ import { HighlightStream as NativeHighlightStream } from "@oh-my-pi/pi-natives";
2
+ import type { EditorTheme } from "../components/editor.js";
3
+ import type { MarkdownTheme } from "../components/markdown.js";
4
+ import type { SelectListTheme } from "../components/select-list.js";
5
+ import type { SettingsListTheme } from "../components/settings-list.js";
6
+ import type { SymbolTheme } from "../symbols.js";
7
+ import type { SlashCommandIconName } from "./symbols.js";
8
+ import type { Theme } from "./theme-class.js";
9
+ /**
10
+ * Highlight code with syntax coloring based on file extension or language.
11
+ * Returns array of highlighted lines.
12
+ */
13
+ export declare function highlightCode(code: string, lang?: string, highlightTheme?: Theme): string[];
14
+ /** Create a stateful highlighter for progressive terminal rendering. */
15
+ export declare function createHighlightStream(lang?: string, highlightTheme?: Theme): NativeHighlightStream | null;
16
+ /** Warm native syntax grammars off-thread once per process. */
17
+ export declare function warmHighlighter(): Promise<void>;
18
+ export declare function getSymbolTheme(): SymbolTheme;
19
+ export declare function setMarkdownMermaidRendering(enabled: boolean): void;
20
+ export declare function getMarkdownTheme(): MarkdownTheme;
21
+ export declare function getSelectListTheme(): SelectListTheme;
22
+ /**
23
+ * Resolve the autocomplete type-indicator glyph for a slash command.
24
+ * Returns `undefined` when no theme is initialized or the active preset is
25
+ * ASCII (shared `icon.*` glyphs have ASCII forms, but a partially lettered
26
+ * icon column reads as noise), which collapses the column entirely.
27
+ */
28
+ export declare function getSlashCommandTypeIcon(name: SlashCommandIconName): string | undefined;
29
+ export declare function getEditorTheme(): EditorTheme;
30
+ export declare function getSettingsListTheme(): SettingsListTheme;