@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
package/src/main.ts
CHANGED
|
@@ -5,16 +5,14 @@
|
|
|
5
5
|
* createAgentSession() options. The SDK does the heavy lifting.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import * as
|
|
8
|
+
import * as fsSync from "node:fs";
|
|
9
9
|
import * as os from "node:os";
|
|
10
|
-
import * as path from "node:path";
|
|
11
10
|
import { createInterface } from "node:readline/promises";
|
|
12
11
|
import { EventLoopKeepalive } from "@prometheus-ai/agent-core";
|
|
13
12
|
import type { ImageContent } from "@prometheus-ai/ai";
|
|
14
13
|
import {
|
|
15
14
|
$env,
|
|
16
|
-
|
|
17
|
-
APP_NAME,
|
|
15
|
+
getLogPath,
|
|
18
16
|
getProjectDir,
|
|
19
17
|
logger,
|
|
20
18
|
normalizePathForComparison,
|
|
@@ -24,16 +22,22 @@ import {
|
|
|
24
22
|
} from "@prometheus-ai/utils";
|
|
25
23
|
import chalk from "chalk";
|
|
26
24
|
import { reset as resetCapabilities } from "./capability";
|
|
27
|
-
import type
|
|
25
|
+
import { type Args, reportUnrecognizedFlags } from "./cli/args";
|
|
28
26
|
import { applyExtensionFlags, type ExtensionFlagSink } from "./cli/extension-flags";
|
|
29
27
|
import { processFileArguments } from "./cli/file-processor";
|
|
30
28
|
import { buildInitialMessage } from "./cli/initial-message";
|
|
31
|
-
import { runListModelsCommand } from "./cli/list-models";
|
|
32
29
|
import { selectSession } from "./cli/session-picker";
|
|
33
|
-
import {
|
|
30
|
+
import { applyStartupCwd } from "./cli/startup-cwd";
|
|
34
31
|
import { findConfigFile } from "./config";
|
|
35
|
-
import { ModelRegistry
|
|
36
|
-
import {
|
|
32
|
+
import { ModelRegistry } from "./config/model-registry";
|
|
33
|
+
import {
|
|
34
|
+
getModelMatchPreferences,
|
|
35
|
+
resolveCliModel,
|
|
36
|
+
resolveModelRoleValue,
|
|
37
|
+
resolveModelScope,
|
|
38
|
+
type ScopedModel,
|
|
39
|
+
} from "./config/model-resolver";
|
|
40
|
+
import { ModelsConfigFile } from "./config/models-config";
|
|
37
41
|
import { getDefault, type SettingPath, Settings, settings } from "./config/settings";
|
|
38
42
|
import { initializeWithSettings } from "./discovery";
|
|
39
43
|
import {
|
|
@@ -42,20 +46,14 @@ import {
|
|
|
42
46
|
preloadPluginRoots,
|
|
43
47
|
resolveActiveProjectRegistryPath,
|
|
44
48
|
} from "./discovery/helpers";
|
|
45
|
-
import {
|
|
46
|
-
import { exportFromFile } from "./export/html";
|
|
49
|
+
import { injectPrometheusExtensionCliRoots } from "./discovery/prometheus-extension-roots";
|
|
47
50
|
import { ExtensionRunner } from "./extensibility/extensions/runner";
|
|
48
51
|
import type { ExtensionUIContext } from "./extensibility/extensions/types";
|
|
49
|
-
import {
|
|
50
|
-
getInstalledPluginsRegistryPath,
|
|
51
|
-
getMarketplacesCacheDir,
|
|
52
|
-
getMarketplacesRegistryPath,
|
|
53
|
-
getPluginsCacheDir,
|
|
54
|
-
MarketplaceManager,
|
|
55
|
-
} from "./extensibility/plugins/marketplace";
|
|
52
|
+
import { scheduleMarketplaceAutoUpdate } from "./extensibility/plugins/marketplace-auto-update";
|
|
56
53
|
import type { MCPManager } from "./mcp";
|
|
57
|
-
import { InteractiveMode
|
|
58
|
-
import {
|
|
54
|
+
import { InteractiveMode } from "./modes/interactive-mode";
|
|
55
|
+
import type { PrintModeOptions } from "./modes/print-mode";
|
|
56
|
+
import { CURRENT_SETUP_VERSION } from "./modes/setup-version";
|
|
59
57
|
import { initTheme, stopThemeWatcher } from "./modes/theme/theme";
|
|
60
58
|
import type { SubmittedUserInput } from "./modes/types";
|
|
61
59
|
import {
|
|
@@ -67,29 +65,52 @@ import {
|
|
|
67
65
|
} from "./sdk";
|
|
68
66
|
import type { AgentSession } from "./session/agent-session";
|
|
69
67
|
import type { AuthStorage } from "./session/auth-storage";
|
|
70
|
-
import { resolveResumableSession, type SessionInfo
|
|
71
|
-
import {
|
|
68
|
+
import { resolveResumableSession, type SessionInfo } from "./session/session-listing";
|
|
69
|
+
import { SessionManager } from "./session/session-manager";
|
|
70
|
+
import { executeBuiltinSlashCommand } from "./slash-commands/builtin-registry";
|
|
71
|
+
import { discoverTitleSystemPromptFile, resolvePromptInput } from "./system-prompt";
|
|
72
72
|
import { initTelemetryExport, isTelemetryExportEnabled } from "./telemetry-export";
|
|
73
73
|
import { AUTO_THINKING } from "./thinking";
|
|
74
74
|
import type { LspStartupServerInfo } from "./tools";
|
|
75
|
-
import {
|
|
75
|
+
import {
|
|
76
|
+
getChangelogPath,
|
|
77
|
+
getNewEntries,
|
|
78
|
+
parseChangelog,
|
|
79
|
+
readLastChangelogVersion,
|
|
80
|
+
writeLastChangelogVersion,
|
|
81
|
+
} from "./utils/changelog";
|
|
76
82
|
import { EventBus } from "./utils/event-bus";
|
|
77
83
|
|
|
84
|
+
type RunAcpMode = (createSession: AcpSessionFactory) => Promise<never>;
|
|
85
|
+
type RunPrintMode = (session: AgentSession, options: PrintModeOptions) => Promise<void>;
|
|
86
|
+
type RunRpcMode = (
|
|
87
|
+
session: AgentSession,
|
|
88
|
+
setToolUIContext?: (uiContext: ExtensionUIContext, hasUI: boolean) => void,
|
|
89
|
+
eventBus?: EventBus,
|
|
90
|
+
) => Promise<never>;
|
|
91
|
+
|
|
92
|
+
function isStartupTimingEnabled(): boolean {
|
|
93
|
+
return Boolean($env.PROMETHEUS_TIMING || $env.PROMETHEUS_TIMING);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
function maybeShowStartupSplash(options: {
|
|
97
|
+
isInteractive: boolean;
|
|
98
|
+
resuming: boolean;
|
|
99
|
+
quiet: boolean;
|
|
100
|
+
version: string;
|
|
101
|
+
}): void {
|
|
102
|
+
if (!options.isInteractive) return;
|
|
103
|
+
if (options.resuming || options.quiet) return;
|
|
104
|
+
if (isStartupTimingEnabled()) return;
|
|
105
|
+
if (!process.stdin.isTTY || !process.stdout.isTTY) return;
|
|
106
|
+
//process.stdout.write(`${chalk.dim(`prometheus ${options.version}`)}\n${chalk.dim("Initializing session…")}\n`);
|
|
107
|
+
}
|
|
108
|
+
|
|
78
109
|
async function checkForNewVersion(currentVersion: string): Promise<string | undefined> {
|
|
79
110
|
if (!settings.get("startup.checkUpdate")) {
|
|
80
111
|
return;
|
|
81
112
|
}
|
|
82
113
|
try {
|
|
83
|
-
const sourceDir = resolveSourceCheckoutFromPath($which(APP_NAME) ?? "");
|
|
84
|
-
if (sourceDir) {
|
|
85
|
-
const sourceUpdate = await getSourceUpdateInfo(sourceDir);
|
|
86
|
-
if (sourceUpdate.behind && sourceUpdate.behind > 0) {
|
|
87
|
-
const commitLabel = sourceUpdate.behind === 1 ? "commit" : "commits";
|
|
88
|
-
return `${sourceUpdate.behind} upstream ${commitLabel}`;
|
|
89
|
-
}
|
|
90
|
-
return undefined;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
114
|
const response = await fetch("https://registry.npmjs.org/@prometheus-ai/agent/latest");
|
|
94
115
|
if (!response.ok) return undefined;
|
|
95
116
|
|
|
@@ -115,7 +136,7 @@ const HOST_DEFAULTED_SETTING_PATHS: SettingPath[] = [
|
|
|
115
136
|
"task.isolation.merge",
|
|
116
137
|
"task.isolation.commits",
|
|
117
138
|
"task.eager",
|
|
118
|
-
"task.
|
|
139
|
+
"task.batch",
|
|
119
140
|
"task.maxConcurrency",
|
|
120
141
|
"task.maxRecursionDepth",
|
|
121
142
|
"task.disabledAgents",
|
|
@@ -150,26 +171,106 @@ function applyAcpDefaultSettingOverrides(targetSettings: Settings = settings): v
|
|
|
150
171
|
|
|
151
172
|
async function readPipedInput(): Promise<string | undefined> {
|
|
152
173
|
if (process.stdin.isTTY !== false) return undefined;
|
|
174
|
+
// stdin is a pipe: a producer that never writes nor closes would block
|
|
175
|
+
// startup forever with zero output. Say what we're blocked on after 1s.
|
|
176
|
+
const notice = setTimeout(() => {
|
|
177
|
+
process.stderr.write(`${chalk.dim("Reading prompt from piped stdin (waiting for EOF; ctrl+c to abort)…")}\n`);
|
|
178
|
+
}, 1000);
|
|
179
|
+
notice.unref?.();
|
|
153
180
|
try {
|
|
154
181
|
const text = await Bun.stdin.text();
|
|
155
182
|
if (text.trim().length === 0) return undefined;
|
|
156
183
|
return text;
|
|
157
184
|
} catch {
|
|
158
185
|
return undefined;
|
|
186
|
+
} finally {
|
|
187
|
+
clearTimeout(notice);
|
|
159
188
|
}
|
|
160
189
|
}
|
|
161
190
|
|
|
191
|
+
// ---------------------------------------------------------------------------
|
|
192
|
+
// Startup watchdog
|
|
193
|
+
// ---------------------------------------------------------------------------
|
|
194
|
+
// Speculative-hang reporter: until startup hands off to a mode runner, print a
|
|
195
|
+
// stderr line every 10s naming the deepest in-flight startup phase. Turns
|
|
196
|
+
// zero-output indefinite hangs (stuck discovery read, network wait, stdin
|
|
197
|
+
// pipe) into self-diagnosing reports instead of "it just hangs" (see the
|
|
198
|
+
// PROMETHEUS_DEBUG_STARTUP markers for the synchronous-hang counterpart).
|
|
199
|
+
|
|
200
|
+
const STARTUP_WATCHDOG_INTERVAL_MS = 10_000;
|
|
201
|
+
let startupWatchdogTimer: NodeJS.Timeout | undefined;
|
|
202
|
+
let startupWatchdogActive = false;
|
|
203
|
+
let startupWatchdogStartedAt = 0;
|
|
204
|
+
|
|
205
|
+
function armStartupWatchdog(): void {
|
|
206
|
+
if (startupWatchdogTimer) return;
|
|
207
|
+
startupWatchdogTimer = setInterval(() => {
|
|
208
|
+
const elapsed = Math.round((Date.now() - startupWatchdogStartedAt) / 1000);
|
|
209
|
+
const phase = logger.openSpanPath().join(" > ") || "module load / pre-phase work";
|
|
210
|
+
process.stderr.write(
|
|
211
|
+
`${chalk.yellow(`Still starting after ${elapsed}s`)}${chalk.dim(` — phase: ${phase}`)}\n` +
|
|
212
|
+
`${chalk.dim(` logs: ${getLogPath()} · re-run with PROMETHEUS_DEBUG_STARTUP=1 for streaming phase markers`)}\n`,
|
|
213
|
+
);
|
|
214
|
+
}, STARTUP_WATCHDOG_INTERVAL_MS);
|
|
215
|
+
startupWatchdogTimer.unref?.();
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
function disarmStartupWatchdog(): void {
|
|
219
|
+
if (!startupWatchdogTimer) return;
|
|
220
|
+
clearInterval(startupWatchdogTimer);
|
|
221
|
+
startupWatchdogTimer = undefined;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/** Begin watching startup (idempotent). */
|
|
225
|
+
function startStartupWatchdog(): void {
|
|
226
|
+
startupWatchdogActive = true;
|
|
227
|
+
startupWatchdogStartedAt = Date.now();
|
|
228
|
+
armStartupWatchdog();
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/** Permanently stop watching: a mode runner now owns the terminal. */
|
|
232
|
+
function stopStartupWatchdog(): void {
|
|
233
|
+
startupWatchdogActive = false;
|
|
234
|
+
disarmStartupWatchdog();
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/** Pause while an interactive prompt legitimately waits on the user. */
|
|
238
|
+
function pauseStartupWatchdog(): void {
|
|
239
|
+
disarmStartupWatchdog();
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/** Resume after an interactive prompt, if startup is still being watched. */
|
|
243
|
+
function resumeStartupWatchdog(): void {
|
|
244
|
+
if (startupWatchdogActive) armStartupWatchdog();
|
|
245
|
+
}
|
|
246
|
+
|
|
162
247
|
export interface InteractiveModeNotify {
|
|
163
248
|
kind: "warn" | "error" | "info";
|
|
164
249
|
message: string;
|
|
165
250
|
}
|
|
166
251
|
|
|
252
|
+
export function buildModelScopeNotification(
|
|
253
|
+
scopedModelsForDisplay: readonly Pick<ScopedModel, "model" | "thinkingLevel" | "explicitThinkingLevel">[],
|
|
254
|
+
startupQuiet: boolean,
|
|
255
|
+
): InteractiveModeNotify | null {
|
|
256
|
+
if (startupQuiet || scopedModelsForDisplay.length === 0) {
|
|
257
|
+
return null;
|
|
258
|
+
}
|
|
259
|
+
const modelList = scopedModelsForDisplay
|
|
260
|
+
.map(scopedModel => {
|
|
261
|
+
const thinkingStr =
|
|
262
|
+
scopedModel.explicitThinkingLevel && scopedModel.thinkingLevel ? `:${scopedModel.thinkingLevel}` : "";
|
|
263
|
+
return `${scopedModel.model.id}${thinkingStr}`;
|
|
264
|
+
})
|
|
265
|
+
.join(", ");
|
|
266
|
+
return { kind: "info", message: `Model scope: ${modelList} (Ctrl+P to cycle)` };
|
|
267
|
+
}
|
|
167
268
|
export async function submitInteractiveInput(
|
|
168
269
|
mode: Pick<
|
|
169
270
|
InteractiveMode,
|
|
170
271
|
"markPendingSubmissionStarted" | "finishPendingSubmission" | "showError" | "checkShutdownRequested"
|
|
171
272
|
>,
|
|
172
|
-
session: Pick<AgentSession, "prompt" | "promptCustomMessage">,
|
|
273
|
+
session: Pick<AgentSession, "prompt" | "promptCustomMessage" | "isStreaming">,
|
|
173
274
|
input: SubmittedUserInput,
|
|
174
275
|
): Promise<void> {
|
|
175
276
|
if (input.cancelled) {
|
|
@@ -178,19 +279,32 @@ export async function submitInteractiveInput(
|
|
|
178
279
|
|
|
179
280
|
try {
|
|
180
281
|
using _keepalive = new EventLoopKeepalive();
|
|
181
|
-
|
|
282
|
+
const streamingBehavior = session.isStreaming ? ("followUp" as const) : undefined;
|
|
283
|
+
// Continue shortcuts submit an already-started synthetic developer prompt with
|
|
284
|
+
// no optimistic user message.
|
|
182
285
|
if (!input.started && !mode.markPendingSubmissionStarted(input)) {
|
|
183
286
|
return;
|
|
184
287
|
}
|
|
185
288
|
if (input.customType) {
|
|
186
|
-
|
|
289
|
+
const message = {
|
|
187
290
|
customType: input.customType,
|
|
188
291
|
content: input.text,
|
|
189
292
|
display: input.display ?? false,
|
|
190
|
-
attribution: "agent",
|
|
191
|
-
}
|
|
293
|
+
attribution: "agent" as const,
|
|
294
|
+
};
|
|
295
|
+
await (streamingBehavior
|
|
296
|
+
? session.promptCustomMessage(message, { streamingBehavior })
|
|
297
|
+
: session.promptCustomMessage(message));
|
|
298
|
+
} else if (input.synthetic) {
|
|
299
|
+
// Synthetic continue shortcuts are hidden developer prompts. The streaming
|
|
300
|
+
// queue (#queueUserMessage) only carries user-attributed messages, so we do
|
|
301
|
+
// NOT pass streamingBehavior here: queueing would silently demote the
|
|
302
|
+
// developer directive to a visible user message. A synthetic submit while
|
|
303
|
+
// streaming keeps its prior behavior (rejected as busy) rather than changing
|
|
304
|
+
// its role.
|
|
305
|
+
await session.prompt(input.text, { synthetic: true, expandPromptTemplates: false });
|
|
192
306
|
} else {
|
|
193
|
-
await session.prompt(input.text, { images: input.images });
|
|
307
|
+
await session.prompt(input.text, { images: input.images, ...(streamingBehavior && { streamingBehavior }) });
|
|
194
308
|
}
|
|
195
309
|
} catch (error: unknown) {
|
|
196
310
|
const errorMessage = error instanceof Error ? error.message : "Unknown error occurred";
|
|
@@ -263,6 +377,8 @@ async function runInteractiveMode(
|
|
|
263
377
|
eventBus?: EventBus,
|
|
264
378
|
initialMessage?: string,
|
|
265
379
|
initialImages?: ImageContent[],
|
|
380
|
+
titleSystemPrompt?: string,
|
|
381
|
+
joinLink?: string,
|
|
266
382
|
): Promise<void> {
|
|
267
383
|
const mode = new InteractiveMode(
|
|
268
384
|
session,
|
|
@@ -272,19 +388,32 @@ async function runInteractiveMode(
|
|
|
272
388
|
lspServers,
|
|
273
389
|
mcpManager,
|
|
274
390
|
eventBus,
|
|
391
|
+
titleSystemPrompt,
|
|
275
392
|
);
|
|
276
393
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
394
|
+
// Cold-launch gate: the full setup wizard (every scene + the overlay and
|
|
395
|
+
// their TUI/OAuth/search/theme deps) is heavy, yet the common case only needs
|
|
396
|
+
// to know whether the stored setup version is current. Lazy-load the wizard
|
|
397
|
+
// barrel only when setup is stale or forced; otherwise skip it entirely.
|
|
398
|
+
const storedSetupVersion = settings.get("setupVersion");
|
|
399
|
+
const setupWizard =
|
|
400
|
+
forceSetupWizard || storedSetupVersion < CURRENT_SETUP_VERSION ? await import("./modes/setup-wizard") : undefined;
|
|
401
|
+
const setupScenes = setupWizard
|
|
402
|
+
? await setupWizard.selectSetupScenes(storedSetupVersion, setupWizard.ALL_SCENES, mode, {
|
|
403
|
+
resuming,
|
|
404
|
+
isTTY: process.stdin.isTTY && process.stdout.isTTY,
|
|
405
|
+
setupWizardEnabled: settings.get("startup.setupWizard"),
|
|
406
|
+
force: forceSetupWizard,
|
|
407
|
+
})
|
|
408
|
+
: [];
|
|
409
|
+
|
|
410
|
+
await mode.init({
|
|
411
|
+
suppressWelcomeIntro: resuming || setupScenes.length > 0,
|
|
412
|
+
clearInitialTerminalHistory: true,
|
|
282
413
|
});
|
|
283
414
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
if (setupScenes.length > 0) {
|
|
287
|
-
await runSetupWizard(mode, setupScenes);
|
|
415
|
+
if (setupWizard && setupScenes.length > 0) {
|
|
416
|
+
await setupWizard.runSetupWizard(mode, setupScenes);
|
|
288
417
|
}
|
|
289
418
|
|
|
290
419
|
versionCheckPromise
|
|
@@ -298,13 +427,12 @@ async function runInteractiveMode(
|
|
|
298
427
|
})
|
|
299
428
|
.catch(() => {});
|
|
300
429
|
|
|
301
|
-
// Cold-launch cleanup:
|
|
302
|
-
//
|
|
303
|
-
//
|
|
304
|
-
// the
|
|
305
|
-
//
|
|
306
|
-
|
|
307
|
-
mode.renderInitialMessages(undefined, { preserveExistingChat: true, clearTerminalHistory: true });
|
|
430
|
+
// Cold-launch cleanup: the first paint already clears native history, and this
|
|
431
|
+
// replay replaces the welcome/startup frame with the resumed/new transcript.
|
|
432
|
+
// Every in-process session load also uses `clearTerminalHistory`; cold launch
|
|
433
|
+
// follows the same clean-cutover path instead of preserving a previous run's
|
|
434
|
+
// transcript above the fresh one.
|
|
435
|
+
mode.renderInitialMessages({ preserveExistingChat: true, clearTerminalHistory: true });
|
|
308
436
|
|
|
309
437
|
for (const notify of notifs) {
|
|
310
438
|
if (!notify) {
|
|
@@ -319,6 +447,12 @@ async function runInteractiveMode(
|
|
|
319
447
|
}
|
|
320
448
|
}
|
|
321
449
|
|
|
450
|
+
// `prometheus join <link>`: dispatch through the same builtin path as a typed
|
|
451
|
+
// `/join` so collab guards and error rendering stay in one place.
|
|
452
|
+
if (joinLink !== undefined) {
|
|
453
|
+
await executeBuiltinSlashCommand(`/join ${joinLink}`, { ctx: mode });
|
|
454
|
+
}
|
|
455
|
+
|
|
322
456
|
if (initialMessage !== undefined) {
|
|
323
457
|
try {
|
|
324
458
|
using _keepalive = new EventLoopKeepalive();
|
|
@@ -345,22 +479,88 @@ async function runInteractiveMode(
|
|
|
345
479
|
}
|
|
346
480
|
}
|
|
347
481
|
|
|
348
|
-
type
|
|
482
|
+
type SessionPromptResult = "accepted" | "declined" | "unavailable";
|
|
349
483
|
|
|
350
|
-
type
|
|
484
|
+
type SessionPrompt = (session: SessionInfo) => Promise<SessionPromptResult>;
|
|
351
485
|
|
|
352
|
-
async function promptForkSession(session: SessionInfo): Promise<
|
|
486
|
+
async function promptForkSession(session: SessionInfo): Promise<SessionPromptResult> {
|
|
353
487
|
if (!process.stdin.isTTY) {
|
|
354
488
|
return "unavailable";
|
|
355
489
|
}
|
|
356
490
|
const message = `Session found in different project: ${session.cwd}. Fork into current directory? [y/N] `;
|
|
491
|
+
pauseStartupWatchdog();
|
|
357
492
|
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
358
493
|
try {
|
|
359
494
|
const answer = (await rl.question(message)).trim().toLowerCase();
|
|
360
495
|
return answer === "y" || answer === "yes" ? "accepted" : "declined";
|
|
361
496
|
} finally {
|
|
362
497
|
rl.close();
|
|
498
|
+
resumeStartupWatchdog();
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
async function promptMoveSession(session: SessionInfo): Promise<SessionPromptResult> {
|
|
503
|
+
if (!process.stdin.isTTY) {
|
|
504
|
+
return "unavailable";
|
|
505
|
+
}
|
|
506
|
+
const message = `Session's directory no longer exists (${session.cwd}). Move (re-root) it into the current directory? [Y/n] `;
|
|
507
|
+
pauseStartupWatchdog();
|
|
508
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
509
|
+
try {
|
|
510
|
+
const answer = (await rl.question(message)).trim().toLowerCase();
|
|
511
|
+
return answer === "" || answer === "y" || answer === "yes" ? "accepted" : "declined";
|
|
512
|
+
} finally {
|
|
513
|
+
rl.close();
|
|
514
|
+
resumeStartupWatchdog();
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
/**
|
|
519
|
+
* Friendly CLI failure raised by {@link createSessionManager} when the user's
|
|
520
|
+
* session-resolution flags (`--resume`/`--fork`/cross-project prompts) cannot
|
|
521
|
+
* be satisfied. {@link runRootCommand} catches it and prints a clean stderr
|
|
522
|
+
* message instead of letting it surface as `[Uncaught Exception]`
|
|
523
|
+
* (see issue #2084).
|
|
524
|
+
*/
|
|
525
|
+
export class SessionResolutionError extends Error {
|
|
526
|
+
readonly hint?: string;
|
|
527
|
+
constructor(message: string, hint?: string) {
|
|
528
|
+
super(message);
|
|
529
|
+
this.name = "SessionResolutionError";
|
|
530
|
+
this.hint = hint;
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
type MissingCwdMoveResult =
|
|
535
|
+
| { status: "not-needed" }
|
|
536
|
+
| { status: "declined" }
|
|
537
|
+
| { status: "moved"; manager: SessionManager };
|
|
538
|
+
|
|
539
|
+
async function moveMissingCwdSessionIfNeeded(
|
|
540
|
+
sessionArg: string,
|
|
541
|
+
session: SessionInfo,
|
|
542
|
+
cwd: string,
|
|
543
|
+
sessionDir: string | undefined,
|
|
544
|
+
askToMoveSession: SessionPrompt,
|
|
545
|
+
): Promise<MissingCwdMoveResult> {
|
|
546
|
+
const sourceCwd = session.cwd;
|
|
547
|
+
if (!sourceCwd || fsSync.existsSync(sourceCwd)) {
|
|
548
|
+
return { status: "not-needed" };
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
const movePromptResult = await askToMoveSession(session);
|
|
552
|
+
if (movePromptResult === "unavailable") {
|
|
553
|
+
throw new SessionResolutionError(
|
|
554
|
+
`Session "${sessionArg}" belongs to a directory that no longer exists (${sourceCwd}); run interactively to move it into the current project.`,
|
|
555
|
+
);
|
|
556
|
+
}
|
|
557
|
+
if (movePromptResult === "declined") {
|
|
558
|
+
return { status: "declined" };
|
|
363
559
|
}
|
|
560
|
+
|
|
561
|
+
const manager = await SessionManager.open(session.path, sessionDir);
|
|
562
|
+
await manager.moveTo(cwd, sessionDir);
|
|
563
|
+
return { status: "moved", manager };
|
|
364
564
|
}
|
|
365
565
|
|
|
366
566
|
async function getChangelogForDisplay(parsed: Args): Promise<string | undefined> {
|
|
@@ -368,7 +568,7 @@ async function getChangelogForDisplay(parsed: Args): Promise<string | undefined>
|
|
|
368
568
|
return undefined;
|
|
369
569
|
}
|
|
370
570
|
|
|
371
|
-
const lastVersion =
|
|
571
|
+
const lastVersion = await readLastChangelogVersion();
|
|
372
572
|
if (lastVersion === VERSION) {
|
|
373
573
|
// Steady state: user already saw the current version's changelog. Skip the file read + parse.
|
|
374
574
|
return undefined;
|
|
@@ -379,15 +579,13 @@ async function getChangelogForDisplay(parsed: Args): Promise<string | undefined>
|
|
|
379
579
|
|
|
380
580
|
if (!lastVersion) {
|
|
381
581
|
if (entries.length > 0) {
|
|
382
|
-
|
|
383
|
-
await flushChangelogVersion();
|
|
582
|
+
await writeLastChangelogVersion(VERSION);
|
|
384
583
|
return entries.map(e => e.content).join("\n\n");
|
|
385
584
|
}
|
|
386
585
|
} else {
|
|
387
586
|
const newEntries = getNewEntries(entries, lastVersion);
|
|
388
587
|
if (newEntries.length > 0) {
|
|
389
|
-
|
|
390
|
-
await flushChangelogVersion();
|
|
588
|
+
await writeLastChangelogVersion(VERSION);
|
|
391
589
|
return newEntries.map(e => e.content).join("\n\n");
|
|
392
590
|
}
|
|
393
591
|
}
|
|
@@ -395,24 +593,17 @@ async function getChangelogForDisplay(parsed: Args): Promise<string | undefined>
|
|
|
395
593
|
return undefined;
|
|
396
594
|
}
|
|
397
595
|
|
|
398
|
-
async function flushChangelogVersion(): Promise<void> {
|
|
399
|
-
try {
|
|
400
|
-
await settings.flush();
|
|
401
|
-
} catch (error: unknown) {
|
|
402
|
-
logger.warn("Failed to persist lastChangelogVersion", { error });
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
|
|
406
596
|
/** Resolves CLI session flags into an existing, forked, in-memory, or cancelled session manager. */
|
|
407
597
|
export async function createSessionManager(
|
|
408
598
|
parsed: Args,
|
|
409
599
|
cwd: string,
|
|
410
600
|
activeSettings: Settings = settings,
|
|
411
|
-
askToForkSession:
|
|
601
|
+
askToForkSession: SessionPrompt = promptForkSession,
|
|
602
|
+
askToMoveSession: SessionPrompt = promptMoveSession,
|
|
412
603
|
): Promise<SessionManager | undefined> {
|
|
413
604
|
if (parsed.fork) {
|
|
414
605
|
if (parsed.noSession) {
|
|
415
|
-
throw new
|
|
606
|
+
throw new SessionResolutionError("--fork requires session persistence");
|
|
416
607
|
}
|
|
417
608
|
const forkSource = parsed.fork;
|
|
418
609
|
if (forkSource.includes("/") || forkSource.includes("\\") || forkSource.endsWith(".jsonl")) {
|
|
@@ -420,7 +611,10 @@ export async function createSessionManager(
|
|
|
420
611
|
}
|
|
421
612
|
const match = await resolveResumableSession(forkSource, cwd, parsed.sessionDir);
|
|
422
613
|
if (!match) {
|
|
423
|
-
throw new
|
|
614
|
+
throw new SessionResolutionError(
|
|
615
|
+
`Session "${forkSource}" not found.`,
|
|
616
|
+
"Run `prometheus --resume` without an argument to pick from recent sessions, or `prometheus` to start a new one.",
|
|
617
|
+
);
|
|
424
618
|
}
|
|
425
619
|
return await SessionManager.forkFrom(match.session.path, cwd, parsed.sessionDir);
|
|
426
620
|
}
|
|
@@ -435,15 +629,46 @@ export async function createSessionManager(
|
|
|
435
629
|
}
|
|
436
630
|
const match = await resolveResumableSession(sessionArg, cwd, parsed.sessionDir);
|
|
437
631
|
if (!match) {
|
|
438
|
-
throw new
|
|
632
|
+
throw new SessionResolutionError(
|
|
633
|
+
`Session "${sessionArg}" not found.`,
|
|
634
|
+
"Run `prometheus --resume` without an argument to pick from recent sessions, or `prometheus` to start a new one.",
|
|
635
|
+
);
|
|
636
|
+
}
|
|
637
|
+
if (match.scope === "local") {
|
|
638
|
+
const moveResult = await moveMissingCwdSessionIfNeeded(
|
|
639
|
+
sessionArg,
|
|
640
|
+
match.session,
|
|
641
|
+
cwd,
|
|
642
|
+
parsed.sessionDir,
|
|
643
|
+
askToMoveSession,
|
|
644
|
+
);
|
|
645
|
+
if (moveResult.status === "moved") {
|
|
646
|
+
return moveResult.manager;
|
|
647
|
+
}
|
|
648
|
+
if (moveResult.status === "declined") {
|
|
649
|
+
return undefined;
|
|
650
|
+
}
|
|
439
651
|
}
|
|
440
652
|
if (match.scope === "global") {
|
|
441
653
|
const normalizedCwd = normalizePathForComparison(cwd);
|
|
442
654
|
const normalizedMatchCwd = normalizePathForComparison(match.session.cwd || cwd);
|
|
443
655
|
if (normalizedCwd !== normalizedMatchCwd) {
|
|
656
|
+
const moveResult = await moveMissingCwdSessionIfNeeded(
|
|
657
|
+
sessionArg,
|
|
658
|
+
match.session,
|
|
659
|
+
cwd,
|
|
660
|
+
parsed.sessionDir,
|
|
661
|
+
askToMoveSession,
|
|
662
|
+
);
|
|
663
|
+
if (moveResult.status === "moved") {
|
|
664
|
+
return moveResult.manager;
|
|
665
|
+
}
|
|
666
|
+
if (moveResult.status === "declined") {
|
|
667
|
+
return undefined;
|
|
668
|
+
}
|
|
444
669
|
const forkPromptResult = await askToForkSession(match.session);
|
|
445
670
|
if (forkPromptResult === "unavailable") {
|
|
446
|
-
throw new
|
|
671
|
+
throw new SessionResolutionError(
|
|
447
672
|
`Session "${sessionArg}" is in another project (${match.session.cwd}); run interactively to fork it into the current project.`,
|
|
448
673
|
);
|
|
449
674
|
}
|
|
@@ -481,59 +706,9 @@ export async function createSessionManager(
|
|
|
481
706
|
return undefined;
|
|
482
707
|
}
|
|
483
708
|
|
|
484
|
-
async function maybeAutoChdir(parsed: Args): Promise<void> {
|
|
485
|
-
if (parsed.allowHome || parsed.cwd) {
|
|
486
|
-
return;
|
|
487
|
-
}
|
|
488
|
-
|
|
489
|
-
const home = os.homedir();
|
|
490
|
-
if (!home) {
|
|
491
|
-
return;
|
|
492
|
-
}
|
|
493
|
-
|
|
494
|
-
const normalizePath = normalizePathForComparison;
|
|
495
|
-
|
|
496
|
-
const cwd = normalizePath(getProjectDir());
|
|
497
|
-
const normalizedHome = normalizePath(home);
|
|
498
|
-
if (cwd !== normalizedHome) {
|
|
499
|
-
return;
|
|
500
|
-
}
|
|
501
|
-
|
|
502
|
-
const isDirectory = async (p: string) => {
|
|
503
|
-
try {
|
|
504
|
-
const s = await fs.stat(p);
|
|
505
|
-
return s.isDirectory();
|
|
506
|
-
} catch {
|
|
507
|
-
return false;
|
|
508
|
-
}
|
|
509
|
-
};
|
|
510
|
-
|
|
511
|
-
const candidates = [path.join(home, "tmp"), "/tmp", "/var/tmp"];
|
|
512
|
-
for (const candidate of candidates) {
|
|
513
|
-
try {
|
|
514
|
-
if (!(await isDirectory(candidate))) {
|
|
515
|
-
continue;
|
|
516
|
-
}
|
|
517
|
-
setProjectDir(candidate);
|
|
518
|
-
return;
|
|
519
|
-
} catch {
|
|
520
|
-
// Try next candidate.
|
|
521
|
-
}
|
|
522
|
-
}
|
|
523
|
-
|
|
524
|
-
try {
|
|
525
|
-
const fallback = os.tmpdir();
|
|
526
|
-
if (fallback && normalizePath(fallback) !== cwd && (await isDirectory(fallback))) {
|
|
527
|
-
setProjectDir(fallback);
|
|
528
|
-
}
|
|
529
|
-
} catch {
|
|
530
|
-
// Ignore fallback errors.
|
|
531
|
-
}
|
|
532
|
-
}
|
|
533
|
-
|
|
534
709
|
/** Discover SYSTEM.md file if no CLI system prompt was provided */
|
|
535
710
|
function discoverSystemPromptFile(): string | undefined {
|
|
536
|
-
// Check project-local first (.prometheus/SYSTEM.md,
|
|
711
|
+
// Check project-local first (.prometheus/SYSTEM.md, .prometheus/SYSTEM.md legacy)
|
|
537
712
|
const projectPath = findConfigFile("SYSTEM.md", { user: false });
|
|
538
713
|
if (projectPath) {
|
|
539
714
|
return projectPath;
|
|
@@ -565,7 +740,7 @@ async function buildSessionOptions(
|
|
|
565
740
|
sessionManager: SessionManager | undefined,
|
|
566
741
|
modelRegistry: ModelRegistry,
|
|
567
742
|
activeSettings: Settings,
|
|
568
|
-
): Promise<{ options: CreateAgentSessionOptions }> {
|
|
743
|
+
): Promise<{ options: CreateAgentSessionOptions; titleSystemPrompt?: string }> {
|
|
569
744
|
const options: CreateAgentSessionOptions = {
|
|
570
745
|
cwd: parsed.cwd ?? getProjectDir(),
|
|
571
746
|
autoApprove: parsed.autoApprove ?? false,
|
|
@@ -576,6 +751,8 @@ async function buildSessionOptions(
|
|
|
576
751
|
const resolvedSystemPrompt = await resolvePromptInput(systemPromptSource, "system prompt");
|
|
577
752
|
const appendPromptSource = parsed.appendSystemPrompt ?? discoverAppendSystemPromptFile();
|
|
578
753
|
const resolvedAppendPrompt = await resolvePromptInput(appendPromptSource, "append system prompt");
|
|
754
|
+
const titleSystemPromptSource = discoverTitleSystemPromptFile();
|
|
755
|
+
const titleSystemPrompt = await resolvePromptInput(titleSystemPromptSource, "title system prompt");
|
|
579
756
|
|
|
580
757
|
if (sessionManager) {
|
|
581
758
|
options.sessionManager = sessionManager;
|
|
@@ -587,9 +764,7 @@ async function buildSessionOptions(
|
|
|
587
764
|
// Model from CLI
|
|
588
765
|
// - supports --provider <name> --model <pattern>
|
|
589
766
|
// - supports --model <provider>/<pattern>
|
|
590
|
-
const modelMatchPreferences =
|
|
591
|
-
usageOrder: activeSettings.getStorage()?.getModelUsageOrder(),
|
|
592
|
-
};
|
|
767
|
+
const modelMatchPreferences = getModelMatchPreferences(activeSettings);
|
|
593
768
|
if (parsed.model) {
|
|
594
769
|
const resolved = resolveCliModel({
|
|
595
770
|
cliProvider: parsed.provider,
|
|
@@ -723,13 +898,13 @@ async function buildSessionOptions(
|
|
|
723
898
|
options.additionalExtensionPaths = [];
|
|
724
899
|
}
|
|
725
900
|
|
|
726
|
-
return { options };
|
|
901
|
+
return { options, titleSystemPrompt };
|
|
727
902
|
}
|
|
728
903
|
|
|
729
904
|
interface RunRootCommandDependencies {
|
|
730
905
|
createAgentSession?: typeof createAgentSession;
|
|
731
906
|
discoverAuthStorage?: typeof discoverAuthStorage;
|
|
732
|
-
runAcpMode?:
|
|
907
|
+
runAcpMode?: RunAcpMode;
|
|
733
908
|
settings?: Settings;
|
|
734
909
|
forceSetupWizard?: boolean;
|
|
735
910
|
}
|
|
@@ -740,52 +915,31 @@ export async function runRootCommand(
|
|
|
740
915
|
deps: RunRootCommandDependencies = {},
|
|
741
916
|
): Promise<void> {
|
|
742
917
|
logger.startTiming();
|
|
918
|
+
startStartupWatchdog();
|
|
743
919
|
|
|
744
920
|
// Initialize theme early with defaults (CLI commands need symbols)
|
|
745
921
|
// Will be re-initialized with user preferences later
|
|
746
922
|
await logger.time("initTheme:initial", initTheme);
|
|
747
923
|
|
|
748
924
|
const parsedArgs = parsed;
|
|
749
|
-
await logger.time("
|
|
925
|
+
await logger.time("applyStartupCwd", applyStartupCwd, parsedArgs);
|
|
750
926
|
|
|
751
927
|
const notifs: (InteractiveModeNotify | null)[] = [];
|
|
752
928
|
|
|
753
929
|
// Create AuthStorage and ModelRegistry upfront
|
|
754
|
-
const authStorage = await logger.time("
|
|
755
|
-
const modelRegistry = new ModelRegistry(authStorage);
|
|
930
|
+
const authStorage = await logger.time("discoverAuthStorage", deps.discoverAuthStorage ?? discoverAuthStorage);
|
|
931
|
+
const modelRegistry = logger.time("modelRegistry:init", () => new ModelRegistry(authStorage));
|
|
756
932
|
|
|
757
933
|
if (parsedArgs.version) {
|
|
758
934
|
process.stdout.write(`${VERSION}\n`);
|
|
759
935
|
process.exit(0);
|
|
760
936
|
}
|
|
761
937
|
|
|
762
|
-
if (parsedArgs.listModels !== undefined) {
|
|
763
|
-
const settingsInstance = await logger.time("settings:init:list-models", Settings.init, {
|
|
764
|
-
cwd: getProjectDir(),
|
|
765
|
-
});
|
|
766
|
-
await modelRegistry.refresh("online");
|
|
767
|
-
const cliExtensionPaths = parsedArgs.noExtensions
|
|
768
|
-
? []
|
|
769
|
-
: [...(parsedArgs.extensions ?? []), ...(parsedArgs.hooks ?? [])];
|
|
770
|
-
const settingsExtensions = settingsInstance.get("extensions") ?? [];
|
|
771
|
-
const disabledExtensionIds = settingsInstance.get("disabledExtensions") ?? [];
|
|
772
|
-
const searchPattern = typeof parsedArgs.listModels === "string" ? parsedArgs.listModels : undefined;
|
|
773
|
-
await runListModelsCommand({
|
|
774
|
-
modelRegistry,
|
|
775
|
-
cwd: getProjectDir(),
|
|
776
|
-
additionalExtensionPaths: cliExtensionPaths,
|
|
777
|
-
settingsExtensions,
|
|
778
|
-
disabledExtensionIds,
|
|
779
|
-
disableExtensionDiscovery: Boolean(parsedArgs.noExtensions),
|
|
780
|
-
searchPattern,
|
|
781
|
-
});
|
|
782
|
-
process.exit(0);
|
|
783
|
-
}
|
|
784
|
-
|
|
785
938
|
if (parsedArgs.export) {
|
|
786
939
|
let result: string;
|
|
787
940
|
try {
|
|
788
941
|
const outputPath = parsedArgs.messages.length > 0 ? parsedArgs.messages[0] : undefined;
|
|
942
|
+
const { exportFromFile } = await import("./export/html");
|
|
789
943
|
result = await exportFromFile(parsedArgs.export, outputPath);
|
|
790
944
|
} catch (error: unknown) {
|
|
791
945
|
const message = error instanceof Error ? error.message : "Failed to export session";
|
|
@@ -819,16 +973,21 @@ export async function runRootCommand(
|
|
|
819
973
|
if (!parsedArgs.noExtensions) {
|
|
820
974
|
const cliExtensions = [...(parsedArgs.extensions ?? []), ...(parsedArgs.hooks ?? [])];
|
|
821
975
|
if (cliExtensions.length > 0) {
|
|
822
|
-
|
|
976
|
+
injectPrometheusExtensionCliRoots(cliExtensions, home, getProjectDir());
|
|
823
977
|
}
|
|
824
978
|
}
|
|
825
979
|
|
|
826
980
|
let cwd = getProjectDir();
|
|
827
|
-
const settingsInstance =
|
|
981
|
+
const settingsInstance =
|
|
982
|
+
deps.settings ?? (await logger.time("settings:init", Settings.init, { cwd, configFiles: parsedArgs.config }));
|
|
828
983
|
if (parsedArgs.approvalMode) {
|
|
829
984
|
// Runtime override (not persisted): every settings.get("tools.approvalMode") downstream
|
|
830
985
|
// sees this value. The wrapper still honours --auto-approve / --yolo on top of it.
|
|
831
986
|
settingsInstance.override("tools.approvalMode", parsedArgs.approvalMode);
|
|
987
|
+
} else if (parsedArgs.autoApprove) {
|
|
988
|
+
// --auto-approve / --yolo without an explicit --approval-mode: reflect in settings so
|
|
989
|
+
// setup-time checks (e.g. #wrapToolForAcpPermission) also see the yolo intent.
|
|
990
|
+
settingsInstance.override("tools.approvalMode", "yolo");
|
|
832
991
|
}
|
|
833
992
|
if (parsedArgs.mode === "rpc" || parsedArgs.mode === "rpc-ui") {
|
|
834
993
|
applyRpcDefaultSettingOverrides(settingsInstance);
|
|
@@ -880,9 +1039,7 @@ export async function runRootCommand(
|
|
|
880
1039
|
|
|
881
1040
|
let scopedModels: ScopedModel[] = [];
|
|
882
1041
|
const modelPatterns = parsedArgs.models ?? settingsInstance.get("enabledModels");
|
|
883
|
-
const modelMatchPreferences =
|
|
884
|
-
usageOrder: settingsInstance.getStorage()?.getModelUsageOrder(),
|
|
885
|
-
};
|
|
1042
|
+
const modelMatchPreferences = getModelMatchPreferences(settingsInstance);
|
|
886
1043
|
if (modelPatterns && modelPatterns.length > 0) {
|
|
887
1044
|
scopedModels = await logger.time(
|
|
888
1045
|
"resolveModelScope",
|
|
@@ -893,14 +1050,29 @@ export async function runRootCommand(
|
|
|
893
1050
|
);
|
|
894
1051
|
}
|
|
895
1052
|
|
|
896
|
-
// Create session manager based on CLI flags
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
1053
|
+
// Create session manager based on CLI flags. SessionResolutionError signals a
|
|
1054
|
+
// user-facing failure (unknown --resume/--fork id, non-interactive fork
|
|
1055
|
+
// prompt, --fork with --no-session): print + exit cleanly instead of letting
|
|
1056
|
+
// it surface as `[Uncaught Exception]` (see issue #2084).
|
|
1057
|
+
let sessionManager: SessionManager | undefined;
|
|
1058
|
+
try {
|
|
1059
|
+
sessionManager = await logger.time(
|
|
1060
|
+
"createSessionManager",
|
|
1061
|
+
createSessionManager,
|
|
1062
|
+
parsedArgs,
|
|
1063
|
+
cwd,
|
|
1064
|
+
settingsInstance,
|
|
1065
|
+
);
|
|
1066
|
+
} catch (error: unknown) {
|
|
1067
|
+
if (error instanceof SessionResolutionError) {
|
|
1068
|
+
process.stderr.write(`${chalk.red(`Error: ${error.message}`)}\n`);
|
|
1069
|
+
if (error.hint) {
|
|
1070
|
+
process.stderr.write(`${chalk.dim(error.hint)}\n`);
|
|
1071
|
+
}
|
|
1072
|
+
process.exit(1);
|
|
1073
|
+
}
|
|
1074
|
+
throw error;
|
|
1075
|
+
}
|
|
904
1076
|
|
|
905
1077
|
// User declined the cross-project fork prompt — exit cleanly with a friendly
|
|
906
1078
|
// message rather than letting the decline bubble up as an uncaught exception
|
|
@@ -925,10 +1097,12 @@ export async function runRootCommand(
|
|
|
925
1097
|
}
|
|
926
1098
|
startInAllScope = true;
|
|
927
1099
|
}
|
|
1100
|
+
pauseStartupWatchdog();
|
|
928
1101
|
const selected = await logger.time("selectSession", selectSession, folderSessions, {
|
|
929
1102
|
allSessions: preloadedAllSessions,
|
|
930
1103
|
startInAllScope,
|
|
931
1104
|
});
|
|
1105
|
+
resumeStartupWatchdog();
|
|
932
1106
|
if (!selected) {
|
|
933
1107
|
process.stdout.write(`${chalk.dim("No session selected")}\n`);
|
|
934
1108
|
return;
|
|
@@ -953,35 +1127,13 @@ export async function runRootCommand(
|
|
|
953
1127
|
|
|
954
1128
|
await pluginPreloadPromise;
|
|
955
1129
|
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
const mgr = new MarketplaceManager({
|
|
962
|
-
marketplacesRegistryPath: getMarketplacesRegistryPath(),
|
|
963
|
-
installedRegistryPath: getInstalledPluginsRegistryPath(),
|
|
964
|
-
projectInstalledRegistryPath: (await resolveActiveProjectRegistryPath(getProjectDir())) ?? undefined,
|
|
965
|
-
marketplacesCacheDir: getMarketplacesCacheDir(),
|
|
966
|
-
pluginsCacheDir: getPluginsCacheDir(),
|
|
967
|
-
clearPluginRootsCache: clearPluginRootsAndCaches,
|
|
968
|
-
});
|
|
969
|
-
await mgr.refreshStaleMarketplaces();
|
|
970
|
-
const updates = await mgr.checkForUpdates();
|
|
971
|
-
if (updates.length === 0) return;
|
|
972
|
-
if (autoUpdate === "auto") {
|
|
973
|
-
await mgr.upgradeAllPlugins();
|
|
974
|
-
logger.debug(`Auto-upgraded ${updates.length} marketplace plugin(s)`);
|
|
975
|
-
} else {
|
|
976
|
-
logger.debug(`${updates.length} marketplace plugin update(s) available — /marketplace upgrade`);
|
|
977
|
-
}
|
|
978
|
-
} catch {
|
|
979
|
-
// Silently ignore — network failure, corrupt data, offline.
|
|
980
|
-
}
|
|
981
|
-
})();
|
|
982
|
-
}
|
|
1130
|
+
scheduleMarketplaceAutoUpdate({
|
|
1131
|
+
autoUpdate: settingsInstance.get("marketplace.autoUpdate"),
|
|
1132
|
+
resolveActiveProjectRegistryPath,
|
|
1133
|
+
clearPluginRootsCache: clearPluginRootsAndCaches,
|
|
1134
|
+
});
|
|
983
1135
|
|
|
984
|
-
const { options: sessionOptions } = await logger.time(
|
|
1136
|
+
const { options: sessionOptions, titleSystemPrompt } = await logger.time(
|
|
985
1137
|
"buildSessionOptions",
|
|
986
1138
|
buildSessionOptions,
|
|
987
1139
|
parsedArgs,
|
|
@@ -1001,7 +1153,7 @@ export async function runRootCommand(
|
|
|
1001
1153
|
// Both are no-ops when OTEL_EXPORTER_OTLP_ENDPOINT is unset. An empty config
|
|
1002
1154
|
// is enough to enable telemetry — content capture is governed by the
|
|
1003
1155
|
// standard OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT env var.
|
|
1004
|
-
initTelemetryExport
|
|
1156
|
+
await logger.time("initTelemetryExport", initTelemetryExport);
|
|
1005
1157
|
if (isTelemetryExportEnabled()) {
|
|
1006
1158
|
sessionOptions.telemetry = {};
|
|
1007
1159
|
}
|
|
@@ -1040,7 +1192,10 @@ export async function runRootCommand(
|
|
|
1040
1192
|
rawArgs,
|
|
1041
1193
|
createSession,
|
|
1042
1194
|
});
|
|
1043
|
-
|
|
1195
|
+
// Branch-only protocol runner: keep ACP server code out of normal interactive startup.
|
|
1196
|
+
const runAcpMode = deps.runAcpMode ?? (await import("./modes/acp/acp-mode")).runAcpMode;
|
|
1197
|
+
stopStartupWatchdog();
|
|
1198
|
+
await runAcpMode(createAcpSession);
|
|
1044
1199
|
} else {
|
|
1045
1200
|
// Resolve extension-registered CLI flags before creating the session so a
|
|
1046
1201
|
// bad `@file` fails fast WITHOUT leaving a junk session/breadcrumb
|
|
@@ -1058,6 +1213,15 @@ export async function runRootCommand(
|
|
|
1058
1213
|
},
|
|
1059
1214
|
};
|
|
1060
1215
|
const initialArgs = applyExtensionFlags(extensionFlagSink, rawArgs) ?? parsedArgs;
|
|
1216
|
+
// Fail fast on stale/typo flags (e.g. `prometheus --list-models`) now that we
|
|
1217
|
+
// know the real extension flag set. Without this check the unrecognized
|
|
1218
|
+
// token gets silently consumed and any following positional leaks as the
|
|
1219
|
+
// initial prompt — kicking off a real LLM session, MCP connection, and
|
|
1220
|
+
// tool calls (issue #2459). Exit code 2 matches the conventional
|
|
1221
|
+
// "command line usage error" convention.
|
|
1222
|
+
if (reportUnrecognizedFlags(initialArgs)) {
|
|
1223
|
+
process.exit(2);
|
|
1224
|
+
}
|
|
1061
1225
|
const processedFiles =
|
|
1062
1226
|
initialArgs.fileArgs.length > 0
|
|
1063
1227
|
? await logger.time("processFileArguments", () =>
|
|
@@ -1073,6 +1237,13 @@ export async function runRootCommand(
|
|
|
1073
1237
|
stdinContent: pipedInput,
|
|
1074
1238
|
});
|
|
1075
1239
|
|
|
1240
|
+
maybeShowStartupSplash({
|
|
1241
|
+
isInteractive,
|
|
1242
|
+
resuming: Boolean(parsedArgs.continue || parsedArgs.resume || parsedArgs.fork),
|
|
1243
|
+
quiet: settingsInstance.get("startup.quiet"),
|
|
1244
|
+
version: VERSION,
|
|
1245
|
+
});
|
|
1246
|
+
|
|
1076
1247
|
const { session, setToolUIContext, modelFallbackMessage, lspServers, mcpManager } = await createSession({
|
|
1077
1248
|
...sessionOptions,
|
|
1078
1249
|
eventBus,
|
|
@@ -1104,29 +1275,33 @@ export async function runRootCommand(
|
|
|
1104
1275
|
}
|
|
1105
1276
|
|
|
1106
1277
|
if (mode === "rpc" || mode === "rpc-ui") {
|
|
1107
|
-
|
|
1278
|
+
// Branch-only protocol runner: keep RPC host code out of normal interactive startup.
|
|
1279
|
+
const runRpcMode: RunRpcMode = (await import("./modes/rpc/rpc-mode")).runRpcMode;
|
|
1280
|
+
stopStartupWatchdog();
|
|
1281
|
+
await runRpcMode(session, mode === "rpc-ui" ? setToolUIContext : undefined, eventBus);
|
|
1108
1282
|
} else if (isInteractive) {
|
|
1109
1283
|
const versionCheckPromise = checkForNewVersion(VERSION).catch(() => undefined);
|
|
1110
1284
|
const changelogMarkdown = await logger.time("main:getChangelogForDisplay", getChangelogForDisplay, parsedArgs);
|
|
1111
1285
|
|
|
1112
|
-
const
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1286
|
+
const modelScopeNotification = buildModelScopeNotification(
|
|
1287
|
+
scopedModels,
|
|
1288
|
+
settingsInstance.get("startup.quiet"),
|
|
1289
|
+
);
|
|
1290
|
+
if (modelScopeNotification) {
|
|
1291
|
+
// Routed through the TUI (not stdout): the startup capture owns the
|
|
1292
|
+
// terminal in raw mode here, and the TUI's first clearScrollback paint
|
|
1293
|
+
// would wipe a pre-TUI line anyway.
|
|
1294
|
+
notifs.push(modelScopeNotification);
|
|
1121
1295
|
}
|
|
1122
1296
|
|
|
1123
|
-
if (
|
|
1297
|
+
if (isStartupTimingEnabled()) {
|
|
1124
1298
|
logger.printTimings();
|
|
1125
|
-
if (
|
|
1299
|
+
if (logger.shouldExitAfterTimings()) {
|
|
1126
1300
|
process.exit(0);
|
|
1127
1301
|
}
|
|
1128
1302
|
}
|
|
1129
1303
|
|
|
1304
|
+
stopStartupWatchdog();
|
|
1130
1305
|
logger.endTiming();
|
|
1131
1306
|
await runInteractiveMode(
|
|
1132
1307
|
session,
|
|
@@ -1143,15 +1318,20 @@ export async function runRootCommand(
|
|
|
1143
1318
|
eventBus,
|
|
1144
1319
|
initialMessage,
|
|
1145
1320
|
initialImages,
|
|
1321
|
+
titleSystemPrompt,
|
|
1322
|
+
parsedArgs.join,
|
|
1146
1323
|
);
|
|
1147
1324
|
} else {
|
|
1325
|
+
// Branch-only single-shot runner: keep print-mode code out of normal interactive startup.
|
|
1326
|
+
stopStartupWatchdog();
|
|
1327
|
+
const runPrintMode: RunPrintMode = (await import("./modes/print-mode")).runPrintMode;
|
|
1148
1328
|
await runPrintMode(session, {
|
|
1149
1329
|
mode,
|
|
1150
1330
|
messages: initialArgs.messages,
|
|
1151
1331
|
initialMessage,
|
|
1152
1332
|
initialImages,
|
|
1153
1333
|
});
|
|
1154
|
-
if (
|
|
1334
|
+
if (isStartupTimingEnabled()) {
|
|
1155
1335
|
logger.printTimings();
|
|
1156
1336
|
}
|
|
1157
1337
|
await session.dispose();
|