@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
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { Component } from "../tui.js";
|
|
2
2
|
import { Ellipsis } from "../utils.js";
|
|
3
|
+
import { type ViewportAlignment } from "./scroll-viewport.js";
|
|
3
4
|
type ScrollbarMode = "auto" | "always" | "never";
|
|
5
|
+
export type ScrollAnchor = "start" | "end";
|
|
4
6
|
export interface ScrollViewTheme {
|
|
5
7
|
track?: (text: string) => string;
|
|
6
8
|
thumb?: (text: string) => string;
|
|
@@ -9,7 +11,7 @@ export interface ScrollViewOptions {
|
|
|
9
11
|
height: number;
|
|
10
12
|
/** Defaults to "auto". "auto" reserves a scrollbar column only when content overflows. */
|
|
11
13
|
scrollbar?: ScrollbarMode | boolean;
|
|
12
|
-
/** Logical row count for pre-windowed line slices. Defaults to
|
|
14
|
+
/** Logical row count for pre-windowed line slices. Defaults to the rendered content row count. */
|
|
13
15
|
totalRows?: number;
|
|
14
16
|
theme?: ScrollViewTheme;
|
|
15
17
|
trackChar?: string;
|
|
@@ -17,48 +19,80 @@ export interface ScrollViewOptions {
|
|
|
17
19
|
/**
|
|
18
20
|
* Indicator appended when a row overflows `contentWidth`. Defaults to
|
|
19
21
|
* {@link Ellipsis.Unicode}. Pass {@link Ellipsis.Omit} when callers wrap
|
|
20
|
-
* lines to width themselves and only trailing padding can overflow
|
|
21
|
-
* the plan-review overlay), so no stray `…` lands on every padded row.
|
|
22
|
+
* lines to width themselves and only trailing padding can overflow.
|
|
22
23
|
*/
|
|
23
24
|
ellipsis?: Ellipsis;
|
|
24
|
-
/**
|
|
25
|
-
* Rows moved per keystroke when {@link ScrollView.handleScrollKey} sees a
|
|
26
|
-
* Shift+Arrow (the "scroll faster" affordance). Defaults to 5.
|
|
27
|
-
*/
|
|
25
|
+
/** Rows moved by Shift+Arrow in {@link ScrollView.handleScrollKey}. Defaults to 5. */
|
|
28
26
|
fastScrollLines?: number;
|
|
27
|
+
/** Follow newly appended rows while the viewport was already at its tail. */
|
|
28
|
+
followTail?: boolean;
|
|
29
|
+
/** Preserve either the leading row or the distance from the tail across content/height changes. */
|
|
30
|
+
anchor?: ScrollAnchor;
|
|
31
|
+
}
|
|
32
|
+
/** A selected logical range revealed once or whenever its geometry changes. */
|
|
33
|
+
export interface ScrollRangeAnchor {
|
|
34
|
+
id: string;
|
|
35
|
+
start: number;
|
|
36
|
+
end: number;
|
|
37
|
+
margin?: number;
|
|
38
|
+
alignment?: ViewportAlignment;
|
|
39
|
+
mode?: "selection" | "once";
|
|
40
|
+
/** Prefer the leading edge when the selected range fills more than the viewport. */
|
|
41
|
+
oversized?: "nearest" | "start";
|
|
29
42
|
}
|
|
30
43
|
/**
|
|
31
|
-
* Fixed-height viewport over
|
|
44
|
+
* Fixed-height viewport over supplied rows or a lazily rendered child.
|
|
32
45
|
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
46
|
+
* Without `totalRows`, content is a complete row buffer and ScrollView slices
|
|
47
|
+
* it at its own offset. With `totalRows`, content is an already-windowed slice:
|
|
48
|
+
* the offset remains logical (for thumb and hit mapping), while local row zero
|
|
49
|
+
* is rendered from content row zero.
|
|
35
50
|
*/
|
|
36
51
|
export declare class ScrollView implements Component {
|
|
37
52
|
#private;
|
|
38
|
-
constructor(
|
|
53
|
+
constructor(content: readonly string[] | Component, options: ScrollViewOptions);
|
|
54
|
+
/** Child exposed for debug-tree traversal when the viewport wraps a component. */
|
|
55
|
+
get debugChildren(): readonly Component[];
|
|
39
56
|
/** Return viewport, content, and scroll position state for debug inspection. */
|
|
40
57
|
debugState(): Record<string, unknown>;
|
|
41
58
|
setLines(lines: readonly string[]): void;
|
|
59
|
+
/** Replace the supplied rows with a lazily rendered child component. */
|
|
60
|
+
setChild(child: Component): void;
|
|
42
61
|
setTotalRows(totalRows: number | undefined): void;
|
|
43
62
|
setHeight(height: number): void;
|
|
44
63
|
setScrollbar(scrollbar: ScrollViewOptions["scrollbar"]): void;
|
|
64
|
+
setFollowTail(followTail: boolean): void;
|
|
65
|
+
setAnchor(anchor: ScrollAnchor): void;
|
|
45
66
|
getScrollOffset(): number;
|
|
46
67
|
getMaxScrollOffset(): number;
|
|
68
|
+
/** Current half-open logical row range. */
|
|
69
|
+
getVisibleRange(): {
|
|
70
|
+
start: number;
|
|
71
|
+
end: number;
|
|
72
|
+
};
|
|
73
|
+
/** Map a local viewport row to its logical content row. */
|
|
74
|
+
logicalRowAt(localRow: number): number | undefined;
|
|
75
|
+
/** Map a visible logical content row to its local viewport row. */
|
|
76
|
+
localRowFor(logicalRow: number): number | undefined;
|
|
47
77
|
setScrollOffset(offset: number): void;
|
|
78
|
+
/** Keep a logical row visible now and through subsequent resize/content changes. */
|
|
79
|
+
setActiveRow(row: number | undefined, alignment?: ViewportAlignment): void;
|
|
80
|
+
/** Whether a keyed range has already been revealed successfully. */
|
|
81
|
+
hasRevealedRange(id: string): boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Reveal a changed selection without snapping manual scrolling back on
|
|
84
|
+
* unchanged renders. Passing undefined forgets the previous range.
|
|
85
|
+
*/
|
|
86
|
+
revealRange(anchor: ScrollRangeAnchor | undefined, width: number): boolean;
|
|
48
87
|
scroll(delta: number): void;
|
|
49
88
|
page(delta: number): void;
|
|
50
89
|
scrollToTop(): void;
|
|
51
90
|
scrollToBottom(): void;
|
|
52
|
-
/**
|
|
53
|
-
* Apply a standard navigation key to the viewport. Shift+Arrow scrolls by
|
|
54
|
-
* {@link ScrollViewOptions.fastScrollLines} (the "scroll faster" affordance);
|
|
55
|
-
* plain Arrow by one line; PageUp/PageDown by a page; Home/End to the ends.
|
|
56
|
-
* Returns true when the key was consumed, so callers can fall through to
|
|
57
|
-
* their own (e.g. vim-style) bindings. Generic on purpose: every ScrollView
|
|
58
|
-
* consumer gets the same scroll keys, including Shift-to-go-faster.
|
|
59
|
-
*/
|
|
91
|
+
/** Apply Arrow, Shift+Arrow, Page, Home, and End navigation keys. */
|
|
60
92
|
handleScrollKey(data: string): boolean;
|
|
61
93
|
invalidate(): void;
|
|
94
|
+
/** Permanently release a wrapped child's timers, subscriptions, and other resources. */
|
|
95
|
+
dispose(): void;
|
|
62
96
|
render(width: number): readonly string[];
|
|
63
97
|
}
|
|
64
98
|
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export type ViewportAlignment = "nearest" | "start" | "center" | "end";
|
|
2
|
+
export interface ViewportRange {
|
|
3
|
+
/** First visible logical row. */
|
|
4
|
+
start: number;
|
|
5
|
+
/** Exclusive end of the visible logical rows. */
|
|
6
|
+
end: number;
|
|
7
|
+
}
|
|
8
|
+
export interface ScrollbarThumbRange {
|
|
9
|
+
/** First local viewport row occupied by the thumb. */
|
|
10
|
+
start: number;
|
|
11
|
+
/** Exclusive end of the thumb. */
|
|
12
|
+
end: number;
|
|
13
|
+
}
|
|
14
|
+
export interface CursorColumnWindow {
|
|
15
|
+
/** Visible source slice. */
|
|
16
|
+
text: string;
|
|
17
|
+
/** First visible terminal column in the source. */
|
|
18
|
+
startColumn: number;
|
|
19
|
+
/** UTF-16 index of the cursor within {@link text}. */
|
|
20
|
+
cursorIndex: number;
|
|
21
|
+
}
|
|
22
|
+
/** Maximum legal row offset for a bounded viewport. */
|
|
23
|
+
export declare function maxScrollOffset(totalRows: number, viewportRows: number): number;
|
|
24
|
+
/** Clamp a row offset to the bounds of a viewport. */
|
|
25
|
+
export declare function clampScrollOffset(offset: number, totalRows: number, viewportRows: number): number;
|
|
26
|
+
/** Logical half-open row range visible at an offset. */
|
|
27
|
+
export declare function viewportRange(totalRows: number, viewportRows: number, offset: number): ViewportRange;
|
|
28
|
+
/** Whether the logical row set is taller than its viewport. */
|
|
29
|
+
export declare function viewportOverflows(totalRows: number, viewportRows: number): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Offset that keeps `row` visible, optionally aligning it to a viewport edge
|
|
32
|
+
* or center. `nearest` preserves the current offset while the row is visible.
|
|
33
|
+
*/
|
|
34
|
+
export declare function scrollOffsetForRow(currentOffset: number, row: number, totalRows: number, viewportRows: number, alignment?: ViewportAlignment): number;
|
|
35
|
+
/** Selection-centered logical row window. */
|
|
36
|
+
export declare function centeredViewportRange(selectedRow: number, totalRows: number, viewportRows: number): ViewportRange;
|
|
37
|
+
/**
|
|
38
|
+
* Scrollbar thumb geometry shared by standalone viewports and embedded border
|
|
39
|
+
* renderers. The returned rows are local to the viewport.
|
|
40
|
+
*/
|
|
41
|
+
export declare function scrollbarThumbRange(viewportRows: number, totalRows: number, scrollOffset: number): ScrollbarThumbRange;
|
|
42
|
+
/**
|
|
43
|
+
* Horizontally window a single rendered line around its cursor. Grapheme width
|
|
44
|
+
* is respected, including a wide cursor cell at the right edge.
|
|
45
|
+
*/
|
|
46
|
+
export declare function cursorColumnWindow(text: string, cursorIndex: number, width: number): CursorColumnWindow;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Component } from "../tui.js";
|
|
2
|
+
/** Explicit heading/rule/spacing policy for a data section. */
|
|
3
|
+
export interface SectionOptions {
|
|
4
|
+
readonly title: string;
|
|
5
|
+
readonly body: Component | readonly string[];
|
|
6
|
+
readonly titleStyle?: (text: string) => string;
|
|
7
|
+
readonly ruleStyle?: (text: string) => string;
|
|
8
|
+
readonly ruleGlyph: string;
|
|
9
|
+
readonly ruleWidth: number | "fill";
|
|
10
|
+
readonly blankAfter?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/** Compose a width-bounded heading, rule, child rows, and optional trailing blank line. */
|
|
13
|
+
export declare class Section implements Component {
|
|
14
|
+
#private;
|
|
15
|
+
constructor(options: SectionOptions);
|
|
16
|
+
invalidate(): void;
|
|
17
|
+
dispose(): void;
|
|
18
|
+
render(width: number): readonly string[];
|
|
19
|
+
}
|
|
@@ -9,6 +9,12 @@ export interface SelectItem {
|
|
|
9
9
|
icon?: string;
|
|
10
10
|
/** Dim hint text shown inline after cursor when this item is selected */
|
|
11
11
|
hint?: string;
|
|
12
|
+
/** Disabled rows stay visible but are skipped by navigation and cannot activate. */
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
/** When set, activation requires a second Enter/click and this text becomes the status line. */
|
|
15
|
+
confirmation?: string;
|
|
16
|
+
/** Additional text included by the default fuzzy filter without being rendered. */
|
|
17
|
+
searchText?: string;
|
|
12
18
|
}
|
|
13
19
|
export interface SelectListTheme {
|
|
14
20
|
selectedPrefix: (text: string) => string;
|
|
@@ -29,12 +35,46 @@ export interface SelectListTruncatePrimaryContext {
|
|
|
29
35
|
item: SelectItem;
|
|
30
36
|
isSelected: boolean;
|
|
31
37
|
}
|
|
38
|
+
/** State supplied to a rich SelectList row renderer or measurer. */
|
|
39
|
+
export interface SelectListRenderItemContext {
|
|
40
|
+
item: SelectItem;
|
|
41
|
+
index: number;
|
|
42
|
+
width: number;
|
|
43
|
+
selected: boolean;
|
|
44
|
+
hovered: boolean;
|
|
45
|
+
pendingConfirmation: boolean;
|
|
46
|
+
theme: SelectListTheme;
|
|
47
|
+
}
|
|
48
|
+
/** Current controlled menu state supplied to a custom status renderer. */
|
|
49
|
+
export interface SelectListStatusContext {
|
|
50
|
+
query: string;
|
|
51
|
+
selectedIndex: number;
|
|
52
|
+
visibleCount: number;
|
|
53
|
+
totalCount: number;
|
|
54
|
+
pendingItem: SelectItem | undefined;
|
|
55
|
+
}
|
|
32
56
|
export interface SelectListLayoutOptions {
|
|
33
57
|
minPrimaryColumnWidth?: number;
|
|
34
58
|
maxPrimaryColumnWidth?: number;
|
|
35
59
|
truncatePrimary?: (context: SelectListTruncatePrimaryContext) => string;
|
|
36
60
|
/** Enable type-to-filter search when the item count exceeds maxVisible. Defaults to true. */
|
|
37
61
|
overflowSearch?: boolean;
|
|
62
|
+
/** Search activation policy. `overflowSearch` remains authoritative when this is omitted. */
|
|
63
|
+
search?: "overflow" | "always" | "never";
|
|
64
|
+
/** Domain-specific filtering/ranking. Selection is retained by item value when possible. */
|
|
65
|
+
filterItems?: (items: readonly SelectItem[], query: string) => readonly SelectItem[];
|
|
66
|
+
/** Custom rich-row renderer. Every returned line is mouse-hit-tested as the same item. */
|
|
67
|
+
renderItem?: (context: SelectListRenderItemContext) => readonly string[];
|
|
68
|
+
/** Cheap row measurement for custom renderers; defaults to calling renderItem and reading its length. */
|
|
69
|
+
measureItem?: (context: SelectListRenderItemContext) => number;
|
|
70
|
+
/** Empty-list message (before a query is entered). */
|
|
71
|
+
emptyText?: string;
|
|
72
|
+
/** No-match message (after filtering). */
|
|
73
|
+
noMatchText?: string;
|
|
74
|
+
/** Optional status renderer. Return undefined to omit the status row. */
|
|
75
|
+
statusText?: (context: SelectListStatusContext) => string | undefined;
|
|
76
|
+
/** Whether single-step keyboard navigation wraps at the edges. Defaults to true. */
|
|
77
|
+
wrapNavigation?: boolean;
|
|
38
78
|
/**
|
|
39
79
|
* Wrap long descriptions onto continuation rows indented under the
|
|
40
80
|
* description column instead of truncating. Defaults to false so existing
|
|
@@ -51,7 +91,6 @@ export interface SelectListLayoutOptions {
|
|
|
51
91
|
}
|
|
52
92
|
export declare class SelectList implements Component, MouseRoutable {
|
|
53
93
|
#private;
|
|
54
|
-
private readonly items;
|
|
55
94
|
private readonly theme;
|
|
56
95
|
private readonly layout;
|
|
57
96
|
onSelect?: (item: SelectItem) => void;
|
|
@@ -63,14 +102,19 @@ export declare class SelectList implements Component, MouseRoutable {
|
|
|
63
102
|
/** Refit the visible row budget (hosts clamp the list to available height). */
|
|
64
103
|
setMaxVisible(rows: number): void;
|
|
65
104
|
setFilter(filter: string): void;
|
|
105
|
+
/** Replace controlled items while retaining the selected value when possible. */
|
|
106
|
+
setItems(items: readonly SelectItem[]): void;
|
|
66
107
|
setSelectedIndex(index: number): void;
|
|
108
|
+
/** Select a visible item by its stable value. */
|
|
109
|
+
setSelectedValue(value: string): void;
|
|
110
|
+
getFilter(): string;
|
|
67
111
|
/** Resolve a 0-based rendered-line index to a filtered-item index. */
|
|
68
112
|
hitTest(line: number): number | undefined;
|
|
69
113
|
/** Highlight the item under the pointer (null clears). */
|
|
70
114
|
setHoverIndex(index: number | null): void;
|
|
71
115
|
/** Move the selection one step for a wheel notch. */
|
|
72
116
|
handleWheel(delta: -1 | 1): void;
|
|
73
|
-
/** Mouse click: select the item under the pointer and
|
|
117
|
+
/** Mouse click: select the item under the pointer and request activation. */
|
|
74
118
|
clickItem(index: number): void;
|
|
75
119
|
routeMouse(event: SgrMouseEvent, line: number, _col: number): void;
|
|
76
120
|
invalidate(): void;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { SgrMouseEvent } from "../mouse.js";
|
|
2
2
|
import type { Component } from "../tui.js";
|
|
3
|
+
import { FormField, type FormFieldOptions, type FormFieldTheme } from "./form.js";
|
|
3
4
|
export interface SettingItem {
|
|
4
5
|
/** Unique identifier for this setting */
|
|
5
6
|
id: string;
|
|
@@ -131,3 +132,22 @@ export declare class SettingsList implements Component {
|
|
|
131
132
|
render(width: number): readonly string[];
|
|
132
133
|
handleInput(data: string): void;
|
|
133
134
|
}
|
|
135
|
+
/** Construction options for a SettingsList composed as a form field. */
|
|
136
|
+
export interface SettingsFormFieldOptions extends Omit<FormFieldOptions, "theme"> {
|
|
137
|
+
items: SettingItem[];
|
|
138
|
+
maxVisible: number;
|
|
139
|
+
settingsTheme: SettingsListTheme;
|
|
140
|
+
fieldTheme: FormFieldTheme;
|
|
141
|
+
onChange(id: string, newValue: string): void;
|
|
142
|
+
onCancel(): void;
|
|
143
|
+
listOptions?: SettingsListOptions;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* SettingsList adapter for detail forms. It retains the canonical list
|
|
147
|
+
* implementation while sharing FormField label, description, hint, focus, and
|
|
148
|
+
* input dispatch with text and selection fields.
|
|
149
|
+
*/
|
|
150
|
+
export declare class SettingsFormField extends FormField {
|
|
151
|
+
readonly settingsList: SettingsList;
|
|
152
|
+
constructor(options: SettingsFormFieldOptions);
|
|
153
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Component } from "../tui.js";
|
|
2
|
+
/** One table cell. Styling is applied after alignment so padding shares the cell style. */
|
|
3
|
+
export interface TableCell {
|
|
4
|
+
readonly text: string;
|
|
5
|
+
readonly style?: (text: string) => string;
|
|
6
|
+
}
|
|
7
|
+
/** Explicit sizing and overflow policy for a table column. */
|
|
8
|
+
export interface TableColumn {
|
|
9
|
+
readonly width: number;
|
|
10
|
+
readonly minWidth?: number;
|
|
11
|
+
readonly align: "left" | "right";
|
|
12
|
+
readonly overflow: "allow" | "truncate";
|
|
13
|
+
/** Lower-priority columns shrink before higher-priority columns. */
|
|
14
|
+
readonly priority?: number;
|
|
15
|
+
readonly style?: (text: string) => string;
|
|
16
|
+
}
|
|
17
|
+
/** Row-layout options shared by table functions and the component. */
|
|
18
|
+
export interface TableOptions {
|
|
19
|
+
readonly gap?: string;
|
|
20
|
+
readonly indent?: string;
|
|
21
|
+
readonly fit?: boolean;
|
|
22
|
+
}
|
|
23
|
+
/** Render one ANSI-aware fixed-column row. */
|
|
24
|
+
export declare function renderTableRow(cells: readonly TableCell[], columns: readonly TableColumn[], maxWidth?: number, options?: TableOptions): string;
|
|
25
|
+
/** Bounded table component for structured rows with replaceable data and stable unchanged-render arrays. */
|
|
26
|
+
export declare class Table implements Component {
|
|
27
|
+
#private;
|
|
28
|
+
constructor(rows: readonly (readonly TableCell[])[], columns: readonly TableColumn[], options?: TableOptions);
|
|
29
|
+
setRows(rows: readonly (readonly TableCell[])[]): boolean;
|
|
30
|
+
invalidate(): void;
|
|
31
|
+
render(width: number): readonly string[];
|
|
32
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import type { Theme } from "../theme/theme.js";
|
|
2
|
+
import type { Component } from "../tui.js";
|
|
3
|
+
import { type ScrollViewTheme } from "./scroll-view.js";
|
|
4
|
+
/** Stable identity accepted by {@link TreeView}. Keys must be unique within one hierarchy. */
|
|
5
|
+
export type TreeKey = string | number;
|
|
6
|
+
/** One ancestor retained on a flattened hierarchy row. */
|
|
7
|
+
export interface TreeAncestor<K extends TreeKey> {
|
|
8
|
+
key: K;
|
|
9
|
+
depth: number;
|
|
10
|
+
isLast: boolean;
|
|
11
|
+
siblingCount: number;
|
|
12
|
+
}
|
|
13
|
+
/** Structural metadata for one item in depth-first display order. */
|
|
14
|
+
export interface TreeRow<T, K extends TreeKey> {
|
|
15
|
+
item: T;
|
|
16
|
+
key: K;
|
|
17
|
+
parentKey: K | undefined;
|
|
18
|
+
depth: number;
|
|
19
|
+
index: number;
|
|
20
|
+
siblingIndex: number;
|
|
21
|
+
siblingCount: number;
|
|
22
|
+
isLast: boolean;
|
|
23
|
+
ancestors: readonly TreeAncestor<K>[];
|
|
24
|
+
}
|
|
25
|
+
/** Controls the iterative hierarchy projection shared by display and interactive trees. */
|
|
26
|
+
export interface FlattenTreeOptions<T, K extends TreeKey> {
|
|
27
|
+
roots: readonly T[];
|
|
28
|
+
getKey: (item: T) => K;
|
|
29
|
+
getChildren: (item: T, row: TreeRow<T, K>) => readonly T[];
|
|
30
|
+
/** False omits descendants while retaining the item itself. Defaults to true. */
|
|
31
|
+
isExpanded?: (item: T, row: TreeRow<T, K>) => boolean;
|
|
32
|
+
/** Display depth assigned to roots. Defaults to zero. */
|
|
33
|
+
rootDepth?: number;
|
|
34
|
+
/** Override the display depth inherited by direct children. */
|
|
35
|
+
getChildDepth?: (item: T, row: TreeRow<T, K>, children: readonly T[]) => number;
|
|
36
|
+
/** Stop projection after this many structural items. Omit for no traversal cap. */
|
|
37
|
+
maxItems?: number;
|
|
38
|
+
}
|
|
39
|
+
/** First-line and continuation prefixes for a rendered tree item. */
|
|
40
|
+
export interface TreePrefix {
|
|
41
|
+
first: string;
|
|
42
|
+
continuation: string;
|
|
43
|
+
}
|
|
44
|
+
/** Optional symbol styling for {@link treeRowPrefix}. */
|
|
45
|
+
export interface TreePrefixStyle {
|
|
46
|
+
connector?: (symbol: string) => string;
|
|
47
|
+
vertical?: (symbol: string) => string;
|
|
48
|
+
}
|
|
49
|
+
/** Render the conventional three-cell tree gutter for a flattened row. */
|
|
50
|
+
export declare function treeRowPrefix<T, K extends TreeKey>(row: TreeRow<T, K>, theme: Theme, style?: TreePrefixStyle): TreePrefix;
|
|
51
|
+
/** Context supplied while laying out one visible tree row. */
|
|
52
|
+
export interface TreeViewRowContext<T, K extends TreeKey> {
|
|
53
|
+
row: TreeRow<T, K>;
|
|
54
|
+
selected: boolean;
|
|
55
|
+
rowIndex: number;
|
|
56
|
+
windowStart: number;
|
|
57
|
+
windowEnd: number;
|
|
58
|
+
windowRows: readonly TreeRow<T, K>[];
|
|
59
|
+
width: number;
|
|
60
|
+
contentWidth: number;
|
|
61
|
+
prefix: TreePrefix;
|
|
62
|
+
}
|
|
63
|
+
/** Row bodies may be plain lines or an existing component rendered at the remaining width. */
|
|
64
|
+
export type TreeViewRowContent = string | readonly string[] | Component;
|
|
65
|
+
/** Rendering, filtering, selection, expansion, and budget policy for {@link TreeView}. */
|
|
66
|
+
export interface TreeViewOptions<T, K extends TreeKey> extends FlattenTreeOptions<T, K> {
|
|
67
|
+
theme: Theme;
|
|
68
|
+
renderRow: (item: T, context: TreeViewRowContext<T, K>) => TreeViewRowContent;
|
|
69
|
+
filter?: (item: T, row: TreeRow<T, K>) => boolean;
|
|
70
|
+
selectedKey?: K;
|
|
71
|
+
/** Logical rows shown around the selection. Omit to render every filtered row. */
|
|
72
|
+
maxRows?: number;
|
|
73
|
+
/** Strict physical-line budget after multiline row expansion. */
|
|
74
|
+
maxLines?: number;
|
|
75
|
+
/** Defaults to true when `selectedKey` is provided. */
|
|
76
|
+
centerSelection?: boolean;
|
|
77
|
+
/** Custom indentation/gutter geometry. */
|
|
78
|
+
renderPrefix?: (row: TreeRow<T, K>, context: Omit<TreeViewRowContext<T, K>, "prefix" | "contentWidth" | "selected">) => TreePrefix;
|
|
79
|
+
/** Content before the tree gutter, such as an interactive selection cursor. */
|
|
80
|
+
renderLeading?: (item: T, context: TreeViewRowContext<T, K>) => string;
|
|
81
|
+
/** Applied to every physical line belonging to the selected logical row. */
|
|
82
|
+
styleSelected?: (line: string) => string;
|
|
83
|
+
/** Bound physical rows to `render(width)`. Defaults to true; disable only for formatting adapters. */
|
|
84
|
+
truncateRows?: boolean;
|
|
85
|
+
/** Add a viewport scrollbar when `maxRows` hides logical rows. */
|
|
86
|
+
scrollbar?: boolean;
|
|
87
|
+
scrollbarTheme?: ScrollViewTheme;
|
|
88
|
+
}
|
|
89
|
+
/** Result of a tree render, including whether a row or line budget omitted content. */
|
|
90
|
+
export interface TreeViewRenderResult {
|
|
91
|
+
lines: readonly string[];
|
|
92
|
+
truncated: boolean;
|
|
93
|
+
windowStart: number;
|
|
94
|
+
windowEnd: number;
|
|
95
|
+
totalRows: number;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Reusable keyed hierarchy component. It keeps flattened and rendered arrays
|
|
99
|
+
* stable by reference until its inputs, selection, filter, or width change.
|
|
100
|
+
*/
|
|
101
|
+
export declare class TreeView<T, K extends TreeKey = string> implements Component {
|
|
102
|
+
#private;
|
|
103
|
+
constructor(options: TreeViewOptions<T, K>);
|
|
104
|
+
/** Rebuild hierarchy state on the next access and discard rendered lines. */
|
|
105
|
+
invalidate(): void;
|
|
106
|
+
dispose(): void;
|
|
107
|
+
/** Replace the visible-row predicate while retaining the nearest possible selection. */
|
|
108
|
+
setFilter(filter: ((item: T, row: TreeRow<T, K>) => boolean) | undefined): void;
|
|
109
|
+
/** Every structural row before filtering. The returned array is immutable and stable until invalidated. */
|
|
110
|
+
get allRows(): readonly TreeRow<T, K>[];
|
|
111
|
+
/** Filtered rows in navigation order. The returned array is immutable and stable until invalidated. */
|
|
112
|
+
get rows(): readonly TreeRow<T, K>[];
|
|
113
|
+
/** Currently selected key, or undefined for an empty tree. */
|
|
114
|
+
get selectedKey(): K | undefined;
|
|
115
|
+
/** Currently selected item, or undefined for an empty tree. */
|
|
116
|
+
get selectedItem(): T | undefined;
|
|
117
|
+
/** Index in filtered navigation order, or -1 when empty. */
|
|
118
|
+
get selectionIndex(): number;
|
|
119
|
+
/** Select a key, walking to its nearest visible ancestor when filtered. */
|
|
120
|
+
setSelectedKey(key: K | undefined): void;
|
|
121
|
+
/** Select a filtered-row index, clamped to the current range. */
|
|
122
|
+
setSelectionIndex(index: number): void;
|
|
123
|
+
/** Move by logical rows. Wrapping is opt-in for menu-style interaction. */
|
|
124
|
+
moveSelection(delta: number, wrap?: boolean): void;
|
|
125
|
+
/** Move to the next row in `direction` satisfying a domain predicate. */
|
|
126
|
+
moveSelectionWhere(predicate: (item: T, row: TreeRow<T, K>) => boolean, direction: -1 | 1): void;
|
|
127
|
+
render(width: number): readonly string[];
|
|
128
|
+
/** Render lines plus budget/window metadata for adapters that append an ellipsis. */
|
|
129
|
+
renderWithState(width: number): TreeViewRenderResult;
|
|
130
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { MouseRoutable, SgrMouseEvent } from "../mouse.js";
|
|
2
|
+
import type { Component } from "../tui.js";
|
|
3
|
+
/** Semantic role of a wizard step's primary interactive content. */
|
|
4
|
+
export type WizardStepKind = "input" | "choice" | "confirm" | "async" | "custom";
|
|
5
|
+
/** A component slot rendered by {@link WizardStep}. */
|
|
6
|
+
export interface WizardStepSlot {
|
|
7
|
+
readonly component: Component;
|
|
8
|
+
/** Omit this slot when retaining it would squeeze content below `minContentLines`. */
|
|
9
|
+
readonly optional?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/** Composition and height policy for a single wizard step. */
|
|
12
|
+
export interface WizardStepOptions {
|
|
13
|
+
readonly kind: WizardStepKind;
|
|
14
|
+
readonly content: Component;
|
|
15
|
+
readonly heading?: Component;
|
|
16
|
+
readonly intro?: Component;
|
|
17
|
+
readonly preview?: WizardStepSlot;
|
|
18
|
+
readonly status?: Component;
|
|
19
|
+
readonly footer?: Component;
|
|
20
|
+
/** Blank rows inserted between non-empty slots. Defaults to one. */
|
|
21
|
+
readonly gap?: number;
|
|
22
|
+
/** Minimum useful content height used when deciding whether to show an optional preview. */
|
|
23
|
+
readonly minContentLines?: number;
|
|
24
|
+
/** Resize content-owned viewports before their next render. */
|
|
25
|
+
readonly fitContent?: (maxLines: number | undefined) => void;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Reusable presentation for input, choice, confirmation, and asynchronous
|
|
29
|
+
* wizard steps. Controllers retain state transitions; this component owns the
|
|
30
|
+
* ordered slots, bounded content budget, optional-preview collapse, and mouse
|
|
31
|
+
* coordinate translation into the interactive content child.
|
|
32
|
+
*/
|
|
33
|
+
export declare class WizardStep implements Component, MouseRoutable {
|
|
34
|
+
#private;
|
|
35
|
+
readonly debugKind = "WizardStep";
|
|
36
|
+
constructor(options: WizardStepOptions);
|
|
37
|
+
get debugChildren(): readonly Component[];
|
|
38
|
+
debugState(): Record<string, unknown>;
|
|
39
|
+
/** Update the semantic role exposed through debug state. */
|
|
40
|
+
setKind(kind: WizardStepKind): void;
|
|
41
|
+
/** Replace or remove the heading slot without rebuilding the step. */
|
|
42
|
+
setHeading(heading: Component | undefined): void;
|
|
43
|
+
/** Replace or remove the introductory slot without rebuilding the step. */
|
|
44
|
+
setIntro(intro: Component | undefined): void;
|
|
45
|
+
/** Replace or remove the preview slot without rebuilding the step. */
|
|
46
|
+
setPreview(preview: WizardStepSlot | undefined): void;
|
|
47
|
+
/** Replace the interactive content while retaining layout and height state. */
|
|
48
|
+
setContent(content: Component): void;
|
|
49
|
+
/** Replace or remove the status slot without rebuilding the step. */
|
|
50
|
+
setStatus(status: Component | undefined): void;
|
|
51
|
+
/** Replace or remove the footer slot without rebuilding the step. */
|
|
52
|
+
setFooter(footer: Component | undefined): void;
|
|
53
|
+
/** Bound the complete step, including heading, preview, status, and footer. */
|
|
54
|
+
setMaxHeight(maxHeight: number | undefined): void;
|
|
55
|
+
invalidate(): void;
|
|
56
|
+
dispose(): void;
|
|
57
|
+
handleInput(data: string): void;
|
|
58
|
+
routeMouse(event: SgrMouseEvent, line: number, col: number): void;
|
|
59
|
+
render(width: number): readonly string[];
|
|
60
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type KeybindingsManager } from "./app-keybindings.js";
|
|
2
|
+
/** Effective keybinding operations used to render the hotkey reference. */
|
|
3
|
+
export interface HotkeysMarkdownBindings {
|
|
4
|
+
keybindings: Pick<KeybindingsManager, "getDisplayString" | "getKeys" | "matchesCanonical">;
|
|
5
|
+
}
|
|
6
|
+
/** Build the platform-aware Markdown reference for effective application hotkeys. */
|
|
7
|
+
export declare function buildHotkeysMarkdown(bindings: HotkeysMarkdownBindings): string;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,19 +1,35 @@
|
|
|
1
1
|
export * from "./autocomplete.js";
|
|
2
|
+
export * from "./chat/transcript-browser.js";
|
|
2
3
|
export * from "./components/box.js";
|
|
3
4
|
export * from "./components/cancellable-loader.js";
|
|
4
5
|
export * from "./components/composer/index.js";
|
|
6
|
+
export * from "./components/disclosure.js";
|
|
5
7
|
export * from "./components/editor.js";
|
|
8
|
+
export * from "./components/form.js";
|
|
6
9
|
export * from "./components/image.js";
|
|
7
10
|
export * from "./components/input.js";
|
|
11
|
+
export * from "./components/key-value-list.js";
|
|
12
|
+
export * from "./components/layout/geometry.js";
|
|
13
|
+
export * from "./components/layout/row.js";
|
|
14
|
+
export * from "./components/layout/split-pane.js";
|
|
15
|
+
export * from "./components/layout/stack.js";
|
|
8
16
|
export * from "./components/loader.js";
|
|
9
17
|
export * from "./components/markdown.js";
|
|
18
|
+
export * from "./components/menu-selection.js";
|
|
19
|
+
export * from "./components/metric.js";
|
|
20
|
+
export * from "./components/progress-bar.js";
|
|
10
21
|
export * from "./components/scroll-view.js";
|
|
22
|
+
export * from "./components/scroll-viewport.js";
|
|
23
|
+
export * from "./components/section.js";
|
|
11
24
|
export * from "./components/select-list.js";
|
|
12
25
|
export * from "./components/settings-list.js";
|
|
13
26
|
export * from "./components/spacer.js";
|
|
14
27
|
export * from "./components/tab-bar.js";
|
|
28
|
+
export * from "./components/table.js";
|
|
15
29
|
export * from "./components/text.js";
|
|
30
|
+
export * from "./components/tree-view.js";
|
|
16
31
|
export * from "./components/truncated-text.js";
|
|
32
|
+
export * from "./components/wizard-step.js";
|
|
17
33
|
export * from "./debug-server.js";
|
|
18
34
|
export * from "./deccara.js";
|
|
19
35
|
export * from "./desktop-notify.js";
|
|
@@ -29,6 +45,7 @@ export * from "./stdin-buffer.js";
|
|
|
29
45
|
export type * from "./symbols.js";
|
|
30
46
|
export * from "./terminal.js";
|
|
31
47
|
export * from "./terminal-capabilities.js";
|
|
48
|
+
export * from "./theme/index.js";
|
|
32
49
|
export * from "./ttyid.js";
|
|
33
50
|
export * from "./tui.js";
|
|
34
51
|
export * from "./utils.js";
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Match the coding-agent interrupt key.
|
|
3
|
+
*
|
|
4
|
+
* Interactive mode installs a keybinding manager that exposes `app.interrupt`
|
|
5
|
+
* globally, but some isolated component tests still run with only TUI
|
|
6
|
+
* keybindings registered. In that case, fall back to raw Escape matching.
|
|
7
|
+
*/
|
|
8
|
+
export declare function matchesAppInterrupt(data: string): boolean;
|
|
9
|
+
/** Match `app.tools.expand`, falling back to Ctrl+O when the action is unbound. */
|
|
10
|
+
export declare function matchesAppToolsExpand(data: string): boolean;
|
|
11
|
+
/** Match the generic selector cancel keybinding. */
|
|
12
|
+
export declare function matchesSelectCancel(data: string): boolean;
|
|
13
|
+
/** Match the generic selector up-navigation keybinding. */
|
|
14
|
+
export declare function matchesSelectUp(data: string): boolean;
|
|
15
|
+
/** Match the generic selector down-navigation keybinding. */
|
|
16
|
+
export declare function matchesSelectDown(data: string): boolean;
|
|
17
|
+
/** Match the generic selector page-up keybinding. */
|
|
18
|
+
export declare function matchesSelectPageUp(data: string): boolean;
|
|
19
|
+
/** Match the generic selector page-down keybinding. */
|
|
20
|
+
export declare function matchesSelectPageDown(data: string): boolean;
|
|
21
|
+
/** Match the external-editor keybinding, falling back to Ctrl+G when unbound. */
|
|
22
|
+
export declare function matchesAppExternalEditor(data: string): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Match the "submit multi-line text input" keybinding (`app.message.followUp`).
|
|
25
|
+
*
|
|
26
|
+
* Used by forms where plain Enter inserts a newline and a modified-Enter chord
|
|
27
|
+
* submits — the main editor's follow-up handler, the agent dashboard's new-agent
|
|
28
|
+
* description, and the hook editor's hook-style mode. The keybinding defaults to
|
|
29
|
+
* `["ctrl+q", "ctrl+enter"]` so Windows Terminal (which can't deliver a distinct
|
|
30
|
+
* Ctrl+Enter event; #1903) still has a working chord without user remapping.
|
|
31
|
+
*
|
|
32
|
+
* Also recognizes modifier-tagged LF as Ctrl+Enter only when Ctrl+Enter is an
|
|
33
|
+
* effective follow-up binding.
|
|
34
|
+
*/
|
|
35
|
+
export declare function matchesAppFollowUp(data: string): boolean;
|
package/dist/types/keys.d.ts
CHANGED
|
@@ -42,9 +42,9 @@ export declare function setKittyProtocolActive(active: boolean): void;
|
|
|
42
42
|
export declare function isKittyProtocolActive(): boolean;
|
|
43
43
|
type Letter = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z";
|
|
44
44
|
type Digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9";
|
|
45
|
-
type
|
|
45
|
+
type KeySymbol = "`" | "-" | "=" | "[" | "]" | "\\" | ";" | "'" | "," | "." | "/" | "!" | "@" | "#" | "$" | "%" | "^" | "&" | "*" | "(" | ")" | "_" | "+" | "|" | "~" | "{" | "}" | ":" | "<" | ">" | "?";
|
|
46
46
|
type SpecialKey = "escape" | "esc" | "enter" | "return" | "tab" | "space" | "backspace" | "delete" | "insert" | "clear" | "home" | "end" | "pageUp" | "pageDown" | "up" | "down" | "left" | "right" | "f1" | "f2" | "f3" | "f4" | "f5" | "f6" | "f7" | "f8" | "f9" | "f10" | "f11" | "f12";
|
|
47
|
-
type BaseKey = Letter | Digit |
|
|
47
|
+
type BaseKey = Letter | Digit | KeySymbol | SpecialKey;
|
|
48
48
|
type ModifierName = "ctrl" | "shift" | "alt" | "super";
|
|
49
49
|
type ModifiedKeyId<Key extends string, RemainingModifiers extends ModifierName = ModifierName> = {
|
|
50
50
|
[M in RemainingModifiers]: `${M}+${Key}` | `${M}+${ModifiedKeyId<Key, Exclude<RemainingModifiers, M>>}`;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Language id for syntax highlighting and UI (icons, read tool), or undefined if unknown.
|
|
3
|
+
*/
|
|
4
|
+
export declare function getLanguageFromPath(filePath: string): string | undefined;
|
|
5
|
+
export declare function isMarkdownPath(filePath: string): boolean;
|
|
6
|
+
/**
|
|
7
|
+
* LSP language identifier; falls back to `plaintext`.
|
|
8
|
+
*/
|
|
9
|
+
export declare function detectLanguageId(filePath: string): string;
|