@oh-my-pi/pi-tui 18.2.4 → 18.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared rendering for extension/hook custom message frames.
|
|
3
|
+
*
|
|
4
|
+
* `CustomMessageComponent` and `HookMessageComponent` share one behavior-owning
|
|
5
|
+
* frame: it tries a user-supplied renderer first and falls back to a label plus
|
|
6
|
+
* markdown body when the renderer returns nothing or throws. Hook messages
|
|
7
|
+
* collapse to the first N lines when not expanded; extension messages render
|
|
8
|
+
* in full.
|
|
9
|
+
*/
|
|
10
|
+
import type { TextContent } from "@oh-my-pi/pi-ai";
|
|
11
|
+
import { type Component, Container } from "../tui.js";
|
|
12
|
+
import { type Theme, type ThemeColor } from "../theme/index.js";
|
|
13
|
+
/** Message shape consumed by the shared frame. */
|
|
14
|
+
export interface FramedMessage {
|
|
15
|
+
customType: string;
|
|
16
|
+
content: string | (TextContent | {
|
|
17
|
+
type: string;
|
|
18
|
+
})[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Callable signature shared by `MessageRenderer` (extensions) and
|
|
22
|
+
* `HookMessageRenderer` (hooks). Both narrow `message` to their own type;
|
|
23
|
+
* this signature is the structural intersection callers can hand off here.
|
|
24
|
+
*/
|
|
25
|
+
export type FramedRenderer<M extends FramedMessage> = (message: M, options: {
|
|
26
|
+
expanded: boolean;
|
|
27
|
+
}, theme: Theme) => Component | undefined;
|
|
28
|
+
/** Presentation and extension-renderer policy for a framed custom message. */
|
|
29
|
+
export interface FramedMessageOptions<M extends FramedMessage> {
|
|
30
|
+
readonly message: M;
|
|
31
|
+
/** Theme-aware icon glyph shown before the custom type. */
|
|
32
|
+
readonly icon?: string | (() => string);
|
|
33
|
+
/** Hide the default type header while retaining the message body. */
|
|
34
|
+
readonly hideHeader?: boolean | (() => boolean);
|
|
35
|
+
/** Semantic color for the outline, defaulting to the muted border. */
|
|
36
|
+
readonly borderColor?: ThemeColor;
|
|
37
|
+
/** Collapse the markdown body to this many lines when `expanded` is false. Omit to never collapse. */
|
|
38
|
+
readonly collapseAfterLines?: number;
|
|
39
|
+
readonly customRenderer?: FramedRenderer<M>;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Behavior-owning custom message frame. It retries extension renderers whenever
|
|
43
|
+
* expansion or theme state changes and falls back to the shared card when a
|
|
44
|
+
* renderer returns nothing or throws.
|
|
45
|
+
*/
|
|
46
|
+
export declare class FramedMessageComponent<M extends FramedMessage> extends Container {
|
|
47
|
+
#private;
|
|
48
|
+
constructor(options: FramedMessageOptions<M>);
|
|
49
|
+
setExpanded(expanded: boolean): void;
|
|
50
|
+
invalidate(): void;
|
|
51
|
+
dispose(): void;
|
|
52
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type Component, Container } from "../tui.js";
|
|
2
|
+
import { type ThemeColor } from "../theme/index.js";
|
|
3
|
+
/** Render-time state supplied to a notice presentation. */
|
|
4
|
+
export interface MessageNoticeContext {
|
|
5
|
+
readonly expanded: boolean;
|
|
6
|
+
}
|
|
7
|
+
/** Header and optional detail rows rendered inside a notice box. */
|
|
8
|
+
export interface MessageNoticePresentation {
|
|
9
|
+
readonly header: string;
|
|
10
|
+
readonly icon?: string;
|
|
11
|
+
readonly body?: Component | readonly Component[];
|
|
12
|
+
}
|
|
13
|
+
/** Presentation policy for a transcript notice. */
|
|
14
|
+
export interface MessageNoticeOptions {
|
|
15
|
+
readonly presentation: (context: MessageNoticeContext) => MessageNoticePresentation;
|
|
16
|
+
readonly severity?: ThemeColor;
|
|
17
|
+
readonly background?: (text: string) => string;
|
|
18
|
+
readonly leadingSpace?: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Shared transcript notice shell with expansion and tool-activity visibility.
|
|
22
|
+
* Domain controllers own their state and call {@link refresh} after mutations.
|
|
23
|
+
*/
|
|
24
|
+
export declare class MessageNoticeComponent extends Container {
|
|
25
|
+
#private;
|
|
26
|
+
constructor(options: MessageNoticeOptions);
|
|
27
|
+
setExpanded(expanded: boolean): void;
|
|
28
|
+
isExpanded(): boolean;
|
|
29
|
+
setToolActivityVisible(visible: boolean): void;
|
|
30
|
+
/** Rebuild the presentation after controller-owned state changes. */
|
|
31
|
+
refresh(): void;
|
|
32
|
+
invalidate(): void;
|
|
33
|
+
dispose(): void;
|
|
34
|
+
render(width: number): readonly string[];
|
|
35
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared box-drawing chrome for overlays — string helpers for fullscreen
|
|
3
|
+
* surfaces (the `/copy` picker, the plan-review overlay, …) and the
|
|
4
|
+
* {@link OverlayPanel} container for inline overlays hosted in the editor slot
|
|
5
|
+
* or an anchored container. Everything paints with `theme.boxRound` glyphs
|
|
6
|
+
* (rounded corners, sharp tee/cross junctions) and the `border`/`accent` theme
|
|
7
|
+
* colors so all outlined overlays read identically.
|
|
8
|
+
*/
|
|
9
|
+
import { type Component } from "../tui.js";
|
|
10
|
+
import { type ThemeColor } from "../theme/index.js";
|
|
11
|
+
/** Top border with an optional title inset into the rule. `color` recolors border and title (default border/accent). */
|
|
12
|
+
export declare function topBorder(width: number, title: string, color?: ThemeColor): string;
|
|
13
|
+
/** A horizontal rule with left/right tees, splitting overlay sections. */
|
|
14
|
+
export declare function divider(width: number): string;
|
|
15
|
+
export declare function bottomBorder(width: number, color?: ThemeColor): string;
|
|
16
|
+
/** Wrap pre-styled content in vertical borders with single-column insets. */
|
|
17
|
+
export declare function row(content: string, width: number, color?: ThemeColor): string;
|
|
18
|
+
/** Body content width for a two-column overlay of total `width`. */
|
|
19
|
+
export declare function splitBodyWidth(width: number, sidebarWidth: number): number;
|
|
20
|
+
/** Top border carrying the title, split by a `┬` over the column divider. */
|
|
21
|
+
export declare function topBorderSplit(width: number, title: string, sidebarWidth: number): string;
|
|
22
|
+
/** Section rule that closes the sidebar column with a `┴` over the divider. */
|
|
23
|
+
export declare function dividerSplit(width: number, sidebarWidth: number): string;
|
|
24
|
+
/** A two-column content row: `│ sidebar │ body │`, each inset by one column. */
|
|
25
|
+
export declare function splitRow(sidebar: string, body: string, width: number, sidebarWidth: number): string;
|
|
26
|
+
/**
|
|
27
|
+
* Mutable row region for composing an {@link OverlayPanel}. Callers provide
|
|
28
|
+
* already-styled logical rows and may pin the region to an exact height; extra
|
|
29
|
+
* rows are clipped and missing rows are filled. This keeps dialog body budgets
|
|
30
|
+
* in the layout component instead of duplicating border and padding math in
|
|
31
|
+
* every overlay.
|
|
32
|
+
*/
|
|
33
|
+
export declare class PanelRows implements Component {
|
|
34
|
+
#private;
|
|
35
|
+
/** Replace the region rows. Byte-identical rows retain the previous render identity. */
|
|
36
|
+
setLines(lines: readonly string[]): void;
|
|
37
|
+
/** Pin the region to exactly `height` rows, or pass `undefined` for its natural height. */
|
|
38
|
+
setHeight(height: number | undefined): void;
|
|
39
|
+
invalidate(): void;
|
|
40
|
+
render(width: number): readonly string[];
|
|
41
|
+
}
|
|
42
|
+
/** Sentinel child rendered by {@link OverlayPanel} as a `├───┤` section rule. */
|
|
43
|
+
export declare class PanelDivider implements Component {
|
|
44
|
+
render(): readonly string[];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Rounded-box container for inline overlays (selectors, run panels). Children
|
|
48
|
+
* render inside `│ … │` rows between a titled top border and a bottom border,
|
|
49
|
+
* so inline overlays share the chrome of fullscreen overlays. The top border
|
|
50
|
+
* is exactly one row — `routeMouse` offsets written for a one-line top rule
|
|
51
|
+
* stay valid — and content is inset two columns on each side.
|
|
52
|
+
*/
|
|
53
|
+
export declare class OverlayPanel implements Component {
|
|
54
|
+
#private;
|
|
55
|
+
children: Component[];
|
|
56
|
+
constructor(title?: string);
|
|
57
|
+
get title(): string;
|
|
58
|
+
set title(value: string);
|
|
59
|
+
addChild(component: Component): void;
|
|
60
|
+
removeChild(component: Component): void;
|
|
61
|
+
clear(): void;
|
|
62
|
+
invalidate(): void;
|
|
63
|
+
dispose(): void;
|
|
64
|
+
setIgnoreTight(ignore: boolean): this;
|
|
65
|
+
/**
|
|
66
|
+
* Body rows at the given content width, without border chrome —
|
|
67
|
+
* {@link render} draws exactly these (4 columns narrower) inside `│ … │`
|
|
68
|
+
* rows. Lets callers and tests assert on component-content coordinates
|
|
69
|
+
* instead of reverse-parsing box glyphs. `PanelDivider` children contribute
|
|
70
|
+
* no rows here (their rule is border chrome).
|
|
71
|
+
*/
|
|
72
|
+
renderContent(width: number): string[];
|
|
73
|
+
render(width: number): readonly string[];
|
|
74
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Self-contained QR Code generator (byte mode, versions 1-40, EC levels
|
|
3
|
+
* L/M/Q/H) with a half-block ANSI terminal renderer.
|
|
4
|
+
*
|
|
5
|
+
* Pure TypeScript, zero dependencies: the collab `/collab qrcode` command uses
|
|
6
|
+
* it to print scannable browser-join codes without pulling a runtime QR
|
|
7
|
+
* package into the bundle. The algorithm follows ISO/IEC 18004; the two
|
|
8
|
+
* error-correction tables below are direct transcriptions of that spec.
|
|
9
|
+
*/
|
|
10
|
+
export type QrEcLevel = "L" | "M" | "Q" | "H";
|
|
11
|
+
export interface QrEncodeOptions {
|
|
12
|
+
/** Lowest version to consider (default 1). */
|
|
13
|
+
minVersion?: number;
|
|
14
|
+
/** Highest version to consider (default 40). */
|
|
15
|
+
maxVersion?: number;
|
|
16
|
+
/** Force a mask 0-7; -1 (default) auto-selects the lowest-penalty mask. */
|
|
17
|
+
mask?: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* A finished QR symbol: a square grid of dark/light modules plus the chosen
|
|
21
|
+
* version, EC level, and mask. `module(x, y)` is the only access path the
|
|
22
|
+
* renderers need.
|
|
23
|
+
*/
|
|
24
|
+
export declare class QrCode {
|
|
25
|
+
#private;
|
|
26
|
+
readonly version: number;
|
|
27
|
+
readonly ecLevel: QrEcLevel;
|
|
28
|
+
readonly size: number;
|
|
29
|
+
/** Selected mask pattern (0-7). */
|
|
30
|
+
readonly mask: number;
|
|
31
|
+
private constructor();
|
|
32
|
+
module(x: number, y: number): boolean;
|
|
33
|
+
/** Encode a string in byte mode (UTF-8). Throws if it exceeds version 40. */
|
|
34
|
+
static encodeText(text: string, ecLevel?: QrEcLevel, options?: QrEncodeOptions): QrCode;
|
|
35
|
+
/** Encode raw bytes in byte mode. Throws if they exceed version 40 at this EC level. */
|
|
36
|
+
static encodeBytes(data: Uint8Array, ecLevel?: QrEcLevel, options?: QrEncodeOptions): QrCode;
|
|
37
|
+
}
|
|
38
|
+
export interface QrRenderOptions {
|
|
39
|
+
/** Quiet-zone width in modules on every side (default 4, per spec). */
|
|
40
|
+
margin?: number;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Render a QR symbol as ANSI half-block rows: each text row packs two module
|
|
44
|
+
* rows via `▀`/`▄`/`█`, drawn black-on-white so a phone camera reads dark
|
|
45
|
+
* modules as data and the quiet zone as the light margin. The leading margin
|
|
46
|
+
* makes the symbol scannable regardless of the terminal's own background.
|
|
47
|
+
*/
|
|
48
|
+
export declare function renderQrHalfBlocks(qr: QrCode, options?: QrRenderOptions): string[];
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared renderer for a horizontal row of colored "segments" styled after the
|
|
3
|
+
* status line: each segment is colored by its track position from the theme's
|
|
4
|
+
* own palette, the active one is filled as a powerline chip (its color as the
|
|
5
|
+
* background, a luminance-matched label, flanked by triangle caps) and the
|
|
6
|
+
* rest are plain colored labels joined by a thin separator.
|
|
7
|
+
*
|
|
8
|
+
* Used by the plan-mode model-tier slider ({@link HookSelectorComponent}) and
|
|
9
|
+
* the ctrl+p role-cycle status so both surfaces read identically.
|
|
10
|
+
*/
|
|
11
|
+
import { type ThemeColor } from "../theme/index.js";
|
|
12
|
+
export interface TrackSegment {
|
|
13
|
+
label: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Resolve up to `count` theme colors that render distinctly under the active
|
|
17
|
+
* theme, in candidate preference order. May return fewer than `count` when the
|
|
18
|
+
* theme has fewer distinct hues (e.g. monochrome themes) — callers wrap with
|
|
19
|
+
* modulo. Never returns an empty array: `accent` always resolves.
|
|
20
|
+
*/
|
|
21
|
+
export declare function resolveSegmentPalette(count: number): ThemeColor[];
|
|
22
|
+
/**
|
|
23
|
+
* Render `segments` as a colored chip track with `activeIndex` filled. Returns
|
|
24
|
+
* a single line of styled text with no surrounding caption or arrows — callers
|
|
25
|
+
* frame it as they need.
|
|
26
|
+
*/
|
|
27
|
+
export declare function renderSegmentTrack(segments: TrackSegment[], activeIndex: number): string;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { SelectList } from "../components/select-list.js";
|
|
2
|
+
import type { SgrMouseEvent } from "../mouse.js";
|
|
3
|
+
/** Route overlay-local mouse input past a panel's top border into its SelectList child. */
|
|
4
|
+
export declare function routeSelectListMouseWithTopBorder(selectList: SelectList, event: SgrMouseEvent, line: number, col: number): void;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Render `rows` through a {@link ScrollView} with the shared list theme (muted
|
|
3
|
+
* track / accent thumb) and an "auto" scrollbar, positioned at `scrollOffset`.
|
|
4
|
+
* Returns the rendered lines for the caller to append to its output.
|
|
5
|
+
*/
|
|
6
|
+
export declare function renderScrollableList(rows: readonly string[], options: {
|
|
7
|
+
width: number;
|
|
8
|
+
totalRows: number;
|
|
9
|
+
scrollOffset: number;
|
|
10
|
+
}): readonly string[];
|
|
11
|
+
/**
|
|
12
|
+
* Center a viewport window of `maxVisible` rows on `selectedIndex` within a
|
|
13
|
+
* list of `total` rows, clamped to valid bounds. Used by the selection-centered
|
|
14
|
+
* list panes (history search, tree selector).
|
|
15
|
+
*/
|
|
16
|
+
export declare function centeredWindow(selectedIndex: number, total: number, maxVisible: number): {
|
|
17
|
+
startIndex: number;
|
|
18
|
+
endIndex: number;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Width available for row content, reserving the rightmost column for the
|
|
22
|
+
* scrollbar when the list overflows its visible window.
|
|
23
|
+
*/
|
|
24
|
+
export declare function contentRowWidth(width: number, total: number, maxVisible: number): number;
|
|
25
|
+
/**
|
|
26
|
+
* Clamp `selectedIndex` into `[0, total)` and nudge `scrollOffset` so the
|
|
27
|
+
* selection stays within the visible window of `maxVisible` rows. Returns the
|
|
28
|
+
* adjusted pair; on an empty list both reset to 0.
|
|
29
|
+
*/
|
|
30
|
+
export declare function clampSelection(selectedIndex: number, scrollOffset: number, total: number, maxVisible: number): {
|
|
31
|
+
selectedIndex: number;
|
|
32
|
+
scrollOffset: number;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Classify a key event for search-query text entry. Returns the single
|
|
36
|
+
* printable character to append to the query, or `null` when the key is not a
|
|
37
|
+
* searchable character: non-printable or multi-byte.
|
|
38
|
+
*/
|
|
39
|
+
export declare function searchableChar(data: string): string | null;
|
|
40
|
+
/**
|
|
41
|
+
* Handle the shared tab-cycling keys: Tab/Right advance to the next tab,
|
|
42
|
+
* Shift+Tab/Left to the previous. Invokes `switchTab` with the direction and
|
|
43
|
+
* returns true when the key was consumed.
|
|
44
|
+
*/
|
|
45
|
+
export declare function handleTabSwitchKey(data: string, switchTab: (direction: 1 | -1) => void): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Pad `lines` with blank rows up to `rows` so a full-screen overlay covers the
|
|
48
|
+
* viewport instead of letting the transcript peek through below it. Copies
|
|
49
|
+
* before padding — the source array may be component-owned and must not be
|
|
50
|
+
* mutated.
|
|
51
|
+
*/
|
|
52
|
+
export declare function padLinesToHeight(lines: readonly string[], rows: number): readonly string[];
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { TabBarTheme } from "../components/tab-bar.js";
|
|
2
|
+
/** Compact single-line display text for statuses; unlike titles, collapse padding and trim. */
|
|
3
|
+
export declare function sanitizeStatusText(text: string): string;
|
|
4
|
+
/** Shared tab bar theme used by fullscreen overlays (settings, agent hub). */
|
|
5
|
+
export declare function getTabBarTheme(): TabBarTheme;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type Component, Container } from "../tui.js";
|
|
2
|
+
/** One refresh of a streaming overlay's presentation. */
|
|
3
|
+
export interface StreamingPanelPresentation {
|
|
4
|
+
/** Non-empty sections separated by one blank row. */
|
|
5
|
+
readonly sections: readonly (Component | readonly Component[] | undefined)[];
|
|
6
|
+
/** Use a provider when action availability may change without a controller transition. */
|
|
7
|
+
readonly footer: string | (() => string);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Shared body/footer shell for streaming overlays. The overlay controller keeps
|
|
11
|
+
* its own state machine and calls {@link refresh} after each transition.
|
|
12
|
+
*/
|
|
13
|
+
export declare class StreamingPanelContent extends Container {
|
|
14
|
+
#private;
|
|
15
|
+
constructor(presentation: () => StreamingPanelPresentation);
|
|
16
|
+
/** Rebuild sections and the footer from controller-owned state. */
|
|
17
|
+
refresh(): void;
|
|
18
|
+
invalidate(): void;
|
|
19
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type Component, Container } from "../tui.js";
|
|
2
|
+
export interface ToolActivityComponent {
|
|
3
|
+
setToolActivityVisible(visible: boolean): void;
|
|
4
|
+
}
|
|
5
|
+
export declare function isToolActivityComponent(component: Component): component is Component & ToolActivityComponent;
|
|
6
|
+
export declare class ToolActivityContainer extends Container implements ToolActivityComponent {
|
|
7
|
+
#private;
|
|
8
|
+
constructor(component: Component | Component[]);
|
|
9
|
+
setToolActivityVisible(visible: boolean): void;
|
|
10
|
+
/**
|
|
11
|
+
* Forward Ctrl+O expansion to wrapped children. The transcript's expansion
|
|
12
|
+
* traversal only visits top-level children, so the wrapper must proxy or
|
|
13
|
+
* wrapped renderers would freeze at their insertion-time expansion state.
|
|
14
|
+
*/
|
|
15
|
+
setExpanded(expanded: boolean): void;
|
|
16
|
+
render(width: number): readonly string[];
|
|
17
|
+
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { type Component, Container, type HistoryBatch } from "../tui.js";
|
|
2
|
+
/** Shared animation time supplied by the constrained transcript root. */
|
|
3
|
+
export interface AnimationFrame {
|
|
4
|
+
readonly tick: number;
|
|
5
|
+
readonly now: number;
|
|
6
|
+
}
|
|
7
|
+
/** Lets an active block adapt its presentation to its allocated viewport rows. */
|
|
8
|
+
export interface TranscriptPresentationTarget {
|
|
9
|
+
setTranscriptAllocation?(rows: number, frame: AnimationFrame): void;
|
|
10
|
+
}
|
|
11
|
+
/** Presentation declaration captured permanently when a block is added. */
|
|
12
|
+
export type TranscriptBlockMode = "mutable" | "appendOnly";
|
|
13
|
+
/** Immutable width-independent identity for one stable semantic row. */
|
|
14
|
+
export interface TranscriptStableRow {
|
|
15
|
+
readonly key: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Explicit semantic-row contract for a block whose stable head may enter native
|
|
19
|
+
* history before finalization. Every later array must extend the prior keys
|
|
20
|
+
* exactly; each row renderer is deterministic for its width.
|
|
21
|
+
* A publication that breaks these invariants (e.g. a mid-stream theme change
|
|
22
|
+
* re-coloring already-emitted bytes) freezes further stable-row emission for
|
|
23
|
+
* that block instead of failing the render — see {@link TranscriptContainer}.
|
|
24
|
+
*/
|
|
25
|
+
export interface AppendOnlyTranscriptBlock {
|
|
26
|
+
readonly transcriptBlockMode: "appendOnly";
|
|
27
|
+
getTranscriptStableRows(): readonly TranscriptStableRow[];
|
|
28
|
+
/**
|
|
29
|
+
* Render the first `count` semantic rows at the requested current width.
|
|
30
|
+
* Counts are monotonic identities, not physical row counts; this output must
|
|
31
|
+
* prefix the block's full render at the same width.
|
|
32
|
+
*/
|
|
33
|
+
renderTranscriptStableRows(count: number, width: number): readonly string[];
|
|
34
|
+
/**
|
|
35
|
+
* Discard every published stable row so the block re-renders its head from
|
|
36
|
+
* scratch. Called only alongside a destructive display reset (e.g. a
|
|
37
|
+
* thinking-visibility toggle) that clears the native scrollback those rows
|
|
38
|
+
* occupied — the sole context in which the append-only "published bytes never
|
|
39
|
+
* change" contract may be retracted. Optional: blocks whose stable-row
|
|
40
|
+
* presentation never changes may omit it.
|
|
41
|
+
*/
|
|
42
|
+
resetTranscriptStableRows?(): void;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Block lifecycle:
|
|
46
|
+
* - `active`: still mutating; renders live and counts against tool admission.
|
|
47
|
+
* - `settled`: finalized but retained in the mutable viewport until pressure.
|
|
48
|
+
* - `committed`: logically retired; replay never rewinds this state.
|
|
49
|
+
*/
|
|
50
|
+
type BlockState = "active" | "settled" | "committed";
|
|
51
|
+
/** Whether `prefix` matches `rows` byte-for-byte from the top. */
|
|
52
|
+
export declare function isRowPrefix(prefix: readonly string[], rows: readonly string[]): boolean;
|
|
53
|
+
/** Strip leading/trailing all-blank rows; the viewport allocator measures blocks by this trimmed height. */
|
|
54
|
+
export declare function trimBlankEdges(rows: readonly string[]): readonly string[];
|
|
55
|
+
/** One live block's row span in the last `renderViewport` output (half-open `[start, end)`). */
|
|
56
|
+
export interface TranscriptViewportSpan {
|
|
57
|
+
component: Component;
|
|
58
|
+
start: number;
|
|
59
|
+
end: number;
|
|
60
|
+
}
|
|
61
|
+
/** Owns transcript order, live capacity, and ordered immutable retirement. */
|
|
62
|
+
export declare class TranscriptContainer extends Container {
|
|
63
|
+
#private;
|
|
64
|
+
addChild(component: Component): void;
|
|
65
|
+
removeChild(component: Component): void;
|
|
66
|
+
clear(): void;
|
|
67
|
+
setToolActivityVisible(visible: boolean): void;
|
|
68
|
+
/**
|
|
69
|
+
* Forget the append-only emission ledger — emitted counts, published stable
|
|
70
|
+
* rows, per-width render cache, and freeze state — for every block, and ask
|
|
71
|
+
* each append-only block to drop its own published rows. The next replay then
|
|
72
|
+
* re-renders each block from its current {@link Component.render}, applying a
|
|
73
|
+
* changed presentation (e.g. a thinking-visibility toggle) to rows that were
|
|
74
|
+
* already emitted as stable heads while streaming (#10177).
|
|
75
|
+
*
|
|
76
|
+
* Callers MUST pair this with a scrollback-clearing {@link resetDisplay}: the
|
|
77
|
+
* emitted rows it forgets still sit in native history until that clear
|
|
78
|
+
* rewrites them, so unpaired use would duplicate them on the next retirement.
|
|
79
|
+
*/
|
|
80
|
+
resetStableEmission(): void;
|
|
81
|
+
/** Whether a transient block may be discarded without leaving tape history. */
|
|
82
|
+
canRemoveBlock(component: Component): boolean;
|
|
83
|
+
/** Lifecycle state per block in transcript order (diagnostics and tests). */
|
|
84
|
+
blockStates(): readonly BlockState[];
|
|
85
|
+
/** Permanently captured presentation mode per block (diagnostics and tests). */
|
|
86
|
+
blockModes(): readonly TranscriptBlockMode[];
|
|
87
|
+
/** Emitted stable semantic-row counts in transcript order. */
|
|
88
|
+
emittedStableRows(): readonly number[];
|
|
89
|
+
/** Whether visible active capacity and live-block memory permit another admission. */
|
|
90
|
+
canAdmit(rows: number): boolean;
|
|
91
|
+
/** Prepares one atomic replay of the committed ledger and an emitted active-head prefix. */
|
|
92
|
+
beginReplay(): void;
|
|
93
|
+
/**
|
|
94
|
+
* Drop a not-yet-offered replay so a shutdown flush emits only un-retired
|
|
95
|
+
* rows. The terminal already holds the committed ledger; re-streaming it at
|
|
96
|
+
* quit is pure write volume. An already offered replay batch stays valid.
|
|
97
|
+
*/
|
|
98
|
+
cancelReplay(): void;
|
|
99
|
+
/** Total rows the live, un-emitted tail occupies at `width`. */
|
|
100
|
+
liveRowCount(width: number): number;
|
|
101
|
+
/** Block spans of the last `renderViewport` output, in output coordinates. Empty when the tail is empty. */
|
|
102
|
+
getLastViewportSpans(): readonly TranscriptViewportSpan[];
|
|
103
|
+
/** Render the live tail, constrained to the supplied transcript height. */
|
|
104
|
+
renderViewport(width: number, rows: number, frame: AnimationFrame): readonly string[];
|
|
105
|
+
/** Offers stable-head emission or the shortest finalized prefix needed under pressure. */
|
|
106
|
+
peekFinalizedBatch(width: number, capacity: number): HistoryBatch | undefined;
|
|
107
|
+
/** Returns only a prepared complete replay, never a normal retirement offer. */
|
|
108
|
+
peekReplayBatch(width: number): HistoryBatch | undefined;
|
|
109
|
+
/** Offers the complete currently eligible prefix for graceful shutdown. */
|
|
110
|
+
peekFlushBatch(width: number): HistoryBatch | undefined;
|
|
111
|
+
/** Recompose the unacknowledged batch so a discarded TUI frame can be rendered again. */
|
|
112
|
+
rerenderOfferedBatch(width: number): HistoryBatch | undefined;
|
|
113
|
+
/** Acknowledges exactly the most recently offered append, commit, or replay transaction. */
|
|
114
|
+
acknowledgeFinalizedBatch(id: number): void;
|
|
115
|
+
/**
|
|
116
|
+
* Render only the trailing `maxRows` semantic rows, walking blocks bottom-up.
|
|
117
|
+
* Used by the transient resize-buffer repaint, which needs one viewport of
|
|
118
|
+
* tail rows per resize event — never the full committed ledger.
|
|
119
|
+
*/
|
|
120
|
+
renderTail(width: number, maxRows: number): readonly string[];
|
|
121
|
+
/** Full semantic render used by exports and non-terminal commands. */
|
|
122
|
+
render(width: number): readonly string[];
|
|
123
|
+
/** Rendered row where a child's block begins in the last full render() (transcript deep-links). */
|
|
124
|
+
getChildStartRow(child: Component): number | undefined;
|
|
125
|
+
}
|
|
126
|
+
/** Groups sibling rows into one conservative mutable semantic transcript block. */
|
|
127
|
+
export declare class TranscriptBlock extends Container {
|
|
128
|
+
}
|
|
129
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { TranscriptBlock } from "./transcript-container.js";
|
|
2
|
+
/** One compact transcript status row assembled from already-styled parts. */
|
|
3
|
+
export interface TranscriptStatusRow {
|
|
4
|
+
readonly parts: readonly (string | undefined)[];
|
|
5
|
+
readonly indent?: number;
|
|
6
|
+
}
|
|
7
|
+
/** Shared compact status-pill block used by notices and background activity. */
|
|
8
|
+
export declare class TranscriptStatusBlock extends TranscriptBlock {
|
|
9
|
+
constructor(rows: readonly TranscriptStatusRow[]);
|
|
10
|
+
/** Append a supplemental line such as an artifact warning. */
|
|
11
|
+
addLine(text: string, indent?: number): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface VisualTruncateResult {
|
|
2
|
+
/** The visual lines to display */
|
|
3
|
+
visualLines: readonly string[];
|
|
4
|
+
/** Number of visual lines that were skipped (hidden) */
|
|
5
|
+
skippedCount: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Truncate text to a maximum number of visual lines (from the end).
|
|
9
|
+
* This accounts for line wrapping based on terminal width.
|
|
10
|
+
*
|
|
11
|
+
* @param text - The text content (may contain newlines)
|
|
12
|
+
* @param maxVisualLines - Maximum number of visual lines to show
|
|
13
|
+
* @param width - Terminal/render width
|
|
14
|
+
* @param paddingX - Horizontal padding for Text component (default 0).
|
|
15
|
+
* Use 0 when result will be placed in a Box (Box adds its own padding).
|
|
16
|
+
* Use 1 when result will be placed in a plain Container.
|
|
17
|
+
* @returns The truncated visual lines and count of skipped lines
|
|
18
|
+
*/
|
|
19
|
+
export declare function truncateToVisualLines(text: string, maxVisualLines: number, width: number, paddingX?: number): VisualTruncateResult;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { Component } from "../tui.js";
|
|
2
|
+
/** A component slot; factory slots are constructed only when their branch is first rendered. */
|
|
3
|
+
export type DisclosureSlot = Component | (() => Component);
|
|
4
|
+
/** Options for a controlled, compositional disclosure. */
|
|
5
|
+
export interface DisclosureOptions {
|
|
6
|
+
/** Content rendered in both collapsed and expanded states. */
|
|
7
|
+
summary?: DisclosureSlot;
|
|
8
|
+
/** Optional collapsed-only preview. */
|
|
9
|
+
collapsedBody?: DisclosureSlot;
|
|
10
|
+
/** Expanded-only content. A factory keeps expensive children lazy. */
|
|
11
|
+
body: () => Component;
|
|
12
|
+
/** Initial controlled state. Subsequent changes go through {@link Disclosure.setExpanded}. */
|
|
13
|
+
expanded?: boolean;
|
|
14
|
+
/** Horizontal padding applied outside every rendered slot. */
|
|
15
|
+
paddingX?: number;
|
|
16
|
+
/** Maximum physical rows retained from the collapsed-only preview, including its hint row. */
|
|
17
|
+
maxCollapsedRows?: number;
|
|
18
|
+
/** Build the final row when {@link DisclosureOptions.maxCollapsedRows} hides preview rows. */
|
|
19
|
+
collapsedHint?: (hiddenRows: number, width: number) => string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Controlled summary/detail composition for transcript and overlay surfaces.
|
|
23
|
+
*
|
|
24
|
+
* The expanded body is constructed on its first expanded render, not when the
|
|
25
|
+
* disclosure is created or toggled. Materialized children are retained across
|
|
26
|
+
* collapse/re-expand cycles, invalidated and disposed with the disclosure, and
|
|
27
|
+
* their immutable render arrays are copied rather than mutated.
|
|
28
|
+
*/
|
|
29
|
+
export declare class Disclosure implements Component {
|
|
30
|
+
#private;
|
|
31
|
+
constructor(options: DisclosureOptions);
|
|
32
|
+
/** Current controlled expansion state. */
|
|
33
|
+
get expanded(): boolean;
|
|
34
|
+
/** Show or hide the lazily constructed detail body. */
|
|
35
|
+
setExpanded(expanded: boolean): void;
|
|
36
|
+
setIgnoreTight(ignore: boolean): this;
|
|
37
|
+
invalidate(): void;
|
|
38
|
+
dispose(): void;
|
|
39
|
+
debugState(): Record<string, unknown>;
|
|
40
|
+
get debugChildren(): readonly Component[];
|
|
41
|
+
render(width: number): readonly string[];
|
|
42
|
+
}
|