@oh-my-pi/pi-tui 18.2.3 → 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 +29 -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/image.d.ts +18 -16
- 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/image.ts +80 -53
- 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 +70 -8
- package/src/utils.ts +8 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import type { Component } from "../../tui.js";
|
|
2
|
+
/** Host capabilities for copying and fetching earlier log entries. */
|
|
3
|
+
export interface LogViewerDeps {
|
|
4
|
+
copyToClipboard(text: string): void;
|
|
5
|
+
hasOlderLogs?(): boolean;
|
|
6
|
+
loadOlderLogs?(limitDays?: number): Promise<string>;
|
|
7
|
+
}
|
|
8
|
+
/** Separator marking logs captured before the current process started. */
|
|
9
|
+
export declare const SESSION_BOUNDARY_WARNING = "### WARNING - Logs above are older than current session!";
|
|
10
|
+
/** Action row for loading earlier log entries. */
|
|
11
|
+
export declare const LOAD_OLDER_LABEL = "### MOVE UP TO LOAD MORE...";
|
|
12
|
+
type DebugLogViewerModelOptions = {
|
|
13
|
+
processStartMs?: number;
|
|
14
|
+
processPid?: number;
|
|
15
|
+
hasOlderLogs?: () => boolean;
|
|
16
|
+
loadOlderLogs?: (limitDays?: number) => Promise<string>;
|
|
17
|
+
};
|
|
18
|
+
type ViewerRow = {
|
|
19
|
+
kind: "warning";
|
|
20
|
+
} | {
|
|
21
|
+
kind: "load-older";
|
|
22
|
+
} | {
|
|
23
|
+
kind: "log";
|
|
24
|
+
logIndex: number;
|
|
25
|
+
};
|
|
26
|
+
/** Split raw log text into nonempty entries. */
|
|
27
|
+
export declare function splitLogText(logText: string): string[];
|
|
28
|
+
/** Build sanitized clipboard text from selected log entries. */
|
|
29
|
+
export declare function buildLogCopyPayload(lines: string[]): string;
|
|
30
|
+
/** Filter, paginate, expand, and select captured log entries. */
|
|
31
|
+
export declare class DebugLogViewerModel {
|
|
32
|
+
#private;
|
|
33
|
+
constructor(logText: string, options?: DebugLogViewerModelOptions);
|
|
34
|
+
get logCount(): number;
|
|
35
|
+
get visibleLogCount(): number;
|
|
36
|
+
get rows(): readonly ViewerRow[];
|
|
37
|
+
get cursorRowIndex(): number | undefined;
|
|
38
|
+
get cursorLogIndex(): number | undefined;
|
|
39
|
+
get filterQuery(): string;
|
|
40
|
+
get cursorRowKind(): ViewerRow["kind"] | undefined;
|
|
41
|
+
get expandedCount(): number;
|
|
42
|
+
isProcessFilterEnabled(): boolean;
|
|
43
|
+
isCursorAtFirstSelectableRow(): boolean;
|
|
44
|
+
getRawLine(logIndex: number): string;
|
|
45
|
+
setFilterQuery(query: string): void;
|
|
46
|
+
toggleProcessFilter(): void;
|
|
47
|
+
moveCursor(delta: number, extendSelection: boolean): void;
|
|
48
|
+
moveCursorToRow(rowIndex: number, extendSelection: boolean): boolean;
|
|
49
|
+
getSelectedLogIndices(): number[];
|
|
50
|
+
getSelectedCount(): number;
|
|
51
|
+
isSelected(logIndex: number): boolean;
|
|
52
|
+
isExpanded(logIndex: number): boolean;
|
|
53
|
+
expandSelected(): void;
|
|
54
|
+
collapseSelected(): void;
|
|
55
|
+
getSelectedRawLines(): string[];
|
|
56
|
+
selectAllVisible(): void;
|
|
57
|
+
canLoadOlder(): boolean;
|
|
58
|
+
loadOlder(additionalCount?: number): Promise<boolean>;
|
|
59
|
+
prependLogs(logText: string): number;
|
|
60
|
+
}
|
|
61
|
+
interface DebugLogViewerComponentOptions {
|
|
62
|
+
logs: string;
|
|
63
|
+
terminalRows: number;
|
|
64
|
+
onExit: () => void;
|
|
65
|
+
onStatus?: (message: string) => void;
|
|
66
|
+
onError?: (message: string) => void;
|
|
67
|
+
processStartMs?: number;
|
|
68
|
+
processPid?: number;
|
|
69
|
+
deps: LogViewerDeps;
|
|
70
|
+
onUpdate?: () => void;
|
|
71
|
+
}
|
|
72
|
+
/** Interactive log viewer with host-provided storage and clipboard capabilities. */
|
|
73
|
+
export declare class DebugLogViewerComponent implements Component {
|
|
74
|
+
#private;
|
|
75
|
+
constructor(options: DebugLogViewerComponentOptions);
|
|
76
|
+
handleInput(keyData: string): void;
|
|
77
|
+
invalidate(): void;
|
|
78
|
+
dispose(): void;
|
|
79
|
+
render(width: number): readonly string[];
|
|
80
|
+
}
|
|
81
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Container } from "../../tui.js";
|
|
2
|
+
import { type TextSizingScale } from "../../utils.js";
|
|
3
|
+
import { type ImageBudget } from "../../components/image.js";
|
|
4
|
+
/**
|
|
5
|
+
* Encode raw 8-bit RGB pixels (`width * height * 3` bytes, row-major) as a PNG
|
|
6
|
+
* (color type 2, no interlacing). The IDAT payload is a real zlib stream from
|
|
7
|
+
* {@link zlib.deflateSync}, so the output is a fully valid PNG that every image
|
|
8
|
+
* protocol — including Sixel, which decodes the bytes natively — accepts.
|
|
9
|
+
*/
|
|
10
|
+
export declare function encodeRgbPng(width: number, height: number, rgb: Uint8Array): Uint8Array;
|
|
11
|
+
/** Encoded image and geometry used by terminal protocol probes. */
|
|
12
|
+
export interface SampleImage {
|
|
13
|
+
base64: string;
|
|
14
|
+
mimeType: string;
|
|
15
|
+
dimensions: {
|
|
16
|
+
widthPx: number;
|
|
17
|
+
heightPx: number;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/** Build a deterministic RGB gradient PNG (red across, green down, constant blue). */
|
|
21
|
+
export declare function buildSampleImage(width?: number, height?: number): SampleImage;
|
|
22
|
+
/**
|
|
23
|
+
* OSC 66 text-sizing sample lines, one scaled span per requested scale. Each
|
|
24
|
+
* scaled row is followed by `scale - 1` blank rows that reserve the vertical
|
|
25
|
+
* cells its multi-cell glyphs occupy — mirroring the markdown H1 renderer so
|
|
26
|
+
* the next line does not paint over the bottom of the glyphs.
|
|
27
|
+
*/
|
|
28
|
+
export declare function buildLargeTextLines(scales?: readonly TextSizingScale[]): string[];
|
|
29
|
+
/** Image budget and notification state for the protocol panel. */
|
|
30
|
+
export interface ProtocolProbeOptions {
|
|
31
|
+
image: SampleImage;
|
|
32
|
+
imageBudget: ImageBudget;
|
|
33
|
+
/** Whether the desktop notification was suppressed (e.g. `PI_NOTIFICATIONS=off`). */
|
|
34
|
+
notificationSuppressed: boolean;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Self-contained panel that renders one sample of every special terminal
|
|
38
|
+
* protocol into the chat transcript.
|
|
39
|
+
*/
|
|
40
|
+
export declare class ProtocolProbeComponent extends Container {
|
|
41
|
+
constructor(options: ProtocolProbeOptions);
|
|
42
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { Model, ProviderResponseMetadata, RawSseEvent } from "@oh-my-pi/pi-ai";
|
|
2
|
+
/** A captured provider response or raw server-sent event. */
|
|
3
|
+
export type RawSseDebugRecord = {
|
|
4
|
+
kind: "response";
|
|
5
|
+
sequence: number;
|
|
6
|
+
timestamp: number;
|
|
7
|
+
provider?: string;
|
|
8
|
+
model?: string;
|
|
9
|
+
api?: string;
|
|
10
|
+
status: number;
|
|
11
|
+
requestId?: string | null;
|
|
12
|
+
transport?: string;
|
|
13
|
+
} | {
|
|
14
|
+
kind: "event";
|
|
15
|
+
sequence: number;
|
|
16
|
+
timestamp: number;
|
|
17
|
+
provider?: string;
|
|
18
|
+
model?: string;
|
|
19
|
+
api?: string;
|
|
20
|
+
event: string | null;
|
|
21
|
+
raw: string[];
|
|
22
|
+
truncated: boolean;
|
|
23
|
+
originalChars: number;
|
|
24
|
+
};
|
|
25
|
+
/** Retained events and eviction counters at a point in time. */
|
|
26
|
+
export interface RawSseDebugSnapshot {
|
|
27
|
+
records: readonly RawSseDebugRecord[];
|
|
28
|
+
droppedRecords: number;
|
|
29
|
+
droppedChars: number;
|
|
30
|
+
totalEvents: number;
|
|
31
|
+
lastUpdatedAt?: number;
|
|
32
|
+
}
|
|
33
|
+
/** Format a captured event timestamp as an ISO instant. */
|
|
34
|
+
export declare function formatRawSseIsoTime(timestamp: number): string;
|
|
35
|
+
/** Encode response metadata as an SSE comment. */
|
|
36
|
+
export declare function formatRawSseResponseComment(record: Extract<RawSseDebugRecord, {
|
|
37
|
+
kind: "response";
|
|
38
|
+
}>): string;
|
|
39
|
+
/** Return wire-format lines for a captured record. */
|
|
40
|
+
export declare function rawSseRecordLines(record: RawSseDebugRecord): string[];
|
|
41
|
+
/** Bounded, observable capture of raw provider responses and SSE frames. */
|
|
42
|
+
export declare class RawSseDebugBuffer {
|
|
43
|
+
#private;
|
|
44
|
+
subscribe(listener: () => void): () => void;
|
|
45
|
+
recordResponse(response: ProviderResponseMetadata, model?: Model): void;
|
|
46
|
+
recordEvent(event: RawSseEvent, model?: Model): void;
|
|
47
|
+
snapshot(): RawSseDebugSnapshot;
|
|
48
|
+
toRawText(): string;
|
|
49
|
+
/**
|
|
50
|
+
* Drop every retained record and reset accounting. Called from
|
|
51
|
+
* {@link AgentSession} teardown so a disposed (e.g. parked subagent) session
|
|
52
|
+
* releases its bounded captured wire records. Notifies subscribers so a live
|
|
53
|
+
* debug viewer redraws empty.
|
|
54
|
+
*/
|
|
55
|
+
clear(): void;
|
|
56
|
+
}
|
|
57
|
+
/** Resolve an owner's capture buffer or the process-wide fallback. */
|
|
58
|
+
export declare function resolveRawSseDebugBuffer(owner?: object): RawSseDebugBuffer;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Component } from "../../tui.js";
|
|
2
|
+
import { type RawSseDebugBuffer } from "./raw-sse-buffer.js";
|
|
3
|
+
/** @internal Exported for tests. */
|
|
4
|
+
export declare function expandPrettyDataLines(raw: readonly string[]): string[];
|
|
5
|
+
/** Host clipboard capability for the raw event viewer. */
|
|
6
|
+
export interface RawSseViewerDeps {
|
|
7
|
+
copyToClipboard(text: string): void;
|
|
8
|
+
}
|
|
9
|
+
/** Raw event viewer content, callbacks, and host capabilities. */
|
|
10
|
+
export interface RawSseViewerOptions {
|
|
11
|
+
deps: RawSseViewerDeps;
|
|
12
|
+
buffer: RawSseDebugBuffer;
|
|
13
|
+
terminalRows: number;
|
|
14
|
+
onExit: () => void;
|
|
15
|
+
onStatus?: (message: string) => void;
|
|
16
|
+
onUpdate?: () => void;
|
|
17
|
+
}
|
|
18
|
+
/** Scrollable live view of captured provider events. */
|
|
19
|
+
export declare class RawSseViewerComponent implements Component {
|
|
20
|
+
#private;
|
|
21
|
+
constructor(options: RawSseViewerOptions);
|
|
22
|
+
dispose(): void;
|
|
23
|
+
handleInput(keyData: string): void;
|
|
24
|
+
invalidate(): void;
|
|
25
|
+
render(width: number): readonly string[];
|
|
26
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/** Live values the debug view reads off the running TUI, not the static capability table. */
|
|
2
|
+
export interface TerminalRuntimeState {
|
|
3
|
+
columns: number;
|
|
4
|
+
rows: number;
|
|
5
|
+
/** Whether DEC 2026 synchronized-output wrappers are currently emitted. */
|
|
6
|
+
synchronizedOutput: boolean;
|
|
7
|
+
}
|
|
8
|
+
/** Terminal capabilities, geometry, and detection environment. */
|
|
9
|
+
export interface TerminalStateInfo {
|
|
10
|
+
detectedId: string;
|
|
11
|
+
columns: number;
|
|
12
|
+
rows: number;
|
|
13
|
+
cellWidthPx: number;
|
|
14
|
+
cellHeightPx: number;
|
|
15
|
+
trueColor: boolean;
|
|
16
|
+
imageProtocol: string;
|
|
17
|
+
notifyProtocol: string;
|
|
18
|
+
osc99Confirmed: boolean;
|
|
19
|
+
hyperlinks: boolean;
|
|
20
|
+
deccara: boolean;
|
|
21
|
+
screenToScrollback: boolean;
|
|
22
|
+
synchronizedOutput: boolean;
|
|
23
|
+
multiplexer: string | null;
|
|
24
|
+
env: {
|
|
25
|
+
TERM?: string;
|
|
26
|
+
TERM_PROGRAM?: string;
|
|
27
|
+
TERM_PROGRAM_VERSION?: string;
|
|
28
|
+
COLORTERM?: string;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/** Snapshot the active terminal capabilities and the live runtime geometry. */
|
|
32
|
+
export declare function collectTerminalState(runtime: TerminalRuntimeState): TerminalStateInfo;
|
|
33
|
+
/** Format terminal state for display in the debug menu. */
|
|
34
|
+
export declare function formatTerminalState(info: TerminalStateInfo): string;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { Component } from "../../tui.js";
|
|
2
|
+
import { type ScrollRangeAnchor } from "../../components/scroll-view.js";
|
|
3
|
+
/** One complete debug-viewer frame. */
|
|
4
|
+
export interface DebugViewerFrameContent {
|
|
5
|
+
readonly header: readonly string[];
|
|
6
|
+
readonly body: {
|
|
7
|
+
readonly lines: readonly string[];
|
|
8
|
+
readonly anchor?: ScrollRangeAnchor;
|
|
9
|
+
};
|
|
10
|
+
readonly footer: readonly string[];
|
|
11
|
+
}
|
|
12
|
+
/** Dimensions supplied while a debug viewer prepares its domain rows. */
|
|
13
|
+
export interface DebugViewerFrameContext {
|
|
14
|
+
/** Panel content width with one column reserved for an overflowing viewport's scrollbar. */
|
|
15
|
+
readonly contentWidth: number;
|
|
16
|
+
readonly bodyHeight: number;
|
|
17
|
+
}
|
|
18
|
+
export interface DebugViewerFrameOptions {
|
|
19
|
+
readonly title: string;
|
|
20
|
+
readonly getHeight: () => number;
|
|
21
|
+
readonly headerRows: number;
|
|
22
|
+
readonly footerRows: number;
|
|
23
|
+
readonly frame: (context: DebugViewerFrameContext) => DebugViewerFrameContent;
|
|
24
|
+
readonly minimumBodyRows?: number;
|
|
25
|
+
readonly followTail?: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Debug-local adapter for the fullscreen viewers' common rounded panel and viewport.
|
|
29
|
+
* Domain controllers retain filtering, selection, formatting, copy, and live data;
|
|
30
|
+
* this component owns chrome sizing, persistent scroll state, selection reveal, and
|
|
31
|
+
* frame-row to logical-body translation.
|
|
32
|
+
*/
|
|
33
|
+
export declare class DebugViewerFrame implements Component {
|
|
34
|
+
#private;
|
|
35
|
+
constructor(options: DebugViewerFrameOptions);
|
|
36
|
+
get debugChildren(): readonly Component[];
|
|
37
|
+
getBodyHeight(): number;
|
|
38
|
+
isFollowingTail(): boolean;
|
|
39
|
+
setFollowTail(follow: boolean): void;
|
|
40
|
+
/** Manual viewport movement suspends append-follow, including at the current tail. */
|
|
41
|
+
scroll(delta: number): void;
|
|
42
|
+
setScrollOffset(offset: number): void;
|
|
43
|
+
/** Whether a 0-based rendered frame row lies inside the last rendered body region. */
|
|
44
|
+
isBodyFrameRow(frameRow: number): boolean;
|
|
45
|
+
/** Map a 0-based rendered frame row into the complete logical body buffer. */
|
|
46
|
+
toBodyRow(frameRow: number): number | undefined;
|
|
47
|
+
/** Map a 0-based rendered frame row into the fixed header region. */
|
|
48
|
+
toHeaderRow(frameRow: number): number | undefined;
|
|
49
|
+
invalidate(): void;
|
|
50
|
+
dispose(): void;
|
|
51
|
+
render(width: number): readonly string[];
|
|
52
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Cached author photos supplied by the command host. */
|
|
2
|
+
export interface AvatarSource {
|
|
3
|
+
get(email: string, cwd: string): string | null | undefined;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Deterministic 5x5 mirrored identicon rendered as half-block rows (3 lines,
|
|
7
|
+
* 10 columns). Used while an avatar loads and when none exists.
|
|
8
|
+
*/
|
|
9
|
+
export declare function identiconLines(email: string, colorize: (hex: string, text: string) => string): string[];
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/** Decode a hex color into RGB channels. */
|
|
2
|
+
export declare function hexChannels(hex: string): [number, number, number];
|
|
3
|
+
/** Linear blend of two hex colors (`t` = 0 → `a`, 1 → `b`). */
|
|
4
|
+
export declare function mixHex(a: string, b: string, t: number): string;
|
|
5
|
+
/** Encode a truecolor background escape sequence. */
|
|
6
|
+
export declare function bgAnsiHex(hex: string): string;
|
|
7
|
+
/** Encode a truecolor foreground escape sequence. */
|
|
8
|
+
export declare function fgAnsiHex(hex: string): string;
|
|
9
|
+
/** True when the theme sits on a dark surface. */
|
|
10
|
+
export declare function isDark(): boolean;
|
|
11
|
+
/** The theme's canvas color: the surface diff tints and pills blend toward. */
|
|
12
|
+
export declare function canvasHex(): string;
|
|
13
|
+
/** The theme's default text color, used as the "bright" mix pole. */
|
|
14
|
+
export declare function textHex(): string;
|
|
15
|
+
/** Perceptual luminance of a hex color (0..1). */
|
|
16
|
+
export declare function luminance(hex: string): number;
|
|
17
|
+
/**
|
|
18
|
+
* Re-assert a background after any reset inside syntax-highlighted text so a
|
|
19
|
+
* row tint survives token boundaries emitted by the highlighter.
|
|
20
|
+
*/
|
|
21
|
+
export declare function withBg(text: string, bg: string): string;
|
|
22
|
+
/**
|
|
23
|
+
* Filled pill button with half-block end caps (`▐ label ▌`), colored from a
|
|
24
|
+
* theme hex. Label contrast follows the fill's luminance. Visible width is
|
|
25
|
+
* `label.length + 2`.
|
|
26
|
+
*/
|
|
27
|
+
export declare function pill(label: string, hex: string, options?: {
|
|
28
|
+
selected?: boolean;
|
|
29
|
+
dim?: boolean;
|
|
30
|
+
}): string;
|
|
31
|
+
/**
|
|
32
|
+
* Flat filled chip with a contrast-computed label — readable on any theme,
|
|
33
|
+
* unlike accent-on-selection combinations that can collapse (e.g. dark blue
|
|
34
|
+
* on light blue).
|
|
35
|
+
*/
|
|
36
|
+
export declare function chipFill(label: string, hex: string): string;
|
|
37
|
+
/**
|
|
38
|
+
* Selection-row background: a canvas-adjacent surface (canvas nudged toward
|
|
39
|
+
* the text color) so every theme foreground stays readable on it — unlike
|
|
40
|
+
* `selectedBg`, which some themes define as a saturated color.
|
|
41
|
+
* `dim` renders a fainter band for cursors in unfocused panes.
|
|
42
|
+
*/
|
|
43
|
+
export declare function selectionBgAnsi(dim?: boolean): string;
|
|
44
|
+
/** Tinted chip: faint fill of a theme color with the full color as label. */
|
|
45
|
+
export declare function tintChip(label: string, hex: string): string;
|
|
46
|
+
/** Subtle toggle chip: accent fill when active, neutral surface otherwise. */
|
|
47
|
+
export declare function softPill(label: string, options?: {
|
|
48
|
+
active?: boolean;
|
|
49
|
+
}): string;
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Diff pane of the git TUI, with four view modes:
|
|
3
|
+
*
|
|
4
|
+
* - `split` (default): old file left, new file right, aligned line-by-line
|
|
5
|
+
* with word-level intraline emphasis and faint fillers for one-sided rows.
|
|
6
|
+
* - `inline`: the full file with deletions/additions stacked in place.
|
|
7
|
+
* - `hunk`: only the changed regions (3 context lines), one block per hunk
|
|
8
|
+
* with `@@` headers and per-hunk stage/unstage/discard buttons.
|
|
9
|
+
* - `file`: the current (new) side only, plain syntax-highlighted view.
|
|
10
|
+
*
|
|
11
|
+
* The right edge carries a minimap-style scrollbar encoding change density
|
|
12
|
+
* (deletions > additions > changes > context, hunk headers in accent) with
|
|
13
|
+
* the visible viewport brightened; clicking it seeks. Long lines either pan
|
|
14
|
+
* horizontally (`←`/`→`) or soft-wrap when word wrap is enabled.
|
|
15
|
+
*/
|
|
16
|
+
import type { DiffStreamResult } from "@oh-my-pi/pi-natives";
|
|
17
|
+
import { type ImageBudget } from "../../components/image.js";
|
|
18
|
+
import { type FileAssetSide, type FileStreamUpdate } from "./state.js";
|
|
19
|
+
/** Column ranges (inclusive start, exclusive end) carrying intraline emphasis. */
|
|
20
|
+
type MarkRanges = readonly (readonly [number, number])[];
|
|
21
|
+
type RowKind = "context" | "change" | "add" | "del";
|
|
22
|
+
interface DiffRow {
|
|
23
|
+
readonly kind: RowKind;
|
|
24
|
+
readonly oldNum?: number;
|
|
25
|
+
readonly newNum?: number;
|
|
26
|
+
/** Tab-expanded line for each side ("" when absent). */
|
|
27
|
+
readonly oldText: string;
|
|
28
|
+
readonly newText: string;
|
|
29
|
+
readonly oldWidth: number;
|
|
30
|
+
readonly newWidth: number;
|
|
31
|
+
readonly oldMarks?: MarkRanges;
|
|
32
|
+
readonly newMarks?: MarkRanges;
|
|
33
|
+
/** Raw (untab-expanded) source lines, for patch construction. */
|
|
34
|
+
readonly oldRaw?: string;
|
|
35
|
+
readonly newRaw?: string;
|
|
36
|
+
}
|
|
37
|
+
/** One changed region with its applyable patch for hunk-level staging. */
|
|
38
|
+
export interface HunkBlock {
|
|
39
|
+
/** `@@ -a,b +c,d @@` header shown above the block. */
|
|
40
|
+
readonly header: string;
|
|
41
|
+
/** Standalone patch text for this hunk, or "" when not applyable. */
|
|
42
|
+
readonly patch: string;
|
|
43
|
+
readonly rows: readonly DiffRow[];
|
|
44
|
+
}
|
|
45
|
+
/** Aligned diff document produced by {@link buildDiffDocument}. */
|
|
46
|
+
export interface DiffDocument {
|
|
47
|
+
readonly filePath: string;
|
|
48
|
+
readonly rows: readonly DiffRow[];
|
|
49
|
+
readonly hunks: readonly HunkBlock[];
|
|
50
|
+
/** Tab-expanded new-side lines for the `file` view. */
|
|
51
|
+
readonly fileLines: readonly {
|
|
52
|
+
text: string;
|
|
53
|
+
width: number;
|
|
54
|
+
}[];
|
|
55
|
+
/** Tab-expanded source lines, retained for progressive syntax highlighting. */
|
|
56
|
+
readonly oldDisplayLines: readonly string[];
|
|
57
|
+
/** Tab-expanded source lines, retained for progressive syntax highlighting. */
|
|
58
|
+
readonly newDisplayLines: readonly string[];
|
|
59
|
+
readonly additions: number;
|
|
60
|
+
readonly deletions: number;
|
|
61
|
+
readonly gutterWidth: number;
|
|
62
|
+
readonly maxLineWidth: number;
|
|
63
|
+
/** False when built with whitespace-ignore: hunk patches would not apply. */
|
|
64
|
+
readonly canPatch: boolean;
|
|
65
|
+
/** Raw input texts and newline state, for line-selection patches. */
|
|
66
|
+
readonly rawOld: string;
|
|
67
|
+
readonly rawNew: string;
|
|
68
|
+
readonly oldEndsNewline: boolean;
|
|
69
|
+
readonly newEndsNewline: boolean;
|
|
70
|
+
/** Index into {@link rows} for each 1-based new-file line number. */
|
|
71
|
+
readonly rowIndexByNewLine: readonly number[];
|
|
72
|
+
}
|
|
73
|
+
/** How the pane presents the document. */
|
|
74
|
+
export type ViewMode = "split" | "inline" | "hunk" | "file";
|
|
75
|
+
/** Hunk-button actions raised to the root component. */
|
|
76
|
+
export type HunkAction = "stage" | "unstage" | "discard";
|
|
77
|
+
/**
|
|
78
|
+
* Whitespace handling for {@link buildDiffDocument}:
|
|
79
|
+
*
|
|
80
|
+
* - `off`: exact, byte-level alignment.
|
|
81
|
+
* - `whitespace`: align ignoring leading/trailing whitespace (disables hunk
|
|
82
|
+
* patches — the alignment no longer matches git's view of the file).
|
|
83
|
+
* - `formatting`: exact alignment, but changed blocks that only move
|
|
84
|
+
* whitespace around (indentation, line splits/joins, blank lines) or only
|
|
85
|
+
* touch import statements (ts/js, rust, go) are demoted to context.
|
|
86
|
+
*/
|
|
87
|
+
export type WhitespaceMode = "off" | "whitespace" | "formatting";
|
|
88
|
+
/** Options for {@link buildDiffDocument}. */
|
|
89
|
+
export interface DiffBuildOptions {
|
|
90
|
+
/** Whitespace handling; defaults to `off`. */
|
|
91
|
+
whitespace?: WhitespaceMode;
|
|
92
|
+
/** Exact runs/hunks already computed by the native streaming differ. */
|
|
93
|
+
streamResult?: DiffStreamResult;
|
|
94
|
+
}
|
|
95
|
+
/** Build the aligned document for one file from its raw old/new texts. */
|
|
96
|
+
export declare function buildDiffDocument(oldRaw: string, newRaw: string, filePath: string, options?: DiffBuildOptions): DiffDocument;
|
|
97
|
+
/**
|
|
98
|
+
* Build a patch covering only the changed rows inside `[from, to]` (indices
|
|
99
|
+
* into `doc.rows`).
|
|
100
|
+
*
|
|
101
|
+
* - `apply`: base is the old side; the target adopts only the selected
|
|
102
|
+
* changes. Staging selected lines = apply this to the index.
|
|
103
|
+
* - `revert`: base is the new side; the target undoes only the selected
|
|
104
|
+
* changes. Unstaging selected lines = apply `--cached`; discarding
|
|
105
|
+
* selected lines = apply to the worktree.
|
|
106
|
+
*
|
|
107
|
+
* Returns `null` when the selection touches no changes or the document
|
|
108
|
+
* cannot produce patches (whitespace-ignore alignment).
|
|
109
|
+
*/
|
|
110
|
+
export declare function buildLineSelectionPatch(doc: DiffDocument, from: number, to: number, intent: "apply" | "revert"): string | null;
|
|
111
|
+
/** Placeholder states shown instead of a document. */
|
|
112
|
+
export type DiffPaneState = "empty" | "loading" | "streaming" | "asset" | "ready";
|
|
113
|
+
/** Result of a left click inside the pane. */
|
|
114
|
+
export type PaneClick = {
|
|
115
|
+
type: "hunk-action";
|
|
116
|
+
hunk: HunkBlock;
|
|
117
|
+
action: HunkAction;
|
|
118
|
+
} | {
|
|
119
|
+
type: "handled";
|
|
120
|
+
} | null;
|
|
121
|
+
/**
|
|
122
|
+
* Scrollable diff viewport. The root component feeds it key/mouse input and
|
|
123
|
+
* composes its rendered lines into the frame.
|
|
124
|
+
*/
|
|
125
|
+
export declare class DiffPane {
|
|
126
|
+
#private;
|
|
127
|
+
state: DiffPaneState;
|
|
128
|
+
/** Message shown in the empty state. */
|
|
129
|
+
emptyMessage: string;
|
|
130
|
+
mode: ViewMode;
|
|
131
|
+
wrap: boolean;
|
|
132
|
+
/** Which hunk buttons apply: staging (unstaged), unstaging (staged), or none. */
|
|
133
|
+
patchTarget: "stage" | "unstage" | null;
|
|
134
|
+
selectedHunk: number;
|
|
135
|
+
scrollTop: number;
|
|
136
|
+
scrollLeft: number;
|
|
137
|
+
/** Pane holds keyboard focus: the cursor band renders at full strength (dimmed otherwise). */
|
|
138
|
+
focused: boolean;
|
|
139
|
+
/** Cursor as a visual-row index; navigation keys move it. */
|
|
140
|
+
cursor: number;
|
|
141
|
+
/** Shift-selection anchor (visual-row index), or null when no selection. */
|
|
142
|
+
anchor: number | null;
|
|
143
|
+
constructor(imageBudget?: ImageBudget);
|
|
144
|
+
get doc(): DiffDocument | null;
|
|
145
|
+
setDocument(doc: DiffDocument | null, state: DiffPaneState): void;
|
|
146
|
+
/** Show media previews and safe placeholders for non-text Git objects. */
|
|
147
|
+
setAsset(filePath: string, old: FileAssetSide, next: FileAssetSide): void;
|
|
148
|
+
/** Start a provisional file view while the native stream ingests both sides. */
|
|
149
|
+
startStream(filePath: string): void;
|
|
150
|
+
/** Merge newly completed native-stream lines into the provisional viewport. */
|
|
151
|
+
updateStream(update: FileStreamUpdate): void;
|
|
152
|
+
/** Incrementally syntax-highlight the active document without blocking input. */
|
|
153
|
+
highlightAsync(signal: AbortSignal, requestRender: () => void): Promise<void>;
|
|
154
|
+
setMode(mode: ViewMode): void;
|
|
155
|
+
cycleMode(): void;
|
|
156
|
+
toggleWrap(): void;
|
|
157
|
+
scrollBy(delta: number): void;
|
|
158
|
+
pageBy(direction: 1 | -1): void;
|
|
159
|
+
scrollLeftBy(delta: number): void;
|
|
160
|
+
/** Move the read-only cursor; `extend` grows the shift selection. */
|
|
161
|
+
moveCursor(delta: number, extend: boolean): void;
|
|
162
|
+
/** Drop the shift selection. True when there was one. */
|
|
163
|
+
clearSelection(): boolean;
|
|
164
|
+
/**
|
|
165
|
+
* Selected span as indices into `doc.rows` (shift selection, or the cursor
|
|
166
|
+
* row alone). Null when the cursor sits on rows that cannot map back to the
|
|
167
|
+
* document (hunk-view rows, headers).
|
|
168
|
+
*/
|
|
169
|
+
get selection(): {
|
|
170
|
+
from: number;
|
|
171
|
+
to: number;
|
|
172
|
+
explicit: boolean;
|
|
173
|
+
} | null;
|
|
174
|
+
/** Center the viewport on a visual row (minimap seek, hunk jump). */
|
|
175
|
+
seekTo(row: number): void;
|
|
176
|
+
/** Jump to the next/previous hunk. False when already at the boundary. */
|
|
177
|
+
jumpHunk(direction: 1 | -1): boolean;
|
|
178
|
+
/** Snap to the first/last hunk — the landing spot when hunk nav crosses files. */
|
|
179
|
+
seekHunk(edge: "first" | "last"): void;
|
|
180
|
+
/** Move the cursor to the first/last visual row (home/end, `g`/`G`). */
|
|
181
|
+
cursorToEdge(edge: "start" | "end"): void;
|
|
182
|
+
/** Currently selected hunk (hunk view), if any. */
|
|
183
|
+
get currentHunk(): HunkBlock | null;
|
|
184
|
+
/** Handle a left click at pane-local coordinates. */
|
|
185
|
+
clickAt(col: number, row: number, shift?: boolean): PaneClick;
|
|
186
|
+
render(width: number, height: number): string[];
|
|
187
|
+
}
|
|
188
|
+
export {};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `omp git` — fullscreen repository TUI.
|
|
3
|
+
*
|
|
4
|
+
* Layout: header (file path, encoding, stage-file button, close), toolbar
|
|
5
|
+
* (scope chip, file/diff toggle, hunk navigation, hunk/inline/split view
|
|
6
|
+
* buttons, whitespace + word-wrap toggles), center diff pane with a minimap
|
|
7
|
+
* scrollbar, right sidebar (file management + commit form while dirty, HEAD
|
|
8
|
+
* commit details with author avatar when clean). Submitting an empty commit
|
|
9
|
+
* form generates an llm-git-compatible message; submitting populated fields
|
|
10
|
+
* commits them. A footer shows key hints.
|
|
11
|
+
*
|
|
12
|
+
* `tab` moves focus between the diff and the sidebar; both panes take
|
|
13
|
+
* arrows/PgUp/PgDn, vim motions (`j`/`k`/`h`/`l`/`g`/`G`), and mouse
|
|
14
|
+
* clicks/wheel. All toolbar buttons are clickable and mirrored by keys:
|
|
15
|
+
* `v` cycles the view (`1`–`4` pick one), `alt+↓`/`alt+↑` jump hunks and roll
|
|
16
|
+
* into the adjacent file at the edges, `]`/`[` switch files, `s`/`u`
|
|
17
|
+
* stage/unstage (hunk-aware), `x` discards a hunk, `delete` discards the
|
|
18
|
+
* whole file (press twice to confirm), `w` wraps, `b` cycles
|
|
19
|
+
* whitespace handling (exact → ignore whitespace → ignore
|
|
20
|
+
* formatting/import-only changes), `c` jumps to the commit form, `r`
|
|
21
|
+
* refreshes. In the sidebar tree `←`/`→` collapse/expand directories,
|
|
22
|
+
* `enter` opens the selected file in the diff pane, `space` stages or
|
|
23
|
+
* unstages the selected row, and `delete` discards it — on a directory,
|
|
24
|
+
* every file underneath it.
|
|
25
|
+
*/
|
|
26
|
+
import { TUI } from "../../tui.js";
|
|
27
|
+
import type { AvatarSource } from "./avatar.js";
|
|
28
|
+
import { type GitCommitMessage } from "./sidebar.js";
|
|
29
|
+
import type { ChangedFile, GitTuiModel } from "./state.js";
|
|
30
|
+
/** AI staging counts displayed after filtering the working tree. */
|
|
31
|
+
export interface AiStageOutcome {
|
|
32
|
+
matchedFiles: number;
|
|
33
|
+
totalFiles: number;
|
|
34
|
+
stagedHunks: number;
|
|
35
|
+
totalHunks: number;
|
|
36
|
+
wholeFiles: number;
|
|
37
|
+
}
|
|
38
|
+
/** Repository, avatar, and generation capabilities owned by the command host. */
|
|
39
|
+
export interface GitTuiHost {
|
|
40
|
+
model: GitTuiModel;
|
|
41
|
+
createAvatarSource(onReady: () => void): AvatarSource;
|
|
42
|
+
aiStage(options: {
|
|
43
|
+
cwd: string;
|
|
44
|
+
instruction: string;
|
|
45
|
+
files: readonly Pick<ChangedFile, "path" | "kind">[];
|
|
46
|
+
signal?: AbortSignal;
|
|
47
|
+
onProgress?: (message: string) => void;
|
|
48
|
+
}): Promise<AiStageOutcome>;
|
|
49
|
+
generateCommitMessage(options: {
|
|
50
|
+
cwd: string;
|
|
51
|
+
stageIfEmpty: boolean;
|
|
52
|
+
signal?: AbortSignal;
|
|
53
|
+
onProgress?: (message: string) => void;
|
|
54
|
+
}): Promise<{
|
|
55
|
+
commit: GitCommitMessage;
|
|
56
|
+
validationError?: string | null;
|
|
57
|
+
stagedAll: boolean;
|
|
58
|
+
}>;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Mount the git TUI as a fullscreen overlay on an existing TUI (the `/git`
|
|
62
|
+
* slash command). Resolves when the user closes it; the caller restores focus.
|
|
63
|
+
*/
|
|
64
|
+
export declare function showGitOverlay(ui: TUI, host: GitTuiHost): Promise<void>;
|
|
65
|
+
/** Run the fullscreen git TUI standalone (`omp git`) until the user quits. */
|
|
66
|
+
export declare function runGitTui(host: GitTuiHost): Promise<void>;
|