@duckmind/dm-linux-x64 0.65.5 → 0.65.7
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/README.md +0 -8
- package/dm +2 -2
- package/extensions/.dm-extensions.json +677 -44
- package/extensions/dm-lens/clients/actionable-warnings-logger.js +0 -6
- package/extensions/dm-lens/clients/actionable-warnings.js +42 -13
- package/extensions/dm-lens/clients/advisory-provenance.js +129 -41
- package/extensions/dm-lens/clients/agent-behavior-client.js +1 -0
- package/extensions/dm-lens/clients/analysed-root.js +0 -0
- package/extensions/dm-lens/clients/ast-grep-client.js +38 -3
- package/extensions/dm-lens/clients/ast-grep-rule-manager.js +37 -5
- package/extensions/dm-lens/clients/ast-grep-tool-logger.js +1 -7
- package/extensions/dm-lens/clients/bash-file-access.js +138 -1
- package/extensions/dm-lens/clients/biome-client.js +9 -2
- package/extensions/dm-lens/clients/blocker-freshness.js +171 -21
- package/extensions/dm-lens/clients/bootstrap.js +9 -5
- package/extensions/dm-lens/clients/bounded-pid-file-lock.js +1 -1
- package/extensions/dm-lens/clients/bounded-telemetry.js +1 -4
- package/extensions/dm-lens/clients/bundled-resource-health.js +43 -0
- package/extensions/dm-lens/clients/bus-events-logger.js +0 -6
- package/extensions/dm-lens/clients/cache/rule-cache.js +11 -3
- package/extensions/dm-lens/clients/cache-manager.js +29 -5
- package/extensions/dm-lens/clients/cache-observability.js +104 -4
- package/extensions/dm-lens/clients/cargo-manifest.js +6 -3
- package/extensions/dm-lens/clients/cascade-format.js +87 -5
- package/extensions/dm-lens/clients/cascade-logger.js +0 -6
- package/extensions/dm-lens/clients/child-unref.js +5 -9
- package/extensions/dm-lens/clients/code-quality-warnings.js +4 -2
- package/extensions/dm-lens/clients/complexity-client.js +5 -1
- package/extensions/dm-lens/clients/config-core/index.js +2 -68
- package/extensions/dm-lens/clients/config-core/process-spec.js +1 -1
- package/extensions/dm-lens/clients/config-core/provenance.js +1 -2
- package/extensions/dm-lens/clients/config-core/records.js +1 -1
- package/extensions/dm-lens/clients/config-core/schema.js +3 -6
- package/extensions/dm-lens/clients/config-diagnostic-codes.js +5 -3
- package/extensions/dm-lens/clients/config-locations.js +125 -5
- package/extensions/dm-lens/clients/config-resolve.js +12 -6
- package/extensions/dm-lens/clients/config-schema.js +56 -3
- package/extensions/dm-lens/clients/config-warn.js +3 -2
- package/extensions/dm-lens/clients/dead-code-client.js +4 -1
- package/extensions/dm-lens/clients/dead-code-logger.js +0 -3
- package/extensions/dm-lens/clients/degradation-ledger.js +29 -4
- package/extensions/dm-lens/clients/dependency-checker.js +29 -50
- package/extensions/dm-lens/clients/diagnostic-dispositions.js +23 -4
- package/extensions/dm-lens/clients/diagnostic-logger.js +1 -1
- package/extensions/dm-lens/clients/dispatch/ast-grep-catalog.js +19 -0
- package/extensions/dm-lens/clients/dispatch/auxiliary-lsp.js +9 -0
- package/extensions/dm-lens/clients/dispatch/collect-later-tier.js +0 -3
- package/extensions/dm-lens/clients/dispatch/dispatcher.js +30 -27
- package/extensions/dm-lens/clients/dispatch/facts/function-facts.js +1 -1
- package/extensions/dm-lens/clients/dispatch/facts/import-facts.js +4 -1
- package/extensions/dm-lens/clients/dispatch/finding-policy.js +163 -0
- package/extensions/dm-lens/clients/dispatch/indent-detect.js +213 -13
- package/extensions/dm-lens/clients/dispatch/inline-suppressions.js +20 -1
- package/extensions/dm-lens/clients/dispatch/integration.js +77 -13
- package/extensions/dm-lens/clients/dispatch/lazy.js +0 -3
- package/extensions/dm-lens/clients/dispatch/pending-runner-findings.js +1 -1
- package/extensions/dm-lens/clients/dispatch/plan.js +0 -3
- package/extensions/dm-lens/clients/dispatch/rule-ignores.js +21 -0
- package/extensions/dm-lens/clients/dispatch/rules/high-complexity.js +2 -2
- package/extensions/dm-lens/clients/dispatch/rules/high-fan-out.js +1 -1
- package/extensions/dm-lens/clients/dispatch/runners/actionlint.js +25 -29
- package/extensions/dm-lens/clients/dispatch/runners/ast-grep-napi.js +8 -32
- package/extensions/dm-lens/clients/dispatch/runners/biome-check.js +39 -23
- package/extensions/dm-lens/clients/dispatch/runners/cpp-check.js +29 -48
- package/extensions/dm-lens/clients/dispatch/runners/credo.js +17 -14
- package/extensions/dm-lens/clients/dispatch/runners/cue-vet.js +9 -7
- package/extensions/dm-lens/clients/dispatch/runners/dart-analyze.js +21 -43
- package/extensions/dm-lens/clients/dispatch/runners/detekt.js +11 -5
- package/extensions/dm-lens/clients/dispatch/runners/dotnet-build.js +27 -23
- package/extensions/dm-lens/clients/dispatch/runners/elixir-check.js +23 -38
- package/extensions/dm-lens/clients/dispatch/runners/eslint.js +22 -35
- package/extensions/dm-lens/clients/dispatch/runners/fish-indent.js +2 -1
- package/extensions/dm-lens/clients/dispatch/runners/gleam-check.js +35 -12
- package/extensions/dm-lens/clients/dispatch/runners/go-vet.js +5 -3
- package/extensions/dm-lens/clients/dispatch/runners/golangci-lint.js +21 -22
- package/extensions/dm-lens/clients/dispatch/runners/hadolint.js +26 -16
- package/extensions/dm-lens/clients/dispatch/runners/helm-lint.js +3 -1
- package/extensions/dm-lens/clients/dispatch/runners/helm-render.js +3 -2
- package/extensions/dm-lens/clients/dispatch/runners/htmlhint.js +18 -9
- package/extensions/dm-lens/clients/dispatch/runners/javac.js +24 -23
- package/extensions/dm-lens/clients/dispatch/runners/ktlint.js +23 -54
- package/extensions/dm-lens/clients/dispatch/runners/lsp.js +17 -7
- package/extensions/dm-lens/clients/dispatch/runners/markdownlint.js +12 -6
- package/extensions/dm-lens/clients/dispatch/runners/mypy.js +2 -1
- package/extensions/dm-lens/clients/dispatch/runners/oxlint.js +24 -7
- package/extensions/dm-lens/clients/dispatch/runners/php-lint.js +26 -17
- package/extensions/dm-lens/clients/dispatch/runners/phpstan.js +2 -1
- package/extensions/dm-lens/clients/dispatch/runners/prisma-validate.js +2 -1
- package/extensions/dm-lens/clients/dispatch/runners/psscriptanalyzer.js +10 -11
- package/extensions/dm-lens/clients/dispatch/runners/pyright.js +2 -1
- package/extensions/dm-lens/clients/dispatch/runners/rubocop.js +22 -18
- package/extensions/dm-lens/clients/dispatch/runners/ruff.js +17 -22
- package/extensions/dm-lens/clients/dispatch/runners/rust-clippy.js +8 -11
- package/extensions/dm-lens/clients/dispatch/runners/shellcheck.js +9 -4
- package/extensions/dm-lens/clients/dispatch/runners/shfmt.js +4 -13
- package/extensions/dm-lens/clients/dispatch/runners/spellcheck.js +15 -5
- package/extensions/dm-lens/clients/dispatch/runners/spotbugs.js +2 -1
- package/extensions/dm-lens/clients/dispatch/runners/sqlfluff.js +10 -4
- package/extensions/dm-lens/clients/dispatch/runners/stylelint.js +9 -4
- package/extensions/dm-lens/clients/dispatch/runners/swiftlint.js +11 -3
- package/extensions/dm-lens/clients/dispatch/runners/taplo.js +13 -7
- package/extensions/dm-lens/clients/dispatch/runners/terragrunt.js +2 -1
- package/extensions/dm-lens/clients/dispatch/runners/tflint.js +26 -16
- package/extensions/dm-lens/clients/dispatch/runners/tree-sitter.js +12 -13
- package/extensions/dm-lens/clients/dispatch/runners/trivy-config.js +9 -3
- package/extensions/dm-lens/clients/dispatch/runners/utils/availability-policy.js +5 -0
- package/extensions/dm-lens/clients/dispatch/runners/utils/candidate-probe.js +2 -2
- package/extensions/dm-lens/clients/dispatch/runners/utils/diagnostic-parsers.js +8 -52
- package/extensions/dm-lens/clients/dispatch/runners/utils/runner-helpers.js +35 -3
- package/extensions/dm-lens/clients/dispatch/runners/utils.js +0 -17
- package/extensions/dm-lens/clients/dispatch/runners/vale.js +12 -4
- package/extensions/dm-lens/clients/dispatch/runners/yaml-rule-parser.js +2 -20
- package/extensions/dm-lens/clients/dispatch/runners/yamllint.js +16 -4
- package/extensions/dm-lens/clients/dispatch/runners/zig-check.js +26 -38
- package/extensions/dm-lens/clients/dispatch/suppress-writer.js +13 -3
- package/extensions/dm-lens/clients/dispatch/types.js +4 -1
- package/extensions/dm-lens/clients/dispatch/utils/format-utils.js +2 -2
- package/extensions/dm-lens/clients/disposition-logger.js +0 -6
- package/extensions/dm-lens/clients/disposition-publish.js +2 -1
- package/extensions/dm-lens/clients/effective-config.js +14 -4
- package/extensions/dm-lens/clients/event-loop-hold.js +123 -0
- package/extensions/dm-lens/clients/event-loop-monitor.js +2 -2
- package/extensions/dm-lens/clients/extension-log.js +6 -1
- package/extensions/dm-lens/clients/feature-hints.js +2 -1
- package/extensions/dm-lens/clients/file-kinds.js +17 -21
- package/extensions/dm-lens/clients/file-role.js +11 -2
- package/extensions/dm-lens/clients/file-time.js +1 -1
- package/extensions/dm-lens/clients/file-utils.js +93 -6
- package/extensions/dm-lens/clients/finding-delivery-gate.js +22 -26
- package/extensions/dm-lens/clients/format-service.js +33 -16
- package/extensions/dm-lens/clients/formatters.js +129 -92
- package/extensions/dm-lens/clients/generated-artifacts.js +2 -2
- package/extensions/dm-lens/clients/generation-guard.js +4 -0
- package/extensions/dm-lens/clients/git-guard.js +80 -26
- package/extensions/dm-lens/clients/gitleaks-client.js +26 -0
- package/extensions/dm-lens/clients/govulncheck-client.js +34 -6
- package/extensions/dm-lens/clients/gradle-ktfmt-style.js +96 -13
- package/extensions/dm-lens/clients/grammar-source.js +3 -3
- package/extensions/dm-lens/clients/host-edit-normalize.js +1 -1
- package/extensions/dm-lens/clients/indent-retarget.js +35 -5
- package/extensions/dm-lens/clients/inline-blocker-dispositions.js +107 -0
- package/extensions/dm-lens/clients/install-diagnostics.js +8 -6
- package/extensions/dm-lens/clients/installer/index.js +695 -183
- package/extensions/dm-lens/clients/installer/managed-tool-refresh.js +85 -25
- package/extensions/dm-lens/clients/instance-reaper-state.js +3 -0
- package/extensions/dm-lens/clients/instance-reaper.js +23 -16
- package/extensions/dm-lens/clients/instance-registry.js +34 -2
- package/extensions/dm-lens/clients/jscpd-client.js +11 -1
- package/extensions/dm-lens/clients/knip-client.js +2 -1
- package/extensions/dm-lens/clients/language-profile.js +18 -12
- package/extensions/dm-lens/clients/language-registry.js +3 -1
- package/extensions/dm-lens/clients/latency-logger.js +14 -4
- package/extensions/dm-lens/clients/ledger-bounds.js +13 -1
- package/extensions/dm-lens/clients/lens-config.js +74 -7
- package/extensions/dm-lens/clients/lens-engine.js +9 -10
- package/extensions/dm-lens/clients/lens-events.js +1 -1
- package/extensions/dm-lens/clients/lens-flag-registry.js +47 -2
- package/extensions/dm-lens/clients/lens-map.js +1 -1
- package/extensions/dm-lens/clients/log-cleanup.js +0 -28
- package/extensions/dm-lens/clients/lsp/cascade-tier.js +2 -1
- package/extensions/dm-lens/clients/lsp/client.js +70 -30
- package/extensions/dm-lens/clients/lsp/config.js +41 -15
- package/extensions/dm-lens/clients/lsp/content-limits.js +21 -0
- package/extensions/dm-lens/clients/lsp/diagnostic-binding.js +8 -0
- package/extensions/dm-lens/clients/lsp/document-drift.js +72 -1
- package/extensions/dm-lens/clients/lsp/edits.js +3 -3
- package/extensions/dm-lens/clients/lsp/index.js +435 -62
- package/extensions/dm-lens/clients/lsp/inferred-project.js +1 -1
- package/extensions/dm-lens/clients/lsp/language.js +0 -3
- package/extensions/dm-lens/clients/lsp/launch.js +12 -5
- package/extensions/dm-lens/clients/lsp/path-utils.js +0 -2
- package/extensions/dm-lens/clients/lsp/pending-aux-coverage.js +0 -1
- package/extensions/dm-lens/clients/lsp/server.js +125 -60
- package/extensions/dm-lens/clients/lsp/session-roots.js +26 -5
- package/extensions/dm-lens/clients/lsp/sync-kind.js +14 -1
- package/extensions/dm-lens/clients/lsp/tsserver-sync.js +5 -7
- package/extensions/dm-lens/clients/lsp/wait-policy/classification.js +3 -0
- package/extensions/dm-lens/clients/lsp/wait-policy/strategies.js +31 -2
- package/extensions/dm-lens/clients/lsp/workspace-diagnostics-cache.js +26 -4
- package/extensions/dm-lens/clients/lsp-document-symbols.js +1 -1
- package/extensions/dm-lens/clients/map-with-concurrency.js +7 -3
- package/extensions/dm-lens/clients/mcp/analyze.js +1 -1
- package/extensions/dm-lens/clients/mcp/ipc.js +104 -40
- package/extensions/dm-lens/clients/mcp/review.js +39 -7
- package/extensions/dm-lens/clients/mcp/session.js +38 -4
- package/extensions/dm-lens/clients/metrics-history.js +19 -84
- package/extensions/dm-lens/clients/middle-man-analysis.js +2 -4
- package/extensions/dm-lens/clients/module-report.js +1 -1
- package/extensions/dm-lens/clients/mutating-tool.js +3 -3
- package/extensions/dm-lens/clients/mutation-attribution.js +3 -3
- package/extensions/dm-lens/clients/ndjson-logger.js +17 -9
- package/extensions/dm-lens/clients/observed-mutation.js +42 -11
- package/extensions/dm-lens/clients/opaque-mutation-scan.js +17 -7
- package/extensions/dm-lens/clients/opengrep-client.js +92 -10
- package/extensions/dm-lens/clients/opengrep-config.js +1 -1
- package/extensions/dm-lens/clients/package-manager.js +2 -1
- package/extensions/dm-lens/clients/path-utils.js +199 -3
- package/extensions/dm-lens/clients/performance-report.js +3 -3
- package/extensions/dm-lens/clients/persistent-reverify.js +167 -0
- package/extensions/dm-lens/clients/php-cs-fixer-config.js +9 -4
- package/extensions/dm-lens/clients/pipeline.js +124 -68
- package/extensions/dm-lens/clients/project-changes.js +1 -1
- package/extensions/dm-lens/clients/project-diagnostics/cache.js +19 -5
- package/extensions/dm-lens/clients/project-diagnostics/extractors.js +1 -1
- package/extensions/dm-lens/clients/project-diagnostics/fresh-fetch.js +150 -18
- package/extensions/dm-lens/clients/project-diagnostics/runner-adapters/dead-code.js +4 -1
- package/extensions/dm-lens/clients/project-diagnostics/runner-adapters/gitleaks.js +3 -3
- package/extensions/dm-lens/clients/project-diagnostics/runner-adapters/jscpd.js +1 -1
- package/extensions/dm-lens/clients/project-diagnostics/runner-adapters/knip.js +1 -1
- package/extensions/dm-lens/clients/project-diagnostics/runner-adapters/madge.js +1 -1
- package/extensions/dm-lens/clients/project-diagnostics/runner-adapters/opengrep.js +1 -1
- package/extensions/dm-lens/clients/project-diagnostics/runner-adapters/runner-findings.js +19 -2
- package/extensions/dm-lens/clients/project-diagnostics/scanner.js +35 -4
- package/extensions/dm-lens/clients/project-lens-config.js +58 -4
- package/extensions/dm-lens/clients/project-scan-policy.js +0 -46
- package/extensions/dm-lens/clients/python-environment.js +80 -4
- package/extensions/dm-lens/clients/python-provenance.js +551 -0
- package/extensions/dm-lens/clients/read-guard-logger.js +3 -1
- package/extensions/dm-lens/clients/read-guard.js +29 -6
- package/extensions/dm-lens/clients/recent-touches.js +2 -2
- package/extensions/dm-lens/clients/resource-sampler.js +59 -9
- package/extensions/dm-lens/clients/review-graph/builder.js +39 -34
- package/extensions/dm-lens/clients/review-graph/git-identity.js +11 -7
- package/extensions/dm-lens/clients/review-graph/import-resolvers.js +1 -1
- package/extensions/dm-lens/clients/review-graph-logger.js +3 -1
- package/extensions/dm-lens/clients/ruff-client.js +11 -10
- package/extensions/dm-lens/clients/runtime-agent-end.js +41 -5
- package/extensions/dm-lens/clients/runtime-context.js +5 -2
- package/extensions/dm-lens/clients/runtime-coordinator.js +60 -6
- package/extensions/dm-lens/clients/runtime-session.js +52 -8
- package/extensions/dm-lens/clients/runtime-tool-call.js +27 -15
- package/extensions/dm-lens/clients/runtime-tool-result.js +279 -63
- package/extensions/dm-lens/clients/runtime-turn.js +453 -185
- package/extensions/dm-lens/clients/safe-spawn.js +248 -62
- package/extensions/dm-lens/clients/sanitize.js +0 -4
- package/extensions/dm-lens/clients/scan-utils.js +1 -39
- package/extensions/dm-lens/clients/scratch-tree-policy.js +2 -3
- package/extensions/dm-lens/clients/security-scan-client.js +2 -2
- package/extensions/dm-lens/clients/session-event-guard.js +59 -2
- package/extensions/dm-lens/clients/session-summary.js +0 -25
- package/extensions/dm-lens/clients/sg-runner.js +24 -12
- package/extensions/dm-lens/clients/sgconfig.js +58 -6
- package/extensions/dm-lens/clients/shared-checkout-guard.js +1 -1
- package/extensions/dm-lens/clients/situational-tool-telemetry.js +85 -0
- package/extensions/dm-lens/clients/skills-resolver.js +42 -0
- package/extensions/dm-lens/clients/smells-rollup.js +2 -2
- package/extensions/dm-lens/clients/spawn-output-cap.js +29 -0
- package/extensions/dm-lens/clients/startup-scan.js +1 -2
- package/extensions/dm-lens/clients/string-utils.js +3 -0
- package/extensions/dm-lens/clients/test-runner-client.js +118 -57
- package/extensions/dm-lens/clients/test-runner-delivery.js +118 -66
- package/extensions/dm-lens/clients/tool-agreement.js +403 -0
- package/extensions/dm-lens/clients/tool-config.js +218 -0
- package/extensions/dm-lens/clients/tool-cwd.js +248 -0
- package/extensions/dm-lens/clients/tool-definition.js +18 -1
- package/extensions/dm-lens/clients/tool-policy.js +138 -10
- package/extensions/dm-lens/clients/tool-probe.js +5 -0
- package/extensions/dm-lens/clients/tool-set-policy.js +35 -0
- package/extensions/dm-lens/clients/tree-sitter-client.js +201 -80
- package/extensions/dm-lens/clients/tree-sitter-query-loader.js +78 -130
- package/extensions/dm-lens/clients/trivy-client.js +8 -1
- package/extensions/dm-lens/clients/tui-fit.js +0 -3
- package/extensions/dm-lens/clients/turn-context.js +48 -0
- package/extensions/dm-lens/clients/turn-end/lane.js +0 -0
- package/extensions/dm-lens/clients/turn-end/lanes/govulncheck.js +54 -0
- package/extensions/dm-lens/clients/turn-end/lanes/secrets.js +140 -0
- package/extensions/dm-lens/clients/user-notify.js +0 -3
- package/extensions/dm-lens/clients/warm-attach.js +25 -0
- package/extensions/dm-lens/clients/widget-state.js +203 -13
- package/extensions/dm-lens/clients/word-index-logger.js +0 -6
- package/extensions/dm-lens/clients/word-index-store.js +1 -4
- package/extensions/dm-lens/clients/word-index.js +9 -5
- package/extensions/dm-lens/clients/workspace-topology.js +20 -3
- package/extensions/dm-lens/clients/write-ordering-guard.js +6 -0
- package/extensions/dm-lens/clients/zizmor-config.js +15 -11
- package/extensions/dm-lens/config/dependency-cruiser-eager-allowlist.json +8 -2
- package/extensions/dm-lens/dist/clients/actionable-warnings-logger.js +24 -0
- package/extensions/dm-lens/dist/clients/actionable-warnings.js +1014 -0
- package/extensions/dm-lens/dist/clients/advisory-provenance.js +385 -0
- package/extensions/dm-lens/dist/clients/agent-behavior-client.js +94 -0
- package/extensions/dm-lens/dist/clients/agent-nudge.js +151 -0
- package/extensions/dm-lens/dist/clients/analysed-root.js +1 -0
- package/extensions/dm-lens/dist/clients/ast-grep-client.js +576 -0
- package/extensions/dm-lens/dist/clients/ast-grep-rule-manager.js +114 -0
- package/extensions/dm-lens/dist/clients/ast-grep-tool-logger.js +85 -0
- package/extensions/dm-lens/dist/clients/ast-grep-types.js +1 -0
- package/extensions/dm-lens/dist/clients/ast-grep-yaml-synth.js +109 -0
- package/extensions/dm-lens/dist/clients/atomic-write-staging.js +66 -0
- package/extensions/dm-lens/dist/clients/atomic-write.js +37 -0
- package/extensions/dm-lens/dist/clients/availability-probe-flight.js +11 -0
- package/extensions/dm-lens/dist/clients/bash-file-access.js +830 -0
- package/extensions/dm-lens/dist/clients/biome-client.js +221 -0
- package/extensions/dm-lens/dist/clients/blocker-freshness.js +385 -0
- package/extensions/dm-lens/dist/clients/blocker-past-eof.js +49 -0
- package/extensions/dm-lens/dist/clients/bootstrap.js +246 -0
- package/extensions/dm-lens/dist/clients/bounded-cache.js +105 -0
- package/extensions/dm-lens/dist/clients/bounded-pid-file-lock.js +173 -0
- package/extensions/dm-lens/dist/clients/bounded-telemetry.js +104 -0
- package/extensions/dm-lens/dist/clients/build-identity.js +45 -0
- package/extensions/dm-lens/dist/clients/bundled-resource-health.js +41 -0
- package/extensions/dm-lens/dist/clients/bus-events-logger.js +48 -0
- package/extensions/dm-lens/dist/clients/bus-publish.js +117 -0
- package/extensions/dm-lens/dist/clients/cache/rule-cache.js +103 -0
- package/extensions/dm-lens/dist/clients/cache-manager.js +340 -0
- package/extensions/dm-lens/dist/clients/cache-observability.js +847 -0
- package/extensions/dm-lens/dist/clients/call-graph.js +628 -0
- package/extensions/dm-lens/dist/clients/cargo-manifest.js +151 -0
- package/extensions/dm-lens/dist/clients/cascade-budget.js +52 -0
- package/extensions/dm-lens/dist/clients/cascade-format.js +160 -0
- package/extensions/dm-lens/dist/clients/cascade-logger.js +22 -0
- package/extensions/dm-lens/dist/clients/cascade-types.js +1 -0
- package/extensions/dm-lens/dist/clients/child-unref.js +59 -0
- package/extensions/dm-lens/dist/clients/code-quality-warnings.js +192 -0
- package/extensions/dm-lens/dist/clients/codebase-model.js +110 -0
- package/extensions/dm-lens/dist/clients/collateral-test-role.js +8 -0
- package/extensions/dm-lens/dist/clients/complexity-client.js +398 -0
- package/extensions/dm-lens/dist/clients/config-core/deny.js +117 -0
- package/extensions/dm-lens/dist/clients/config-core/index.js +2 -0
- package/extensions/dm-lens/dist/clients/config-core/merge.js +228 -0
- package/extensions/dm-lens/dist/clients/config-core/normalize.js +217 -0
- package/extensions/dm-lens/dist/clients/config-core/process-spec.js +147 -0
- package/extensions/dm-lens/dist/clients/config-core/provenance.js +54 -0
- package/extensions/dm-lens/dist/clients/config-core/records.js +79 -0
- package/extensions/dm-lens/dist/clients/config-core/resolve.js +48 -0
- package/extensions/dm-lens/dist/clients/config-core/safe-object.js +22 -0
- package/extensions/dm-lens/dist/clients/config-core/schema.js +90 -0
- package/extensions/dm-lens/dist/clients/config-diagnostic-codes.js +90 -0
- package/extensions/dm-lens/dist/clients/config-locations.js +175 -0
- package/extensions/dm-lens/dist/clients/config-resolve.js +359 -0
- package/extensions/dm-lens/dist/clients/config-schema.js +128 -0
- package/extensions/dm-lens/dist/clients/config-warn.js +146 -0
- package/extensions/dm-lens/dist/clients/console-guard-install.js +4 -0
- package/extensions/dm-lens/dist/clients/cooperative-budget.js +36 -0
- package/extensions/dm-lens/dist/clients/dead-code-client.js +342 -0
- package/extensions/dm-lens/dist/clients/dead-code-logger.js +18 -0
- package/extensions/dm-lens/dist/clients/deadline-utils.js +117 -0
- package/extensions/dm-lens/dist/clients/debug-handles.js +121 -0
- package/extensions/dm-lens/dist/clients/debug-heap.js +80 -0
- package/extensions/dm-lens/dist/clients/deferred-lsp-work.js +33 -0
- package/extensions/dm-lens/dist/clients/degradation-ledger.js +272 -0
- package/extensions/dm-lens/dist/clients/demoted-finding-render.js +61 -0
- package/extensions/dm-lens/dist/clients/dependency-checker.js +525 -0
- package/extensions/dm-lens/dist/clients/deps/ast-grep-napi.js +17 -0
- package/extensions/dm-lens/dist/clients/deps/dm-host-deps.js +10 -0
- package/extensions/dm-lens/dist/clients/deps/dm-tui-compat.js +58 -0
- package/extensions/dm-lens/dist/clients/deps/js-yaml.js +7 -0
- package/extensions/dm-lens/dist/clients/deps/minimatch.js +6 -0
- package/extensions/dm-lens/dist/clients/deps/pidusage.js +5 -0
- package/extensions/dm-lens/dist/clients/deps/typebox.js +5 -0
- package/extensions/dm-lens/dist/clients/deps/vscode-jsonrpc.js +8 -0
- package/extensions/dm-lens/dist/clients/deps/web-tree-sitter.js +11 -0
- package/extensions/dm-lens/dist/clients/diagnostic-dispositions.js +318 -0
- package/extensions/dm-lens/dist/clients/diagnostic-line-freshness.js +144 -0
- package/extensions/dm-lens/dist/clients/diagnostic-logger.js +60 -0
- package/extensions/dm-lens/dist/clients/diagnostic-tracker.js +89 -0
- package/extensions/dm-lens/dist/clients/diagnostics-publish.js +134 -0
- package/extensions/dm-lens/dist/clients/dispatch/ast-grep-catalog.js +16 -0
- package/extensions/dm-lens/dist/clients/dispatch/auxiliary-lsp.js +158 -0
- package/extensions/dm-lens/dist/clients/dispatch/collect-later-tier.js +25 -0
- package/extensions/dm-lens/dist/clients/dispatch/diagnostic-taxonomy.js +58 -0
- package/extensions/dm-lens/dist/clients/dispatch/dispatcher.js +953 -0
- package/extensions/dm-lens/dist/clients/dispatch/fact-provider-types.js +1 -0
- package/extensions/dm-lens/dist/clients/dispatch/fact-rule-runner.js +17 -0
- package/extensions/dm-lens/dist/clients/dispatch/fact-runner.js +18 -0
- package/extensions/dm-lens/dist/clients/dispatch/fact-scheduler.js +52 -0
- package/extensions/dm-lens/dist/clients/dispatch/fact-store.js +199 -0
- package/extensions/dm-lens/dist/clients/dispatch/facts/comment-facts.js +20 -0
- package/extensions/dm-lens/dist/clients/dispatch/facts/file-content.js +18 -0
- package/extensions/dm-lens/dist/clients/dispatch/facts/function-facts.js +281 -0
- package/extensions/dm-lens/dist/clients/dispatch/facts/import-facts.js +169 -0
- package/extensions/dm-lens/dist/clients/dispatch/facts/tree-sitter-facts.js +19 -0
- package/extensions/dm-lens/dist/clients/dispatch/facts/try-catch-facts.js +95 -0
- package/extensions/dm-lens/dist/clients/dispatch/finding-policy.js +159 -0
- package/extensions/dm-lens/dist/clients/dispatch/indent-detect.js +227 -0
- package/extensions/dm-lens/dist/clients/dispatch/inline-suppressions.js +52 -0
- package/extensions/dm-lens/dist/clients/dispatch/integration.js +1463 -0
- package/extensions/dm-lens/dist/clients/dispatch/lazy.js +8 -0
- package/extensions/dm-lens/dist/clients/dispatch/pending-runner-findings.js +75 -0
- package/extensions/dm-lens/dist/clients/dispatch/plan.js +278 -0
- package/extensions/dm-lens/dist/clients/dispatch/priorities.js +14 -0
- package/extensions/dm-lens/dist/clients/dispatch/rule-id-normalize.js +42 -0
- package/extensions/dm-lens/dist/clients/dispatch/rule-ignores.js +21 -0
- package/extensions/dm-lens/dist/clients/dispatch/rule-policy.js +73 -0
- package/extensions/dm-lens/dist/clients/dispatch/rules/async-noise.js +31 -0
- package/extensions/dm-lens/dist/clients/dispatch/rules/async-unnecessary-wrapper.js +27 -0
- package/extensions/dm-lens/dist/clients/dispatch/rules/cors-wildcard.js +35 -0
- package/extensions/dm-lens/dist/clients/dispatch/rules/error-obscuring.js +29 -0
- package/extensions/dm-lens/dist/clients/dispatch/rules/error-swallowing.js +29 -0
- package/extensions/dm-lens/dist/clients/dispatch/rules/framework-call-noise.js +31 -0
- package/extensions/dm-lens/dist/clients/dispatch/rules/high-complexity.js +56 -0
- package/extensions/dm-lens/dist/clients/dispatch/rules/high-fan-out.js +45 -0
- package/extensions/dm-lens/dist/clients/dispatch/rules/high-import-coupling.js +31 -0
- package/extensions/dm-lens/dist/clients/dispatch/rules/missing-error-propagation.js +45 -0
- package/extensions/dm-lens/dist/clients/dispatch/rules/no-commented-credentials.js +46 -0
- package/extensions/dm-lens/dist/clients/dispatch/rules/pass-through-wrappers.js +38 -0
- package/extensions/dm-lens/dist/clients/dispatch/rules/placeholder-comments.js +40 -0
- package/extensions/dm-lens/dist/clients/dispatch/rules/unsafe-boundary.js +101 -0
- package/extensions/dm-lens/dist/clients/dispatch/runner-context.js +46 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/actionlint.js +98 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/ast-grep-napi.js +690 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/biome-check.js +202 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/cpp-check.js +190 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/credo.js +66 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/cue-vet.js +167 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/dart-analyze.js +151 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/detekt.js +157 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/dotnet-build.js +157 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/elixir-check.js +153 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/eslint.js +99 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/fact-rules.js +20 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/fish-indent.js +65 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/gleam-check.js +107 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/go-vet.js +51 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/golangci-lint.js +89 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/hadolint.js +83 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/helm-lint.js +144 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/helm-render.js +593 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/htmlhint.js +103 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/index.js +100 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/javac.js +82 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/ktlint.js +93 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/lsp.js +206 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/markdownlint.js +129 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/mypy.js +70 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/oxlint.js +305 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/php-lint.js +70 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/phpstan.js +90 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/prisma-validate.js +56 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/psscriptanalyzer.js +307 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/pyright.js +118 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/rubocop.js +79 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/ruff.js +69 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/rust-clippy.js +147 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/shellcheck.js +111 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/shfmt.js +81 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/spellcheck.js +74 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/spotbugs.js +208 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/sqlfluff.js +136 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/stylelint.js +118 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/swiftlint.js +143 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/taplo.js +97 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/terragrunt.js +110 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/tflint.js +104 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/tree-sitter.js +516 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/trivy-config.js +155 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/utils/availability-policy.js +285 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/utils/candidate-probe.js +61 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/utils/diagnostic-parsers.js +61 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/utils/lazy-installer.js +130 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/utils/runner-helpers.js +1067 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/utils/spawn-outcome.js +40 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/utils/tool-failure.js +117 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/utils/toolchain-availability.js +88 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/utils.js +8 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/vale.js +106 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/yaml-rule-parser.js +163 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/yamllint.js +83 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/zig-check.js +72 -0
- package/extensions/dm-lens/dist/clients/dispatch/suppress-writer.js +57 -0
- package/extensions/dm-lens/dist/clients/dispatch/tool-profile.js +30 -0
- package/extensions/dm-lens/dist/clients/dispatch/types.js +7 -0
- package/extensions/dm-lens/dist/clients/dispatch/utils/format-utils.js +45 -0
- package/extensions/dm-lens/dist/clients/dispatch/utils/lsp-diagnostics.js +31 -0
- package/extensions/dm-lens/dist/clients/disposition-logger.js +19 -0
- package/extensions/dm-lens/dist/clients/disposition-publish.js +88 -0
- package/extensions/dm-lens/dist/clients/durable-store.js +77 -0
- package/extensions/dm-lens/dist/clients/effective-config.js +160 -0
- package/extensions/dm-lens/dist/clients/env-utils.js +26 -0
- package/extensions/dm-lens/dist/clients/error-class.js +3 -0
- package/extensions/dm-lens/dist/clients/eval-timestamp.js +2 -0
- package/extensions/dm-lens/dist/clients/event-loop-hold.js +119 -0
- package/extensions/dm-lens/dist/clients/event-loop-monitor.js +84 -0
- package/extensions/dm-lens/dist/clients/extension-log.js +230 -0
- package/extensions/dm-lens/dist/clients/extension-mode.js +20 -0
- package/extensions/dm-lens/dist/clients/feature-hints.js +88 -0
- package/extensions/dm-lens/dist/clients/file-kinds.js +304 -0
- package/extensions/dm-lens/dist/clients/file-role.js +50 -0
- package/extensions/dm-lens/dist/clients/file-time.js +112 -0
- package/extensions/dm-lens/dist/clients/file-utils.js +630 -0
- package/extensions/dm-lens/dist/clients/finding-delivery-gate.js +129 -0
- package/extensions/dm-lens/dist/clients/finding-identity.js +23 -0
- package/extensions/dm-lens/dist/clients/fix-worklog.js +75 -0
- package/extensions/dm-lens/dist/clients/format-events-publish.js +230 -0
- package/extensions/dm-lens/dist/clients/format-service.js +154 -0
- package/extensions/dm-lens/dist/clients/formatters-lazy.js +8 -0
- package/extensions/dm-lens/dist/clients/formatters.js +1351 -0
- package/extensions/dm-lens/dist/clients/freshness-cadence.js +1 -0
- package/extensions/dm-lens/dist/clients/freshness.js +8 -0
- package/extensions/dm-lens/dist/clients/generated-artifacts.js +209 -0
- package/extensions/dm-lens/dist/clients/generation-guard.js +105 -0
- package/extensions/dm-lens/dist/clients/git-guard.js +770 -0
- package/extensions/dm-lens/dist/clients/git-tracked-ignore.js +120 -0
- package/extensions/dm-lens/dist/clients/gitleaks-client.js +282 -0
- package/extensions/dm-lens/dist/clients/go-client.js +47 -0
- package/extensions/dm-lens/dist/clients/govulncheck-client.js +411 -0
- package/extensions/dm-lens/dist/clients/gradle-ktfmt-style.js +177 -0
- package/extensions/dm-lens/dist/clients/grammar-source.js +224 -0
- package/extensions/dm-lens/dist/clients/gzip-stage-write.js +85 -0
- package/extensions/dm-lens/dist/clients/hashline-anchor.js +222 -0
- package/extensions/dm-lens/dist/clients/hook-budgets.js +16 -0
- package/extensions/dm-lens/dist/clients/host-edit-normalize.js +87 -0
- package/extensions/dm-lens/dist/clients/host-ports.js +35 -0
- package/extensions/dm-lens/dist/clients/indent-retarget.js +102 -0
- package/extensions/dm-lens/dist/clients/inline-blocker-dispositions.js +103 -0
- package/extensions/dm-lens/dist/clients/install-diagnostics.js +123 -0
- package/extensions/dm-lens/dist/clients/installer/index.js +3770 -0
- package/extensions/dm-lens/dist/clients/installer/managed-tool-refresh-session.js +17 -0
- package/extensions/dm-lens/dist/clients/installer/managed-tool-refresh.js +522 -0
- package/extensions/dm-lens/dist/clients/instance-reaper-state.js +3 -0
- package/extensions/dm-lens/dist/clients/instance-reaper.js +577 -0
- package/extensions/dm-lens/dist/clients/instance-registry-lock.js +131 -0
- package/extensions/dm-lens/dist/clients/instance-registry.js +452 -0
- package/extensions/dm-lens/dist/clients/jscpd-client.js +252 -0
- package/extensions/dm-lens/dist/clients/json-cache-read.js +25 -0
- package/extensions/dm-lens/dist/clients/knip-client.js +472 -0
- package/extensions/dm-lens/dist/clients/language-policy.js +242 -0
- package/extensions/dm-lens/dist/clients/language-profile.js +261 -0
- package/extensions/dm-lens/dist/clients/language-registry.js +424 -0
- package/extensions/dm-lens/dist/clients/latency-logger.js +192 -0
- package/extensions/dm-lens/dist/clients/lazy-import.js +14 -0
- package/extensions/dm-lens/dist/clients/ledger-bounds.js +21 -0
- package/extensions/dm-lens/dist/clients/lens-config.js +237 -0
- package/extensions/dm-lens/dist/clients/lens-engine.js +181 -0
- package/extensions/dm-lens/dist/clients/lens-events.js +105 -0
- package/extensions/dm-lens/dist/clients/lens-flag-registry.js +302 -0
- package/extensions/dm-lens/dist/clients/lens-map.js +980 -0
- package/extensions/dm-lens/dist/clients/live-bus-emitter.js +53 -0
- package/extensions/dm-lens/dist/clients/log-cleanup.js +138 -0
- package/extensions/dm-lens/dist/clients/lsp/aggregation.js +88 -0
- package/extensions/dm-lens/dist/clients/lsp/cascade-tier.js +203 -0
- package/extensions/dm-lens/dist/clients/lsp/client.js +2709 -0
- package/extensions/dm-lens/dist/clients/lsp/config.js +252 -0
- package/extensions/dm-lens/dist/clients/lsp/content-limits.js +21 -0
- package/extensions/dm-lens/dist/clients/lsp/diagnostic-binding.js +79 -0
- package/extensions/dm-lens/dist/clients/lsp/document-drift.js +312 -0
- package/extensions/dm-lens/dist/clients/lsp/edits.js +930 -0
- package/extensions/dm-lens/dist/clients/lsp/index.js +4448 -0
- package/extensions/dm-lens/dist/clients/lsp/inferred-project.js +121 -0
- package/extensions/dm-lens/dist/clients/lsp/jvm-runtime.js +194 -0
- package/extensions/dm-lens/dist/clients/lsp/language.js +23 -0
- package/extensions/dm-lens/dist/clients/lsp/launch.js +468 -0
- package/extensions/dm-lens/dist/clients/lsp/lombok.js +146 -0
- package/extensions/dm-lens/dist/clients/lsp/path-utils.js +1 -0
- package/extensions/dm-lens/dist/clients/lsp/pending-aux-coverage.js +90 -0
- package/extensions/dm-lens/dist/clients/lsp/position-encoding.js +28 -0
- package/extensions/dm-lens/dist/clients/lsp/ruby-drive-dirs.js +42 -0
- package/extensions/dm-lens/dist/clients/lsp/server.js +2422 -0
- package/extensions/dm-lens/dist/clients/lsp/session-roots.js +52 -0
- package/extensions/dm-lens/dist/clients/lsp/spawn-history.js +15 -0
- package/extensions/dm-lens/dist/clients/lsp/sync-kind.js +30 -0
- package/extensions/dm-lens/dist/clients/lsp/tsserver-sync.js +156 -0
- package/extensions/dm-lens/dist/clients/lsp/wait-policy/capability-snapshot.js +1 -0
- package/extensions/dm-lens/dist/clients/lsp/wait-policy/classification.js +36 -0
- package/extensions/dm-lens/dist/clients/lsp/wait-policy/index.js +3 -0
- package/extensions/dm-lens/dist/clients/lsp/wait-policy/strategies.js +175 -0
- package/extensions/dm-lens/dist/clients/lsp/watch-queue.js +40 -0
- package/extensions/dm-lens/dist/clients/lsp/workspace-diagnostics-cache.js +267 -0
- package/extensions/dm-lens/dist/clients/lsp/workspace-diagnostics-session.js +7 -0
- package/extensions/dm-lens/dist/clients/lsp/workspace-sweep-hold.js +93 -0
- package/extensions/dm-lens/dist/clients/lsp-budget.js +83 -0
- package/extensions/dm-lens/dist/clients/lsp-document-symbols.js +93 -0
- package/extensions/dm-lens/dist/clients/lsp-lazy.js +8 -0
- package/extensions/dm-lens/dist/clients/lsp-mutation.js +273 -0
- package/extensions/dm-lens/dist/clients/lsp-status.js +37 -0
- package/extensions/dm-lens/dist/clients/map-with-concurrency.js +20 -0
- package/extensions/dm-lens/dist/clients/mcp/analyze.js +251 -0
- package/extensions/dm-lens/dist/clients/mcp/host-shim.js +14 -0
- package/extensions/dm-lens/dist/clients/mcp/ipc.js +302 -0
- package/extensions/dm-lens/dist/clients/mcp/review.js +137 -0
- package/extensions/dm-lens/dist/clients/mcp/session.js +305 -0
- package/extensions/dm-lens/dist/clients/memory-sampler.js +107 -0
- package/extensions/dm-lens/dist/clients/message-end-attribution.js +18 -0
- package/extensions/dm-lens/dist/clients/metrics-client.js +80 -0
- package/extensions/dm-lens/dist/clients/metrics-history.js +255 -0
- package/extensions/dm-lens/dist/clients/middle-man-analysis.js +161 -0
- package/extensions/dm-lens/dist/clients/model-provider.js +31 -0
- package/extensions/dm-lens/dist/clients/module-report-lsp.js +140 -0
- package/extensions/dm-lens/dist/clients/module-report.js +1642 -0
- package/extensions/dm-lens/dist/clients/mutating-tool.js +377 -0
- package/extensions/dm-lens/dist/clients/mutation-attribution.js +168 -0
- package/extensions/dm-lens/dist/clients/mutation-bridge.js +102 -0
- package/extensions/dm-lens/dist/clients/ndjson-logger.js +471 -0
- package/extensions/dm-lens/dist/clients/observed-mutation-sources.js +43 -0
- package/extensions/dm-lens/dist/clients/observed-mutation.js +709 -0
- package/extensions/dm-lens/dist/clients/oldtext-autopatch.js +100 -0
- package/extensions/dm-lens/dist/clients/opaque-mutation-scan.js +313 -0
- package/extensions/dm-lens/dist/clients/opengrep-client.js +216 -0
- package/extensions/dm-lens/dist/clients/opengrep-config.js +52 -0
- package/extensions/dm-lens/dist/clients/package-manager.js +303 -0
- package/extensions/dm-lens/dist/clients/package-root.js +25 -0
- package/extensions/dm-lens/dist/clients/partial-edit-apply.js +337 -0
- package/extensions/dm-lens/dist/clients/path-attribution-telemetry.js +31 -0
- package/extensions/dm-lens/dist/clients/path-keyed-map.js +57 -0
- package/extensions/dm-lens/dist/clients/path-utils.js +476 -0
- package/extensions/dm-lens/dist/clients/performance-report.js +291 -0
- package/extensions/dm-lens/dist/clients/persist-debounce.js +37 -0
- package/extensions/dm-lens/dist/clients/persistent-reverify.js +165 -0
- package/extensions/dm-lens/dist/clients/php-cs-fixer-config.js +15 -0
- package/extensions/dm-lens/dist/clients/pipeline.js +1091 -0
- package/extensions/dm-lens/dist/clients/post-autofix-notice.js +19 -0
- package/extensions/dm-lens/dist/clients/print-mode.js +3 -0
- package/extensions/dm-lens/dist/clients/probe-home-state.js +62 -0
- package/extensions/dm-lens/dist/clients/process-bridge.js +20 -0
- package/extensions/dm-lens/dist/clients/process-singletons.js +69 -0
- package/extensions/dm-lens/dist/clients/process-snapshot.js +22 -0
- package/extensions/dm-lens/dist/clients/project-changes.js +112 -0
- package/extensions/dm-lens/dist/clients/project-conventions.js +152 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/cache.js +91 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/extractors.js +53 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/fresh-fetch.js +408 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/call-graph-impact.js +64 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/dead-code.js +38 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/gitleaks.js +21 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/govulncheck.js +23 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/jscpd.js +28 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/knip.js +45 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/madge.js +34 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/opengrep.js +32 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/runner-findings.js +79 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/trivy.js +41 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/scanner.js +349 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/types.js +1 -0
- package/extensions/dm-lens/dist/clients/project-lens-config.js +437 -0
- package/extensions/dm-lens/dist/clients/project-report.js +527 -0
- package/extensions/dm-lens/dist/clients/project-scale.js +60 -0
- package/extensions/dm-lens/dist/clients/project-scan-policy.js +4 -0
- package/extensions/dm-lens/dist/clients/project-snapshot-fingerprint.js +39 -0
- package/extensions/dm-lens/dist/clients/project-snapshot-persist-worker.js +14 -0
- package/extensions/dm-lens/dist/clients/project-snapshot.js +1178 -0
- package/extensions/dm-lens/dist/clients/project-trust.js +104 -0
- package/extensions/dm-lens/dist/clients/python-environment.js +120 -0
- package/extensions/dm-lens/dist/clients/python-provenance.js +551 -0
- package/extensions/dm-lens/dist/clients/quiet-window-config.js +16 -0
- package/extensions/dm-lens/dist/clients/quiet-window.js +126 -0
- package/extensions/dm-lens/dist/clients/read-bridge.js +46 -0
- package/extensions/dm-lens/dist/clients/read-expansion.js +218 -0
- package/extensions/dm-lens/dist/clients/read-guard-logger.js +178 -0
- package/extensions/dm-lens/dist/clients/read-guard-tool-lines.js +1042 -0
- package/extensions/dm-lens/dist/clients/read-guard.js +1096 -0
- package/extensions/dm-lens/dist/clients/recent-touches.js +126 -0
- package/extensions/dm-lens/dist/clients/redact/secrets.js +386 -0
- package/extensions/dm-lens/dist/clients/resource-sampler.js +344 -0
- package/extensions/dm-lens/dist/clients/reverse-deps.js +227 -0
- package/extensions/dm-lens/dist/clients/review-graph/builder.js +3635 -0
- package/extensions/dm-lens/dist/clients/review-graph/format.js +30 -0
- package/extensions/dm-lens/dist/clients/review-graph/git-identity.js +115 -0
- package/extensions/dm-lens/dist/clients/review-graph/import-resolvers.js +325 -0
- package/extensions/dm-lens/dist/clients/review-graph/persist-worker.js +8 -0
- package/extensions/dm-lens/dist/clients/review-graph/query.js +195 -0
- package/extensions/dm-lens/dist/clients/review-graph/revision-drift.js +3 -0
- package/extensions/dm-lens/dist/clients/review-graph/service.js +60 -0
- package/extensions/dm-lens/dist/clients/review-graph/shared-extraction-ir.js +54 -0
- package/extensions/dm-lens/dist/clients/review-graph/symbol-id.js +29 -0
- package/extensions/dm-lens/dist/clients/review-graph/tsconfig-paths.js +253 -0
- package/extensions/dm-lens/dist/clients/review-graph/types.js +1 -0
- package/extensions/dm-lens/dist/clients/review-graph/workspace-modules.js +374 -0
- package/extensions/dm-lens/dist/clients/review-graph-logger.js +51 -0
- package/extensions/dm-lens/dist/clients/ruff-client.js +109 -0
- package/extensions/dm-lens/dist/clients/rules-scanner.js +113 -0
- package/extensions/dm-lens/dist/clients/run-duration.js +9 -0
- package/extensions/dm-lens/dist/clients/runtime-agent-end.js +608 -0
- package/extensions/dm-lens/dist/clients/runtime-config.js +39 -0
- package/extensions/dm-lens/dist/clients/runtime-context.js +155 -0
- package/extensions/dm-lens/dist/clients/runtime-coordinator.js +817 -0
- package/extensions/dm-lens/dist/clients/runtime-session.js +1625 -0
- package/extensions/dm-lens/dist/clients/runtime-tool-call.js +868 -0
- package/extensions/dm-lens/dist/clients/runtime-tool-result.js +1317 -0
- package/extensions/dm-lens/dist/clients/runtime-turn.js +2333 -0
- package/extensions/dm-lens/dist/clients/rust-client.js +48 -0
- package/extensions/dm-lens/dist/clients/safe-spawn.js +1267 -0
- package/extensions/dm-lens/dist/clients/sanitize.js +174 -0
- package/extensions/dm-lens/dist/clients/scan-utils.js +7 -0
- package/extensions/dm-lens/dist/clients/scratch-tree-policy.js +57 -0
- package/extensions/dm-lens/dist/clients/search-read-registration.js +59 -0
- package/extensions/dm-lens/dist/clients/secret-findings.js +69 -0
- package/extensions/dm-lens/dist/clients/security-scan-client.js +208 -0
- package/extensions/dm-lens/dist/clients/session-event-guard.js +111 -0
- package/extensions/dm-lens/dist/clients/session-lifecycle.js +173 -0
- package/extensions/dm-lens/dist/clients/session-start-observability.js +47 -0
- package/extensions/dm-lens/dist/clients/session-state-store.js +63 -0
- package/extensions/dm-lens/dist/clients/session-summary.js +8 -0
- package/extensions/dm-lens/dist/clients/sessionstart-logger.js +22 -0
- package/extensions/dm-lens/dist/clients/sg-runner.js +627 -0
- package/extensions/dm-lens/dist/clients/sgconfig.js +280 -0
- package/extensions/dm-lens/dist/clients/shared-checkout-guard.js +177 -0
- package/extensions/dm-lens/dist/clients/single-flight.js +52 -0
- package/extensions/dm-lens/dist/clients/situational-tool-telemetry.js +85 -0
- package/extensions/dm-lens/dist/clients/skills-resolver.js +38 -0
- package/extensions/dm-lens/dist/clients/slow-fs.js +77 -0
- package/extensions/dm-lens/dist/clients/smells-rollup.js +118 -0
- package/extensions/dm-lens/dist/clients/source-filter.js +320 -0
- package/extensions/dm-lens/dist/clients/source-walker.js +96 -0
- package/extensions/dm-lens/dist/clients/spawn-output-cap.js +35 -0
- package/extensions/dm-lens/dist/clients/spawn-timeout-cooldown.js +51 -0
- package/extensions/dm-lens/dist/clients/stale-marker.js +1 -0
- package/extensions/dm-lens/dist/clients/startup-scan.js +222 -0
- package/extensions/dm-lens/dist/clients/startup-timing.js +67 -0
- package/extensions/dm-lens/dist/clients/string-utils.js +6 -0
- package/extensions/dm-lens/dist/clients/subagent-mode.js +40 -0
- package/extensions/dm-lens/dist/clients/symbol-containment.js +16 -0
- package/extensions/dm-lens/dist/clients/symbol-types.js +1 -0
- package/extensions/dm-lens/dist/clients/test-runner-client.js +1504 -0
- package/extensions/dm-lens/dist/clients/test-runner-delivery.js +260 -0
- package/extensions/dm-lens/dist/clients/todo-scanner.js +164 -0
- package/extensions/dm-lens/dist/clients/tool-agreement.js +377 -0
- package/extensions/dm-lens/dist/clients/tool-config.js +218 -0
- package/extensions/dm-lens/dist/clients/tool-cwd.js +235 -0
- package/extensions/dm-lens/dist/clients/tool-definition.js +22 -0
- package/extensions/dm-lens/dist/clients/tool-event.js +18 -0
- package/extensions/dm-lens/dist/clients/tool-policy.js +2393 -0
- package/extensions/dm-lens/dist/clients/tool-probe.js +5 -0
- package/extensions/dm-lens/dist/clients/tool-render.js +79 -0
- package/extensions/dm-lens/dist/clients/tool-set-policy.js +70 -0
- package/extensions/dm-lens/dist/clients/tree-sitter-cache.js +206 -0
- package/extensions/dm-lens/dist/clients/tree-sitter-client.js +2787 -0
- package/extensions/dm-lens/dist/clients/tree-sitter-logger.js +77 -0
- package/extensions/dm-lens/dist/clients/tree-sitter-navigator.js +198 -0
- package/extensions/dm-lens/dist/clients/tree-sitter-query-loader.js +318 -0
- package/extensions/dm-lens/dist/clients/tree-sitter-shared.js +87 -0
- package/extensions/dm-lens/dist/clients/tree-sitter-symbol-extractor.js +957 -0
- package/extensions/dm-lens/dist/clients/trivy-client.js +305 -0
- package/extensions/dm-lens/dist/clients/tui-fit.js +26 -0
- package/extensions/dm-lens/dist/clients/turn-context.js +48 -0
- package/extensions/dm-lens/dist/clients/turn-end/lane.js +1 -0
- package/extensions/dm-lens/dist/clients/turn-end/lanes/govulncheck.js +54 -0
- package/extensions/dm-lens/dist/clients/turn-end/lanes/secrets.js +131 -0
- package/extensions/dm-lens/dist/clients/turn-summary-render.js +56 -0
- package/extensions/dm-lens/dist/clients/turn-summary.js +84 -0
- package/extensions/dm-lens/dist/clients/typos-config.js +9 -0
- package/extensions/dm-lens/dist/clients/user-notify.js +15 -0
- package/extensions/dm-lens/dist/clients/vanished-instance-marker.js +18 -0
- package/extensions/dm-lens/dist/clients/warm-attach.js +210 -0
- package/extensions/dm-lens/dist/clients/widget-state.js +963 -0
- package/extensions/dm-lens/dist/clients/word-index-logger.js +21 -0
- package/extensions/dm-lens/dist/clients/word-index-store.js +222 -0
- package/extensions/dm-lens/dist/clients/word-index.js +1426 -0
- package/extensions/dm-lens/dist/clients/workspace-topology.js +261 -0
- package/extensions/dm-lens/dist/clients/write-ordering-guard.js +24 -0
- package/extensions/dm-lens/dist/clients/zizmor-config.js +160 -0
- package/extensions/dm-lens/dist/i18n.js +67 -0
- package/extensions/dm-lens/dist/index.js +1782 -0
- package/extensions/dm-lens/dist/mcp/analyze-cli.js +178 -0
- package/extensions/dm-lens/dist/mcp/build-staleness.js +55 -0
- package/extensions/dm-lens/dist/mcp/cli.js +78 -0
- package/extensions/dm-lens/dist/mcp/server.js +1208 -0
- package/extensions/dm-lens/dist/mcp/worker.js +33 -0
- package/extensions/dm-lens/dist/scripts/lib/process-scan.mjs +256 -0
- package/extensions/dm-lens/dist/scripts/lib/skills-predicate.mjs +53 -0
- package/extensions/dm-lens/dist/scripts/lib/web-tree-sitter-dir.mjs +45 -0
- package/extensions/dm-lens/dist/tools/activate-tools.js +61 -0
- package/extensions/dm-lens/dist/tools/ast-grep-outline.js +127 -0
- package/extensions/dm-lens/dist/tools/ast-grep-replace.js +226 -0
- package/extensions/dm-lens/dist/tools/ast-grep-search.js +687 -0
- package/extensions/dm-lens/dist/tools/effective-config.js +59 -0
- package/extensions/dm-lens/dist/tools/lens-diagnostic-mark.js +240 -0
- package/extensions/dm-lens/dist/tools/lens-diagnostics.js +1484 -0
- package/extensions/dm-lens/dist/tools/lsp-diagnostics.js +1088 -0
- package/extensions/dm-lens/dist/tools/lsp-navigation.js +1194 -0
- package/extensions/dm-lens/dist/tools/lsp-structured-output.js +277 -0
- package/extensions/dm-lens/dist/tools/module-report.js +332 -0
- package/extensions/dm-lens/dist/tools/project-report.js +72 -0
- package/extensions/dm-lens/dist/tools/render-compact.js +272 -0
- package/extensions/dm-lens/dist/tools/scan-progress.js +31 -0
- package/extensions/dm-lens/dist/tools/shared.js +26 -0
- package/extensions/dm-lens/dist/tools/symbol-search.js +133 -0
- package/extensions/dm-lens/index.js +278 -101
- package/extensions/dm-lens/mcp/analyze-cli.js +3 -2
- package/extensions/dm-lens/mcp/build-staleness.js +1 -1
- package/extensions/dm-lens/mcp/server.js +144 -73
- package/extensions/dm-lens/package.json +4 -4
- package/extensions/dm-lens/rules/ast-grep-rules/rule-tests/no-assert-tuple-test.yml +13 -0
- package/extensions/dm-lens/rules/ast-grep-rules/rule-tests/no-boolean-in-except-test.yml +26 -0
- package/extensions/dm-lens/rules/ast-grep-rules/rule-tests/no-http-headers-bracket-access-test.yml +10 -0
- package/extensions/dm-lens/rules/ast-grep-rules/rule-tests/unchecked-numeric-parse-python-test.yml +18 -0
- package/extensions/dm-lens/rules/ast-grep-rules/rule-tests/unchecked-throwing-call-python-test.yml +4 -3
- package/extensions/dm-lens/rules/ast-grep-rules/rules/go-no-fmt-println.yml +2 -2
- package/extensions/dm-lens/rules/ast-grep-rules/rules/no-assert-tuple.yml +23 -13
- package/extensions/dm-lens/rules/ast-grep-rules/rules/no-boolean-in-except.yml +7 -3
- package/extensions/dm-lens/rules/ast-grep-rules/rules/no-console-except-error-js.yml +2 -2
- package/extensions/dm-lens/rules/ast-grep-rules/rules/no-console-except-error.yml +2 -2
- package/extensions/dm-lens/rules/ast-grep-rules/rules/no-http-headers-bracket-access.yml +12 -7
- package/extensions/dm-lens/rules/ast-grep-rules/rules/unchecked-numeric-parse-python.yml +44 -0
- package/extensions/dm-lens/rules/ast-grep-rules/rules/unchecked-throwing-call-python.yml +5 -3
- package/extensions/dm-lens/rules/tree-sitter-queries/python/python-cross-language-method.yml +3 -3
- package/extensions/dm-lens/rules/tree-sitter-queries/python/python-hallucinated-import.yml +2 -2
- package/extensions/dm-lens/rules/tree-sitter-queries/python/python-sql-injection.yml +12 -2
- package/extensions/dm-lens/rules/tree-sitter-queries/typescript/console-statement.yml +2 -2
- package/extensions/dm-lens/rules/tree-sitter-queries/typescript/sql-injection.yml +23 -7
- package/extensions/dm-lens/rules/typos/_typos.toml +4 -2
- package/extensions/dm-lens/scripts/lib/process-scan.mjs +1 -1
- package/extensions/dm-lens/scripts/lib/skills-predicate.mjs +53 -0
- package/extensions/dm-lens/scripts/lib/web-tree-sitter-dir.mjs +45 -0
- package/extensions/dm-lens/skills/pi-lens-ast-grep/SKILL.md +23 -6
- package/extensions/dm-lens/skills/pi-lens-lsp-navigation/SKILL.md +26 -9
- package/extensions/dm-lens/tools/activate-tools.js +10 -7
- package/extensions/dm-lens/tools/ast-grep-outline.js +2 -6
- package/extensions/dm-lens/tools/ast-grep-replace.js +5 -16
- package/extensions/dm-lens/tools/ast-grep-search.js +83 -38
- package/extensions/dm-lens/tools/effective-config.js +5 -4
- package/extensions/dm-lens/tools/lens-diagnostic-mark.js +5 -3
- package/extensions/dm-lens/tools/lens-diagnostics.js +478 -106
- package/extensions/dm-lens/tools/lsp-diagnostics.js +317 -172
- package/extensions/dm-lens/tools/lsp-navigation.js +26 -56
- package/extensions/dm-lens/tools/lsp-structured-output.js +3 -3
- package/extensions/dm-lens/tools/module-report.js +5 -5
- package/extensions/dm-lens/tools/project-report.js +9 -15
- package/extensions/dm-lens/tools/render-compact.js +220 -1
- package/extensions/dm-lens/tools/symbol-search.js +3 -5
- package/extensions/dm-mcp-adapter/OAUTH.md +368 -2
- package/extensions/dm-mcp-adapter/THIRD_PARTY_NOTICES.md +1 -1
- package/extensions/dm-mcp-adapter/agent-plugin-loader.js +73 -30
- package/extensions/dm-mcp-adapter/agent-plugin-provenance.js +26 -0
- package/extensions/dm-mcp-adapter/bearer-command-resolver.js +182 -0
- package/extensions/dm-mcp-adapter/claude-plugin-loader.js +350 -0
- package/extensions/dm-mcp-adapter/cli.js +82 -5
- package/extensions/dm-mcp-adapter/commands.js +89 -15
- package/extensions/dm-mcp-adapter/config.js +283 -33
- package/extensions/dm-mcp-adapter/consent-manager.js +32 -8
- package/extensions/dm-mcp-adapter/direct-tool-surface.js +223 -0
- package/extensions/dm-mcp-adapter/direct-tools.js +21 -216
- package/extensions/dm-mcp-adapter/dist/abort.js +35 -0
- package/extensions/dm-mcp-adapter/dist/agent-plugin-loader.js +73 -30
- package/extensions/dm-mcp-adapter/dist/agent-plugin-provenance.js +26 -0
- package/extensions/dm-mcp-adapter/dist/bearer-command-resolver.js +182 -0
- package/extensions/dm-mcp-adapter/dist/claude-plugin-loader.js +350 -0
- package/extensions/dm-mcp-adapter/dist/config.js +283 -33
- package/extensions/dm-mcp-adapter/dist/consent-manager.js +84 -0
- package/extensions/dm-mcp-adapter/dist/elicitation-handler.js +308 -0
- package/extensions/dm-mcp-adapter/dist/errors.js +225 -0
- package/extensions/dm-mcp-adapter/dist/http-ca.js +71 -0
- package/extensions/dm-mcp-adapter/dist/jev-client.js +359 -0
- package/extensions/dm-mcp-adapter/dist/jev-contracts.js +1 -0
- package/extensions/dm-mcp-adapter/dist/jev-key-store.js +176 -0
- package/extensions/dm-mcp-adapter/dist/json-schema-validator.js +70 -0
- package/extensions/dm-mcp-adapter/dist/lifecycle.js +387 -0
- package/extensions/dm-mcp-adapter/dist/logger.js +115 -0
- package/extensions/dm-mcp-adapter/dist/mcp-auth-fetch.js +86 -0
- package/extensions/dm-mcp-adapter/dist/mcp-auth-flow.js +949 -0
- package/extensions/dm-mcp-adapter/dist/mcp-auth.js +997 -0
- package/extensions/dm-mcp-adapter/dist/mcp-bearer-store.js +7 -136
- package/extensions/dm-mcp-adapter/dist/mcp-callback-server.js +381 -0
- package/extensions/dm-mcp-adapter/dist/mcp-oauth-provider.js +524 -0
- package/extensions/dm-mcp-adapter/dist/mcp-probe.js +151 -0
- package/extensions/dm-mcp-adapter/dist/mcp-tasks.js +300 -0
- package/extensions/dm-mcp-adapter/dist/mcp-trace.js +215 -0
- package/extensions/dm-mcp-adapter/dist/metadata-cache.js +10 -28
- package/extensions/dm-mcp-adapter/dist/npx-resolver.js +465 -0
- package/extensions/dm-mcp-adapter/dist/package-mcp-loader.js +5 -16
- package/extensions/dm-mcp-adapter/dist/request-headers-command.js +294 -0
- package/extensions/dm-mcp-adapter/dist/runtime-owner.js +94 -0
- package/extensions/dm-mcp-adapter/dist/sampling-handler.js +213 -0
- package/extensions/dm-mcp-adapter/dist/secure-keyring.js +191 -0
- package/extensions/dm-mcp-adapter/dist/server-manager.js +1514 -0
- package/extensions/dm-mcp-adapter/dist/session-approvals.js +127 -0
- package/extensions/dm-mcp-adapter/dist/session-recovery.js +82 -0
- package/extensions/dm-mcp-adapter/dist/state.js +1 -0
- package/extensions/dm-mcp-adapter/dist/types.js +39 -0
- package/extensions/dm-mcp-adapter/dist/ui-resource-handler.js +204 -0
- package/extensions/dm-mcp-adapter/dist/unix-socket-transport.js +83 -0
- package/extensions/dm-mcp-adapter/dist/utils.js +84 -9
- package/extensions/dm-mcp-adapter/elicitation-handler.js +27 -22
- package/extensions/dm-mcp-adapter/host-html-template.js +17 -18
- package/extensions/dm-mcp-adapter/http-ca.js +71 -0
- package/extensions/dm-mcp-adapter/index.js +904 -167
- package/extensions/dm-mcp-adapter/init.js +53 -42
- package/extensions/dm-mcp-adapter/jev-client.js +359 -0
- package/extensions/dm-mcp-adapter/jev-contracts.js +0 -0
- package/extensions/dm-mcp-adapter/jev-key-store.js +176 -0
- package/extensions/dm-mcp-adapter/json-schema-validator.js +19 -2
- package/extensions/dm-mcp-adapter/lazy-loader.js +7 -0
- package/extensions/dm-mcp-adapter/lifecycle.js +8 -3
- package/extensions/dm-mcp-adapter/mcp-auth-fetch.js +86 -0
- package/extensions/dm-mcp-adapter/mcp-auth-flow.js +228 -75
- package/extensions/dm-mcp-adapter/mcp-auth.js +312 -47
- package/extensions/dm-mcp-adapter/mcp-bearer-store.js +7 -136
- package/extensions/dm-mcp-adapter/mcp-code.js +151 -20
- package/extensions/dm-mcp-adapter/mcp-install.js +40 -0
- package/extensions/dm-mcp-adapter/mcp-oauth-provider.js +52 -8
- package/extensions/dm-mcp-adapter/mcp-output-guard.js +42 -43
- package/extensions/dm-mcp-adapter/mcp-panel-theme.js +79 -0
- package/extensions/dm-mcp-adapter/mcp-panel.js +294 -286
- package/extensions/dm-mcp-adapter/mcp-references.js +13 -18
- package/extensions/dm-mcp-adapter/mcp-script-worker.mjs +5 -1
- package/extensions/dm-mcp-adapter/mcp-setup-panel.js +317 -282
- package/extensions/dm-mcp-adapter/mcp-status.js +2 -0
- package/extensions/dm-mcp-adapter/mcp-tasks.js +309 -0
- package/extensions/dm-mcp-adapter/metadata-cache.js +11 -28
- package/extensions/dm-mcp-adapter/namespace-tools.js +43 -7
- package/extensions/dm-mcp-adapter/oauth.js +1 -1
- package/extensions/dm-mcp-adapter/package-mcp-loader.js +5 -16
- package/extensions/dm-mcp-adapter/package.json +4 -1
- package/extensions/dm-mcp-adapter/prompts.js +31 -4
- package/extensions/dm-mcp-adapter/proxy-modes.js +394 -199
- package/extensions/dm-mcp-adapter/request-headers-command.js +3 -2
- package/extensions/dm-mcp-adapter/runtime-owner.js +16 -1
- package/extensions/dm-mcp-adapter/sampling-handler.js +16 -25
- package/extensions/dm-mcp-adapter/sandbox-proxy-template.js +14 -90
- package/extensions/dm-mcp-adapter/search-ranking.js +31 -6
- package/extensions/dm-mcp-adapter/secure-keyring.js +191 -0
- package/extensions/dm-mcp-adapter/semantic-search.js +160 -0
- package/extensions/dm-mcp-adapter/server-manager.js +406 -117
- package/extensions/dm-mcp-adapter/session-approvals.js +127 -0
- package/extensions/dm-mcp-adapter/skills/mcp-scripting/SKILL.md +11 -1
- package/extensions/dm-mcp-adapter/test-runner.mjs +3 -4
- package/extensions/dm-mcp-adapter/tool-approval.js +32 -22
- package/extensions/dm-mcp-adapter/tool-metadata.js +18 -11
- package/extensions/dm-mcp-adapter/tool-registrar.js +7 -4
- package/extensions/dm-mcp-adapter/tool-result-renderer.js +4 -2
- package/extensions/dm-mcp-adapter/types.js +39 -0
- package/extensions/dm-mcp-adapter/ui-server.js +51 -36
- package/extensions/dm-mcp-adapter/ui-session.js +57 -25
- package/extensions/dm-mcp-adapter/utils.js +84 -9
- package/extensions/dm-ponytail/hooks/cursor-hooks.json +17 -0
- package/extensions/dm-ponytail/hooks/ponytail-activate.js +14 -2
- package/extensions/dm-ponytail/hooks/ponytail-mode-tracker.js +21 -2
- package/extensions/dm-ponytail/hooks/ponytail-runtime.js +23 -0
- package/extensions/dm-ponytail/package.json +1 -1
- package/extensions/dm-subagents/agents/claude-code-writer.md +1 -0
- package/extensions/dm-subagents/agents/codex-exec-writer.md +1 -0
- package/extensions/dm-subagents/agents/cursor-agent-writer.md +1 -0
- package/extensions/dm-subagents/agents/evidence-auditor.md +34 -0
- package/extensions/dm-subagents/agents/researcher.md +23 -13
- package/extensions/dm-subagents/agents/reviewer.md +6 -4
- package/extensions/dm-subagents/agents/scout.md +1 -1
- package/extensions/dm-subagents/agents/worker.md +3 -2
- package/extensions/dm-subagents/index.js +3 -2
- package/extensions/dm-subagents/inspector-runner.mjs +2 -2
- package/extensions/dm-subagents/install.mjs +1 -2
- package/extensions/dm-subagents/package.json +35 -1
- package/extensions/dm-subagents/prompts/council.md +6 -3
- package/extensions/dm-subagents/prompts/parallel-review.md +1 -1
- package/extensions/dm-subagents/runner-peer-loader.mjs +18 -0
- package/extensions/dm-subagents/runner-peer-preload.mjs +29 -0
- package/extensions/dm-subagents/skills/dm-subagents/SKILL.md +35 -22
- package/extensions/dm-subagents/skills/dm-subagents/references/constraints-and-recipes.md +9 -5
- package/extensions/dm-subagents/skills/dm-subagents/references/execution-controls.md +40 -19
- package/extensions/dm-subagents/skills/dm-subagents/references/management-authoring-rpc.md +6 -6
- package/extensions/dm-subagents/skills/dm-subagents/references/multi-lane-orchestration.md +11 -1
- package/extensions/dm-subagents/skills/dm-subagents/references/prompting-and-roles.md +35 -30
- package/extensions/dm-subagents/skills/dm-subagents/references/review-and-validation.md +3 -3
- package/extensions/dm-subagents/src/agents/advertised-agent-prompt.js +70 -0
- package/extensions/dm-subagents/src/agents/agent-management.js +276 -172
- package/extensions/dm-subagents/src/agents/agent-memory.js +92 -3
- package/extensions/dm-subagents/src/agents/agent-serializer.js +17 -8
- package/extensions/dm-subagents/src/agents/agents.js +389 -207
- package/extensions/dm-subagents/src/agents/builtin-names.js +1 -0
- package/extensions/dm-subagents/src/agents/chain-serializer.js +7 -0
- package/extensions/dm-subagents/src/agents/global-npm-root.js +47 -0
- package/extensions/dm-subagents/src/agents/proactive-skills.js +1 -1
- package/extensions/dm-subagents/src/agents/runtime-agent-registry.js +17 -13
- package/extensions/dm-subagents/src/agents/skills.js +36 -10
- package/extensions/dm-subagents/src/api/capability-ceiling.js +0 -1
- package/extensions/dm-subagents/src/api/child-tool-plan.js +3 -0
- package/extensions/dm-subagents/src/api/preflight.js +75 -64
- package/extensions/dm-subagents/src/api/required-child-extensions.js +3 -0
- package/extensions/dm-subagents/src/api/workflow-resources.js +1 -0
- package/extensions/dm-subagents/src/extension/config.js +27 -18
- package/extensions/dm-subagents/src/extension/doctor.js +10 -13
- package/extensions/dm-subagents/src/extension/fanout-child.js +91 -14
- package/extensions/dm-subagents/src/extension/herdr-dm-bridge.js +258 -0
- package/extensions/dm-subagents/src/extension/index.js +202 -66
- package/extensions/dm-subagents/src/extension/public-execution.js +55 -4
- package/extensions/dm-subagents/src/extension/rpc.js +18 -27
- package/extensions/dm-subagents/src/extension/schemas.js +99 -84
- package/extensions/dm-subagents/src/extension/subagent-guide.js +14 -3
- package/extensions/dm-subagents/src/extension/tool-activation.js +157 -0
- package/extensions/dm-subagents/src/extension/tool-description.js +30 -78
- package/extensions/dm-subagents/src/inspectors/actions.js +145 -0
- package/extensions/dm-subagents/src/inspectors/ghostty/actions.js +60 -0
- package/extensions/dm-subagents/src/inspectors/ghostty/plugin.js +17 -0
- package/extensions/dm-subagents/src/inspectors/herdr/actions.js +94 -179
- package/extensions/dm-subagents/src/inspectors/herdr/plugin.js +13 -0
- package/extensions/dm-subagents/src/inspectors/herdr/project-panes.js +1 -1
- package/extensions/dm-subagents/src/inspectors/{herdr/inspector-runner.js → inspector-runner.js} +31 -25
- package/extensions/dm-subagents/src/inspectors/plugins.js +5 -0
- package/extensions/dm-subagents/src/inspectors/{herdr/session-roots-codec.js → session-roots-codec.js} +1 -6
- package/extensions/dm-subagents/src/inspectors/types.js +1 -0
- package/extensions/dm-subagents/src/integrations/dm-web-session-liveness.js +50 -0
- package/extensions/dm-subagents/src/intercom/intercom-bridge.js +39 -5
- package/extensions/dm-subagents/src/intercom/native-supervisor-channel.js +256 -151
- package/extensions/dm-subagents/src/intercom/result-intercom.js +6 -0
- package/extensions/dm-subagents/src/intercom/supervisor-ui.js +199 -0
- package/extensions/dm-subagents/src/missions/workflow-state.js +30 -17
- package/extensions/dm-subagents/src/policy/authority.js +6 -2
- package/extensions/dm-subagents/src/profiles/profiles.js +10 -5
- package/extensions/dm-subagents/src/runs/background/active-async-capacity.js +28 -35
- package/extensions/dm-subagents/src/runs/background/active-run-index.js +17 -0
- package/extensions/dm-subagents/src/runs/background/async-execution.js +580 -389
- package/extensions/dm-subagents/src/runs/background/async-job-tracker.js +71 -47
- package/extensions/dm-subagents/src/runs/background/async-resume.js +61 -26
- package/extensions/dm-subagents/src/runs/background/async-retention.js +8 -0
- package/extensions/dm-subagents/src/runs/background/async-status-snapshot.js +3 -4
- package/extensions/dm-subagents/src/runs/background/async-status.js +90 -13
- package/extensions/dm-subagents/src/runs/background/auto-drain.js +57 -33
- package/extensions/dm-subagents/src/runs/background/binary-bootstrap.js +54 -0
- package/extensions/dm-subagents/src/runs/background/chain-append.js +1 -1
- package/extensions/dm-subagents/src/runs/background/chain-root-attachment.js +11 -27
- package/extensions/dm-subagents/src/runs/background/control-channel.js +105 -256
- package/extensions/dm-subagents/src/runs/background/fleet-view.js +67 -10
- package/extensions/dm-subagents/src/runs/background/notify.js +252 -17
- package/extensions/dm-subagents/src/runs/background/owned-process-tree.js +33 -2
- package/extensions/dm-subagents/src/runs/background/process-terminal-candidate.js +88 -0
- package/extensions/dm-subagents/src/runs/background/process-terminal.js +29 -87
- package/extensions/dm-subagents/src/runs/background/result-files.js +8 -4
- package/extensions/dm-subagents/src/runs/background/result-watcher.js +15 -3
- package/extensions/dm-subagents/src/runs/background/retained-children.js +3 -2
- package/extensions/dm-subagents/src/runs/background/retained-nested-route-tracker.js +86 -0
- package/extensions/dm-subagents/src/runs/background/run-child-session.js +574 -0
- package/extensions/dm-subagents/src/runs/background/run-id-resolver.js +9 -5
- package/extensions/dm-subagents/src/runs/background/run-status.js +114 -11
- package/extensions/dm-subagents/src/runs/background/runner-aliases.js +129 -0
- package/extensions/dm-subagents/src/runs/background/runner-child-launch.js +62 -0
- package/extensions/dm-subagents/src/runs/background/runner-child-sessions.js +16 -0
- package/extensions/dm-subagents/src/runs/background/runner-http-dispatcher.js +84 -0
- package/extensions/dm-subagents/src/runs/background/runner-startup-failure.js +43 -0
- package/extensions/dm-subagents/src/runs/background/scheduled-runs.js +119 -20
- package/extensions/dm-subagents/src/runs/background/stale-run-reconciler.js +33 -10
- package/extensions/dm-subagents/src/runs/background/steering.js +24 -3
- package/extensions/dm-subagents/src/runs/background/subagent-runner-bootstrap.js +238 -0
- package/extensions/dm-subagents/src/runs/background/subagent-runner.js +1008 -1344
- package/extensions/dm-subagents/src/runs/background/subagent-wait.js +156 -26
- package/extensions/dm-subagents/src/runs/background/wait-completions.js +91 -23
- package/extensions/dm-subagents/src/runs/background/wait-subscriptions.js +10 -3
- package/extensions/dm-subagents/src/runs/background/wait-tool.js +8 -12
- package/extensions/dm-subagents/src/runs/background/workflow-terminal-proof.js +60 -0
- package/extensions/dm-subagents/src/runs/foreground/async-steering-action.js +29 -26
- package/extensions/dm-subagents/src/runs/foreground/async-stop-action.js +94 -2
- package/extensions/dm-subagents/src/runs/foreground/execution.js +446 -648
- package/extensions/dm-subagents/src/runs/foreground/foreground-control.js +4 -0
- package/extensions/dm-subagents/src/runs/foreground/foreground-history.js +5 -2
- package/extensions/dm-subagents/src/runs/foreground/prompt-audit.js +8 -4
- package/extensions/dm-subagents/src/runs/foreground/subagent-executor.js +1337 -445
- package/extensions/dm-subagents/src/runs/foreground/workflow-detach-reconcile.js +10 -5
- package/extensions/dm-subagents/src/runs/foreground/workflow-foreground-steering.js +65 -90
- package/extensions/dm-subagents/src/runs/shared/acceptance.js +265 -68
- package/extensions/dm-subagents/src/runs/shared/agent-contract.js +1 -1
- package/extensions/dm-subagents/src/runs/shared/async-status-projection.js +133 -76
- package/extensions/dm-subagents/src/runs/shared/capability-ceiling.js +4 -2
- package/extensions/dm-subagents/src/runs/shared/child-hooks.js +166 -0
- package/extensions/dm-subagents/src/runs/shared/child-identity.js +10 -2
- package/extensions/dm-subagents/src/runs/shared/child-launch-plan.js +19 -2
- package/extensions/dm-subagents/src/runs/shared/child-launch.js +212 -0
- package/extensions/dm-subagents/src/runs/shared/child-lifecycle.js +22 -0
- package/extensions/dm-subagents/src/runs/shared/child-runtime-config.js +31 -0
- package/extensions/dm-subagents/src/runs/shared/child-session.js +378 -0
- package/extensions/dm-subagents/src/runs/shared/child-tool-plan.js +299 -0
- package/extensions/dm-subagents/src/runs/shared/claude-code-adapter.js +1 -1
- package/extensions/dm-subagents/src/runs/shared/dm-spawn.js +148 -32
- package/extensions/dm-subagents/src/runs/shared/dynamic-fanout.js +6 -4
- package/extensions/dm-subagents/src/runs/shared/effective-system-prompt.js +19 -0
- package/extensions/dm-subagents/src/runs/shared/external-cli-contract.js +6 -1
- package/extensions/dm-subagents/src/runs/shared/external-cli-preflight.js +14 -2
- package/extensions/dm-subagents/src/runs/shared/external-cli-runner.js +6 -7
- package/extensions/dm-subagents/src/runs/shared/external-job-bridge.js +60 -0
- package/extensions/dm-subagents/src/runs/shared/git-environment.js +25 -0
- package/extensions/dm-subagents/src/runs/shared/herdr-connection.js +341 -0
- package/extensions/dm-subagents/src/runs/shared/herdr-dm-protocol.js +60 -0
- package/extensions/dm-subagents/src/runs/shared/herdr-external-adapters.js +555 -0
- package/extensions/dm-subagents/src/runs/shared/herdr-machine.js +239 -0
- package/extensions/dm-subagents/src/runs/shared/herdr-placed-run.js +987 -0
- package/extensions/dm-subagents/src/runs/shared/host-step-status.js +2 -0
- package/extensions/dm-subagents/src/runs/shared/lane-metadata.js +23 -3
- package/extensions/dm-subagents/src/runs/shared/mcp-direct-tool-allowlist.js +4 -3
- package/extensions/dm-subagents/src/runs/shared/mcp-direct-tool-grant.js +15 -5
- package/extensions/dm-subagents/src/runs/shared/model-resolution-diagnostic.js +43 -0
- package/extensions/dm-subagents/src/runs/shared/{model-fallback.js → model-resolution.js} +44 -128
- package/extensions/dm-subagents/src/runs/shared/nested-events.js +39 -49
- package/extensions/dm-subagents/src/runs/shared/nested-path.js +0 -13
- package/extensions/dm-subagents/src/runs/shared/orca-progress-tabs.js +22 -12
- package/extensions/dm-subagents/src/runs/shared/parallel-handoff.js +78 -2
- package/extensions/dm-subagents/src/runs/shared/permissions.js +1 -16
- package/extensions/dm-subagents/src/runs/shared/process-signal.js +3 -0
- package/extensions/dm-subagents/src/runs/shared/readonly-drain-observation.js +51 -0
- package/extensions/dm-subagents/src/runs/shared/run-fanout-budget.js +0 -13
- package/extensions/dm-subagents/src/runs/shared/runtime-acknowledged-extensions.js +0 -26
- package/extensions/dm-subagents/src/runs/shared/single-output.js +20 -2
- package/extensions/dm-subagents/src/runs/shared/structured-output.js +263 -10
- package/extensions/dm-subagents/src/runs/shared/subagent-control.js +6 -14
- package/extensions/dm-subagents/src/runs/shared/subagent-prompt-runtime.js +117 -370
- package/extensions/dm-subagents/src/runs/shared/tool-availability.js +12 -50
- package/extensions/dm-subagents/src/runs/shared/tool-budget.js +10 -13
- package/extensions/dm-subagents/src/runs/shared/tool-timeout.js +1 -1
- package/extensions/dm-subagents/src/runs/shared/usage-reconciliation.js +69 -0
- package/extensions/dm-subagents/src/runs/shared/workflow-async-child-guidance.js +11 -0
- package/extensions/dm-subagents/src/runs/shared/worktree-cleanup-plan.js +30 -10
- package/extensions/dm-subagents/src/runs/shared/worktree-setup-command.js +195 -0
- package/extensions/dm-subagents/src/runs/shared/worktree.js +814 -141
- package/extensions/dm-subagents/src/shared/atomic-json.js +2 -1
- package/extensions/dm-subagents/src/shared/child-cache-retention.js +19 -0
- package/extensions/dm-subagents/src/shared/fork-context.js +40 -77
- package/extensions/dm-subagents/src/shared/fork-session-cwd.js +24 -0
- package/extensions/dm-subagents/src/shared/jsonl-writer.js +8 -0
- package/extensions/dm-subagents/src/shared/launch-contract.js +37 -6
- package/extensions/dm-subagents/src/shared/model-response-aliases.js +15 -0
- package/extensions/dm-subagents/src/shared/opencode-session-headers.js +15 -0
- package/extensions/dm-subagents/src/shared/pruned-fork.js +83 -76
- package/extensions/dm-subagents/src/shared/required-child-extensions.js +72 -0
- package/extensions/dm-subagents/src/shared/shortcuts.js +0 -2
- package/extensions/dm-subagents/src/shared/thinking-ceiling.js +0 -6
- package/extensions/dm-subagents/src/shared/types.js +16 -12
- package/extensions/dm-subagents/src/shared/utils.js +22 -7
- package/extensions/dm-subagents/src/shared/watch-strategy.js +2 -0
- package/extensions/dm-subagents/src/shared/workflow-child-permit.js +70 -0
- package/extensions/dm-subagents/src/slash/delegation-adapters.js +15 -1
- package/extensions/dm-subagents/src/slash/delegation-request.js +13 -0
- package/extensions/dm-subagents/src/slash/prompt-template-bridge.js +28 -1
- package/extensions/dm-subagents/src/slash/prompt-workflows.js +15 -2
- package/extensions/dm-subagents/src/slash/slash-commands.js +12 -269
- package/extensions/dm-subagents/src/slash/subagent-cost.js +255 -0
- package/extensions/dm-subagents/src/slash/subagents-admin.js +49 -25
- package/extensions/dm-subagents/src/tui/fleet-status.js +224 -23
- package/extensions/dm-subagents/src/tui/fleet.js +38 -25
- package/extensions/dm-subagents/src/tui/render.js +636 -63
- package/extensions/dm-subagents/src/watchdog/child-status.js +42 -23
- package/extensions/dm-subagents/src/watchdog/diff-tool.js +86 -0
- package/extensions/dm-subagents/src/watchdog/emission-guard.js +4 -3
- package/extensions/dm-subagents/src/watchdog/guidance.js +19 -0
- package/extensions/dm-subagents/src/watchdog/lsp-diagnostics.js +1 -1
- package/extensions/dm-subagents/src/watchdog/model-selection.js +18 -1
- package/extensions/dm-subagents/src/watchdog/permission-arbiter.js +16 -10
- package/extensions/dm-subagents/src/watchdog/register-child.js +39 -26
- package/extensions/dm-subagents/src/watchdog/register-main.js +51 -43
- package/extensions/dm-subagents/src/watchdog/render.js +5 -7
- package/extensions/dm-subagents/src/watchdog/review.js +142 -67
- package/extensions/dm-subagents/src/watchdog/rules.js +55 -0
- package/extensions/dm-subagents/src/watchdog/runtime.js +167 -109
- package/extensions/dm-subagents/src/watchdog/scope.js +1 -9
- package/extensions/dm-subagents/src/watchdog/settings.js +55 -99
- package/extensions/dm-subagents/src/watchdog/tool-actions.js +11 -12
- package/extensions/dm-subagents/src/watchdog/turn-delta.js +30 -5
- package/extensions/dm-subagents/src/watchdog/types.js +2 -4
- package/extensions/dm-subagents/src/watchdog/warning-format.js +2 -3
- package/extensions/dm-subagents/src/workflows/chat-progress.js +4 -4
- package/extensions/dm-subagents/src/workflows/scripted-workflow.js +482 -36
- package/extensions/dm-subagents/src/workflows/workflow-checklist.js +303 -0
- package/extensions/dm-subagents/src/workflows/workflow-child-summary.js +57 -5
- package/extensions/dm-subagents/src/workflows/workflow-preflight.js +27 -1
- package/extensions/dm-subagents/src/workflows/workflow-receipt.js +51 -3
- package/extensions/dm-subagents/src/workflows/workflow-resources.js +226 -0
- package/extensions/dm-subagents/src/workflows/workflow-settlement.js +5 -0
- package/extensions/dm-web-access/abortable.js +19 -0
- package/extensions/dm-web-access/anysearch.js +4 -13
- package/extensions/dm-web-access/baizhi.js +123 -0
- package/extensions/dm-web-access/bocha.js +3 -24
- package/extensions/dm-web-access/brave.js +3 -23
- package/extensions/dm-web-access/brightdata.js +5 -30
- package/extensions/dm-web-access/content-find.js +181 -47
- package/extensions/dm-web-access/crawl4ai.js +166 -0
- package/extensions/dm-web-access/credential-source.js +1 -0
- package/extensions/dm-web-access/curator-page.js +27 -2
- package/extensions/dm-web-access/curator-run.js +36 -0
- package/extensions/dm-web-access/curator-server.js +11 -2
- package/extensions/dm-web-access/domain-filter-normalization.js +17 -0
- package/extensions/dm-web-access/duckduckgo.js +4 -24
- package/extensions/dm-web-access/extract.js +54 -12
- package/extensions/dm-web-access/fetch-params.js +1 -1
- package/extensions/dm-web-access/firecrawl.js +7 -45
- package/extensions/dm-web-access/gemini-search.js +101 -46
- package/extensions/dm-web-access/github-extract.js +2 -11
- package/extensions/dm-web-access/index.js +382 -247
- package/extensions/dm-web-access/jina-search.js +4 -13
- package/extensions/dm-web-access/kagi.js +4 -13
- package/extensions/dm-web-access/kimi-search.js +5 -30
- package/extensions/dm-web-access/mistral-search.js +251 -0
- package/extensions/dm-web-access/ollama.js +2 -7
- package/extensions/dm-web-access/openai-search.js +204 -46
- package/extensions/dm-web-access/opencode-session-headers.js +15 -0
- package/extensions/dm-web-access/package.json +1 -1
- package/extensions/dm-web-access/page-query.js +14 -4
- package/extensions/dm-web-access/parallel.js +1 -17
- package/extensions/dm-web-access/pdf-extract.js +1 -0
- package/extensions/dm-web-access/perplexity.js +10 -1
- package/extensions/dm-web-access/querit.js +5 -34
- package/extensions/dm-web-access/query-rewrite.js +6 -2
- package/extensions/dm-web-access/search-answer-formatting.js +6 -0
- package/extensions/dm-web-access/search-result-count-normalization.js +5 -0
- package/extensions/dm-web-access/search1api.js +5 -34
- package/extensions/dm-web-access/searchinfinity.js +5 -34
- package/extensions/dm-web-access/searxng.js +3 -23
- package/extensions/dm-web-access/serpapi.js +183 -0
- package/extensions/dm-web-access/serpbase.js +3 -24
- package/extensions/dm-web-access/serpdive.js +3 -23
- package/extensions/dm-web-access/serper.js +5 -30
- package/extensions/dm-web-access/serply.js +184 -0
- package/extensions/dm-web-access/source-check.js +10 -46
- package/extensions/dm-web-access/ssrf-protection.js +3 -1
- package/extensions/dm-web-access/storage.js +9 -0
- package/extensions/dm-web-access/summary-review.js +36 -25
- package/extensions/dm-web-access/tavily.js +3 -23
- package/extensions/dm-web-access/tinyfish.js +5 -34
- package/extensions/dm-web-access/tool-activation.js +112 -0
- package/extensions/dm-web-access/utils.js +27 -10
- package/extensions/dm-web-access/valyu.js +5 -30
- package/extensions/dm-web-access/xai-search.js +78 -42
- package/extensions/dm-web-access/xcrawl.js +5 -30
- package/package.json +7 -4
- package/extensions/dm-lens/tools/ast-dump.js +0 -101
- package/extensions/dm-subagents/src/api/dm-args.js +0 -3
- package/extensions/dm-subagents/src/runs/shared/child-protocol.js +0 -447
- package/extensions/dm-subagents/src/runs/shared/completion-evidence.js +0 -40
- package/extensions/dm-subagents/src/runs/shared/completion-guard.js +0 -173
- package/extensions/dm-subagents/src/runs/shared/dm-args.js +0 -581
- package/extensions/dm-subagents/src/runs/shared/llm-intent-arbiter.js +0 -190
- package/extensions/dm-subagents/src/runs/shared/model-exclusions.js +0 -207
- package/extensions/dm-subagents/src/runs/shared/subagent-startup-retry.js +0 -50
- package/extensions/dm-subagents/src/runs/shared/task-intent.js +0 -130
- package/extensions/dm-subagents/src/shared/post-exit-stdio-guard.js +0 -68
- /package/extensions/dm-subagents/src/inspectors/{herdr/shell-command.js → shell-command.js} +0 -0
|
@@ -1,3 +1,369 @@
|
|
|
1
|
-
#
|
|
1
|
+
# OAuth 2.1 Authentication for MCP
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
This document describes the OAuth 2.1 + PKCE authentication implementation for the DM MCP Adapter using the official MCP SDK.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The DM MCP Adapter uses the official MCP SDK's built-in OAuth implementation, which provides:
|
|
8
|
+
|
|
9
|
+
- **Automatic OAuth endpoint discovery** (RFC 9728) - No manual configuration needed
|
|
10
|
+
- **Dynamic Client Registration** (RFC 7591) - The default for URL-only servers when no pre-registered `clientId` is configured and the server supports registration
|
|
11
|
+
- **Client ID Metadata Documents** (SEP-991) - An advanced opt-in that uses an operator-supplied public HTTPS metadata URL as `client_id` when the authorization server opts in
|
|
12
|
+
- **Automatic callback handling** - Built-in HTTP server handles callbacks automatically
|
|
13
|
+
- **Automatic token refresh** - SDK handles token refresh transparently
|
|
14
|
+
|
|
15
|
+
## Features
|
|
16
|
+
|
|
17
|
+
- **PKCE (S256)** - Mandatory code challenge method for OAuth 2.1
|
|
18
|
+
- **Automatic Callback Server** - Local browser redirects automatically when available
|
|
19
|
+
- **Manual Remote Flow** - Copy auth URLs and pasted redirect URLs/codes for headless SSH sessions
|
|
20
|
+
- **Dynamic Client Registration** - Registers by default when no pre-registered client is configured and the server supports registration
|
|
21
|
+
- **Client ID Metadata Documents** - Opts into a configured, operator-hosted URL-based client ID when the authorization server advertises support
|
|
22
|
+
- **Auto-Discovery** - Discovers OAuth endpoints from server metadata
|
|
23
|
+
- **Automatic Token Refresh** - SDK handles expired tokens automatically
|
|
24
|
+
- **State Parameter Validation** - CSRF protection
|
|
25
|
+
- **Secure Token Storage** - Persistent OAuth entries are stored in the operating system credential store
|
|
26
|
+
|
|
27
|
+
## Configuration
|
|
28
|
+
|
|
29
|
+
### Minimal Configuration (Recommended)
|
|
30
|
+
|
|
31
|
+
For most MCP servers, you only need the URL:
|
|
32
|
+
|
|
33
|
+
```json
|
|
34
|
+
{
|
|
35
|
+
"mcpServers": {
|
|
36
|
+
"my-oauth-server": {
|
|
37
|
+
"url": "https://api.example.com/mcp"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
OAuth is automatically enabled for HTTP servers. The SDK will:
|
|
44
|
+
- Auto-detect if the server requires OAuth
|
|
45
|
+
- Discover OAuth endpoints from the server
|
|
46
|
+
- Use Dynamic Client Registration when no pre-registered client is configured and the server supports it
|
|
47
|
+
- Handle the entire OAuth flow including callback
|
|
48
|
+
|
|
49
|
+
DM does not configure or host a Client ID Metadata Document by default. URL-only configurations continue to use Dynamic Client Registration. CIMD is available only through the advanced, operator-supplied `oauth.clientMetadataUrl` option below.
|
|
50
|
+
|
|
51
|
+
### Optional Configuration
|
|
52
|
+
|
|
53
|
+
You can optionally provide a pre-registered client:
|
|
54
|
+
|
|
55
|
+
```json
|
|
56
|
+
{
|
|
57
|
+
"mcpServers": {
|
|
58
|
+
"my-oauth-server": {
|
|
59
|
+
"url": "https://api.example.com/mcp",
|
|
60
|
+
"auth": "oauth",
|
|
61
|
+
"oauth": {
|
|
62
|
+
"clientId": "your-client-id",
|
|
63
|
+
"clientSecret": "your-client-secret",
|
|
64
|
+
"scope": "read write",
|
|
65
|
+
"authorizationParams": { "access_type": "offline", "prompt": "consent" },
|
|
66
|
+
"redirectUri": "http://localhost:3118/callback"
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
### Configuration Options
|
|
76
|
+
|
|
77
|
+
- `url` - The MCP server URL (required)
|
|
78
|
+
- `auth` - Set to `"oauth"` to force OAuth, `false` to disable, or omit to auto-detect
|
|
79
|
+
- `oauth.grantType` - `"authorization_code"` (default, browser flow) or `"client_credentials"` (non-interactive)
|
|
80
|
+
- `oauth.clientId` - Pre-registered client ID. Takes precedence over `oauth.clientMetadataUrl` when both are configured.
|
|
81
|
+
- `oauth.clientSecret` - Client secret for confidential clients (optional). When `oauth.clientMetadataUrl` is also set, an explicit `oauth.clientId` is required; the explicit client takes precedence.
|
|
82
|
+
- `oauth.clientMetadataUrl` - Advanced opt-in for an operator-supplied public HTTPS Client ID Metadata Document URL with a non-root path. The URL is used as `client_id` when the authorization server advertises `client_id_metadata_document_supported: true`; otherwise Dynamic Client Registration remains the fallback. The document must be publicly fetchable and match this client's metadata, especially `redirect_uris`. The adapter does not provide a default URL or host this document.
|
|
83
|
+
- `oauth.scope` - Requested OAuth scopes (optional)
|
|
84
|
+
- `oauth.authorizationParams` - Extra authorization URL parameters for provider-specific extensions, such as Google's `{ "access_type": "offline", "prompt": "consent" }`. Flow-owned parameters like `client_id`, `redirect_uri`, `scope`, `state`, `code_challenge`, `response_type`, and `resource` cannot be overridden.
|
|
85
|
+
- `oauth.redirectUri` - Browser callback URI to advertise and bind, such as `http://localhost:3118/callback`. Use `{port}` in a loopback URI when the provider permits an OS-assigned RFC 8252 port, for example `http://127.0.0.1:{port}/callback` (optional)
|
|
86
|
+
- `oauth.clientName` - Client display name used for Dynamic Client Registration fallback (optional, defaults to `DM Coding Agent`)
|
|
87
|
+
- `oauth.clientUri` - Client homepage URI used for Dynamic Client Registration fallback (optional)
|
|
88
|
+
- `oauth.authServerMetadataUrl` - HTTPS OAuth/OIDC authorization-server metadata document to use authoritatively when MCP protected-resource discovery is unavailable (optional; issuer validation remains enabled)
|
|
89
|
+
- `oauth.skipIssuerMetadataValidation` - Set `true` only for a known-misconfigured authorization server whose metadata issuer cannot be fixed immediately. This weakens OAuth issuer validation.
|
|
90
|
+
|
|
91
|
+
Dynamic fallback clients normally omit `oauth.redirectUri`; the adapter starts the callback server lazily on the default loopback host (`localhost`) and asks the OS for an available local port when auth begins. Use `oauth.redirectUri` when the provider requires a pre-registered callback, such as Slack MCP's Claude-compatible `http://localhost:3118/callback`. A loopback URI must use `http://` with `localhost`, `127.0.0.1`, or `[::1]`. It may contain an explicit port, which is bound exactly, or `{port}`, which is replaced with the OS-assigned port in the authorization and token requests.
|
|
92
|
+
|
|
93
|
+
### Non-Interactive `client_credentials`
|
|
94
|
+
|
|
95
|
+
For machine-to-machine OAuth, configure `grantType: "client_credentials"`.
|
|
96
|
+
|
|
97
|
+
```json
|
|
98
|
+
{
|
|
99
|
+
"mcpServers": {
|
|
100
|
+
"my-service": {
|
|
101
|
+
"url": "https://api.example.com/mcp",
|
|
102
|
+
"auth": "oauth",
|
|
103
|
+
"oauth": {
|
|
104
|
+
"grantType": "client_credentials",
|
|
105
|
+
"clientId": "service-client-id",
|
|
106
|
+
"clientSecret": "service-client-secret",
|
|
107
|
+
"scope": "read write"
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
This flow does not open a browser or use callback handling. `oauth.redirectUri` is ignored for `client_credentials`; `oauth.clientName` and `oauth.clientUri` still apply to dynamic client registration metadata.
|
|
115
|
+
|
|
116
|
+
## Usage
|
|
117
|
+
|
|
118
|
+
### Step 1: Authenticate
|
|
119
|
+
|
|
120
|
+
Run the `/mcp-auth` command with the server name:
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
/mcp-auth my-oauth-server
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Manual `/mcp-auth` is the default flow. If you set `settings.autoAuth: true`, proxy/direct tool execution will trigger OAuth automatically when a server returns `needs-auth`, then retry the original operation once.
|
|
127
|
+
|
|
128
|
+
This will:
|
|
129
|
+
1. Start the callback server lazily on an OS-assigned local port, on an OS-assigned host-specific `{port}` callback, or on the exact `oauth.redirectUri` port for fixed callbacks
|
|
130
|
+
2. Discover OAuth endpoints automatically
|
|
131
|
+
3. Use Dynamic Client Registration by default, or the explicitly configured Client ID Metadata Document when supported
|
|
132
|
+
4. Open your browser for authentication
|
|
133
|
+
5. Wait for the automatic callback
|
|
134
|
+
6. Complete the OAuth flow
|
|
135
|
+
7. Store tokens securely
|
|
136
|
+
|
|
137
|
+
### Remote/headless authentication
|
|
138
|
+
|
|
139
|
+
When DM runs over SSH or in a headless environment, use the proxy tool to retrieve the authorization URL instead of relying on OS browser launch:
|
|
140
|
+
|
|
141
|
+
```
|
|
142
|
+
mcp({ action: "auth-start", server: "my-oauth-server" })
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Open the returned URL in your local browser. After approval, copy the full redirected localhost URL from the browser address bar (the page may fail to load locally) and complete the same pending auth flow:
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
mcp({
|
|
149
|
+
action: "auth-complete",
|
|
150
|
+
server: "my-oauth-server",
|
|
151
|
+
args: { redirectUrl: "http://localhost:19876/callback?code=...&state=..." }
|
|
152
|
+
})
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
You can also pass only the `code` query parameter with `args: { code: "..." }`. JSON-string args remain supported. Redirect URL completion validates the saved OAuth state; raw code completion is available for providers that display a code directly.
|
|
156
|
+
|
|
157
|
+
### Step 2: Use the Server
|
|
158
|
+
|
|
159
|
+
Once authenticated, use the server normally:
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
mcp({ server: "my-oauth-server" })
|
|
163
|
+
mcp({ tool: "my-tool", args: { key: "value" } })
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
The SDK automatically:
|
|
167
|
+
- Adds the access token to requests
|
|
168
|
+
- Refreshes expired tokens automatically
|
|
169
|
+
- Re-authenticates if tokens are invalid
|
|
170
|
+
|
|
171
|
+
To clear stored OAuth credentials and force a fresh authorization:
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
/mcp logout my-oauth-server
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Within one DM process, logout is a linearizable boundary: OAuth work that began
|
|
178
|
+
before logout cannot recreate credentials after they are cleared, and new OAuth
|
|
179
|
+
work is admitted after logout finishes. Explicit token updates made through the
|
|
180
|
+
public API retain last-writer semantics. Separate DM processes are intentionally
|
|
181
|
+
not coordinated, so concurrent cross-process credential operations can still race.
|
|
182
|
+
|
|
183
|
+
## How It Works
|
|
184
|
+
|
|
185
|
+
### Authentication Flow
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
┌─────────┐ ┌──────────────┐ ┌─────────────────┐
|
|
189
|
+
│ DM │────▶│ MCP Server │────▶│ OAuth Server │
|
|
190
|
+
│ │ │ │ │ │
|
|
191
|
+
│ 1. Init │ │ 2. Discovery │ │ 3. Register │
|
|
192
|
+
│ │ │ │ │ │
|
|
193
|
+
│ │◀────│ │◀────│ 4. Auth URL │
|
|
194
|
+
│ │ │ │ │ │
|
|
195
|
+
│ │────▶│ Callback │◀────│ 5. Browser │
|
|
196
|
+
│ │ │ Server │ │ Redirect │
|
|
197
|
+
│ │ │ │ │ │
|
|
198
|
+
│ │◀────│ │◀────│ 6. Code │
|
|
199
|
+
│ │ │ │ │ │
|
|
200
|
+
│ │────▶│ │────▶│ 7. Exchange │
|
|
201
|
+
│ │ │ │ │ │
|
|
202
|
+
│ │◀────│ │◀────│ 8. Tokens │
|
|
203
|
+
└─────────┘ └──────────────┘ └─────────────────┘
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### Auto-Discovery
|
|
207
|
+
|
|
208
|
+
The SDK attempts to discover OAuth endpoints using:
|
|
209
|
+
|
|
210
|
+
1. **RFC 9728 Metadata** - Fetches `/.well-known/oauth-protected-resource`
|
|
211
|
+
2. **WWW-Authenticate Header** - Parses `resource_metadata` from 401 responses
|
|
212
|
+
|
|
213
|
+
### Client ID Metadata Documents and Dynamic Registration
|
|
214
|
+
|
|
215
|
+
CIMD is an advanced, explicit opt-in. Set `oauth.clientMetadataUrl` to a stable, operator-supplied public HTTPS URL that serves this client's OAuth metadata. When authorization-server discovery advertises `client_id_metadata_document_supported: true`, the adapter and SDK use that URL directly as `client_id` and skip Dynamic Client Registration. The URL must have a non-root path. An explicit `oauth.clientId` takes precedence. Combining `oauth.clientMetadataUrl` with `oauth.clientSecret` without an explicit `oauth.clientId` is rejected.
|
|
216
|
+
|
|
217
|
+
The adapter does not provide a default URL or host the public document: operators must publish it and keep fields such as `redirect_uris`, `grant_types`, `response_types`, and `token_endpoint_auth_method` consistent with the configured flow. URL-only/default DM configurations therefore continue to use Dynamic Client Registration. When the server does not advertise CIMD support, or no metadata URL is configured, the SDK uses Dynamic Client Registration if the server supports it:
|
|
218
|
+
|
|
219
|
+
1. Discovers the registration endpoint from OAuth metadata
|
|
220
|
+
2. Registers a new client with:
|
|
221
|
+
- `client_name`: configured `oauth.clientName` or "DM Coding Agent"
|
|
222
|
+
- `client_uri`: configured `oauth.clientUri` or the adapter repository URL
|
|
223
|
+
- `redirect_uris`: `["http://localhost:<active-callback-port>/callback"]`, or the configured `oauth.redirectUri`
|
|
224
|
+
- `grant_types`: `["authorization_code", "refresh_token"]`
|
|
225
|
+
3. Stores the registered client credentials and the redirect URIs returned by the authorization server
|
|
226
|
+
|
|
227
|
+
When a fresh browser auth starts, cached dynamic fallback client info with tokens is re-registered if its stored redirect URIs are missing or do not include the current redirect URI. Token refresh does not perform this redirect check, so existing refresh-token grants keep working even after a callback setting changes.
|
|
228
|
+
|
|
229
|
+
### Callback Server
|
|
230
|
+
|
|
231
|
+
A Node.js HTTP server runs on a loopback callback endpoint and handles the active callback path:
|
|
232
|
+
|
|
233
|
+
- Dynamic registration starts the callback server only when auth begins, binds the default host `localhost`, and asks the OS for an available local port
|
|
234
|
+
- Pre-registered clients (`oauth.clientId`) without `oauth.redirectUri` require the exact configured callback port from `MCP_OAUTH_CALLBACK_PORT` or the default `19876` on `localhost`
|
|
235
|
+
- `oauth.redirectUri` binds the exact loopback host and path. An explicit port is bound exactly; `{port}` asks the OS for a port and is replaced with that assigned value before the URI is advertised to the provider
|
|
236
|
+
|
|
237
|
+
- Handles `code`, `state`, and `error` parameters
|
|
238
|
+
- Displays success/error HTML pages
|
|
239
|
+
- Validates state parameter for CSRF protection
|
|
240
|
+
- Has a 5-minute timeout for pending authorizations
|
|
241
|
+
|
|
242
|
+
## Token Storage
|
|
243
|
+
|
|
244
|
+
Persistent OAuth entries are stored per configured server name in the operating system credential store, using macOS Keychain, Windows Credential Manager, or Linux Secret Service/libsecret through `@napi-rs/keyring`. The stored entry contains tokens, dynamic client information, legacy verifier/state fields when present, and the server URL binding.
|
|
245
|
+
|
|
246
|
+
Windows Credential Manager cannot hold a typical large OAuth JSON blob in one value, so payloads over 1,000 UTF-16 code units are stored as a manifest plus chunks; the size-limited test store uses the same representation. macOS Keychain and Linux Secret Service keep each record in one item, including ordinary 8–10 KiB records; if an unusually large record exceeds the native store's actual limit, that store error is surfaced. This avoids separate prompts for digest-addressed Keychain chunks. On macOS and Linux, the first ordinary read of a previously chunked record validates and rewrites it as one item before cleaning up its old chunks. Windows and the size-limited test store retain the chunked representation. Status inspection reads the existing representation but does not compact it; existing secure-record and legacy-plaintext cleanup semantics still apply.
|
|
247
|
+
|
|
248
|
+
The adapter fails closed when the OS credential store is unavailable. On headless Linux, configure an unlocked Secret Service-compatible keyring before using persistent OAuth; the adapter does not silently fall back to plaintext token files. Windows OpenSSH network logons may report `ERROR_NO_SUCH_LOGON_SESSION` (1312) because Credential Manager has no credential set for that logon.
|
|
249
|
+
|
|
250
|
+
For Windows OpenSSH/headless use, `settings.oauthCredentialStore: "encrypted-file"` explicitly selects an AES-256-GCM file store. It requires `DM_MCP_ADAPTER_OAUTH_FILE_KEY` to contain canonical base64 for exactly 32 random bytes; generate one with `node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"` and inject it through an external secret mechanism. Never place the key in config or beside the ciphertext. One authenticated, versioned envelope is stored per hashed server account at `<DM agent directory>/mcp-oauth-encrypted/sha256-<server-hash>/credentials.json`. The server URL and secrets appear only inside ciphertext, and account-bound authenticated data prevents copying an envelope to another account.
|
|
251
|
+
|
|
252
|
+
Encrypted-file writes use private directory/file modes where supported and same-directory atomic replacement. POSIX modes are checked on reads, but they do not establish a Windows ACL; encryption with the external key is the confidentiality boundary. This backend never falls back to the OS store, reads `oauthDir` / `MCP_OAUTH_DIR`, or imports legacy plaintext. Reauthenticate after opting in. Key loss or rotation makes existing envelopes unreadable; remove them and reauthenticate with the new key.
|
|
253
|
+
|
|
254
|
+
On Linux, if credential access fails because DM inherited a revoked session keyring, the adapter makes one best-effort retry through `keyctl session - node <packaged helper>`. This lets explicit re-authentication write fresh credentials from a new session keyring without restarting a long-lived tmux or server process. The recovery path requires `keyctl` and `node` on `PATH`; missing, locked, or otherwise unavailable credential stores still fail closed.
|
|
255
|
+
|
|
256
|
+
Complete credential entries are held in memory for the lifetime of the DM process on every supported credential-store platform. The MCP SDK reads the access token before every outbound request, so caching avoids a credential-store lookup on each tool call; on Linux this specifically avoids overloading the Secret Service daemon. The cache is filled on the first read for a server and covers both present and absent entries. Authenticating, refreshing, and logging out all update it immediately, so credential changes made through DM take effect at once. Status-panel inspection deliberately bypasses it and still reads the store directly.
|
|
257
|
+
|
|
258
|
+
A credential changed or deleted by another process while DM is running is not observed immediately. The affected server picks it up after the first credential-backed authentication failure in that `needs-auth` episode: DM discards the cached entry, and the following read reloads from the credential store. Restarting DM also clears the cache. Set `DM_MCP_ADAPTER_DISABLE_AUTH_CACHE=1` to turn the cache off entirely and restore a credential-store read per request.
|
|
259
|
+
|
|
260
|
+
Older versions stored plaintext entries at `~/.dm/agent/mcp-oauth/sha256-<server-hash>/tokens.json`, or under `settings.oauthDir` / `MCP_OAUTH_DIR`. With the default OS backend, the first read after upgrade imports a valid legacy entry and removes the plaintext `tokens.json`. The encrypted-file backend leaves legacy files untouched. These directories are legacy import locations, not persistent credential stores or isolation namespaces.
|
|
261
|
+
|
|
262
|
+
The stored `serverUrl` field ensures credentials are invalidated if the server URL changes.
|
|
263
|
+
|
|
264
|
+
## Security Considerations
|
|
265
|
+
|
|
266
|
+
### PKCE
|
|
267
|
+
|
|
268
|
+
All OAuth flows use PKCE with the S256 method, preventing authorization code interception attacks.
|
|
269
|
+
|
|
270
|
+
### State Parameter
|
|
271
|
+
|
|
272
|
+
A cryptographically secure random state parameter is generated for each flow and validated on callback.
|
|
273
|
+
|
|
274
|
+
### Issuer Metadata Validation
|
|
275
|
+
|
|
276
|
+
OAuth authorization-server metadata normally must echo the expected issuer. This protects against authorization-server mix-up. The adapter keeps this check on by default.
|
|
277
|
+
|
|
278
|
+
For private servers with known-broken metadata, `oauth.skipIssuerMetadataValidation: true` forwards the SDK's issuer-validation opt-out for that server only. Use it only as a temporary workaround while the server metadata is fixed. Do not use it for public or untrusted servers.
|
|
279
|
+
|
|
280
|
+
When an MCP server does not publish usable protected-resource metadata, configure `oauth.authServerMetadataUrl` with the HTTPS URL of its OAuth/OIDC authorization-server metadata document. That document is authoritative instead of MCP protected-resource discovery, and its issuer is still checked by default. Treat this as trusted configuration and point it only at a metadata endpoint you explicitly trust.
|
|
281
|
+
|
|
282
|
+
### Credential Stores
|
|
283
|
+
|
|
284
|
+
Persistent OAuth credentials are written to the OS credential store by default, or only to the encrypted file store when explicitly selected. Legacy plaintext files are read only for one-way migration to the default OS store and are removed after successful import. On Linux, revoked session-keyring errors can be retried once through a fresh `keyctl session` helper during explicit re-authentication.
|
|
285
|
+
|
|
286
|
+
Credential entries reside in process memory for the lifetime of the DM process rather than being re-read per request, and the process-memory copy is discarded on exit.
|
|
287
|
+
|
|
288
|
+
### URL Validation
|
|
289
|
+
|
|
290
|
+
Credentials are tied to a specific server URL. If the URL changes, the credentials are invalidated and re-authentication is required.
|
|
291
|
+
|
|
292
|
+
## Troubleshooting
|
|
293
|
+
|
|
294
|
+
### "No OAuth tokens found"
|
|
295
|
+
|
|
296
|
+
Run `/mcp-auth <server>` to authenticate.
|
|
297
|
+
|
|
298
|
+
### "Failed to discover OAuth endpoints"
|
|
299
|
+
|
|
300
|
+
The SDK automatically discovers OAuth endpoints from the MCP server. If discovery fails, the server may require a pre-registered client ID:
|
|
301
|
+
|
|
302
|
+
```json
|
|
303
|
+
{
|
|
304
|
+
"mcpServers": {
|
|
305
|
+
"server": {
|
|
306
|
+
"url": "https://api.example.com/mcp",
|
|
307
|
+
"auth": "oauth",
|
|
308
|
+
"oauth": {
|
|
309
|
+
"clientId": "your-client-id",
|
|
310
|
+
"scope": "read"
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
### "Dynamic client registration not supported"
|
|
318
|
+
|
|
319
|
+
Some servers require pre-registered clients. Obtain a client ID from your OAuth provider and add it to the config.
|
|
320
|
+
|
|
321
|
+
### Callback server already in use
|
|
322
|
+
|
|
323
|
+
Dynamic fallback browser OAuth uses a lazy OS-assigned port on the default loopback host (`localhost`), so the configured default port being busy should not block fallback registration.
|
|
324
|
+
|
|
325
|
+
For pre-registered OAuth clients (`oauth.clientId`), the callback redirect URI must match the provider registration policy. Set `oauth.redirectUri` to the full fixed callback, such as Slack MCP's Claude-compatible `http://localhost:3118/callback`, use a loopback `{port}` URI when the provider explicitly permits dynamic RFC 8252 ports, or free/set `MCP_OAUTH_CALLBACK_PORT` when you rely on the default `/callback` path without an explicit redirect URI.
|
|
326
|
+
|
|
327
|
+
### Browser doesn't open
|
|
328
|
+
|
|
329
|
+
If the browser fails to open (e.g., in SSH sessions), the authorization URL will be displayed. Copy it manually to your browser.
|
|
330
|
+
|
|
331
|
+
## Architecture
|
|
332
|
+
|
|
333
|
+
The OAuth implementation uses the following modules:
|
|
334
|
+
|
|
335
|
+
- `mcp-auth.ts` - Auth storage and retrieval through the OS credential store, with one-way legacy `tokens.json` import
|
|
336
|
+
- `mcp-oauth-provider.ts` - SDK OAuthClientProvider implementation
|
|
337
|
+
- `mcp-callback-server.ts` - Node.js HTTP callback server
|
|
338
|
+
- `mcp-auth-flow.ts` - High-level auth flow using SDK transport
|
|
339
|
+
|
|
340
|
+
## SDK Integration
|
|
341
|
+
|
|
342
|
+
The implementation uses the stable modular MCP client and OAuth APIs:
|
|
343
|
+
|
|
344
|
+
```typescript
|
|
345
|
+
import {
|
|
346
|
+
auth,
|
|
347
|
+
StreamableHTTPClientTransport,
|
|
348
|
+
UnauthorizedError,
|
|
349
|
+
type OAuthClientProvider,
|
|
350
|
+
} from "@modelcontextprotocol/client"
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
The `McpOAuthProvider` class implements `OAuthClientProvider` and is passed to `StreamableHTTPClientTransport`:
|
|
354
|
+
|
|
355
|
+
```typescript
|
|
356
|
+
const transport = new StreamableHTTPClientTransport(url, {
|
|
357
|
+
authProvider: new McpOAuthProvider(serverName, serverUrl, config, callbacks),
|
|
358
|
+
})
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
## References
|
|
362
|
+
|
|
363
|
+
- [MCP SDK Documentation](https://github.com/modelcontextprotocol/typescript-sdk)
|
|
364
|
+
- [MCP Authorization Specification](https://modelcontextprotocol.io/specification/2025-06-18/basic/authorization)
|
|
365
|
+
- [OAuth 2.1](https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-1-11)
|
|
366
|
+
- [PKCE (RFC 7636)](https://datatracker.ietf.org/doc/html/rfc7636)
|
|
367
|
+
- [OAuth Client ID Metadata Document](https://datatracker.ietf.org/doc/html/draft-ietf-oauth-client-id-metadata-document-00)
|
|
368
|
+
- [Dynamic Client Registration (RFC 7591)](https://datatracker.ietf.org/doc/html/rfc7591)
|
|
369
|
+
- [OAuth Protected Resource Metadata (RFC 9728)](https://datatracker.ietf.org/doc/html/rfc9728)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
# Third-party notice
|
|
2
2
|
|
|
3
|
-
This managed extension is adapted from `nicobailon/pi-mcp-adapter` at `
|
|
3
|
+
This managed extension is adapted from `nicobailon/pi-mcp-adapter` at `7bf2332932b652416ea717e154352baed7420b66` (upstream tag `v2.37.0`) under MIT.
|
|
4
4
|
The upstream package name and repository are retained solely as technical provenance.
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { existsSync, readFileSync, statSync } from "node:fs";
|
|
2
|
-
import {
|
|
1
|
+
import { existsSync, readFileSync, realpathSync, statSync } from "node:fs";
|
|
2
|
+
import { dirname, isAbsolute, resolve } from "node:path";
|
|
3
3
|
import { getAgentPath } from "./agent-dir.js";
|
|
4
|
+
import { markBuiltInAgentPlugin } from "./agent-plugin-provenance.js";
|
|
5
|
+
import { resolveRealContainedPath } from "./utils.js";
|
|
4
6
|
const PLUGIN_SCHEMA = "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json";
|
|
5
7
|
const MCP_SCHEMA = "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json";
|
|
6
8
|
const PLUGIN_NAME_PATTERN = /^(?!.*(?:--|\.\.))[a-z0-9](?:[a-z0-9.-]*[a-z0-9])?$/;
|
|
@@ -19,6 +21,8 @@ const PLUGIN_MANIFEST_FIELDS = new Set([
|
|
|
19
21
|
const MCP_CONFIG_FIELDS = new Set(["$schema", "mcpServers"]);
|
|
20
22
|
const STDIO_FIELDS = new Set(["type", "command", "args", "env", "cwd"]);
|
|
21
23
|
const HTTP_FIELDS = new Set(["type", "url", "headers"]);
|
|
24
|
+
const STRING_MANIFEST_FIELDS = ["version", "description", "homepage", "repository", "license"];
|
|
25
|
+
const AUTHOR_FIELDS = new Set(["name", "email", "url"]);
|
|
22
26
|
export function loadAgentPluginConfigs(paths, cwd = process.cwd()) {
|
|
23
27
|
const mcpServers = {};
|
|
24
28
|
for (const pluginPath of getPluginPaths(paths)) {
|
|
@@ -37,7 +41,7 @@ export function loadAgentPluginConfigs(paths, cwd = process.cwd()) {
|
|
|
37
41
|
}
|
|
38
42
|
export function getAgentPluginSummaries(paths, cwd = process.cwd()) {
|
|
39
43
|
return getPluginPaths(paths).map((path) => {
|
|
40
|
-
const pluginRoot =
|
|
44
|
+
const pluginRoot = resolvePluginRoot(path, cwd);
|
|
41
45
|
const loaded = loadAgentPluginMcpConfig(path, cwd);
|
|
42
46
|
const manifest = loaded ? readPluginManifest(pluginRoot, false) : null;
|
|
43
47
|
return {
|
|
@@ -51,7 +55,7 @@ function getPluginPaths(paths) {
|
|
|
51
55
|
return Array.isArray(paths) ? paths.filter((path) => typeof path === "string") : [];
|
|
52
56
|
}
|
|
53
57
|
function loadAgentPluginMcpConfig(path, cwd) {
|
|
54
|
-
const pluginRoot =
|
|
58
|
+
const pluginRoot = resolvePluginRoot(path, cwd);
|
|
55
59
|
const manifest = readPluginManifest(pluginRoot, true);
|
|
56
60
|
if (!manifest)
|
|
57
61
|
return null;
|
|
@@ -62,9 +66,14 @@ function loadAgentPluginMcpConfig(path, cwd) {
|
|
|
62
66
|
console.warn(`Agent Plugin ${manifest.name} has invalid MCP config: mcp.json is not a regular file`);
|
|
63
67
|
return { mcpServers: {} };
|
|
64
68
|
}
|
|
69
|
+
const resolvedMcpPath = resolveRealContainedPath(pluginRoot, mcpPath);
|
|
70
|
+
if (!resolvedMcpPath) {
|
|
71
|
+
console.warn(`Agent Plugin ${manifest.name} has invalid MCP config: mcp.json must stay inside the plugin directory`);
|
|
72
|
+
return { mcpServers: {} };
|
|
73
|
+
}
|
|
65
74
|
let raw;
|
|
66
75
|
try {
|
|
67
|
-
raw = JSON.parse(readFileSync(
|
|
76
|
+
raw = JSON.parse(readFileSync(resolvedMcpPath, "utf8"));
|
|
68
77
|
} catch (error) {
|
|
69
78
|
console.warn(`Agent Plugin ${manifest.name} has invalid MCP config: failed to parse mcp.json`, error);
|
|
70
79
|
return { mcpServers: {} };
|
|
@@ -83,9 +92,15 @@ function readPluginManifest(pluginRoot, report) {
|
|
|
83
92
|
console.warn(`Agent Plugin at ${pluginRoot} is invalid: plugin.json is not a regular file`);
|
|
84
93
|
return null;
|
|
85
94
|
}
|
|
95
|
+
const resolvedManifestPath = resolveRealContainedPath(pluginRoot, manifestPath);
|
|
96
|
+
if (!resolvedManifestPath) {
|
|
97
|
+
if (report)
|
|
98
|
+
console.warn(`Agent Plugin at ${pluginRoot} is invalid: plugin.json must stay inside the plugin directory`);
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
86
101
|
let raw;
|
|
87
102
|
try {
|
|
88
|
-
raw = JSON.parse(readFileSync(
|
|
103
|
+
raw = JSON.parse(readFileSync(resolvedManifestPath, "utf8"));
|
|
89
104
|
} catch (error) {
|
|
90
105
|
if (report)
|
|
91
106
|
console.warn(`Agent Plugin at ${pluginRoot} is invalid: failed to parse plugin.json`, error);
|
|
@@ -112,6 +127,23 @@ function readPluginManifest(pluginRoot, report) {
|
|
|
112
127
|
console.warn(`Agent Plugin at ${pluginRoot} is invalid: plugin.json name is invalid`);
|
|
113
128
|
return null;
|
|
114
129
|
}
|
|
130
|
+
for (const field of STRING_MANIFEST_FIELDS) {
|
|
131
|
+
if (manifest[field] !== undefined && typeof manifest[field] !== "string") {
|
|
132
|
+
if (report)
|
|
133
|
+
console.warn(`Agent Plugin ${manifest.name} is invalid: plugin.json ${field} must be a string`);
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
if (manifest.keywords !== undefined && (!Array.isArray(manifest.keywords) || manifest.keywords.some((value) => typeof value !== "string"))) {
|
|
138
|
+
if (report)
|
|
139
|
+
console.warn(`Agent Plugin ${manifest.name} is invalid: plugin.json keywords must be an array of strings`);
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
if (manifest.author !== undefined && !isValidManifestAuthor(manifest.author)) {
|
|
143
|
+
if (report)
|
|
144
|
+
console.warn(`Agent Plugin ${manifest.name} is invalid: plugin.json author is invalid`);
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
115
147
|
if (manifest.extensions !== undefined && (!manifest.extensions || typeof manifest.extensions !== "object" || Array.isArray(manifest.extensions))) {
|
|
116
148
|
if (report)
|
|
117
149
|
console.warn(`Agent Plugin ${manifest.name} ignores non-object plugin.json extensions`);
|
|
@@ -180,14 +212,14 @@ function translateStdioServer(manifest, pluginRoot, serverName, raw) {
|
|
|
180
212
|
const env = translateEnv(raw.env, manifest, serverName);
|
|
181
213
|
if (env === null)
|
|
182
214
|
return null;
|
|
183
|
-
const command = raw.command.startsWith("./") ?
|
|
215
|
+
const command = raw.command.startsWith("./") ? resolveRealContainedPath(pluginRoot, resolve(pluginRoot, raw.command)) : raw.command;
|
|
184
216
|
if (command === null)
|
|
185
|
-
return skipServer(manifest, serverName, "command must
|
|
217
|
+
return skipServer(manifest, serverName, "command must resolve to an accessible path inside the plugin directory");
|
|
186
218
|
const pluginDataDir = getAgentPath("agent-plugin-data", manifest.name);
|
|
187
219
|
const cwd = resolvePluginCwd(raw.cwd, pluginRoot, pluginDataDir);
|
|
188
220
|
if (cwd === null)
|
|
189
|
-
return skipServer(manifest, serverName, "cwd must
|
|
190
|
-
return {
|
|
221
|
+
return skipServer(manifest, serverName, "cwd must resolve from an allowed root and stay contained");
|
|
222
|
+
return markBuiltInAgentPlugin({
|
|
191
223
|
command,
|
|
192
224
|
args: args.map((value) => expandPluginPlaceholders(value, pluginRoot, pluginDataDir)),
|
|
193
225
|
env: {
|
|
@@ -198,7 +230,7 @@ function translateStdioServer(manifest, pluginRoot, serverName, raw) {
|
|
|
198
230
|
cwd,
|
|
199
231
|
pluginDataDir,
|
|
200
232
|
literalEnv: true
|
|
201
|
-
};
|
|
233
|
+
}, ["args", "env", "cwd"]);
|
|
202
234
|
}
|
|
203
235
|
function translateHttpServer(manifest, serverName, raw, type) {
|
|
204
236
|
for (const key of Object.keys(raw)) {
|
|
@@ -212,11 +244,11 @@ function translateHttpServer(manifest, serverName, raw, type) {
|
|
|
212
244
|
const headers = translateHeaders(raw.headers, manifest, serverName);
|
|
213
245
|
if (headers === null)
|
|
214
246
|
return null;
|
|
215
|
-
return {
|
|
247
|
+
return markBuiltInAgentPlugin({
|
|
216
248
|
url: raw.url,
|
|
217
249
|
httpTransport: type,
|
|
218
250
|
...headers ? { headers } : {}
|
|
219
|
-
};
|
|
251
|
+
}, headers ? ["headers"] : []);
|
|
220
252
|
}
|
|
221
253
|
function formatAgentPluginServerName(pluginName, serverName) {
|
|
222
254
|
const pluginPart = pluginName.replace(/[^A-Za-z0-9_-]+/g, "_").replace(/^[_-]+|[_-]+$/g, "") || "plugin";
|
|
@@ -243,7 +275,7 @@ function translateEnv(value, manifest, serverName) {
|
|
|
243
275
|
console.warn(`Agent Plugin ${manifest.name} skips invalid MCP server ${serverName}: env must be an object of strings`);
|
|
244
276
|
return null;
|
|
245
277
|
}
|
|
246
|
-
const
|
|
278
|
+
const entries = [];
|
|
247
279
|
for (const [key, entry] of Object.entries(value)) {
|
|
248
280
|
if (key === "PLUGIN_ROOT" || key === "PLUGIN_DATA") {
|
|
249
281
|
console.warn(`Agent Plugin ${manifest.name} skips invalid MCP server ${serverName}: env must not define ${key}`);
|
|
@@ -253,9 +285,9 @@ function translateEnv(value, manifest, serverName) {
|
|
|
253
285
|
console.warn(`Agent Plugin ${manifest.name} skips invalid MCP server ${serverName}: env values must be strings`);
|
|
254
286
|
return null;
|
|
255
287
|
}
|
|
256
|
-
|
|
288
|
+
entries.push([key, entry]);
|
|
257
289
|
}
|
|
258
|
-
return
|
|
290
|
+
return Object.fromEntries(entries);
|
|
259
291
|
}
|
|
260
292
|
function translateHeaders(value, manifest, serverName) {
|
|
261
293
|
if (value === undefined)
|
|
@@ -264,7 +296,7 @@ function translateHeaders(value, manifest, serverName) {
|
|
|
264
296
|
console.warn(`Agent Plugin ${manifest.name} skips invalid MCP server ${serverName}: headers must be an object of strings`);
|
|
265
297
|
return null;
|
|
266
298
|
}
|
|
267
|
-
const
|
|
299
|
+
const entries = [];
|
|
268
300
|
const seen = new Set;
|
|
269
301
|
for (const [key, entry] of Object.entries(value)) {
|
|
270
302
|
if (typeof entry !== "string") {
|
|
@@ -277,8 +309,9 @@ function translateHeaders(value, manifest, serverName) {
|
|
|
277
309
|
return null;
|
|
278
310
|
}
|
|
279
311
|
seen.add(normalized);
|
|
280
|
-
|
|
312
|
+
entries.push([key, entry]);
|
|
281
313
|
}
|
|
314
|
+
const headers = Object.fromEntries(entries);
|
|
282
315
|
try {
|
|
283
316
|
new Headers(headers);
|
|
284
317
|
} catch {
|
|
@@ -294,6 +327,19 @@ function resolvePluginPath(path, cwd) {
|
|
|
294
327
|
return resolve(process.env.HOME ?? "", path.slice(2));
|
|
295
328
|
return isAbsolute(path) ? resolve(path) : resolve(cwd, path);
|
|
296
329
|
}
|
|
330
|
+
function resolvePluginRoot(path, cwd) {
|
|
331
|
+
const resolved = resolvePluginPath(path, cwd);
|
|
332
|
+
try {
|
|
333
|
+
return realpathSync(resolved);
|
|
334
|
+
} catch {
|
|
335
|
+
return resolved;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
function isValidManifestAuthor(value) {
|
|
339
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
340
|
+
return false;
|
|
341
|
+
return Object.entries(value).every(([key, entry]) => AUTHOR_FIELDS.has(key) && typeof entry === "string");
|
|
342
|
+
}
|
|
297
343
|
function isBareCommand(command) {
|
|
298
344
|
return !command.includes("/") && !command.includes("\\") && !command.includes("${PLUGIN_ROOT}") && !command.includes("${PLUGIN_DATA}");
|
|
299
345
|
}
|
|
@@ -302,25 +348,22 @@ function resolvePluginCwd(value, pluginRoot, pluginDataDir) {
|
|
|
302
348
|
return pluginRoot;
|
|
303
349
|
if (typeof value !== "string")
|
|
304
350
|
return null;
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
return resolveContainedPath(pluginRoot, value.replace("${PLUGIN_ROOT}", "."), pluginRoot);
|
|
351
|
+
const expanded = expandPluginPlaceholders(value, pluginRoot, pluginDataDir);
|
|
352
|
+
if (value.startsWith("./") || value === "${PLUGIN_ROOT}" || value.startsWith("${PLUGIN_ROOT}/")) {
|
|
353
|
+
return resolveRealContainedPath(pluginRoot, resolve(pluginRoot, expanded));
|
|
309
354
|
}
|
|
310
355
|
if (value === "${PLUGIN_DATA}" || value.startsWith("${PLUGIN_DATA}/")) {
|
|
311
|
-
return
|
|
356
|
+
return resolvePluginDataCwd(pluginDataDir, expanded);
|
|
312
357
|
}
|
|
313
358
|
return null;
|
|
314
359
|
}
|
|
315
|
-
function
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
return resolved;
|
|
320
|
-
return null;
|
|
360
|
+
function resolvePluginDataCwd(pluginDataDir, expanded) {
|
|
361
|
+
if (existsSync(pluginDataDir) && !resolveRealContainedPath(dirname(pluginDataDir), pluginDataDir))
|
|
362
|
+
return null;
|
|
363
|
+
return resolveRealContainedPath(pluginDataDir, resolve(pluginDataDir, expanded), true);
|
|
321
364
|
}
|
|
322
365
|
function expandPluginPlaceholders(value, pluginRoot, pluginDataDir) {
|
|
323
|
-
return value.
|
|
366
|
+
return value.replace(/\$\{PLUGIN_(ROOT|DATA)\}/g, (_, name) => name === "ROOT" ? pluginRoot : pluginDataDir);
|
|
324
367
|
}
|
|
325
368
|
function isValidAgentPluginUrl(value) {
|
|
326
369
|
if (value.includes("${") || value.includes("$env:") || value.includes("{env:"))
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const LITERAL_PLUGIN_FIELDS = ["args", "env", "cwd", "headers"];
|
|
2
|
+
const BUILT_IN_AGENT_PLUGIN = Symbol("built-in-agent-plugin");
|
|
3
|
+
export function markBuiltInAgentPlugin(definition, fields) {
|
|
4
|
+
definition[BUILT_IN_AGENT_PLUGIN] = new Set(fields);
|
|
5
|
+
return definition;
|
|
6
|
+
}
|
|
7
|
+
export function isBuiltInAgentPlugin(definition, field) {
|
|
8
|
+
return definition[BUILT_IN_AGENT_PLUGIN]?.has(field) === true;
|
|
9
|
+
}
|
|
10
|
+
export function cloneBuiltInAgentPluginEntry(source) {
|
|
11
|
+
const fields = LITERAL_PLUGIN_FIELDS.filter((field) => Object.hasOwn(source, field) && isBuiltInAgentPlugin(source, field));
|
|
12
|
+
if (fields.length === 0)
|
|
13
|
+
return;
|
|
14
|
+
return markBuiltInAgentPlugin(structuredClone(source), fields);
|
|
15
|
+
}
|
|
16
|
+
export function mergeBuiltInAgentPluginEntries(base, next) {
|
|
17
|
+
const merged = { ...base, ...next };
|
|
18
|
+
delete merged[BUILT_IN_AGENT_PLUGIN];
|
|
19
|
+
const fields = LITERAL_PLUGIN_FIELDS.filter((field) => {
|
|
20
|
+
const owner = Object.hasOwn(next, field) ? next : base;
|
|
21
|
+
return Object.hasOwn(owner, field) && isBuiltInAgentPlugin(owner, field);
|
|
22
|
+
});
|
|
23
|
+
if (fields.length > 0)
|
|
24
|
+
markBuiltInAgentPlugin(merged, fields);
|
|
25
|
+
return merged;
|
|
26
|
+
}
|