@duckmind/dm-linux-x64 0.65.5 → 0.65.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1208) hide show
  1. package/README.md +0 -8
  2. package/dm +2 -2
  3. package/extensions/.dm-extensions.json +677 -44
  4. package/extensions/dm-lens/clients/actionable-warnings-logger.js +0 -6
  5. package/extensions/dm-lens/clients/actionable-warnings.js +42 -13
  6. package/extensions/dm-lens/clients/advisory-provenance.js +129 -41
  7. package/extensions/dm-lens/clients/agent-behavior-client.js +1 -0
  8. package/extensions/dm-lens/clients/analysed-root.js +0 -0
  9. package/extensions/dm-lens/clients/ast-grep-client.js +38 -3
  10. package/extensions/dm-lens/clients/ast-grep-rule-manager.js +37 -5
  11. package/extensions/dm-lens/clients/ast-grep-tool-logger.js +1 -7
  12. package/extensions/dm-lens/clients/bash-file-access.js +138 -1
  13. package/extensions/dm-lens/clients/biome-client.js +9 -2
  14. package/extensions/dm-lens/clients/blocker-freshness.js +171 -21
  15. package/extensions/dm-lens/clients/bootstrap.js +9 -5
  16. package/extensions/dm-lens/clients/bounded-pid-file-lock.js +1 -1
  17. package/extensions/dm-lens/clients/bounded-telemetry.js +1 -4
  18. package/extensions/dm-lens/clients/bundled-resource-health.js +43 -0
  19. package/extensions/dm-lens/clients/bus-events-logger.js +0 -6
  20. package/extensions/dm-lens/clients/cache/rule-cache.js +11 -3
  21. package/extensions/dm-lens/clients/cache-manager.js +29 -5
  22. package/extensions/dm-lens/clients/cache-observability.js +104 -4
  23. package/extensions/dm-lens/clients/cargo-manifest.js +6 -3
  24. package/extensions/dm-lens/clients/cascade-format.js +87 -5
  25. package/extensions/dm-lens/clients/cascade-logger.js +0 -6
  26. package/extensions/dm-lens/clients/child-unref.js +5 -9
  27. package/extensions/dm-lens/clients/code-quality-warnings.js +4 -2
  28. package/extensions/dm-lens/clients/complexity-client.js +5 -1
  29. package/extensions/dm-lens/clients/config-core/index.js +2 -68
  30. package/extensions/dm-lens/clients/config-core/process-spec.js +1 -1
  31. package/extensions/dm-lens/clients/config-core/provenance.js +1 -2
  32. package/extensions/dm-lens/clients/config-core/records.js +1 -1
  33. package/extensions/dm-lens/clients/config-core/schema.js +3 -6
  34. package/extensions/dm-lens/clients/config-diagnostic-codes.js +5 -3
  35. package/extensions/dm-lens/clients/config-locations.js +125 -5
  36. package/extensions/dm-lens/clients/config-resolve.js +12 -6
  37. package/extensions/dm-lens/clients/config-schema.js +56 -3
  38. package/extensions/dm-lens/clients/config-warn.js +3 -2
  39. package/extensions/dm-lens/clients/dead-code-client.js +4 -1
  40. package/extensions/dm-lens/clients/dead-code-logger.js +0 -3
  41. package/extensions/dm-lens/clients/degradation-ledger.js +29 -4
  42. package/extensions/dm-lens/clients/dependency-checker.js +29 -50
  43. package/extensions/dm-lens/clients/diagnostic-dispositions.js +23 -4
  44. package/extensions/dm-lens/clients/diagnostic-logger.js +1 -1
  45. package/extensions/dm-lens/clients/dispatch/ast-grep-catalog.js +19 -0
  46. package/extensions/dm-lens/clients/dispatch/auxiliary-lsp.js +9 -0
  47. package/extensions/dm-lens/clients/dispatch/collect-later-tier.js +0 -3
  48. package/extensions/dm-lens/clients/dispatch/dispatcher.js +30 -27
  49. package/extensions/dm-lens/clients/dispatch/facts/function-facts.js +1 -1
  50. package/extensions/dm-lens/clients/dispatch/facts/import-facts.js +4 -1
  51. package/extensions/dm-lens/clients/dispatch/finding-policy.js +163 -0
  52. package/extensions/dm-lens/clients/dispatch/indent-detect.js +213 -13
  53. package/extensions/dm-lens/clients/dispatch/inline-suppressions.js +20 -1
  54. package/extensions/dm-lens/clients/dispatch/integration.js +77 -13
  55. package/extensions/dm-lens/clients/dispatch/lazy.js +0 -3
  56. package/extensions/dm-lens/clients/dispatch/pending-runner-findings.js +1 -1
  57. package/extensions/dm-lens/clients/dispatch/plan.js +0 -3
  58. package/extensions/dm-lens/clients/dispatch/rule-ignores.js +21 -0
  59. package/extensions/dm-lens/clients/dispatch/rules/high-complexity.js +2 -2
  60. package/extensions/dm-lens/clients/dispatch/rules/high-fan-out.js +1 -1
  61. package/extensions/dm-lens/clients/dispatch/runners/actionlint.js +25 -29
  62. package/extensions/dm-lens/clients/dispatch/runners/ast-grep-napi.js +8 -32
  63. package/extensions/dm-lens/clients/dispatch/runners/biome-check.js +39 -23
  64. package/extensions/dm-lens/clients/dispatch/runners/cpp-check.js +29 -48
  65. package/extensions/dm-lens/clients/dispatch/runners/credo.js +17 -14
  66. package/extensions/dm-lens/clients/dispatch/runners/cue-vet.js +9 -7
  67. package/extensions/dm-lens/clients/dispatch/runners/dart-analyze.js +21 -43
  68. package/extensions/dm-lens/clients/dispatch/runners/detekt.js +11 -5
  69. package/extensions/dm-lens/clients/dispatch/runners/dotnet-build.js +27 -23
  70. package/extensions/dm-lens/clients/dispatch/runners/elixir-check.js +23 -38
  71. package/extensions/dm-lens/clients/dispatch/runners/eslint.js +22 -35
  72. package/extensions/dm-lens/clients/dispatch/runners/fish-indent.js +2 -1
  73. package/extensions/dm-lens/clients/dispatch/runners/gleam-check.js +35 -12
  74. package/extensions/dm-lens/clients/dispatch/runners/go-vet.js +5 -3
  75. package/extensions/dm-lens/clients/dispatch/runners/golangci-lint.js +21 -22
  76. package/extensions/dm-lens/clients/dispatch/runners/hadolint.js +26 -16
  77. package/extensions/dm-lens/clients/dispatch/runners/helm-lint.js +3 -1
  78. package/extensions/dm-lens/clients/dispatch/runners/helm-render.js +3 -2
  79. package/extensions/dm-lens/clients/dispatch/runners/htmlhint.js +18 -9
  80. package/extensions/dm-lens/clients/dispatch/runners/javac.js +24 -23
  81. package/extensions/dm-lens/clients/dispatch/runners/ktlint.js +23 -54
  82. package/extensions/dm-lens/clients/dispatch/runners/lsp.js +17 -7
  83. package/extensions/dm-lens/clients/dispatch/runners/markdownlint.js +12 -6
  84. package/extensions/dm-lens/clients/dispatch/runners/mypy.js +2 -1
  85. package/extensions/dm-lens/clients/dispatch/runners/oxlint.js +24 -7
  86. package/extensions/dm-lens/clients/dispatch/runners/php-lint.js +26 -17
  87. package/extensions/dm-lens/clients/dispatch/runners/phpstan.js +2 -1
  88. package/extensions/dm-lens/clients/dispatch/runners/prisma-validate.js +2 -1
  89. package/extensions/dm-lens/clients/dispatch/runners/psscriptanalyzer.js +10 -11
  90. package/extensions/dm-lens/clients/dispatch/runners/pyright.js +2 -1
  91. package/extensions/dm-lens/clients/dispatch/runners/rubocop.js +22 -18
  92. package/extensions/dm-lens/clients/dispatch/runners/ruff.js +17 -22
  93. package/extensions/dm-lens/clients/dispatch/runners/rust-clippy.js +8 -11
  94. package/extensions/dm-lens/clients/dispatch/runners/shellcheck.js +9 -4
  95. package/extensions/dm-lens/clients/dispatch/runners/shfmt.js +4 -13
  96. package/extensions/dm-lens/clients/dispatch/runners/spellcheck.js +15 -5
  97. package/extensions/dm-lens/clients/dispatch/runners/spotbugs.js +2 -1
  98. package/extensions/dm-lens/clients/dispatch/runners/sqlfluff.js +10 -4
  99. package/extensions/dm-lens/clients/dispatch/runners/stylelint.js +9 -4
  100. package/extensions/dm-lens/clients/dispatch/runners/swiftlint.js +11 -3
  101. package/extensions/dm-lens/clients/dispatch/runners/taplo.js +13 -7
  102. package/extensions/dm-lens/clients/dispatch/runners/terragrunt.js +2 -1
  103. package/extensions/dm-lens/clients/dispatch/runners/tflint.js +26 -16
  104. package/extensions/dm-lens/clients/dispatch/runners/tree-sitter.js +12 -13
  105. package/extensions/dm-lens/clients/dispatch/runners/trivy-config.js +9 -3
  106. package/extensions/dm-lens/clients/dispatch/runners/utils/availability-policy.js +5 -0
  107. package/extensions/dm-lens/clients/dispatch/runners/utils/candidate-probe.js +2 -2
  108. package/extensions/dm-lens/clients/dispatch/runners/utils/diagnostic-parsers.js +8 -52
  109. package/extensions/dm-lens/clients/dispatch/runners/utils/runner-helpers.js +35 -3
  110. package/extensions/dm-lens/clients/dispatch/runners/utils.js +0 -17
  111. package/extensions/dm-lens/clients/dispatch/runners/vale.js +12 -4
  112. package/extensions/dm-lens/clients/dispatch/runners/yaml-rule-parser.js +2 -20
  113. package/extensions/dm-lens/clients/dispatch/runners/yamllint.js +16 -4
  114. package/extensions/dm-lens/clients/dispatch/runners/zig-check.js +26 -38
  115. package/extensions/dm-lens/clients/dispatch/suppress-writer.js +13 -3
  116. package/extensions/dm-lens/clients/dispatch/types.js +4 -1
  117. package/extensions/dm-lens/clients/dispatch/utils/format-utils.js +2 -2
  118. package/extensions/dm-lens/clients/disposition-logger.js +0 -6
  119. package/extensions/dm-lens/clients/disposition-publish.js +2 -1
  120. package/extensions/dm-lens/clients/effective-config.js +14 -4
  121. package/extensions/dm-lens/clients/event-loop-hold.js +123 -0
  122. package/extensions/dm-lens/clients/event-loop-monitor.js +2 -2
  123. package/extensions/dm-lens/clients/extension-log.js +6 -1
  124. package/extensions/dm-lens/clients/feature-hints.js +2 -1
  125. package/extensions/dm-lens/clients/file-kinds.js +17 -21
  126. package/extensions/dm-lens/clients/file-role.js +11 -2
  127. package/extensions/dm-lens/clients/file-time.js +1 -1
  128. package/extensions/dm-lens/clients/file-utils.js +93 -6
  129. package/extensions/dm-lens/clients/finding-delivery-gate.js +22 -26
  130. package/extensions/dm-lens/clients/format-service.js +33 -16
  131. package/extensions/dm-lens/clients/formatters.js +129 -92
  132. package/extensions/dm-lens/clients/generated-artifacts.js +2 -2
  133. package/extensions/dm-lens/clients/generation-guard.js +4 -0
  134. package/extensions/dm-lens/clients/git-guard.js +80 -26
  135. package/extensions/dm-lens/clients/gitleaks-client.js +26 -0
  136. package/extensions/dm-lens/clients/govulncheck-client.js +34 -6
  137. package/extensions/dm-lens/clients/gradle-ktfmt-style.js +96 -13
  138. package/extensions/dm-lens/clients/grammar-source.js +3 -3
  139. package/extensions/dm-lens/clients/host-edit-normalize.js +1 -1
  140. package/extensions/dm-lens/clients/indent-retarget.js +35 -5
  141. package/extensions/dm-lens/clients/inline-blocker-dispositions.js +107 -0
  142. package/extensions/dm-lens/clients/install-diagnostics.js +8 -6
  143. package/extensions/dm-lens/clients/installer/index.js +695 -183
  144. package/extensions/dm-lens/clients/installer/managed-tool-refresh.js +85 -25
  145. package/extensions/dm-lens/clients/instance-reaper-state.js +3 -0
  146. package/extensions/dm-lens/clients/instance-reaper.js +23 -16
  147. package/extensions/dm-lens/clients/instance-registry.js +34 -2
  148. package/extensions/dm-lens/clients/jscpd-client.js +11 -1
  149. package/extensions/dm-lens/clients/knip-client.js +2 -1
  150. package/extensions/dm-lens/clients/language-profile.js +18 -12
  151. package/extensions/dm-lens/clients/language-registry.js +3 -1
  152. package/extensions/dm-lens/clients/latency-logger.js +14 -4
  153. package/extensions/dm-lens/clients/ledger-bounds.js +13 -1
  154. package/extensions/dm-lens/clients/lens-config.js +74 -7
  155. package/extensions/dm-lens/clients/lens-engine.js +9 -10
  156. package/extensions/dm-lens/clients/lens-events.js +1 -1
  157. package/extensions/dm-lens/clients/lens-flag-registry.js +47 -2
  158. package/extensions/dm-lens/clients/lens-map.js +1 -1
  159. package/extensions/dm-lens/clients/log-cleanup.js +0 -28
  160. package/extensions/dm-lens/clients/lsp/cascade-tier.js +2 -1
  161. package/extensions/dm-lens/clients/lsp/client.js +70 -30
  162. package/extensions/dm-lens/clients/lsp/config.js +41 -15
  163. package/extensions/dm-lens/clients/lsp/content-limits.js +21 -0
  164. package/extensions/dm-lens/clients/lsp/diagnostic-binding.js +8 -0
  165. package/extensions/dm-lens/clients/lsp/document-drift.js +72 -1
  166. package/extensions/dm-lens/clients/lsp/edits.js +3 -3
  167. package/extensions/dm-lens/clients/lsp/index.js +435 -62
  168. package/extensions/dm-lens/clients/lsp/inferred-project.js +1 -1
  169. package/extensions/dm-lens/clients/lsp/language.js +0 -3
  170. package/extensions/dm-lens/clients/lsp/launch.js +12 -5
  171. package/extensions/dm-lens/clients/lsp/path-utils.js +0 -2
  172. package/extensions/dm-lens/clients/lsp/pending-aux-coverage.js +0 -1
  173. package/extensions/dm-lens/clients/lsp/server.js +125 -60
  174. package/extensions/dm-lens/clients/lsp/session-roots.js +26 -5
  175. package/extensions/dm-lens/clients/lsp/sync-kind.js +14 -1
  176. package/extensions/dm-lens/clients/lsp/tsserver-sync.js +5 -7
  177. package/extensions/dm-lens/clients/lsp/wait-policy/classification.js +3 -0
  178. package/extensions/dm-lens/clients/lsp/wait-policy/strategies.js +31 -2
  179. package/extensions/dm-lens/clients/lsp/workspace-diagnostics-cache.js +26 -4
  180. package/extensions/dm-lens/clients/lsp-document-symbols.js +1 -1
  181. package/extensions/dm-lens/clients/map-with-concurrency.js +7 -3
  182. package/extensions/dm-lens/clients/mcp/analyze.js +1 -1
  183. package/extensions/dm-lens/clients/mcp/ipc.js +104 -40
  184. package/extensions/dm-lens/clients/mcp/review.js +39 -7
  185. package/extensions/dm-lens/clients/mcp/session.js +38 -4
  186. package/extensions/dm-lens/clients/metrics-history.js +19 -84
  187. package/extensions/dm-lens/clients/middle-man-analysis.js +2 -4
  188. package/extensions/dm-lens/clients/module-report.js +1 -1
  189. package/extensions/dm-lens/clients/mutating-tool.js +3 -3
  190. package/extensions/dm-lens/clients/mutation-attribution.js +3 -3
  191. package/extensions/dm-lens/clients/ndjson-logger.js +17 -9
  192. package/extensions/dm-lens/clients/observed-mutation.js +42 -11
  193. package/extensions/dm-lens/clients/opaque-mutation-scan.js +17 -7
  194. package/extensions/dm-lens/clients/opengrep-client.js +92 -10
  195. package/extensions/dm-lens/clients/opengrep-config.js +1 -1
  196. package/extensions/dm-lens/clients/package-manager.js +2 -1
  197. package/extensions/dm-lens/clients/path-utils.js +199 -3
  198. package/extensions/dm-lens/clients/performance-report.js +3 -3
  199. package/extensions/dm-lens/clients/persistent-reverify.js +167 -0
  200. package/extensions/dm-lens/clients/php-cs-fixer-config.js +9 -4
  201. package/extensions/dm-lens/clients/pipeline.js +124 -68
  202. package/extensions/dm-lens/clients/project-changes.js +1 -1
  203. package/extensions/dm-lens/clients/project-diagnostics/cache.js +19 -5
  204. package/extensions/dm-lens/clients/project-diagnostics/extractors.js +1 -1
  205. package/extensions/dm-lens/clients/project-diagnostics/fresh-fetch.js +150 -18
  206. package/extensions/dm-lens/clients/project-diagnostics/runner-adapters/dead-code.js +4 -1
  207. package/extensions/dm-lens/clients/project-diagnostics/runner-adapters/gitleaks.js +3 -3
  208. package/extensions/dm-lens/clients/project-diagnostics/runner-adapters/jscpd.js +1 -1
  209. package/extensions/dm-lens/clients/project-diagnostics/runner-adapters/knip.js +1 -1
  210. package/extensions/dm-lens/clients/project-diagnostics/runner-adapters/madge.js +1 -1
  211. package/extensions/dm-lens/clients/project-diagnostics/runner-adapters/opengrep.js +1 -1
  212. package/extensions/dm-lens/clients/project-diagnostics/runner-adapters/runner-findings.js +19 -2
  213. package/extensions/dm-lens/clients/project-diagnostics/scanner.js +35 -4
  214. package/extensions/dm-lens/clients/project-lens-config.js +58 -4
  215. package/extensions/dm-lens/clients/project-scan-policy.js +0 -46
  216. package/extensions/dm-lens/clients/python-environment.js +80 -4
  217. package/extensions/dm-lens/clients/python-provenance.js +551 -0
  218. package/extensions/dm-lens/clients/read-guard-logger.js +3 -1
  219. package/extensions/dm-lens/clients/read-guard.js +29 -6
  220. package/extensions/dm-lens/clients/recent-touches.js +2 -2
  221. package/extensions/dm-lens/clients/resource-sampler.js +59 -9
  222. package/extensions/dm-lens/clients/review-graph/builder.js +39 -34
  223. package/extensions/dm-lens/clients/review-graph/git-identity.js +11 -7
  224. package/extensions/dm-lens/clients/review-graph/import-resolvers.js +1 -1
  225. package/extensions/dm-lens/clients/review-graph-logger.js +3 -1
  226. package/extensions/dm-lens/clients/ruff-client.js +11 -10
  227. package/extensions/dm-lens/clients/runtime-agent-end.js +41 -5
  228. package/extensions/dm-lens/clients/runtime-context.js +5 -2
  229. package/extensions/dm-lens/clients/runtime-coordinator.js +60 -6
  230. package/extensions/dm-lens/clients/runtime-session.js +52 -8
  231. package/extensions/dm-lens/clients/runtime-tool-call.js +27 -15
  232. package/extensions/dm-lens/clients/runtime-tool-result.js +279 -63
  233. package/extensions/dm-lens/clients/runtime-turn.js +453 -185
  234. package/extensions/dm-lens/clients/safe-spawn.js +248 -62
  235. package/extensions/dm-lens/clients/sanitize.js +0 -4
  236. package/extensions/dm-lens/clients/scan-utils.js +1 -39
  237. package/extensions/dm-lens/clients/scratch-tree-policy.js +2 -3
  238. package/extensions/dm-lens/clients/security-scan-client.js +2 -2
  239. package/extensions/dm-lens/clients/session-event-guard.js +59 -2
  240. package/extensions/dm-lens/clients/session-summary.js +0 -25
  241. package/extensions/dm-lens/clients/sg-runner.js +24 -12
  242. package/extensions/dm-lens/clients/sgconfig.js +58 -6
  243. package/extensions/dm-lens/clients/shared-checkout-guard.js +1 -1
  244. package/extensions/dm-lens/clients/situational-tool-telemetry.js +85 -0
  245. package/extensions/dm-lens/clients/skills-resolver.js +42 -0
  246. package/extensions/dm-lens/clients/smells-rollup.js +2 -2
  247. package/extensions/dm-lens/clients/spawn-output-cap.js +29 -0
  248. package/extensions/dm-lens/clients/startup-scan.js +1 -2
  249. package/extensions/dm-lens/clients/string-utils.js +3 -0
  250. package/extensions/dm-lens/clients/test-runner-client.js +118 -57
  251. package/extensions/dm-lens/clients/test-runner-delivery.js +118 -66
  252. package/extensions/dm-lens/clients/tool-agreement.js +403 -0
  253. package/extensions/dm-lens/clients/tool-config.js +218 -0
  254. package/extensions/dm-lens/clients/tool-cwd.js +248 -0
  255. package/extensions/dm-lens/clients/tool-definition.js +18 -1
  256. package/extensions/dm-lens/clients/tool-policy.js +138 -10
  257. package/extensions/dm-lens/clients/tool-probe.js +5 -0
  258. package/extensions/dm-lens/clients/tool-set-policy.js +35 -0
  259. package/extensions/dm-lens/clients/tree-sitter-client.js +201 -80
  260. package/extensions/dm-lens/clients/tree-sitter-query-loader.js +78 -130
  261. package/extensions/dm-lens/clients/trivy-client.js +8 -1
  262. package/extensions/dm-lens/clients/tui-fit.js +0 -3
  263. package/extensions/dm-lens/clients/turn-context.js +48 -0
  264. package/extensions/dm-lens/clients/turn-end/lane.js +0 -0
  265. package/extensions/dm-lens/clients/turn-end/lanes/govulncheck.js +54 -0
  266. package/extensions/dm-lens/clients/turn-end/lanes/secrets.js +140 -0
  267. package/extensions/dm-lens/clients/user-notify.js +0 -3
  268. package/extensions/dm-lens/clients/warm-attach.js +25 -0
  269. package/extensions/dm-lens/clients/widget-state.js +203 -13
  270. package/extensions/dm-lens/clients/word-index-logger.js +0 -6
  271. package/extensions/dm-lens/clients/word-index-store.js +1 -4
  272. package/extensions/dm-lens/clients/word-index.js +9 -5
  273. package/extensions/dm-lens/clients/workspace-topology.js +20 -3
  274. package/extensions/dm-lens/clients/write-ordering-guard.js +6 -0
  275. package/extensions/dm-lens/clients/zizmor-config.js +15 -11
  276. package/extensions/dm-lens/config/dependency-cruiser-eager-allowlist.json +8 -2
  277. package/extensions/dm-lens/dist/clients/actionable-warnings-logger.js +24 -0
  278. package/extensions/dm-lens/dist/clients/actionable-warnings.js +1014 -0
  279. package/extensions/dm-lens/dist/clients/advisory-provenance.js +385 -0
  280. package/extensions/dm-lens/dist/clients/agent-behavior-client.js +94 -0
  281. package/extensions/dm-lens/dist/clients/agent-nudge.js +151 -0
  282. package/extensions/dm-lens/dist/clients/analysed-root.js +1 -0
  283. package/extensions/dm-lens/dist/clients/ast-grep-client.js +576 -0
  284. package/extensions/dm-lens/dist/clients/ast-grep-rule-manager.js +114 -0
  285. package/extensions/dm-lens/dist/clients/ast-grep-tool-logger.js +85 -0
  286. package/extensions/dm-lens/dist/clients/ast-grep-types.js +1 -0
  287. package/extensions/dm-lens/dist/clients/ast-grep-yaml-synth.js +109 -0
  288. package/extensions/dm-lens/dist/clients/atomic-write-staging.js +66 -0
  289. package/extensions/dm-lens/dist/clients/atomic-write.js +37 -0
  290. package/extensions/dm-lens/dist/clients/availability-probe-flight.js +11 -0
  291. package/extensions/dm-lens/dist/clients/bash-file-access.js +830 -0
  292. package/extensions/dm-lens/dist/clients/biome-client.js +221 -0
  293. package/extensions/dm-lens/dist/clients/blocker-freshness.js +385 -0
  294. package/extensions/dm-lens/dist/clients/blocker-past-eof.js +49 -0
  295. package/extensions/dm-lens/dist/clients/bootstrap.js +246 -0
  296. package/extensions/dm-lens/dist/clients/bounded-cache.js +105 -0
  297. package/extensions/dm-lens/dist/clients/bounded-pid-file-lock.js +173 -0
  298. package/extensions/dm-lens/dist/clients/bounded-telemetry.js +104 -0
  299. package/extensions/dm-lens/dist/clients/build-identity.js +45 -0
  300. package/extensions/dm-lens/dist/clients/bundled-resource-health.js +41 -0
  301. package/extensions/dm-lens/dist/clients/bus-events-logger.js +48 -0
  302. package/extensions/dm-lens/dist/clients/bus-publish.js +117 -0
  303. package/extensions/dm-lens/dist/clients/cache/rule-cache.js +103 -0
  304. package/extensions/dm-lens/dist/clients/cache-manager.js +340 -0
  305. package/extensions/dm-lens/dist/clients/cache-observability.js +847 -0
  306. package/extensions/dm-lens/dist/clients/call-graph.js +628 -0
  307. package/extensions/dm-lens/dist/clients/cargo-manifest.js +151 -0
  308. package/extensions/dm-lens/dist/clients/cascade-budget.js +52 -0
  309. package/extensions/dm-lens/dist/clients/cascade-format.js +160 -0
  310. package/extensions/dm-lens/dist/clients/cascade-logger.js +22 -0
  311. package/extensions/dm-lens/dist/clients/cascade-types.js +1 -0
  312. package/extensions/dm-lens/dist/clients/child-unref.js +59 -0
  313. package/extensions/dm-lens/dist/clients/code-quality-warnings.js +192 -0
  314. package/extensions/dm-lens/dist/clients/codebase-model.js +110 -0
  315. package/extensions/dm-lens/dist/clients/collateral-test-role.js +8 -0
  316. package/extensions/dm-lens/dist/clients/complexity-client.js +398 -0
  317. package/extensions/dm-lens/dist/clients/config-core/deny.js +117 -0
  318. package/extensions/dm-lens/dist/clients/config-core/index.js +2 -0
  319. package/extensions/dm-lens/dist/clients/config-core/merge.js +228 -0
  320. package/extensions/dm-lens/dist/clients/config-core/normalize.js +217 -0
  321. package/extensions/dm-lens/dist/clients/config-core/process-spec.js +147 -0
  322. package/extensions/dm-lens/dist/clients/config-core/provenance.js +54 -0
  323. package/extensions/dm-lens/dist/clients/config-core/records.js +79 -0
  324. package/extensions/dm-lens/dist/clients/config-core/resolve.js +48 -0
  325. package/extensions/dm-lens/dist/clients/config-core/safe-object.js +22 -0
  326. package/extensions/dm-lens/dist/clients/config-core/schema.js +90 -0
  327. package/extensions/dm-lens/dist/clients/config-diagnostic-codes.js +90 -0
  328. package/extensions/dm-lens/dist/clients/config-locations.js +175 -0
  329. package/extensions/dm-lens/dist/clients/config-resolve.js +359 -0
  330. package/extensions/dm-lens/dist/clients/config-schema.js +128 -0
  331. package/extensions/dm-lens/dist/clients/config-warn.js +146 -0
  332. package/extensions/dm-lens/dist/clients/console-guard-install.js +4 -0
  333. package/extensions/dm-lens/dist/clients/cooperative-budget.js +36 -0
  334. package/extensions/dm-lens/dist/clients/dead-code-client.js +342 -0
  335. package/extensions/dm-lens/dist/clients/dead-code-logger.js +18 -0
  336. package/extensions/dm-lens/dist/clients/deadline-utils.js +117 -0
  337. package/extensions/dm-lens/dist/clients/debug-handles.js +121 -0
  338. package/extensions/dm-lens/dist/clients/debug-heap.js +80 -0
  339. package/extensions/dm-lens/dist/clients/deferred-lsp-work.js +33 -0
  340. package/extensions/dm-lens/dist/clients/degradation-ledger.js +272 -0
  341. package/extensions/dm-lens/dist/clients/demoted-finding-render.js +61 -0
  342. package/extensions/dm-lens/dist/clients/dependency-checker.js +525 -0
  343. package/extensions/dm-lens/dist/clients/deps/ast-grep-napi.js +17 -0
  344. package/extensions/dm-lens/dist/clients/deps/dm-host-deps.js +10 -0
  345. package/extensions/dm-lens/dist/clients/deps/dm-tui-compat.js +58 -0
  346. package/extensions/dm-lens/dist/clients/deps/js-yaml.js +7 -0
  347. package/extensions/dm-lens/dist/clients/deps/minimatch.js +6 -0
  348. package/extensions/dm-lens/dist/clients/deps/pidusage.js +5 -0
  349. package/extensions/dm-lens/dist/clients/deps/typebox.js +5 -0
  350. package/extensions/dm-lens/dist/clients/deps/vscode-jsonrpc.js +8 -0
  351. package/extensions/dm-lens/dist/clients/deps/web-tree-sitter.js +11 -0
  352. package/extensions/dm-lens/dist/clients/diagnostic-dispositions.js +318 -0
  353. package/extensions/dm-lens/dist/clients/diagnostic-line-freshness.js +144 -0
  354. package/extensions/dm-lens/dist/clients/diagnostic-logger.js +60 -0
  355. package/extensions/dm-lens/dist/clients/diagnostic-tracker.js +89 -0
  356. package/extensions/dm-lens/dist/clients/diagnostics-publish.js +134 -0
  357. package/extensions/dm-lens/dist/clients/dispatch/ast-grep-catalog.js +16 -0
  358. package/extensions/dm-lens/dist/clients/dispatch/auxiliary-lsp.js +158 -0
  359. package/extensions/dm-lens/dist/clients/dispatch/collect-later-tier.js +25 -0
  360. package/extensions/dm-lens/dist/clients/dispatch/diagnostic-taxonomy.js +58 -0
  361. package/extensions/dm-lens/dist/clients/dispatch/dispatcher.js +953 -0
  362. package/extensions/dm-lens/dist/clients/dispatch/fact-provider-types.js +1 -0
  363. package/extensions/dm-lens/dist/clients/dispatch/fact-rule-runner.js +17 -0
  364. package/extensions/dm-lens/dist/clients/dispatch/fact-runner.js +18 -0
  365. package/extensions/dm-lens/dist/clients/dispatch/fact-scheduler.js +52 -0
  366. package/extensions/dm-lens/dist/clients/dispatch/fact-store.js +199 -0
  367. package/extensions/dm-lens/dist/clients/dispatch/facts/comment-facts.js +20 -0
  368. package/extensions/dm-lens/dist/clients/dispatch/facts/file-content.js +18 -0
  369. package/extensions/dm-lens/dist/clients/dispatch/facts/function-facts.js +281 -0
  370. package/extensions/dm-lens/dist/clients/dispatch/facts/import-facts.js +169 -0
  371. package/extensions/dm-lens/dist/clients/dispatch/facts/tree-sitter-facts.js +19 -0
  372. package/extensions/dm-lens/dist/clients/dispatch/facts/try-catch-facts.js +95 -0
  373. package/extensions/dm-lens/dist/clients/dispatch/finding-policy.js +159 -0
  374. package/extensions/dm-lens/dist/clients/dispatch/indent-detect.js +227 -0
  375. package/extensions/dm-lens/dist/clients/dispatch/inline-suppressions.js +52 -0
  376. package/extensions/dm-lens/dist/clients/dispatch/integration.js +1463 -0
  377. package/extensions/dm-lens/dist/clients/dispatch/lazy.js +8 -0
  378. package/extensions/dm-lens/dist/clients/dispatch/pending-runner-findings.js +75 -0
  379. package/extensions/dm-lens/dist/clients/dispatch/plan.js +278 -0
  380. package/extensions/dm-lens/dist/clients/dispatch/priorities.js +14 -0
  381. package/extensions/dm-lens/dist/clients/dispatch/rule-id-normalize.js +42 -0
  382. package/extensions/dm-lens/dist/clients/dispatch/rule-ignores.js +21 -0
  383. package/extensions/dm-lens/dist/clients/dispatch/rule-policy.js +73 -0
  384. package/extensions/dm-lens/dist/clients/dispatch/rules/async-noise.js +31 -0
  385. package/extensions/dm-lens/dist/clients/dispatch/rules/async-unnecessary-wrapper.js +27 -0
  386. package/extensions/dm-lens/dist/clients/dispatch/rules/cors-wildcard.js +35 -0
  387. package/extensions/dm-lens/dist/clients/dispatch/rules/error-obscuring.js +29 -0
  388. package/extensions/dm-lens/dist/clients/dispatch/rules/error-swallowing.js +29 -0
  389. package/extensions/dm-lens/dist/clients/dispatch/rules/framework-call-noise.js +31 -0
  390. package/extensions/dm-lens/dist/clients/dispatch/rules/high-complexity.js +56 -0
  391. package/extensions/dm-lens/dist/clients/dispatch/rules/high-fan-out.js +45 -0
  392. package/extensions/dm-lens/dist/clients/dispatch/rules/high-import-coupling.js +31 -0
  393. package/extensions/dm-lens/dist/clients/dispatch/rules/missing-error-propagation.js +45 -0
  394. package/extensions/dm-lens/dist/clients/dispatch/rules/no-commented-credentials.js +46 -0
  395. package/extensions/dm-lens/dist/clients/dispatch/rules/pass-through-wrappers.js +38 -0
  396. package/extensions/dm-lens/dist/clients/dispatch/rules/placeholder-comments.js +40 -0
  397. package/extensions/dm-lens/dist/clients/dispatch/rules/unsafe-boundary.js +101 -0
  398. package/extensions/dm-lens/dist/clients/dispatch/runner-context.js +46 -0
  399. package/extensions/dm-lens/dist/clients/dispatch/runners/actionlint.js +98 -0
  400. package/extensions/dm-lens/dist/clients/dispatch/runners/ast-grep-napi.js +690 -0
  401. package/extensions/dm-lens/dist/clients/dispatch/runners/biome-check.js +202 -0
  402. package/extensions/dm-lens/dist/clients/dispatch/runners/cpp-check.js +190 -0
  403. package/extensions/dm-lens/dist/clients/dispatch/runners/credo.js +66 -0
  404. package/extensions/dm-lens/dist/clients/dispatch/runners/cue-vet.js +167 -0
  405. package/extensions/dm-lens/dist/clients/dispatch/runners/dart-analyze.js +151 -0
  406. package/extensions/dm-lens/dist/clients/dispatch/runners/detekt.js +157 -0
  407. package/extensions/dm-lens/dist/clients/dispatch/runners/dotnet-build.js +157 -0
  408. package/extensions/dm-lens/dist/clients/dispatch/runners/elixir-check.js +153 -0
  409. package/extensions/dm-lens/dist/clients/dispatch/runners/eslint.js +99 -0
  410. package/extensions/dm-lens/dist/clients/dispatch/runners/fact-rules.js +20 -0
  411. package/extensions/dm-lens/dist/clients/dispatch/runners/fish-indent.js +65 -0
  412. package/extensions/dm-lens/dist/clients/dispatch/runners/gleam-check.js +107 -0
  413. package/extensions/dm-lens/dist/clients/dispatch/runners/go-vet.js +51 -0
  414. package/extensions/dm-lens/dist/clients/dispatch/runners/golangci-lint.js +89 -0
  415. package/extensions/dm-lens/dist/clients/dispatch/runners/hadolint.js +83 -0
  416. package/extensions/dm-lens/dist/clients/dispatch/runners/helm-lint.js +144 -0
  417. package/extensions/dm-lens/dist/clients/dispatch/runners/helm-render.js +593 -0
  418. package/extensions/dm-lens/dist/clients/dispatch/runners/htmlhint.js +103 -0
  419. package/extensions/dm-lens/dist/clients/dispatch/runners/index.js +100 -0
  420. package/extensions/dm-lens/dist/clients/dispatch/runners/javac.js +82 -0
  421. package/extensions/dm-lens/dist/clients/dispatch/runners/ktlint.js +93 -0
  422. package/extensions/dm-lens/dist/clients/dispatch/runners/lsp.js +206 -0
  423. package/extensions/dm-lens/dist/clients/dispatch/runners/markdownlint.js +129 -0
  424. package/extensions/dm-lens/dist/clients/dispatch/runners/mypy.js +70 -0
  425. package/extensions/dm-lens/dist/clients/dispatch/runners/oxlint.js +305 -0
  426. package/extensions/dm-lens/dist/clients/dispatch/runners/php-lint.js +70 -0
  427. package/extensions/dm-lens/dist/clients/dispatch/runners/phpstan.js +90 -0
  428. package/extensions/dm-lens/dist/clients/dispatch/runners/prisma-validate.js +56 -0
  429. package/extensions/dm-lens/dist/clients/dispatch/runners/psscriptanalyzer.js +307 -0
  430. package/extensions/dm-lens/dist/clients/dispatch/runners/pyright.js +118 -0
  431. package/extensions/dm-lens/dist/clients/dispatch/runners/rubocop.js +79 -0
  432. package/extensions/dm-lens/dist/clients/dispatch/runners/ruff.js +69 -0
  433. package/extensions/dm-lens/dist/clients/dispatch/runners/rust-clippy.js +147 -0
  434. package/extensions/dm-lens/dist/clients/dispatch/runners/shellcheck.js +111 -0
  435. package/extensions/dm-lens/dist/clients/dispatch/runners/shfmt.js +81 -0
  436. package/extensions/dm-lens/dist/clients/dispatch/runners/spellcheck.js +74 -0
  437. package/extensions/dm-lens/dist/clients/dispatch/runners/spotbugs.js +208 -0
  438. package/extensions/dm-lens/dist/clients/dispatch/runners/sqlfluff.js +136 -0
  439. package/extensions/dm-lens/dist/clients/dispatch/runners/stylelint.js +118 -0
  440. package/extensions/dm-lens/dist/clients/dispatch/runners/swiftlint.js +143 -0
  441. package/extensions/dm-lens/dist/clients/dispatch/runners/taplo.js +97 -0
  442. package/extensions/dm-lens/dist/clients/dispatch/runners/terragrunt.js +110 -0
  443. package/extensions/dm-lens/dist/clients/dispatch/runners/tflint.js +104 -0
  444. package/extensions/dm-lens/dist/clients/dispatch/runners/tree-sitter.js +516 -0
  445. package/extensions/dm-lens/dist/clients/dispatch/runners/trivy-config.js +155 -0
  446. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/availability-policy.js +285 -0
  447. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/candidate-probe.js +61 -0
  448. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/diagnostic-parsers.js +61 -0
  449. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/lazy-installer.js +130 -0
  450. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/runner-helpers.js +1067 -0
  451. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/spawn-outcome.js +40 -0
  452. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/tool-failure.js +117 -0
  453. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/toolchain-availability.js +88 -0
  454. package/extensions/dm-lens/dist/clients/dispatch/runners/utils.js +8 -0
  455. package/extensions/dm-lens/dist/clients/dispatch/runners/vale.js +106 -0
  456. package/extensions/dm-lens/dist/clients/dispatch/runners/yaml-rule-parser.js +163 -0
  457. package/extensions/dm-lens/dist/clients/dispatch/runners/yamllint.js +83 -0
  458. package/extensions/dm-lens/dist/clients/dispatch/runners/zig-check.js +72 -0
  459. package/extensions/dm-lens/dist/clients/dispatch/suppress-writer.js +57 -0
  460. package/extensions/dm-lens/dist/clients/dispatch/tool-profile.js +30 -0
  461. package/extensions/dm-lens/dist/clients/dispatch/types.js +7 -0
  462. package/extensions/dm-lens/dist/clients/dispatch/utils/format-utils.js +45 -0
  463. package/extensions/dm-lens/dist/clients/dispatch/utils/lsp-diagnostics.js +31 -0
  464. package/extensions/dm-lens/dist/clients/disposition-logger.js +19 -0
  465. package/extensions/dm-lens/dist/clients/disposition-publish.js +88 -0
  466. package/extensions/dm-lens/dist/clients/durable-store.js +77 -0
  467. package/extensions/dm-lens/dist/clients/effective-config.js +160 -0
  468. package/extensions/dm-lens/dist/clients/env-utils.js +26 -0
  469. package/extensions/dm-lens/dist/clients/error-class.js +3 -0
  470. package/extensions/dm-lens/dist/clients/eval-timestamp.js +2 -0
  471. package/extensions/dm-lens/dist/clients/event-loop-hold.js +119 -0
  472. package/extensions/dm-lens/dist/clients/event-loop-monitor.js +84 -0
  473. package/extensions/dm-lens/dist/clients/extension-log.js +230 -0
  474. package/extensions/dm-lens/dist/clients/extension-mode.js +20 -0
  475. package/extensions/dm-lens/dist/clients/feature-hints.js +88 -0
  476. package/extensions/dm-lens/dist/clients/file-kinds.js +304 -0
  477. package/extensions/dm-lens/dist/clients/file-role.js +50 -0
  478. package/extensions/dm-lens/dist/clients/file-time.js +112 -0
  479. package/extensions/dm-lens/dist/clients/file-utils.js +630 -0
  480. package/extensions/dm-lens/dist/clients/finding-delivery-gate.js +129 -0
  481. package/extensions/dm-lens/dist/clients/finding-identity.js +23 -0
  482. package/extensions/dm-lens/dist/clients/fix-worklog.js +75 -0
  483. package/extensions/dm-lens/dist/clients/format-events-publish.js +230 -0
  484. package/extensions/dm-lens/dist/clients/format-service.js +154 -0
  485. package/extensions/dm-lens/dist/clients/formatters-lazy.js +8 -0
  486. package/extensions/dm-lens/dist/clients/formatters.js +1351 -0
  487. package/extensions/dm-lens/dist/clients/freshness-cadence.js +1 -0
  488. package/extensions/dm-lens/dist/clients/freshness.js +8 -0
  489. package/extensions/dm-lens/dist/clients/generated-artifacts.js +209 -0
  490. package/extensions/dm-lens/dist/clients/generation-guard.js +105 -0
  491. package/extensions/dm-lens/dist/clients/git-guard.js +770 -0
  492. package/extensions/dm-lens/dist/clients/git-tracked-ignore.js +120 -0
  493. package/extensions/dm-lens/dist/clients/gitleaks-client.js +282 -0
  494. package/extensions/dm-lens/dist/clients/go-client.js +47 -0
  495. package/extensions/dm-lens/dist/clients/govulncheck-client.js +411 -0
  496. package/extensions/dm-lens/dist/clients/gradle-ktfmt-style.js +177 -0
  497. package/extensions/dm-lens/dist/clients/grammar-source.js +224 -0
  498. package/extensions/dm-lens/dist/clients/gzip-stage-write.js +85 -0
  499. package/extensions/dm-lens/dist/clients/hashline-anchor.js +222 -0
  500. package/extensions/dm-lens/dist/clients/hook-budgets.js +16 -0
  501. package/extensions/dm-lens/dist/clients/host-edit-normalize.js +87 -0
  502. package/extensions/dm-lens/dist/clients/host-ports.js +35 -0
  503. package/extensions/dm-lens/dist/clients/indent-retarget.js +102 -0
  504. package/extensions/dm-lens/dist/clients/inline-blocker-dispositions.js +103 -0
  505. package/extensions/dm-lens/dist/clients/install-diagnostics.js +123 -0
  506. package/extensions/dm-lens/dist/clients/installer/index.js +3770 -0
  507. package/extensions/dm-lens/dist/clients/installer/managed-tool-refresh-session.js +17 -0
  508. package/extensions/dm-lens/dist/clients/installer/managed-tool-refresh.js +522 -0
  509. package/extensions/dm-lens/dist/clients/instance-reaper-state.js +3 -0
  510. package/extensions/dm-lens/dist/clients/instance-reaper.js +577 -0
  511. package/extensions/dm-lens/dist/clients/instance-registry-lock.js +131 -0
  512. package/extensions/dm-lens/dist/clients/instance-registry.js +452 -0
  513. package/extensions/dm-lens/dist/clients/jscpd-client.js +252 -0
  514. package/extensions/dm-lens/dist/clients/json-cache-read.js +25 -0
  515. package/extensions/dm-lens/dist/clients/knip-client.js +472 -0
  516. package/extensions/dm-lens/dist/clients/language-policy.js +242 -0
  517. package/extensions/dm-lens/dist/clients/language-profile.js +261 -0
  518. package/extensions/dm-lens/dist/clients/language-registry.js +424 -0
  519. package/extensions/dm-lens/dist/clients/latency-logger.js +192 -0
  520. package/extensions/dm-lens/dist/clients/lazy-import.js +14 -0
  521. package/extensions/dm-lens/dist/clients/ledger-bounds.js +21 -0
  522. package/extensions/dm-lens/dist/clients/lens-config.js +237 -0
  523. package/extensions/dm-lens/dist/clients/lens-engine.js +181 -0
  524. package/extensions/dm-lens/dist/clients/lens-events.js +105 -0
  525. package/extensions/dm-lens/dist/clients/lens-flag-registry.js +302 -0
  526. package/extensions/dm-lens/dist/clients/lens-map.js +980 -0
  527. package/extensions/dm-lens/dist/clients/live-bus-emitter.js +53 -0
  528. package/extensions/dm-lens/dist/clients/log-cleanup.js +138 -0
  529. package/extensions/dm-lens/dist/clients/lsp/aggregation.js +88 -0
  530. package/extensions/dm-lens/dist/clients/lsp/cascade-tier.js +203 -0
  531. package/extensions/dm-lens/dist/clients/lsp/client.js +2709 -0
  532. package/extensions/dm-lens/dist/clients/lsp/config.js +252 -0
  533. package/extensions/dm-lens/dist/clients/lsp/content-limits.js +21 -0
  534. package/extensions/dm-lens/dist/clients/lsp/diagnostic-binding.js +79 -0
  535. package/extensions/dm-lens/dist/clients/lsp/document-drift.js +312 -0
  536. package/extensions/dm-lens/dist/clients/lsp/edits.js +930 -0
  537. package/extensions/dm-lens/dist/clients/lsp/index.js +4448 -0
  538. package/extensions/dm-lens/dist/clients/lsp/inferred-project.js +121 -0
  539. package/extensions/dm-lens/dist/clients/lsp/jvm-runtime.js +194 -0
  540. package/extensions/dm-lens/dist/clients/lsp/language.js +23 -0
  541. package/extensions/dm-lens/dist/clients/lsp/launch.js +468 -0
  542. package/extensions/dm-lens/dist/clients/lsp/lombok.js +146 -0
  543. package/extensions/dm-lens/dist/clients/lsp/path-utils.js +1 -0
  544. package/extensions/dm-lens/dist/clients/lsp/pending-aux-coverage.js +90 -0
  545. package/extensions/dm-lens/dist/clients/lsp/position-encoding.js +28 -0
  546. package/extensions/dm-lens/dist/clients/lsp/ruby-drive-dirs.js +42 -0
  547. package/extensions/dm-lens/dist/clients/lsp/server.js +2422 -0
  548. package/extensions/dm-lens/dist/clients/lsp/session-roots.js +52 -0
  549. package/extensions/dm-lens/dist/clients/lsp/spawn-history.js +15 -0
  550. package/extensions/dm-lens/dist/clients/lsp/sync-kind.js +30 -0
  551. package/extensions/dm-lens/dist/clients/lsp/tsserver-sync.js +156 -0
  552. package/extensions/dm-lens/dist/clients/lsp/wait-policy/capability-snapshot.js +1 -0
  553. package/extensions/dm-lens/dist/clients/lsp/wait-policy/classification.js +36 -0
  554. package/extensions/dm-lens/dist/clients/lsp/wait-policy/index.js +3 -0
  555. package/extensions/dm-lens/dist/clients/lsp/wait-policy/strategies.js +175 -0
  556. package/extensions/dm-lens/dist/clients/lsp/watch-queue.js +40 -0
  557. package/extensions/dm-lens/dist/clients/lsp/workspace-diagnostics-cache.js +267 -0
  558. package/extensions/dm-lens/dist/clients/lsp/workspace-diagnostics-session.js +7 -0
  559. package/extensions/dm-lens/dist/clients/lsp/workspace-sweep-hold.js +93 -0
  560. package/extensions/dm-lens/dist/clients/lsp-budget.js +83 -0
  561. package/extensions/dm-lens/dist/clients/lsp-document-symbols.js +93 -0
  562. package/extensions/dm-lens/dist/clients/lsp-lazy.js +8 -0
  563. package/extensions/dm-lens/dist/clients/lsp-mutation.js +273 -0
  564. package/extensions/dm-lens/dist/clients/lsp-status.js +37 -0
  565. package/extensions/dm-lens/dist/clients/map-with-concurrency.js +20 -0
  566. package/extensions/dm-lens/dist/clients/mcp/analyze.js +251 -0
  567. package/extensions/dm-lens/dist/clients/mcp/host-shim.js +14 -0
  568. package/extensions/dm-lens/dist/clients/mcp/ipc.js +302 -0
  569. package/extensions/dm-lens/dist/clients/mcp/review.js +137 -0
  570. package/extensions/dm-lens/dist/clients/mcp/session.js +305 -0
  571. package/extensions/dm-lens/dist/clients/memory-sampler.js +107 -0
  572. package/extensions/dm-lens/dist/clients/message-end-attribution.js +18 -0
  573. package/extensions/dm-lens/dist/clients/metrics-client.js +80 -0
  574. package/extensions/dm-lens/dist/clients/metrics-history.js +255 -0
  575. package/extensions/dm-lens/dist/clients/middle-man-analysis.js +161 -0
  576. package/extensions/dm-lens/dist/clients/model-provider.js +31 -0
  577. package/extensions/dm-lens/dist/clients/module-report-lsp.js +140 -0
  578. package/extensions/dm-lens/dist/clients/module-report.js +1642 -0
  579. package/extensions/dm-lens/dist/clients/mutating-tool.js +377 -0
  580. package/extensions/dm-lens/dist/clients/mutation-attribution.js +168 -0
  581. package/extensions/dm-lens/dist/clients/mutation-bridge.js +102 -0
  582. package/extensions/dm-lens/dist/clients/ndjson-logger.js +471 -0
  583. package/extensions/dm-lens/dist/clients/observed-mutation-sources.js +43 -0
  584. package/extensions/dm-lens/dist/clients/observed-mutation.js +709 -0
  585. package/extensions/dm-lens/dist/clients/oldtext-autopatch.js +100 -0
  586. package/extensions/dm-lens/dist/clients/opaque-mutation-scan.js +313 -0
  587. package/extensions/dm-lens/dist/clients/opengrep-client.js +216 -0
  588. package/extensions/dm-lens/dist/clients/opengrep-config.js +52 -0
  589. package/extensions/dm-lens/dist/clients/package-manager.js +303 -0
  590. package/extensions/dm-lens/dist/clients/package-root.js +25 -0
  591. package/extensions/dm-lens/dist/clients/partial-edit-apply.js +337 -0
  592. package/extensions/dm-lens/dist/clients/path-attribution-telemetry.js +31 -0
  593. package/extensions/dm-lens/dist/clients/path-keyed-map.js +57 -0
  594. package/extensions/dm-lens/dist/clients/path-utils.js +476 -0
  595. package/extensions/dm-lens/dist/clients/performance-report.js +291 -0
  596. package/extensions/dm-lens/dist/clients/persist-debounce.js +37 -0
  597. package/extensions/dm-lens/dist/clients/persistent-reverify.js +165 -0
  598. package/extensions/dm-lens/dist/clients/php-cs-fixer-config.js +15 -0
  599. package/extensions/dm-lens/dist/clients/pipeline.js +1091 -0
  600. package/extensions/dm-lens/dist/clients/post-autofix-notice.js +19 -0
  601. package/extensions/dm-lens/dist/clients/print-mode.js +3 -0
  602. package/extensions/dm-lens/dist/clients/probe-home-state.js +62 -0
  603. package/extensions/dm-lens/dist/clients/process-bridge.js +20 -0
  604. package/extensions/dm-lens/dist/clients/process-singletons.js +69 -0
  605. package/extensions/dm-lens/dist/clients/process-snapshot.js +22 -0
  606. package/extensions/dm-lens/dist/clients/project-changes.js +112 -0
  607. package/extensions/dm-lens/dist/clients/project-conventions.js +152 -0
  608. package/extensions/dm-lens/dist/clients/project-diagnostics/cache.js +91 -0
  609. package/extensions/dm-lens/dist/clients/project-diagnostics/extractors.js +53 -0
  610. package/extensions/dm-lens/dist/clients/project-diagnostics/fresh-fetch.js +408 -0
  611. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/call-graph-impact.js +64 -0
  612. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/dead-code.js +38 -0
  613. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/gitleaks.js +21 -0
  614. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/govulncheck.js +23 -0
  615. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/jscpd.js +28 -0
  616. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/knip.js +45 -0
  617. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/madge.js +34 -0
  618. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/opengrep.js +32 -0
  619. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/runner-findings.js +79 -0
  620. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/trivy.js +41 -0
  621. package/extensions/dm-lens/dist/clients/project-diagnostics/scanner.js +349 -0
  622. package/extensions/dm-lens/dist/clients/project-diagnostics/types.js +1 -0
  623. package/extensions/dm-lens/dist/clients/project-lens-config.js +437 -0
  624. package/extensions/dm-lens/dist/clients/project-report.js +527 -0
  625. package/extensions/dm-lens/dist/clients/project-scale.js +60 -0
  626. package/extensions/dm-lens/dist/clients/project-scan-policy.js +4 -0
  627. package/extensions/dm-lens/dist/clients/project-snapshot-fingerprint.js +39 -0
  628. package/extensions/dm-lens/dist/clients/project-snapshot-persist-worker.js +14 -0
  629. package/extensions/dm-lens/dist/clients/project-snapshot.js +1178 -0
  630. package/extensions/dm-lens/dist/clients/project-trust.js +104 -0
  631. package/extensions/dm-lens/dist/clients/python-environment.js +120 -0
  632. package/extensions/dm-lens/dist/clients/python-provenance.js +551 -0
  633. package/extensions/dm-lens/dist/clients/quiet-window-config.js +16 -0
  634. package/extensions/dm-lens/dist/clients/quiet-window.js +126 -0
  635. package/extensions/dm-lens/dist/clients/read-bridge.js +46 -0
  636. package/extensions/dm-lens/dist/clients/read-expansion.js +218 -0
  637. package/extensions/dm-lens/dist/clients/read-guard-logger.js +178 -0
  638. package/extensions/dm-lens/dist/clients/read-guard-tool-lines.js +1042 -0
  639. package/extensions/dm-lens/dist/clients/read-guard.js +1096 -0
  640. package/extensions/dm-lens/dist/clients/recent-touches.js +126 -0
  641. package/extensions/dm-lens/dist/clients/redact/secrets.js +386 -0
  642. package/extensions/dm-lens/dist/clients/resource-sampler.js +344 -0
  643. package/extensions/dm-lens/dist/clients/reverse-deps.js +227 -0
  644. package/extensions/dm-lens/dist/clients/review-graph/builder.js +3635 -0
  645. package/extensions/dm-lens/dist/clients/review-graph/format.js +30 -0
  646. package/extensions/dm-lens/dist/clients/review-graph/git-identity.js +115 -0
  647. package/extensions/dm-lens/dist/clients/review-graph/import-resolvers.js +325 -0
  648. package/extensions/dm-lens/dist/clients/review-graph/persist-worker.js +8 -0
  649. package/extensions/dm-lens/dist/clients/review-graph/query.js +195 -0
  650. package/extensions/dm-lens/dist/clients/review-graph/revision-drift.js +3 -0
  651. package/extensions/dm-lens/dist/clients/review-graph/service.js +60 -0
  652. package/extensions/dm-lens/dist/clients/review-graph/shared-extraction-ir.js +54 -0
  653. package/extensions/dm-lens/dist/clients/review-graph/symbol-id.js +29 -0
  654. package/extensions/dm-lens/dist/clients/review-graph/tsconfig-paths.js +253 -0
  655. package/extensions/dm-lens/dist/clients/review-graph/types.js +1 -0
  656. package/extensions/dm-lens/dist/clients/review-graph/workspace-modules.js +374 -0
  657. package/extensions/dm-lens/dist/clients/review-graph-logger.js +51 -0
  658. package/extensions/dm-lens/dist/clients/ruff-client.js +109 -0
  659. package/extensions/dm-lens/dist/clients/rules-scanner.js +113 -0
  660. package/extensions/dm-lens/dist/clients/run-duration.js +9 -0
  661. package/extensions/dm-lens/dist/clients/runtime-agent-end.js +608 -0
  662. package/extensions/dm-lens/dist/clients/runtime-config.js +39 -0
  663. package/extensions/dm-lens/dist/clients/runtime-context.js +155 -0
  664. package/extensions/dm-lens/dist/clients/runtime-coordinator.js +817 -0
  665. package/extensions/dm-lens/dist/clients/runtime-session.js +1625 -0
  666. package/extensions/dm-lens/dist/clients/runtime-tool-call.js +868 -0
  667. package/extensions/dm-lens/dist/clients/runtime-tool-result.js +1317 -0
  668. package/extensions/dm-lens/dist/clients/runtime-turn.js +2333 -0
  669. package/extensions/dm-lens/dist/clients/rust-client.js +48 -0
  670. package/extensions/dm-lens/dist/clients/safe-spawn.js +1267 -0
  671. package/extensions/dm-lens/dist/clients/sanitize.js +174 -0
  672. package/extensions/dm-lens/dist/clients/scan-utils.js +7 -0
  673. package/extensions/dm-lens/dist/clients/scratch-tree-policy.js +57 -0
  674. package/extensions/dm-lens/dist/clients/search-read-registration.js +59 -0
  675. package/extensions/dm-lens/dist/clients/secret-findings.js +69 -0
  676. package/extensions/dm-lens/dist/clients/security-scan-client.js +208 -0
  677. package/extensions/dm-lens/dist/clients/session-event-guard.js +111 -0
  678. package/extensions/dm-lens/dist/clients/session-lifecycle.js +173 -0
  679. package/extensions/dm-lens/dist/clients/session-start-observability.js +47 -0
  680. package/extensions/dm-lens/dist/clients/session-state-store.js +63 -0
  681. package/extensions/dm-lens/dist/clients/session-summary.js +8 -0
  682. package/extensions/dm-lens/dist/clients/sessionstart-logger.js +22 -0
  683. package/extensions/dm-lens/dist/clients/sg-runner.js +627 -0
  684. package/extensions/dm-lens/dist/clients/sgconfig.js +280 -0
  685. package/extensions/dm-lens/dist/clients/shared-checkout-guard.js +177 -0
  686. package/extensions/dm-lens/dist/clients/single-flight.js +52 -0
  687. package/extensions/dm-lens/dist/clients/situational-tool-telemetry.js +85 -0
  688. package/extensions/dm-lens/dist/clients/skills-resolver.js +38 -0
  689. package/extensions/dm-lens/dist/clients/slow-fs.js +77 -0
  690. package/extensions/dm-lens/dist/clients/smells-rollup.js +118 -0
  691. package/extensions/dm-lens/dist/clients/source-filter.js +320 -0
  692. package/extensions/dm-lens/dist/clients/source-walker.js +96 -0
  693. package/extensions/dm-lens/dist/clients/spawn-output-cap.js +35 -0
  694. package/extensions/dm-lens/dist/clients/spawn-timeout-cooldown.js +51 -0
  695. package/extensions/dm-lens/dist/clients/stale-marker.js +1 -0
  696. package/extensions/dm-lens/dist/clients/startup-scan.js +222 -0
  697. package/extensions/dm-lens/dist/clients/startup-timing.js +67 -0
  698. package/extensions/dm-lens/dist/clients/string-utils.js +6 -0
  699. package/extensions/dm-lens/dist/clients/subagent-mode.js +40 -0
  700. package/extensions/dm-lens/dist/clients/symbol-containment.js +16 -0
  701. package/extensions/dm-lens/dist/clients/symbol-types.js +1 -0
  702. package/extensions/dm-lens/dist/clients/test-runner-client.js +1504 -0
  703. package/extensions/dm-lens/dist/clients/test-runner-delivery.js +260 -0
  704. package/extensions/dm-lens/dist/clients/todo-scanner.js +164 -0
  705. package/extensions/dm-lens/dist/clients/tool-agreement.js +377 -0
  706. package/extensions/dm-lens/dist/clients/tool-config.js +218 -0
  707. package/extensions/dm-lens/dist/clients/tool-cwd.js +235 -0
  708. package/extensions/dm-lens/dist/clients/tool-definition.js +22 -0
  709. package/extensions/dm-lens/dist/clients/tool-event.js +18 -0
  710. package/extensions/dm-lens/dist/clients/tool-policy.js +2393 -0
  711. package/extensions/dm-lens/dist/clients/tool-probe.js +5 -0
  712. package/extensions/dm-lens/dist/clients/tool-render.js +79 -0
  713. package/extensions/dm-lens/dist/clients/tool-set-policy.js +70 -0
  714. package/extensions/dm-lens/dist/clients/tree-sitter-cache.js +206 -0
  715. package/extensions/dm-lens/dist/clients/tree-sitter-client.js +2787 -0
  716. package/extensions/dm-lens/dist/clients/tree-sitter-logger.js +77 -0
  717. package/extensions/dm-lens/dist/clients/tree-sitter-navigator.js +198 -0
  718. package/extensions/dm-lens/dist/clients/tree-sitter-query-loader.js +318 -0
  719. package/extensions/dm-lens/dist/clients/tree-sitter-shared.js +87 -0
  720. package/extensions/dm-lens/dist/clients/tree-sitter-symbol-extractor.js +957 -0
  721. package/extensions/dm-lens/dist/clients/trivy-client.js +305 -0
  722. package/extensions/dm-lens/dist/clients/tui-fit.js +26 -0
  723. package/extensions/dm-lens/dist/clients/turn-context.js +48 -0
  724. package/extensions/dm-lens/dist/clients/turn-end/lane.js +1 -0
  725. package/extensions/dm-lens/dist/clients/turn-end/lanes/govulncheck.js +54 -0
  726. package/extensions/dm-lens/dist/clients/turn-end/lanes/secrets.js +131 -0
  727. package/extensions/dm-lens/dist/clients/turn-summary-render.js +56 -0
  728. package/extensions/dm-lens/dist/clients/turn-summary.js +84 -0
  729. package/extensions/dm-lens/dist/clients/typos-config.js +9 -0
  730. package/extensions/dm-lens/dist/clients/user-notify.js +15 -0
  731. package/extensions/dm-lens/dist/clients/vanished-instance-marker.js +18 -0
  732. package/extensions/dm-lens/dist/clients/warm-attach.js +210 -0
  733. package/extensions/dm-lens/dist/clients/widget-state.js +963 -0
  734. package/extensions/dm-lens/dist/clients/word-index-logger.js +21 -0
  735. package/extensions/dm-lens/dist/clients/word-index-store.js +222 -0
  736. package/extensions/dm-lens/dist/clients/word-index.js +1426 -0
  737. package/extensions/dm-lens/dist/clients/workspace-topology.js +261 -0
  738. package/extensions/dm-lens/dist/clients/write-ordering-guard.js +24 -0
  739. package/extensions/dm-lens/dist/clients/zizmor-config.js +160 -0
  740. package/extensions/dm-lens/dist/i18n.js +67 -0
  741. package/extensions/dm-lens/dist/index.js +1782 -0
  742. package/extensions/dm-lens/dist/mcp/analyze-cli.js +178 -0
  743. package/extensions/dm-lens/dist/mcp/build-staleness.js +55 -0
  744. package/extensions/dm-lens/dist/mcp/cli.js +78 -0
  745. package/extensions/dm-lens/dist/mcp/server.js +1208 -0
  746. package/extensions/dm-lens/dist/mcp/worker.js +33 -0
  747. package/extensions/dm-lens/dist/scripts/lib/process-scan.mjs +256 -0
  748. package/extensions/dm-lens/dist/scripts/lib/skills-predicate.mjs +53 -0
  749. package/extensions/dm-lens/dist/scripts/lib/web-tree-sitter-dir.mjs +45 -0
  750. package/extensions/dm-lens/dist/tools/activate-tools.js +61 -0
  751. package/extensions/dm-lens/dist/tools/ast-grep-outline.js +127 -0
  752. package/extensions/dm-lens/dist/tools/ast-grep-replace.js +226 -0
  753. package/extensions/dm-lens/dist/tools/ast-grep-search.js +687 -0
  754. package/extensions/dm-lens/dist/tools/effective-config.js +59 -0
  755. package/extensions/dm-lens/dist/tools/lens-diagnostic-mark.js +240 -0
  756. package/extensions/dm-lens/dist/tools/lens-diagnostics.js +1484 -0
  757. package/extensions/dm-lens/dist/tools/lsp-diagnostics.js +1088 -0
  758. package/extensions/dm-lens/dist/tools/lsp-navigation.js +1194 -0
  759. package/extensions/dm-lens/dist/tools/lsp-structured-output.js +277 -0
  760. package/extensions/dm-lens/dist/tools/module-report.js +332 -0
  761. package/extensions/dm-lens/dist/tools/project-report.js +72 -0
  762. package/extensions/dm-lens/dist/tools/render-compact.js +272 -0
  763. package/extensions/dm-lens/dist/tools/scan-progress.js +31 -0
  764. package/extensions/dm-lens/dist/tools/shared.js +26 -0
  765. package/extensions/dm-lens/dist/tools/symbol-search.js +133 -0
  766. package/extensions/dm-lens/index.js +278 -101
  767. package/extensions/dm-lens/mcp/analyze-cli.js +3 -2
  768. package/extensions/dm-lens/mcp/build-staleness.js +1 -1
  769. package/extensions/dm-lens/mcp/server.js +144 -73
  770. package/extensions/dm-lens/package.json +4 -4
  771. package/extensions/dm-lens/rules/ast-grep-rules/rule-tests/no-assert-tuple-test.yml +13 -0
  772. package/extensions/dm-lens/rules/ast-grep-rules/rule-tests/no-boolean-in-except-test.yml +26 -0
  773. package/extensions/dm-lens/rules/ast-grep-rules/rule-tests/no-http-headers-bracket-access-test.yml +10 -0
  774. package/extensions/dm-lens/rules/ast-grep-rules/rule-tests/unchecked-numeric-parse-python-test.yml +18 -0
  775. package/extensions/dm-lens/rules/ast-grep-rules/rule-tests/unchecked-throwing-call-python-test.yml +4 -3
  776. package/extensions/dm-lens/rules/ast-grep-rules/rules/go-no-fmt-println.yml +2 -2
  777. package/extensions/dm-lens/rules/ast-grep-rules/rules/no-assert-tuple.yml +23 -13
  778. package/extensions/dm-lens/rules/ast-grep-rules/rules/no-boolean-in-except.yml +7 -3
  779. package/extensions/dm-lens/rules/ast-grep-rules/rules/no-console-except-error-js.yml +2 -2
  780. package/extensions/dm-lens/rules/ast-grep-rules/rules/no-console-except-error.yml +2 -2
  781. package/extensions/dm-lens/rules/ast-grep-rules/rules/no-http-headers-bracket-access.yml +12 -7
  782. package/extensions/dm-lens/rules/ast-grep-rules/rules/unchecked-numeric-parse-python.yml +44 -0
  783. package/extensions/dm-lens/rules/ast-grep-rules/rules/unchecked-throwing-call-python.yml +5 -3
  784. package/extensions/dm-lens/rules/tree-sitter-queries/python/python-cross-language-method.yml +3 -3
  785. package/extensions/dm-lens/rules/tree-sitter-queries/python/python-hallucinated-import.yml +2 -2
  786. package/extensions/dm-lens/rules/tree-sitter-queries/python/python-sql-injection.yml +12 -2
  787. package/extensions/dm-lens/rules/tree-sitter-queries/typescript/console-statement.yml +2 -2
  788. package/extensions/dm-lens/rules/tree-sitter-queries/typescript/sql-injection.yml +23 -7
  789. package/extensions/dm-lens/rules/typos/_typos.toml +4 -2
  790. package/extensions/dm-lens/scripts/lib/process-scan.mjs +1 -1
  791. package/extensions/dm-lens/scripts/lib/skills-predicate.mjs +53 -0
  792. package/extensions/dm-lens/scripts/lib/web-tree-sitter-dir.mjs +45 -0
  793. package/extensions/dm-lens/skills/pi-lens-ast-grep/SKILL.md +23 -6
  794. package/extensions/dm-lens/skills/pi-lens-lsp-navigation/SKILL.md +26 -9
  795. package/extensions/dm-lens/tools/activate-tools.js +10 -7
  796. package/extensions/dm-lens/tools/ast-grep-outline.js +2 -6
  797. package/extensions/dm-lens/tools/ast-grep-replace.js +5 -16
  798. package/extensions/dm-lens/tools/ast-grep-search.js +83 -38
  799. package/extensions/dm-lens/tools/effective-config.js +5 -4
  800. package/extensions/dm-lens/tools/lens-diagnostic-mark.js +5 -3
  801. package/extensions/dm-lens/tools/lens-diagnostics.js +478 -106
  802. package/extensions/dm-lens/tools/lsp-diagnostics.js +317 -172
  803. package/extensions/dm-lens/tools/lsp-navigation.js +26 -56
  804. package/extensions/dm-lens/tools/lsp-structured-output.js +3 -3
  805. package/extensions/dm-lens/tools/module-report.js +5 -5
  806. package/extensions/dm-lens/tools/project-report.js +9 -15
  807. package/extensions/dm-lens/tools/render-compact.js +220 -1
  808. package/extensions/dm-lens/tools/symbol-search.js +3 -5
  809. package/extensions/dm-mcp-adapter/OAUTH.md +368 -2
  810. package/extensions/dm-mcp-adapter/THIRD_PARTY_NOTICES.md +1 -1
  811. package/extensions/dm-mcp-adapter/agent-plugin-loader.js +73 -30
  812. package/extensions/dm-mcp-adapter/agent-plugin-provenance.js +26 -0
  813. package/extensions/dm-mcp-adapter/bearer-command-resolver.js +182 -0
  814. package/extensions/dm-mcp-adapter/claude-plugin-loader.js +350 -0
  815. package/extensions/dm-mcp-adapter/cli.js +82 -5
  816. package/extensions/dm-mcp-adapter/commands.js +89 -15
  817. package/extensions/dm-mcp-adapter/config.js +283 -33
  818. package/extensions/dm-mcp-adapter/consent-manager.js +32 -8
  819. package/extensions/dm-mcp-adapter/direct-tool-surface.js +223 -0
  820. package/extensions/dm-mcp-adapter/direct-tools.js +21 -216
  821. package/extensions/dm-mcp-adapter/dist/abort.js +35 -0
  822. package/extensions/dm-mcp-adapter/dist/agent-plugin-loader.js +73 -30
  823. package/extensions/dm-mcp-adapter/dist/agent-plugin-provenance.js +26 -0
  824. package/extensions/dm-mcp-adapter/dist/bearer-command-resolver.js +182 -0
  825. package/extensions/dm-mcp-adapter/dist/claude-plugin-loader.js +350 -0
  826. package/extensions/dm-mcp-adapter/dist/config.js +283 -33
  827. package/extensions/dm-mcp-adapter/dist/consent-manager.js +84 -0
  828. package/extensions/dm-mcp-adapter/dist/elicitation-handler.js +308 -0
  829. package/extensions/dm-mcp-adapter/dist/errors.js +225 -0
  830. package/extensions/dm-mcp-adapter/dist/http-ca.js +71 -0
  831. package/extensions/dm-mcp-adapter/dist/jev-client.js +359 -0
  832. package/extensions/dm-mcp-adapter/dist/jev-contracts.js +1 -0
  833. package/extensions/dm-mcp-adapter/dist/jev-key-store.js +176 -0
  834. package/extensions/dm-mcp-adapter/dist/json-schema-validator.js +70 -0
  835. package/extensions/dm-mcp-adapter/dist/lifecycle.js +387 -0
  836. package/extensions/dm-mcp-adapter/dist/logger.js +115 -0
  837. package/extensions/dm-mcp-adapter/dist/mcp-auth-fetch.js +86 -0
  838. package/extensions/dm-mcp-adapter/dist/mcp-auth-flow.js +949 -0
  839. package/extensions/dm-mcp-adapter/dist/mcp-auth.js +997 -0
  840. package/extensions/dm-mcp-adapter/dist/mcp-bearer-store.js +7 -136
  841. package/extensions/dm-mcp-adapter/dist/mcp-callback-server.js +381 -0
  842. package/extensions/dm-mcp-adapter/dist/mcp-oauth-provider.js +524 -0
  843. package/extensions/dm-mcp-adapter/dist/mcp-probe.js +151 -0
  844. package/extensions/dm-mcp-adapter/dist/mcp-tasks.js +300 -0
  845. package/extensions/dm-mcp-adapter/dist/mcp-trace.js +215 -0
  846. package/extensions/dm-mcp-adapter/dist/metadata-cache.js +10 -28
  847. package/extensions/dm-mcp-adapter/dist/npx-resolver.js +465 -0
  848. package/extensions/dm-mcp-adapter/dist/package-mcp-loader.js +5 -16
  849. package/extensions/dm-mcp-adapter/dist/request-headers-command.js +294 -0
  850. package/extensions/dm-mcp-adapter/dist/runtime-owner.js +94 -0
  851. package/extensions/dm-mcp-adapter/dist/sampling-handler.js +213 -0
  852. package/extensions/dm-mcp-adapter/dist/secure-keyring.js +191 -0
  853. package/extensions/dm-mcp-adapter/dist/server-manager.js +1514 -0
  854. package/extensions/dm-mcp-adapter/dist/session-approvals.js +127 -0
  855. package/extensions/dm-mcp-adapter/dist/session-recovery.js +82 -0
  856. package/extensions/dm-mcp-adapter/dist/state.js +1 -0
  857. package/extensions/dm-mcp-adapter/dist/types.js +39 -0
  858. package/extensions/dm-mcp-adapter/dist/ui-resource-handler.js +204 -0
  859. package/extensions/dm-mcp-adapter/dist/unix-socket-transport.js +83 -0
  860. package/extensions/dm-mcp-adapter/dist/utils.js +84 -9
  861. package/extensions/dm-mcp-adapter/elicitation-handler.js +27 -22
  862. package/extensions/dm-mcp-adapter/host-html-template.js +17 -18
  863. package/extensions/dm-mcp-adapter/http-ca.js +71 -0
  864. package/extensions/dm-mcp-adapter/index.js +904 -167
  865. package/extensions/dm-mcp-adapter/init.js +53 -42
  866. package/extensions/dm-mcp-adapter/jev-client.js +359 -0
  867. package/extensions/dm-mcp-adapter/jev-contracts.js +0 -0
  868. package/extensions/dm-mcp-adapter/jev-key-store.js +176 -0
  869. package/extensions/dm-mcp-adapter/json-schema-validator.js +19 -2
  870. package/extensions/dm-mcp-adapter/lazy-loader.js +7 -0
  871. package/extensions/dm-mcp-adapter/lifecycle.js +8 -3
  872. package/extensions/dm-mcp-adapter/mcp-auth-fetch.js +86 -0
  873. package/extensions/dm-mcp-adapter/mcp-auth-flow.js +228 -75
  874. package/extensions/dm-mcp-adapter/mcp-auth.js +312 -47
  875. package/extensions/dm-mcp-adapter/mcp-bearer-store.js +7 -136
  876. package/extensions/dm-mcp-adapter/mcp-code.js +151 -20
  877. package/extensions/dm-mcp-adapter/mcp-install.js +40 -0
  878. package/extensions/dm-mcp-adapter/mcp-oauth-provider.js +52 -8
  879. package/extensions/dm-mcp-adapter/mcp-output-guard.js +42 -43
  880. package/extensions/dm-mcp-adapter/mcp-panel-theme.js +79 -0
  881. package/extensions/dm-mcp-adapter/mcp-panel.js +294 -286
  882. package/extensions/dm-mcp-adapter/mcp-references.js +13 -18
  883. package/extensions/dm-mcp-adapter/mcp-script-worker.mjs +5 -1
  884. package/extensions/dm-mcp-adapter/mcp-setup-panel.js +317 -282
  885. package/extensions/dm-mcp-adapter/mcp-status.js +2 -0
  886. package/extensions/dm-mcp-adapter/mcp-tasks.js +309 -0
  887. package/extensions/dm-mcp-adapter/metadata-cache.js +11 -28
  888. package/extensions/dm-mcp-adapter/namespace-tools.js +43 -7
  889. package/extensions/dm-mcp-adapter/oauth.js +1 -1
  890. package/extensions/dm-mcp-adapter/package-mcp-loader.js +5 -16
  891. package/extensions/dm-mcp-adapter/package.json +4 -1
  892. package/extensions/dm-mcp-adapter/prompts.js +31 -4
  893. package/extensions/dm-mcp-adapter/proxy-modes.js +394 -199
  894. package/extensions/dm-mcp-adapter/request-headers-command.js +3 -2
  895. package/extensions/dm-mcp-adapter/runtime-owner.js +16 -1
  896. package/extensions/dm-mcp-adapter/sampling-handler.js +16 -25
  897. package/extensions/dm-mcp-adapter/sandbox-proxy-template.js +14 -90
  898. package/extensions/dm-mcp-adapter/search-ranking.js +31 -6
  899. package/extensions/dm-mcp-adapter/secure-keyring.js +191 -0
  900. package/extensions/dm-mcp-adapter/semantic-search.js +160 -0
  901. package/extensions/dm-mcp-adapter/server-manager.js +406 -117
  902. package/extensions/dm-mcp-adapter/session-approvals.js +127 -0
  903. package/extensions/dm-mcp-adapter/skills/mcp-scripting/SKILL.md +11 -1
  904. package/extensions/dm-mcp-adapter/test-runner.mjs +3 -4
  905. package/extensions/dm-mcp-adapter/tool-approval.js +32 -22
  906. package/extensions/dm-mcp-adapter/tool-metadata.js +18 -11
  907. package/extensions/dm-mcp-adapter/tool-registrar.js +7 -4
  908. package/extensions/dm-mcp-adapter/tool-result-renderer.js +4 -2
  909. package/extensions/dm-mcp-adapter/types.js +39 -0
  910. package/extensions/dm-mcp-adapter/ui-server.js +51 -36
  911. package/extensions/dm-mcp-adapter/ui-session.js +57 -25
  912. package/extensions/dm-mcp-adapter/utils.js +84 -9
  913. package/extensions/dm-ponytail/hooks/cursor-hooks.json +17 -0
  914. package/extensions/dm-ponytail/hooks/ponytail-activate.js +14 -2
  915. package/extensions/dm-ponytail/hooks/ponytail-mode-tracker.js +21 -2
  916. package/extensions/dm-ponytail/hooks/ponytail-runtime.js +23 -0
  917. package/extensions/dm-ponytail/package.json +1 -1
  918. package/extensions/dm-subagents/agents/claude-code-writer.md +1 -0
  919. package/extensions/dm-subagents/agents/codex-exec-writer.md +1 -0
  920. package/extensions/dm-subagents/agents/cursor-agent-writer.md +1 -0
  921. package/extensions/dm-subagents/agents/evidence-auditor.md +34 -0
  922. package/extensions/dm-subagents/agents/researcher.md +23 -13
  923. package/extensions/dm-subagents/agents/reviewer.md +6 -4
  924. package/extensions/dm-subagents/agents/scout.md +1 -1
  925. package/extensions/dm-subagents/agents/worker.md +3 -2
  926. package/extensions/dm-subagents/index.js +3 -2
  927. package/extensions/dm-subagents/inspector-runner.mjs +2 -2
  928. package/extensions/dm-subagents/install.mjs +1 -2
  929. package/extensions/dm-subagents/package.json +35 -1
  930. package/extensions/dm-subagents/prompts/council.md +6 -3
  931. package/extensions/dm-subagents/prompts/parallel-review.md +1 -1
  932. package/extensions/dm-subagents/runner-peer-loader.mjs +18 -0
  933. package/extensions/dm-subagents/runner-peer-preload.mjs +29 -0
  934. package/extensions/dm-subagents/skills/dm-subagents/SKILL.md +35 -22
  935. package/extensions/dm-subagents/skills/dm-subagents/references/constraints-and-recipes.md +9 -5
  936. package/extensions/dm-subagents/skills/dm-subagents/references/execution-controls.md +40 -19
  937. package/extensions/dm-subagents/skills/dm-subagents/references/management-authoring-rpc.md +6 -6
  938. package/extensions/dm-subagents/skills/dm-subagents/references/multi-lane-orchestration.md +11 -1
  939. package/extensions/dm-subagents/skills/dm-subagents/references/prompting-and-roles.md +35 -30
  940. package/extensions/dm-subagents/skills/dm-subagents/references/review-and-validation.md +3 -3
  941. package/extensions/dm-subagents/src/agents/advertised-agent-prompt.js +70 -0
  942. package/extensions/dm-subagents/src/agents/agent-management.js +276 -172
  943. package/extensions/dm-subagents/src/agents/agent-memory.js +92 -3
  944. package/extensions/dm-subagents/src/agents/agent-serializer.js +17 -8
  945. package/extensions/dm-subagents/src/agents/agents.js +389 -207
  946. package/extensions/dm-subagents/src/agents/builtin-names.js +1 -0
  947. package/extensions/dm-subagents/src/agents/chain-serializer.js +7 -0
  948. package/extensions/dm-subagents/src/agents/global-npm-root.js +47 -0
  949. package/extensions/dm-subagents/src/agents/proactive-skills.js +1 -1
  950. package/extensions/dm-subagents/src/agents/runtime-agent-registry.js +17 -13
  951. package/extensions/dm-subagents/src/agents/skills.js +36 -10
  952. package/extensions/dm-subagents/src/api/capability-ceiling.js +0 -1
  953. package/extensions/dm-subagents/src/api/child-tool-plan.js +3 -0
  954. package/extensions/dm-subagents/src/api/preflight.js +75 -64
  955. package/extensions/dm-subagents/src/api/required-child-extensions.js +3 -0
  956. package/extensions/dm-subagents/src/api/workflow-resources.js +1 -0
  957. package/extensions/dm-subagents/src/extension/config.js +27 -18
  958. package/extensions/dm-subagents/src/extension/doctor.js +10 -13
  959. package/extensions/dm-subagents/src/extension/fanout-child.js +91 -14
  960. package/extensions/dm-subagents/src/extension/herdr-dm-bridge.js +258 -0
  961. package/extensions/dm-subagents/src/extension/index.js +202 -66
  962. package/extensions/dm-subagents/src/extension/public-execution.js +55 -4
  963. package/extensions/dm-subagents/src/extension/rpc.js +18 -27
  964. package/extensions/dm-subagents/src/extension/schemas.js +99 -84
  965. package/extensions/dm-subagents/src/extension/subagent-guide.js +14 -3
  966. package/extensions/dm-subagents/src/extension/tool-activation.js +157 -0
  967. package/extensions/dm-subagents/src/extension/tool-description.js +30 -78
  968. package/extensions/dm-subagents/src/inspectors/actions.js +145 -0
  969. package/extensions/dm-subagents/src/inspectors/ghostty/actions.js +60 -0
  970. package/extensions/dm-subagents/src/inspectors/ghostty/plugin.js +17 -0
  971. package/extensions/dm-subagents/src/inspectors/herdr/actions.js +94 -179
  972. package/extensions/dm-subagents/src/inspectors/herdr/plugin.js +13 -0
  973. package/extensions/dm-subagents/src/inspectors/herdr/project-panes.js +1 -1
  974. package/extensions/dm-subagents/src/inspectors/{herdr/inspector-runner.js → inspector-runner.js} +31 -25
  975. package/extensions/dm-subagents/src/inspectors/plugins.js +5 -0
  976. package/extensions/dm-subagents/src/inspectors/{herdr/session-roots-codec.js → session-roots-codec.js} +1 -6
  977. package/extensions/dm-subagents/src/inspectors/types.js +1 -0
  978. package/extensions/dm-subagents/src/integrations/dm-web-session-liveness.js +50 -0
  979. package/extensions/dm-subagents/src/intercom/intercom-bridge.js +39 -5
  980. package/extensions/dm-subagents/src/intercom/native-supervisor-channel.js +256 -151
  981. package/extensions/dm-subagents/src/intercom/result-intercom.js +6 -0
  982. package/extensions/dm-subagents/src/intercom/supervisor-ui.js +199 -0
  983. package/extensions/dm-subagents/src/missions/workflow-state.js +30 -17
  984. package/extensions/dm-subagents/src/policy/authority.js +6 -2
  985. package/extensions/dm-subagents/src/profiles/profiles.js +10 -5
  986. package/extensions/dm-subagents/src/runs/background/active-async-capacity.js +28 -35
  987. package/extensions/dm-subagents/src/runs/background/active-run-index.js +17 -0
  988. package/extensions/dm-subagents/src/runs/background/async-execution.js +580 -389
  989. package/extensions/dm-subagents/src/runs/background/async-job-tracker.js +71 -47
  990. package/extensions/dm-subagents/src/runs/background/async-resume.js +61 -26
  991. package/extensions/dm-subagents/src/runs/background/async-retention.js +8 -0
  992. package/extensions/dm-subagents/src/runs/background/async-status-snapshot.js +3 -4
  993. package/extensions/dm-subagents/src/runs/background/async-status.js +90 -13
  994. package/extensions/dm-subagents/src/runs/background/auto-drain.js +57 -33
  995. package/extensions/dm-subagents/src/runs/background/binary-bootstrap.js +54 -0
  996. package/extensions/dm-subagents/src/runs/background/chain-append.js +1 -1
  997. package/extensions/dm-subagents/src/runs/background/chain-root-attachment.js +11 -27
  998. package/extensions/dm-subagents/src/runs/background/control-channel.js +105 -256
  999. package/extensions/dm-subagents/src/runs/background/fleet-view.js +67 -10
  1000. package/extensions/dm-subagents/src/runs/background/notify.js +252 -17
  1001. package/extensions/dm-subagents/src/runs/background/owned-process-tree.js +33 -2
  1002. package/extensions/dm-subagents/src/runs/background/process-terminal-candidate.js +88 -0
  1003. package/extensions/dm-subagents/src/runs/background/process-terminal.js +29 -87
  1004. package/extensions/dm-subagents/src/runs/background/result-files.js +8 -4
  1005. package/extensions/dm-subagents/src/runs/background/result-watcher.js +15 -3
  1006. package/extensions/dm-subagents/src/runs/background/retained-children.js +3 -2
  1007. package/extensions/dm-subagents/src/runs/background/retained-nested-route-tracker.js +86 -0
  1008. package/extensions/dm-subagents/src/runs/background/run-child-session.js +574 -0
  1009. package/extensions/dm-subagents/src/runs/background/run-id-resolver.js +9 -5
  1010. package/extensions/dm-subagents/src/runs/background/run-status.js +114 -11
  1011. package/extensions/dm-subagents/src/runs/background/runner-aliases.js +129 -0
  1012. package/extensions/dm-subagents/src/runs/background/runner-child-launch.js +62 -0
  1013. package/extensions/dm-subagents/src/runs/background/runner-child-sessions.js +16 -0
  1014. package/extensions/dm-subagents/src/runs/background/runner-http-dispatcher.js +84 -0
  1015. package/extensions/dm-subagents/src/runs/background/runner-startup-failure.js +43 -0
  1016. package/extensions/dm-subagents/src/runs/background/scheduled-runs.js +119 -20
  1017. package/extensions/dm-subagents/src/runs/background/stale-run-reconciler.js +33 -10
  1018. package/extensions/dm-subagents/src/runs/background/steering.js +24 -3
  1019. package/extensions/dm-subagents/src/runs/background/subagent-runner-bootstrap.js +238 -0
  1020. package/extensions/dm-subagents/src/runs/background/subagent-runner.js +1008 -1344
  1021. package/extensions/dm-subagents/src/runs/background/subagent-wait.js +156 -26
  1022. package/extensions/dm-subagents/src/runs/background/wait-completions.js +91 -23
  1023. package/extensions/dm-subagents/src/runs/background/wait-subscriptions.js +10 -3
  1024. package/extensions/dm-subagents/src/runs/background/wait-tool.js +8 -12
  1025. package/extensions/dm-subagents/src/runs/background/workflow-terminal-proof.js +60 -0
  1026. package/extensions/dm-subagents/src/runs/foreground/async-steering-action.js +29 -26
  1027. package/extensions/dm-subagents/src/runs/foreground/async-stop-action.js +94 -2
  1028. package/extensions/dm-subagents/src/runs/foreground/execution.js +446 -648
  1029. package/extensions/dm-subagents/src/runs/foreground/foreground-control.js +4 -0
  1030. package/extensions/dm-subagents/src/runs/foreground/foreground-history.js +5 -2
  1031. package/extensions/dm-subagents/src/runs/foreground/prompt-audit.js +8 -4
  1032. package/extensions/dm-subagents/src/runs/foreground/subagent-executor.js +1337 -445
  1033. package/extensions/dm-subagents/src/runs/foreground/workflow-detach-reconcile.js +10 -5
  1034. package/extensions/dm-subagents/src/runs/foreground/workflow-foreground-steering.js +65 -90
  1035. package/extensions/dm-subagents/src/runs/shared/acceptance.js +265 -68
  1036. package/extensions/dm-subagents/src/runs/shared/agent-contract.js +1 -1
  1037. package/extensions/dm-subagents/src/runs/shared/async-status-projection.js +133 -76
  1038. package/extensions/dm-subagents/src/runs/shared/capability-ceiling.js +4 -2
  1039. package/extensions/dm-subagents/src/runs/shared/child-hooks.js +166 -0
  1040. package/extensions/dm-subagents/src/runs/shared/child-identity.js +10 -2
  1041. package/extensions/dm-subagents/src/runs/shared/child-launch-plan.js +19 -2
  1042. package/extensions/dm-subagents/src/runs/shared/child-launch.js +212 -0
  1043. package/extensions/dm-subagents/src/runs/shared/child-lifecycle.js +22 -0
  1044. package/extensions/dm-subagents/src/runs/shared/child-runtime-config.js +31 -0
  1045. package/extensions/dm-subagents/src/runs/shared/child-session.js +378 -0
  1046. package/extensions/dm-subagents/src/runs/shared/child-tool-plan.js +299 -0
  1047. package/extensions/dm-subagents/src/runs/shared/claude-code-adapter.js +1 -1
  1048. package/extensions/dm-subagents/src/runs/shared/dm-spawn.js +148 -32
  1049. package/extensions/dm-subagents/src/runs/shared/dynamic-fanout.js +6 -4
  1050. package/extensions/dm-subagents/src/runs/shared/effective-system-prompt.js +19 -0
  1051. package/extensions/dm-subagents/src/runs/shared/external-cli-contract.js +6 -1
  1052. package/extensions/dm-subagents/src/runs/shared/external-cli-preflight.js +14 -2
  1053. package/extensions/dm-subagents/src/runs/shared/external-cli-runner.js +6 -7
  1054. package/extensions/dm-subagents/src/runs/shared/external-job-bridge.js +60 -0
  1055. package/extensions/dm-subagents/src/runs/shared/git-environment.js +25 -0
  1056. package/extensions/dm-subagents/src/runs/shared/herdr-connection.js +341 -0
  1057. package/extensions/dm-subagents/src/runs/shared/herdr-dm-protocol.js +60 -0
  1058. package/extensions/dm-subagents/src/runs/shared/herdr-external-adapters.js +555 -0
  1059. package/extensions/dm-subagents/src/runs/shared/herdr-machine.js +239 -0
  1060. package/extensions/dm-subagents/src/runs/shared/herdr-placed-run.js +987 -0
  1061. package/extensions/dm-subagents/src/runs/shared/host-step-status.js +2 -0
  1062. package/extensions/dm-subagents/src/runs/shared/lane-metadata.js +23 -3
  1063. package/extensions/dm-subagents/src/runs/shared/mcp-direct-tool-allowlist.js +4 -3
  1064. package/extensions/dm-subagents/src/runs/shared/mcp-direct-tool-grant.js +15 -5
  1065. package/extensions/dm-subagents/src/runs/shared/model-resolution-diagnostic.js +43 -0
  1066. package/extensions/dm-subagents/src/runs/shared/{model-fallback.js → model-resolution.js} +44 -128
  1067. package/extensions/dm-subagents/src/runs/shared/nested-events.js +39 -49
  1068. package/extensions/dm-subagents/src/runs/shared/nested-path.js +0 -13
  1069. package/extensions/dm-subagents/src/runs/shared/orca-progress-tabs.js +22 -12
  1070. package/extensions/dm-subagents/src/runs/shared/parallel-handoff.js +78 -2
  1071. package/extensions/dm-subagents/src/runs/shared/permissions.js +1 -16
  1072. package/extensions/dm-subagents/src/runs/shared/process-signal.js +3 -0
  1073. package/extensions/dm-subagents/src/runs/shared/readonly-drain-observation.js +51 -0
  1074. package/extensions/dm-subagents/src/runs/shared/run-fanout-budget.js +0 -13
  1075. package/extensions/dm-subagents/src/runs/shared/runtime-acknowledged-extensions.js +0 -26
  1076. package/extensions/dm-subagents/src/runs/shared/single-output.js +20 -2
  1077. package/extensions/dm-subagents/src/runs/shared/structured-output.js +263 -10
  1078. package/extensions/dm-subagents/src/runs/shared/subagent-control.js +6 -14
  1079. package/extensions/dm-subagents/src/runs/shared/subagent-prompt-runtime.js +117 -370
  1080. package/extensions/dm-subagents/src/runs/shared/tool-availability.js +12 -50
  1081. package/extensions/dm-subagents/src/runs/shared/tool-budget.js +10 -13
  1082. package/extensions/dm-subagents/src/runs/shared/tool-timeout.js +1 -1
  1083. package/extensions/dm-subagents/src/runs/shared/usage-reconciliation.js +69 -0
  1084. package/extensions/dm-subagents/src/runs/shared/workflow-async-child-guidance.js +11 -0
  1085. package/extensions/dm-subagents/src/runs/shared/worktree-cleanup-plan.js +30 -10
  1086. package/extensions/dm-subagents/src/runs/shared/worktree-setup-command.js +195 -0
  1087. package/extensions/dm-subagents/src/runs/shared/worktree.js +814 -141
  1088. package/extensions/dm-subagents/src/shared/atomic-json.js +2 -1
  1089. package/extensions/dm-subagents/src/shared/child-cache-retention.js +19 -0
  1090. package/extensions/dm-subagents/src/shared/fork-context.js +40 -77
  1091. package/extensions/dm-subagents/src/shared/fork-session-cwd.js +24 -0
  1092. package/extensions/dm-subagents/src/shared/jsonl-writer.js +8 -0
  1093. package/extensions/dm-subagents/src/shared/launch-contract.js +37 -6
  1094. package/extensions/dm-subagents/src/shared/model-response-aliases.js +15 -0
  1095. package/extensions/dm-subagents/src/shared/opencode-session-headers.js +15 -0
  1096. package/extensions/dm-subagents/src/shared/pruned-fork.js +83 -76
  1097. package/extensions/dm-subagents/src/shared/required-child-extensions.js +72 -0
  1098. package/extensions/dm-subagents/src/shared/shortcuts.js +0 -2
  1099. package/extensions/dm-subagents/src/shared/thinking-ceiling.js +0 -6
  1100. package/extensions/dm-subagents/src/shared/types.js +16 -12
  1101. package/extensions/dm-subagents/src/shared/utils.js +22 -7
  1102. package/extensions/dm-subagents/src/shared/watch-strategy.js +2 -0
  1103. package/extensions/dm-subagents/src/shared/workflow-child-permit.js +70 -0
  1104. package/extensions/dm-subagents/src/slash/delegation-adapters.js +15 -1
  1105. package/extensions/dm-subagents/src/slash/delegation-request.js +13 -0
  1106. package/extensions/dm-subagents/src/slash/prompt-template-bridge.js +28 -1
  1107. package/extensions/dm-subagents/src/slash/prompt-workflows.js +15 -2
  1108. package/extensions/dm-subagents/src/slash/slash-commands.js +12 -269
  1109. package/extensions/dm-subagents/src/slash/subagent-cost.js +255 -0
  1110. package/extensions/dm-subagents/src/slash/subagents-admin.js +49 -25
  1111. package/extensions/dm-subagents/src/tui/fleet-status.js +224 -23
  1112. package/extensions/dm-subagents/src/tui/fleet.js +38 -25
  1113. package/extensions/dm-subagents/src/tui/render.js +636 -63
  1114. package/extensions/dm-subagents/src/watchdog/child-status.js +42 -23
  1115. package/extensions/dm-subagents/src/watchdog/diff-tool.js +86 -0
  1116. package/extensions/dm-subagents/src/watchdog/emission-guard.js +4 -3
  1117. package/extensions/dm-subagents/src/watchdog/guidance.js +19 -0
  1118. package/extensions/dm-subagents/src/watchdog/lsp-diagnostics.js +1 -1
  1119. package/extensions/dm-subagents/src/watchdog/model-selection.js +18 -1
  1120. package/extensions/dm-subagents/src/watchdog/permission-arbiter.js +16 -10
  1121. package/extensions/dm-subagents/src/watchdog/register-child.js +39 -26
  1122. package/extensions/dm-subagents/src/watchdog/register-main.js +51 -43
  1123. package/extensions/dm-subagents/src/watchdog/render.js +5 -7
  1124. package/extensions/dm-subagents/src/watchdog/review.js +142 -67
  1125. package/extensions/dm-subagents/src/watchdog/rules.js +55 -0
  1126. package/extensions/dm-subagents/src/watchdog/runtime.js +167 -109
  1127. package/extensions/dm-subagents/src/watchdog/scope.js +1 -9
  1128. package/extensions/dm-subagents/src/watchdog/settings.js +55 -99
  1129. package/extensions/dm-subagents/src/watchdog/tool-actions.js +11 -12
  1130. package/extensions/dm-subagents/src/watchdog/turn-delta.js +30 -5
  1131. package/extensions/dm-subagents/src/watchdog/types.js +2 -4
  1132. package/extensions/dm-subagents/src/watchdog/warning-format.js +2 -3
  1133. package/extensions/dm-subagents/src/workflows/chat-progress.js +4 -4
  1134. package/extensions/dm-subagents/src/workflows/scripted-workflow.js +482 -36
  1135. package/extensions/dm-subagents/src/workflows/workflow-checklist.js +303 -0
  1136. package/extensions/dm-subagents/src/workflows/workflow-child-summary.js +57 -5
  1137. package/extensions/dm-subagents/src/workflows/workflow-preflight.js +27 -1
  1138. package/extensions/dm-subagents/src/workflows/workflow-receipt.js +51 -3
  1139. package/extensions/dm-subagents/src/workflows/workflow-resources.js +226 -0
  1140. package/extensions/dm-subagents/src/workflows/workflow-settlement.js +5 -0
  1141. package/extensions/dm-web-access/abortable.js +19 -0
  1142. package/extensions/dm-web-access/anysearch.js +4 -13
  1143. package/extensions/dm-web-access/baizhi.js +123 -0
  1144. package/extensions/dm-web-access/bocha.js +3 -24
  1145. package/extensions/dm-web-access/brave.js +3 -23
  1146. package/extensions/dm-web-access/brightdata.js +5 -30
  1147. package/extensions/dm-web-access/content-find.js +181 -47
  1148. package/extensions/dm-web-access/crawl4ai.js +166 -0
  1149. package/extensions/dm-web-access/credential-source.js +1 -0
  1150. package/extensions/dm-web-access/curator-page.js +27 -2
  1151. package/extensions/dm-web-access/curator-run.js +36 -0
  1152. package/extensions/dm-web-access/curator-server.js +11 -2
  1153. package/extensions/dm-web-access/domain-filter-normalization.js +17 -0
  1154. package/extensions/dm-web-access/duckduckgo.js +4 -24
  1155. package/extensions/dm-web-access/extract.js +54 -12
  1156. package/extensions/dm-web-access/fetch-params.js +1 -1
  1157. package/extensions/dm-web-access/firecrawl.js +7 -45
  1158. package/extensions/dm-web-access/gemini-search.js +101 -46
  1159. package/extensions/dm-web-access/github-extract.js +2 -11
  1160. package/extensions/dm-web-access/index.js +382 -247
  1161. package/extensions/dm-web-access/jina-search.js +4 -13
  1162. package/extensions/dm-web-access/kagi.js +4 -13
  1163. package/extensions/dm-web-access/kimi-search.js +5 -30
  1164. package/extensions/dm-web-access/mistral-search.js +251 -0
  1165. package/extensions/dm-web-access/ollama.js +2 -7
  1166. package/extensions/dm-web-access/openai-search.js +204 -46
  1167. package/extensions/dm-web-access/opencode-session-headers.js +15 -0
  1168. package/extensions/dm-web-access/package.json +1 -1
  1169. package/extensions/dm-web-access/page-query.js +14 -4
  1170. package/extensions/dm-web-access/parallel.js +1 -17
  1171. package/extensions/dm-web-access/pdf-extract.js +1 -0
  1172. package/extensions/dm-web-access/perplexity.js +10 -1
  1173. package/extensions/dm-web-access/querit.js +5 -34
  1174. package/extensions/dm-web-access/query-rewrite.js +6 -2
  1175. package/extensions/dm-web-access/search-answer-formatting.js +6 -0
  1176. package/extensions/dm-web-access/search-result-count-normalization.js +5 -0
  1177. package/extensions/dm-web-access/search1api.js +5 -34
  1178. package/extensions/dm-web-access/searchinfinity.js +5 -34
  1179. package/extensions/dm-web-access/searxng.js +3 -23
  1180. package/extensions/dm-web-access/serpapi.js +183 -0
  1181. package/extensions/dm-web-access/serpbase.js +3 -24
  1182. package/extensions/dm-web-access/serpdive.js +3 -23
  1183. package/extensions/dm-web-access/serper.js +5 -30
  1184. package/extensions/dm-web-access/serply.js +184 -0
  1185. package/extensions/dm-web-access/source-check.js +10 -46
  1186. package/extensions/dm-web-access/ssrf-protection.js +3 -1
  1187. package/extensions/dm-web-access/storage.js +9 -0
  1188. package/extensions/dm-web-access/summary-review.js +36 -25
  1189. package/extensions/dm-web-access/tavily.js +3 -23
  1190. package/extensions/dm-web-access/tinyfish.js +5 -34
  1191. package/extensions/dm-web-access/tool-activation.js +112 -0
  1192. package/extensions/dm-web-access/utils.js +27 -10
  1193. package/extensions/dm-web-access/valyu.js +5 -30
  1194. package/extensions/dm-web-access/xai-search.js +78 -42
  1195. package/extensions/dm-web-access/xcrawl.js +5 -30
  1196. package/package.json +7 -4
  1197. package/extensions/dm-lens/tools/ast-dump.js +0 -101
  1198. package/extensions/dm-subagents/src/api/dm-args.js +0 -3
  1199. package/extensions/dm-subagents/src/runs/shared/child-protocol.js +0 -447
  1200. package/extensions/dm-subagents/src/runs/shared/completion-evidence.js +0 -40
  1201. package/extensions/dm-subagents/src/runs/shared/completion-guard.js +0 -173
  1202. package/extensions/dm-subagents/src/runs/shared/dm-args.js +0 -581
  1203. package/extensions/dm-subagents/src/runs/shared/llm-intent-arbiter.js +0 -190
  1204. package/extensions/dm-subagents/src/runs/shared/model-exclusions.js +0 -207
  1205. package/extensions/dm-subagents/src/runs/shared/subagent-startup-retry.js +0 -50
  1206. package/extensions/dm-subagents/src/runs/shared/task-intent.js +0 -130
  1207. package/extensions/dm-subagents/src/shared/post-exit-stdio-guard.js +0 -68
  1208. /package/extensions/dm-subagents/src/inspectors/{herdr/shell-command.js → shell-command.js} +0 -0
@@ -1,7 +1,6 @@
1
1
  import * as fs from "node:fs";
2
2
  import * as path from "node:path";
3
3
  import {
4
- BUILTIN_AGENT_NAMES,
5
4
  defaultInheritProjectContext,
6
5
  defaultInheritSkills,
7
6
  defaultSystemPromptMode,
@@ -22,16 +21,20 @@ import {
22
21
  buildProactiveSkillSubagentRecommendationLines
23
22
  } from "./proactive-skills.js";
24
23
  import { parseFrontmatter, parseFrontmatterList } from "./frontmatter.js";
25
- import { toModelInfo } from "../shared/model-info.js";
26
- import { resolveSubagentModelOverride } from "../runs/shared/model-fallback.js";
24
+ import { resolveEffectiveThinking, toModelInfo } from "../shared/model-info.js";
25
+ import { resolveSubagentModelOverride } from "../runs/shared/model-resolution.js";
27
26
  import { validateToolBudgetConfig } from "../runs/shared/tool-budget.js";
28
- import { validateAcceptanceInput } from "../runs/shared/acceptance.js";
27
+ import { formatReviewGateLabel, validateAcceptanceInput } from "../runs/shared/acceptance.js";
29
28
  import { CODE_OWNED_EXTERNAL_CLI_ADAPTER_LABEL, isCodeOwnedExternalCliAdapterId, resolveExternalCliRunnerStatus, validateCodeOwnedProfileRunner } from "../runs/shared/external-cli-contract.js";
29
+ import { resolveExternalCliBinaryAvailability } from "../runs/shared/external-cli-preflight.js";
30
30
  import { getProjectConfigDir } from "../shared/utils.js";
31
31
  import { previewDisplayText } from "../shared/display-text.js";
32
32
  import { capabilityCeilingAgentRestrictionSources, isAgentAllowedByCapabilityCeiling, resolveCurrentSubagentCapabilityCeiling } from "../runs/shared/capability-ceiling.js";
33
- import { listRuntimeAgentConfigs, mergeRuntimeAgents } from "./runtime-agent-registry.js";
33
+ import { mergeRuntimeAgents } from "./runtime-agent-registry.js";
34
34
  import { listExternalJobProviders } from "../api/external-job-provider.js";
35
+ function discoverCatalog(ctx, cwd = ctx.cwd, provider) {
36
+ return (ctx.discoverAgentsAll ?? discoverAgentsAll)(cwd, provider);
37
+ }
35
38
  function result(text, isError = false, details) {
36
39
  return { content: [{ type: "text", text }], isError, details: { mode: "management", results: [], ...details } };
37
40
  }
@@ -100,16 +103,24 @@ function parsePackageConfig(value) {
100
103
  function allAgents(d) {
101
104
  return [...d.builtin, ...d.package, ...d.user, ...d.project];
102
105
  }
103
- function availableAgentNamesFromDiscovery(d) {
104
- return [...new Set(allAgents(d).map((agent) => agent.name))].sort((a, b) => a.localeCompare(b));
106
+ function effectiveAgentsForScope(scope, d, runtimeAgentOwner, preferredModelProvider) {
107
+ let agents = mergeAgentsForScope(scope, d.user, d.project, d.builtin, d.package);
108
+ if (runtimeAgentOwner) {
109
+ agents = mergeRuntimeAgents(runtimeAgentOwner, { agents }, allAgents(d), { cwd: d.cwd, scope, preferredModelProvider }).agents;
110
+ }
111
+ return agents;
112
+ }
113
+ function availableAgentNamesFromDiscovery(d, runtimeAgentOwner, preferredModelProvider) {
114
+ const agents = runtimeAgentOwner ? effectiveAgentsForScope("both", d, runtimeAgentOwner, preferredModelProvider) : allAgents(d);
115
+ return [...new Set(agents.map((agent) => agent.name))].sort((a, b) => a.localeCompare(b));
105
116
  }
106
- function availableAgentNames(cwd) {
107
- return availableAgentNamesFromDiscovery(discoverAgentsAll(cwd));
117
+ function availableAgentNames(ctx, cwd = ctx.cwd) {
118
+ return availableAgentNamesFromDiscovery(discoverCatalog(ctx, cwd));
108
119
  }
109
- function findAgentsInDiscovery(name, d, scope = "both") {
120
+ function findAgentsInDiscovery(name, d, scope = "both", runtimeAgentOwner, preferredModelProvider) {
110
121
  const raw = name.trim();
111
122
  const sanitized = sanitizeName(raw);
112
- const scoped = mergeAgentsForScope(scope, d.user, d.project, d.builtin, d.package);
123
+ const scoped = effectiveAgentsForScope(scope, d, runtimeAgentOwner, preferredModelProvider);
113
124
  let resolved = resolveAgentName(raw, scoped);
114
125
  if (!resolved.agent && !resolved.error && sanitized !== raw)
115
126
  resolved = resolveAgentName(sanitized, scoped);
@@ -117,8 +128,8 @@ function findAgentsInDiscovery(name, d, scope = "both") {
117
128
  return scoped.filter((agent) => agent.name === resolved.agent.name).sort((a, b) => a.source.localeCompare(b.source));
118
129
  return scoped.filter((agent) => Boolean(resolveAgentName(raw, [agent]).agent) || sanitized !== raw && Boolean(resolveAgentName(sanitized, [agent]).agent)).sort((a, b) => a.source.localeCompare(b.source));
119
130
  }
120
- function findAgents(name, cwd, scope = "both") {
121
- return findAgentsInDiscovery(name, discoverAgentsAll(cwd), scope);
131
+ function findAgents(name, ctx, scope = "both") {
132
+ return findAgentsInDiscovery(name, discoverCatalog(ctx), scope);
122
133
  }
123
134
  function diagnosticsForScope(diagnostics, scope) {
124
135
  if (scope === "both")
@@ -143,8 +154,8 @@ function resolveEffectiveAgent(d, name) {
143
154
  const matches = candidates.filter((agent) => agent.name === resolved.agent.name);
144
155
  return { agent: matches.reduce((best, agent) => AGENT_SOURCE_PRECEDENCE[agent.source] > AGENT_SOURCE_PRECEDENCE[best.source] ? agent : best) };
145
156
  }
146
- function nameExistsInScope(cwd, scope, name, excludePath) {
147
- const d = discoverAgentsAll(cwd);
157
+ function nameExistsInScope(ctx, scope, name, excludePath) {
158
+ const d = discoverCatalog(ctx);
148
159
  for (const a of scope === "user" ? d.user : d.project) {
149
160
  if (a.name === name && a.filePath !== excludePath)
150
161
  return true;
@@ -162,13 +173,6 @@ function modelWarning(ctx, model) {
162
173
  return;
163
174
  return `Warning: model '${model}' is not in the current model registry. Run subagent({ action: "models" }) to list valid provider/id selectors, then use the exact provider/id form (bare ids resolve only when unique).`;
164
175
  }
165
- function fallbackModelsWarning(ctx, fallbackModels) {
166
- if (!fallbackModels || fallbackModels.length === 0)
167
- return;
168
- const available = new Set(ctx.modelRegistry.getAvailable().flatMap((m) => [`${m.provider}/${m.id}`, m.id]));
169
- const missing = fallbackModels.filter((model) => !available.has(model));
170
- return missing.length ? `Warning: fallback models not in the current model registry: ${missing.join(", ")}.` : undefined;
171
- }
172
176
  function skillsWarning(cwd, agent) {
173
177
  if (!agent.skills?.length)
174
178
  return;
@@ -187,13 +191,27 @@ function withDeclaredExtensionPaths(config, filePath) {
187
191
  export function editableAgentConfig(agent) {
188
192
  const { extensions: _extensions, ...withoutExtensions } = agent;
189
193
  const base = agent.override?.base;
194
+ const description = base?.description ?? agent.description;
195
+ const frontmatterFields = agent.source === "builtin" || agent.source === "runtime" ? undefined : readAgentFrontmatterFields(agent.filePath);
196
+ const hasDeclaredField = (...fields) => frontmatterFields === undefined || fields.some((field) => frontmatterFields.has(field));
197
+ const withoutSettingsDefaults = (config) => {
198
+ if (!frontmatterFields)
199
+ return config;
200
+ const next = { ...config };
201
+ if (!hasDeclaredField("model"))
202
+ delete next.model;
203
+ if (!hasDeclaredField("thinking"))
204
+ delete next.thinking;
205
+ return next;
206
+ };
190
207
  const {
191
208
  override: _override,
209
+ description: _description,
192
210
  output: _output,
193
211
  outputMode: _outputMode,
194
212
  defaultReads: _defaultReads,
195
213
  model: _model,
196
- fallbackModels: _fallbackModels,
214
+ fast: _fast,
197
215
  thinking: _thinking,
198
216
  systemPromptMode: _systemPromptMode,
199
217
  inheritProjectContext: _inheritProjectContext,
@@ -206,26 +224,30 @@ export function editableAgentConfig(agent) {
206
224
  skills: _skills,
207
225
  skillPath: _skillPath,
208
226
  tools: _tools,
227
+ excludeTools: _excludeTools,
209
228
  mcpDirectTools: _mcpDirectTools,
229
+ allowNestedSubagents: _allowNestedSubagents,
230
+ allowedAgents: _allowedAgents,
210
231
  subagentOnlyExtensions: _subagentOnlyExtensions,
211
232
  mutationTools: _mutationTools,
212
- completionGuard: _completionGuard,
233
+ toolBudget: _toolBudget,
213
234
  ...editable
214
235
  } = withoutExtensions;
215
236
  if (!base) {
216
- return withDeclaredExtensionPaths({
237
+ return withDeclaredExtensionPaths(withoutSettingsDefaults({
217
238
  ...withoutExtensions,
218
239
  ...agent.extensionsFromDefault ? {} : agent.extensions !== undefined ? { extensions: [...agent.extensions] } : {}
219
- }, agent.filePath);
240
+ }), agent.filePath);
220
241
  }
221
242
  return withDeclaredExtensionPaths({
222
243
  ...editable,
244
+ description,
223
245
  ...base.output !== undefined ? { output: base.output } : {},
224
246
  ...base.outputMode !== undefined ? { outputMode: base.outputMode } : {},
225
247
  ...base.defaultReads !== undefined ? { defaultReads: [...base.defaultReads] } : {},
226
- ...base.model !== undefined ? { model: base.model } : {},
227
- ...base.fallbackModels !== undefined ? { fallbackModels: [...base.fallbackModels] } : {},
228
- ...base.thinking !== undefined ? { thinking: base.thinking } : {},
248
+ ...base.model !== undefined && hasDeclaredField("model") ? { model: base.model } : {},
249
+ ...base.fast !== undefined ? { fast: base.fast } : {},
250
+ ...base.thinking !== undefined && hasDeclaredField("thinking") ? { thinking: base.thinking } : {},
229
251
  systemPromptMode: base.systemPromptMode,
230
252
  inheritProjectContext: base.inheritProjectContext,
231
253
  inheritGlobalContext: base.inheritGlobalContext,
@@ -237,11 +259,14 @@ export function editableAgentConfig(agent) {
237
259
  ...base.skills !== undefined ? { skills: [...base.skills] } : {},
238
260
  ...base.skillPath !== undefined ? { skillPath: [...base.skillPath] } : {},
239
261
  ...base.tools !== undefined ? { tools: [...base.tools] } : {},
262
+ ...base.excludeTools !== undefined ? { excludeTools: [...base.excludeTools] } : {},
240
263
  ...base.mcpDirectTools !== undefined ? { mcpDirectTools: [...base.mcpDirectTools] } : {},
264
+ ...base.allowNestedSubagents !== undefined ? { allowNestedSubagents: base.allowNestedSubagents } : {},
265
+ ...base.allowedAgents !== undefined ? { allowedAgents: [...base.allowedAgents] } : {},
241
266
  ...base.extensions !== undefined ? { extensions: [...base.extensions] } : {},
242
267
  ...base.subagentOnlyExtensions !== undefined ? { subagentOnlyExtensions: [...base.subagentOnlyExtensions] } : {},
243
268
  ...base.mutationTools !== undefined ? { mutationTools: [...base.mutationTools] } : {},
244
- ...base.completionGuard !== undefined ? { completionGuard: base.completionGuard } : {}
269
+ ...base.toolBudget !== undefined ? { toolBudget: base.toolBudget } : {}
245
270
  }, agent.filePath);
246
271
  }
247
272
  function readAgentFrontmatterFields(filePath) {
@@ -264,6 +289,8 @@ export function preservedAgentFrontmatterFields(agent, cfg) {
264
289
  changed("package");
265
290
  if (hasKey(cfg, "description"))
266
291
  changed("description");
292
+ if (hasKey(cfg, "advertise"))
293
+ changed("advertise");
267
294
  if (hasKey(cfg, "aliases"))
268
295
  changed("alias", "aliases");
269
296
  if (hasKey(cfg, "systemPrompt"))
@@ -272,10 +299,10 @@ export function preservedAgentFrontmatterFields(agent, cfg) {
272
299
  changed("runner");
273
300
  if (hasKey(cfg, "model"))
274
301
  changed("model");
275
- if (hasKey(cfg, "fallbackModels"))
276
- changed("fallbackModels");
277
302
  if (hasKey(cfg, "tools"))
278
303
  changed("tools");
304
+ if (hasKey(cfg, "excludeTools"))
305
+ changed("excludeTools");
279
306
  if (hasKey(cfg, "skills"))
280
307
  changed("skill", "skills");
281
308
  if (hasKey(cfg, "skillPath"))
@@ -327,11 +354,6 @@ export function preservedAgentFrontmatterFields(agent, cfg) {
327
354
  changed("defaultProgress");
328
355
  if (hasKey(cfg, "maxSubagentDepth"))
329
356
  changed("maxSubagentDepth");
330
- if (hasKey(cfg, "completionGuard")) {
331
- changed("completionGuard");
332
- if (cfg.completionGuard === true)
333
- fields.add("completionGuard");
334
- }
335
357
  if (hasKey(cfg, "toolBudget"))
336
358
  changed("toolBudget");
337
359
  return fields;
@@ -353,6 +375,14 @@ function parseTools(raw) {
353
375
  };
354
376
  }
355
377
  function applyAgentConfig(target, cfg) {
378
+ if (hasKey(cfg, "advertise")) {
379
+ if (cfg.advertise === "")
380
+ delete target.advertise;
381
+ else if (typeof cfg.advertise === "boolean")
382
+ target.advertise = cfg.advertise;
383
+ else
384
+ return "config.advertise must be a boolean or empty string when provided.";
385
+ }
356
386
  if (hasKey(cfg, "aliases")) {
357
387
  if (cfg.aliases === false || cfg.aliases === "")
358
388
  delete target.aliases;
@@ -408,24 +438,8 @@ function applyAgentConfig(target, cfg) {
408
438
  } else
409
439
  return "config.model must be a string or false when provided.";
410
440
  }
411
- if (hasKey(cfg, "fallbackModels")) {
412
- if (cfg.fallbackModels === false || cfg.fallbackModels === "")
413
- delete target.fallbackModels;
414
- else if (typeof cfg.fallbackModels === "string") {
415
- const models = parseCsv(cfg.fallbackModels);
416
- if (models.length)
417
- target.fallbackModels = models;
418
- else
419
- delete target.fallbackModels;
420
- } else if (Array.isArray(cfg.fallbackModels)) {
421
- const models = cfg.fallbackModels.filter((value) => typeof value === "string").map((value) => value.trim()).filter(Boolean);
422
- if (models.length)
423
- target.fallbackModels = [...new Set(models)];
424
- else
425
- delete target.fallbackModels;
426
- } else
427
- return "config.fallbackModels must be a comma-separated string, string array, or false when provided.";
428
- }
441
+ if (hasKey(cfg, "fallbackModels"))
442
+ return "config.fallbackModels was removed; configure one model instead.";
429
443
  if (hasKey(cfg, "tools")) {
430
444
  if (cfg.tools === false || cfg.tools === "") {
431
445
  delete target.tools;
@@ -443,6 +457,24 @@ function applyAgentConfig(target, cfg) {
443
457
  } else
444
458
  return "config.tools must be a comma-separated string or false when provided.";
445
459
  }
460
+ if (hasKey(cfg, "excludeTools")) {
461
+ if (cfg.excludeTools === false || cfg.excludeTools === "")
462
+ delete target.excludeTools;
463
+ else if (typeof cfg.excludeTools === "string") {
464
+ const excludeTools = parseCsv(cfg.excludeTools);
465
+ if (excludeTools.length)
466
+ target.excludeTools = [...new Set(excludeTools)];
467
+ else
468
+ delete target.excludeTools;
469
+ } else if (Array.isArray(cfg.excludeTools) && cfg.excludeTools.every((entry) => typeof entry === "string")) {
470
+ const excludeTools = [...new Set(cfg.excludeTools.map((entry) => entry.trim()).filter(Boolean))];
471
+ if (excludeTools.length)
472
+ target.excludeTools = excludeTools;
473
+ else
474
+ delete target.excludeTools;
475
+ } else
476
+ return "config.excludeTools must be a comma-separated string, string array, or false when provided.";
477
+ }
446
478
  if (hasKey(cfg, "skills")) {
447
479
  if (cfg.skills === false || cfg.skills === "")
448
480
  delete target.skills;
@@ -617,11 +649,6 @@ function applyAgentConfig(target, cfg) {
617
649
  } else
618
650
  return "config.maxSubagentDepth must be an integer >= 0 or false when provided.";
619
651
  }
620
- if (hasKey(cfg, "completionGuard")) {
621
- if (typeof cfg.completionGuard !== "boolean")
622
- return "config.completionGuard must be a boolean when provided.";
623
- target.completionGuard = cfg.completionGuard;
624
- }
625
652
  if (hasKey(cfg, "toolBudget")) {
626
653
  if (cfg.toolBudget === false || cfg.toolBudget === "")
627
654
  delete target.toolBudget;
@@ -635,15 +662,14 @@ function applyAgentConfig(target, cfg) {
635
662
  if (target.runner?.type === "external-cli" || target.runner?.type === "external-job") {
636
663
  const unsupported = [
637
664
  target.tools?.length || target.mcpDirectTools?.length ? "tools" : undefined,
665
+ target.excludeTools?.length ? "excludeTools" : undefined,
638
666
  target.model ? "model" : undefined,
639
- target.fallbackModels?.length ? "fallbackModels" : undefined,
640
667
  target.thinking ? "thinking" : undefined,
641
668
  target.extensions?.length ? "extensions" : undefined,
642
669
  target.subagentOnlyExtensions?.length ? "subagentOnlyExtensions" : undefined,
643
670
  target.mutationTools?.length ? "mutationTools" : undefined,
644
671
  target.skills?.length || target.skillPath?.length ? "skills" : undefined,
645
672
  target.maxSubagentDepth !== undefined ? "maxSubagentDepth" : undefined,
646
- target.completionGuard !== undefined ? "completionGuard" : undefined,
647
673
  target.toolBudget ? "toolBudget" : undefined
648
674
  ].filter((field) => Boolean(field));
649
675
  if (unsupported.length > 0)
@@ -651,7 +677,7 @@ function applyAgentConfig(target, cfg) {
651
677
  }
652
678
  return;
653
679
  }
654
- function resolveTarget(name, matches, cwd, scopeHint) {
680
+ function resolveTarget(name, matches, cwd, ctx, scopeHint) {
655
681
  const distinctNames = [...new Set(matches.map((match) => match.name))];
656
682
  if (distinctNames.length > 1)
657
683
  return result(`Ambiguous agent alias or name '${name}': ${distinctNames.sort((a, b) => a.localeCompare(b)).join(", ")}`, true);
@@ -659,7 +685,7 @@ function resolveTarget(name, matches, cwd, scopeHint) {
659
685
  if (mutable.length === 0) {
660
686
  if (matches.length > 0)
661
687
  return result(`Agent '${name}' is read-only and cannot be modified. Create a same-named agent in user or project scope to override it.`, true);
662
- return result(`Agent '${name}' not found. Available: ${availableAgentNames(cwd).join(", ") || "none"}.`, true);
688
+ return result(`Agent '${name}' not found. Available: ${availableAgentNames(ctx, cwd).join(", ") || "none"}.`, true);
663
689
  }
664
690
  if (mutable.length === 1)
665
691
  return mutable[0];
@@ -677,8 +703,8 @@ ${paths}`, true);
677
703
  return result(`Multiple agents named '${name}' found in scope '${scope}': ${scoped.map((match) => match.filePath).join(", ")}`, true);
678
704
  return scoped[0];
679
705
  }
680
- function renamePath(currentPath, newName, scope, cwd) {
681
- if (nameExistsInScope(cwd, scope, newName, currentPath))
706
+ function renamePath(currentPath, newName, scope, ctx) {
707
+ if (nameExistsInScope(ctx, scope, newName, currentPath))
682
708
  return { error: `Name '${newName}' already exists in ${scope} scope.` };
683
709
  const filePath = path.join(path.dirname(currentPath), `${newName}.md`);
684
710
  if (fs.existsSync(filePath) && filePath !== currentPath)
@@ -706,18 +732,43 @@ function externalJobProviderSuffix(provider, names) {
706
732
  return "?";
707
733
  return names.has(provider) ? "✓" : "missing";
708
734
  }
709
- function runnerListBadge(agent, providerNames) {
735
+ function externalCliAvailabilityKey(command, machine) {
736
+ return machine ? `ssh@${machine}` : command;
737
+ }
738
+ function externalCliAvailabilityForAgents(agents) {
739
+ const availability = new Map;
740
+ for (const agent of agents) {
741
+ const runner = agent.runner;
742
+ if (runner?.type !== "external-cli")
743
+ continue;
744
+ const key = externalCliAvailabilityKey(runner.command, agent.machine);
745
+ if (availability.has(key))
746
+ continue;
747
+ availability.set(key, resolveExternalCliBinaryAvailability(agent.machine ? "ssh" : runner.command, process.env));
748
+ }
749
+ return availability;
750
+ }
751
+ function runnerListBadge(agent, providerNames, externalCliAvailability) {
710
752
  if (agent.runner?.type === "external-job")
711
753
  return `external-job:${agent.runner.provider} ${externalJobProviderSuffix(agent.runner.provider, providerNames)}`;
712
- if (agent.runner?.type === "external-cli")
713
- return "external-cli";
754
+ if (agent.runner?.type === "external-cli") {
755
+ const placed = agent.machine ? `${agent.runner.command} @ ${agent.machine}` : agent.runner.command;
756
+ const availability = externalCliAvailability?.get(externalCliAvailabilityKey(agent.runner.command, agent.machine));
757
+ if (!availability)
758
+ return `external-cli:${placed}`;
759
+ if (agent.machine)
760
+ return `external-cli:${placed} saved Herdr placement; transport ${availability.available ? "✓" : "missing"}; machine not preflighted`;
761
+ return `external-cli:${placed} ${availability.available ? "✓" : "missing"}`;
762
+ }
763
+ if (agent.machine)
764
+ return `machine: ${agent.machine} (saved Herdr placement)`;
714
765
  return;
715
766
  }
716
- function agentListMetadata(agent, providerNames) {
767
+ function agentListMetadata(agent, providerNames, externalCliAvailability) {
717
768
  const source = agent.source === "package" ? packageSourceLabel(agent) : agent.source;
718
769
  return [
719
770
  source,
720
- runnerListBadge(agent, providerNames),
771
+ runnerListBadge(agent, providerNames, externalCliAvailability),
721
772
  agent.defaultContext ? `context: ${agent.defaultContext}` : undefined,
722
773
  agent.aliases?.length ? `aliases: ${agent.aliases.join(", ")}` : undefined
723
774
  ].filter((part) => Boolean(part)).join(", ");
@@ -725,7 +776,7 @@ function agentListMetadata(agent, providerNames) {
725
776
  function formatAgentListLine(agent, providerNames) {
726
777
  return `- ${agent.name} (${agentListMetadata(agent, providerNames)}): ${agent.description}`;
727
778
  }
728
- function formatAgentCapabilitiesLine(agent, providerNames) {
779
+ function formatAgentCapabilitiesLine(agent, providerNames, externalCliAvailability) {
729
780
  const declaredTools = [
730
781
  ...agent.tools ?? [],
731
782
  ...(agent.mcpDirectTools ?? []).map((tool) => `mcp:${tool}`)
@@ -736,6 +787,8 @@ function formatAgentCapabilitiesLine(agent, providerNames) {
736
787
  } else if (declaredTools.length > 0) {
737
788
  tools = declaredTools.join(", ");
738
789
  }
790
+ if (agent.excludeTools?.length)
791
+ tools = `${tools}; excludes: ${agent.excludeTools.join(", ")}`;
739
792
  let model = "inherits current session";
740
793
  if (agent.model !== undefined) {
741
794
  model = agent.model;
@@ -743,25 +796,68 @@ function formatAgentCapabilitiesLine(agent, providerNames) {
743
796
  model = `${agent.modelProvider}/${agent.model}`;
744
797
  }
745
798
  const thinking = agent.thinking === false ? "off" : agent.thinking ?? "default";
746
- return `- ${agent.name} (${agentListMetadata(agent, providerNames)}): Description: ${previewDisplayText(agent.description, 240)}; Tools: ${tools}; Model: ${model}; Thinking: ${thinking}`;
799
+ const machine = agent.machine ? `; Machine: ${agent.machine} (saved Herdr placement)` : "";
800
+ const acceptance = formatAcceptanceSummary(agent);
801
+ return `- ${agent.name} (${agentListMetadata(agent, providerNames, externalCliAvailability)}): Description: ${previewDisplayText(agent.description, 240)}; Tools: ${tools}; Model: ${model}; Thinking: ${thinking}${machine}${acceptance ? `; ${acceptance}` : ""}`;
802
+ }
803
+ function formatAcceptanceSummary(agent) {
804
+ const policy = agent.defaultAcceptance;
805
+ const summary = [];
806
+ if (policy === false)
807
+ summary.push("Acceptance: disabled");
808
+ else if (typeof policy === "string")
809
+ summary.push(`Acceptance: ${policy}`);
810
+ else if (policy) {
811
+ const modifiers = [
812
+ ...policy.evidence ?? [],
813
+ ...(policy.verify ?? []).map((command) => `verify: ${formatAcceptanceDisplayLabel(command.id)}`),
814
+ ...policy.criteria?.length ? [`criteria: ${policy.criteria.length}`] : [],
815
+ ...policy.stopRules?.length ? [`stopRules: ${policy.stopRules.length}`] : []
816
+ ];
817
+ if (policy.review === false)
818
+ modifiers.push("review: off");
819
+ else if (policy.review) {
820
+ const displayReview = policy.review.agent ? { ...policy.review, agent: formatAcceptanceDisplayLabel(policy.review.agent) } : policy.review;
821
+ modifiers.push(`review: ${formatReviewGateLabel(displayReview)}`);
822
+ }
823
+ if (policy.report)
824
+ modifiers.push(`report: ${policy.report}`);
825
+ summary.push(`Acceptance: ${policy.level ?? "auto"}${modifiers.length > 0 ? ` (${modifiers.join(", ")})` : ""}`);
826
+ }
827
+ if (agent.acceptanceRole)
828
+ summary.push(`Acceptance role: ${agent.acceptanceRole}`);
829
+ return summary.length > 0 ? summary.join("; ") : undefined;
830
+ }
831
+ function formatAcceptanceDisplayLabel(value) {
832
+ return JSON.stringify(previewDisplayText(value, 80));
747
833
  }
748
834
  const EXTERNAL_JOB_CAPABILITIES = { stop: false, steer: false, resume: false, structuredOutput: false, toolEvents: false };
749
835
  const PI_AGENT_RUNNER = { type: "dm" };
750
836
  function listOrEmpty(values) {
751
837
  return values ?? [];
752
838
  }
753
- function agentCapabilityRunner(agent, providerNames) {
839
+ function agentCapabilityRunner(agent, providerNames, externalCliAvailability) {
754
840
  const runner = agent.runner;
755
841
  if (!runner || runner.type === "dm")
756
842
  return PI_AGENT_RUNNER;
757
- if (runner.type === "external-cli")
758
- return { type: "external-cli", adapter: runner.adapter, capabilities: resolveExternalCliRunnerStatus(runner).capabilities };
843
+ if (runner.type === "external-cli") {
844
+ const availability = externalCliAvailability.get(externalCliAvailabilityKey(runner.command, agent.machine));
845
+ return {
846
+ type: "external-cli",
847
+ adapter: runner.adapter,
848
+ command: runner.command,
849
+ ...agent.machine ? { machine: agent.machine } : {},
850
+ ...availability,
851
+ capabilities: resolveExternalCliRunnerStatus(runner).capabilities
852
+ };
853
+ }
759
854
  return { type: "external-job", provider: runner.provider, available: providerNames?.has(runner.provider), capabilities: EXTERNAL_JOB_CAPABILITIES };
760
855
  }
761
856
  function agentCapabilityTools(agent) {
762
857
  return {
763
858
  ambient: agent.tools === undefined && agent.mcpDirectTools === undefined,
764
859
  names: listOrEmpty(agent.tools),
860
+ ...agent.excludeTools !== undefined ? { excludeTools: [...agent.excludeTools] } : {},
765
861
  mcpDirectTools: listOrEmpty(agent.mcpDirectTools),
766
862
  mutationTools: agent.mutationTools
767
863
  };
@@ -774,10 +870,11 @@ function agentCapabilityRow(agent, options) {
774
870
  executable: options.executable,
775
871
  restrictionSources: options.executable ? undefined : options.restrictionSources ?? [],
776
872
  aliases: agent.aliases ? [...agent.aliases] : undefined,
777
- runner: agentCapabilityRunner(agent, options.providerNames),
873
+ runner: agentCapabilityRunner(agent, options.providerNames, options.externalCliAvailability),
778
874
  tools: agentCapabilityTools(agent),
779
- model: presentDetails({ value: agent.model, fallbackModels: agent.fallbackModels, thinking: agent.thinking }),
875
+ model: presentDetails({ value: agent.model, thinking: agent.thinking }),
780
876
  execution: presentDetails({ defaultAsync: agent.defaultAsync, timeoutMs: agent.defaultTimeoutMs }),
877
+ acceptance: presentDetails({ policy: agent.defaultAcceptance, role: agent.acceptanceRole }),
781
878
  output: presentDetails({ path: agent.output, mode: agent.outputMode }),
782
879
  extensions: presentDetails({ names: agent.extensions, subagentOnly: agent.subagentOnlyExtensions, skills: agent.skills })
783
880
  };
@@ -785,8 +882,8 @@ function agentCapabilityRow(agent, options) {
785
882
  function agentCapabilitiesSnapshot(input) {
786
883
  return {
787
884
  agents: [
788
- ...input.agents.map((agent) => agentCapabilityRow(agent, { executable: true, providerNames: input.providerNames })),
789
- ...input.restrictedAgents.map((agent) => agentCapabilityRow(agent, { executable: false, providerNames: input.providerNames, restrictionSources: input.restrictedSources }))
885
+ ...input.agents.map((agent) => agentCapabilityRow(agent, { executable: true, providerNames: input.providerNames, externalCliAvailability: input.externalCliAvailability })),
886
+ ...input.restrictedAgents.map((agent) => agentCapabilityRow(agent, { executable: false, providerNames: input.providerNames, externalCliAvailability: input.externalCliAvailability, restrictionSources: input.restrictedSources }))
790
887
  ],
791
888
  restrictedCount: input.restrictedAgents.length,
792
889
  ...input.restrictedSources?.length ? { capabilityCeilingSources: [...input.restrictedSources] } : {}
@@ -818,6 +915,7 @@ function agentCapabilityDetails(input) {
818
915
  agents: input.agents,
819
916
  restrictedAgents: input.restrictedAgents,
820
917
  providerNames: input.providerNames,
918
+ externalCliAvailability: input.externalCliAvailability,
821
919
  restrictedSources: input.restrictedSources
822
920
  }))
823
921
  };
@@ -869,10 +967,10 @@ function formatAgentDetail(agent) {
869
967
  lines.push(`Aliases: ${agent.aliases.join(", ")}`);
870
968
  if (agent.model)
871
969
  lines.push(`Model: ${agent.model}`);
872
- if (agent.fallbackModels?.length)
873
- lines.push(`Fallback models: ${agent.fallbackModels.join(", ")}`);
874
970
  if (tools.length)
875
971
  lines.push(`Tools: ${tools.join(", ")}`);
972
+ if (agent.excludeTools?.length)
973
+ lines.push(`Excluded tools: ${agent.excludeTools.join(", ")}`);
876
974
  if (agent.skills?.length)
877
975
  lines.push(`Skills: ${agent.skills.join(", ")}`);
878
976
  if (agent.skillPath?.length)
@@ -919,8 +1017,6 @@ function formatAgentDetail(agent) {
919
1017
  lines.push("Progress: true");
920
1018
  if (agent.maxSubagentDepth !== undefined)
921
1019
  lines.push(`Max subagent depth: ${agent.maxSubagentDepth}`);
922
- if (agent.completionGuard === false)
923
- lines.push("Completion guard: false");
924
1020
  if (agent.toolBudget)
925
1021
  lines.push(`Tool budget: ${JSON.stringify(agent.toolBudget)}`);
926
1022
  if (agent.memory)
@@ -932,17 +1028,8 @@ function formatAgentDetail(agent) {
932
1028
  }
933
1029
  export function handleList(params, ctx) {
934
1030
  const scope = normalizeListScope(params.agentScope) ?? "both";
935
- const d = discoverAgentsAll(ctx.cwd, ctx.model?.provider);
936
- let scopedAgents = mergeAgentsForScope(scope, d.user, d.project, d.builtin, d.package);
937
- if (ctx.runtimeAgentOwner && listRuntimeAgentConfigs(ctx.runtimeAgentOwner).length > 0) {
938
- const configuredAgents = [
939
- ...d.builtin,
940
- ...d.package,
941
- ...d.user,
942
- ...d.project
943
- ];
944
- scopedAgents = mergeRuntimeAgents(ctx.runtimeAgentOwner, { agents: scopedAgents }, configuredAgents).agents;
945
- }
1031
+ const d = discoverCatalog(ctx, ctx.cwd, ctx.model?.provider);
1032
+ let scopedAgents = effectiveAgentsForScope(scope, d, ctx.runtimeAgentOwner, ctx.model?.provider);
946
1033
  scopedAgents = scopedAgents.sort((a, b) => a.name.localeCompare(b.name));
947
1034
  const capabilityCeiling = resolveCurrentSubagentCapabilityCeiling(ctx.currentSessionId);
948
1035
  const visibleAgents = scopedAgents.filter((a) => !a.disabled);
@@ -957,7 +1044,8 @@ export function handleList(params, ctx) {
957
1044
  const providerStatus = registeredExternalJobProviderStatus();
958
1045
  const providerNameSet = providerNames(providerStatus);
959
1046
  const capabilityMode = params.capabilities === true;
960
- const formatLine = capabilityMode ? formatAgentCapabilitiesLine : formatAgentListLine;
1047
+ const externalCliAvailability = capabilityMode ? externalCliAvailabilityForAgents([...agents, ...restrictedAgents]) : undefined;
1048
+ const formatLine = capabilityMode ? (agent, names) => formatAgentCapabilitiesLine(agent, names, externalCliAvailability) : formatAgentListLine;
961
1049
  const lines = [
962
1050
  capabilityMode ? "Executable agents (capabilities):" : "Executable agents:",
963
1051
  ...formatAgentListSections(agents, providerNameSet, formatLine)
@@ -973,6 +1061,7 @@ export function handleList(params, ctx) {
973
1061
  agents,
974
1062
  restrictedAgents,
975
1063
  providerNames: providerNameSet,
1064
+ externalCliAvailability: externalCliAvailability ?? new Map,
976
1065
  restrictedSources
977
1066
  }));
978
1067
  }
@@ -984,78 +1073,91 @@ function formatModelSource(agent, currentModel) {
984
1073
  return `${agent.modelSource.scope} defaultModel`;
985
1074
  }
986
1075
  if (agent.model)
987
- return "builtin agent config";
1076
+ return `${agent.source} agent config`;
988
1077
  if (currentModel)
989
1078
  return "inherits current session model";
990
1079
  return "inherit requested, but no current session model is available";
991
1080
  }
992
1081
  function handleModels(params, ctx) {
993
1082
  const requestedAgent = params.agent?.trim();
994
- if (requestedAgent && !BUILTIN_AGENT_NAMES.includes(requestedAgent)) {
995
- return result(`Builtin agent '${requestedAgent}' not found. Available: ${BUILTIN_AGENT_NAMES.join(", ")}.`, true);
996
- }
997
- const discovered = discoverAgentsAll(ctx.cwd, ctx.model?.provider);
998
- const builtinByName = new Map(discovered.builtin.map((agent) => [agent.name, agent]));
999
- const resolveBuiltinModelAgent = (name) => builtinByName.get(name) ?? resolveAgentName(name, discovered.builtin).agent;
1083
+ const scope = normalizeListScope(params.agentScope);
1084
+ if (!scope)
1085
+ return result("agentScope must be 'user', 'project', or 'both' for models.", true);
1086
+ const discovered = discoverCatalog(ctx, ctx.cwd, ctx.model?.provider);
1087
+ const effectiveAgents = effectiveAgentsForScope(scope, discovered, ctx.runtimeAgentOwner, ctx.model?.provider).sort((a, b) => a.name.localeCompare(b.name));
1000
1088
  const availableModels = ctx.modelRegistry.getAvailable().map(toModelInfo);
1001
1089
  const currentModel = ctx.model ? { provider: ctx.model.provider, id: ctx.model.id } : undefined;
1002
1090
  const preferredProvider = ctx.model?.provider;
1003
- const names = requestedAgent ? [requestedAgent] : [...BUILTIN_AGENT_NAMES];
1091
+ const capabilityCeiling = resolveCurrentSubagentCapabilityCeiling(ctx.currentSessionId);
1092
+ let selectedAgents = effectiveAgents;
1004
1093
  if (requestedAgent) {
1005
- const agent = resolveBuiltinModelAgent(requestedAgent);
1006
- if (!agent)
1007
- return result(`Builtin agent '${requestedAgent}' not found.`, true);
1008
- const resolvedModel = resolveSubagentModelOverride(agent.model, currentModel, availableModels, preferredProvider);
1009
- const lines = [
1010
- "Builtin subagent model",
1011
- "",
1012
- `Agent: ${requestedAgent}`,
1013
- "Effective model:",
1014
- ` ${resolvedModel ?? "(unresolved)"}`,
1015
- `Source: ${formatModelSource(agent, currentModel)}`
1016
- ];
1017
- if (agent.override) {
1018
- lines.push("Override file:");
1019
- lines.push(` ${agent.override.path}`);
1020
- }
1021
- if (agent.model && resolvedModel && agent.model !== resolvedModel) {
1022
- lines.push("Requested model setting:");
1023
- lines.push(` ${agent.model}`);
1094
+ const matches = findAgentsInDiscovery(requestedAgent, discovered, scope, ctx.runtimeAgentOwner, ctx.model?.provider);
1095
+ const diagnostics = diagnosticsForScope(discovered.agentDiagnostics, scope);
1096
+ const normalizedName = sanitizeName(requestedAgent);
1097
+ const diagnostic = findBlockingAgentDiagnostic(requestedAgent, matches, diagnostics) ?? (normalizedName !== requestedAgent ? findBlockingAgentDiagnostic(normalizedName, matches, diagnostics) : undefined);
1098
+ if (diagnostic)
1099
+ return result(`Agent '${params.agent}' has invalid configuration: ${diagnostic.error}`, true);
1100
+ const distinctNames = [...new Set(matches.map((agent) => agent.name))];
1101
+ if (distinctNames.length > 1)
1102
+ return result(`Ambiguous agent alias or name '${params.agent}': ${distinctNames.sort((a, b) => a.localeCompare(b)).join(", ")}`, true);
1103
+ if (!matches.length) {
1104
+ return result(`Agent '${params.agent}' not found. Available: ${availableAgentNamesFromDiscovery(discovered, ctx.runtimeAgentOwner, ctx.model?.provider).join(", ") || "none"}.`, true);
1024
1105
  }
1025
- if (agent.disabled)
1026
- lines.push("Disabled: true");
1027
- lines.push("Current session model:");
1028
- lines.push(` ${currentModel ? `${currentModel.provider}/${currentModel.id}` : "(unavailable)"}`);
1029
- return result(lines.join(`
1030
- `));
1106
+ selectedAgents = [matches[0]];
1031
1107
  }
1032
1108
  const lines = [
1033
- "Builtin subagent models",
1109
+ requestedAgent ? "Subagent model" : "Subagent models",
1034
1110
  "",
1035
- "Current session model:",
1036
- ` ${currentModel ? `${currentModel.provider}/${currentModel.id}` : "(unavailable)"}`,
1037
- ""
1111
+ ...requestedAgent ? [] : [
1112
+ "Current session model:",
1113
+ ` ${currentModel ? `${currentModel.provider}/${currentModel.id}` : "(unavailable)"}`,
1114
+ ""
1115
+ ]
1038
1116
  ];
1039
- for (const name of names) {
1040
- const agent = resolveBuiltinModelAgent(name);
1041
- if (!agent) {
1042
- lines.push(name);
1043
- lines.push(" model:");
1044
- lines.push(" (builtin definition not found)");
1045
- lines.push(" source: missing");
1046
- lines.push("");
1047
- continue;
1117
+ const modelEntries = selectedAgents.flatMap((agent) => requestedAgent ? [{ agent, name: requestedAgent }] : [{ agent, name: agent.name }, ...(agent.aliases ?? []).map((name) => ({ agent, name }))]);
1118
+ for (const { agent, name } of modelEntries) {
1119
+ const resolvedModel = resolveSubagentModelOverride(agent.model, currentModel, availableModels, agent.modelProvider ?? preferredProvider);
1120
+ const effectiveThinking = resolveEffectiveThinking(resolvedModel, agent.thinking) ?? (agent.thinking === false ? "off" : undefined);
1121
+ const source = `${formatModelSource(agent, currentModel)}${agent.disabled ? "; disabled" : ""}${isAgentAllowedByCapabilityCeiling(agent.name, capabilityCeiling) ? "" : "; restricted"}`;
1122
+ if (requestedAgent) {
1123
+ lines.push(`Agent: ${requestedAgent}`);
1124
+ lines.push("Effective model:");
1125
+ lines.push(` ${resolvedModel ?? "(unresolved)"}`);
1126
+ lines.push(`Source: ${source}`);
1127
+ lines.push(`Thinking: ${effectiveThinking ?? "default"}`);
1128
+ if (agent.override) {
1129
+ lines.push("Override file:");
1130
+ lines.push(` ${agent.override.path}`);
1131
+ }
1132
+ if (agent.model && resolvedModel && agent.model !== resolvedModel) {
1133
+ lines.push("Requested model setting:");
1134
+ lines.push(` ${agent.model}`);
1135
+ }
1136
+ if (agent.disabled)
1137
+ lines.push("Disabled: true");
1138
+ if (!isAgentAllowedByCapabilityCeiling(agent.name, capabilityCeiling))
1139
+ lines.push("Restricted: true");
1140
+ lines.push("Current session model:");
1141
+ lines.push(` ${currentModel ? `${currentModel.provider}/${currentModel.id}` : "(unavailable)"}`);
1142
+ break;
1048
1143
  }
1049
- const resolvedModel = resolveSubagentModelOverride(agent.model, currentModel, availableModels, preferredProvider);
1050
- const source = `${formatModelSource(agent, currentModel)}${agent.disabled ? "; disabled" : ""}`;
1051
1144
  lines.push(name);
1052
1145
  lines.push(" model:");
1053
1146
  lines.push(` ${resolvedModel ?? "(unresolved)"}`);
1054
1147
  lines.push(` source: ${source}`);
1148
+ lines.push(` thinking: ${effectiveThinking ?? "default"}`);
1149
+ if (agent.override) {
1150
+ lines.push(" override file:");
1151
+ lines.push(` ${agent.override.path}`);
1152
+ }
1153
+ if (agent.model && resolvedModel && agent.model !== resolvedModel) {
1154
+ lines.push(" requested model setting:");
1155
+ lines.push(` ${agent.model}`);
1156
+ }
1055
1157
  lines.push("");
1056
1158
  }
1057
1159
  const availableFullIds = availableModels.map((m) => m.fullId).sort();
1058
- if (availableFullIds.length > 0) {
1160
+ if (!requestedAgent && availableFullIds.length > 0) {
1059
1161
  lines.push("Available models in this session's registry (copy an exact provider/id when passing model):");
1060
1162
  lines.push("");
1061
1163
  const shown = availableFullIds.slice(0, 80);
@@ -1066,6 +1168,8 @@ function handleModels(params, ctx) {
1066
1168
  lines.push("");
1067
1169
  lines.push("Use an exact provider/id from this list when you pass model; bare ids resolve only when unique in the registry.");
1068
1170
  }
1171
+ if (!requestedAgent)
1172
+ appendAgentDiagnosticLines(lines, diagnosticsForScope(discovered.agentDiagnostics, scope));
1069
1173
  return result(lines.join(`
1070
1174
  `));
1071
1175
  }
@@ -1075,7 +1179,7 @@ function handleGet(params, ctx) {
1075
1179
  const scope = normalizeListScope(params.agentScope);
1076
1180
  if (!scope)
1077
1181
  return result("agentScope must be 'user', 'project', or 'both' for get.", true);
1078
- const discovered = discoverAgentsAll(ctx.cwd, ctx.model?.provider);
1182
+ const discovered = discoverCatalog(ctx, ctx.cwd, ctx.model?.provider);
1079
1183
  const matches = findAgentsInDiscovery(params.agent, discovered, scope);
1080
1184
  const diagnostics = diagnosticsForScope(discovered.agentDiagnostics, scope);
1081
1185
  const rawName = params.agent.trim();
@@ -1117,11 +1221,11 @@ export function handleCreate(params, ctx) {
1117
1221
  const scope = scopeRaw;
1118
1222
  if (hasKey(cfg, "steps"))
1119
1223
  return result("Durable chain definitions were removed; use workflowScript or /prompt-workflow for repeatable workflows.", true);
1120
- const d = discoverAgentsAll(ctx.cwd);
1224
+ const d = discoverCatalog(ctx);
1121
1225
  const projectConfigDir = getProjectConfigDir(ctx.cwd);
1122
1226
  const targetDir = scope === "user" ? d.userDir : d.projectDir ?? path.join(projectConfigDir, "agents");
1123
1227
  fs.mkdirSync(targetDir, { recursive: true });
1124
- if (nameExistsInScope(ctx.cwd, scope, runtimeName))
1228
+ if (nameExistsInScope(ctx, scope, runtimeName))
1125
1229
  return result(`Name '${runtimeName}' already exists in ${scope} scope. Use update instead.`, true);
1126
1230
  const targetPath = path.join(targetDir, `${runtimeName}.md`);
1127
1231
  if (fs.existsSync(targetPath))
@@ -1151,13 +1255,11 @@ export function handleCreate(params, ctx) {
1151
1255
  const mw = modelWarning(ctx, agent.model);
1152
1256
  if (mw)
1153
1257
  warnings.push(mw);
1154
- const fmw = fallbackModelsWarning(ctx, agent.fallbackModels);
1155
- if (fmw)
1156
- warnings.push(fmw);
1157
1258
  const sw = skillsWarning(ctx.cwd, agent);
1158
1259
  if (sw)
1159
1260
  warnings.push(sw);
1160
1261
  fs.writeFileSync(targetPath, serializeAgent(agent), "utf-8");
1262
+ ctx.onAgentsChanged?.();
1161
1263
  return result([`Created agent '${runtimeName}' at ${targetPath}.`, ...warnings].join(`
1162
1264
  `));
1163
1265
  }
@@ -1174,7 +1276,7 @@ export function handleUpdate(params, ctx) {
1174
1276
  return result("Durable chain definitions were removed; use workflowScript or /prompt-workflow for repeatable workflows.", true);
1175
1277
  const warnings = [];
1176
1278
  const scopeHint = asDisambiguationScope(params.agentScope);
1177
- const targetOrError = resolveTarget(params.agent, findAgents(params.agent, ctx.cwd, scopeHint ?? "both"), ctx.cwd, scopeHint);
1279
+ const targetOrError = resolveTarget(params.agent, findAgents(params.agent, ctx, scopeHint ?? "both"), ctx.cwd, ctx, scopeHint);
1178
1280
  if ("content" in targetOrError)
1179
1281
  return targetOrError;
1180
1282
  const target = targetOrError;
@@ -1225,23 +1327,19 @@ export function handleUpdate(params, ctx) {
1225
1327
  if (mw)
1226
1328
  warnings.push(mw);
1227
1329
  }
1228
- if (hasKey(cfg, "fallbackModels")) {
1229
- const fmw = fallbackModelsWarning(ctx, updated.fallbackModels);
1230
- if (fmw)
1231
- warnings.push(fmw);
1232
- }
1233
1330
  if (hasKey(cfg, "skills") || hasKey(cfg, "skillPath")) {
1234
1331
  const sw = skillsWarning(ctx.cwd, updated);
1235
1332
  if (sw)
1236
1333
  warnings.push(sw);
1237
1334
  }
1238
1335
  if (updated.name !== oldName) {
1239
- const renamed = renamePath(target.filePath, updated.name, target.source, ctx.cwd);
1336
+ const renamed = renamePath(target.filePath, updated.name, target.source, ctx);
1240
1337
  if (renamed.error)
1241
1338
  return result(renamed.error, true);
1242
1339
  updated.filePath = renamed.filePath;
1243
1340
  }
1244
1341
  fs.writeFileSync(updated.filePath, serializeAgent(updated, { preserveFrontmatterFields }), "utf-8");
1342
+ ctx.onAgentsChanged?.();
1245
1343
  const headline = updated.name === oldName ? `Updated agent '${updated.name}' at ${updated.filePath}.` : `Updated agent '${oldName}' to '${updated.name}' at ${updated.filePath}.`;
1246
1344
  return result([headline, ...warnings].join(`
1247
1345
  `));
@@ -1250,11 +1348,12 @@ function handleDelete(params, ctx) {
1250
1348
  if (!params.agent)
1251
1349
  return result("Specify 'agent' for delete.", true);
1252
1350
  const scopeHint = asDisambiguationScope(params.agentScope);
1253
- const targetOrError = resolveTarget(params.agent, findAgents(params.agent, ctx.cwd, scopeHint ?? "both"), ctx.cwd, scopeHint);
1351
+ const targetOrError = resolveTarget(params.agent, findAgents(params.agent, ctx, scopeHint ?? "both"), ctx.cwd, ctx, scopeHint);
1254
1352
  if ("content" in targetOrError)
1255
1353
  return targetOrError;
1256
1354
  const target = targetOrError;
1257
1355
  fs.unlinkSync(target.filePath);
1356
+ ctx.onAgentsChanged?.();
1258
1357
  return result(`Deleted agent '${target.name}' at ${target.filePath}.`);
1259
1358
  }
1260
1359
  function handleEject(params, ctx) {
@@ -1266,17 +1365,17 @@ function handleEject(params, ctx) {
1266
1365
  if (parsedScope.error)
1267
1366
  return parsedScope.error;
1268
1367
  const scope = parsedScope.scope;
1269
- const d = discoverAgentsAll(ctx.cwd);
1368
+ const d = discoverCatalog(ctx);
1270
1369
  const source = [...d.package, ...d.builtin].find((a) => a.name === raw || a.name === sanitized);
1271
1370
  if (!source) {
1272
- return result(`Agent '${raw}' not found or is not a bundled/package agent. eject copies a builtin or package agent to ${scope} scope so it can be customized. Available: ${availableAgentNames(ctx.cwd).join(", ") || "none"}.`, true);
1371
+ return result(`Agent '${raw}' not found or is not a bundled/package agent. eject copies a builtin or package agent to ${scope} scope so it can be customized. Available: ${availableAgentNames(ctx).join(", ") || "none"}.`, true);
1273
1372
  }
1274
1373
  const runtimeName = source.name;
1275
1374
  const existingCustom = (scope === "user" ? d.user : d.project).find((a) => a.name === runtimeName);
1276
1375
  if (existingCustom) {
1277
1376
  return result(`Agent '${runtimeName}' is already a custom ${scope} agent at ${existingCustom.filePath}. Edit it with { action: "update", agent: "${runtimeName}" } or delete it first.`, true);
1278
1377
  }
1279
- if (nameExistsInScope(ctx.cwd, scope, runtimeName)) {
1378
+ if (nameExistsInScope(ctx, scope, runtimeName)) {
1280
1379
  return result(`An agent named '${runtimeName}' already exists in ${scope} scope. Remove or rename it first.`, true);
1281
1380
  }
1282
1381
  const projectConfigDir = getProjectConfigDir(ctx.cwd);
@@ -1294,6 +1393,7 @@ function handleEject(params, ctx) {
1294
1393
  return result(`Failed to read source agent at ${source.filePath}: ${message}`, true);
1295
1394
  }
1296
1395
  fs.writeFileSync(targetPath, content, "utf-8");
1396
+ ctx.onAgentsChanged?.();
1297
1397
  return result(`Ejected agent '${runtimeName}' from ${source.source} to ${scope} scope at ${targetPath}. Edit it there to customize; it shadows the bundled ${source.source} agent of the same name.`);
1298
1398
  }
1299
1399
  function handleDisable(params, ctx) {
@@ -1304,7 +1404,7 @@ function handleDisable(params, ctx) {
1304
1404
  if (parsedScope.error)
1305
1405
  return parsedScope.error;
1306
1406
  const scope = parsedScope.scope;
1307
- const d = discoverAgentsAll(ctx.cwd);
1407
+ const d = discoverCatalog(ctx);
1308
1408
  if (scope === "project" && d.projectSettingsPath === null) {
1309
1409
  return result("Project override is not available here: no project config root (.dm or .agents) was found above the cwd. Use agentScope: 'user' or run from inside a project.", true);
1310
1410
  }
@@ -1312,12 +1412,13 @@ function handleDisable(params, ctx) {
1312
1412
  if (effective.error)
1313
1413
  return result(effective.error, true);
1314
1414
  if (!effective.agent) {
1315
- return result(`Agent '${raw}' not found. Available: ${availableAgentNames(ctx.cwd).join(", ") || "none"}.`, true);
1415
+ return result(`Agent '${raw}' not found. Available: ${availableAgentNames(ctx).join(", ") || "none"}.`, true);
1316
1416
  }
1317
1417
  const runtimeName = effective.agent.name;
1318
1418
  const settingsPath = mergeBuiltinAgentOverride(ctx.cwd, runtimeName, scope, { disabled: true });
1319
- const after = resolveEffectiveAgent(discoverAgentsAll(ctx.cwd), raw).agent;
1419
+ const after = resolveEffectiveAgent(discoverCatalog(ctx), raw).agent;
1320
1420
  if (after?.disabled === true) {
1421
+ ctx.onAgentsChanged?.();
1321
1422
  return result(`Disabled agent '${runtimeName}' via ${scope} settings override at ${settingsPath}. It is now hidden from runtime discovery and { action: "list" }.`);
1322
1423
  }
1323
1424
  return result(`Wrote a disabled override for '${runtimeName}' at ${settingsPath}, but the agent is still enabled. A higher-precedence ${after?.override?.scope ?? "project"} override is likely winning. Try agentScope: '${after?.override?.scope ?? "project"}'.`, true);
@@ -1330,7 +1431,7 @@ function handleEnable(params, ctx) {
1330
1431
  if (parsedScope.error)
1331
1432
  return parsedScope.error;
1332
1433
  const scope = parsedScope.scope;
1333
- const d = discoverAgentsAll(ctx.cwd);
1434
+ const d = discoverCatalog(ctx);
1334
1435
  if (scope === "project" && d.projectSettingsPath === null) {
1335
1436
  return result("Project override is not available here: no project config root (.dm or .agents) was found above the cwd. Use agentScope: 'user' or run from inside a project.", true);
1336
1437
  }
@@ -1338,12 +1439,14 @@ function handleEnable(params, ctx) {
1338
1439
  if (effective.error)
1339
1440
  return result(effective.error, true);
1340
1441
  if (!effective.agent) {
1341
- return result(`Agent '${raw}' not found. Available: ${availableAgentNames(ctx.cwd).join(", ") || "none"}.`, true);
1442
+ return result(`Agent '${raw}' not found. Available: ${availableAgentNames(ctx).join(", ") || "none"}.`, true);
1342
1443
  }
1343
1444
  const runtimeName = effective.agent.name;
1344
1445
  const { path: settingsPath, removed } = removeBuiltinAgentOverrideFields(ctx.cwd, runtimeName, scope, ["disabled"]);
1345
- const after = resolveEffectiveAgent(discoverAgentsAll(ctx.cwd), raw).agent;
1446
+ const after = resolveEffectiveAgent(discoverCatalog(ctx), raw).agent;
1346
1447
  if (after && after.disabled !== true) {
1448
+ if (removed)
1449
+ ctx.onAgentsChanged?.();
1347
1450
  if (removed)
1348
1451
  return result(`Enabled agent '${runtimeName}' (removed disabled override at ${settingsPath}).`);
1349
1452
  return result(`Agent '${runtimeName}' is already enabled.`);
@@ -1362,7 +1465,7 @@ function handleReset(params, ctx) {
1362
1465
  if (parsedScope.error)
1363
1466
  return parsedScope.error;
1364
1467
  const scope = parsedScope.scope;
1365
- const d = discoverAgentsAll(ctx.cwd);
1468
+ const d = discoverCatalog(ctx);
1366
1469
  if (scope === "project" && d.projectSettingsPath === null) {
1367
1470
  return result("Project override is not available here: no project config root (.dm or .agents) was found above the cwd. Use agentScope: 'user' or run from inside a project.", true);
1368
1471
  }
@@ -1372,7 +1475,7 @@ function handleReset(params, ctx) {
1372
1475
  if (custom) {
1373
1476
  return result(`Agent '${raw}' has no bundled default to reset to. Use { action: "delete", agent: "${custom.name}" } to remove the custom ${custom.source} agent.`, true);
1374
1477
  }
1375
- return result(`Agent '${raw}' not found. Available: ${availableAgentNames(ctx.cwd).join(", ") || "none"}.`, true);
1478
+ return result(`Agent '${raw}' not found. Available: ${availableAgentNames(ctx).join(", ") || "none"}.`, true);
1376
1479
  }
1377
1480
  const runtimeName = bundled.name;
1378
1481
  const custom = (scope === "user" ? d.user : d.project).find((a) => a.name === raw || a.name === sanitized);
@@ -1381,9 +1484,9 @@ function handleReset(params, ctx) {
1381
1484
  fs.unlinkSync(custom.filePath);
1382
1485
  lines.push(`Deleted custom ${scope} agent file at ${custom.filePath}.`);
1383
1486
  }
1384
- const overrideRemoval = removeBuiltinAgentOverride(ctx.cwd, runtimeName, scope);
1487
+ const overrideRemoval = removeBuiltinAgentOverride(ctx.cwd, runtimeName, scope, { preserveMachine: true });
1385
1488
  if (overrideRemoval.removed)
1386
- lines.push(`Removed ${scope} settings override at ${overrideRemoval.path}.`);
1489
+ lines.push(`${overrideRemoval.machinePreserved ? "Cleared customization in" : "Removed"} ${scope} settings override at ${overrideRemoval.path}.${overrideRemoval.machinePreserved ? " Retained machine placement." : ""}`);
1387
1490
  if (lines.length === 0) {
1388
1491
  const otherScope = scope === "user" ? "project" : "user";
1389
1492
  const otherCustom = (otherScope === "user" ? d.user : d.project).find((a) => a.name === raw || a.name === sanitized);
@@ -1392,6 +1495,7 @@ function handleReset(params, ctx) {
1392
1495
  return result(`Agent '${runtimeName}' has no ${scope} customization to reset.${note} It is at its bundled ${bundled.source} default.`);
1393
1496
  }
1394
1497
  lines.push(`Reset agent '${runtimeName}' to its bundled ${bundled.source} default.`);
1498
+ ctx.onAgentsChanged?.();
1395
1499
  return result(lines.join(`
1396
1500
  `));
1397
1501
  }