@prometheus-ai/agent 0.5.4 → 0.5.8
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 +30 -0
- package/dist/cli.js +25110 -0
- package/dist/types/async/index.d.ts +0 -1
- package/dist/types/async/job-manager.d.ts +33 -0
- package/dist/types/autolearn/controller.d.ts +25 -0
- package/dist/types/autolearn/managed-skills.d.ts +45 -0
- package/dist/types/autoresearch/state.d.ts +1 -1
- package/dist/types/autoresearch/tools/init-experiment.d.ts +1 -1
- package/dist/types/autoresearch/tools/log-experiment.d.ts +1 -1
- package/dist/types/autoresearch/tools/run-experiment.d.ts +1 -1
- package/dist/types/autoresearch/tools/update-notes.d.ts +1 -1
- package/dist/types/autoresearch/types.d.ts +1 -1
- package/dist/types/capability/context-file.d.ts +0 -13
- package/dist/types/capability/mcp.d.ts +1 -0
- package/dist/types/capability/rule-buckets.d.ts +1 -1
- package/dist/types/capability/rule.d.ts +6 -1
- package/dist/types/capability/types.d.ts +0 -4
- package/dist/types/cli/args.d.ts +23 -3
- package/dist/types/cli/bench-cli.d.ts +78 -0
- package/dist/types/cli/claude-trace-cli.d.ts +7 -0
- package/dist/types/cli/dry-balance-cli.d.ts +16 -2
- package/dist/types/cli/gallery-cli.d.ts +43 -0
- package/dist/types/cli/gallery-fixtures/agentic.d.ts +2 -0
- package/dist/types/cli/gallery-fixtures/codeintel.d.ts +3 -0
- package/dist/types/cli/gallery-fixtures/edit.d.ts +3 -0
- package/dist/types/cli/gallery-fixtures/fs.d.ts +2 -0
- package/dist/types/cli/gallery-fixtures/index.d.ts +4 -0
- package/dist/types/cli/gallery-fixtures/interaction.d.ts +3 -0
- package/dist/types/cli/gallery-fixtures/memory.d.ts +2 -0
- package/dist/types/cli/gallery-fixtures/misc.d.ts +3 -0
- package/dist/types/cli/gallery-fixtures/search.d.ts +3 -0
- package/dist/types/cli/gallery-fixtures/shell.d.ts +3 -0
- package/dist/types/cli/gallery-fixtures/types.d.ts +55 -0
- package/dist/types/cli/gallery-fixtures/web.d.ts +2 -0
- package/dist/types/cli/gallery-screenshot.d.ts +35 -0
- package/dist/types/cli/grievances-cli.d.ts +1 -1
- package/dist/types/cli/list-models.d.ts +6 -14
- package/dist/types/cli/models-cli.d.ts +49 -0
- package/dist/types/cli/session-picker.d.ts +1 -1
- package/dist/types/cli/setup-cli.d.ts +1 -1
- package/dist/types/cli/setup-model-picker.d.ts +14 -0
- package/dist/types/cli/startup-cwd.d.ts +2 -0
- package/dist/types/cli/update-cli.d.ts +13 -40
- package/dist/types/cli/usage-cli.d.ts +81 -0
- package/dist/types/cli-commands.d.ts +12 -0
- package/dist/types/collab/crypto.d.ts +7 -0
- package/dist/types/collab/guest.d.ts +37 -0
- package/dist/types/collab/host.d.ts +29 -0
- package/dist/types/collab/protocol.d.ts +119 -0
- package/dist/types/collab/relay-client.d.ts +22 -0
- package/dist/types/commands/bench.d.ts +29 -0
- package/dist/types/commands/gallery.d.ts +47 -0
- package/dist/types/commands/install.d.ts +1 -1
- package/dist/types/commands/join.d.ts +12 -0
- package/dist/types/commands/launch.d.ts +8 -4
- package/dist/types/commands/models.d.ts +33 -0
- package/dist/types/commands/read.d.ts +1 -1
- package/dist/types/commands/say.d.ts +24 -0
- package/dist/types/commands/token.d.ts +25 -0
- package/dist/types/commands/usage.d.ts +34 -0
- package/dist/types/commit/agentic/tools/analyze-file.d.ts +1 -1
- package/dist/types/commit/agentic/tools/git-file-diff.d.ts +1 -1
- package/dist/types/commit/agentic/tools/git-hunk.d.ts +1 -1
- package/dist/types/commit/agentic/tools/git-overview.d.ts +1 -1
- package/dist/types/commit/agentic/tools/propose-changelog.d.ts +1 -1
- package/dist/types/commit/agentic/tools/propose-commit.d.ts +1 -1
- package/dist/types/commit/agentic/tools/recent-commits.d.ts +1 -1
- package/dist/types/commit/agentic/tools/schemas.d.ts +1 -1
- package/dist/types/commit/agentic/tools/split-commit.d.ts +1 -1
- package/dist/types/commit/analysis/conventional.d.ts +2 -2
- package/dist/types/commit/analysis/summary.d.ts +2 -2
- package/dist/types/commit/changelog/generate.d.ts +3 -3
- package/dist/types/commit/changelog/index.d.ts +2 -2
- package/dist/types/commit/map-reduce/index.d.ts +3 -3
- package/dist/types/commit/map-reduce/map-phase.d.ts +2 -2
- package/dist/types/commit/map-reduce/reduce-phase.d.ts +2 -2
- package/dist/types/commit/model-selection.d.ts +10 -4
- package/dist/types/commit/shared-llm.d.ts +1 -1
- package/dist/types/config/api-key-resolver.d.ts +43 -0
- package/dist/types/config/append-only-context-mode.d.ts +2 -1
- package/dist/types/config/keybindings.d.ts +12 -7
- package/dist/types/config/model-discovery.d.ts +57 -0
- package/dist/types/config/model-equivalence.d.ts +1 -1
- package/dist/types/config/model-registry.d.ts +86 -222
- package/dist/types/config/model-resolver.d.ts +43 -12
- package/dist/types/config/model-roles.d.ts +29 -0
- package/dist/types/config/models-config-schema.d.ts +536 -43
- package/dist/types/config/models-config.d.ts +391 -0
- package/dist/types/config/settings-schema.d.ts +1202 -324
- package/dist/types/config/settings.d.ts +15 -3
- package/dist/types/dap/config.d.ts +14 -1
- package/dist/types/dap/types.d.ts +10 -0
- package/dist/types/debug/log-viewer.d.ts +1 -1
- package/dist/types/debug/raw-sse.d.ts +1 -1
- package/dist/types/debug/report-bundle.d.ts +3 -0
- package/dist/types/debug/terminal-info.d.ts +0 -1
- package/dist/types/discovery/at-imports.d.ts +15 -0
- package/dist/types/discovery/prometheus-extension-roots.d.ts +7 -7
- package/dist/types/edit/diff.d.ts +3 -2
- package/dist/types/edit/file-snapshot-store.d.ts +18 -0
- package/dist/types/edit/hashline/noop-loop-guard.d.ts +72 -0
- package/dist/types/edit/hashline/params.d.ts +1 -1
- package/dist/types/edit/index.d.ts +0 -1
- package/dist/types/edit/modes/apply-patch.d.ts +1 -1
- package/dist/types/edit/modes/patch.d.ts +1 -1
- package/dist/types/edit/modes/replace.d.ts +1 -1
- package/dist/types/edit/renderer.d.ts +1 -0
- package/dist/types/eval/__tests__/completion-bridge.test.d.ts +1 -0
- package/dist/types/eval/__tests__/helpers-local-roots.test.d.ts +1 -0
- package/dist/types/eval/__tests__/js-context-manager.test.d.ts +1 -0
- package/dist/types/eval/backend.d.ts +7 -2
- package/dist/types/eval/bridge-timeout.d.ts +1 -1
- package/dist/types/eval/completion-bridge.d.ts +25 -0
- package/dist/types/eval/idle-timeout.d.ts +1 -5
- package/dist/types/eval/js/context-manager.d.ts +1 -0
- package/dist/types/eval/js/executor.d.ts +2 -0
- package/dist/types/eval/js/index.d.ts +1 -1
- package/dist/types/eval/js/shared/helpers.d.ts +7 -1
- package/dist/types/eval/js/shared/rewrite-imports.d.ts +6 -6
- package/dist/types/eval/js/shared/runtime.d.ts +6 -1
- package/dist/types/eval/js/worker-protocol.d.ts +6 -0
- package/dist/types/eval/py/__tests__/prelude.test.d.ts +1 -0
- package/dist/types/eval/py/executor.d.ts +12 -0
- package/dist/types/eval/py/index.d.ts +1 -1
- package/dist/types/eval/py/kernel.d.ts +6 -1
- package/dist/types/eval/py/runtime.d.ts +9 -0
- package/dist/types/exa/index.d.ts +1 -19
- package/dist/types/exa/mcp-client.d.ts +10 -3
- package/dist/types/exa/types.d.ts +0 -83
- package/dist/types/exec/bash-executor.d.ts +7 -0
- package/dist/types/export/custom-share.d.ts +1 -2
- package/dist/types/export/html/index.d.ts +39 -0
- package/dist/types/export/html/template-js.d.ts +2 -0
- package/dist/types/export/share.d.ts +61 -0
- package/dist/types/export/ttsr.d.ts +14 -0
- package/dist/types/extensibility/custom-commands/types.d.ts +9 -4
- package/dist/types/extensibility/custom-tools/loader.d.ts +30 -4
- package/dist/types/extensibility/custom-tools/types.d.ts +16 -8
- package/dist/types/extensibility/extensions/index.d.ts +1 -1
- package/dist/types/extensibility/extensions/loader.d.ts +20 -1
- package/dist/types/extensibility/extensions/model-api.d.ts +17 -0
- package/dist/types/extensibility/extensions/runner.d.ts +5 -2
- package/dist/types/extensibility/extensions/types.d.ts +72 -11
- package/dist/types/extensibility/hooks/index.d.ts +2 -1
- package/dist/types/extensibility/hooks/loader.d.ts +1 -1
- package/dist/types/extensibility/hooks/types.d.ts +11 -5
- package/dist/types/extensibility/{legacy-pi-ai-shim.d.ts → legacy-package-ai-shim.d.ts} +2 -2
- package/dist/types/extensibility/plugins/{legacy-pi-compat.d.ts → legacy-package-compat.d.ts} +20 -3
- package/dist/types/extensibility/plugins/loader.d.ts +11 -0
- package/dist/types/extensibility/plugins/marketplace-auto-update.d.ts +8 -0
- package/dist/types/extensibility/plugins/types.d.ts +2 -2
- package/dist/types/extensibility/shared-events.d.ts +3 -3
- package/dist/types/extensibility/skills.d.ts +10 -0
- package/dist/types/extensibility/slash-commands.d.ts +1 -11
- package/dist/types/goals/guided-setup.d.ts +18 -0
- package/dist/types/goals/state.d.ts +1 -1
- package/dist/types/goals/tools/goal-tool.d.ts +1 -1
- package/dist/types/hindsight/mental-models.d.ts +17 -8
- package/dist/types/hindsight/transcript.d.ts +1 -1
- package/dist/types/index.d.ts +5 -0
- package/dist/types/internal-urls/artifact-protocol.d.ts +2 -2
- package/dist/types/internal-urls/history-protocol.d.ts +14 -0
- package/dist/types/internal-urls/index.d.ts +1 -0
- package/dist/types/internal-urls/local-protocol.d.ts +14 -2
- package/dist/types/internal-urls/types.d.ts +1 -1
- package/dist/types/irc/bus.d.ts +79 -0
- package/dist/types/lib/xai-http.d.ts +1 -1
- package/dist/types/lsp/client.d.ts +10 -0
- package/dist/types/lsp/config.d.ts +2 -2
- package/dist/types/lsp/edits.d.ts +9 -0
- package/dist/types/lsp/format-options.d.ts +32 -0
- package/dist/types/lsp/index.d.ts +2 -7
- package/dist/types/lsp/types.d.ts +13 -1
- package/dist/types/lsp/utils.d.ts +6 -2
- package/dist/types/main.d.ts +23 -8
- package/dist/types/mcp/json-rpc.d.ts +5 -0
- package/dist/types/mcp/manager.d.ts +8 -0
- package/dist/types/mcp/oauth-discovery.d.ts +6 -1
- package/dist/types/mcp/oauth-flow.d.ts +13 -3
- package/dist/types/mcp/startup-events.d.ts +11 -0
- package/dist/types/mcp/tool-bridge.d.ts +2 -0
- package/dist/types/mcp/transports/stdio.d.ts +13 -0
- package/dist/types/mcp/types.d.ts +2 -0
- package/dist/types/memories/index.d.ts +7 -15
- package/dist/types/memories/storage.d.ts +0 -10
- package/dist/types/memory-backend/index.d.ts +3 -1
- package/dist/types/memory-backend/local-backend.d.ts +4 -3
- package/dist/types/memory-backend/resolve.d.ts +2 -2
- package/dist/types/memory-backend/runtime.d.ts +4 -0
- package/dist/types/memory-backend/types.d.ts +67 -2
- package/dist/types/mnemopi/config.d.ts +31 -1
- package/dist/types/mnemopi/state.d.ts +40 -2
- package/dist/types/modes/acp/acp-agent.d.ts +1 -2
- package/dist/types/modes/components/agent-dashboard.d.ts +17 -1
- package/dist/types/modes/components/agent-hub.d.ts +82 -0
- package/dist/types/modes/components/assistant-message.d.ts +5 -12
- package/dist/types/modes/components/bash-execution.d.ts +1 -1
- package/dist/types/modes/components/chat-block.d.ts +64 -0
- package/dist/types/modes/components/collab-prompt-message.d.ts +10 -0
- package/dist/types/modes/components/compaction-summary-message.d.ts +25 -5
- package/dist/types/modes/components/copy-selector.d.ts +1 -1
- package/dist/types/modes/components/custom-editor.d.ts +49 -2
- package/dist/types/modes/components/custom-editor.test.d.ts +1 -0
- package/dist/types/modes/components/dynamic-border.d.ts +1 -1
- package/dist/types/modes/components/extensions/extension-dashboard.d.ts +1 -1
- package/dist/types/modes/components/extensions/extension-list.d.ts +1 -1
- package/dist/types/modes/components/extensions/inspector-panel.d.ts +1 -1
- package/dist/types/modes/components/footer.d.ts +1 -1
- package/dist/types/modes/components/hook-editor.d.ts +5 -0
- package/dist/types/modes/components/hook-input.d.ts +4 -0
- package/dist/types/modes/components/hook-selector.d.ts +5 -7
- package/dist/types/modes/components/index.d.ts +1 -0
- package/dist/types/modes/components/late-diagnostics-message.d.ts +20 -0
- package/dist/types/modes/components/logout-account-selector.d.ts +8 -0
- package/dist/types/modes/components/mcp-add-wizard.d.ts +2 -1
- package/dist/types/modes/components/model-selector.d.ts +1 -1
- package/dist/types/modes/components/oauth-selector.d.ts +10 -1
- package/dist/types/modes/components/overlay-box.d.ts +17 -0
- package/dist/types/modes/components/plan-review-overlay.d.ts +61 -0
- package/dist/types/modes/components/plan-toc.d.ts +41 -0
- package/dist/types/modes/components/read-tool-group.d.ts +8 -0
- package/dist/types/modes/components/reset-usage-selector.d.ts +12 -0
- package/dist/types/modes/components/segment-track.d.ts +11 -6
- package/dist/types/modes/components/session-selector.d.ts +18 -9
- package/dist/types/modes/components/settings-defs.d.ts +9 -2
- package/dist/types/modes/components/settings-selector.d.ts +17 -4
- package/dist/types/modes/components/snapcompact-shape-preview.d.ts +31 -0
- package/dist/types/modes/components/status-line/component.d.ts +61 -0
- package/dist/types/modes/components/status-line/index.d.ts +1 -0
- package/dist/types/modes/components/status-line/types.d.ts +47 -3
- package/dist/types/modes/components/tiny-title-download-progress.d.ts +1 -1
- package/dist/types/modes/components/tool-execution.d.ts +49 -2
- package/dist/types/modes/components/transcript-container.d.ts +76 -26
- package/dist/types/modes/components/tree-selector.d.ts +2 -2
- package/dist/types/modes/components/ttsr-notification.d.ts +5 -1
- package/dist/types/modes/components/usage-row.d.ts +3 -0
- package/dist/types/modes/components/user-message-selector.d.ts +1 -1
- package/dist/types/modes/components/user-message.d.ts +2 -1
- package/dist/types/modes/components/visual-truncate.d.ts +1 -1
- package/dist/types/modes/components/welcome.d.ts +12 -2
- package/dist/types/modes/controllers/command-controller.d.ts +3 -2
- package/dist/types/modes/controllers/event-controller.d.ts +7 -1
- package/dist/types/modes/controllers/extension-ui-controller.d.ts +0 -1
- package/dist/types/modes/controllers/input-controller.d.ts +25 -3
- package/dist/types/modes/controllers/mcp-command-controller.d.ts +8 -0
- package/dist/types/modes/controllers/selector-controller.d.ts +5 -2
- package/dist/types/modes/controllers/session-focus-controller.d.ts +31 -0
- package/dist/types/modes/controllers/streaming-reveal.d.ts +22 -0
- package/dist/types/modes/controllers/tan-command-controller.d.ts +6 -0
- package/dist/types/modes/controllers/tool-args-reveal.d.ts +43 -0
- package/dist/types/modes/gradient-highlight.d.ts +9 -4
- package/dist/types/modes/image-references.d.ts +14 -3
- package/dist/types/modes/index.d.ts +8 -7
- package/dist/types/modes/interactive-mode.d.ts +92 -16
- package/dist/types/modes/magic-keywords.d.ts +14 -2
- package/dist/types/modes/markdown-prose.d.ts +1 -1
- package/dist/types/modes/oauth-manual-input.d.ts +7 -0
- package/dist/types/modes/rpc/rpc-client.d.ts +48 -2
- package/dist/types/modes/rpc/rpc-mode.d.ts +67 -2
- package/dist/types/modes/rpc/rpc-subagents.d.ts +24 -0
- package/dist/types/modes/rpc/rpc-types.d.ts +113 -1
- package/dist/types/modes/runtime-init.d.ts +4 -0
- package/dist/types/modes/session-observer-registry.d.ts +9 -0
- package/dist/types/modes/setup-version.d.ts +11 -0
- package/dist/types/modes/setup-wizard/index.d.ts +7 -2
- package/dist/types/modes/setup-wizard/lazy.d.ts +2 -0
- package/dist/types/modes/setup-wizard/scenes/sign-in.d.ts +4 -1
- package/dist/types/modes/setup-wizard/scenes/types.d.ts +11 -2
- package/dist/types/modes/setup-wizard/scenes/web-search.d.ts +6 -2
- package/dist/types/modes/setup-wizard/wizard-overlay.d.ts +1 -1
- package/dist/types/modes/theme/theme.d.ts +42 -7
- package/dist/types/modes/types.d.ts +62 -13
- package/dist/types/modes/utils/context-usage.d.ts +6 -1
- package/dist/types/modes/utils/copy-targets.d.ts +21 -1
- package/dist/types/modes/utils/ui-helpers.d.ts +4 -4
- package/dist/types/modes/workflow.d.ts +3 -3
- package/dist/types/plan-mode/approved-plan.d.ts +27 -8
- package/dist/types/plan-mode/plan-protection.d.ts +4 -4
- package/dist/types/registry/agent-lifecycle.d.ts +51 -0
- package/dist/types/registry/agent-registry.d.ts +33 -5
- package/dist/types/sdk.d.ts +46 -4
- package/dist/types/secrets/index.d.ts +1 -1
- package/dist/types/secrets/obfuscator.d.ts +9 -3
- package/dist/types/session/agent-session.d.ts +136 -66
- package/dist/types/session/agent-storage.d.ts +2 -1
- package/dist/types/session/auth-broker-config.d.ts +4 -0
- package/dist/types/session/auth-storage.d.ts +1 -1
- package/dist/types/session/codex-auto-reset.d.ts +111 -0
- package/dist/types/session/indexed-session-storage.d.ts +3 -3
- package/dist/types/session/messages.d.ts +26 -15
- package/dist/types/session/session-context.d.ts +39 -0
- package/dist/types/session/session-entries.d.ts +159 -0
- package/dist/types/session/session-history-format.d.ts +12 -0
- package/dist/types/session/session-listing.d.ts +69 -0
- package/dist/types/session/session-loader.d.ts +16 -0
- package/dist/types/session/session-manager.d.ts +107 -440
- package/dist/types/session/session-migrations.d.ts +12 -0
- package/dist/types/session/session-paths.d.ts +25 -0
- package/dist/types/session/session-persistence.d.ts +8 -0
- package/dist/types/session/session-storage.d.ts +11 -7
- package/dist/types/session/snapcompact-inline.d.ts +145 -0
- package/dist/types/session/snapcompact-savings-journal.d.ts +46 -0
- package/dist/types/session/streaming-output.d.ts +46 -0
- package/dist/types/session/tool-choice-queue.d.ts +6 -6
- package/dist/types/session/yield-queue.d.ts +10 -1
- package/dist/types/slash-commands/acp-builtins.d.ts +16 -0
- package/dist/types/slash-commands/available-commands.d.ts +34 -0
- package/dist/types/slash-commands/builtin-registry.d.ts +10 -0
- package/dist/types/slash-commands/helpers/active-oauth-account.d.ts +14 -0
- package/dist/types/slash-commands/helpers/logout.d.ts +15 -0
- package/dist/types/slash-commands/helpers/reset-usage.d.ts +27 -0
- package/dist/types/slash-commands/helpers/stats-dashboard.d.ts +13 -0
- package/dist/types/slash-commands/types.d.ts +5 -9
- package/dist/types/ssh/connection-manager.d.ts +8 -0
- package/dist/types/stt/asr-client.d.ts +90 -0
- package/dist/types/stt/asr-protocol.d.ts +97 -0
- package/dist/types/stt/asr-worker.d.ts +2 -0
- package/dist/types/stt/downloader.d.ts +38 -0
- package/dist/types/stt/endpointer.d.ts +59 -0
- package/dist/types/stt/index.d.ts +5 -1
- package/dist/types/stt/models.d.ts +120 -0
- package/dist/types/stt/recorder.d.ts +17 -0
- package/dist/types/stt/stt-controller.d.ts +6 -0
- package/dist/types/stt/transcriber.d.ts +5 -7
- package/dist/types/stt/wav.d.ts +29 -0
- package/dist/types/system-prompt.d.ts +9 -1
- package/dist/types/task/commands.d.ts +1 -1
- package/dist/types/task/discovery.d.ts +1 -2
- package/dist/types/task/executor.d.ts +61 -2
- package/dist/types/task/index.d.ts +37 -6
- package/dist/types/task/output-manager.d.ts +0 -7
- package/dist/types/task/parallel.d.ts +2 -2
- package/dist/types/task/prometheus-command.d.ts +2 -2
- package/dist/types/task/render.d.ts +20 -7
- package/dist/types/task/repair-args.d.ts +8 -7
- package/dist/types/task/types.d.ts +109 -52
- package/dist/types/task/worktree.d.ts +2 -0
- package/dist/types/telemetry-export.d.ts +2 -2
- package/dist/types/thinking.d.ts +4 -0
- package/dist/types/tiny/models.d.ts +1 -1
- package/dist/types/tiny/title-client.d.ts +12 -1
- package/dist/types/tiny/title-protocol.d.ts +1 -0
- package/dist/types/tools/archive-reader.d.ts +5 -0
- package/dist/types/tools/ask.d.ts +6 -1
- package/dist/types/tools/ast-edit.d.ts +4 -1
- package/dist/types/tools/ast-grep.d.ts +4 -1
- package/dist/types/tools/bash.d.ts +5 -2
- package/dist/types/tools/browser/attach.d.ts +4 -4
- package/dist/types/tools/browser/cmux/cmux-tab.d.ts +202 -0
- package/dist/types/tools/browser/cmux/rpc.d.ts +70 -0
- package/dist/types/tools/browser/cmux/socket-client.d.ts +19 -0
- package/dist/types/tools/browser/registry.d.ts +17 -3
- package/dist/types/tools/browser/render.d.ts +2 -0
- package/dist/types/tools/browser/tab-protocol.d.ts +2 -0
- package/dist/types/tools/browser/tab-supervisor.d.ts +16 -4
- package/dist/types/tools/browser/tab-worker.d.ts +18 -1
- package/dist/types/tools/browser.d.ts +3 -1
- package/dist/types/tools/checkpoint.d.ts +1 -1
- package/dist/types/tools/conflict-detect.d.ts +16 -0
- package/dist/types/tools/debug.d.ts +1 -1
- package/dist/types/tools/eval-render.d.ts +1 -8
- package/dist/types/tools/eval.d.ts +9 -1
- package/dist/types/tools/fetch.d.ts +17 -8
- package/dist/types/tools/find.d.ts +1 -8
- package/dist/types/tools/gh-cache-invalidation.d.ts +6 -0
- package/dist/types/tools/gh.d.ts +4 -1
- package/dist/types/tools/github-cache.d.ts +19 -0
- package/dist/types/tools/grouped-file-output.d.ts +46 -12
- package/dist/types/tools/image-gen.d.ts +1 -1
- package/dist/types/tools/index.d.ts +89 -8
- package/dist/types/tools/inspect-image.d.ts +1 -1
- package/dist/types/tools/irc.d.ts +79 -39
- package/dist/types/tools/job.d.ts +8 -2
- package/dist/types/tools/learn.d.ts +51 -0
- package/dist/types/tools/manage-skill.d.ts +40 -0
- package/dist/types/tools/memory-edit.d.ts +2 -2
- package/dist/types/tools/memory-recall.d.ts +1 -1
- package/dist/types/tools/memory-reflect.d.ts +1 -1
- package/dist/types/tools/memory-render.d.ts +4 -1
- package/dist/types/tools/memory-retain.d.ts +1 -1
- package/dist/types/tools/path-utils.d.ts +17 -5
- package/dist/types/tools/plan-mode-guard.d.ts +18 -9
- package/dist/types/tools/read.d.ts +3 -2
- package/dist/types/tools/render-mermaid.d.ts +1 -1
- package/dist/types/tools/render-utils.d.ts +47 -27
- package/dist/types/tools/renderers.d.ts +10 -2
- package/dist/types/tools/report-tool-issue.d.ts +6 -1
- package/dist/types/tools/resolve.d.ts +1 -1
- package/dist/types/tools/review.d.ts +1 -1
- package/dist/types/tools/search-tool-bm25.d.ts +1 -1
- package/dist/types/tools/search.d.ts +7 -3
- package/dist/types/tools/sqlite-reader.d.ts +4 -0
- package/dist/types/tools/ssh.d.ts +2 -1
- package/dist/types/tools/todo.d.ts +7 -15
- package/dist/types/tools/tool-result.d.ts +2 -0
- package/dist/types/tools/tool-timeouts.d.ts +1 -1
- package/dist/types/tools/tts.d.ts +26 -1
- package/dist/types/tools/write.d.ts +6 -3
- package/dist/types/tools/yield.d.ts +8 -0
- package/dist/types/tts/downloader.d.ts +20 -0
- package/dist/types/tts/index.d.ts +8 -0
- package/dist/types/tts/models.d.ts +82 -0
- package/dist/types/tts/player.d.ts +32 -0
- package/dist/types/tts/runtime.d.ts +6 -0
- package/dist/types/tts/streaming-player.d.ts +41 -0
- package/dist/types/tts/tts-client.d.ts +93 -0
- package/dist/types/tts/tts-protocol.d.ts +95 -0
- package/dist/types/tts/tts-worker.d.ts +2 -0
- package/dist/types/tts/vocalizer.d.ts +41 -0
- package/dist/types/tts/wav.d.ts +8 -0
- package/dist/types/tui/code-cell.d.ts +0 -2
- package/dist/types/tui/hyperlink.d.ts +13 -7
- package/dist/types/tui/output-block.d.ts +16 -22
- package/dist/types/tui/status-line.d.ts +3 -0
- package/dist/types/utils/block-context.d.ts +35 -0
- package/dist/types/utils/changelog.d.ts +8 -0
- package/dist/types/utils/clipboard.d.ts +4 -3
- package/dist/types/utils/enhanced-paste.d.ts +20 -0
- package/dist/types/utils/file-mentions.d.ts +7 -0
- package/dist/types/utils/git.d.ts +22 -3
- package/dist/types/utils/image-loading.d.ts +30 -1
- package/dist/types/utils/session-color.d.ts +15 -3
- package/dist/types/utils/thinking-display.d.ts +17 -0
- package/dist/types/utils/title-generator.d.ts +3 -2
- package/dist/types/utils/tool-choice.d.ts +8 -0
- package/dist/types/utils/tools-manager.d.ts +2 -1
- package/dist/types/web/kagi.d.ts +2 -2
- package/dist/types/web/parallel.d.ts +3 -0
- package/dist/types/web/scrapers/github.d.ts +22 -0
- package/dist/types/web/scrapers/readthedocs.d.ts +3 -0
- package/dist/types/web/scrapers/types.d.ts +12 -0
- package/dist/types/web/search/index.d.ts +1 -1
- package/dist/types/web/search/providers/anthropic.d.ts +2 -1
- package/dist/types/web/search/providers/base.d.ts +2 -1
- package/dist/types/web/search/providers/brave.d.ts +2 -1
- package/dist/types/web/search/providers/codex.d.ts +2 -1
- package/dist/types/web/search/providers/exa.d.ts +2 -1
- package/dist/types/web/search/providers/gemini.d.ts +10 -6
- package/dist/types/web/search/providers/jina.d.ts +7 -2
- package/dist/types/web/search/providers/kagi.d.ts +7 -2
- package/dist/types/web/search/providers/kimi.d.ts +7 -2
- package/dist/types/web/search/providers/parallel.d.ts +2 -1
- package/dist/types/web/search/providers/perplexity.d.ts +10 -2
- package/dist/types/web/search/providers/searxng.d.ts +2 -1
- package/dist/types/web/search/providers/synthetic.d.ts +7 -3
- package/dist/types/web/search/providers/tavily.d.ts +2 -1
- package/dist/types/web/search/providers/zai.d.ts +2 -1
- package/dist/types/web/search/types.d.ts +1 -1
- package/examples/extensions/api-demo.ts +2 -2
- package/package.json +41 -15
- package/scripts/bench-guard.ts +71 -0
- package/scripts/build-binary.ts +24 -25
- package/scripts/bundle-dist.ts +97 -0
- package/scripts/generate-share-viewer.ts +34 -0
- package/scripts/prometheus +42 -0
- package/scripts/prometheus.ts +20 -0
- package/src/async/index.ts +0 -1
- package/src/async/job-manager.ts +106 -3
- package/src/auto-thinking/classifier.ts +2 -1
- package/src/autolearn/controller.ts +139 -0
- package/src/autolearn/managed-skills.ts +257 -0
- package/src/autoresearch/dashboard.ts +1 -1
- package/src/autoresearch/prompt-setup.md +6 -6
- package/src/autoresearch/prompt.md +6 -6
- package/src/autoresearch/state.ts +1 -1
- package/src/autoresearch/storage.ts +2 -1
- package/src/autoresearch/tools/init-experiment.ts +1 -1
- package/src/autoresearch/tools/log-experiment.ts +1 -1
- package/src/autoresearch/tools/run-experiment.ts +1 -1
- package/src/autoresearch/tools/update-notes.ts +1 -1
- package/src/autoresearch/types.ts +1 -1
- package/src/capability/context-file.ts +0 -14
- package/src/capability/fs.ts +10 -0
- package/src/capability/index.ts +1 -6
- package/src/capability/mcp.ts +1 -0
- package/src/capability/rule-buckets.ts +4 -2
- package/src/capability/rule.ts +10 -1
- package/src/capability/types.ts +0 -4
- package/src/cli/args.ts +66 -13
- package/src/cli/auth-broker-cli.ts +6 -7
- package/src/cli/auth-gateway-cli.ts +8 -9
- package/src/cli/bench-cli.ts +437 -0
- package/src/cli/claude-trace-cli.ts +28 -50
- package/src/cli/completion-gen.ts +28 -28
- package/src/cli/dry-balance-cli.ts +56 -23
- package/src/cli/gallery-cli.ts +231 -0
- package/src/cli/gallery-fixtures/agentic.ts +407 -0
- package/src/cli/gallery-fixtures/codeintel.ts +187 -0
- package/src/cli/gallery-fixtures/edit.ts +194 -0
- package/src/cli/gallery-fixtures/fs.ts +220 -0
- package/src/cli/gallery-fixtures/index.ts +40 -0
- package/src/cli/gallery-fixtures/interaction.ts +49 -0
- package/src/cli/gallery-fixtures/memory.ts +81 -0
- package/src/cli/gallery-fixtures/misc.ts +250 -0
- package/src/cli/gallery-fixtures/search.ts +213 -0
- package/src/cli/gallery-fixtures/shell.ts +167 -0
- package/src/cli/gallery-fixtures/types.ts +57 -0
- package/src/cli/gallery-fixtures/web.ts +158 -0
- package/src/cli/gallery-screenshot.ts +279 -0
- package/src/cli/grievances-cli.ts +1 -1
- package/src/cli/list-models.ts +16 -174
- package/src/cli/models-cli.ts +429 -0
- package/src/cli/session-picker.ts +2 -1
- package/src/cli/setup-cli.ts +148 -47
- package/src/cli/setup-model-picker.ts +43 -0
- package/src/cli/startup-cwd.ts +68 -0
- package/src/cli/update-cli.ts +144 -272
- package/src/cli/usage-cli.ts +774 -0
- package/src/cli-commands.ts +36 -0
- package/src/cli.ts +141 -32
- package/src/collab/crypto.ts +63 -0
- package/src/collab/guest.ts +451 -0
- package/src/collab/host.ts +565 -0
- package/src/collab/protocol.ts +241 -0
- package/src/collab/relay-client.ts +216 -0
- package/src/commands/bench.ts +42 -0
- package/src/commands/complete.ts +1 -1
- package/src/commands/gallery.ts +52 -0
- package/src/commands/install.ts +1 -1
- package/src/commands/join.ts +39 -0
- package/src/commands/launch.ts +8 -4
- package/src/commands/models.ts +61 -0
- package/src/commands/read.ts +6 -3
- package/src/commands/say.ts +102 -0
- package/src/commands/setup.ts +1 -1
- package/src/commands/token.ts +89 -0
- package/src/commands/usage.ts +43 -0
- package/src/commit/agentic/agent.ts +2 -1
- package/src/commit/agentic/tools/analyze-file.ts +42 -20
- package/src/commit/agentic/tools/git-file-diff.ts +1 -1
- package/src/commit/agentic/tools/git-hunk.ts +1 -1
- package/src/commit/agentic/tools/git-overview.ts +1 -1
- package/src/commit/agentic/tools/propose-changelog.ts +1 -1
- package/src/commit/agentic/tools/propose-commit.ts +1 -1
- package/src/commit/agentic/tools/recent-commits.ts +1 -1
- package/src/commit/agentic/tools/schemas.ts +1 -1
- package/src/commit/agentic/tools/split-commit.ts +9 -2
- package/src/commit/analysis/conventional.ts +2 -2
- package/src/commit/analysis/summary.ts +3 -3
- package/src/commit/changelog/generate.ts +3 -3
- package/src/commit/changelog/index.ts +2 -2
- package/src/commit/map-reduce/index.ts +3 -3
- package/src/commit/map-reduce/map-phase.ts +2 -2
- package/src/commit/map-reduce/reduce-phase.ts +2 -2
- package/src/commit/model-selection.ts +35 -12
- package/src/commit/pipeline.ts +4 -4
- package/src/commit/shared-llm.ts +1 -1
- package/src/config/api-key-resolver.ts +67 -0
- package/src/config/append-only-context-mode.ts +6 -12
- package/src/config/keybindings.ts +9 -4
- package/src/config/mcp-schema.json +4 -0
- package/src/config/model-discovery.ts +574 -0
- package/src/config/model-equivalence.ts +5 -4
- package/src/config/model-registry.ts +659 -1093
- package/src/config/model-resolver.ts +374 -174
- package/src/config/model-roles.ts +88 -0
- package/src/config/models-config-schema.ts +61 -9
- package/src/config/models-config.ts +130 -0
- package/src/config/settings-schema.ts +1441 -387
- package/src/config/settings.ts +261 -69
- package/src/dap/client.ts +138 -53
- package/src/dap/config.ts +41 -2
- package/src/dap/defaults.json +1 -0
- package/src/dap/session.ts +263 -161
- package/src/dap/types.ts +10 -0
- package/src/debug/index.ts +50 -60
- package/src/debug/log-viewer.ts +1 -1
- package/src/debug/protocol-probe.ts +1 -1
- package/src/debug/raw-sse-buffer.ts +7 -4
- package/src/debug/raw-sse.ts +1 -1
- package/src/debug/report-bundle.ts +9 -0
- package/src/debug/terminal-info.ts +0 -3
- package/src/discovery/agents-md.ts +25 -21
- package/src/discovery/agents.ts +9 -15
- package/src/discovery/at-imports.ts +273 -0
- package/src/discovery/builtin-rules/index.ts +4 -0
- package/src/discovery/builtin-rules/ts-no-test-timers.md +55 -0
- package/src/discovery/builtin-rules/ts-redundant-clear-guard.md +75 -0
- package/src/discovery/builtin.ts +45 -23
- package/src/discovery/claude-plugins.ts +44 -5
- package/src/discovery/helpers.ts +50 -9
- package/src/discovery/prometheus-extension-roots.ts +10 -10
- package/src/discovery/prometheus-plugins.ts +10 -10
- package/src/edit/diff.ts +191 -4
- package/src/edit/file-snapshot-store.ts +34 -1
- package/src/edit/hashline/block-resolver.ts +20 -1
- package/src/edit/hashline/diff.ts +123 -2
- package/src/edit/hashline/execute.ts +60 -4
- package/src/edit/hashline/filesystem.ts +2 -1
- package/src/edit/hashline/noop-loop-guard.ts +99 -0
- package/src/edit/hashline/params.ts +1 -1
- package/src/edit/index.ts +47 -18
- package/src/edit/modes/apply-patch.ts +1 -1
- package/src/edit/modes/patch.ts +59 -3
- package/src/edit/modes/replace.ts +58 -24
- package/src/edit/notebook.ts +22 -2
- package/src/edit/renderer.ts +315 -151
- package/src/eval/__tests__/agent-bridge.test.ts +105 -39
- package/src/eval/__tests__/budget-bridge.test.ts +1 -1
- package/src/eval/__tests__/completion-bridge.test.ts +412 -0
- package/src/eval/__tests__/helpers-local-roots.test.ts +58 -0
- package/src/eval/__tests__/js-context-manager.test.ts +241 -0
- package/src/eval/__tests__/llm-bridge.test.ts +6 -4
- package/src/eval/__tests__/shared-executors.test.ts +34 -92
- package/src/eval/agent-bridge.ts +39 -23
- package/src/eval/backend.ts +15 -2
- package/src/eval/bridge-timeout.ts +1 -1
- package/src/eval/completion-bridge.ts +203 -0
- package/src/eval/idle-timeout.ts +3 -10
- package/src/eval/js/context-manager.ts +108 -31
- package/src/eval/js/executor.ts +9 -2
- package/src/eval/js/index.ts +7 -3
- package/src/eval/js/shared/helpers.ts +59 -13
- package/src/eval/js/shared/local-module-loader.ts +2 -2
- package/src/eval/js/shared/prelude.txt +167 -30
- package/src/eval/js/shared/rewrite-imports.ts +58 -34
- package/src/eval/js/shared/runtime.ts +24 -16
- package/src/eval/js/tool-bridge.ts +4 -0
- package/src/eval/js/worker-core.ts +1 -0
- package/src/eval/js/worker-entry.ts +6 -0
- package/src/eval/js/worker-protocol.ts +6 -0
- package/src/eval/llm-bridge.ts +2 -1
- package/src/eval/py/__tests__/prelude.test.ts +19 -0
- package/src/eval/py/executor.ts +70 -26
- package/src/eval/py/index.ts +13 -4
- package/src/eval/py/kernel.ts +48 -9
- package/src/eval/py/prelude.py +73 -24
- package/src/eval/py/runner.py +133 -28
- package/src/eval/py/runtime.ts +38 -1
- package/src/exa/index.ts +1 -26
- package/src/exa/mcp-client.ts +10 -10
- package/src/exa/types.ts +0 -97
- package/src/exec/bash-executor.ts +104 -7
- package/src/export/custom-share.ts +1 -1
- package/src/export/html/index.ts +119 -17
- package/src/export/html/share-loader.js +102 -0
- package/src/export/html/template-js.ts +6 -0
- package/src/export/html/template.css +745 -459
- package/src/export/html/template.css.d.ts +2 -0
- package/src/export/html/template.html +6 -3
- package/src/export/html/template.js +277 -891
- package/src/export/html/tool-views.generated.d.ts +2 -0
- package/src/export/html/tool-views.generated.js +38 -0
- package/src/export/share.ts +269 -0
- package/src/export/ttsr.ts +122 -1
- package/src/extensibility/custom-commands/loader.ts +7 -4
- package/src/extensibility/custom-commands/types.ts +9 -4
- package/src/extensibility/custom-tools/loader.ts +51 -23
- package/src/extensibility/custom-tools/types.ts +16 -8
- package/src/extensibility/extensions/get-commands-handler.ts +2 -1
- package/src/extensibility/extensions/index.ts +1 -0
- package/src/extensibility/extensions/loader.ts +70 -20
- package/src/extensibility/extensions/model-api.ts +41 -0
- package/src/extensibility/extensions/runner.ts +12 -2
- package/src/extensibility/extensions/types.ts +83 -11
- package/src/extensibility/extensions/wrapper.ts +41 -5
- package/src/extensibility/hooks/index.ts +2 -1
- package/src/extensibility/hooks/loader.ts +6 -3
- package/src/extensibility/hooks/types.ts +11 -5
- package/src/extensibility/{legacy-pi-ai-shim.ts → legacy-package-ai-shim.ts} +2 -2
- package/src/extensibility/plugins/doctor.ts +1 -2
- package/src/extensibility/plugins/installer.ts +2 -2
- package/src/extensibility/plugins/{legacy-pi-compat.ts → legacy-package-compat.ts} +165 -77
- package/src/extensibility/plugins/loader.ts +34 -23
- package/src/extensibility/plugins/manager.ts +226 -95
- package/src/extensibility/plugins/marketplace-auto-update.ts +49 -0
- package/src/extensibility/plugins/types.ts +3 -3
- package/src/extensibility/shared-events.ts +3 -3
- package/src/extensibility/skills.ts +113 -9
- package/src/extensibility/slash-commands.ts +1 -97
- package/src/goals/guided-setup.ts +133 -0
- package/src/goals/state.ts +1 -1
- package/src/goals/tools/goal-tool.ts +38 -28
- package/src/hindsight/bank.ts +17 -2
- package/src/hindsight/client.ts +27 -2
- package/src/hindsight/mental-models.ts +59 -12
- package/src/hindsight/state.ts +12 -3
- package/src/hindsight/transcript.ts +1 -1
- package/src/index.ts +5 -0
- package/src/internal-urls/artifact-protocol.ts +11 -2
- package/src/internal-urls/docs-index.generated.ts +9 -7
- package/src/internal-urls/history-protocol.ts +113 -0
- package/src/internal-urls/index.ts +1 -0
- package/src/internal-urls/issue-pr-protocol.ts +22 -9
- package/src/internal-urls/local-protocol.ts +42 -7
- package/src/internal-urls/memory-protocol.ts +4 -31
- package/src/internal-urls/router.ts +3 -1
- package/src/internal-urls/types.ts +1 -1
- package/src/irc/bus.ts +303 -0
- package/src/lib/xai-http.ts +3 -3
- package/src/lsp/client.ts +245 -104
- package/src/lsp/clients/biome-client.ts +101 -39
- package/src/lsp/clients/lsp-linter-client.ts +2 -10
- package/src/lsp/config.ts +15 -5
- package/src/lsp/defaults.json +6 -0
- package/src/lsp/edits.ts +143 -95
- package/src/lsp/format-options.ts +119 -0
- package/src/lsp/index.ts +233 -93
- package/src/lsp/render.ts +11 -35
- package/src/lsp/types.ts +13 -1
- package/src/lsp/utils.ts +31 -12
- package/src/main.ts +396 -216
- package/src/mcp/config-writer.ts +7 -3
- package/src/mcp/json-rpc.ts +35 -5
- package/src/mcp/manager.ts +31 -16
- package/src/mcp/oauth-discovery.ts +34 -4
- package/src/mcp/oauth-flow.ts +61 -8
- package/src/mcp/render.ts +7 -1
- package/src/mcp/startup-events.ts +21 -0
- package/src/mcp/tool-bridge.ts +2 -0
- package/src/mcp/transports/stdio.ts +224 -4
- package/src/mcp/types.ts +2 -0
- package/src/memories/index.ts +174 -1128
- package/src/memories/storage.ts +2 -41
- package/src/memory-backend/index.ts +14 -1
- package/src/memory-backend/local-backend.ts +18 -3
- package/src/memory-backend/off-backend.ts +9 -0
- package/src/memory-backend/resolve.ts +4 -6
- package/src/memory-backend/runtime.ts +66 -0
- package/src/memory-backend/types.ts +82 -2
- package/src/mnemopi/backend.ts +220 -28
- package/src/mnemopi/config.ts +138 -33
- package/src/mnemopi/state.ts +91 -11
- package/src/modes/acp/acp-agent.ts +149 -142
- package/src/modes/acp/acp-event-mapper.ts +5 -1
- package/src/modes/components/agent-dashboard.ts +17 -11
- package/src/modes/components/agent-hub.ts +1346 -0
- package/src/modes/components/assistant-message.ts +190 -80
- package/src/modes/components/bash-execution.ts +1 -1
- package/src/modes/components/btw-panel.ts +5 -1
- package/src/modes/components/chat-block.ts +111 -0
- package/src/modes/components/collab-prompt-message.ts +30 -0
- package/src/modes/components/compaction-summary-message.ts +168 -33
- package/src/modes/components/copy-selector.ts +2 -45
- package/src/modes/components/custom-editor.test.ts +96 -0
- package/src/modes/components/custom-editor.ts +405 -118
- package/src/modes/components/custom-message.ts +1 -3
- package/src/modes/components/diff.ts +13 -2
- package/src/modes/components/dynamic-border.ts +12 -3
- package/src/modes/components/execution-shared.ts +1 -2
- package/src/modes/components/extensions/extension-dashboard.ts +8 -5
- package/src/modes/components/extensions/extension-list.ts +1 -1
- package/src/modes/components/extensions/inspector-panel.ts +7 -3
- package/src/modes/components/extensions/state-manager.ts +36 -41
- package/src/modes/components/footer.ts +4 -2
- package/src/modes/components/history-search.ts +1 -1
- package/src/modes/components/hook-editor.ts +8 -0
- package/src/modes/components/hook-input.ts +8 -0
- package/src/modes/components/hook-message.ts +1 -3
- package/src/modes/components/hook-selector.ts +6 -7
- package/src/modes/components/index.ts +1 -0
- package/src/modes/components/late-diagnostics-message.ts +60 -0
- package/src/modes/components/login-dialog.ts +1 -1
- package/src/modes/components/logout-account-selector.ts +130 -0
- package/src/modes/components/mcp-add-wizard.ts +14 -1
- package/src/modes/components/model-selector.ts +177 -75
- package/src/modes/components/oauth-selector.ts +102 -16
- package/src/modes/components/overlay-box.ts +108 -0
- package/src/modes/components/plan-review-overlay.ts +845 -0
- package/src/modes/components/plan-toc.ts +138 -0
- package/src/modes/components/plugin-settings.ts +22 -5
- package/src/modes/components/read-tool-group.ts +442 -39
- package/src/modes/components/reset-usage-selector.ts +161 -0
- package/src/modes/components/segment-track.ts +44 -7
- package/src/modes/components/session-selector.ts +97 -37
- package/src/modes/components/settings-defs.ts +28 -6
- package/src/modes/components/settings-selector.ts +541 -93
- package/src/modes/components/skill-message.ts +0 -1
- package/src/modes/components/snapcompact-shape-preview-doc.md +11 -0
- package/src/modes/components/snapcompact-shape-preview.ts +193 -0
- package/src/modes/components/{status-line.ts → status-line/component.ts} +205 -168
- package/src/modes/components/status-line/index.ts +1 -0
- package/src/modes/components/status-line/presets.ts +3 -3
- package/src/modes/components/status-line/segments.ts +26 -7
- package/src/modes/components/status-line/types.ts +40 -9
- package/src/modes/components/tiny-title-download-progress.ts +1 -1
- package/src/modes/components/tips.txt +7 -3
- package/src/modes/components/todo-reminder.ts +0 -2
- package/src/modes/components/tool-execution.ts +236 -103
- package/src/modes/components/transcript-container.ts +724 -99
- package/src/modes/components/tree-selector.ts +19 -4
- package/src/modes/components/ttsr-notification.ts +72 -30
- package/src/modes/components/usage-row.ts +18 -0
- package/src/modes/components/user-message-selector.ts +1 -1
- package/src/modes/components/user-message.ts +28 -12
- package/src/modes/components/visual-truncate.ts +1 -1
- package/src/modes/components/welcome.ts +80 -22
- package/src/modes/controllers/command-controller-shared.ts +7 -6
- package/src/modes/controllers/command-controller.ts +210 -180
- package/src/modes/controllers/event-controller.ts +352 -142
- package/src/modes/controllers/extension-ui-controller.ts +167 -208
- package/src/modes/controllers/input-controller.ts +778 -162
- package/src/modes/controllers/mcp-command-controller.ts +232 -80
- package/src/modes/controllers/selector-controller.ts +284 -145
- package/src/modes/controllers/session-focus-controller.ts +112 -0
- package/src/modes/controllers/ssh-command-controller.ts +2 -2
- package/src/modes/controllers/streaming-reveal.ts +295 -0
- package/src/modes/controllers/tan-command-controller.ts +173 -0
- package/src/modes/controllers/tool-args-reveal.ts +174 -0
- package/src/modes/gradient-highlight.ts +21 -9
- package/src/modes/image-references.ts +33 -7
- package/src/modes/index.ts +8 -25
- package/src/modes/interactive-mode.ts +840 -186
- package/src/modes/magic-keywords.ts +28 -6
- package/src/modes/markdown-prose.ts +1 -1
- package/src/modes/oauth-manual-input.ts +30 -3
- package/src/modes/rpc/rpc-client.ts +186 -3
- package/src/modes/rpc/rpc-mode.ts +318 -24
- package/src/modes/rpc/rpc-subagents.ts +265 -0
- package/src/modes/rpc/rpc-types.ts +111 -2
- package/src/modes/runtime-init.ts +28 -3
- package/src/modes/session-observer-registry.ts +72 -3
- package/src/modes/setup-version.ts +11 -0
- package/src/modes/setup-wizard/index.ts +16 -4
- package/src/modes/setup-wizard/lazy.ts +16 -0
- package/src/modes/setup-wizard/scenes/glyph.ts +25 -7
- package/src/modes/setup-wizard/scenes/providers.ts +45 -12
- package/src/modes/setup-wizard/scenes/sign-in.ts +14 -13
- package/src/modes/setup-wizard/scenes/splash.ts +1 -1
- package/src/modes/setup-wizard/scenes/theme.ts +29 -2
- package/src/modes/setup-wizard/scenes/types.ts +11 -2
- package/src/modes/setup-wizard/scenes/web-search.ts +26 -9
- package/src/modes/setup-wizard/wizard-overlay.ts +40 -3
- package/src/modes/shared.ts +2 -0
- package/src/modes/theme/defaults/dark-poimandres.json +1 -1
- package/src/modes/theme/defaults/light-poimandres.json +1 -1
- package/src/modes/theme/shimmer.ts +20 -9
- package/src/modes/theme/theme-schema.json +1 -1
- package/src/modes/theme/theme.ts +342 -82
- package/src/modes/types.ts +60 -18
- package/src/modes/utils/context-usage.ts +88 -8
- package/src/modes/utils/copy-targets.ts +133 -27
- package/src/modes/utils/hotkeys-markdown.ts +3 -2
- package/src/modes/utils/ui-helpers.ts +191 -110
- package/src/modes/workflow.ts +10 -10
- package/src/plan-mode/approved-plan.ts +66 -43
- package/src/plan-mode/plan-protection.ts +4 -4
- package/src/priority.json +5 -1
- package/src/prompts/agents/designer.md +1 -1
- package/src/prompts/agents/explore.md +3 -3
- package/src/prompts/agents/librarian.md +2 -3
- package/src/prompts/agents/oracle.md +2 -2
- package/src/prompts/agents/plan.md +6 -6
- package/src/prompts/agents/reviewer.md +1 -1
- package/src/prompts/agents/task.md +6 -5
- package/src/prompts/bench.md +12 -0
- package/src/prompts/ci-green-request.md +5 -7
- package/src/prompts/goals/goal-budget-limit.md +2 -2
- package/src/prompts/goals/goal-continuation.md +4 -4
- package/src/prompts/goals/goal-mode-active.md +1 -1
- package/src/prompts/goals/guided-goal-interview.md +8 -0
- package/src/prompts/goals/guided-goal-system.md +12 -0
- package/src/prompts/memories/consolidation.md +2 -7
- package/src/prompts/memories/consolidation_system.md +4 -0
- package/src/prompts/memories/identity_review.md +2 -2
- package/src/prompts/memories/read-path.md +11 -10
- package/src/prompts/memories/stage_one_system.md +2 -2
- package/src/prompts/review-custom-request.md +1 -1
- package/src/prompts/system/agent-creation-architect.md +2 -2
- package/src/prompts/system/auto-continue.md +1 -1
- package/src/prompts/system/autolearn-guidance-learn.md +1 -0
- package/src/prompts/system/autolearn-guidance.md +7 -0
- package/src/prompts/system/autolearn-nudge.md +3 -0
- package/src/prompts/system/background-tan-dispatch.md +8 -0
- package/src/prompts/system/btw-user.md +2 -2
- package/src/prompts/system/commit-message-system.md +13 -1
- package/src/prompts/system/custom-system-prompt.md +1 -1
- package/src/prompts/system/eager-task.md +7 -0
- package/src/prompts/system/eager-todo.md +11 -6
- package/src/prompts/system/empty-stop-retry.md +4 -6
- package/src/prompts/system/irc-autoreply.md +6 -0
- package/src/prompts/system/irc-incoming.md +3 -4
- package/src/prompts/system/manual-continue.md +7 -0
- package/src/prompts/system/omfg-user.md +3 -4
- package/src/prompts/system/orchestrate-notice.md +10 -10
- package/src/prompts/system/personalities/default.md +26 -0
- package/src/prompts/system/personalities/friendly.md +17 -0
- package/src/prompts/system/personalities/pragmatic.md +15 -0
- package/src/prompts/system/plan-mode-active.md +70 -77
- package/src/prompts/system/plan-mode-approved.md +1 -1
- package/src/prompts/system/plan-mode-subagent.md +4 -5
- package/src/prompts/system/plan-mode-tool-decision-reminder.md +1 -1
- package/src/prompts/system/project-prompt.md +2 -2
- package/src/prompts/system/snapcompact-context-frames-note.md +1 -0
- package/src/prompts/system/snapcompact-context-stub.md +1 -0
- package/src/prompts/system/snapcompact-system-frames-note.md +1 -0
- package/src/prompts/system/snapcompact-system-stub.md +1 -0
- package/src/prompts/system/snapcompact-toolresult-note.md +1 -0
- package/src/prompts/system/subagent-system-prompt.md +7 -8
- package/src/prompts/system/system-prompt.md +28 -57
- package/src/prompts/system/tiny-title-system.md +1 -1
- package/src/prompts/system/title-marker-instruction.md +1 -0
- package/src/prompts/system/title-system-marker.md +16 -0
- package/src/prompts/system/title-system.md +16 -3
- package/src/prompts/system/ttsr-tool-reminder.md +1 -1
- package/src/prompts/system/workflow-notice.md +4 -4
- package/src/prompts/tools/ast-edit.md +1 -1
- package/src/prompts/tools/ast-grep.md +2 -2
- package/src/prompts/tools/bash.md +16 -8
- package/src/prompts/tools/browser.md +33 -43
- package/src/prompts/tools/debug.md +1 -1
- package/src/prompts/tools/eval.md +31 -51
- package/src/prompts/tools/find.md +0 -1
- package/src/prompts/tools/github.md +8 -7
- package/src/prompts/tools/goal.md +1 -1
- package/src/prompts/tools/image-gen.md +1 -1
- package/src/prompts/tools/inspect-image-system.md +1 -1
- package/src/prompts/tools/irc.md +39 -31
- package/src/prompts/tools/job.md +2 -1
- package/src/prompts/tools/learn.md +7 -0
- package/src/prompts/tools/lsp-late-diagnostic.md +8 -0
- package/src/prompts/tools/lsp.md +2 -2
- package/src/prompts/tools/manage-skill.md +9 -0
- package/src/prompts/tools/memory-edit.md +1 -1
- package/src/prompts/tools/patch.md +2 -2
- package/src/prompts/tools/read.md +31 -39
- package/src/prompts/tools/recall.md +1 -1
- package/src/prompts/tools/reflect.md +1 -1
- package/src/prompts/tools/render-mermaid.md +2 -2
- package/src/prompts/tools/replace.md +4 -10
- package/src/prompts/tools/rewind.md +2 -2
- package/src/prompts/tools/search-tool-bm25.md +1 -9
- package/src/prompts/tools/search.md +0 -1
- package/src/prompts/tools/ssh.md +0 -4
- package/src/prompts/tools/task-summary.md +5 -16
- package/src/prompts/tools/task.md +47 -31
- package/src/prompts/tools/todo.md +6 -3
- package/src/registry/agent-lifecycle.ts +218 -0
- package/src/registry/agent-registry.ts +46 -5
- package/src/sdk.ts +692 -219
- package/src/secrets/index.ts +8 -1
- package/src/secrets/obfuscator.ts +40 -19
- package/src/session/agent-session.ts +1577 -806
- package/src/session/agent-storage.ts +18 -9
- package/src/session/auth-broker-config.ts +30 -1
- package/src/session/auth-storage.ts +6 -0
- package/src/session/codex-auto-reset.ts +202 -0
- package/src/session/history-storage.ts +3 -2
- package/src/session/indexed-session-storage.ts +7 -10
- package/src/session/messages.ts +59 -95
- package/src/session/session-context.ts +352 -0
- package/src/session/session-dump-format.ts +12 -3
- package/src/session/session-entries.ts +194 -0
- package/src/session/session-history-format.ts +246 -0
- package/src/session/session-listing.ts +588 -0
- package/src/session/session-loader.ts +106 -0
- package/src/session/session-manager.ts +1003 -2920
- package/src/session/session-migrations.ts +78 -0
- package/src/session/session-paths.ts +193 -0
- package/src/session/session-persistence.ts +131 -0
- package/src/session/session-storage.ts +91 -30
- package/src/session/snapcompact-inline.ts +542 -0
- package/src/session/snapcompact-savings-journal.ts +113 -0
- package/src/session/streaming-output.ts +248 -11
- package/src/session/tool-choice-queue.ts +23 -11
- package/src/session/yield-queue.ts +20 -2
- package/src/slash-commands/acp-builtins.ts +25 -1
- package/src/slash-commands/available-commands.ts +105 -0
- package/src/slash-commands/builtin-registry.ts +575 -49
- package/src/slash-commands/helpers/active-oauth-account.ts +44 -0
- package/src/slash-commands/helpers/context-report.ts +28 -1
- package/src/slash-commands/helpers/logout.ts +88 -0
- package/src/slash-commands/helpers/reset-usage.ts +66 -0
- package/src/slash-commands/helpers/stats-dashboard.ts +85 -0
- package/src/slash-commands/helpers/usage-report.ts +38 -3
- package/src/slash-commands/types.ts +5 -9
- package/src/ssh/connection-manager.ts +27 -0
- package/src/ssh/ssh-executor.ts +60 -4
- package/src/stt/asr-client.ts +520 -0
- package/src/stt/asr-protocol.ts +65 -0
- package/src/stt/asr-worker.ts +790 -0
- package/src/stt/downloader.ts +107 -47
- package/src/stt/endpointer.ts +259 -0
- package/src/stt/index.ts +5 -1
- package/src/stt/models.ts +150 -0
- package/src/stt/recorder.ts +254 -67
- package/src/stt/stt-controller.ts +201 -22
- package/src/stt/transcriber.ts +37 -68
- package/src/stt/wav.ts +173 -0
- package/src/system-prompt.ts +52 -10
- package/src/task/agents.ts +3 -4
- package/src/task/commands.ts +3 -2
- package/src/task/discovery.ts +17 -24
- package/src/task/executor.ts +1054 -529
- package/src/task/index.ts +862 -757
- package/src/task/output-manager.ts +0 -11
- package/src/task/parallel.ts +3 -3
- package/src/task/prometheus-command.ts +2 -2
- package/src/task/render.ts +529 -182
- package/src/task/repair-args.ts +21 -9
- package/src/task/types.ts +144 -66
- package/src/task/worktree.ts +64 -56
- package/src/telemetry-export.ts +27 -9
- package/src/thinking.ts +9 -7
- package/src/tiny/models.ts +2 -2
- package/src/tiny/text.ts +5 -1
- package/src/tiny/title-client.ts +72 -20
- package/src/tiny/title-protocol.ts +1 -1
- package/src/tiny/worker.ts +23 -99
- package/src/tool-discovery/tool-index.ts +2 -0
- package/src/tools/archive-reader.ts +94 -2
- package/src/tools/ask.ts +234 -177
- package/src/tools/ast-edit.ts +136 -80
- package/src/tools/ast-grep.ts +41 -45
- package/src/tools/auto-generated-guard.ts +20 -3
- package/src/tools/bash-interactive.ts +28 -8
- package/src/tools/bash.ts +198 -35
- package/src/tools/browser/attach.ts +26 -7
- package/src/tools/browser/cmux/cmux-tab.ts +1264 -0
- package/src/tools/browser/cmux/rpc.ts +156 -0
- package/src/tools/browser/cmux/socket-client.ts +309 -0
- package/src/tools/browser/launch.ts +11 -2
- package/src/tools/browser/readable.ts +19 -2
- package/src/tools/browser/registry.ts +52 -5
- package/src/tools/browser/render.ts +13 -5
- package/src/tools/browser/tab-protocol.ts +2 -0
- package/src/tools/browser/tab-supervisor.ts +256 -34
- package/src/tools/browser/tab-worker.ts +259 -91
- package/src/tools/browser.ts +44 -2
- package/src/tools/checkpoint.ts +1 -1
- package/src/tools/conflict-detect.ts +50 -4
- package/src/tools/debug.ts +27 -12
- package/src/tools/eval-render.ts +32 -35
- package/src/tools/eval.ts +26 -12
- package/src/tools/fetch.ts +450 -99
- package/src/tools/find.ts +182 -142
- package/src/tools/gh-cache-invalidation.ts +255 -0
- package/src/tools/gh-renderer.ts +104 -51
- package/src/tools/gh.ts +232 -37
- package/src/tools/github-cache.ts +97 -7
- package/src/tools/grouped-file-output.ts +159 -52
- package/src/tools/image-gen.ts +237 -132
- package/src/tools/index.ts +147 -26
- package/src/tools/inspect-image-renderer.ts +74 -45
- package/src/tools/inspect-image.ts +12 -6
- package/src/tools/irc.ts +626 -173
- package/src/tools/job.ts +106 -29
- package/src/tools/learn.ts +144 -0
- package/src/tools/manage-skill.ts +104 -0
- package/src/tools/memory-edit.ts +4 -4
- package/src/tools/memory-recall.ts +7 -9
- package/src/tools/memory-reflect.ts +5 -9
- package/src/tools/memory-render.ts +23 -6
- package/src/tools/memory-retain.ts +4 -4
- package/src/tools/path-utils.ts +102 -48
- package/src/tools/plan-mode-guard.ts +101 -40
- package/src/tools/read.ts +475 -120
- package/src/tools/render-mermaid.ts +1 -1
- package/src/tools/render-utils.ts +132 -76
- package/src/tools/renderers.ts +12 -1
- package/src/tools/report-tool-issue.ts +14 -6
- package/src/tools/resolve.ts +20 -3
- package/src/tools/review.ts +2 -2
- package/src/tools/search-tool-bm25.ts +37 -24
- package/src/tools/search.ts +233 -115
- package/src/tools/sqlite-reader.ts +26 -17
- package/src/tools/ssh.ts +20 -14
- package/src/tools/todo.ts +197 -191
- package/src/tools/tool-result.ts +8 -0
- package/src/tools/tool-timeouts.ts +1 -1
- package/src/tools/tts.ts +205 -74
- package/src/tools/write.ts +291 -155
- package/src/tools/yield.ts +10 -1
- package/src/tts/downloader.ts +64 -0
- package/src/tts/index.ts +8 -0
- package/src/tts/models.ts +137 -0
- package/src/tts/player.ts +137 -0
- package/src/tts/runtime.ts +21 -0
- package/src/tts/streaming-player.ts +266 -0
- package/src/tts/tts-client.ts +647 -0
- package/src/tts/tts-protocol.ts +60 -0
- package/src/tts/tts-worker.ts +505 -0
- package/src/tts/vocalizer.ts +162 -0
- package/src/tts/wav.ts +58 -0
- package/src/tui/code-cell.ts +2 -7
- package/src/tui/hyperlink.ts +40 -26
- package/src/tui/output-block.ts +60 -108
- package/src/tui/status-line.ts +5 -1
- package/src/utils/block-context.ts +312 -0
- package/src/utils/changelog.ts +27 -1
- package/src/utils/clipboard.ts +91 -22
- package/src/utils/commit-message-generator.ts +8 -3
- package/src/utils/enhanced-paste.ts +230 -0
- package/src/utils/file-mentions.ts +3 -1
- package/src/utils/git.ts +315 -15
- package/src/utils/image-loading.ts +65 -4
- package/src/utils/session-color.ts +83 -9
- package/src/utils/thinking-display.ts +37 -0
- package/src/utils/title-generator.ts +73 -10
- package/src/utils/tool-choice.ts +16 -0
- package/src/utils/tools-manager.ts +19 -1
- package/src/web/kagi.ts +28 -26
- package/src/web/parallel.ts +7 -3
- package/src/web/scrapers/arxiv.ts +1 -1
- package/src/web/scrapers/github.ts +351 -3
- package/src/web/scrapers/go-pkg.ts +1 -1
- package/src/web/scrapers/iacr.ts +1 -1
- package/src/web/scrapers/readthedocs.ts +1 -1
- package/src/web/scrapers/twitter.ts +2 -1
- package/src/web/scrapers/types.ts +87 -8
- package/src/web/scrapers/wikipedia.ts +1 -1
- package/src/web/scrapers/youtube.ts +9 -3
- package/src/web/search/index.ts +15 -2
- package/src/web/search/providers/anthropic.ts +62 -21
- package/src/web/search/providers/base.ts +2 -1
- package/src/web/search/providers/brave.ts +5 -2
- package/src/web/search/providers/codex.ts +87 -51
- package/src/web/search/providers/exa.ts +101 -10
- package/src/web/search/providers/gemini.ts +49 -24
- package/src/web/search/providers/jina.ts +15 -5
- package/src/web/search/providers/kagi.ts +9 -2
- package/src/web/search/providers/kimi.ts +45 -20
- package/src/web/search/providers/parallel.ts +39 -24
- package/src/web/search/providers/perplexity.ts +226 -63
- package/src/web/search/providers/searxng.ts +19 -3
- package/src/web/search/providers/synthetic.ts +16 -11
- package/src/web/search/providers/tavily.ts +12 -9
- package/src/web/search/providers/zai.ts +22 -9
- package/src/web/search/render.ts +59 -64
- package/src/web/search/types.ts +5 -1
- package/dist/types/discovery/context-files.d.ts +0 -17
- package/dist/types/exa/factory.d.ts +0 -13
- package/dist/types/exa/render.d.ts +0 -19
- package/dist/types/exa/researcher.d.ts +0 -9
- package/dist/types/exa/search.d.ts +0 -9
- package/dist/types/exa/websets.d.ts +0 -9
- package/dist/types/export/html/template.generated.d.ts +0 -1
- package/dist/types/modes/components/session-observer-overlay.d.ts +0 -11
- package/dist/types/modes/components/status-line.d.ts +0 -77
- package/dist/types/slash-commands/headless-plan.d.ts +0 -3
- package/dist/types/stt/setup.d.ts +0 -18
- package/scripts/generate-template.ts +0 -33
- package/src/discovery/context-files.ts +0 -49
- package/src/exa/factory.ts +0 -60
- package/src/exa/render.ts +0 -244
- package/src/exa/researcher.ts +0 -36
- package/src/exa/search.ts +0 -47
- package/src/exa/websets.ts +0 -248
- package/src/export/html/template.generated.ts +0 -2
- package/src/modes/components/session-observer-overlay.ts +0 -852
- package/src/slash-commands/headless-plan.ts +0 -142
- package/src/stt/setup.ts +0 -52
- package/src/stt/transcribe.py +0 -70
- /package/dist/types/extensibility/{legacy-pi-coding-agent-shim.d.ts → legacy-package-agent-shim.d.ts} +0 -0
- /package/src/extensibility/{legacy-pi-coding-agent-shim.ts → legacy-package-agent-shim.ts} +0 -0
|
@@ -188,10 +188,10 @@ function bashValueBranch(bin: string, v: ValueSource): string {
|
|
|
188
188
|
case "enum":
|
|
189
189
|
return `COMPREPLY=( $(compgen -W "${bashWords(v.values)}" -- "$cur") ); return 0`;
|
|
190
190
|
case "list":
|
|
191
|
-
return `
|
|
191
|
+
return `_omp_comma "${bashWords(v.values)}"; return 0`;
|
|
192
192
|
case "models":
|
|
193
193
|
return v.multiple
|
|
194
|
-
? `
|
|
194
|
+
? `_omp_comma "$(command ${bin} __complete models 2>/dev/null | cut -f1)"; return 0`
|
|
195
195
|
: `COMPREPLY=( $(compgen -W "$(command ${bin} __complete models -- "$cur" 2>/dev/null | cut -f1)" -- "$cur") ); return 0`;
|
|
196
196
|
case "sessions":
|
|
197
197
|
return `COMPREPLY=( $(compgen -W "$(command ${bin} __complete sessions -- "$cur" 2>/dev/null | cut -f1)" -- "$cur") ); return 0`;
|
|
@@ -229,7 +229,7 @@ function generateBash(spec: CompletionSpec): string {
|
|
|
229
229
|
parts.push("");
|
|
230
230
|
|
|
231
231
|
// Comma-aware static/dynamic list completion helper.
|
|
232
|
-
parts.push(`
|
|
232
|
+
parts.push(`_omp_comma() {
|
|
233
233
|
local words="$1" realcur prefix
|
|
234
234
|
realcur="\${cur##*,}"
|
|
235
235
|
prefix="\${cur%"$realcur"}"
|
|
@@ -244,7 +244,7 @@ function generateBash(spec: CompletionSpec): string {
|
|
|
244
244
|
|
|
245
245
|
// Root handler: top-level flags + subcommand names.
|
|
246
246
|
const subTokens = spec.commands.flatMap(commandTokens).sort();
|
|
247
|
-
parts.push(`
|
|
247
|
+
parts.push(`_omp_root() {
|
|
248
248
|
case "$prev" in
|
|
249
249
|
${bashFlagCase(bin, spec.root.flags)}
|
|
250
250
|
esac
|
|
@@ -266,7 +266,7 @@ ${bashFlagCase(bin, spec.root.flags)}
|
|
|
266
266
|
: fileArg
|
|
267
267
|
? `COMPREPLY=( $(compgen -f -- "$cur") ); compopt -o filenames`
|
|
268
268
|
: ":";
|
|
269
|
-
parts.push(`
|
|
269
|
+
parts.push(`_omp_cmd_${bashFn(c.name)}() {
|
|
270
270
|
case "$prev" in
|
|
271
271
|
${bashFlagCase(bin, c.flags)}
|
|
272
272
|
esac
|
|
@@ -282,9 +282,9 @@ ${bashFlagCase(bin, c.flags)}
|
|
|
282
282
|
// Dispatcher.
|
|
283
283
|
const dispatch: string[] = [];
|
|
284
284
|
for (const c of spec.commands) {
|
|
285
|
-
dispatch.push(`\t\t${commandTokens(c).join("|")})\n\t\t\
|
|
285
|
+
dispatch.push(`\t\t${commandTokens(c).join("|")})\n\t\t\t_omp_cmd_${bashFn(c.name)}\n\t\t\t;;`);
|
|
286
286
|
}
|
|
287
|
-
parts.push(`
|
|
287
|
+
parts.push(`_omp() {
|
|
288
288
|
local cur prev cmd i
|
|
289
289
|
cur="\${COMP_WORDS[COMP_CWORD]}"
|
|
290
290
|
prev="\${COMP_WORDS[COMP_CWORD-1]}"
|
|
@@ -297,10 +297,10 @@ ${bashFlagCase(bin, c.flags)}
|
|
|
297
297
|
done
|
|
298
298
|
case "$cmd" in
|
|
299
299
|
${dispatch.join("\n")}
|
|
300
|
-
*)
|
|
300
|
+
*) _omp_root ;;
|
|
301
301
|
esac
|
|
302
302
|
}
|
|
303
|
-
complete -F
|
|
303
|
+
complete -F _omp ${bin}`);
|
|
304
304
|
parts.push("");
|
|
305
305
|
return `${parts.join("\n")}\n`;
|
|
306
306
|
}
|
|
@@ -331,11 +331,11 @@ function zshAction(v: ValueSource): string {
|
|
|
331
331
|
case "enum":
|
|
332
332
|
return `:value:(${v.values.join(" ")})`;
|
|
333
333
|
case "list":
|
|
334
|
-
return ":value:
|
|
334
|
+
return ":value:_omp_tools";
|
|
335
335
|
case "models":
|
|
336
|
-
return v.multiple ? ":models:
|
|
336
|
+
return v.multiple ? ":models:_omp_models_list" : ":model:_omp_call models";
|
|
337
337
|
case "sessions":
|
|
338
|
-
return ":session:
|
|
338
|
+
return ":session:_omp_call sessions";
|
|
339
339
|
case "file":
|
|
340
340
|
return ":file:_files";
|
|
341
341
|
case "dir":
|
|
@@ -362,7 +362,7 @@ function zshArgSpec(f: CompletionArg): string {
|
|
|
362
362
|
|
|
363
363
|
function generateZsh(spec: CompletionSpec): string {
|
|
364
364
|
const { bin } = spec;
|
|
365
|
-
// The `:value:
|
|
365
|
+
// The `:value:_omp_tools` action references this helper; bake its candidates
|
|
366
366
|
// from the spec's `list` flag so the generator stays a pure function of its
|
|
367
367
|
// input (bash/fish read `v.values` inline for the same reason).
|
|
368
368
|
const listFlag = [...spec.root.flags, ...spec.commands.flatMap(c => c.flags)].find(f => f.value.kind === "list");
|
|
@@ -373,7 +373,7 @@ function generateZsh(spec: CompletionSpec): string {
|
|
|
373
373
|
parts.push("");
|
|
374
374
|
|
|
375
375
|
// Dynamic helpers (single source: `<bin> __complete <kind>` → value<TAB>desc).
|
|
376
|
-
parts.push(`
|
|
376
|
+
parts.push(`_omp_call() {
|
|
377
377
|
local kind=$1
|
|
378
378
|
local -a items
|
|
379
379
|
local line
|
|
@@ -383,7 +383,7 @@ function generateZsh(spec: CompletionSpec): string {
|
|
|
383
383
|
done
|
|
384
384
|
_describe -t "$kind" "$kind" items
|
|
385
385
|
}
|
|
386
|
-
|
|
386
|
+
_omp_models_list() {
|
|
387
387
|
local -a items
|
|
388
388
|
local line
|
|
389
389
|
for line in "\${(@f)$(command ${bin} __complete models 2>/dev/null)}"; do
|
|
@@ -392,12 +392,12 @@ _prometheus_models_list() {
|
|
|
392
392
|
done
|
|
393
393
|
_values -s , 'models' $items
|
|
394
394
|
}
|
|
395
|
-
|
|
395
|
+
_omp_tools() { _values -s , 'tools' ${toolNames} }`);
|
|
396
396
|
parts.push("");
|
|
397
397
|
|
|
398
398
|
// Subcommand description table.
|
|
399
399
|
const cmdRows = spec.commands.map(c => `\t\t'${c.name}:${zshDesc(c.description)}'`).join("\n");
|
|
400
|
-
parts.push(`
|
|
400
|
+
parts.push(`_omp_commands() {
|
|
401
401
|
local -a commands
|
|
402
402
|
commands=(
|
|
403
403
|
${cmdRows}
|
|
@@ -409,7 +409,7 @@ ${cmdRows}
|
|
|
409
409
|
// Per-subcommand argument functions.
|
|
410
410
|
for (const c of spec.commands) {
|
|
411
411
|
const specs = ["'(-h --help)'{-h,--help}'[Show help]'", ...c.flags.map(zshFlagSpec), ...c.args.map(zshArgSpec)];
|
|
412
|
-
parts.push(`
|
|
412
|
+
parts.push(`_omp_cmd_${bashFn(c.name)}() {
|
|
413
413
|
_arguments -s \\
|
|
414
414
|
${specs.join(" \\\n\t\t")}
|
|
415
415
|
}`);
|
|
@@ -418,16 +418,16 @@ ${cmdRows}
|
|
|
418
418
|
|
|
419
419
|
// Top-level dispatch.
|
|
420
420
|
const aliasArms = spec.commands
|
|
421
|
-
.map(c => `\t\t\t${commandTokens(c).join("|")})
|
|
421
|
+
.map(c => `\t\t\t${commandTokens(c).join("|")}) _omp_cmd_${bashFn(c.name)} ;;`)
|
|
422
422
|
.join("\n");
|
|
423
423
|
const rootSpecs = [
|
|
424
424
|
"'(-h --help)'{-h,--help}'[Show help]'",
|
|
425
425
|
"'(-v --version)'{-v,--version}'[Show version]'",
|
|
426
426
|
...spec.root.flags.map(zshFlagSpec),
|
|
427
|
-
"'1: :
|
|
427
|
+
"'1: :_omp_commands'",
|
|
428
428
|
"'*::arg:->args'",
|
|
429
429
|
];
|
|
430
|
-
parts.push(`
|
|
430
|
+
parts.push(`_omp() {
|
|
431
431
|
local curcontext="$curcontext" state line
|
|
432
432
|
typeset -A opt_args
|
|
433
433
|
_arguments -C -s \\
|
|
@@ -440,13 +440,13 @@ ${aliasArms}
|
|
|
440
440
|
;;
|
|
441
441
|
esac
|
|
442
442
|
}
|
|
443
|
-
# Works both ways: autoloaded from $fpath (file named
|
|
444
|
-
# startup file. When autoloaded, funcstack[1] is
|
|
443
|
+
# Works both ways: autoloaded from $fpath (file named _omp) or eval'd from a
|
|
444
|
+
# startup file. When autoloaded, funcstack[1] is _omp and we invoke it; when
|
|
445
445
|
# sourced/eval'd we register it with compdef instead.
|
|
446
|
-
if [ "$funcstack[1]" = "
|
|
447
|
-
|
|
446
|
+
if [ "$funcstack[1]" = "_omp" ]; then
|
|
447
|
+
_omp "$@"
|
|
448
448
|
else
|
|
449
|
-
compdef
|
|
449
|
+
compdef _omp ${bin}
|
|
450
450
|
fi`);
|
|
451
451
|
parts.push("");
|
|
452
452
|
return `${parts.join("\n")}\n`;
|
|
@@ -498,7 +498,7 @@ function generateFish(spec: CompletionSpec): string {
|
|
|
498
498
|
lines.push("");
|
|
499
499
|
|
|
500
500
|
const allTokens = spec.commands.flatMap(commandTokens);
|
|
501
|
-
lines.push(`function
|
|
501
|
+
lines.push(`function __fish_omp_no_subcommand`);
|
|
502
502
|
lines.push(`\tfor i in (commandline -opc)`);
|
|
503
503
|
lines.push(`\t\tif contains -- $i ${allTokens.join(" ")}`);
|
|
504
504
|
lines.push(`\t\t\treturn 1`);
|
|
@@ -508,7 +508,7 @@ function generateFish(spec: CompletionSpec): string {
|
|
|
508
508
|
lines.push(`end`);
|
|
509
509
|
lines.push("");
|
|
510
510
|
|
|
511
|
-
const rootCond = "
|
|
511
|
+
const rootCond = "__fish_omp_no_subcommand";
|
|
512
512
|
|
|
513
513
|
// Subcommand names.
|
|
514
514
|
for (const c of spec.commands) {
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
Api,
|
|
3
|
+
ApiKeyResolver,
|
|
3
4
|
AssistantMessage,
|
|
4
5
|
AssistantMessageEvent,
|
|
5
6
|
AssistantMessageEventStream,
|
|
7
|
+
AuthCredentialSnapshotEntry,
|
|
6
8
|
Context,
|
|
7
9
|
Model,
|
|
8
10
|
OAuthAccess,
|
|
@@ -10,14 +12,14 @@ import type {
|
|
|
10
12
|
SimpleStreamOptions,
|
|
11
13
|
} from "@prometheus-ai/ai";
|
|
12
14
|
import { streamSimple } from "@prometheus-ai/ai";
|
|
15
|
+
import type { CanonicalModelVariant } from "@prometheus-ai/catalog/identity";
|
|
13
16
|
import { replaceTabs, truncateToWidth } from "@prometheus-ai/tui";
|
|
14
17
|
import { formatDuration, getProjectDir } from "@prometheus-ai/utils";
|
|
15
18
|
import chalk from "chalk";
|
|
16
|
-
import type { CanonicalModelVariant } from "../config/model-equivalence";
|
|
17
19
|
import { type CanonicalModelQueryOptions, ModelRegistry } from "../config/model-registry";
|
|
18
20
|
import {
|
|
19
21
|
formatModelString,
|
|
20
|
-
|
|
22
|
+
getModelMatchPreferences,
|
|
21
23
|
resolveAllowedModels,
|
|
22
24
|
resolveCliModel,
|
|
23
25
|
resolveModelRoleValue,
|
|
@@ -59,6 +61,12 @@ export interface DryBalanceAuthStorage {
|
|
|
59
61
|
options?: DryBalanceAuthOptions,
|
|
60
62
|
): Promise<OAuthAccess | undefined>;
|
|
61
63
|
getOAuthAccesses?(provider: string, options?: DryBalanceAuthOptions): Promise<OAuthAccessResolution[]>;
|
|
64
|
+
/**
|
|
65
|
+
* Force-refresh a single credential by id (step (b) of the auth-retry
|
|
66
|
+
* policy). The bench re-mints the failing account's token in place on a
|
|
67
|
+
* 401 rather than rotating accounts — it is measuring each account.
|
|
68
|
+
*/
|
|
69
|
+
forceRefreshCredentialById?(id: number, signal?: AbortSignal): Promise<AuthCredentialSnapshotEntry>;
|
|
62
70
|
}
|
|
63
71
|
|
|
64
72
|
export interface DryBalanceModelRegistry {
|
|
@@ -152,6 +160,8 @@ export interface DryBalanceDependencies {
|
|
|
152
160
|
now?: () => number;
|
|
153
161
|
stdoutIsTTY?: boolean;
|
|
154
162
|
stderrIsTTY?: boolean;
|
|
163
|
+
stdoutColumns?: number;
|
|
164
|
+
stderrColumns?: number;
|
|
155
165
|
}
|
|
156
166
|
|
|
157
167
|
type DryBalanceAttemptResult =
|
|
@@ -181,6 +191,7 @@ type DryBalanceBenchTarget =
|
|
|
181
191
|
ok: true;
|
|
182
192
|
account: string;
|
|
183
193
|
accessToken: string;
|
|
194
|
+
credentialId?: number;
|
|
184
195
|
}
|
|
185
196
|
| {
|
|
186
197
|
ok: false;
|
|
@@ -268,7 +279,7 @@ function isBenchFirstTokenEvent(event: AssistantMessageEvent): boolean {
|
|
|
268
279
|
}
|
|
269
280
|
|
|
270
281
|
function resolveBenchMaxTokens(model: Model<Api>): number {
|
|
271
|
-
return Number.isFinite(model.maxTokens) && model.maxTokens > 0
|
|
282
|
+
return model.maxTokens !== null && Number.isFinite(model.maxTokens) && model.maxTokens > 0
|
|
272
283
|
? Math.min(BENCH_MAX_TOKENS, model.maxTokens)
|
|
273
284
|
: BENCH_MAX_TOKENS;
|
|
274
285
|
}
|
|
@@ -310,10 +321,11 @@ function renderBenchStatusLine(
|
|
|
310
321
|
}
|
|
311
322
|
}
|
|
312
323
|
|
|
313
|
-
function createBenchProgressSink(
|
|
324
|
+
export function createBenchProgressSink(
|
|
314
325
|
total: number,
|
|
315
326
|
write: (text: string) => void,
|
|
316
327
|
interactive: boolean,
|
|
328
|
+
columns: number,
|
|
317
329
|
): DryBalanceBenchProgressSink {
|
|
318
330
|
const statuses: DryBalanceBenchProgressStatus[] = Array.from({ length: total }, () => ({ state: "waiting" }));
|
|
319
331
|
if (!interactive) {
|
|
@@ -333,13 +345,21 @@ function createBenchProgressSink(
|
|
|
333
345
|
let frame = 0;
|
|
334
346
|
let lineCount = 0;
|
|
335
347
|
let timer: NodeJS.Timeout | undefined;
|
|
348
|
+
const width = Number.isFinite(columns) && columns > 0 ? Math.trunc(columns) : 80;
|
|
336
349
|
const render = (): void => {
|
|
337
350
|
const lines = [
|
|
338
351
|
chalk.bold("bench requests"),
|
|
339
352
|
...statuses.map((status, index) => renderBenchStatusLine(status, index, total, frame)),
|
|
340
353
|
];
|
|
341
|
-
|
|
342
|
-
|
|
354
|
+
// Anchor every redraw at column 0 and terminate each row with CRLF: a
|
|
355
|
+
// bare `\n` only returns to column 0 when the tty performs ONLCR
|
|
356
|
+
// translation, which is off whenever the terminal is in raw mode — there
|
|
357
|
+
// the old column-preserving cursor-up staircased each frame into
|
|
358
|
+
// scrollback. Cap each line to the terminal width so a wrapped row never
|
|
359
|
+
// desyncs the `\x1b[<n>A` cursor-up from the logical line count.
|
|
360
|
+
const move = lineCount > 0 ? `\x1b[${lineCount}A` : "";
|
|
361
|
+
const body = lines.map(line => `\x1b[2K${truncateToWidth(line, width)}`).join("\r\n");
|
|
362
|
+
write(`${move}\r${body}\r\n`);
|
|
343
363
|
lineCount = lines.length;
|
|
344
364
|
};
|
|
345
365
|
render();
|
|
@@ -370,13 +390,23 @@ function createBenchProgressSink(
|
|
|
370
390
|
async function runBenchRequest(
|
|
371
391
|
model: Model<Api>,
|
|
372
392
|
sessionId: string,
|
|
373
|
-
|
|
374
|
-
|
|
393
|
+
target: Extract<DryBalanceBenchTarget, { ok: true }>,
|
|
394
|
+
authStorage: DryBalanceAuthStorage,
|
|
375
395
|
streamFn: DryBalanceStreamSimple,
|
|
376
396
|
now: () => number,
|
|
377
397
|
): Promise<DryBalanceBenchResult> {
|
|
398
|
+
const { account, accessToken, credentialId } = target;
|
|
378
399
|
const startedAt = now();
|
|
379
400
|
let firstTokenAt: number | undefined;
|
|
401
|
+
// Re-mint the cached token on a 401: a peer/broker may have rotated it out
|
|
402
|
+
// from under our snapshot (Anthropic rotates refresh tokens on every use).
|
|
403
|
+
// The bench measures one account, so the switch step intentionally declines.
|
|
404
|
+
const apiKey: ApiKeyResolver = async ({ lastChance, error }) => {
|
|
405
|
+
if (error === undefined) return accessToken;
|
|
406
|
+
if (lastChance || credentialId === undefined || !authStorage.forceRefreshCredentialById) return undefined;
|
|
407
|
+
const refreshed = await authStorage.forceRefreshCredentialById(credentialId);
|
|
408
|
+
return refreshed.credential.type === "oauth" ? refreshed.credential.access : undefined;
|
|
409
|
+
};
|
|
380
410
|
try {
|
|
381
411
|
const context: Context = {
|
|
382
412
|
messages: [
|
|
@@ -389,7 +419,7 @@ async function runBenchRequest(
|
|
|
389
419
|
],
|
|
390
420
|
};
|
|
391
421
|
const stream = streamFn(model, context, {
|
|
392
|
-
apiKey
|
|
422
|
+
apiKey,
|
|
393
423
|
sessionId,
|
|
394
424
|
maxTokens: resolveBenchMaxTokens(model),
|
|
395
425
|
temperature: 0.2,
|
|
@@ -454,7 +484,7 @@ async function resolveBenchTargets(
|
|
|
454
484
|
seen.add(key);
|
|
455
485
|
const account = extractAccount(entry);
|
|
456
486
|
if (entry.ok) {
|
|
457
|
-
targets.push({ ok: true, account, accessToken: entry.accessToken });
|
|
487
|
+
targets.push({ ok: true, account, accessToken: entry.accessToken, credentialId: entry.credentialId });
|
|
458
488
|
} else {
|
|
459
489
|
targets.push({ ok: false, account, error: entry.error });
|
|
460
490
|
}
|
|
@@ -465,6 +495,7 @@ async function resolveBenchTargets(
|
|
|
465
495
|
async function runBenchTargets(
|
|
466
496
|
model: Model<Api>,
|
|
467
497
|
targets: DryBalanceBenchTarget[],
|
|
498
|
+
authStorage: DryBalanceAuthStorage,
|
|
468
499
|
randomSessionId: () => string,
|
|
469
500
|
progress: DryBalanceBenchProgressSink | undefined,
|
|
470
501
|
streamFn: DryBalanceStreamSimple,
|
|
@@ -482,14 +513,7 @@ async function runBenchTargets(
|
|
|
482
513
|
return result;
|
|
483
514
|
}
|
|
484
515
|
progress?.markRunning(index, target.account);
|
|
485
|
-
const result = await runBenchRequest(
|
|
486
|
-
model,
|
|
487
|
-
randomSessionId(),
|
|
488
|
-
target.account,
|
|
489
|
-
target.accessToken,
|
|
490
|
-
streamFn,
|
|
491
|
-
now,
|
|
492
|
-
);
|
|
516
|
+
const result = await runBenchRequest(model, randomSessionId(), target, authStorage, streamFn, now);
|
|
493
517
|
progress?.complete(index, result);
|
|
494
518
|
return result;
|
|
495
519
|
}),
|
|
@@ -518,9 +542,7 @@ async function resolveDryBalanceModel(
|
|
|
518
542
|
settings: Settings | undefined,
|
|
519
543
|
randomSessionId: () => string,
|
|
520
544
|
): Promise<{ model: Model<Api>; warning?: string }> {
|
|
521
|
-
const preferences
|
|
522
|
-
usageOrder: settings?.getStorage()?.getModelUsageOrder(),
|
|
523
|
-
};
|
|
545
|
+
const preferences = getModelMatchPreferences(settings);
|
|
524
546
|
if (modelSelector) {
|
|
525
547
|
const resolved = resolveCliModel({
|
|
526
548
|
cliModel: modelSelector,
|
|
@@ -792,8 +814,19 @@ export async function runDryBalanceCommand(
|
|
|
792
814
|
const progressInteractive = command.flags.json
|
|
793
815
|
? (deps.stderrIsTTY ?? process.stderr.isTTY === true)
|
|
794
816
|
: (deps.stdoutIsTTY ?? process.stdout.isTTY === true);
|
|
795
|
-
|
|
796
|
-
|
|
817
|
+
const progressColumns = command.flags.json
|
|
818
|
+
? (deps.stderrColumns ?? process.stderr.columns ?? 80)
|
|
819
|
+
: (deps.stdoutColumns ?? process.stdout.columns ?? 80);
|
|
820
|
+
progress = createBenchProgressSink(targets.length, progressWrite, progressInteractive, progressColumns);
|
|
821
|
+
benchResults = await runBenchTargets(
|
|
822
|
+
model,
|
|
823
|
+
targets,
|
|
824
|
+
runtime.modelRegistry.authStorage,
|
|
825
|
+
randomSessionId,
|
|
826
|
+
progress,
|
|
827
|
+
streamFn,
|
|
828
|
+
now,
|
|
829
|
+
);
|
|
797
830
|
results = targets.map(target =>
|
|
798
831
|
target.ok ? { ok: true, account: target.account } : { ok: false, reason: target.error },
|
|
799
832
|
);
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `prometheus gallery` — render every built-in tool's renderer across its lifecycle.
|
|
3
|
+
*
|
|
4
|
+
* For each tool with a registered renderer, the gallery drives a real
|
|
5
|
+
* {@link ToolExecutionComponent} through four states — streaming arguments,
|
|
6
|
+
* arguments complete (in progress), success, and failure — and prints the
|
|
7
|
+
* rendered output to stdout. It exists for visual QA of tool renderers without
|
|
8
|
+
* having to provoke each state through a live agent session.
|
|
9
|
+
*/
|
|
10
|
+
import type { AgentTool } from "@prometheus-ai/agent-core";
|
|
11
|
+
import type { TUI } from "@prometheus-ai/tui";
|
|
12
|
+
import { getProjectDir } from "@prometheus-ai/utils";
|
|
13
|
+
import { Settings } from "../config/settings";
|
|
14
|
+
import { ToolExecutionComponent } from "../modes/components/tool-execution";
|
|
15
|
+
import { initTheme, theme } from "../modes/theme/theme";
|
|
16
|
+
import { toolRenderers } from "../tools/renderers";
|
|
17
|
+
import { type GalleryFixture, type GalleryResult, galleryFixtures } from "./gallery-fixtures";
|
|
18
|
+
import { captureGalleryScreenshots } from "./gallery-screenshot";
|
|
19
|
+
|
|
20
|
+
/** Lifecycle states the gallery renders, in display order. */
|
|
21
|
+
export const GALLERY_STATES = ["streaming", "progress", "success", "error"] as const;
|
|
22
|
+
export type GalleryState = (typeof GALLERY_STATES)[number];
|
|
23
|
+
|
|
24
|
+
const STATE_LABELS: Record<GalleryState, string> = {
|
|
25
|
+
streaming: "streaming args",
|
|
26
|
+
progress: "in progress",
|
|
27
|
+
success: "done",
|
|
28
|
+
error: "failed",
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export interface GalleryCommandArgs {
|
|
32
|
+
/** Render width in columns (defaults to terminal width, clamped). */
|
|
33
|
+
width?: number;
|
|
34
|
+
/** Restrict to a single tool name. */
|
|
35
|
+
tool?: string;
|
|
36
|
+
/** Restrict to specific lifecycle states. */
|
|
37
|
+
states?: GalleryState[];
|
|
38
|
+
/** Render the expanded variant of each renderer. */
|
|
39
|
+
expanded?: boolean;
|
|
40
|
+
/** Strip ANSI styling from the output (useful when redirecting to a file). */
|
|
41
|
+
plain?: boolean;
|
|
42
|
+
/** Capture the rendered gallery as PNG screenshot(s) via VHS instead of printing ANSI. */
|
|
43
|
+
screenshot?: boolean;
|
|
44
|
+
/** Screenshot output path (single image) or base path (suffixed when split across images). */
|
|
45
|
+
out?: string;
|
|
46
|
+
/** Font family for screenshots (must be installed; Nerd Font recommended for icon glyphs). */
|
|
47
|
+
font?: string;
|
|
48
|
+
/** Font size in points for screenshots. */
|
|
49
|
+
fontSize?: number;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/** One tool's rendered lifecycle, as ANSI lines: a leading blank, the section rule, then each state. */
|
|
53
|
+
export interface GallerySection {
|
|
54
|
+
heading: string;
|
|
55
|
+
lines: string[];
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const GENERIC_ERROR: GalleryResult = {
|
|
59
|
+
content: [{ type: "text", text: "Error: operation failed" }],
|
|
60
|
+
isError: true,
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Build the fake `AgentTool` the component needs for its label, edit mode, and —
|
|
65
|
+
* for `customRendered` fixtures — the renderer functions that route it through
|
|
66
|
+
* the same custom-tool branch production uses (see {@link GalleryFixture}).
|
|
67
|
+
*/
|
|
68
|
+
function fakeToolFor(name: string, fixture: GalleryFixture | undefined): AgentTool | undefined {
|
|
69
|
+
if (!fixture?.label && !fixture?.editMode && !fixture?.customRendered) return undefined;
|
|
70
|
+
const tool: Record<string, unknown> = { name, label: fixture.label ?? name, mode: fixture.editMode };
|
|
71
|
+
if (fixture.customRendered) {
|
|
72
|
+
const renderer = toolRenderers[fixture.renderer ?? name] as
|
|
73
|
+
| { renderCall?: unknown; renderResult?: unknown; mergeCallAndResult?: unknown; inline?: unknown }
|
|
74
|
+
| undefined;
|
|
75
|
+
if (renderer) {
|
|
76
|
+
tool.renderCall = renderer.renderCall;
|
|
77
|
+
tool.renderResult = renderer.renderResult;
|
|
78
|
+
tool.mergeCallAndResult = renderer.mergeCallAndResult;
|
|
79
|
+
tool.inline = renderer.inline;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return tool as unknown as AgentTool;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/** The curated fixture for a tool, or a generic one for registry tools lacking sample data. */
|
|
86
|
+
export function resolveFixture(name: string): GalleryFixture {
|
|
87
|
+
return (
|
|
88
|
+
galleryFixtures[name] ??
|
|
89
|
+
({
|
|
90
|
+
args: { note: `sample ${name} call` },
|
|
91
|
+
result: { content: [{ type: "text", text: `${name} completed` }] },
|
|
92
|
+
} satisfies GalleryFixture)
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Render a single tool/state pair to lines. Builds a fresh component, drives it
|
|
98
|
+
* to the requested state, settles any async edit preview, then snapshots the
|
|
99
|
+
* render and stops all animation timers.
|
|
100
|
+
*/
|
|
101
|
+
export async function renderGalleryState(
|
|
102
|
+
name: string,
|
|
103
|
+
fixture: GalleryFixture,
|
|
104
|
+
state: GalleryState,
|
|
105
|
+
width: number,
|
|
106
|
+
expanded = false,
|
|
107
|
+
): Promise<readonly string[]> {
|
|
108
|
+
if (fixture.renderState) {
|
|
109
|
+
return await fixture.renderState(state, width, expanded);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
const tool = fakeToolFor(name, fixture);
|
|
113
|
+
const streamingArgs = state === "streaming" ? (fixture.streamingArgs ?? fixture.args) : fixture.args;
|
|
114
|
+
// The component only calls `requestRender`/`requestComponentRender` (via
|
|
115
|
+
// its loader) during a static render; `imageBudget` is consulted solely
|
|
116
|
+
// when images render, which the gallery disables. A cast avoids
|
|
117
|
+
// constructing a real terminal.
|
|
118
|
+
const ui = { requestRender() {}, requestComponentRender() {} } as unknown as TUI;
|
|
119
|
+
const component = new ToolExecutionComponent(name, streamingArgs, { showImages: false }, tool, ui, getProjectDir());
|
|
120
|
+
component.setExpanded(expanded);
|
|
121
|
+
|
|
122
|
+
if (state !== "streaming") {
|
|
123
|
+
component.setArgsComplete();
|
|
124
|
+
}
|
|
125
|
+
if (state === "success") {
|
|
126
|
+
component.updateResult(fixture.result, false);
|
|
127
|
+
} else if (state === "error") {
|
|
128
|
+
component.updateResult(fixture.errorResult ?? GENERIC_ERROR, false);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// Edit-like renderers compute their diff preview off the render path; wait
|
|
132
|
+
// for it to settle so the snapshot is deterministic instead of racing a tick.
|
|
133
|
+
await component.whenPreviewSettled();
|
|
134
|
+
|
|
135
|
+
const lines = component.render(width);
|
|
136
|
+
component.stopAnimation();
|
|
137
|
+
return lines;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
function resolveWidth(requested: number | undefined): number {
|
|
141
|
+
const fallback = process.stdout.columns ?? 100;
|
|
142
|
+
const width = requested ?? fallback;
|
|
143
|
+
return Math.max(40, Math.min(200, width));
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
function sectionRule(label: string, width: number): string {
|
|
147
|
+
const prefix = `── ${label} `;
|
|
148
|
+
const fill = Math.max(0, width - prefix.length);
|
|
149
|
+
return theme.fg("accent", theme.bold(`${prefix}${"─".repeat(fill)}`));
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Render each requested tool's lifecycle into ANSI section blocks. The block
|
|
154
|
+
* layout (leading blank, section rule, then a blank + dim label + body per
|
|
155
|
+
* state) is shared by the stdout and screenshot paths so both stay identical.
|
|
156
|
+
*/
|
|
157
|
+
async function renderGallerySections(
|
|
158
|
+
names: string[],
|
|
159
|
+
states: GalleryState[],
|
|
160
|
+
width: number,
|
|
161
|
+
expanded: boolean,
|
|
162
|
+
): Promise<GallerySection[]> {
|
|
163
|
+
const sections: GallerySection[] = [];
|
|
164
|
+
for (const name of names) {
|
|
165
|
+
const fixture = resolveFixture(name);
|
|
166
|
+
const heading = fixture.label && fixture.label !== name ? `${name} — ${fixture.label}` : name;
|
|
167
|
+
const lines: string[] = ["", sectionRule(heading, width)];
|
|
168
|
+
for (const state of states) {
|
|
169
|
+
lines.push("", theme.fg("dim", ` · ${STATE_LABELS[state]}`));
|
|
170
|
+
try {
|
|
171
|
+
for (const line of await renderGalleryState(name, fixture, state, width, expanded)) lines.push(line);
|
|
172
|
+
} catch (err) {
|
|
173
|
+
lines.push(theme.fg("error", ` render failed: ${String(err)}`));
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
sections.push({ heading, lines });
|
|
177
|
+
}
|
|
178
|
+
return sections;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Render the gallery. Iterates the renderer registry (or a single tool),
|
|
183
|
+
* printing each requested lifecycle state under a labeled section — or, with
|
|
184
|
+
* `screenshot`, capturing the rendered output as PNG(s) via VHS.
|
|
185
|
+
*/
|
|
186
|
+
export async function runGalleryCommand(args: GalleryCommandArgs): Promise<void> {
|
|
187
|
+
const settingsInstance = await Settings.init();
|
|
188
|
+
// Screenshots must carry exact theme RGB regardless of how the invoking
|
|
189
|
+
// terminal advertises its color support, so force truecolor before the theme
|
|
190
|
+
// (and therefore every SGR escape it emits) is built.
|
|
191
|
+
if (args.screenshot) process.env.COLORTERM = "truecolor";
|
|
192
|
+
await initTheme(
|
|
193
|
+
false,
|
|
194
|
+
settingsInstance.get("symbolPreset"),
|
|
195
|
+
settingsInstance.get("colorBlindMode"),
|
|
196
|
+
settingsInstance.get("theme.dark"),
|
|
197
|
+
settingsInstance.get("theme.light"),
|
|
198
|
+
);
|
|
199
|
+
|
|
200
|
+
const width = resolveWidth(args.width);
|
|
201
|
+
const expanded = args.expanded ?? false;
|
|
202
|
+
const states = args.states && args.states.length > 0 ? args.states : [...GALLERY_STATES];
|
|
203
|
+
|
|
204
|
+
// Renderer-registry tools plus fixture-only tools (no dedicated renderer,
|
|
205
|
+
// e.g. `report_tool_issue` / custom extension tools) so the gallery covers
|
|
206
|
+
// the generic fallback + custom-tool branches too.
|
|
207
|
+
const allNames = Array.from(new Set([...Object.keys(toolRenderers), ...Object.keys(galleryFixtures)])).sort();
|
|
208
|
+
const names = args.tool ? allNames.filter(name => name === args.tool) : allNames;
|
|
209
|
+
if (args.tool && names.length === 0) {
|
|
210
|
+
process.stdout.write(`Unknown tool '${args.tool}'. Known tools: ${allNames.join(", ")}\n`);
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
const sections = await renderGallerySections(names, states, width, expanded);
|
|
215
|
+
|
|
216
|
+
if (args.screenshot) {
|
|
217
|
+
const paths = await captureGalleryScreenshots(sections, {
|
|
218
|
+
width,
|
|
219
|
+
font: args.font,
|
|
220
|
+
fontSize: args.fontSize,
|
|
221
|
+
out: args.out,
|
|
222
|
+
});
|
|
223
|
+
process.stdout.write(`${paths.join("\n")}\n`);
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
const lines = sections.flatMap(section => section.lines);
|
|
228
|
+
lines.push("");
|
|
229
|
+
const text = lines.map(line => (args.plain ? Bun.stripANSI(line) : line)).join("\n");
|
|
230
|
+
process.stdout.write(`${text}\n`);
|
|
231
|
+
}
|