@duckmind/dm-darwin-x64 0.66.5 → 0.66.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1115) hide show
  1. package/README.md +4 -0
  2. package/dm +2 -2
  3. package/extensions/.dm-extensions.json +755 -37
  4. package/extensions/dm-lens/clients/actionable-warnings.js +63 -11
  5. package/extensions/dm-lens/clients/advisory-provenance.js +5 -3
  6. package/extensions/dm-lens/clients/agent-nudge.js +106 -2
  7. package/extensions/dm-lens/clients/analysis-root.js +103 -0
  8. package/extensions/dm-lens/clients/ast-grep-client.js +18 -7
  9. package/extensions/dm-lens/clients/ast-grep-rule-manager.js +35 -12
  10. package/extensions/dm-lens/clients/biome-client.js +18 -12
  11. package/extensions/dm-lens/clients/blocker-freshness.js +1 -9
  12. package/extensions/dm-lens/clients/bounded-pid-file-lock.js +141 -30
  13. package/extensions/dm-lens/clients/bounded-telemetry.js +3 -0
  14. package/extensions/dm-lens/clients/cache/rule-cache.js +2 -17
  15. package/extensions/dm-lens/clients/cache-manager.js +105 -17
  16. package/extensions/dm-lens/clients/cargo-manifest.js +23 -3
  17. package/extensions/dm-lens/clients/complexity-client.js +1 -1
  18. package/extensions/dm-lens/clients/config-core/normalize.js +9 -0
  19. package/extensions/dm-lens/clients/config-core/schema.js +3 -0
  20. package/extensions/dm-lens/clients/config-schema.js +105 -2
  21. package/extensions/dm-lens/clients/confirmed-delete.js +11 -0
  22. package/extensions/dm-lens/clients/custom-rule-locations.js +28 -0
  23. package/extensions/dm-lens/clients/dead-code-client.js +81 -12
  24. package/extensions/dm-lens/clients/deferred-runner-blockers.js +108 -0
  25. package/extensions/dm-lens/clients/deferred-test-targets.js +31 -0
  26. package/extensions/dm-lens/clients/degradation-ledger.js +21 -3
  27. package/extensions/dm-lens/clients/demoted-finding-render.js +5 -2
  28. package/extensions/dm-lens/clients/dependency-checker.js +13 -4
  29. package/extensions/dm-lens/clients/diagnostic-line-freshness.js +3 -5
  30. package/extensions/dm-lens/clients/dispatch/adopted-root-runners.js +22 -0
  31. package/extensions/dm-lens/clients/dispatch/dispatcher.js +105 -27
  32. package/extensions/dm-lens/clients/dispatch/facts/comment-facts.js +5 -2
  33. package/extensions/dm-lens/clients/dispatch/facts/function-facts.js +1 -1
  34. package/extensions/dm-lens/clients/dispatch/facts/import-facts.js +2 -2
  35. package/extensions/dm-lens/clients/dispatch/facts/tree-sitter-facts.js +2 -2
  36. package/extensions/dm-lens/clients/dispatch/facts/try-catch-facts.js +1 -1
  37. package/extensions/dm-lens/clients/dispatch/finding-policy.js +12 -4
  38. package/extensions/dm-lens/clients/dispatch/integration.js +60 -15
  39. package/extensions/dm-lens/clients/dispatch/known-runner-ids.js +13 -0
  40. package/extensions/dm-lens/clients/dispatch/pending-runner-findings.js +66 -11
  41. package/extensions/dm-lens/clients/dispatch/plan.js +6 -0
  42. package/extensions/dm-lens/clients/dispatch/rule-id-normalize.js +9 -2
  43. package/extensions/dm-lens/clients/dispatch/rule-policy.js +33 -4
  44. package/extensions/dm-lens/clients/dispatch/runners/ast-grep-napi.js +9 -5
  45. package/extensions/dm-lens/clients/dispatch/runners/biome-check.js +5 -2
  46. package/extensions/dm-lens/clients/dispatch/runners/cue-vet.js +7 -3
  47. package/extensions/dm-lens/clients/dispatch/runners/detekt.js +3 -3
  48. package/extensions/dm-lens/clients/dispatch/runners/fact-rules.js +3 -3
  49. package/extensions/dm-lens/clients/dispatch/runners/fish-indent.js +10 -6
  50. package/extensions/dm-lens/clients/dispatch/runners/gleam-check.js +8 -5
  51. package/extensions/dm-lens/clients/dispatch/runners/go-vet.js +2 -1
  52. package/extensions/dm-lens/clients/dispatch/runners/lsp.js +28 -8
  53. package/extensions/dm-lens/clients/dispatch/runners/oxlint.js +2 -2
  54. package/extensions/dm-lens/clients/dispatch/runners/php-lint.js +6 -7
  55. package/extensions/dm-lens/clients/dispatch/runners/prisma-validate.js +18 -8
  56. package/extensions/dm-lens/clients/dispatch/runners/psscriptanalyzer.js +3 -3
  57. package/extensions/dm-lens/clients/dispatch/runners/pyright.js +1 -1
  58. package/extensions/dm-lens/clients/dispatch/runners/rust-clippy.js +25 -6
  59. package/extensions/dm-lens/clients/dispatch/runners/shellcheck.js +71 -4
  60. package/extensions/dm-lens/clients/dispatch/runners/shfmt.js +5 -1
  61. package/extensions/dm-lens/clients/dispatch/runners/spellcheck.js +3 -3
  62. package/extensions/dm-lens/clients/dispatch/runners/swiftlint.js +3 -3
  63. package/extensions/dm-lens/clients/dispatch/runners/taplo.js +17 -5
  64. package/extensions/dm-lens/clients/dispatch/runners/tree-sitter.js +12 -5
  65. package/extensions/dm-lens/clients/dispatch/runners/trivy-config.js +3 -3
  66. package/extensions/dm-lens/clients/dispatch/runners/utils/runner-helpers.js +127 -46
  67. package/extensions/dm-lens/clients/dispatch/runners/utils/tool-failure.js +11 -6
  68. package/extensions/dm-lens/clients/dispatch/runners/vale.js +3 -3
  69. package/extensions/dm-lens/clients/dispatch/runners/yaml-rule-parser.js +8 -1
  70. package/extensions/dm-lens/clients/dispatch/types.js +21 -1
  71. package/extensions/dm-lens/clients/dispatch/utils/format-utils.js +13 -0
  72. package/extensions/dm-lens/clients/effective-config.js +14 -3
  73. package/extensions/dm-lens/clients/ephemeral-root.js +71 -0
  74. package/extensions/dm-lens/clients/file-kinds.js +9 -0
  75. package/extensions/dm-lens/clients/file-mutation-queue.js +95 -0
  76. package/extensions/dm-lens/clients/file-utils.js +87 -8
  77. package/extensions/dm-lens/clients/finding-delivery-gate.js +5 -2
  78. package/extensions/dm-lens/clients/fix-run-restore.js +416 -0
  79. package/extensions/dm-lens/clients/format-events-publish.js +82 -2
  80. package/extensions/dm-lens/clients/format-service.js +10 -5
  81. package/extensions/dm-lens/clients/formatters.js +29 -12
  82. package/extensions/dm-lens/clients/generation-guard.js +50 -8
  83. package/extensions/dm-lens/clients/generation-lock.js +184 -0
  84. package/extensions/dm-lens/clients/git-guard.js +19 -1
  85. package/extensions/dm-lens/clients/gitleaks-client.js +13 -4
  86. package/extensions/dm-lens/clients/grammar-source.js +5 -0
  87. package/extensions/dm-lens/clients/grammar-wasm-imports.js +48 -0
  88. package/extensions/dm-lens/clients/gzip-stage-write.js +15 -7
  89. package/extensions/dm-lens/clients/hard-failure-summary.js +28 -0
  90. package/extensions/dm-lens/clients/hook-budgets.js +1 -0
  91. package/extensions/dm-lens/clients/inline-blocker-fields.js +8 -0
  92. package/extensions/dm-lens/clients/install-diagnostics.js +31 -16
  93. package/extensions/dm-lens/clients/installer/index.js +238 -58
  94. package/extensions/dm-lens/clients/instance-reaper.js +164 -52
  95. package/extensions/dm-lens/clients/instance-registry-lock.js +117 -76
  96. package/extensions/dm-lens/clients/instance-registry-tail.js +17 -0
  97. package/extensions/dm-lens/clients/instance-registry.js +248 -91
  98. package/extensions/dm-lens/clients/io-bridge-contract.js +7 -0
  99. package/extensions/dm-lens/clients/io-bridge.js +372 -0
  100. package/extensions/dm-lens/clients/jscpd-client.js +83 -35
  101. package/extensions/dm-lens/clients/knip-client.js +75 -6
  102. package/extensions/dm-lens/clients/knip-scan-roots.js +29 -0
  103. package/extensions/dm-lens/clients/language-policy.js +2 -0
  104. package/extensions/dm-lens/clients/language-profile.js +4 -1
  105. package/extensions/dm-lens/clients/language-registry.js +4 -1
  106. package/extensions/dm-lens/clients/latency-logger.js +11 -1
  107. package/extensions/dm-lens/clients/lens-config.js +10 -1
  108. package/extensions/dm-lens/clients/lens-engine.js +1 -1
  109. package/extensions/dm-lens/clients/lens-flag-registry.js +14 -24
  110. package/extensions/dm-lens/clients/lsp/aggregation.js +9 -8
  111. package/extensions/dm-lens/clients/lsp/auxiliary-lifecycle.js +23 -0
  112. package/extensions/dm-lens/clients/lsp/capabilities.js +98 -0
  113. package/extensions/dm-lens/clients/lsp/cascade-tier.js +8 -3
  114. package/extensions/dm-lens/clients/lsp/client.js +282 -48
  115. package/extensions/dm-lens/clients/lsp/config.js +247 -15
  116. package/extensions/dm-lens/clients/lsp/document-drift.js +23 -11
  117. package/extensions/dm-lens/clients/lsp/edits.js +137 -85
  118. package/extensions/dm-lens/clients/lsp/grouping.js +38 -0
  119. package/extensions/dm-lens/clients/lsp/index.js +484 -275
  120. package/extensions/dm-lens/clients/lsp/launch.js +106 -6
  121. package/extensions/dm-lens/clients/lsp/pending-aux-coverage.js +37 -7
  122. package/extensions/dm-lens/clients/lsp/resolved-config.js +188 -0
  123. package/extensions/dm-lens/clients/lsp/server-covers.js +8 -0
  124. package/extensions/dm-lens/clients/lsp/server-traits.js +39 -0
  125. package/extensions/dm-lens/clients/lsp/server.js +259 -34
  126. package/extensions/dm-lens/clients/lsp/service-singleton.js +59 -0
  127. package/extensions/dm-lens/clients/lsp/session-roots.js +1 -1
  128. package/extensions/dm-lens/clients/lsp/wait-policy/classification.js +2 -1
  129. package/extensions/dm-lens/clients/lsp/wait-policy/strategies.js +25 -4
  130. package/extensions/dm-lens/clients/lsp/workspace-diagnostics-cache.js +6 -3
  131. package/extensions/dm-lens/clients/lsp-budget.js +9 -5
  132. package/extensions/dm-lens/clients/lsp-document-symbols.js +1 -1
  133. package/extensions/dm-lens/clients/lsp-lazy.js +1 -1
  134. package/extensions/dm-lens/clients/lsp-mutation.js +44 -8
  135. package/extensions/dm-lens/clients/lsp-status.js +5 -7
  136. package/extensions/dm-lens/clients/mcp/analyze.js +24 -11
  137. package/extensions/dm-lens/clients/mcp/ipc.js +26 -7
  138. package/extensions/dm-lens/clients/mcp/session.js +1 -1
  139. package/extensions/dm-lens/clients/memory-sampler.js +48 -3
  140. package/extensions/dm-lens/clients/module-report-lsp.js +1 -1
  141. package/extensions/dm-lens/clients/module-report.js +9 -3
  142. package/extensions/dm-lens/clients/mutating-tool.js +12 -3
  143. package/extensions/dm-lens/clients/mutation-attribution.js +8 -0
  144. package/extensions/dm-lens/clients/mutation-bridge.js +181 -48
  145. package/extensions/dm-lens/clients/ndjson-logger.js +33 -0
  146. package/extensions/dm-lens/clients/observed-mutation-sources.js +1 -1
  147. package/extensions/dm-lens/clients/observed-mutation.js +40 -20
  148. package/extensions/dm-lens/clients/opaque-mutation-scan.js +40 -13
  149. package/extensions/dm-lens/clients/opengrep-client.js +6 -3
  150. package/extensions/dm-lens/clients/package-manager.js +61 -6
  151. package/extensions/dm-lens/clients/path-utils.js +77 -18
  152. package/extensions/dm-lens/clients/performance-report.js +1 -1
  153. package/extensions/dm-lens/clients/persist-worker-stats.js +8 -0
  154. package/extensions/dm-lens/clients/persistent-reverify.js +5 -1
  155. package/extensions/dm-lens/clients/pipeline.js +310 -114
  156. package/extensions/dm-lens/clients/probe-home-state.js +6 -1
  157. package/extensions/dm-lens/clients/process-bridge.js +28 -0
  158. package/extensions/dm-lens/clients/process-snapshot.js +115 -2
  159. package/extensions/dm-lens/clients/project-changes.js +81 -19
  160. package/extensions/dm-lens/clients/project-diagnostics/fresh-fetch.js +18 -13
  161. package/extensions/dm-lens/clients/project-lens-config.js +32 -5
  162. package/extensions/dm-lens/clients/project-scale.js +1 -1
  163. package/extensions/dm-lens/clients/project-snapshot-fingerprint.js +17 -12
  164. package/extensions/dm-lens/clients/project-snapshot-persist-worker.js +2 -3
  165. package/extensions/dm-lens/clients/project-snapshot.js +229 -64
  166. package/extensions/dm-lens/clients/python-environment.js +44 -2
  167. package/extensions/dm-lens/clients/quiet-window.js +6 -3
  168. package/extensions/dm-lens/clients/read-bridge.js +28 -20
  169. package/extensions/dm-lens/clients/read-expansion.js +1 -1
  170. package/extensions/dm-lens/clients/read-guard-branch.js +129 -0
  171. package/extensions/dm-lens/clients/read-guard-logger.js +11 -3
  172. package/extensions/dm-lens/clients/read-guard-tool-lines.js +16 -8
  173. package/extensions/dm-lens/clients/read-guard.js +516 -176
  174. package/extensions/dm-lens/clients/review-graph/builder.js +132 -54
  175. package/extensions/dm-lens/clients/review-graph/git-identity.js +59 -1
  176. package/extensions/dm-lens/clients/review-graph/import-resolvers.js +6 -8
  177. package/extensions/dm-lens/clients/runtime-agent-end.js +271 -68
  178. package/extensions/dm-lens/clients/runtime-coordinator.js +386 -74
  179. package/extensions/dm-lens/clients/runtime-session.js +174 -31
  180. package/extensions/dm-lens/clients/runtime-tool-call.js +92 -17
  181. package/extensions/dm-lens/clients/runtime-tool-result.js +477 -137
  182. package/extensions/dm-lens/clients/runtime-turn.js +949 -355
  183. package/extensions/dm-lens/clients/safe-spawn.js +12 -4
  184. package/extensions/dm-lens/clients/scanner-temp-root.js +8 -0
  185. package/extensions/dm-lens/clients/scratch-tree-policy.js +9 -0
  186. package/extensions/dm-lens/clients/search-read-registration.js +2 -1
  187. package/extensions/dm-lens/clients/session-lifecycle.js +120 -18
  188. package/extensions/dm-lens/clients/session-scope.js +456 -0
  189. package/extensions/dm-lens/clients/session-state-store.js +23 -20
  190. package/extensions/dm-lens/clients/sg-runner.js +24 -6
  191. package/extensions/dm-lens/clients/sgconfig.js +35 -5
  192. package/extensions/dm-lens/clients/startup-scan.js +10 -2
  193. package/extensions/dm-lens/clients/test-runner-client.js +258 -48
  194. package/extensions/dm-lens/clients/test-runner-delivery.js +46 -9
  195. package/extensions/dm-lens/clients/test-target-roots.js +20 -0
  196. package/extensions/dm-lens/clients/tool-agreement.js +282 -19
  197. package/extensions/dm-lens/clients/tool-config.js +1 -0
  198. package/extensions/dm-lens/clients/tool-event.js +6 -0
  199. package/extensions/dm-lens/clients/tool-probe.js +8 -0
  200. package/extensions/dm-lens/clients/tool-set-policy.js +36 -26
  201. package/extensions/dm-lens/clients/tree-sitter-client.js +304 -34
  202. package/extensions/dm-lens/clients/tree-sitter-query-loader.js +76 -2
  203. package/extensions/dm-lens/clients/tree-sitter-shared.js +2 -2
  204. package/extensions/dm-lens/clients/tree-sitter-symbol-extractor.js +3 -1
  205. package/extensions/dm-lens/clients/trivy-client.js +40 -7
  206. package/extensions/dm-lens/clients/turn-end/delivery-holds.js +59 -0
  207. package/extensions/dm-lens/clients/widget-state.js +36 -2
  208. package/extensions/dm-lens/clients/word-index.js +73 -5
  209. package/extensions/dm-lens/clients/workspace-topology.js +11 -4
  210. package/extensions/dm-lens/clients/write-ordering-guard.js +4 -0
  211. package/extensions/dm-lens/config/dependency-cruiser-eager-allowlist.json +9 -3
  212. package/extensions/dm-lens/dist/clients/actionable-warnings-logger.js +24 -0
  213. package/extensions/dm-lens/dist/clients/actionable-warnings.js +1062 -0
  214. package/extensions/dm-lens/dist/clients/advisory-provenance.js +387 -0
  215. package/extensions/dm-lens/dist/clients/agent-behavior-client.js +94 -0
  216. package/extensions/dm-lens/dist/clients/agent-nudge.js +253 -0
  217. package/extensions/dm-lens/dist/clients/analysed-root.js +1 -0
  218. package/extensions/dm-lens/dist/clients/analysis-root.js +100 -0
  219. package/extensions/dm-lens/dist/clients/ast-grep-client.js +587 -0
  220. package/extensions/dm-lens/dist/clients/ast-grep-rule-manager.js +137 -0
  221. package/extensions/dm-lens/dist/clients/ast-grep-tool-logger.js +85 -0
  222. package/extensions/dm-lens/dist/clients/ast-grep-types.js +1 -0
  223. package/extensions/dm-lens/dist/clients/ast-grep-yaml-synth.js +109 -0
  224. package/extensions/dm-lens/dist/clients/atomic-write-staging.js +66 -0
  225. package/extensions/dm-lens/dist/clients/atomic-write.js +37 -0
  226. package/extensions/dm-lens/dist/clients/availability-probe-flight.js +11 -0
  227. package/extensions/dm-lens/dist/clients/bash-file-access.js +830 -0
  228. package/extensions/dm-lens/dist/clients/biome-client.js +223 -0
  229. package/extensions/dm-lens/dist/clients/blocker-freshness.js +377 -0
  230. package/extensions/dm-lens/dist/clients/blocker-past-eof.js +49 -0
  231. package/extensions/dm-lens/dist/clients/bootstrap.js +246 -0
  232. package/extensions/dm-lens/dist/clients/bounded-cache.js +105 -0
  233. package/extensions/dm-lens/dist/clients/bounded-pid-file-lock.js +275 -0
  234. package/extensions/dm-lens/dist/clients/bounded-telemetry.js +107 -0
  235. package/extensions/dm-lens/dist/clients/build-identity.js +45 -0
  236. package/extensions/dm-lens/dist/clients/bundled-resource-health.js +41 -0
  237. package/extensions/dm-lens/dist/clients/bus-events-logger.js +48 -0
  238. package/extensions/dm-lens/dist/clients/bus-publish.js +117 -0
  239. package/extensions/dm-lens/dist/clients/cache/rule-cache.js +87 -0
  240. package/extensions/dm-lens/dist/clients/cache-manager.js +428 -0
  241. package/extensions/dm-lens/dist/clients/cache-observability.js +847 -0
  242. package/extensions/dm-lens/dist/clients/call-graph.js +628 -0
  243. package/extensions/dm-lens/dist/clients/cargo-manifest.js +171 -0
  244. package/extensions/dm-lens/dist/clients/cascade-budget.js +52 -0
  245. package/extensions/dm-lens/dist/clients/cascade-format.js +160 -0
  246. package/extensions/dm-lens/dist/clients/cascade-logger.js +22 -0
  247. package/extensions/dm-lens/dist/clients/cascade-types.js +1 -0
  248. package/extensions/dm-lens/dist/clients/child-unref.js +59 -0
  249. package/extensions/dm-lens/dist/clients/code-quality-warnings.js +192 -0
  250. package/extensions/dm-lens/dist/clients/codebase-model.js +110 -0
  251. package/extensions/dm-lens/dist/clients/collateral-test-role.js +8 -0
  252. package/extensions/dm-lens/dist/clients/complexity-client.js +398 -0
  253. package/extensions/dm-lens/dist/clients/config-core/deny.js +117 -0
  254. package/extensions/dm-lens/dist/clients/config-core/index.js +2 -0
  255. package/extensions/dm-lens/dist/clients/config-core/merge.js +228 -0
  256. package/extensions/dm-lens/dist/clients/config-core/normalize.js +226 -0
  257. package/extensions/dm-lens/dist/clients/config-core/process-spec.js +147 -0
  258. package/extensions/dm-lens/dist/clients/config-core/provenance.js +54 -0
  259. package/extensions/dm-lens/dist/clients/config-core/records.js +79 -0
  260. package/extensions/dm-lens/dist/clients/config-core/resolve.js +48 -0
  261. package/extensions/dm-lens/dist/clients/config-core/safe-object.js +22 -0
  262. package/extensions/dm-lens/dist/clients/config-core/schema.js +93 -0
  263. package/extensions/dm-lens/dist/clients/config-diagnostic-codes.js +90 -0
  264. package/extensions/dm-lens/dist/clients/config-locations.js +175 -0
  265. package/extensions/dm-lens/dist/clients/config-resolve.js +359 -0
  266. package/extensions/dm-lens/dist/clients/config-schema.js +230 -0
  267. package/extensions/dm-lens/dist/clients/config-warn.js +146 -0
  268. package/extensions/dm-lens/dist/clients/confirmed-delete.js +11 -0
  269. package/extensions/dm-lens/dist/clients/console-guard-install.js +4 -0
  270. package/extensions/dm-lens/dist/clients/cooperative-budget.js +36 -0
  271. package/extensions/dm-lens/dist/clients/custom-rule-locations.js +28 -0
  272. package/extensions/dm-lens/dist/clients/dead-code-client.js +408 -0
  273. package/extensions/dm-lens/dist/clients/dead-code-logger.js +18 -0
  274. package/extensions/dm-lens/dist/clients/deadline-utils.js +117 -0
  275. package/extensions/dm-lens/dist/clients/debug-handles.js +121 -0
  276. package/extensions/dm-lens/dist/clients/debug-heap.js +80 -0
  277. package/extensions/dm-lens/dist/clients/deferred-lsp-work.js +33 -0
  278. package/extensions/dm-lens/dist/clients/deferred-runner-blockers.js +106 -0
  279. package/extensions/dm-lens/dist/clients/deferred-test-targets.js +31 -0
  280. package/extensions/dm-lens/dist/clients/degradation-ledger.js +289 -0
  281. package/extensions/dm-lens/dist/clients/demoted-finding-render.js +64 -0
  282. package/extensions/dm-lens/dist/clients/dependency-checker.js +534 -0
  283. package/extensions/dm-lens/dist/clients/deps/ast-grep-napi.js +17 -0
  284. package/extensions/dm-lens/dist/clients/deps/dm-host-deps.js +10 -0
  285. package/extensions/dm-lens/dist/clients/deps/dm-tui-compat.js +58 -0
  286. package/extensions/dm-lens/dist/clients/deps/js-yaml.js +7 -0
  287. package/extensions/dm-lens/dist/clients/deps/minimatch.js +6 -0
  288. package/extensions/dm-lens/dist/clients/deps/pidusage.js +5 -0
  289. package/extensions/dm-lens/dist/clients/deps/typebox.js +5 -0
  290. package/extensions/dm-lens/dist/clients/deps/vscode-jsonrpc.js +8 -0
  291. package/extensions/dm-lens/dist/clients/deps/web-tree-sitter.js +11 -0
  292. package/extensions/dm-lens/dist/clients/diagnostic-dispositions.js +318 -0
  293. package/extensions/dm-lens/dist/clients/diagnostic-line-freshness.js +142 -0
  294. package/extensions/dm-lens/dist/clients/diagnostic-logger.js +60 -0
  295. package/extensions/dm-lens/dist/clients/diagnostic-tracker.js +89 -0
  296. package/extensions/dm-lens/dist/clients/diagnostics-publish.js +134 -0
  297. package/extensions/dm-lens/dist/clients/dispatch/adopted-root-runners.js +22 -0
  298. package/extensions/dm-lens/dist/clients/dispatch/ast-grep-catalog.js +16 -0
  299. package/extensions/dm-lens/dist/clients/dispatch/auxiliary-lsp.js +158 -0
  300. package/extensions/dm-lens/dist/clients/dispatch/collect-later-tier.js +25 -0
  301. package/extensions/dm-lens/dist/clients/dispatch/diagnostic-taxonomy.js +58 -0
  302. package/extensions/dm-lens/dist/clients/dispatch/dispatcher.js +1017 -0
  303. package/extensions/dm-lens/dist/clients/dispatch/fact-provider-types.js +1 -0
  304. package/extensions/dm-lens/dist/clients/dispatch/fact-rule-runner.js +17 -0
  305. package/extensions/dm-lens/dist/clients/dispatch/fact-runner.js +18 -0
  306. package/extensions/dm-lens/dist/clients/dispatch/fact-scheduler.js +52 -0
  307. package/extensions/dm-lens/dist/clients/dispatch/fact-store.js +199 -0
  308. package/extensions/dm-lens/dist/clients/dispatch/facts/comment-facts.js +23 -0
  309. package/extensions/dm-lens/dist/clients/dispatch/facts/file-content.js +18 -0
  310. package/extensions/dm-lens/dist/clients/dispatch/facts/function-facts.js +281 -0
  311. package/extensions/dm-lens/dist/clients/dispatch/facts/import-facts.js +169 -0
  312. package/extensions/dm-lens/dist/clients/dispatch/facts/tree-sitter-facts.js +19 -0
  313. package/extensions/dm-lens/dist/clients/dispatch/facts/try-catch-facts.js +95 -0
  314. package/extensions/dm-lens/dist/clients/dispatch/finding-policy.js +164 -0
  315. package/extensions/dm-lens/dist/clients/dispatch/indent-detect.js +227 -0
  316. package/extensions/dm-lens/dist/clients/dispatch/inline-suppressions.js +52 -0
  317. package/extensions/dm-lens/dist/clients/dispatch/integration.js +1502 -0
  318. package/extensions/dm-lens/dist/clients/dispatch/known-runner-ids.js +13 -0
  319. package/extensions/dm-lens/dist/clients/dispatch/lazy.js +8 -0
  320. package/extensions/dm-lens/dist/clients/dispatch/pending-runner-findings.js +130 -0
  321. package/extensions/dm-lens/dist/clients/dispatch/plan.js +284 -0
  322. package/extensions/dm-lens/dist/clients/dispatch/priorities.js +14 -0
  323. package/extensions/dm-lens/dist/clients/dispatch/rule-id-normalize.js +49 -0
  324. package/extensions/dm-lens/dist/clients/dispatch/rule-ignores.js +21 -0
  325. package/extensions/dm-lens/dist/clients/dispatch/rule-policy.js +102 -0
  326. package/extensions/dm-lens/dist/clients/dispatch/rules/async-noise.js +31 -0
  327. package/extensions/dm-lens/dist/clients/dispatch/rules/async-unnecessary-wrapper.js +27 -0
  328. package/extensions/dm-lens/dist/clients/dispatch/rules/cors-wildcard.js +35 -0
  329. package/extensions/dm-lens/dist/clients/dispatch/rules/error-obscuring.js +29 -0
  330. package/extensions/dm-lens/dist/clients/dispatch/rules/error-swallowing.js +29 -0
  331. package/extensions/dm-lens/dist/clients/dispatch/rules/framework-call-noise.js +31 -0
  332. package/extensions/dm-lens/dist/clients/dispatch/rules/high-complexity.js +56 -0
  333. package/extensions/dm-lens/dist/clients/dispatch/rules/high-fan-out.js +45 -0
  334. package/extensions/dm-lens/dist/clients/dispatch/rules/high-import-coupling.js +31 -0
  335. package/extensions/dm-lens/dist/clients/dispatch/rules/missing-error-propagation.js +45 -0
  336. package/extensions/dm-lens/dist/clients/dispatch/rules/no-commented-credentials.js +46 -0
  337. package/extensions/dm-lens/dist/clients/dispatch/rules/pass-through-wrappers.js +38 -0
  338. package/extensions/dm-lens/dist/clients/dispatch/rules/placeholder-comments.js +40 -0
  339. package/extensions/dm-lens/dist/clients/dispatch/rules/unsafe-boundary.js +101 -0
  340. package/extensions/dm-lens/dist/clients/dispatch/runner-context.js +46 -0
  341. package/extensions/dm-lens/dist/clients/dispatch/runners/actionlint.js +98 -0
  342. package/extensions/dm-lens/dist/clients/dispatch/runners/ast-grep-napi.js +694 -0
  343. package/extensions/dm-lens/dist/clients/dispatch/runners/biome-check.js +205 -0
  344. package/extensions/dm-lens/dist/clients/dispatch/runners/cpp-check.js +190 -0
  345. package/extensions/dm-lens/dist/clients/dispatch/runners/credo.js +66 -0
  346. package/extensions/dm-lens/dist/clients/dispatch/runners/cue-vet.js +171 -0
  347. package/extensions/dm-lens/dist/clients/dispatch/runners/dart-analyze.js +151 -0
  348. package/extensions/dm-lens/dist/clients/dispatch/runners/detekt.js +157 -0
  349. package/extensions/dm-lens/dist/clients/dispatch/runners/dotnet-build.js +157 -0
  350. package/extensions/dm-lens/dist/clients/dispatch/runners/elixir-check.js +153 -0
  351. package/extensions/dm-lens/dist/clients/dispatch/runners/eslint.js +99 -0
  352. package/extensions/dm-lens/dist/clients/dispatch/runners/fact-rules.js +20 -0
  353. package/extensions/dm-lens/dist/clients/dispatch/runners/fish-indent.js +66 -0
  354. package/extensions/dm-lens/dist/clients/dispatch/runners/gleam-check.js +110 -0
  355. package/extensions/dm-lens/dist/clients/dispatch/runners/go-vet.js +52 -0
  356. package/extensions/dm-lens/dist/clients/dispatch/runners/golangci-lint.js +89 -0
  357. package/extensions/dm-lens/dist/clients/dispatch/runners/hadolint.js +83 -0
  358. package/extensions/dm-lens/dist/clients/dispatch/runners/helm-lint.js +144 -0
  359. package/extensions/dm-lens/dist/clients/dispatch/runners/helm-render.js +593 -0
  360. package/extensions/dm-lens/dist/clients/dispatch/runners/htmlhint.js +103 -0
  361. package/extensions/dm-lens/dist/clients/dispatch/runners/index.js +100 -0
  362. package/extensions/dm-lens/dist/clients/dispatch/runners/javac.js +82 -0
  363. package/extensions/dm-lens/dist/clients/dispatch/runners/ktlint.js +93 -0
  364. package/extensions/dm-lens/dist/clients/dispatch/runners/lsp.js +226 -0
  365. package/extensions/dm-lens/dist/clients/dispatch/runners/markdownlint.js +129 -0
  366. package/extensions/dm-lens/dist/clients/dispatch/runners/mypy.js +70 -0
  367. package/extensions/dm-lens/dist/clients/dispatch/runners/oxlint.js +305 -0
  368. package/extensions/dm-lens/dist/clients/dispatch/runners/php-lint.js +66 -0
  369. package/extensions/dm-lens/dist/clients/dispatch/runners/phpstan.js +90 -0
  370. package/extensions/dm-lens/dist/clients/dispatch/runners/prisma-validate.js +66 -0
  371. package/extensions/dm-lens/dist/clients/dispatch/runners/psscriptanalyzer.js +307 -0
  372. package/extensions/dm-lens/dist/clients/dispatch/runners/pyright.js +118 -0
  373. package/extensions/dm-lens/dist/clients/dispatch/runners/rubocop.js +79 -0
  374. package/extensions/dm-lens/dist/clients/dispatch/runners/ruff.js +69 -0
  375. package/extensions/dm-lens/dist/clients/dispatch/runners/rust-clippy.js +166 -0
  376. package/extensions/dm-lens/dist/clients/dispatch/runners/shellcheck.js +177 -0
  377. package/extensions/dm-lens/dist/clients/dispatch/runners/shfmt.js +85 -0
  378. package/extensions/dm-lens/dist/clients/dispatch/runners/spellcheck.js +74 -0
  379. package/extensions/dm-lens/dist/clients/dispatch/runners/spotbugs.js +208 -0
  380. package/extensions/dm-lens/dist/clients/dispatch/runners/sqlfluff.js +136 -0
  381. package/extensions/dm-lens/dist/clients/dispatch/runners/stylelint.js +118 -0
  382. package/extensions/dm-lens/dist/clients/dispatch/runners/swiftlint.js +143 -0
  383. package/extensions/dm-lens/dist/clients/dispatch/runners/taplo.js +108 -0
  384. package/extensions/dm-lens/dist/clients/dispatch/runners/terragrunt.js +110 -0
  385. package/extensions/dm-lens/dist/clients/dispatch/runners/tflint.js +104 -0
  386. package/extensions/dm-lens/dist/clients/dispatch/runners/tree-sitter.js +521 -0
  387. package/extensions/dm-lens/dist/clients/dispatch/runners/trivy-config.js +155 -0
  388. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/availability-policy.js +285 -0
  389. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/candidate-probe.js +61 -0
  390. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/diagnostic-parsers.js +61 -0
  391. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/lazy-installer.js +130 -0
  392. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/runner-helpers.js +1143 -0
  393. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/spawn-outcome.js +40 -0
  394. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/tool-failure.js +120 -0
  395. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/toolchain-availability.js +88 -0
  396. package/extensions/dm-lens/dist/clients/dispatch/runners/utils.js +8 -0
  397. package/extensions/dm-lens/dist/clients/dispatch/runners/vale.js +106 -0
  398. package/extensions/dm-lens/dist/clients/dispatch/runners/yaml-rule-parser.js +170 -0
  399. package/extensions/dm-lens/dist/clients/dispatch/runners/yamllint.js +83 -0
  400. package/extensions/dm-lens/dist/clients/dispatch/runners/zig-check.js +72 -0
  401. package/extensions/dm-lens/dist/clients/dispatch/suppress-writer.js +57 -0
  402. package/extensions/dm-lens/dist/clients/dispatch/tool-profile.js +30 -0
  403. package/extensions/dm-lens/dist/clients/dispatch/types.js +27 -0
  404. package/extensions/dm-lens/dist/clients/dispatch/utils/format-utils.js +58 -0
  405. package/extensions/dm-lens/dist/clients/dispatch/utils/lsp-diagnostics.js +31 -0
  406. package/extensions/dm-lens/dist/clients/disposition-logger.js +19 -0
  407. package/extensions/dm-lens/dist/clients/disposition-publish.js +88 -0
  408. package/extensions/dm-lens/dist/clients/durable-store.js +77 -0
  409. package/extensions/dm-lens/dist/clients/effective-config.js +170 -0
  410. package/extensions/dm-lens/dist/clients/env-utils.js +26 -0
  411. package/extensions/dm-lens/dist/clients/ephemeral-root.js +67 -0
  412. package/extensions/dm-lens/dist/clients/error-class.js +3 -0
  413. package/extensions/dm-lens/dist/clients/eval-timestamp.js +2 -0
  414. package/extensions/dm-lens/dist/clients/event-loop-hold.js +119 -0
  415. package/extensions/dm-lens/dist/clients/event-loop-monitor.js +84 -0
  416. package/extensions/dm-lens/dist/clients/extension-log.js +230 -0
  417. package/extensions/dm-lens/dist/clients/extension-mode.js +20 -0
  418. package/extensions/dm-lens/dist/clients/feature-hints.js +88 -0
  419. package/extensions/dm-lens/dist/clients/file-kinds.js +313 -0
  420. package/extensions/dm-lens/dist/clients/file-mutation-queue.js +95 -0
  421. package/extensions/dm-lens/dist/clients/file-role.js +50 -0
  422. package/extensions/dm-lens/dist/clients/file-time.js +112 -0
  423. package/extensions/dm-lens/dist/clients/file-utils.js +706 -0
  424. package/extensions/dm-lens/dist/clients/finding-delivery-gate.js +132 -0
  425. package/extensions/dm-lens/dist/clients/finding-identity.js +23 -0
  426. package/extensions/dm-lens/dist/clients/fix-run-restore.js +413 -0
  427. package/extensions/dm-lens/dist/clients/fix-worklog.js +75 -0
  428. package/extensions/dm-lens/dist/clients/format-events-publish.js +310 -0
  429. package/extensions/dm-lens/dist/clients/format-service.js +159 -0
  430. package/extensions/dm-lens/dist/clients/formatters-lazy.js +8 -0
  431. package/extensions/dm-lens/dist/clients/formatters.js +1367 -0
  432. package/extensions/dm-lens/dist/clients/freshness-cadence.js +1 -0
  433. package/extensions/dm-lens/dist/clients/freshness.js +8 -0
  434. package/extensions/dm-lens/dist/clients/generated-artifacts.js +209 -0
  435. package/extensions/dm-lens/dist/clients/generation-guard.js +147 -0
  436. package/extensions/dm-lens/dist/clients/generation-lock.js +181 -0
  437. package/extensions/dm-lens/dist/clients/git-guard.js +786 -0
  438. package/extensions/dm-lens/dist/clients/git-tracked-ignore.js +120 -0
  439. package/extensions/dm-lens/dist/clients/gitleaks-client.js +290 -0
  440. package/extensions/dm-lens/dist/clients/go-client.js +47 -0
  441. package/extensions/dm-lens/dist/clients/govulncheck-client.js +411 -0
  442. package/extensions/dm-lens/dist/clients/gradle-ktfmt-style.js +177 -0
  443. package/extensions/dm-lens/dist/clients/grammar-source.js +229 -0
  444. package/extensions/dm-lens/dist/clients/grammar-wasm-imports.js +48 -0
  445. package/extensions/dm-lens/dist/clients/gzip-stage-write.js +93 -0
  446. package/extensions/dm-lens/dist/clients/hard-failure-summary.js +28 -0
  447. package/extensions/dm-lens/dist/clients/hashline-anchor.js +222 -0
  448. package/extensions/dm-lens/dist/clients/hook-budgets.js +17 -0
  449. package/extensions/dm-lens/dist/clients/host-edit-normalize.js +87 -0
  450. package/extensions/dm-lens/dist/clients/host-ports.js +35 -0
  451. package/extensions/dm-lens/dist/clients/indent-retarget.js +102 -0
  452. package/extensions/dm-lens/dist/clients/inline-blocker-dispositions.js +103 -0
  453. package/extensions/dm-lens/dist/clients/inline-blocker-fields.js +8 -0
  454. package/extensions/dm-lens/dist/clients/install-diagnostics.js +135 -0
  455. package/extensions/dm-lens/dist/clients/installer/index.js +3935 -0
  456. package/extensions/dm-lens/dist/clients/installer/managed-tool-refresh-session.js +17 -0
  457. package/extensions/dm-lens/dist/clients/installer/managed-tool-refresh.js +522 -0
  458. package/extensions/dm-lens/dist/clients/instance-reaper-state.js +3 -0
  459. package/extensions/dm-lens/dist/clients/instance-reaper.js +682 -0
  460. package/extensions/dm-lens/dist/clients/instance-registry-lock.js +166 -0
  461. package/extensions/dm-lens/dist/clients/instance-registry-tail.js +17 -0
  462. package/extensions/dm-lens/dist/clients/instance-registry.js +595 -0
  463. package/extensions/dm-lens/dist/clients/io-bridge-contract.js +7 -0
  464. package/extensions/dm-lens/dist/clients/io-bridge.js +357 -0
  465. package/extensions/dm-lens/dist/clients/jscpd-client.js +300 -0
  466. package/extensions/dm-lens/dist/clients/json-cache-read.js +25 -0
  467. package/extensions/dm-lens/dist/clients/knip-client.js +534 -0
  468. package/extensions/dm-lens/dist/clients/knip-scan-roots.js +26 -0
  469. package/extensions/dm-lens/dist/clients/language-policy.js +244 -0
  470. package/extensions/dm-lens/dist/clients/language-profile.js +263 -0
  471. package/extensions/dm-lens/dist/clients/language-registry.js +427 -0
  472. package/extensions/dm-lens/dist/clients/latency-logger.js +202 -0
  473. package/extensions/dm-lens/dist/clients/lazy-import.js +14 -0
  474. package/extensions/dm-lens/dist/clients/ledger-bounds.js +21 -0
  475. package/extensions/dm-lens/dist/clients/lens-config.js +246 -0
  476. package/extensions/dm-lens/dist/clients/lens-engine.js +181 -0
  477. package/extensions/dm-lens/dist/clients/lens-events.js +105 -0
  478. package/extensions/dm-lens/dist/clients/lens-flag-registry.js +292 -0
  479. package/extensions/dm-lens/dist/clients/lens-map.js +980 -0
  480. package/extensions/dm-lens/dist/clients/live-bus-emitter.js +53 -0
  481. package/extensions/dm-lens/dist/clients/log-cleanup.js +138 -0
  482. package/extensions/dm-lens/dist/clients/lsp/aggregation.js +89 -0
  483. package/extensions/dm-lens/dist/clients/lsp/auxiliary-lifecycle.js +23 -0
  484. package/extensions/dm-lens/dist/clients/lsp/capabilities.js +94 -0
  485. package/extensions/dm-lens/dist/clients/lsp/cascade-tier.js +208 -0
  486. package/extensions/dm-lens/dist/clients/lsp/client.js +2943 -0
  487. package/extensions/dm-lens/dist/clients/lsp/config.js +471 -0
  488. package/extensions/dm-lens/dist/clients/lsp/content-limits.js +21 -0
  489. package/extensions/dm-lens/dist/clients/lsp/diagnostic-binding.js +79 -0
  490. package/extensions/dm-lens/dist/clients/lsp/document-drift.js +324 -0
  491. package/extensions/dm-lens/dist/clients/lsp/edits.js +982 -0
  492. package/extensions/dm-lens/dist/clients/lsp/grouping.js +38 -0
  493. package/extensions/dm-lens/dist/clients/lsp/index.js +4639 -0
  494. package/extensions/dm-lens/dist/clients/lsp/inferred-project.js +121 -0
  495. package/extensions/dm-lens/dist/clients/lsp/jvm-runtime.js +194 -0
  496. package/extensions/dm-lens/dist/clients/lsp/language.js +23 -0
  497. package/extensions/dm-lens/dist/clients/lsp/launch.js +564 -0
  498. package/extensions/dm-lens/dist/clients/lsp/lombok.js +146 -0
  499. package/extensions/dm-lens/dist/clients/lsp/path-utils.js +1 -0
  500. package/extensions/dm-lens/dist/clients/lsp/pending-aux-coverage.js +120 -0
  501. package/extensions/dm-lens/dist/clients/lsp/position-encoding.js +28 -0
  502. package/extensions/dm-lens/dist/clients/lsp/resolved-config.js +183 -0
  503. package/extensions/dm-lens/dist/clients/lsp/ruby-drive-dirs.js +42 -0
  504. package/extensions/dm-lens/dist/clients/lsp/server-covers.js +8 -0
  505. package/extensions/dm-lens/dist/clients/lsp/server-traits.js +39 -0
  506. package/extensions/dm-lens/dist/clients/lsp/server.js +2640 -0
  507. package/extensions/dm-lens/dist/clients/lsp/service-singleton.js +59 -0
  508. package/extensions/dm-lens/dist/clients/lsp/session-roots.js +52 -0
  509. package/extensions/dm-lens/dist/clients/lsp/spawn-history.js +15 -0
  510. package/extensions/dm-lens/dist/clients/lsp/sync-kind.js +30 -0
  511. package/extensions/dm-lens/dist/clients/lsp/tsserver-sync.js +156 -0
  512. package/extensions/dm-lens/dist/clients/lsp/wait-policy/capability-snapshot.js +1 -0
  513. package/extensions/dm-lens/dist/clients/lsp/wait-policy/classification.js +37 -0
  514. package/extensions/dm-lens/dist/clients/lsp/wait-policy/index.js +3 -0
  515. package/extensions/dm-lens/dist/clients/lsp/wait-policy/strategies.js +196 -0
  516. package/extensions/dm-lens/dist/clients/lsp/watch-queue.js +40 -0
  517. package/extensions/dm-lens/dist/clients/lsp/workspace-diagnostics-cache.js +270 -0
  518. package/extensions/dm-lens/dist/clients/lsp/workspace-diagnostics-session.js +7 -0
  519. package/extensions/dm-lens/dist/clients/lsp/workspace-sweep-hold.js +93 -0
  520. package/extensions/dm-lens/dist/clients/lsp-budget.js +87 -0
  521. package/extensions/dm-lens/dist/clients/lsp-document-symbols.js +93 -0
  522. package/extensions/dm-lens/dist/clients/lsp-lazy.js +8 -0
  523. package/extensions/dm-lens/dist/clients/lsp-mutation.js +309 -0
  524. package/extensions/dm-lens/dist/clients/lsp-status.js +35 -0
  525. package/extensions/dm-lens/dist/clients/map-with-concurrency.js +20 -0
  526. package/extensions/dm-lens/dist/clients/mcp/analyze.js +265 -0
  527. package/extensions/dm-lens/dist/clients/mcp/host-shim.js +14 -0
  528. package/extensions/dm-lens/dist/clients/mcp/ipc.js +321 -0
  529. package/extensions/dm-lens/dist/clients/mcp/review.js +137 -0
  530. package/extensions/dm-lens/dist/clients/mcp/session.js +305 -0
  531. package/extensions/dm-lens/dist/clients/memory-sampler.js +145 -0
  532. package/extensions/dm-lens/dist/clients/message-end-attribution.js +18 -0
  533. package/extensions/dm-lens/dist/clients/metrics-client.js +80 -0
  534. package/extensions/dm-lens/dist/clients/metrics-history.js +255 -0
  535. package/extensions/dm-lens/dist/clients/middle-man-analysis.js +161 -0
  536. package/extensions/dm-lens/dist/clients/model-provider.js +31 -0
  537. package/extensions/dm-lens/dist/clients/module-report-lsp.js +140 -0
  538. package/extensions/dm-lens/dist/clients/module-report.js +1648 -0
  539. package/extensions/dm-lens/dist/clients/mutating-tool.js +386 -0
  540. package/extensions/dm-lens/dist/clients/mutation-attribution.js +176 -0
  541. package/extensions/dm-lens/dist/clients/mutation-bridge.js +231 -0
  542. package/extensions/dm-lens/dist/clients/ndjson-logger.js +504 -0
  543. package/extensions/dm-lens/dist/clients/observed-mutation-sources.js +43 -0
  544. package/extensions/dm-lens/dist/clients/observed-mutation.js +729 -0
  545. package/extensions/dm-lens/dist/clients/oldtext-autopatch.js +100 -0
  546. package/extensions/dm-lens/dist/clients/opaque-mutation-scan.js +340 -0
  547. package/extensions/dm-lens/dist/clients/opengrep-client.js +219 -0
  548. package/extensions/dm-lens/dist/clients/opengrep-config.js +52 -0
  549. package/extensions/dm-lens/dist/clients/package-manager.js +358 -0
  550. package/extensions/dm-lens/dist/clients/package-root.js +25 -0
  551. package/extensions/dm-lens/dist/clients/partial-edit-apply.js +337 -0
  552. package/extensions/dm-lens/dist/clients/path-attribution-telemetry.js +31 -0
  553. package/extensions/dm-lens/dist/clients/path-keyed-map.js +57 -0
  554. package/extensions/dm-lens/dist/clients/path-utils.js +535 -0
  555. package/extensions/dm-lens/dist/clients/performance-report.js +291 -0
  556. package/extensions/dm-lens/dist/clients/persist-debounce.js +37 -0
  557. package/extensions/dm-lens/dist/clients/persist-worker-stats.js +8 -0
  558. package/extensions/dm-lens/dist/clients/persistent-reverify.js +166 -0
  559. package/extensions/dm-lens/dist/clients/php-cs-fixer-config.js +15 -0
  560. package/extensions/dm-lens/dist/clients/pipeline.js +1279 -0
  561. package/extensions/dm-lens/dist/clients/post-autofix-notice.js +19 -0
  562. package/extensions/dm-lens/dist/clients/print-mode.js +3 -0
  563. package/extensions/dm-lens/dist/clients/probe-home-state.js +67 -0
  564. package/extensions/dm-lens/dist/clients/process-bridge.js +48 -0
  565. package/extensions/dm-lens/dist/clients/process-singletons.js +69 -0
  566. package/extensions/dm-lens/dist/clients/process-snapshot.js +130 -0
  567. package/extensions/dm-lens/dist/clients/project-changes.js +174 -0
  568. package/extensions/dm-lens/dist/clients/project-conventions.js +152 -0
  569. package/extensions/dm-lens/dist/clients/project-diagnostics/cache.js +91 -0
  570. package/extensions/dm-lens/dist/clients/project-diagnostics/extractors.js +53 -0
  571. package/extensions/dm-lens/dist/clients/project-diagnostics/fresh-fetch.js +413 -0
  572. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/call-graph-impact.js +64 -0
  573. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/dead-code.js +38 -0
  574. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/gitleaks.js +21 -0
  575. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/govulncheck.js +23 -0
  576. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/jscpd.js +28 -0
  577. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/knip.js +45 -0
  578. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/madge.js +34 -0
  579. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/opengrep.js +32 -0
  580. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/runner-findings.js +79 -0
  581. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/trivy.js +41 -0
  582. package/extensions/dm-lens/dist/clients/project-diagnostics/scanner.js +349 -0
  583. package/extensions/dm-lens/dist/clients/project-diagnostics/types.js +1 -0
  584. package/extensions/dm-lens/dist/clients/project-lens-config.js +464 -0
  585. package/extensions/dm-lens/dist/clients/project-report.js +527 -0
  586. package/extensions/dm-lens/dist/clients/project-scale.js +60 -0
  587. package/extensions/dm-lens/dist/clients/project-scan-policy.js +4 -0
  588. package/extensions/dm-lens/dist/clients/project-snapshot-fingerprint.js +44 -0
  589. package/extensions/dm-lens/dist/clients/project-snapshot-persist-worker.js +13 -0
  590. package/extensions/dm-lens/dist/clients/project-snapshot.js +1333 -0
  591. package/extensions/dm-lens/dist/clients/project-trust.js +104 -0
  592. package/extensions/dm-lens/dist/clients/python-environment.js +162 -0
  593. package/extensions/dm-lens/dist/clients/python-provenance.js +551 -0
  594. package/extensions/dm-lens/dist/clients/quiet-window-config.js +16 -0
  595. package/extensions/dm-lens/dist/clients/quiet-window.js +129 -0
  596. package/extensions/dm-lens/dist/clients/read-bridge.js +53 -0
  597. package/extensions/dm-lens/dist/clients/read-expansion.js +218 -0
  598. package/extensions/dm-lens/dist/clients/read-guard-branch.js +126 -0
  599. package/extensions/dm-lens/dist/clients/read-guard-logger.js +186 -0
  600. package/extensions/dm-lens/dist/clients/read-guard-tool-lines.js +1050 -0
  601. package/extensions/dm-lens/dist/clients/read-guard.js +1429 -0
  602. package/extensions/dm-lens/dist/clients/recent-touches.js +126 -0
  603. package/extensions/dm-lens/dist/clients/redact/secrets.js +386 -0
  604. package/extensions/dm-lens/dist/clients/resource-sampler.js +344 -0
  605. package/extensions/dm-lens/dist/clients/reverse-deps.js +227 -0
  606. package/extensions/dm-lens/dist/clients/review-graph/builder.js +3708 -0
  607. package/extensions/dm-lens/dist/clients/review-graph/format.js +30 -0
  608. package/extensions/dm-lens/dist/clients/review-graph/git-identity.js +168 -0
  609. package/extensions/dm-lens/dist/clients/review-graph/import-resolvers.js +323 -0
  610. package/extensions/dm-lens/dist/clients/review-graph/persist-worker.js +8 -0
  611. package/extensions/dm-lens/dist/clients/review-graph/query.js +195 -0
  612. package/extensions/dm-lens/dist/clients/review-graph/revision-drift.js +3 -0
  613. package/extensions/dm-lens/dist/clients/review-graph/service.js +60 -0
  614. package/extensions/dm-lens/dist/clients/review-graph/shared-extraction-ir.js +54 -0
  615. package/extensions/dm-lens/dist/clients/review-graph/symbol-id.js +29 -0
  616. package/extensions/dm-lens/dist/clients/review-graph/tsconfig-paths.js +253 -0
  617. package/extensions/dm-lens/dist/clients/review-graph/types.js +1 -0
  618. package/extensions/dm-lens/dist/clients/review-graph/workspace-modules.js +374 -0
  619. package/extensions/dm-lens/dist/clients/review-graph-logger.js +51 -0
  620. package/extensions/dm-lens/dist/clients/ruff-client.js +109 -0
  621. package/extensions/dm-lens/dist/clients/rules-scanner.js +113 -0
  622. package/extensions/dm-lens/dist/clients/run-duration.js +9 -0
  623. package/extensions/dm-lens/dist/clients/runtime-agent-end.js +800 -0
  624. package/extensions/dm-lens/dist/clients/runtime-config.js +39 -0
  625. package/extensions/dm-lens/dist/clients/runtime-context.js +155 -0
  626. package/extensions/dm-lens/dist/clients/runtime-coordinator.js +1117 -0
  627. package/extensions/dm-lens/dist/clients/runtime-session.js +1768 -0
  628. package/extensions/dm-lens/dist/clients/runtime-tool-call.js +935 -0
  629. package/extensions/dm-lens/dist/clients/runtime-tool-result.js +1630 -0
  630. package/extensions/dm-lens/dist/clients/runtime-turn.js +2900 -0
  631. package/extensions/dm-lens/dist/clients/rust-client.js +48 -0
  632. package/extensions/dm-lens/dist/clients/safe-spawn.js +1275 -0
  633. package/extensions/dm-lens/dist/clients/sanitize.js +174 -0
  634. package/extensions/dm-lens/dist/clients/scan-utils.js +7 -0
  635. package/extensions/dm-lens/dist/clients/scanner-temp-root.js +8 -0
  636. package/extensions/dm-lens/dist/clients/scratch-tree-policy.js +63 -0
  637. package/extensions/dm-lens/dist/clients/search-read-registration.js +60 -0
  638. package/extensions/dm-lens/dist/clients/secret-findings.js +69 -0
  639. package/extensions/dm-lens/dist/clients/security-scan-client.js +208 -0
  640. package/extensions/dm-lens/dist/clients/session-event-guard.js +111 -0
  641. package/extensions/dm-lens/dist/clients/session-lifecycle.js +269 -0
  642. package/extensions/dm-lens/dist/clients/session-scope.js +451 -0
  643. package/extensions/dm-lens/dist/clients/session-start-observability.js +47 -0
  644. package/extensions/dm-lens/dist/clients/session-state-store.js +66 -0
  645. package/extensions/dm-lens/dist/clients/session-summary.js +8 -0
  646. package/extensions/dm-lens/dist/clients/sessionstart-logger.js +22 -0
  647. package/extensions/dm-lens/dist/clients/sg-runner.js +645 -0
  648. package/extensions/dm-lens/dist/clients/sgconfig.js +306 -0
  649. package/extensions/dm-lens/dist/clients/shared-checkout-guard.js +177 -0
  650. package/extensions/dm-lens/dist/clients/single-flight.js +52 -0
  651. package/extensions/dm-lens/dist/clients/situational-tool-telemetry.js +85 -0
  652. package/extensions/dm-lens/dist/clients/skills-resolver.js +38 -0
  653. package/extensions/dm-lens/dist/clients/slow-fs.js +77 -0
  654. package/extensions/dm-lens/dist/clients/smells-rollup.js +118 -0
  655. package/extensions/dm-lens/dist/clients/source-filter.js +320 -0
  656. package/extensions/dm-lens/dist/clients/source-walker.js +96 -0
  657. package/extensions/dm-lens/dist/clients/spawn-output-cap.js +35 -0
  658. package/extensions/dm-lens/dist/clients/spawn-timeout-cooldown.js +51 -0
  659. package/extensions/dm-lens/dist/clients/stale-marker.js +1 -0
  660. package/extensions/dm-lens/dist/clients/startup-scan.js +230 -0
  661. package/extensions/dm-lens/dist/clients/startup-timing.js +67 -0
  662. package/extensions/dm-lens/dist/clients/string-utils.js +6 -0
  663. package/extensions/dm-lens/dist/clients/subagent-mode.js +40 -0
  664. package/extensions/dm-lens/dist/clients/symbol-containment.js +16 -0
  665. package/extensions/dm-lens/dist/clients/symbol-types.js +1 -0
  666. package/extensions/dm-lens/dist/clients/test-runner-client.js +1697 -0
  667. package/extensions/dm-lens/dist/clients/test-runner-delivery.js +293 -0
  668. package/extensions/dm-lens/dist/clients/test-target-roots.js +17 -0
  669. package/extensions/dm-lens/dist/clients/todo-scanner.js +164 -0
  670. package/extensions/dm-lens/dist/clients/tool-agreement.js +640 -0
  671. package/extensions/dm-lens/dist/clients/tool-config.js +219 -0
  672. package/extensions/dm-lens/dist/clients/tool-cwd.js +235 -0
  673. package/extensions/dm-lens/dist/clients/tool-definition.js +22 -0
  674. package/extensions/dm-lens/dist/clients/tool-event.js +24 -0
  675. package/extensions/dm-lens/dist/clients/tool-policy.js +2393 -0
  676. package/extensions/dm-lens/dist/clients/tool-probe.js +13 -0
  677. package/extensions/dm-lens/dist/clients/tool-render.js +79 -0
  678. package/extensions/dm-lens/dist/clients/tool-set-policy.js +77 -0
  679. package/extensions/dm-lens/dist/clients/tree-sitter-cache.js +206 -0
  680. package/extensions/dm-lens/dist/clients/tree-sitter-client.js +3057 -0
  681. package/extensions/dm-lens/dist/clients/tree-sitter-logger.js +77 -0
  682. package/extensions/dm-lens/dist/clients/tree-sitter-navigator.js +198 -0
  683. package/extensions/dm-lens/dist/clients/tree-sitter-query-loader.js +389 -0
  684. package/extensions/dm-lens/dist/clients/tree-sitter-shared.js +87 -0
  685. package/extensions/dm-lens/dist/clients/tree-sitter-symbol-extractor.js +959 -0
  686. package/extensions/dm-lens/dist/clients/trivy-client.js +335 -0
  687. package/extensions/dm-lens/dist/clients/tui-fit.js +26 -0
  688. package/extensions/dm-lens/dist/clients/turn-context.js +48 -0
  689. package/extensions/dm-lens/dist/clients/turn-end/delivery-holds.js +59 -0
  690. package/extensions/dm-lens/dist/clients/turn-end/lane.js +1 -0
  691. package/extensions/dm-lens/dist/clients/turn-end/lanes/govulncheck.js +54 -0
  692. package/extensions/dm-lens/dist/clients/turn-end/lanes/secrets.js +131 -0
  693. package/extensions/dm-lens/dist/clients/turn-summary-render.js +56 -0
  694. package/extensions/dm-lens/dist/clients/turn-summary.js +84 -0
  695. package/extensions/dm-lens/dist/clients/typos-config.js +9 -0
  696. package/extensions/dm-lens/dist/clients/user-notify.js +15 -0
  697. package/extensions/dm-lens/dist/clients/vanished-instance-marker.js +18 -0
  698. package/extensions/dm-lens/dist/clients/warm-attach.js +210 -0
  699. package/extensions/dm-lens/dist/clients/widget-state.js +997 -0
  700. package/extensions/dm-lens/dist/clients/word-index-logger.js +21 -0
  701. package/extensions/dm-lens/dist/clients/word-index-store.js +222 -0
  702. package/extensions/dm-lens/dist/clients/word-index.js +1494 -0
  703. package/extensions/dm-lens/dist/clients/workspace-topology.js +268 -0
  704. package/extensions/dm-lens/dist/clients/write-ordering-guard.js +28 -0
  705. package/extensions/dm-lens/dist/clients/zizmor-config.js +160 -0
  706. package/extensions/dm-lens/dist/i18n.js +67 -0
  707. package/extensions/dm-lens/dist/index.js +1973 -0
  708. package/extensions/dm-lens/dist/mcp/analyze-cli.js +205 -0
  709. package/extensions/dm-lens/dist/mcp/build-staleness.js +55 -0
  710. package/extensions/dm-lens/dist/mcp/cli.js +96 -0
  711. package/extensions/dm-lens/dist/mcp/server.js +1239 -0
  712. package/extensions/dm-lens/dist/mcp/tool-arguments.js +134 -0
  713. package/extensions/dm-lens/dist/mcp/worker.js +41 -0
  714. package/extensions/dm-lens/dist/scripts/lib/process-scan.mjs +375 -0
  715. package/extensions/dm-lens/dist/scripts/lib/skills-predicate.mjs +53 -0
  716. package/extensions/dm-lens/dist/scripts/lib/web-tree-sitter-dir.mjs +51 -0
  717. package/extensions/dm-lens/dist/tools/activate-tools.js +62 -0
  718. package/extensions/dm-lens/dist/tools/ast-grep-outline.js +126 -0
  719. package/extensions/dm-lens/dist/tools/ast-grep-replace.js +227 -0
  720. package/extensions/dm-lens/dist/tools/ast-grep-search.js +687 -0
  721. package/extensions/dm-lens/dist/tools/effective-config.js +59 -0
  722. package/extensions/dm-lens/dist/tools/lens-diagnostic-mark.js +251 -0
  723. package/extensions/dm-lens/dist/tools/lens-diagnostics.js +1518 -0
  724. package/extensions/dm-lens/dist/tools/lsp-diagnostics.js +1198 -0
  725. package/extensions/dm-lens/dist/tools/lsp-navigation.js +1249 -0
  726. package/extensions/dm-lens/dist/tools/lsp-structured-output.js +277 -0
  727. package/extensions/dm-lens/dist/tools/module-report.js +332 -0
  728. package/extensions/dm-lens/dist/tools/project-report.js +72 -0
  729. package/extensions/dm-lens/dist/tools/render-compact.js +272 -0
  730. package/extensions/dm-lens/dist/tools/scan-progress.js +31 -0
  731. package/extensions/dm-lens/dist/tools/shared.js +32 -0
  732. package/extensions/dm-lens/dist/tools/symbol-search.js +133 -0
  733. package/extensions/dm-lens/i18n.js +3 -3
  734. package/extensions/dm-lens/index.js +431 -214
  735. package/extensions/dm-lens/mcp/analyze-cli.js +63 -36
  736. package/extensions/dm-lens/mcp/cli.js +20 -0
  737. package/extensions/dm-lens/mcp/server.js +40 -3
  738. package/extensions/dm-lens/mcp/tool-arguments.js +134 -0
  739. package/extensions/dm-lens/mcp/worker.js +8 -0
  740. package/extensions/dm-lens/package.json +1 -1
  741. package/extensions/dm-lens/rules/ast-grep-rules/rule-tests/advisory-registry-subset-test.yml +41 -0
  742. package/extensions/dm-lens/rules/ast-grep-rules/rule-tests/no-identity-operator-on-literals-test.yml +12 -2
  743. package/extensions/dm-lens/rules/ast-grep-rules/rule-tests/throw-new-error-js-test.yml +2 -0
  744. package/extensions/dm-lens/rules/ast-grep-rules/rule-tests/throw-new-error-test.yml +2 -0
  745. package/extensions/dm-lens/rules/ast-grep-rules/rules/advisory-registry-subset.yml +50 -0
  746. package/extensions/dm-lens/rules/ast-grep-rules/rules/no-identity-operator-on-literals.yml +20 -12
  747. package/extensions/dm-lens/rules/ast-grep-rules/rules/throw-new-error-js.yml +2 -2
  748. package/extensions/dm-lens/rules/ast-grep-rules/rules/throw-new-error.yml +2 -2
  749. package/extensions/dm-lens/scripts/lib/process-scan.mjs +126 -7
  750. package/extensions/dm-lens/scripts/lib/web-tree-sitter-dir.mjs +6 -0
  751. package/extensions/dm-lens/tools/activate-tools.js +3 -2
  752. package/extensions/dm-lens/tools/ast-grep-outline.js +2 -3
  753. package/extensions/dm-lens/tools/ast-grep-replace.js +6 -5
  754. package/extensions/dm-lens/tools/ast-grep-search.js +2 -2
  755. package/extensions/dm-lens/tools/lens-diagnostic-mark.js +12 -1
  756. package/extensions/dm-lens/tools/lens-diagnostics.js +74 -37
  757. package/extensions/dm-lens/tools/lsp-diagnostics.js +140 -25
  758. package/extensions/dm-lens/tools/lsp-navigation.js +64 -7
  759. package/extensions/dm-lens/tools/module-report.js +6 -6
  760. package/extensions/dm-lens/tools/shared.js +6 -0
  761. package/extensions/dm-mcp-adapter/THIRD_PARTY_NOTICES.md +1 -1
  762. package/extensions/dm-mcp-adapter/cli.js +265 -23
  763. package/extensions/dm-mcp-adapter/commands.js +83 -17
  764. package/extensions/dm-mcp-adapter/config.js +541 -92
  765. package/extensions/dm-mcp-adapter/direct-tool-surface.js +10 -8
  766. package/extensions/dm-mcp-adapter/direct-tools.js +54 -36
  767. package/extensions/dm-mcp-adapter/dist/abort.js +35 -0
  768. package/extensions/dm-mcp-adapter/dist/agent-dir.js +45 -0
  769. package/extensions/dm-mcp-adapter/dist/agent-plugin-loader.js +392 -0
  770. package/extensions/dm-mcp-adapter/dist/agent-plugin-provenance.js +26 -0
  771. package/extensions/dm-mcp-adapter/dist/bearer-command-resolver.js +182 -0
  772. package/extensions/dm-mcp-adapter/dist/claude-plugin-loader.js +350 -0
  773. package/extensions/dm-mcp-adapter/dist/config.js +1735 -0
  774. package/extensions/dm-mcp-adapter/dist/consent-manager.js +84 -0
  775. package/extensions/dm-mcp-adapter/dist/elicitation-handler.js +370 -0
  776. package/extensions/dm-mcp-adapter/dist/errors.js +225 -0
  777. package/extensions/dm-mcp-adapter/dist/http-ca.js +75 -0
  778. package/extensions/dm-mcp-adapter/dist/jev-client.js +359 -0
  779. package/extensions/dm-mcp-adapter/dist/jev-contracts.js +1 -0
  780. package/extensions/dm-mcp-adapter/dist/jev-key-store.js +189 -0
  781. package/extensions/dm-mcp-adapter/dist/json-schema-validator.js +70 -0
  782. package/extensions/dm-mcp-adapter/dist/lifecycle.js +387 -0
  783. package/extensions/dm-mcp-adapter/dist/logger.js +115 -0
  784. package/extensions/dm-mcp-adapter/dist/mcp-auth-fetch.js +86 -0
  785. package/extensions/dm-mcp-adapter/dist/mcp-auth-flow.js +956 -0
  786. package/extensions/dm-mcp-adapter/dist/mcp-auth.js +998 -0
  787. package/extensions/dm-mcp-adapter/dist/mcp-bearer-store.js +182 -0
  788. package/extensions/dm-mcp-adapter/dist/mcp-callback-server.js +380 -0
  789. package/extensions/dm-mcp-adapter/dist/mcp-oauth-provider.js +525 -0
  790. package/extensions/dm-mcp-adapter/dist/mcp-probe.js +151 -0
  791. package/extensions/dm-mcp-adapter/dist/mcp-tasks.js +300 -0
  792. package/extensions/dm-mcp-adapter/dist/mcp-trace.js +220 -0
  793. package/extensions/dm-mcp-adapter/dist/metadata-cache.js +323 -0
  794. package/extensions/dm-mcp-adapter/dist/npx-resolver.js +465 -0
  795. package/extensions/dm-mcp-adapter/dist/output-shape.js +312 -0
  796. package/extensions/dm-mcp-adapter/dist/package-mcp-loader.js +144 -0
  797. package/extensions/dm-mcp-adapter/dist/project-server-trust.js +186 -0
  798. package/extensions/dm-mcp-adapter/dist/request-headers-command.js +294 -0
  799. package/extensions/dm-mcp-adapter/dist/resource-tools.js +7 -0
  800. package/extensions/dm-mcp-adapter/dist/runtime-owner.js +94 -0
  801. package/extensions/dm-mcp-adapter/dist/sampling-handler.js +213 -0
  802. package/extensions/dm-mcp-adapter/dist/secure-keyring.js +191 -0
  803. package/extensions/dm-mcp-adapter/dist/server-manager.js +1594 -0
  804. package/extensions/dm-mcp-adapter/dist/session-approvals.js +127 -0
  805. package/extensions/dm-mcp-adapter/dist/session-recovery.js +83 -0
  806. package/extensions/dm-mcp-adapter/dist/state.js +1 -0
  807. package/extensions/dm-mcp-adapter/dist/ts-shape.js +157 -0
  808. package/extensions/dm-mcp-adapter/dist/types.js +286 -0
  809. package/extensions/dm-mcp-adapter/dist/ui-app-bridge-helpers.js +36 -0
  810. package/extensions/dm-mcp-adapter/dist/ui-resource-handler.js +204 -0
  811. package/extensions/dm-mcp-adapter/dist/ui-stream-types.js +58 -0
  812. package/extensions/dm-mcp-adapter/dist/ui-tool-visibility.js +26 -0
  813. package/extensions/dm-mcp-adapter/dist/unix-socket-transport.js +83 -0
  814. package/extensions/dm-mcp-adapter/dist/utils.js +418 -0
  815. package/extensions/dm-mcp-adapter/elicitation-handler.js +67 -2
  816. package/extensions/dm-mcp-adapter/failure-backoff.js +9 -0
  817. package/extensions/dm-mcp-adapter/host-managed.js +400 -0
  818. package/extensions/dm-mcp-adapter/http-ca.js +4 -0
  819. package/extensions/dm-mcp-adapter/index.js +347 -57
  820. package/extensions/dm-mcp-adapter/init.js +92 -44
  821. package/extensions/dm-mcp-adapter/jev-client.js +5 -5
  822. package/extensions/dm-mcp-adapter/jev-key-store.js +15 -2
  823. package/extensions/dm-mcp-adapter/mcp-auth-flow.js +10 -2
  824. package/extensions/dm-mcp-adapter/mcp-auth.js +2 -1
  825. package/extensions/dm-mcp-adapter/mcp-callback-server.js +1 -1
  826. package/extensions/dm-mcp-adapter/mcp-code.js +174 -87
  827. package/extensions/dm-mcp-adapter/mcp-keyring-helper.cjs +1 -1
  828. package/extensions/dm-mcp-adapter/mcp-oauth-provider.js +3 -2
  829. package/extensions/dm-mcp-adapter/mcp-output-guard.js +19 -5
  830. package/extensions/dm-mcp-adapter/mcp-panel.js +59 -12
  831. package/extensions/dm-mcp-adapter/mcp-script-wasm.js +22 -0
  832. package/extensions/dm-mcp-adapter/mcp-script-worker.mjs +227 -111
  833. package/extensions/dm-mcp-adapter/mcp-setup-panel.js +500 -258
  834. package/extensions/dm-mcp-adapter/mcp-status.js +9 -2
  835. package/extensions/dm-mcp-adapter/mcp-trace.js +5 -0
  836. package/extensions/dm-mcp-adapter/metadata-cache.js +68 -11
  837. package/extensions/dm-mcp-adapter/namespace-tools.js +20 -5
  838. package/extensions/dm-mcp-adapter/onboarding-state.js +11 -1
  839. package/extensions/dm-mcp-adapter/output-shape.js +312 -0
  840. package/extensions/dm-mcp-adapter/package-mcp-loader.js +15 -6
  841. package/extensions/dm-mcp-adapter/package.json +6 -15
  842. package/extensions/dm-mcp-adapter/panel-keys.js +13 -0
  843. package/extensions/dm-mcp-adapter/pi-builtin-mcp.js +26 -0
  844. package/extensions/dm-mcp-adapter/pi-signin-import.js +121 -0
  845. package/extensions/dm-mcp-adapter/project-server-trust.js +186 -0
  846. package/extensions/dm-mcp-adapter/prompts.js +80 -7
  847. package/extensions/dm-mcp-adapter/proxy-modes.js +219 -158
  848. package/extensions/dm-mcp-adapter/runtime-protocol.js +342 -0
  849. package/extensions/dm-mcp-adapter/search-ranking.js +8 -6
  850. package/extensions/dm-mcp-adapter/semantic-search.js +5 -4
  851. package/extensions/dm-mcp-adapter/server-manager.js +108 -26
  852. package/extensions/dm-mcp-adapter/session-recovery.js +3 -2
  853. package/extensions/dm-mcp-adapter/skills/mcp-scripting/SKILL.md +24 -28
  854. package/extensions/dm-mcp-adapter/skills/mcp-scripting/references/jev.md +3 -0
  855. package/extensions/dm-mcp-adapter/test-runner.mjs +1 -1
  856. package/extensions/dm-mcp-adapter/tool-approval.js +17 -7
  857. package/extensions/dm-mcp-adapter/tool-metadata.js +4 -2
  858. package/extensions/dm-mcp-adapter/tool-parameters.js +4 -0
  859. package/extensions/dm-mcp-adapter/tool-result-renderer.js +68 -7
  860. package/extensions/dm-mcp-adapter/ts-shape.js +1 -1
  861. package/extensions/dm-mcp-adapter/ui-server.js +24 -20
  862. package/extensions/dm-mcp-adapter/unix-socket-transport.js +1 -1
  863. package/extensions/dm-mcp-adapter/utils.js +37 -1
  864. package/extensions/dm-ponytail/extensions/ponytail.mjs +37 -17
  865. package/extensions/dm-ponytail/hooks/claude-codex-hooks.json +3 -3
  866. package/extensions/dm-ponytail/hooks/copilot-hooks.json +4 -4
  867. package/extensions/dm-ponytail/hooks/ponytail-activate.js +46 -13
  868. package/extensions/dm-ponytail/hooks/ponytail-config.js +6 -5
  869. package/extensions/dm-ponytail/hooks/ponytail-instructions.js +29 -33
  870. package/extensions/dm-ponytail/hooks/ponytail-map.js +116 -0
  871. package/extensions/dm-ponytail/hooks/ponytail-mode-tracker.js +26 -13
  872. package/extensions/dm-ponytail/hooks/ponytail-runtime.js +23 -9
  873. package/extensions/dm-ponytail/hooks/ponytail-subagent.js +15 -3
  874. package/extensions/dm-ponytail/hooks/qoder-hooks.json +3 -3
  875. package/extensions/dm-ponytail/package.json +1 -1
  876. package/extensions/dm-ponytail/pi-extension/index.js +37 -17
  877. package/extensions/dm-ponytail/pi-extension/package.json +1 -1
  878. package/extensions/dm-ponytail/skills/plugin.json +5 -0
  879. package/extensions/dm-ponytail/skills/ponytail/SKILL.md +33 -101
  880. package/extensions/dm-ponytail/skills/ponytail-audit/SKILL.md +89 -27
  881. package/extensions/dm-ponytail/skills/ponytail-debt/SKILL.md +13 -12
  882. package/extensions/dm-ponytail/skills/ponytail-gain/SKILL.md +21 -18
  883. package/extensions/dm-ponytail/skills/ponytail-help/SKILL.md +13 -14
  884. package/extensions/dm-ponytail/skills/ponytail-review/SKILL.md +96 -52
  885. package/extensions/dm-subagents/agents/oracle.md +8 -19
  886. package/extensions/dm-subagents/agents/researcher.md +0 -3
  887. package/extensions/dm-subagents/agents/reviewer.md +17 -61
  888. package/extensions/dm-subagents/agents/scout.md +1 -4
  889. package/extensions/dm-subagents/agents/worker.md +8 -25
  890. package/extensions/dm-subagents/index.js +5 -0
  891. package/extensions/dm-subagents/install.mjs +47 -62
  892. package/extensions/dm-subagents/package.json +6 -5
  893. package/extensions/dm-subagents/prompts/council.md +1 -1
  894. package/extensions/dm-subagents/prompts/review-loop.md +1 -1
  895. package/extensions/dm-subagents/skills/council-mode/SKILL.md +1 -1
  896. package/extensions/dm-subagents/skills/dm-subagents/SKILL.md +13 -6
  897. package/extensions/dm-subagents/skills/dm-subagents/references/constraints-and-recipes.md +3 -3
  898. package/extensions/dm-subagents/skills/dm-subagents/references/execution-controls.md +79 -78
  899. package/extensions/dm-subagents/skills/dm-subagents/references/management-authoring-rpc.md +18 -14
  900. package/extensions/dm-subagents/skills/dm-subagents/references/multi-lane-orchestration.md +1 -1
  901. package/extensions/dm-subagents/skills/dm-subagents/references/prompting-and-roles.md +46 -49
  902. package/extensions/dm-subagents/src/agents/advertised-agent-prompt.js +18 -32
  903. package/extensions/dm-subagents/src/agents/agent-management.js +7 -2
  904. package/extensions/dm-subagents/src/agents/agent-memory.js +3 -3
  905. package/extensions/dm-subagents/src/agents/agent-scope.js +3 -0
  906. package/extensions/dm-subagents/src/agents/agent-serializer.js +12 -1
  907. package/extensions/dm-subagents/src/agents/agents.js +217 -120
  908. package/extensions/dm-subagents/src/api/inspectors.js +10 -0
  909. package/extensions/dm-subagents/src/api/preflight.js +43 -6
  910. package/extensions/dm-subagents/src/extension/config.js +35 -2
  911. package/extensions/dm-subagents/src/extension/control-notices.js +3 -7
  912. package/extensions/dm-subagents/src/extension/declaration-pinning.js +127 -0
  913. package/extensions/dm-subagents/src/extension/doctor.js +4 -7
  914. package/extensions/dm-subagents/src/extension/fanout-child.js +15 -7
  915. package/extensions/dm-subagents/src/extension/herdr-dm-bridge.js +2 -0
  916. package/extensions/dm-subagents/src/extension/index.js +231 -332
  917. package/extensions/dm-subagents/src/extension/public-execution.js +63 -33
  918. package/extensions/dm-subagents/src/extension/reply-workflow-script.js +65 -0
  919. package/extensions/dm-subagents/src/extension/rpc.js +42 -16
  920. package/extensions/dm-subagents/src/extension/schemas.js +73 -152
  921. package/extensions/dm-subagents/src/extension/subagent-guide.js +92 -7
  922. package/extensions/dm-subagents/src/extension/subagent-options.js +47 -0
  923. package/extensions/dm-subagents/src/extension/tool-activation.js +57 -89
  924. package/extensions/dm-subagents/src/extension/tool-description.js +56 -47
  925. package/extensions/dm-subagents/src/extension/upgrade-notice.js +36 -0
  926. package/extensions/dm-subagents/src/inspectors/actions.js +34 -11
  927. package/extensions/dm-subagents/src/inspectors/plugins.js +71 -2
  928. package/extensions/dm-subagents/src/inspectors/tmux/actions.js +173 -0
  929. package/extensions/dm-subagents/src/inspectors/tmux/client.js +63 -0
  930. package/extensions/dm-subagents/src/inspectors/tmux/plugin.js +14 -0
  931. package/extensions/dm-subagents/src/integrations/herdr-status.js +26 -49
  932. package/extensions/dm-subagents/src/integrations/program-status.js +179 -0
  933. package/extensions/dm-subagents/src/intercom/native-supervisor-channel.js +77 -4
  934. package/extensions/dm-subagents/src/intercom/result-intercom.js +3 -2
  935. package/extensions/dm-subagents/src/intercom/supervisor-ui.js +2 -152
  936. package/extensions/dm-subagents/src/missions/goal-driver.js +47 -34
  937. package/extensions/dm-subagents/src/missions/store.js +33 -4
  938. package/extensions/dm-subagents/src/profiles/profiles.js +22 -15
  939. package/extensions/dm-subagents/src/runs/background/active-async-capacity.js +49 -6
  940. package/extensions/dm-subagents/src/runs/background/async-execution.js +301 -139
  941. package/extensions/dm-subagents/src/runs/background/async-job-tracker.js +65 -24
  942. package/extensions/dm-subagents/src/runs/background/async-resume.js +9 -3
  943. package/extensions/dm-subagents/src/runs/background/async-retention.js +40 -15
  944. package/extensions/dm-subagents/src/runs/background/await-async-run.js +68 -0
  945. package/extensions/dm-subagents/src/runs/background/binary-bootstrap.js +2 -1
  946. package/extensions/dm-subagents/src/runs/background/calendar-schedule.js +90 -0
  947. package/extensions/dm-subagents/src/runs/background/chain-root-attachment.js +11 -8
  948. package/extensions/dm-subagents/src/runs/background/control-channel.js +89 -5
  949. package/extensions/dm-subagents/src/runs/background/fleet-view.js +5 -5
  950. package/extensions/dm-subagents/src/runs/background/notify.js +170 -11
  951. package/extensions/dm-subagents/src/runs/background/pid-namespace.js +17 -0
  952. package/extensions/dm-subagents/src/runs/background/result-files.js +80 -6
  953. package/extensions/dm-subagents/src/runs/background/result-watcher.js +92 -65
  954. package/extensions/dm-subagents/src/runs/background/resume-guidance.js +2 -2
  955. package/extensions/dm-subagents/src/runs/background/run-child-session.js +34 -10
  956. package/extensions/dm-subagents/src/runs/background/run-id-resolver.js +8 -6
  957. package/extensions/dm-subagents/src/runs/background/run-status.js +25 -15
  958. package/extensions/dm-subagents/src/runs/background/runner-aliases.js +4 -2
  959. package/extensions/dm-subagents/src/runs/background/runner-child-launch.js +3 -0
  960. package/extensions/dm-subagents/src/runs/background/runner-http-dispatcher.js +2 -1
  961. package/extensions/dm-subagents/src/runs/background/scheduled-runs.js +270 -79
  962. package/extensions/dm-subagents/src/runs/background/stale-run-reconciler.js +18 -3
  963. package/extensions/dm-subagents/src/runs/background/subagent-runner-bootstrap.js +4 -1
  964. package/extensions/dm-subagents/src/runs/background/subagent-runner.js +123 -33
  965. package/extensions/dm-subagents/src/runs/background/subagent-wait.js +33 -20
  966. package/extensions/dm-subagents/src/runs/background/terminal-run-index.js +42 -1
  967. package/extensions/dm-subagents/src/runs/background/wait-completions.js +1 -0
  968. package/extensions/dm-subagents/src/runs/background/wait-tool.js +36 -26
  969. package/extensions/dm-subagents/src/runs/background/workflow-terminal-proof.js +39 -26
  970. package/extensions/dm-subagents/src/runs/foreground/async-stop-action.js +58 -26
  971. package/extensions/dm-subagents/src/runs/foreground/command-action.js +37 -0
  972. package/extensions/dm-subagents/src/runs/foreground/execution.js +132 -32
  973. package/extensions/dm-subagents/src/runs/foreground/foreground-history.js +1 -0
  974. package/extensions/dm-subagents/src/runs/foreground/prompt-audit.js +5 -5
  975. package/extensions/dm-subagents/src/runs/foreground/subagent-executor.js +683 -325
  976. package/extensions/dm-subagents/src/runs/shared/async-status-projection.js +3 -0
  977. package/extensions/dm-subagents/src/runs/shared/child-commands.js +252 -0
  978. package/extensions/dm-subagents/src/runs/shared/child-hooks.js +6 -5
  979. package/extensions/dm-subagents/src/runs/shared/child-launch.js +13 -1
  980. package/extensions/dm-subagents/src/runs/shared/child-session.js +183 -34
  981. package/extensions/dm-subagents/src/runs/shared/child-tool-plan.js +17 -14
  982. package/extensions/dm-subagents/src/runs/shared/claude-code-adapter.js +87 -1
  983. package/extensions/dm-subagents/src/runs/shared/dm-spawn.js +11 -85
  984. package/extensions/dm-subagents/src/runs/shared/dynamic-fanout.js +3 -0
  985. package/extensions/dm-subagents/src/runs/shared/effective-system-prompt.js +1 -2
  986. package/extensions/dm-subagents/src/runs/shared/external-cli-preflight.js +57 -6
  987. package/extensions/dm-subagents/src/runs/shared/external-cli-runner.js +6 -3
  988. package/extensions/dm-subagents/src/runs/shared/herdr-placed-run.js +13 -6
  989. package/extensions/dm-subagents/src/runs/shared/mcp-config-sources.js +1 -1
  990. package/extensions/dm-subagents/src/runs/shared/mcp-direct-tool-allowlist.js +66 -14
  991. package/extensions/dm-subagents/src/runs/shared/model-resolution-diagnostic.js +25 -5
  992. package/extensions/dm-subagents/src/runs/shared/model-resolution.js +55 -11
  993. package/extensions/dm-subagents/src/runs/shared/model-scope.js +23 -10
  994. package/extensions/dm-subagents/src/runs/shared/nested-events.js +3 -0
  995. package/extensions/dm-subagents/src/runs/shared/parallel-handoff.js +55 -7
  996. package/extensions/dm-subagents/src/runs/shared/partial-output.js +26 -0
  997. package/extensions/dm-subagents/src/runs/shared/run-history.js +41 -0
  998. package/extensions/dm-subagents/src/runs/shared/runner-launcher.js +21 -0
  999. package/extensions/dm-subagents/src/runs/shared/single-output.js +67 -26
  1000. package/extensions/dm-subagents/src/runs/shared/structured-output.js +24 -7
  1001. package/extensions/dm-subagents/src/runs/shared/subagent-control.js +32 -20
  1002. package/extensions/dm-subagents/src/runs/shared/subagent-prompt-runtime.js +68 -29
  1003. package/extensions/dm-subagents/src/runs/shared/tool-availability.js +1 -1
  1004. package/extensions/dm-subagents/src/runs/shared/workflow-async-child-guidance.js +1 -1
  1005. package/extensions/dm-subagents/src/runs/shared/worktree-cleanup-apply.js +169 -0
  1006. package/extensions/dm-subagents/src/runs/shared/worktree-cleanup-plan.js +41 -20
  1007. package/extensions/dm-subagents/src/runs/shared/worktree-lock.js +38 -0
  1008. package/extensions/dm-subagents/src/runs/shared/worktree.js +10 -1
  1009. package/extensions/dm-subagents/src/shared/atomic-json.js +2 -1
  1010. package/extensions/dm-subagents/src/shared/disabled-features.js +101 -0
  1011. package/extensions/dm-subagents/src/shared/dm-declarations.js +14 -0
  1012. package/extensions/dm-subagents/src/shared/dm-safeguards.js +41 -0
  1013. package/extensions/dm-subagents/src/shared/dm-settlement.js +48 -0
  1014. package/extensions/dm-subagents/src/shared/edit-distance.js +23 -0
  1015. package/extensions/dm-subagents/src/shared/extension-context.js +4 -0
  1016. package/extensions/dm-subagents/src/shared/file-lease.js +89 -0
  1017. package/extensions/dm-subagents/src/shared/fork-context.js +0 -1
  1018. package/extensions/dm-subagents/src/shared/formatters.js +1 -6
  1019. package/extensions/dm-subagents/src/shared/model-info.js +23 -0
  1020. package/extensions/dm-subagents/src/shared/package-version.js +12 -0
  1021. package/extensions/dm-subagents/src/shared/parent-wake.js +67 -0
  1022. package/extensions/dm-subagents/src/shared/pruned-fork.js +6 -2
  1023. package/extensions/dm-subagents/src/shared/required-child-extensions.js +35 -5
  1024. package/extensions/dm-subagents/src/shared/runtime-module-path.js +9 -0
  1025. package/extensions/dm-subagents/src/shared/settings-file-lease.js +31 -0
  1026. package/extensions/dm-subagents/src/shared/types.js +3 -1
  1027. package/extensions/dm-subagents/src/shared/utils.js +7 -7
  1028. package/extensions/dm-subagents/src/slash/prompt-template-bridge.js +2 -2
  1029. package/extensions/dm-subagents/src/slash/slash-commands.js +25 -15
  1030. package/extensions/dm-subagents/src/slash/subagent-cost.js +38 -7
  1031. package/extensions/dm-subagents/src/slash/subagents-admin.js +1 -1
  1032. package/extensions/dm-subagents/src/tui/dm-mouse-region.js +12 -0
  1033. package/extensions/dm-subagents/src/tui/fleet-status.js +12 -6
  1034. package/extensions/dm-subagents/src/tui/fleet-transcript.js +6 -2
  1035. package/extensions/dm-subagents/src/tui/fleet.js +20 -6
  1036. package/extensions/dm-subagents/src/tui/render.js +126 -72
  1037. package/extensions/dm-subagents/src/tui/running-tone.js +20 -0
  1038. package/extensions/dm-subagents/src/tui/subagent-messages.js +249 -0
  1039. package/extensions/dm-subagents/src/watchdog/diff-tool.js +19 -11
  1040. package/extensions/dm-subagents/src/watchdog/permission-arbiter.js +2 -2
  1041. package/extensions/dm-subagents/src/watchdog/register-child.js +2 -2
  1042. package/extensions/dm-subagents/src/watchdog/register-main.js +4 -24
  1043. package/extensions/dm-subagents/src/watchdog/render.js +1 -19
  1044. package/extensions/dm-subagents/src/watchdog/review.js +3 -3
  1045. package/extensions/dm-subagents/src/watchdog/runtime.js +6 -2
  1046. package/extensions/dm-subagents/src/watchdog/settings.js +22 -17
  1047. package/extensions/dm-subagents/src/watchdog/tool-actions.js +2 -2
  1048. package/extensions/dm-subagents/src/watchdog/turn-delta.js +1 -1
  1049. package/extensions/dm-subagents/src/workflows/chat-progress.js +2 -2
  1050. package/extensions/dm-subagents/src/workflows/scripted-workflow.js +116 -45
  1051. package/extensions/dm-subagents/src/workflows/structured-workflow-scripts.js +154 -0
  1052. package/extensions/dm-subagents/src/workflows/workflow-checklist.js +3 -0
  1053. package/extensions/dm-subagents/src/workflows/workflow-receipt.js +7 -4
  1054. package/extensions/dm-subagents/src/workflows/workflow-resources.js +52 -17
  1055. package/extensions/dm-subagents/src/workflows/workflow-reuse.js +87 -0
  1056. package/extensions/dm-subagents/src/workflows/workflow-revival.js +80 -0
  1057. package/extensions/dm-tty/control.js +150 -0
  1058. package/extensions/dm-tty/index.js +122 -0
  1059. package/extensions/dm-tty/package.json +20 -0
  1060. package/extensions/dm-tty/pty.js +213 -0
  1061. package/extensions/dm-tty/pty_bridge.py +266 -0
  1062. package/extensions/dm-tty/server.js +438 -0
  1063. package/extensions/dm-tty/sessions.js +97 -0
  1064. package/extensions/dm-tty/standalone.js +75 -0
  1065. package/extensions/dm-tty/web/client.js +1143 -0
  1066. package/extensions/dm-tty/web/index.html +117 -0
  1067. package/extensions/dm-tty/web/style.css +73 -0
  1068. package/extensions/dm-web-access/brave-rate-limit.js +160 -0
  1069. package/extensions/dm-web-access/brave.js +62 -11
  1070. package/extensions/dm-web-access/ceramic.js +197 -0
  1071. package/extensions/dm-web-access/chrome-cookies.js +69 -21
  1072. package/extensions/dm-web-access/curator-page.js +12 -2
  1073. package/extensions/dm-web-access/curator-server.js +10 -0
  1074. package/extensions/dm-web-access/declared-web-links.js +1 -1
  1075. package/extensions/dm-web-access/degoog.js +288 -0
  1076. package/extensions/dm-web-access/dist/index.js +28404 -0
  1077. package/extensions/dm-web-access/dist/mcp-cli.js +28186 -0
  1078. package/extensions/dm-web-access/duckduckgo.js +6 -3
  1079. package/extensions/dm-web-access/endpoint-pdf-extract.js +210 -0
  1080. package/extensions/dm-web-access/exa.js +17 -35
  1081. package/extensions/dm-web-access/extract.js +63 -10
  1082. package/extensions/dm-web-access/firecrawl.js +30 -4
  1083. package/extensions/dm-web-access/gemini-search.js +117 -37
  1084. package/extensions/dm-web-access/gemini-web.js +7 -7
  1085. package/extensions/dm-web-access/github-extract.js +28 -2
  1086. package/extensions/dm-web-access/github-issue-pr.js +88 -73
  1087. package/extensions/dm-web-access/index.js +230 -1161
  1088. package/extensions/dm-web-access/keenable.js +197 -0
  1089. package/extensions/dm-web-access/mcp-cli.js +30 -0
  1090. package/extensions/dm-web-access/mcp-server.js +51 -0
  1091. package/extensions/dm-web-access/mcp-tool-definitions.js +93 -0
  1092. package/extensions/dm-web-access/openai-search.js +70 -20
  1093. package/extensions/dm-web-access/opencode-session-headers.js +1 -1
  1094. package/extensions/dm-web-access/package.json +4 -1
  1095. package/extensions/dm-web-access/page-query.js +5 -10
  1096. package/extensions/dm-web-access/parallel-mcp.js +2 -1
  1097. package/extensions/dm-web-access/pdf-extract.js +34 -1
  1098. package/extensions/dm-web-access/perplexity.js +68 -51
  1099. package/extensions/dm-web-access/query-rewrite.js +3 -4
  1100. package/extensions/dm-web-access/scripts/build.js +8 -0
  1101. package/extensions/dm-web-access/ssrf-protection.js +10 -8
  1102. package/extensions/dm-web-access/storage.js +79 -76
  1103. package/extensions/dm-web-access/summary-model-scope.js +5 -64
  1104. package/extensions/dm-web-access/summary-review.js +35 -9
  1105. package/extensions/dm-web-access/tavily.js +69 -22
  1106. package/extensions/dm-web-access/tool-activation.js +44 -26
  1107. package/extensions/dm-web-access/tool-arguments.js +21 -0
  1108. package/extensions/dm-web-access/utils.js +17 -7
  1109. package/extensions/dm-web-access/video-extract.js +1 -1
  1110. package/extensions/dm-web-access/web-tool-contract.js +0 -0
  1111. package/extensions/dm-web-access/web-tool-core.js +1312 -0
  1112. package/extensions/dm-web-access/you.js +155 -0
  1113. package/extensions/dm-web-access/youtube-extract.js +2 -2
  1114. package/extensions/dm-web-access/zai.js +159 -0
  1115. package/package.json +13 -9
@@ -2,10 +2,11 @@ import { createHash } from "node:crypto";
2
2
  import * as nodeFs from "node:fs";
3
3
  import * as nodeCrypto from "node:crypto";
4
4
  import * as path from "node:path";
5
+ import { findNearestContaining } from "./path-utils.js";
5
6
  import {
6
- findNearestContaining,
7
- normalizeEphemeralMapKey
8
- } from "./path-utils.js";
7
+ inlineBlockerLines,
8
+ inlineBlockerSources
9
+ } from "./inline-blocker-fields.js";
9
10
  import {
10
11
  recordFromDispatchDiagnostic
11
12
  } from "./actionable-warnings.js";
@@ -16,6 +17,7 @@ import {
16
17
  admitWidgetDiagnosticsWrite,
17
18
  recordDiagnostics
18
19
  } from "./widget-state.js";
20
+ import { writeOrderToken } from "./write-ordering-guard.js";
19
21
  import { getDiagnosticLogger } from "./diagnostic-logger.js";
20
22
  import { getDiagnosticTracker } from "./diagnostic-tracker.js";
21
23
  import { loadDispatchIntegration } from "./dispatch/lazy.js";
@@ -33,13 +35,18 @@ import {
33
35
  resolveToolCommandWithInstallFallback
34
36
  } from "./dispatch/runners/utils/runner-helpers.js";
35
37
  import { findDetektConfig } from "./dispatch/runners/detekt.js";
36
- import { formatDiagnostics } from "./dispatch/utils/format-utils.js";
38
+ import {
39
+ formatDiagnostics,
40
+ formatPromotionNotes
41
+ } from "./dispatch/utils/format-utils.js";
37
42
  import { detectFileKind, getFileKindLabel } from "./file-kinds.js";
38
43
  import {
39
44
  detectFileChangedAfterCommand,
40
45
  getProjectIgnoreMatcher,
41
46
  isExcludedDirName
42
47
  } from "./file-utils.js";
48
+ import { resolveAnalysisRoot } from "./analysis-root.js";
49
+ import { emitBounded } from "./bounded-telemetry.js";
43
50
  import { logLatency } from "./latency-logger.js";
44
51
  import { emitLensAnalysisComplete } from "./lens-events.js";
45
52
  import { publishFilesTouched } from "./bus-publish.js";
@@ -49,10 +56,15 @@ import {
49
56
  } from "./diagnostics-publish.js";
50
57
  import { loadLspService } from "./lsp-lazy.js";
51
58
  import { clearGraphCache } from "./review-graph/builder.js";
59
+ import { classifyTreeSitterWasmError } from "./tree-sitter-client.js";
52
60
  import { BoundedLruCache } from "./bounded-cache.js";
53
61
  import { RUNTIME_CONFIG } from "./runtime-config.js";
54
62
  import { getAmbientAbortSignal, safeSpawnAsync } from "./safe-spawn.js";
55
63
  import { probeToolAsync } from "./tool-probe.js";
64
+ import {
65
+ renderFixRunLoss,
66
+ runWithFixRestore
67
+ } from "./fix-run-restore.js";
56
68
  import { bounded } from "./deadline-utils.js";
57
69
  import { HOOK_WALL_BUDGET_MS } from "./hook-budgets.js";
58
70
  import { enabledAuxiliaryLspServerIds } from "./dispatch/auxiliary-lsp.js";
@@ -60,6 +72,9 @@ import {
60
72
  incrementDegradationCount,
61
73
  recordDegradationOnce
62
74
  } from "./degradation-ledger.js";
75
+ import {
76
+ holdFileMutationQueue
77
+ } from "./file-mutation-queue.js";
63
78
  import { establishToolAgreement } from "./tool-agreement.js";
64
79
  import { dropFindingsForMissingPaths } from "./advisory-provenance.js";
65
80
  import {
@@ -79,6 +94,7 @@ import {
79
94
  markdownlintConfigArgs
80
95
  } from "./tool-policy.js";
81
96
  import { exceedsLspSyncLimits } from "./lsp/content-limits.js";
97
+ import { surfaceHandlerCrash } from "./session-event-guard.js";
82
98
  const LSP_SPAWN_BUDGET_MS = RUNTIME_CONFIG.pipeline.lspSpawnBudgetMs;
83
99
  const AUTOFIX_CHANGED_FILE_SCAN_LIMIT = 5000;
84
100
  function lspSyncBudgetMs() {
@@ -170,7 +186,7 @@ function createPhaseTracker(toolName, filePath) {
170
186
  export { hasEslintConfig, hasSqlfluffConfig, hasStylelintConfig };
171
187
  const ESLINT_FIX_PROBE_BUDGET_MS = 5000;
172
188
  const _eslintCache = new BoundedLruCache(32);
173
- async function tryEslintFix(filePath, cwd) {
189
+ async function tryEslintFix(filePath, cwd, writeHold) {
174
190
  const userHasConfig = hasEslintConfig(cwd);
175
191
  if (!userHasConfig)
176
192
  return 0;
@@ -236,53 +252,67 @@ async function tryEslintFix(filePath, cwd) {
236
252
  if (cached.latch.read() !== true || !cached.bin)
237
253
  return 0;
238
254
  const cmd = cached.bin;
255
+ if (writeHold)
256
+ await writeHold.acquire();
239
257
  return detectFileChangedAfterCommand(filePath, cmd, ["--fix", "--no-error-on-unmatched-pattern", filePath], cwd, [1]);
240
258
  }
241
- async function tryStylelintFix(filePath, cwd) {
259
+ async function tryStylelintFix(filePath, cwd, writeHold) {
242
260
  const cmd = await resolveToolCommandWithInstallFallback(cwd, "stylelint");
243
261
  if (!cmd)
244
262
  return 0;
263
+ if (writeHold)
264
+ await writeHold.acquire();
245
265
  return detectFileChangedAfterCommand(filePath, cmd, ["--fix", "--allow-empty-input", filePath], cwd, [2]);
246
266
  }
247
- async function trySqlfluffFix(filePath, cwd) {
267
+ async function trySqlfluffFix(filePath, cwd, writeHold) {
248
268
  const cmd = await resolveToolCommandWithInstallFallback(cwd, "sqlfluff");
249
269
  if (!cmd)
250
270
  return 0;
271
+ if (writeHold)
272
+ await writeHold.acquire();
251
273
  const args = ["fix", "--force", filePath];
252
274
  if (!hasSqlfluffConfig(cwd)) {
253
275
  args.splice(2, 0, "--dialect", "ansi");
254
276
  }
255
277
  return detectFileChangedAfterCommand(filePath, cmd, args, cwd);
256
278
  }
257
- async function tryRubocopFix(filePath, cwd) {
279
+ async function tryRubocopFix(filePath, cwd, writeHold) {
258
280
  const resolved = await resolveCommandArgsWithInstallFallback(getRubocopCommand(cwd), "rubocop", cwd, ["--version"], 1e4);
259
281
  if (!resolved)
260
282
  return 0;
283
+ if (writeHold)
284
+ await writeHold.acquire();
261
285
  return detectFileChangedAfterCommand(filePath, resolved.cmd, [...resolved.args, "-a", "--no-color", filePath], cwd, [1]);
262
286
  }
263
- async function tryKtlintFix(filePath, cwd) {
287
+ async function tryKtlintFix(filePath, cwd, writeHold) {
264
288
  const cmd = await resolveToolCommandWithInstallFallback(cwd, "ktlint");
265
289
  if (!cmd)
266
290
  return 0;
291
+ if (writeHold)
292
+ await writeHold.acquire();
267
293
  return detectFileChangedAfterCommand(filePath, cmd, ["-F", filePath], cwd, [1]);
268
294
  }
269
295
  const golangciAutofixChecker = createAvailabilityChecker("golangci-lint", ".exe");
270
296
  const detektAutofixChecker = createAvailabilityChecker("detekt", ".bat");
271
297
  const ktfmtAutofixChecker = createAvailabilityChecker("ktfmt", ".bat");
272
- async function tryKtfmtFix(filePath, cwd) {
298
+ async function tryKtfmtFix(filePath, cwd, writeHold) {
273
299
  const cmd = await resolveAvailableOrInstall(ktfmtAutofixChecker, "ktfmt", cwd);
274
300
  if (!cmd)
275
301
  return 0;
302
+ if (writeHold)
303
+ await writeHold.acquire();
276
304
  const absPath = path.resolve(cwd, filePath);
277
305
  return detectFileChangedAfterCommand(filePath, cmd, [absPath], cwd, [0]);
278
306
  }
279
- async function tryGolangciLintFix(filePath, cwd) {
307
+ async function tryGolangciLintFix(filePath, cwd, writeHold) {
280
308
  const cmd = await resolveAvailableOrInstall(golangciAutofixChecker, "golangci-lint", cwd);
281
309
  if (!cmd)
282
310
  return 0;
311
+ if (writeHold)
312
+ await writeHold.acquire();
283
313
  return detectFileChangedAfterCommand(filePath, cmd, ["run", "--fix", filePath], cwd, [1, 7]);
284
314
  }
285
- async function tryDetektFix(filePath, cwd) {
315
+ async function tryDetektFix(filePath, cwd, writeHold) {
286
316
  const configPath = findDetektConfig(cwd);
287
317
  if (!configPath)
288
318
  return 0;
@@ -291,59 +321,102 @@ async function tryDetektFix(filePath, cwd) {
291
321
  const cmd = detektAutofixChecker.getCommand(cwd);
292
322
  if (!cmd)
293
323
  return 0;
324
+ if (writeHold)
325
+ await writeHold.acquire();
294
326
  const absPath = path.resolve(cwd, filePath);
295
327
  return detectFileChangedAfterCommand(filePath, cmd, ["--auto-correct", "--input", absPath, "--config", configPath], cwd, [1, 2]);
296
328
  }
297
- async function tryMarkdownlintFix(filePath, cwd) {
329
+ async function tryMarkdownlintFix(filePath, cwd, writeHold) {
298
330
  const cmd = await resolveToolCommandWithInstallFallback(cwd, "markdownlint");
299
331
  if (!cmd)
300
332
  return 0;
333
+ if (writeHold)
334
+ await writeHold.acquire();
301
335
  return detectFileChangedAfterCommand(filePath, cmd, [...markdownlintConfigArgs(cwd), "--fix", filePath], cwd, [1]);
302
336
  }
303
- async function tryOxlintFix(filePath, cwd) {
337
+ async function tryOxlintFix(filePath, cwd, writeHold) {
304
338
  const cmd = await resolveToolCommandWithInstallFallback(cwd, "oxlint");
305
339
  if (!cmd)
306
340
  return 0;
341
+ if (writeHold)
342
+ await writeHold.acquire();
307
343
  return detectFileChangedAfterCommand(filePath, cmd, ["--fix", filePath], cwd, [1]);
308
344
  }
309
- async function tryRustClippyFix(filePath) {
345
+ function displayLoss(cwd, restoring) {
346
+ return restoring.then((report) => ({
347
+ lost: report.lost.map((f) => toRunnerDisplayPath(cwd, f)),
348
+ possiblyLost: report.possiblyLost.map((f) => toRunnerDisplayPath(cwd, f))
349
+ }));
350
+ }
351
+ function deliverFixRunLoss(restoring, ctx) {
352
+ restoring.then((loss) => {
353
+ if (loss.lost.length > 0 || loss.possiblyLost.length > 0)
354
+ ctx.onFixRunLoss?.(renderFixRunLoss(loss));
355
+ }).catch((failure) => ctx.dbg(`fix-run loss notice failed: ${failure instanceof Error ? failure.message : String(failure)}`));
356
+ }
357
+ async function wholePackageChangedFiles(root, before, result, agentEdited) {
358
+ if (result.error || result.status !== 0)
359
+ return [];
360
+ const edited = new Set(agentEdited);
361
+ const changed = await diffProjectSnapshot(root, before);
362
+ return changed.flatMap((file) => edited.has(file) ? [] : [file]);
363
+ }
364
+ async function tryRustClippyFix(filePath, writeHold) {
365
+ const none = { changedFiles: [] };
310
366
  const check = await probeToolAsync("cargo", ["--version"], { timeout: 5000 });
311
367
  if (check.error || check.status !== 0)
312
- return [];
368
+ return none;
313
369
  const cargoDir = findNearestContaining(path.dirname(path.resolve(filePath)), [
314
370
  "Cargo.toml"
315
371
  ]);
316
372
  if (!cargoDir)
317
- return [];
373
+ return none;
374
+ if (writeHold)
375
+ await writeHold.acquire();
318
376
  const before = await snapshotProjectFiles(cargoDir);
319
- const result = await safeSpawnAsync("cargo", ["clippy", "--fix", "--allow-dirty", "--allow-staged", "-q"], { timeout: 30000, cwd: cargoDir });
320
- if (result.error || result.status !== 0)
321
- return [];
322
- return diffProjectSnapshot(cargoDir, before);
377
+ const { result: changedFiles, restoring } = await runWithFixRestore({ tool: "rust-clippy", extension: ".rs", candidates: before.keys() }, () => safeSpawnAsync("cargo", ["clippy", "--fix", "--allow-dirty", "--allow-staged", "-q"], { timeout: 30000, cwd: cargoDir }), (result, agentEdited) => wholePackageChangedFiles(cargoDir, before, result, agentEdited));
378
+ return { changedFiles, restoring };
323
379
  }
324
- async function tryDartFix(filePath) {
380
+ async function tryDartFix(filePath, writeHold) {
381
+ const none = { changedFiles: [] };
325
382
  const check = await probeToolAsync("dart", ["--version"], { timeout: 5000 });
326
383
  if (check.error || check.status !== 0)
327
- return [];
384
+ return none;
328
385
  const pubspecDir = findNearestContaining(path.dirname(path.resolve(filePath)), ["pubspec.yaml"]);
329
386
  if (!pubspecDir)
330
- return [];
387
+ return none;
388
+ if (writeHold)
389
+ await writeHold.acquire();
331
390
  const before = await snapshotProjectFiles(pubspecDir);
332
- const result = await safeSpawnAsync("dart", ["fix", "--apply"], {
391
+ const { result: changedFiles, restoring } = await runWithFixRestore({ tool: "dart-analyze", extension: ".dart", candidates: before.keys() }, () => safeSpawnAsync("dart", ["fix", "--apply"], {
333
392
  timeout: 30000,
334
393
  cwd: pubspecDir
335
- });
336
- if (result.error || result.status !== 0)
337
- return [];
338
- return diffProjectSnapshot(pubspecDir, before);
394
+ }), (result, agentEdited) => wholePackageChangedFiles(pubspecDir, before, result, agentEdited));
395
+ return { changedFiles, restoring };
339
396
  }
340
- export async function runAutofix(filePath, cwd, getFlag, dbg, deps, getFlagSource) {
397
+ export async function runAutofix(filePath, cwd, getFlag, dbg, deps, getFlagSource, writeHold, sessionRoot = cwd) {
398
+ if (resolveAnalysisRoot(filePath, sessionRoot) === "adopted") {
399
+ emitBounded("adopted_root_writer_skipped", `${filePath}:autofix`, {
400
+ filePath,
401
+ durationMs: 0,
402
+ metadata: { writer: "autofix" }
403
+ }, { ledgerKind: "adopted-root-writer-skipped", risingEdgePer: "identity" });
404
+ return {
405
+ fixedCount: 0,
406
+ autofixTools: [],
407
+ attemptedTools: [],
408
+ changedFiles: [],
409
+ needsContentRefresh: false,
410
+ skipReason: "adopted_root"
411
+ };
412
+ }
341
413
  const { biomeClient, ruffClient, fixedThisTurn } = deps;
342
414
  const noAutofix = getFlag("no-autofix", filePath);
343
415
  let fixedCount = 0;
344
416
  const autofixTools = [];
345
417
  const attemptedTools = [];
346
418
  const changedFiles = new Set;
419
+ const restorings = [];
347
420
  const markTargetChanged = () => changedFiles.add(path.resolve(filePath));
348
421
  let needsContentRefresh = false;
349
422
  if (fixedThisTurn.has(filePath)) {
@@ -425,6 +498,8 @@ export async function runAutofix(filePath, cwd, getFlag, dbg, deps, getFlagSourc
425
498
  dbg(`autofix: ruff unavailable for ${filePath}`);
426
499
  continue;
427
500
  }
501
+ if (writeHold)
502
+ await writeHold.acquire();
428
503
  const result = await ruffClient.fixFileAsync(filePath, cwd);
429
504
  if (result.success && result.fixed > 0) {
430
505
  fixedCount += result.fixed;
@@ -442,6 +517,8 @@ export async function runAutofix(filePath, cwd, getFlag, dbg, deps, getFlagSourc
442
517
  dbg(`autofix: biome unavailable or unsupported for ${filePath}`);
443
518
  continue;
444
519
  }
520
+ if (writeHold)
521
+ await writeHold.acquire();
445
522
  const result = await biomeClient.fixFileAsync(filePath, cwd);
446
523
  if (result.success && result.fixed > 0) {
447
524
  fixedCount += result.fixed;
@@ -454,7 +531,7 @@ export async function runAutofix(filePath, cwd, getFlag, dbg, deps, getFlagSourc
454
531
  continue;
455
532
  }
456
533
  if (toolName === "eslint") {
457
- const eslintFixed = await tryEslintFix(filePath, cwd);
534
+ const eslintFixed = await tryEslintFix(filePath, cwd, writeHold);
458
535
  if (eslintFixed > 0) {
459
536
  fixedCount += eslintFixed;
460
537
  autofixTools.push(`eslint:${eslintFixed}`);
@@ -466,7 +543,7 @@ export async function runAutofix(filePath, cwd, getFlag, dbg, deps, getFlagSourc
466
543
  continue;
467
544
  }
468
545
  if (toolName === "stylelint") {
469
- const stylelintFixed = await tryStylelintFix(filePath, cwd);
546
+ const stylelintFixed = await tryStylelintFix(filePath, cwd, writeHold);
470
547
  if (stylelintFixed > 0) {
471
548
  fixedCount += stylelintFixed;
472
549
  autofixTools.push(`stylelint:${stylelintFixed}`);
@@ -478,7 +555,7 @@ export async function runAutofix(filePath, cwd, getFlag, dbg, deps, getFlagSourc
478
555
  continue;
479
556
  }
480
557
  if (toolName === "sqlfluff") {
481
- const sqlfluffFixed = await trySqlfluffFix(filePath, cwd);
558
+ const sqlfluffFixed = await trySqlfluffFix(filePath, cwd, writeHold);
482
559
  if (sqlfluffFixed > 0) {
483
560
  fixedCount += sqlfluffFixed;
484
561
  autofixTools.push(`sqlfluff:${sqlfluffFixed}`);
@@ -490,7 +567,7 @@ export async function runAutofix(filePath, cwd, getFlag, dbg, deps, getFlagSourc
490
567
  continue;
491
568
  }
492
569
  if (toolName === "rubocop") {
493
- const rubocopFixed = await tryRubocopFix(filePath, cwd);
570
+ const rubocopFixed = await tryRubocopFix(filePath, cwd, writeHold);
494
571
  if (rubocopFixed > 0) {
495
572
  fixedCount += rubocopFixed;
496
573
  autofixTools.push(`rubocop:${rubocopFixed}`);
@@ -502,7 +579,7 @@ export async function runAutofix(filePath, cwd, getFlag, dbg, deps, getFlagSourc
502
579
  continue;
503
580
  }
504
581
  if (toolName === "ktlint") {
505
- const ktlintFixed = await tryKtlintFix(filePath, cwd);
582
+ const ktlintFixed = await tryKtlintFix(filePath, cwd, writeHold);
506
583
  if (ktlintFixed > 0) {
507
584
  fixedCount += ktlintFixed;
508
585
  autofixTools.push(`ktlint:${ktlintFixed}`);
@@ -514,7 +591,10 @@ export async function runAutofix(filePath, cwd, getFlag, dbg, deps, getFlagSourc
514
591
  continue;
515
592
  }
516
593
  if (toolName === "rust-clippy") {
517
- const clippyChangedFiles = await tryRustClippyFix(filePath);
594
+ const clippy = await tryRustClippyFix(filePath, writeHold);
595
+ const clippyChangedFiles = clippy.changedFiles;
596
+ if (clippy.restoring)
597
+ restorings.push(displayLoss(cwd, clippy.restoring));
518
598
  if (clippyChangedFiles.length > 0) {
519
599
  fixedCount += clippyChangedFiles.length;
520
600
  autofixTools.push(`rust-clippy:${clippyChangedFiles.length}`);
@@ -527,7 +607,10 @@ export async function runAutofix(filePath, cwd, getFlag, dbg, deps, getFlagSourc
527
607
  continue;
528
608
  }
529
609
  if (toolName === "dart-analyze") {
530
- const dartChangedFiles = await tryDartFix(filePath);
610
+ const dart = await tryDartFix(filePath, writeHold);
611
+ const dartChangedFiles = dart.changedFiles;
612
+ if (dart.restoring)
613
+ restorings.push(displayLoss(cwd, dart.restoring));
531
614
  if (dartChangedFiles.length > 0) {
532
615
  fixedCount += dartChangedFiles.length;
533
616
  autofixTools.push(`dart-analyze:${dartChangedFiles.length}`);
@@ -540,7 +623,7 @@ export async function runAutofix(filePath, cwd, getFlag, dbg, deps, getFlagSourc
540
623
  continue;
541
624
  }
542
625
  if (toolName === "golangci-lint") {
543
- const fixed = await tryGolangciLintFix(filePath, cwd);
626
+ const fixed = await tryGolangciLintFix(filePath, cwd, writeHold);
544
627
  if (fixed > 0) {
545
628
  fixedCount += fixed;
546
629
  autofixTools.push(`golangci-lint:${fixed}`);
@@ -552,7 +635,7 @@ export async function runAutofix(filePath, cwd, getFlag, dbg, deps, getFlagSourc
552
635
  continue;
553
636
  }
554
637
  if (toolName === "detekt") {
555
- const fixed = await tryDetektFix(filePath, cwd);
638
+ const fixed = await tryDetektFix(filePath, cwd, writeHold);
556
639
  if (fixed > 0) {
557
640
  fixedCount += fixed;
558
641
  autofixTools.push(`detekt:${fixed}`);
@@ -564,7 +647,7 @@ export async function runAutofix(filePath, cwd, getFlag, dbg, deps, getFlagSourc
564
647
  continue;
565
648
  }
566
649
  if (toolName === "ktfmt") {
567
- const fixed = await tryKtfmtFix(filePath, cwd);
650
+ const fixed = await tryKtfmtFix(filePath, cwd, writeHold);
568
651
  if (fixed > 0) {
569
652
  fixedCount += fixed;
570
653
  autofixTools.push(`ktfmt:${fixed}`);
@@ -576,7 +659,7 @@ export async function runAutofix(filePath, cwd, getFlag, dbg, deps, getFlagSourc
576
659
  continue;
577
660
  }
578
661
  if (toolName === "markdownlint") {
579
- const fixed = await tryMarkdownlintFix(filePath, cwd);
662
+ const fixed = await tryMarkdownlintFix(filePath, cwd, writeHold);
580
663
  if (fixed > 0) {
581
664
  fixedCount += fixed;
582
665
  autofixTools.push(`markdownlint:${fixed}`);
@@ -588,7 +671,7 @@ export async function runAutofix(filePath, cwd, getFlag, dbg, deps, getFlagSourc
588
671
  continue;
589
672
  }
590
673
  if (toolName === "oxlint") {
591
- const fixed = await tryOxlintFix(filePath, cwd);
674
+ const fixed = await tryOxlintFix(filePath, cwd, writeHold);
592
675
  if (fixed > 0) {
593
676
  fixedCount += fixed;
594
677
  autofixTools.push(`oxlint:${fixed}`);
@@ -607,34 +690,82 @@ export async function runAutofix(filePath, cwd, getFlag, dbg, deps, getFlagSourc
607
690
  autofixTools,
608
691
  attemptedTools,
609
692
  changedFiles: [...changedFiles],
610
- needsContentRefresh
693
+ needsContentRefresh,
694
+ restoring: restorings.length > 0 ? Promise.all(restorings).then((losses) => ({
695
+ lost: losses.flatMap((loss) => loss.lost),
696
+ possiblyLost: losses.flatMap((loss) => loss.possiblyLost)
697
+ })) : undefined
611
698
  };
612
699
  }
613
- export async function resyncLspFile(filePath, fileContent, needsContentRefresh, lspSyncCompleted, getFlag, dbg) {
700
+ export async function resyncHeldLspDocument(filePath) {
701
+ const service = (await loadLspService()).peekLSPService();
702
+ if (!service)
703
+ return "no-service";
704
+ const dispositions = await service.resyncGitChangedFiles([filePath], {
705
+ saved: true
706
+ });
707
+ return dispositions.get(filePath) ?? "no-service";
708
+ }
709
+ export function chainLateFormatResync(settled, which, row, dbg) {
710
+ const inband = which === "inband";
711
+ const logLate = (outcome) => {
712
+ const common = {
713
+ type: "phase",
714
+ toolName: row.toolName,
715
+ filePath: row.filePath,
716
+ durationMs: Date.now() - row.startedAt,
717
+ metadata: { outcome }
718
+ };
719
+ if (inband)
720
+ logLatency({ ...common, phase: "inband_format_late_resync" });
721
+ else
722
+ logLatency({ ...common, phase: "deferred_format_late_resync" });
723
+ };
724
+ logLatency({
725
+ type: "phase",
726
+ phase: "format_late_resync_chained",
727
+ toolName: row.toolName,
728
+ filePath: row.filePath,
729
+ durationMs: Date.now() - row.startedAt,
730
+ metadata: { which }
731
+ });
732
+ return settled.then(async () => {
733
+ logLate(await resyncHeldLspDocument(row.filePath));
734
+ }).catch((err) => {
735
+ surfaceHandlerCrash(inband ? "inband-format-late-resync" : "deferred-format-late-resync", err, { dbg, rethrow: false });
736
+ logLate("failed");
737
+ });
738
+ }
739
+ export async function resyncLspFile(filePath, fileContent, needsContentRefresh, lspSyncCompleted, getFlag, dbg, readStamp) {
614
740
  if (getFlag("no-lsp"))
615
- return;
741
+ return "no-lsp";
616
742
  if (!needsContentRefresh && lspSyncCompleted)
617
- return;
743
+ return "up-to-date";
618
744
  const limitCheck = exceedsLspSyncLimits(fileContent);
619
745
  if (limitCheck.tooLarge)
620
- return;
746
+ return "too-large";
621
747
  try {
622
748
  const lspService = (await loadLspService()).getLSPService();
623
749
  if (lspService.supportsLSP(filePath)) {
624
750
  const budgetMs = lspSyncBudgetMs();
625
751
  const abort = getAmbientAbortSignal();
626
752
  if (abort?.aborted)
627
- return;
753
+ return "aborted";
628
754
  const startedAt = Date.now();
629
755
  const touch = lspService.touchFile(filePath, fileContent, {
630
756
  diagnostics: "none",
631
757
  source: "lsp_sync",
632
758
  clientScope: "primary",
633
759
  maxClientWaitMs: LSP_SPAWN_BUDGET_MS,
634
- saved: true
635
- }).then(() => "done").catch((err) => {
760
+ saved: true,
761
+ readStamp
762
+ }).then((result) => {
763
+ if (result === undefined)
764
+ return "not-sent";
765
+ return result.supersededServerIds?.length ? "superseded" : "synced";
766
+ }).catch((err) => {
636
767
  dbg(`LSP resync after autofix error: ${err}`);
637
- return "done";
768
+ return "failed";
638
769
  });
639
770
  const auxServerIds = enabledAuxiliaryLspServerIds(getFlag);
640
771
  if (auxServerIds.length > 0) {
@@ -662,10 +793,14 @@ export async function resyncLspFile(filePath, fileContent, needsContentRefresh,
662
793
  });
663
794
  const cause = abort?.aborted ? "aborted (Escape)" : spawnInFlight ? `timed out after ${budgetMs}ms; reason: spawn-in-flight (server still cold-spawning)` : `timed out after ${budgetMs}ms; server slow/wedged`;
664
795
  dbg(`LSP resync ${cause} for ${filePath}`);
796
+ return "abandoned";
665
797
  }
798
+ return outcome;
666
799
  }
800
+ return "unsupported";
667
801
  } catch (err) {
668
802
  dbg(`LSP resync after autofix error: ${err}`);
803
+ return "failed";
669
804
  }
670
805
  }
671
806
  function toPilensDiagnosticEntry(d) {
@@ -694,62 +829,78 @@ function buildAllClearOutput(_dispatchResult, elapsed, filePath) {
694
829
  parts.push(`${elapsed}ms`);
695
830
  return `checkmark ${parts.join(" · ")}`.replace("checkmark", "✓");
696
831
  }
697
- export async function runFormatPhase(filePath, getFormatService, dbg, signal, budgetMs = HOOK_WALL_BUDGET_MS.tool_result_edit, hook = "tool_result_edit") {
832
+ export async function runFormatPhase(filePath, getFormatService, dbg, signal, budgetMs = HOOK_WALL_BUDGET_MS.tool_result_edit, hook = "tool_result_edit", writeHold, sessionRoot) {
698
833
  let formatChanged = false;
699
834
  let formattersUsed = [];
700
835
  const formatFailures = [];
701
836
  const formatUnavailable = [];
702
837
  let fileContent;
703
- const formatService = getFormatService();
704
- try {
705
- formatService.recordRead(filePath);
706
- const result = await formatService.formatFile(filePath, {
707
- signal,
708
- budgetMs,
709
- hook
710
- });
711
- for (const f of result.formatters) {
712
- if (f.outcome !== "unavailable")
713
- continue;
714
- if (f.error?.includes("project tool agreement could not be established"))
715
- continue;
716
- const reason = f.error ?? "formatter executable not found";
717
- formatUnavailable.push({ formatter: f.name, reason });
718
- recordDegradationOnce({
719
- kind: "formatter-unavailable",
720
- subject: `${f.name}:${path.basename(filePath)}`,
721
- reason
838
+ let abandoned;
839
+ const adopted = sessionRoot !== undefined && resolveAnalysisRoot(filePath, sessionRoot) === "adopted";
840
+ if (adopted)
841
+ emitBounded("adopted_root_writer_skipped", `${filePath}:format`, {
842
+ filePath,
843
+ durationMs: 0,
844
+ metadata: { writer: "format" }
845
+ }, { ledgerKind: "adopted-root-writer-skipped", risingEdgePer: "identity" });
846
+ if (!adopted) {
847
+ const formatService = getFormatService();
848
+ try {
849
+ formatService.recordRead(filePath);
850
+ const result = await formatService.formatFile(filePath, {
851
+ signal,
852
+ budgetMs,
853
+ hook,
854
+ ...writeHold ? { writeHold } : {}
722
855
  });
723
- }
724
- formattersUsed = result.formatters.filter((f) => f.outcome !== "unavailable").map((f) => f.name);
725
- if (result.anyChanged) {
726
- formatChanged = true;
727
- dbg("autoformat: " + result.formatters.map((f) => f.name + "(" + (f.changed ? "changed" : "unchanged") + ")").join(", "));
728
- }
729
- if (!result.allSucceeded) {
730
- const failures = result.formatters.filter((f) => !f.success);
731
- for (const failure of failures) {
856
+ abandoned = result.abandoned;
857
+ for (const f of result.formatters) {
858
+ if (f.outcome !== "unavailable")
859
+ continue;
860
+ if (f.error?.includes("project tool agreement could not be established"))
861
+ continue;
862
+ const reason = f.error ?? "formatter executable not found";
863
+ formatUnavailable.push({ formatter: f.name, reason });
732
864
  recordDegradationOnce({
733
- kind: "formatter-failure",
734
- subject: `${failure.name}:${path.basename(filePath)}`,
735
- reason: failure.error ?? "unknown error"
865
+ kind: "formatter-unavailable",
866
+ subject: `${f.name}:${path.basename(filePath)}`,
867
+ reason
736
868
  });
737
869
  }
738
- formatFailures.push(...failures.map((f) => `${f.name}: ${f.error ?? "unknown error"}`));
739
- dbg("autoformat: " + failures.map((f) => f.name + " failed: " + (f.error ?? "unknown error")).join("; "));
870
+ formattersUsed = result.formatters.filter((f) => f.outcome !== "unavailable").map((f) => f.name);
871
+ if (result.anyChanged) {
872
+ formatChanged = true;
873
+ dbg("autoformat: " + result.formatters.map((f) => f.name + "(" + (f.changed ? "changed" : "unchanged") + ")").join(", "));
874
+ }
875
+ if (!result.allSucceeded) {
876
+ const failures = result.formatters.filter((f) => !f.success);
877
+ for (const failure of failures) {
878
+ recordDegradationOnce({
879
+ kind: "formatter-failure",
880
+ subject: `${failure.name}:${path.basename(filePath)}`,
881
+ reason: failure.error ?? "unknown error"
882
+ });
883
+ }
884
+ formatFailures.push(...failures.map((f) => `${f.name}: ${f.error ?? "unknown error"}`));
885
+ dbg("autoformat: " + failures.map((f) => f.name + " failed: " + (f.error ?? "unknown error")).join("; "));
886
+ }
887
+ } catch (err) {
888
+ const message = err instanceof Error ? err.message : String(err);
889
+ recordDegradationOnce({
890
+ kind: "formatter-failure",
891
+ subject: `format-service:${path.basename(filePath)}`,
892
+ reason: message
893
+ });
894
+ formatFailures.push(message);
895
+ dbg(`autoformat error: ${err}`);
740
896
  }
741
- } catch (err) {
742
- const message = err instanceof Error ? err.message : String(err);
743
- recordDegradationOnce({
744
- kind: "formatter-failure",
745
- subject: `format-service:${path.basename(filePath)}`,
746
- reason: message
747
- });
748
- formatFailures.push(message);
749
- dbg(`autoformat error: ${err}`);
750
897
  }
898
+ const fileReadStamp = performance.now();
899
+ const fileReadAtMs = Date.now();
900
+ let fileBytes;
751
901
  try {
752
- fileContent = nodeFs.readFileSync(filePath, "utf-8");
902
+ fileBytes = nodeFs.readFileSync(filePath);
903
+ fileContent = fileBytes.toString("utf-8");
753
904
  } catch {
754
905
  fileContent = undefined;
755
906
  }
@@ -758,7 +909,11 @@ export async function runFormatPhase(filePath, getFormatService, dbg, signal, bu
758
909
  formattersUsed,
759
910
  formatFailures,
760
911
  formatUnavailable,
761
- fileContent
912
+ fileContent,
913
+ fileBytes,
914
+ fileReadStamp,
915
+ ...abandoned === undefined ? {} : { abandoned },
916
+ fileReadAtMs
762
917
  };
763
918
  }
764
919
  function buildEnrichedBlockerOutput(blockers, fileContent = "") {
@@ -790,9 +945,18 @@ function buildEnrichedBlockerOutput(blockers, fileContent = "") {
790
945
  out += ` ... and ${blockers.length - 10} more
791
946
  `;
792
947
  }
948
+ out += formatPromotionNotes(blockers);
793
949
  return out;
794
950
  }
795
951
  export async function runPipeline(ctx, deps) {
952
+ const writeHold = holdFileMutationQueue(ctx.filePath);
953
+ try {
954
+ return await analysePipeline(ctx, deps, writeHold);
955
+ } finally {
956
+ writeHold?.release();
957
+ }
958
+ }
959
+ async function analysePipeline(ctx, deps, writeHold) {
796
960
  const { filePath, cwd, toolName, getFlag, getFlagSource, dbg } = ctx;
797
961
  const { getFormatService } = deps;
798
962
  const allowAutonomousWriters = ctx.allowAutonomousWriters !== false;
@@ -803,31 +967,42 @@ export async function runPipeline(ctx, deps) {
803
967
  reason: `observed mutation is not evidence of agent authorship (${filePath})`
804
968
  });
805
969
  }
806
- admitWidgetDiagnosticsWrite(filePath, ctx.telemetry?.writeIndex);
970
+ const widgetOrder = () => writeOrderToken(ctx.telemetry?.orderTurn, ctx.telemetry?.writeIndex);
971
+ admitWidgetDiagnosticsWrite(filePath, widgetOrder());
807
972
  const phase = createPhaseTracker(toolName, filePath);
808
973
  const pipelineStart = Date.now();
809
974
  clearGraphCache();
810
975
  phase.start("total");
811
976
  phase.start("read_file");
812
977
  let fileContent;
978
+ let fileReadStamp = performance.now();
979
+ let analysisReadAtMs = Date.now();
980
+ let fileBytes;
813
981
  try {
814
- fileContent = nodeFs.readFileSync(filePath, "utf-8");
982
+ fileBytes = nodeFs.readFileSync(filePath);
983
+ fileContent = fileBytes.toString("utf-8");
815
984
  } catch {}
985
+ const readContent = fileContent;
816
986
  phase.end("read_file");
817
987
  phase.start("format");
818
988
  let formatChanged = false;
819
989
  let formattersUsed = [];
820
990
  let formatFailures = [];
821
991
  const piChangedFiles = new Set;
822
- const autoformatDisabled = !!getFlag("no-autoformat", filePath);
992
+ const autoformatDisabled = resolveAnalysisRoot(filePath, ctx.projectRoot ?? cwd) === "adopted" || !!getFlag("no-autoformat", filePath);
823
993
  const immediateFormat = !!getFlag("immediate-format");
824
994
  const formatDeferred = allowAutonomousWriters && !autoformatDisabled && !immediateFormat && !!fileContent;
825
995
  if (allowAutonomousWriters && !autoformatDisabled && immediateFormat && fileContent) {
826
- const formatResult = await runFormatPhase(filePath, getFormatService, dbg, ctx.signal);
996
+ const formatResult = await runFormatPhase(filePath, getFormatService, dbg, ctx.signal, undefined, undefined, writeHold, ctx.projectRoot ?? cwd);
997
+ if (formatResult.abandoned)
998
+ chainLateFormatResync(formatResult.abandoned, "inband", { toolName, filePath, startedAt: pipelineStart }, dbg);
827
999
  formatChanged = formatResult.formatChanged;
828
1000
  formattersUsed = formatResult.formattersUsed;
829
1001
  formatFailures = formatResult.formatFailures;
830
1002
  fileContent = formatResult.fileContent;
1003
+ fileBytes = formatResult.fileBytes;
1004
+ fileReadStamp = formatResult.fileReadStamp;
1005
+ analysisReadAtMs = formatResult.fileReadAtMs;
831
1006
  if (formatChanged) {
832
1007
  const absPath = path.resolve(filePath);
833
1008
  piChangedFiles.add(absPath);
@@ -861,6 +1036,7 @@ export async function runPipeline(ctx, deps) {
861
1036
  let autofixTools = [];
862
1037
  let attemptedTools = [];
863
1038
  let autofixChangedFiles = [];
1039
+ let autofixRestoring;
864
1040
  let fixRefresh = false;
865
1041
  let autofixSkipReason;
866
1042
  if (!allowAutonomousWriters) {
@@ -876,8 +1052,11 @@ export async function runPipeline(ctx, deps) {
876
1052
  attemptedTools,
877
1053
  changedFiles: autofixChangedFiles,
878
1054
  needsContentRefresh: fixRefresh,
1055
+ restoring: autofixRestoring,
879
1056
  skipReason: autofixSkipReason
880
- } = await runAutofix(filePath, cwd, getFlag, dbg, deps, getFlagSource));
1057
+ } = await runAutofix(filePath, cwd, getFlag, dbg, deps, getFlagSource, writeHold, ctx.projectRoot ?? cwd));
1058
+ if (autofixRestoring)
1059
+ deliverFixRunLoss(autofixRestoring, ctx);
881
1060
  for (const changedFile of autofixChangedFiles) {
882
1061
  piChangedFiles.add(path.resolve(changedFile));
883
1062
  }
@@ -893,9 +1072,13 @@ export async function runPipeline(ctx, deps) {
893
1072
  });
894
1073
  }
895
1074
  if (fixRefresh) {
1075
+ fileReadStamp = performance.now();
1076
+ analysisReadAtMs = Date.now();
896
1077
  try {
897
- fileContent = nodeFs.readFileSync(filePath, "utf-8");
1078
+ fileBytes = nodeFs.readFileSync(filePath);
1079
+ fileContent = fileBytes.toString("utf-8");
898
1080
  } catch {
1081
+ fileBytes = undefined;
899
1082
  fileContent = undefined;
900
1083
  }
901
1084
  }
@@ -919,10 +1102,14 @@ export async function runPipeline(ctx, deps) {
919
1102
  return;
920
1103
  }
921
1104
  })() : undefined;
1105
+ if (fileContent !== readContent && ctx.telemetry && ctx.nextWriteIndex) {
1106
+ ctx.telemetry = { ...ctx.telemetry, ...ctx.nextWriteIndex() };
1107
+ }
1108
+ writeHold?.release();
922
1109
  phase.start("lsp_sync");
923
1110
  let lspSyncCompleted = false;
924
1111
  if (fileContent) {
925
- await resyncLspFile(filePath, fileContent, true, false, getFlag, dbg);
1112
+ await resyncLspFile(filePath, fileContent, true, false, getFlag, dbg, fileReadStamp);
926
1113
  lspSyncCompleted = true;
927
1114
  }
928
1115
  phase.end("lsp_sync", { completed: lspSyncCompleted, finalContent: true });
@@ -932,8 +1119,8 @@ export async function runPipeline(ctx, deps) {
932
1119
  getFlag
933
1120
  };
934
1121
  const { dispatchLintWithResult, computeCascadeForFile } = await loadDispatchIntegration();
935
- const inlineBlockerFileContent = fileContent ? (() => {
936
- const content = Buffer.from(fileContent, "utf8");
1122
+ const inlineBlockerFileContent = fileBytes?.byteLength ? (() => {
1123
+ const content = fileBytes;
937
1124
  return content.byteLength <= 2 * 1024 * 1024 ? {
938
1125
  size: content.byteLength,
939
1126
  sha256: createHash("sha256").update(content).digest("hex")
@@ -946,11 +1133,14 @@ export async function runPipeline(ctx, deps) {
946
1133
  writeIndex: ctx.telemetry?.writeIndex ?? 0
947
1134
  }, {
948
1135
  projectRoot: ctx.projectRoot,
949
- writeIndex: ctx.telemetry?.writeIndex,
1136
+ analysisRootMode: ctx.analysisRootMode,
1137
+ writeIndex: widgetOrder(),
1138
+ sessionGeneration: ctx.sessionGeneration,
1139
+ sessionId: ctx.telemetry?.sessionId,
950
1140
  telemetryModel: ctx.telemetry?.modelId,
951
1141
  telemetryProvider: ctx.telemetry?.provider
952
1142
  });
953
- recordDiagnostics(filePath, dispatchResult.diagnostics, ctx.telemetry?.writeIndex);
1143
+ recordDiagnostics(filePath, dispatchResult.diagnostics, widgetOrder(), analysisReadAtMs);
954
1144
  {
955
1145
  const absPath = path.resolve(filePath);
956
1146
  const wasDirty = wasPreviouslyReportedDirty(absPath);
@@ -1060,13 +1250,15 @@ ${deliveredOutput}`;
1060
1250
  hasBlockers,
1061
1251
  dbg,
1062
1252
  turnSeq: ctx.telemetry?.turnIndex,
1253
+ orderTurn: ctx.telemetry?.orderTurn,
1063
1254
  writeSeq: ctx.telemetry?.writeIndex,
1064
1255
  projectRoot: ctx.projectRoot,
1065
1256
  seqState: ctx.seqState,
1066
1257
  turnEndCascadeSettleStart: ctx.turnEndCascadeSettleStart,
1067
1258
  fileContent,
1068
1259
  wordIndex: ctx.wordIndex,
1069
- onWordIndexUpdated: ctx.onWordIndexUpdated
1260
+ onWordIndexUpdated: ctx.onWordIndexUpdated,
1261
+ sessionGeneration: ctx.sessionGeneration
1070
1262
  }).then((run) => ({ ...run, origin: cascadeOrigin })).catch((err) => {
1071
1263
  dbg(`cascade compute failed for ${filePath}: ${err}`);
1072
1264
  return {
@@ -1076,7 +1268,10 @@ ${deliveredOutput}`;
1076
1268
  neighborCount: 0,
1077
1269
  diagnosticCount: 0,
1078
1270
  skipReason: "error",
1079
- indeterminate: {
1271
+ indeterminate: classifyTreeSitterWasmError(err) ? {
1272
+ reason: "graph_degraded",
1273
+ detail: "review graph degraded — tree-sitter wasm runtime failure"
1274
+ } : {
1080
1275
  reason: "error",
1081
1276
  detail: "cascade computation failed"
1082
1277
  }
@@ -1113,12 +1308,13 @@ ${deliveredOutput}`;
1113
1308
  isError: false,
1114
1309
  fileModified,
1115
1310
  postWriteStateHash,
1311
+ writeIndex: ctx.telemetry?.writeIndex,
1312
+ orderTurn: ctx.telemetry?.orderTurn,
1313
+ analysisReadAtMs,
1116
1314
  changedFiles,
1117
1315
  inlineBlockerSummary: hasDeliverableBlockers ? formatDiagnostics(deliverableBlockers, "blocking").trim() || undefined : undefined,
1118
- inlineBlockerSources: hasDeliverableBlockers ? [
1119
- ...new Set(deliverableBlockers.map((d) => d.tool?.trim() || "unknown"))
1120
- ] : undefined,
1121
- inlineBlockerLines: hasDeliverableBlockers ? deliverableBlockers.filter((d) => normalizeEphemeralMapKey(d.filePath) === normalizeEphemeralMapKey(filePath)).map((d) => d.line).filter((line) => typeof line === "number") : undefined,
1316
+ inlineBlockerSources: hasDeliverableBlockers ? inlineBlockerSources(deliverableBlockers) : undefined,
1317
+ inlineBlockerLines: hasDeliverableBlockers ? inlineBlockerLines(deliverableBlockers, filePath) : undefined,
1122
1318
  actionableWarnings,
1123
1319
  codeQualityWarnings,
1124
1320
  diagnostics: dispatchResult.diagnostics,
@@ -1131,7 +1327,7 @@ ${deliveredOutput}`;
1131
1327
  content: fileContent,
1132
1328
  source: "autofix"
1133
1329
  } : undefined,
1134
- inlineBlockerFileContent: hasBlockers ? inlineBlockerFileContent : undefined,
1330
+ inlineBlockerFileContent,
1135
1331
  inlineBlockerDiagnostics: hasDeliverableBlockers ? deliverableBlockers : undefined
1136
1332
  };
1137
1333
  }