@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
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as fs from "node:fs/promises";
|
|
1
2
|
import * as path from "node:path";
|
|
2
3
|
import {
|
|
3
4
|
type Agent,
|
|
@@ -30,21 +31,18 @@ import {
|
|
|
30
31
|
type ResumeSessionResponse,
|
|
31
32
|
type SessionConfigOption,
|
|
32
33
|
type SessionInfo,
|
|
33
|
-
type SessionModelState,
|
|
34
34
|
type SessionModeState,
|
|
35
35
|
type SessionNotification,
|
|
36
36
|
type SessionUpdate,
|
|
37
37
|
type SetSessionConfigOptionRequest,
|
|
38
38
|
type SetSessionConfigOptionResponse,
|
|
39
|
-
type SetSessionModelRequest,
|
|
40
|
-
type SetSessionModelResponse,
|
|
41
39
|
type SetSessionModeRequest,
|
|
42
40
|
type SetSessionModeResponse,
|
|
43
41
|
type Usage,
|
|
44
42
|
} from "@agentclientprotocol/sdk";
|
|
45
43
|
import type { AgentToolResult } from "@prometheus-ai/agent-core";
|
|
46
44
|
import type { AssistantMessage, Model } from "@prometheus-ai/ai";
|
|
47
|
-
import {
|
|
45
|
+
import { isEnoent, logger, VERSION } from "@prometheus-ai/utils";
|
|
48
46
|
import { disableProvider, enableProvider, reset as resetCapabilities } from "../../capability";
|
|
49
47
|
import { Settings } from "../../config/settings";
|
|
50
48
|
import { clearPluginRootsAndCaches, resolveActiveProjectRegistryPath } from "../../discovery/helpers";
|
|
@@ -55,26 +53,26 @@ import {
|
|
|
55
53
|
} from "../../extensibility/extensions";
|
|
56
54
|
import { runExtensionCompact } from "../../extensibility/extensions/compact-handler";
|
|
57
55
|
import { getSessionSlashCommands } from "../../extensibility/extensions/get-commands-handler";
|
|
58
|
-
import { buildSkillPromptMessage
|
|
56
|
+
import { buildSkillPromptMessage } from "../../extensibility/skills";
|
|
59
57
|
import { loadSlashCommands } from "../../extensibility/slash-commands";
|
|
60
58
|
import { resolveLocalUrlToPath } from "../../internal-urls";
|
|
61
59
|
import { MCPManager } from "../../mcp/manager";
|
|
62
60
|
import type { MCPServerConfig } from "../../mcp/types";
|
|
63
61
|
import { loadAllExtensions } from "../../modes/components/extensions/state-manager";
|
|
64
62
|
import { theme } from "../../modes/theme/theme";
|
|
65
|
-
import { type PlanApprovalDetails,
|
|
63
|
+
import { type PlanApprovalDetails, resolveApprovedPlan } from "../../plan-mode/approved-plan";
|
|
66
64
|
import type { AgentSession, AgentSessionEvent } from "../../session/agent-session";
|
|
67
65
|
import { isSilentAbort, SKILL_PROMPT_MESSAGE_TYPE } from "../../session/messages";
|
|
68
|
-
import {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
} from "../../
|
|
73
|
-
import { ACP_BUILTIN_SLASH_COMMANDS, executeAcpBuiltinSlashCommand } from "../../slash-commands/acp-builtins";
|
|
66
|
+
import type { UsageStatistics } from "../../session/session-entries";
|
|
67
|
+
import type { SessionInfo as StoredSessionInfo } from "../../session/session-listing";
|
|
68
|
+
import { SessionManager } from "../../session/session-manager";
|
|
69
|
+
import { executeAcpBuiltinSlashCommand } from "../../slash-commands/acp-builtins";
|
|
70
|
+
import { buildAvailableSlashCommands, toAcpAvailableCommands } from "../../slash-commands/available-commands";
|
|
74
71
|
import { AUTO_THINKING, parseConfiguredThinkingLevel } from "../../thinking";
|
|
75
72
|
import { normalizeLocalScheme } from "../../tools/path-utils";
|
|
76
73
|
import { runResolveInvocation } from "../../tools/resolve";
|
|
77
74
|
import { ToolError } from "../../tools/tool-errors";
|
|
75
|
+
import { getVisibleThinkingText } from "../../utils/thinking-display";
|
|
78
76
|
import { createAcpClientBridge } from "./acp-client-bridge";
|
|
79
77
|
import {
|
|
80
78
|
buildToolCallStartUpdate,
|
|
@@ -116,9 +114,9 @@ type PromptQueueState = {
|
|
|
116
114
|
promise: Promise<void>;
|
|
117
115
|
release: (() => void) | undefined;
|
|
118
116
|
};
|
|
117
|
+
type PromptLifecycleError = Error & { readonly code: "ACP_SESSION_CLOSED" };
|
|
119
118
|
|
|
120
119
|
type PromptTurnState = {
|
|
121
|
-
userMessageId: string;
|
|
122
120
|
cancelRequested: boolean;
|
|
123
121
|
settled: boolean;
|
|
124
122
|
/**
|
|
@@ -157,6 +155,9 @@ type ManagedSessionRecord = {
|
|
|
157
155
|
// Installed inside `#scheduleBootstrapUpdates` (post-race-guard); released
|
|
158
156
|
// in `#disposeSessionRecord`. Lives independent of any prompt turn.
|
|
159
157
|
lifetimeUnsubscribe: (() => void) | undefined;
|
|
158
|
+
closedError: PromptLifecycleError | undefined;
|
|
159
|
+
promptEventHandlers: Set<Promise<void>>;
|
|
160
|
+
extensionUserMessageTasks: Set<Promise<void>>;
|
|
160
161
|
};
|
|
161
162
|
|
|
162
163
|
type ReplayableMessage = {
|
|
@@ -408,16 +409,16 @@ export class AcpAgent implements Agent {
|
|
|
408
409
|
authMethods.push({
|
|
409
410
|
type: "terminal",
|
|
410
411
|
id: "terminal",
|
|
411
|
-
name:
|
|
412
|
-
description:
|
|
412
|
+
name: "Set up Prometheus in terminal",
|
|
413
|
+
description: "Launch the prometheus TUI to add provider keys and select models.",
|
|
413
414
|
args: [ACP_TERMINAL_AUTH_FLAG],
|
|
414
415
|
});
|
|
415
416
|
}
|
|
416
417
|
return {
|
|
417
418
|
protocolVersion: PROTOCOL_VERSION,
|
|
418
419
|
agentInfo: {
|
|
419
|
-
name:
|
|
420
|
-
title:
|
|
420
|
+
name: "Prometheus",
|
|
421
|
+
title: "Prometheus",
|
|
421
422
|
version: VERSION,
|
|
422
423
|
},
|
|
423
424
|
authMethods,
|
|
@@ -459,7 +460,6 @@ export class AcpAgent implements Agent {
|
|
|
459
460
|
const response: NewSessionResponse = {
|
|
460
461
|
sessionId: record.session.sessionId,
|
|
461
462
|
configOptions: this.#buildConfigOptions(record.session),
|
|
462
|
-
models: this.#buildModelState(record.session),
|
|
463
463
|
modes: this.#buildModeState(record.session),
|
|
464
464
|
};
|
|
465
465
|
this.#scheduleBootstrapUpdates(record.session.sessionId);
|
|
@@ -472,7 +472,6 @@ export class AcpAgent implements Agent {
|
|
|
472
472
|
await this.#replaySessionHistory(record);
|
|
473
473
|
const response: LoadSessionResponse = {
|
|
474
474
|
configOptions: this.#buildConfigOptions(record.session),
|
|
475
|
-
models: this.#buildModelState(record.session),
|
|
476
475
|
modes: this.#buildModeState(record.session),
|
|
477
476
|
};
|
|
478
477
|
this.#scheduleBootstrapUpdates(record.session.sessionId);
|
|
@@ -501,7 +500,6 @@ export class AcpAgent implements Agent {
|
|
|
501
500
|
const record = await this.#resumeManagedSession(params.sessionId, params.cwd, params.mcpServers ?? []);
|
|
502
501
|
const response: ResumeSessionResponse = {
|
|
503
502
|
configOptions: this.#buildConfigOptions(record.session),
|
|
504
|
-
models: this.#buildModelState(record.session),
|
|
505
503
|
modes: this.#buildModeState(record.session),
|
|
506
504
|
};
|
|
507
505
|
this.#scheduleBootstrapUpdates(record.session.sessionId);
|
|
@@ -514,7 +512,6 @@ export class AcpAgent implements Agent {
|
|
|
514
512
|
const response: ForkSessionResponse = {
|
|
515
513
|
sessionId: record.session.sessionId,
|
|
516
514
|
configOptions: this.#buildConfigOptions(record.session),
|
|
517
|
-
models: this.#buildModelState(record.session),
|
|
518
515
|
modes: this.#buildModeState(record.session),
|
|
519
516
|
};
|
|
520
517
|
this.#scheduleBootstrapUpdates(record.session.sessionId);
|
|
@@ -582,18 +579,27 @@ export class AcpAgent implements Agent {
|
|
|
582
579
|
return { configOptions: this.#buildConfigOptions(record.session) };
|
|
583
580
|
}
|
|
584
581
|
|
|
585
|
-
async unstable_setSessionModel(params: SetSessionModelRequest): Promise<SetSessionModelResponse> {
|
|
586
|
-
const record = this.#getSessionRecord(params.sessionId);
|
|
587
|
-
await this.#setModelById(record.session, params.modelId);
|
|
588
|
-
await this.#pushConfigOptionUpdate(record);
|
|
589
|
-
return {};
|
|
590
|
-
}
|
|
591
|
-
|
|
592
582
|
async prompt(params: PromptRequest): Promise<PromptResponse> {
|
|
593
583
|
const record = this.#getSessionRecord(params.sessionId);
|
|
594
584
|
const activeTurn = record.promptTurn;
|
|
595
585
|
if (activeTurn && !activeTurn.settled && record.session.isStreaming) {
|
|
596
|
-
|
|
586
|
+
// New prompt arrived while the previous turn is still in-flight (e.g. the
|
|
587
|
+
// client sent a message immediately after pressing stop, before or without
|
|
588
|
+
// a preceding session/cancel notification). Implicitly cancel the running
|
|
589
|
+
// turn so the new prompt can queue behind the abort cleanup — identical to
|
|
590
|
+
// what cancel() does when called explicitly. #beginCancelCleanup is
|
|
591
|
+
// idempotent, so a concurrent session/cancel notification is harmless.
|
|
592
|
+
// Mirror cancel()'s timeout handling: if abort() hangs past the cleanup
|
|
593
|
+
// timeout, close the managed session instead of leaving it registered
|
|
594
|
+
// with a still-streaming AgentSession. The queued prompt below observes
|
|
595
|
+
// the same cleanup rejection and fails accordingly.
|
|
596
|
+
this.#beginCancelCleanup(record, activeTurn).catch(async (error: unknown) => {
|
|
597
|
+
logger.warn("ACP cancel cleanup timed out; closing session", {
|
|
598
|
+
sessionId: record.session.sessionId,
|
|
599
|
+
error,
|
|
600
|
+
});
|
|
601
|
+
await this.#closeManagedSession(params.sessionId, record);
|
|
602
|
+
});
|
|
597
603
|
}
|
|
598
604
|
return await this.#queuePrompt(record, async () => {
|
|
599
605
|
const previousTurn = record.promptTurn;
|
|
@@ -606,11 +612,11 @@ export class AcpAgent implements Agent {
|
|
|
606
612
|
await previousTurn.promise.catch(() => undefined);
|
|
607
613
|
await previousTurn.cleanup;
|
|
608
614
|
}
|
|
615
|
+
this.#throwIfRecordClosed(record);
|
|
609
616
|
|
|
610
617
|
const converted = this.#convertPromptBlocks(params.prompt);
|
|
611
618
|
const pendingPrompt = Promise.withResolvers<PromptResponse>();
|
|
612
619
|
record.promptTurn = {
|
|
613
|
-
userMessageId: params.messageId ?? crypto.randomUUID(),
|
|
614
620
|
cancelRequested: false,
|
|
615
621
|
settled: false,
|
|
616
622
|
cleanup: undefined,
|
|
@@ -622,7 +628,7 @@ export class AcpAgent implements Agent {
|
|
|
622
628
|
};
|
|
623
629
|
|
|
624
630
|
record.promptTurn.unsubscribe = record.session.subscribe(event => {
|
|
625
|
-
|
|
631
|
+
this.#trackPromptEvent(record, event);
|
|
626
632
|
});
|
|
627
633
|
|
|
628
634
|
this.#runPromptOrCommand(record, converted.text, converted.images).catch((error: unknown) => {
|
|
@@ -642,6 +648,7 @@ export class AcpAgent implements Agent {
|
|
|
642
648
|
release: releaseQueue,
|
|
643
649
|
};
|
|
644
650
|
await previousQueue.promise;
|
|
651
|
+
this.#throwIfRecordClosed(record);
|
|
645
652
|
try {
|
|
646
653
|
return await run();
|
|
647
654
|
} finally {
|
|
@@ -652,6 +659,55 @@ export class AcpAgent implements Agent {
|
|
|
652
659
|
}
|
|
653
660
|
}
|
|
654
661
|
|
|
662
|
+
#throwIfRecordClosed(record: ManagedSessionRecord): void {
|
|
663
|
+
if (record.closedError) {
|
|
664
|
+
throw record.closedError;
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
|
|
668
|
+
#createPromptLifecycleError(message: string): PromptLifecycleError {
|
|
669
|
+
return Object.assign(new Error(message), { code: "ACP_SESSION_CLOSED" as const });
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
#trackPromptEvent(record: ManagedSessionRecord, event: AgentSessionEvent): void {
|
|
673
|
+
const handling = this.#handlePromptEvent(record, event).catch((error: unknown) => {
|
|
674
|
+
logger.warn("ACP prompt event handler failed", { error });
|
|
675
|
+
});
|
|
676
|
+
record.promptEventHandlers.add(handling);
|
|
677
|
+
void handling.finally(() => {
|
|
678
|
+
record.promptEventHandlers.delete(handling);
|
|
679
|
+
});
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
async #waitForPromptEventHandlers(record: ManagedSessionRecord): Promise<void> {
|
|
683
|
+
while (record.promptEventHandlers.size > 0) {
|
|
684
|
+
await Promise.allSettled(Array.from(record.promptEventHandlers));
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
#trackExtensionUserMessage(record: ManagedSessionRecord, task: Promise<void>): void {
|
|
689
|
+
const tracked = task.catch((error: unknown) => {
|
|
690
|
+
logger.warn("ACP extension sendUserMessage failed", { error });
|
|
691
|
+
});
|
|
692
|
+
record.extensionUserMessageTasks.add(tracked);
|
|
693
|
+
void tracked.finally(() => {
|
|
694
|
+
record.extensionUserMessageTasks.delete(tracked);
|
|
695
|
+
});
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
async #waitForExtensionUserMessages(
|
|
699
|
+
record: ManagedSessionRecord,
|
|
700
|
+
baseline: ReadonlySet<Promise<void>>,
|
|
701
|
+
): Promise<void> {
|
|
702
|
+
while (true) {
|
|
703
|
+
const pending = Array.from(record.extensionUserMessageTasks).filter(task => !baseline.has(task));
|
|
704
|
+
if (pending.length === 0) {
|
|
705
|
+
return;
|
|
706
|
+
}
|
|
707
|
+
await Promise.allSettled(pending);
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
|
|
655
711
|
async #runPromptOrCommand(record: ManagedSessionRecord, text: string, images: AgentImageContent[]): Promise<void> {
|
|
656
712
|
const skillResult = await this.#tryRunSkillCommand(record, text);
|
|
657
713
|
if (skillResult) {
|
|
@@ -693,12 +749,22 @@ export class AcpAgent implements Agent {
|
|
|
693
749
|
this.#cloneUsageStatistics(record.session.sessionManager.getUsageStatistics()),
|
|
694
750
|
record.session.sessionManager.getUsageStatistics(),
|
|
695
751
|
),
|
|
696
|
-
userMessageId: promptTurn?.userMessageId,
|
|
697
752
|
});
|
|
698
753
|
return;
|
|
699
754
|
}
|
|
700
755
|
|
|
701
|
-
|
|
756
|
+
const extensionPromptBaseline = new Set(record.extensionUserMessageTasks);
|
|
757
|
+
const agentInvoked = await record.session.prompt(text, { images });
|
|
758
|
+
// Extension and custom-TS commands are handled locally inside session.prompt().
|
|
759
|
+
// An ACP extension command can still call pi.sendUserMessage(), which starts
|
|
760
|
+
// an async nested prompt through the extension runtime. Keep the ACP turn
|
|
761
|
+
// subscribed until those scheduled prompts and their event handlers drain;
|
|
762
|
+
// only then is `false` proof that the slash command was purely local.
|
|
763
|
+
if (!agentInvoked) {
|
|
764
|
+
await this.#waitForExtensionUserMessages(record, extensionPromptBaseline);
|
|
765
|
+
await this.#waitForPromptEventHandlers(record);
|
|
766
|
+
this.#finishPrompt(record, { stopReason: "end_turn" });
|
|
767
|
+
}
|
|
702
768
|
}
|
|
703
769
|
|
|
704
770
|
async #tryRunSkillCommand(record: ManagedSessionRecord, text: string): Promise<boolean> {
|
|
@@ -760,7 +826,6 @@ export class AcpAgent implements Agent {
|
|
|
760
826
|
this.#finishPrompt(record, {
|
|
761
827
|
stopReason: "cancelled",
|
|
762
828
|
usage: this.#buildTurnUsage(promptTurn.usageBaseline, record.session.sessionManager.getUsageStatistics()),
|
|
763
|
-
userMessageId: promptTurn.userMessageId,
|
|
764
829
|
});
|
|
765
830
|
return cleanup;
|
|
766
831
|
}
|
|
@@ -785,7 +850,7 @@ export class AcpAgent implements Agent {
|
|
|
785
850
|
|
|
786
851
|
async extMethod(method: string, params: { [key: string]: unknown }): Promise<{ [key: string]: unknown }> {
|
|
787
852
|
switch (method) {
|
|
788
|
-
case "
|
|
853
|
+
case "_omp/sessions/listAll": {
|
|
789
854
|
const limit = typeof params.limit === "number" ? Math.max(1, Math.min(5000, params.limit as number)) : 1000;
|
|
790
855
|
const sessions = await SessionManager.listAll();
|
|
791
856
|
const sorted = sessions.sort((l, r) => r.modified.getTime() - l.modified.getTime()).slice(0, limit);
|
|
@@ -794,7 +859,7 @@ export class AcpAgent implements Agent {
|
|
|
794
859
|
total: sessions.length,
|
|
795
860
|
};
|
|
796
861
|
}
|
|
797
|
-
case "
|
|
862
|
+
case "_omp/projects/list": {
|
|
798
863
|
const sessions = await SessionManager.listAll();
|
|
799
864
|
const buckets = new Map<
|
|
800
865
|
string,
|
|
@@ -822,7 +887,7 @@ export class AcpAgent implements Agent {
|
|
|
822
887
|
const projects = Array.from(buckets.values()).sort((a, b) => b.lastActivityAt - a.lastActivityAt);
|
|
823
888
|
return { projects, totalSessions: sessions.length };
|
|
824
889
|
}
|
|
825
|
-
case "
|
|
890
|
+
case "_omp/chats/byCwd": {
|
|
826
891
|
const cwd = typeof params.cwd === "string" ? (params.cwd as string) : undefined;
|
|
827
892
|
if (!cwd) throw new Error("cwd required");
|
|
828
893
|
const limit = typeof params.limit === "number" ? Math.max(1, Math.min(500, params.limit as number)) : 100;
|
|
@@ -830,7 +895,7 @@ export class AcpAgent implements Agent {
|
|
|
830
895
|
const sorted = sessions.sort((l, r) => r.modified.getTime() - l.modified.getTime()).slice(0, limit);
|
|
831
896
|
return { sessions: sorted.map(s => this.#toSessionInfo(s)) };
|
|
832
897
|
}
|
|
833
|
-
case "
|
|
898
|
+
case "_omp/usage": {
|
|
834
899
|
const [firstRecord] = this.#sessions.values();
|
|
835
900
|
const target = firstRecord?.session ?? this.#initialSession;
|
|
836
901
|
if (!target) {
|
|
@@ -839,14 +904,14 @@ export class AcpAgent implements Agent {
|
|
|
839
904
|
const reports = await target.fetchUsageReports();
|
|
840
905
|
return { reports: reports ?? [] };
|
|
841
906
|
}
|
|
842
|
-
case "
|
|
907
|
+
case "_omp/extensions": {
|
|
843
908
|
const cwd = typeof params.cwd === "string" ? (params.cwd as string) : undefined;
|
|
844
909
|
const sm = await Settings.init();
|
|
845
910
|
const disabledIds = (sm.get("disabledExtensions") as string[] | undefined) ?? [];
|
|
846
911
|
const extensions = await loadAllExtensions(cwd, disabledIds);
|
|
847
912
|
return { extensions: extensions as unknown as Array<{ [key: string]: unknown }> };
|
|
848
913
|
}
|
|
849
|
-
case "
|
|
914
|
+
case "_omp/extensions/toggle": {
|
|
850
915
|
const providerId = params.providerId;
|
|
851
916
|
if (typeof providerId !== "string") throw new Error("providerId required");
|
|
852
917
|
if (params.enabled === false) {
|
|
@@ -990,6 +1055,9 @@ export class AcpAgent implements Agent {
|
|
|
990
1055
|
liveMessageProgress: undefined,
|
|
991
1056
|
toolArgsById: new Map(),
|
|
992
1057
|
extensionsConfigured: false,
|
|
1058
|
+
closedError: undefined,
|
|
1059
|
+
promptEventHandlers: new Set(),
|
|
1060
|
+
extensionUserMessageTasks: new Set(),
|
|
993
1061
|
lifetimeUnsubscribe: undefined,
|
|
994
1062
|
};
|
|
995
1063
|
}
|
|
@@ -1075,7 +1143,6 @@ export class AcpAgent implements Agent {
|
|
|
1075
1143
|
this.#finishPrompt(record, {
|
|
1076
1144
|
stopReason: this.#resolveStopReason(event, promptTurn.cancelRequested),
|
|
1077
1145
|
usage: this.#buildTurnUsage(promptTurn.usageBaseline, record.session.sessionManager.getUsageStatistics()),
|
|
1078
|
-
userMessageId: promptTurn.userMessageId,
|
|
1079
1146
|
});
|
|
1080
1147
|
}
|
|
1081
1148
|
}
|
|
@@ -1298,28 +1365,6 @@ export class AcpAgent implements Agent {
|
|
|
1298
1365
|
return configOptions;
|
|
1299
1366
|
}
|
|
1300
1367
|
|
|
1301
|
-
#buildModelState(session: AgentSession): SessionModelState | undefined {
|
|
1302
|
-
const models = session.getAvailableModels();
|
|
1303
|
-
if (models.length === 0) {
|
|
1304
|
-
return undefined;
|
|
1305
|
-
}
|
|
1306
|
-
|
|
1307
|
-
const availableModels = models.map(model => ({
|
|
1308
|
-
modelId: this.#toModelId(model),
|
|
1309
|
-
name: model.name,
|
|
1310
|
-
description: `${model.provider}/${model.id}`,
|
|
1311
|
-
}));
|
|
1312
|
-
const currentModelId = session.model ? this.#toModelId(session.model) : availableModels[0]?.modelId;
|
|
1313
|
-
if (!currentModelId) {
|
|
1314
|
-
return undefined;
|
|
1315
|
-
}
|
|
1316
|
-
|
|
1317
|
-
return {
|
|
1318
|
-
availableModels,
|
|
1319
|
-
currentModelId,
|
|
1320
|
-
};
|
|
1321
|
-
}
|
|
1322
|
-
|
|
1323
1368
|
#buildThinkingOptions(session: AgentSession): Array<{ value: string; name: string; description?: string }> {
|
|
1324
1369
|
return [
|
|
1325
1370
|
{ value: THINKING_OFF, name: "Off" },
|
|
@@ -1425,24 +1470,16 @@ export class AcpAgent implements Agent {
|
|
|
1425
1470
|
if (!state?.enabled) {
|
|
1426
1471
|
throw new ToolError("Plan mode is not active.");
|
|
1427
1472
|
}
|
|
1428
|
-
const planFilePath =
|
|
1429
|
-
const planContent = await this.#readAcpPlanFile(session, planFilePath);
|
|
1430
|
-
if (planContent === null) {
|
|
1431
|
-
throw new ToolError(
|
|
1432
|
-
`Plan file not found at ${planFilePath}. Write the finalized plan to ${planFilePath} before requesting approval.`,
|
|
1433
|
-
);
|
|
1434
|
-
}
|
|
1435
|
-
const normalized = resolvePlanTitle({
|
|
1473
|
+
const { planFilePath, planContent, title } = await resolveApprovedPlan({
|
|
1436
1474
|
suppliedTitle: extra?.title,
|
|
1437
|
-
|
|
1438
|
-
|
|
1475
|
+
statePlanFilePath: state.planFilePath,
|
|
1476
|
+
readPlan: url => this.#readAcpPlanFile(session, url),
|
|
1477
|
+
listPlanFiles: () => this.#listAcpLocalPlanFiles(session),
|
|
1439
1478
|
});
|
|
1440
|
-
const
|
|
1441
|
-
const approved = await this.#requestAcpPlanApprovalChoice(session.sessionId, normalized.title, planContent);
|
|
1479
|
+
const approved = await this.#requestAcpPlanApprovalChoice(session.sessionId, title, planContent);
|
|
1442
1480
|
const details: PlanApprovalDetails = {
|
|
1443
1481
|
planFilePath,
|
|
1444
|
-
|
|
1445
|
-
title: normalized.title,
|
|
1482
|
+
title,
|
|
1446
1483
|
planExists: true,
|
|
1447
1484
|
};
|
|
1448
1485
|
if (!approved) {
|
|
@@ -1458,16 +1495,10 @@ export class AcpAgent implements Agent {
|
|
|
1458
1495
|
details,
|
|
1459
1496
|
};
|
|
1460
1497
|
}
|
|
1461
|
-
// Approved.
|
|
1462
|
-
//
|
|
1463
|
-
//
|
|
1464
|
-
|
|
1465
|
-
planFilePath,
|
|
1466
|
-
finalPlanFilePath,
|
|
1467
|
-
getArtifactsDir: () => session.sessionManager.getArtifactsDir(),
|
|
1468
|
-
getSessionId: () => session.sessionManager.getSessionId(),
|
|
1469
|
-
});
|
|
1470
|
-
session.setPlanReferencePath(finalPlanFilePath);
|
|
1498
|
+
// Approved. Set the plan reference so the next turn injects the plan
|
|
1499
|
+
// content as context (the file keeps its agent-chosen name — no
|
|
1500
|
+
// rename), then exit plan mode so the agent regains full tools.
|
|
1501
|
+
session.setPlanReferencePath(planFilePath);
|
|
1471
1502
|
session.setStandingResolveHandler?.(null);
|
|
1472
1503
|
session.setPlanModeState(undefined);
|
|
1473
1504
|
try {
|
|
@@ -1486,7 +1517,7 @@ export class AcpAgent implements Agent {
|
|
|
1486
1517
|
content: [
|
|
1487
1518
|
{
|
|
1488
1519
|
type: "text" as const,
|
|
1489
|
-
text: `Plan approved at ${
|
|
1520
|
+
text: `Plan approved at ${planFilePath}. Plan mode exited; proceed with the implementation.`,
|
|
1490
1521
|
},
|
|
1491
1522
|
],
|
|
1492
1523
|
details,
|
|
@@ -1518,6 +1549,26 @@ export class AcpAgent implements Agent {
|
|
|
1518
1549
|
}
|
|
1519
1550
|
}
|
|
1520
1551
|
|
|
1552
|
+
/** `local://` URLs of plan files in the session-local root, newest first —
|
|
1553
|
+
* the `resolveApprovedPlan` fallback for a dropped `extra.title`. */
|
|
1554
|
+
async #listAcpLocalPlanFiles(session: AgentSession): Promise<string[]> {
|
|
1555
|
+
const localRoot = this.#resolveAcpPlanFilePath(session, "local://");
|
|
1556
|
+
try {
|
|
1557
|
+
const entries = await fs.readdir(localRoot, { withFileTypes: true });
|
|
1558
|
+
const plans = await Promise.all(
|
|
1559
|
+
entries
|
|
1560
|
+
.filter(entry => entry.isFile() && /plan\.md$/i.test(entry.name))
|
|
1561
|
+
.map(async entry => {
|
|
1562
|
+
const stat = await fs.stat(path.join(localRoot, entry.name)).catch(() => null);
|
|
1563
|
+
return { url: `local://${entry.name}`, mtime: stat?.mtimeMs ?? 0 };
|
|
1564
|
+
}),
|
|
1565
|
+
);
|
|
1566
|
+
return plans.sort((a, b) => b.mtime - a.mtime).map(plan => plan.url);
|
|
1567
|
+
} catch {
|
|
1568
|
+
return [];
|
|
1569
|
+
}
|
|
1570
|
+
}
|
|
1571
|
+
|
|
1521
1572
|
/**
|
|
1522
1573
|
* Ask the ACP client to confirm plan approval. Returns `true` only on an
|
|
1523
1574
|
* explicit `APPROVE_OPTION` selection. Refine, dismissal (`undefined`), or
|
|
@@ -1565,50 +1616,7 @@ export class AcpAgent implements Agent {
|
|
|
1565
1616
|
}
|
|
1566
1617
|
|
|
1567
1618
|
async #buildAvailableCommands(session: AgentSession): Promise<AvailableCommand[]> {
|
|
1568
|
-
|
|
1569
|
-
const seenNames = new Set<string>();
|
|
1570
|
-
const appendCommand = (command: AvailableCommand): void => {
|
|
1571
|
-
if (seenNames.has(command.name)) {
|
|
1572
|
-
return;
|
|
1573
|
-
}
|
|
1574
|
-
seenNames.add(command.name);
|
|
1575
|
-
commands.push(command);
|
|
1576
|
-
};
|
|
1577
|
-
|
|
1578
|
-
// Advertise in the order dispatch resolves them: ACP builtins first
|
|
1579
|
-
// (so core commands like `/model`, `/mcp`, `/todo` cannot be shadowed),
|
|
1580
|
-
// then skills, then custom/user commands, then file-based slash
|
|
1581
|
-
// commands. `appendCommand` dedupes by name so earlier entries win.
|
|
1582
|
-
for (const command of ACP_BUILTIN_SLASH_COMMANDS) {
|
|
1583
|
-
appendCommand(command);
|
|
1584
|
-
}
|
|
1585
|
-
|
|
1586
|
-
if (session.skillsSettings?.enableSkillCommands) {
|
|
1587
|
-
for (const skill of session.skills) {
|
|
1588
|
-
appendCommand({
|
|
1589
|
-
name: getSkillSlashCommandName(skill),
|
|
1590
|
-
description: skill.description || `Run ${skill.name} skill`,
|
|
1591
|
-
input: { hint: "arguments" },
|
|
1592
|
-
});
|
|
1593
|
-
}
|
|
1594
|
-
}
|
|
1595
|
-
|
|
1596
|
-
for (const command of session.customCommands) {
|
|
1597
|
-
appendCommand({
|
|
1598
|
-
name: command.command.name,
|
|
1599
|
-
description: command.command.description,
|
|
1600
|
-
input: { hint: "arguments" },
|
|
1601
|
-
});
|
|
1602
|
-
}
|
|
1603
|
-
|
|
1604
|
-
for (const command of await loadSlashCommands({ cwd: session.sessionManager.getCwd() })) {
|
|
1605
|
-
appendCommand({
|
|
1606
|
-
name: command.name,
|
|
1607
|
-
description: command.description,
|
|
1608
|
-
});
|
|
1609
|
-
}
|
|
1610
|
-
|
|
1611
|
-
return commands;
|
|
1619
|
+
return toAcpAvailableCommands(await buildAvailableSlashCommands(session));
|
|
1612
1620
|
}
|
|
1613
1621
|
|
|
1614
1622
|
#toSessionInfo(session: StoredSessionInfo): SessionInfo {
|
|
@@ -1898,17 +1906,14 @@ export class AcpAgent implements Agent {
|
|
|
1898
1906
|
});
|
|
1899
1907
|
continue;
|
|
1900
1908
|
}
|
|
1901
|
-
if (
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
typeof item.thinking === "string" &&
|
|
1905
|
-
item.thinking.length > 0
|
|
1906
|
-
) {
|
|
1909
|
+
if (item.type === "thinking" && "thinking" in item && typeof item.thinking === "string") {
|
|
1910
|
+
const thinking = getVisibleThinkingText(item);
|
|
1911
|
+
if (thinking.length === 0) continue;
|
|
1907
1912
|
notifications.push({
|
|
1908
1913
|
sessionId,
|
|
1909
1914
|
update: {
|
|
1910
1915
|
sessionUpdate: "agent_thought_chunk",
|
|
1911
|
-
content: { type: "text", text:
|
|
1916
|
+
content: { type: "text", text: thinking },
|
|
1912
1917
|
messageId,
|
|
1913
1918
|
},
|
|
1914
1919
|
});
|
|
@@ -2062,9 +2067,7 @@ export class AcpAgent implements Agent {
|
|
|
2062
2067
|
});
|
|
2063
2068
|
},
|
|
2064
2069
|
sendUserMessage: (content, options) => {
|
|
2065
|
-
record.session.sendUserMessage(content, options)
|
|
2066
|
-
logger.warn("ACP extension sendUserMessage failed", { error });
|
|
2067
|
-
});
|
|
2070
|
+
this.#trackExtensionUserMessage(record, record.session.sendUserMessage(content, options));
|
|
2068
2071
|
},
|
|
2069
2072
|
appendEntry: (customType, data) => {
|
|
2070
2073
|
record.session.sessionManager.appendCustomEntry(customType, data);
|
|
@@ -2217,6 +2220,7 @@ export class AcpAgent implements Agent {
|
|
|
2217
2220
|
}
|
|
2218
2221
|
|
|
2219
2222
|
async #closeManagedSession(sessionId: string, record: ManagedSessionRecord): Promise<void> {
|
|
2223
|
+
record.closedError ??= this.#createPromptLifecycleError("ACP session closed before queued prompt could run");
|
|
2220
2224
|
this.#sessions.delete(sessionId);
|
|
2221
2225
|
await this.#cancelPromptForClose(record);
|
|
2222
2226
|
await this.#disposeSessionRecord(record);
|
|
@@ -2272,6 +2276,9 @@ export class AcpAgent implements Agent {
|
|
|
2272
2276
|
await Promise.all(
|
|
2273
2277
|
records.map(async ([sessionId, record]) => {
|
|
2274
2278
|
try {
|
|
2279
|
+
record.closedError ??= this.#createPromptLifecycleError(
|
|
2280
|
+
"ACP agent disposed before queued prompt could run",
|
|
2281
|
+
);
|
|
2275
2282
|
await this.#cancelPromptForClose(record);
|
|
2276
2283
|
await this.#disposeSessionRecord(record);
|
|
2277
2284
|
} catch (error) {
|
|
@@ -9,6 +9,7 @@ import type {
|
|
|
9
9
|
import type { AgentSessionEvent } from "../../session/agent-session";
|
|
10
10
|
import { resolveToCwd } from "../../tools/path-utils";
|
|
11
11
|
import type { TodoStatus } from "../../tools/todo";
|
|
12
|
+
import { hasVisibleThinking } from "../../utils/thinking-display";
|
|
12
13
|
|
|
13
14
|
interface MessageProgress {
|
|
14
15
|
textEmitted: boolean;
|
|
@@ -256,13 +257,16 @@ function mapAssistantMessageUpdate(
|
|
|
256
257
|
progress.textEmitted = true;
|
|
257
258
|
}
|
|
258
259
|
break;
|
|
259
|
-
case "thinking_delta":
|
|
260
|
+
case "thinking_delta": {
|
|
261
|
+
const block = event.assistantMessageEvent.partial?.content?.[event.assistantMessageEvent.contentIndex];
|
|
262
|
+
if (block?.type === "thinking" && !hasVisibleThinking(block)) return [];
|
|
260
263
|
sessionUpdate = "agent_thought_chunk";
|
|
261
264
|
text = event.assistantMessageEvent.delta;
|
|
262
265
|
if (text.length > 0 && progress) {
|
|
263
266
|
progress.thoughtEmitted = true;
|
|
264
267
|
}
|
|
265
268
|
break;
|
|
269
|
+
}
|
|
266
270
|
case "done":
|
|
267
271
|
if (progress?.textEmitted) {
|
|
268
272
|
return [];
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
* - Esc: clear search (if any) or close dashboard
|
|
15
15
|
* - Ctrl+R: reload discovered agents
|
|
16
16
|
*/
|
|
17
|
+
|
|
17
18
|
import * as fs from "node:fs/promises";
|
|
18
19
|
import * as path from "node:path";
|
|
19
20
|
import type { AgentMessage } from "@prometheus-ai/agent-core";
|
|
@@ -194,7 +195,7 @@ class AgentListPane implements Component {
|
|
|
194
195
|
private readonly maxVisible: number,
|
|
195
196
|
) {}
|
|
196
197
|
|
|
197
|
-
render(width: number): string[] {
|
|
198
|
+
render(width: number): readonly string[] {
|
|
198
199
|
const lines: string[] = [];
|
|
199
200
|
const searchPrefix = theme.fg("muted", "Search: ");
|
|
200
201
|
const searchText = this.searchQuery || theme.fg("dim", "type to filter");
|
|
@@ -255,7 +256,7 @@ class AgentInspectorPane implements Component {
|
|
|
255
256
|
private readonly effectiveResolution: ModelResolution | undefined,
|
|
256
257
|
) {}
|
|
257
258
|
|
|
258
|
-
render(width: number): string[] {
|
|
259
|
+
render(width: number): readonly string[] {
|
|
259
260
|
if (!this.agent) {
|
|
260
261
|
return [theme.fg("muted", "Select an agent"), theme.fg("dim", "to inspect settings")];
|
|
261
262
|
}
|
|
@@ -314,7 +315,7 @@ class TwoColumnBody implements Component {
|
|
|
314
315
|
private readonly maxHeight: number,
|
|
315
316
|
) {}
|
|
316
317
|
|
|
317
|
-
render(width: number): string[] {
|
|
318
|
+
render(width: number): readonly string[] {
|
|
318
319
|
const leftWidth = Math.floor(width * 0.5);
|
|
319
320
|
const rightWidth = width - leftWidth - 3;
|
|
320
321
|
const leftLines = this.leftPane.render(leftWidth);
|
|
@@ -507,7 +508,7 @@ export class AgentDashboard extends Container {
|
|
|
507
508
|
return Math.max(3, this.#computeBodyHeight() - 3);
|
|
508
509
|
}
|
|
509
510
|
|
|
510
|
-
override render(width: number): string[] {
|
|
511
|
+
override render(width: number): readonly string[] {
|
|
511
512
|
// Rebuild when terminal geometry changes so the full-screen overlay
|
|
512
513
|
// re-fits on resize.
|
|
513
514
|
if (this.#terminalRows() !== this.#builtRows || this.#uiWidth() !== this.#builtCols) {
|
|
@@ -516,10 +517,13 @@ export class AgentDashboard extends Container {
|
|
|
516
517
|
const lines = super.render(width);
|
|
517
518
|
// Pad to the full viewport so every state (list, edit, create) covers the
|
|
518
519
|
// screen as a true full-screen view instead of letting the transcript peek
|
|
519
|
-
// through below it.
|
|
520
|
+
// through below it. Copy before padding — the container's render result is
|
|
521
|
+
// component-owned and must not be mutated.
|
|
520
522
|
const rows = this.#terminalRows();
|
|
521
|
-
|
|
522
|
-
|
|
523
|
+
if (lines.length >= rows) return lines;
|
|
524
|
+
const padded = lines.slice();
|
|
525
|
+
while (padded.length < rows) padded.push("");
|
|
526
|
+
return padded;
|
|
523
527
|
}
|
|
524
528
|
|
|
525
529
|
#clampSelection(): void {
|
|
@@ -649,6 +653,11 @@ export class AgentDashboard extends Container {
|
|
|
649
653
|
this.#buildLayout();
|
|
650
654
|
}
|
|
651
655
|
|
|
656
|
+
#shouldSubmitCreateDescription(data: string): boolean {
|
|
657
|
+
if (matchesKey(data, "ctrl+enter")) return true;
|
|
658
|
+
return process.platform === "win32" && data === "\n" && this.#createDescription.trim().length > 0;
|
|
659
|
+
}
|
|
660
|
+
|
|
652
661
|
async #generateAgentFromDescription(rawDescription: string): Promise<void> {
|
|
653
662
|
const description = rawDescription.trim();
|
|
654
663
|
this.#createDescription = description;
|
|
@@ -1094,10 +1103,7 @@ export class AgentDashboard extends Container {
|
|
|
1094
1103
|
}
|
|
1095
1104
|
return;
|
|
1096
1105
|
}
|
|
1097
|
-
if (
|
|
1098
|
-
!this.#createGenerating &&
|
|
1099
|
-
(matchesKey(data, "ctrl+enter") || (data.charCodeAt(0) === 10 && data.length > 1))
|
|
1100
|
-
) {
|
|
1106
|
+
if (!this.#createGenerating && this.#shouldSubmitCreateDescription(data)) {
|
|
1101
1107
|
this.#submitCreateDescription();
|
|
1102
1108
|
return;
|
|
1103
1109
|
}
|