@duckmind/dm-linux-x64 0.65.5 → 0.65.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -8
- package/dm +2 -2
- package/extensions/.dm-extensions.json +677 -44
- package/extensions/dm-lens/clients/actionable-warnings-logger.js +0 -6
- package/extensions/dm-lens/clients/actionable-warnings.js +42 -13
- package/extensions/dm-lens/clients/advisory-provenance.js +129 -41
- package/extensions/dm-lens/clients/agent-behavior-client.js +1 -0
- package/extensions/dm-lens/clients/analysed-root.js +0 -0
- package/extensions/dm-lens/clients/ast-grep-client.js +38 -3
- package/extensions/dm-lens/clients/ast-grep-rule-manager.js +37 -5
- package/extensions/dm-lens/clients/ast-grep-tool-logger.js +1 -7
- package/extensions/dm-lens/clients/bash-file-access.js +138 -1
- package/extensions/dm-lens/clients/biome-client.js +9 -2
- package/extensions/dm-lens/clients/blocker-freshness.js +171 -21
- package/extensions/dm-lens/clients/bootstrap.js +9 -5
- package/extensions/dm-lens/clients/bounded-pid-file-lock.js +1 -1
- package/extensions/dm-lens/clients/bounded-telemetry.js +1 -4
- package/extensions/dm-lens/clients/bundled-resource-health.js +43 -0
- package/extensions/dm-lens/clients/bus-events-logger.js +0 -6
- package/extensions/dm-lens/clients/cache/rule-cache.js +11 -3
- package/extensions/dm-lens/clients/cache-manager.js +29 -5
- package/extensions/dm-lens/clients/cache-observability.js +104 -4
- package/extensions/dm-lens/clients/cargo-manifest.js +6 -3
- package/extensions/dm-lens/clients/cascade-format.js +87 -5
- package/extensions/dm-lens/clients/cascade-logger.js +0 -6
- package/extensions/dm-lens/clients/child-unref.js +5 -9
- package/extensions/dm-lens/clients/code-quality-warnings.js +4 -2
- package/extensions/dm-lens/clients/complexity-client.js +5 -1
- package/extensions/dm-lens/clients/config-core/index.js +2 -68
- package/extensions/dm-lens/clients/config-core/process-spec.js +1 -1
- package/extensions/dm-lens/clients/config-core/provenance.js +1 -2
- package/extensions/dm-lens/clients/config-core/records.js +1 -1
- package/extensions/dm-lens/clients/config-core/schema.js +3 -6
- package/extensions/dm-lens/clients/config-diagnostic-codes.js +5 -3
- package/extensions/dm-lens/clients/config-locations.js +125 -5
- package/extensions/dm-lens/clients/config-resolve.js +12 -6
- package/extensions/dm-lens/clients/config-schema.js +56 -3
- package/extensions/dm-lens/clients/config-warn.js +3 -2
- package/extensions/dm-lens/clients/dead-code-client.js +4 -1
- package/extensions/dm-lens/clients/dead-code-logger.js +0 -3
- package/extensions/dm-lens/clients/degradation-ledger.js +29 -4
- package/extensions/dm-lens/clients/dependency-checker.js +29 -50
- package/extensions/dm-lens/clients/diagnostic-dispositions.js +23 -4
- package/extensions/dm-lens/clients/diagnostic-logger.js +1 -1
- package/extensions/dm-lens/clients/dispatch/ast-grep-catalog.js +19 -0
- package/extensions/dm-lens/clients/dispatch/auxiliary-lsp.js +9 -0
- package/extensions/dm-lens/clients/dispatch/collect-later-tier.js +0 -3
- package/extensions/dm-lens/clients/dispatch/dispatcher.js +30 -27
- package/extensions/dm-lens/clients/dispatch/facts/function-facts.js +1 -1
- package/extensions/dm-lens/clients/dispatch/facts/import-facts.js +4 -1
- package/extensions/dm-lens/clients/dispatch/finding-policy.js +163 -0
- package/extensions/dm-lens/clients/dispatch/indent-detect.js +213 -13
- package/extensions/dm-lens/clients/dispatch/inline-suppressions.js +20 -1
- package/extensions/dm-lens/clients/dispatch/integration.js +77 -13
- package/extensions/dm-lens/clients/dispatch/lazy.js +0 -3
- package/extensions/dm-lens/clients/dispatch/pending-runner-findings.js +1 -1
- package/extensions/dm-lens/clients/dispatch/plan.js +0 -3
- package/extensions/dm-lens/clients/dispatch/rule-ignores.js +21 -0
- package/extensions/dm-lens/clients/dispatch/rules/high-complexity.js +2 -2
- package/extensions/dm-lens/clients/dispatch/rules/high-fan-out.js +1 -1
- package/extensions/dm-lens/clients/dispatch/runners/actionlint.js +25 -29
- package/extensions/dm-lens/clients/dispatch/runners/ast-grep-napi.js +8 -32
- package/extensions/dm-lens/clients/dispatch/runners/biome-check.js +39 -23
- package/extensions/dm-lens/clients/dispatch/runners/cpp-check.js +29 -48
- package/extensions/dm-lens/clients/dispatch/runners/credo.js +17 -14
- package/extensions/dm-lens/clients/dispatch/runners/cue-vet.js +9 -7
- package/extensions/dm-lens/clients/dispatch/runners/dart-analyze.js +21 -43
- package/extensions/dm-lens/clients/dispatch/runners/detekt.js +11 -5
- package/extensions/dm-lens/clients/dispatch/runners/dotnet-build.js +27 -23
- package/extensions/dm-lens/clients/dispatch/runners/elixir-check.js +23 -38
- package/extensions/dm-lens/clients/dispatch/runners/eslint.js +22 -35
- package/extensions/dm-lens/clients/dispatch/runners/fish-indent.js +2 -1
- package/extensions/dm-lens/clients/dispatch/runners/gleam-check.js +35 -12
- package/extensions/dm-lens/clients/dispatch/runners/go-vet.js +5 -3
- package/extensions/dm-lens/clients/dispatch/runners/golangci-lint.js +21 -22
- package/extensions/dm-lens/clients/dispatch/runners/hadolint.js +26 -16
- package/extensions/dm-lens/clients/dispatch/runners/helm-lint.js +3 -1
- package/extensions/dm-lens/clients/dispatch/runners/helm-render.js +3 -2
- package/extensions/dm-lens/clients/dispatch/runners/htmlhint.js +18 -9
- package/extensions/dm-lens/clients/dispatch/runners/javac.js +24 -23
- package/extensions/dm-lens/clients/dispatch/runners/ktlint.js +23 -54
- package/extensions/dm-lens/clients/dispatch/runners/lsp.js +17 -7
- package/extensions/dm-lens/clients/dispatch/runners/markdownlint.js +12 -6
- package/extensions/dm-lens/clients/dispatch/runners/mypy.js +2 -1
- package/extensions/dm-lens/clients/dispatch/runners/oxlint.js +24 -7
- package/extensions/dm-lens/clients/dispatch/runners/php-lint.js +26 -17
- package/extensions/dm-lens/clients/dispatch/runners/phpstan.js +2 -1
- package/extensions/dm-lens/clients/dispatch/runners/prisma-validate.js +2 -1
- package/extensions/dm-lens/clients/dispatch/runners/psscriptanalyzer.js +10 -11
- package/extensions/dm-lens/clients/dispatch/runners/pyright.js +2 -1
- package/extensions/dm-lens/clients/dispatch/runners/rubocop.js +22 -18
- package/extensions/dm-lens/clients/dispatch/runners/ruff.js +17 -22
- package/extensions/dm-lens/clients/dispatch/runners/rust-clippy.js +8 -11
- package/extensions/dm-lens/clients/dispatch/runners/shellcheck.js +9 -4
- package/extensions/dm-lens/clients/dispatch/runners/shfmt.js +4 -13
- package/extensions/dm-lens/clients/dispatch/runners/spellcheck.js +15 -5
- package/extensions/dm-lens/clients/dispatch/runners/spotbugs.js +2 -1
- package/extensions/dm-lens/clients/dispatch/runners/sqlfluff.js +10 -4
- package/extensions/dm-lens/clients/dispatch/runners/stylelint.js +9 -4
- package/extensions/dm-lens/clients/dispatch/runners/swiftlint.js +11 -3
- package/extensions/dm-lens/clients/dispatch/runners/taplo.js +13 -7
- package/extensions/dm-lens/clients/dispatch/runners/terragrunt.js +2 -1
- package/extensions/dm-lens/clients/dispatch/runners/tflint.js +26 -16
- package/extensions/dm-lens/clients/dispatch/runners/tree-sitter.js +12 -13
- package/extensions/dm-lens/clients/dispatch/runners/trivy-config.js +9 -3
- package/extensions/dm-lens/clients/dispatch/runners/utils/availability-policy.js +5 -0
- package/extensions/dm-lens/clients/dispatch/runners/utils/candidate-probe.js +2 -2
- package/extensions/dm-lens/clients/dispatch/runners/utils/diagnostic-parsers.js +8 -52
- package/extensions/dm-lens/clients/dispatch/runners/utils/runner-helpers.js +35 -3
- package/extensions/dm-lens/clients/dispatch/runners/utils.js +0 -17
- package/extensions/dm-lens/clients/dispatch/runners/vale.js +12 -4
- package/extensions/dm-lens/clients/dispatch/runners/yaml-rule-parser.js +2 -20
- package/extensions/dm-lens/clients/dispatch/runners/yamllint.js +16 -4
- package/extensions/dm-lens/clients/dispatch/runners/zig-check.js +26 -38
- package/extensions/dm-lens/clients/dispatch/suppress-writer.js +13 -3
- package/extensions/dm-lens/clients/dispatch/types.js +4 -1
- package/extensions/dm-lens/clients/dispatch/utils/format-utils.js +2 -2
- package/extensions/dm-lens/clients/disposition-logger.js +0 -6
- package/extensions/dm-lens/clients/disposition-publish.js +2 -1
- package/extensions/dm-lens/clients/effective-config.js +14 -4
- package/extensions/dm-lens/clients/event-loop-hold.js +123 -0
- package/extensions/dm-lens/clients/event-loop-monitor.js +2 -2
- package/extensions/dm-lens/clients/extension-log.js +6 -1
- package/extensions/dm-lens/clients/feature-hints.js +2 -1
- package/extensions/dm-lens/clients/file-kinds.js +17 -21
- package/extensions/dm-lens/clients/file-role.js +11 -2
- package/extensions/dm-lens/clients/file-time.js +1 -1
- package/extensions/dm-lens/clients/file-utils.js +93 -6
- package/extensions/dm-lens/clients/finding-delivery-gate.js +22 -26
- package/extensions/dm-lens/clients/format-service.js +33 -16
- package/extensions/dm-lens/clients/formatters.js +129 -92
- package/extensions/dm-lens/clients/generated-artifacts.js +2 -2
- package/extensions/dm-lens/clients/generation-guard.js +4 -0
- package/extensions/dm-lens/clients/git-guard.js +80 -26
- package/extensions/dm-lens/clients/gitleaks-client.js +26 -0
- package/extensions/dm-lens/clients/govulncheck-client.js +34 -6
- package/extensions/dm-lens/clients/gradle-ktfmt-style.js +96 -13
- package/extensions/dm-lens/clients/grammar-source.js +3 -3
- package/extensions/dm-lens/clients/host-edit-normalize.js +1 -1
- package/extensions/dm-lens/clients/indent-retarget.js +35 -5
- package/extensions/dm-lens/clients/inline-blocker-dispositions.js +107 -0
- package/extensions/dm-lens/clients/install-diagnostics.js +8 -6
- package/extensions/dm-lens/clients/installer/index.js +695 -183
- package/extensions/dm-lens/clients/installer/managed-tool-refresh.js +85 -25
- package/extensions/dm-lens/clients/instance-reaper-state.js +3 -0
- package/extensions/dm-lens/clients/instance-reaper.js +23 -16
- package/extensions/dm-lens/clients/instance-registry.js +34 -2
- package/extensions/dm-lens/clients/jscpd-client.js +11 -1
- package/extensions/dm-lens/clients/knip-client.js +2 -1
- package/extensions/dm-lens/clients/language-profile.js +18 -12
- package/extensions/dm-lens/clients/language-registry.js +3 -1
- package/extensions/dm-lens/clients/latency-logger.js +14 -4
- package/extensions/dm-lens/clients/ledger-bounds.js +13 -1
- package/extensions/dm-lens/clients/lens-config.js +74 -7
- package/extensions/dm-lens/clients/lens-engine.js +9 -10
- package/extensions/dm-lens/clients/lens-events.js +1 -1
- package/extensions/dm-lens/clients/lens-flag-registry.js +47 -2
- package/extensions/dm-lens/clients/lens-map.js +1 -1
- package/extensions/dm-lens/clients/log-cleanup.js +0 -28
- package/extensions/dm-lens/clients/lsp/cascade-tier.js +2 -1
- package/extensions/dm-lens/clients/lsp/client.js +70 -30
- package/extensions/dm-lens/clients/lsp/config.js +41 -15
- package/extensions/dm-lens/clients/lsp/content-limits.js +21 -0
- package/extensions/dm-lens/clients/lsp/diagnostic-binding.js +8 -0
- package/extensions/dm-lens/clients/lsp/document-drift.js +72 -1
- package/extensions/dm-lens/clients/lsp/edits.js +3 -3
- package/extensions/dm-lens/clients/lsp/index.js +435 -62
- package/extensions/dm-lens/clients/lsp/inferred-project.js +1 -1
- package/extensions/dm-lens/clients/lsp/language.js +0 -3
- package/extensions/dm-lens/clients/lsp/launch.js +12 -5
- package/extensions/dm-lens/clients/lsp/path-utils.js +0 -2
- package/extensions/dm-lens/clients/lsp/pending-aux-coverage.js +0 -1
- package/extensions/dm-lens/clients/lsp/server.js +125 -60
- package/extensions/dm-lens/clients/lsp/session-roots.js +26 -5
- package/extensions/dm-lens/clients/lsp/sync-kind.js +14 -1
- package/extensions/dm-lens/clients/lsp/tsserver-sync.js +5 -7
- package/extensions/dm-lens/clients/lsp/wait-policy/classification.js +3 -0
- package/extensions/dm-lens/clients/lsp/wait-policy/strategies.js +31 -2
- package/extensions/dm-lens/clients/lsp/workspace-diagnostics-cache.js +26 -4
- package/extensions/dm-lens/clients/lsp-document-symbols.js +1 -1
- package/extensions/dm-lens/clients/map-with-concurrency.js +7 -3
- package/extensions/dm-lens/clients/mcp/analyze.js +1 -1
- package/extensions/dm-lens/clients/mcp/ipc.js +104 -40
- package/extensions/dm-lens/clients/mcp/review.js +39 -7
- package/extensions/dm-lens/clients/mcp/session.js +38 -4
- package/extensions/dm-lens/clients/metrics-history.js +19 -84
- package/extensions/dm-lens/clients/middle-man-analysis.js +2 -4
- package/extensions/dm-lens/clients/module-report.js +1 -1
- package/extensions/dm-lens/clients/mutating-tool.js +3 -3
- package/extensions/dm-lens/clients/mutation-attribution.js +3 -3
- package/extensions/dm-lens/clients/ndjson-logger.js +17 -9
- package/extensions/dm-lens/clients/observed-mutation.js +42 -11
- package/extensions/dm-lens/clients/opaque-mutation-scan.js +17 -7
- package/extensions/dm-lens/clients/opengrep-client.js +92 -10
- package/extensions/dm-lens/clients/opengrep-config.js +1 -1
- package/extensions/dm-lens/clients/package-manager.js +2 -1
- package/extensions/dm-lens/clients/path-utils.js +199 -3
- package/extensions/dm-lens/clients/performance-report.js +3 -3
- package/extensions/dm-lens/clients/persistent-reverify.js +167 -0
- package/extensions/dm-lens/clients/php-cs-fixer-config.js +9 -4
- package/extensions/dm-lens/clients/pipeline.js +124 -68
- package/extensions/dm-lens/clients/project-changes.js +1 -1
- package/extensions/dm-lens/clients/project-diagnostics/cache.js +19 -5
- package/extensions/dm-lens/clients/project-diagnostics/extractors.js +1 -1
- package/extensions/dm-lens/clients/project-diagnostics/fresh-fetch.js +150 -18
- package/extensions/dm-lens/clients/project-diagnostics/runner-adapters/dead-code.js +4 -1
- package/extensions/dm-lens/clients/project-diagnostics/runner-adapters/gitleaks.js +3 -3
- package/extensions/dm-lens/clients/project-diagnostics/runner-adapters/jscpd.js +1 -1
- package/extensions/dm-lens/clients/project-diagnostics/runner-adapters/knip.js +1 -1
- package/extensions/dm-lens/clients/project-diagnostics/runner-adapters/madge.js +1 -1
- package/extensions/dm-lens/clients/project-diagnostics/runner-adapters/opengrep.js +1 -1
- package/extensions/dm-lens/clients/project-diagnostics/runner-adapters/runner-findings.js +19 -2
- package/extensions/dm-lens/clients/project-diagnostics/scanner.js +35 -4
- package/extensions/dm-lens/clients/project-lens-config.js +58 -4
- package/extensions/dm-lens/clients/project-scan-policy.js +0 -46
- package/extensions/dm-lens/clients/python-environment.js +80 -4
- package/extensions/dm-lens/clients/python-provenance.js +551 -0
- package/extensions/dm-lens/clients/read-guard-logger.js +3 -1
- package/extensions/dm-lens/clients/read-guard.js +29 -6
- package/extensions/dm-lens/clients/recent-touches.js +2 -2
- package/extensions/dm-lens/clients/resource-sampler.js +59 -9
- package/extensions/dm-lens/clients/review-graph/builder.js +39 -34
- package/extensions/dm-lens/clients/review-graph/git-identity.js +11 -7
- package/extensions/dm-lens/clients/review-graph/import-resolvers.js +1 -1
- package/extensions/dm-lens/clients/review-graph-logger.js +3 -1
- package/extensions/dm-lens/clients/ruff-client.js +11 -10
- package/extensions/dm-lens/clients/runtime-agent-end.js +41 -5
- package/extensions/dm-lens/clients/runtime-context.js +5 -2
- package/extensions/dm-lens/clients/runtime-coordinator.js +60 -6
- package/extensions/dm-lens/clients/runtime-session.js +52 -8
- package/extensions/dm-lens/clients/runtime-tool-call.js +27 -15
- package/extensions/dm-lens/clients/runtime-tool-result.js +279 -63
- package/extensions/dm-lens/clients/runtime-turn.js +453 -185
- package/extensions/dm-lens/clients/safe-spawn.js +248 -62
- package/extensions/dm-lens/clients/sanitize.js +0 -4
- package/extensions/dm-lens/clients/scan-utils.js +1 -39
- package/extensions/dm-lens/clients/scratch-tree-policy.js +2 -3
- package/extensions/dm-lens/clients/security-scan-client.js +2 -2
- package/extensions/dm-lens/clients/session-event-guard.js +59 -2
- package/extensions/dm-lens/clients/session-summary.js +0 -25
- package/extensions/dm-lens/clients/sg-runner.js +24 -12
- package/extensions/dm-lens/clients/sgconfig.js +58 -6
- package/extensions/dm-lens/clients/shared-checkout-guard.js +1 -1
- package/extensions/dm-lens/clients/situational-tool-telemetry.js +85 -0
- package/extensions/dm-lens/clients/skills-resolver.js +42 -0
- package/extensions/dm-lens/clients/smells-rollup.js +2 -2
- package/extensions/dm-lens/clients/spawn-output-cap.js +29 -0
- package/extensions/dm-lens/clients/startup-scan.js +1 -2
- package/extensions/dm-lens/clients/string-utils.js +3 -0
- package/extensions/dm-lens/clients/test-runner-client.js +118 -57
- package/extensions/dm-lens/clients/test-runner-delivery.js +118 -66
- package/extensions/dm-lens/clients/tool-agreement.js +403 -0
- package/extensions/dm-lens/clients/tool-config.js +218 -0
- package/extensions/dm-lens/clients/tool-cwd.js +248 -0
- package/extensions/dm-lens/clients/tool-definition.js +18 -1
- package/extensions/dm-lens/clients/tool-policy.js +138 -10
- package/extensions/dm-lens/clients/tool-probe.js +5 -0
- package/extensions/dm-lens/clients/tool-set-policy.js +35 -0
- package/extensions/dm-lens/clients/tree-sitter-client.js +201 -80
- package/extensions/dm-lens/clients/tree-sitter-query-loader.js +78 -130
- package/extensions/dm-lens/clients/trivy-client.js +8 -1
- package/extensions/dm-lens/clients/tui-fit.js +0 -3
- package/extensions/dm-lens/clients/turn-context.js +48 -0
- package/extensions/dm-lens/clients/turn-end/lane.js +0 -0
- package/extensions/dm-lens/clients/turn-end/lanes/govulncheck.js +54 -0
- package/extensions/dm-lens/clients/turn-end/lanes/secrets.js +140 -0
- package/extensions/dm-lens/clients/user-notify.js +0 -3
- package/extensions/dm-lens/clients/warm-attach.js +25 -0
- package/extensions/dm-lens/clients/widget-state.js +203 -13
- package/extensions/dm-lens/clients/word-index-logger.js +0 -6
- package/extensions/dm-lens/clients/word-index-store.js +1 -4
- package/extensions/dm-lens/clients/word-index.js +9 -5
- package/extensions/dm-lens/clients/workspace-topology.js +20 -3
- package/extensions/dm-lens/clients/write-ordering-guard.js +6 -0
- package/extensions/dm-lens/clients/zizmor-config.js +15 -11
- package/extensions/dm-lens/config/dependency-cruiser-eager-allowlist.json +8 -2
- package/extensions/dm-lens/dist/clients/actionable-warnings-logger.js +24 -0
- package/extensions/dm-lens/dist/clients/actionable-warnings.js +1014 -0
- package/extensions/dm-lens/dist/clients/advisory-provenance.js +385 -0
- package/extensions/dm-lens/dist/clients/agent-behavior-client.js +94 -0
- package/extensions/dm-lens/dist/clients/agent-nudge.js +151 -0
- package/extensions/dm-lens/dist/clients/analysed-root.js +1 -0
- package/extensions/dm-lens/dist/clients/ast-grep-client.js +576 -0
- package/extensions/dm-lens/dist/clients/ast-grep-rule-manager.js +114 -0
- package/extensions/dm-lens/dist/clients/ast-grep-tool-logger.js +85 -0
- package/extensions/dm-lens/dist/clients/ast-grep-types.js +1 -0
- package/extensions/dm-lens/dist/clients/ast-grep-yaml-synth.js +109 -0
- package/extensions/dm-lens/dist/clients/atomic-write-staging.js +66 -0
- package/extensions/dm-lens/dist/clients/atomic-write.js +37 -0
- package/extensions/dm-lens/dist/clients/availability-probe-flight.js +11 -0
- package/extensions/dm-lens/dist/clients/bash-file-access.js +830 -0
- package/extensions/dm-lens/dist/clients/biome-client.js +221 -0
- package/extensions/dm-lens/dist/clients/blocker-freshness.js +385 -0
- package/extensions/dm-lens/dist/clients/blocker-past-eof.js +49 -0
- package/extensions/dm-lens/dist/clients/bootstrap.js +246 -0
- package/extensions/dm-lens/dist/clients/bounded-cache.js +105 -0
- package/extensions/dm-lens/dist/clients/bounded-pid-file-lock.js +173 -0
- package/extensions/dm-lens/dist/clients/bounded-telemetry.js +104 -0
- package/extensions/dm-lens/dist/clients/build-identity.js +45 -0
- package/extensions/dm-lens/dist/clients/bundled-resource-health.js +41 -0
- package/extensions/dm-lens/dist/clients/bus-events-logger.js +48 -0
- package/extensions/dm-lens/dist/clients/bus-publish.js +117 -0
- package/extensions/dm-lens/dist/clients/cache/rule-cache.js +103 -0
- package/extensions/dm-lens/dist/clients/cache-manager.js +340 -0
- package/extensions/dm-lens/dist/clients/cache-observability.js +847 -0
- package/extensions/dm-lens/dist/clients/call-graph.js +628 -0
- package/extensions/dm-lens/dist/clients/cargo-manifest.js +151 -0
- package/extensions/dm-lens/dist/clients/cascade-budget.js +52 -0
- package/extensions/dm-lens/dist/clients/cascade-format.js +160 -0
- package/extensions/dm-lens/dist/clients/cascade-logger.js +22 -0
- package/extensions/dm-lens/dist/clients/cascade-types.js +1 -0
- package/extensions/dm-lens/dist/clients/child-unref.js +59 -0
- package/extensions/dm-lens/dist/clients/code-quality-warnings.js +192 -0
- package/extensions/dm-lens/dist/clients/codebase-model.js +110 -0
- package/extensions/dm-lens/dist/clients/collateral-test-role.js +8 -0
- package/extensions/dm-lens/dist/clients/complexity-client.js +398 -0
- package/extensions/dm-lens/dist/clients/config-core/deny.js +117 -0
- package/extensions/dm-lens/dist/clients/config-core/index.js +2 -0
- package/extensions/dm-lens/dist/clients/config-core/merge.js +228 -0
- package/extensions/dm-lens/dist/clients/config-core/normalize.js +217 -0
- package/extensions/dm-lens/dist/clients/config-core/process-spec.js +147 -0
- package/extensions/dm-lens/dist/clients/config-core/provenance.js +54 -0
- package/extensions/dm-lens/dist/clients/config-core/records.js +79 -0
- package/extensions/dm-lens/dist/clients/config-core/resolve.js +48 -0
- package/extensions/dm-lens/dist/clients/config-core/safe-object.js +22 -0
- package/extensions/dm-lens/dist/clients/config-core/schema.js +90 -0
- package/extensions/dm-lens/dist/clients/config-diagnostic-codes.js +90 -0
- package/extensions/dm-lens/dist/clients/config-locations.js +175 -0
- package/extensions/dm-lens/dist/clients/config-resolve.js +359 -0
- package/extensions/dm-lens/dist/clients/config-schema.js +128 -0
- package/extensions/dm-lens/dist/clients/config-warn.js +146 -0
- package/extensions/dm-lens/dist/clients/console-guard-install.js +4 -0
- package/extensions/dm-lens/dist/clients/cooperative-budget.js +36 -0
- package/extensions/dm-lens/dist/clients/dead-code-client.js +342 -0
- package/extensions/dm-lens/dist/clients/dead-code-logger.js +18 -0
- package/extensions/dm-lens/dist/clients/deadline-utils.js +117 -0
- package/extensions/dm-lens/dist/clients/debug-handles.js +121 -0
- package/extensions/dm-lens/dist/clients/debug-heap.js +80 -0
- package/extensions/dm-lens/dist/clients/deferred-lsp-work.js +33 -0
- package/extensions/dm-lens/dist/clients/degradation-ledger.js +272 -0
- package/extensions/dm-lens/dist/clients/demoted-finding-render.js +61 -0
- package/extensions/dm-lens/dist/clients/dependency-checker.js +525 -0
- package/extensions/dm-lens/dist/clients/deps/ast-grep-napi.js +17 -0
- package/extensions/dm-lens/dist/clients/deps/dm-host-deps.js +10 -0
- package/extensions/dm-lens/dist/clients/deps/dm-tui-compat.js +58 -0
- package/extensions/dm-lens/dist/clients/deps/js-yaml.js +7 -0
- package/extensions/dm-lens/dist/clients/deps/minimatch.js +6 -0
- package/extensions/dm-lens/dist/clients/deps/pidusage.js +5 -0
- package/extensions/dm-lens/dist/clients/deps/typebox.js +5 -0
- package/extensions/dm-lens/dist/clients/deps/vscode-jsonrpc.js +8 -0
- package/extensions/dm-lens/dist/clients/deps/web-tree-sitter.js +11 -0
- package/extensions/dm-lens/dist/clients/diagnostic-dispositions.js +318 -0
- package/extensions/dm-lens/dist/clients/diagnostic-line-freshness.js +144 -0
- package/extensions/dm-lens/dist/clients/diagnostic-logger.js +60 -0
- package/extensions/dm-lens/dist/clients/diagnostic-tracker.js +89 -0
- package/extensions/dm-lens/dist/clients/diagnostics-publish.js +134 -0
- package/extensions/dm-lens/dist/clients/dispatch/ast-grep-catalog.js +16 -0
- package/extensions/dm-lens/dist/clients/dispatch/auxiliary-lsp.js +158 -0
- package/extensions/dm-lens/dist/clients/dispatch/collect-later-tier.js +25 -0
- package/extensions/dm-lens/dist/clients/dispatch/diagnostic-taxonomy.js +58 -0
- package/extensions/dm-lens/dist/clients/dispatch/dispatcher.js +953 -0
- package/extensions/dm-lens/dist/clients/dispatch/fact-provider-types.js +1 -0
- package/extensions/dm-lens/dist/clients/dispatch/fact-rule-runner.js +17 -0
- package/extensions/dm-lens/dist/clients/dispatch/fact-runner.js +18 -0
- package/extensions/dm-lens/dist/clients/dispatch/fact-scheduler.js +52 -0
- package/extensions/dm-lens/dist/clients/dispatch/fact-store.js +199 -0
- package/extensions/dm-lens/dist/clients/dispatch/facts/comment-facts.js +20 -0
- package/extensions/dm-lens/dist/clients/dispatch/facts/file-content.js +18 -0
- package/extensions/dm-lens/dist/clients/dispatch/facts/function-facts.js +281 -0
- package/extensions/dm-lens/dist/clients/dispatch/facts/import-facts.js +169 -0
- package/extensions/dm-lens/dist/clients/dispatch/facts/tree-sitter-facts.js +19 -0
- package/extensions/dm-lens/dist/clients/dispatch/facts/try-catch-facts.js +95 -0
- package/extensions/dm-lens/dist/clients/dispatch/finding-policy.js +159 -0
- package/extensions/dm-lens/dist/clients/dispatch/indent-detect.js +227 -0
- package/extensions/dm-lens/dist/clients/dispatch/inline-suppressions.js +52 -0
- package/extensions/dm-lens/dist/clients/dispatch/integration.js +1463 -0
- package/extensions/dm-lens/dist/clients/dispatch/lazy.js +8 -0
- package/extensions/dm-lens/dist/clients/dispatch/pending-runner-findings.js +75 -0
- package/extensions/dm-lens/dist/clients/dispatch/plan.js +278 -0
- package/extensions/dm-lens/dist/clients/dispatch/priorities.js +14 -0
- package/extensions/dm-lens/dist/clients/dispatch/rule-id-normalize.js +42 -0
- package/extensions/dm-lens/dist/clients/dispatch/rule-ignores.js +21 -0
- package/extensions/dm-lens/dist/clients/dispatch/rule-policy.js +73 -0
- package/extensions/dm-lens/dist/clients/dispatch/rules/async-noise.js +31 -0
- package/extensions/dm-lens/dist/clients/dispatch/rules/async-unnecessary-wrapper.js +27 -0
- package/extensions/dm-lens/dist/clients/dispatch/rules/cors-wildcard.js +35 -0
- package/extensions/dm-lens/dist/clients/dispatch/rules/error-obscuring.js +29 -0
- package/extensions/dm-lens/dist/clients/dispatch/rules/error-swallowing.js +29 -0
- package/extensions/dm-lens/dist/clients/dispatch/rules/framework-call-noise.js +31 -0
- package/extensions/dm-lens/dist/clients/dispatch/rules/high-complexity.js +56 -0
- package/extensions/dm-lens/dist/clients/dispatch/rules/high-fan-out.js +45 -0
- package/extensions/dm-lens/dist/clients/dispatch/rules/high-import-coupling.js +31 -0
- package/extensions/dm-lens/dist/clients/dispatch/rules/missing-error-propagation.js +45 -0
- package/extensions/dm-lens/dist/clients/dispatch/rules/no-commented-credentials.js +46 -0
- package/extensions/dm-lens/dist/clients/dispatch/rules/pass-through-wrappers.js +38 -0
- package/extensions/dm-lens/dist/clients/dispatch/rules/placeholder-comments.js +40 -0
- package/extensions/dm-lens/dist/clients/dispatch/rules/unsafe-boundary.js +101 -0
- package/extensions/dm-lens/dist/clients/dispatch/runner-context.js +46 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/actionlint.js +98 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/ast-grep-napi.js +690 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/biome-check.js +202 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/cpp-check.js +190 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/credo.js +66 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/cue-vet.js +167 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/dart-analyze.js +151 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/detekt.js +157 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/dotnet-build.js +157 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/elixir-check.js +153 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/eslint.js +99 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/fact-rules.js +20 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/fish-indent.js +65 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/gleam-check.js +107 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/go-vet.js +51 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/golangci-lint.js +89 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/hadolint.js +83 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/helm-lint.js +144 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/helm-render.js +593 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/htmlhint.js +103 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/index.js +100 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/javac.js +82 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/ktlint.js +93 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/lsp.js +206 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/markdownlint.js +129 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/mypy.js +70 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/oxlint.js +305 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/php-lint.js +70 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/phpstan.js +90 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/prisma-validate.js +56 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/psscriptanalyzer.js +307 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/pyright.js +118 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/rubocop.js +79 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/ruff.js +69 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/rust-clippy.js +147 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/shellcheck.js +111 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/shfmt.js +81 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/spellcheck.js +74 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/spotbugs.js +208 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/sqlfluff.js +136 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/stylelint.js +118 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/swiftlint.js +143 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/taplo.js +97 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/terragrunt.js +110 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/tflint.js +104 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/tree-sitter.js +516 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/trivy-config.js +155 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/utils/availability-policy.js +285 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/utils/candidate-probe.js +61 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/utils/diagnostic-parsers.js +61 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/utils/lazy-installer.js +130 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/utils/runner-helpers.js +1067 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/utils/spawn-outcome.js +40 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/utils/tool-failure.js +117 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/utils/toolchain-availability.js +88 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/utils.js +8 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/vale.js +106 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/yaml-rule-parser.js +163 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/yamllint.js +83 -0
- package/extensions/dm-lens/dist/clients/dispatch/runners/zig-check.js +72 -0
- package/extensions/dm-lens/dist/clients/dispatch/suppress-writer.js +57 -0
- package/extensions/dm-lens/dist/clients/dispatch/tool-profile.js +30 -0
- package/extensions/dm-lens/dist/clients/dispatch/types.js +7 -0
- package/extensions/dm-lens/dist/clients/dispatch/utils/format-utils.js +45 -0
- package/extensions/dm-lens/dist/clients/dispatch/utils/lsp-diagnostics.js +31 -0
- package/extensions/dm-lens/dist/clients/disposition-logger.js +19 -0
- package/extensions/dm-lens/dist/clients/disposition-publish.js +88 -0
- package/extensions/dm-lens/dist/clients/durable-store.js +77 -0
- package/extensions/dm-lens/dist/clients/effective-config.js +160 -0
- package/extensions/dm-lens/dist/clients/env-utils.js +26 -0
- package/extensions/dm-lens/dist/clients/error-class.js +3 -0
- package/extensions/dm-lens/dist/clients/eval-timestamp.js +2 -0
- package/extensions/dm-lens/dist/clients/event-loop-hold.js +119 -0
- package/extensions/dm-lens/dist/clients/event-loop-monitor.js +84 -0
- package/extensions/dm-lens/dist/clients/extension-log.js +230 -0
- package/extensions/dm-lens/dist/clients/extension-mode.js +20 -0
- package/extensions/dm-lens/dist/clients/feature-hints.js +88 -0
- package/extensions/dm-lens/dist/clients/file-kinds.js +304 -0
- package/extensions/dm-lens/dist/clients/file-role.js +50 -0
- package/extensions/dm-lens/dist/clients/file-time.js +112 -0
- package/extensions/dm-lens/dist/clients/file-utils.js +630 -0
- package/extensions/dm-lens/dist/clients/finding-delivery-gate.js +129 -0
- package/extensions/dm-lens/dist/clients/finding-identity.js +23 -0
- package/extensions/dm-lens/dist/clients/fix-worklog.js +75 -0
- package/extensions/dm-lens/dist/clients/format-events-publish.js +230 -0
- package/extensions/dm-lens/dist/clients/format-service.js +154 -0
- package/extensions/dm-lens/dist/clients/formatters-lazy.js +8 -0
- package/extensions/dm-lens/dist/clients/formatters.js +1351 -0
- package/extensions/dm-lens/dist/clients/freshness-cadence.js +1 -0
- package/extensions/dm-lens/dist/clients/freshness.js +8 -0
- package/extensions/dm-lens/dist/clients/generated-artifacts.js +209 -0
- package/extensions/dm-lens/dist/clients/generation-guard.js +105 -0
- package/extensions/dm-lens/dist/clients/git-guard.js +770 -0
- package/extensions/dm-lens/dist/clients/git-tracked-ignore.js +120 -0
- package/extensions/dm-lens/dist/clients/gitleaks-client.js +282 -0
- package/extensions/dm-lens/dist/clients/go-client.js +47 -0
- package/extensions/dm-lens/dist/clients/govulncheck-client.js +411 -0
- package/extensions/dm-lens/dist/clients/gradle-ktfmt-style.js +177 -0
- package/extensions/dm-lens/dist/clients/grammar-source.js +224 -0
- package/extensions/dm-lens/dist/clients/gzip-stage-write.js +85 -0
- package/extensions/dm-lens/dist/clients/hashline-anchor.js +222 -0
- package/extensions/dm-lens/dist/clients/hook-budgets.js +16 -0
- package/extensions/dm-lens/dist/clients/host-edit-normalize.js +87 -0
- package/extensions/dm-lens/dist/clients/host-ports.js +35 -0
- package/extensions/dm-lens/dist/clients/indent-retarget.js +102 -0
- package/extensions/dm-lens/dist/clients/inline-blocker-dispositions.js +103 -0
- package/extensions/dm-lens/dist/clients/install-diagnostics.js +123 -0
- package/extensions/dm-lens/dist/clients/installer/index.js +3770 -0
- package/extensions/dm-lens/dist/clients/installer/managed-tool-refresh-session.js +17 -0
- package/extensions/dm-lens/dist/clients/installer/managed-tool-refresh.js +522 -0
- package/extensions/dm-lens/dist/clients/instance-reaper-state.js +3 -0
- package/extensions/dm-lens/dist/clients/instance-reaper.js +577 -0
- package/extensions/dm-lens/dist/clients/instance-registry-lock.js +131 -0
- package/extensions/dm-lens/dist/clients/instance-registry.js +452 -0
- package/extensions/dm-lens/dist/clients/jscpd-client.js +252 -0
- package/extensions/dm-lens/dist/clients/json-cache-read.js +25 -0
- package/extensions/dm-lens/dist/clients/knip-client.js +472 -0
- package/extensions/dm-lens/dist/clients/language-policy.js +242 -0
- package/extensions/dm-lens/dist/clients/language-profile.js +261 -0
- package/extensions/dm-lens/dist/clients/language-registry.js +424 -0
- package/extensions/dm-lens/dist/clients/latency-logger.js +192 -0
- package/extensions/dm-lens/dist/clients/lazy-import.js +14 -0
- package/extensions/dm-lens/dist/clients/ledger-bounds.js +21 -0
- package/extensions/dm-lens/dist/clients/lens-config.js +237 -0
- package/extensions/dm-lens/dist/clients/lens-engine.js +181 -0
- package/extensions/dm-lens/dist/clients/lens-events.js +105 -0
- package/extensions/dm-lens/dist/clients/lens-flag-registry.js +302 -0
- package/extensions/dm-lens/dist/clients/lens-map.js +980 -0
- package/extensions/dm-lens/dist/clients/live-bus-emitter.js +53 -0
- package/extensions/dm-lens/dist/clients/log-cleanup.js +138 -0
- package/extensions/dm-lens/dist/clients/lsp/aggregation.js +88 -0
- package/extensions/dm-lens/dist/clients/lsp/cascade-tier.js +203 -0
- package/extensions/dm-lens/dist/clients/lsp/client.js +2709 -0
- package/extensions/dm-lens/dist/clients/lsp/config.js +252 -0
- package/extensions/dm-lens/dist/clients/lsp/content-limits.js +21 -0
- package/extensions/dm-lens/dist/clients/lsp/diagnostic-binding.js +79 -0
- package/extensions/dm-lens/dist/clients/lsp/document-drift.js +312 -0
- package/extensions/dm-lens/dist/clients/lsp/edits.js +930 -0
- package/extensions/dm-lens/dist/clients/lsp/index.js +4448 -0
- package/extensions/dm-lens/dist/clients/lsp/inferred-project.js +121 -0
- package/extensions/dm-lens/dist/clients/lsp/jvm-runtime.js +194 -0
- package/extensions/dm-lens/dist/clients/lsp/language.js +23 -0
- package/extensions/dm-lens/dist/clients/lsp/launch.js +468 -0
- package/extensions/dm-lens/dist/clients/lsp/lombok.js +146 -0
- package/extensions/dm-lens/dist/clients/lsp/path-utils.js +1 -0
- package/extensions/dm-lens/dist/clients/lsp/pending-aux-coverage.js +90 -0
- package/extensions/dm-lens/dist/clients/lsp/position-encoding.js +28 -0
- package/extensions/dm-lens/dist/clients/lsp/ruby-drive-dirs.js +42 -0
- package/extensions/dm-lens/dist/clients/lsp/server.js +2422 -0
- package/extensions/dm-lens/dist/clients/lsp/session-roots.js +52 -0
- package/extensions/dm-lens/dist/clients/lsp/spawn-history.js +15 -0
- package/extensions/dm-lens/dist/clients/lsp/sync-kind.js +30 -0
- package/extensions/dm-lens/dist/clients/lsp/tsserver-sync.js +156 -0
- package/extensions/dm-lens/dist/clients/lsp/wait-policy/capability-snapshot.js +1 -0
- package/extensions/dm-lens/dist/clients/lsp/wait-policy/classification.js +36 -0
- package/extensions/dm-lens/dist/clients/lsp/wait-policy/index.js +3 -0
- package/extensions/dm-lens/dist/clients/lsp/wait-policy/strategies.js +175 -0
- package/extensions/dm-lens/dist/clients/lsp/watch-queue.js +40 -0
- package/extensions/dm-lens/dist/clients/lsp/workspace-diagnostics-cache.js +267 -0
- package/extensions/dm-lens/dist/clients/lsp/workspace-diagnostics-session.js +7 -0
- package/extensions/dm-lens/dist/clients/lsp/workspace-sweep-hold.js +93 -0
- package/extensions/dm-lens/dist/clients/lsp-budget.js +83 -0
- package/extensions/dm-lens/dist/clients/lsp-document-symbols.js +93 -0
- package/extensions/dm-lens/dist/clients/lsp-lazy.js +8 -0
- package/extensions/dm-lens/dist/clients/lsp-mutation.js +273 -0
- package/extensions/dm-lens/dist/clients/lsp-status.js +37 -0
- package/extensions/dm-lens/dist/clients/map-with-concurrency.js +20 -0
- package/extensions/dm-lens/dist/clients/mcp/analyze.js +251 -0
- package/extensions/dm-lens/dist/clients/mcp/host-shim.js +14 -0
- package/extensions/dm-lens/dist/clients/mcp/ipc.js +302 -0
- package/extensions/dm-lens/dist/clients/mcp/review.js +137 -0
- package/extensions/dm-lens/dist/clients/mcp/session.js +305 -0
- package/extensions/dm-lens/dist/clients/memory-sampler.js +107 -0
- package/extensions/dm-lens/dist/clients/message-end-attribution.js +18 -0
- package/extensions/dm-lens/dist/clients/metrics-client.js +80 -0
- package/extensions/dm-lens/dist/clients/metrics-history.js +255 -0
- package/extensions/dm-lens/dist/clients/middle-man-analysis.js +161 -0
- package/extensions/dm-lens/dist/clients/model-provider.js +31 -0
- package/extensions/dm-lens/dist/clients/module-report-lsp.js +140 -0
- package/extensions/dm-lens/dist/clients/module-report.js +1642 -0
- package/extensions/dm-lens/dist/clients/mutating-tool.js +377 -0
- package/extensions/dm-lens/dist/clients/mutation-attribution.js +168 -0
- package/extensions/dm-lens/dist/clients/mutation-bridge.js +102 -0
- package/extensions/dm-lens/dist/clients/ndjson-logger.js +471 -0
- package/extensions/dm-lens/dist/clients/observed-mutation-sources.js +43 -0
- package/extensions/dm-lens/dist/clients/observed-mutation.js +709 -0
- package/extensions/dm-lens/dist/clients/oldtext-autopatch.js +100 -0
- package/extensions/dm-lens/dist/clients/opaque-mutation-scan.js +313 -0
- package/extensions/dm-lens/dist/clients/opengrep-client.js +216 -0
- package/extensions/dm-lens/dist/clients/opengrep-config.js +52 -0
- package/extensions/dm-lens/dist/clients/package-manager.js +303 -0
- package/extensions/dm-lens/dist/clients/package-root.js +25 -0
- package/extensions/dm-lens/dist/clients/partial-edit-apply.js +337 -0
- package/extensions/dm-lens/dist/clients/path-attribution-telemetry.js +31 -0
- package/extensions/dm-lens/dist/clients/path-keyed-map.js +57 -0
- package/extensions/dm-lens/dist/clients/path-utils.js +476 -0
- package/extensions/dm-lens/dist/clients/performance-report.js +291 -0
- package/extensions/dm-lens/dist/clients/persist-debounce.js +37 -0
- package/extensions/dm-lens/dist/clients/persistent-reverify.js +165 -0
- package/extensions/dm-lens/dist/clients/php-cs-fixer-config.js +15 -0
- package/extensions/dm-lens/dist/clients/pipeline.js +1091 -0
- package/extensions/dm-lens/dist/clients/post-autofix-notice.js +19 -0
- package/extensions/dm-lens/dist/clients/print-mode.js +3 -0
- package/extensions/dm-lens/dist/clients/probe-home-state.js +62 -0
- package/extensions/dm-lens/dist/clients/process-bridge.js +20 -0
- package/extensions/dm-lens/dist/clients/process-singletons.js +69 -0
- package/extensions/dm-lens/dist/clients/process-snapshot.js +22 -0
- package/extensions/dm-lens/dist/clients/project-changes.js +112 -0
- package/extensions/dm-lens/dist/clients/project-conventions.js +152 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/cache.js +91 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/extractors.js +53 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/fresh-fetch.js +408 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/call-graph-impact.js +64 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/dead-code.js +38 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/gitleaks.js +21 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/govulncheck.js +23 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/jscpd.js +28 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/knip.js +45 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/madge.js +34 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/opengrep.js +32 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/runner-findings.js +79 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/trivy.js +41 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/scanner.js +349 -0
- package/extensions/dm-lens/dist/clients/project-diagnostics/types.js +1 -0
- package/extensions/dm-lens/dist/clients/project-lens-config.js +437 -0
- package/extensions/dm-lens/dist/clients/project-report.js +527 -0
- package/extensions/dm-lens/dist/clients/project-scale.js +60 -0
- package/extensions/dm-lens/dist/clients/project-scan-policy.js +4 -0
- package/extensions/dm-lens/dist/clients/project-snapshot-fingerprint.js +39 -0
- package/extensions/dm-lens/dist/clients/project-snapshot-persist-worker.js +14 -0
- package/extensions/dm-lens/dist/clients/project-snapshot.js +1178 -0
- package/extensions/dm-lens/dist/clients/project-trust.js +104 -0
- package/extensions/dm-lens/dist/clients/python-environment.js +120 -0
- package/extensions/dm-lens/dist/clients/python-provenance.js +551 -0
- package/extensions/dm-lens/dist/clients/quiet-window-config.js +16 -0
- package/extensions/dm-lens/dist/clients/quiet-window.js +126 -0
- package/extensions/dm-lens/dist/clients/read-bridge.js +46 -0
- package/extensions/dm-lens/dist/clients/read-expansion.js +218 -0
- package/extensions/dm-lens/dist/clients/read-guard-logger.js +178 -0
- package/extensions/dm-lens/dist/clients/read-guard-tool-lines.js +1042 -0
- package/extensions/dm-lens/dist/clients/read-guard.js +1096 -0
- package/extensions/dm-lens/dist/clients/recent-touches.js +126 -0
- package/extensions/dm-lens/dist/clients/redact/secrets.js +386 -0
- package/extensions/dm-lens/dist/clients/resource-sampler.js +344 -0
- package/extensions/dm-lens/dist/clients/reverse-deps.js +227 -0
- package/extensions/dm-lens/dist/clients/review-graph/builder.js +3635 -0
- package/extensions/dm-lens/dist/clients/review-graph/format.js +30 -0
- package/extensions/dm-lens/dist/clients/review-graph/git-identity.js +115 -0
- package/extensions/dm-lens/dist/clients/review-graph/import-resolvers.js +325 -0
- package/extensions/dm-lens/dist/clients/review-graph/persist-worker.js +8 -0
- package/extensions/dm-lens/dist/clients/review-graph/query.js +195 -0
- package/extensions/dm-lens/dist/clients/review-graph/revision-drift.js +3 -0
- package/extensions/dm-lens/dist/clients/review-graph/service.js +60 -0
- package/extensions/dm-lens/dist/clients/review-graph/shared-extraction-ir.js +54 -0
- package/extensions/dm-lens/dist/clients/review-graph/symbol-id.js +29 -0
- package/extensions/dm-lens/dist/clients/review-graph/tsconfig-paths.js +253 -0
- package/extensions/dm-lens/dist/clients/review-graph/types.js +1 -0
- package/extensions/dm-lens/dist/clients/review-graph/workspace-modules.js +374 -0
- package/extensions/dm-lens/dist/clients/review-graph-logger.js +51 -0
- package/extensions/dm-lens/dist/clients/ruff-client.js +109 -0
- package/extensions/dm-lens/dist/clients/rules-scanner.js +113 -0
- package/extensions/dm-lens/dist/clients/run-duration.js +9 -0
- package/extensions/dm-lens/dist/clients/runtime-agent-end.js +608 -0
- package/extensions/dm-lens/dist/clients/runtime-config.js +39 -0
- package/extensions/dm-lens/dist/clients/runtime-context.js +155 -0
- package/extensions/dm-lens/dist/clients/runtime-coordinator.js +817 -0
- package/extensions/dm-lens/dist/clients/runtime-session.js +1625 -0
- package/extensions/dm-lens/dist/clients/runtime-tool-call.js +868 -0
- package/extensions/dm-lens/dist/clients/runtime-tool-result.js +1317 -0
- package/extensions/dm-lens/dist/clients/runtime-turn.js +2333 -0
- package/extensions/dm-lens/dist/clients/rust-client.js +48 -0
- package/extensions/dm-lens/dist/clients/safe-spawn.js +1267 -0
- package/extensions/dm-lens/dist/clients/sanitize.js +174 -0
- package/extensions/dm-lens/dist/clients/scan-utils.js +7 -0
- package/extensions/dm-lens/dist/clients/scratch-tree-policy.js +57 -0
- package/extensions/dm-lens/dist/clients/search-read-registration.js +59 -0
- package/extensions/dm-lens/dist/clients/secret-findings.js +69 -0
- package/extensions/dm-lens/dist/clients/security-scan-client.js +208 -0
- package/extensions/dm-lens/dist/clients/session-event-guard.js +111 -0
- package/extensions/dm-lens/dist/clients/session-lifecycle.js +173 -0
- package/extensions/dm-lens/dist/clients/session-start-observability.js +47 -0
- package/extensions/dm-lens/dist/clients/session-state-store.js +63 -0
- package/extensions/dm-lens/dist/clients/session-summary.js +8 -0
- package/extensions/dm-lens/dist/clients/sessionstart-logger.js +22 -0
- package/extensions/dm-lens/dist/clients/sg-runner.js +627 -0
- package/extensions/dm-lens/dist/clients/sgconfig.js +280 -0
- package/extensions/dm-lens/dist/clients/shared-checkout-guard.js +177 -0
- package/extensions/dm-lens/dist/clients/single-flight.js +52 -0
- package/extensions/dm-lens/dist/clients/situational-tool-telemetry.js +85 -0
- package/extensions/dm-lens/dist/clients/skills-resolver.js +38 -0
- package/extensions/dm-lens/dist/clients/slow-fs.js +77 -0
- package/extensions/dm-lens/dist/clients/smells-rollup.js +118 -0
- package/extensions/dm-lens/dist/clients/source-filter.js +320 -0
- package/extensions/dm-lens/dist/clients/source-walker.js +96 -0
- package/extensions/dm-lens/dist/clients/spawn-output-cap.js +35 -0
- package/extensions/dm-lens/dist/clients/spawn-timeout-cooldown.js +51 -0
- package/extensions/dm-lens/dist/clients/stale-marker.js +1 -0
- package/extensions/dm-lens/dist/clients/startup-scan.js +222 -0
- package/extensions/dm-lens/dist/clients/startup-timing.js +67 -0
- package/extensions/dm-lens/dist/clients/string-utils.js +6 -0
- package/extensions/dm-lens/dist/clients/subagent-mode.js +40 -0
- package/extensions/dm-lens/dist/clients/symbol-containment.js +16 -0
- package/extensions/dm-lens/dist/clients/symbol-types.js +1 -0
- package/extensions/dm-lens/dist/clients/test-runner-client.js +1504 -0
- package/extensions/dm-lens/dist/clients/test-runner-delivery.js +260 -0
- package/extensions/dm-lens/dist/clients/todo-scanner.js +164 -0
- package/extensions/dm-lens/dist/clients/tool-agreement.js +377 -0
- package/extensions/dm-lens/dist/clients/tool-config.js +218 -0
- package/extensions/dm-lens/dist/clients/tool-cwd.js +235 -0
- package/extensions/dm-lens/dist/clients/tool-definition.js +22 -0
- package/extensions/dm-lens/dist/clients/tool-event.js +18 -0
- package/extensions/dm-lens/dist/clients/tool-policy.js +2393 -0
- package/extensions/dm-lens/dist/clients/tool-probe.js +5 -0
- package/extensions/dm-lens/dist/clients/tool-render.js +79 -0
- package/extensions/dm-lens/dist/clients/tool-set-policy.js +70 -0
- package/extensions/dm-lens/dist/clients/tree-sitter-cache.js +206 -0
- package/extensions/dm-lens/dist/clients/tree-sitter-client.js +2787 -0
- package/extensions/dm-lens/dist/clients/tree-sitter-logger.js +77 -0
- package/extensions/dm-lens/dist/clients/tree-sitter-navigator.js +198 -0
- package/extensions/dm-lens/dist/clients/tree-sitter-query-loader.js +318 -0
- package/extensions/dm-lens/dist/clients/tree-sitter-shared.js +87 -0
- package/extensions/dm-lens/dist/clients/tree-sitter-symbol-extractor.js +957 -0
- package/extensions/dm-lens/dist/clients/trivy-client.js +305 -0
- package/extensions/dm-lens/dist/clients/tui-fit.js +26 -0
- package/extensions/dm-lens/dist/clients/turn-context.js +48 -0
- package/extensions/dm-lens/dist/clients/turn-end/lane.js +1 -0
- package/extensions/dm-lens/dist/clients/turn-end/lanes/govulncheck.js +54 -0
- package/extensions/dm-lens/dist/clients/turn-end/lanes/secrets.js +131 -0
- package/extensions/dm-lens/dist/clients/turn-summary-render.js +56 -0
- package/extensions/dm-lens/dist/clients/turn-summary.js +84 -0
- package/extensions/dm-lens/dist/clients/typos-config.js +9 -0
- package/extensions/dm-lens/dist/clients/user-notify.js +15 -0
- package/extensions/dm-lens/dist/clients/vanished-instance-marker.js +18 -0
- package/extensions/dm-lens/dist/clients/warm-attach.js +210 -0
- package/extensions/dm-lens/dist/clients/widget-state.js +963 -0
- package/extensions/dm-lens/dist/clients/word-index-logger.js +21 -0
- package/extensions/dm-lens/dist/clients/word-index-store.js +222 -0
- package/extensions/dm-lens/dist/clients/word-index.js +1426 -0
- package/extensions/dm-lens/dist/clients/workspace-topology.js +261 -0
- package/extensions/dm-lens/dist/clients/write-ordering-guard.js +24 -0
- package/extensions/dm-lens/dist/clients/zizmor-config.js +160 -0
- package/extensions/dm-lens/dist/i18n.js +67 -0
- package/extensions/dm-lens/dist/index.js +1782 -0
- package/extensions/dm-lens/dist/mcp/analyze-cli.js +178 -0
- package/extensions/dm-lens/dist/mcp/build-staleness.js +55 -0
- package/extensions/dm-lens/dist/mcp/cli.js +78 -0
- package/extensions/dm-lens/dist/mcp/server.js +1208 -0
- package/extensions/dm-lens/dist/mcp/worker.js +33 -0
- package/extensions/dm-lens/dist/scripts/lib/process-scan.mjs +256 -0
- package/extensions/dm-lens/dist/scripts/lib/skills-predicate.mjs +53 -0
- package/extensions/dm-lens/dist/scripts/lib/web-tree-sitter-dir.mjs +45 -0
- package/extensions/dm-lens/dist/tools/activate-tools.js +61 -0
- package/extensions/dm-lens/dist/tools/ast-grep-outline.js +127 -0
- package/extensions/dm-lens/dist/tools/ast-grep-replace.js +226 -0
- package/extensions/dm-lens/dist/tools/ast-grep-search.js +687 -0
- package/extensions/dm-lens/dist/tools/effective-config.js +59 -0
- package/extensions/dm-lens/dist/tools/lens-diagnostic-mark.js +240 -0
- package/extensions/dm-lens/dist/tools/lens-diagnostics.js +1484 -0
- package/extensions/dm-lens/dist/tools/lsp-diagnostics.js +1088 -0
- package/extensions/dm-lens/dist/tools/lsp-navigation.js +1194 -0
- package/extensions/dm-lens/dist/tools/lsp-structured-output.js +277 -0
- package/extensions/dm-lens/dist/tools/module-report.js +332 -0
- package/extensions/dm-lens/dist/tools/project-report.js +72 -0
- package/extensions/dm-lens/dist/tools/render-compact.js +272 -0
- package/extensions/dm-lens/dist/tools/scan-progress.js +31 -0
- package/extensions/dm-lens/dist/tools/shared.js +26 -0
- package/extensions/dm-lens/dist/tools/symbol-search.js +133 -0
- package/extensions/dm-lens/index.js +278 -101
- package/extensions/dm-lens/mcp/analyze-cli.js +3 -2
- package/extensions/dm-lens/mcp/build-staleness.js +1 -1
- package/extensions/dm-lens/mcp/server.js +144 -73
- package/extensions/dm-lens/package.json +4 -4
- package/extensions/dm-lens/rules/ast-grep-rules/rule-tests/no-assert-tuple-test.yml +13 -0
- package/extensions/dm-lens/rules/ast-grep-rules/rule-tests/no-boolean-in-except-test.yml +26 -0
- package/extensions/dm-lens/rules/ast-grep-rules/rule-tests/no-http-headers-bracket-access-test.yml +10 -0
- package/extensions/dm-lens/rules/ast-grep-rules/rule-tests/unchecked-numeric-parse-python-test.yml +18 -0
- package/extensions/dm-lens/rules/ast-grep-rules/rule-tests/unchecked-throwing-call-python-test.yml +4 -3
- package/extensions/dm-lens/rules/ast-grep-rules/rules/go-no-fmt-println.yml +2 -2
- package/extensions/dm-lens/rules/ast-grep-rules/rules/no-assert-tuple.yml +23 -13
- package/extensions/dm-lens/rules/ast-grep-rules/rules/no-boolean-in-except.yml +7 -3
- package/extensions/dm-lens/rules/ast-grep-rules/rules/no-console-except-error-js.yml +2 -2
- package/extensions/dm-lens/rules/ast-grep-rules/rules/no-console-except-error.yml +2 -2
- package/extensions/dm-lens/rules/ast-grep-rules/rules/no-http-headers-bracket-access.yml +12 -7
- package/extensions/dm-lens/rules/ast-grep-rules/rules/unchecked-numeric-parse-python.yml +44 -0
- package/extensions/dm-lens/rules/ast-grep-rules/rules/unchecked-throwing-call-python.yml +5 -3
- package/extensions/dm-lens/rules/tree-sitter-queries/python/python-cross-language-method.yml +3 -3
- package/extensions/dm-lens/rules/tree-sitter-queries/python/python-hallucinated-import.yml +2 -2
- package/extensions/dm-lens/rules/tree-sitter-queries/python/python-sql-injection.yml +12 -2
- package/extensions/dm-lens/rules/tree-sitter-queries/typescript/console-statement.yml +2 -2
- package/extensions/dm-lens/rules/tree-sitter-queries/typescript/sql-injection.yml +23 -7
- package/extensions/dm-lens/rules/typos/_typos.toml +4 -2
- package/extensions/dm-lens/scripts/lib/process-scan.mjs +1 -1
- package/extensions/dm-lens/scripts/lib/skills-predicate.mjs +53 -0
- package/extensions/dm-lens/scripts/lib/web-tree-sitter-dir.mjs +45 -0
- package/extensions/dm-lens/skills/pi-lens-ast-grep/SKILL.md +23 -6
- package/extensions/dm-lens/skills/pi-lens-lsp-navigation/SKILL.md +26 -9
- package/extensions/dm-lens/tools/activate-tools.js +10 -7
- package/extensions/dm-lens/tools/ast-grep-outline.js +2 -6
- package/extensions/dm-lens/tools/ast-grep-replace.js +5 -16
- package/extensions/dm-lens/tools/ast-grep-search.js +83 -38
- package/extensions/dm-lens/tools/effective-config.js +5 -4
- package/extensions/dm-lens/tools/lens-diagnostic-mark.js +5 -3
- package/extensions/dm-lens/tools/lens-diagnostics.js +478 -106
- package/extensions/dm-lens/tools/lsp-diagnostics.js +317 -172
- package/extensions/dm-lens/tools/lsp-navigation.js +26 -56
- package/extensions/dm-lens/tools/lsp-structured-output.js +3 -3
- package/extensions/dm-lens/tools/module-report.js +5 -5
- package/extensions/dm-lens/tools/project-report.js +9 -15
- package/extensions/dm-lens/tools/render-compact.js +220 -1
- package/extensions/dm-lens/tools/symbol-search.js +3 -5
- package/extensions/dm-mcp-adapter/OAUTH.md +368 -2
- package/extensions/dm-mcp-adapter/THIRD_PARTY_NOTICES.md +1 -1
- package/extensions/dm-mcp-adapter/agent-plugin-loader.js +73 -30
- package/extensions/dm-mcp-adapter/agent-plugin-provenance.js +26 -0
- package/extensions/dm-mcp-adapter/bearer-command-resolver.js +182 -0
- package/extensions/dm-mcp-adapter/claude-plugin-loader.js +350 -0
- package/extensions/dm-mcp-adapter/cli.js +82 -5
- package/extensions/dm-mcp-adapter/commands.js +89 -15
- package/extensions/dm-mcp-adapter/config.js +283 -33
- package/extensions/dm-mcp-adapter/consent-manager.js +32 -8
- package/extensions/dm-mcp-adapter/direct-tool-surface.js +223 -0
- package/extensions/dm-mcp-adapter/direct-tools.js +21 -216
- package/extensions/dm-mcp-adapter/dist/abort.js +35 -0
- package/extensions/dm-mcp-adapter/dist/agent-plugin-loader.js +73 -30
- package/extensions/dm-mcp-adapter/dist/agent-plugin-provenance.js +26 -0
- package/extensions/dm-mcp-adapter/dist/bearer-command-resolver.js +182 -0
- package/extensions/dm-mcp-adapter/dist/claude-plugin-loader.js +350 -0
- package/extensions/dm-mcp-adapter/dist/config.js +283 -33
- package/extensions/dm-mcp-adapter/dist/consent-manager.js +84 -0
- package/extensions/dm-mcp-adapter/dist/elicitation-handler.js +308 -0
- package/extensions/dm-mcp-adapter/dist/errors.js +225 -0
- package/extensions/dm-mcp-adapter/dist/http-ca.js +71 -0
- package/extensions/dm-mcp-adapter/dist/jev-client.js +359 -0
- package/extensions/dm-mcp-adapter/dist/jev-contracts.js +1 -0
- package/extensions/dm-mcp-adapter/dist/jev-key-store.js +176 -0
- package/extensions/dm-mcp-adapter/dist/json-schema-validator.js +70 -0
- package/extensions/dm-mcp-adapter/dist/lifecycle.js +387 -0
- package/extensions/dm-mcp-adapter/dist/logger.js +115 -0
- package/extensions/dm-mcp-adapter/dist/mcp-auth-fetch.js +86 -0
- package/extensions/dm-mcp-adapter/dist/mcp-auth-flow.js +949 -0
- package/extensions/dm-mcp-adapter/dist/mcp-auth.js +997 -0
- package/extensions/dm-mcp-adapter/dist/mcp-bearer-store.js +7 -136
- package/extensions/dm-mcp-adapter/dist/mcp-callback-server.js +381 -0
- package/extensions/dm-mcp-adapter/dist/mcp-oauth-provider.js +524 -0
- package/extensions/dm-mcp-adapter/dist/mcp-probe.js +151 -0
- package/extensions/dm-mcp-adapter/dist/mcp-tasks.js +300 -0
- package/extensions/dm-mcp-adapter/dist/mcp-trace.js +215 -0
- package/extensions/dm-mcp-adapter/dist/metadata-cache.js +10 -28
- package/extensions/dm-mcp-adapter/dist/npx-resolver.js +465 -0
- package/extensions/dm-mcp-adapter/dist/package-mcp-loader.js +5 -16
- package/extensions/dm-mcp-adapter/dist/request-headers-command.js +294 -0
- package/extensions/dm-mcp-adapter/dist/runtime-owner.js +94 -0
- package/extensions/dm-mcp-adapter/dist/sampling-handler.js +213 -0
- package/extensions/dm-mcp-adapter/dist/secure-keyring.js +191 -0
- package/extensions/dm-mcp-adapter/dist/server-manager.js +1514 -0
- package/extensions/dm-mcp-adapter/dist/session-approvals.js +127 -0
- package/extensions/dm-mcp-adapter/dist/session-recovery.js +82 -0
- package/extensions/dm-mcp-adapter/dist/state.js +1 -0
- package/extensions/dm-mcp-adapter/dist/types.js +39 -0
- package/extensions/dm-mcp-adapter/dist/ui-resource-handler.js +204 -0
- package/extensions/dm-mcp-adapter/dist/unix-socket-transport.js +83 -0
- package/extensions/dm-mcp-adapter/dist/utils.js +84 -9
- package/extensions/dm-mcp-adapter/elicitation-handler.js +27 -22
- package/extensions/dm-mcp-adapter/host-html-template.js +17 -18
- package/extensions/dm-mcp-adapter/http-ca.js +71 -0
- package/extensions/dm-mcp-adapter/index.js +904 -167
- package/extensions/dm-mcp-adapter/init.js +53 -42
- package/extensions/dm-mcp-adapter/jev-client.js +359 -0
- package/extensions/dm-mcp-adapter/jev-contracts.js +0 -0
- package/extensions/dm-mcp-adapter/jev-key-store.js +176 -0
- package/extensions/dm-mcp-adapter/json-schema-validator.js +19 -2
- package/extensions/dm-mcp-adapter/lazy-loader.js +7 -0
- package/extensions/dm-mcp-adapter/lifecycle.js +8 -3
- package/extensions/dm-mcp-adapter/mcp-auth-fetch.js +86 -0
- package/extensions/dm-mcp-adapter/mcp-auth-flow.js +228 -75
- package/extensions/dm-mcp-adapter/mcp-auth.js +312 -47
- package/extensions/dm-mcp-adapter/mcp-bearer-store.js +7 -136
- package/extensions/dm-mcp-adapter/mcp-code.js +151 -20
- package/extensions/dm-mcp-adapter/mcp-install.js +40 -0
- package/extensions/dm-mcp-adapter/mcp-oauth-provider.js +52 -8
- package/extensions/dm-mcp-adapter/mcp-output-guard.js +42 -43
- package/extensions/dm-mcp-adapter/mcp-panel-theme.js +79 -0
- package/extensions/dm-mcp-adapter/mcp-panel.js +294 -286
- package/extensions/dm-mcp-adapter/mcp-references.js +13 -18
- package/extensions/dm-mcp-adapter/mcp-script-worker.mjs +5 -1
- package/extensions/dm-mcp-adapter/mcp-setup-panel.js +317 -282
- package/extensions/dm-mcp-adapter/mcp-status.js +2 -0
- package/extensions/dm-mcp-adapter/mcp-tasks.js +309 -0
- package/extensions/dm-mcp-adapter/metadata-cache.js +11 -28
- package/extensions/dm-mcp-adapter/namespace-tools.js +43 -7
- package/extensions/dm-mcp-adapter/oauth.js +1 -1
- package/extensions/dm-mcp-adapter/package-mcp-loader.js +5 -16
- package/extensions/dm-mcp-adapter/package.json +4 -1
- package/extensions/dm-mcp-adapter/prompts.js +31 -4
- package/extensions/dm-mcp-adapter/proxy-modes.js +394 -199
- package/extensions/dm-mcp-adapter/request-headers-command.js +3 -2
- package/extensions/dm-mcp-adapter/runtime-owner.js +16 -1
- package/extensions/dm-mcp-adapter/sampling-handler.js +16 -25
- package/extensions/dm-mcp-adapter/sandbox-proxy-template.js +14 -90
- package/extensions/dm-mcp-adapter/search-ranking.js +31 -6
- package/extensions/dm-mcp-adapter/secure-keyring.js +191 -0
- package/extensions/dm-mcp-adapter/semantic-search.js +160 -0
- package/extensions/dm-mcp-adapter/server-manager.js +406 -117
- package/extensions/dm-mcp-adapter/session-approvals.js +127 -0
- package/extensions/dm-mcp-adapter/skills/mcp-scripting/SKILL.md +11 -1
- package/extensions/dm-mcp-adapter/test-runner.mjs +3 -4
- package/extensions/dm-mcp-adapter/tool-approval.js +32 -22
- package/extensions/dm-mcp-adapter/tool-metadata.js +18 -11
- package/extensions/dm-mcp-adapter/tool-registrar.js +7 -4
- package/extensions/dm-mcp-adapter/tool-result-renderer.js +4 -2
- package/extensions/dm-mcp-adapter/types.js +39 -0
- package/extensions/dm-mcp-adapter/ui-server.js +51 -36
- package/extensions/dm-mcp-adapter/ui-session.js +57 -25
- package/extensions/dm-mcp-adapter/utils.js +84 -9
- package/extensions/dm-ponytail/hooks/cursor-hooks.json +17 -0
- package/extensions/dm-ponytail/hooks/ponytail-activate.js +14 -2
- package/extensions/dm-ponytail/hooks/ponytail-mode-tracker.js +21 -2
- package/extensions/dm-ponytail/hooks/ponytail-runtime.js +23 -0
- package/extensions/dm-ponytail/package.json +1 -1
- package/extensions/dm-subagents/agents/claude-code-writer.md +1 -0
- package/extensions/dm-subagents/agents/codex-exec-writer.md +1 -0
- package/extensions/dm-subagents/agents/cursor-agent-writer.md +1 -0
- package/extensions/dm-subagents/agents/evidence-auditor.md +34 -0
- package/extensions/dm-subagents/agents/researcher.md +23 -13
- package/extensions/dm-subagents/agents/reviewer.md +6 -4
- package/extensions/dm-subagents/agents/scout.md +1 -1
- package/extensions/dm-subagents/agents/worker.md +3 -2
- package/extensions/dm-subagents/index.js +3 -2
- package/extensions/dm-subagents/inspector-runner.mjs +2 -2
- package/extensions/dm-subagents/install.mjs +1 -2
- package/extensions/dm-subagents/package.json +35 -1
- package/extensions/dm-subagents/prompts/council.md +6 -3
- package/extensions/dm-subagents/prompts/parallel-review.md +1 -1
- package/extensions/dm-subagents/runner-peer-loader.mjs +18 -0
- package/extensions/dm-subagents/runner-peer-preload.mjs +29 -0
- package/extensions/dm-subagents/skills/dm-subagents/SKILL.md +35 -22
- package/extensions/dm-subagents/skills/dm-subagents/references/constraints-and-recipes.md +9 -5
- package/extensions/dm-subagents/skills/dm-subagents/references/execution-controls.md +40 -19
- package/extensions/dm-subagents/skills/dm-subagents/references/management-authoring-rpc.md +6 -6
- package/extensions/dm-subagents/skills/dm-subagents/references/multi-lane-orchestration.md +11 -1
- package/extensions/dm-subagents/skills/dm-subagents/references/prompting-and-roles.md +35 -30
- package/extensions/dm-subagents/skills/dm-subagents/references/review-and-validation.md +3 -3
- package/extensions/dm-subagents/src/agents/advertised-agent-prompt.js +70 -0
- package/extensions/dm-subagents/src/agents/agent-management.js +276 -172
- package/extensions/dm-subagents/src/agents/agent-memory.js +92 -3
- package/extensions/dm-subagents/src/agents/agent-serializer.js +17 -8
- package/extensions/dm-subagents/src/agents/agents.js +389 -207
- package/extensions/dm-subagents/src/agents/builtin-names.js +1 -0
- package/extensions/dm-subagents/src/agents/chain-serializer.js +7 -0
- package/extensions/dm-subagents/src/agents/global-npm-root.js +47 -0
- package/extensions/dm-subagents/src/agents/proactive-skills.js +1 -1
- package/extensions/dm-subagents/src/agents/runtime-agent-registry.js +17 -13
- package/extensions/dm-subagents/src/agents/skills.js +36 -10
- package/extensions/dm-subagents/src/api/capability-ceiling.js +0 -1
- package/extensions/dm-subagents/src/api/child-tool-plan.js +3 -0
- package/extensions/dm-subagents/src/api/preflight.js +75 -64
- package/extensions/dm-subagents/src/api/required-child-extensions.js +3 -0
- package/extensions/dm-subagents/src/api/workflow-resources.js +1 -0
- package/extensions/dm-subagents/src/extension/config.js +27 -18
- package/extensions/dm-subagents/src/extension/doctor.js +10 -13
- package/extensions/dm-subagents/src/extension/fanout-child.js +91 -14
- package/extensions/dm-subagents/src/extension/herdr-dm-bridge.js +258 -0
- package/extensions/dm-subagents/src/extension/index.js +202 -66
- package/extensions/dm-subagents/src/extension/public-execution.js +55 -4
- package/extensions/dm-subagents/src/extension/rpc.js +18 -27
- package/extensions/dm-subagents/src/extension/schemas.js +99 -84
- package/extensions/dm-subagents/src/extension/subagent-guide.js +14 -3
- package/extensions/dm-subagents/src/extension/tool-activation.js +157 -0
- package/extensions/dm-subagents/src/extension/tool-description.js +30 -78
- package/extensions/dm-subagents/src/inspectors/actions.js +145 -0
- package/extensions/dm-subagents/src/inspectors/ghostty/actions.js +60 -0
- package/extensions/dm-subagents/src/inspectors/ghostty/plugin.js +17 -0
- package/extensions/dm-subagents/src/inspectors/herdr/actions.js +94 -179
- package/extensions/dm-subagents/src/inspectors/herdr/plugin.js +13 -0
- package/extensions/dm-subagents/src/inspectors/herdr/project-panes.js +1 -1
- package/extensions/dm-subagents/src/inspectors/{herdr/inspector-runner.js → inspector-runner.js} +31 -25
- package/extensions/dm-subagents/src/inspectors/plugins.js +5 -0
- package/extensions/dm-subagents/src/inspectors/{herdr/session-roots-codec.js → session-roots-codec.js} +1 -6
- package/extensions/dm-subagents/src/inspectors/types.js +1 -0
- package/extensions/dm-subagents/src/integrations/dm-web-session-liveness.js +50 -0
- package/extensions/dm-subagents/src/intercom/intercom-bridge.js +39 -5
- package/extensions/dm-subagents/src/intercom/native-supervisor-channel.js +256 -151
- package/extensions/dm-subagents/src/intercom/result-intercom.js +6 -0
- package/extensions/dm-subagents/src/intercom/supervisor-ui.js +199 -0
- package/extensions/dm-subagents/src/missions/workflow-state.js +30 -17
- package/extensions/dm-subagents/src/policy/authority.js +6 -2
- package/extensions/dm-subagents/src/profiles/profiles.js +10 -5
- package/extensions/dm-subagents/src/runs/background/active-async-capacity.js +28 -35
- package/extensions/dm-subagents/src/runs/background/active-run-index.js +17 -0
- package/extensions/dm-subagents/src/runs/background/async-execution.js +580 -389
- package/extensions/dm-subagents/src/runs/background/async-job-tracker.js +71 -47
- package/extensions/dm-subagents/src/runs/background/async-resume.js +61 -26
- package/extensions/dm-subagents/src/runs/background/async-retention.js +8 -0
- package/extensions/dm-subagents/src/runs/background/async-status-snapshot.js +3 -4
- package/extensions/dm-subagents/src/runs/background/async-status.js +90 -13
- package/extensions/dm-subagents/src/runs/background/auto-drain.js +57 -33
- package/extensions/dm-subagents/src/runs/background/binary-bootstrap.js +54 -0
- package/extensions/dm-subagents/src/runs/background/chain-append.js +1 -1
- package/extensions/dm-subagents/src/runs/background/chain-root-attachment.js +11 -27
- package/extensions/dm-subagents/src/runs/background/control-channel.js +105 -256
- package/extensions/dm-subagents/src/runs/background/fleet-view.js +67 -10
- package/extensions/dm-subagents/src/runs/background/notify.js +252 -17
- package/extensions/dm-subagents/src/runs/background/owned-process-tree.js +33 -2
- package/extensions/dm-subagents/src/runs/background/process-terminal-candidate.js +88 -0
- package/extensions/dm-subagents/src/runs/background/process-terminal.js +29 -87
- package/extensions/dm-subagents/src/runs/background/result-files.js +8 -4
- package/extensions/dm-subagents/src/runs/background/result-watcher.js +15 -3
- package/extensions/dm-subagents/src/runs/background/retained-children.js +3 -2
- package/extensions/dm-subagents/src/runs/background/retained-nested-route-tracker.js +86 -0
- package/extensions/dm-subagents/src/runs/background/run-child-session.js +574 -0
- package/extensions/dm-subagents/src/runs/background/run-id-resolver.js +9 -5
- package/extensions/dm-subagents/src/runs/background/run-status.js +114 -11
- package/extensions/dm-subagents/src/runs/background/runner-aliases.js +129 -0
- package/extensions/dm-subagents/src/runs/background/runner-child-launch.js +62 -0
- package/extensions/dm-subagents/src/runs/background/runner-child-sessions.js +16 -0
- package/extensions/dm-subagents/src/runs/background/runner-http-dispatcher.js +84 -0
- package/extensions/dm-subagents/src/runs/background/runner-startup-failure.js +43 -0
- package/extensions/dm-subagents/src/runs/background/scheduled-runs.js +119 -20
- package/extensions/dm-subagents/src/runs/background/stale-run-reconciler.js +33 -10
- package/extensions/dm-subagents/src/runs/background/steering.js +24 -3
- package/extensions/dm-subagents/src/runs/background/subagent-runner-bootstrap.js +238 -0
- package/extensions/dm-subagents/src/runs/background/subagent-runner.js +1008 -1344
- package/extensions/dm-subagents/src/runs/background/subagent-wait.js +156 -26
- package/extensions/dm-subagents/src/runs/background/wait-completions.js +91 -23
- package/extensions/dm-subagents/src/runs/background/wait-subscriptions.js +10 -3
- package/extensions/dm-subagents/src/runs/background/wait-tool.js +8 -12
- package/extensions/dm-subagents/src/runs/background/workflow-terminal-proof.js +60 -0
- package/extensions/dm-subagents/src/runs/foreground/async-steering-action.js +29 -26
- package/extensions/dm-subagents/src/runs/foreground/async-stop-action.js +94 -2
- package/extensions/dm-subagents/src/runs/foreground/execution.js +446 -648
- package/extensions/dm-subagents/src/runs/foreground/foreground-control.js +4 -0
- package/extensions/dm-subagents/src/runs/foreground/foreground-history.js +5 -2
- package/extensions/dm-subagents/src/runs/foreground/prompt-audit.js +8 -4
- package/extensions/dm-subagents/src/runs/foreground/subagent-executor.js +1337 -445
- package/extensions/dm-subagents/src/runs/foreground/workflow-detach-reconcile.js +10 -5
- package/extensions/dm-subagents/src/runs/foreground/workflow-foreground-steering.js +65 -90
- package/extensions/dm-subagents/src/runs/shared/acceptance.js +265 -68
- package/extensions/dm-subagents/src/runs/shared/agent-contract.js +1 -1
- package/extensions/dm-subagents/src/runs/shared/async-status-projection.js +133 -76
- package/extensions/dm-subagents/src/runs/shared/capability-ceiling.js +4 -2
- package/extensions/dm-subagents/src/runs/shared/child-hooks.js +166 -0
- package/extensions/dm-subagents/src/runs/shared/child-identity.js +10 -2
- package/extensions/dm-subagents/src/runs/shared/child-launch-plan.js +19 -2
- package/extensions/dm-subagents/src/runs/shared/child-launch.js +212 -0
- package/extensions/dm-subagents/src/runs/shared/child-lifecycle.js +22 -0
- package/extensions/dm-subagents/src/runs/shared/child-runtime-config.js +31 -0
- package/extensions/dm-subagents/src/runs/shared/child-session.js +378 -0
- package/extensions/dm-subagents/src/runs/shared/child-tool-plan.js +299 -0
- package/extensions/dm-subagents/src/runs/shared/claude-code-adapter.js +1 -1
- package/extensions/dm-subagents/src/runs/shared/dm-spawn.js +148 -32
- package/extensions/dm-subagents/src/runs/shared/dynamic-fanout.js +6 -4
- package/extensions/dm-subagents/src/runs/shared/effective-system-prompt.js +19 -0
- package/extensions/dm-subagents/src/runs/shared/external-cli-contract.js +6 -1
- package/extensions/dm-subagents/src/runs/shared/external-cli-preflight.js +14 -2
- package/extensions/dm-subagents/src/runs/shared/external-cli-runner.js +6 -7
- package/extensions/dm-subagents/src/runs/shared/external-job-bridge.js +60 -0
- package/extensions/dm-subagents/src/runs/shared/git-environment.js +25 -0
- package/extensions/dm-subagents/src/runs/shared/herdr-connection.js +341 -0
- package/extensions/dm-subagents/src/runs/shared/herdr-dm-protocol.js +60 -0
- package/extensions/dm-subagents/src/runs/shared/herdr-external-adapters.js +555 -0
- package/extensions/dm-subagents/src/runs/shared/herdr-machine.js +239 -0
- package/extensions/dm-subagents/src/runs/shared/herdr-placed-run.js +987 -0
- package/extensions/dm-subagents/src/runs/shared/host-step-status.js +2 -0
- package/extensions/dm-subagents/src/runs/shared/lane-metadata.js +23 -3
- package/extensions/dm-subagents/src/runs/shared/mcp-direct-tool-allowlist.js +4 -3
- package/extensions/dm-subagents/src/runs/shared/mcp-direct-tool-grant.js +15 -5
- package/extensions/dm-subagents/src/runs/shared/model-resolution-diagnostic.js +43 -0
- package/extensions/dm-subagents/src/runs/shared/{model-fallback.js → model-resolution.js} +44 -128
- package/extensions/dm-subagents/src/runs/shared/nested-events.js +39 -49
- package/extensions/dm-subagents/src/runs/shared/nested-path.js +0 -13
- package/extensions/dm-subagents/src/runs/shared/orca-progress-tabs.js +22 -12
- package/extensions/dm-subagents/src/runs/shared/parallel-handoff.js +78 -2
- package/extensions/dm-subagents/src/runs/shared/permissions.js +1 -16
- package/extensions/dm-subagents/src/runs/shared/process-signal.js +3 -0
- package/extensions/dm-subagents/src/runs/shared/readonly-drain-observation.js +51 -0
- package/extensions/dm-subagents/src/runs/shared/run-fanout-budget.js +0 -13
- package/extensions/dm-subagents/src/runs/shared/runtime-acknowledged-extensions.js +0 -26
- package/extensions/dm-subagents/src/runs/shared/single-output.js +20 -2
- package/extensions/dm-subagents/src/runs/shared/structured-output.js +263 -10
- package/extensions/dm-subagents/src/runs/shared/subagent-control.js +6 -14
- package/extensions/dm-subagents/src/runs/shared/subagent-prompt-runtime.js +117 -370
- package/extensions/dm-subagents/src/runs/shared/tool-availability.js +12 -50
- package/extensions/dm-subagents/src/runs/shared/tool-budget.js +10 -13
- package/extensions/dm-subagents/src/runs/shared/tool-timeout.js +1 -1
- package/extensions/dm-subagents/src/runs/shared/usage-reconciliation.js +69 -0
- package/extensions/dm-subagents/src/runs/shared/workflow-async-child-guidance.js +11 -0
- package/extensions/dm-subagents/src/runs/shared/worktree-cleanup-plan.js +30 -10
- package/extensions/dm-subagents/src/runs/shared/worktree-setup-command.js +195 -0
- package/extensions/dm-subagents/src/runs/shared/worktree.js +814 -141
- package/extensions/dm-subagents/src/shared/atomic-json.js +2 -1
- package/extensions/dm-subagents/src/shared/child-cache-retention.js +19 -0
- package/extensions/dm-subagents/src/shared/fork-context.js +40 -77
- package/extensions/dm-subagents/src/shared/fork-session-cwd.js +24 -0
- package/extensions/dm-subagents/src/shared/jsonl-writer.js +8 -0
- package/extensions/dm-subagents/src/shared/launch-contract.js +37 -6
- package/extensions/dm-subagents/src/shared/model-response-aliases.js +15 -0
- package/extensions/dm-subagents/src/shared/opencode-session-headers.js +15 -0
- package/extensions/dm-subagents/src/shared/pruned-fork.js +83 -76
- package/extensions/dm-subagents/src/shared/required-child-extensions.js +72 -0
- package/extensions/dm-subagents/src/shared/shortcuts.js +0 -2
- package/extensions/dm-subagents/src/shared/thinking-ceiling.js +0 -6
- package/extensions/dm-subagents/src/shared/types.js +16 -12
- package/extensions/dm-subagents/src/shared/utils.js +22 -7
- package/extensions/dm-subagents/src/shared/watch-strategy.js +2 -0
- package/extensions/dm-subagents/src/shared/workflow-child-permit.js +70 -0
- package/extensions/dm-subagents/src/slash/delegation-adapters.js +15 -1
- package/extensions/dm-subagents/src/slash/delegation-request.js +13 -0
- package/extensions/dm-subagents/src/slash/prompt-template-bridge.js +28 -1
- package/extensions/dm-subagents/src/slash/prompt-workflows.js +15 -2
- package/extensions/dm-subagents/src/slash/slash-commands.js +12 -269
- package/extensions/dm-subagents/src/slash/subagent-cost.js +255 -0
- package/extensions/dm-subagents/src/slash/subagents-admin.js +49 -25
- package/extensions/dm-subagents/src/tui/fleet-status.js +224 -23
- package/extensions/dm-subagents/src/tui/fleet.js +38 -25
- package/extensions/dm-subagents/src/tui/render.js +636 -63
- package/extensions/dm-subagents/src/watchdog/child-status.js +42 -23
- package/extensions/dm-subagents/src/watchdog/diff-tool.js +86 -0
- package/extensions/dm-subagents/src/watchdog/emission-guard.js +4 -3
- package/extensions/dm-subagents/src/watchdog/guidance.js +19 -0
- package/extensions/dm-subagents/src/watchdog/lsp-diagnostics.js +1 -1
- package/extensions/dm-subagents/src/watchdog/model-selection.js +18 -1
- package/extensions/dm-subagents/src/watchdog/permission-arbiter.js +16 -10
- package/extensions/dm-subagents/src/watchdog/register-child.js +39 -26
- package/extensions/dm-subagents/src/watchdog/register-main.js +51 -43
- package/extensions/dm-subagents/src/watchdog/render.js +5 -7
- package/extensions/dm-subagents/src/watchdog/review.js +142 -67
- package/extensions/dm-subagents/src/watchdog/rules.js +55 -0
- package/extensions/dm-subagents/src/watchdog/runtime.js +167 -109
- package/extensions/dm-subagents/src/watchdog/scope.js +1 -9
- package/extensions/dm-subagents/src/watchdog/settings.js +55 -99
- package/extensions/dm-subagents/src/watchdog/tool-actions.js +11 -12
- package/extensions/dm-subagents/src/watchdog/turn-delta.js +30 -5
- package/extensions/dm-subagents/src/watchdog/types.js +2 -4
- package/extensions/dm-subagents/src/watchdog/warning-format.js +2 -3
- package/extensions/dm-subagents/src/workflows/chat-progress.js +4 -4
- package/extensions/dm-subagents/src/workflows/scripted-workflow.js +482 -36
- package/extensions/dm-subagents/src/workflows/workflow-checklist.js +303 -0
- package/extensions/dm-subagents/src/workflows/workflow-child-summary.js +57 -5
- package/extensions/dm-subagents/src/workflows/workflow-preflight.js +27 -1
- package/extensions/dm-subagents/src/workflows/workflow-receipt.js +51 -3
- package/extensions/dm-subagents/src/workflows/workflow-resources.js +226 -0
- package/extensions/dm-subagents/src/workflows/workflow-settlement.js +5 -0
- package/extensions/dm-web-access/abortable.js +19 -0
- package/extensions/dm-web-access/anysearch.js +4 -13
- package/extensions/dm-web-access/baizhi.js +123 -0
- package/extensions/dm-web-access/bocha.js +3 -24
- package/extensions/dm-web-access/brave.js +3 -23
- package/extensions/dm-web-access/brightdata.js +5 -30
- package/extensions/dm-web-access/content-find.js +181 -47
- package/extensions/dm-web-access/crawl4ai.js +166 -0
- package/extensions/dm-web-access/credential-source.js +1 -0
- package/extensions/dm-web-access/curator-page.js +27 -2
- package/extensions/dm-web-access/curator-run.js +36 -0
- package/extensions/dm-web-access/curator-server.js +11 -2
- package/extensions/dm-web-access/domain-filter-normalization.js +17 -0
- package/extensions/dm-web-access/duckduckgo.js +4 -24
- package/extensions/dm-web-access/extract.js +54 -12
- package/extensions/dm-web-access/fetch-params.js +1 -1
- package/extensions/dm-web-access/firecrawl.js +7 -45
- package/extensions/dm-web-access/gemini-search.js +101 -46
- package/extensions/dm-web-access/github-extract.js +2 -11
- package/extensions/dm-web-access/index.js +382 -247
- package/extensions/dm-web-access/jina-search.js +4 -13
- package/extensions/dm-web-access/kagi.js +4 -13
- package/extensions/dm-web-access/kimi-search.js +5 -30
- package/extensions/dm-web-access/mistral-search.js +251 -0
- package/extensions/dm-web-access/ollama.js +2 -7
- package/extensions/dm-web-access/openai-search.js +204 -46
- package/extensions/dm-web-access/opencode-session-headers.js +15 -0
- package/extensions/dm-web-access/package.json +1 -1
- package/extensions/dm-web-access/page-query.js +14 -4
- package/extensions/dm-web-access/parallel.js +1 -17
- package/extensions/dm-web-access/pdf-extract.js +1 -0
- package/extensions/dm-web-access/perplexity.js +10 -1
- package/extensions/dm-web-access/querit.js +5 -34
- package/extensions/dm-web-access/query-rewrite.js +6 -2
- package/extensions/dm-web-access/search-answer-formatting.js +6 -0
- package/extensions/dm-web-access/search-result-count-normalization.js +5 -0
- package/extensions/dm-web-access/search1api.js +5 -34
- package/extensions/dm-web-access/searchinfinity.js +5 -34
- package/extensions/dm-web-access/searxng.js +3 -23
- package/extensions/dm-web-access/serpapi.js +183 -0
- package/extensions/dm-web-access/serpbase.js +3 -24
- package/extensions/dm-web-access/serpdive.js +3 -23
- package/extensions/dm-web-access/serper.js +5 -30
- package/extensions/dm-web-access/serply.js +184 -0
- package/extensions/dm-web-access/source-check.js +10 -46
- package/extensions/dm-web-access/ssrf-protection.js +3 -1
- package/extensions/dm-web-access/storage.js +9 -0
- package/extensions/dm-web-access/summary-review.js +36 -25
- package/extensions/dm-web-access/tavily.js +3 -23
- package/extensions/dm-web-access/tinyfish.js +5 -34
- package/extensions/dm-web-access/tool-activation.js +112 -0
- package/extensions/dm-web-access/utils.js +27 -10
- package/extensions/dm-web-access/valyu.js +5 -30
- package/extensions/dm-web-access/xai-search.js +78 -42
- package/extensions/dm-web-access/xcrawl.js +5 -30
- package/package.json +7 -4
- package/extensions/dm-lens/tools/ast-dump.js +0 -101
- package/extensions/dm-subagents/src/api/dm-args.js +0 -3
- package/extensions/dm-subagents/src/runs/shared/child-protocol.js +0 -447
- package/extensions/dm-subagents/src/runs/shared/completion-evidence.js +0 -40
- package/extensions/dm-subagents/src/runs/shared/completion-guard.js +0 -173
- package/extensions/dm-subagents/src/runs/shared/dm-args.js +0 -581
- package/extensions/dm-subagents/src/runs/shared/llm-intent-arbiter.js +0 -190
- package/extensions/dm-subagents/src/runs/shared/model-exclusions.js +0 -207
- package/extensions/dm-subagents/src/runs/shared/subagent-startup-retry.js +0 -50
- package/extensions/dm-subagents/src/runs/shared/task-intent.js +0 -130
- package/extensions/dm-subagents/src/shared/post-exit-stdio-guard.js +0 -68
- /package/extensions/dm-subagents/src/inspectors/{herdr/shell-command.js → shell-command.js} +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
2
3
|
import {
|
|
3
4
|
listBackgroundWorkWakeChannels,
|
|
4
5
|
snapshotBackgroundWork
|
|
@@ -13,6 +14,7 @@ import {
|
|
|
13
14
|
SUBAGENT_CONTROL_INTERCOM_EVENT,
|
|
14
15
|
SUBAGENT_RESULT_INTERCOM_EVENT
|
|
15
16
|
} from "../../shared/types.js";
|
|
17
|
+
import { nestedRunScope } from "../shared/nested-events.js";
|
|
16
18
|
import { formatDuration, shortenPath } from "../../shared/formatters.js";
|
|
17
19
|
import { toAgentToolUsage } from "../../shared/utils.js";
|
|
18
20
|
import { collectWaitCompletions } from "./wait-completions.js";
|
|
@@ -97,12 +99,13 @@ function matchesId(run, id) {
|
|
|
97
99
|
return run.id === id || run.id.startsWith(id);
|
|
98
100
|
}
|
|
99
101
|
function activeDetachedForegroundRuns(params, deps) {
|
|
100
|
-
if (!params.id || !deps.state.foregroundRuns)
|
|
101
|
-
return [];
|
|
102
102
|
const sessionId = deps.state.currentSessionId;
|
|
103
|
-
if (!sessionId)
|
|
103
|
+
if (!sessionId || !deps.state.foregroundRuns)
|
|
104
104
|
return [];
|
|
105
|
-
|
|
105
|
+
const runs = [...deps.state.foregroundRuns.values()].filter((run) => run.sessionId === sessionId && run.children.some((child) => child.status === "detached"));
|
|
106
|
+
if (params.id)
|
|
107
|
+
return runs.filter((run) => run.runId === params.id || run.runId.startsWith(params.id));
|
|
108
|
+
return params.all === true ? runs : [];
|
|
106
109
|
}
|
|
107
110
|
function summarizeForegroundChildren(run, indices) {
|
|
108
111
|
const counts = new Map;
|
|
@@ -135,27 +138,36 @@ function backgroundWorkForSession(deps, nowMs) {
|
|
|
135
138
|
throw new Error("bg_wait requires an active session identity to scope background work safely.");
|
|
136
139
|
return deps.backgroundWork?.snapshot(sessionId, nowMs) ?? snapshotBackgroundWork(sessionId, nowMs);
|
|
137
140
|
}
|
|
138
|
-
function
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
141
|
+
export function waitRunScopes(deps) {
|
|
142
|
+
return [
|
|
143
|
+
{ asyncDirRoot: deps.asyncDirRoot ?? DIRS.async, resultsDir: deps.resultsDir ?? DIRS.results },
|
|
144
|
+
...deps.nestedRootRunId ? [nestedRunScope(deps.nestedRootRunId)] : []
|
|
145
|
+
];
|
|
146
|
+
}
|
|
147
|
+
function collectScopedCompletions(terminal, deps, references) {
|
|
148
|
+
const completions = waitRunScopes(deps).flatMap((scope) => collectWaitCompletions(terminal.filter((run) => path.resolve(path.dirname(run.asyncDir)) === path.resolve(scope.asyncDirRoot)), deps.state, scope.resultsDir, (reference) => references.push(reference)) ?? []);
|
|
149
|
+
return completions.length ? completions : undefined;
|
|
150
|
+
}
|
|
151
|
+
function runsForSession(params, deps, activeOnly = true) {
|
|
152
|
+
const runs = waitRunScopes(deps).flatMap(({ asyncDirRoot, resultsDir }) => listAsyncRuns(asyncDirRoot, {
|
|
153
|
+
states: activeOnly ? [...ACTIVE_STATES] : undefined,
|
|
143
154
|
sessionId: deps.state.currentSessionId ?? undefined,
|
|
144
155
|
resultsDir,
|
|
145
156
|
kill: deps.kill,
|
|
146
157
|
now: deps.now,
|
|
147
158
|
includeNested: false,
|
|
148
159
|
...params.id ? { runId: params.id } : {}
|
|
149
|
-
});
|
|
160
|
+
}));
|
|
150
161
|
return params.id ? runs.filter((run) => matchesId(run, params.id)) : runs;
|
|
151
162
|
}
|
|
163
|
+
function activeRunsForSession(params, deps) {
|
|
164
|
+
return runsForSession(params, deps);
|
|
165
|
+
}
|
|
152
166
|
function attentionRunsForSession(params, deps, initialIds) {
|
|
153
167
|
return activeRunsForSession(params, deps).filter((run) => needsAttention(run) && initialIds.has(run.id));
|
|
154
168
|
}
|
|
155
169
|
function runsForIds(runIds, deps) {
|
|
156
|
-
|
|
157
|
-
const resultsDir = deps.resultsDir ?? DIRS.results;
|
|
158
|
-
return [...runIds].flatMap((runId) => listAsyncRuns(asyncDirRoot, {
|
|
170
|
+
return waitRunScopes(deps).flatMap(({ asyncDirRoot, resultsDir }) => [...runIds].flatMap((runId) => listAsyncRuns(asyncDirRoot, {
|
|
159
171
|
sessionId: deps.state.currentSessionId ?? undefined,
|
|
160
172
|
resultsDir,
|
|
161
173
|
kill: deps.kill,
|
|
@@ -163,7 +175,7 @@ function runsForIds(runIds, deps) {
|
|
|
163
175
|
includeNested: false,
|
|
164
176
|
runId,
|
|
165
177
|
exactRunId: true
|
|
166
|
-
}));
|
|
178
|
+
})));
|
|
167
179
|
}
|
|
168
180
|
function summarizeTerminalRuns(runs, providerFinishedCount = 0) {
|
|
169
181
|
if (runs.length === 0 && providerFinishedCount === 0)
|
|
@@ -207,6 +219,11 @@ function completionUsage(completions) {
|
|
|
207
219
|
}
|
|
208
220
|
function result(text, isError = false, completions) {
|
|
209
221
|
const usage = completionUsage(completions);
|
|
222
|
+
for (const completion of completions ?? []) {
|
|
223
|
+
if (completion.workflowReceiptPath)
|
|
224
|
+
text += `
|
|
225
|
+
Workflow receipt [${completion.runId}]: ${completion.workflowReceiptPath}`;
|
|
226
|
+
}
|
|
210
227
|
return {
|
|
211
228
|
content: [{ type: "text", text }],
|
|
212
229
|
...isError ? { isError: true } : {},
|
|
@@ -239,6 +256,38 @@ function windowElapsedResult(text, activeRunIds, activeProviderItems = []) {
|
|
|
239
256
|
}
|
|
240
257
|
};
|
|
241
258
|
}
|
|
259
|
+
function supervisorYieldResult(activeRunIds, activeProviderItems = []) {
|
|
260
|
+
return {
|
|
261
|
+
content: [{ type: "text", text: "Wait yielded for a pending supervisor request. Background work remains active and will continue after the supervisor reply." }],
|
|
262
|
+
details: {
|
|
263
|
+
mode: "management",
|
|
264
|
+
results: [],
|
|
265
|
+
wait: {
|
|
266
|
+
reason: "supervisor_request",
|
|
267
|
+
timedOut: false,
|
|
268
|
+
activeRunIds,
|
|
269
|
+
activeProviderItems: activeProviderItems.map(({ provider, id }) => ({ provider, id }))
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
function supervisorYieldForScope(scope, params, deps, nowMs) {
|
|
275
|
+
try {
|
|
276
|
+
const activeAsyncIds = new Set(activeRunsForSession(params.id ? { id: params.id } : {}, deps).map((run) => run.id));
|
|
277
|
+
const activeRunIds = new Set([...scope.asyncRunIds].filter((id) => activeAsyncIds.has(id)));
|
|
278
|
+
for (const initial of scope.foregroundRuns) {
|
|
279
|
+
const current = deps.state.foregroundRuns?.get(initial.runId);
|
|
280
|
+
if (!current || current.sessionId !== initial.sessionId)
|
|
281
|
+
continue;
|
|
282
|
+
if (current.children.some((child) => initial.detachedIndices.has(child.index) && child.status === "detached"))
|
|
283
|
+
activeRunIds.add(initial.runId);
|
|
284
|
+
}
|
|
285
|
+
const activeProviderItems = scope.providerIds.size > 0 ? backgroundWorkForSession(deps, nowMs).items.filter((item) => scope.providerIds.has(backgroundWorkIdentity(item))) : [];
|
|
286
|
+
return supervisorYieldResult([...activeRunIds], activeProviderItems);
|
|
287
|
+
} catch (error) {
|
|
288
|
+
return result(error instanceof Error ? error.message : String(error), true);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
242
291
|
function asyncWaitUpdate(runs, providerCount, elapsedMs) {
|
|
243
292
|
const activity = runs.flatMap((run) => {
|
|
244
293
|
const activeSteps = run.steps.filter((step) => step.status === "pending" || step.status === "running");
|
|
@@ -357,7 +406,7 @@ function detachedForegroundWaitUpdate(run, pendingIndices, nowMs, elapsedMs) {
|
|
|
357
406
|
return result(lines.join(`
|
|
358
407
|
`));
|
|
359
408
|
}
|
|
360
|
-
async function waitForDetachedForegroundRun(run, signal, deps, startedAt, now, pollIntervalMs, timeoutMs) {
|
|
409
|
+
async function waitForDetachedForegroundRun(run, signal, deps, startedAt, now, pollIntervalMs, timeoutMs, supervisorYield) {
|
|
361
410
|
const initialDetachedIndices = new Set(run.children.filter((child) => child.status === "detached").map((child) => child.index));
|
|
362
411
|
while (true) {
|
|
363
412
|
if (deps.state.currentSessionId !== run.sessionId) {
|
|
@@ -367,6 +416,8 @@ async function waitForDetachedForegroundRun(run, signal, deps, startedAt, now, p
|
|
|
367
416
|
if (!current || current.sessionId !== run.sessionId) {
|
|
368
417
|
return result(`Remembered foreground run "${run.runId}" disappeared before a terminal child result was recorded. Completion cannot be confirmed; do not launch a replacement without checking the originating child session.`, true);
|
|
369
418
|
}
|
|
419
|
+
if (deps.hasPendingSupervisorRequest?.())
|
|
420
|
+
return supervisorYield();
|
|
370
421
|
const pending = current.children.filter((child) => initialDetachedIndices.has(child.index) && child.status === "detached");
|
|
371
422
|
const attention = foregroundChildrenNeedingAttention(current, initialDetachedIndices);
|
|
372
423
|
if (attention.length > 0)
|
|
@@ -386,6 +437,30 @@ async function waitForDetachedForegroundRun(run, signal, deps, startedAt, now, p
|
|
|
386
437
|
await waitForWake(pollIntervalMs, signal, deps);
|
|
387
438
|
}
|
|
388
439
|
}
|
|
440
|
+
async function waitForSessionDetachedForegroundRuns(runs, signal, deps, startedAt, now, pollIntervalMs, timeoutMs, supervisorYield) {
|
|
441
|
+
const texts = [];
|
|
442
|
+
for (const run of runs) {
|
|
443
|
+
const one = await waitForDetachedForegroundRun(run, signal, deps, startedAt, now, pollIntervalMs, timeoutMs, supervisorYield);
|
|
444
|
+
if (one.isError)
|
|
445
|
+
return one;
|
|
446
|
+
if (one.details.wait?.reason === "supervisor_request")
|
|
447
|
+
return one;
|
|
448
|
+
if (one.details.wait?.reason === "window_elapsed") {
|
|
449
|
+
const activeRunIds = runs.filter((initial) => {
|
|
450
|
+
const current = deps.state.foregroundRuns?.get(initial.runId);
|
|
451
|
+
if (!current || current.sessionId !== initial.sessionId)
|
|
452
|
+
return false;
|
|
453
|
+
return initial.children.some((child) => child.status === "detached" && current.children.some((candidate) => candidate.index === child.index && candidate.status === "detached"));
|
|
454
|
+
}).map((activeRun) => activeRun.runId);
|
|
455
|
+
return windowElapsedResult(one.content.map((part) => part.type === "text" ? part.text : "").join(`
|
|
456
|
+
`), activeRunIds);
|
|
457
|
+
}
|
|
458
|
+
texts.push(one.content.map((part) => part.type === "text" ? part.text : "").join(`
|
|
459
|
+
`).trim());
|
|
460
|
+
}
|
|
461
|
+
return result(texts.filter(Boolean).join(`
|
|
462
|
+
`) || `Waited ${formatDuration(now() - startedAt)} for remembered detached foreground run(s); done.`);
|
|
463
|
+
}
|
|
389
464
|
export async function waitForSubagents(params, signal, deps) {
|
|
390
465
|
if (deps.enabled === false) {
|
|
391
466
|
return result('bg_wait is disabled by config.waitTool or DM_SUBAGENT_WAIT_TOOL_ENABLED; returning immediately without blocking background work. Active work keeps going, and you can inspect subagents with subagent({ action: "status" }) or rely on completion notifications.');
|
|
@@ -397,6 +472,7 @@ export async function waitForSubagents(params, signal, deps) {
|
|
|
397
472
|
const pollIntervalMs = Math.max(MIN_POLL_INTERVAL_MS, deps.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS);
|
|
398
473
|
const timeoutMs = params.timeoutMs !== undefined && params.timeoutMs > 0 ? params.timeoutMs : deps.defaultTimeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
399
474
|
const startedAt = now();
|
|
475
|
+
const sessionId = deps.state.currentSessionId;
|
|
400
476
|
const waitForAll = params.id ? true : params.all === true;
|
|
401
477
|
if (params.nonBlocking && !params.id) {
|
|
402
478
|
return result("Non-blocking wait subscriptions require id so the registration can bind one exact run identity.", true);
|
|
@@ -408,12 +484,16 @@ export async function waitForSubagents(params, signal, deps) {
|
|
|
408
484
|
let foreground;
|
|
409
485
|
let providerSnapshot;
|
|
410
486
|
try {
|
|
411
|
-
active =
|
|
412
|
-
foreground = activeDetachedForegroundRuns(params, deps)
|
|
487
|
+
active = runsForSession(params, deps, !params.id);
|
|
488
|
+
foreground = activeDetachedForegroundRuns(params, deps).map((run) => ({
|
|
489
|
+
...run,
|
|
490
|
+
children: run.children.map((child) => ({ ...child }))
|
|
491
|
+
}));
|
|
413
492
|
providerSnapshot = params.id ? { providers: [], items: [] } : backgroundWorkForSession(deps, startedAt);
|
|
414
493
|
} catch (error) {
|
|
415
494
|
return result(error instanceof Error ? error.message : String(error), true);
|
|
416
495
|
}
|
|
496
|
+
let selectedForeground;
|
|
417
497
|
if (params.id) {
|
|
418
498
|
const candidates = [
|
|
419
499
|
...active.map((run) => ({ kind: "async", id: run.id, run })),
|
|
@@ -422,9 +502,20 @@ export async function waitForSubagents(params, signal, deps) {
|
|
|
422
502
|
const exact = candidates.filter((candidate) => candidate.id === params.id);
|
|
423
503
|
const matches = exact.length > 0 ? exact : candidates;
|
|
424
504
|
if (matches.length > 1) {
|
|
425
|
-
return result(`Ambiguous subagent run id prefix "${params.id}" matched ${matches.length}
|
|
505
|
+
return result(`Ambiguous subagent run id prefix "${params.id}" matched ${matches.length} runs: ${matches.map((candidate) => candidate.id).join(", ")}. Pass a longer id.`, true);
|
|
426
506
|
}
|
|
427
507
|
const selected = matches[0];
|
|
508
|
+
if (selected?.kind === "async" && !ACTIVE_STATES.includes(selected.run.state)) {
|
|
509
|
+
try {
|
|
510
|
+
const references = [];
|
|
511
|
+
const completions = collectScopedCompletions([selected.run], deps, references);
|
|
512
|
+
return result(`Run "${selected.id}" is terminal. Outcome: ${summarizeTerminalRuns([selected.run])}.${formatCompletionRecovery(completions)}${references.length ? `
|
|
513
|
+
${references.join(`
|
|
514
|
+
`)}` : ""}`, deps.failOnFailedRuns === true && (selected.run.state === "failed" || selected.run.state === "partial"), completions);
|
|
515
|
+
} catch (error) {
|
|
516
|
+
return result(error instanceof Error ? error.message : String(error), true);
|
|
517
|
+
}
|
|
518
|
+
}
|
|
428
519
|
if (selected && params.nonBlocking) {
|
|
429
520
|
if (!deps.subscribe) {
|
|
430
521
|
return result("Non-blocking wait subscriptions require a long-lived interactive subagent runtime; this runtime can only use blocking bg_wait calls.", true);
|
|
@@ -436,23 +527,43 @@ export async function waitForSubagents(params, signal, deps) {
|
|
|
436
527
|
return result(error instanceof Error ? error.message : String(error), true);
|
|
437
528
|
}
|
|
438
529
|
}
|
|
439
|
-
|
|
440
|
-
return waitForDetachedForegroundRun(selected.run, signal, deps, startedAt, now, pollIntervalMs, timeoutMs);
|
|
441
|
-
}
|
|
530
|
+
selectedForeground = selected?.kind === "foreground" ? selected.run : undefined;
|
|
442
531
|
active = selected?.kind === "async" ? [selected.run] : [];
|
|
443
532
|
}
|
|
444
533
|
let providerActive = providerSnapshot.items;
|
|
534
|
+
const scopedForeground = selectedForeground ? [selectedForeground] : params.id ? [] : foreground;
|
|
535
|
+
const initialAsyncIds = new Set(active.map((run) => run.id));
|
|
536
|
+
const initialProviderIds = new Set(providerActive.map(backgroundWorkIdentity));
|
|
537
|
+
const initialScope = {
|
|
538
|
+
asyncRunIds: initialAsyncIds,
|
|
539
|
+
foregroundRuns: scopedForeground.map((run) => ({
|
|
540
|
+
runId: run.runId,
|
|
541
|
+
sessionId: run.sessionId,
|
|
542
|
+
detachedIndices: new Set(run.children.filter((child) => child.status === "detached").map((child) => child.index))
|
|
543
|
+
})),
|
|
544
|
+
providerIds: initialProviderIds
|
|
545
|
+
};
|
|
546
|
+
const supervisorYield = () => supervisorYieldForScope(initialScope, params, deps, now());
|
|
547
|
+
if (selectedForeground) {
|
|
548
|
+
return waitForDetachedForegroundRun(selectedForeground, signal, deps, startedAt, now, pollIntervalMs, timeoutMs, supervisorYield);
|
|
549
|
+
}
|
|
445
550
|
if (active.length === 0 && providerActive.length === 0) {
|
|
551
|
+
if (waitForAll && !params.id && foreground.length > 0) {
|
|
552
|
+
return waitForSessionDetachedForegroundRuns(foreground, signal, deps, startedAt, now, pollIntervalMs, timeoutMs, supervisorYield);
|
|
553
|
+
}
|
|
446
554
|
return result(params.id ? `No active run matched "${params.id}". Nothing to wait for.` : "No active async runs or registered provider work in this session. Nothing to wait for.");
|
|
447
555
|
}
|
|
448
556
|
const waitParams = params.id ? { ...params, id: active[0].id } : params;
|
|
449
|
-
const initialAsyncIds = new Set(active.map((run) => run.id));
|
|
450
|
-
const initialProviderIds = new Set(providerActive.map(backgroundWorkIdentity));
|
|
451
557
|
const initialProviderNames = new Set(providerActive.map((item) => item.provider));
|
|
452
558
|
const initialCount = initialAsyncIds.size + initialProviderIds.size;
|
|
453
559
|
const stopOnAttention = params.stopOnAttention ?? deps.stopOnAttention !== false;
|
|
454
560
|
let attention = active.filter((run) => needsAttention(run));
|
|
561
|
+
let supervisorBarrier = false;
|
|
455
562
|
const isDone = () => {
|
|
563
|
+
if (deps.hasPendingSupervisorRequest?.()) {
|
|
564
|
+
supervisorBarrier = true;
|
|
565
|
+
return true;
|
|
566
|
+
}
|
|
456
567
|
if (attention.some((run) => initialAsyncIds.has(run.id) && (stopOnAttention || hasSupervisorTool(run))))
|
|
457
568
|
return true;
|
|
458
569
|
const activeAsyncIds = new Set(active.map((run) => run.id));
|
|
@@ -478,6 +589,8 @@ export async function waitForSubagents(params, signal, deps) {
|
|
|
478
589
|
}
|
|
479
590
|
try {
|
|
480
591
|
await waitForWake(pollIntervalMs, signal, deps);
|
|
592
|
+
if (deps.state.currentSessionId !== sessionId)
|
|
593
|
+
return result("Wait stopped because the active session changed.", true);
|
|
481
594
|
active = activeRunsForSession(waitParams, deps);
|
|
482
595
|
attention = attentionRunsForSession(waitParams, deps, initialAsyncIds);
|
|
483
596
|
providerSnapshot = params.id ? providerSnapshot : backgroundWorkForSession(deps, now());
|
|
@@ -491,11 +604,15 @@ export async function waitForSubagents(params, signal, deps) {
|
|
|
491
604
|
return result(error instanceof Error ? error.message : String(error), true);
|
|
492
605
|
}
|
|
493
606
|
}
|
|
607
|
+
if (supervisorBarrier) {
|
|
608
|
+
return supervisorYield();
|
|
609
|
+
}
|
|
494
610
|
let terminalSummary;
|
|
495
611
|
let finishedAsyncCount;
|
|
496
612
|
let failedAsyncCount;
|
|
497
613
|
let completions;
|
|
498
614
|
let resumeGuidance = "";
|
|
615
|
+
const references = [];
|
|
499
616
|
const activeProviderIds = new Set(providerActive.map(backgroundWorkIdentity));
|
|
500
617
|
const providerFinishedCount = [...initialProviderIds].filter((id) => !activeProviderIds.has(id)).length;
|
|
501
618
|
try {
|
|
@@ -505,7 +622,7 @@ export async function waitForSubagents(params, signal, deps) {
|
|
|
505
622
|
failedAsyncCount = terminal.filter((run) => run.state === "failed" || run.state === "partial").length;
|
|
506
623
|
terminalSummary = summarizeTerminalRuns(terminal, providerFinishedCount);
|
|
507
624
|
resumeGuidance = formatResumeFirstFailedRunsNote(terminal);
|
|
508
|
-
completions =
|
|
625
|
+
completions = collectScopedCompletions(terminal, deps, references);
|
|
509
626
|
} catch (error) {
|
|
510
627
|
return result(error instanceof Error ? error.message : String(error), true);
|
|
511
628
|
}
|
|
@@ -515,11 +632,24 @@ export async function waitForSubagents(params, signal, deps) {
|
|
|
515
632
|
const stillRunning = active.filter((run) => initialAsyncIds.has(run.id)).length + providerActive.filter((item) => initialProviderIds.has(backgroundWorkIdentity(item))).length;
|
|
516
633
|
const elapsed = formatDuration(now() - startedAt);
|
|
517
634
|
const outcome = terminalSummary ? ` Outcome: ${terminalSummary}.` : "";
|
|
518
|
-
const recoveryNote = formatCompletionRecovery(completions)
|
|
635
|
+
const recoveryNote = formatCompletionRecovery(completions) + (references.length ? `
|
|
636
|
+
${references.join(`
|
|
637
|
+
`)}
|
|
638
|
+
` : "");
|
|
519
639
|
if (waitForAll) {
|
|
640
|
+
const foregroundResult = !params.id && foreground.length > 0 && relevantAttention.length === 0 ? await waitForSessionDetachedForegroundRuns(foreground, signal, deps, startedAt, now, pollIntervalMs, timeoutMs, supervisorYield) : undefined;
|
|
641
|
+
if (foregroundResult?.isError)
|
|
642
|
+
return foregroundResult;
|
|
643
|
+
if (foregroundResult?.details.wait?.reason === "supervisor_request")
|
|
644
|
+
return foregroundResult;
|
|
645
|
+
if (foregroundResult?.details.wait?.reason === "window_elapsed")
|
|
646
|
+
return foregroundResult;
|
|
647
|
+
const foregroundNote = foregroundResult ? `
|
|
648
|
+
${foregroundResult.content.map((part) => part.type === "text" ? part.text : "").join(`
|
|
649
|
+
`)}` : "";
|
|
520
650
|
const scope = params.id ? `run "${params.id}"` : initialProviderIds.size === 0 ? `${initialAsyncIds.size} async run(s)` : `${initialAsyncIds.size} async run(s) and ${initialProviderIds.size} provider item(s)`;
|
|
521
651
|
const status = relevantAttention.length > 0 ? "attention required" : "done";
|
|
522
|
-
return result(`Waited ${elapsed} for ${scope}; ${status}.${outcome}${recoveryNote}${resumeGuidance}${attentionNote} Completion/control events have been observed; inspect status if a notification is not visible yet.`, deps.failOnFailedRuns === true && failedAsyncCount > 0 || deps.failOnAttention === true && relevantAttention.length > 0, completions);
|
|
652
|
+
return result(`Waited ${elapsed} for ${scope}; ${status}.${outcome}${recoveryNote}${resumeGuidance}${attentionNote}${foregroundNote} Completion/control events have been observed; inspect status if a notification is not visible yet.`, deps.failOnFailedRuns === true && failedAsyncCount > 0 || deps.failOnAttention === true && relevantAttention.length > 0, completions);
|
|
523
653
|
}
|
|
524
654
|
const finishedCount = finishedAsyncCount + providerFinishedCount;
|
|
525
655
|
const subject = initialProviderIds.size === 0 ? "run(s)" : "item(s)";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as fs from "node:fs";
|
|
2
2
|
import { readCompletionReplay, writeCompletionReplay } from "./completion-replay.js";
|
|
3
|
-
import { fallbackResultPayloadPathForSessionRun, resultFilePath, resultPayloadPathForSessionRun } from "./result-files.js";
|
|
3
|
+
import { fallbackResultPayloadPathForSessionRun, resultFilePath, resultPayloadMatchesSessionRun, resultPayloadPathForSessionRun } from "./result-files.js";
|
|
4
4
|
import { parseWorkflowChildSummary } from "../../workflows/workflow-child-summary.js";
|
|
5
5
|
import { projectTimeoutRecovery } from "../shared/mutation-evidence.js";
|
|
6
6
|
function asNonEmptyString(value) {
|
|
@@ -33,6 +33,37 @@ function isAccessDenied(error) {
|
|
|
33
33
|
function errorMessage(error) {
|
|
34
34
|
return error instanceof Error ? error.message : String(error);
|
|
35
35
|
}
|
|
36
|
+
const STRUCTURED_OUTPUT_INLINE_LIMIT_BYTES = 4 * 1024;
|
|
37
|
+
function waitResultPayloadCandidate(resultsDir, run) {
|
|
38
|
+
const publicPath = resultFilePath(resultsDir, run.id);
|
|
39
|
+
if (!run.sessionId)
|
|
40
|
+
return publicPath;
|
|
41
|
+
try {
|
|
42
|
+
const indexedPath = resultPayloadPathForSessionRun(resultsDir, run.sessionId, run.id);
|
|
43
|
+
return indexedPath ?? publicPath;
|
|
44
|
+
} catch (error) {
|
|
45
|
+
if (!isAccessDenied(error))
|
|
46
|
+
throw error;
|
|
47
|
+
const pendingPath = fallbackResultPayloadPathForSessionRun(resultsDir, run.sessionId, run.id);
|
|
48
|
+
return pendingPath ?? publicPath;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function readWaitResultPayload(candidatePath, run) {
|
|
52
|
+
if (!run.sessionId)
|
|
53
|
+
return;
|
|
54
|
+
const payload = JSON.parse(fs.readFileSync(candidatePath, "utf-8"));
|
|
55
|
+
if (!resultPayloadMatchesSessionRun(payload, run.sessionId, run.id))
|
|
56
|
+
return;
|
|
57
|
+
return payload;
|
|
58
|
+
}
|
|
59
|
+
export function projectStructuredOutput(value) {
|
|
60
|
+
if (value === undefined)
|
|
61
|
+
return;
|
|
62
|
+
const serialized = JSON.stringify(value);
|
|
63
|
+
if (typeof serialized !== "string")
|
|
64
|
+
throw new Error("Structured output must be JSON-serializable");
|
|
65
|
+
return Buffer.byteLength(serialized, "utf8") <= STRUCTURED_OUTPUT_INLINE_LIMIT_BYTES ? JSON.parse(serialized) : undefined;
|
|
66
|
+
}
|
|
36
67
|
export function toWaitCompletion(data, runId) {
|
|
37
68
|
const results = Array.isArray(data.results) ? data.results.flatMap((entry) => {
|
|
38
69
|
if (entry === null || typeof entry !== "object")
|
|
@@ -46,6 +77,8 @@ export function toWaitCompletion(data, runId) {
|
|
|
46
77
|
const sessionFile = asNonEmptyString(child.sessionFile);
|
|
47
78
|
const error = asNonEmptyString(child.error);
|
|
48
79
|
const model = asNonEmptyString(child.model);
|
|
80
|
+
const structuredOutput = projectStructuredOutput(child.structuredOutput);
|
|
81
|
+
const structuredOutputPath = asNonEmptyString(child.structuredOutputPath);
|
|
49
82
|
const contextOverflow = child.contextOverflow === true;
|
|
50
83
|
const timeoutRecovery = projectTimeoutRecovery(child.timeoutRecovery);
|
|
51
84
|
return [{
|
|
@@ -55,6 +88,8 @@ export function toWaitCompletion(data, runId) {
|
|
|
55
88
|
...sessionFile ? { sessionFile } : {},
|
|
56
89
|
...typeof child.success === "boolean" ? { success: child.success } : {},
|
|
57
90
|
...outputState ? { outputState } : {},
|
|
91
|
+
...structuredOutput !== undefined ? { structuredOutput } : {},
|
|
92
|
+
...structuredOutputPath ? { structuredOutputPath } : {},
|
|
58
93
|
...error ? { error } : {},
|
|
59
94
|
...model ? { model } : {},
|
|
60
95
|
...contextOverflow ? { contextOverflow: true } : {},
|
|
@@ -63,6 +98,8 @@ export function toWaitCompletion(data, runId) {
|
|
|
63
98
|
}];
|
|
64
99
|
}) : undefined;
|
|
65
100
|
const agent = asNonEmptyString(data.agent);
|
|
101
|
+
const receipt = data.workflowReceipt;
|
|
102
|
+
const workflowReceiptPath = receipt && typeof receipt === "object" && !Array.isArray(receipt) ? asNonEmptyString(receipt.path) : undefined;
|
|
66
103
|
const mode = asNonEmptyString(data.mode);
|
|
67
104
|
const state = asNonEmptyString(data.state);
|
|
68
105
|
const workflowChildren = parseWorkflowChildSummary(data.workflowChildren);
|
|
@@ -72,6 +109,7 @@ export function toWaitCompletion(data, runId) {
|
|
|
72
109
|
runId,
|
|
73
110
|
...agent ? { agent } : {},
|
|
74
111
|
...mode ? { mode } : {},
|
|
112
|
+
...workflowReceiptPath ? { workflowReceiptPath } : {},
|
|
75
113
|
...state ? { state } : {},
|
|
76
114
|
...typeof data.success === "boolean" ? { success: data.success } : {},
|
|
77
115
|
...results && results.length > 0 ? { results } : {},
|
|
@@ -79,6 +117,11 @@ export function toWaitCompletion(data, runId) {
|
|
|
79
117
|
};
|
|
80
118
|
}
|
|
81
119
|
export function recordWaitCompletion(state, runId, data, now, ttlMs, persistence) {
|
|
120
|
+
const sessionId = asNonEmptyString(data.sessionId);
|
|
121
|
+
if (!sessionId || !resultPayloadMatchesSessionRun(data, sessionId, runId))
|
|
122
|
+
return false;
|
|
123
|
+
if (persistence && persistence.sessionId !== sessionId)
|
|
124
|
+
return false;
|
|
82
125
|
const store = state.completedResults ??= new Map;
|
|
83
126
|
for (const [key, entry] of store) {
|
|
84
127
|
if (now - entry.seenAt > ttlMs)
|
|
@@ -99,51 +142,76 @@ export function recordWaitCompletion(state, runId, data, now, ttlMs, persistence
|
|
|
99
142
|
console.error(`Failed to persist completion replay for '${runId}':`, error);
|
|
100
143
|
}
|
|
101
144
|
}
|
|
102
|
-
store.set(runId, { seenAt: now, completion });
|
|
145
|
+
store.set(runId, { sessionId, seenAt: now, completion });
|
|
146
|
+
return completion.archivePath !== undefined;
|
|
103
147
|
}
|
|
104
|
-
export function collectWaitCompletions(terminal, state, resultsDir) {
|
|
148
|
+
export function collectWaitCompletions(terminal, state, resultsDir, onReference) {
|
|
105
149
|
if (terminal.length === 0)
|
|
106
150
|
return;
|
|
107
151
|
const completions = [];
|
|
152
|
+
const add = (completion, resultPath) => {
|
|
153
|
+
completions.push(completion);
|
|
154
|
+
const reference = completion.archivePath ?? resultPath;
|
|
155
|
+
if (reference)
|
|
156
|
+
onReference?.(`Result [${completion.runId}]: ${reference}`);
|
|
157
|
+
};
|
|
108
158
|
for (const run of terminal) {
|
|
109
159
|
const recorded = state.completedResults?.get(run.id);
|
|
110
|
-
if (recorded) {
|
|
111
|
-
|
|
160
|
+
if (recorded && recorded.sessionId === run.sessionId) {
|
|
161
|
+
if (recorded.completion.archivePath) {
|
|
162
|
+
add(recorded.completion);
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
try {
|
|
166
|
+
const candidatePath = waitResultPayloadCandidate(resultsDir, run);
|
|
167
|
+
if (!readWaitResultPayload(candidatePath, run)) {
|
|
168
|
+
const replay = readCompletionReplay(resultsDir, run.id, { sessionId: run.sessionId });
|
|
169
|
+
add(replay?.completion ?? recorded.completion);
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
add(recorded.completion, candidatePath);
|
|
173
|
+
continue;
|
|
174
|
+
} catch (error) {
|
|
175
|
+
if (errorCode(error) !== "ENOENT")
|
|
176
|
+
throw error;
|
|
177
|
+
}
|
|
178
|
+
const replay = readCompletionReplay(resultsDir, run.id, { sessionId: run.sessionId });
|
|
179
|
+
add(replay?.completion ?? recorded.completion);
|
|
112
180
|
continue;
|
|
113
181
|
}
|
|
114
|
-
|
|
115
|
-
let resultPath = publicResultPath;
|
|
182
|
+
let candidatePath;
|
|
116
183
|
try {
|
|
117
|
-
|
|
184
|
+
candidatePath = waitResultPayloadCandidate(resultsDir, run);
|
|
118
185
|
} catch (error) {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
} catch (fallbackError) {
|
|
124
|
-
throw new Error(`Failed to read subagent result '${publicResultPath}': ${errorMessage(fallbackError)}`, {
|
|
125
|
-
cause: fallbackError instanceof Error ? fallbackError : undefined
|
|
126
|
-
});
|
|
127
|
-
}
|
|
186
|
+
const publicResultPath = resultFilePath(resultsDir, run.id);
|
|
187
|
+
throw new Error(`Failed to read subagent result '${publicResultPath}': ${errorMessage(error)}`, {
|
|
188
|
+
cause: error instanceof Error ? error : undefined
|
|
189
|
+
});
|
|
128
190
|
}
|
|
129
191
|
try {
|
|
130
|
-
const
|
|
131
|
-
|
|
192
|
+
const payload = readWaitResultPayload(candidatePath, run);
|
|
193
|
+
if (!payload) {
|
|
194
|
+
const replay = readCompletionReplay(resultsDir, run.id, { sessionId: run.sessionId });
|
|
195
|
+
if (replay)
|
|
196
|
+
add(replay.completion);
|
|
197
|
+
continue;
|
|
198
|
+
}
|
|
199
|
+
add(toWaitCompletion(payload, run.id), candidatePath);
|
|
132
200
|
} catch (error) {
|
|
133
201
|
if (errorCode(error) !== "ENOENT") {
|
|
134
|
-
throw new Error(`Failed to read subagent result '${
|
|
202
|
+
throw new Error(`Failed to read subagent result '${candidatePath}': ${errorMessage(error)}`, {
|
|
135
203
|
cause: error instanceof Error ? error : undefined
|
|
136
204
|
});
|
|
137
205
|
}
|
|
138
206
|
const late = state.completedResults?.get(run.id);
|
|
139
|
-
if (late) {
|
|
140
|
-
|
|
207
|
+
if (late && late.sessionId === run.sessionId) {
|
|
208
|
+
add(late.completion);
|
|
141
209
|
continue;
|
|
142
210
|
}
|
|
143
211
|
try {
|
|
144
212
|
const replay = readCompletionReplay(resultsDir, run.id, { sessionId: run.sessionId });
|
|
145
213
|
if (replay)
|
|
146
|
-
|
|
214
|
+
add(replay.completion);
|
|
147
215
|
} catch (replayError) {
|
|
148
216
|
throw new Error(`Failed to read completion replay for '${run.id}': ${errorMessage(replayError)}`, {
|
|
149
217
|
cause: replayError instanceof Error ? replayError : undefined
|
|
@@ -55,6 +55,7 @@ export function createWaitSubscriptionManager(dm, state, options = {}) {
|
|
|
55
55
|
state.waitSubscriptions = subscriptions;
|
|
56
56
|
const unresolvedRestoredForegroundTokens = new Set;
|
|
57
57
|
let disposed = false;
|
|
58
|
+
let interval;
|
|
58
59
|
let lastForeignSweepAt = 0;
|
|
59
60
|
const sweepExpiredForeignSubscriptions = (force = false) => {
|
|
60
61
|
const sweptAt = now();
|
|
@@ -208,9 +209,13 @@ export function createWaitSubscriptionManager(dm, state, options = {}) {
|
|
|
208
209
|
SUBAGENT_RESULT_INTERCOM_EVENT
|
|
209
210
|
];
|
|
210
211
|
const unsubscribes = wakeChannels.map((channel) => dm.events.on(channel, reconcile));
|
|
211
|
-
const interval = setInterval(reconcile, options.pollIntervalMs ?? RECONCILE_INTERVAL_MS);
|
|
212
|
-
interval.unref?.();
|
|
213
212
|
return {
|
|
213
|
+
start() {
|
|
214
|
+
if (disposed || interval)
|
|
215
|
+
return;
|
|
216
|
+
interval = setInterval(reconcile, options.pollIntervalMs ?? RECONCILE_INTERVAL_MS);
|
|
217
|
+
interval.unref?.();
|
|
218
|
+
},
|
|
214
219
|
arm(input) {
|
|
215
220
|
const sessionId = state.currentSessionId;
|
|
216
221
|
if (!sessionId)
|
|
@@ -266,7 +271,9 @@ export function createWaitSubscriptionManager(dm, state, options = {}) {
|
|
|
266
271
|
if (disposed)
|
|
267
272
|
return;
|
|
268
273
|
disposed = true;
|
|
269
|
-
|
|
274
|
+
if (interval)
|
|
275
|
+
clearInterval(interval);
|
|
276
|
+
interval = undefined;
|
|
270
277
|
for (const unsubscribe of unsubscribes) {
|
|
271
278
|
try {
|
|
272
279
|
unsubscribe();
|
|
@@ -1,25 +1,27 @@
|
|
|
1
1
|
import { SubagentWaitParams } from "../../extension/schemas.js";
|
|
2
2
|
import { resolveWaitToolConfig, waitForSubagents } from "./subagent-wait.js";
|
|
3
3
|
import { finalizeToolResult } from "../../extension/tool-result.js";
|
|
4
|
-
export function registerWaitTool(dm, state, enabled = resolveWaitToolConfig().enabled, subscriptions, defaultTimeoutMs) {
|
|
4
|
+
export function registerWaitTool(dm, state, enabled = resolveWaitToolConfig().enabled, subscriptions, defaultTimeoutMs, child, hasPendingSupervisorRequest) {
|
|
5
5
|
const description = `Wait for background, provider, or detached work that has no native completion notification, then return.
|
|
6
6
|
|
|
7
|
-
Ordinary async subagent runs already notify this session natively when they complete or need attention. In an interactive chat, return control instead of calling this merely to wait. Use this tool for provider jobs, remembered detached foreground runs, or other background work without a native notification path. Headless runs auto-drain current-session subagent work at agent_end; use this tool only when the current turn must receive non-notifying background work results.
|
|
7
|
+
${child ? "This child runtime does not install the root session's native completion notifier. Use blocking bg_wait to collect your owned descendants during this turn, then read the returned result references before synthesizing findings. Automatic draining at agent_end keeps owned work alive but does not synthesize its results." : "Ordinary async subagent runs already notify this session natively when they complete or need attention. In an interactive chat, return control instead of calling this merely to wait. Use this tool for provider jobs, remembered detached foreground runs, or other background work without a native notification path. Headless runs auto-drain current-session subagent work at agent_end; use this tool only when the current turn must receive non-notifying background work results."}
|
|
8
8
|
|
|
9
9
|
• { } — return when the first initially active async run or registered provider item finishes, or when a subagent needs attention.
|
|
10
|
-
• { all: true } — wait for every async run
|
|
11
|
-
• { id: "..." } — wait for one async or remembered detached foreground subagent run (id or prefix).
|
|
10
|
+
• { all: true } — wait for every async run, provider item, and remembered detached foreground descendant that was active when the call began.
|
|
11
|
+
• { id: "..." } — wait for one async or remembered detached foreground subagent run (id or prefix). Named async runs that already finished return their terminal result references.
|
|
12
12
|
• { id: "...", nonBlocking: true } — resolve the prefix once, persist an exact-run wake subscription, and return immediately. Use this for detached work without native completion delivery; the originating interactive session wakes on completion, failure, attention, reconciliation failure, or timeout.
|
|
13
13
|
• { stopOnAttention: false } — for blocking waits only, keep waiting through idle or long-thinking attention; supervisor/contact requests still stop the wait.
|
|
14
14
|
• { timeoutMs: 600000 } — stop waiting after N ms; active work keeps running. Omitted values use waitTool.defaultTimeoutMs, then 30 minutes. Window expiry returns a non-error window_elapsed result with active work identities.
|
|
15
15
|
|
|
16
|
-
Non-blocking subscriptions are visible in subagent status and differ from disabling waitTool: waitTool.enabled=false returns immediately without registering any future wake. Provider jobs are session-scoped and identified exactly, so replacing one job with another cannot hide a completion. Provider extensions must be explicitly loaded in this process. In a child agent, keep \`bg_wait\`
|
|
16
|
+
Non-blocking subscriptions are visible in subagent status and differ from disabling waitTool: waitTool.enabled=false returns immediately without registering any future wake. Provider jobs are session-scoped and identified exactly, so replacing one job with another cannot hide a completion. Provider extensions must be explicitly loaded in this process. In a child agent, keep \`bg_wait\` in the child tool allowlist and load each provider through the agent's extensions or subagentOnlyExtensions; this tool never loads providers or grants tools itself.${enabled ? "" : `
|
|
17
17
|
|
|
18
|
-
Configured behavior: bg_wait
|
|
18
|
+
Configured behavior: bg_wait is disabled by config.waitTool or DM_SUBAGENT_WAIT_TOOL_ENABLED and returns immediately without blocking.`}`;
|
|
19
19
|
const execute = async (_id, params, signal, onUpdate, ctx) => finalizeToolResult(await waitForSubagents(params, signal, {
|
|
20
20
|
state,
|
|
21
|
+
nestedRootRunId: child?.nestedRootRunId,
|
|
21
22
|
events: dm.events,
|
|
22
23
|
enabled,
|
|
24
|
+
hasPendingSupervisorRequest,
|
|
23
25
|
...defaultTimeoutMs !== undefined ? { defaultTimeoutMs } : {},
|
|
24
26
|
onUpdate,
|
|
25
27
|
...subscriptions && ctx?.hasUI ? { subscribe: (input) => subscriptions.arm(input) } : {}
|
|
@@ -38,10 +40,4 @@ Configured behavior: bg_wait and its subagent_wait compatibility alias are disab
|
|
|
38
40
|
label: "Wait",
|
|
39
41
|
description: "Compatibility alias for `bg_wait`."
|
|
40
42
|
});
|
|
41
|
-
dm.registerTool({
|
|
42
|
-
...primaryTool,
|
|
43
|
-
name: "subagent_wait",
|
|
44
|
-
label: "Subagent Wait (deprecated)",
|
|
45
|
-
description: "Deprecated compatibility alias for `bg_wait`. Use `bg_wait` for background, provider, or detached work without a native completion notification. It has the same parameters and behavior."
|
|
46
|
-
});
|
|
47
43
|
}
|