@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,189 @@
|
|
|
1
|
+
import type { AssistantMessage, ImageContent, MessageAttribution, TextContent } from "@oh-my-pi/pi-ai";
|
|
2
|
+
import type { OutputMeta } from "../tools/output-meta.js";
|
|
3
|
+
import type { BranchSummaryMessage, CompactionSummaryMessage } from "@oh-my-pi/pi-agent-core/compaction/messages";
|
|
4
|
+
declare module "@oh-my-pi/pi-agent-core" {
|
|
5
|
+
interface CustomAgentMessages {
|
|
6
|
+
bashExecution: BashExecutionMessage;
|
|
7
|
+
pythonExecution: PythonExecutionMessage;
|
|
8
|
+
custom: CustomMessage;
|
|
9
|
+
hookMessage: HookMessage;
|
|
10
|
+
branchSummary: BranchSummaryMessage;
|
|
11
|
+
compactionSummary: CompactionSummaryMessage;
|
|
12
|
+
fileMention: FileMentionMessage;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export { COLLAB_PROMPT_MESSAGE_TYPE, type CollabPromptDetails } from "@oh-my-pi/pi-wire";
|
|
16
|
+
export type { BranchSummaryMessage, CompactionSummaryMessage } from "@oh-my-pi/pi-agent-core/compaction/messages";
|
|
17
|
+
export declare const SKILL_PROMPT_MESSAGE_TYPE = "skill-prompt";
|
|
18
|
+
export declare const LSP_LATE_DIAGNOSTIC_MESSAGE_TYPE = "lsp-late-diagnostic";
|
|
19
|
+
export declare const BACKGROUND_TAN_DISPATCH_MESSAGE_TYPE = "background-tan-dispatch";
|
|
20
|
+
export declare const PREWALK_PLAN_MESSAGE_TYPE = "prewalk-plan";
|
|
21
|
+
/** Custom message type for the transient Vibe mode directive. */
|
|
22
|
+
export declare const VIBE_MODE_CONTEXT_MESSAGE_TYPE = "vibe-mode-context";
|
|
23
|
+
/** Fallback type for extension-injected messages that omit a custom type. */
|
|
24
|
+
export declare const DEFAULT_CUSTOM_MESSAGE_TYPE = "custom-message";
|
|
25
|
+
/** Custom message carrying a coding request delegated by the live voice model. */
|
|
26
|
+
export declare const LIVE_DELEGATION_MESSAGE_TYPE = "live-delegation";
|
|
27
|
+
/** Content shape accepted for extension-injected messages. */
|
|
28
|
+
export type CustomMessageContent = string | (TextContent | ImageContent)[];
|
|
29
|
+
/** Public input accepted by `pi.sendMessage` and `AgentSession.sendCustomMessage`. */
|
|
30
|
+
export type CustomMessagePayload<T = unknown> = string | Partial<Pick<CustomMessage<T>, "customType" | "content" | "display" | "details" | "attribution">>;
|
|
31
|
+
/** Custom message payload after applying runtime defaults. */
|
|
32
|
+
export type NormalizedCustomMessagePayload<T = unknown> = Pick<CustomMessage<T>, "customType" | "content" | "display" | "details" | "attribution">;
|
|
33
|
+
/** Details persisted on a `/tan` background-dispatch breadcrumb. */
|
|
34
|
+
export interface BackgroundTanDispatchDetails {
|
|
35
|
+
jobId: string;
|
|
36
|
+
work: string;
|
|
37
|
+
/** Forked clone session file, named `<agentId>.jsonl`; the Agent Hub reads its transcript. */
|
|
38
|
+
sessionFile: string;
|
|
39
|
+
}
|
|
40
|
+
export interface SkillPromptDetails {
|
|
41
|
+
name: string;
|
|
42
|
+
path: string;
|
|
43
|
+
args?: string;
|
|
44
|
+
/** The draft as submitted with its `/skill:<name>` token in place. A leading
|
|
45
|
+
* token renders as a skill callout, a mid-prompt token as an inline chip in
|
|
46
|
+
* a plain user bubble. Absent on sessions recorded before chips existed. */
|
|
47
|
+
prompt?: string;
|
|
48
|
+
lineCount: number;
|
|
49
|
+
/** Internal: compact label shown for a queued custom message. Optional —
|
|
50
|
+
* non-streaming skill prompts never set it. Stripped from persisted
|
|
51
|
+
* `details` by `SessionManager.appendCustomMessageEntry` via the
|
|
52
|
+
* `INTERNAL_DETAILS_FIELDS` allowlist below. */
|
|
53
|
+
__queueChipText?: string;
|
|
54
|
+
}
|
|
55
|
+
/** Sentinel value for `AssistantMessage.errorMessage` indicating that the abort
|
|
56
|
+
* was an *expected internal transition* (plan-mode → execution compaction)
|
|
57
|
+
* and must NOT surface as a red "Operation aborted" line. Distinct from
|
|
58
|
+
* `undefined` (default) so user-cancel aborts with no errorMessage still
|
|
59
|
+
* render normally. Persists through SessionManager so history replay
|
|
60
|
+
* branches identically.
|
|
61
|
+
*
|
|
62
|
+
* Consumers: `AgentSession.#handleAgentEvent` (stamper) writes this value;
|
|
63
|
+
* `EventController.#handleMessageEnd`, `AssistantMessageComponent`,
|
|
64
|
+
* `ui-helpers.addMessageToChat` (renderers), `AgentHubOverlayComponent
|
|
65
|
+
* #buildTranscriptLines`, `runPrintMode`, and `AcpAgent#replayAssistantMessage`
|
|
66
|
+
* (fallback error emission) read it via `isSilentAbort`. */
|
|
67
|
+
export declare const SILENT_ABORT_MARKER = "__omp.silent_abort__";
|
|
68
|
+
/** Type-guard for silent aborts. Renderers MUST call this helper so structured
|
|
69
|
+
* `errorId` and legacy persisted marker messages stay in lockstep. */
|
|
70
|
+
export declare function isSilentAbort(message: Pick<AssistantMessage, "errorId" | "errorMessage">): boolean;
|
|
71
|
+
/** Reason threaded through `AbortController.abort(reason)` when the user aborts
|
|
72
|
+
* the turn with Esc (see `AgentSession.abort`). The agent keeps it on the
|
|
73
|
+
* aborted assistant message's `errorMessage` so queued follow-ups/tool-result
|
|
74
|
+
* placeholders can distinguish a deliberate interrupt from a bare lifecycle
|
|
75
|
+
* abort, but interactive renderers suppress this redundant transcript line. */
|
|
76
|
+
export declare const USER_INTERRUPT_LABEL = "Interrupted by user";
|
|
77
|
+
export declare function isUserInterruptAbort(message: Pick<AssistantMessage, "errorId" | "errorMessage">): boolean;
|
|
78
|
+
export declare function shouldRenderAbortReason(message: Pick<AssistantMessage, "errorId" | "errorMessage">): boolean;
|
|
79
|
+
/** Sentinel `errorMessage` the agent stamps on any abort that carried no custom
|
|
80
|
+
* reason (bare `abort()`). Renderers treat it as "no specific reason given". */
|
|
81
|
+
export declare const GENERIC_ABORT_SENTINEL = "Request was aborted";
|
|
82
|
+
/** Resolve the operator-facing label for an aborted assistant turn. A custom
|
|
83
|
+
* abort reason threaded onto `errorMessage` is returned verbatim; aborts with
|
|
84
|
+
* no threaded reason fall back to the retry-aware generic label. Call
|
|
85
|
+
* `shouldRenderAbortReason` before rendering when user interrupts should stay
|
|
86
|
+
* visually quiet. */
|
|
87
|
+
export declare function resolveAbortLabel(message: Pick<AssistantMessage, "errorId" | "errorMessage">, retryAttempt?: number): string;
|
|
88
|
+
/** True when a persisted or extension-supplied value can be sent as custom-message content. */
|
|
89
|
+
export declare function isCustomMessageContent(content: unknown): content is CustomMessageContent;
|
|
90
|
+
/** Normalizes extension-provided custom message input before it reaches session state or disk. */
|
|
91
|
+
export declare function normalizeCustomMessagePayload<T = unknown>(payload: CustomMessagePayload<T> | unknown): NormalizedCustomMessagePayload<T>;
|
|
92
|
+
/**
|
|
93
|
+
* Message type for bash executions via the ! command.
|
|
94
|
+
*/
|
|
95
|
+
export interface BashExecutionMessage {
|
|
96
|
+
role: "bashExecution";
|
|
97
|
+
command: string;
|
|
98
|
+
output: string;
|
|
99
|
+
exitCode: number | undefined;
|
|
100
|
+
cancelled: boolean;
|
|
101
|
+
truncated: boolean;
|
|
102
|
+
/** Images extracted from terminal graphics in the command's stdout. */
|
|
103
|
+
images?: ImageContent[];
|
|
104
|
+
meta?: OutputMeta;
|
|
105
|
+
timestamp: number;
|
|
106
|
+
/** If true, this message is excluded from LLM context (!! prefix) */
|
|
107
|
+
excludeFromContext?: boolean;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Message type for user-initiated Python executions via the $ command.
|
|
111
|
+
* Shares the same kernel session as eval's Python backend.
|
|
112
|
+
*/
|
|
113
|
+
export interface PythonExecutionMessage {
|
|
114
|
+
role: "pythonExecution";
|
|
115
|
+
code: string;
|
|
116
|
+
output: string;
|
|
117
|
+
exitCode: number | undefined;
|
|
118
|
+
cancelled: boolean;
|
|
119
|
+
truncated: boolean;
|
|
120
|
+
meta?: OutputMeta;
|
|
121
|
+
timestamp: number;
|
|
122
|
+
/** If true, this message is excluded from LLM context ($ prefix) */
|
|
123
|
+
excludeFromContext?: boolean;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Message type for extension-injected messages via sendMessage().
|
|
127
|
+
*/
|
|
128
|
+
export interface CustomMessage<T = unknown> {
|
|
129
|
+
role: "custom";
|
|
130
|
+
customType: string;
|
|
131
|
+
content: CustomMessageContent;
|
|
132
|
+
display: boolean;
|
|
133
|
+
details?: T;
|
|
134
|
+
/** Who initiated this message for billing/attribution semantics. */
|
|
135
|
+
attribution?: MessageAttribution;
|
|
136
|
+
timestamp: number;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Legacy hook message type (pre-extensions). Kept for session migration.
|
|
140
|
+
*/
|
|
141
|
+
export interface HookMessage<T = unknown> {
|
|
142
|
+
role: "hookMessage";
|
|
143
|
+
customType: string;
|
|
144
|
+
content: CustomMessageContent;
|
|
145
|
+
display: boolean;
|
|
146
|
+
details?: T;
|
|
147
|
+
/** Who initiated this message for billing/attribution semantics. */
|
|
148
|
+
attribution?: MessageAttribution;
|
|
149
|
+
timestamp: number;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Message type for auto-read file mentions via @filepath syntax.
|
|
153
|
+
*/
|
|
154
|
+
export interface FileMentionMessage {
|
|
155
|
+
role: "fileMention";
|
|
156
|
+
files: Array<{
|
|
157
|
+
path: string;
|
|
158
|
+
content: string;
|
|
159
|
+
lineCount?: number;
|
|
160
|
+
/** File size in bytes, if known. */
|
|
161
|
+
byteSize?: number;
|
|
162
|
+
/** Why the file contents were omitted from auto-read. */
|
|
163
|
+
skippedReason?: "tooLarge" | "binary";
|
|
164
|
+
image?: ImageContent;
|
|
165
|
+
}>;
|
|
166
|
+
timestamp: number;
|
|
167
|
+
}
|
|
168
|
+
/** True for a `/skill:<name>` prompt the user invoked directly (attribution `user`), as opposed to an agent/autoload injection. */
|
|
169
|
+
export declare function isUserInvokedSkillPrompt(message: CustomMessage): boolean;
|
|
170
|
+
/**
|
|
171
|
+
* True for a custom message that initiates a user-attributed turn: a directly
|
|
172
|
+
* invoked `/skill:` prompt or a writable-collab peer's prompt. Agent redirects,
|
|
173
|
+
* reminders, and auto-continues are not turn starts.
|
|
174
|
+
*/
|
|
175
|
+
export declare function isUserTurnInitiator(message: CustomMessage): boolean;
|
|
176
|
+
export type AdvisorSeverity = "nit" | "concern" | "blocker";
|
|
177
|
+
/** One queued advice note. */
|
|
178
|
+
export interface AdvisorNote {
|
|
179
|
+
note: string;
|
|
180
|
+
severity?: AdvisorSeverity;
|
|
181
|
+
/** Which configured advisor produced this note (omitted for the default advisor). */
|
|
182
|
+
advisor?: string;
|
|
183
|
+
}
|
|
184
|
+
/** Details payload on the batched `advisor` custom message rendered in the transcript. */
|
|
185
|
+
export interface AdvisorMessageDetails {
|
|
186
|
+
notes: AdvisorNote[];
|
|
187
|
+
}
|
|
188
|
+
/** Custom message type for supervised process completions. */
|
|
189
|
+
export declare const LAUNCH_COMPLETION_MESSAGE_TYPE = "launch-completion";
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent reactions. A reply whose text opens with an emoji is reacting to the
|
|
3
|
+
* transcript block before it: the emoji is lifted out of the prose and shown as
|
|
4
|
+
* a badge on that block instead. While the reply streams, an incomplete opening
|
|
5
|
+
* run is withheld until it either completes an emoji or proves to be ordinary
|
|
6
|
+
* text, so the emoji never flashes inside the reply.
|
|
7
|
+
*
|
|
8
|
+
* Reactions are derived from the persisted assistant text, never stored, so a
|
|
9
|
+
* rebuilt transcript reproduces them exactly.
|
|
10
|
+
*/
|
|
11
|
+
import { type Component } from "../tui.js";
|
|
12
|
+
/** A transcript block that can display an agent reaction badge. */
|
|
13
|
+
export interface ReactionTarget {
|
|
14
|
+
setReaction(emoji: string): void;
|
|
15
|
+
}
|
|
16
|
+
/** Whether `component` accepts a reaction badge. */
|
|
17
|
+
export declare function isReactionTarget(component: Component | undefined): component is Component & ReactionTarget;
|
|
18
|
+
export interface ReactionSplit {
|
|
19
|
+
/** The reaction emoji when the text opens with an emoji. */
|
|
20
|
+
emoji?: string;
|
|
21
|
+
/** Text with the opening emoji and any following whitespace removed; the input when there is none. */
|
|
22
|
+
body: string;
|
|
23
|
+
/** True while the text could still grow into an emoji. */
|
|
24
|
+
pending: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Split an opening reaction emoji off the front of assistant text, consuming
|
|
28
|
+
* the next whitespace if any. Leading whitespace is tolerated.
|
|
29
|
+
*/
|
|
30
|
+
export declare function splitReaction(text: string): ReactionSplit;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Host-owned internal protocol classifier used by compact read cards. */
|
|
2
|
+
export declare let internalReadTargetPredicate: ((target: string) => boolean) | undefined;
|
|
3
|
+
/** Supply protocol classification without loading the host router in a renderer. */
|
|
4
|
+
export declare function setInternalReadTargetPredicate(predicate: (target: string) => boolean): void;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { AssistantMessage, Usage } from "@oh-my-pi/pi-ai";
|
|
2
|
+
import { type Component } from "../tui.js";
|
|
3
|
+
import { Container } from "../tui.js";
|
|
4
|
+
import { type ReadRenderArgs } from "../tools/read.js";
|
|
5
|
+
import type { ToolExecutionHandle } from "./tool-execution.js";
|
|
6
|
+
export declare function readArgsHaveTarget(args: unknown): boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Whether a read collapses into the compact {@link ReadToolGroupComponent}
|
|
9
|
+
* rather than a full tool execution. Filesystem/external targets always
|
|
10
|
+
* collapse; other internal URLs (`skill://`, `agent://`, …) render full so
|
|
11
|
+
* their resolved content is visible. `xd://` device reads are the exception —
|
|
12
|
+
* they list devices/docs and read better in the compact grouped view.
|
|
13
|
+
*/
|
|
14
|
+
export declare function readArgsCollapseIntoGroup(args: unknown): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Return the collapsed read calls that can own a turn's usage row. Mixed-tool
|
|
17
|
+
* turns and visible content after a read keep the standalone row so request
|
|
18
|
+
* metrics retain their transcript ordering.
|
|
19
|
+
*/
|
|
20
|
+
export declare function groupedReadUsageCallIds(message: AssistantMessage): string[] | undefined;
|
|
21
|
+
type ReadToolGroupOptions = {
|
|
22
|
+
showContentPreview?: boolean;
|
|
23
|
+
};
|
|
24
|
+
export declare class ReadToolGroupComponent extends Container implements ToolExecutionHandle {
|
|
25
|
+
#private;
|
|
26
|
+
constructor(options?: ReadToolGroupOptions);
|
|
27
|
+
render(width: number): readonly string[];
|
|
28
|
+
isTranscriptBlockFinalized(): boolean;
|
|
29
|
+
finalize(): void;
|
|
30
|
+
/**
|
|
31
|
+
* Force the group terminal even if an entry never received its result (the
|
|
32
|
+
* turn aborted or ended), allowing the container to retire it as history.
|
|
33
|
+
*/
|
|
34
|
+
seal(): void;
|
|
35
|
+
/** Reads never park as background tasks; the handle method is a no-op. */
|
|
36
|
+
parkAsBackground(): void;
|
|
37
|
+
getTranscriptBlockVersion(): number;
|
|
38
|
+
updateArgs(args: ReadRenderArgs, toolCallId?: string): void;
|
|
39
|
+
/**
|
|
40
|
+
* Re-key an entry whose streamed tool-call id changed mid-stream (a provider
|
|
41
|
+
* rewriting the id across deltas; see EventController's
|
|
42
|
+
* `#streamedToolCallIdByIndex`). Preserves row order so a sibling read run is
|
|
43
|
+
* not visibly reshuffled, and no-ops when the rename would collide.
|
|
44
|
+
*/
|
|
45
|
+
renameEntry(oldId: string, newId: string): void;
|
|
46
|
+
/** Remove one call without discarding successful siblings in the shared group. */
|
|
47
|
+
removeEntry(toolCallId: string): boolean;
|
|
48
|
+
updateResult(result: {
|
|
49
|
+
content: Array<{
|
|
50
|
+
type: string;
|
|
51
|
+
text?: string;
|
|
52
|
+
}>;
|
|
53
|
+
details?: unknown;
|
|
54
|
+
isError?: boolean;
|
|
55
|
+
}, isPartial?: boolean, toolCallId?: string): void;
|
|
56
|
+
/**
|
|
57
|
+
* Nest one request's usage beneath the last visible read call from that
|
|
58
|
+
* request. Parallel reads share one row rather than duplicating request totals.
|
|
59
|
+
*/
|
|
60
|
+
attachUsage(toolCallIds: readonly string[], usage: Usage, durationMs?: number, ttftMs?: number, timestamp?: number, turnElapsedMs?: number): boolean;
|
|
61
|
+
setArgsComplete(_toolCallId?: string): void;
|
|
62
|
+
setExecutionStarted(_toolCallId?: string): void;
|
|
63
|
+
setExpanded(expanded: boolean): void;
|
|
64
|
+
setToolActivityVisible(visible: boolean): void;
|
|
65
|
+
getComponent(): Component;
|
|
66
|
+
}
|
|
67
|
+
export {};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { AssistantMessage } from "@oh-my-pi/pi-ai";
|
|
2
|
+
import { MessageDividerComponent } from "../chrome/message-divider.js";
|
|
3
|
+
/** A turn whose response provably came from a different model than was requested. */
|
|
4
|
+
export interface ServedModelMismatch {
|
|
5
|
+
/** Model id the request asked for. */
|
|
6
|
+
requested: string;
|
|
7
|
+
/** Model id recovered from the response (signed thinking block or router report). */
|
|
8
|
+
served: string;
|
|
9
|
+
/** Configured provider the request went to. */
|
|
10
|
+
provider: string;
|
|
11
|
+
/** Upstream host the provider routed to, when it reported one (OpenRouter's `provider`). */
|
|
12
|
+
upstreamProvider?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Decide whether `message` was served by a model other than the one requested.
|
|
16
|
+
*
|
|
17
|
+
* Compares the requested and served ids through `classifyModel` rather than
|
|
18
|
+
* textually: a snapshot suffix (`claude-haiku-4-5` → `claude-haiku-4-5-20251001`)
|
|
19
|
+
* or a gateway prefix (`anthropic/claude-opus-5`) is the same model, while a
|
|
20
|
+
* different family or revision (`claude-opus-5` → `claude-haiku-4-5`) is a
|
|
21
|
+
* substitution. Ids either side cannot classify — Anthropic's internal A/B
|
|
22
|
+
* codenames (`numbat-v6-…`) show up as served ids on first-party traffic —
|
|
23
|
+
* are unverifiable, not mismatches, so they yield `undefined`.
|
|
24
|
+
*/
|
|
25
|
+
export declare function detectServedModelMismatch(message: AssistantMessage): ServedModelMismatch | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* Per-transcript memory that surfaces each distinct (requested → served)
|
|
28
|
+
* substitution once. A gateway that swaps models does so for every turn, so
|
|
29
|
+
* repeating the marker would only add noise; a new pair after a model switch
|
|
30
|
+
* still gets its own marker. Replaced wholesale on rebuild so replaying history
|
|
31
|
+
* re-derives the same first occurrence.
|
|
32
|
+
*/
|
|
33
|
+
export declare class ServedModelTracker {
|
|
34
|
+
#private;
|
|
35
|
+
/** The mismatch to render for `message`, or undefined when there is none or it was already shown. */
|
|
36
|
+
check(message: AssistantMessage): ServedModelMismatch | undefined;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Slim left-aligned divider rendered after the first assistant turn whose
|
|
40
|
+
* response came from a different model than requested. Same shape as the
|
|
41
|
+
* cache-miss divider, in the warning color:
|
|
42
|
+
*
|
|
43
|
+
* ────────── ⚠ served claude-haiku-4-5-20251001 · requested claude-opus-5 · via openrouter/Amazon Bedrock
|
|
44
|
+
*/
|
|
45
|
+
export declare class ServedModelMarkerComponent extends MessageDividerComponent {
|
|
46
|
+
constructor(info: ServedModelMismatch);
|
|
47
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Container } from "../tui.js";
|
|
2
|
+
import type { CustomMessage, SkillPromptDetails } from "./messages.js";
|
|
3
|
+
/**
|
|
4
|
+
* Transcript row for a user-invoked skill. Two layouts, chosen by where the
|
|
5
|
+
* `/skill:<name>` token sat in the submitted draft:
|
|
6
|
+
*
|
|
7
|
+
* - **Callout** (token first): a user bubble with a skill-colored left rail,
|
|
8
|
+
* the skill chip and prompt size as its header, then the rest of the draft
|
|
9
|
+
* as full Markdown.
|
|
10
|
+
* - **Inline** (token mid-prompt): a plain user bubble with the token drawn
|
|
11
|
+
* as the same soft-pill chip the composer showed.
|
|
12
|
+
*
|
|
13
|
+
* In both, the chip is an OSC 8 link to the SKILL.md. Expanding (tool-output
|
|
14
|
+
* toggle) appends the rendered skill prompt.
|
|
15
|
+
*/
|
|
16
|
+
export declare class SkillMessageComponent extends Container {
|
|
17
|
+
#private;
|
|
18
|
+
constructor(message: CustomMessage<SkillPromptDetails>, imageLinks?: readonly (string | undefined)[]);
|
|
19
|
+
setExpanded(expanded: boolean): void;
|
|
20
|
+
/**
|
|
21
|
+
* Transcript finalization contract (see `FinalizableBlock`): an optimistic
|
|
22
|
+
* `/skill:` row reports `false` so the container keeps it live and removable
|
|
23
|
+
* until reconcile; every other skill card is finalized on creation.
|
|
24
|
+
*/
|
|
25
|
+
isTranscriptBlockFinalized(): boolean;
|
|
26
|
+
/** Hold this card live as an unreconciled optimistic `/skill:` row (#11217). */
|
|
27
|
+
markTranscriptBlockPending(): void;
|
|
28
|
+
/** Finalize an optimistic row adopted in place after it already retired to
|
|
29
|
+
* scrollback before its canonical `message_start` arrived (#11217). */
|
|
30
|
+
markTranscriptBlockFinalized(): void;
|
|
31
|
+
invalidate(): void;
|
|
32
|
+
dispose(): void;
|
|
33
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** Compact title-model input for a user-invoked `/skill:<name>` prompt — also the draft a rewind restores. */
|
|
2
|
+
export declare function skillPromptTitleInput(input: {
|
|
3
|
+
name?: string;
|
|
4
|
+
args?: string;
|
|
5
|
+
prompt?: string;
|
|
6
|
+
queueChipText?: string;
|
|
7
|
+
}): string;
|
|
8
|
+
/** Title text for a persisted skill-prompt custom message. Never the expanded SKILL.md body. */
|
|
9
|
+
export declare function titleTextFromSkillPrompt(message: {
|
|
10
|
+
role: string;
|
|
11
|
+
customType?: string;
|
|
12
|
+
attribution?: string;
|
|
13
|
+
details?: unknown;
|
|
14
|
+
}): string | undefined;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Text } from "../components/text.js";
|
|
2
|
+
/**
|
|
3
|
+
* Dim transcript marker for tool calls stripped from the resolved branch
|
|
4
|
+
* (failed/retried turns, results on sibling branches). It is tool activity,
|
|
5
|
+
* so it hides and reappears with the `display.hideToolActivity` toggle.
|
|
6
|
+
*/
|
|
7
|
+
export declare class StrippedToolCallsPlaceholder extends Text {
|
|
8
|
+
#private;
|
|
9
|
+
constructor(strippedToolCalls: number, toolActivityVisible: boolean);
|
|
10
|
+
setToolActivityVisible(visible: boolean): void;
|
|
11
|
+
render(width: number): readonly string[];
|
|
12
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AgentMessage } from "@oh-my-pi/pi-agent-core";
|
|
2
|
+
export declare function canonicalizeMessage(text: string | null | undefined): string;
|
|
3
|
+
/**
|
|
4
|
+
* Thinking text prepared for display. Both modes drop empty `<!-- -->`
|
|
5
|
+
* sentinel lines outside code fences (see {@link isCommentNoise}); prose-only
|
|
6
|
+
* mode additionally elides fenced code down to a trailing ellipsis.
|
|
7
|
+
*/
|
|
8
|
+
export declare function formatThinkingForDisplay(text: string, proseOnly: boolean): string;
|
|
9
|
+
/** Whether a formatted thinking block has non-placeholder content worth rendering. */
|
|
10
|
+
export declare function hasDisplayableThinking(text: string | null | undefined, formattedText: string | null | undefined): boolean;
|
|
11
|
+
/** Whether an assistant message contains thinking content the TUI can reveal. */
|
|
12
|
+
export declare function messageHasDisplayableThinking(message: AgentMessage, proseOnly: boolean): boolean;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Container } from "../tui.js";
|
|
2
|
+
import type { TodoItem } from "../tools/todo.js";
|
|
3
|
+
/**
|
|
4
|
+
* Component that renders a todo completion reminder notification, committed into
|
|
5
|
+
* the transcript like a TTSR notification so it stays anchored in history rather
|
|
6
|
+
* than floating above the editor.
|
|
7
|
+
* Shows when the agent stops with incomplete todos.
|
|
8
|
+
*/
|
|
9
|
+
export declare class TodoReminderComponent extends Container {
|
|
10
|
+
#private;
|
|
11
|
+
constructor(todos: TodoItem[], attempt: number, maxAttempts: number);
|
|
12
|
+
setToolActivityVisible(visible: boolean): void;
|
|
13
|
+
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import type { AgentTool } from "@oh-my-pi/pi-agent-core";
|
|
2
|
+
import { type Component, Container, type TUI } from "../tui.js";
|
|
3
|
+
import { type AnimationFrame } from "../chrome/transcript-container.js";
|
|
4
|
+
/** Resolves the canonical renderer key while retaining the provider's wire name in message history. */
|
|
5
|
+
export declare function toolRenderName(wireName: string, tool: AgentTool | undefined): string;
|
|
6
|
+
/** Minimal TUI surface ToolExecutionComponent uses to schedule repaints and share image budget. */
|
|
7
|
+
export interface ToolExecutionUi {
|
|
8
|
+
requestRender(): void;
|
|
9
|
+
requestComponentRender(component: Component): void;
|
|
10
|
+
resetDisplay(): void;
|
|
11
|
+
imageBudget?: TUI["imageBudget"];
|
|
12
|
+
}
|
|
13
|
+
export interface ToolExecutionOptions {
|
|
14
|
+
showImages?: boolean;
|
|
15
|
+
/** Allow the name-keyed renderer registry only when the active tool is the built-in implementation. */
|
|
16
|
+
useBuiltInRenderer?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface ToolExecutionHandle extends Component {
|
|
19
|
+
updateArgs(args: unknown, toolCallId?: string): void;
|
|
20
|
+
updateStreamPreview?(update: unknown): void;
|
|
21
|
+
updateResult(result: {
|
|
22
|
+
content: Array<{
|
|
23
|
+
type: string;
|
|
24
|
+
text?: string;
|
|
25
|
+
data?: string;
|
|
26
|
+
mimeType?: string;
|
|
27
|
+
}>;
|
|
28
|
+
details?: unknown;
|
|
29
|
+
isError?: boolean;
|
|
30
|
+
}, isPartial?: boolean, toolCallId?: string): void;
|
|
31
|
+
setArgsComplete(toolCallId?: string): void;
|
|
32
|
+
setExecutionStarted(toolCallId?: string): void;
|
|
33
|
+
setExpanded(expanded: boolean): void;
|
|
34
|
+
setToolActivityVisible(visible: boolean): void;
|
|
35
|
+
/** Mark the call parked: it returned, but stays tracked for async job frames. */
|
|
36
|
+
parkAsBackground(): void;
|
|
37
|
+
/** Seal the block as final history and stop its animations. */
|
|
38
|
+
seal(): void;
|
|
39
|
+
}
|
|
40
|
+
/** Phase-locked spinner glyph index shared by every live tool block so parallel
|
|
41
|
+
* spinners advance in lockstep instead of each tracking its own start time. */
|
|
42
|
+
export declare function sharedSpinnerFrame(frameCount: number, now?: number): number;
|
|
43
|
+
/** Stop the shared spinner ticker and drop every registered live block.
|
|
44
|
+
* Called on interactive-mode teardown so a stray live block cannot keep the
|
|
45
|
+
* process-wide 80ms interval alive past shutdown (lingering event-loop
|
|
46
|
+
* handles pin the process; cf. `postmortem.quit`). Test files that assert on
|
|
47
|
+
* ticker arming also use this to start from a clean slate. */
|
|
48
|
+
export declare function stopSharedSpinnerTicker(): void;
|
|
49
|
+
/**
|
|
50
|
+
* Component that renders a tool call with its result (updateable)
|
|
51
|
+
*/
|
|
52
|
+
export declare class ToolExecutionComponent extends Container {
|
|
53
|
+
#private;
|
|
54
|
+
constructor(toolName: string, args: unknown, options: ToolExecutionOptions | undefined, tool: AgentTool | undefined, ui: ToolExecutionUi, _cwd?: string, _toolCallId?: string);
|
|
55
|
+
updateArgs(args: unknown, _toolCallId?: string): void;
|
|
56
|
+
/**
|
|
57
|
+
* Signal that args are complete (tool is about to execute).
|
|
58
|
+
* This triggers an immediate final diff computation for edit-like tools.
|
|
59
|
+
*/
|
|
60
|
+
setArgsComplete(_toolCallId?: string): void;
|
|
61
|
+
/**
|
|
62
|
+
* Signal that this specific call has begun executing (`tool_execution_start`).
|
|
63
|
+
* Distinct from {@link setArgsComplete}: exclusive writes are marked complete
|
|
64
|
+
* at `message_end` but stay queued until this fires for that call.
|
|
65
|
+
*/
|
|
66
|
+
setExecutionStarted(_toolCallId?: string): void;
|
|
67
|
+
/**
|
|
68
|
+
* Resolve once the final (`streaming: false`) preview batch lands or the
|
|
69
|
+
* result settles. Callers without a live batch source (gallery snapshots)
|
|
70
|
+
* pass a budget so a component that will never receive a batch cannot
|
|
71
|
+
* hang them; live approval gates omit it and wait indefinitely.
|
|
72
|
+
*/
|
|
73
|
+
whenPreviewSettled(timeoutMs?: number): Promise<void>;
|
|
74
|
+
updateStreamPreview(update: unknown): void;
|
|
75
|
+
updateResult(result: {
|
|
76
|
+
content: Array<{
|
|
77
|
+
type: string;
|
|
78
|
+
text?: string;
|
|
79
|
+
data?: string;
|
|
80
|
+
mimeType?: string;
|
|
81
|
+
}>;
|
|
82
|
+
details?: unknown;
|
|
83
|
+
isError?: boolean;
|
|
84
|
+
}, isPartial?: boolean, _toolCallId?: string): void;
|
|
85
|
+
/**
|
|
86
|
+
* Advance to the shared spinner glyph and repaint just this block. Driven by
|
|
87
|
+
* the single shared spinner ticker (see `registerSpinnerBlock`); the tick is
|
|
88
|
+
* component-scoped so the TUI reuses every other root subtree (issue #4377).
|
|
89
|
+
*/
|
|
90
|
+
tickSpinner(frame: number): void;
|
|
91
|
+
/**
|
|
92
|
+
* Whether this block is ready to retire as immutable history. Partial
|
|
93
|
+
* results, including detached background tasks, remain active and mutable
|
|
94
|
+
* until they settle. Hidden blocks render no rows and cannot gate history.
|
|
95
|
+
*/
|
|
96
|
+
isTranscriptBlockFinalized(): boolean;
|
|
97
|
+
/**
|
|
98
|
+
* Subagent ids visible on this card for click-to-focus hit-testing. Empty
|
|
99
|
+
* unless this is a task card whose details already name spawned agents.
|
|
100
|
+
* Callers intersect with the live registry, which decides focusability.
|
|
101
|
+
*/
|
|
102
|
+
getClickFocusAgentIds(): string[];
|
|
103
|
+
getTranscriptBlockVersion(): number;
|
|
104
|
+
/** Mark the call parked: it returned, but stays tracked for async job frames. */
|
|
105
|
+
parkAsBackground(): void;
|
|
106
|
+
/**
|
|
107
|
+
* Mark the tool terminal even though no result arrived (the turn aborted or
|
|
108
|
+
* abandoned it) and stop animating so the container can retire it.
|
|
109
|
+
*/
|
|
110
|
+
seal(): void;
|
|
111
|
+
/**
|
|
112
|
+
* Whether this block is a supersedable result snapshot that has not been
|
|
113
|
+
* sealed. Displacement is best-effort: the snapshot finalizes like any other
|
|
114
|
+
* block, so under capacity pressure it may retire to native scrollback
|
|
115
|
+
* first — then the follow-up call appends a fresh snapshot instead of
|
|
116
|
+
* removing this one (see {@link TranscriptContainer.canRemoveBlock}).
|
|
117
|
+
*/
|
|
118
|
+
isDisplaceableBlock(): boolean;
|
|
119
|
+
canBeDisplacedBy(nextToolName: string | undefined): boolean;
|
|
120
|
+
/**
|
|
121
|
+
* A live block torn down through the generic Container path (transcript
|
|
122
|
+
* clear, session switch mid-run) must not leak its shared-ticker
|
|
123
|
+
* registration: the dead component would keep the process-wide 80ms
|
|
124
|
+
* interval alive and keep being repainted.
|
|
125
|
+
*/
|
|
126
|
+
dispose(): void;
|
|
127
|
+
/**
|
|
128
|
+
* Stop spinner animation and cleanup resources.
|
|
129
|
+
*/
|
|
130
|
+
stopAnimation(): void;
|
|
131
|
+
setExpanded(expanded: boolean): void;
|
|
132
|
+
/** Apply the transcript allocator's current viewport reservation. */
|
|
133
|
+
setTranscriptAllocation(rows: number, frame: AnimationFrame): void;
|
|
134
|
+
setToolActivityVisible(visible: boolean): void;
|
|
135
|
+
setShowImages(show: boolean): void;
|
|
136
|
+
invalidate(): void;
|
|
137
|
+
render(width: number): readonly string[];
|
|
138
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { Component } from "../tui.js";
|
|
2
|
+
import { type ScrollRangeAnchor } from "../components/scroll-view.js";
|
|
3
|
+
import { type ComposedColumn, type OutlineStyle, type OutlineTarget } from "./transcript-outline.js";
|
|
4
|
+
/** Logical body rows and optional selection supplied by a transcript browser controller. */
|
|
5
|
+
export interface TranscriptBrowserBody {
|
|
6
|
+
lines: readonly string[];
|
|
7
|
+
anchor?: ScrollRangeAnchor;
|
|
8
|
+
}
|
|
9
|
+
/** One complete browser frame. Header and footer rows are inset by one column. */
|
|
10
|
+
export interface TranscriptBrowserFrame {
|
|
11
|
+
header: readonly string[];
|
|
12
|
+
body: TranscriptBrowserBody;
|
|
13
|
+
footer: readonly string[];
|
|
14
|
+
}
|
|
15
|
+
/** Widths available while composing a transcript browser frame. */
|
|
16
|
+
export interface TranscriptBrowserRenderContext {
|
|
17
|
+
/** Width passed to {@link TranscriptBrowser.render}. */
|
|
18
|
+
frameWidth: number;
|
|
19
|
+
/** Stable transcript width, reserving the final column for an automatic scrollbar. */
|
|
20
|
+
contentWidth: number;
|
|
21
|
+
/** Width for inset header/footer children such as an editor. */
|
|
22
|
+
chromeWidth: number;
|
|
23
|
+
}
|
|
24
|
+
/** Construction options for the shared transcript browser viewport and frame. */
|
|
25
|
+
export interface TranscriptBrowserOptions {
|
|
26
|
+
/** Explicit height budget supplied by the fullscreen host. */
|
|
27
|
+
getHeight: () => number;
|
|
28
|
+
/** Domain controller which supplies header, body, footer, and optional selection. */
|
|
29
|
+
frame: (context: TranscriptBrowserRenderContext) => TranscriptBrowserFrame;
|
|
30
|
+
/** Preserve the historical three-row minimum used by transcript overlays. */
|
|
31
|
+
minimumBodyRows?: number;
|
|
32
|
+
/** Start in append-follow mode; manual scrolling updates the mode automatically. */
|
|
33
|
+
followBottom?: boolean;
|
|
34
|
+
}
|
|
35
|
+
/** Prepared transcript rows, visibility, and nearest valid selection. */
|
|
36
|
+
export interface PreparedTranscriptOutline {
|
|
37
|
+
childRows: Array<readonly string[]>;
|
|
38
|
+
visible: boolean[];
|
|
39
|
+
selected: number;
|
|
40
|
+
}
|
|
41
|
+
/** Options for composing the standard single-column dotted transcript outline. */
|
|
42
|
+
export interface TranscriptOutlineComposition {
|
|
43
|
+
children: readonly Component[];
|
|
44
|
+
targets: readonly OutlineTarget[];
|
|
45
|
+
selected: number;
|
|
46
|
+
columnWidth: number;
|
|
47
|
+
/** Reuse rows already prepared for custom branch/block composition in the same frame. */
|
|
48
|
+
prepared?: PreparedTranscriptOutline;
|
|
49
|
+
from?: number;
|
|
50
|
+
to?: number;
|
|
51
|
+
header?: string[];
|
|
52
|
+
style?: OutlineStyle;
|
|
53
|
+
}
|
|
54
|
+
/** Nearest visible target, preferring the preceding item just like the legacy selectors. */
|
|
55
|
+
export declare function nearestVisibleOutlineTarget(visible: readonly boolean[], selected: number): number;
|
|
56
|
+
/**
|
|
57
|
+
* Shared framed viewport for transcript browsers.
|
|
58
|
+
*
|
|
59
|
+
* Domain controllers retain loading, actions, and branch/block presentation;
|
|
60
|
+
* this component owns outline row caching, frame sizing, scroll state,
|
|
61
|
+
* selection anchoring, append-follow behavior, and frame-to-body coordinates.
|
|
62
|
+
*/
|
|
63
|
+
export declare class TranscriptBrowser implements Component {
|
|
64
|
+
#private;
|
|
65
|
+
readonly debugChildren: readonly Component[];
|
|
66
|
+
constructor(options: TranscriptBrowserOptions);
|
|
67
|
+
invalidate(): void;
|
|
68
|
+
/** Prompt-zone-safe rendered rows for outline composition at `columnWidth`. */
|
|
69
|
+
renderOutlineRows(children: readonly Component[], columnWidth: number): Array<readonly string[]>;
|
|
70
|
+
/** Compute target visibility and snap a collapsed selection to the nearest rendered item. */
|
|
71
|
+
prepareOutline(children: readonly Component[], targets: readonly OutlineTarget[], selected: number, columnWidth: number): PreparedTranscriptOutline;
|
|
72
|
+
/** Compose the standard single-column outline using the browser-owned row cache. */
|
|
73
|
+
composeOutline(options: TranscriptOutlineComposition): PreparedTranscriptOutline & {
|
|
74
|
+
column: ComposedColumn;
|
|
75
|
+
};
|
|
76
|
+
/** Scroll logical body rows. Returns whether the offset changed. */
|
|
77
|
+
scroll(delta: number): boolean;
|
|
78
|
+
/** Apply the ScrollView navigation key set. */
|
|
79
|
+
handleScrollKey(data: string): boolean;
|
|
80
|
+
scrollToTop(): void;
|
|
81
|
+
scrollToBottom(): void;
|
|
82
|
+
/** Whether an anchor identity has successfully been applied to the viewport. */
|
|
83
|
+
hasAnchored(id: string): boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Translate a 0-based frame mouse point into the logical, scrolled body.
|
|
86
|
+
* Returns undefined for borders, header/footer rows, and unpainted body rows.
|
|
87
|
+
*/
|
|
88
|
+
toContentPoint(frameRow: number, frameCol: number): {
|
|
89
|
+
row: number;
|
|
90
|
+
col: number;
|
|
91
|
+
} | undefined;
|
|
92
|
+
render(width: number): readonly string[];
|
|
93
|
+
}
|