@duckmind/dm-linux-x64 0.65.5 → 0.65.6
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,7 +1,6 @@
|
|
|
1
1
|
import * as fs from "node:fs";
|
|
2
2
|
import * as path from "node:path";
|
|
3
3
|
import {
|
|
4
|
-
BUILTIN_AGENT_NAMES,
|
|
5
4
|
defaultInheritProjectContext,
|
|
6
5
|
defaultInheritSkills,
|
|
7
6
|
defaultSystemPromptMode,
|
|
@@ -22,16 +21,20 @@ import {
|
|
|
22
21
|
buildProactiveSkillSubagentRecommendationLines
|
|
23
22
|
} from "./proactive-skills.js";
|
|
24
23
|
import { parseFrontmatter, parseFrontmatterList } from "./frontmatter.js";
|
|
25
|
-
import { toModelInfo } from "../shared/model-info.js";
|
|
26
|
-
import { resolveSubagentModelOverride } from "../runs/shared/model-
|
|
24
|
+
import { resolveEffectiveThinking, toModelInfo } from "../shared/model-info.js";
|
|
25
|
+
import { resolveSubagentModelOverride } from "../runs/shared/model-resolution.js";
|
|
27
26
|
import { validateToolBudgetConfig } from "../runs/shared/tool-budget.js";
|
|
28
|
-
import { validateAcceptanceInput } from "../runs/shared/acceptance.js";
|
|
27
|
+
import { formatReviewGateLabel, validateAcceptanceInput } from "../runs/shared/acceptance.js";
|
|
29
28
|
import { CODE_OWNED_EXTERNAL_CLI_ADAPTER_LABEL, isCodeOwnedExternalCliAdapterId, resolveExternalCliRunnerStatus, validateCodeOwnedProfileRunner } from "../runs/shared/external-cli-contract.js";
|
|
29
|
+
import { resolveExternalCliBinaryAvailability } from "../runs/shared/external-cli-preflight.js";
|
|
30
30
|
import { getProjectConfigDir } from "../shared/utils.js";
|
|
31
31
|
import { previewDisplayText } from "../shared/display-text.js";
|
|
32
32
|
import { capabilityCeilingAgentRestrictionSources, isAgentAllowedByCapabilityCeiling, resolveCurrentSubagentCapabilityCeiling } from "../runs/shared/capability-ceiling.js";
|
|
33
|
-
import {
|
|
33
|
+
import { mergeRuntimeAgents } from "./runtime-agent-registry.js";
|
|
34
34
|
import { listExternalJobProviders } from "../api/external-job-provider.js";
|
|
35
|
+
function discoverCatalog(ctx, cwd = ctx.cwd, provider) {
|
|
36
|
+
return (ctx.discoverAgentsAll ?? discoverAgentsAll)(cwd, provider);
|
|
37
|
+
}
|
|
35
38
|
function result(text, isError = false, details) {
|
|
36
39
|
return { content: [{ type: "text", text }], isError, details: { mode: "management", results: [], ...details } };
|
|
37
40
|
}
|
|
@@ -100,16 +103,24 @@ function parsePackageConfig(value) {
|
|
|
100
103
|
function allAgents(d) {
|
|
101
104
|
return [...d.builtin, ...d.package, ...d.user, ...d.project];
|
|
102
105
|
}
|
|
103
|
-
function
|
|
104
|
-
|
|
106
|
+
function effectiveAgentsForScope(scope, d, runtimeAgentOwner, preferredModelProvider) {
|
|
107
|
+
let agents = mergeAgentsForScope(scope, d.user, d.project, d.builtin, d.package);
|
|
108
|
+
if (runtimeAgentOwner) {
|
|
109
|
+
agents = mergeRuntimeAgents(runtimeAgentOwner, { agents }, allAgents(d), { cwd: d.cwd, scope, preferredModelProvider }).agents;
|
|
110
|
+
}
|
|
111
|
+
return agents;
|
|
112
|
+
}
|
|
113
|
+
function availableAgentNamesFromDiscovery(d, runtimeAgentOwner, preferredModelProvider) {
|
|
114
|
+
const agents = runtimeAgentOwner ? effectiveAgentsForScope("both", d, runtimeAgentOwner, preferredModelProvider) : allAgents(d);
|
|
115
|
+
return [...new Set(agents.map((agent) => agent.name))].sort((a, b) => a.localeCompare(b));
|
|
105
116
|
}
|
|
106
|
-
function availableAgentNames(cwd) {
|
|
107
|
-
return availableAgentNamesFromDiscovery(
|
|
117
|
+
function availableAgentNames(ctx, cwd = ctx.cwd) {
|
|
118
|
+
return availableAgentNamesFromDiscovery(discoverCatalog(ctx, cwd));
|
|
108
119
|
}
|
|
109
|
-
function findAgentsInDiscovery(name, d, scope = "both") {
|
|
120
|
+
function findAgentsInDiscovery(name, d, scope = "both", runtimeAgentOwner, preferredModelProvider) {
|
|
110
121
|
const raw = name.trim();
|
|
111
122
|
const sanitized = sanitizeName(raw);
|
|
112
|
-
const scoped =
|
|
123
|
+
const scoped = effectiveAgentsForScope(scope, d, runtimeAgentOwner, preferredModelProvider);
|
|
113
124
|
let resolved = resolveAgentName(raw, scoped);
|
|
114
125
|
if (!resolved.agent && !resolved.error && sanitized !== raw)
|
|
115
126
|
resolved = resolveAgentName(sanitized, scoped);
|
|
@@ -117,8 +128,8 @@ function findAgentsInDiscovery(name, d, scope = "both") {
|
|
|
117
128
|
return scoped.filter((agent) => agent.name === resolved.agent.name).sort((a, b) => a.source.localeCompare(b.source));
|
|
118
129
|
return scoped.filter((agent) => Boolean(resolveAgentName(raw, [agent]).agent) || sanitized !== raw && Boolean(resolveAgentName(sanitized, [agent]).agent)).sort((a, b) => a.source.localeCompare(b.source));
|
|
119
130
|
}
|
|
120
|
-
function findAgents(name,
|
|
121
|
-
return findAgentsInDiscovery(name,
|
|
131
|
+
function findAgents(name, ctx, scope = "both") {
|
|
132
|
+
return findAgentsInDiscovery(name, discoverCatalog(ctx), scope);
|
|
122
133
|
}
|
|
123
134
|
function diagnosticsForScope(diagnostics, scope) {
|
|
124
135
|
if (scope === "both")
|
|
@@ -143,8 +154,8 @@ function resolveEffectiveAgent(d, name) {
|
|
|
143
154
|
const matches = candidates.filter((agent) => agent.name === resolved.agent.name);
|
|
144
155
|
return { agent: matches.reduce((best, agent) => AGENT_SOURCE_PRECEDENCE[agent.source] > AGENT_SOURCE_PRECEDENCE[best.source] ? agent : best) };
|
|
145
156
|
}
|
|
146
|
-
function nameExistsInScope(
|
|
147
|
-
const d =
|
|
157
|
+
function nameExistsInScope(ctx, scope, name, excludePath) {
|
|
158
|
+
const d = discoverCatalog(ctx);
|
|
148
159
|
for (const a of scope === "user" ? d.user : d.project) {
|
|
149
160
|
if (a.name === name && a.filePath !== excludePath)
|
|
150
161
|
return true;
|
|
@@ -162,13 +173,6 @@ function modelWarning(ctx, model) {
|
|
|
162
173
|
return;
|
|
163
174
|
return `Warning: model '${model}' is not in the current model registry. Run subagent({ action: "models" }) to list valid provider/id selectors, then use the exact provider/id form (bare ids resolve only when unique).`;
|
|
164
175
|
}
|
|
165
|
-
function fallbackModelsWarning(ctx, fallbackModels) {
|
|
166
|
-
if (!fallbackModels || fallbackModels.length === 0)
|
|
167
|
-
return;
|
|
168
|
-
const available = new Set(ctx.modelRegistry.getAvailable().flatMap((m) => [`${m.provider}/${m.id}`, m.id]));
|
|
169
|
-
const missing = fallbackModels.filter((model) => !available.has(model));
|
|
170
|
-
return missing.length ? `Warning: fallback models not in the current model registry: ${missing.join(", ")}.` : undefined;
|
|
171
|
-
}
|
|
172
176
|
function skillsWarning(cwd, agent) {
|
|
173
177
|
if (!agent.skills?.length)
|
|
174
178
|
return;
|
|
@@ -187,13 +191,27 @@ function withDeclaredExtensionPaths(config, filePath) {
|
|
|
187
191
|
export function editableAgentConfig(agent) {
|
|
188
192
|
const { extensions: _extensions, ...withoutExtensions } = agent;
|
|
189
193
|
const base = agent.override?.base;
|
|
194
|
+
const description = base?.description ?? agent.description;
|
|
195
|
+
const frontmatterFields = agent.source === "builtin" || agent.source === "runtime" ? undefined : readAgentFrontmatterFields(agent.filePath);
|
|
196
|
+
const hasDeclaredField = (...fields) => frontmatterFields === undefined || fields.some((field) => frontmatterFields.has(field));
|
|
197
|
+
const withoutSettingsDefaults = (config) => {
|
|
198
|
+
if (!frontmatterFields)
|
|
199
|
+
return config;
|
|
200
|
+
const next = { ...config };
|
|
201
|
+
if (!hasDeclaredField("model"))
|
|
202
|
+
delete next.model;
|
|
203
|
+
if (!hasDeclaredField("thinking"))
|
|
204
|
+
delete next.thinking;
|
|
205
|
+
return next;
|
|
206
|
+
};
|
|
190
207
|
const {
|
|
191
208
|
override: _override,
|
|
209
|
+
description: _description,
|
|
192
210
|
output: _output,
|
|
193
211
|
outputMode: _outputMode,
|
|
194
212
|
defaultReads: _defaultReads,
|
|
195
213
|
model: _model,
|
|
196
|
-
|
|
214
|
+
fast: _fast,
|
|
197
215
|
thinking: _thinking,
|
|
198
216
|
systemPromptMode: _systemPromptMode,
|
|
199
217
|
inheritProjectContext: _inheritProjectContext,
|
|
@@ -206,26 +224,30 @@ export function editableAgentConfig(agent) {
|
|
|
206
224
|
skills: _skills,
|
|
207
225
|
skillPath: _skillPath,
|
|
208
226
|
tools: _tools,
|
|
227
|
+
excludeTools: _excludeTools,
|
|
209
228
|
mcpDirectTools: _mcpDirectTools,
|
|
229
|
+
allowNestedSubagents: _allowNestedSubagents,
|
|
230
|
+
allowedAgents: _allowedAgents,
|
|
210
231
|
subagentOnlyExtensions: _subagentOnlyExtensions,
|
|
211
232
|
mutationTools: _mutationTools,
|
|
212
|
-
|
|
233
|
+
toolBudget: _toolBudget,
|
|
213
234
|
...editable
|
|
214
235
|
} = withoutExtensions;
|
|
215
236
|
if (!base) {
|
|
216
|
-
return withDeclaredExtensionPaths({
|
|
237
|
+
return withDeclaredExtensionPaths(withoutSettingsDefaults({
|
|
217
238
|
...withoutExtensions,
|
|
218
239
|
...agent.extensionsFromDefault ? {} : agent.extensions !== undefined ? { extensions: [...agent.extensions] } : {}
|
|
219
|
-
}, agent.filePath);
|
|
240
|
+
}), agent.filePath);
|
|
220
241
|
}
|
|
221
242
|
return withDeclaredExtensionPaths({
|
|
222
243
|
...editable,
|
|
244
|
+
description,
|
|
223
245
|
...base.output !== undefined ? { output: base.output } : {},
|
|
224
246
|
...base.outputMode !== undefined ? { outputMode: base.outputMode } : {},
|
|
225
247
|
...base.defaultReads !== undefined ? { defaultReads: [...base.defaultReads] } : {},
|
|
226
|
-
...base.model !== undefined ? { model: base.model } : {},
|
|
227
|
-
...base.
|
|
228
|
-
...base.thinking !== undefined ? { thinking: base.thinking } : {},
|
|
248
|
+
...base.model !== undefined && hasDeclaredField("model") ? { model: base.model } : {},
|
|
249
|
+
...base.fast !== undefined ? { fast: base.fast } : {},
|
|
250
|
+
...base.thinking !== undefined && hasDeclaredField("thinking") ? { thinking: base.thinking } : {},
|
|
229
251
|
systemPromptMode: base.systemPromptMode,
|
|
230
252
|
inheritProjectContext: base.inheritProjectContext,
|
|
231
253
|
inheritGlobalContext: base.inheritGlobalContext,
|
|
@@ -237,11 +259,14 @@ export function editableAgentConfig(agent) {
|
|
|
237
259
|
...base.skills !== undefined ? { skills: [...base.skills] } : {},
|
|
238
260
|
...base.skillPath !== undefined ? { skillPath: [...base.skillPath] } : {},
|
|
239
261
|
...base.tools !== undefined ? { tools: [...base.tools] } : {},
|
|
262
|
+
...base.excludeTools !== undefined ? { excludeTools: [...base.excludeTools] } : {},
|
|
240
263
|
...base.mcpDirectTools !== undefined ? { mcpDirectTools: [...base.mcpDirectTools] } : {},
|
|
264
|
+
...base.allowNestedSubagents !== undefined ? { allowNestedSubagents: base.allowNestedSubagents } : {},
|
|
265
|
+
...base.allowedAgents !== undefined ? { allowedAgents: [...base.allowedAgents] } : {},
|
|
241
266
|
...base.extensions !== undefined ? { extensions: [...base.extensions] } : {},
|
|
242
267
|
...base.subagentOnlyExtensions !== undefined ? { subagentOnlyExtensions: [...base.subagentOnlyExtensions] } : {},
|
|
243
268
|
...base.mutationTools !== undefined ? { mutationTools: [...base.mutationTools] } : {},
|
|
244
|
-
...base.
|
|
269
|
+
...base.toolBudget !== undefined ? { toolBudget: base.toolBudget } : {}
|
|
245
270
|
}, agent.filePath);
|
|
246
271
|
}
|
|
247
272
|
function readAgentFrontmatterFields(filePath) {
|
|
@@ -264,6 +289,8 @@ export function preservedAgentFrontmatterFields(agent, cfg) {
|
|
|
264
289
|
changed("package");
|
|
265
290
|
if (hasKey(cfg, "description"))
|
|
266
291
|
changed("description");
|
|
292
|
+
if (hasKey(cfg, "advertise"))
|
|
293
|
+
changed("advertise");
|
|
267
294
|
if (hasKey(cfg, "aliases"))
|
|
268
295
|
changed("alias", "aliases");
|
|
269
296
|
if (hasKey(cfg, "systemPrompt"))
|
|
@@ -272,10 +299,10 @@ export function preservedAgentFrontmatterFields(agent, cfg) {
|
|
|
272
299
|
changed("runner");
|
|
273
300
|
if (hasKey(cfg, "model"))
|
|
274
301
|
changed("model");
|
|
275
|
-
if (hasKey(cfg, "fallbackModels"))
|
|
276
|
-
changed("fallbackModels");
|
|
277
302
|
if (hasKey(cfg, "tools"))
|
|
278
303
|
changed("tools");
|
|
304
|
+
if (hasKey(cfg, "excludeTools"))
|
|
305
|
+
changed("excludeTools");
|
|
279
306
|
if (hasKey(cfg, "skills"))
|
|
280
307
|
changed("skill", "skills");
|
|
281
308
|
if (hasKey(cfg, "skillPath"))
|
|
@@ -327,11 +354,6 @@ export function preservedAgentFrontmatterFields(agent, cfg) {
|
|
|
327
354
|
changed("defaultProgress");
|
|
328
355
|
if (hasKey(cfg, "maxSubagentDepth"))
|
|
329
356
|
changed("maxSubagentDepth");
|
|
330
|
-
if (hasKey(cfg, "completionGuard")) {
|
|
331
|
-
changed("completionGuard");
|
|
332
|
-
if (cfg.completionGuard === true)
|
|
333
|
-
fields.add("completionGuard");
|
|
334
|
-
}
|
|
335
357
|
if (hasKey(cfg, "toolBudget"))
|
|
336
358
|
changed("toolBudget");
|
|
337
359
|
return fields;
|
|
@@ -353,6 +375,14 @@ function parseTools(raw) {
|
|
|
353
375
|
};
|
|
354
376
|
}
|
|
355
377
|
function applyAgentConfig(target, cfg) {
|
|
378
|
+
if (hasKey(cfg, "advertise")) {
|
|
379
|
+
if (cfg.advertise === "")
|
|
380
|
+
delete target.advertise;
|
|
381
|
+
else if (typeof cfg.advertise === "boolean")
|
|
382
|
+
target.advertise = cfg.advertise;
|
|
383
|
+
else
|
|
384
|
+
return "config.advertise must be a boolean or empty string when provided.";
|
|
385
|
+
}
|
|
356
386
|
if (hasKey(cfg, "aliases")) {
|
|
357
387
|
if (cfg.aliases === false || cfg.aliases === "")
|
|
358
388
|
delete target.aliases;
|
|
@@ -408,24 +438,8 @@ function applyAgentConfig(target, cfg) {
|
|
|
408
438
|
} else
|
|
409
439
|
return "config.model must be a string or false when provided.";
|
|
410
440
|
}
|
|
411
|
-
if (hasKey(cfg, "fallbackModels"))
|
|
412
|
-
|
|
413
|
-
delete target.fallbackModels;
|
|
414
|
-
else if (typeof cfg.fallbackModels === "string") {
|
|
415
|
-
const models = parseCsv(cfg.fallbackModels);
|
|
416
|
-
if (models.length)
|
|
417
|
-
target.fallbackModels = models;
|
|
418
|
-
else
|
|
419
|
-
delete target.fallbackModels;
|
|
420
|
-
} else if (Array.isArray(cfg.fallbackModels)) {
|
|
421
|
-
const models = cfg.fallbackModels.filter((value) => typeof value === "string").map((value) => value.trim()).filter(Boolean);
|
|
422
|
-
if (models.length)
|
|
423
|
-
target.fallbackModels = [...new Set(models)];
|
|
424
|
-
else
|
|
425
|
-
delete target.fallbackModels;
|
|
426
|
-
} else
|
|
427
|
-
return "config.fallbackModels must be a comma-separated string, string array, or false when provided.";
|
|
428
|
-
}
|
|
441
|
+
if (hasKey(cfg, "fallbackModels"))
|
|
442
|
+
return "config.fallbackModels was removed; configure one model instead.";
|
|
429
443
|
if (hasKey(cfg, "tools")) {
|
|
430
444
|
if (cfg.tools === false || cfg.tools === "") {
|
|
431
445
|
delete target.tools;
|
|
@@ -443,6 +457,24 @@ function applyAgentConfig(target, cfg) {
|
|
|
443
457
|
} else
|
|
444
458
|
return "config.tools must be a comma-separated string or false when provided.";
|
|
445
459
|
}
|
|
460
|
+
if (hasKey(cfg, "excludeTools")) {
|
|
461
|
+
if (cfg.excludeTools === false || cfg.excludeTools === "")
|
|
462
|
+
delete target.excludeTools;
|
|
463
|
+
else if (typeof cfg.excludeTools === "string") {
|
|
464
|
+
const excludeTools = parseCsv(cfg.excludeTools);
|
|
465
|
+
if (excludeTools.length)
|
|
466
|
+
target.excludeTools = [...new Set(excludeTools)];
|
|
467
|
+
else
|
|
468
|
+
delete target.excludeTools;
|
|
469
|
+
} else if (Array.isArray(cfg.excludeTools) && cfg.excludeTools.every((entry) => typeof entry === "string")) {
|
|
470
|
+
const excludeTools = [...new Set(cfg.excludeTools.map((entry) => entry.trim()).filter(Boolean))];
|
|
471
|
+
if (excludeTools.length)
|
|
472
|
+
target.excludeTools = excludeTools;
|
|
473
|
+
else
|
|
474
|
+
delete target.excludeTools;
|
|
475
|
+
} else
|
|
476
|
+
return "config.excludeTools must be a comma-separated string, string array, or false when provided.";
|
|
477
|
+
}
|
|
446
478
|
if (hasKey(cfg, "skills")) {
|
|
447
479
|
if (cfg.skills === false || cfg.skills === "")
|
|
448
480
|
delete target.skills;
|
|
@@ -617,11 +649,6 @@ function applyAgentConfig(target, cfg) {
|
|
|
617
649
|
} else
|
|
618
650
|
return "config.maxSubagentDepth must be an integer >= 0 or false when provided.";
|
|
619
651
|
}
|
|
620
|
-
if (hasKey(cfg, "completionGuard")) {
|
|
621
|
-
if (typeof cfg.completionGuard !== "boolean")
|
|
622
|
-
return "config.completionGuard must be a boolean when provided.";
|
|
623
|
-
target.completionGuard = cfg.completionGuard;
|
|
624
|
-
}
|
|
625
652
|
if (hasKey(cfg, "toolBudget")) {
|
|
626
653
|
if (cfg.toolBudget === false || cfg.toolBudget === "")
|
|
627
654
|
delete target.toolBudget;
|
|
@@ -635,15 +662,14 @@ function applyAgentConfig(target, cfg) {
|
|
|
635
662
|
if (target.runner?.type === "external-cli" || target.runner?.type === "external-job") {
|
|
636
663
|
const unsupported = [
|
|
637
664
|
target.tools?.length || target.mcpDirectTools?.length ? "tools" : undefined,
|
|
665
|
+
target.excludeTools?.length ? "excludeTools" : undefined,
|
|
638
666
|
target.model ? "model" : undefined,
|
|
639
|
-
target.fallbackModels?.length ? "fallbackModels" : undefined,
|
|
640
667
|
target.thinking ? "thinking" : undefined,
|
|
641
668
|
target.extensions?.length ? "extensions" : undefined,
|
|
642
669
|
target.subagentOnlyExtensions?.length ? "subagentOnlyExtensions" : undefined,
|
|
643
670
|
target.mutationTools?.length ? "mutationTools" : undefined,
|
|
644
671
|
target.skills?.length || target.skillPath?.length ? "skills" : undefined,
|
|
645
672
|
target.maxSubagentDepth !== undefined ? "maxSubagentDepth" : undefined,
|
|
646
|
-
target.completionGuard !== undefined ? "completionGuard" : undefined,
|
|
647
673
|
target.toolBudget ? "toolBudget" : undefined
|
|
648
674
|
].filter((field) => Boolean(field));
|
|
649
675
|
if (unsupported.length > 0)
|
|
@@ -651,7 +677,7 @@ function applyAgentConfig(target, cfg) {
|
|
|
651
677
|
}
|
|
652
678
|
return;
|
|
653
679
|
}
|
|
654
|
-
function resolveTarget(name, matches, cwd, scopeHint) {
|
|
680
|
+
function resolveTarget(name, matches, cwd, ctx, scopeHint) {
|
|
655
681
|
const distinctNames = [...new Set(matches.map((match) => match.name))];
|
|
656
682
|
if (distinctNames.length > 1)
|
|
657
683
|
return result(`Ambiguous agent alias or name '${name}': ${distinctNames.sort((a, b) => a.localeCompare(b)).join(", ")}`, true);
|
|
@@ -659,7 +685,7 @@ function resolveTarget(name, matches, cwd, scopeHint) {
|
|
|
659
685
|
if (mutable.length === 0) {
|
|
660
686
|
if (matches.length > 0)
|
|
661
687
|
return result(`Agent '${name}' is read-only and cannot be modified. Create a same-named agent in user or project scope to override it.`, true);
|
|
662
|
-
return result(`Agent '${name}' not found. Available: ${availableAgentNames(cwd).join(", ") || "none"}.`, true);
|
|
688
|
+
return result(`Agent '${name}' not found. Available: ${availableAgentNames(ctx, cwd).join(", ") || "none"}.`, true);
|
|
663
689
|
}
|
|
664
690
|
if (mutable.length === 1)
|
|
665
691
|
return mutable[0];
|
|
@@ -677,8 +703,8 @@ ${paths}`, true);
|
|
|
677
703
|
return result(`Multiple agents named '${name}' found in scope '${scope}': ${scoped.map((match) => match.filePath).join(", ")}`, true);
|
|
678
704
|
return scoped[0];
|
|
679
705
|
}
|
|
680
|
-
function renamePath(currentPath, newName, scope,
|
|
681
|
-
if (nameExistsInScope(
|
|
706
|
+
function renamePath(currentPath, newName, scope, ctx) {
|
|
707
|
+
if (nameExistsInScope(ctx, scope, newName, currentPath))
|
|
682
708
|
return { error: `Name '${newName}' already exists in ${scope} scope.` };
|
|
683
709
|
const filePath = path.join(path.dirname(currentPath), `${newName}.md`);
|
|
684
710
|
if (fs.existsSync(filePath) && filePath !== currentPath)
|
|
@@ -706,18 +732,43 @@ function externalJobProviderSuffix(provider, names) {
|
|
|
706
732
|
return "?";
|
|
707
733
|
return names.has(provider) ? "✓" : "missing";
|
|
708
734
|
}
|
|
709
|
-
function
|
|
735
|
+
function externalCliAvailabilityKey(command, machine) {
|
|
736
|
+
return machine ? `ssh@${machine}` : command;
|
|
737
|
+
}
|
|
738
|
+
function externalCliAvailabilityForAgents(agents) {
|
|
739
|
+
const availability = new Map;
|
|
740
|
+
for (const agent of agents) {
|
|
741
|
+
const runner = agent.runner;
|
|
742
|
+
if (runner?.type !== "external-cli")
|
|
743
|
+
continue;
|
|
744
|
+
const key = externalCliAvailabilityKey(runner.command, agent.machine);
|
|
745
|
+
if (availability.has(key))
|
|
746
|
+
continue;
|
|
747
|
+
availability.set(key, resolveExternalCliBinaryAvailability(agent.machine ? "ssh" : runner.command, process.env));
|
|
748
|
+
}
|
|
749
|
+
return availability;
|
|
750
|
+
}
|
|
751
|
+
function runnerListBadge(agent, providerNames, externalCliAvailability) {
|
|
710
752
|
if (agent.runner?.type === "external-job")
|
|
711
753
|
return `external-job:${agent.runner.provider} ${externalJobProviderSuffix(agent.runner.provider, providerNames)}`;
|
|
712
|
-
if (agent.runner?.type === "external-cli")
|
|
713
|
-
|
|
754
|
+
if (agent.runner?.type === "external-cli") {
|
|
755
|
+
const placed = agent.machine ? `${agent.runner.command} @ ${agent.machine}` : agent.runner.command;
|
|
756
|
+
const availability = externalCliAvailability?.get(externalCliAvailabilityKey(agent.runner.command, agent.machine));
|
|
757
|
+
if (!availability)
|
|
758
|
+
return `external-cli:${placed}`;
|
|
759
|
+
if (agent.machine)
|
|
760
|
+
return `external-cli:${placed} saved Herdr placement; transport ${availability.available ? "✓" : "missing"}; machine not preflighted`;
|
|
761
|
+
return `external-cli:${placed} ${availability.available ? "✓" : "missing"}`;
|
|
762
|
+
}
|
|
763
|
+
if (agent.machine)
|
|
764
|
+
return `machine: ${agent.machine} (saved Herdr placement)`;
|
|
714
765
|
return;
|
|
715
766
|
}
|
|
716
|
-
function agentListMetadata(agent, providerNames) {
|
|
767
|
+
function agentListMetadata(agent, providerNames, externalCliAvailability) {
|
|
717
768
|
const source = agent.source === "package" ? packageSourceLabel(agent) : agent.source;
|
|
718
769
|
return [
|
|
719
770
|
source,
|
|
720
|
-
runnerListBadge(agent, providerNames),
|
|
771
|
+
runnerListBadge(agent, providerNames, externalCliAvailability),
|
|
721
772
|
agent.defaultContext ? `context: ${agent.defaultContext}` : undefined,
|
|
722
773
|
agent.aliases?.length ? `aliases: ${agent.aliases.join(", ")}` : undefined
|
|
723
774
|
].filter((part) => Boolean(part)).join(", ");
|
|
@@ -725,7 +776,7 @@ function agentListMetadata(agent, providerNames) {
|
|
|
725
776
|
function formatAgentListLine(agent, providerNames) {
|
|
726
777
|
return `- ${agent.name} (${agentListMetadata(agent, providerNames)}): ${agent.description}`;
|
|
727
778
|
}
|
|
728
|
-
function formatAgentCapabilitiesLine(agent, providerNames) {
|
|
779
|
+
function formatAgentCapabilitiesLine(agent, providerNames, externalCliAvailability) {
|
|
729
780
|
const declaredTools = [
|
|
730
781
|
...agent.tools ?? [],
|
|
731
782
|
...(agent.mcpDirectTools ?? []).map((tool) => `mcp:${tool}`)
|
|
@@ -736,6 +787,8 @@ function formatAgentCapabilitiesLine(agent, providerNames) {
|
|
|
736
787
|
} else if (declaredTools.length > 0) {
|
|
737
788
|
tools = declaredTools.join(", ");
|
|
738
789
|
}
|
|
790
|
+
if (agent.excludeTools?.length)
|
|
791
|
+
tools = `${tools}; excludes: ${agent.excludeTools.join(", ")}`;
|
|
739
792
|
let model = "inherits current session";
|
|
740
793
|
if (agent.model !== undefined) {
|
|
741
794
|
model = agent.model;
|
|
@@ -743,25 +796,68 @@ function formatAgentCapabilitiesLine(agent, providerNames) {
|
|
|
743
796
|
model = `${agent.modelProvider}/${agent.model}`;
|
|
744
797
|
}
|
|
745
798
|
const thinking = agent.thinking === false ? "off" : agent.thinking ?? "default";
|
|
746
|
-
|
|
799
|
+
const machine = agent.machine ? `; Machine: ${agent.machine} (saved Herdr placement)` : "";
|
|
800
|
+
const acceptance = formatAcceptanceSummary(agent);
|
|
801
|
+
return `- ${agent.name} (${agentListMetadata(agent, providerNames, externalCliAvailability)}): Description: ${previewDisplayText(agent.description, 240)}; Tools: ${tools}; Model: ${model}; Thinking: ${thinking}${machine}${acceptance ? `; ${acceptance}` : ""}`;
|
|
802
|
+
}
|
|
803
|
+
function formatAcceptanceSummary(agent) {
|
|
804
|
+
const policy = agent.defaultAcceptance;
|
|
805
|
+
const summary = [];
|
|
806
|
+
if (policy === false)
|
|
807
|
+
summary.push("Acceptance: disabled");
|
|
808
|
+
else if (typeof policy === "string")
|
|
809
|
+
summary.push(`Acceptance: ${policy}`);
|
|
810
|
+
else if (policy) {
|
|
811
|
+
const modifiers = [
|
|
812
|
+
...policy.evidence ?? [],
|
|
813
|
+
...(policy.verify ?? []).map((command) => `verify: ${formatAcceptanceDisplayLabel(command.id)}`),
|
|
814
|
+
...policy.criteria?.length ? [`criteria: ${policy.criteria.length}`] : [],
|
|
815
|
+
...policy.stopRules?.length ? [`stopRules: ${policy.stopRules.length}`] : []
|
|
816
|
+
];
|
|
817
|
+
if (policy.review === false)
|
|
818
|
+
modifiers.push("review: off");
|
|
819
|
+
else if (policy.review) {
|
|
820
|
+
const displayReview = policy.review.agent ? { ...policy.review, agent: formatAcceptanceDisplayLabel(policy.review.agent) } : policy.review;
|
|
821
|
+
modifiers.push(`review: ${formatReviewGateLabel(displayReview)}`);
|
|
822
|
+
}
|
|
823
|
+
if (policy.report)
|
|
824
|
+
modifiers.push(`report: ${policy.report}`);
|
|
825
|
+
summary.push(`Acceptance: ${policy.level ?? "auto"}${modifiers.length > 0 ? ` (${modifiers.join(", ")})` : ""}`);
|
|
826
|
+
}
|
|
827
|
+
if (agent.acceptanceRole)
|
|
828
|
+
summary.push(`Acceptance role: ${agent.acceptanceRole}`);
|
|
829
|
+
return summary.length > 0 ? summary.join("; ") : undefined;
|
|
830
|
+
}
|
|
831
|
+
function formatAcceptanceDisplayLabel(value) {
|
|
832
|
+
return JSON.stringify(previewDisplayText(value, 80));
|
|
747
833
|
}
|
|
748
834
|
const EXTERNAL_JOB_CAPABILITIES = { stop: false, steer: false, resume: false, structuredOutput: false, toolEvents: false };
|
|
749
835
|
const PI_AGENT_RUNNER = { type: "dm" };
|
|
750
836
|
function listOrEmpty(values) {
|
|
751
837
|
return values ?? [];
|
|
752
838
|
}
|
|
753
|
-
function agentCapabilityRunner(agent, providerNames) {
|
|
839
|
+
function agentCapabilityRunner(agent, providerNames, externalCliAvailability) {
|
|
754
840
|
const runner = agent.runner;
|
|
755
841
|
if (!runner || runner.type === "dm")
|
|
756
842
|
return PI_AGENT_RUNNER;
|
|
757
|
-
if (runner.type === "external-cli")
|
|
758
|
-
|
|
843
|
+
if (runner.type === "external-cli") {
|
|
844
|
+
const availability = externalCliAvailability.get(externalCliAvailabilityKey(runner.command, agent.machine));
|
|
845
|
+
return {
|
|
846
|
+
type: "external-cli",
|
|
847
|
+
adapter: runner.adapter,
|
|
848
|
+
command: runner.command,
|
|
849
|
+
...agent.machine ? { machine: agent.machine } : {},
|
|
850
|
+
...availability,
|
|
851
|
+
capabilities: resolveExternalCliRunnerStatus(runner).capabilities
|
|
852
|
+
};
|
|
853
|
+
}
|
|
759
854
|
return { type: "external-job", provider: runner.provider, available: providerNames?.has(runner.provider), capabilities: EXTERNAL_JOB_CAPABILITIES };
|
|
760
855
|
}
|
|
761
856
|
function agentCapabilityTools(agent) {
|
|
762
857
|
return {
|
|
763
858
|
ambient: agent.tools === undefined && agent.mcpDirectTools === undefined,
|
|
764
859
|
names: listOrEmpty(agent.tools),
|
|
860
|
+
...agent.excludeTools !== undefined ? { excludeTools: [...agent.excludeTools] } : {},
|
|
765
861
|
mcpDirectTools: listOrEmpty(agent.mcpDirectTools),
|
|
766
862
|
mutationTools: agent.mutationTools
|
|
767
863
|
};
|
|
@@ -774,10 +870,11 @@ function agentCapabilityRow(agent, options) {
|
|
|
774
870
|
executable: options.executable,
|
|
775
871
|
restrictionSources: options.executable ? undefined : options.restrictionSources ?? [],
|
|
776
872
|
aliases: agent.aliases ? [...agent.aliases] : undefined,
|
|
777
|
-
runner: agentCapabilityRunner(agent, options.providerNames),
|
|
873
|
+
runner: agentCapabilityRunner(agent, options.providerNames, options.externalCliAvailability),
|
|
778
874
|
tools: agentCapabilityTools(agent),
|
|
779
|
-
model: presentDetails({ value: agent.model,
|
|
875
|
+
model: presentDetails({ value: agent.model, thinking: agent.thinking }),
|
|
780
876
|
execution: presentDetails({ defaultAsync: agent.defaultAsync, timeoutMs: agent.defaultTimeoutMs }),
|
|
877
|
+
acceptance: presentDetails({ policy: agent.defaultAcceptance, role: agent.acceptanceRole }),
|
|
781
878
|
output: presentDetails({ path: agent.output, mode: agent.outputMode }),
|
|
782
879
|
extensions: presentDetails({ names: agent.extensions, subagentOnly: agent.subagentOnlyExtensions, skills: agent.skills })
|
|
783
880
|
};
|
|
@@ -785,8 +882,8 @@ function agentCapabilityRow(agent, options) {
|
|
|
785
882
|
function agentCapabilitiesSnapshot(input) {
|
|
786
883
|
return {
|
|
787
884
|
agents: [
|
|
788
|
-
...input.agents.map((agent) => agentCapabilityRow(agent, { executable: true, providerNames: input.providerNames })),
|
|
789
|
-
...input.restrictedAgents.map((agent) => agentCapabilityRow(agent, { executable: false, providerNames: input.providerNames, restrictionSources: input.restrictedSources }))
|
|
885
|
+
...input.agents.map((agent) => agentCapabilityRow(agent, { executable: true, providerNames: input.providerNames, externalCliAvailability: input.externalCliAvailability })),
|
|
886
|
+
...input.restrictedAgents.map((agent) => agentCapabilityRow(agent, { executable: false, providerNames: input.providerNames, externalCliAvailability: input.externalCliAvailability, restrictionSources: input.restrictedSources }))
|
|
790
887
|
],
|
|
791
888
|
restrictedCount: input.restrictedAgents.length,
|
|
792
889
|
...input.restrictedSources?.length ? { capabilityCeilingSources: [...input.restrictedSources] } : {}
|
|
@@ -818,6 +915,7 @@ function agentCapabilityDetails(input) {
|
|
|
818
915
|
agents: input.agents,
|
|
819
916
|
restrictedAgents: input.restrictedAgents,
|
|
820
917
|
providerNames: input.providerNames,
|
|
918
|
+
externalCliAvailability: input.externalCliAvailability,
|
|
821
919
|
restrictedSources: input.restrictedSources
|
|
822
920
|
}))
|
|
823
921
|
};
|
|
@@ -869,10 +967,10 @@ function formatAgentDetail(agent) {
|
|
|
869
967
|
lines.push(`Aliases: ${agent.aliases.join(", ")}`);
|
|
870
968
|
if (agent.model)
|
|
871
969
|
lines.push(`Model: ${agent.model}`);
|
|
872
|
-
if (agent.fallbackModels?.length)
|
|
873
|
-
lines.push(`Fallback models: ${agent.fallbackModels.join(", ")}`);
|
|
874
970
|
if (tools.length)
|
|
875
971
|
lines.push(`Tools: ${tools.join(", ")}`);
|
|
972
|
+
if (agent.excludeTools?.length)
|
|
973
|
+
lines.push(`Excluded tools: ${agent.excludeTools.join(", ")}`);
|
|
876
974
|
if (agent.skills?.length)
|
|
877
975
|
lines.push(`Skills: ${agent.skills.join(", ")}`);
|
|
878
976
|
if (agent.skillPath?.length)
|
|
@@ -919,8 +1017,6 @@ function formatAgentDetail(agent) {
|
|
|
919
1017
|
lines.push("Progress: true");
|
|
920
1018
|
if (agent.maxSubagentDepth !== undefined)
|
|
921
1019
|
lines.push(`Max subagent depth: ${agent.maxSubagentDepth}`);
|
|
922
|
-
if (agent.completionGuard === false)
|
|
923
|
-
lines.push("Completion guard: false");
|
|
924
1020
|
if (agent.toolBudget)
|
|
925
1021
|
lines.push(`Tool budget: ${JSON.stringify(agent.toolBudget)}`);
|
|
926
1022
|
if (agent.memory)
|
|
@@ -932,17 +1028,8 @@ function formatAgentDetail(agent) {
|
|
|
932
1028
|
}
|
|
933
1029
|
export function handleList(params, ctx) {
|
|
934
1030
|
const scope = normalizeListScope(params.agentScope) ?? "both";
|
|
935
|
-
const d =
|
|
936
|
-
let scopedAgents =
|
|
937
|
-
if (ctx.runtimeAgentOwner && listRuntimeAgentConfigs(ctx.runtimeAgentOwner).length > 0) {
|
|
938
|
-
const configuredAgents = [
|
|
939
|
-
...d.builtin,
|
|
940
|
-
...d.package,
|
|
941
|
-
...d.user,
|
|
942
|
-
...d.project
|
|
943
|
-
];
|
|
944
|
-
scopedAgents = mergeRuntimeAgents(ctx.runtimeAgentOwner, { agents: scopedAgents }, configuredAgents).agents;
|
|
945
|
-
}
|
|
1031
|
+
const d = discoverCatalog(ctx, ctx.cwd, ctx.model?.provider);
|
|
1032
|
+
let scopedAgents = effectiveAgentsForScope(scope, d, ctx.runtimeAgentOwner, ctx.model?.provider);
|
|
946
1033
|
scopedAgents = scopedAgents.sort((a, b) => a.name.localeCompare(b.name));
|
|
947
1034
|
const capabilityCeiling = resolveCurrentSubagentCapabilityCeiling(ctx.currentSessionId);
|
|
948
1035
|
const visibleAgents = scopedAgents.filter((a) => !a.disabled);
|
|
@@ -957,7 +1044,8 @@ export function handleList(params, ctx) {
|
|
|
957
1044
|
const providerStatus = registeredExternalJobProviderStatus();
|
|
958
1045
|
const providerNameSet = providerNames(providerStatus);
|
|
959
1046
|
const capabilityMode = params.capabilities === true;
|
|
960
|
-
const
|
|
1047
|
+
const externalCliAvailability = capabilityMode ? externalCliAvailabilityForAgents([...agents, ...restrictedAgents]) : undefined;
|
|
1048
|
+
const formatLine = capabilityMode ? (agent, names) => formatAgentCapabilitiesLine(agent, names, externalCliAvailability) : formatAgentListLine;
|
|
961
1049
|
const lines = [
|
|
962
1050
|
capabilityMode ? "Executable agents (capabilities):" : "Executable agents:",
|
|
963
1051
|
...formatAgentListSections(agents, providerNameSet, formatLine)
|
|
@@ -973,6 +1061,7 @@ export function handleList(params, ctx) {
|
|
|
973
1061
|
agents,
|
|
974
1062
|
restrictedAgents,
|
|
975
1063
|
providerNames: providerNameSet,
|
|
1064
|
+
externalCliAvailability: externalCliAvailability ?? new Map,
|
|
976
1065
|
restrictedSources
|
|
977
1066
|
}));
|
|
978
1067
|
}
|
|
@@ -984,78 +1073,91 @@ function formatModelSource(agent, currentModel) {
|
|
|
984
1073
|
return `${agent.modelSource.scope} defaultModel`;
|
|
985
1074
|
}
|
|
986
1075
|
if (agent.model)
|
|
987
|
-
return
|
|
1076
|
+
return `${agent.source} agent config`;
|
|
988
1077
|
if (currentModel)
|
|
989
1078
|
return "inherits current session model";
|
|
990
1079
|
return "inherit requested, but no current session model is available";
|
|
991
1080
|
}
|
|
992
1081
|
function handleModels(params, ctx) {
|
|
993
1082
|
const requestedAgent = params.agent?.trim();
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
const discovered =
|
|
998
|
-
const
|
|
999
|
-
const resolveBuiltinModelAgent = (name) => builtinByName.get(name) ?? resolveAgentName(name, discovered.builtin).agent;
|
|
1083
|
+
const scope = normalizeListScope(params.agentScope);
|
|
1084
|
+
if (!scope)
|
|
1085
|
+
return result("agentScope must be 'user', 'project', or 'both' for models.", true);
|
|
1086
|
+
const discovered = discoverCatalog(ctx, ctx.cwd, ctx.model?.provider);
|
|
1087
|
+
const effectiveAgents = effectiveAgentsForScope(scope, discovered, ctx.runtimeAgentOwner, ctx.model?.provider).sort((a, b) => a.name.localeCompare(b.name));
|
|
1000
1088
|
const availableModels = ctx.modelRegistry.getAvailable().map(toModelInfo);
|
|
1001
1089
|
const currentModel = ctx.model ? { provider: ctx.model.provider, id: ctx.model.id } : undefined;
|
|
1002
1090
|
const preferredProvider = ctx.model?.provider;
|
|
1003
|
-
const
|
|
1091
|
+
const capabilityCeiling = resolveCurrentSubagentCapabilityCeiling(ctx.currentSessionId);
|
|
1092
|
+
let selectedAgents = effectiveAgents;
|
|
1004
1093
|
if (requestedAgent) {
|
|
1005
|
-
const
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
const
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
`
|
|
1016
|
-
];
|
|
1017
|
-
if (agent.override) {
|
|
1018
|
-
lines.push("Override file:");
|
|
1019
|
-
lines.push(` ${agent.override.path}`);
|
|
1020
|
-
}
|
|
1021
|
-
if (agent.model && resolvedModel && agent.model !== resolvedModel) {
|
|
1022
|
-
lines.push("Requested model setting:");
|
|
1023
|
-
lines.push(` ${agent.model}`);
|
|
1094
|
+
const matches = findAgentsInDiscovery(requestedAgent, discovered, scope, ctx.runtimeAgentOwner, ctx.model?.provider);
|
|
1095
|
+
const diagnostics = diagnosticsForScope(discovered.agentDiagnostics, scope);
|
|
1096
|
+
const normalizedName = sanitizeName(requestedAgent);
|
|
1097
|
+
const diagnostic = findBlockingAgentDiagnostic(requestedAgent, matches, diagnostics) ?? (normalizedName !== requestedAgent ? findBlockingAgentDiagnostic(normalizedName, matches, diagnostics) : undefined);
|
|
1098
|
+
if (diagnostic)
|
|
1099
|
+
return result(`Agent '${params.agent}' has invalid configuration: ${diagnostic.error}`, true);
|
|
1100
|
+
const distinctNames = [...new Set(matches.map((agent) => agent.name))];
|
|
1101
|
+
if (distinctNames.length > 1)
|
|
1102
|
+
return result(`Ambiguous agent alias or name '${params.agent}': ${distinctNames.sort((a, b) => a.localeCompare(b)).join(", ")}`, true);
|
|
1103
|
+
if (!matches.length) {
|
|
1104
|
+
return result(`Agent '${params.agent}' not found. Available: ${availableAgentNamesFromDiscovery(discovered, ctx.runtimeAgentOwner, ctx.model?.provider).join(", ") || "none"}.`, true);
|
|
1024
1105
|
}
|
|
1025
|
-
|
|
1026
|
-
lines.push("Disabled: true");
|
|
1027
|
-
lines.push("Current session model:");
|
|
1028
|
-
lines.push(` ${currentModel ? `${currentModel.provider}/${currentModel.id}` : "(unavailable)"}`);
|
|
1029
|
-
return result(lines.join(`
|
|
1030
|
-
`));
|
|
1106
|
+
selectedAgents = [matches[0]];
|
|
1031
1107
|
}
|
|
1032
1108
|
const lines = [
|
|
1033
|
-
"
|
|
1109
|
+
requestedAgent ? "Subagent model" : "Subagent models",
|
|
1034
1110
|
"",
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1111
|
+
...requestedAgent ? [] : [
|
|
1112
|
+
"Current session model:",
|
|
1113
|
+
` ${currentModel ? `${currentModel.provider}/${currentModel.id}` : "(unavailable)"}`,
|
|
1114
|
+
""
|
|
1115
|
+
]
|
|
1038
1116
|
];
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
lines.push(
|
|
1046
|
-
lines.push("");
|
|
1047
|
-
|
|
1117
|
+
const modelEntries = selectedAgents.flatMap((agent) => requestedAgent ? [{ agent, name: requestedAgent }] : [{ agent, name: agent.name }, ...(agent.aliases ?? []).map((name) => ({ agent, name }))]);
|
|
1118
|
+
for (const { agent, name } of modelEntries) {
|
|
1119
|
+
const resolvedModel = resolveSubagentModelOverride(agent.model, currentModel, availableModels, agent.modelProvider ?? preferredProvider);
|
|
1120
|
+
const effectiveThinking = resolveEffectiveThinking(resolvedModel, agent.thinking) ?? (agent.thinking === false ? "off" : undefined);
|
|
1121
|
+
const source = `${formatModelSource(agent, currentModel)}${agent.disabled ? "; disabled" : ""}${isAgentAllowedByCapabilityCeiling(agent.name, capabilityCeiling) ? "" : "; restricted"}`;
|
|
1122
|
+
if (requestedAgent) {
|
|
1123
|
+
lines.push(`Agent: ${requestedAgent}`);
|
|
1124
|
+
lines.push("Effective model:");
|
|
1125
|
+
lines.push(` ${resolvedModel ?? "(unresolved)"}`);
|
|
1126
|
+
lines.push(`Source: ${source}`);
|
|
1127
|
+
lines.push(`Thinking: ${effectiveThinking ?? "default"}`);
|
|
1128
|
+
if (agent.override) {
|
|
1129
|
+
lines.push("Override file:");
|
|
1130
|
+
lines.push(` ${agent.override.path}`);
|
|
1131
|
+
}
|
|
1132
|
+
if (agent.model && resolvedModel && agent.model !== resolvedModel) {
|
|
1133
|
+
lines.push("Requested model setting:");
|
|
1134
|
+
lines.push(` ${agent.model}`);
|
|
1135
|
+
}
|
|
1136
|
+
if (agent.disabled)
|
|
1137
|
+
lines.push("Disabled: true");
|
|
1138
|
+
if (!isAgentAllowedByCapabilityCeiling(agent.name, capabilityCeiling))
|
|
1139
|
+
lines.push("Restricted: true");
|
|
1140
|
+
lines.push("Current session model:");
|
|
1141
|
+
lines.push(` ${currentModel ? `${currentModel.provider}/${currentModel.id}` : "(unavailable)"}`);
|
|
1142
|
+
break;
|
|
1048
1143
|
}
|
|
1049
|
-
const resolvedModel = resolveSubagentModelOverride(agent.model, currentModel, availableModels, preferredProvider);
|
|
1050
|
-
const source = `${formatModelSource(agent, currentModel)}${agent.disabled ? "; disabled" : ""}`;
|
|
1051
1144
|
lines.push(name);
|
|
1052
1145
|
lines.push(" model:");
|
|
1053
1146
|
lines.push(` ${resolvedModel ?? "(unresolved)"}`);
|
|
1054
1147
|
lines.push(` source: ${source}`);
|
|
1148
|
+
lines.push(` thinking: ${effectiveThinking ?? "default"}`);
|
|
1149
|
+
if (agent.override) {
|
|
1150
|
+
lines.push(" override file:");
|
|
1151
|
+
lines.push(` ${agent.override.path}`);
|
|
1152
|
+
}
|
|
1153
|
+
if (agent.model && resolvedModel && agent.model !== resolvedModel) {
|
|
1154
|
+
lines.push(" requested model setting:");
|
|
1155
|
+
lines.push(` ${agent.model}`);
|
|
1156
|
+
}
|
|
1055
1157
|
lines.push("");
|
|
1056
1158
|
}
|
|
1057
1159
|
const availableFullIds = availableModels.map((m) => m.fullId).sort();
|
|
1058
|
-
if (availableFullIds.length > 0) {
|
|
1160
|
+
if (!requestedAgent && availableFullIds.length > 0) {
|
|
1059
1161
|
lines.push("Available models in this session's registry (copy an exact provider/id when passing model):");
|
|
1060
1162
|
lines.push("");
|
|
1061
1163
|
const shown = availableFullIds.slice(0, 80);
|
|
@@ -1066,6 +1168,8 @@ function handleModels(params, ctx) {
|
|
|
1066
1168
|
lines.push("");
|
|
1067
1169
|
lines.push("Use an exact provider/id from this list when you pass model; bare ids resolve only when unique in the registry.");
|
|
1068
1170
|
}
|
|
1171
|
+
if (!requestedAgent)
|
|
1172
|
+
appendAgentDiagnosticLines(lines, diagnosticsForScope(discovered.agentDiagnostics, scope));
|
|
1069
1173
|
return result(lines.join(`
|
|
1070
1174
|
`));
|
|
1071
1175
|
}
|
|
@@ -1075,7 +1179,7 @@ function handleGet(params, ctx) {
|
|
|
1075
1179
|
const scope = normalizeListScope(params.agentScope);
|
|
1076
1180
|
if (!scope)
|
|
1077
1181
|
return result("agentScope must be 'user', 'project', or 'both' for get.", true);
|
|
1078
|
-
const discovered =
|
|
1182
|
+
const discovered = discoverCatalog(ctx, ctx.cwd, ctx.model?.provider);
|
|
1079
1183
|
const matches = findAgentsInDiscovery(params.agent, discovered, scope);
|
|
1080
1184
|
const diagnostics = diagnosticsForScope(discovered.agentDiagnostics, scope);
|
|
1081
1185
|
const rawName = params.agent.trim();
|
|
@@ -1117,11 +1221,11 @@ export function handleCreate(params, ctx) {
|
|
|
1117
1221
|
const scope = scopeRaw;
|
|
1118
1222
|
if (hasKey(cfg, "steps"))
|
|
1119
1223
|
return result("Durable chain definitions were removed; use workflowScript or /prompt-workflow for repeatable workflows.", true);
|
|
1120
|
-
const d =
|
|
1224
|
+
const d = discoverCatalog(ctx);
|
|
1121
1225
|
const projectConfigDir = getProjectConfigDir(ctx.cwd);
|
|
1122
1226
|
const targetDir = scope === "user" ? d.userDir : d.projectDir ?? path.join(projectConfigDir, "agents");
|
|
1123
1227
|
fs.mkdirSync(targetDir, { recursive: true });
|
|
1124
|
-
if (nameExistsInScope(ctx
|
|
1228
|
+
if (nameExistsInScope(ctx, scope, runtimeName))
|
|
1125
1229
|
return result(`Name '${runtimeName}' already exists in ${scope} scope. Use update instead.`, true);
|
|
1126
1230
|
const targetPath = path.join(targetDir, `${runtimeName}.md`);
|
|
1127
1231
|
if (fs.existsSync(targetPath))
|
|
@@ -1151,13 +1255,11 @@ export function handleCreate(params, ctx) {
|
|
|
1151
1255
|
const mw = modelWarning(ctx, agent.model);
|
|
1152
1256
|
if (mw)
|
|
1153
1257
|
warnings.push(mw);
|
|
1154
|
-
const fmw = fallbackModelsWarning(ctx, agent.fallbackModels);
|
|
1155
|
-
if (fmw)
|
|
1156
|
-
warnings.push(fmw);
|
|
1157
1258
|
const sw = skillsWarning(ctx.cwd, agent);
|
|
1158
1259
|
if (sw)
|
|
1159
1260
|
warnings.push(sw);
|
|
1160
1261
|
fs.writeFileSync(targetPath, serializeAgent(agent), "utf-8");
|
|
1262
|
+
ctx.onAgentsChanged?.();
|
|
1161
1263
|
return result([`Created agent '${runtimeName}' at ${targetPath}.`, ...warnings].join(`
|
|
1162
1264
|
`));
|
|
1163
1265
|
}
|
|
@@ -1174,7 +1276,7 @@ export function handleUpdate(params, ctx) {
|
|
|
1174
1276
|
return result("Durable chain definitions were removed; use workflowScript or /prompt-workflow for repeatable workflows.", true);
|
|
1175
1277
|
const warnings = [];
|
|
1176
1278
|
const scopeHint = asDisambiguationScope(params.agentScope);
|
|
1177
|
-
const targetOrError = resolveTarget(params.agent, findAgents(params.agent, ctx
|
|
1279
|
+
const targetOrError = resolveTarget(params.agent, findAgents(params.agent, ctx, scopeHint ?? "both"), ctx.cwd, ctx, scopeHint);
|
|
1178
1280
|
if ("content" in targetOrError)
|
|
1179
1281
|
return targetOrError;
|
|
1180
1282
|
const target = targetOrError;
|
|
@@ -1225,23 +1327,19 @@ export function handleUpdate(params, ctx) {
|
|
|
1225
1327
|
if (mw)
|
|
1226
1328
|
warnings.push(mw);
|
|
1227
1329
|
}
|
|
1228
|
-
if (hasKey(cfg, "fallbackModels")) {
|
|
1229
|
-
const fmw = fallbackModelsWarning(ctx, updated.fallbackModels);
|
|
1230
|
-
if (fmw)
|
|
1231
|
-
warnings.push(fmw);
|
|
1232
|
-
}
|
|
1233
1330
|
if (hasKey(cfg, "skills") || hasKey(cfg, "skillPath")) {
|
|
1234
1331
|
const sw = skillsWarning(ctx.cwd, updated);
|
|
1235
1332
|
if (sw)
|
|
1236
1333
|
warnings.push(sw);
|
|
1237
1334
|
}
|
|
1238
1335
|
if (updated.name !== oldName) {
|
|
1239
|
-
const renamed = renamePath(target.filePath, updated.name, target.source, ctx
|
|
1336
|
+
const renamed = renamePath(target.filePath, updated.name, target.source, ctx);
|
|
1240
1337
|
if (renamed.error)
|
|
1241
1338
|
return result(renamed.error, true);
|
|
1242
1339
|
updated.filePath = renamed.filePath;
|
|
1243
1340
|
}
|
|
1244
1341
|
fs.writeFileSync(updated.filePath, serializeAgent(updated, { preserveFrontmatterFields }), "utf-8");
|
|
1342
|
+
ctx.onAgentsChanged?.();
|
|
1245
1343
|
const headline = updated.name === oldName ? `Updated agent '${updated.name}' at ${updated.filePath}.` : `Updated agent '${oldName}' to '${updated.name}' at ${updated.filePath}.`;
|
|
1246
1344
|
return result([headline, ...warnings].join(`
|
|
1247
1345
|
`));
|
|
@@ -1250,11 +1348,12 @@ function handleDelete(params, ctx) {
|
|
|
1250
1348
|
if (!params.agent)
|
|
1251
1349
|
return result("Specify 'agent' for delete.", true);
|
|
1252
1350
|
const scopeHint = asDisambiguationScope(params.agentScope);
|
|
1253
|
-
const targetOrError = resolveTarget(params.agent, findAgents(params.agent, ctx
|
|
1351
|
+
const targetOrError = resolveTarget(params.agent, findAgents(params.agent, ctx, scopeHint ?? "both"), ctx.cwd, ctx, scopeHint);
|
|
1254
1352
|
if ("content" in targetOrError)
|
|
1255
1353
|
return targetOrError;
|
|
1256
1354
|
const target = targetOrError;
|
|
1257
1355
|
fs.unlinkSync(target.filePath);
|
|
1356
|
+
ctx.onAgentsChanged?.();
|
|
1258
1357
|
return result(`Deleted agent '${target.name}' at ${target.filePath}.`);
|
|
1259
1358
|
}
|
|
1260
1359
|
function handleEject(params, ctx) {
|
|
@@ -1266,17 +1365,17 @@ function handleEject(params, ctx) {
|
|
|
1266
1365
|
if (parsedScope.error)
|
|
1267
1366
|
return parsedScope.error;
|
|
1268
1367
|
const scope = parsedScope.scope;
|
|
1269
|
-
const d =
|
|
1368
|
+
const d = discoverCatalog(ctx);
|
|
1270
1369
|
const source = [...d.package, ...d.builtin].find((a) => a.name === raw || a.name === sanitized);
|
|
1271
1370
|
if (!source) {
|
|
1272
|
-
return result(`Agent '${raw}' not found or is not a bundled/package agent. eject copies a builtin or package agent to ${scope} scope so it can be customized. Available: ${availableAgentNames(ctx
|
|
1371
|
+
return result(`Agent '${raw}' not found or is not a bundled/package agent. eject copies a builtin or package agent to ${scope} scope so it can be customized. Available: ${availableAgentNames(ctx).join(", ") || "none"}.`, true);
|
|
1273
1372
|
}
|
|
1274
1373
|
const runtimeName = source.name;
|
|
1275
1374
|
const existingCustom = (scope === "user" ? d.user : d.project).find((a) => a.name === runtimeName);
|
|
1276
1375
|
if (existingCustom) {
|
|
1277
1376
|
return result(`Agent '${runtimeName}' is already a custom ${scope} agent at ${existingCustom.filePath}. Edit it with { action: "update", agent: "${runtimeName}" } or delete it first.`, true);
|
|
1278
1377
|
}
|
|
1279
|
-
if (nameExistsInScope(ctx
|
|
1378
|
+
if (nameExistsInScope(ctx, scope, runtimeName)) {
|
|
1280
1379
|
return result(`An agent named '${runtimeName}' already exists in ${scope} scope. Remove or rename it first.`, true);
|
|
1281
1380
|
}
|
|
1282
1381
|
const projectConfigDir = getProjectConfigDir(ctx.cwd);
|
|
@@ -1294,6 +1393,7 @@ function handleEject(params, ctx) {
|
|
|
1294
1393
|
return result(`Failed to read source agent at ${source.filePath}: ${message}`, true);
|
|
1295
1394
|
}
|
|
1296
1395
|
fs.writeFileSync(targetPath, content, "utf-8");
|
|
1396
|
+
ctx.onAgentsChanged?.();
|
|
1297
1397
|
return result(`Ejected agent '${runtimeName}' from ${source.source} to ${scope} scope at ${targetPath}. Edit it there to customize; it shadows the bundled ${source.source} agent of the same name.`);
|
|
1298
1398
|
}
|
|
1299
1399
|
function handleDisable(params, ctx) {
|
|
@@ -1304,7 +1404,7 @@ function handleDisable(params, ctx) {
|
|
|
1304
1404
|
if (parsedScope.error)
|
|
1305
1405
|
return parsedScope.error;
|
|
1306
1406
|
const scope = parsedScope.scope;
|
|
1307
|
-
const d =
|
|
1407
|
+
const d = discoverCatalog(ctx);
|
|
1308
1408
|
if (scope === "project" && d.projectSettingsPath === null) {
|
|
1309
1409
|
return result("Project override is not available here: no project config root (.dm or .agents) was found above the cwd. Use agentScope: 'user' or run from inside a project.", true);
|
|
1310
1410
|
}
|
|
@@ -1312,12 +1412,13 @@ function handleDisable(params, ctx) {
|
|
|
1312
1412
|
if (effective.error)
|
|
1313
1413
|
return result(effective.error, true);
|
|
1314
1414
|
if (!effective.agent) {
|
|
1315
|
-
return result(`Agent '${raw}' not found. Available: ${availableAgentNames(ctx
|
|
1415
|
+
return result(`Agent '${raw}' not found. Available: ${availableAgentNames(ctx).join(", ") || "none"}.`, true);
|
|
1316
1416
|
}
|
|
1317
1417
|
const runtimeName = effective.agent.name;
|
|
1318
1418
|
const settingsPath = mergeBuiltinAgentOverride(ctx.cwd, runtimeName, scope, { disabled: true });
|
|
1319
|
-
const after = resolveEffectiveAgent(
|
|
1419
|
+
const after = resolveEffectiveAgent(discoverCatalog(ctx), raw).agent;
|
|
1320
1420
|
if (after?.disabled === true) {
|
|
1421
|
+
ctx.onAgentsChanged?.();
|
|
1321
1422
|
return result(`Disabled agent '${runtimeName}' via ${scope} settings override at ${settingsPath}. It is now hidden from runtime discovery and { action: "list" }.`);
|
|
1322
1423
|
}
|
|
1323
1424
|
return result(`Wrote a disabled override for '${runtimeName}' at ${settingsPath}, but the agent is still enabled. A higher-precedence ${after?.override?.scope ?? "project"} override is likely winning. Try agentScope: '${after?.override?.scope ?? "project"}'.`, true);
|
|
@@ -1330,7 +1431,7 @@ function handleEnable(params, ctx) {
|
|
|
1330
1431
|
if (parsedScope.error)
|
|
1331
1432
|
return parsedScope.error;
|
|
1332
1433
|
const scope = parsedScope.scope;
|
|
1333
|
-
const d =
|
|
1434
|
+
const d = discoverCatalog(ctx);
|
|
1334
1435
|
if (scope === "project" && d.projectSettingsPath === null) {
|
|
1335
1436
|
return result("Project override is not available here: no project config root (.dm or .agents) was found above the cwd. Use agentScope: 'user' or run from inside a project.", true);
|
|
1336
1437
|
}
|
|
@@ -1338,12 +1439,14 @@ function handleEnable(params, ctx) {
|
|
|
1338
1439
|
if (effective.error)
|
|
1339
1440
|
return result(effective.error, true);
|
|
1340
1441
|
if (!effective.agent) {
|
|
1341
|
-
return result(`Agent '${raw}' not found. Available: ${availableAgentNames(ctx
|
|
1442
|
+
return result(`Agent '${raw}' not found. Available: ${availableAgentNames(ctx).join(", ") || "none"}.`, true);
|
|
1342
1443
|
}
|
|
1343
1444
|
const runtimeName = effective.agent.name;
|
|
1344
1445
|
const { path: settingsPath, removed } = removeBuiltinAgentOverrideFields(ctx.cwd, runtimeName, scope, ["disabled"]);
|
|
1345
|
-
const after = resolveEffectiveAgent(
|
|
1446
|
+
const after = resolveEffectiveAgent(discoverCatalog(ctx), raw).agent;
|
|
1346
1447
|
if (after && after.disabled !== true) {
|
|
1448
|
+
if (removed)
|
|
1449
|
+
ctx.onAgentsChanged?.();
|
|
1347
1450
|
if (removed)
|
|
1348
1451
|
return result(`Enabled agent '${runtimeName}' (removed disabled override at ${settingsPath}).`);
|
|
1349
1452
|
return result(`Agent '${runtimeName}' is already enabled.`);
|
|
@@ -1362,7 +1465,7 @@ function handleReset(params, ctx) {
|
|
|
1362
1465
|
if (parsedScope.error)
|
|
1363
1466
|
return parsedScope.error;
|
|
1364
1467
|
const scope = parsedScope.scope;
|
|
1365
|
-
const d =
|
|
1468
|
+
const d = discoverCatalog(ctx);
|
|
1366
1469
|
if (scope === "project" && d.projectSettingsPath === null) {
|
|
1367
1470
|
return result("Project override is not available here: no project config root (.dm or .agents) was found above the cwd. Use agentScope: 'user' or run from inside a project.", true);
|
|
1368
1471
|
}
|
|
@@ -1372,7 +1475,7 @@ function handleReset(params, ctx) {
|
|
|
1372
1475
|
if (custom) {
|
|
1373
1476
|
return result(`Agent '${raw}' has no bundled default to reset to. Use { action: "delete", agent: "${custom.name}" } to remove the custom ${custom.source} agent.`, true);
|
|
1374
1477
|
}
|
|
1375
|
-
return result(`Agent '${raw}' not found. Available: ${availableAgentNames(ctx
|
|
1478
|
+
return result(`Agent '${raw}' not found. Available: ${availableAgentNames(ctx).join(", ") || "none"}.`, true);
|
|
1376
1479
|
}
|
|
1377
1480
|
const runtimeName = bundled.name;
|
|
1378
1481
|
const custom = (scope === "user" ? d.user : d.project).find((a) => a.name === raw || a.name === sanitized);
|
|
@@ -1381,9 +1484,9 @@ function handleReset(params, ctx) {
|
|
|
1381
1484
|
fs.unlinkSync(custom.filePath);
|
|
1382
1485
|
lines.push(`Deleted custom ${scope} agent file at ${custom.filePath}.`);
|
|
1383
1486
|
}
|
|
1384
|
-
const overrideRemoval = removeBuiltinAgentOverride(ctx.cwd, runtimeName, scope);
|
|
1487
|
+
const overrideRemoval = removeBuiltinAgentOverride(ctx.cwd, runtimeName, scope, { preserveMachine: true });
|
|
1385
1488
|
if (overrideRemoval.removed)
|
|
1386
|
-
lines.push(
|
|
1489
|
+
lines.push(`${overrideRemoval.machinePreserved ? "Cleared customization in" : "Removed"} ${scope} settings override at ${overrideRemoval.path}.${overrideRemoval.machinePreserved ? " Retained machine placement." : ""}`);
|
|
1387
1490
|
if (lines.length === 0) {
|
|
1388
1491
|
const otherScope = scope === "user" ? "project" : "user";
|
|
1389
1492
|
const otherCustom = (otherScope === "user" ? d.user : d.project).find((a) => a.name === raw || a.name === sanitized);
|
|
@@ -1392,6 +1495,7 @@ function handleReset(params, ctx) {
|
|
|
1392
1495
|
return result(`Agent '${runtimeName}' has no ${scope} customization to reset.${note} It is at its bundled ${bundled.source} default.`);
|
|
1393
1496
|
}
|
|
1394
1497
|
lines.push(`Reset agent '${runtimeName}' to its bundled ${bundled.source} default.`);
|
|
1498
|
+
ctx.onAgentsChanged?.();
|
|
1395
1499
|
return result(lines.join(`
|
|
1396
1500
|
`));
|
|
1397
1501
|
}
|