@oh-my-pi/pi-tui 18.4.3 → 18.4.4
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 +36 -0
- package/dist/types/apps/cleanse-board.d.ts +17 -0
- package/dist/types/apps/git/help.d.ts +16 -0
- package/dist/types/apps/git/sidebar.d.ts +18 -0
- package/dist/types/apps/live-visualizer.d.ts +10 -0
- package/dist/types/apps/ps-top.d.ts +15 -0
- package/dist/types/apps/standalone-picker.d.ts +3 -0
- package/dist/types/autocomplete.d.ts +8 -0
- package/dist/types/chat/advisor-message.d.ts +12 -2
- package/dist/types/chat/assistant-message.d.ts +20 -0
- package/dist/types/chat/bash-execution.d.ts +9 -0
- package/dist/types/chat/chat-transcript-builder.d.ts +6 -1
- package/dist/types/chat/collab-prompt-message.d.ts +4 -0
- package/dist/types/chat/compaction-summary-message.d.ts +15 -0
- package/dist/types/chat/eval-execution.d.ts +8 -0
- package/dist/types/chat/execution-shared.d.ts +58 -0
- package/dist/types/chat/late-diagnostics-message.d.ts +15 -1
- package/dist/types/chat/read-tool-group.d.ts +15 -0
- package/dist/types/chat/skill-message.d.ts +9 -0
- package/dist/types/chat/stripped-tool-calls-placeholder.d.ts +3 -0
- package/dist/types/chat/todo-reminder.d.ts +4 -1
- package/dist/types/chat/tool-execution.d.ts +25 -1
- package/dist/types/chat/transcript-actions.d.ts +37 -0
- package/dist/types/chat/transcript-entry.d.ts +3 -1
- package/dist/types/chat/user-message.d.ts +25 -0
- package/dist/types/chrome/collab-qrcode.d.ts +7 -0
- package/dist/types/chrome/context-thresholds.d.ts +11 -0
- package/dist/types/chrome/countdown-timer.d.ts +9 -3
- package/dist/types/chrome/diff.d.ts +12 -0
- package/dist/types/chrome/dynamic-border.d.ts +3 -0
- package/dist/types/chrome/format.d.ts +6 -0
- package/dist/types/chrome/message-divider.d.ts +13 -0
- package/dist/types/chrome/message-frame.d.ts +10 -0
- package/dist/types/chrome/message-notice.d.ts +23 -0
- package/dist/types/chrome/overlay-box.d.ts +11 -2
- package/dist/types/chrome/qrcode.d.ts +7 -0
- package/dist/types/chrome/segment-track.d.ts +7 -0
- package/dist/types/chrome/selector-helpers.d.ts +0 -6
- package/dist/types/chrome/status-notice.d.ts +14 -0
- package/dist/types/chrome/streaming-panel.d.ts +3 -0
- package/dist/types/chrome/tool-activity.d.ts +3 -0
- package/dist/types/chrome/transcript-container.d.ts +13 -0
- package/dist/types/chrome/transcript-status.d.ts +15 -3
- package/dist/types/components/box.d.ts +7 -0
- package/dist/types/components/disclosure.d.ts +9 -0
- package/dist/types/components/editor.d.ts +37 -0
- package/dist/types/components/form.d.ts +14 -0
- package/dist/types/components/image.d.ts +7 -0
- package/dist/types/components/input.d.ts +20 -1
- package/dist/types/components/key-value-list.d.ts +3 -0
- package/dist/types/components/layout/geometry.d.ts +16 -0
- package/dist/types/components/layout/row.d.ts +7 -0
- package/dist/types/components/layout/split-pane.d.ts +8 -0
- package/dist/types/components/layout/stack.d.ts +6 -0
- package/dist/types/components/loader.d.ts +48 -0
- package/dist/types/components/markdown.d.ts +8 -0
- package/dist/types/components/metric.d.ts +7 -0
- package/dist/types/components/progress-bar.d.ts +3 -0
- package/dist/types/components/scroll-view.d.ts +6 -0
- package/dist/types/components/section.d.ts +3 -0
- package/dist/types/components/select-list.d.ts +33 -0
- package/dist/types/components/settings-list.d.ts +68 -0
- package/dist/types/components/spacer.d.ts +4 -0
- package/dist/types/components/tab-bar.d.ts +9 -0
- package/dist/types/components/table.d.ts +7 -0
- package/dist/types/components/text.d.ts +6 -0
- package/dist/types/components/tree-view.d.ts +9 -0
- package/dist/types/components/truncated-text.d.ts +3 -0
- package/dist/types/components/wizard-step.d.ts +6 -0
- package/dist/types/hotkeys-markdown.d.ts +24 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/latex-block.d.ts +7 -0
- package/dist/types/native/apply.d.ts +39 -0
- package/dist/types/native/backend.d.ts +94 -0
- package/dist/types/native/blobs.d.ts +29 -0
- package/dist/types/native/describe.d.ts +56 -0
- package/dist/types/native/encode.d.ts +50 -0
- package/dist/types/native/icons.d.ts +18 -0
- package/dist/types/native/memo.d.ts +27 -0
- package/dist/types/native/node.d.ts +107 -0
- package/dist/types/native/overlay.d.ts +64 -0
- package/dist/types/native/picker.d.ts +124 -0
- package/dist/types/native/reconcile.d.ts +41 -0
- package/dist/types/native/settle.d.ts +11 -0
- package/dist/types/native/spans.d.ts +21 -0
- package/dist/types/native/state.d.ts +6 -0
- package/dist/types/native/tone.d.ts +24 -0
- package/dist/types/overlays/advisor-config.d.ts +20 -0
- package/dist/types/overlays/agent-hub-renderer.d.ts +27 -11
- package/dist/types/overlays/agent-hub.d.ts +10 -0
- package/dist/types/overlays/agent-transcript-viewer.d.ts +7 -0
- package/dist/types/overlays/agents-hub.d.ts +8 -0
- package/dist/types/overlays/annotation-overlay.d.ts +3 -0
- package/dist/types/overlays/ask-dialog.d.ts +23 -0
- package/dist/types/overlays/bordered-loader.d.ts +3 -0
- package/dist/types/overlays/btw-history-panel.d.ts +9 -0
- package/dist/types/overlays/btw-panel.d.ts +3 -0
- package/dist/types/overlays/cleanse-panel.d.ts +5 -2
- package/dist/types/overlays/composer-shape-preview.d.ts +7 -1
- package/dist/types/overlays/copy-selector.d.ts +38 -0
- package/dist/types/overlays/error-banner.d.ts +9 -0
- package/dist/types/overlays/extensions/extension-list.d.ts +1 -0
- package/dist/types/overlays/history-search.d.ts +18 -0
- package/dist/types/overlays/hook-editor.d.ts +28 -1
- package/dist/types/overlays/hook-input.d.ts +3 -0
- package/dist/types/overlays/hook-selector.d.ts +10 -0
- package/dist/types/overlays/hub-frame.d.ts +18 -0
- package/dist/types/overlays/jobs-panel.d.ts +24 -0
- package/dist/types/overlays/login-dialog.d.ts +10 -0
- package/dist/types/overlays/logout-account-selector.d.ts +4 -0
- package/dist/types/overlays/mcp-add-wizard.d.ts +4 -0
- package/dist/types/overlays/model-browser.d.ts +69 -0
- package/dist/types/overlays/model-hub.d.ts +7 -0
- package/dist/types/overlays/model-picker.d.ts +7 -0
- package/dist/types/overlays/move-overlay.d.ts +3 -0
- package/dist/types/overlays/oauth-selector.d.ts +4 -0
- package/dist/types/overlays/omfg-panel.d.ts +3 -0
- package/dist/types/overlays/pause-screen.d.ts +12 -0
- package/dist/types/overlays/plan-review-overlay.d.ts +5 -0
- package/dist/types/overlays/plan-save-overlay.d.ts +10 -0
- package/dist/types/overlays/plugin-selector.d.ts +4 -0
- package/dist/types/overlays/plugin-settings.d.ts +30 -0
- package/dist/types/overlays/queue-mode-selector.d.ts +4 -0
- package/dist/types/overlays/reset-usage-selector.d.ts +8 -0
- package/dist/types/overlays/rewind-selector.d.ts +5 -0
- package/dist/types/overlays/session-info-overlay.d.ts +19 -1
- package/dist/types/overlays/session-selector.d.ts +64 -1
- package/dist/types/overlays/settings-defs.d.ts +14 -0
- package/dist/types/overlays/settings-selector.d.ts +21 -0
- package/dist/types/overlays/show-images-selector.d.ts +4 -0
- package/dist/types/overlays/snapcompact-shape-preview.d.ts +2 -0
- package/dist/types/overlays/stats-notice.d.ts +8 -0
- package/dist/types/overlays/theme-selector.d.ts +11 -0
- package/dist/types/overlays/thinking-selector.d.ts +4 -0
- package/dist/types/overlays/tree-selector.d.ts +60 -2
- package/dist/types/overlays/usage-dashboard.d.ts +26 -3
- package/dist/types/overlays/usage-row.d.ts +36 -2
- package/dist/types/prompt/attachment-chips.d.ts +8 -0
- package/dist/types/prompt/composer-attachments.d.ts +15 -3
- package/dist/types/prompt/composer.d.ts +18 -1
- package/dist/types/prompt/custom-editor.d.ts +48 -2
- package/dist/types/prompt/editor-top-gap.d.ts +2 -0
- package/dist/types/prompt/macos-spelling.d.ts +6 -0
- package/dist/types/prompt/magic-keywords.d.ts +9 -0
- package/dist/types/prompt/queued-messages.d.ts +23 -0
- package/dist/types/prompt/skill-tokens.d.ts +4 -2
- package/dist/types/prompt/welcome.d.ts +16 -0
- package/dist/types/render/code-cell.d.ts +10 -0
- package/dist/types/render/file-list.d.ts +8 -0
- package/dist/types/render/hyperlink.d.ts +14 -0
- package/dist/types/render/output-block.d.ts +43 -0
- package/dist/types/render/output-pane.d.ts +17 -0
- package/dist/types/render/tool-card.d.ts +8 -0
- package/dist/types/render/tree-list.d.ts +8 -0
- package/dist/types/render/width-aware-text.d.ts +7 -0
- package/dist/types/setup/scenes/outro.d.ts +7 -0
- package/dist/types/setup/scenes/sign-in.d.ts +7 -0
- package/dist/types/setup/scenes/splash.d.ts +8 -0
- package/dist/types/setup/scenes/types.d.ts +6 -1
- package/dist/types/setup/wizard-overlay.d.ts +9 -0
- package/dist/types/status-line/component.d.ts +49 -5
- package/dist/types/status-line/context-usage.d.ts +20 -0
- package/dist/types/status-line/footer.d.ts +8 -0
- package/dist/types/status-line/metrics.d.ts +1 -2
- package/dist/types/status-line/segments.d.ts +10 -1
- package/dist/types/status-line/types.d.ts +40 -1
- package/dist/types/terminal-capabilities.d.ts +1 -1
- package/dist/types/terminal.d.ts +27 -0
- package/dist/types/theme/defaults/index.d.ts +100 -0
- package/dist/types/theme/schema.d.ts +2 -0
- package/dist/types/theme/shimmer.d.ts +8 -0
- package/dist/types/theme/theme-class.d.ts +2 -0
- package/dist/types/theme/theme.d.ts +33 -1
- package/dist/types/tools/ask.d.ts +3 -0
- package/dist/types/tools/ast-edit.d.ts +10 -1
- package/dist/types/tools/ast-grep.d.ts +10 -1
- package/dist/types/tools/autoresearch.d.ts +21 -4
- package/dist/types/tools/bash.d.ts +30 -1
- package/dist/types/tools/cfg-render.d.ts +5 -1
- package/dist/types/tools/debug.d.ts +3 -1
- package/dist/types/tools/default-renderer.d.ts +6 -1
- package/dist/types/tools/edit.d.ts +14 -1
- package/dist/types/tools/eval.d.ts +12 -1
- package/dist/types/tools/fetch.d.ts +16 -1
- package/dist/types/tools/find.d.ts +15 -1
- package/dist/types/tools/github.d.ts +3 -0
- package/dist/types/tools/glob.d.ts +14 -1
- package/dist/types/tools/goal.d.ts +3 -1
- package/dist/types/tools/grep.d.ts +14 -1
- package/dist/types/tools/grouped-file-output.d.ts +58 -0
- package/dist/types/tools/json-tree.d.ts +20 -0
- package/dist/types/tools/lsp.d.ts +3 -10
- package/dist/types/tools/mcp.d.ts +16 -1
- package/dist/types/tools/memory.d.ts +26 -0
- package/dist/types/tools/native-view.d.ts +90 -0
- package/dist/types/tools/proc-render.d.ts +7 -1
- package/dist/types/tools/read.d.ts +23 -1
- package/dist/types/tools/renderer.d.ts +57 -0
- package/dist/types/tools/report-tool-issue.d.ts +3 -0
- package/dist/types/tools/resolve.d.ts +14 -1
- package/dist/types/tools/task.d.ts +3 -0
- package/dist/types/tools/think.d.ts +3 -0
- package/dist/types/tools/todo.d.ts +12 -0
- package/dist/types/tools/vibe.d.ts +3 -1
- package/dist/types/tools/wait.d.ts +3 -0
- package/dist/types/tools/web-search.d.ts +8 -0
- package/dist/types/tools/write.d.ts +14 -1
- package/dist/types/tools/xdev.d.ts +13 -0
- package/dist/types/tui.d.ts +49 -0
- package/package.json +9 -9
- package/src/apps/autoresearch-dashboard.ts +362 -4
- package/src/apps/cleanse-board.ts +219 -1
- package/src/apps/cleanse-picker.ts +9 -1
- package/src/apps/debug/log-viewer.ts +15 -15
- package/src/apps/debug/protocol-probe.ts +2 -20
- package/src/apps/git/avatar.ts +2 -22
- package/src/apps/git/git-tui.ts +406 -59
- package/src/apps/git/help.ts +130 -0
- package/src/apps/git/sidebar.ts +491 -0
- package/src/apps/live-visualizer.ts +65 -0
- package/src/apps/ps-top.ts +448 -17
- package/src/apps/session-picker.ts +1 -0
- package/src/apps/setup-model-picker.ts +5 -1
- package/src/apps/standalone-picker.ts +55 -1
- package/src/autocomplete.ts +44 -1
- package/src/chat/advisor-message.ts +72 -3
- package/src/chat/assistant-message.ts +346 -11
- package/src/chat/background-tan-message.ts +4 -4
- package/src/chat/bash-execution.ts +81 -0
- package/src/chat/cache-invalidation-marker.ts +8 -0
- package/src/chat/chat-transcript-builder.ts +37 -6
- package/src/chat/collab-prompt-message.ts +15 -3
- package/src/chat/compaction-summary-message.ts +74 -1
- package/src/chat/custom-message.ts +3 -1
- package/src/chat/eval-execution.ts +57 -0
- package/src/chat/execution-shared.ts +153 -1
- package/src/chat/hook-message.ts +1 -0
- package/src/chat/late-diagnostics-message.ts +85 -2
- package/src/chat/read-tool-group.ts +341 -1
- package/src/chat/served-model-marker.ts +8 -0
- package/src/chat/skill-message.ts +63 -0
- package/src/chat/stripped-tool-calls-placeholder.ts +18 -10
- package/src/chat/todo-reminder.ts +34 -4
- package/src/chat/tool-execution.ts +385 -10
- package/src/chat/transcript-actions.ts +38 -0
- package/src/chat/transcript-browser.ts +2 -9
- package/src/chat/transcript-entry.ts +10 -1
- package/src/chat/transcript-render-helpers.ts +16 -15
- package/src/chat/ttsr-notification.ts +38 -1
- package/src/chat/user-message.ts +167 -4
- package/src/chrome/collab-qrcode.ts +27 -2
- package/src/chrome/context-thresholds.ts +34 -0
- package/src/chrome/countdown-timer.ts +24 -1
- package/src/chrome/diff.ts +60 -1
- package/src/chrome/dynamic-border.ts +7 -0
- package/src/chrome/format.ts +12 -0
- package/src/chrome/message-divider.ts +33 -1
- package/src/chrome/message-frame.ts +53 -10
- package/src/chrome/message-notice.ts +71 -0
- package/src/chrome/overlay-box.ts +45 -2
- package/src/chrome/qrcode.ts +28 -0
- package/src/chrome/segment-track.ts +26 -0
- package/src/chrome/selector-helpers.ts +1 -17
- package/src/chrome/status-notice.ts +46 -0
- package/src/chrome/streaming-panel.ts +25 -1
- package/src/chrome/tool-activity.ts +20 -0
- package/src/chrome/transcript-container.ts +37 -0
- package/src/chrome/transcript-status.ts +40 -11
- package/src/components/box.ts +51 -0
- package/src/components/disclosure.ts +33 -0
- package/src/components/editor.ts +216 -27
- package/src/components/form.ts +93 -9
- package/src/components/image.ts +30 -0
- package/src/components/input.ts +77 -26
- package/src/components/key-value-list.ts +18 -0
- package/src/components/layout/geometry.ts +44 -0
- package/src/components/layout/row.ts +30 -0
- package/src/components/layout/split-pane.ts +65 -0
- package/src/components/layout/stack.ts +27 -0
- package/src/components/loader.ts +183 -1
- package/src/components/markdown.ts +21 -0
- package/src/components/metric.ts +39 -0
- package/src/components/progress-bar.ts +28 -0
- package/src/components/scroll-view.ts +23 -0
- package/src/components/section.ts +16 -0
- package/src/components/select-list.ts +174 -25
- package/src/components/settings-list.ts +264 -7
- package/src/components/spacer.ts +17 -0
- package/src/components/tab-bar.ts +42 -0
- package/src/components/table.ts +34 -0
- package/src/components/text.ts +23 -0
- package/src/components/tree-view.ts +65 -0
- package/src/components/truncated-text.ts +14 -0
- package/src/components/wizard-step.ts +18 -9
- package/src/debug-server.ts +14 -7
- package/src/hotkeys-markdown.ts +251 -69
- package/src/index.ts +6 -0
- package/src/latex-block.ts +11 -0
- package/src/native/apply.ts +275 -0
- package/src/native/backend.ts +682 -0
- package/src/native/blobs.ts +70 -0
- package/src/native/describe.ts +124 -0
- package/src/native/encode.ts +233 -0
- package/src/native/icons.ts +184 -0
- package/src/native/memo.ts +64 -0
- package/src/native/node.ts +112 -0
- package/src/native/overlay.ts +131 -0
- package/src/native/picker.ts +333 -0
- package/src/native/reconcile.ts +1063 -0
- package/src/native/settle.ts +23 -0
- package/src/native/spans.ts +308 -0
- package/src/native/state.ts +28 -0
- package/src/native/tone.ts +79 -0
- package/src/overlays/advisor-config.ts +420 -0
- package/src/overlays/agent-hub-renderer.ts +155 -18
- package/src/overlays/agent-hub.ts +1037 -44
- package/src/overlays/agent-transcript-viewer.ts +129 -0
- package/src/overlays/agents-hub.ts +688 -53
- package/src/overlays/annotation-overlay.ts +391 -52
- package/src/overlays/ask-dialog.ts +435 -24
- package/src/overlays/bordered-loader.ts +17 -0
- package/src/overlays/btw-history-panel.ts +182 -0
- package/src/overlays/btw-panel.ts +68 -2
- package/src/overlays/cleanse-panel.ts +105 -15
- package/src/overlays/codex-reset-fireworks.ts +65 -5
- package/src/overlays/composer-shape-preview.ts +26 -1
- package/src/overlays/copy-selector.ts +545 -23
- package/src/overlays/error-banner.ts +44 -0
- package/src/overlays/extensions/extension-list.ts +23 -17
- package/src/overlays/history-search.ts +175 -33
- package/src/overlays/hook-editor.ts +113 -6
- package/src/overlays/hook-input.ts +22 -1
- package/src/overlays/hook-selector.ts +311 -22
- package/src/overlays/hub-frame.ts +80 -0
- package/src/overlays/jobs-panel.ts +112 -0
- package/src/overlays/login-dialog.ts +183 -1
- package/src/overlays/logout-account-selector.ts +102 -4
- package/src/overlays/mcp-add-wizard.ts +232 -53
- package/src/overlays/model-browser.ts +681 -22
- package/src/overlays/model-hub.ts +1402 -78
- package/src/overlays/model-picker.ts +175 -1
- package/src/overlays/move-overlay.ts +45 -0
- package/src/overlays/oauth-selector.ts +227 -23
- package/src/overlays/omfg-panel.ts +86 -2
- package/src/overlays/pause-screen.ts +55 -4
- package/src/overlays/plan-review-overlay.ts +352 -0
- package/src/overlays/plan-save-overlay.ts +45 -0
- package/src/overlays/plugin-selector.ts +21 -1
- package/src/overlays/plugin-settings.ts +195 -5
- package/src/overlays/queue-mode-selector.ts +19 -1
- package/src/overlays/reset-usage-selector.ts +110 -40
- package/src/overlays/rewind-selector.ts +458 -44
- package/src/overlays/session-account-selector.ts +1 -1
- package/src/overlays/session-info-overlay.ts +137 -1
- package/src/overlays/session-selector.ts +807 -46
- package/src/overlays/settings-defs.ts +41 -0
- package/src/overlays/settings-selector.ts +583 -23
- package/src/overlays/show-images-selector.ts +18 -1
- package/src/overlays/snapcompact-shape-preview.ts +48 -3
- package/src/overlays/stats-notice.ts +31 -0
- package/src/overlays/theme-selector.ts +31 -1
- package/src/overlays/thinking-selector.ts +22 -1
- package/src/overlays/tree-selector.ts +570 -110
- package/src/overlays/usage-dashboard.ts +587 -12
- package/src/overlays/usage-row.ts +161 -25
- package/src/prompt/attachment-chips.ts +60 -0
- package/src/prompt/composer-attachments.ts +31 -9
- package/src/prompt/composer.ts +55 -2
- package/src/prompt/custom-editor.ts +302 -4
- package/src/prompt/editor-top-gap.ts +8 -0
- package/src/prompt/macos-spelling.ts +24 -9
- package/src/prompt/magic-keywords.ts +22 -1
- package/src/prompt/model-mention-autocomplete.ts +1 -0
- package/src/prompt/queued-messages.ts +101 -0
- package/src/prompt/skill-tokens.ts +5 -3
- package/src/prompt/welcome.ts +213 -6
- package/src/render/code-cell.ts +103 -2
- package/src/render/file-list.ts +29 -0
- package/src/render/hyperlink.ts +32 -0
- package/src/render/output-block.ts +110 -0
- package/src/render/output-pane.ts +37 -0
- package/src/render/tool-card.ts +137 -0
- package/src/render/tree-list.ts +39 -0
- package/src/render/width-aware-text.ts +20 -0
- package/src/setup/scenes/composer.ts +29 -0
- package/src/setup/scenes/glyph.ts +15 -0
- package/src/setup/scenes/model.ts +36 -8
- package/src/setup/scenes/outro.ts +28 -1
- package/src/setup/scenes/sign-in.ts +122 -13
- package/src/setup/scenes/splash.ts +28 -1
- package/src/setup/scenes/theme.ts +88 -3
- package/src/setup/scenes/types.ts +7 -1
- package/src/setup/startup-splash.ts +46 -9
- package/src/setup/wizard-overlay.ts +140 -23
- package/src/status-line/component.ts +398 -16
- package/src/status-line/context-usage.ts +279 -50
- package/src/status-line/footer.ts +94 -1
- package/src/status-line/metrics.ts +3 -6
- package/src/status-line/segments.ts +463 -97
- package/src/status-line/separators.ts +3 -16
- package/src/status-line/types.ts +43 -1
- package/src/terminal-capabilities.ts +7 -0
- package/src/terminal.ts +130 -2
- package/src/theme/defaults/dark-neon-noir.json +100 -0
- package/src/theme/defaults/index.ts +2 -0
- package/src/theme/defaults/light-prism.json +5 -5
- package/src/theme/defaults/onyx.json +62 -62
- package/src/theme/schema.ts +15 -0
- package/src/theme/shimmer.ts +33 -0
- package/src/theme/theme-class.ts +24 -19
- package/src/theme/theme.ts +111 -9
- package/src/tools/ask.ts +157 -1
- package/src/tools/ast-edit.ts +174 -1
- package/src/tools/ast-grep.ts +82 -2
- package/src/tools/autoresearch.ts +149 -1
- package/src/tools/bash.ts +180 -49
- package/src/tools/cfg-render.ts +66 -1
- package/src/tools/debug.ts +78 -1
- package/src/tools/default-renderer.ts +35 -1
- package/src/tools/edit.ts +247 -2
- package/src/tools/eval.ts +257 -1
- package/src/tools/fetch.ts +102 -3
- package/src/tools/find.ts +127 -1
- package/src/tools/github.ts +119 -10
- package/src/tools/glob.ts +116 -1
- package/src/tools/goal.ts +56 -1
- package/src/tools/grep.ts +83 -2
- package/src/tools/grouped-file-output.ts +205 -0
- package/src/tools/json-tree.ts +116 -1
- package/src/tools/lsp.ts +318 -1
- package/src/tools/mcp.ts +80 -1
- package/src/tools/memory.ts +93 -11
- package/src/tools/native-view.ts +292 -0
- package/src/tools/proc-render.ts +221 -1
- package/src/tools/read.ts +199 -4
- package/src/tools/renderer.ts +61 -0
- package/src/tools/report-tool-issue.ts +7 -1
- package/src/tools/resolve.ts +63 -1
- package/src/tools/task.ts +406 -4
- package/src/tools/think.ts +19 -1
- package/src/tools/todo.ts +89 -0
- package/src/tools/vibe.ts +230 -2
- package/src/tools/wait.ts +181 -1
- package/src/tools/web-search.ts +113 -1
- package/src/tools/write.ts +144 -5
- package/src/tools/xdev.ts +64 -1
- package/src/tui.ts +294 -3
package/src/tools/debug.ts
CHANGED
|
@@ -11,7 +11,11 @@ import {
|
|
|
11
11
|
TRUNCATE_LENGTHS,
|
|
12
12
|
truncateToWidth,
|
|
13
13
|
} from "../render/render-utils";
|
|
14
|
-
import type { RenderResultOptions, ToolRenderer } from "./renderer";
|
|
14
|
+
import type { NativeToolView, RenderResultOptions, ToolRenderer, ToolRenderResult } from "./renderer";
|
|
15
|
+
import { ansi, kv } from "../native/describe";
|
|
16
|
+
import type { NativeChild } from "../native/node";
|
|
17
|
+
import { OwnerMemo } from "../native/memo";
|
|
18
|
+
import { errorView, noteText, resultText, toolHead } from "./native-view";
|
|
15
19
|
|
|
16
20
|
/** Display fields captured from a debugger session. */
|
|
17
21
|
export interface DebugSessionSnapshot {
|
|
@@ -115,6 +119,68 @@ function summarizeDebugCall(args: DebugRenderArgs): string {
|
|
|
115
119
|
return action;
|
|
116
120
|
}
|
|
117
121
|
|
|
122
|
+
/** Untruncated `[action, target]` for native heads; mirrors {@link summarizeDebugCall}'s field precedence. */
|
|
123
|
+
function debugCallParts(args: DebugRenderArgs | undefined, fallbackAction: string): [string, string | undefined] {
|
|
124
|
+
const action = (args?.action ?? fallbackAction).replaceAll("_", " ");
|
|
125
|
+
if (!args) return [action, undefined];
|
|
126
|
+
const target =
|
|
127
|
+
args.program ||
|
|
128
|
+
(args.file && args.line !== undefined ? `${args.file}:${args.line}` : undefined) ||
|
|
129
|
+
args.function ||
|
|
130
|
+
args.expression ||
|
|
131
|
+
args.command ||
|
|
132
|
+
args.memory_reference ||
|
|
133
|
+
args.instruction_reference ||
|
|
134
|
+
args.data_id ||
|
|
135
|
+
args.name ||
|
|
136
|
+
undefined;
|
|
137
|
+
return [action, target];
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
function describeDebugResult(
|
|
141
|
+
result: ToolRenderResult<DebugToolDetails>,
|
|
142
|
+
args: DebugRenderArgs | undefined,
|
|
143
|
+
): NativeToolView {
|
|
144
|
+
const [action, target] = debugCallParts(args, result.details?.action ?? "debug");
|
|
145
|
+
const output = resultText(result);
|
|
146
|
+
if (result.isError) return errorView("Debug", output || "Debug failed", action, target);
|
|
147
|
+
const snapshot = result.details?.snapshot;
|
|
148
|
+
const body: NativeChild[] = [];
|
|
149
|
+
let sessionRows = 0;
|
|
150
|
+
if (snapshot) {
|
|
151
|
+
const location = formatLocation(snapshot);
|
|
152
|
+
const rows: [string, string | undefined][] = [
|
|
153
|
+
["Session", snapshot.id],
|
|
154
|
+
["Adapter", snapshot.adapter],
|
|
155
|
+
["Status", snapshot.status],
|
|
156
|
+
["CWD", snapshot.cwd],
|
|
157
|
+
["Program", snapshot.program],
|
|
158
|
+
["Stop reason", snapshot.stopReason],
|
|
159
|
+
["Frame", snapshot.frameName],
|
|
160
|
+
["Instruction pointer", snapshot.instructionPointerReference],
|
|
161
|
+
["Location", location ?? undefined],
|
|
162
|
+
[
|
|
163
|
+
"Configuration",
|
|
164
|
+
snapshot.needsConfigurationDone ? "pending configurationDone; set breakpoints, then continue." : undefined,
|
|
165
|
+
],
|
|
166
|
+
["Exit code", snapshot.exitCode !== undefined ? String(snapshot.exitCode) : undefined],
|
|
167
|
+
];
|
|
168
|
+
const grid = kv(rows);
|
|
169
|
+
if (grid) {
|
|
170
|
+
body.push(grid);
|
|
171
|
+
sessionRows = rows.filter(([, value]) => value).length;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
body.push(output ? ansi(output) : noteText("No output"));
|
|
175
|
+
return {
|
|
176
|
+
head: toolHead("Debug", action, target),
|
|
177
|
+
body,
|
|
178
|
+
preview: { lines: sessionRows + PREVIEW_LIMITS.COLLAPSED_LINES },
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
const debugResultMemo = new OwnerMemo<NativeToolView | undefined>();
|
|
183
|
+
|
|
118
184
|
/** Renders debugger calls and captured execution snapshots. */
|
|
119
185
|
export const debugToolRenderer = {
|
|
120
186
|
animatedPartialResult: true,
|
|
@@ -162,6 +228,17 @@ export const debugToolRenderer = {
|
|
|
162
228
|
};
|
|
163
229
|
});
|
|
164
230
|
},
|
|
231
|
+
describeCall(args: DebugRenderArgs): NativeToolView {
|
|
232
|
+
const [action, target] = debugCallParts(args, "request");
|
|
233
|
+
return { head: toolHead("Debug", action, target) };
|
|
234
|
+
},
|
|
235
|
+
describeResult(
|
|
236
|
+
result: ToolRenderResult<DebugToolDetails>,
|
|
237
|
+
_options: RenderResultOptions,
|
|
238
|
+
args?: DebugRenderArgs,
|
|
239
|
+
): NativeToolView | undefined {
|
|
240
|
+
return debugResultMemo.get(result, [], () => describeDebugResult(result, args));
|
|
241
|
+
},
|
|
165
242
|
mergeCallAndResult: true,
|
|
166
243
|
inline: true,
|
|
167
244
|
} satisfies ToolRenderer<DebugRenderArgs, DebugToolDetails>;
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import type { Component } from "../index";
|
|
2
2
|
import { isRecord } from "@oh-my-pi/pi-utils";
|
|
3
|
-
import type { RenderResultOptions } from "./renderer";
|
|
3
|
+
import type { NativeToolHead, NativeToolView, RenderResultOptions } from "./renderer";
|
|
4
|
+
import { ansi } from "../native/describe";
|
|
5
|
+
import { noteText } from "./native-view";
|
|
4
6
|
import type { Theme } from "../theme/theme";
|
|
5
7
|
import { formatOutputPaneLines, styleToolOutputLine } from "../render/output-pane";
|
|
6
8
|
import { renderStatusLine, type StatusLineOptions } from "../render/status-line";
|
|
7
9
|
import { plainToolCard, type ToolCardPhase } from "../render/tool-card";
|
|
8
10
|
import { truncateToWidth } from "../render/render-utils";
|
|
9
11
|
import {
|
|
12
|
+
describeJsonTree,
|
|
10
13
|
formatArgsInline,
|
|
11
14
|
JSON_TREE_MAX_DEPTH_COLLAPSED,
|
|
12
15
|
JSON_TREE_MAX_DEPTH_EXPANDED,
|
|
@@ -159,6 +162,37 @@ export function formatDefaultToolExecution(
|
|
|
159
162
|
return [renderStatusLine(snapshot.status, uiTheme), ...snapshot.body].join("\n");
|
|
160
163
|
}
|
|
161
164
|
|
|
165
|
+
/** Inline args summary budget in characters (a data cap, not a width). */
|
|
166
|
+
const NATIVE_ARGS_SUMMARY_CHARS = 160;
|
|
167
|
+
/** Result text kept for the native card body. */
|
|
168
|
+
const NATIVE_RESULT_MAX_CHARS = 64 * 1024;
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* TSP view of the generic fallback card: the tool label with a one-line args
|
|
172
|
+
* summary as the head target; the result as a JSON tree or raw `ansi` output.
|
|
173
|
+
*/
|
|
174
|
+
export function describeDefaultToolExecution(input: DefaultToolRenderInput): NativeToolView {
|
|
175
|
+
const { result } = input;
|
|
176
|
+
const args = isRecord(input.args) ? input.args : undefined;
|
|
177
|
+
const summary =
|
|
178
|
+
args && Object.keys(args).length > 0
|
|
179
|
+
? formatArgsInline(args, NATIVE_ARGS_SUMMARY_CHARS, { characterBudget: true })
|
|
180
|
+
: undefined;
|
|
181
|
+
const tool: NativeToolHead = { title: input.label, target: summary || undefined, targetKind: "text" };
|
|
182
|
+
if (!result) return { tool };
|
|
183
|
+
const output = result.output.trimEnd().slice(0, NATIVE_RESULT_MAX_CHARS);
|
|
184
|
+
const tone = result.skipped ? "info" : result.isError ? "error" : undefined;
|
|
185
|
+
if (!output) return { tool, tone, body: [noteText("(no output)")] };
|
|
186
|
+
if (output.startsWith("{") || output.startsWith("[")) {
|
|
187
|
+
try {
|
|
188
|
+
return { tool, tone, body: [describeJsonTree(JSON.parse(output))] };
|
|
189
|
+
} catch {
|
|
190
|
+
// Not JSON: shown as raw output below.
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return { tool, tone, body: [ansi(output)] };
|
|
194
|
+
}
|
|
195
|
+
|
|
162
196
|
/** Render the generic fallback as the state-tinted card used by direct custom tools. */
|
|
163
197
|
export function renderDefaultToolExecution(input: DefaultToolRenderInput, uiTheme: Theme): Component {
|
|
164
198
|
return plainToolCard(
|
package/src/tools/edit.ts
CHANGED
|
@@ -6,9 +6,22 @@ import { type EditInspection, editInspect } from "@oh-my-pi/pi-natives";
|
|
|
6
6
|
import type { Component } from "../tui";
|
|
7
7
|
import { sliceWithWidth, visibleWidth, wrapTextWithAnsi } from "../utils";
|
|
8
8
|
import { sanitizeText } from "@oh-my-pi/pi-utils";
|
|
9
|
-
import type { RenderResultOptions, ToolRenderer } from "./renderer";
|
|
9
|
+
import type { NativeToolHead, NativeToolView, RenderResultOptions, ToolRenderer } from "./renderer";
|
|
10
|
+
import { code, compact, node, span } from "../native/describe";
|
|
11
|
+
import type { NativeChild, NativeNode } from "../native/node";
|
|
12
|
+
import {
|
|
13
|
+
diagnosticsBadge,
|
|
14
|
+
diagnosticsSection,
|
|
15
|
+
diffStatsMeta,
|
|
16
|
+
displayPath,
|
|
17
|
+
errorText,
|
|
18
|
+
fileDiffSection,
|
|
19
|
+
fileHref,
|
|
20
|
+
noteText,
|
|
21
|
+
resultText,
|
|
22
|
+
} from "./native-view";
|
|
10
23
|
import type { FileDiagnosticsResult } from "./lsp";
|
|
11
|
-
import { renderDiff as renderDiffColored } from "../chrome/diff";
|
|
24
|
+
import { nativeDiff, renderDiff as renderDiffColored } from "../chrome/diff";
|
|
12
25
|
import { getLanguageFromPath } from "../lang-from-path";
|
|
13
26
|
import type { Theme } from "../theme/theme";
|
|
14
27
|
import type { OutputMeta } from "./output-meta";
|
|
@@ -1111,6 +1124,116 @@ export const editToolRenderer = {
|
|
|
1111
1124
|
});
|
|
1112
1125
|
},
|
|
1113
1126
|
|
|
1127
|
+
describeCall(
|
|
1128
|
+
args: EditRenderArgs,
|
|
1129
|
+
options: RenderResultOptions & { renderContext?: EditRenderContext },
|
|
1130
|
+
): NativeToolView {
|
|
1131
|
+
const renderContext = options.renderContext;
|
|
1132
|
+
const { rawPath, rename, op, fileCount, applyPatchError } = resolveEditCallFacts(
|
|
1133
|
+
args,
|
|
1134
|
+
options.isPartial,
|
|
1135
|
+
renderContext?.editMode,
|
|
1136
|
+
);
|
|
1137
|
+
const body: NativeChild[] = [];
|
|
1138
|
+
let tool: NativeToolHead;
|
|
1139
|
+
const multi = renderContext?.perFileDiffPreview;
|
|
1140
|
+
if (multi && multi.length > 1 && multi.some(p => p.diff || p.error)) {
|
|
1141
|
+
let added = 0;
|
|
1142
|
+
let removed = 0;
|
|
1143
|
+
for (const preview of multi) {
|
|
1144
|
+
const stats = preview.diff ? getDiffStats(preview.diff) : undefined;
|
|
1145
|
+
added += stats?.added ?? 0;
|
|
1146
|
+
removed += stats?.removed ?? 0;
|
|
1147
|
+
body.push(
|
|
1148
|
+
fileDiffSection(
|
|
1149
|
+
{ path: preview.path, added: stats?.added, removed: stats?.removed },
|
|
1150
|
+
[preview.error ? errorText(preview.error) : editDiff(preview.diff ?? "", preview.path)],
|
|
1151
|
+
{ role: "omp.tool.edit.file", tone: preview.error ? "error" : undefined },
|
|
1152
|
+
),
|
|
1153
|
+
);
|
|
1154
|
+
}
|
|
1155
|
+
tool = editToolHead({ op, files: Math.max(fileCount, multi.length), added, removed });
|
|
1156
|
+
} else {
|
|
1157
|
+
let diffText: string | undefined;
|
|
1158
|
+
let firstChangedLine: number | undefined;
|
|
1159
|
+
if (args.previewDiff || (args.diff && args.op)) {
|
|
1160
|
+
diffText = args.previewDiff ?? args.diff ?? "";
|
|
1161
|
+
body.push(editDiff(diffText, rawPath));
|
|
1162
|
+
} else if (args.diff || args.newText || args.patch) {
|
|
1163
|
+
body.push(code(args.diff ?? args.newText ?? args.patch ?? "", { lang: getLanguageFromPath(rawPath) }));
|
|
1164
|
+
} else if (renderContext?.editDiffPreview) {
|
|
1165
|
+
const preview = renderContext.editDiffPreview;
|
|
1166
|
+
if ("error" in preview && preview.error) body.push(errorText(preview.error));
|
|
1167
|
+
else if (preview.diff) {
|
|
1168
|
+
diffText = preview.diff;
|
|
1169
|
+
firstChangedLine = preview.firstChangedLine;
|
|
1170
|
+
body.push(editDiff(preview.diff, rawPath));
|
|
1171
|
+
}
|
|
1172
|
+
}
|
|
1173
|
+
const stats = diffText ? getDiffStats(diffText) : undefined;
|
|
1174
|
+
tool = editToolHead({
|
|
1175
|
+
op,
|
|
1176
|
+
path: rawPath,
|
|
1177
|
+
files: fileCount,
|
|
1178
|
+
line: firstChangedLine,
|
|
1179
|
+
rename,
|
|
1180
|
+
added: stats?.added ?? 0,
|
|
1181
|
+
removed: stats?.removed ?? 0,
|
|
1182
|
+
});
|
|
1183
|
+
}
|
|
1184
|
+
if (applyPatchError) body.push(errorText(applyPatchError));
|
|
1185
|
+
return { tool, body, tone: applyPatchError ? "error" : undefined };
|
|
1186
|
+
},
|
|
1187
|
+
|
|
1188
|
+
describeResult(
|
|
1189
|
+
result: { content: Array<{ type: string; text?: string }>; details?: EditToolDetails; isError?: boolean },
|
|
1190
|
+
options: RenderResultOptions & { renderContext?: EditRenderContext },
|
|
1191
|
+
args?: EditRenderArgs,
|
|
1192
|
+
): NativeToolView {
|
|
1193
|
+
const edits = Array.isArray(args?.edits) ? args.edits : undefined;
|
|
1194
|
+
const perFileResults = result.details?.perFileResults;
|
|
1195
|
+
const totalFiles = edits ? countEditFiles(edits) : 0;
|
|
1196
|
+
if (perFileResults && (perFileResults.length > 1 || totalFiles > 1)) {
|
|
1197
|
+
const remaining = Math.max(0, totalFiles - perFileResults.length);
|
|
1198
|
+
let added = 0;
|
|
1199
|
+
let removed = 0;
|
|
1200
|
+
// Files are borderless sections inside the one tool frame.
|
|
1201
|
+
const body: NativeChild[] = perFileResults.map(fileResult => {
|
|
1202
|
+
const file = editFileParts({ content: [], details: fileResult, isError: fileResult.isError }, options);
|
|
1203
|
+
added += file.added;
|
|
1204
|
+
removed += file.removed;
|
|
1205
|
+
return fileDiffSection(file, file.body, {
|
|
1206
|
+
role: "omp.tool.edit.file",
|
|
1207
|
+
tone: file.isError ? "error" : undefined,
|
|
1208
|
+
});
|
|
1209
|
+
});
|
|
1210
|
+
if (remaining > 0) {
|
|
1211
|
+
body.push(
|
|
1212
|
+
node("spinner", {
|
|
1213
|
+
label: [span(`${remaining} more file${remaining > 1 ? "s" : ""} pending…`, "muted")],
|
|
1214
|
+
}),
|
|
1215
|
+
);
|
|
1216
|
+
}
|
|
1217
|
+
const failed = perFileResults.some(file => file.isError);
|
|
1218
|
+
return {
|
|
1219
|
+
tool: editToolHead({
|
|
1220
|
+
files: Math.max(totalFiles, perFileResults.length),
|
|
1221
|
+
added,
|
|
1222
|
+
removed,
|
|
1223
|
+
diagnostics: perFileResults.map(file => file.diagnostics),
|
|
1224
|
+
}),
|
|
1225
|
+
body,
|
|
1226
|
+
tone: failed ? "error" : undefined,
|
|
1227
|
+
};
|
|
1228
|
+
}
|
|
1229
|
+
const file = editFileParts(result, options, args);
|
|
1230
|
+
return {
|
|
1231
|
+
tool: editToolHead({ ...file, href: fileHref(file.resolvedPath), diagnostics: [file.fileDiagnostics] }),
|
|
1232
|
+
body: file.body,
|
|
1233
|
+
tone: file.isError ? "error" : undefined,
|
|
1234
|
+
};
|
|
1235
|
+
},
|
|
1236
|
+
|
|
1114
1237
|
renderResult(
|
|
1115
1238
|
result: { content: Array<{ type: string; text?: string }>; details?: EditToolDetails; isError?: boolean },
|
|
1116
1239
|
options: RenderResultOptions & { renderContext?: EditRenderContext },
|
|
@@ -1127,6 +1250,128 @@ export const editToolRenderer = {
|
|
|
1127
1250
|
},
|
|
1128
1251
|
} satisfies ToolRenderer<EditRenderArgs, EditToolDetails>;
|
|
1129
1252
|
|
|
1253
|
+
/** Facts behind a native edit head: one file (path, first changed line, rename) or a file count. */
|
|
1254
|
+
interface EditHeadFacts {
|
|
1255
|
+
op?: Operation;
|
|
1256
|
+
path?: string;
|
|
1257
|
+
/** Distinct files in the call; more than one heads the call as `N files`. */
|
|
1258
|
+
files?: number;
|
|
1259
|
+
line?: number;
|
|
1260
|
+
href?: string;
|
|
1261
|
+
rename?: string;
|
|
1262
|
+
added: number;
|
|
1263
|
+
removed: number;
|
|
1264
|
+
diagnostics?: readonly (FileDiagnosticsResult | undefined)[];
|
|
1265
|
+
}
|
|
1266
|
+
|
|
1267
|
+
/**
|
|
1268
|
+
* Native edit head (§7.3): `Edit · path:line · +8 −1 · → new/path` for one
|
|
1269
|
+
* file, `Edit · 3 files · +21 −4` for several; a diagnostics chip when LSP reported.
|
|
1270
|
+
*/
|
|
1271
|
+
function editToolHead(facts: EditHeadFacts): NativeToolHead {
|
|
1272
|
+
const multi = (facts.files ?? 0) > 1;
|
|
1273
|
+
const meta = compact([
|
|
1274
|
+
diffStatsMeta(facts.added, facts.removed),
|
|
1275
|
+
!multi && facts.rename ? `→ ${displayPath(facts.rename)}` : undefined,
|
|
1276
|
+
]);
|
|
1277
|
+
const badge = facts.diagnostics && diagnosticsBadge(facts.diagnostics);
|
|
1278
|
+
const target = multi
|
|
1279
|
+
? `${facts.files} files`
|
|
1280
|
+
: facts.path
|
|
1281
|
+
? `${displayPath(facts.path)}${facts.line ? `:${facts.line}` : ""}`
|
|
1282
|
+
: undefined;
|
|
1283
|
+
return {
|
|
1284
|
+
title: multi ? "Edit" : getOperationTitle(facts.op),
|
|
1285
|
+
target,
|
|
1286
|
+
targetKind: multi ? "text" : "path",
|
|
1287
|
+
href: multi ? undefined : facts.href,
|
|
1288
|
+
meta: meta.length > 0 ? meta : undefined,
|
|
1289
|
+
badges: badge ? [badge] : undefined,
|
|
1290
|
+
};
|
|
1291
|
+
}
|
|
1292
|
+
|
|
1293
|
+
/** A file's diff: hunks highlighted by the path's language, no path header (the head or section names the file). */
|
|
1294
|
+
function editDiff(diffText: string, filePath: string): NativeNode {
|
|
1295
|
+
return nativeDiff(diffText, { lang: filePath ? getLanguageFromPath(filePath) : undefined });
|
|
1296
|
+
}
|
|
1297
|
+
|
|
1298
|
+
/** One file's edit result for native views: head facts plus its body (diff or error, then diagnostics). */
|
|
1299
|
+
interface EditFileParts extends Omit<EditHeadFacts, "diagnostics"> {
|
|
1300
|
+
path: string;
|
|
1301
|
+
/** Absolute path the edit resolved to, when known. */
|
|
1302
|
+
resolvedPath?: string;
|
|
1303
|
+
isError: boolean;
|
|
1304
|
+
fileDiagnostics?: FileDiagnosticsResult;
|
|
1305
|
+
body: NativeChild[];
|
|
1306
|
+
}
|
|
1307
|
+
|
|
1308
|
+
function editFileParts(
|
|
1309
|
+
result: {
|
|
1310
|
+
content: Array<{ type: string; text?: string }>;
|
|
1311
|
+
details?: EditToolDetails | EditToolPerFileResult;
|
|
1312
|
+
isError?: boolean;
|
|
1313
|
+
},
|
|
1314
|
+
options: RenderResultOptions & { renderContext?: EditRenderContext },
|
|
1315
|
+
args?: EditRenderArgs,
|
|
1316
|
+
): EditFileParts {
|
|
1317
|
+
const details = result.details;
|
|
1318
|
+
const isError = result.isError ?? (details && "isError" in details ? details.isError : false) ?? false;
|
|
1319
|
+
const firstEdit = Array.isArray(args?.edits) ? args.edits[0] : undefined;
|
|
1320
|
+
const firstHashlineInputEntry = getHashlineInputRenderSummary(args ?? {}, options.renderContext?.editMode)
|
|
1321
|
+
?.entries[0];
|
|
1322
|
+
const moveSource =
|
|
1323
|
+
details && "sourcePath" in details && typeof details.sourcePath === "string" ? details.sourcePath : undefined;
|
|
1324
|
+
const detailPath = details && "path" in details && typeof details.path === "string" ? details.path : undefined;
|
|
1325
|
+
const rawPath =
|
|
1326
|
+
moveSource ??
|
|
1327
|
+
(typeof args?.file_path === "string"
|
|
1328
|
+
? args.file_path
|
|
1329
|
+
: typeof args?.path === "string"
|
|
1330
|
+
? args.path
|
|
1331
|
+
: (filePathFromEditEntry(firstEdit?.path) ?? detailPath ?? firstHashlineInputEntry?.path ?? ""));
|
|
1332
|
+
const op = args?.op || firstEdit?.op || details?.op;
|
|
1333
|
+
const rename =
|
|
1334
|
+
(typeof args?.rename === "string" ? args.rename : undefined) ??
|
|
1335
|
+
filePathFromEditEntry(firstEdit?.rename) ??
|
|
1336
|
+
filePathFromEditEntry(firstEdit?.move) ??
|
|
1337
|
+
(details && "move" in details && typeof details.move === "string" ? details.move : undefined);
|
|
1338
|
+
const editDiffPreview = details ? undefined : options.renderContext?.editDiffPreview;
|
|
1339
|
+
const previewDiff = editDiffPreview && !("error" in editDiffPreview) ? editDiffPreview.diff : undefined;
|
|
1340
|
+
const diffText = isError ? undefined : details?.diff || previewDiff;
|
|
1341
|
+
const firstChangedLine =
|
|
1342
|
+
(editDiffPreview && "firstChangedLine" in editDiffPreview ? editDiffPreview.firstChangedLine : undefined) ||
|
|
1343
|
+
(details && !isError ? details.firstChangedLine : undefined);
|
|
1344
|
+
const shownPath = displayPath(detailPath ?? rawPath);
|
|
1345
|
+
const body: NativeChild[] = [];
|
|
1346
|
+
if (isError) {
|
|
1347
|
+
const displayErrorText = details && "displayErrorText" in details ? details.displayErrorText : undefined;
|
|
1348
|
+
const message =
|
|
1349
|
+
displayErrorText || (details && "errorText" in details && details.errorText) || resultText(result);
|
|
1350
|
+
if (message) body.push(errorText(message));
|
|
1351
|
+
} else if (diffText) {
|
|
1352
|
+
body.push(editDiff(diffText, detailPath ?? rawPath));
|
|
1353
|
+
} else if (editDiffPreview && "error" in editDiffPreview) {
|
|
1354
|
+
body.push(errorText(editDiffPreview.error));
|
|
1355
|
+
} else if (details && op !== "delete" && op !== "create" && !rename) {
|
|
1356
|
+
body.push(noteText(`No changes were made${shownPath ? ` to ${shownPath}` : ""}.`));
|
|
1357
|
+
}
|
|
1358
|
+
const diagnostics = diagnosticsSection(details?.diagnostics);
|
|
1359
|
+
if (diagnostics) body.push(diagnostics);
|
|
1360
|
+
const stats = diffText ? getDiffStats(diffText) : undefined;
|
|
1361
|
+
return {
|
|
1362
|
+
op,
|
|
1363
|
+
path: rawPath,
|
|
1364
|
+
line: firstChangedLine,
|
|
1365
|
+
rename,
|
|
1366
|
+
resolvedPath: detailPath,
|
|
1367
|
+
added: stats?.added ?? 0,
|
|
1368
|
+
removed: stats?.removed ?? 0,
|
|
1369
|
+
isError: Boolean(isError),
|
|
1370
|
+
fileDiagnostics: details?.diagnostics,
|
|
1371
|
+
body,
|
|
1372
|
+
};
|
|
1373
|
+
}
|
|
1374
|
+
|
|
1130
1375
|
function renderSingleFileResult(
|
|
1131
1376
|
result: {
|
|
1132
1377
|
content: Array<{ type: string; text?: string }>;
|