@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.
- package/CHANGELOG.md +23 -0
- package/README.md +43 -0
- package/dist/types/app-keybindings.d.ts +395 -0
- package/dist/types/apps/autoresearch-dashboard.d.ts +43 -0
- package/dist/types/apps/autoresearch-data.d.ts +15 -0
- package/dist/types/apps/cleanse-board.d.ts +66 -0
- package/dist/types/apps/cleanse-picker.d.ts +23 -0
- package/dist/types/apps/debug/log-formatting.d.ts +6 -0
- package/dist/types/apps/debug/log-viewer.d.ts +81 -0
- package/dist/types/apps/debug/protocol-probe.d.ts +42 -0
- package/dist/types/apps/debug/raw-sse-buffer.d.ts +58 -0
- package/dist/types/apps/debug/raw-sse.d.ts +26 -0
- package/dist/types/apps/debug/terminal-info.d.ts +34 -0
- package/dist/types/apps/debug/viewer-frame.d.ts +52 -0
- package/dist/types/apps/git/avatar.d.ts +9 -0
- package/dist/types/apps/git/colors.d.ts +49 -0
- package/dist/types/apps/git/diff-pane.d.ts +188 -0
- package/dist/types/apps/git/git-tui.d.ts +66 -0
- package/dist/types/apps/git/sidebar.d.ts +149 -0
- package/dist/types/apps/git/state.d.ts +117 -0
- package/dist/types/apps/if-bench-board.d.ts +75 -0
- package/dist/types/apps/live-visualizer.d.ts +33 -0
- package/dist/types/apps/ps-data.d.ts +51 -0
- package/dist/types/apps/ps-top.d.ts +33 -0
- package/dist/types/apps/session-picker.d.ts +26 -0
- package/dist/types/apps/setup-model-picker.d.ts +13 -0
- package/dist/types/apps/standalone-picker.d.ts +42 -0
- package/dist/types/autocomplete.d.ts +4 -0
- package/dist/types/chat/advisor-message.d.ts +11 -0
- package/dist/types/chat/assistant-message.d.ts +106 -0
- package/dist/types/chat/background-tan-message.d.ts +9 -0
- package/dist/types/chat/bash-execution.d.ts +47 -0
- package/dist/types/chat/cache-invalidation-marker.d.ts +50 -0
- package/dist/types/chat/chat-transcript-builder.d.ts +50 -0
- package/dist/types/chat/collab-prompt-message.d.ts +10 -0
- package/dist/types/chat/compaction-summary-message.d.ts +54 -0
- package/dist/types/chat/custom-message.d.ts +10 -0
- package/dist/types/chat/display-preferences.d.ts +13 -0
- package/dist/types/chat/eval-execution.d.ts +29 -0
- package/dist/types/chat/execution-shared.d.ts +51 -0
- package/dist/types/chat/extension-types.d.ts +28 -0
- package/dist/types/chat/hook-message.d.ts +10 -0
- package/dist/types/chat/image-loading.d.ts +46 -0
- package/dist/types/chat/late-diagnostics-message.d.ts +21 -0
- package/dist/types/chat/messages.d.ts +189 -0
- package/dist/types/chat/reaction.d.ts +30 -0
- package/dist/types/chat/read-target.d.ts +4 -0
- package/dist/types/chat/read-tool-group.d.ts +67 -0
- package/dist/types/chat/served-model-marker.d.ts +47 -0
- package/dist/types/chat/skill-message.d.ts +33 -0
- package/dist/types/chat/skill-title-input.d.ts +14 -0
- package/dist/types/chat/stripped-tool-calls-placeholder.d.ts +12 -0
- package/dist/types/chat/thinking-display.d.ts +12 -0
- package/dist/types/chat/todo-reminder.d.ts +13 -0
- package/dist/types/chat/tool-execution.d.ts +138 -0
- package/dist/types/chat/transcript-browser.d.ts +93 -0
- package/dist/types/chat/transcript-entry.d.ts +45 -0
- package/dist/types/chat/transcript-outline.d.ts +86 -0
- package/dist/types/chat/transcript-render-helpers.d.ts +92 -0
- package/dist/types/chat/ttsr-notification.d.ts +23 -0
- package/dist/types/chat/user-message.d.ts +52 -0
- package/dist/types/chrome/chat-block.d.ts +64 -0
- package/dist/types/chrome/collab-qrcode.d.ts +28 -0
- package/dist/types/chrome/context-thresholds.d.ts +10 -0
- package/dist/types/chrome/countdown-timer.d.ts +14 -0
- package/dist/types/chrome/diff.d.ts +14 -0
- package/dist/types/chrome/dynamic-border.d.ts +16 -0
- package/dist/types/chrome/error-block.d.ts +17 -0
- package/dist/types/chrome/form-theme.d.ts +3 -0
- package/dist/types/chrome/format.d.ts +12 -0
- package/dist/types/chrome/index.d.ts +20 -0
- package/dist/types/chrome/keybinding-hints.d.ts +40 -0
- package/dist/types/chrome/live-board.d.ts +23 -0
- package/dist/types/chrome/local-date.d.ts +4 -0
- package/dist/types/chrome/message-divider.d.ts +22 -0
- package/dist/types/chrome/message-frame.d.ts +52 -0
- package/dist/types/chrome/message-notice.d.ts +35 -0
- package/dist/types/chrome/overlay-box.d.ts +74 -0
- package/dist/types/chrome/qrcode.d.ts +48 -0
- package/dist/types/chrome/segment-track.d.ts +27 -0
- package/dist/types/chrome/select-list-mouse-routing.d.ts +4 -0
- package/dist/types/chrome/selector-helpers.d.ts +52 -0
- package/dist/types/chrome/shared.d.ts +5 -0
- package/dist/types/chrome/streaming-panel.d.ts +19 -0
- package/dist/types/chrome/tool-activity.d.ts +17 -0
- package/dist/types/chrome/transcript-container.d.ts +129 -0
- package/dist/types/chrome/transcript-status.d.ts +12 -0
- package/dist/types/chrome/visual-truncate.d.ts +19 -0
- package/dist/types/components/disclosure.d.ts +42 -0
- package/dist/types/components/form.d.ts +130 -0
- package/dist/types/components/key-value-list.d.ts +24 -0
- package/dist/types/components/layout/geometry.d.ts +73 -0
- package/dist/types/components/layout/row.d.ts +55 -0
- package/dist/types/components/layout/split-pane.d.ts +80 -0
- package/dist/types/components/layout/stack.d.ts +50 -0
- package/dist/types/components/menu-selection.d.ts +71 -0
- package/dist/types/components/metric.d.ts +44 -0
- package/dist/types/components/progress-bar.d.ts +36 -0
- package/dist/types/components/scroll-view.d.ts +53 -19
- package/dist/types/components/scroll-viewport.d.ts +46 -0
- package/dist/types/components/section.d.ts +19 -0
- package/dist/types/components/select-list.d.ts +46 -2
- package/dist/types/components/settings-list.d.ts +20 -0
- package/dist/types/components/table.d.ts +32 -0
- package/dist/types/components/tree-view.d.ts +130 -0
- package/dist/types/components/wizard-step.d.ts +60 -0
- package/dist/types/hotkeys-markdown.d.ts +7 -0
- package/dist/types/index.d.ts +17 -0
- package/dist/types/keybinding-matchers.d.ts +35 -0
- package/dist/types/keys.d.ts +2 -2
- package/dist/types/lang-from-path.d.ts +9 -0
- package/dist/types/overlays/advisor-config.d.ts +114 -0
- package/dist/types/overlays/agent-activity.d.ts +41 -0
- package/dist/types/overlays/agent-hub-projection.d.ts +33 -0
- package/dist/types/overlays/agent-hub-renderer.d.ts +53 -0
- package/dist/types/overlays/agent-hub-types.d.ts +99 -0
- package/dist/types/overlays/agent-hub.d.ts +126 -0
- package/dist/types/overlays/agent-transcript-viewer.d.ts +71 -0
- package/dist/types/overlays/agents-hub.d.ts +72 -0
- package/dist/types/overlays/ask-dialog.d.ts +88 -0
- package/dist/types/overlays/bordered-loader.d.ts +11 -0
- package/dist/types/overlays/btw-history-panel.d.ts +29 -0
- package/dist/types/overlays/btw-history.d.ts +17 -0
- package/dist/types/overlays/btw-panel.d.ts +26 -0
- package/dist/types/overlays/cleanse-panel.d.ts +36 -0
- package/dist/types/overlays/codex-reset-fireworks.d.ts +52 -0
- package/dist/types/overlays/composer-shape-preview.d.ts +47 -0
- package/dist/types/overlays/composer-shape-registry.d.ts +50 -0
- package/dist/types/overlays/copy-selector.d.ts +48 -0
- package/dist/types/overlays/copy-targets.d.ts +63 -0
- package/dist/types/overlays/error-banner.d.ts +13 -0
- package/dist/types/overlays/extensions/display-text.d.ts +10 -0
- package/dist/types/overlays/extensions/extension-dashboard.d.ts +63 -0
- package/dist/types/overlays/extensions/extension-list.d.ts +54 -0
- package/dist/types/overlays/extensions/inspector-model.d.ts +109 -0
- package/dist/types/overlays/extensions/inspector-panel.d.ts +17 -0
- package/dist/types/overlays/extensions/live-tool-session.d.ts +28 -0
- package/dist/types/overlays/extensions/mcp-runtime.d.ts +107 -0
- package/dist/types/overlays/extensions/state-manager.d.ts +42 -0
- package/dist/types/overlays/extensions/types.d.ts +165 -0
- package/dist/types/overlays/history-search.d.ts +16 -0
- package/dist/types/overlays/hook-editor.d.ts +44 -0
- package/dist/types/overlays/hook-input.d.ts +20 -0
- package/dist/types/overlays/hook-selector.d.ts +71 -0
- package/dist/types/overlays/hub-frame.d.ts +77 -0
- package/dist/types/overlays/login-dialog.d.ts +43 -0
- package/dist/types/overlays/logout-account-selector.d.ts +15 -0
- package/dist/types/overlays/mcp-add-wizard.d.ts +87 -0
- package/dist/types/overlays/model-browser.d.ts +213 -0
- package/dist/types/overlays/model-hub.d.ts +72 -0
- package/dist/types/overlays/model-picker.d.ts +74 -0
- package/dist/types/overlays/model-selector.d.ts +52 -0
- package/dist/types/overlays/move-overlay.d.ts +39 -0
- package/dist/types/overlays/oauth-selector.d.ts +41 -0
- package/dist/types/overlays/omfg-panel.d.ts +20 -0
- package/dist/types/overlays/pause-screen.d.ts +43 -0
- package/dist/types/overlays/plan-review-overlay.d.ts +89 -0
- package/dist/types/overlays/plan-save-overlay.d.ts +19 -0
- package/dist/types/overlays/plan-toc.d.ts +41 -0
- package/dist/types/overlays/plugin-selector.d.ts +28 -0
- package/dist/types/overlays/plugin-settings.d.ts +180 -0
- package/dist/types/overlays/queue-mode-selector.d.ts +11 -0
- package/dist/types/overlays/reset-usage-selector.d.ts +23 -0
- package/dist/types/overlays/rewind-selector.d.ts +61 -0
- package/dist/types/overlays/running-subagent-badge.d.ts +6 -0
- package/dist/types/overlays/session-account-selector.d.ts +24 -0
- package/dist/types/overlays/session-info-overlay.d.ts +17 -0
- package/dist/types/overlays/session-observer-registry.d.ts +77 -0
- package/dist/types/overlays/session-selector.d.ts +131 -0
- package/dist/types/overlays/settings-defs.d.ts +119 -0
- package/dist/types/overlays/settings-selector.d.ts +73 -0
- package/dist/types/overlays/show-images-selector.d.ts +11 -0
- package/dist/types/overlays/snapcompact-shape-preview.d.ts +31 -0
- package/dist/types/overlays/theme-selector.d.ts +12 -0
- package/dist/types/overlays/thinking-selector.d.ts +12 -0
- package/dist/types/overlays/tiny-title-download-progress.d.ts +21 -0
- package/dist/types/overlays/tree-selector.d.ts +92 -0
- package/dist/types/overlays/usage-dashboard.d.ts +94 -0
- package/dist/types/overlays/usage-display.d.ts +5 -0
- package/dist/types/overlays/usage-row.d.ts +17 -0
- package/dist/types/prompt/attachment-chips.d.ts +19 -0
- package/dist/types/prompt/composer-attachments.d.ts +71 -0
- package/dist/types/prompt/composer-cache.d.ts +37 -0
- package/dist/types/prompt/composer.d.ts +159 -0
- package/dist/types/prompt/custom-editor.d.ts +261 -0
- package/dist/types/prompt/editor-top-gap.d.ts +18 -0
- package/dist/types/prompt/emoji-autocomplete.d.ts +16 -0
- package/dist/types/prompt/github-ref-autocomplete.d.ts +35 -0
- package/dist/types/prompt/gradient-highlight.d.ts +32 -0
- package/dist/types/prompt/image-format.d.ts +4 -0
- package/dist/types/prompt/image-references.d.ts +26 -0
- package/dist/types/prompt/interactive-context-helpers.d.ts +43 -0
- package/dist/types/prompt/internal-url-autocomplete.d.ts +56 -0
- package/dist/types/prompt/macos-spelling.d.ts +44 -0
- package/dist/types/prompt/magic-keyword-boundary.d.ts +9 -0
- package/dist/types/prompt/magic-keywords.d.ts +26 -0
- package/dist/types/prompt/markdown-prose.d.ts +15 -0
- package/dist/types/prompt/model-mention-autocomplete.d.ts +25 -0
- package/dist/types/prompt/model-mention-syntax.d.ts +24 -0
- package/dist/types/prompt/orchestrate.d.ts +13 -0
- package/dist/types/prompt/prompt-action-autocomplete.d.ts +56 -0
- package/dist/types/prompt/queue-input.d.ts +8 -0
- package/dist/types/prompt/skill-tokens.d.ts +13 -0
- package/dist/types/prompt/tools-markdown.d.ts +12 -0
- package/dist/types/prompt/ultrathink.d.ts +13 -0
- package/dist/types/prompt/usage-amounts.d.ts +26 -0
- package/dist/types/prompt/video.d.ts +18 -0
- package/dist/types/prompt/welcome.d.ts +83 -0
- package/dist/types/prompt/workflow.d.ts +13 -0
- package/dist/types/render/code-cell.d.ts +51 -0
- package/dist/types/render/file-list.d.ts +22 -0
- package/dist/types/render/hyperlink.d.ts +80 -0
- package/dist/types/render/index.d.ts +16 -0
- package/dist/types/render/output-block.d.ts +54 -0
- package/dist/types/render/output-pane.d.ts +80 -0
- package/dist/types/render/render-utils.d.ts +312 -0
- package/dist/types/render/sixel.d.ts +21 -0
- package/dist/types/render/status-line.d.ts +23 -0
- package/dist/types/render/tool-card.d.ts +71 -0
- package/dist/types/render/tree-list.d.ts +29 -0
- package/dist/types/render/types.d.ts +17 -0
- package/dist/types/render/utils.d.ts +43 -0
- package/dist/types/render/width-aware-text.d.ts +23 -0
- package/dist/types/setup/lazy.d.ts +3 -0
- package/dist/types/setup/scenes/composer.d.ts +3 -0
- package/dist/types/setup/scenes/glyph.d.ts +3 -0
- package/dist/types/setup/scenes/model.d.ts +3 -0
- package/dist/types/setup/scenes/outro.d.ts +2 -0
- package/dist/types/setup/scenes/providers.d.ts +3 -0
- package/dist/types/setup/scenes/sign-in.d.ts +21 -0
- package/dist/types/setup/scenes/splash.d.ts +11 -0
- package/dist/types/setup/scenes/theme.d.ts +3 -0
- package/dist/types/setup/scenes/types.d.ts +110 -0
- package/dist/types/setup/scenes/web-search.d.ts +22 -0
- package/dist/types/setup/setup-version.d.ts +11 -0
- package/dist/types/setup/startup-splash.d.ts +9 -0
- package/dist/types/setup/wizard-overlay.d.ts +16 -0
- package/dist/types/setup/wizard.d.ts +25 -0
- package/dist/types/status-line/component.d.ts +182 -0
- package/dist/types/status-line/context-usage.d.ts +156 -0
- package/dist/types/status-line/footer.d.ts +30 -0
- package/dist/types/status-line/git-utils.d.ts +22 -0
- package/dist/types/status-line/host.d.ts +129 -0
- package/dist/types/status-line/index.d.ts +6 -0
- package/dist/types/status-line/loop.d.ts +18 -0
- package/dist/types/status-line/metrics.d.ts +21 -0
- package/dist/types/status-line/presets.d.ts +3 -0
- package/dist/types/status-line/schema.d.ts +15 -0
- package/dist/types/status-line/segments.d.ts +5 -0
- package/dist/types/status-line/separators.d.ts +3 -0
- package/dist/types/status-line/types.d.ts +236 -0
- package/dist/types/stdin-buffer.d.ts +4 -0
- package/dist/types/theme/color.d.ts +24 -0
- package/dist/types/theme/defaults/index.d.ts +9489 -0
- package/dist/types/theme/index.d.ts +4 -0
- package/dist/types/theme/loader.d.ts +23 -0
- package/dist/types/theme/mermaid-cache.d.ts +26 -0
- package/dist/types/theme/schema-validation.d.ts +3 -0
- package/dist/types/theme/schema.d.ts +25 -0
- package/dist/types/theme/session-color.d.ts +43 -0
- package/dist/types/theme/shimmer.d.ts +44 -0
- package/dist/types/theme/symbols.d.ts +34 -0
- package/dist/types/theme/theme-class.d.ts +299 -0
- package/dist/types/theme/theme.d.ts +111 -0
- package/dist/types/theme/tui-adapters.d.ts +30 -0
- package/dist/types/thinking.d.ts +165 -0
- package/dist/types/tools/agent-tree.d.ts +36 -0
- package/dist/types/tools/ask.d.ts +67 -0
- package/dist/types/tools/ast-edit.d.ts +53 -0
- package/dist/types/tools/ast-grep.d.ts +52 -0
- package/dist/types/tools/autoresearch.d.ts +156 -0
- package/dist/types/tools/bash-interactive.d.ts +28 -0
- package/dist/types/tools/bash.d.ts +103 -0
- package/dist/types/tools/conflict-detect.d.ts +43 -0
- package/dist/types/tools/debug.d.ts +60 -0
- package/dist/types/tools/default-renderer.d.ts +24 -0
- package/dist/types/tools/edit.d.ts +158 -0
- package/dist/types/tools/eval-format/code-mode-declarations.d.ts +5 -0
- package/dist/types/tools/eval-format/index.d.ts +5 -0
- package/dist/types/tools/eval-format/javascript.d.ts +2 -0
- package/dist/types/tools/eval-format/python.d.ts +2 -0
- package/dist/types/tools/eval.d.ts +94 -0
- package/dist/types/tools/fetch.d.ts +42 -0
- package/dist/types/tools/gh-format.d.ts +8 -0
- package/dist/types/tools/github.d.ts +144 -0
- package/dist/types/tools/glob.d.ts +44 -0
- package/dist/types/tools/goal.d.ts +42 -0
- package/dist/types/tools/grep.d.ts +64 -0
- package/dist/types/tools/grouped-file-output.d.ts +71 -0
- package/dist/types/tools/hashline-format.d.ts +28 -0
- package/dist/types/tools/hub.d.ts +340 -0
- package/dist/types/tools/index.d.ts +4 -0
- package/dist/types/tools/json-tree.d.ts +59 -0
- package/dist/types/tools/line-ranges.d.ts +29 -0
- package/dist/types/tools/list-limit.d.ts +15 -0
- package/dist/types/tools/lsp.d.ts +72 -0
- package/dist/types/tools/match-line-format.d.ts +11 -0
- package/dist/types/tools/mcp.d.ts +81 -0
- package/dist/types/tools/memory.d.ts +67 -0
- package/dist/types/tools/output-meta.d.ts +151 -0
- package/dist/types/tools/read.d.ts +139 -0
- package/dist/types/tools/renderer.d.ts +98 -0
- package/dist/types/tools/report-tool-issue.d.ts +8 -0
- package/dist/types/tools/resolve.d.ts +47 -0
- package/dist/types/tools/streaming-output.d.ts +282 -0
- package/dist/types/tools/subprocess.d.ts +24 -0
- package/dist/types/tools/task-repair-args.d.ts +53 -0
- package/dist/types/tools/task-yield-assembly.d.ts +20 -0
- package/dist/types/tools/task.d.ts +425 -0
- package/dist/types/tools/terminal-output.d.ts +8 -0
- package/dist/types/tools/think.d.ts +13 -0
- package/dist/types/tools/todo.d.ts +118 -0
- package/dist/types/tools/tool-errors.d.ts +7 -0
- package/dist/types/tools/vibe.d.ts +120 -0
- package/dist/types/tools/web-search.d.ts +195 -0
- package/dist/types/tools/write.d.ts +76 -0
- package/dist/types/tools/xd-url.d.ts +13 -0
- package/dist/types/tools/xdev.d.ts +52 -0
- package/dist/types/tui.d.ts +18 -0
- package/dist/types/utils.d.ts +2 -0
- package/package.json +37 -3
- package/src/app-keybindings.ts +760 -0
- package/src/apps/autoresearch-dashboard.ts +500 -0
- package/src/apps/autoresearch-data.ts +64 -0
- package/src/apps/cleanse-board.ts +341 -0
- package/src/apps/cleanse-picker.ts +57 -0
- package/src/apps/debug/log-formatting.ts +53 -0
- package/src/apps/debug/log-viewer.ts +868 -0
- package/src/apps/debug/protocol-probe.ts +267 -0
- package/src/apps/debug/raw-sse-buffer.ts +449 -0
- package/src/apps/debug/raw-sse.ts +282 -0
- package/src/apps/debug/terminal-info.ts +115 -0
- package/src/apps/debug/viewer-frame.ts +174 -0
- package/src/apps/git/avatar.ts +52 -0
- package/src/apps/git/colors.ts +109 -0
- package/src/apps/git/diff-pane.ts +1512 -0
- package/src/apps/git/git-tui.ts +889 -0
- package/src/apps/git/sidebar.ts +1204 -0
- package/src/apps/git/state.ts +113 -0
- package/src/apps/if-bench-board.ts +324 -0
- package/src/apps/live-visualizer.ts +238 -0
- package/src/apps/ps-data.ts +116 -0
- package/src/apps/ps-top.ts +422 -0
- package/src/apps/session-picker.ts +95 -0
- package/src/apps/setup-model-picker.ts +21 -0
- package/src/apps/standalone-picker.ts +111 -0
- package/src/autocomplete.ts +9 -13
- package/src/chat/advisor-message.ts +175 -0
- package/src/chat/assistant-message.ts +1214 -0
- package/src/chat/background-tan-message.ts +35 -0
- package/src/chat/bash-execution.ts +394 -0
- package/src/chat/cache-invalidation-marker.ts +94 -0
- package/src/chat/chat-transcript-builder.ts +593 -0
- package/src/chat/collab-prompt-message.ts +34 -0
- package/src/chat/compaction-summary-message.ts +261 -0
- package/src/chat/custom-message.ts +23 -0
- package/src/chat/display-preferences.ts +24 -0
- package/src/chat/eval-execution.ts +172 -0
- package/src/chat/execution-shared.ts +113 -0
- package/src/chat/extension-types.ts +46 -0
- package/src/chat/hook-message.ts +20 -0
- package/src/chat/image-loading.ts +122 -0
- package/src/chat/late-diagnostics-message.ts +92 -0
- package/src/chat/messages.ts +305 -0
- package/src/chat/reaction.ts +65 -0
- package/src/chat/read-target.ts +7 -0
- package/src/chat/read-tool-group.ts +873 -0
- package/src/chat/served-model-marker.ts +91 -0
- package/src/chat/skill-message.ts +220 -0
- package/src/chat/skill-title-input.ts +41 -0
- package/src/chat/stripped-tool-calls-placeholder.ts +35 -0
- package/src/chat/thinking-display.ts +312 -0
- package/src/chat/todo-reminder.ts +33 -0
- package/src/chat/tool-execution.ts +1395 -0
- package/src/chat/transcript-browser.ts +268 -0
- package/src/chat/transcript-entry.ts +96 -0
- package/src/chat/transcript-outline.ts +260 -0
- package/src/chat/transcript-render-helpers.ts +315 -0
- package/src/chat/ttsr-notification.ts +123 -0
- package/src/chat/user-message.ts +287 -0
- package/src/chrome/chat-block.ts +110 -0
- package/src/chrome/collab-qrcode.ts +74 -0
- package/src/chrome/context-thresholds.ts +85 -0
- package/src/chrome/countdown-timer.ts +74 -0
- package/src/chrome/diff.ts +266 -0
- package/src/chrome/dynamic-border.ts +36 -0
- package/src/chrome/error-block.ts +63 -0
- package/src/chrome/form-theme.ts +10 -0
- package/src/chrome/format.ts +66 -0
- package/src/chrome/index.ts +21 -0
- package/src/chrome/keybinding-hints.ts +55 -0
- package/src/chrome/live-board.ts +123 -0
- package/src/chrome/local-date.ts +20 -0
- package/src/chrome/message-divider.ts +51 -0
- package/src/chrome/message-frame.ts +164 -0
- package/src/chrome/message-notice.ts +103 -0
- package/src/chrome/overlay-box.ts +301 -0
- package/src/chrome/qrcode.ts +539 -0
- package/src/chrome/segment-track.ts +86 -0
- package/src/chrome/select-list-mouse-routing.ts +11 -0
- package/src/chrome/selector-helpers.ts +119 -0
- package/src/chrome/shared.ts +27 -0
- package/src/chrome/streaming-panel.ts +72 -0
- package/src/chrome/tool-activity.ts +44 -0
- package/src/chrome/transcript-container.ts +902 -0
- package/src/chrome/transcript-status.ts +27 -0
- package/src/chrome/visual-truncate.ts +70 -0
- package/src/components/disclosure.ts +235 -0
- package/src/components/editor.ts +10 -12
- package/src/components/form.ts +566 -0
- package/src/components/input.ts +6 -27
- package/src/components/key-value-list.ts +88 -0
- package/src/components/layout/geometry.ts +202 -0
- package/src/components/layout/row.ts +283 -0
- package/src/components/layout/split-pane.ts +349 -0
- package/src/components/layout/stack.ts +261 -0
- package/src/components/markdown.ts +16 -12
- package/src/components/menu-selection.ts +248 -0
- package/src/components/metric.ts +132 -0
- package/src/components/progress-bar.ts +140 -0
- package/src/components/scroll-view.ts +372 -70
- package/src/components/scroll-viewport.ts +154 -0
- package/src/components/section.ts +77 -0
- package/src/components/select-list.ts +238 -159
- package/src/components/settings-list.ts +103 -80
- package/src/components/table.ts +127 -0
- package/src/components/tree-view.ts +481 -0
- package/src/components/wizard-step.ts +229 -0
- package/src/deccara.ts +1 -3
- package/src/hotkeys-markdown.ts +100 -0
- package/src/index.ts +18 -0
- package/src/keybinding-matchers.ts +99 -0
- package/src/keys.ts +2 -2
- package/src/lang-from-path.ts +252 -0
- package/src/overlays/advisor-config.ts +761 -0
- package/src/overlays/agent-activity.ts +113 -0
- package/src/overlays/agent-hub-projection.ts +250 -0
- package/src/overlays/agent-hub-renderer.ts +281 -0
- package/src/overlays/agent-hub-types.ts +74 -0
- package/src/overlays/agent-hub.ts +1562 -0
- package/src/overlays/agent-transcript-viewer.ts +669 -0
- package/src/overlays/agents-hub.ts +1203 -0
- package/src/overlays/ask-dialog.ts +1202 -0
- package/src/overlays/bordered-loader.ts +41 -0
- package/src/overlays/btw-history-panel.ts +591 -0
- package/src/overlays/btw-history.ts +33 -0
- package/src/overlays/btw-panel.ts +167 -0
- package/src/overlays/cleanse-panel.ts +167 -0
- package/src/overlays/codex-reset-fireworks.ts +375 -0
- package/src/overlays/composer-shape-preview.ts +137 -0
- package/src/overlays/composer-shape-registry.ts +82 -0
- package/src/overlays/copy-selector.ts +618 -0
- package/src/overlays/copy-targets.ts +210 -0
- package/src/overlays/error-banner.ts +39 -0
- package/src/overlays/extensions/display-text.ts +39 -0
- package/src/overlays/extensions/extension-dashboard.ts +645 -0
- package/src/overlays/extensions/extension-list.ts +667 -0
- package/src/overlays/extensions/inspector-model.ts +484 -0
- package/src/overlays/extensions/inspector-panel.ts +669 -0
- package/src/overlays/extensions/live-tool-session.ts +67 -0
- package/src/overlays/extensions/mcp-runtime.ts +289 -0
- package/src/overlays/extensions/state-manager.ts +337 -0
- package/src/overlays/extensions/types.ts +208 -0
- package/src/overlays/history-search.ts +268 -0
- package/src/overlays/hook-editor.ts +272 -0
- package/src/overlays/hook-input.ts +84 -0
- package/src/overlays/hook-selector.ts +635 -0
- package/src/overlays/hub-frame.ts +262 -0
- package/src/overlays/login-dialog.ts +231 -0
- package/src/overlays/logout-account-selector.ts +115 -0
- package/src/overlays/mcp-add-wizard.ts +1436 -0
- package/src/overlays/model-browser.ts +1176 -0
- package/src/overlays/model-hub.ts +2279 -0
- package/src/overlays/model-picker.ts +285 -0
- package/src/overlays/model-selector.ts +107 -0
- package/src/overlays/move-overlay.ts +197 -0
- package/src/overlays/oauth-selector.ts +446 -0
- package/src/overlays/omfg-panel.ts +136 -0
- package/src/overlays/pause-screen.ts +198 -0
- package/src/overlays/plan-review-overlay.ts +1227 -0
- package/src/overlays/plan-save-overlay.ts +74 -0
- package/src/overlays/plan-toc.ts +139 -0
- package/src/overlays/plugin-selector.ts +97 -0
- package/src/overlays/plugin-settings.ts +839 -0
- package/src/overlays/queue-mode-selector.ts +55 -0
- package/src/overlays/reset-usage-selector.ts +170 -0
- package/src/overlays/rewind-selector.ts +499 -0
- package/src/overlays/running-subagent-badge.ts +19 -0
- package/src/overlays/session-account-selector.ts +68 -0
- package/src/overlays/session-info-overlay.ts +96 -0
- package/src/overlays/session-observer-registry.ts +289 -0
- package/src/overlays/session-selector.ts +1137 -0
- package/src/overlays/settings-defs.ts +315 -0
- package/src/overlays/settings-selector.ts +1415 -0
- package/src/overlays/show-images-selector.ts +44 -0
- package/src/overlays/snapcompact-shape-preview-doc.md +14 -0
- package/src/overlays/snapcompact-shape-preview.ts +192 -0
- package/src/overlays/theme-selector.ts +62 -0
- package/src/overlays/thinking-selector.ts +51 -0
- package/src/overlays/tiny-title-download-progress.ts +102 -0
- package/src/overlays/tree-selector.ts +1121 -0
- package/src/overlays/usage-dashboard.ts +629 -0
- package/src/overlays/usage-display.ts +45 -0
- package/src/overlays/usage-row.ts +118 -0
- package/src/prompt/attachment-chips.ts +201 -0
- package/src/prompt/composer-attachments.ts +280 -0
- package/src/prompt/composer-cache.ts +304 -0
- package/src/prompt/composer.ts +934 -0
- package/src/prompt/custom-editor.ts +1392 -0
- package/src/prompt/data/emojis.json +1 -0
- package/src/prompt/editor-top-gap.ts +28 -0
- package/src/prompt/emoji-autocomplete.ts +285 -0
- package/src/prompt/github-ref-autocomplete.ts +75 -0
- package/src/prompt/gradient-highlight.ts +101 -0
- package/src/prompt/image-format.ts +28 -0
- package/src/prompt/image-references.ts +102 -0
- package/src/prompt/interactive-context-helpers.ts +126 -0
- package/src/prompt/internal-url-autocomplete.ts +155 -0
- package/src/prompt/macos-spelling.ts +456 -0
- package/src/prompt/magic-keyword-boundary.ts +23 -0
- package/src/prompt/magic-keywords.ts +42 -0
- package/src/prompt/markdown-prose.ts +245 -0
- package/src/prompt/model-mention-autocomplete.ts +94 -0
- package/src/prompt/model-mention-syntax.ts +41 -0
- package/src/prompt/orchestrate.ts +26 -0
- package/src/prompt/prompt-action-autocomplete.ts +337 -0
- package/src/prompt/queue-input.ts +132 -0
- package/src/prompt/skill-tokens.ts +36 -0
- package/src/prompt/tips.txt +27 -0
- package/src/prompt/tools-markdown.ts +29 -0
- package/src/prompt/ultrathink.ts +26 -0
- package/src/prompt/usage-amounts.ts +99 -0
- package/src/prompt/video.ts +47 -0
- package/src/prompt/welcome.ts +605 -0
- package/src/prompt/workflow.ts +26 -0
- package/src/render/code-cell.ts +244 -0
- package/src/render/file-list.ts +58 -0
- package/src/render/hyperlink.ts +192 -0
- package/src/render/index.ts +17 -0
- package/src/render/output-block.ts +267 -0
- package/src/render/output-pane.ts +299 -0
- package/src/render/render-utils.ts +1182 -0
- package/src/render/sixel.ts +69 -0
- package/src/render/status-line.ts +55 -0
- package/src/render/tool-card.ts +272 -0
- package/src/render/tree-list.ts +188 -0
- package/src/render/types.ts +19 -0
- package/src/render/utils.ts +109 -0
- package/src/render/width-aware-text.ts +60 -0
- package/src/setup/lazy.ts +17 -0
- package/src/setup/scenes/composer.ts +127 -0
- package/src/setup/scenes/glyph.ts +120 -0
- package/src/setup/scenes/model.ts +138 -0
- package/src/setup/scenes/outro.ts +24 -0
- package/src/setup/scenes/providers.ts +107 -0
- package/src/setup/scenes/sign-in.ts +373 -0
- package/src/setup/scenes/splash.ts +192 -0
- package/src/setup/scenes/theme.ts +343 -0
- package/src/setup/scenes/types.ts +111 -0
- package/src/setup/scenes/web-search.ts +165 -0
- package/src/setup/setup-version.ts +11 -0
- package/src/setup/startup-splash.ts +107 -0
- package/src/setup/wizard-overlay.ts +319 -0
- package/src/setup/wizard.ts +101 -0
- package/src/status-line/component.ts +3003 -0
- package/src/status-line/context-usage.ts +688 -0
- package/src/status-line/footer.ts +323 -0
- package/src/status-line/git-utils.ts +42 -0
- package/src/status-line/host.ts +97 -0
- package/src/status-line/index.ts +6 -0
- package/src/status-line/loop.ts +28 -0
- package/src/status-line/metrics.ts +94 -0
- package/src/status-line/presets.ts +107 -0
- package/src/status-line/schema.ts +57 -0
- package/src/status-line/segments.ts +934 -0
- package/src/status-line/separators.ts +55 -0
- package/src/status-line/types.ts +227 -0
- package/src/stdin-buffer.ts +4 -2
- package/src/theme/color.ts +95 -0
- package/src/theme/dark.json +95 -0
- package/src/theme/defaults/alabaster.json +93 -0
- package/src/theme/defaults/amethyst.json +96 -0
- package/src/theme/defaults/anthracite.json +93 -0
- package/src/theme/defaults/basalt.json +91 -0
- package/src/theme/defaults/birch.json +95 -0
- package/src/theme/defaults/dark-abyss.json +91 -0
- package/src/theme/defaults/dark-arctic.json +104 -0
- package/src/theme/defaults/dark-aurora.json +95 -0
- package/src/theme/defaults/dark-catppuccin.json +107 -0
- package/src/theme/defaults/dark-cavern.json +91 -0
- package/src/theme/defaults/dark-celestial.json +106 -0
- package/src/theme/defaults/dark-copper.json +95 -0
- package/src/theme/defaults/dark-cosmos.json +90 -0
- package/src/theme/defaults/dark-cyberpunk.json +102 -0
- package/src/theme/defaults/dark-dracula.json +98 -0
- package/src/theme/defaults/dark-eclipse.json +91 -0
- package/src/theme/defaults/dark-ember.json +95 -0
- package/src/theme/defaults/dark-equinox.json +90 -0
- package/src/theme/defaults/dark-forest.json +96 -0
- package/src/theme/defaults/dark-github.json +105 -0
- package/src/theme/defaults/dark-gruvbox.json +112 -0
- package/src/theme/defaults/dark-lavender.json +95 -0
- package/src/theme/defaults/dark-lunar.json +89 -0
- package/src/theme/defaults/dark-midnight.json +95 -0
- package/src/theme/defaults/dark-monochrome.json +94 -0
- package/src/theme/defaults/dark-monokai.json +98 -0
- package/src/theme/defaults/dark-nebula.json +90 -0
- package/src/theme/defaults/dark-nord.json +98 -0
- package/src/theme/defaults/dark-ocean.json +101 -0
- package/src/theme/defaults/dark-one.json +100 -0
- package/src/theme/defaults/dark-poimandres.json +115 -0
- package/src/theme/defaults/dark-rainforest.json +91 -0
- package/src/theme/defaults/dark-reef.json +91 -0
- package/src/theme/defaults/dark-retro.json +92 -0
- package/src/theme/defaults/dark-rose-pine.json +96 -0
- package/src/theme/defaults/dark-sakura.json +95 -0
- package/src/theme/defaults/dark-slate.json +95 -0
- package/src/theme/defaults/dark-solarized.json +97 -0
- package/src/theme/defaults/dark-solstice.json +90 -0
- package/src/theme/defaults/dark-starfall.json +91 -0
- package/src/theme/defaults/dark-sunset.json +99 -0
- package/src/theme/defaults/dark-swamp.json +90 -0
- package/src/theme/defaults/dark-synthwave.json +103 -0
- package/src/theme/defaults/dark-taiga.json +91 -0
- package/src/theme/defaults/dark-terminal.json +95 -0
- package/src/theme/defaults/dark-tokyo-night.json +101 -0
- package/src/theme/defaults/dark-tundra.json +91 -0
- package/src/theme/defaults/dark-twilight.json +91 -0
- package/src/theme/defaults/dark-volcanic.json +91 -0
- package/src/theme/defaults/graphite.json +92 -0
- package/src/theme/defaults/index.ts +201 -0
- package/src/theme/defaults/light-arctic.json +107 -0
- package/src/theme/defaults/light-aurora-day.json +91 -0
- package/src/theme/defaults/light-canyon.json +91 -0
- package/src/theme/defaults/light-catppuccin.json +106 -0
- package/src/theme/defaults/light-cirrus.json +90 -0
- package/src/theme/defaults/light-coral.json +95 -0
- package/src/theme/defaults/light-cyberpunk.json +96 -0
- package/src/theme/defaults/light-dawn.json +90 -0
- package/src/theme/defaults/light-dunes.json +91 -0
- package/src/theme/defaults/light-eucalyptus.json +95 -0
- package/src/theme/defaults/light-forest.json +100 -0
- package/src/theme/defaults/light-frost.json +95 -0
- package/src/theme/defaults/light-github.json +115 -0
- package/src/theme/defaults/light-glacier.json +91 -0
- package/src/theme/defaults/light-gruvbox.json +108 -0
- package/src/theme/defaults/light-haze.json +90 -0
- package/src/theme/defaults/light-honeycomb.json +95 -0
- package/src/theme/defaults/light-lagoon.json +91 -0
- package/src/theme/defaults/light-lavender.json +95 -0
- package/src/theme/defaults/light-meadow.json +91 -0
- package/src/theme/defaults/light-mint.json +95 -0
- package/src/theme/defaults/light-monochrome.json +101 -0
- package/src/theme/defaults/light-ocean.json +99 -0
- package/src/theme/defaults/light-one.json +99 -0
- package/src/theme/defaults/light-opal.json +91 -0
- package/src/theme/defaults/light-orchard.json +91 -0
- package/src/theme/defaults/light-paper.json +95 -0
- package/src/theme/defaults/light-poimandres.json +115 -0
- package/src/theme/defaults/light-prism.json +90 -0
- package/src/theme/defaults/light-retro.json +98 -0
- package/src/theme/defaults/light-sand.json +95 -0
- package/src/theme/defaults/light-savanna.json +91 -0
- package/src/theme/defaults/light-solarized.json +102 -0
- package/src/theme/defaults/light-soleil.json +90 -0
- package/src/theme/defaults/light-sunset.json +99 -0
- package/src/theme/defaults/light-synthwave.json +98 -0
- package/src/theme/defaults/light-tokyo-night.json +111 -0
- package/src/theme/defaults/light-wetland.json +91 -0
- package/src/theme/defaults/light-zenith.json +89 -0
- package/src/theme/defaults/limestone.json +94 -0
- package/src/theme/defaults/mahogany.json +97 -0
- package/src/theme/defaults/marble.json +93 -0
- package/src/theme/defaults/obsidian.json +91 -0
- package/src/theme/defaults/onyx.json +91 -0
- package/src/theme/defaults/pearl.json +93 -0
- package/src/theme/defaults/porcelain.json +91 -0
- package/src/theme/defaults/quartz.json +96 -0
- package/src/theme/defaults/sandstone.json +95 -0
- package/src/theme/defaults/titanium.json +90 -0
- package/src/theme/index.ts +5 -0
- package/src/theme/light.json +93 -0
- package/src/theme/loader.ts +200 -0
- package/src/theme/mermaid-cache.ts +92 -0
- package/src/theme/schema-validation.ts +119 -0
- package/src/theme/schema.ts +168 -0
- package/src/theme/session-color.ts +253 -0
- package/src/theme/shimmer.ts +307 -0
- package/src/theme/symbols.ts +1433 -0
- package/src/theme/theme-class.ts +787 -0
- package/src/theme/theme-schema.json +463 -0
- package/src/theme/theme.ts +810 -0
- package/src/theme/tui-adapters.ts +339 -0
- package/src/thinking.ts +380 -0
- package/src/tools/agent-tree.ts +128 -0
- package/src/tools/ask.ts +482 -0
- package/src/tools/ast-edit.ts +210 -0
- package/src/tools/ast-grep.ts +171 -0
- package/src/tools/autoresearch.ts +287 -0
- package/src/tools/bash-interactive.ts +295 -0
- package/src/tools/bash.ts +468 -0
- package/src/tools/conflict-detect.ts +77 -0
- package/src/tools/debug.ts +167 -0
- package/src/tools/default-renderer.ts +172 -0
- package/src/tools/edit.ts +1258 -0
- package/src/tools/eval-format/code-mode-declarations.ts +61 -0
- package/src/tools/eval-format/index.ts +16 -0
- package/src/tools/eval-format/javascript.ts +952 -0
- package/src/tools/eval-format/python.ts +544 -0
- package/src/tools/eval.ts +835 -0
- package/src/tools/fetch.ts +226 -0
- package/src/tools/gh-format.ts +18 -0
- package/src/tools/github.ts +686 -0
- package/src/tools/glob.ts +213 -0
- package/src/tools/goal.ts +153 -0
- package/src/tools/grep.ts +385 -0
- package/src/tools/grouped-file-output.ts +211 -0
- package/src/tools/hashline-format.ts +59 -0
- package/src/tools/hub.ts +1488 -0
- package/src/tools/index.ts +71 -0
- package/src/tools/json-tree.ts +388 -0
- package/src/tools/line-ranges.ts +98 -0
- package/src/tools/list-limit.ts +43 -0
- package/src/tools/lsp.ts +702 -0
- package/src/tools/match-line-format.ts +20 -0
- package/src/tools/mcp.ts +309 -0
- package/src/tools/memory.ts +220 -0
- package/src/tools/output-meta.ts +367 -0
- package/src/tools/read.ts +628 -0
- package/src/tools/renderer.ts +107 -0
- package/src/tools/report-tool-issue.ts +13 -0
- package/src/tools/resolve.ts +139 -0
- package/src/tools/streaming-output.ts +1576 -0
- package/src/tools/subprocess.ts +39 -0
- package/src/tools/task-repair-args.ts +118 -0
- package/src/tools/task-yield-assembly.ts +147 -0
- package/src/tools/task.ts +2110 -0
- package/src/tools/terminal-output.ts +153 -0
- package/src/tools/think.ts +28 -0
- package/src/tools/todo.ts +580 -0
- package/src/tools/tool-errors.ts +15 -0
- package/src/tools/vibe.ts +420 -0
- package/src/tools/web-search.ts +409 -0
- package/src/tools/write.ts +511 -0
- package/src/tools/xd-url.ts +28 -0
- package/src/tools/xdev.ts +201 -0
- package/src/tui.ts +57 -4
- package/src/utils.ts +8 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type KeywordHighlighter } from "./gradient-highlight.js";
|
|
2
|
+
/**
|
|
3
|
+
* Whether `text` contains the standalone keyword "orchestrate" (lowercase,
|
|
4
|
+
* prose-delimited) in prose — never inside a code block, inline code span,
|
|
5
|
+
* or XML/HTML section.
|
|
6
|
+
*/
|
|
7
|
+
export declare function containsOrchestrate(text: string): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Highlight every standalone "orchestrate" in `text` for editor display with a
|
|
10
|
+
* cool teal→violet gradient (hue 150..280), visually distinct from ultrathink's
|
|
11
|
+
* full-spectrum rainbow.
|
|
12
|
+
*/
|
|
13
|
+
export declare const highlightOrchestrate: KeywordHighlighter;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { type AutocompleteItem, type AutocompleteProvider, type SlashCommand } from "../index.js";
|
|
2
|
+
import { type KeybindingsManager } from "../app-keybindings.js";
|
|
3
|
+
import { type InternalUrlCallerContext } from "./internal-url-autocomplete.js";
|
|
4
|
+
import { type ModelMentionCandidateSource } from "./model-mention-autocomplete.js";
|
|
5
|
+
/** Set the process-wide emoji completion preference. */
|
|
6
|
+
export declare function setEmojiAutocompleteEnabled(enabled: boolean): void;
|
|
7
|
+
interface PromptActionDefinition {
|
|
8
|
+
id: string;
|
|
9
|
+
label: string;
|
|
10
|
+
description: string;
|
|
11
|
+
keywords: string[];
|
|
12
|
+
execute: (prefix: string) => void;
|
|
13
|
+
}
|
|
14
|
+
interface PromptActionAutocompleteOptions {
|
|
15
|
+
commands: SlashCommand[];
|
|
16
|
+
basePath: string;
|
|
17
|
+
/** Usage count per command name for frequency-ranked slash completions. */
|
|
18
|
+
commandUsage?: (name: string) => number;
|
|
19
|
+
/** Read the receiving session at lookup time, following focus and session replacement. */
|
|
20
|
+
internalUrlCaller?: () => InternalUrlCallerContext;
|
|
21
|
+
/** Session-scoped models available for `^` mentions. */
|
|
22
|
+
modelMentions?: ModelMentionCandidateSource;
|
|
23
|
+
keybindings: KeybindingsManager;
|
|
24
|
+
copyCurrentLine: () => void;
|
|
25
|
+
copyPrompt: () => void;
|
|
26
|
+
undo: (prefix: string) => void;
|
|
27
|
+
moveCursorToMessageEnd: () => void;
|
|
28
|
+
moveCursorToMessageStart: () => void;
|
|
29
|
+
moveCursorToLineStart: () => void;
|
|
30
|
+
moveCursorToLineEnd: () => void;
|
|
31
|
+
}
|
|
32
|
+
export declare class PromptActionAutocompleteProvider implements AutocompleteProvider {
|
|
33
|
+
#private;
|
|
34
|
+
constructor(commands: SlashCommand[], basePath: string, actions: PromptActionDefinition[], commandUsage?: (name: string) => number, internalUrlCaller?: () => InternalUrlCallerContext, modelMentions?: ModelMentionCandidateSource);
|
|
35
|
+
getSuggestions(lines: string[], cursorLine: number, cursorCol: number, signal?: AbortSignal): Promise<{
|
|
36
|
+
items: AutocompleteItem[];
|
|
37
|
+
prefix: string;
|
|
38
|
+
} | null>;
|
|
39
|
+
applyCompletion(lines: string[], cursorLine: number, cursorCol: number, item: AutocompleteItem, prefix: string): {
|
|
40
|
+
lines: string[];
|
|
41
|
+
cursorLine: number;
|
|
42
|
+
cursorCol: number;
|
|
43
|
+
onApplied?: () => void;
|
|
44
|
+
};
|
|
45
|
+
getInlineHint(lines: string[], cursorLine: number, cursorCol: number): string | null;
|
|
46
|
+
trySyncSlashCompletion(textBeforeCursor: string): {
|
|
47
|
+
items: AutocompleteItem[];
|
|
48
|
+
prefix: string;
|
|
49
|
+
} | null;
|
|
50
|
+
trySyncInlineReplace(textBeforeCursor: string): {
|
|
51
|
+
replaceLen: number;
|
|
52
|
+
insert: string;
|
|
53
|
+
} | null;
|
|
54
|
+
}
|
|
55
|
+
export declare function createPromptActionAutocompleteProvider(options: PromptActionAutocompleteOptions): PromptActionAutocompleteProvider;
|
|
56
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Prefix matcher shared by queue-list parsing and editor highlighting. */
|
|
2
|
+
export declare const QUEUE_LIST_MARKER_RE: RegExp;
|
|
3
|
+
/** Extract the message body from the `->` / `=>` yield-queue shorthand. */
|
|
4
|
+
export declare function parseQueueShorthand(text: string): string | undefined;
|
|
5
|
+
/** Whether text currently forms a sequential queue list, including an unfinished trailing item. */
|
|
6
|
+
export declare function isQueuedMessageList(text: string): boolean;
|
|
7
|
+
/** Split a sequential numeric, Roman-numeral, or alphabetic list into queue entries. */
|
|
8
|
+
export declare function splitQueuedMessages(text: string): string[];
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One `/skill:<name>` token delimited by whitespace or line edges. Group 1 is
|
|
3
|
+
* the leading delimiter (empty at line start), group 2 the bare skill name.
|
|
4
|
+
* Global so callers can walk every token; reset `lastIndex` before reuse.
|
|
5
|
+
*/
|
|
6
|
+
export declare const SKILL_TOKEN_RE: RegExp;
|
|
7
|
+
/**
|
|
8
|
+
* Whether `/skill:<name>` tokens in `text` are invocations rather than content
|
|
9
|
+
* belonging to another slash command or local-execution sigil.
|
|
10
|
+
*/
|
|
11
|
+
export declare function allowsSkillTokens(text: string): boolean;
|
|
12
|
+
/** Whether model mentions may collapse in this draft; local execution consumes its body verbatim. */
|
|
13
|
+
export declare function allowsModelMentions(text: string): boolean;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface ToolsMarkdownBindings {
|
|
2
|
+
tools: ReadonlyArray<{
|
|
3
|
+
description: string;
|
|
4
|
+
name: string;
|
|
5
|
+
}>;
|
|
6
|
+
/** Tools mounted under `xd://` URLs, listed after the active set. */
|
|
7
|
+
xdevTools?: ReadonlyArray<{
|
|
8
|
+
name: string;
|
|
9
|
+
summary: string;
|
|
10
|
+
}>;
|
|
11
|
+
}
|
|
12
|
+
export declare function buildToolsMarkdown(bindings: ToolsMarkdownBindings): string;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type KeywordHighlighter } from "./gradient-highlight.js";
|
|
2
|
+
/**
|
|
3
|
+
* Whether `text` contains the standalone keyword "ultrathink" (lowercase,
|
|
4
|
+
* prose-delimited) in prose — never inside a code block, inline code span,
|
|
5
|
+
* or XML/HTML section.
|
|
6
|
+
*/
|
|
7
|
+
export declare function containsUltrathink(text: string): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Rainbow-highlight every standalone "ultrathink" in `text` for editor display.
|
|
10
|
+
* Sweeps red→violet (hue 0..330), stopping short of the wrap back to red so the
|
|
11
|
+
* gradient resolves smoothly regardless of casing or match length.
|
|
12
|
+
*/
|
|
13
|
+
export declare const highlightUltrathink: KeywordHighlighter;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type UsageLimit } from "@oh-my-pi/pi-ai/usage";
|
|
2
|
+
export declare function isUsedOnlyAbsoluteAmount(limit: UsageLimit): boolean;
|
|
3
|
+
export declare function isRemainingOnlyAbsoluteAmount(limit: UsageLimit): boolean;
|
|
4
|
+
/**
|
|
5
|
+
* Total the prepaid headroom a set of limits actually represents.
|
|
6
|
+
*
|
|
7
|
+
* A `scope.shared` limit is one account-wide pool observed once per stored
|
|
8
|
+
* credential, so N keys on the same account yield N identical rows that must
|
|
9
|
+
* collapse to a single value — summing them would claim several times the
|
|
10
|
+
* credits a single request can draw on. Limits without the flag are genuinely
|
|
11
|
+
* per-account and do add up. Returns `undefined` unless every limit is
|
|
12
|
+
* remaining-only and agrees on a unit, so mixed buckets fall through to the
|
|
13
|
+
* caller's own handling.
|
|
14
|
+
*/
|
|
15
|
+
export declare function totalRemainingOnly(limits: readonly UsageLimit[]): {
|
|
16
|
+
value: number;
|
|
17
|
+
unit: UsageLimit["amount"]["unit"];
|
|
18
|
+
} | undefined;
|
|
19
|
+
/** `"100 credits left"` for a bucket of remaining-only limits, else `undefined`. */
|
|
20
|
+
export declare function formatRemainingOnlyTotal(limits: readonly UsageLimit[]): string | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Text for a bucket no quota bar can draw: spend-to-date or prepaid headroom.
|
|
23
|
+
* Used-only limits report the worst (highest) spend; remaining-only limits go
|
|
24
|
+
* through {@link totalRemainingOnly} so shared pools are not double-counted.
|
|
25
|
+
*/
|
|
26
|
+
export declare function formatAbsoluteOnlyAmount(limits: readonly UsageLimit[]): string | undefined;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ImageContent } from "@oh-my-pi/pi-ai";
|
|
2
|
+
/** True when the path names a video container we handle through ffmpeg. */
|
|
3
|
+
export declare function isVideoPath(filePath: string): boolean;
|
|
4
|
+
/**
|
|
5
|
+
* Original local source path stored on a generated contact-sheet image. Symbol
|
|
6
|
+
* metadata stays out of serialized/model-bound image data while traveling with
|
|
7
|
+
* the draft object until AgentSession creates its hidden companion message.
|
|
8
|
+
*/
|
|
9
|
+
declare const kVideoPreviewSource: unique symbol;
|
|
10
|
+
/** A contact-sheet image tagged with the original local video path. */
|
|
11
|
+
export type VideoPreviewImage = ImageContent & {
|
|
12
|
+
readonly [kVideoPreviewSource]: string;
|
|
13
|
+
};
|
|
14
|
+
/** Create a model-ready contact-sheet image tagged with its original video path. */
|
|
15
|
+
export declare function createVideoPreviewImage(preview: ImageContent, sourcePath: string): VideoPreviewImage;
|
|
16
|
+
/** Return the original video path associated with a generated contact-sheet image. */
|
|
17
|
+
export declare function videoPreviewSource(preview: ImageContent): string | undefined;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type { Component } from "../tui.js";
|
|
2
|
+
/**
|
|
3
|
+
* Fixed number of session rows in the welcome box so its height stays stable
|
|
4
|
+
* across recent-session updates.
|
|
5
|
+
*/
|
|
6
|
+
export declare const WELCOME_SESSION_SLOTS = 4;
|
|
7
|
+
/**
|
|
8
|
+
* Fixed number of LSP-server rows, for the same reason. Overflow is sliced so
|
|
9
|
+
* the box height is constant regardless of how many servers a project has.
|
|
10
|
+
*/
|
|
11
|
+
export declare const WELCOME_LSP_SLOTS = 4;
|
|
12
|
+
/** Pick a tip from `tips`, biased toward "[NEW]" tips by {@link NEW_TIP_WEIGHT};
|
|
13
|
+
* `r` is a uniform sample in [0, 1). Returns "" when `tips` is empty.
|
|
14
|
+
* Exported for tests. */
|
|
15
|
+
export declare function pickWeightedTip(tips: readonly string[], r: number): string;
|
|
16
|
+
export declare function renderWelcomeTip(tip: string, boxWidth: number, phase?: number): string[];
|
|
17
|
+
export interface RecentSession {
|
|
18
|
+
name: string;
|
|
19
|
+
timeAgo: string;
|
|
20
|
+
}
|
|
21
|
+
export interface LspServerInfo {
|
|
22
|
+
name: string;
|
|
23
|
+
status: "ready" | "error" | "connecting" | "available";
|
|
24
|
+
fileTypes: string[];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Premium welcome screen with block-based OMP logo and two-column layout.
|
|
28
|
+
*/
|
|
29
|
+
export declare class WelcomeComponent implements Component {
|
|
30
|
+
#private;
|
|
31
|
+
private version;
|
|
32
|
+
private modelName;
|
|
33
|
+
private providerName;
|
|
34
|
+
private recentSessions;
|
|
35
|
+
private lspServers;
|
|
36
|
+
constructor(version: string, modelName: string, providerName: string, recentSessions?: RecentSession[], lspServers?: LspServerInfo[]);
|
|
37
|
+
get tip(): string | undefined;
|
|
38
|
+
invalidate(): void;
|
|
39
|
+
/** The intro keeps the welcome block mutable; settling lets it retire to history. */
|
|
40
|
+
isTranscriptBlockFinalized(): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Play a one-shot intro that sweeps the gradient through every phase
|
|
43
|
+
* before settling on the resting frame. Safe to call multiple times —
|
|
44
|
+
* subsequent calls reset and replay.
|
|
45
|
+
*/
|
|
46
|
+
playIntro(requestRender: () => void): void;
|
|
47
|
+
/**
|
|
48
|
+
* Redirect a running intro's render callback to a new target when a host
|
|
49
|
+
* remounts this component mid-animation.
|
|
50
|
+
* Returns true while the intro is still animating; false = no-op (settled).
|
|
51
|
+
*/
|
|
52
|
+
retargetIntro(requestRender: () => void): boolean;
|
|
53
|
+
/** Stop the intro immediately and settle on the resting frame. Safe when idle. */
|
|
54
|
+
stopIntro(): void;
|
|
55
|
+
/** Update the version embedded in the welcome border title. */
|
|
56
|
+
setVersion(version: string): void;
|
|
57
|
+
setModel(modelName: string, providerName: string): void;
|
|
58
|
+
setRecentSessions(sessions: RecentSession[]): void;
|
|
59
|
+
setLspServers(servers: LspServerInfo[]): void;
|
|
60
|
+
render(termWidth: number): readonly string[];
|
|
61
|
+
}
|
|
62
|
+
/** Block-grid brand mark shared by the welcome and setup surfaces. */
|
|
63
|
+
export declare const PI_LOGO: string[];
|
|
64
|
+
export interface ShineConfig {
|
|
65
|
+
/** Overall opacity of the shine overlay, in [0, 1]. */
|
|
66
|
+
strength: number;
|
|
67
|
+
/** Center of the shine band along the diagonal, in [0, 1]. */
|
|
68
|
+
pos: number;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Resolve the gradient SGR foreground escape for a normalized position `t`
|
|
72
|
+
* (0..1) along the diagonal, compositing the optional sliding shine highlight.
|
|
73
|
+
* Shared by {@link gradientLogo} and the setup splash so both stay
|
|
74
|
+
* color-identical (truecolor when available, 256-color ramp otherwise).
|
|
75
|
+
*/
|
|
76
|
+
export declare function gradientEscape(t: number, shine?: ShineConfig): string;
|
|
77
|
+
/**
|
|
78
|
+
* Apply a multi-stop diagonal gradient (top-left → bottom-right) plus an
|
|
79
|
+
* optional sliding shine band across multi-line art. `phase` (0..1) shifts the
|
|
80
|
+
* gradient along the diagonal, wrapping at 1. When `shine` is provided, a soft
|
|
81
|
+
* white highlight is composited on top, centered at `shine.pos`.
|
|
82
|
+
*/
|
|
83
|
+
export declare function gradientLogo(lines: readonly string[], phase?: number, shine?: ShineConfig): string[];
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type KeywordHighlighter } from "./gradient-highlight.js";
|
|
2
|
+
/**
|
|
3
|
+
* Whether `text` contains the standalone keyword "workflowz"
|
|
4
|
+
* (lowercase, prose-delimited) in prose — never inside a code block, inline
|
|
5
|
+
* code span, or XML/HTML section.
|
|
6
|
+
*/
|
|
7
|
+
export declare function containsWorkflow(text: string): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Highlight every standalone "workflowz" in `text` for editor display
|
|
10
|
+
* with a warm amber→green gradient (hue 30..150), visually distinct from
|
|
11
|
+
* ultrathink's rainbow and orchestrate's teal→violet.
|
|
12
|
+
*/
|
|
13
|
+
export declare const highlightWorkflow: KeywordHighlighter;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { type Theme } from "../theme/theme.js";
|
|
2
|
+
/** Content and display limits for a code preview with optional output. */
|
|
3
|
+
export interface CodeCellOptions {
|
|
4
|
+
code: string;
|
|
5
|
+
language?: string;
|
|
6
|
+
index?: number;
|
|
7
|
+
total?: number;
|
|
8
|
+
title?: string;
|
|
9
|
+
status?: "pending" | "running" | "warning" | "complete" | "error";
|
|
10
|
+
spinnerFrame?: number;
|
|
11
|
+
duration?: number;
|
|
12
|
+
output?: string;
|
|
13
|
+
outputMaxLines?: number;
|
|
14
|
+
codeMaxLines?: number;
|
|
15
|
+
/**
|
|
16
|
+
* Show the LAST `codeMaxLines` rows (the live streaming edge) instead of the
|
|
17
|
+
* first, with a "… N earlier lines" marker on top. Lets a pending preview
|
|
18
|
+
* follow code as it is written while staying bounded. Ignored when `expanded`.
|
|
19
|
+
*/
|
|
20
|
+
codeTail?: boolean;
|
|
21
|
+
expanded?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Prefix the header with the cell's language icon (resolved through the
|
|
24
|
+
* active symbol preset: nerd-font devicon, unicode emoji, or ascii
|
|
25
|
+
* shorthand). Opt-in so only the eval kernel renderer labels each cell;
|
|
26
|
+
* read/write/browser code cells stay icon-free.
|
|
27
|
+
*/
|
|
28
|
+
showLanguage?: boolean;
|
|
29
|
+
width: number;
|
|
30
|
+
codeStartLine?: number;
|
|
31
|
+
codeLineNumbers?: Array<number | null>;
|
|
32
|
+
}
|
|
33
|
+
/** Render a syntax-highlighted code preview and its optional output block. */
|
|
34
|
+
export declare function renderCodeCell(options: CodeCellOptions, theme: Theme): string[];
|
|
35
|
+
/** Content and display limits for a Markdown preview with optional output. */
|
|
36
|
+
export interface MarkdownCellOptions {
|
|
37
|
+
content: string;
|
|
38
|
+
index?: number;
|
|
39
|
+
total?: number;
|
|
40
|
+
title?: string;
|
|
41
|
+
status?: "pending" | "running" | "warning" | "complete" | "error";
|
|
42
|
+
spinnerFrame?: number;
|
|
43
|
+
duration?: number;
|
|
44
|
+
output?: string;
|
|
45
|
+
outputMaxLines?: number;
|
|
46
|
+
contentMaxLines?: number;
|
|
47
|
+
expanded?: boolean;
|
|
48
|
+
width: number;
|
|
49
|
+
}
|
|
50
|
+
/** Render a Markdown preview and its optional output block. */
|
|
51
|
+
export declare function renderMarkdownCell(options: MarkdownCellOptions, theme: Theme): string[];
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Theme } from "../theme/theme.js";
|
|
2
|
+
/** A file-list item with optional display metadata. */
|
|
3
|
+
export interface FileEntry {
|
|
4
|
+
path: string;
|
|
5
|
+
/** Absolute filesystem path. When provided together with {@link FileListOptions.hyperlinkFn}, the
|
|
6
|
+
* rendered path text is wrapped in an OSC 8 hyperlink. */
|
|
7
|
+
absPath?: string;
|
|
8
|
+
isDirectory?: boolean;
|
|
9
|
+
meta?: string;
|
|
10
|
+
}
|
|
11
|
+
/** Files and presentation options for a tree-style listing. */
|
|
12
|
+
export interface FileListOptions {
|
|
13
|
+
files: FileEntry[];
|
|
14
|
+
expanded?: boolean;
|
|
15
|
+
maxCollapsed?: number;
|
|
16
|
+
showIcons?: boolean;
|
|
17
|
+
/** When provided, called with the entry's absolute path and the ANSI-styled display string to
|
|
18
|
+
* optionally wrap the path in an OSC 8 hyperlink. Only invoked when {@link FileEntry.absPath} is set. */
|
|
19
|
+
hyperlinkFn?: (absPath: string, displayText: string) => string;
|
|
20
|
+
}
|
|
21
|
+
/** Render file entries as a themed tree listing. */
|
|
22
|
+
export declare function renderFileList(options: FileListOptions, theme: Theme): string[];
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { type TerminalId } from "../terminal-capabilities.js";
|
|
2
|
+
/**
|
|
3
|
+
* Build the OSC 8 target for a file path on `terminalId`.
|
|
4
|
+
*
|
|
5
|
+
* A `file:` URI handed to an editor has to be a plain path. `Paths.get(URI)`
|
|
6
|
+
* rejects one carrying a query or a fragment outright — `IllegalArgumentException:
|
|
7
|
+
* URI has a query component` / `URI has a fragment component` — so appending
|
|
8
|
+
* `?line=` made every JVM-based language server (Kotlin LSP, Eclipse JDT LS)
|
|
9
|
+
* fail *every* request for the resulting document, and VS Code reads the query
|
|
10
|
+
* as part of the resource identity rather than as a cursor position: a blank
|
|
11
|
+
* editor tab that navigates nowhere and persists across window reloads (#12109).
|
|
12
|
+
*
|
|
13
|
+
* The VS Code family instead navigates the documented
|
|
14
|
+
* `vscode://file/<path>:<line>:<col>` form. Everywhere else the plain `file:`
|
|
15
|
+
* URI is right, with the location left in the visible text — terminals that
|
|
16
|
+
* parse a `path:line:col` suffix resolve that on their own.
|
|
17
|
+
*/
|
|
18
|
+
export declare function fileUriForTerminal(filePath: string, opts: {
|
|
19
|
+
line?: number;
|
|
20
|
+
col?: number;
|
|
21
|
+
} | undefined, terminalId: TerminalId): string;
|
|
22
|
+
/**
|
|
23
|
+
* Returns true when OSC 8 hyperlinks should be emitted.
|
|
24
|
+
*
|
|
25
|
+
* Respects `tui.hyperlinks` setting:
|
|
26
|
+
* - `"off"`: never
|
|
27
|
+
* - `"auto"`: when `process.stdout.isTTY`, `NO_COLOR` is unset, and the detected terminal reports hyperlink support
|
|
28
|
+
* - `"always"`: unconditionally (useful for viewers that support OSC 8 without advertising it)
|
|
29
|
+
* Uses the last policy pushed by the host, defaulting to `"auto"`.
|
|
30
|
+
*/
|
|
31
|
+
export declare function isHyperlinkEnabled(): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Push the resolved `tui.hyperlinks` policy into {@link TERMINAL}.hyperlinks, the
|
|
34
|
+
* effective flag that pi-tui renderers gating on it directly — the Markdown
|
|
35
|
+
* component's `[text](url)`/bare-URL links and the status-line PR link — consult.
|
|
36
|
+
*
|
|
37
|
+
* Detection stays immutable in {@link DETECTED_TERMINAL_HYPERLINKS}, so this only
|
|
38
|
+
* ever writes the effective decision; `auto` transitions restore real detection
|
|
39
|
+
* via {@link isHyperlinkEnabled}. Called at TUI startup and whenever the setting
|
|
40
|
+
* changes at runtime.
|
|
41
|
+
* Accepts the raw (unvalidated) setting value; anything but a known mode falls
|
|
42
|
+
* back to the last policy pushed by the host.
|
|
43
|
+
*/
|
|
44
|
+
export declare function applyHyperlinkSetting(mode?: unknown): void;
|
|
45
|
+
/**
|
|
46
|
+
* Wrap `displayText` in an OSC 8 hyperlink pointing at `uri`.
|
|
47
|
+
*
|
|
48
|
+
* Returns `displayText` unchanged when hyperlinks are disabled, `uri` contains
|
|
49
|
+
* terminal control bytes, or `displayText` already contains an OSC 8 sequence.
|
|
50
|
+
*/
|
|
51
|
+
export declare function uriHyperlink(uri: string, displayText: string): string;
|
|
52
|
+
/**
|
|
53
|
+
* Wrap `displayText` in an OSC 8 hyperlink pointing at an HTTP(S) URL.
|
|
54
|
+
* `www.example.com` inputs are linked as `https://www.example.com`.
|
|
55
|
+
*/
|
|
56
|
+
export declare function urlHyperlink(url: string, displayText: string): string;
|
|
57
|
+
/**
|
|
58
|
+
* Wrap `displayText` in an OSC 8 hyperlink pointing at an HTTP(S) URL,
|
|
59
|
+
* bypassing terminal capability auto-detection. Used for auth prompts where
|
|
60
|
+
* an inert "click" label blocks login on terminals whose capabilities are
|
|
61
|
+
* not advertised. Still returns plain text when the host has explicitly opted
|
|
62
|
+
* out by pushing the `"off"` policy.
|
|
63
|
+
*/
|
|
64
|
+
export declare function urlHyperlinkAlways(url: string, displayText: string): string;
|
|
65
|
+
/**
|
|
66
|
+
* Wrap `displayText` in an OSC 8 hyperlink pointing at a filesystem path.
|
|
67
|
+
*
|
|
68
|
+
* Returns `displayText` unchanged when hyperlinks are disabled or when
|
|
69
|
+
* the text already contains an OSC 8 sequence (prevents double-wrapping).
|
|
70
|
+
* Relative paths resolve against the current working directory before URI
|
|
71
|
+
* encoding so the OSC 8 target is always a valid `file://` URL.
|
|
72
|
+
*
|
|
73
|
+
* @param filePath - Filesystem path
|
|
74
|
+
* @param displayText - Text to render as the hyperlink anchor (may contain ANSI codes)
|
|
75
|
+
* @param opts - Optional line/col position appended as `?line=N&col=M` query params
|
|
76
|
+
*/
|
|
77
|
+
export declare function fileHyperlink(filePath: string, displayText: string, opts?: {
|
|
78
|
+
line?: number;
|
|
79
|
+
col?: number;
|
|
80
|
+
}): string;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public exports for shared TUI components.
|
|
3
|
+
*/
|
|
4
|
+
export * from "./code-cell.js";
|
|
5
|
+
export * from "./file-list.js";
|
|
6
|
+
export * from "./hyperlink.js";
|
|
7
|
+
export * from "./output-block.js";
|
|
8
|
+
export * from "./output-pane.js";
|
|
9
|
+
export * from "./render-utils.js";
|
|
10
|
+
export * from "./sixel.js";
|
|
11
|
+
export * from "./status-line.js";
|
|
12
|
+
export * from "./tool-card.js";
|
|
13
|
+
export * from "./tree-list.js";
|
|
14
|
+
export * from "./types.js";
|
|
15
|
+
export * from "./utils.js";
|
|
16
|
+
export * from "./width-aware-text.js";
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { Theme, ThemeColor } from "../theme/theme.js";
|
|
2
|
+
import type { Component } from "../tui.js";
|
|
3
|
+
import type { State } from "./types.js";
|
|
4
|
+
/** Sections and presentation options for a bordered output block. */
|
|
5
|
+
export interface OutputBlockOptions {
|
|
6
|
+
header?: string;
|
|
7
|
+
headerMeta?: string;
|
|
8
|
+
state?: State;
|
|
9
|
+
sections?: Array<{
|
|
10
|
+
label?: string;
|
|
11
|
+
lines: readonly string[];
|
|
12
|
+
separator?: boolean;
|
|
13
|
+
}>;
|
|
14
|
+
width: number;
|
|
15
|
+
applyBg?: boolean;
|
|
16
|
+
contentPaddingLeft?: number;
|
|
17
|
+
contentPaddingRight?: number;
|
|
18
|
+
/** Override the state-derived border color. Used for muted "legacy" tool
|
|
19
|
+
* frames that should not visually compete with framed-output tools. */
|
|
20
|
+
borderColor?: ThemeColor;
|
|
21
|
+
}
|
|
22
|
+
declare const FRAMED_BLOCK_COMPONENT: unique symbol;
|
|
23
|
+
/** A component marked as rendering its own output frame. */
|
|
24
|
+
export type FramedBlockComponent = Component & {
|
|
25
|
+
[FRAMED_BLOCK_COMPONENT]?: true;
|
|
26
|
+
};
|
|
27
|
+
/** Mark a component as owning its output frame. */
|
|
28
|
+
export declare function markFramedBlockComponent<T extends Component>(component: T): T & FramedBlockComponent;
|
|
29
|
+
/** Return whether a component owns its output frame. */
|
|
30
|
+
export declare function isFramedBlockComponent(component: Component): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Inner content width that {@link renderOutputBlock} wraps its body to, for a
|
|
33
|
+
* given outer `width`: both vertical borders plus symmetric content padding.
|
|
34
|
+
* An explicit left padding of zero keeps legacy flush blocks flush on both
|
|
35
|
+
* sides unless a right padding is provided separately.
|
|
36
|
+
*/
|
|
37
|
+
export declare function outputBlockContentWidth(width: number, contentPaddingLeft?: number, contentPaddingRight?: number): number;
|
|
38
|
+
/** Render a bordered output block with optional header and sections. */
|
|
39
|
+
export declare function renderOutputBlock(options: OutputBlockOptions, theme: Theme): string[];
|
|
40
|
+
/**
|
|
41
|
+
* Cached wrapper around `renderOutputBlock`.
|
|
42
|
+
*
|
|
43
|
+
* Since output blocks are re-rendered on every frame (via `render(width)` closures),
|
|
44
|
+
* but their content rarely changes, this cache avoids redundant `visibleWidth()` and
|
|
45
|
+
* `padding()` computations on ~99% of render calls.
|
|
46
|
+
*/
|
|
47
|
+
export declare class CachedOutputBlock {
|
|
48
|
+
#private;
|
|
49
|
+
/** Render with caching. Returns the cached (shared, caller-immutable) lines if options haven't changed. */
|
|
50
|
+
render(options: OutputBlockOptions, theme: Theme): readonly string[];
|
|
51
|
+
/** Invalidate the cache, forcing a rebuild on next render. */
|
|
52
|
+
invalidate(): void;
|
|
53
|
+
}
|
|
54
|
+
export {};
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { Theme } from "../theme/theme.js";
|
|
2
|
+
import type { Component } from "../tui.js";
|
|
3
|
+
/** Which side of an output stream remains visible when the pane is capped. */
|
|
4
|
+
export type OutputPaneEdge = "head" | "tail";
|
|
5
|
+
/** Inputs for the shared output capping and styling algorithm. */
|
|
6
|
+
export interface OutputPaneFormatOptions {
|
|
7
|
+
lines: readonly string[];
|
|
8
|
+
expanded: boolean;
|
|
9
|
+
collapsedMaxLines: number;
|
|
10
|
+
expandedMaxLines?: number;
|
|
11
|
+
edge?: OutputPaneEdge;
|
|
12
|
+
/** Apply the cap after terminal-width wrapping instead of to logical rows. */
|
|
13
|
+
visual?: boolean;
|
|
14
|
+
/** Content width used by visual capping. Required when `visual` is true. */
|
|
15
|
+
width?: number;
|
|
16
|
+
styleLine?: (line: string, index: number) => string;
|
|
17
|
+
/** Keep sixel payload rows byte-for-byte and show the complete payload. */
|
|
18
|
+
uncapSixel?: boolean;
|
|
19
|
+
showHiddenMarker?: boolean;
|
|
20
|
+
showExpandHint?: boolean;
|
|
21
|
+
showExpandHintWhenUncapped?: boolean;
|
|
22
|
+
formatHidden?: (hidden: number, shown: number, total: number, edge: OutputPaneEdge) => string;
|
|
23
|
+
}
|
|
24
|
+
/** Result of formatting one bounded output pane. */
|
|
25
|
+
export interface OutputPaneFormatResult {
|
|
26
|
+
lines: readonly string[];
|
|
27
|
+
hiddenCount: number;
|
|
28
|
+
hasSixel: boolean;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Split terminal text without allowing carriage-return progress updates to
|
|
32
|
+
* corrupt following TUI rows. The final segment after a bare CR wins, matching
|
|
33
|
+
* a terminal cursor-return overwrite.
|
|
34
|
+
*/
|
|
35
|
+
export declare function splitTerminalOutputLines(text: string): string[];
|
|
36
|
+
/**
|
|
37
|
+
* Style and cap output rows for code cells, tool cards, and live execution
|
|
38
|
+
* panes. Sixel rows are never styled or split; with `uncapSixel`, the complete
|
|
39
|
+
* payload is retained so terminal image protocols remain valid.
|
|
40
|
+
*/
|
|
41
|
+
export declare function formatOutputPaneLines(options: OutputPaneFormatOptions, theme: Theme): OutputPaneFormatResult;
|
|
42
|
+
/** Mutable options for a live {@link OutputPane}. */
|
|
43
|
+
export interface OutputPaneOptions extends Omit<OutputPaneFormatOptions, "lines"> {
|
|
44
|
+
paddingX?: number;
|
|
45
|
+
leadingBlank?: boolean;
|
|
46
|
+
maxStoredLines?: number;
|
|
47
|
+
/** Normalize each logical row before it enters the retained stream. */
|
|
48
|
+
normalizeLine?: (line: string) => string;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Stateful, cached output viewport. Streaming callers append chunks while
|
|
52
|
+
* settled callers may replace all rows. Unchanged renders preserve array
|
|
53
|
+
* identity through the inner Text cache.
|
|
54
|
+
*/
|
|
55
|
+
export declare class OutputPane implements Component {
|
|
56
|
+
#private;
|
|
57
|
+
constructor(theme: Theme, options: OutputPaneOptions, text?: string);
|
|
58
|
+
/** Replace the complete output snapshot. */
|
|
59
|
+
setText(text: string): void;
|
|
60
|
+
/** Replace the complete output snapshot with caller-owned immutable rows. */
|
|
61
|
+
setLines(lines: readonly string[]): void;
|
|
62
|
+
/**
|
|
63
|
+
* Append a streaming chunk. Bare CR overwrites the current logical row;
|
|
64
|
+
* a CRLF split across chunks remains a newline, so chunked and whole-text
|
|
65
|
+
* ingestion produce the same settled rows.
|
|
66
|
+
*/
|
|
67
|
+
append(chunk: string): void;
|
|
68
|
+
/** Settle a trailing bare carriage return once no later LF can pair with it. */
|
|
69
|
+
finish(): void;
|
|
70
|
+
/** Update presentation without replacing streamed content. */
|
|
71
|
+
configure(options: Partial<OutputPaneOptions>): void;
|
|
72
|
+
setExpanded(expanded: boolean): void;
|
|
73
|
+
get lineCount(): number;
|
|
74
|
+
get hasSixel(): boolean;
|
|
75
|
+
getText(): string;
|
|
76
|
+
render(width: number): readonly string[];
|
|
77
|
+
invalidate(): void;
|
|
78
|
+
}
|
|
79
|
+
/** Default styling for plain tool output while preserving existing ANSI. */
|
|
80
|
+
export declare function styleToolOutputLine(line: string, theme: Theme): string;
|