@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,110 @@
|
|
|
1
|
+
import type { AuthStorage, Model } from "@oh-my-pi/pi-ai";
|
|
2
|
+
import type { OAuthBrowserSessionRequest } from "@oh-my-pi/pi-ai/oauth/types";
|
|
3
|
+
import type { SgrMouseEvent } from "../../mouse.js";
|
|
4
|
+
import type { ComposerPreviewStatusSource } from "../../overlays/composer-shape-preview.js";
|
|
5
|
+
import type { ComposerShape } from "../../overlays/composer-shape-registry.js";
|
|
6
|
+
import type { ModelBrowserSource } from "../../overlays/model-browser.js";
|
|
7
|
+
import type { SymbolPreset } from "../../theme/theme.js";
|
|
8
|
+
import type { SearchProviderId } from "../../tools/web-search.js";
|
|
9
|
+
import type { Component, TUI } from "../../tui.js";
|
|
10
|
+
/** Terminal capabilities used by setup overlays and the startup splash. */
|
|
11
|
+
export interface SetupUiHost {
|
|
12
|
+
readonly ui: Pick<TUI, "showOverlay" | "setFocus" | "requestRender" | "invalidate"> & {
|
|
13
|
+
readonly terminal: {
|
|
14
|
+
readonly rows: number;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/** Application-owned preferences and effects consumed by setup scenes. */
|
|
19
|
+
export interface SetupHost extends SetupUiHost {
|
|
20
|
+
readonly statusLine: ComposerPreviewStatusSource | undefined;
|
|
21
|
+
readonly composerShape: ComposerShape;
|
|
22
|
+
readonly symbolPreset: SymbolPreset;
|
|
23
|
+
readonly colorBlindMode: boolean;
|
|
24
|
+
readonly webSearchOrder: readonly string[];
|
|
25
|
+
readonly disabledProviders: readonly string[];
|
|
26
|
+
readonly authStorage: AuthStorage;
|
|
27
|
+
readonly modelSource: ModelBrowserSource;
|
|
28
|
+
getModels(): {
|
|
29
|
+
available: Model[];
|
|
30
|
+
all: Model[];
|
|
31
|
+
current: Model | undefined;
|
|
32
|
+
};
|
|
33
|
+
refreshModels(): Promise<void>;
|
|
34
|
+
selectModel(model: Model, selector: string): Promise<void>;
|
|
35
|
+
refreshProvider(provider: string): Promise<void>;
|
|
36
|
+
saveComposerShape(shape: ComposerShape): Promise<void>;
|
|
37
|
+
saveSymbolPreset(preset: SymbolPreset): void;
|
|
38
|
+
saveColorBlindMode(enabled: boolean): void;
|
|
39
|
+
saveTheme(mode: "dark" | "light", name: string): void;
|
|
40
|
+
isSearchProviderAvailable(id: SearchProviderId): Promise<boolean>;
|
|
41
|
+
saveSearchProvider(id: SearchProviderId | "auto"): void;
|
|
42
|
+
captureBrowserSession(request: OAuthBrowserSessionRequest, signal?: AbortSignal): Promise<string>;
|
|
43
|
+
copyToClipboard(text: string): Promise<void>;
|
|
44
|
+
openInBrowser(url: string): void;
|
|
45
|
+
markComplete(version: number): Promise<void>;
|
|
46
|
+
playWelcomeIntro(): void;
|
|
47
|
+
showError(message: string): void;
|
|
48
|
+
}
|
|
49
|
+
/** Outcome reported when an onboarding scene finishes. */
|
|
50
|
+
export type SetupSceneResult = "done" | "skipped";
|
|
51
|
+
/** Per-scene focus, rendering, completion, and application callbacks. */
|
|
52
|
+
export interface SetupSceneHost {
|
|
53
|
+
ctx: SetupHost;
|
|
54
|
+
requestRender(): void;
|
|
55
|
+
finish(result: SetupSceneResult): void;
|
|
56
|
+
setFocus(component: Component | null): void;
|
|
57
|
+
restoreFocus(): void;
|
|
58
|
+
}
|
|
59
|
+
/** Interactive content hosted inside the setup wizard frame. */
|
|
60
|
+
export interface SetupSceneController extends Component {
|
|
61
|
+
title: string;
|
|
62
|
+
subtitle?: string;
|
|
63
|
+
onMount?(): void | Promise<void>;
|
|
64
|
+
onUnmount?(): void;
|
|
65
|
+
dispose?(): void;
|
|
66
|
+
/**
|
|
67
|
+
* Render the scene body. `maxLines` is the number of body rows the wizard
|
|
68
|
+
* will actually display (header and footer already subtracted); scenes
|
|
69
|
+
* shrink list windows and drop decorative chrome so the selected row stays
|
|
70
|
+
* inside the budget. Overflow beyond `maxLines` is clipped by the wizard.
|
|
71
|
+
*/
|
|
72
|
+
render(width: number, maxLines?: number): readonly string[];
|
|
73
|
+
/**
|
|
74
|
+
* Route an SGR mouse report (tracking is on while the wizard holds the
|
|
75
|
+
* alternate screen). `line`/`col` are 0-based within this controller's
|
|
76
|
+
* last rendered output. When absent, the wizard falls back to synthesizing
|
|
77
|
+
* arrow keys from wheel notches.
|
|
78
|
+
*/
|
|
79
|
+
routeMouse?(event: SgrMouseEvent, line: number, col: number): void;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* A single panel inside a tabbed setup scene. The host scene owns the tab bar
|
|
83
|
+
* and forwards rendering/input to the active tab.
|
|
84
|
+
*/
|
|
85
|
+
export interface SetupTab {
|
|
86
|
+
readonly id: string;
|
|
87
|
+
readonly label: string;
|
|
88
|
+
/**
|
|
89
|
+
* While `true` the tab owns all keyboard input (e.g. an in-progress OAuth
|
|
90
|
+
* login). The parent scene MUST NOT switch tabs or finish while modal.
|
|
91
|
+
*/
|
|
92
|
+
readonly modal: boolean;
|
|
93
|
+
/** See {@link SetupSceneController.render}: `maxLines` is the tab-local row budget. */
|
|
94
|
+
render(width: number, maxLines?: number): readonly string[];
|
|
95
|
+
handleInput(data: string): void;
|
|
96
|
+
invalidate(): void;
|
|
97
|
+
/** Called when the tab becomes active (including initial mount). */
|
|
98
|
+
onActivate?(): void;
|
|
99
|
+
/** Mouse routing at tab-local coordinates; see {@link SetupSceneController.routeMouse}. */
|
|
100
|
+
routeMouse?(event: SgrMouseEvent, line: number, col: number): void;
|
|
101
|
+
dispose(): void;
|
|
102
|
+
}
|
|
103
|
+
/** Versioned onboarding scene definition. */
|
|
104
|
+
export interface SetupScene {
|
|
105
|
+
id: string;
|
|
106
|
+
title: string;
|
|
107
|
+
minVersion: number;
|
|
108
|
+
shouldRun?(ctx: SetupHost): boolean | Promise<boolean>;
|
|
109
|
+
mount(host: SetupSceneHost): SetupSceneController;
|
|
110
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type SgrMouseEvent } from "../../mouse.js";
|
|
2
|
+
import type { SetupSceneHost, SetupTab } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* "Web search" panel: picks the provider the web_search tool should prefer and
|
|
5
|
+
* reports whether the highlighted provider is ready to use given current
|
|
6
|
+
* credentials (env keys or OAuth sign-ins from the Sign in tab) or an
|
|
7
|
+
* unauthenticated fallback.
|
|
8
|
+
*/
|
|
9
|
+
export declare class WebSearchTab implements SetupTab {
|
|
10
|
+
#private;
|
|
11
|
+
readonly id = "web-search";
|
|
12
|
+
readonly label = "Web search";
|
|
13
|
+
readonly modal = false;
|
|
14
|
+
constructor(host: SetupSceneHost);
|
|
15
|
+
onActivate(): void;
|
|
16
|
+
handleInput(data: string): void;
|
|
17
|
+
/** Wheel moves the highlight; hover lights the row under the pointer; click confirms it. */
|
|
18
|
+
routeMouse(event: SgrMouseEvent, line: number, col: number): void;
|
|
19
|
+
invalidate(): void;
|
|
20
|
+
dispose(): void;
|
|
21
|
+
render(width: number, maxLines?: number): readonly string[];
|
|
22
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Setup version the wizard advances a fresh install to. Bump it whenever a new
|
|
3
|
+
* setup scene lands (or an existing scene raises its `minVersion`).
|
|
4
|
+
*
|
|
5
|
+
* Kept in its own dependency-free module so the cold-launch gate in `main.ts`
|
|
6
|
+
* can answer "is the stored setup version stale?" without statically importing
|
|
7
|
+
* the full wizard — every scene (sign-in/OAuth, web search, theme previews) plus
|
|
8
|
+
* the overlay component and their TUI deps. MUST equal `max(scene.minVersion)`
|
|
9
|
+
* across `ALL_SCENES`; the setup scene selection tests guard this invariant.
|
|
10
|
+
*/
|
|
11
|
+
export declare const CURRENT_SETUP_VERSION = 2;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { SetupUiHost } from "./scenes/types.js";
|
|
2
|
+
/** Timing controls for the standalone startup animation. */
|
|
3
|
+
export interface RunStartupSplashOptions {
|
|
4
|
+
readonly durationMs?: number;
|
|
5
|
+
readonly tickMs?: number;
|
|
6
|
+
readonly now?: () => number;
|
|
7
|
+
}
|
|
8
|
+
/** Show the startup animation and restore the previous overlay focus afterward. */
|
|
9
|
+
export declare function runStartupSplash(ctx: SetupUiHost, options?: RunStartupSplashOptions): Promise<void>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type Component, type OverlayFocusOwner } from "../tui.js";
|
|
2
|
+
import type { SetupHost } from "./scenes/types.js";
|
|
3
|
+
import type { SetupScene } from "./scenes/types.js";
|
|
4
|
+
/** Fullscreen onboarding presentation with scene focus and mouse routing. */
|
|
5
|
+
export declare class SetupWizardComponent implements Component, OverlayFocusOwner {
|
|
6
|
+
#private;
|
|
7
|
+
readonly ctx: SetupHost;
|
|
8
|
+
readonly scenes: readonly SetupScene[];
|
|
9
|
+
constructor(ctx: SetupHost, scenes: readonly SetupScene[]);
|
|
10
|
+
run(): Promise<void>;
|
|
11
|
+
dispose(): void;
|
|
12
|
+
invalidate(): void;
|
|
13
|
+
ownsOverlayFocusTarget(component: Component): boolean;
|
|
14
|
+
handleInput(data: string): void;
|
|
15
|
+
render(width: number): readonly string[];
|
|
16
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { CURRENT_SETUP_VERSION } from "./setup-version.js";
|
|
2
|
+
import type { SetupHost } from "./scenes/types.js";
|
|
3
|
+
import type { SetupScene } from "./scenes/types.js";
|
|
4
|
+
export type { SetupScene, SetupSceneController, SetupSceneHost, SetupSceneResult } from "./scenes/types.js";
|
|
5
|
+
export { runStartupSplash } from "./startup-splash.js";
|
|
6
|
+
export { CURRENT_SETUP_VERSION };
|
|
7
|
+
/** Ordered onboarding scenes with independent version gates. */
|
|
8
|
+
export declare const ALL_SCENES: readonly [SetupScene, SetupScene, SetupScene, SetupScene, SetupScene];
|
|
9
|
+
/** Environment and invocation gates for onboarding scene selection. */
|
|
10
|
+
export interface SetupSceneSelectionOptions {
|
|
11
|
+
resuming?: boolean;
|
|
12
|
+
isTTY?: boolean;
|
|
13
|
+
skipEnv?: string;
|
|
14
|
+
setupWizardEnabled?: boolean;
|
|
15
|
+
force?: boolean;
|
|
16
|
+
}
|
|
17
|
+
/** Select scenes newer than the stored version, honoring hard environment gates. */
|
|
18
|
+
export declare function selectSetupScenes(storedVersion: number, scenes: readonly SetupScene[], ctx?: SetupHost, options?: SetupSceneSelectionOptions): Promise<SetupScene[]>;
|
|
19
|
+
/** Control completion persistence and the post-setup welcome animation. */
|
|
20
|
+
export interface RunSetupWizardOptions {
|
|
21
|
+
markComplete?: boolean;
|
|
22
|
+
playWelcomeIntro?: boolean;
|
|
23
|
+
}
|
|
24
|
+
/** Own the fullscreen setup overlay until its scenes and outro finish. */
|
|
25
|
+
export declare function runSetupWizard(ctx: SetupHost, scenes?: readonly SetupScene[], options?: RunSetupWizardOptions): Promise<void>;
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { type Component, type ComposerStyle } from "../index.js";
|
|
2
|
+
import type { StatusLineHost, StatusLineSession } from "./host.js";
|
|
3
|
+
import { type CodexResetFireworksEvent } from "../overlays/codex-reset-fireworks.js";
|
|
4
|
+
import { type SegmentContext } from "./segments.js";
|
|
5
|
+
import type { CollabStatus, EffectiveStatusLineSettings, StatusLineSettings } from "./types.js";
|
|
6
|
+
type StatusLineLayout = "box" | "band" | "plain-full" | "plain-left" | "plain-right";
|
|
7
|
+
export declare class StatusLineComponent<TSession extends StatusLineSession = StatusLineSession> implements Component {
|
|
8
|
+
#private;
|
|
9
|
+
private session;
|
|
10
|
+
private readonly host;
|
|
11
|
+
constructor(session: TSession, host: StatusLineHost<TSession>);
|
|
12
|
+
/**
|
|
13
|
+
* Re-point the status line at another session (focus proxy). Invalidate: model/context/usage all derive
|
|
14
|
+
* from it. `focusedAgentId` is the focused subagent id while the view is proxied, undefined for main.
|
|
15
|
+
*/
|
|
16
|
+
setSession(session: TSession, focusedAgentId?: string): void;
|
|
17
|
+
updateSettings(settings: StatusLineSettings): void;
|
|
18
|
+
getEffectiveSettingsForTest(): EffectiveStatusLineSettings;
|
|
19
|
+
setAutoCompactEnabled(enabled: boolean): void;
|
|
20
|
+
setRunningSubagents(agentIds: readonly string[]): void;
|
|
21
|
+
/**
|
|
22
|
+
* Compatibility shim for callers predating the simplified subagent badge.
|
|
23
|
+
* The status line now intentionally shows only the active count.
|
|
24
|
+
*/
|
|
25
|
+
setSubagentHubHint(_hint: string | undefined): void;
|
|
26
|
+
/** Active subagent count as currently displayed (collab state mirroring). */
|
|
27
|
+
get subagentCount(): number;
|
|
28
|
+
/**
|
|
29
|
+
* Reset the currently-attached session's active-time accumulators so
|
|
30
|
+
* the `time_spent` segment starts from zero. Called from `/clear`,
|
|
31
|
+
* fresh-session, and joined-collab paths; both the completed
|
|
32
|
+
* accumulator and any in-flight window are dropped, so a reset
|
|
33
|
+
* mid-turn ignores the running window (the matching `markActivityEnd`
|
|
34
|
+
* will see an idle meter and no-op).
|
|
35
|
+
*/
|
|
36
|
+
resetActiveTime(): void;
|
|
37
|
+
/**
|
|
38
|
+
* Mark the currently-attached session as having started a unit of
|
|
39
|
+
* active processing. Idempotent: a second start while a window is
|
|
40
|
+
* already open is a no-op, so reentrant `agent_start` events (e.g.
|
|
41
|
+
* nested auto-compaction loops, focus-controller mid-turn attach onto
|
|
42
|
+
* an already-running window) do not double-count.
|
|
43
|
+
*/
|
|
44
|
+
markActivityStart(): void;
|
|
45
|
+
/**
|
|
46
|
+
* Close the currently-attached session's open active-processing
|
|
47
|
+
* window, folding its elapsed time into the accumulator. Idempotent
|
|
48
|
+
* when the meter is already idle so callers can fire it on every
|
|
49
|
+
* `agent_end` without guarding.
|
|
50
|
+
*/
|
|
51
|
+
markActivityEnd(): void;
|
|
52
|
+
/**
|
|
53
|
+
* Snapshot of total active-processing time for the currently-attached
|
|
54
|
+
* session, including any in-flight window. Exposed for the segment
|
|
55
|
+
* context builder; tests assert against this too.
|
|
56
|
+
*/
|
|
57
|
+
getActiveMs(): number;
|
|
58
|
+
/**
|
|
59
|
+
* Elapsed ms of the currently-open active-processing window, or null when
|
|
60
|
+
* idle. Feeds the `pi` segment's working spinner + turn timer.
|
|
61
|
+
*/
|
|
62
|
+
getTurnElapsedMs(): number | null;
|
|
63
|
+
setPlanModeStatus(status: {
|
|
64
|
+
enabled: boolean;
|
|
65
|
+
paused: boolean;
|
|
66
|
+
} | undefined): void;
|
|
67
|
+
setLoopModeStatus(status: NonNullable<SegmentContext["loopMode"]> | undefined): void;
|
|
68
|
+
setGoalModeStatus(status: {
|
|
69
|
+
enabled: boolean;
|
|
70
|
+
paused: boolean;
|
|
71
|
+
} | undefined): void;
|
|
72
|
+
setVibeModeStatus(status: {
|
|
73
|
+
enabled: boolean;
|
|
74
|
+
} | undefined): void;
|
|
75
|
+
/** Mirror of the editor's modal state; `undefined` clears it (Vim mode off). */
|
|
76
|
+
setVimStatus(status: NonNullable<SegmentContext["vim"]> | undefined): void;
|
|
77
|
+
/**
|
|
78
|
+
* Inject the aggregator that returns the aggregate tok/s of this session's
|
|
79
|
+
* live vibe worker sessions (null when no workers are streaming). Wired by
|
|
80
|
+
* interactive-mode, which owns the VibeSessionRegistry coupling, so the
|
|
81
|
+
* render layer stays off the heavy vibe/task dependency graph. Pass
|
|
82
|
+
* `undefined` to clear.
|
|
83
|
+
*/
|
|
84
|
+
setVibeWorkerTokenRateProvider(provider: (() => number | null) | undefined): void;
|
|
85
|
+
setCollabStatus(status: CollabStatus | null): void;
|
|
86
|
+
setStreamStatus(status: {
|
|
87
|
+
viewers: number;
|
|
88
|
+
} | null): void;
|
|
89
|
+
/** Set the callback that presents detected Codex reset celebrations, or clear it with `undefined`. */
|
|
90
|
+
setCodexResetFireworksHandler(handler: ((event: CodexResetFireworksEvent) => void) | undefined): void;
|
|
91
|
+
setHookStatus(key: string, text: string | undefined): void;
|
|
92
|
+
watchBranch(onBranchChange: () => void): void;
|
|
93
|
+
dispose(): void;
|
|
94
|
+
invalidate(): void;
|
|
95
|
+
/**
|
|
96
|
+
* Explicit Git/repository cache invalidation. Aborts any in-flight
|
|
97
|
+
* reftable HEAD/PR resolve, bumps the stale-result generation, and drops
|
|
98
|
+
* the branch/PR/jj caches so the next render refetches from disk. Called
|
|
99
|
+
* by the git watcher on a HEAD move and by {@link applyCwdChange} on a
|
|
100
|
+
* repo/cwd switch. Generic repaints use {@link invalidate} instead and
|
|
101
|
+
* must never reach this path.
|
|
102
|
+
*/
|
|
103
|
+
invalidateGitCaches(): void;
|
|
104
|
+
/**
|
|
105
|
+
* Re-point the status line's VCS watcher and caches at a new cwd/repository.
|
|
106
|
+
* Atomically retires the old watcher/listeners, invalidates VCS caches and
|
|
107
|
+
* in-flight controllers, then runs watcher setup for the new cwd and requests
|
|
108
|
+
* a repaint. Called by {@link InteractiveMode.applyCwdChange} after the
|
|
109
|
+
* SessionManager's cwd has moved — the watcher ownership always follows the
|
|
110
|
+
* effective cwd/repo, so a stale watcher for the previous repo can never
|
|
111
|
+
* invalidate the new one. Generic repaints use {@link invalidate} and must
|
|
112
|
+
* never retire the watcher or abort a live resolve.
|
|
113
|
+
*/
|
|
114
|
+
applyCwdChange(): void;
|
|
115
|
+
/**
|
|
116
|
+
* Startup redraws only arm a short-delayed task; timeout releases the render
|
|
117
|
+
* cadence while a late successful fetch can still refresh the cached segment.
|
|
118
|
+
*/
|
|
119
|
+
refreshUsageInBackground(): void;
|
|
120
|
+
/**
|
|
121
|
+
* Used-tokens / context-window totals for the status-line context% segment,
|
|
122
|
+
* memoized so the per-event redraw stays O(1) when nothing changed.
|
|
123
|
+
*
|
|
124
|
+
* The numerator comes from `session.getContextUsage()`, which anchors on the
|
|
125
|
+
* last assistant's real prompt-token count — so the bar matches the provider
|
|
126
|
+
* and the `/context` panel — and reports `null` while that count is unknown
|
|
127
|
+
* (right after compaction, before the next response). Exposed (non-private)
|
|
128
|
+
* for unit tests and the collab host's state broadcast.
|
|
129
|
+
*/
|
|
130
|
+
getCachedContextBreakdown(): {
|
|
131
|
+
usedTokens: number;
|
|
132
|
+
contextWindow: number;
|
|
133
|
+
};
|
|
134
|
+
/** Render startup ellipses inside each segment's normal icon, color, and static chrome. */
|
|
135
|
+
renderStartupPlaceholder(width: number, layout: StatusLineLayout): string;
|
|
136
|
+
getTopBorder(width: number, previewTitle?: string): {
|
|
137
|
+
content: string;
|
|
138
|
+
width: number;
|
|
139
|
+
revision: number;
|
|
140
|
+
};
|
|
141
|
+
/** Flush-left soft-capped powerline band (the band composer's top row). */
|
|
142
|
+
getBandTopBorder(width: number, previewTitle?: string): {
|
|
143
|
+
content: string;
|
|
144
|
+
width: number;
|
|
145
|
+
revision: number;
|
|
146
|
+
};
|
|
147
|
+
/**
|
|
148
|
+
* Standalone bar placement derived from the composer style. `bottomBar`
|
|
149
|
+
* `"full"` renders both groups on the bottom bar (pi/borderless/field/rail);
|
|
150
|
+
* `"left"` renders just the left group there — the right group attaches to
|
|
151
|
+
* the editor's top rule via {@link getStandaloneTopBorder} (claude/rule);
|
|
152
|
+
* `"none"` returns the bar to the box composer's embedded top border.
|
|
153
|
+
* `bottomBarGap` inserts a blank spacer row above the bar for styles whose
|
|
154
|
+
* editor has no bottom chrome.
|
|
155
|
+
*/
|
|
156
|
+
setComposerStyle(style: Pick<ComposerStyle, "statusAttachment" | "bottomBar" | "bottomBarGap">): void;
|
|
157
|
+
/** While true, the standalone bar yields its row to the editor's autocomplete menu. */
|
|
158
|
+
setAutocompleteActiveProbe(probe: (() => boolean) | undefined): void;
|
|
159
|
+
/** Plain right-group content for the claude composer's top rule. */
|
|
160
|
+
getStandaloneTopBorder(width: number, previewTitle?: string): {
|
|
161
|
+
content: string;
|
|
162
|
+
width: number;
|
|
163
|
+
revision: number;
|
|
164
|
+
};
|
|
165
|
+
/**
|
|
166
|
+
* The plain standalone bottom bar through the real segment/gauge pipeline —
|
|
167
|
+
* `groups` picks which segment groups it carries. Used by the live render
|
|
168
|
+
* loop and by composer previews (which inject a candidate layout instead of
|
|
169
|
+
* the active one).
|
|
170
|
+
*/
|
|
171
|
+
renderBottomBar(width: number, groups: "left" | "full", previewTitle?: string): string;
|
|
172
|
+
/**
|
|
173
|
+
* Status bar lines for a composer layout, rendered through the real
|
|
174
|
+
* pipeline — the single source for the /settings appearance preview.
|
|
175
|
+
* `style` overrides the layout (candidate composer shape); omitted, the
|
|
176
|
+
* active layout is used. Ignores the autocomplete probe: previews always
|
|
177
|
+
* render.
|
|
178
|
+
*/
|
|
179
|
+
getPreviewLines(width: number, style?: Pick<ComposerStyle, "statusAttachment" | "bottomBar">): string[];
|
|
180
|
+
render(width: number): readonly string[];
|
|
181
|
+
}
|
|
182
|
+
export {};
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import type { AgentMessage, Tokenizer } from "@oh-my-pi/pi-agent-core";
|
|
2
|
+
import type { CompactionSettings } from "@oh-my-pi/pi-agent-core/compaction";
|
|
3
|
+
import type { Tool as AiTool, Model } from "@oh-my-pi/pi-ai";
|
|
4
|
+
import type { Theme } from "../theme/index.js";
|
|
5
|
+
interface ContextSkill {
|
|
6
|
+
readonly name: string;
|
|
7
|
+
readonly description?: string;
|
|
8
|
+
readonly hide?: boolean;
|
|
9
|
+
}
|
|
10
|
+
type ContextTool = Pick<AiTool, "name" | "description" | "parameters">;
|
|
11
|
+
/** Savings computed by the host's inline-image planner, not by the renderer. */
|
|
12
|
+
export interface ContextSavingsEstimate {
|
|
13
|
+
visionCapable: boolean;
|
|
14
|
+
systemPrompt?: {
|
|
15
|
+
applied: boolean;
|
|
16
|
+
reason?: "empty" | "margin" | "budget";
|
|
17
|
+
textTokens: number;
|
|
18
|
+
frames: number;
|
|
19
|
+
imageTokens: number;
|
|
20
|
+
savedTokens: number;
|
|
21
|
+
scope: "agents-md" | "all";
|
|
22
|
+
};
|
|
23
|
+
toolResults?: {
|
|
24
|
+
total: number;
|
|
25
|
+
swapped: number;
|
|
26
|
+
textTokens: number;
|
|
27
|
+
frames: number;
|
|
28
|
+
imageTokens: number;
|
|
29
|
+
savedTokens: number;
|
|
30
|
+
};
|
|
31
|
+
savedTokens: number;
|
|
32
|
+
}
|
|
33
|
+
/** Real sessions satisfy this view without wrapping or copying their state. */
|
|
34
|
+
export interface ContextUsageSession extends NonMessageTokenSource {
|
|
35
|
+
readonly model: Model | undefined;
|
|
36
|
+
readonly agent: {
|
|
37
|
+
readonly tokenizer: Tokenizer;
|
|
38
|
+
readonly state?: {
|
|
39
|
+
readonly tools?: readonly ContextTool[];
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
readonly messages?: AgentMessage[];
|
|
43
|
+
getContextBreakdown?(): {
|
|
44
|
+
messagesTokens: number;
|
|
45
|
+
skillsTokens: number;
|
|
46
|
+
systemToolsTokens: number;
|
|
47
|
+
systemContextTokens: number;
|
|
48
|
+
systemPromptTokens: number;
|
|
49
|
+
usedTokens: number;
|
|
50
|
+
} | undefined;
|
|
51
|
+
}
|
|
52
|
+
export interface ContextUsageOptions {
|
|
53
|
+
compaction: CompactionSettings;
|
|
54
|
+
sourceRevision?: number;
|
|
55
|
+
skillful?: boolean;
|
|
56
|
+
snapcompact?: ContextSavingsEstimate;
|
|
57
|
+
}
|
|
58
|
+
type CategoryId = "systemPrompt" | "systemContext" | "systemTools" | "skills" | "messages";
|
|
59
|
+
interface CategoryInfo {
|
|
60
|
+
id: CategoryId;
|
|
61
|
+
label: string;
|
|
62
|
+
tokens: number;
|
|
63
|
+
color: "accent" | "warning" | "success" | "userMessageText" | "customMessageLabel";
|
|
64
|
+
glyph: string;
|
|
65
|
+
}
|
|
66
|
+
export interface ContextBreakdown {
|
|
67
|
+
model: Model | undefined;
|
|
68
|
+
contextWindow: number;
|
|
69
|
+
categories: CategoryInfo[];
|
|
70
|
+
usedTokens: number;
|
|
71
|
+
autoCompactBufferTokens: number;
|
|
72
|
+
freeTokens: number;
|
|
73
|
+
/** Estimated snapcompact wire savings; set when requested and a snapcompact.* setting is enabled. */
|
|
74
|
+
snapcompact?: ContextSavingsEstimate;
|
|
75
|
+
}
|
|
76
|
+
/** Percent positions (0–100 of the context window) for the auto-compaction boundaries. */
|
|
77
|
+
export interface CompactionBoundaries {
|
|
78
|
+
/** Where auto-compaction fires. */
|
|
79
|
+
thresholdPercent: number;
|
|
80
|
+
/**
|
|
81
|
+
* Where the background speculative summarizer starts (threshold − lead), or
|
|
82
|
+
* `null` when no speculation will run (async compaction disabled, or the
|
|
83
|
+
* first available method is local — snapcompact/shake — and thus instant).
|
|
84
|
+
*/
|
|
85
|
+
speculationPercent: number | null;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Boundary positions for the status line's annotated context gauge. `null`
|
|
89
|
+
* when compaction is disabled/off or the window is unknown — the gauge then
|
|
90
|
+
* renders without markers. The host supplies a lead only when its configured
|
|
91
|
+
* method and async policy allow speculative compaction.
|
|
92
|
+
*/
|
|
93
|
+
export declare function computeCompactionBoundaries(compactionSettings: CompactionSettings, contextWindow: number, speculationLeadTokens?: number): CompactionBoundaries | null;
|
|
94
|
+
/** Stable inputs used to cache non-message token estimates. */
|
|
95
|
+
export interface NonMessageTokenSource {
|
|
96
|
+
readonly systemPrompt?: readonly string[];
|
|
97
|
+
readonly agent?: {
|
|
98
|
+
readonly state?: {
|
|
99
|
+
readonly tools?: readonly ContextTool[];
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
readonly skills?: readonly ContextSkill[];
|
|
103
|
+
}
|
|
104
|
+
/** Shared empty system-prompt part list, avoiding an allocation per render. */
|
|
105
|
+
export declare const EMPTY_STRING_PARTS: string[];
|
|
106
|
+
export declare function estimateSkillsTokens(skills: readonly ContextSkill[], tokenizer: Tokenizer): number;
|
|
107
|
+
type ToolSchemaSource = readonly ContextTool[];
|
|
108
|
+
/**
|
|
109
|
+
* Current dynamic metadata revision for one tool roster.
|
|
110
|
+
*
|
|
111
|
+
* Consumers caching a larger context breakdown must key on both the tools
|
|
112
|
+
* array identity and this revision. Array replacement covers roster changes;
|
|
113
|
+
* {@link invalidateToolSchemaMetadata} covers live description/schema changes
|
|
114
|
+
* while the roster object remains stable.
|
|
115
|
+
*/
|
|
116
|
+
export declare function getToolSchemaMetadataRevision(tools: ToolSchemaSource): number;
|
|
117
|
+
/**
|
|
118
|
+
* Invalidate token estimates after a live tool description or parameter schema
|
|
119
|
+
* can change without replacing the tools array (settings, model, policy, or
|
|
120
|
+
* discovered-agent metadata changes).
|
|
121
|
+
*/
|
|
122
|
+
export declare function invalidateToolSchemaMetadata(tools: ToolSchemaSource): void;
|
|
123
|
+
/**
|
|
124
|
+
* Estimate provider-visible tool-schema tokens.
|
|
125
|
+
*
|
|
126
|
+
* Results are cached by roster-array identity, tokenizer identity, the
|
|
127
|
+
* caller-supplied settings/source revision, and the roster's explicit dynamic
|
|
128
|
+
* metadata revision. Callers whose descriptions or schemas are live getters
|
|
129
|
+
* must either advance `sourceRevision` or call
|
|
130
|
+
* {@link invalidateToolSchemaMetadata} when those inputs change.
|
|
131
|
+
*/
|
|
132
|
+
export declare function estimateToolSchemaTokens(tools: ToolSchemaSource, tokenizer: Tokenizer, sourceRevision?: number): number;
|
|
133
|
+
export declare function computeNonMessageTokens(session: NonMessageTokenSource, tokenizer: Tokenizer, sourceRevision?: number): number;
|
|
134
|
+
/**
|
|
135
|
+
* Shared helper for the four non-message token totals used by
|
|
136
|
+
* `computeContextBreakdown` (/context panel). Keep this category split stable:
|
|
137
|
+
* the status-line fast path intentionally uses the equivalent collapsed total
|
|
138
|
+
* in `computeNonMessageTokens`.
|
|
139
|
+
*/
|
|
140
|
+
export declare function computeNonMessageBreakdown(session: NonMessageTokenSource, tokenizer: Tokenizer, sourceRevision?: number, skillful?: boolean): {
|
|
141
|
+
skillsTokens: number;
|
|
142
|
+
toolsTokens: number;
|
|
143
|
+
systemContextTokens: number;
|
|
144
|
+
systemPromptTokens: number;
|
|
145
|
+
};
|
|
146
|
+
/**
|
|
147
|
+
* Compute a breakdown of estimated context usage by category for the active
|
|
148
|
+
* session and model.
|
|
149
|
+
*/
|
|
150
|
+
export declare function computeContextBreakdown(session: ContextUsageSession, options: ContextUsageOptions): ContextBreakdown;
|
|
151
|
+
/**
|
|
152
|
+
* Render a colorful context-usage panel as ANSI text. Output is a series of
|
|
153
|
+
* lines pairing the grid (left) with the legend (right).
|
|
154
|
+
*/
|
|
155
|
+
export declare function renderContextUsage(breakdown: ContextBreakdown, theme: Theme): string;
|
|
156
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type Component } from "../index.js";
|
|
2
|
+
import type { FooterHost, FooterSession } from "./host.js";
|
|
3
|
+
/**
|
|
4
|
+
* Footer component that shows pwd, token stats, and context usage
|
|
5
|
+
*/
|
|
6
|
+
export declare class FooterComponent implements Component {
|
|
7
|
+
#private;
|
|
8
|
+
private readonly session;
|
|
9
|
+
private readonly host;
|
|
10
|
+
constructor(session: FooterSession, host: FooterHost);
|
|
11
|
+
setAutoCompactEnabled(enabled: boolean): void;
|
|
12
|
+
/**
|
|
13
|
+
* Set extension status text to display in the footer.
|
|
14
|
+
* ANSI/VT escape sequences and most control characters are stripped; tabs and newlines become spaces.
|
|
15
|
+
* The combined status line is trimmed and truncated to terminal width.
|
|
16
|
+
* @param key - Unique key to identify this status
|
|
17
|
+
* @param text - Status text, or undefined to clear
|
|
18
|
+
*/
|
|
19
|
+
setExtensionStatus(key: string, text: string | undefined): void;
|
|
20
|
+
/**
|
|
21
|
+
* Watch the repository head for label changes and repaint the footer.
|
|
22
|
+
*/
|
|
23
|
+
watchBranch(onBranchChange: () => void): void;
|
|
24
|
+
/**
|
|
25
|
+
* Clean up the file watcher
|
|
26
|
+
*/
|
|
27
|
+
dispose(): void;
|
|
28
|
+
invalidate(): void;
|
|
29
|
+
render(width: number): readonly string[];
|
|
30
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extract "owner/repo" from a GitHub remote URL.
|
|
3
|
+
* Handles HTTPS, SSH (scp-style), and git:// protocols.
|
|
4
|
+
*
|
|
5
|
+
* @returns "owner/repo" or null if the URL isn't a recognized GitHub remote.
|
|
6
|
+
*/
|
|
7
|
+
export declare function parseGitHubRepo(remoteUrl: string): string | null;
|
|
8
|
+
/**
|
|
9
|
+
* Extract the branch name from a remote HEAD ref like "origin/main".
|
|
10
|
+
* Returns the portion after the first "/" or the whole string if no "/" is present.
|
|
11
|
+
*/
|
|
12
|
+
export declare function parseDefaultBranch(ref: string): string;
|
|
13
|
+
export interface PrCacheContext {
|
|
14
|
+
branch: string;
|
|
15
|
+
repoId: string | null;
|
|
16
|
+
}
|
|
17
|
+
export declare function createPrCacheContext(branch: string, repoId: string | null): PrCacheContext;
|
|
18
|
+
export declare function isSamePrCacheContext(a: PrCacheContext | undefined, b: PrCacheContext | undefined): boolean;
|
|
19
|
+
export declare function canReuseCachedPr(cachedPr: {
|
|
20
|
+
number: number;
|
|
21
|
+
url: string;
|
|
22
|
+
} | null | undefined, cachedContext: PrCacheContext | undefined, currentContext: PrCacheContext | null): boolean;
|