@prometheus-ai/agent 0.5.3 → 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 +39 -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/gateway-cli.d.ts +4 -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/gateway.d.ts +3 -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 +1211 -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/gateway/adapters/telegram/access.d.ts +4 -1
- package/dist/types/gateway/adapters/telegram/setup-api.d.ts +1 -1
- package/dist/types/gateway/adapters/telegram/webhook.d.ts +1 -1
- package/dist/types/gateway/types.d.ts +1 -1
- 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/gateway-cli.ts +32 -2
- 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/gateway.ts +4 -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 +1445 -382
- 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/gateway/adapters/telegram/access.ts +39 -4
- package/src/gateway/adapters/telegram/normalize.ts +16 -1
- package/src/gateway/adapters/telegram/setup-api.ts +7 -1
- package/src/gateway/adapters/telegram/webhook.ts +26 -5
- package/src/gateway/context.ts +9 -1
- package/src/gateway/types.ts +1 -1
- 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 +11 -9
- 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/telegram.ts +77 -22
- package/src/modes/setup-wizard/scenes/theme.ts +29 -2
- package/src/modes/setup-wizard/scenes/types.ts +11 -2
- package/src/modes/setup-wizard/scenes/web-search.ts +26 -9
- package/src/modes/setup-wizard/wizard-overlay.ts +40 -3
- package/src/modes/shared.ts +2 -0
- package/src/modes/theme/defaults/dark-poimandres.json +1 -1
- package/src/modes/theme/defaults/light-poimandres.json +1 -1
- package/src/modes/theme/shimmer.ts +20 -9
- package/src/modes/theme/theme-schema.json +1 -1
- package/src/modes/theme/theme.ts +342 -82
- package/src/modes/types.ts +60 -18
- package/src/modes/utils/context-usage.ts +88 -8
- package/src/modes/utils/copy-targets.ts +133 -27
- package/src/modes/utils/hotkeys-markdown.ts +3 -2
- package/src/modes/utils/ui-helpers.ts +191 -110
- package/src/modes/workflow.ts +10 -10
- package/src/plan-mode/approved-plan.ts +66 -43
- package/src/plan-mode/plan-protection.ts +4 -4
- package/src/priority.json +5 -1
- package/src/prompts/agents/designer.md +1 -1
- package/src/prompts/agents/explore.md +3 -3
- package/src/prompts/agents/librarian.md +2 -3
- package/src/prompts/agents/oracle.md +2 -2
- package/src/prompts/agents/plan.md +6 -6
- package/src/prompts/agents/reviewer.md +1 -1
- package/src/prompts/agents/task.md +6 -5
- package/src/prompts/bench.md +12 -0
- package/src/prompts/ci-green-request.md +5 -7
- package/src/prompts/goals/goal-budget-limit.md +2 -2
- package/src/prompts/goals/goal-continuation.md +4 -4
- package/src/prompts/goals/goal-mode-active.md +1 -1
- package/src/prompts/goals/guided-goal-interview.md +8 -0
- package/src/prompts/goals/guided-goal-system.md +12 -0
- package/src/prompts/memories/consolidation.md +2 -7
- package/src/prompts/memories/consolidation_system.md +4 -0
- package/src/prompts/memories/identity_review.md +2 -2
- package/src/prompts/memories/read-path.md +11 -10
- package/src/prompts/memories/stage_one_system.md +2 -2
- package/src/prompts/review-custom-request.md +1 -1
- package/src/prompts/system/agent-creation-architect.md +2 -2
- package/src/prompts/system/auto-continue.md +1 -1
- package/src/prompts/system/autolearn-guidance-learn.md +1 -0
- package/src/prompts/system/autolearn-guidance.md +7 -0
- package/src/prompts/system/autolearn-nudge.md +3 -0
- package/src/prompts/system/background-tan-dispatch.md +8 -0
- package/src/prompts/system/btw-user.md +2 -2
- package/src/prompts/system/commit-message-system.md +13 -1
- package/src/prompts/system/custom-system-prompt.md +1 -1
- package/src/prompts/system/eager-task.md +7 -0
- package/src/prompts/system/eager-todo.md +11 -6
- package/src/prompts/system/empty-stop-retry.md +4 -6
- package/src/prompts/system/irc-autoreply.md +6 -0
- package/src/prompts/system/irc-incoming.md +3 -4
- package/src/prompts/system/manual-continue.md +7 -0
- package/src/prompts/system/omfg-user.md +3 -4
- package/src/prompts/system/orchestrate-notice.md +10 -10
- package/src/prompts/system/personalities/default.md +26 -0
- package/src/prompts/system/personalities/friendly.md +17 -0
- package/src/prompts/system/personalities/pragmatic.md +15 -0
- package/src/prompts/system/plan-mode-active.md +70 -77
- package/src/prompts/system/plan-mode-approved.md +1 -1
- package/src/prompts/system/plan-mode-subagent.md +4 -5
- package/src/prompts/system/plan-mode-tool-decision-reminder.md +1 -1
- package/src/prompts/system/project-prompt.md +2 -2
- package/src/prompts/system/snapcompact-context-frames-note.md +1 -0
- package/src/prompts/system/snapcompact-context-stub.md +1 -0
- package/src/prompts/system/snapcompact-system-frames-note.md +1 -0
- package/src/prompts/system/snapcompact-system-stub.md +1 -0
- package/src/prompts/system/snapcompact-toolresult-note.md +1 -0
- package/src/prompts/system/subagent-system-prompt.md +7 -8
- package/src/prompts/system/system-prompt.md +28 -57
- package/src/prompts/system/tiny-title-system.md +1 -1
- package/src/prompts/system/title-marker-instruction.md +1 -0
- package/src/prompts/system/title-system-marker.md +16 -0
- package/src/prompts/system/title-system.md +16 -3
- package/src/prompts/system/ttsr-tool-reminder.md +1 -1
- package/src/prompts/system/workflow-notice.md +4 -4
- package/src/prompts/tools/ast-edit.md +1 -1
- package/src/prompts/tools/ast-grep.md +2 -2
- package/src/prompts/tools/bash.md +16 -8
- package/src/prompts/tools/browser.md +33 -43
- package/src/prompts/tools/debug.md +1 -1
- package/src/prompts/tools/eval.md +31 -51
- package/src/prompts/tools/find.md +0 -1
- package/src/prompts/tools/github.md +8 -7
- package/src/prompts/tools/goal.md +1 -1
- package/src/prompts/tools/image-gen.md +1 -1
- package/src/prompts/tools/inspect-image-system.md +1 -1
- package/src/prompts/tools/irc.md +39 -31
- package/src/prompts/tools/job.md +2 -1
- package/src/prompts/tools/learn.md +7 -0
- package/src/prompts/tools/lsp-late-diagnostic.md +8 -0
- package/src/prompts/tools/lsp.md +2 -2
- package/src/prompts/tools/manage-skill.md +9 -0
- package/src/prompts/tools/memory-edit.md +1 -1
- package/src/prompts/tools/patch.md +2 -2
- package/src/prompts/tools/read.md +31 -39
- package/src/prompts/tools/recall.md +1 -1
- package/src/prompts/tools/reflect.md +1 -1
- package/src/prompts/tools/render-mermaid.md +2 -2
- package/src/prompts/tools/replace.md +4 -10
- package/src/prompts/tools/rewind.md +2 -2
- package/src/prompts/tools/search-tool-bm25.md +1 -9
- package/src/prompts/tools/search.md +0 -1
- package/src/prompts/tools/ssh.md +0 -4
- package/src/prompts/tools/task-summary.md +5 -16
- package/src/prompts/tools/task.md +47 -31
- package/src/prompts/tools/todo.md +6 -3
- package/src/registry/agent-lifecycle.ts +218 -0
- package/src/registry/agent-registry.ts +46 -5
- package/src/sdk.ts +692 -219
- package/src/secrets/index.ts +8 -1
- package/src/secrets/obfuscator.ts +40 -19
- package/src/session/agent-session.ts +1577 -806
- package/src/session/agent-storage.ts +18 -9
- package/src/session/auth-broker-config.ts +30 -1
- package/src/session/auth-storage.ts +6 -0
- package/src/session/codex-auto-reset.ts +202 -0
- package/src/session/history-storage.ts +3 -2
- package/src/session/indexed-session-storage.ts +7 -10
- package/src/session/messages.ts +59 -95
- package/src/session/session-context.ts +352 -0
- package/src/session/session-dump-format.ts +12 -3
- package/src/session/session-entries.ts +194 -0
- package/src/session/session-history-format.ts +246 -0
- package/src/session/session-listing.ts +588 -0
- package/src/session/session-loader.ts +106 -0
- package/src/session/session-manager.ts +1003 -2920
- package/src/session/session-migrations.ts +78 -0
- package/src/session/session-paths.ts +193 -0
- package/src/session/session-persistence.ts +131 -0
- package/src/session/session-storage.ts +91 -30
- package/src/session/snapcompact-inline.ts +542 -0
- package/src/session/snapcompact-savings-journal.ts +113 -0
- package/src/session/streaming-output.ts +248 -11
- package/src/session/tool-choice-queue.ts +23 -11
- package/src/session/yield-queue.ts +20 -2
- package/src/slash-commands/acp-builtins.ts +25 -1
- package/src/slash-commands/available-commands.ts +105 -0
- package/src/slash-commands/builtin-registry.ts +575 -49
- package/src/slash-commands/helpers/active-oauth-account.ts +44 -0
- package/src/slash-commands/helpers/context-report.ts +28 -1
- package/src/slash-commands/helpers/logout.ts +88 -0
- package/src/slash-commands/helpers/reset-usage.ts +66 -0
- package/src/slash-commands/helpers/stats-dashboard.ts +85 -0
- package/src/slash-commands/helpers/usage-report.ts +38 -3
- package/src/slash-commands/types.ts +5 -9
- package/src/ssh/connection-manager.ts +27 -0
- package/src/ssh/ssh-executor.ts +60 -4
- package/src/stt/asr-client.ts +520 -0
- package/src/stt/asr-protocol.ts +65 -0
- package/src/stt/asr-worker.ts +790 -0
- package/src/stt/downloader.ts +107 -47
- package/src/stt/endpointer.ts +259 -0
- package/src/stt/index.ts +5 -1
- package/src/stt/models.ts +150 -0
- package/src/stt/recorder.ts +254 -67
- package/src/stt/stt-controller.ts +201 -22
- package/src/stt/transcriber.ts +37 -68
- package/src/stt/wav.ts +173 -0
- package/src/system-prompt.ts +52 -10
- package/src/task/agents.ts +3 -4
- package/src/task/commands.ts +3 -2
- package/src/task/discovery.ts +17 -24
- package/src/task/executor.ts +1054 -529
- package/src/task/index.ts +862 -757
- package/src/task/output-manager.ts +0 -11
- package/src/task/parallel.ts +3 -3
- package/src/task/prometheus-command.ts +2 -2
- package/src/task/render.ts +529 -182
- package/src/task/repair-args.ts +21 -9
- package/src/task/types.ts +144 -66
- package/src/task/worktree.ts +64 -56
- package/src/telemetry-export.ts +27 -9
- package/src/thinking.ts +9 -7
- package/src/tiny/models.ts +2 -2
- package/src/tiny/text.ts +5 -1
- package/src/tiny/title-client.ts +72 -20
- package/src/tiny/title-protocol.ts +1 -1
- package/src/tiny/worker.ts +23 -99
- package/src/tool-discovery/tool-index.ts +2 -0
- package/src/tools/archive-reader.ts +94 -2
- package/src/tools/ask.ts +234 -177
- package/src/tools/ast-edit.ts +136 -80
- package/src/tools/ast-grep.ts +41 -45
- package/src/tools/auto-generated-guard.ts +20 -3
- package/src/tools/bash-interactive.ts +28 -8
- package/src/tools/bash.ts +198 -35
- package/src/tools/browser/attach.ts +26 -7
- package/src/tools/browser/cmux/cmux-tab.ts +1264 -0
- package/src/tools/browser/cmux/rpc.ts +156 -0
- package/src/tools/browser/cmux/socket-client.ts +309 -0
- package/src/tools/browser/launch.ts +11 -2
- package/src/tools/browser/readable.ts +19 -2
- package/src/tools/browser/registry.ts +52 -5
- package/src/tools/browser/render.ts +13 -5
- package/src/tools/browser/tab-protocol.ts +2 -0
- package/src/tools/browser/tab-supervisor.ts +256 -34
- package/src/tools/browser/tab-worker.ts +259 -91
- package/src/tools/browser.ts +44 -2
- package/src/tools/checkpoint.ts +1 -1
- package/src/tools/conflict-detect.ts +50 -4
- package/src/tools/debug.ts +27 -12
- package/src/tools/eval-render.ts +32 -35
- package/src/tools/eval.ts +26 -12
- package/src/tools/fetch.ts +450 -99
- package/src/tools/find.ts +182 -142
- package/src/tools/gh-cache-invalidation.ts +255 -0
- package/src/tools/gh-renderer.ts +104 -51
- package/src/tools/gh.ts +232 -37
- package/src/tools/github-cache.ts +97 -7
- package/src/tools/grouped-file-output.ts +159 -52
- package/src/tools/image-gen.ts +237 -132
- package/src/tools/index.ts +147 -26
- package/src/tools/inspect-image-renderer.ts +74 -45
- package/src/tools/inspect-image.ts +12 -6
- package/src/tools/irc.ts +626 -173
- package/src/tools/job.ts +106 -29
- package/src/tools/learn.ts +144 -0
- package/src/tools/manage-skill.ts +104 -0
- package/src/tools/memory-edit.ts +4 -4
- package/src/tools/memory-recall.ts +7 -9
- package/src/tools/memory-reflect.ts +5 -9
- package/src/tools/memory-render.ts +23 -6
- package/src/tools/memory-retain.ts +4 -4
- package/src/tools/path-utils.ts +102 -48
- package/src/tools/plan-mode-guard.ts +101 -40
- package/src/tools/read.ts +475 -120
- package/src/tools/render-mermaid.ts +1 -1
- package/src/tools/render-utils.ts +132 -76
- package/src/tools/renderers.ts +12 -1
- package/src/tools/report-tool-issue.ts +14 -6
- package/src/tools/resolve.ts +20 -3
- package/src/tools/review.ts +2 -2
- package/src/tools/search-tool-bm25.ts +37 -24
- package/src/tools/search.ts +233 -115
- package/src/tools/sqlite-reader.ts +26 -17
- package/src/tools/ssh.ts +20 -14
- package/src/tools/todo.ts +197 -191
- package/src/tools/tool-result.ts +8 -0
- package/src/tools/tool-timeouts.ts +1 -1
- package/src/tools/tts.ts +205 -74
- package/src/tools/write.ts +291 -155
- package/src/tools/yield.ts +10 -1
- package/src/tts/downloader.ts +64 -0
- package/src/tts/index.ts +8 -0
- package/src/tts/models.ts +137 -0
- package/src/tts/player.ts +137 -0
- package/src/tts/runtime.ts +21 -0
- package/src/tts/streaming-player.ts +266 -0
- package/src/tts/tts-client.ts +647 -0
- package/src/tts/tts-protocol.ts +60 -0
- package/src/tts/tts-worker.ts +505 -0
- package/src/tts/vocalizer.ts +162 -0
- package/src/tts/wav.ts +58 -0
- package/src/tui/code-cell.ts +2 -7
- package/src/tui/hyperlink.ts +40 -26
- package/src/tui/output-block.ts +60 -108
- package/src/tui/status-line.ts +5 -1
- package/src/utils/block-context.ts +312 -0
- package/src/utils/changelog.ts +27 -1
- package/src/utils/clipboard.ts +91 -22
- package/src/utils/commit-message-generator.ts +8 -3
- package/src/utils/enhanced-paste.ts +230 -0
- package/src/utils/file-mentions.ts +3 -1
- package/src/utils/git.ts +315 -15
- package/src/utils/image-loading.ts +65 -4
- package/src/utils/session-color.ts +83 -9
- package/src/utils/thinking-display.ts +37 -0
- package/src/utils/title-generator.ts +73 -10
- package/src/utils/tool-choice.ts +16 -0
- package/src/utils/tools-manager.ts +19 -1
- package/src/web/kagi.ts +28 -26
- package/src/web/parallel.ts +7 -3
- package/src/web/scrapers/arxiv.ts +1 -1
- package/src/web/scrapers/github.ts +351 -3
- package/src/web/scrapers/go-pkg.ts +1 -1
- package/src/web/scrapers/iacr.ts +1 -1
- package/src/web/scrapers/readthedocs.ts +1 -1
- package/src/web/scrapers/twitter.ts +2 -1
- package/src/web/scrapers/types.ts +87 -8
- package/src/web/scrapers/wikipedia.ts +1 -1
- package/src/web/scrapers/youtube.ts +9 -3
- package/src/web/search/index.ts +15 -2
- package/src/web/search/providers/anthropic.ts +62 -21
- package/src/web/search/providers/base.ts +2 -1
- package/src/web/search/providers/brave.ts +5 -2
- package/src/web/search/providers/codex.ts +87 -51
- package/src/web/search/providers/exa.ts +101 -10
- package/src/web/search/providers/gemini.ts +49 -24
- package/src/web/search/providers/jina.ts +15 -5
- package/src/web/search/providers/kagi.ts +9 -2
- package/src/web/search/providers/kimi.ts +45 -20
- package/src/web/search/providers/parallel.ts +39 -24
- package/src/web/search/providers/perplexity.ts +226 -63
- package/src/web/search/providers/searxng.ts +19 -3
- package/src/web/search/providers/synthetic.ts +16 -11
- package/src/web/search/providers/tavily.ts +12 -9
- package/src/web/search/providers/zai.ts +22 -9
- package/src/web/search/render.ts +59 -64
- package/src/web/search/types.ts +5 -1
- package/dist/types/discovery/context-files.d.ts +0 -17
- package/dist/types/exa/factory.d.ts +0 -13
- package/dist/types/exa/render.d.ts +0 -19
- package/dist/types/exa/researcher.d.ts +0 -9
- package/dist/types/exa/search.d.ts +0 -9
- package/dist/types/exa/websets.d.ts +0 -9
- package/dist/types/export/html/template.generated.d.ts +0 -1
- package/dist/types/modes/components/session-observer-overlay.d.ts +0 -11
- package/dist/types/modes/components/status-line.d.ts +0 -77
- package/dist/types/slash-commands/headless-plan.d.ts +0 -3
- package/dist/types/stt/setup.d.ts +0 -18
- package/scripts/generate-template.ts +0 -33
- package/src/discovery/context-files.ts +0 -49
- package/src/exa/factory.ts +0 -60
- package/src/exa/render.ts +0 -244
- package/src/exa/researcher.ts +0 -36
- package/src/exa/search.ts +0 -47
- package/src/exa/websets.ts +0 -248
- package/src/export/html/template.generated.ts +0 -2
- package/src/modes/components/session-observer-overlay.ts +0 -852
- package/src/slash-commands/headless-plan.ts +0 -142
- package/src/stt/setup.ts +0 -52
- package/src/stt/transcribe.py +0 -70
- /package/dist/types/extensibility/{legacy-pi-coding-agent-shim.d.ts → legacy-package-agent-shim.d.ts} +0 -0
- /package/src/extensibility/{legacy-pi-coding-agent-shim.ts → legacy-package-agent-shim.ts} +0 -0
package/src/lsp/index.ts
CHANGED
|
@@ -39,8 +39,8 @@ import {
|
|
|
39
39
|
flattenWorkspaceTextEdits,
|
|
40
40
|
rangesOverlap,
|
|
41
41
|
} from "./edits";
|
|
42
|
+
import { resolveFormatOptions } from "./format-options";
|
|
42
43
|
import { detectLspmux } from "./lspmux";
|
|
43
|
-
import { renderCall, renderResult } from "./render";
|
|
44
44
|
import {
|
|
45
45
|
type CodeAction,
|
|
46
46
|
type CodeActionContext,
|
|
@@ -106,7 +106,7 @@ export const LSP_READONLY_ACTIONS: ReadonlySet<string> = new Set([
|
|
|
106
106
|
|
|
107
107
|
export interface LspStartupServerInfo {
|
|
108
108
|
name: string;
|
|
109
|
-
status: "connecting" | "ready" | "error";
|
|
109
|
+
status: "connecting" | "ready" | "error" | "available";
|
|
110
110
|
fileTypes: string[];
|
|
111
111
|
error?: string;
|
|
112
112
|
}
|
|
@@ -122,11 +122,14 @@ export interface LspWarmupOptions {
|
|
|
122
122
|
onConnecting?: (serverNames: string[]) => void;
|
|
123
123
|
}
|
|
124
124
|
|
|
125
|
-
export function discoverStartupLspServers(
|
|
125
|
+
export function discoverStartupLspServers(
|
|
126
|
+
cwd: string,
|
|
127
|
+
status: LspStartupServerInfo["status"] = "connecting",
|
|
128
|
+
): LspStartupServerInfo[] {
|
|
126
129
|
const config = loadConfig(cwd);
|
|
127
130
|
return getLspServers(config).map(([name, serverConfig]) => ({
|
|
128
131
|
name,
|
|
129
|
-
status
|
|
132
|
+
status,
|
|
130
133
|
fileTypes: serverConfig.fileTypes,
|
|
131
134
|
}));
|
|
132
135
|
}
|
|
@@ -302,6 +305,22 @@ function isProjectAwareLspServer(serverConfig: ServerConfig): boolean {
|
|
|
302
305
|
const DIAGNOSTIC_MESSAGE_LIMIT = 50;
|
|
303
306
|
const SINGLE_DIAGNOSTICS_WAIT_TIMEOUT_MS = 3000;
|
|
304
307
|
const BATCH_DIAGNOSTICS_WAIT_TIMEOUT_MS = 400;
|
|
308
|
+
const DIAGNOSTICS_POLL_MS = 100;
|
|
309
|
+
const DIAGNOSTICS_SETTLE_MS = 250;
|
|
310
|
+
/**
|
|
311
|
+
* How long the edit/write writethrough blocks inline waiting for fresh
|
|
312
|
+
* diagnostics before handing slow servers off to the deferred late-injection
|
|
313
|
+
* channel. Keeps the common fast-server case inline while letting an edit
|
|
314
|
+
* return promptly when a server (e.g. a large-monorepo tsserver) is slow to
|
|
315
|
+
* publish fresh diagnostics.
|
|
316
|
+
*/
|
|
317
|
+
const INLINE_DIAGNOSTICS_WAIT_TIMEOUT_MS = 500;
|
|
318
|
+
/**
|
|
319
|
+
* Inner per-server diagnostics wait budget for the background/deferred fetch.
|
|
320
|
+
* Longer than the inline cap (and the old 3s default) so a slow server still
|
|
321
|
+
* delivers late instead of giving up before it ever publishes.
|
|
322
|
+
*/
|
|
323
|
+
const DEFERRED_DIAGNOSTICS_WAIT_TIMEOUT_MS = 12_000;
|
|
305
324
|
const MAX_GLOB_DIAGNOSTIC_TARGETS = 20;
|
|
306
325
|
const WORKSPACE_SYMBOL_LIMIT = 200;
|
|
307
326
|
const PROJECT_INDEXED_ACTIONS: ReadonlySet<string> = new Set([
|
|
@@ -439,21 +458,23 @@ function isMethodNotFoundError(err: unknown): boolean {
|
|
|
439
458
|
}
|
|
440
459
|
|
|
441
460
|
async function reloadServer(client: LspClient, serverName: string, signal?: AbortSignal): Promise<string> {
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
break;
|
|
449
|
-
} catch {
|
|
450
|
-
// Method not supported, try next
|
|
451
|
-
}
|
|
461
|
+
// rust-analyzer exposes a real reload request.
|
|
462
|
+
try {
|
|
463
|
+
await sendRequest(client, "rust-analyzer/reloadWorkspace", null, signal);
|
|
464
|
+
return `Reloaded ${serverName}`;
|
|
465
|
+
} catch {
|
|
466
|
+
// Method not supported — fall through.
|
|
452
467
|
}
|
|
453
|
-
|
|
468
|
+
// workspace/didChangeConfiguration is a notification per spec; sending it
|
|
469
|
+
// as a request hangs until the tool deadline on servers that route it to
|
|
470
|
+
// the notification handler and never respond.
|
|
471
|
+
try {
|
|
472
|
+
await sendNotification(client, "workspace/didChangeConfiguration", { settings: {} });
|
|
473
|
+
return `Reloaded ${serverName}`;
|
|
474
|
+
} catch {
|
|
454
475
|
client.proc.kill();
|
|
476
|
+
return `Restarted ${serverName}`;
|
|
455
477
|
}
|
|
456
|
-
return output;
|
|
457
478
|
}
|
|
458
479
|
|
|
459
480
|
interface WaitForDiagnosticsOptions {
|
|
@@ -461,27 +482,15 @@ interface WaitForDiagnosticsOptions {
|
|
|
461
482
|
signal?: AbortSignal;
|
|
462
483
|
minVersion?: number;
|
|
463
484
|
expectedDocumentVersion?: number;
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
return undefined;
|
|
474
|
-
}
|
|
475
|
-
if (expectedDocumentVersion === undefined) {
|
|
476
|
-
return publishedDiagnostics.diagnostics;
|
|
477
|
-
}
|
|
478
|
-
if (publishedDiagnostics.version === expectedDocumentVersion) {
|
|
479
|
-
return publishedDiagnostics.diagnostics;
|
|
480
|
-
}
|
|
481
|
-
if (allowUnversioned && publishedDiagnostics.version == null) {
|
|
482
|
-
return publishedDiagnostics.diagnostics;
|
|
483
|
-
}
|
|
484
|
-
return undefined;
|
|
485
|
+
/**
|
|
486
|
+
* Quiescence window (ms). typescript-language-server never echoes the document
|
|
487
|
+
* version (issue #983) and emits diagnostics from several sources at different
|
|
488
|
+
* times, so there is no single "complete, version-matched" publish to gate on.
|
|
489
|
+
* When the server does not exact-version-match, accept the latest publish only
|
|
490
|
+
* after no newer one has arrived for this long, letting an in-flight pre-edit
|
|
491
|
+
* publish be superseded by the fresh one.
|
|
492
|
+
*/
|
|
493
|
+
settleMs?: number;
|
|
485
494
|
}
|
|
486
495
|
|
|
487
496
|
async function waitForDiagnostics(
|
|
@@ -489,26 +498,35 @@ async function waitForDiagnostics(
|
|
|
489
498
|
uri: string,
|
|
490
499
|
options: WaitForDiagnosticsOptions = {},
|
|
491
500
|
): Promise<Diagnostic[]> {
|
|
492
|
-
const { timeoutMs = 3000, signal, minVersion, expectedDocumentVersion,
|
|
501
|
+
const { timeoutMs = 3000, signal, minVersion, expectedDocumentVersion, settleMs = DIAGNOSTICS_SETTLE_MS } = options;
|
|
493
502
|
const start = Date.now();
|
|
503
|
+
let settledRef: PublishedDiagnostics | undefined;
|
|
504
|
+
let settledAt = 0;
|
|
494
505
|
while (Date.now() - start < timeoutMs) {
|
|
495
506
|
throwIfAborted(signal);
|
|
496
507
|
const versionOk = minVersion === undefined || client.diagnosticsVersion > minVersion;
|
|
497
|
-
const
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
508
|
+
const published = client.diagnostics.get(uri);
|
|
509
|
+
if (published && versionOk) {
|
|
510
|
+
// Server honored our exact document version → authoritative, accept now.
|
|
511
|
+
if (expectedDocumentVersion !== undefined && published.version === expectedDocumentVersion) {
|
|
512
|
+
return published.diagnostics;
|
|
513
|
+
}
|
|
514
|
+
// Unversioned/mismatched publish: wait for the stream to go quiet so an
|
|
515
|
+
// in-flight publish for the pre-edit content is superseded by the fresh one.
|
|
516
|
+
if (published !== settledRef) {
|
|
517
|
+
settledRef = published;
|
|
518
|
+
settledAt = Date.now();
|
|
519
|
+
} else if (Date.now() - settledAt >= settleMs) {
|
|
520
|
+
return published.diagnostics;
|
|
521
|
+
}
|
|
504
522
|
}
|
|
505
|
-
await Bun.sleep(
|
|
523
|
+
await Bun.sleep(DIAGNOSTICS_POLL_MS);
|
|
506
524
|
}
|
|
507
525
|
const versionOk = minVersion === undefined || client.diagnosticsVersion > minVersion;
|
|
508
526
|
if (!versionOk) {
|
|
509
527
|
return [];
|
|
510
528
|
}
|
|
511
|
-
return
|
|
529
|
+
return client.diagnostics.get(uri)?.diagnostics ?? [];
|
|
512
530
|
}
|
|
513
531
|
|
|
514
532
|
/** Project type detection result */
|
|
@@ -613,7 +631,8 @@ interface GetDiagnosticsForFileOptions {
|
|
|
613
631
|
signal?: AbortSignal;
|
|
614
632
|
minVersions?: ServerVersionMap;
|
|
615
633
|
expectedDocumentVersions?: ServerVersionMap;
|
|
616
|
-
|
|
634
|
+
/** Per-server wait budget (ms). Defaults to {@link SINGLE_DIAGNOSTICS_WAIT_TIMEOUT_MS}. */
|
|
635
|
+
timeoutMs?: number;
|
|
617
636
|
}
|
|
618
637
|
|
|
619
638
|
/**
|
|
@@ -623,12 +642,13 @@ interface GetDiagnosticsForFileOptions {
|
|
|
623
642
|
async function captureDiagnosticVersions(
|
|
624
643
|
cwd: string,
|
|
625
644
|
servers: Array<[string, ServerConfig]>,
|
|
645
|
+
initTimeoutMs?: number,
|
|
626
646
|
): Promise<ServerVersionMap> {
|
|
627
647
|
const versions = new Map<string, number>();
|
|
628
648
|
await Promise.allSettled(
|
|
629
649
|
servers.map(async ([serverName, serverConfig]) => {
|
|
630
650
|
if (serverConfig.createClient) return;
|
|
631
|
-
const client = await getOrCreateClient(serverConfig, cwd);
|
|
651
|
+
const client = await getOrCreateClient(serverConfig, cwd, initTimeoutMs);
|
|
632
652
|
versions.set(serverName, client.diagnosticsVersion);
|
|
633
653
|
}),
|
|
634
654
|
);
|
|
@@ -669,7 +689,7 @@ async function getDiagnosticsForFile(
|
|
|
669
689
|
servers: Array<[string, ServerConfig]>,
|
|
670
690
|
options: GetDiagnosticsForFileOptions = {},
|
|
671
691
|
): Promise<FileDiagnosticsResult | undefined> {
|
|
672
|
-
const { signal, minVersions, expectedDocumentVersions,
|
|
692
|
+
const { signal, minVersions, expectedDocumentVersions, timeoutMs } = options;
|
|
673
693
|
if (servers.length === 0) {
|
|
674
694
|
return undefined;
|
|
675
695
|
}
|
|
@@ -701,11 +721,10 @@ async function getDiagnosticsForFile(
|
|
|
701
721
|
const minVersion = minVersions?.get(serverName);
|
|
702
722
|
const expectedDocumentVersion = expectedDocumentVersions?.get(serverName);
|
|
703
723
|
const diagnostics = await waitForDiagnostics(client, uri, {
|
|
704
|
-
timeoutMs:
|
|
724
|
+
timeoutMs: timeoutMs ?? SINGLE_DIAGNOSTICS_WAIT_TIMEOUT_MS,
|
|
705
725
|
signal,
|
|
706
726
|
minVersion,
|
|
707
727
|
expectedDocumentVersion,
|
|
708
|
-
allowUnversioned: allowUnversionedLspDiagnostics,
|
|
709
728
|
});
|
|
710
729
|
return { serverName, diagnostics };
|
|
711
730
|
}),
|
|
@@ -761,15 +780,6 @@ export enum FileFormatResult {
|
|
|
761
780
|
FORMATTED = "formatted",
|
|
762
781
|
}
|
|
763
782
|
|
|
764
|
-
/** Default formatting options for LSP */
|
|
765
|
-
const DEFAULT_FORMAT_OPTIONS = {
|
|
766
|
-
tabSize: 3,
|
|
767
|
-
insertSpaces: true,
|
|
768
|
-
trimTrailingWhitespace: true,
|
|
769
|
-
insertFinalNewline: true,
|
|
770
|
-
trimFinalNewlines: true,
|
|
771
|
-
};
|
|
772
|
-
|
|
773
783
|
/**
|
|
774
784
|
* Format content using LSP or custom linter client.
|
|
775
785
|
*
|
|
@@ -816,7 +826,7 @@ async function formatContent(
|
|
|
816
826
|
"textDocument/formatting",
|
|
817
827
|
{
|
|
818
828
|
textDocument: { uri },
|
|
819
|
-
options:
|
|
829
|
+
options: resolveFormatOptions(absolutePath, content),
|
|
820
830
|
},
|
|
821
831
|
signal,
|
|
822
832
|
)) as TextEdit[] | null;
|
|
@@ -1007,6 +1017,7 @@ async function scheduleDeferredDiagnosticsFetch(args: {
|
|
|
1007
1017
|
signal: combined,
|
|
1008
1018
|
minVersions: args.minVersions,
|
|
1009
1019
|
expectedDocumentVersions: args.expectedDocumentVersions,
|
|
1020
|
+
timeoutMs: DEFERRED_DIAGNOSTICS_WAIT_TIMEOUT_MS,
|
|
1010
1021
|
});
|
|
1011
1022
|
if (args.signal.aborted || diagnostics === undefined) return;
|
|
1012
1023
|
args.callback(diagnostics);
|
|
@@ -1015,6 +1026,70 @@ async function scheduleDeferredDiagnosticsFetch(args: {
|
|
|
1015
1026
|
}
|
|
1016
1027
|
}
|
|
1017
1028
|
|
|
1029
|
+
/**
|
|
1030
|
+
* Fetch post-write diagnostics without making the edit/write block on a slow
|
|
1031
|
+
* language server.
|
|
1032
|
+
*
|
|
1033
|
+
* Blocks inline only briefly ({@link INLINE_DIAGNOSTICS_WAIT_TIMEOUT_MS}) for a
|
|
1034
|
+
* fresh result. Freshness is enforced by the pre-edit `minVersions` baseline:
|
|
1035
|
+
* exact document-version matches return immediately, and unversioned/mismatched
|
|
1036
|
+
* publishes must settle with no newer publish before inline acceptance. If
|
|
1037
|
+
* nothing fresh arrives in the inline window and a deferred
|
|
1038
|
+
* channel is available, the in-flight fetch is handed off to deliver late via
|
|
1039
|
+
* `onDeferredDiagnostics`, and this returns `undefined` so the tool result
|
|
1040
|
+
* lands immediately. Without a deferred channel (direct/CI callers) it blocks
|
|
1041
|
+
* for the standard budget so the result is still returned inline.
|
|
1042
|
+
*/
|
|
1043
|
+
async function fetchDiagnosticsWithDeferral(args: {
|
|
1044
|
+
dst: string;
|
|
1045
|
+
cwd: string;
|
|
1046
|
+
servers: Array<[string, ServerConfig]>;
|
|
1047
|
+
minVersions: ServerVersionMap | undefined;
|
|
1048
|
+
expectedDocumentVersions: ServerVersionMap | undefined;
|
|
1049
|
+
transformDiagnostics?: ResolvedWritethroughOptions["transformDiagnostics"];
|
|
1050
|
+
deferred?: { onDeferredDiagnostics: (diagnostics: FileDiagnosticsResult) => void; signal: AbortSignal };
|
|
1051
|
+
signal?: AbortSignal;
|
|
1052
|
+
}): Promise<FileDiagnosticsResult | undefined> {
|
|
1053
|
+
const { dst, cwd, servers, minVersions, expectedDocumentVersions, transformDiagnostics, deferred, signal } = args;
|
|
1054
|
+
const apply = (d: FileDiagnosticsResult | undefined) =>
|
|
1055
|
+
d && transformDiagnostics ? transformDiagnostics(dst, d) : d;
|
|
1056
|
+
|
|
1057
|
+
if (!deferred) {
|
|
1058
|
+
// No late-injection channel: block for the standard budget and return inline.
|
|
1059
|
+
return apply(
|
|
1060
|
+
await getDiagnosticsForFile(dst, cwd, servers, {
|
|
1061
|
+
signal,
|
|
1062
|
+
minVersions,
|
|
1063
|
+
expectedDocumentVersions,
|
|
1064
|
+
}),
|
|
1065
|
+
);
|
|
1066
|
+
}
|
|
1067
|
+
|
|
1068
|
+
// One background fetch with a generous inner budget; await it only briefly inline.
|
|
1069
|
+
const fetchPromise = getDiagnosticsForFile(dst, cwd, servers, {
|
|
1070
|
+
signal: deferred.signal,
|
|
1071
|
+
minVersions,
|
|
1072
|
+
expectedDocumentVersions,
|
|
1073
|
+
timeoutMs: DEFERRED_DIAGNOSTICS_WAIT_TIMEOUT_MS,
|
|
1074
|
+
});
|
|
1075
|
+
const INLINE_TIMEOUT = Symbol("inline-diagnostics-timeout");
|
|
1076
|
+
const raced = await Promise.race([
|
|
1077
|
+
fetchPromise,
|
|
1078
|
+
Bun.sleep(INLINE_DIAGNOSTICS_WAIT_TIMEOUT_MS).then(() => INLINE_TIMEOUT),
|
|
1079
|
+
]);
|
|
1080
|
+
if (raced !== INLINE_TIMEOUT) {
|
|
1081
|
+
return apply(raced as FileDiagnosticsResult | undefined);
|
|
1082
|
+
}
|
|
1083
|
+
// Slow server: deliver late via the deferred channel; nothing inline. The
|
|
1084
|
+
// deferred sink (edit tool) applies its own dedup, so pass the raw result.
|
|
1085
|
+
void fetchPromise
|
|
1086
|
+
.then(diagnostics => {
|
|
1087
|
+
if (diagnostics && !deferred.signal.aborted) deferred.onDeferredDiagnostics(diagnostics);
|
|
1088
|
+
})
|
|
1089
|
+
.catch(() => {});
|
|
1090
|
+
return undefined;
|
|
1091
|
+
}
|
|
1092
|
+
|
|
1018
1093
|
async function runLspWritethrough(
|
|
1019
1094
|
dst: string,
|
|
1020
1095
|
content: string,
|
|
@@ -1041,12 +1116,15 @@ async function runLspWritethrough(
|
|
|
1041
1116
|
const useCustomFormatter = enableFormat && customLinterServers.length > 0;
|
|
1042
1117
|
|
|
1043
1118
|
// Capture diagnostic versions BEFORE syncing to detect stale diagnostics
|
|
1044
|
-
|
|
1119
|
+
// Bound client creation by the writethrough budget: a hung/broken server
|
|
1120
|
+
// must not add its full init wait (30s default) to every edit.
|
|
1121
|
+
const minVersions = enableDiagnostics ? await captureDiagnosticVersions(cwd, servers, 5_000) : undefined;
|
|
1045
1122
|
let expectedDocumentVersions: ServerVersionMap | undefined;
|
|
1046
1123
|
|
|
1047
1124
|
let formatter: FileFormatResult | undefined;
|
|
1048
1125
|
let diagnostics: FileDiagnosticsResult | undefined;
|
|
1049
1126
|
let timedOut = false;
|
|
1127
|
+
let synced = false;
|
|
1050
1128
|
try {
|
|
1051
1129
|
const timeoutSignal = AbortSignal.timeout(5_000);
|
|
1052
1130
|
timeoutSignal.addEventListener(
|
|
@@ -1090,19 +1168,8 @@ async function runLspWritethrough(
|
|
|
1090
1168
|
|
|
1091
1169
|
// 5. Notify saved to LSP servers
|
|
1092
1170
|
await notifyFileSaved(dst, cwd, lspServers, operationSignal);
|
|
1093
|
-
|
|
1094
|
-
// 6. Get diagnostics from all servers (wait for fresh results)
|
|
1095
|
-
if (enableDiagnostics) {
|
|
1096
|
-
const fetched = await getDiagnosticsForFile(dst, cwd, servers, {
|
|
1097
|
-
signal: operationSignal,
|
|
1098
|
-
minVersions,
|
|
1099
|
-
expectedDocumentVersions,
|
|
1100
|
-
allowUnversionedLspDiagnostics: false,
|
|
1101
|
-
});
|
|
1102
|
-
diagnostics =
|
|
1103
|
-
fetched && options.transformDiagnostics ? options.transformDiagnostics(dst, fetched) : fetched;
|
|
1104
|
-
}
|
|
1105
1171
|
});
|
|
1172
|
+
synced = true;
|
|
1106
1173
|
} catch {
|
|
1107
1174
|
if (timedOut) {
|
|
1108
1175
|
formatter = undefined;
|
|
@@ -1123,6 +1190,19 @@ async function runLspWritethrough(
|
|
|
1123
1190
|
await getWritePromise();
|
|
1124
1191
|
}
|
|
1125
1192
|
|
|
1193
|
+
if (synced && enableDiagnostics) {
|
|
1194
|
+
diagnostics = await fetchDiagnosticsWithDeferral({
|
|
1195
|
+
dst,
|
|
1196
|
+
cwd,
|
|
1197
|
+
servers,
|
|
1198
|
+
minVersions,
|
|
1199
|
+
expectedDocumentVersions,
|
|
1200
|
+
transformDiagnostics: options.transformDiagnostics,
|
|
1201
|
+
deferred,
|
|
1202
|
+
signal,
|
|
1203
|
+
});
|
|
1204
|
+
}
|
|
1205
|
+
|
|
1126
1206
|
if (formatter !== undefined) {
|
|
1127
1207
|
diagnostics ??= {
|
|
1128
1208
|
server: servers.map(([name]) => name).join(", "),
|
|
@@ -1229,10 +1309,6 @@ export class LspTool implements AgentTool<typeof lspSchema, LspToolDetails, Them
|
|
|
1229
1309
|
readonly summary = "Query LSP (language server) for diagnostics, hover info, and references";
|
|
1230
1310
|
readonly description: string;
|
|
1231
1311
|
readonly parameters = lspSchema;
|
|
1232
|
-
readonly renderCall = renderCall;
|
|
1233
|
-
readonly renderResult = renderResult;
|
|
1234
|
-
readonly mergeCallAndResult = true;
|
|
1235
|
-
readonly inline = true;
|
|
1236
1312
|
readonly strict = true;
|
|
1237
1313
|
|
|
1238
1314
|
constructor(private readonly session: ToolSession) {
|
|
@@ -1261,7 +1337,7 @@ export class LspTool implements AgentTool<typeof lspSchema, LspToolDetails, Them
|
|
|
1261
1337
|
|
|
1262
1338
|
// Status action doesn't need a file
|
|
1263
1339
|
if (action === "status") {
|
|
1264
|
-
const
|
|
1340
|
+
const configuredNames = Object.keys(config.servers);
|
|
1265
1341
|
const lspmuxState = await detectLspmux();
|
|
1266
1342
|
const lspmuxStatus = lspmuxState.available
|
|
1267
1343
|
? lspmuxState.running
|
|
@@ -1269,14 +1345,40 @@ export class LspTool implements AgentTool<typeof lspSchema, LspToolDetails, Them
|
|
|
1269
1345
|
: "lspmux: installed but server not running"
|
|
1270
1346
|
: "";
|
|
1271
1347
|
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1348
|
+
// `Object.keys(config.servers)` reflects what is *configured & resolvable
|
|
1349
|
+
// on PATH* — it does NOT prove the server actually starts. A wrapper
|
|
1350
|
+
// binary that exits immediately (e.g. rustup without the rust-analyzer
|
|
1351
|
+
// component) still appears here. Distinguish "configured" from
|
|
1352
|
+
// "started" (have a live in-process client) so callers cannot mistake
|
|
1353
|
+
// presence-on-PATH for a working server.
|
|
1354
|
+
const startedClients = getActiveClients();
|
|
1355
|
+
const startedByConfigName = new Map<string, LspServerStatus>();
|
|
1356
|
+
// getActiveClients() reports `name = client.config.command` (the
|
|
1357
|
+
// unresolved binary name from defaults.json), so match against
|
|
1358
|
+
// `serverConfig.command`, not the resolved path.
|
|
1359
|
+
for (const [name, serverConfig] of Object.entries(config.servers)) {
|
|
1360
|
+
const matched = startedClients.find(c => c.name === serverConfig.command);
|
|
1361
|
+
if (matched) startedByConfigName.set(name, matched);
|
|
1362
|
+
}
|
|
1363
|
+
|
|
1364
|
+
const lines: string[] = [];
|
|
1365
|
+
if (configuredNames.length === 0) {
|
|
1366
|
+
lines.push("No language servers configured for this project");
|
|
1367
|
+
} else {
|
|
1368
|
+
const labelled = configuredNames.map(name => {
|
|
1369
|
+
const started = startedByConfigName.get(name);
|
|
1370
|
+
if (!started) return `${name} (configured, not started)`;
|
|
1371
|
+
return `${name} (${started.status})`;
|
|
1372
|
+
});
|
|
1373
|
+
lines.push(`Language servers: ${labelled.join(", ")}`);
|
|
1374
|
+
lines.push(
|
|
1375
|
+
" note: 'configured, not started' means the binary resolves on PATH but no request has spawned it yet; 'ready' means a client process is live for this cwd.",
|
|
1376
|
+
);
|
|
1377
|
+
}
|
|
1378
|
+
if (lspmuxStatus) lines.push(lspmuxStatus);
|
|
1276
1379
|
|
|
1277
|
-
const output = lspmuxStatus ? `${serverStatus}\n${lspmuxStatus}` : serverStatus;
|
|
1278
1380
|
return {
|
|
1279
|
-
content: [{ type: "text", text:
|
|
1381
|
+
content: [{ type: "text", text: lines.join("\n") }],
|
|
1280
1382
|
details: { action, success: true, request: params },
|
|
1281
1383
|
};
|
|
1282
1384
|
}
|
|
@@ -1505,7 +1607,26 @@ export class LspTool implements AgentTool<typeof lspSchema, LspToolDetails, Them
|
|
|
1505
1607
|
}
|
|
1506
1608
|
|
|
1507
1609
|
const lspParams = { files: pairs };
|
|
1508
|
-
|
|
1610
|
+
// Filter to servers whose fileTypes match either the source or any
|
|
1611
|
+
// destination path. Asking every configured server about a .md/.sql/.txt
|
|
1612
|
+
// rename used to stack up willRenameFiles requests against irrelevant
|
|
1613
|
+
// language servers and hit the wall-clock timeout. A server only has
|
|
1614
|
+
// something useful to say about a rename if it understands one of the
|
|
1615
|
+
// affected file extensions.
|
|
1616
|
+
const allLspServers = getLspServers(config);
|
|
1617
|
+
const relevantNames = new Set<string>();
|
|
1618
|
+
const collectRelevant = (filePath: string) => {
|
|
1619
|
+
for (const [name] of getLspServersForFile(config, filePath)) {
|
|
1620
|
+
relevantNames.add(name);
|
|
1621
|
+
}
|
|
1622
|
+
};
|
|
1623
|
+
collectRelevant(source);
|
|
1624
|
+
collectRelevant(dest);
|
|
1625
|
+
for (const pair of pairs) {
|
|
1626
|
+
collectRelevant(uriToFile(pair.oldUri));
|
|
1627
|
+
collectRelevant(uriToFile(pair.newUri));
|
|
1628
|
+
}
|
|
1629
|
+
const servers = allLspServers.filter(([name]) => relevantNames.has(name));
|
|
1509
1630
|
const respondingServers = new Set<string>();
|
|
1510
1631
|
const perServerEdits: Array<{ serverName: string; edit: WorkspaceEdit }> = [];
|
|
1511
1632
|
const serverNotes: string[] = [];
|
|
@@ -1829,8 +1950,15 @@ export class LspTool implements AgentTool<typeof lspSchema, LspToolDetails, Them
|
|
|
1829
1950
|
throw new ToolAbortError();
|
|
1830
1951
|
}
|
|
1831
1952
|
const msg = err instanceof Error ? err.message : String(err);
|
|
1953
|
+
// Echo a (truncated) preview of the params we sent so the caller can
|
|
1954
|
+
// tell parse / shape errors (e.g. nested args dropped, missing field)
|
|
1955
|
+
// apart from genuine server errors without spinning up another debug call.
|
|
1956
|
+
const previewRaw = JSON.stringify(requestParams ?? null);
|
|
1957
|
+
const preview = previewRaw.length > 400 ? `${previewRaw.slice(0, 397)}...` : previewRaw;
|
|
1832
1958
|
return {
|
|
1833
|
-
content: [
|
|
1959
|
+
content: [
|
|
1960
|
+
{ type: "text", text: `LSP error from ${chosenName} on ${method}: ${msg}\n params: ${preview}` },
|
|
1961
|
+
],
|
|
1834
1962
|
details: { action, serverName: chosenName, success: false, request: params },
|
|
1835
1963
|
};
|
|
1836
1964
|
}
|
|
@@ -2004,6 +2132,11 @@ export class LspTool implements AgentTool<typeof lspSchema, LspToolDetails, Them
|
|
|
2004
2132
|
const position = { line: resolvedLine - 1, character: resolvedCharacter };
|
|
2005
2133
|
|
|
2006
2134
|
let output: string;
|
|
2135
|
+
// Set on bare empty-lookup outcomes (no definition/references/…): the
|
|
2136
|
+
// result carries no information once consumed, so compaction may elide
|
|
2137
|
+
// it. Clean diagnostics runs are NOT useless — they are verification
|
|
2138
|
+
// evidence.
|
|
2139
|
+
let useless = false;
|
|
2007
2140
|
|
|
2008
2141
|
if (needsProjectIndex && !isRustAnalyzerServer) {
|
|
2009
2142
|
await waitForProjectLoaded(client, signal);
|
|
@@ -2029,6 +2162,7 @@ export class LspTool implements AgentTool<typeof lspSchema, LspToolDetails, Them
|
|
|
2029
2162
|
|
|
2030
2163
|
if (locations.length === 0) {
|
|
2031
2164
|
output = "No definition found";
|
|
2165
|
+
useless = true;
|
|
2032
2166
|
} else {
|
|
2033
2167
|
const lines = await Promise.all(
|
|
2034
2168
|
locations.map(location => formatLocationWithContext(location, this.session.cwd)),
|
|
@@ -2053,6 +2187,7 @@ export class LspTool implements AgentTool<typeof lspSchema, LspToolDetails, Them
|
|
|
2053
2187
|
|
|
2054
2188
|
if (locations.length === 0) {
|
|
2055
2189
|
output = "No type definition found";
|
|
2190
|
+
useless = true;
|
|
2056
2191
|
} else {
|
|
2057
2192
|
const lines = await Promise.all(
|
|
2058
2193
|
locations.map(location => formatLocationWithContext(location, this.session.cwd)),
|
|
@@ -2077,6 +2212,7 @@ export class LspTool implements AgentTool<typeof lspSchema, LspToolDetails, Them
|
|
|
2077
2212
|
|
|
2078
2213
|
if (locations.length === 0) {
|
|
2079
2214
|
output = "No implementation found";
|
|
2215
|
+
useless = true;
|
|
2080
2216
|
} else {
|
|
2081
2217
|
const lines = await Promise.all(
|
|
2082
2218
|
locations.map(location => formatLocationWithContext(location, this.session.cwd)),
|
|
@@ -2114,6 +2250,7 @@ export class LspTool implements AgentTool<typeof lspSchema, LspToolDetails, Them
|
|
|
2114
2250
|
|
|
2115
2251
|
if (!result || result.length === 0) {
|
|
2116
2252
|
output = "No references found";
|
|
2253
|
+
useless = true;
|
|
2117
2254
|
} else {
|
|
2118
2255
|
const contextualReferences = result.slice(0, REFERENCE_CONTEXT_LIMIT);
|
|
2119
2256
|
const plainReferences = result.slice(REFERENCE_CONTEXT_LIMIT);
|
|
@@ -2183,11 +2320,12 @@ export class LspTool implements AgentTool<typeof lspSchema, LspToolDetails, Them
|
|
|
2183
2320
|
break;
|
|
2184
2321
|
}
|
|
2185
2322
|
const parsedIndex = /^\d+$/.test(normalizedQuery) ? Number.parseInt(normalizedQuery, 10) : null;
|
|
2186
|
-
const selectedAction =
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
|
|
2190
|
-
|
|
2323
|
+
const selectedAction =
|
|
2324
|
+
parsedIndex !== null
|
|
2325
|
+
? result[parsedIndex]
|
|
2326
|
+
: result.find(actionItem =>
|
|
2327
|
+
actionItem.title.toLowerCase().includes(normalizedQuery.toLowerCase()),
|
|
2328
|
+
);
|
|
2191
2329
|
|
|
2192
2330
|
if (!selectedAction) {
|
|
2193
2331
|
const actionLines = result.map((actionItem, index) => ` ${formatCodeAction(actionItem, index)}`);
|
|
@@ -2252,6 +2390,7 @@ export class LspTool implements AgentTool<typeof lspSchema, LspToolDetails, Them
|
|
|
2252
2390
|
|
|
2253
2391
|
if (!result || result.length === 0) {
|
|
2254
2392
|
output = "No symbols found";
|
|
2393
|
+
useless = true;
|
|
2255
2394
|
} else {
|
|
2256
2395
|
const relPath = formatPathRelativeToCwd(targetFile, this.session.cwd);
|
|
2257
2396
|
if ("selectionRange" in result[0]) {
|
|
@@ -2315,6 +2454,7 @@ export class LspTool implements AgentTool<typeof lspSchema, LspToolDetails, Them
|
|
|
2315
2454
|
return {
|
|
2316
2455
|
content: [{ type: "text", text: output }],
|
|
2317
2456
|
details: { serverName, action, success: true, request: params },
|
|
2457
|
+
...(useless ? { useless: true } : {}),
|
|
2318
2458
|
};
|
|
2319
2459
|
} catch (err) {
|
|
2320
2460
|
if (err instanceof ToolError) throw err;
|
package/src/lsp/render.ts
CHANGED
|
@@ -8,9 +8,8 @@
|
|
|
8
8
|
* - Collapsible/expandable views
|
|
9
9
|
*/
|
|
10
10
|
import type { RenderResultOptions } from "@prometheus-ai/agent-core";
|
|
11
|
-
import { type HighlightColors, highlightCode as nativeHighlightCode, supportsLanguage } from "@prometheus-ai/natives";
|
|
12
11
|
import { type Component, Text } from "@prometheus-ai/tui";
|
|
13
|
-
import { getLanguageFromPath, type Theme } from "../modes/theme/theme";
|
|
12
|
+
import { getLanguageFromPath, highlightCode as highlightThemeCode, type Theme } from "../modes/theme/theme";
|
|
14
13
|
import {
|
|
15
14
|
formatExpandHint,
|
|
16
15
|
formatMoreItems,
|
|
@@ -139,7 +138,7 @@ export function renderResult(
|
|
|
139
138
|
const outputBlock = new CachedOutputBlock();
|
|
140
139
|
|
|
141
140
|
return markFramedBlockComponent({
|
|
142
|
-
render(width: number): string[] {
|
|
141
|
+
render(width: number): readonly string[] {
|
|
143
142
|
// Read mutable state at render time
|
|
144
143
|
const { expanded, isPartial, spinnerFrame } = options;
|
|
145
144
|
|
|
@@ -166,15 +165,17 @@ export function renderResult(
|
|
|
166
165
|
} else if (result.details?.action === "diagnostics" && text === "OK") {
|
|
167
166
|
label = "Diagnostics";
|
|
168
167
|
state = "success";
|
|
169
|
-
bodyLines = [`${theme.styledSymbol("
|
|
168
|
+
bodyLines = [`${theme.styledSymbol("tool.lsp", "accent")} ${theme.fg("dim", "OK")}`];
|
|
170
169
|
} else {
|
|
171
170
|
label = "Response";
|
|
172
171
|
bodyLines = renderGeneric(text, lines, expanded, theme);
|
|
173
172
|
}
|
|
174
173
|
|
|
175
174
|
const actionLabel = (request?.action ?? result.details?.action ?? label.toLowerCase()).replace(/_/g, " ");
|
|
176
|
-
const
|
|
177
|
-
const icon =
|
|
175
|
+
const isSuccess = !isPartial && !result.isError;
|
|
176
|
+
const icon = isSuccess
|
|
177
|
+
? theme.styledSymbol("tool.lsp", "accent")
|
|
178
|
+
: formatStatusIcon(isPartial ? "running" : "error", theme, spinnerFrame);
|
|
178
179
|
const header = `${icon} LSP ${actionLabel}`;
|
|
179
180
|
|
|
180
181
|
return outputBlock.render(
|
|
@@ -217,7 +218,7 @@ function renderHover(
|
|
|
217
218
|
const beforeCode = fullText.slice(0, codeStart).trimEnd();
|
|
218
219
|
const afterCode = fullText.slice(fullText.indexOf("```", 3) + 3).trim();
|
|
219
220
|
|
|
220
|
-
const codeLines =
|
|
221
|
+
const codeLines = highlightThemeCode(code, lang, theme);
|
|
221
222
|
const icon = theme.styledSymbol("status.info", "accent");
|
|
222
223
|
const langLabel = lang ? theme.fg("mdCodeBlockBorder", ` ${lang}`) : "";
|
|
223
224
|
|
|
@@ -272,31 +273,6 @@ function renderHover(
|
|
|
272
273
|
return output.split("\n");
|
|
273
274
|
}
|
|
274
275
|
|
|
275
|
-
/**
|
|
276
|
-
* Syntax highlight code using native highlighter.
|
|
277
|
-
*/
|
|
278
|
-
function highlightCode(codeText: string, language: string, theme: Theme): string[] {
|
|
279
|
-
const validLang = language && supportsLanguage(language) ? language : undefined;
|
|
280
|
-
try {
|
|
281
|
-
const colors: HighlightColors = {
|
|
282
|
-
comment: theme.getFgAnsi("syntaxComment"),
|
|
283
|
-
keyword: theme.getFgAnsi("syntaxKeyword"),
|
|
284
|
-
function: theme.getFgAnsi("syntaxFunction"),
|
|
285
|
-
variable: theme.getFgAnsi("syntaxVariable"),
|
|
286
|
-
string: theme.getFgAnsi("syntaxString"),
|
|
287
|
-
number: theme.getFgAnsi("syntaxNumber"),
|
|
288
|
-
type: theme.getFgAnsi("syntaxType"),
|
|
289
|
-
operator: theme.getFgAnsi("syntaxOperator"),
|
|
290
|
-
punctuation: theme.getFgAnsi("syntaxPunctuation"),
|
|
291
|
-
inserted: theme.getFgAnsi("toolDiffAdded"),
|
|
292
|
-
deleted: theme.getFgAnsi("toolDiffRemoved"),
|
|
293
|
-
};
|
|
294
|
-
return nativeHighlightCode(codeText, validLang, colors).split("\n");
|
|
295
|
-
} catch {
|
|
296
|
-
return codeText.split("\n");
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
|
|
300
276
|
// =============================================================================
|
|
301
277
|
// Diagnostics Rendering
|
|
302
278
|
// =============================================================================
|
|
@@ -325,7 +301,7 @@ function renderDiagnostics(
|
|
|
325
301
|
? theme.styledSymbol("status.error", "error")
|
|
326
302
|
: warnCount > 0
|
|
327
303
|
? theme.styledSymbol("status.warning", "warning")
|
|
328
|
-
: theme.styledSymbol("
|
|
304
|
+
: theme.styledSymbol("tool.lsp", "accent");
|
|
329
305
|
|
|
330
306
|
const meta: string[] = [];
|
|
331
307
|
if (errorCount > 0) meta.push(`${errorCount} error${errorCount !== 1 ? "s" : ""}`);
|
|
@@ -407,7 +383,7 @@ function renderDiagnostics(
|
|
|
407
383
|
function renderReferences(refMatch: RegExpMatchArray, lines: string[], expanded: boolean, theme: Theme): string[] {
|
|
408
384
|
const refCount = Number.parseInt(refMatch[1], 10);
|
|
409
385
|
const icon =
|
|
410
|
-
refCount > 0 ? theme.styledSymbol("
|
|
386
|
+
refCount > 0 ? theme.styledSymbol("tool.lsp", "accent") : theme.styledSymbol("status.warning", "warning");
|
|
411
387
|
|
|
412
388
|
const locLines = lines.filter(l => /^\s*\S+:\d+:\d+/.test(l));
|
|
413
389
|
|
|
@@ -598,7 +574,7 @@ function renderGeneric(text: string, lines: string[], expanded: boolean, theme:
|
|
|
598
574
|
hasError && !hasSuccess
|
|
599
575
|
? theme.styledSymbol("status.error", "error")
|
|
600
576
|
: hasSuccess && !hasError
|
|
601
|
-
? theme.styledSymbol("
|
|
577
|
+
? theme.styledSymbol("tool.lsp", "accent")
|
|
602
578
|
: theme.styledSymbol("status.info", "accent");
|
|
603
579
|
|
|
604
580
|
if (expanded) {
|