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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (748) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +43 -0
  3. package/dist/types/app-keybindings.d.ts +395 -0
  4. package/dist/types/apps/autoresearch-dashboard.d.ts +43 -0
  5. package/dist/types/apps/autoresearch-data.d.ts +15 -0
  6. package/dist/types/apps/cleanse-board.d.ts +66 -0
  7. package/dist/types/apps/cleanse-picker.d.ts +23 -0
  8. package/dist/types/apps/debug/log-formatting.d.ts +6 -0
  9. package/dist/types/apps/debug/log-viewer.d.ts +81 -0
  10. package/dist/types/apps/debug/protocol-probe.d.ts +42 -0
  11. package/dist/types/apps/debug/raw-sse-buffer.d.ts +58 -0
  12. package/dist/types/apps/debug/raw-sse.d.ts +26 -0
  13. package/dist/types/apps/debug/terminal-info.d.ts +34 -0
  14. package/dist/types/apps/debug/viewer-frame.d.ts +52 -0
  15. package/dist/types/apps/git/avatar.d.ts +9 -0
  16. package/dist/types/apps/git/colors.d.ts +49 -0
  17. package/dist/types/apps/git/diff-pane.d.ts +188 -0
  18. package/dist/types/apps/git/git-tui.d.ts +66 -0
  19. package/dist/types/apps/git/sidebar.d.ts +149 -0
  20. package/dist/types/apps/git/state.d.ts +117 -0
  21. package/dist/types/apps/if-bench-board.d.ts +75 -0
  22. package/dist/types/apps/live-visualizer.d.ts +33 -0
  23. package/dist/types/apps/ps-data.d.ts +51 -0
  24. package/dist/types/apps/ps-top.d.ts +33 -0
  25. package/dist/types/apps/session-picker.d.ts +26 -0
  26. package/dist/types/apps/setup-model-picker.d.ts +13 -0
  27. package/dist/types/apps/standalone-picker.d.ts +42 -0
  28. package/dist/types/autocomplete.d.ts +4 -0
  29. package/dist/types/chat/advisor-message.d.ts +11 -0
  30. package/dist/types/chat/assistant-message.d.ts +106 -0
  31. package/dist/types/chat/background-tan-message.d.ts +9 -0
  32. package/dist/types/chat/bash-execution.d.ts +47 -0
  33. package/dist/types/chat/cache-invalidation-marker.d.ts +50 -0
  34. package/dist/types/chat/chat-transcript-builder.d.ts +50 -0
  35. package/dist/types/chat/collab-prompt-message.d.ts +10 -0
  36. package/dist/types/chat/compaction-summary-message.d.ts +54 -0
  37. package/dist/types/chat/custom-message.d.ts +10 -0
  38. package/dist/types/chat/display-preferences.d.ts +13 -0
  39. package/dist/types/chat/eval-execution.d.ts +29 -0
  40. package/dist/types/chat/execution-shared.d.ts +51 -0
  41. package/dist/types/chat/extension-types.d.ts +28 -0
  42. package/dist/types/chat/hook-message.d.ts +10 -0
  43. package/dist/types/chat/image-loading.d.ts +46 -0
  44. package/dist/types/chat/late-diagnostics-message.d.ts +21 -0
  45. package/dist/types/chat/messages.d.ts +189 -0
  46. package/dist/types/chat/reaction.d.ts +30 -0
  47. package/dist/types/chat/read-target.d.ts +4 -0
  48. package/dist/types/chat/read-tool-group.d.ts +67 -0
  49. package/dist/types/chat/served-model-marker.d.ts +47 -0
  50. package/dist/types/chat/skill-message.d.ts +33 -0
  51. package/dist/types/chat/skill-title-input.d.ts +14 -0
  52. package/dist/types/chat/stripped-tool-calls-placeholder.d.ts +12 -0
  53. package/dist/types/chat/thinking-display.d.ts +12 -0
  54. package/dist/types/chat/todo-reminder.d.ts +13 -0
  55. package/dist/types/chat/tool-execution.d.ts +138 -0
  56. package/dist/types/chat/transcript-browser.d.ts +93 -0
  57. package/dist/types/chat/transcript-entry.d.ts +45 -0
  58. package/dist/types/chat/transcript-outline.d.ts +86 -0
  59. package/dist/types/chat/transcript-render-helpers.d.ts +92 -0
  60. package/dist/types/chat/ttsr-notification.d.ts +23 -0
  61. package/dist/types/chat/user-message.d.ts +52 -0
  62. package/dist/types/chrome/chat-block.d.ts +64 -0
  63. package/dist/types/chrome/collab-qrcode.d.ts +28 -0
  64. package/dist/types/chrome/context-thresholds.d.ts +10 -0
  65. package/dist/types/chrome/countdown-timer.d.ts +14 -0
  66. package/dist/types/chrome/diff.d.ts +14 -0
  67. package/dist/types/chrome/dynamic-border.d.ts +16 -0
  68. package/dist/types/chrome/error-block.d.ts +17 -0
  69. package/dist/types/chrome/form-theme.d.ts +3 -0
  70. package/dist/types/chrome/format.d.ts +12 -0
  71. package/dist/types/chrome/index.d.ts +20 -0
  72. package/dist/types/chrome/keybinding-hints.d.ts +40 -0
  73. package/dist/types/chrome/live-board.d.ts +23 -0
  74. package/dist/types/chrome/local-date.d.ts +4 -0
  75. package/dist/types/chrome/message-divider.d.ts +22 -0
  76. package/dist/types/chrome/message-frame.d.ts +52 -0
  77. package/dist/types/chrome/message-notice.d.ts +35 -0
  78. package/dist/types/chrome/overlay-box.d.ts +74 -0
  79. package/dist/types/chrome/qrcode.d.ts +48 -0
  80. package/dist/types/chrome/segment-track.d.ts +27 -0
  81. package/dist/types/chrome/select-list-mouse-routing.d.ts +4 -0
  82. package/dist/types/chrome/selector-helpers.d.ts +52 -0
  83. package/dist/types/chrome/shared.d.ts +5 -0
  84. package/dist/types/chrome/streaming-panel.d.ts +19 -0
  85. package/dist/types/chrome/tool-activity.d.ts +17 -0
  86. package/dist/types/chrome/transcript-container.d.ts +129 -0
  87. package/dist/types/chrome/transcript-status.d.ts +12 -0
  88. package/dist/types/chrome/visual-truncate.d.ts +19 -0
  89. package/dist/types/components/disclosure.d.ts +42 -0
  90. package/dist/types/components/form.d.ts +130 -0
  91. package/dist/types/components/key-value-list.d.ts +24 -0
  92. package/dist/types/components/layout/geometry.d.ts +73 -0
  93. package/dist/types/components/layout/row.d.ts +55 -0
  94. package/dist/types/components/layout/split-pane.d.ts +80 -0
  95. package/dist/types/components/layout/stack.d.ts +50 -0
  96. package/dist/types/components/menu-selection.d.ts +71 -0
  97. package/dist/types/components/metric.d.ts +44 -0
  98. package/dist/types/components/progress-bar.d.ts +36 -0
  99. package/dist/types/components/scroll-view.d.ts +53 -19
  100. package/dist/types/components/scroll-viewport.d.ts +46 -0
  101. package/dist/types/components/section.d.ts +19 -0
  102. package/dist/types/components/select-list.d.ts +46 -2
  103. package/dist/types/components/settings-list.d.ts +20 -0
  104. package/dist/types/components/table.d.ts +32 -0
  105. package/dist/types/components/tree-view.d.ts +130 -0
  106. package/dist/types/components/wizard-step.d.ts +60 -0
  107. package/dist/types/hotkeys-markdown.d.ts +7 -0
  108. package/dist/types/index.d.ts +17 -0
  109. package/dist/types/keybinding-matchers.d.ts +35 -0
  110. package/dist/types/keys.d.ts +2 -2
  111. package/dist/types/lang-from-path.d.ts +9 -0
  112. package/dist/types/overlays/advisor-config.d.ts +114 -0
  113. package/dist/types/overlays/agent-activity.d.ts +41 -0
  114. package/dist/types/overlays/agent-hub-projection.d.ts +33 -0
  115. package/dist/types/overlays/agent-hub-renderer.d.ts +53 -0
  116. package/dist/types/overlays/agent-hub-types.d.ts +99 -0
  117. package/dist/types/overlays/agent-hub.d.ts +126 -0
  118. package/dist/types/overlays/agent-transcript-viewer.d.ts +71 -0
  119. package/dist/types/overlays/agents-hub.d.ts +72 -0
  120. package/dist/types/overlays/ask-dialog.d.ts +88 -0
  121. package/dist/types/overlays/bordered-loader.d.ts +11 -0
  122. package/dist/types/overlays/btw-history-panel.d.ts +29 -0
  123. package/dist/types/overlays/btw-history.d.ts +17 -0
  124. package/dist/types/overlays/btw-panel.d.ts +26 -0
  125. package/dist/types/overlays/cleanse-panel.d.ts +36 -0
  126. package/dist/types/overlays/codex-reset-fireworks.d.ts +52 -0
  127. package/dist/types/overlays/composer-shape-preview.d.ts +47 -0
  128. package/dist/types/overlays/composer-shape-registry.d.ts +50 -0
  129. package/dist/types/overlays/copy-selector.d.ts +48 -0
  130. package/dist/types/overlays/copy-targets.d.ts +63 -0
  131. package/dist/types/overlays/error-banner.d.ts +13 -0
  132. package/dist/types/overlays/extensions/display-text.d.ts +10 -0
  133. package/dist/types/overlays/extensions/extension-dashboard.d.ts +63 -0
  134. package/dist/types/overlays/extensions/extension-list.d.ts +54 -0
  135. package/dist/types/overlays/extensions/inspector-model.d.ts +109 -0
  136. package/dist/types/overlays/extensions/inspector-panel.d.ts +17 -0
  137. package/dist/types/overlays/extensions/live-tool-session.d.ts +28 -0
  138. package/dist/types/overlays/extensions/mcp-runtime.d.ts +107 -0
  139. package/dist/types/overlays/extensions/state-manager.d.ts +42 -0
  140. package/dist/types/overlays/extensions/types.d.ts +165 -0
  141. package/dist/types/overlays/history-search.d.ts +16 -0
  142. package/dist/types/overlays/hook-editor.d.ts +44 -0
  143. package/dist/types/overlays/hook-input.d.ts +20 -0
  144. package/dist/types/overlays/hook-selector.d.ts +71 -0
  145. package/dist/types/overlays/hub-frame.d.ts +77 -0
  146. package/dist/types/overlays/login-dialog.d.ts +43 -0
  147. package/dist/types/overlays/logout-account-selector.d.ts +15 -0
  148. package/dist/types/overlays/mcp-add-wizard.d.ts +87 -0
  149. package/dist/types/overlays/model-browser.d.ts +213 -0
  150. package/dist/types/overlays/model-hub.d.ts +72 -0
  151. package/dist/types/overlays/model-picker.d.ts +74 -0
  152. package/dist/types/overlays/model-selector.d.ts +52 -0
  153. package/dist/types/overlays/move-overlay.d.ts +39 -0
  154. package/dist/types/overlays/oauth-selector.d.ts +41 -0
  155. package/dist/types/overlays/omfg-panel.d.ts +20 -0
  156. package/dist/types/overlays/pause-screen.d.ts +43 -0
  157. package/dist/types/overlays/plan-review-overlay.d.ts +89 -0
  158. package/dist/types/overlays/plan-save-overlay.d.ts +19 -0
  159. package/dist/types/overlays/plan-toc.d.ts +41 -0
  160. package/dist/types/overlays/plugin-selector.d.ts +28 -0
  161. package/dist/types/overlays/plugin-settings.d.ts +180 -0
  162. package/dist/types/overlays/queue-mode-selector.d.ts +11 -0
  163. package/dist/types/overlays/reset-usage-selector.d.ts +23 -0
  164. package/dist/types/overlays/rewind-selector.d.ts +61 -0
  165. package/dist/types/overlays/running-subagent-badge.d.ts +6 -0
  166. package/dist/types/overlays/session-account-selector.d.ts +24 -0
  167. package/dist/types/overlays/session-info-overlay.d.ts +17 -0
  168. package/dist/types/overlays/session-observer-registry.d.ts +77 -0
  169. package/dist/types/overlays/session-selector.d.ts +131 -0
  170. package/dist/types/overlays/settings-defs.d.ts +119 -0
  171. package/dist/types/overlays/settings-selector.d.ts +73 -0
  172. package/dist/types/overlays/show-images-selector.d.ts +11 -0
  173. package/dist/types/overlays/snapcompact-shape-preview.d.ts +31 -0
  174. package/dist/types/overlays/theme-selector.d.ts +12 -0
  175. package/dist/types/overlays/thinking-selector.d.ts +12 -0
  176. package/dist/types/overlays/tiny-title-download-progress.d.ts +21 -0
  177. package/dist/types/overlays/tree-selector.d.ts +92 -0
  178. package/dist/types/overlays/usage-dashboard.d.ts +94 -0
  179. package/dist/types/overlays/usage-display.d.ts +5 -0
  180. package/dist/types/overlays/usage-row.d.ts +17 -0
  181. package/dist/types/prompt/attachment-chips.d.ts +19 -0
  182. package/dist/types/prompt/composer-attachments.d.ts +71 -0
  183. package/dist/types/prompt/composer-cache.d.ts +37 -0
  184. package/dist/types/prompt/composer.d.ts +159 -0
  185. package/dist/types/prompt/custom-editor.d.ts +261 -0
  186. package/dist/types/prompt/editor-top-gap.d.ts +18 -0
  187. package/dist/types/prompt/emoji-autocomplete.d.ts +16 -0
  188. package/dist/types/prompt/github-ref-autocomplete.d.ts +35 -0
  189. package/dist/types/prompt/gradient-highlight.d.ts +32 -0
  190. package/dist/types/prompt/image-format.d.ts +4 -0
  191. package/dist/types/prompt/image-references.d.ts +26 -0
  192. package/dist/types/prompt/interactive-context-helpers.d.ts +43 -0
  193. package/dist/types/prompt/internal-url-autocomplete.d.ts +56 -0
  194. package/dist/types/prompt/macos-spelling.d.ts +44 -0
  195. package/dist/types/prompt/magic-keyword-boundary.d.ts +9 -0
  196. package/dist/types/prompt/magic-keywords.d.ts +26 -0
  197. package/dist/types/prompt/markdown-prose.d.ts +15 -0
  198. package/dist/types/prompt/model-mention-autocomplete.d.ts +25 -0
  199. package/dist/types/prompt/model-mention-syntax.d.ts +24 -0
  200. package/dist/types/prompt/orchestrate.d.ts +13 -0
  201. package/dist/types/prompt/prompt-action-autocomplete.d.ts +56 -0
  202. package/dist/types/prompt/queue-input.d.ts +8 -0
  203. package/dist/types/prompt/skill-tokens.d.ts +13 -0
  204. package/dist/types/prompt/tools-markdown.d.ts +12 -0
  205. package/dist/types/prompt/ultrathink.d.ts +13 -0
  206. package/dist/types/prompt/usage-amounts.d.ts +26 -0
  207. package/dist/types/prompt/video.d.ts +18 -0
  208. package/dist/types/prompt/welcome.d.ts +83 -0
  209. package/dist/types/prompt/workflow.d.ts +13 -0
  210. package/dist/types/render/code-cell.d.ts +51 -0
  211. package/dist/types/render/file-list.d.ts +22 -0
  212. package/dist/types/render/hyperlink.d.ts +80 -0
  213. package/dist/types/render/index.d.ts +16 -0
  214. package/dist/types/render/output-block.d.ts +54 -0
  215. package/dist/types/render/output-pane.d.ts +80 -0
  216. package/dist/types/render/render-utils.d.ts +312 -0
  217. package/dist/types/render/sixel.d.ts +21 -0
  218. package/dist/types/render/status-line.d.ts +23 -0
  219. package/dist/types/render/tool-card.d.ts +71 -0
  220. package/dist/types/render/tree-list.d.ts +29 -0
  221. package/dist/types/render/types.d.ts +17 -0
  222. package/dist/types/render/utils.d.ts +43 -0
  223. package/dist/types/render/width-aware-text.d.ts +23 -0
  224. package/dist/types/setup/lazy.d.ts +3 -0
  225. package/dist/types/setup/scenes/composer.d.ts +3 -0
  226. package/dist/types/setup/scenes/glyph.d.ts +3 -0
  227. package/dist/types/setup/scenes/model.d.ts +3 -0
  228. package/dist/types/setup/scenes/outro.d.ts +2 -0
  229. package/dist/types/setup/scenes/providers.d.ts +3 -0
  230. package/dist/types/setup/scenes/sign-in.d.ts +21 -0
  231. package/dist/types/setup/scenes/splash.d.ts +11 -0
  232. package/dist/types/setup/scenes/theme.d.ts +3 -0
  233. package/dist/types/setup/scenes/types.d.ts +110 -0
  234. package/dist/types/setup/scenes/web-search.d.ts +22 -0
  235. package/dist/types/setup/setup-version.d.ts +11 -0
  236. package/dist/types/setup/startup-splash.d.ts +9 -0
  237. package/dist/types/setup/wizard-overlay.d.ts +16 -0
  238. package/dist/types/setup/wizard.d.ts +25 -0
  239. package/dist/types/status-line/component.d.ts +182 -0
  240. package/dist/types/status-line/context-usage.d.ts +156 -0
  241. package/dist/types/status-line/footer.d.ts +30 -0
  242. package/dist/types/status-line/git-utils.d.ts +22 -0
  243. package/dist/types/status-line/host.d.ts +129 -0
  244. package/dist/types/status-line/index.d.ts +6 -0
  245. package/dist/types/status-line/loop.d.ts +18 -0
  246. package/dist/types/status-line/metrics.d.ts +21 -0
  247. package/dist/types/status-line/presets.d.ts +3 -0
  248. package/dist/types/status-line/schema.d.ts +15 -0
  249. package/dist/types/status-line/segments.d.ts +5 -0
  250. package/dist/types/status-line/separators.d.ts +3 -0
  251. package/dist/types/status-line/types.d.ts +236 -0
  252. package/dist/types/stdin-buffer.d.ts +4 -0
  253. package/dist/types/theme/color.d.ts +24 -0
  254. package/dist/types/theme/defaults/index.d.ts +9489 -0
  255. package/dist/types/theme/index.d.ts +4 -0
  256. package/dist/types/theme/loader.d.ts +23 -0
  257. package/dist/types/theme/mermaid-cache.d.ts +26 -0
  258. package/dist/types/theme/schema-validation.d.ts +3 -0
  259. package/dist/types/theme/schema.d.ts +25 -0
  260. package/dist/types/theme/session-color.d.ts +43 -0
  261. package/dist/types/theme/shimmer.d.ts +44 -0
  262. package/dist/types/theme/symbols.d.ts +34 -0
  263. package/dist/types/theme/theme-class.d.ts +299 -0
  264. package/dist/types/theme/theme.d.ts +111 -0
  265. package/dist/types/theme/tui-adapters.d.ts +30 -0
  266. package/dist/types/thinking.d.ts +165 -0
  267. package/dist/types/tools/agent-tree.d.ts +36 -0
  268. package/dist/types/tools/ask.d.ts +67 -0
  269. package/dist/types/tools/ast-edit.d.ts +53 -0
  270. package/dist/types/tools/ast-grep.d.ts +52 -0
  271. package/dist/types/tools/autoresearch.d.ts +156 -0
  272. package/dist/types/tools/bash-interactive.d.ts +28 -0
  273. package/dist/types/tools/bash.d.ts +103 -0
  274. package/dist/types/tools/conflict-detect.d.ts +43 -0
  275. package/dist/types/tools/debug.d.ts +60 -0
  276. package/dist/types/tools/default-renderer.d.ts +24 -0
  277. package/dist/types/tools/edit.d.ts +158 -0
  278. package/dist/types/tools/eval-format/code-mode-declarations.d.ts +5 -0
  279. package/dist/types/tools/eval-format/index.d.ts +5 -0
  280. package/dist/types/tools/eval-format/javascript.d.ts +2 -0
  281. package/dist/types/tools/eval-format/python.d.ts +2 -0
  282. package/dist/types/tools/eval.d.ts +94 -0
  283. package/dist/types/tools/fetch.d.ts +42 -0
  284. package/dist/types/tools/gh-format.d.ts +8 -0
  285. package/dist/types/tools/github.d.ts +144 -0
  286. package/dist/types/tools/glob.d.ts +44 -0
  287. package/dist/types/tools/goal.d.ts +42 -0
  288. package/dist/types/tools/grep.d.ts +64 -0
  289. package/dist/types/tools/grouped-file-output.d.ts +71 -0
  290. package/dist/types/tools/hashline-format.d.ts +28 -0
  291. package/dist/types/tools/hub.d.ts +340 -0
  292. package/dist/types/tools/index.d.ts +4 -0
  293. package/dist/types/tools/json-tree.d.ts +59 -0
  294. package/dist/types/tools/line-ranges.d.ts +29 -0
  295. package/dist/types/tools/list-limit.d.ts +15 -0
  296. package/dist/types/tools/lsp.d.ts +72 -0
  297. package/dist/types/tools/match-line-format.d.ts +11 -0
  298. package/dist/types/tools/mcp.d.ts +81 -0
  299. package/dist/types/tools/memory.d.ts +67 -0
  300. package/dist/types/tools/output-meta.d.ts +151 -0
  301. package/dist/types/tools/read.d.ts +139 -0
  302. package/dist/types/tools/renderer.d.ts +98 -0
  303. package/dist/types/tools/report-tool-issue.d.ts +8 -0
  304. package/dist/types/tools/resolve.d.ts +47 -0
  305. package/dist/types/tools/streaming-output.d.ts +282 -0
  306. package/dist/types/tools/subprocess.d.ts +24 -0
  307. package/dist/types/tools/task-repair-args.d.ts +53 -0
  308. package/dist/types/tools/task-yield-assembly.d.ts +20 -0
  309. package/dist/types/tools/task.d.ts +425 -0
  310. package/dist/types/tools/terminal-output.d.ts +8 -0
  311. package/dist/types/tools/think.d.ts +13 -0
  312. package/dist/types/tools/todo.d.ts +118 -0
  313. package/dist/types/tools/tool-errors.d.ts +7 -0
  314. package/dist/types/tools/vibe.d.ts +120 -0
  315. package/dist/types/tools/web-search.d.ts +195 -0
  316. package/dist/types/tools/write.d.ts +76 -0
  317. package/dist/types/tools/xd-url.d.ts +13 -0
  318. package/dist/types/tools/xdev.d.ts +52 -0
  319. package/dist/types/tui.d.ts +18 -0
  320. package/dist/types/utils.d.ts +2 -0
  321. package/package.json +37 -3
  322. package/src/app-keybindings.ts +760 -0
  323. package/src/apps/autoresearch-dashboard.ts +500 -0
  324. package/src/apps/autoresearch-data.ts +64 -0
  325. package/src/apps/cleanse-board.ts +341 -0
  326. package/src/apps/cleanse-picker.ts +57 -0
  327. package/src/apps/debug/log-formatting.ts +53 -0
  328. package/src/apps/debug/log-viewer.ts +868 -0
  329. package/src/apps/debug/protocol-probe.ts +267 -0
  330. package/src/apps/debug/raw-sse-buffer.ts +449 -0
  331. package/src/apps/debug/raw-sse.ts +282 -0
  332. package/src/apps/debug/terminal-info.ts +115 -0
  333. package/src/apps/debug/viewer-frame.ts +174 -0
  334. package/src/apps/git/avatar.ts +52 -0
  335. package/src/apps/git/colors.ts +109 -0
  336. package/src/apps/git/diff-pane.ts +1512 -0
  337. package/src/apps/git/git-tui.ts +889 -0
  338. package/src/apps/git/sidebar.ts +1204 -0
  339. package/src/apps/git/state.ts +113 -0
  340. package/src/apps/if-bench-board.ts +324 -0
  341. package/src/apps/live-visualizer.ts +238 -0
  342. package/src/apps/ps-data.ts +116 -0
  343. package/src/apps/ps-top.ts +422 -0
  344. package/src/apps/session-picker.ts +95 -0
  345. package/src/apps/setup-model-picker.ts +21 -0
  346. package/src/apps/standalone-picker.ts +111 -0
  347. package/src/autocomplete.ts +9 -13
  348. package/src/chat/advisor-message.ts +175 -0
  349. package/src/chat/assistant-message.ts +1214 -0
  350. package/src/chat/background-tan-message.ts +35 -0
  351. package/src/chat/bash-execution.ts +394 -0
  352. package/src/chat/cache-invalidation-marker.ts +94 -0
  353. package/src/chat/chat-transcript-builder.ts +593 -0
  354. package/src/chat/collab-prompt-message.ts +34 -0
  355. package/src/chat/compaction-summary-message.ts +261 -0
  356. package/src/chat/custom-message.ts +23 -0
  357. package/src/chat/display-preferences.ts +24 -0
  358. package/src/chat/eval-execution.ts +172 -0
  359. package/src/chat/execution-shared.ts +113 -0
  360. package/src/chat/extension-types.ts +46 -0
  361. package/src/chat/hook-message.ts +20 -0
  362. package/src/chat/image-loading.ts +122 -0
  363. package/src/chat/late-diagnostics-message.ts +92 -0
  364. package/src/chat/messages.ts +305 -0
  365. package/src/chat/reaction.ts +65 -0
  366. package/src/chat/read-target.ts +7 -0
  367. package/src/chat/read-tool-group.ts +873 -0
  368. package/src/chat/served-model-marker.ts +91 -0
  369. package/src/chat/skill-message.ts +220 -0
  370. package/src/chat/skill-title-input.ts +41 -0
  371. package/src/chat/stripped-tool-calls-placeholder.ts +35 -0
  372. package/src/chat/thinking-display.ts +312 -0
  373. package/src/chat/todo-reminder.ts +33 -0
  374. package/src/chat/tool-execution.ts +1395 -0
  375. package/src/chat/transcript-browser.ts +268 -0
  376. package/src/chat/transcript-entry.ts +96 -0
  377. package/src/chat/transcript-outline.ts +260 -0
  378. package/src/chat/transcript-render-helpers.ts +315 -0
  379. package/src/chat/ttsr-notification.ts +123 -0
  380. package/src/chat/user-message.ts +287 -0
  381. package/src/chrome/chat-block.ts +110 -0
  382. package/src/chrome/collab-qrcode.ts +74 -0
  383. package/src/chrome/context-thresholds.ts +85 -0
  384. package/src/chrome/countdown-timer.ts +74 -0
  385. package/src/chrome/diff.ts +266 -0
  386. package/src/chrome/dynamic-border.ts +36 -0
  387. package/src/chrome/error-block.ts +63 -0
  388. package/src/chrome/form-theme.ts +10 -0
  389. package/src/chrome/format.ts +66 -0
  390. package/src/chrome/index.ts +21 -0
  391. package/src/chrome/keybinding-hints.ts +55 -0
  392. package/src/chrome/live-board.ts +123 -0
  393. package/src/chrome/local-date.ts +20 -0
  394. package/src/chrome/message-divider.ts +51 -0
  395. package/src/chrome/message-frame.ts +164 -0
  396. package/src/chrome/message-notice.ts +103 -0
  397. package/src/chrome/overlay-box.ts +301 -0
  398. package/src/chrome/qrcode.ts +539 -0
  399. package/src/chrome/segment-track.ts +86 -0
  400. package/src/chrome/select-list-mouse-routing.ts +11 -0
  401. package/src/chrome/selector-helpers.ts +119 -0
  402. package/src/chrome/shared.ts +27 -0
  403. package/src/chrome/streaming-panel.ts +72 -0
  404. package/src/chrome/tool-activity.ts +44 -0
  405. package/src/chrome/transcript-container.ts +902 -0
  406. package/src/chrome/transcript-status.ts +27 -0
  407. package/src/chrome/visual-truncate.ts +70 -0
  408. package/src/components/disclosure.ts +235 -0
  409. package/src/components/editor.ts +10 -12
  410. package/src/components/form.ts +566 -0
  411. package/src/components/input.ts +6 -27
  412. package/src/components/key-value-list.ts +88 -0
  413. package/src/components/layout/geometry.ts +202 -0
  414. package/src/components/layout/row.ts +283 -0
  415. package/src/components/layout/split-pane.ts +349 -0
  416. package/src/components/layout/stack.ts +261 -0
  417. package/src/components/markdown.ts +16 -12
  418. package/src/components/menu-selection.ts +248 -0
  419. package/src/components/metric.ts +132 -0
  420. package/src/components/progress-bar.ts +140 -0
  421. package/src/components/scroll-view.ts +372 -70
  422. package/src/components/scroll-viewport.ts +154 -0
  423. package/src/components/section.ts +77 -0
  424. package/src/components/select-list.ts +238 -159
  425. package/src/components/settings-list.ts +103 -80
  426. package/src/components/table.ts +127 -0
  427. package/src/components/tree-view.ts +481 -0
  428. package/src/components/wizard-step.ts +229 -0
  429. package/src/deccara.ts +1 -3
  430. package/src/hotkeys-markdown.ts +100 -0
  431. package/src/index.ts +18 -0
  432. package/src/keybinding-matchers.ts +99 -0
  433. package/src/keys.ts +2 -2
  434. package/src/lang-from-path.ts +252 -0
  435. package/src/overlays/advisor-config.ts +761 -0
  436. package/src/overlays/agent-activity.ts +113 -0
  437. package/src/overlays/agent-hub-projection.ts +250 -0
  438. package/src/overlays/agent-hub-renderer.ts +281 -0
  439. package/src/overlays/agent-hub-types.ts +74 -0
  440. package/src/overlays/agent-hub.ts +1562 -0
  441. package/src/overlays/agent-transcript-viewer.ts +669 -0
  442. package/src/overlays/agents-hub.ts +1203 -0
  443. package/src/overlays/ask-dialog.ts +1202 -0
  444. package/src/overlays/bordered-loader.ts +41 -0
  445. package/src/overlays/btw-history-panel.ts +591 -0
  446. package/src/overlays/btw-history.ts +33 -0
  447. package/src/overlays/btw-panel.ts +167 -0
  448. package/src/overlays/cleanse-panel.ts +167 -0
  449. package/src/overlays/codex-reset-fireworks.ts +375 -0
  450. package/src/overlays/composer-shape-preview.ts +137 -0
  451. package/src/overlays/composer-shape-registry.ts +82 -0
  452. package/src/overlays/copy-selector.ts +618 -0
  453. package/src/overlays/copy-targets.ts +210 -0
  454. package/src/overlays/error-banner.ts +39 -0
  455. package/src/overlays/extensions/display-text.ts +39 -0
  456. package/src/overlays/extensions/extension-dashboard.ts +645 -0
  457. package/src/overlays/extensions/extension-list.ts +667 -0
  458. package/src/overlays/extensions/inspector-model.ts +484 -0
  459. package/src/overlays/extensions/inspector-panel.ts +669 -0
  460. package/src/overlays/extensions/live-tool-session.ts +67 -0
  461. package/src/overlays/extensions/mcp-runtime.ts +289 -0
  462. package/src/overlays/extensions/state-manager.ts +337 -0
  463. package/src/overlays/extensions/types.ts +208 -0
  464. package/src/overlays/history-search.ts +268 -0
  465. package/src/overlays/hook-editor.ts +272 -0
  466. package/src/overlays/hook-input.ts +84 -0
  467. package/src/overlays/hook-selector.ts +635 -0
  468. package/src/overlays/hub-frame.ts +262 -0
  469. package/src/overlays/login-dialog.ts +231 -0
  470. package/src/overlays/logout-account-selector.ts +115 -0
  471. package/src/overlays/mcp-add-wizard.ts +1436 -0
  472. package/src/overlays/model-browser.ts +1176 -0
  473. package/src/overlays/model-hub.ts +2279 -0
  474. package/src/overlays/model-picker.ts +285 -0
  475. package/src/overlays/model-selector.ts +107 -0
  476. package/src/overlays/move-overlay.ts +197 -0
  477. package/src/overlays/oauth-selector.ts +446 -0
  478. package/src/overlays/omfg-panel.ts +136 -0
  479. package/src/overlays/pause-screen.ts +198 -0
  480. package/src/overlays/plan-review-overlay.ts +1227 -0
  481. package/src/overlays/plan-save-overlay.ts +74 -0
  482. package/src/overlays/plan-toc.ts +139 -0
  483. package/src/overlays/plugin-selector.ts +97 -0
  484. package/src/overlays/plugin-settings.ts +839 -0
  485. package/src/overlays/queue-mode-selector.ts +55 -0
  486. package/src/overlays/reset-usage-selector.ts +170 -0
  487. package/src/overlays/rewind-selector.ts +499 -0
  488. package/src/overlays/running-subagent-badge.ts +19 -0
  489. package/src/overlays/session-account-selector.ts +68 -0
  490. package/src/overlays/session-info-overlay.ts +96 -0
  491. package/src/overlays/session-observer-registry.ts +289 -0
  492. package/src/overlays/session-selector.ts +1137 -0
  493. package/src/overlays/settings-defs.ts +315 -0
  494. package/src/overlays/settings-selector.ts +1415 -0
  495. package/src/overlays/show-images-selector.ts +44 -0
  496. package/src/overlays/snapcompact-shape-preview-doc.md +14 -0
  497. package/src/overlays/snapcompact-shape-preview.ts +192 -0
  498. package/src/overlays/theme-selector.ts +62 -0
  499. package/src/overlays/thinking-selector.ts +51 -0
  500. package/src/overlays/tiny-title-download-progress.ts +102 -0
  501. package/src/overlays/tree-selector.ts +1121 -0
  502. package/src/overlays/usage-dashboard.ts +629 -0
  503. package/src/overlays/usage-display.ts +45 -0
  504. package/src/overlays/usage-row.ts +118 -0
  505. package/src/prompt/attachment-chips.ts +201 -0
  506. package/src/prompt/composer-attachments.ts +280 -0
  507. package/src/prompt/composer-cache.ts +304 -0
  508. package/src/prompt/composer.ts +934 -0
  509. package/src/prompt/custom-editor.ts +1392 -0
  510. package/src/prompt/data/emojis.json +1 -0
  511. package/src/prompt/editor-top-gap.ts +28 -0
  512. package/src/prompt/emoji-autocomplete.ts +285 -0
  513. package/src/prompt/github-ref-autocomplete.ts +75 -0
  514. package/src/prompt/gradient-highlight.ts +101 -0
  515. package/src/prompt/image-format.ts +28 -0
  516. package/src/prompt/image-references.ts +102 -0
  517. package/src/prompt/interactive-context-helpers.ts +126 -0
  518. package/src/prompt/internal-url-autocomplete.ts +155 -0
  519. package/src/prompt/macos-spelling.ts +456 -0
  520. package/src/prompt/magic-keyword-boundary.ts +23 -0
  521. package/src/prompt/magic-keywords.ts +42 -0
  522. package/src/prompt/markdown-prose.ts +245 -0
  523. package/src/prompt/model-mention-autocomplete.ts +94 -0
  524. package/src/prompt/model-mention-syntax.ts +41 -0
  525. package/src/prompt/orchestrate.ts +26 -0
  526. package/src/prompt/prompt-action-autocomplete.ts +337 -0
  527. package/src/prompt/queue-input.ts +132 -0
  528. package/src/prompt/skill-tokens.ts +36 -0
  529. package/src/prompt/tips.txt +27 -0
  530. package/src/prompt/tools-markdown.ts +29 -0
  531. package/src/prompt/ultrathink.ts +26 -0
  532. package/src/prompt/usage-amounts.ts +99 -0
  533. package/src/prompt/video.ts +47 -0
  534. package/src/prompt/welcome.ts +605 -0
  535. package/src/prompt/workflow.ts +26 -0
  536. package/src/render/code-cell.ts +244 -0
  537. package/src/render/file-list.ts +58 -0
  538. package/src/render/hyperlink.ts +192 -0
  539. package/src/render/index.ts +17 -0
  540. package/src/render/output-block.ts +267 -0
  541. package/src/render/output-pane.ts +299 -0
  542. package/src/render/render-utils.ts +1182 -0
  543. package/src/render/sixel.ts +69 -0
  544. package/src/render/status-line.ts +55 -0
  545. package/src/render/tool-card.ts +272 -0
  546. package/src/render/tree-list.ts +188 -0
  547. package/src/render/types.ts +19 -0
  548. package/src/render/utils.ts +109 -0
  549. package/src/render/width-aware-text.ts +60 -0
  550. package/src/setup/lazy.ts +17 -0
  551. package/src/setup/scenes/composer.ts +127 -0
  552. package/src/setup/scenes/glyph.ts +120 -0
  553. package/src/setup/scenes/model.ts +138 -0
  554. package/src/setup/scenes/outro.ts +24 -0
  555. package/src/setup/scenes/providers.ts +107 -0
  556. package/src/setup/scenes/sign-in.ts +373 -0
  557. package/src/setup/scenes/splash.ts +192 -0
  558. package/src/setup/scenes/theme.ts +343 -0
  559. package/src/setup/scenes/types.ts +111 -0
  560. package/src/setup/scenes/web-search.ts +165 -0
  561. package/src/setup/setup-version.ts +11 -0
  562. package/src/setup/startup-splash.ts +107 -0
  563. package/src/setup/wizard-overlay.ts +319 -0
  564. package/src/setup/wizard.ts +101 -0
  565. package/src/status-line/component.ts +3003 -0
  566. package/src/status-line/context-usage.ts +688 -0
  567. package/src/status-line/footer.ts +323 -0
  568. package/src/status-line/git-utils.ts +42 -0
  569. package/src/status-line/host.ts +97 -0
  570. package/src/status-line/index.ts +6 -0
  571. package/src/status-line/loop.ts +28 -0
  572. package/src/status-line/metrics.ts +94 -0
  573. package/src/status-line/presets.ts +107 -0
  574. package/src/status-line/schema.ts +57 -0
  575. package/src/status-line/segments.ts +934 -0
  576. package/src/status-line/separators.ts +55 -0
  577. package/src/status-line/types.ts +227 -0
  578. package/src/stdin-buffer.ts +4 -2
  579. package/src/theme/color.ts +95 -0
  580. package/src/theme/dark.json +95 -0
  581. package/src/theme/defaults/alabaster.json +93 -0
  582. package/src/theme/defaults/amethyst.json +96 -0
  583. package/src/theme/defaults/anthracite.json +93 -0
  584. package/src/theme/defaults/basalt.json +91 -0
  585. package/src/theme/defaults/birch.json +95 -0
  586. package/src/theme/defaults/dark-abyss.json +91 -0
  587. package/src/theme/defaults/dark-arctic.json +104 -0
  588. package/src/theme/defaults/dark-aurora.json +95 -0
  589. package/src/theme/defaults/dark-catppuccin.json +107 -0
  590. package/src/theme/defaults/dark-cavern.json +91 -0
  591. package/src/theme/defaults/dark-celestial.json +106 -0
  592. package/src/theme/defaults/dark-copper.json +95 -0
  593. package/src/theme/defaults/dark-cosmos.json +90 -0
  594. package/src/theme/defaults/dark-cyberpunk.json +102 -0
  595. package/src/theme/defaults/dark-dracula.json +98 -0
  596. package/src/theme/defaults/dark-eclipse.json +91 -0
  597. package/src/theme/defaults/dark-ember.json +95 -0
  598. package/src/theme/defaults/dark-equinox.json +90 -0
  599. package/src/theme/defaults/dark-forest.json +96 -0
  600. package/src/theme/defaults/dark-github.json +105 -0
  601. package/src/theme/defaults/dark-gruvbox.json +112 -0
  602. package/src/theme/defaults/dark-lavender.json +95 -0
  603. package/src/theme/defaults/dark-lunar.json +89 -0
  604. package/src/theme/defaults/dark-midnight.json +95 -0
  605. package/src/theme/defaults/dark-monochrome.json +94 -0
  606. package/src/theme/defaults/dark-monokai.json +98 -0
  607. package/src/theme/defaults/dark-nebula.json +90 -0
  608. package/src/theme/defaults/dark-nord.json +98 -0
  609. package/src/theme/defaults/dark-ocean.json +101 -0
  610. package/src/theme/defaults/dark-one.json +100 -0
  611. package/src/theme/defaults/dark-poimandres.json +115 -0
  612. package/src/theme/defaults/dark-rainforest.json +91 -0
  613. package/src/theme/defaults/dark-reef.json +91 -0
  614. package/src/theme/defaults/dark-retro.json +92 -0
  615. package/src/theme/defaults/dark-rose-pine.json +96 -0
  616. package/src/theme/defaults/dark-sakura.json +95 -0
  617. package/src/theme/defaults/dark-slate.json +95 -0
  618. package/src/theme/defaults/dark-solarized.json +97 -0
  619. package/src/theme/defaults/dark-solstice.json +90 -0
  620. package/src/theme/defaults/dark-starfall.json +91 -0
  621. package/src/theme/defaults/dark-sunset.json +99 -0
  622. package/src/theme/defaults/dark-swamp.json +90 -0
  623. package/src/theme/defaults/dark-synthwave.json +103 -0
  624. package/src/theme/defaults/dark-taiga.json +91 -0
  625. package/src/theme/defaults/dark-terminal.json +95 -0
  626. package/src/theme/defaults/dark-tokyo-night.json +101 -0
  627. package/src/theme/defaults/dark-tundra.json +91 -0
  628. package/src/theme/defaults/dark-twilight.json +91 -0
  629. package/src/theme/defaults/dark-volcanic.json +91 -0
  630. package/src/theme/defaults/graphite.json +92 -0
  631. package/src/theme/defaults/index.ts +201 -0
  632. package/src/theme/defaults/light-arctic.json +107 -0
  633. package/src/theme/defaults/light-aurora-day.json +91 -0
  634. package/src/theme/defaults/light-canyon.json +91 -0
  635. package/src/theme/defaults/light-catppuccin.json +106 -0
  636. package/src/theme/defaults/light-cirrus.json +90 -0
  637. package/src/theme/defaults/light-coral.json +95 -0
  638. package/src/theme/defaults/light-cyberpunk.json +96 -0
  639. package/src/theme/defaults/light-dawn.json +90 -0
  640. package/src/theme/defaults/light-dunes.json +91 -0
  641. package/src/theme/defaults/light-eucalyptus.json +95 -0
  642. package/src/theme/defaults/light-forest.json +100 -0
  643. package/src/theme/defaults/light-frost.json +95 -0
  644. package/src/theme/defaults/light-github.json +115 -0
  645. package/src/theme/defaults/light-glacier.json +91 -0
  646. package/src/theme/defaults/light-gruvbox.json +108 -0
  647. package/src/theme/defaults/light-haze.json +90 -0
  648. package/src/theme/defaults/light-honeycomb.json +95 -0
  649. package/src/theme/defaults/light-lagoon.json +91 -0
  650. package/src/theme/defaults/light-lavender.json +95 -0
  651. package/src/theme/defaults/light-meadow.json +91 -0
  652. package/src/theme/defaults/light-mint.json +95 -0
  653. package/src/theme/defaults/light-monochrome.json +101 -0
  654. package/src/theme/defaults/light-ocean.json +99 -0
  655. package/src/theme/defaults/light-one.json +99 -0
  656. package/src/theme/defaults/light-opal.json +91 -0
  657. package/src/theme/defaults/light-orchard.json +91 -0
  658. package/src/theme/defaults/light-paper.json +95 -0
  659. package/src/theme/defaults/light-poimandres.json +115 -0
  660. package/src/theme/defaults/light-prism.json +90 -0
  661. package/src/theme/defaults/light-retro.json +98 -0
  662. package/src/theme/defaults/light-sand.json +95 -0
  663. package/src/theme/defaults/light-savanna.json +91 -0
  664. package/src/theme/defaults/light-solarized.json +102 -0
  665. package/src/theme/defaults/light-soleil.json +90 -0
  666. package/src/theme/defaults/light-sunset.json +99 -0
  667. package/src/theme/defaults/light-synthwave.json +98 -0
  668. package/src/theme/defaults/light-tokyo-night.json +111 -0
  669. package/src/theme/defaults/light-wetland.json +91 -0
  670. package/src/theme/defaults/light-zenith.json +89 -0
  671. package/src/theme/defaults/limestone.json +94 -0
  672. package/src/theme/defaults/mahogany.json +97 -0
  673. package/src/theme/defaults/marble.json +93 -0
  674. package/src/theme/defaults/obsidian.json +91 -0
  675. package/src/theme/defaults/onyx.json +91 -0
  676. package/src/theme/defaults/pearl.json +93 -0
  677. package/src/theme/defaults/porcelain.json +91 -0
  678. package/src/theme/defaults/quartz.json +96 -0
  679. package/src/theme/defaults/sandstone.json +95 -0
  680. package/src/theme/defaults/titanium.json +90 -0
  681. package/src/theme/index.ts +5 -0
  682. package/src/theme/light.json +93 -0
  683. package/src/theme/loader.ts +200 -0
  684. package/src/theme/mermaid-cache.ts +92 -0
  685. package/src/theme/schema-validation.ts +119 -0
  686. package/src/theme/schema.ts +168 -0
  687. package/src/theme/session-color.ts +253 -0
  688. package/src/theme/shimmer.ts +307 -0
  689. package/src/theme/symbols.ts +1433 -0
  690. package/src/theme/theme-class.ts +787 -0
  691. package/src/theme/theme-schema.json +463 -0
  692. package/src/theme/theme.ts +810 -0
  693. package/src/theme/tui-adapters.ts +339 -0
  694. package/src/thinking.ts +380 -0
  695. package/src/tools/agent-tree.ts +128 -0
  696. package/src/tools/ask.ts +482 -0
  697. package/src/tools/ast-edit.ts +210 -0
  698. package/src/tools/ast-grep.ts +171 -0
  699. package/src/tools/autoresearch.ts +287 -0
  700. package/src/tools/bash-interactive.ts +295 -0
  701. package/src/tools/bash.ts +468 -0
  702. package/src/tools/conflict-detect.ts +77 -0
  703. package/src/tools/debug.ts +167 -0
  704. package/src/tools/default-renderer.ts +172 -0
  705. package/src/tools/edit.ts +1258 -0
  706. package/src/tools/eval-format/code-mode-declarations.ts +61 -0
  707. package/src/tools/eval-format/index.ts +16 -0
  708. package/src/tools/eval-format/javascript.ts +952 -0
  709. package/src/tools/eval-format/python.ts +544 -0
  710. package/src/tools/eval.ts +835 -0
  711. package/src/tools/fetch.ts +226 -0
  712. package/src/tools/gh-format.ts +18 -0
  713. package/src/tools/github.ts +686 -0
  714. package/src/tools/glob.ts +213 -0
  715. package/src/tools/goal.ts +153 -0
  716. package/src/tools/grep.ts +385 -0
  717. package/src/tools/grouped-file-output.ts +211 -0
  718. package/src/tools/hashline-format.ts +59 -0
  719. package/src/tools/hub.ts +1488 -0
  720. package/src/tools/index.ts +71 -0
  721. package/src/tools/json-tree.ts +388 -0
  722. package/src/tools/line-ranges.ts +98 -0
  723. package/src/tools/list-limit.ts +43 -0
  724. package/src/tools/lsp.ts +702 -0
  725. package/src/tools/match-line-format.ts +20 -0
  726. package/src/tools/mcp.ts +309 -0
  727. package/src/tools/memory.ts +220 -0
  728. package/src/tools/output-meta.ts +367 -0
  729. package/src/tools/read.ts +628 -0
  730. package/src/tools/renderer.ts +107 -0
  731. package/src/tools/report-tool-issue.ts +13 -0
  732. package/src/tools/resolve.ts +139 -0
  733. package/src/tools/streaming-output.ts +1576 -0
  734. package/src/tools/subprocess.ts +39 -0
  735. package/src/tools/task-repair-args.ts +118 -0
  736. package/src/tools/task-yield-assembly.ts +147 -0
  737. package/src/tools/task.ts +2110 -0
  738. package/src/tools/terminal-output.ts +153 -0
  739. package/src/tools/think.ts +28 -0
  740. package/src/tools/todo.ts +580 -0
  741. package/src/tools/tool-errors.ts +15 -0
  742. package/src/tools/vibe.ts +420 -0
  743. package/src/tools/web-search.ts +409 -0
  744. package/src/tools/write.ts +511 -0
  745. package/src/tools/xd-url.ts +28 -0
  746. package/src/tools/xdev.ts +201 -0
  747. package/src/tui.ts +57 -4
  748. package/src/utils.ts +8 -0
@@ -0,0 +1,88 @@
1
+ import { type Component, type TUI } from "../index.js";
2
+ /** One selectable answer in an ask dialog. */
3
+ export interface ExtensionAskDialogOption {
4
+ label: string;
5
+ description?: string;
6
+ preview?: string;
7
+ }
8
+ /** Question and answer choices displayed by the ask dialog. */
9
+ export interface ExtensionAskDialogQuestion {
10
+ id: string;
11
+ question: string;
12
+ header?: string;
13
+ options: ExtensionAskDialogOption[];
14
+ multi?: boolean;
15
+ recommended?: number;
16
+ }
17
+ /** Submitted answer to one dialog question. */
18
+ export interface ExtensionAskDialogResultItem {
19
+ id: string;
20
+ question: string;
21
+ options: string[];
22
+ multi: boolean;
23
+ selectedOptions: string[];
24
+ customInput?: string;
25
+ note?: string;
26
+ timedOut?: boolean;
27
+ }
28
+ /** Answers submitted from the dialog. */
29
+ export interface ExtensionAskDialogSubmitResult {
30
+ kind: "submit";
31
+ results: ExtensionAskDialogResultItem[];
32
+ }
33
+ /** Request to discuss the question instead of answering it. */
34
+ export interface ExtensionAskDialogChatResult {
35
+ kind: "chat";
36
+ }
37
+ /** Completed dialog action, distinct from cancellation. */
38
+ export type ExtensionAskDialogResult = ExtensionAskDialogSubmitResult | ExtensionAskDialogChatResult;
39
+ /** Bound a prompt editor title to a fixed row/width budget so long or
40
+ * multi-line questions stay usable inside the small prompt overlay. */
41
+ export declare function boundPromptTitle(prefix: string, question: string): string;
42
+ interface AskDialogCallbacks {
43
+ onSubmit(result: ExtensionAskDialogSubmitResult): void;
44
+ onCancel(): void;
45
+ onPrompt(title: string, prefill?: string): Promise<string | undefined>;
46
+ }
47
+ interface AskDialogInputGuard {
48
+ isBlocked(): boolean;
49
+ handleInput(keyData: string): void;
50
+ hint: string;
51
+ /** Mirror the guard's blocked state onto the proxied draft surface each
52
+ * render, so a draft that owns input shows a visible insertion cursor even
53
+ * though this dialog holds TUI focus. */
54
+ syncPresentation?(): void;
55
+ }
56
+ interface AskDialogOptions {
57
+ timeout?: number;
58
+ onTimeout?: () => void;
59
+ tui?: TUI;
60
+ inputGuard?: AskDialogInputGuard;
61
+ }
62
+ /**
63
+ * Coerce untrusted dialog questions into a render-safe shape. The live ask
64
+ * dialog is reached from the public `askDialog` extension surface and from
65
+ * streamed tool args, where a question entry can arrive with a missing or
66
+ * non-string `question` field. The render helpers (`replaceTabs`,
67
+ * `renderQuestionTitle`, `questionTabLabel`) assume strings, so a malformed
68
+ * entry throws and takes down the whole TUI render loop. Mirrors
69
+ * `normalizeRenderQuestions` on the transcript path.
70
+ */
71
+ export declare function normalizeDialogQuestions(questions: ExtensionAskDialogQuestion[]): ExtensionAskDialogQuestion[];
72
+ export declare class AskDialogComponent implements Component {
73
+ #private;
74
+ private readonly callbacks;
75
+ private readonly options;
76
+ constructor(questions: ExtensionAskDialogQuestion[], callbacks: AskDialogCallbacks, options?: AskDialogOptions);
77
+ invalidate(): void;
78
+ dispose(): void;
79
+ /**
80
+ * Toggle truncated question headers and option descriptions. Returns false
81
+ * when there is nothing to expand so the global Ctrl+O listener can still
82
+ * expand transcript tools.
83
+ */
84
+ toggleQuestionExpansion(): boolean;
85
+ handleInput(keyData: string): void;
86
+ render(width: number): readonly string[];
87
+ }
88
+ export {};
@@ -0,0 +1,11 @@
1
+ import { Container, type TUI } from "../index.js";
2
+ import type { Theme } from "../theme/theme.js";
3
+ /** Loader wrapped with borders for hook UI */
4
+ export declare class BorderedLoader extends Container {
5
+ #private;
6
+ constructor(tui: TUI, theme: Theme, message: string);
7
+ get signal(): AbortSignal;
8
+ set onAbort(fn: (() => void) | undefined);
9
+ handleInput(data: string): void;
10
+ dispose(): void;
11
+ }
@@ -0,0 +1,29 @@
1
+ import { type Component, type Focusable } from "../index.js";
2
+ import { type BtwHistoryRecord } from "./btw-history.js";
3
+ interface BtwHistoryPanelOptions {
4
+ records: readonly BtwHistoryRecord[];
5
+ onClose: () => void;
6
+ onCopy: (record: BtwHistoryRecord) => void;
7
+ onCancel: (record: BtwHistoryRecord) => void;
8
+ canFollowUp?: (record: BtwHistoryRecord) => boolean;
9
+ onFollowUp?: (record: BtwHistoryRecord, question: string, signal: AbortSignal) => Promise<boolean>;
10
+ requestRender: () => void;
11
+ getHeight: () => number;
12
+ }
13
+ /** Session-local side questions. Selecting or copying never promotes them into chat. */
14
+ export declare class BtwHistoryPanel implements Component, Focusable {
15
+ #private;
16
+ constructor(options: BtwHistoryPanelOptions);
17
+ get focused(): boolean;
18
+ set focused(value: boolean);
19
+ update(records: readonly BtwHistoryRecord[]): void;
20
+ /** Visual confirmation that `c` copied this record's answer to the clipboard. */
21
+ markCopied(recordId: string, text: string): void;
22
+ invalidate(): void;
23
+ openFollowUp(recordId: string): boolean;
24
+ /** Enhanced clipboard pastes belong only to the active composer. */
25
+ pasteText(text: string): void;
26
+ handleInput(data: string): void;
27
+ render(width: number): readonly string[];
28
+ }
29
+ export {};
@@ -0,0 +1,17 @@
1
+ export interface BtwHistoryTurn {
2
+ question: string;
3
+ answer: string;
4
+ status: "running" | "complete" | "cancelled" | "error" | "interrupted";
5
+ createdAt: number;
6
+ updatedAt: number;
7
+ error?: string;
8
+ }
9
+ export interface BtwHistoryRecord extends BtwHistoryTurn {
10
+ id: string;
11
+ leafId: string | null;
12
+ followUps?: readonly BtwHistoryTurn[];
13
+ }
14
+ export declare function getBtwLatestTurn(record: BtwHistoryRecord): BtwHistoryTurn;
15
+ export declare function getBtwTurns(record: BtwHistoryRecord): readonly BtwHistoryTurn[];
16
+ /** Copy the most recent nonblank answer, preserving its original whitespace. */
17
+ export declare function getBtwCopyText(record: BtwHistoryRecord): string | undefined;
@@ -0,0 +1,26 @@
1
+ import { type TUI } from "../index.js";
2
+ import { OverlayPanel } from "../chrome/overlay-box.js";
3
+ interface BtwPanelComponentOptions {
4
+ question: string;
5
+ tui: TUI;
6
+ canBranch?: () => boolean;
7
+ canFollowUp?: () => boolean;
8
+ }
9
+ export declare class BtwPanelComponent extends OverlayPanel {
10
+ #private;
11
+ constructor(options: BtwPanelComponentOptions);
12
+ appendText(delta: string): void;
13
+ setAnswer(text: string): void;
14
+ markComplete(): void;
15
+ /** Visual confirmation that `c` copied the answer to the clipboard. */
16
+ markCopied(): void;
17
+ /** Shows that the completed answer is being promoted into the chat session. */
18
+ markBranching(): void;
19
+ markAborted(): void;
20
+ markError(message: string): void;
21
+ isBranchable(): boolean;
22
+ isCopyable(): boolean;
23
+ getCopyText(): string | undefined;
24
+ close(): void;
25
+ }
26
+ export {};
@@ -0,0 +1,36 @@
1
+ /** Anchored `/cleanse` overlay rendering the host's live board above the editor. */
2
+ import { type TUI } from "../index.js";
3
+ import type { AgentProgress } from "../tools/task.js";
4
+ import { OverlayPanel } from "../chrome/overlay-box.js";
5
+ import type { CleanseBoardModel, CleanseCheckerDescriptor, CleanseCheckResult, CleanseAssignment, CleanseAgentOutcome } from "../apps/cleanse-board.js";
6
+ export type CleansePanelRunStatus = "clean" | "unresolved" | "unsupported" | "cancelled";
7
+ interface CleansePanelComponentOptions {
8
+ model: CleanseBoardModel;
9
+ /** Free-form request shown in the header; omitted for checker-discovery runs. */
10
+ request?: string;
11
+ tui: TUI;
12
+ }
13
+ export declare class CleansePanelComponent extends OverlayPanel {
14
+ #private;
15
+ readonly interactive = true;
16
+ constructor(options: CleansePanelComponentOptions);
17
+ log(text: string): void;
18
+ /** Permanent line styled as a failure (the core's stderr-equivalent). */
19
+ logError(text: string): void;
20
+ phase(text: string | undefined): void;
21
+ checkerStarted(checker: CleanseCheckerDescriptor): void;
22
+ checkerFinished(check: CleanseCheckResult, durationMs: number): void;
23
+ repairFinished(): void;
24
+ agentStarted(name: string, assignment: CleanseAssignment): void;
25
+ agentProgress(name: string, progress: AgentProgress): void;
26
+ agentFinished(outcome: CleanseAgentOutcome, assignment: CleanseAssignment): void;
27
+ /** Stop the live area; the panel stays mounted until the user dismisses it. */
28
+ close(): void;
29
+ /** Record the settled run result and switch the footer to its dismiss hint. */
30
+ finish(status: CleansePanelRunStatus): void;
31
+ /** Record an unexpected failure and switch the footer to its dismiss hint. */
32
+ markError(message: string): void;
33
+ /** Release the repaint timer during teardown. */
34
+ dispose(): void;
35
+ }
36
+ export {};
@@ -0,0 +1,52 @@
1
+ import { type Component, type OverlayHandle, type OverlayOptions } from "../index.js";
2
+ /** The active Codex account fields retained between status refreshes. */
3
+ export interface CodexResetUsageSnapshot {
4
+ /** When this usage report was observed, if supplied by the provider. */
5
+ observedAt?: number;
6
+ /** Weekly usage, its quota identity, and its previously scheduled reset deadline. */
7
+ sevenDay?: {
8
+ percent: number;
9
+ resetsAt?: number;
10
+ tier?: string;
11
+ plan?: string;
12
+ };
13
+ savedResets?: number;
14
+ }
15
+ /** A detected Codex quota event that can trigger the fireworks presentation. */
16
+ export type CodexResetFireworksEvent = {
17
+ kind: "unscheduled-weekly-reset";
18
+ } | {
19
+ kind: "saved-reset-banked";
20
+ added: number;
21
+ available: number;
22
+ };
23
+ interface CodexResetFireworksHost {
24
+ ui: {
25
+ showOverlay(component: Component, options?: OverlayOptions): OverlayHandle;
26
+ setFocus(component: Component): void;
27
+ requestRender(): void;
28
+ readonly terminal: {
29
+ readonly rows: number;
30
+ };
31
+ };
32
+ }
33
+ /**
34
+ * Compare consecutive reports for one Codex account. A saved-reset grant takes
35
+ * precedence when both changes arrive in the same report. A verified decrease,
36
+ * or a prior positive balance becoming unavailable, suppresses the weekly event
37
+ * because the user may have redeemed a credit. Other weekly usage drops are
38
+ * celebrated only when the provider advances the quota deadline before the
39
+ * previously scheduled reset.
40
+ */
41
+ export declare function detectCodexResetFireworks(previous: CodexResetUsageSnapshot, current: CodexResetUsageSnapshot): CodexResetFireworksEvent | undefined;
42
+ /** Owns the at-most-one modal celebration lifecycle for an interactive session. */
43
+ export declare class CodexResetFireworksController {
44
+ #private;
45
+ private readonly host;
46
+ constructor(host: CodexResetFireworksHost);
47
+ /** Present a celebration unless another one already owns the modal overlay. */
48
+ show(event: CodexResetFireworksEvent): boolean;
49
+ /** Stop the active celebration and release its overlay, if present. */
50
+ dispose(): void;
51
+ }
52
+ export {};
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Live preview for the `composer.shape` setting and the setup-wizard composer
3
+ * scene. Chrome is rendered through the same {@link ComposerStyle} objects the
4
+ * real editor uses, and status rows come from the live
5
+ * {@link ComposerPreviewStatusSource} (the session's StatusLineComponent) —
6
+ * nothing about the preview is a re-implementation. Prompt text is a preview
7
+ * stand-in, and the `session_name` segment falls back to a stand-in title
8
+ * (passed via `previewTitle`) when the session is unnamed.
9
+ */
10
+ import { type Component } from "../index.js";
11
+ import type { ComposerShape } from "./composer-shape-registry.js";
12
+ /**
13
+ * Real status renderer the preview borrows rows from — structurally satisfied
14
+ * by {@link StatusLineComponent}. Layout is parameterized so a preview can
15
+ * render a candidate shape's placement instead of the active one.
16
+ */
17
+ export interface ComposerPreviewStatusSource {
18
+ /** Powerline bar with the context gauge (box top border content). */
19
+ getTopBorder(width: number, previewTitle?: string): {
20
+ content: string;
21
+ width: number;
22
+ };
23
+ /** Flush soft-capped powerline band (band composer top row). */
24
+ getBandTopBorder(width: number, previewTitle?: string): {
25
+ content: string;
26
+ width: number;
27
+ };
28
+ /** Plain right-group chip (claude top rule content). */
29
+ getStandaloneTopBorder(width: number, previewTitle?: string): {
30
+ content: string;
31
+ width: number;
32
+ };
33
+ /** Plain standalone bottom bar carrying the given segment groups. */
34
+ renderBottomBar(width: number, groups: "left" | "full", previewTitle?: string): string;
35
+ }
36
+ export interface ComposerShapePreviewOptions {
37
+ requestRender?: () => void;
38
+ /** Live status renderer; omitted (tests), the chrome renders without status rows. */
39
+ status?: ComposerPreviewStatusSource;
40
+ }
41
+ export declare function renderComposerShapePreview(shape: ComposerShape, width: number, status?: ComposerPreviewStatusSource): readonly string[];
42
+ export declare class ComposerShapePreview implements Component {
43
+ #private;
44
+ constructor(initialValue?: ComposerShape, options?: ComposerShapePreviewOptions);
45
+ setValue(shape: ComposerShape): void;
46
+ render(width: number): readonly string[];
47
+ }
@@ -0,0 +1,50 @@
1
+ import { type ComposerStyle } from "../index.js";
2
+ import type { SubmenuOption } from "./settings-defs.js";
3
+ /** Composer shape id; extensions may register additional values at runtime. */
4
+ export type ComposerShape = string;
5
+ /** Built-in composer choices and their shared settings/setup copy. */
6
+ export declare const BUILTIN_COMPOSER_SHAPES: readonly [{
7
+ readonly value: "band";
8
+ readonly label: "Status Band (Default)";
9
+ readonly description: "Flush soft-capped status band above a curved prompt, no frame";
10
+ }, {
11
+ readonly value: "box";
12
+ readonly label: "Rounded Box";
13
+ readonly description: "Status line embedded in top border, compact 2-line prompt";
14
+ }, {
15
+ readonly value: "claude";
16
+ readonly label: "Claude Code";
17
+ readonly description: "Full-width horizontal rules above and below, status line at bottom";
18
+ }, {
19
+ readonly value: "pi";
20
+ readonly label: "Pi";
21
+ readonly description: "Framed horizontal rules with status line at bottom";
22
+ }, {
23
+ readonly value: "borderless";
24
+ readonly label: "Borderless";
25
+ readonly description: "Clean prompt glyph with status line at bottom, no box borders";
26
+ }, {
27
+ readonly value: "rule";
28
+ readonly label: "Top Rule Dock";
29
+ readonly description: "Single top rule with status docked onto it and below";
30
+ }, {
31
+ readonly value: "field";
32
+ readonly label: "Compact Field";
33
+ readonly description: "Filled one-row field with accent end caps";
34
+ }, {
35
+ readonly value: "rail";
36
+ readonly label: "Accent Rail";
37
+ readonly description: "Filled one-row field anchored by a single accent rail";
38
+ }];
39
+ /** Built-in composer ids used by tests and non-runtime consumers. */
40
+ export declare const COMPOSER_SHAPE_VALUES: ("band" | "borderless" | "box" | "claude" | "field" | "pi" | "rail" | "rule")[];
41
+ /** Visual composer style and selector copy registered by an extension. */
42
+ export interface ComposerShapeDefinition {
43
+ label: string;
44
+ description?: string;
45
+ style: ComposerStyle;
46
+ }
47
+ /** Install one extension composer shape into rendering and selector registries. */
48
+ export declare function installExtensionComposerShape(definition: ComposerShapeDefinition): () => void;
49
+ /** Available built-in and extension composer choices in selector order. */
50
+ export declare function getComposerShapeOptions(): readonly SubmenuOption[];
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Fullscreen `/copy` picker over the transcript itself.
3
+ *
4
+ * Replays the current branch with {@link ChatTranscriptBuilder} on the
5
+ * alternate screen and moves the same dotted outline the esc-esc rewind
6
+ * selector uses over the rendered items; Enter copies the outlined turn's
7
+ * text. Right descends into the turn's inner blocks — fenced code, `>`-quotes,
8
+ * bash/eval commands, tool output, and links — replacing the turn's rendered
9
+ * region with a stacked, syntax-highlighted block view whose outline steps per
10
+ * block; Left/Esc ascend back to the transcript. Every block caption carries a
11
+ * clickable `⧉ copy` control and link blocks add `↗ open`; the overlay is
12
+ * fullscreen, so the terminal reports clicks here (SGR mouse) even though the
13
+ * main transcript never captures the mouse. Keyboard: Enter copies, `o` opens.
14
+ * A URL that wrapped across terminal rows therefore needs neither a careful
15
+ * mouse selection nor cmd-click.
16
+ */
17
+ import type { AgentTool } from "@oh-my-pi/pi-agent-core";
18
+ import { type Component, type TUI } from "../index.js";
19
+ import type { MessageRenderer } from "../chat/extension-types.js";
20
+ import { type TranscriptEntryLike as TranscriptEntry } from "../chat/transcript-entry.js";
21
+ export interface CopySelectorDeps {
22
+ ui: TUI;
23
+ getTool?: (name: string) => AgentTool | undefined;
24
+ /** Whether the active registry entry came from a built-in factory. */
25
+ isBuiltInTool?: (name: string) => boolean;
26
+ getMessageRenderer?: (customType: string) => MessageRenderer | undefined;
27
+ cwd: string;
28
+ hideThinkingBlock?: () => boolean;
29
+ proseOnlyThinking?: () => boolean;
30
+ linkTargets?: ReadonlyMap<string, string>;
31
+ requestRender: () => void;
32
+ /** The outlined content was chosen — copy it. `label` feeds the status line. */
33
+ onPick: (content: string, label: string) => void;
34
+ /** `o` on a link block — open `href` with the system opener. Absent: `o` is ignored. */
35
+ onOpen?: (href: string, label: string) => void;
36
+ onCancel: () => void;
37
+ }
38
+ export declare class CopySelectorComponent implements Component {
39
+ #private;
40
+ private readonly deps;
41
+ constructor(entries: TranscriptEntry[], deps: CopySelectorDeps);
42
+ /** Number of copyable transcript items; hosts skip mounting when zero. */
43
+ get targetCount(): number;
44
+ invalidate(): void;
45
+ dispose(): void;
46
+ handleInput(data: string): void;
47
+ render(width: number): readonly string[];
48
+ }
@@ -0,0 +1,63 @@
1
+ import type { AgentMessage } from "@oh-my-pi/pi-agent-core";
2
+ import type { ToolCall } from "@oh-my-pi/pi-ai";
3
+ /** A fenced code block extracted from assistant markdown. */
4
+ export interface CodeBlock {
5
+ /** Info string after the opening fence (language id), trimmed. */
6
+ lang: string;
7
+ /** Block body with the trailing newline stripped. */
8
+ code: string;
9
+ }
10
+ /** A blockquote block: a maximal run of `>`-prefixed lines from markdown. */
11
+ export interface QuoteBlock {
12
+ /** Block body with each line's `>` marker (and one optional space) removed. */
13
+ text: string;
14
+ }
15
+ /** A drillable block within an assistant message, in document order. */
16
+ export type MessageBlock = ({
17
+ kind: "code";
18
+ } & CodeBlock) | ({
19
+ kind: "quote";
20
+ } & QuoteBlock);
21
+ /** A runnable command found in the transcript. */
22
+ export interface LastCommand {
23
+ kind: "bash" | "eval";
24
+ code: string;
25
+ /** Highlight language: "bash" for bash, or the resolved eval language ("python"/"javascript"). */
26
+ language: string;
27
+ }
28
+ /**
29
+ * Split assistant markdown into drillable blocks — fenced code and `>`-quoted
30
+ * runs — in document order. Fences mask their bodies, so a `>` line inside a
31
+ * code block is never mistaken for a quote. An unclosed fence is treated as
32
+ * ordinary text, matching the fenced-block grammar.
33
+ */
34
+ export declare function extractBlocks(text: string): MessageBlock[];
35
+ /** Extract fenced code blocks from assistant markdown, in document order. */
36
+ export declare function extractCodeBlocks(text: string): CodeBlock[];
37
+ /** Walk the transcript backwards for the most recent fenced assistant code block. */
38
+ export declare function extractLastCodeBlock(messages: readonly AgentMessage[]): CodeBlock | undefined;
39
+ /** Extract `>`-quoted blocks from assistant markdown, in document order. */
40
+ export declare function extractQuoteBlocks(text: string): QuoteBlock[];
41
+ /** A hyperlink found in assistant markdown: inline `[text](href)`, `<autolink>`, bare URL, or reference link. */
42
+ export interface LinkTarget {
43
+ /** Visible link label flattened to one display row; falls back to `href` when empty. */
44
+ text: string;
45
+ /** Absolute http(s) URL as marked resolved it. */
46
+ href: string;
47
+ }
48
+ /**
49
+ * Hyperlinks the renderer would draw for `text`, in document order and
50
+ * deduplicated by href. Tokenization is the renderer's own
51
+ * ({@link extractMarkdownLinks}), so fenced code, code spans, escapes,
52
+ * reference definitions and GFM autolink rules agree with the screen. Only
53
+ * http(s) targets qualify: the result feeds both the clipboard and the system
54
+ * opener, and a `mailto:`/`file:` destination is not something to hand to
55
+ * either from a transcript.
56
+ */
57
+ export declare function extractLinks(text: string): LinkTarget[];
58
+ /** Walk the transcript backwards for the most recent link in an assistant message. */
59
+ export declare function extractLastLink(messages: readonly AgentMessage[]): LinkTarget | undefined;
60
+ /** Runnable command carried by a `bash`/`eval` tool call, if any. */
61
+ export declare function commandFromToolCall(tc: ToolCall): LastCommand | undefined;
62
+ /** Walk the transcript backwards for the most recent bash command or eval code. */
63
+ export declare function extractLastCommand(messages: readonly AgentMessage[]): LastCommand | undefined;
@@ -0,0 +1,13 @@
1
+ import { Container } from "../index.js";
2
+ /**
3
+ * A persistent error banner pinned above the editor. Unlike the transcript
4
+ * "Error: …" line (which scrolls away as the conversation grows), this stays in
5
+ * the fixed region directly above the input so a turn that ended on a provider
6
+ * error — e.g. Anthropic's "Output blocked by content filtering policy" — cannot
7
+ * be missed. It is cleared when the next turn starts. The message wraps to the
8
+ * render width and keeps {@link MAX_BANNER_ROWS} rows; the expand hint on the
9
+ * overflow row reveals the full body inline in the transcript.
10
+ */
11
+ export declare class ErrorBannerComponent extends Container {
12
+ constructor(message: string);
13
+ }
@@ -0,0 +1,10 @@
1
+ /** Strip ANSI/C0/C1/malformed unicode, then expand tabs. Call before theming. */
2
+ export declare function sanitizeDisplayText(text: string): string;
3
+ /** Collapse newlines to spaces so a hostile title cannot inject extra TUI rows (no trimming). */
4
+ export declare function sanitizeDisplaySingleLine(text: string): string;
5
+ /** Collapse newlines so a hostile title cannot inject extra TUI rows. */
6
+ export declare function sanitizeDisplayLine(text: string): string;
7
+ /** Like {@link sanitizeDisplayText}, dropping empty results. */
8
+ export declare function sanitizeDisplayField(text: string | undefined | null): string | undefined;
9
+ /** Like {@link sanitizeDisplayLine}, dropping empty results. */
10
+ export declare function sanitizeDisplayLineField(text: string | undefined | null): string | undefined;
@@ -0,0 +1,63 @@
1
+ /**
2
+ * ExtensionDashboard - Fullscreen alternate-screen control center for extensions.
3
+ *
4
+ * Chrome mirrors the `/settings` overlay: a titled rounded box, a shared
5
+ * {@link TabBar} for provider selection, and a two-column body (inventory list |
6
+ * inspector). Both panes are mouse-aware — wheel scrolls, hover highlights, and
7
+ * clicks select/activate — routed from a single SGR-mouse handler.
8
+ *
9
+ * Navigation:
10
+ * - Tab/Shift+Tab or ←/→: switch provider tab
11
+ * - Up/Down or wheel: move list selection
12
+ * - Space/Enter or click: toggle selected item (or provider master switch)
13
+ * - Wheel over the inspector, or PageUp/PageDown when the inspector overflows: scroll the detail pane
14
+ * - Esc: clear search (if active) then close
15
+ */
16
+ import type { Component } from "../../tui.js";
17
+ import { type Tab } from "../../components/tab-bar.js";
18
+ import { type ToolRuntimeSource } from "./inspector-panel.js";
19
+ import type { ExtensionInspectorSource } from "./inspector-model.js";
20
+ import type { MCPRuntimeSource } from "./mcp-runtime.js";
21
+ import { type Extension, type ExtensionProvider, type ProviderTab } from "./types.js";
22
+ /** Runtime operations remain owned by the embedding application. */
23
+ export interface ExtensionDashboardRuntime {
24
+ getDisabledExtensions(): string[];
25
+ setDisabledExtensions(ids: string[]): void;
26
+ getProviders(): readonly ExtensionProvider[];
27
+ loadExtensions(disabledIds: string[]): Promise<Extension[]>;
28
+ toggleProvider(providerId: string): boolean;
29
+ toggleUserSource(providerId: string): boolean;
30
+ persistMcpToggle(name: string, enabled: boolean, sourcePath?: string): Promise<void>;
31
+ applyMcpToggle(name: string, enabled: boolean): Promise<void>;
32
+ subscribeMcpChanges(onChange: () => void): Array<() => void>;
33
+ mcpSource?: MCPRuntimeSource;
34
+ inspectorSource?: ExtensionInspectorSource;
35
+ }
36
+ export interface ExtensionDashboardOptions {
37
+ runtime: ExtensionDashboardRuntime;
38
+ terminalHeight?: number;
39
+ toolSource?: ToolRuntimeSource;
40
+ }
41
+ /**
42
+ * Map dashboard provider tabs to {@link TabBar} tabs. Empty *enabled* providers
43
+ * are muted — skipped by keyboard nav and unclickable; disabled providers stay
44
+ * selectable (with a leading disabled glyph) so their master switch can be
45
+ * re-enabled from the list. The "all" tab is never muted or marked.
46
+ */
47
+ export declare function buildTabBarTabs(tabs: ProviderTab[]): Tab[];
48
+ export declare class ExtensionDashboard implements Component {
49
+ #private;
50
+ onClose?: () => void;
51
+ onRequestRender?: () => void;
52
+ private constructor();
53
+ static create(options: ExtensionDashboardOptions): Promise<ExtensionDashboard>;
54
+ /**
55
+ * Fullscreen frame: titled top border, the tab row(s), a divider, the
56
+ * two-column body sized to fill the viewport, a divider, the footer hint, and
57
+ * the bottom border.
58
+ */
59
+ render(width: number): readonly string[];
60
+ invalidate(): void;
61
+ handleInput(data: string): void;
62
+ dispose(): void;
63
+ }
@@ -0,0 +1,54 @@
1
+ /**
2
+ * ExtensionList - Inventory list with Master Switch and fuzzy search.
3
+ *
4
+ * When viewing a specific provider (not "ALL"), Row #0 is the Master Switch
5
+ * that toggles the entire provider. All items below are dimmed when the
6
+ * master switch is off.
7
+ */
8
+ import type { Component } from "../../tui.js";
9
+ import { type ToolRuntimeSource } from "./inspector-model.js";
10
+ import { type MCPRuntimeSource } from "./mcp-runtime.js";
11
+ import { type Extension, type ExtensionKind, type ExtensionProvider } from "./types.js";
12
+ export interface ExtensionListCallbacks {
13
+ getProviders?: () => readonly ExtensionProvider[];
14
+ onSelectionChange?: (extension: Extension | null) => void;
15
+ onToggle?: (extensionId: string, enabled: boolean) => void;
16
+ onMasterToggle?: (providerId: string) => void;
17
+ onUserSourceToggle?: (providerId: string) => void;
18
+ masterSwitchProvider?: string | null;
19
+ mcpSource?: MCPRuntimeSource;
20
+ toolSource?: ToolRuntimeSource;
21
+ }
22
+ export declare class ExtensionList implements Component {
23
+ #private;
24
+ constructor(extensions: Extension[], callbacks?: ExtensionListCallbacks, maxVisible?: number);
25
+ setMaxVisible(maxVisible: number): void;
26
+ setExtensions(extensions: Extension[]): void;
27
+ setFocused(focused: boolean): void;
28
+ setMasterSwitchProvider(providerId: string | null): void;
29
+ setMcpSource(source: MCPRuntimeSource | undefined): void;
30
+ setToolSource(source: ToolRuntimeSource | undefined): void;
31
+ getSearchQuery(): string;
32
+ resetSelection(): void;
33
+ getSelectedExtension(): Extension | null;
34
+ /** Get the currently selected kind header (for preview purposes) */
35
+ getSelectedKind(): ExtensionKind | null;
36
+ setSearchQuery(query: string): void;
37
+ clearSearch(): void;
38
+ invalidate(): void;
39
+ render(width: number): readonly string[];
40
+ /** Highlight the row under the pointer (null clears). */
41
+ setHoverIndex(index: number | null): void;
42
+ /**
43
+ * Map a 0-based line within this component's render to the absolute list-item
44
+ * index, or null when the line is the search banner, a padding row, or outside
45
+ * the visible window. The first two lines are the search banner and a blank
46
+ * separator; item rows follow, windowed at the current scroll offset.
47
+ */
48
+ hitTest(line: number): number | null;
49
+ /** Wheel notch: move the selection (and the inspector) one row. */
50
+ handleWheel(delta: -1 | 1): void;
51
+ /** Click: select the row under the pointer, or activate it when already selected. */
52
+ handleClick(line: number): void;
53
+ handleInput(data: string): void;
54
+ }