@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,106 @@
|
|
|
1
|
+
import type { AssistantMessage, ImageContent } from "@oh-my-pi/pi-ai";
|
|
2
|
+
import { type Component, Container } from "../tui.js";
|
|
3
|
+
import { type ImageBudget } from "../components/image.js";
|
|
4
|
+
import type { AssistantThinkingRenderer } from "./extension-types.js";
|
|
5
|
+
import { type CacheInvalidation } from "./cache-invalidation-marker.js";
|
|
6
|
+
import { type ServedModelMismatch } from "./served-model-marker.js";
|
|
7
|
+
import { type TranscriptStableRow } from "../chrome/transcript-container.js";
|
|
8
|
+
/** Test-only: clear the shared gauge so observations don't leak across cases. */
|
|
9
|
+
export declare function resetThinkingSpeedTracker(): void;
|
|
10
|
+
/**
|
|
11
|
+
* Renders an assistant message; streaming content remains mutable until the
|
|
12
|
+
* provider finalizes it because later deltas can revise earlier Markdown.
|
|
13
|
+
* The exception is the leading run of visible thinking blocks: raw thinking
|
|
14
|
+
* only ever appends, so its frozen Markdown prefix publishes as append-only
|
|
15
|
+
* stable rows ({@link AppendOnlyTranscriptBlock}) and can retire into native
|
|
16
|
+
* scrollback while the block still streams — a long reasoning trace is no
|
|
17
|
+
* longer clipped to the mutable viewport.
|
|
18
|
+
*/
|
|
19
|
+
export declare class AssistantMessageComponent extends Container {
|
|
20
|
+
#private;
|
|
21
|
+
readonly transcriptBlockMode: "appendOnly";
|
|
22
|
+
setTextColorTransform(transform?: (text: string) => string): void;
|
|
23
|
+
/**
|
|
24
|
+
* Install resolved destinations for model-authored prose links. A fresh
|
|
25
|
+
* theme object is required whenever the map changes because Markdown's
|
|
26
|
+
* render cache keys themes by object identity.
|
|
27
|
+
*/
|
|
28
|
+
setLinkTargets(targets: ReadonlyMap<string, string>): void;
|
|
29
|
+
/**
|
|
30
|
+
* Choose the block this reply reacts to from the transcript it is about to
|
|
31
|
+
* join: the nearest preceding reaction-capable block (the user's bubble),
|
|
32
|
+
* looking past turn attachments such as file mentions or injected notices
|
|
33
|
+
* but never past an earlier reply — a continuation after tool calls has
|
|
34
|
+
* nothing to react to. Call before adding this component. An
|
|
35
|
+
* already-resolved reaction is re-applied, and a message rendered verbatim
|
|
36
|
+
* for lack of a target is re-rendered with its reaction stripped.
|
|
37
|
+
*/
|
|
38
|
+
pickReactionTarget(transcript: readonly Component[]): void;
|
|
39
|
+
constructor(message?: AssistantMessage, hideThinkingBlock?: boolean, onImageUpdate?: () => void, thinkingRenderers?: readonly AssistantThinkingRenderer[], imageBudget?: ImageBudget, proseOnlyThinking?: boolean, linkTargets?: ReadonlyMap<string, string>);
|
|
40
|
+
/**
|
|
41
|
+
* Show or clear the trailing cache-invalidation divider. Set at `message_end`
|
|
42
|
+
* (live) or during rebuild, once the turn's usage is known and compared
|
|
43
|
+
* against the previous turn's cache footprint.
|
|
44
|
+
*/
|
|
45
|
+
setCacheInvalidation(info: CacheInvalidation | undefined): void;
|
|
46
|
+
/**
|
|
47
|
+
* Show or clear the trailing served-model divider. Set once the turn's
|
|
48
|
+
* signed thinking block (or router report) has named the model that actually
|
|
49
|
+
* answered, when it differs from the one requested.
|
|
50
|
+
*/
|
|
51
|
+
setServedModelMismatch(info: ServedModelMismatch | undefined): void;
|
|
52
|
+
invalidate(): void;
|
|
53
|
+
setHideThinkingBlock(hide: boolean): void;
|
|
54
|
+
/**
|
|
55
|
+
* Allow or withhold retiring finished lines into native scrollback while the
|
|
56
|
+
* turn is still streaming. Wires the `stream-revision` axis marks as able to
|
|
57
|
+
* revise already-streamed text must withhold it: published bytes go to
|
|
58
|
+
* terminal history once and cannot be retracted, so a later revision would
|
|
59
|
+
* leave the reader with a stale copy. Withholding costs only reachability —
|
|
60
|
+
* the block still retires whole when the turn ends.
|
|
61
|
+
*/
|
|
62
|
+
setMidStreamPublication(allowed: boolean): void;
|
|
63
|
+
setProseOnlyThinking(proseOnly: boolean): void;
|
|
64
|
+
dispose(): void;
|
|
65
|
+
/**
|
|
66
|
+
* Toggle suppression of the inline `Error: …` line while the same error is
|
|
67
|
+
* pinned in the banner above the editor. Re-renders so the change is visible.
|
|
68
|
+
*/
|
|
69
|
+
setErrorPinned(pinned: boolean): void;
|
|
70
|
+
/**
|
|
71
|
+
* Expand or collapse the inline turn-ending error block so Ctrl+O
|
|
72
|
+
* (tool-output expansion) can reveal a long provider error's hidden tail.
|
|
73
|
+
* Only re-renders when the current message carries a truncatable error, so
|
|
74
|
+
* toggling expansion across the transcript skips ordinary turns. Works even
|
|
75
|
+
* while the error is pinned in the banner: the inline block is drawn (in full)
|
|
76
|
+
* when expanded so the complete body is reachable without sending a message.
|
|
77
|
+
*/
|
|
78
|
+
setExpanded(expanded: boolean): void;
|
|
79
|
+
isTranscriptBlockFinalized(): boolean;
|
|
80
|
+
render(width: number): readonly string[];
|
|
81
|
+
/** Width-independent stable identities for the streamed leading thinking run. */
|
|
82
|
+
getTranscriptStableRows(): readonly TranscriptStableRow[];
|
|
83
|
+
/**
|
|
84
|
+
* Drop every published thinking stable row. Called by the transcript
|
|
85
|
+
* container during a visibility-driven destructive replay so the head no
|
|
86
|
+
* longer re-emits reasoning captured while thinking was visible. Safe only
|
|
87
|
+
* because the paired display reset clears the scrollback those rows occupied
|
|
88
|
+
* — see {@link AppendOnlyTranscriptBlock.resetTranscriptStableRows}.
|
|
89
|
+
*/
|
|
90
|
+
resetTranscriptStableRows(): void;
|
|
91
|
+
renderTranscriptStableRows(count: number, width: number): readonly string[];
|
|
92
|
+
/** Render completed prose rather than an earlier thinking row under emergency viewport pressure. */
|
|
93
|
+
renderTranscriptBlockEmergencyRow(width: number): string | undefined;
|
|
94
|
+
getTranscriptBlockVersion(): number;
|
|
95
|
+
markTranscriptBlockFinalized(): void;
|
|
96
|
+
applyRetryRecovery(retryRecovery: AssistantMessage["retryRecovery"]): void;
|
|
97
|
+
messagePersistenceKey(): string | undefined;
|
|
98
|
+
/** Toggle rendering for assistant-native and tool-result images. */
|
|
99
|
+
setImagesVisible(visible: boolean): void;
|
|
100
|
+
/** Toggle only images produced by tool results; assistant-native images remain governed by setImagesVisible. */
|
|
101
|
+
setToolResultImagesVisible(visible: boolean): void;
|
|
102
|
+
setToolResultImages(toolCallId: string, images: ImageContent[]): void;
|
|
103
|
+
updateContent(message: AssistantMessage, opts?: {
|
|
104
|
+
transient?: boolean;
|
|
105
|
+
}): void;
|
|
106
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CustomMessage } from "./messages.js";
|
|
2
|
+
import type { TranscriptBlock } from "../chrome/transcript-container.js";
|
|
3
|
+
/**
|
|
4
|
+
* Single-line transcript pill for a `/tan` background-dispatch breadcrumb,
|
|
5
|
+
* styled as a sibling of the "Background job completed" line. The full
|
|
6
|
+
* system-notice content (the persisted `content`) is for the model only — the
|
|
7
|
+
* user sees one compact line, not the raw `<system-notice>` block.
|
|
8
|
+
*/
|
|
9
|
+
export declare function createBackgroundTanDispatchBlock(message: CustomMessage<unknown>): TranscriptBlock;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Component for displaying bash command execution with streaming output.
|
|
3
|
+
*/
|
|
4
|
+
import type { ImageContent } from "@oh-my-pi/pi-ai";
|
|
5
|
+
import { Container, type TUI } from "../tui.js";
|
|
6
|
+
import type { OutputArtifactError } from "../tools/streaming-output.js";
|
|
7
|
+
import type { TruncationMeta } from "../tools/output-meta.js";
|
|
8
|
+
/** PTY size for `!` commands: the execution frame's inner content area. */
|
|
9
|
+
export declare function bashPtyViewport(ui: TUI): {
|
|
10
|
+
cols: number;
|
|
11
|
+
rows: number;
|
|
12
|
+
};
|
|
13
|
+
export declare class BashExecutionComponent extends Container {
|
|
14
|
+
#private;
|
|
15
|
+
constructor(command: string, ui: TUI, excludeFromContext?: boolean);
|
|
16
|
+
/**
|
|
17
|
+
* Transcript finalization contract (see `FinalizableBlock`): the collapsed
|
|
18
|
+
* streaming preview rewrites its tail window every chunk, so the block must
|
|
19
|
+
* stay out of native scrollback until the command completes.
|
|
20
|
+
*/
|
|
21
|
+
isTranscriptBlockFinalized(): boolean;
|
|
22
|
+
getTranscriptBlockVersion(): number;
|
|
23
|
+
/**
|
|
24
|
+
* Set whether the output is expanded (shows full output) or collapsed (preview only).
|
|
25
|
+
*/
|
|
26
|
+
setExpanded(expanded: boolean): void;
|
|
27
|
+
invalidate(): void;
|
|
28
|
+
appendOutput(chunk: string): void;
|
|
29
|
+
/** Switch to PTY rendering and feed raw terminal bytes through the vterm replay. */
|
|
30
|
+
appendPtyChunk(chunk: string): void;
|
|
31
|
+
setComplete(exitCode: number | undefined, cancelled: boolean, options?: {
|
|
32
|
+
output?: string;
|
|
33
|
+
truncation?: TruncationMeta;
|
|
34
|
+
artifactError?: OutputArtifactError;
|
|
35
|
+
images?: readonly ImageContent[];
|
|
36
|
+
showImages?: boolean;
|
|
37
|
+
}): void;
|
|
38
|
+
render(width: number): readonly string[];
|
|
39
|
+
/**
|
|
40
|
+
* Get the raw output for creating BashExecutionMessage.
|
|
41
|
+
*/
|
|
42
|
+
getOutput(): string;
|
|
43
|
+
/**
|
|
44
|
+
* Get the command that was executed.
|
|
45
|
+
*/
|
|
46
|
+
getCommand(): string;
|
|
47
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { Usage } from "@oh-my-pi/pi-ai";
|
|
2
|
+
import { MessageDividerComponent } from "../chrome/message-divider.js";
|
|
3
|
+
/** A prompt-cache invalidation detected from a turn's usage. */
|
|
4
|
+
export interface CacheInvalidation {
|
|
5
|
+
/** Prompt tokens the cold turn had to (re)process instead of reading from cache. */
|
|
6
|
+
reprocessedTokens: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Decide whether `current` turn lost a *working* prompt cache that `prev` was
|
|
10
|
+
* reusing.
|
|
11
|
+
*
|
|
12
|
+
* The provider reports a warm prefix as `cacheRead`; a model/thinking/tool/
|
|
13
|
+
* system-prompt change (or a history rewrite) breaks the prefix, so the next
|
|
14
|
+
* request reads nothing from cache and re-pays for the whole prompt. We flag
|
|
15
|
+
* only the transition where a demonstrably warm cache goes cold: the previous
|
|
16
|
+
* turn must have actually READ a meaningful prefix back, and this turn's
|
|
17
|
+
* `cacheRead` collapsed to zero while it still reprocessed a non-trivial prompt.
|
|
18
|
+
*
|
|
19
|
+
* Requiring a prior warm read is deliberate. A turn that merely WROTE the prefix
|
|
20
|
+
* (`cacheRead` 0) has not proven the cache is live — that is the session's first
|
|
21
|
+
* request, or a re-write after expiry — so a following cold turn there is
|
|
22
|
+
* expected, not an invalidation the user caused (e.g. a long-running first tool
|
|
23
|
+
* call outliving the provider's 5-minute cache TTL surfaced a spurious "cache
|
|
24
|
+
* miss" right under the opening message). It also collapses a run of consecutive
|
|
25
|
+
* cold turns to the single marker at the moment the cache actually broke, instead
|
|
26
|
+
* of repeating the banner on every turn while it re-warms.
|
|
27
|
+
*
|
|
28
|
+
* Returns `undefined` (no marker) for the first turn, turns whose predecessor
|
|
29
|
+
* never read a warm prefix, tiny contexts, turns that reused any cache, and —
|
|
30
|
+
* crucially — turns on providers with *implicit* best-effort caching. Only an
|
|
31
|
+
* explicit, prefix-controlled cache (Anthropic / Bedrock `cache_control`)
|
|
32
|
+
* re-creates the prefix on a cold turn (`cacheWrite > 0`); implicit caches
|
|
33
|
+
* (Google / OpenAI / Fireworks) report `cacheWrite: 0` and drop `cacheRead` to
|
|
34
|
+
* zero intermittently as routine propagation noise that self-heals the next
|
|
35
|
+
* turn, so flagging it would be a false positive.
|
|
36
|
+
*/
|
|
37
|
+
export declare function detectCacheInvalidation(prev: Usage | undefined, current: Usage): CacheInvalidation | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* Slim left-aligned divider rendered after an assistant turn whose request lost
|
|
40
|
+
* the prompt cache. It trails streamed content because usage arrives at message
|
|
41
|
+
* end, after completed rows may already be in native history.
|
|
42
|
+
*
|
|
43
|
+
* Mirrors the compaction divider's banner styling but spans only a short rule
|
|
44
|
+
* plus label (not the full width) and carries no expandable detail:
|
|
45
|
+
*
|
|
46
|
+
* ────────── ⊘ cache miss · 50.9k tokens
|
|
47
|
+
*/
|
|
48
|
+
export declare class CacheInvalidationMarkerComponent extends MessageDividerComponent {
|
|
49
|
+
constructor(info: CacheInvalidation);
|
|
50
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builds transcript components from persisted session message entries — the
|
|
3
|
+
* file/remote-backed counterpart to {@link UiHelpers.addMessageToChat} (which is
|
|
4
|
+
* bound to the live InteractiveModeContext). Used by the fullscreen transcript
|
|
5
|
+
* viewer ({@link AgentTranscriptViewer}) to render a parked subagent / advisor /
|
|
6
|
+
* collab-guest transcript that has no live session.
|
|
7
|
+
*
|
|
8
|
+
* Unlike the old incremental hub sync, {@link ChatTranscriptBuilder.rebuild}
|
|
9
|
+
* always discards prior components and rebuilds the whole transcript from the
|
|
10
|
+
* supplied entries. Re-rendering a growing transcript is therefore O(n) in the
|
|
11
|
+
* entry count, but it cannot duplicate or misorder rows the way incremental
|
|
12
|
+
* component reuse could.
|
|
13
|
+
*/
|
|
14
|
+
import type { AgentTool } from "@oh-my-pi/pi-agent-core";
|
|
15
|
+
import { type TUI } from "../tui.js";
|
|
16
|
+
import type { MessageRenderer } from "./extension-types.js";
|
|
17
|
+
import { type TranscriptEntryLike as TranscriptEntry } from "./transcript-entry.js";
|
|
18
|
+
import { TranscriptContainer } from "../chrome/transcript-container.js";
|
|
19
|
+
export interface ChatTranscriptBuilderDeps {
|
|
20
|
+
ui: TUI;
|
|
21
|
+
getTool?: (name: string) => AgentTool | undefined;
|
|
22
|
+
/** Whether the active registry entry came from a built-in factory. */
|
|
23
|
+
isBuiltInTool?: (name: string) => boolean;
|
|
24
|
+
getMessageRenderer?: (customType: string) => MessageRenderer | undefined;
|
|
25
|
+
cwd: string;
|
|
26
|
+
hideThinkingBlock?: () => boolean;
|
|
27
|
+
proseOnlyThinking?: () => boolean;
|
|
28
|
+
/** Session-scoped resolved destinations for model-authored Markdown links. */
|
|
29
|
+
linkTargets?: ReadonlyMap<string, string>;
|
|
30
|
+
requestRender: () => void;
|
|
31
|
+
}
|
|
32
|
+
export declare class ChatTranscriptBuilder {
|
|
33
|
+
#private;
|
|
34
|
+
readonly container: TranscriptContainer;
|
|
35
|
+
constructor(deps: ChatTranscriptBuilderDeps);
|
|
36
|
+
/** Whether the transcript currently holds any rendered rows. */
|
|
37
|
+
get isEmpty(): boolean;
|
|
38
|
+
/** Discard all components and rebuild the whole transcript from `entries`. */
|
|
39
|
+
rebuild(entries: TranscriptEntry[]): void;
|
|
40
|
+
/** Append newly persisted entries without rebuilding already rendered rows. */
|
|
41
|
+
append(entries: TranscriptEntry[]): void;
|
|
42
|
+
/** Toggle tool-output expansion across every expandable component. */
|
|
43
|
+
setExpanded(expanded: boolean): void;
|
|
44
|
+
get expanded(): boolean;
|
|
45
|
+
/** Rendered row where a persisted entry begins, after the container has painted once. */
|
|
46
|
+
rowForEntry(entryId: string): number | undefined;
|
|
47
|
+
/** Tear down components (sealing pending spinners) and clear build state. */
|
|
48
|
+
reset(): void;
|
|
49
|
+
dispose(): void;
|
|
50
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Container } from "../tui.js";
|
|
2
|
+
import type { CollabPromptDetails } from "./messages.js";
|
|
3
|
+
import type { CustomMessage } from "./messages.js";
|
|
4
|
+
/**
|
|
5
|
+
* Renders a collab guest prompt on every participant's transcript: a
|
|
6
|
+
* user-message-styled bubble prefixed with the author's name.
|
|
7
|
+
*/
|
|
8
|
+
export declare class CollabPromptMessageComponent extends Container {
|
|
9
|
+
constructor(message: CustomMessage<CollabPromptDetails>);
|
|
10
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { type Component } from "../tui.js";
|
|
2
|
+
import type { BranchSummaryMessage, CompactionSummaryMessage, CustomMessage } from "./messages.js";
|
|
3
|
+
interface SummaryDividerOptions {
|
|
4
|
+
label: () => string;
|
|
5
|
+
detailMarkdown: () => string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Common summary/detail delegate behind the compaction, handoff, and branch
|
|
9
|
+
* banners: the width-aware divider is always shown while the Markdown detail
|
|
10
|
+
* box is constructed lazily only on the first expanded render and retained
|
|
11
|
+
* across collapse/re-expand cycles.
|
|
12
|
+
*/
|
|
13
|
+
declare class SummaryMessageComponent implements Component {
|
|
14
|
+
#private;
|
|
15
|
+
constructor(options: SummaryDividerOptions);
|
|
16
|
+
setExpanded(expanded: boolean): void;
|
|
17
|
+
setIgnoreTight(ignore: boolean): this;
|
|
18
|
+
invalidate(): void;
|
|
19
|
+
dispose(): void;
|
|
20
|
+
render(width: number): readonly string[];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Compaction point in the transcript, rendered as a slim horizontal divider:
|
|
24
|
+
*
|
|
25
|
+
* ──────── 📷 remote-compacted · 256K→20K · ctrl+o ────────
|
|
26
|
+
*
|
|
27
|
+
* The label names the maintenance method that fired (remote/soft/handoff/
|
|
28
|
+
* snapcompact; "compacted" for legacy or extension-provided entries) and the
|
|
29
|
+
* before → after context amounts when the entry recorded them. The
|
|
30
|
+
* conversation above the divider stays visible (display transcript keeps
|
|
31
|
+
* full history); only the LLM context was reset. Expanding (ctrl+o) reveals
|
|
32
|
+
* the compaction summary below the divider.
|
|
33
|
+
*/
|
|
34
|
+
export declare class CompactionSummaryMessageComponent extends SummaryMessageComponent {
|
|
35
|
+
constructor(message: CompactionSummaryMessage);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Handoff is a compaction strategy too, but it is persisted as a custom message
|
|
39
|
+
* so the LLM sees the handoff-specific developer context. Render it with the
|
|
40
|
+
* same divider affordance as `/compact` instead of the generic `[handoff]` box.
|
|
41
|
+
*/
|
|
42
|
+
export declare class HandoffSummaryMessageComponent extends SummaryMessageComponent {
|
|
43
|
+
constructor(message: CustomMessage<unknown>);
|
|
44
|
+
}
|
|
45
|
+
export declare function createHandoffSummaryMessageComponent(message: CustomMessage<unknown>, expanded: boolean): HandoffSummaryMessageComponent | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* A branch summary collapses a side branch back into the main line. Render it
|
|
48
|
+
* with the same slim divider as `/compact` and handoff rather than a `[branch]`
|
|
49
|
+
* box, so every history-collapse point reads as one consistent banner.
|
|
50
|
+
*/
|
|
51
|
+
export declare class BranchSummaryMessageComponent extends SummaryMessageComponent {
|
|
52
|
+
constructor(message: BranchSummaryMessage);
|
|
53
|
+
}
|
|
54
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FramedMessageComponent } from "../chrome/message-frame.js";
|
|
2
|
+
import type { MessageRenderer } from "./extension-types.js";
|
|
3
|
+
import { type CustomMessage } from "./messages.js";
|
|
4
|
+
/**
|
|
5
|
+
* Component that renders a custom message entry from extensions.
|
|
6
|
+
* Uses distinct styling to differentiate from user messages.
|
|
7
|
+
*/
|
|
8
|
+
export declare class CustomMessageComponent extends FramedMessageComponent<CustomMessage<unknown>> {
|
|
9
|
+
constructor(message: CustomMessage<unknown>, customRenderer?: MessageRenderer);
|
|
10
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Process-wide display preferences applied by the host settings hooks. */
|
|
2
|
+
export interface ChatTranscriptDisplayPreferences {
|
|
3
|
+
hideToolActivity: boolean;
|
|
4
|
+
readToolResultPreview: boolean;
|
|
5
|
+
showImages: boolean;
|
|
6
|
+
cacheMissMarker: boolean;
|
|
7
|
+
showTokenUsage: boolean;
|
|
8
|
+
showTurnTime: boolean;
|
|
9
|
+
}
|
|
10
|
+
/** Current transcript display preferences. */
|
|
11
|
+
export declare const chatTranscriptDisplayPreferences: ChatTranscriptDisplayPreferences;
|
|
12
|
+
/** Apply host display preferences without pulling settings into the renderer. */
|
|
13
|
+
export declare function setChatTranscriptDisplayPreferences(preferences: Partial<ChatTranscriptDisplayPreferences>): void;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Component for displaying user-initiated eval execution with streaming output.
|
|
3
|
+
* Shares the same kernel session as the agent's eval tool.
|
|
4
|
+
*/
|
|
5
|
+
import { Container, type TUI } from "../tui.js";
|
|
6
|
+
import type { OutputArtifactError } from "../tools/streaming-output.js";
|
|
7
|
+
import type { TruncationMeta } from "../tools/output-meta.js";
|
|
8
|
+
export type EvalExecutionLanguage = "python" | "js";
|
|
9
|
+
export declare class EvalExecutionComponent extends Container {
|
|
10
|
+
#private;
|
|
11
|
+
constructor(code: string, ui: TUI, excludeFromContext?: boolean, language?: EvalExecutionLanguage);
|
|
12
|
+
/**
|
|
13
|
+
* Transcript finalization contract (see `FinalizableBlock`): the collapsed
|
|
14
|
+
* streaming preview rewrites its tail window every chunk, so the block must
|
|
15
|
+
* stay out of native scrollback until the cell completes.
|
|
16
|
+
*/
|
|
17
|
+
isTranscriptBlockFinalized(): boolean;
|
|
18
|
+
getTranscriptBlockVersion(): number;
|
|
19
|
+
setExpanded(expanded: boolean): void;
|
|
20
|
+
invalidate(): void;
|
|
21
|
+
appendOutput(chunk: string): void;
|
|
22
|
+
setComplete(exitCode: number | undefined, cancelled: boolean, options?: {
|
|
23
|
+
output?: string;
|
|
24
|
+
truncation?: TruncationMeta;
|
|
25
|
+
artifactError?: OutputArtifactError;
|
|
26
|
+
}): void;
|
|
27
|
+
getOutput(): string;
|
|
28
|
+
getCode(): string;
|
|
29
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared rendering primitives for bash/eval execution components.
|
|
3
|
+
*
|
|
4
|
+
* Each helper isolates a piece of structure both components share verbatim
|
|
5
|
+
* (frame layout and post-run status line). Differences in
|
|
6
|
+
* how each component prepares its header, output lines, or sixel masking
|
|
7
|
+
* stay in their respective files.
|
|
8
|
+
*/
|
|
9
|
+
import { Loader } from "../components/loader.js";
|
|
10
|
+
import { Text } from "../components/text.js";
|
|
11
|
+
import { Container, type TUI } from "../tui.js";
|
|
12
|
+
import type { OutputArtifactError } from "../tools/streaming-output.js";
|
|
13
|
+
import { type TruncationMeta } from "../tools/output-meta.js";
|
|
14
|
+
/** Output rows shown while an execution is collapsed. */
|
|
15
|
+
export declare const PREVIEW_LINES = 20;
|
|
16
|
+
/** Maximum visible columns retained from an execution output line. */
|
|
17
|
+
export declare const MAX_DISPLAY_LINE_CHARS = 4000;
|
|
18
|
+
/** Clamp execution output by visible width without splitting ANSI sequences. */
|
|
19
|
+
export declare function clampDisplayLine(line: string): string;
|
|
20
|
+
export type ExecutionStatus = "running" | "complete" | "cancelled" | "error";
|
|
21
|
+
/** Theme color keys valid for an execution frame. */
|
|
22
|
+
export type ExecutionColorKey = "dim" | "bashMode" | "pythonMode";
|
|
23
|
+
/**
|
|
24
|
+
* Build the spacer + top border + content container + bottom border scaffold
|
|
25
|
+
* that bash and eval execution components share. The caller appends the
|
|
26
|
+
* header (command vs `>>>` prompt) and the returned loader to
|
|
27
|
+
* `contentContainer` so per-mode order is preserved.
|
|
28
|
+
*/
|
|
29
|
+
export declare function buildExecutionFrame(parent: Container, ui: TUI, colorKey: ExecutionColorKey): {
|
|
30
|
+
contentContainer: Container;
|
|
31
|
+
loader: Loader;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Build the post-run status block (hidden-line hint, exit/cancel marker,
|
|
35
|
+
* truncation notice). Returns undefined when there is nothing to display so
|
|
36
|
+
* callers can skip appending a stray Text child.
|
|
37
|
+
*/
|
|
38
|
+
export declare function buildStatusFooter(opts: {
|
|
39
|
+
status: ExecutionStatus;
|
|
40
|
+
exitCode: number | undefined;
|
|
41
|
+
truncation: TruncationMeta | undefined;
|
|
42
|
+
artifactError?: OutputArtifactError;
|
|
43
|
+
hiddenLineCount: number;
|
|
44
|
+
/** Suppress the "… N more lines" hint (used when sixel passthrough renders the full output). */
|
|
45
|
+
suppressHiddenCount?: boolean;
|
|
46
|
+
}): Text | undefined;
|
|
47
|
+
/**
|
|
48
|
+
* Derive the post-run status from an exit code + cancellation flag using the
|
|
49
|
+
* same precedence both execution components apply.
|
|
50
|
+
*/
|
|
51
|
+
export declare function resolveExecutionStatus(exitCode: number | undefined, cancelled: boolean): ExecutionStatus;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Component, TUI } from "../tui.js";
|
|
2
|
+
import type { Theme } from "../theme/theme.js";
|
|
3
|
+
import type { CustomMessage, HookMessage } from "./messages.js";
|
|
4
|
+
export type ExtensionUiComponent = Component & {
|
|
5
|
+
dispose?(): void;
|
|
6
|
+
};
|
|
7
|
+
export type ExtensionUiComponentFactory = (tui: TUI, theme: Theme) => ExtensionUiComponent;
|
|
8
|
+
export type ExtensionWidgetContent = string[] | ExtensionUiComponentFactory | undefined;
|
|
9
|
+
export interface MessageRenderOptions {
|
|
10
|
+
expanded: boolean;
|
|
11
|
+
}
|
|
12
|
+
export type MessageRenderer<T = unknown> = (message: CustomMessage<T>, options: MessageRenderOptions, theme: Theme) => Component | undefined;
|
|
13
|
+
export interface AssistantThinkingRenderContext {
|
|
14
|
+
contentIndex: number;
|
|
15
|
+
thinkingIndex: number;
|
|
16
|
+
text: string;
|
|
17
|
+
requestRender(): void;
|
|
18
|
+
}
|
|
19
|
+
export type AssistantThinkingRenderer = (context: AssistantThinkingRenderContext, theme: Theme) => Component | undefined;
|
|
20
|
+
export interface HookMessageRenderOptions {
|
|
21
|
+
/** Whether the view is expanded */
|
|
22
|
+
expanded: boolean;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Renderer for hook messages.
|
|
26
|
+
* Hooks register these to provide custom TUI rendering for their message types.
|
|
27
|
+
*/
|
|
28
|
+
export type HookMessageRenderer<T = unknown> = (message: HookMessage<T>, options: HookMessageRenderOptions, theme: Theme) => Component | undefined;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FramedMessageComponent } from "../chrome/message-frame.js";
|
|
2
|
+
import type { HookMessageRenderer } from "./extension-types.js";
|
|
3
|
+
import type { HookMessage } from "./messages.js";
|
|
4
|
+
/**
|
|
5
|
+
* Component that renders a custom message entry from hooks.
|
|
6
|
+
* Uses distinct styling to differentiate from user messages.
|
|
7
|
+
*/
|
|
8
|
+
export declare class HookMessageComponent extends FramedMessageComponent<HookMessage<unknown>> {
|
|
9
|
+
constructor(message: HookMessage<unknown>, customRenderer?: HookMessageRenderer);
|
|
10
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { ImageContent, Model } from "@oh-my-pi/pi-ai";
|
|
2
|
+
export declare const MAX_IMAGE_INPUT_BYTES: number;
|
|
3
|
+
export declare const SUPPORTED_INPUT_IMAGE_MIME_TYPES: Set<string>;
|
|
4
|
+
/**
|
|
5
|
+
* Ollama and its local-backend family decode image input through llama.cpp /
|
|
6
|
+
* `stb_image`, which is compiled without WebP support, so a WebP upload fails
|
|
7
|
+
* with an opaque HTTP 400. Detect those models so the resize pipeline encodes
|
|
8
|
+
* to PNG/JPEG instead — the automatic equivalent of `OMP_NO_WEBP=1`.
|
|
9
|
+
*/
|
|
10
|
+
export declare function modelLacksWebpSupport(model: Pick<Model, "provider" | "api" | "imageInputDecoder"> | undefined): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* `true` when `model` cannot decode WebP, otherwise `undefined` so the
|
|
13
|
+
* `OMP_NO_WEBP` env fallback in {@link resizeImage} still applies. Feed straight
|
|
14
|
+
* into {@link ImageResizeOptions.excludeWebP}.
|
|
15
|
+
*/
|
|
16
|
+
export declare function webpExclusionForModel(model: Pick<Model, "provider" | "api"> | undefined): true | undefined;
|
|
17
|
+
export declare class ImageInputTooLargeError extends Error {
|
|
18
|
+
readonly bytes: number;
|
|
19
|
+
readonly maxBytes: number;
|
|
20
|
+
constructor(bytes: number, maxBytes: number);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Raised when image bytes cannot be decoded — a truncated stream, a payload
|
|
24
|
+
* with a hole in the middle, or bytes that are not the container they claim.
|
|
25
|
+
* Failing at ingress keeps them out of the transcript, where they would
|
|
26
|
+
* otherwise be persisted and rejected by the provider on every later request,
|
|
27
|
+
* with no way to resume the session.
|
|
28
|
+
*/
|
|
29
|
+
export declare class InvalidImageDataError extends Error {
|
|
30
|
+
readonly reason: string;
|
|
31
|
+
constructor(label: string, mimeType: string, reason: string);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Why an image cannot be decoded, or `null` when it decodes.
|
|
35
|
+
*
|
|
36
|
+
* A full decode is the only check that matches what vision backends accept: a
|
|
37
|
+
* middle-elided PNG keeps its signature, its header, and even a well-formed
|
|
38
|
+
* `IEND` trailer, so header sniffing and chunk-framing walks both pass it —
|
|
39
|
+
* while real-world images that decoders render happily do have odd framing, so
|
|
40
|
+
* a structural walk rejects payloads providers accept. Decoding is the ground
|
|
41
|
+
* truth on both sides. Callers on hot paths must cache the verdict.
|
|
42
|
+
*/
|
|
43
|
+
export declare function imageDecodeFailureReason(image: ImageContent): Promise<string | null>;
|
|
44
|
+
/** Converts an image to PNG, rejecting when the runtime cannot decode or encode it. */
|
|
45
|
+
export declare function convertImageToPng(image: ImageContent): Promise<ImageContent>;
|
|
46
|
+
export declare function ensureSupportedImageInput(image: ImageContent): Promise<ImageContent | null>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Container } from "../tui.js";
|
|
2
|
+
/** One file's worth of late LSP diagnostics, as carried on the transcript message. */
|
|
3
|
+
export interface LateDiagnosticsFile {
|
|
4
|
+
path?: string;
|
|
5
|
+
summary?: string;
|
|
6
|
+
errored?: boolean;
|
|
7
|
+
messages?: string[];
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Renders late LSP diagnostics (arrived after edit/write returned) in the
|
|
11
|
+
* transcript, reusing the same tree renderer the edit/write tools use so the
|
|
12
|
+
* styling stays consistent. Supports the global tool-output expand toggle.
|
|
13
|
+
*/
|
|
14
|
+
export declare class LateDiagnosticsMessageComponent extends Container {
|
|
15
|
+
#private;
|
|
16
|
+
constructor(files: LateDiagnosticsFile[]);
|
|
17
|
+
setExpanded(expanded: boolean): void;
|
|
18
|
+
setToolActivityVisible(visible: boolean): void;
|
|
19
|
+
render(width: number): readonly string[];
|
|
20
|
+
invalidate(): void;
|
|
21
|
+
}
|