@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/discovery/helpers.ts
CHANGED
|
@@ -163,7 +163,7 @@ export function buildRuleFromMarkdown(
|
|
|
163
163
|
},
|
|
164
164
|
): Rule {
|
|
165
165
|
const { frontmatter, body } = parseFrontmatter(content, { source: filePath });
|
|
166
|
-
const { condition, scope } = parseRuleConditionAndScope(frontmatter as RuleFrontmatter);
|
|
166
|
+
const { condition, astCondition, scope } = parseRuleConditionAndScope(frontmatter as RuleFrontmatter);
|
|
167
167
|
|
|
168
168
|
let globs: string[] | undefined;
|
|
169
169
|
if (Array.isArray(frontmatter.globs)) {
|
|
@@ -186,6 +186,7 @@ export function buildRuleFromMarkdown(
|
|
|
186
186
|
alwaysApply: frontmatter.alwaysApply === true,
|
|
187
187
|
description: typeof frontmatter.description === "string" ? frontmatter.description : undefined,
|
|
188
188
|
condition,
|
|
189
|
+
astCondition,
|
|
189
190
|
scope,
|
|
190
191
|
interruptMode,
|
|
191
192
|
_source: source,
|
|
@@ -490,6 +491,42 @@ interface ExtensionModuleManifest {
|
|
|
490
491
|
extensions?: string[];
|
|
491
492
|
}
|
|
492
493
|
|
|
494
|
+
async function discoverLinkedExtensionModuleFiles(dir: string): Promise<{
|
|
495
|
+
indexFiles: Array<{ path: string }>;
|
|
496
|
+
packageJsonFiles: Array<{ path: string }>;
|
|
497
|
+
}> {
|
|
498
|
+
const entries = await readDirEntries(dir);
|
|
499
|
+
const indexFiles: Array<{ path: string }> = [];
|
|
500
|
+
const packageJsonFiles: Array<{ path: string }> = [];
|
|
501
|
+
|
|
502
|
+
await Promise.all(
|
|
503
|
+
entries.map(async entry => {
|
|
504
|
+
if (entry.name.startsWith(".") || entry.isDirectory()) return;
|
|
505
|
+
|
|
506
|
+
const entryPath = path.join(dir, entry.name);
|
|
507
|
+
const stat = await fs.promises.stat(entryPath).catch(() => null);
|
|
508
|
+
if (!stat?.isDirectory()) return;
|
|
509
|
+
|
|
510
|
+
const [packageJsonContent, indexTsContent, indexJsContent] = await Promise.all([
|
|
511
|
+
readFile(path.join(entryPath, "package.json")),
|
|
512
|
+
readFile(path.join(entryPath, "index.ts")),
|
|
513
|
+
readFile(path.join(entryPath, "index.js")),
|
|
514
|
+
]);
|
|
515
|
+
|
|
516
|
+
if (packageJsonContent !== null) {
|
|
517
|
+
packageJsonFiles.push({ path: `${entry.name}/package.json` });
|
|
518
|
+
}
|
|
519
|
+
if (indexTsContent !== null) {
|
|
520
|
+
indexFiles.push({ path: `${entry.name}/index.ts` });
|
|
521
|
+
} else if (indexJsContent !== null) {
|
|
522
|
+
indexFiles.push({ path: `${entry.name}/index.js` });
|
|
523
|
+
}
|
|
524
|
+
}),
|
|
525
|
+
);
|
|
526
|
+
|
|
527
|
+
return { indexFiles, packageJsonFiles };
|
|
528
|
+
}
|
|
529
|
+
|
|
493
530
|
async function readExtensionModuleManifest(
|
|
494
531
|
_ctx: LoadContext,
|
|
495
532
|
packageJsonPath: string,
|
|
@@ -519,14 +556,18 @@ async function readExtensionModuleManifest(
|
|
|
519
556
|
export async function discoverExtensionModulePaths(_ctx: LoadContext, dir: string): Promise<string[]> {
|
|
520
557
|
const discovered = new Set<string>();
|
|
521
558
|
// Find all candidate files in parallel using glob
|
|
522
|
-
const [directFiles,
|
|
559
|
+
const [directFiles, globIndexFiles, globPackageJsonFiles, linkedFiles] = await Promise.all([
|
|
523
560
|
// 1. Direct *.ts or *.js files
|
|
524
561
|
globIf(dir, "*.{ts,js}", FileType.File, false),
|
|
525
562
|
// 2. Subdirectory index files
|
|
526
563
|
globIf(dir, "*/index.{ts,js}", FileType.File, false),
|
|
527
564
|
// 3. Subdirectory package.json files
|
|
528
565
|
globIf(dir, "*/package.json", FileType.File, false),
|
|
566
|
+
// Native glob does not follow linked extension directories.
|
|
567
|
+
discoverLinkedExtensionModuleFiles(dir),
|
|
529
568
|
]);
|
|
569
|
+
const indexFiles = [...globIndexFiles, ...linkedFiles.indexFiles];
|
|
570
|
+
const packageJsonFiles = [...globPackageJsonFiles, ...linkedFiles.packageJsonFiles];
|
|
530
571
|
|
|
531
572
|
// Process direct files
|
|
532
573
|
for (const match of directFiles) {
|
|
@@ -820,12 +861,12 @@ export async function listClaudePluginRoots(
|
|
|
820
861
|
// In production `home` is `os.homedir()`, so `getPluginsDir(home)` resolves to the
|
|
821
862
|
// same XDG-aware path the marketplace writer uses (reads and writes always agree).
|
|
822
863
|
// Tests pass a temp dir, which short-circuits the resolver for deterministic isolation.
|
|
823
|
-
const
|
|
824
|
-
const
|
|
825
|
-
if (
|
|
826
|
-
const
|
|
827
|
-
if (
|
|
828
|
-
for (const [pluginId, entries] of Object.entries(
|
|
864
|
+
const prometheusRegistryPath = path.join(getPluginsDir(home), "installed_plugins.json");
|
|
865
|
+
const prometheusContent = await readFile(prometheusRegistryPath);
|
|
866
|
+
if (prometheusContent) {
|
|
867
|
+
const prometheusRegistry = parseClaudePluginsRegistry(prometheusContent);
|
|
868
|
+
if (prometheusRegistry) {
|
|
869
|
+
for (const [pluginId, entries] of Object.entries(prometheusRegistry.plugins)) {
|
|
829
870
|
if (!Array.isArray(entries) || entries.length === 0) continue;
|
|
830
871
|
|
|
831
872
|
const atIndex = pluginId.lastIndexOf("@");
|
|
@@ -861,7 +902,7 @@ export async function listClaudePluginRoots(
|
|
|
861
902
|
}
|
|
862
903
|
}
|
|
863
904
|
} else {
|
|
864
|
-
warnings.push(`Failed to parse Prometheus plugin registry: ${
|
|
905
|
+
warnings.push(`Failed to parse Prometheus plugin registry: ${prometheusRegistryPath}`);
|
|
865
906
|
}
|
|
866
907
|
}
|
|
867
908
|
|
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
* sub-directories (`skills/`, `hooks/`, `tools/`, `commands/`, `rules/`,
|
|
8
8
|
* `prompts/`, `.mcp.json`) are wired into discovery by `prometheus-plugins.ts`.
|
|
9
9
|
*
|
|
10
|
-
* CLI-provided paths are injected via {@link
|
|
10
|
+
* CLI-provided paths are injected via {@link injectPrometheusExtensionCliRoots}
|
|
11
11
|
* before discovery runs; settings paths are read lazily from
|
|
12
|
-
* `<scope>/settings.json` in {@link
|
|
12
|
+
* `<scope>/settings.json` in {@link listPrometheusExtensionRoots} to mirror what
|
|
13
13
|
* `loadExtensionModules` already does.
|
|
14
14
|
*
|
|
15
15
|
* @see ./prometheus-plugins.ts
|
|
@@ -24,7 +24,7 @@ import { getEnabledPlugins } from "../extensibility/plugins/loader";
|
|
|
24
24
|
import { expandTilde } from "../tools/path-utils";
|
|
25
25
|
|
|
26
26
|
/** A resolved extension package directory wired into the discovery surfaces. */
|
|
27
|
-
export interface
|
|
27
|
+
export interface PrometheusExtensionRoot {
|
|
28
28
|
/** Absolute path to the package directory. */
|
|
29
29
|
path: string;
|
|
30
30
|
/** Stable display name (basename of the package directory). */
|
|
@@ -47,9 +47,9 @@ let injectedCliRoots: InjectedRoot[] = [];
|
|
|
47
47
|
* entrypoints have no package sub-tree to scan.
|
|
48
48
|
*
|
|
49
49
|
* Call once during startup before any capability load. Repeated calls extend
|
|
50
|
-
* the registered set; {@link
|
|
50
|
+
* the registered set; {@link clearPrometheusExtensionCliRoots} resets for tests.
|
|
51
51
|
*/
|
|
52
|
-
export function
|
|
52
|
+
export function injectPrometheusExtensionCliRoots(paths: readonly string[], home: string, cwd: string): void {
|
|
53
53
|
if (paths.length === 0) return;
|
|
54
54
|
const expanded = paths.map(raw => {
|
|
55
55
|
const tilde = expandTilde(raw, home);
|
|
@@ -65,12 +65,12 @@ export function injectOmpExtensionCliRoots(paths: readonly string[], home: strin
|
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
/** Drop every CLI-injected root. Tests use this between cases. */
|
|
68
|
-
export function
|
|
68
|
+
export function clearPrometheusExtensionCliRoots(): void {
|
|
69
69
|
injectedCliRoots = [];
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
/** Inspect currently-injected CLI roots (read-only). Exposed for diagnostics + tests. */
|
|
73
|
-
export function
|
|
73
|
+
export function getInjectedPrometheusExtensionCliRoots(): readonly PrometheusExtensionRoot[] {
|
|
74
74
|
return injectedCliRoots.map(({ path: p, level }) => ({ path: p, level, name: path.basename(p) }));
|
|
75
75
|
}
|
|
76
76
|
|
|
@@ -120,7 +120,7 @@ async function isDirectory(p: string): Promise<boolean> {
|
|
|
120
120
|
* Sources, in order of precedence (later entries with the same absolute path
|
|
121
121
|
* are dropped):
|
|
122
122
|
*
|
|
123
|
-
* 1. CLI roots injected via {@link
|
|
123
|
+
* 1. CLI roots injected via {@link injectPrometheusExtensionCliRoots}
|
|
124
124
|
* 2. Project `<cwd>/.prometheus/settings.json#extensions`
|
|
125
125
|
* 3. User `~/.prometheus/agent/settings.json#extensions`
|
|
126
126
|
* 4. Enabled plugins installed under `<plugins>/node_modules/` (e.g. via
|
|
@@ -132,7 +132,7 @@ async function isDirectory(p: string): Promise<boolean> {
|
|
|
132
132
|
* `package.json`, etc.) are logged at `debug` and degrade gracefully — the
|
|
133
133
|
* other sources still surface.
|
|
134
134
|
*/
|
|
135
|
-
export async function
|
|
135
|
+
export async function listPrometheusExtensionRoots(ctx: LoadContext): Promise<PrometheusExtensionRoot[]> {
|
|
136
136
|
const { project, user } = scopeDirs(ctx);
|
|
137
137
|
const [projectExtensions, userExtensions, installedPlugins] = await Promise.all([
|
|
138
138
|
readSettingsExtensions(path.join(project, "settings.json")),
|
|
@@ -157,7 +157,7 @@ export async function listOmpExtensionRoots(ctx: LoadContext): Promise<OmpExtens
|
|
|
157
157
|
}
|
|
158
158
|
|
|
159
159
|
const directoryFlags = await Promise.all(unique.map(c => isDirectory(c.path)));
|
|
160
|
-
const roots:
|
|
160
|
+
const roots: PrometheusExtensionRoot[] = [];
|
|
161
161
|
for (let i = 0; i < unique.length; i++) {
|
|
162
162
|
if (!directoryFlags[i]) continue;
|
|
163
163
|
const { path: p, level } = unique[i];
|
|
@@ -29,7 +29,7 @@ import { type SlashCommand, slashCommandCapability } from "../capability/slash-c
|
|
|
29
29
|
import { type CustomTool, toolCapability } from "../capability/tool";
|
|
30
30
|
import type { LoadContext, LoadResult } from "../capability/types";
|
|
31
31
|
import { buildRuleFromMarkdown, createSourceMeta, loadFilesFromDir, scanSkillsFromDir } from "./helpers";
|
|
32
|
-
import {
|
|
32
|
+
import { listPrometheusExtensionRoots, type PrometheusExtensionRoot } from "./prometheus-extension-roots";
|
|
33
33
|
|
|
34
34
|
const PROVIDER_ID = "prometheus-plugins";
|
|
35
35
|
const DISPLAY_NAME = "Prometheus Extension Packages";
|
|
@@ -42,7 +42,7 @@ const PRIORITY = 90;
|
|
|
42
42
|
// =============================================================================
|
|
43
43
|
|
|
44
44
|
async function loadSkills(ctx: LoadContext): Promise<LoadResult<Skill>> {
|
|
45
|
-
const roots = await
|
|
45
|
+
const roots = await listPrometheusExtensionRoots(ctx);
|
|
46
46
|
const results = await Promise.all(
|
|
47
47
|
roots.map(root =>
|
|
48
48
|
scanSkillsFromDir(ctx, {
|
|
@@ -64,7 +64,7 @@ async function loadSkills(ctx: LoadContext): Promise<LoadResult<Skill>> {
|
|
|
64
64
|
// =============================================================================
|
|
65
65
|
|
|
66
66
|
async function loadSlashCommands(ctx: LoadContext): Promise<LoadResult<SlashCommand>> {
|
|
67
|
-
const roots = await
|
|
67
|
+
const roots = await listPrometheusExtensionRoots(ctx);
|
|
68
68
|
const results = await Promise.all(
|
|
69
69
|
roots.map(root =>
|
|
70
70
|
loadFilesFromDir<SlashCommand>(ctx, path.join(root.path, "commands"), PROVIDER_ID, root.level, {
|
|
@@ -90,7 +90,7 @@ async function loadSlashCommands(ctx: LoadContext): Promise<LoadResult<SlashComm
|
|
|
90
90
|
// =============================================================================
|
|
91
91
|
|
|
92
92
|
async function loadRules(ctx: LoadContext): Promise<LoadResult<Rule>> {
|
|
93
|
-
const roots = await
|
|
93
|
+
const roots = await listPrometheusExtensionRoots(ctx);
|
|
94
94
|
const results = await Promise.all(
|
|
95
95
|
roots.map(root =>
|
|
96
96
|
loadFilesFromDir<Rule>(ctx, path.join(root.path, "rules"), PROVIDER_ID, root.level, {
|
|
@@ -111,7 +111,7 @@ async function loadRules(ctx: LoadContext): Promise<LoadResult<Rule>> {
|
|
|
111
111
|
// =============================================================================
|
|
112
112
|
|
|
113
113
|
async function loadPrompts(ctx: LoadContext): Promise<LoadResult<Prompt>> {
|
|
114
|
-
const roots = await
|
|
114
|
+
const roots = await listPrometheusExtensionRoots(ctx);
|
|
115
115
|
const results = await Promise.all(
|
|
116
116
|
roots.map(root =>
|
|
117
117
|
loadFilesFromDir<Prompt>(ctx, path.join(root.path, "prompts"), PROVIDER_ID, root.level, {
|
|
@@ -138,8 +138,8 @@ async function loadPrompts(ctx: LoadContext): Promise<LoadResult<Prompt>> {
|
|
|
138
138
|
const HOOK_TYPES: ReadonlyArray<"pre" | "post"> = ["pre", "post"];
|
|
139
139
|
|
|
140
140
|
async function loadHooks(ctx: LoadContext): Promise<LoadResult<Hook>> {
|
|
141
|
-
const roots = await
|
|
142
|
-
const tasks: Array<{ root:
|
|
141
|
+
const roots = await listPrometheusExtensionRoots(ctx);
|
|
142
|
+
const tasks: Array<{ root: PrometheusExtensionRoot; hookType: "pre" | "post" }> = [];
|
|
143
143
|
for (const root of roots) {
|
|
144
144
|
for (const hookType of HOOK_TYPES) {
|
|
145
145
|
tasks.push({ root, hookType });
|
|
@@ -176,7 +176,7 @@ async function loadHooks(ctx: LoadContext): Promise<LoadResult<Hook>> {
|
|
|
176
176
|
const TOOL_EXTENSIONS = ["json", "md", "ts", "js", "sh", "bash", "py"];
|
|
177
177
|
|
|
178
178
|
async function loadTools(ctx: LoadContext): Promise<LoadResult<CustomTool>> {
|
|
179
|
-
const roots = await
|
|
179
|
+
const roots = await listPrometheusExtensionRoots(ctx);
|
|
180
180
|
const perRoot = await Promise.all(
|
|
181
181
|
roots.map(async root => {
|
|
182
182
|
const toolsDir = path.join(root.path, "tools");
|
|
@@ -268,11 +268,11 @@ interface RawMcpServer {
|
|
|
268
268
|
}
|
|
269
269
|
|
|
270
270
|
async function loadMCPServers(ctx: LoadContext): Promise<LoadResult<MCPServer>> {
|
|
271
|
-
const roots = await
|
|
271
|
+
const roots = await listPrometheusExtensionRoots(ctx);
|
|
272
272
|
const items: MCPServer[] = [];
|
|
273
273
|
const warnings: string[] = [];
|
|
274
274
|
|
|
275
|
-
const tasks: Array<{ root:
|
|
275
|
+
const tasks: Array<{ root: PrometheusExtensionRoot; mcpPath: string }> = [];
|
|
276
276
|
for (const root of roots) {
|
|
277
277
|
for (const filename of MCP_FILENAMES) {
|
|
278
278
|
tasks.push({ root, mcpPath: path.join(root.path, filename) });
|
package/src/edit/diff.ts
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import * as Diff from "diff";
|
|
8
8
|
import { resolveToCwd } from "../tools/path-utils";
|
|
9
|
+
import { type BlockContextSource, findBlockContextLines } from "../utils/block-context";
|
|
9
10
|
import { DEFAULT_FUZZY_THRESHOLD, EditMatchError, findMatch } from "./modes/replace";
|
|
10
11
|
import { adjustIndentation, normalizeToLF, stripBom } from "./normalize";
|
|
11
12
|
import { readEditFileText } from "./read-file";
|
|
@@ -54,11 +55,186 @@ function formatNumberedDiffLine(prefix: "+" | "-" | " ", lineNum: number, conten
|
|
|
54
55
|
return `${prefix}${lineNum}|${content}`;
|
|
55
56
|
}
|
|
56
57
|
|
|
58
|
+
interface ParsedNumberedDiffRow {
|
|
59
|
+
prefix: "+" | "-" | " ";
|
|
60
|
+
lineNumber: number;
|
|
61
|
+
content: string;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function parseNumberedDiffRow(row: string): ParsedNumberedDiffRow | undefined {
|
|
65
|
+
const match = /^([+\- ])(\d+)\|(.*)$/s.exec(row);
|
|
66
|
+
if (!match) return undefined;
|
|
67
|
+
const prefix = match[1] as "+" | "-" | " ";
|
|
68
|
+
const lineNumber = Number.parseInt(match[2], 10);
|
|
69
|
+
if (!Number.isFinite(lineNumber)) return undefined;
|
|
70
|
+
return { prefix, lineNumber, content: match[3] ?? "" };
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function isDiffChangeRow(row: string | undefined): boolean {
|
|
74
|
+
return row !== undefined && (row.startsWith("+") || row.startsWith("-"));
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/** Blank row separating non-contiguous regions of a numbered diff. */
|
|
78
|
+
const DIFF_GAP_ROW = "";
|
|
79
|
+
|
|
80
|
+
/** Old-file line number of a source-visible row (`-` or context); `+`/gap/other rows yield undefined. */
|
|
81
|
+
function parseSourceRowLineNumber(row: string): number | undefined {
|
|
82
|
+
const parsed = parseNumberedDiffRow(row);
|
|
83
|
+
return parsed === undefined || parsed.prefix === "+" ? undefined : parsed.lineNumber;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Drop gap rows that no longer separate anything. Context rows are inserted
|
|
88
|
+
* one at a time, each adding its own gap rows from a snapshot of the diff, so
|
|
89
|
+
* the raw result can contain adjacent gap rows, gap rows whose neighbors
|
|
90
|
+
* became contiguous after a later insert filled the hole, and gap rows at the
|
|
91
|
+
* diff edges. The sweep keeps a gap row only when it sits between two
|
|
92
|
+
* source-numbered rows (old-file coordinates — the same numbering the
|
|
93
|
+
* insertion gap test uses) that are actually non-contiguous, and never keeps
|
|
94
|
+
* two in a row.
|
|
95
|
+
*/
|
|
96
|
+
function normalizeDiffGapRows(rows: string[]): void {
|
|
97
|
+
const kept: string[] = [];
|
|
98
|
+
for (let i = 0; i < rows.length; i++) {
|
|
99
|
+
const row = rows[i];
|
|
100
|
+
if (row !== DIFF_GAP_ROW) {
|
|
101
|
+
kept.push(row);
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
if (kept.length === 0 || kept[kept.length - 1] === DIFF_GAP_ROW) continue;
|
|
105
|
+
let before: number | undefined;
|
|
106
|
+
for (let j = kept.length - 1; j >= 0 && before === undefined; j--) {
|
|
107
|
+
before = parseSourceRowLineNumber(kept[j]);
|
|
108
|
+
}
|
|
109
|
+
let after: number | undefined;
|
|
110
|
+
for (let j = i + 1; j < rows.length && after === undefined; j++) {
|
|
111
|
+
if (rows[j] === DIFF_GAP_ROW) continue;
|
|
112
|
+
after = parseSourceRowLineNumber(rows[j]);
|
|
113
|
+
}
|
|
114
|
+
if (before === undefined || after === undefined || after <= before + 1) continue;
|
|
115
|
+
kept.push(row);
|
|
116
|
+
}
|
|
117
|
+
if (kept.length !== rows.length) rows.splice(0, rows.length, ...kept);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
function adjustedContextInsertIndex(rows: readonly string[], index: number): number {
|
|
121
|
+
let start = index;
|
|
122
|
+
while (start > 0 && isDiffChangeRow(rows[start - 1])) start--;
|
|
123
|
+
let end = index;
|
|
124
|
+
while (end < rows.length && isDiffChangeRow(rows[end])) end++;
|
|
125
|
+
return index > start && index < end ? end : index;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function insertBracketContextRows(
|
|
129
|
+
rows: string[],
|
|
130
|
+
contextLines: ReadonlyMap<number, string>,
|
|
131
|
+
seenRows: Set<string>,
|
|
132
|
+
): void {
|
|
133
|
+
const context = [...contextLines].sort(([left], [right]) => left - right);
|
|
134
|
+
for (const [lineNumber, text] of context) {
|
|
135
|
+
const row = formatNumberedDiffLine(" ", lineNumber, text);
|
|
136
|
+
if (seenRows.has(row)) continue;
|
|
137
|
+
|
|
138
|
+
let insertIndex = rows.length;
|
|
139
|
+
let previousSourceLine: number | undefined;
|
|
140
|
+
let nextSourceLine: number | undefined;
|
|
141
|
+
for (let i = 0; i < rows.length; i++) {
|
|
142
|
+
const parsed = parseNumberedDiffRow(rows[i]);
|
|
143
|
+
if (!parsed || parsed.prefix === "+") continue;
|
|
144
|
+
if (parsed.lineNumber < lineNumber) {
|
|
145
|
+
previousSourceLine = parsed.lineNumber;
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
nextSourceLine = parsed.lineNumber;
|
|
149
|
+
insertIndex = i;
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
const chunk: string[] = [];
|
|
154
|
+
if (previousSourceLine !== undefined && lineNumber > previousSourceLine + 1) chunk.push(DIFF_GAP_ROW);
|
|
155
|
+
chunk.push(row);
|
|
156
|
+
if (nextSourceLine !== undefined && nextSourceLine > lineNumber + 1) chunk.push(DIFF_GAP_ROW);
|
|
157
|
+
|
|
158
|
+
const adjustedIndex = adjustedContextInsertIndex(rows, insertIndex);
|
|
159
|
+
rows.splice(adjustedIndex, 0, ...chunk);
|
|
160
|
+
seenRows.add(row);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Insert off-window block-boundary rows (enclosing header, matching closing
|
|
166
|
+
* bracket, …) into a numbered diff. Context rows carry pre-edit line numbers —
|
|
167
|
+
* the renumbering contract of `buildCompactDiffPreview` — so boundary lines
|
|
168
|
+
* discovered in the new file are translated back to their pre-edit numbers
|
|
169
|
+
* and merged with the old-file pass before a single insertion sweep. Without
|
|
170
|
+
* the translation, a context line sitting in a net-offset region would be
|
|
171
|
+
* re-inserted under its post-edit number: duplicated, out of order, and
|
|
172
|
+
* renumbered incorrectly by the preview.
|
|
173
|
+
*/
|
|
174
|
+
function addMatchingBracketContextRows(
|
|
175
|
+
rows: string[],
|
|
176
|
+
oldLines: readonly string[],
|
|
177
|
+
newLines: readonly string[],
|
|
178
|
+
source: BlockContextSource,
|
|
179
|
+
): void {
|
|
180
|
+
const oldVisible: number[] = [];
|
|
181
|
+
const newVisible: number[] = [];
|
|
182
|
+
const seenRows = new Set(rows);
|
|
183
|
+
// Change positions in new-file coordinates, used to translate an unchanged
|
|
184
|
+
// new-file line number back to its pre-edit equivalent.
|
|
185
|
+
const changes: { newPos: number; delta: 1 | -1 }[] = [];
|
|
186
|
+
let offset = 0;
|
|
187
|
+
|
|
188
|
+
for (const row of rows) {
|
|
189
|
+
const parsed = parseNumberedDiffRow(row);
|
|
190
|
+
if (!parsed) continue;
|
|
191
|
+
switch (parsed.prefix) {
|
|
192
|
+
case "-":
|
|
193
|
+
oldVisible.push(parsed.lineNumber);
|
|
194
|
+
changes.push({ newPos: parsed.lineNumber + offset, delta: -1 });
|
|
195
|
+
offset--;
|
|
196
|
+
break;
|
|
197
|
+
case "+":
|
|
198
|
+
newVisible.push(parsed.lineNumber);
|
|
199
|
+
changes.push({ newPos: parsed.lineNumber, delta: 1 });
|
|
200
|
+
offset++;
|
|
201
|
+
break;
|
|
202
|
+
default:
|
|
203
|
+
// Context rows are visible in BOTH files: pre-edit number as
|
|
204
|
+
// written, post-edit number shifted by the net change so far.
|
|
205
|
+
oldVisible.push(parsed.lineNumber);
|
|
206
|
+
newVisible.push(parsed.lineNumber + offset);
|
|
207
|
+
break;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
const toOldLineNumber = (newLineNumber: number): number => {
|
|
212
|
+
let shift = 0;
|
|
213
|
+
for (const change of changes) {
|
|
214
|
+
if (change.newPos <= newLineNumber) shift += change.delta;
|
|
215
|
+
}
|
|
216
|
+
return newLineNumber - shift;
|
|
217
|
+
};
|
|
218
|
+
|
|
219
|
+
const contextRows = findBlockContextLines(oldLines, oldVisible, source);
|
|
220
|
+
for (const [lineNumber, text] of findBlockContextLines(newLines, newVisible, source)) {
|
|
221
|
+
const oldLineNumber = toOldLineNumber(lineNumber);
|
|
222
|
+
if (!contextRows.has(oldLineNumber)) contextRows.set(oldLineNumber, text);
|
|
223
|
+
}
|
|
224
|
+
insertBracketContextRows(rows, contextRows, seenRows);
|
|
225
|
+
normalizeDiffGapRows(rows);
|
|
226
|
+
}
|
|
227
|
+
|
|
57
228
|
/**
|
|
58
229
|
* Generate a unified diff string with line numbers and context.
|
|
59
230
|
* Returns both the diff string and the first changed line number (in the new file).
|
|
60
231
|
*/
|
|
61
|
-
export function generateDiffString(
|
|
232
|
+
export function generateDiffString(
|
|
233
|
+
oldContent: string,
|
|
234
|
+
newContent: string,
|
|
235
|
+
contextLines = 2,
|
|
236
|
+
source: BlockContextSource = {},
|
|
237
|
+
): DiffResult {
|
|
62
238
|
const parts = Diff.diffLines(oldContent, newContent);
|
|
63
239
|
const output: string[] = [];
|
|
64
240
|
|
|
@@ -133,8 +309,10 @@ export function generateDiffString(oldContent: string, newContent: string, conte
|
|
|
133
309
|
newLineNum++;
|
|
134
310
|
}
|
|
135
311
|
|
|
312
|
+
// Mid-skip placeholder is omitted too: the jump between the trailing
|
|
313
|
+
// number of the leading context and the leading number of the
|
|
314
|
+
// trailing context conveys the gap, just like leading/trailing skips.
|
|
136
315
|
if (middleSkip > 0) {
|
|
137
|
-
output.push(formatNumberedDiffLine(" ", oldLineNum, "..."));
|
|
138
316
|
oldLineNum += middleSkip;
|
|
139
317
|
newLineNum += middleSkip;
|
|
140
318
|
for (const line of linesToShow.slice(firstChunkLength)) {
|
|
@@ -160,6 +338,8 @@ export function generateDiffString(oldContent: string, newContent: string, conte
|
|
|
160
338
|
}
|
|
161
339
|
}
|
|
162
340
|
|
|
341
|
+
addMatchingBracketContextRows(output, oldContent.split("\n"), newContent.split("\n"), source);
|
|
342
|
+
|
|
163
343
|
return { diff: output.join("\n"), firstChangedLine };
|
|
164
344
|
}
|
|
165
345
|
|
|
@@ -187,7 +367,12 @@ export interface ReplaceResult {
|
|
|
187
367
|
* Generate a unified diff string without file headers.
|
|
188
368
|
* Returns both the diff string and the first changed line number (in the new file).
|
|
189
369
|
*/
|
|
190
|
-
export function generateUnifiedDiffString(
|
|
370
|
+
export function generateUnifiedDiffString(
|
|
371
|
+
oldContent: string,
|
|
372
|
+
newContent: string,
|
|
373
|
+
contextLines = 3,
|
|
374
|
+
source: BlockContextSource = {},
|
|
375
|
+
): DiffResult {
|
|
191
376
|
const patch = Diff.structuredPatch("", "", oldContent, newContent, "", "", { context: contextLines });
|
|
192
377
|
const output: string[] = [];
|
|
193
378
|
let firstChangedLine: number | undefined;
|
|
@@ -218,6 +403,8 @@ export function generateUnifiedDiffString(oldContent: string, newContent: string
|
|
|
218
403
|
}
|
|
219
404
|
}
|
|
220
405
|
|
|
406
|
+
addMatchingBracketContextRows(output, oldContent.split("\n"), newContent.split("\n"), source);
|
|
407
|
+
|
|
221
408
|
return { diff: output.join("\n"), firstChangedLine };
|
|
222
409
|
}
|
|
223
410
|
|
|
@@ -805,7 +992,7 @@ export async function computeEditDiff(
|
|
|
805
992
|
};
|
|
806
993
|
}
|
|
807
994
|
|
|
808
|
-
return generateDiffString(normalizedContent, result.content);
|
|
995
|
+
return generateDiffString(normalizedContent, result.content, undefined, { path });
|
|
809
996
|
} catch (err) {
|
|
810
997
|
return { error: err instanceof Error ? err.message : String(err) };
|
|
811
998
|
}
|
|
@@ -8,6 +8,9 @@
|
|
|
8
8
|
* from `@prometheus-ai/hashline`; the only coding-agent-specific concern here
|
|
9
9
|
* is wiring it onto the per-session owner object.
|
|
10
10
|
*/
|
|
11
|
+
|
|
12
|
+
import * as fs from "node:fs";
|
|
13
|
+
import * as path from "node:path";
|
|
11
14
|
import { InMemorySnapshotStore } from "@prometheus-ai/hashline";
|
|
12
15
|
import { normalizeToLF } from "./normalize";
|
|
13
16
|
|
|
@@ -33,6 +36,36 @@ export function getFileSnapshotStore(session: FileSnapshotStoreOwner): InMemoryS
|
|
|
33
36
|
return session.fileSnapshotStore;
|
|
34
37
|
}
|
|
35
38
|
|
|
39
|
+
/**
|
|
40
|
+
* Canonicalize an absolute path into the stable key the snapshot store uses.
|
|
41
|
+
*
|
|
42
|
+
* Different code paths reach the snapshot store via different path forms:
|
|
43
|
+
* `read local://foo.md` records under the file's `fs.realpath` (the local
|
|
44
|
+
* protocol handler resolves symlinks); a subsequent `edit` may address the
|
|
45
|
+
* same artifact via `local://foo.md`, whose resolver does NOT realpath, or
|
|
46
|
+
* via the absolute path returned in the `[path#tag]` header. macOS adds the
|
|
47
|
+
* same hazard at the working-tree level (`/tmp/...` vs `/private/tmp/...`).
|
|
48
|
+
* Collapsing every key through `realpath` makes those forms fuse onto one
|
|
49
|
+
* snapshot entry, so a freshly-minted tag is never rejected as stale just
|
|
50
|
+
* because the lookup spelled the same file differently.
|
|
51
|
+
*
|
|
52
|
+
* Non-existent paths (new-file writes) fall back to a realpath of the parent
|
|
53
|
+
* directory + basename, then to the input. This keeps creates and updates on
|
|
54
|
+
* the same canonical key.
|
|
55
|
+
*/
|
|
56
|
+
export function canonicalSnapshotKey(absolutePath: string): string {
|
|
57
|
+
try {
|
|
58
|
+
return fs.realpathSync.native(absolutePath);
|
|
59
|
+
} catch {
|
|
60
|
+
try {
|
|
61
|
+
const parent = fs.realpathSync.native(path.dirname(absolutePath));
|
|
62
|
+
return path.join(parent, path.basename(absolutePath));
|
|
63
|
+
} catch {
|
|
64
|
+
return absolutePath;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
36
69
|
/**
|
|
37
70
|
* Read the full text of `absolutePath` (within {@link SNAPSHOT_MAX_BYTES}),
|
|
38
71
|
* record it as a version snapshot, and return its content-hash tag. Returns
|
|
@@ -52,7 +85,7 @@ export async function recordFileSnapshot(
|
|
|
52
85
|
const file = Bun.file(absolutePath);
|
|
53
86
|
if (file.size > SNAPSHOT_MAX_BYTES) return undefined;
|
|
54
87
|
const normalized = normalizeToLF(await file.text());
|
|
55
|
-
return getFileSnapshotStore(session).record(absolutePath, normalized);
|
|
88
|
+
return getFileSnapshotStore(session).record(canonicalSnapshotKey(absolutePath), normalized);
|
|
56
89
|
} catch {
|
|
57
90
|
return undefined;
|
|
58
91
|
}
|
|
@@ -8,7 +8,26 @@
|
|
|
8
8
|
import type { BlockResolver } from "@prometheus-ai/hashline";
|
|
9
9
|
import { blockRangeAt } from "@prometheus-ai/natives";
|
|
10
10
|
|
|
11
|
+
/**
|
|
12
|
+
* `blockRangeAt` runs a full synchronous tree-sitter parse of `text` per
|
|
13
|
+
* call, and streaming previews re-resolve the same (text, line) every
|
|
14
|
+
* streamed chunk. Memoize by content: identical text + line always yields the
|
|
15
|
+
* same span. FIFO-bounded; hashing the text is orders of magnitude cheaper
|
|
16
|
+
* than re-parsing it.
|
|
17
|
+
*/
|
|
18
|
+
const resolutionCache = new Map<string, { start: number; end: number } | null>();
|
|
19
|
+
const RESOLUTION_CACHE_MAX = 512;
|
|
20
|
+
|
|
11
21
|
export const nativeBlockResolver: BlockResolver = ({ path, text, line }) => {
|
|
22
|
+
const key = `${Bun.hash(text).toString(36)}:${text.length}:${line}:${path}`;
|
|
23
|
+
const cached = resolutionCache.get(key);
|
|
24
|
+
if (cached !== undefined) return cached;
|
|
12
25
|
const range = blockRangeAt({ code: text, path, line });
|
|
13
|
-
|
|
26
|
+
const result = range ? { start: range.startLine, end: range.endLine } : null;
|
|
27
|
+
if (resolutionCache.size >= RESOLUTION_CACHE_MAX) {
|
|
28
|
+
const oldest = resolutionCache.keys().next().value;
|
|
29
|
+
if (oldest !== undefined) resolutionCache.delete(oldest);
|
|
30
|
+
}
|
|
31
|
+
resolutionCache.set(key, result);
|
|
32
|
+
return result;
|
|
14
33
|
};
|