@duckmind/dm-linux-x64 0.66.0 → 0.66.2

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 (546) hide show
  1. package/dm +2 -2
  2. package/extensions/.dm-extensions.json +12 -546
  3. package/extensions/dm-lens/clients/dispatch/runners/utils/runner-helpers.js +1 -1
  4. package/extensions/dm-mcp-adapter/mcp-keyring-helper.cjs +1 -1
  5. package/extensions/dm-ponytail/hooks/ponytail-activate.js +1 -1
  6. package/extensions/dm-ponytail/hooks/ponytail-instructions.js +1 -1
  7. package/extensions/dm-subagents/src/runs/background/runner-aliases.js +2 -2
  8. package/extensions/dm-subagents/src/runs/foreground/prompt-audit.js +4 -1
  9. package/extensions/dm-subagents/src/runs/shared/child-session.js +8 -6
  10. package/extensions/dm-subagents/src/watchdog/permission-arbiter.js +9 -1
  11. package/extensions/dm-subagents/src/watchdog/review.js +4 -1
  12. package/package.json +1 -1
  13. package/extensions/dm-lens/dist/clients/actionable-warnings-logger.js +0 -24
  14. package/extensions/dm-lens/dist/clients/actionable-warnings.js +0 -1014
  15. package/extensions/dm-lens/dist/clients/advisory-provenance.js +0 -385
  16. package/extensions/dm-lens/dist/clients/agent-behavior-client.js +0 -94
  17. package/extensions/dm-lens/dist/clients/agent-nudge.js +0 -151
  18. package/extensions/dm-lens/dist/clients/analysed-root.js +0 -1
  19. package/extensions/dm-lens/dist/clients/ast-grep-client.js +0 -576
  20. package/extensions/dm-lens/dist/clients/ast-grep-rule-manager.js +0 -114
  21. package/extensions/dm-lens/dist/clients/ast-grep-tool-logger.js +0 -85
  22. package/extensions/dm-lens/dist/clients/ast-grep-types.js +0 -1
  23. package/extensions/dm-lens/dist/clients/ast-grep-yaml-synth.js +0 -109
  24. package/extensions/dm-lens/dist/clients/atomic-write-staging.js +0 -66
  25. package/extensions/dm-lens/dist/clients/atomic-write.js +0 -37
  26. package/extensions/dm-lens/dist/clients/availability-probe-flight.js +0 -11
  27. package/extensions/dm-lens/dist/clients/bash-file-access.js +0 -830
  28. package/extensions/dm-lens/dist/clients/biome-client.js +0 -221
  29. package/extensions/dm-lens/dist/clients/blocker-freshness.js +0 -385
  30. package/extensions/dm-lens/dist/clients/blocker-past-eof.js +0 -49
  31. package/extensions/dm-lens/dist/clients/bootstrap.js +0 -246
  32. package/extensions/dm-lens/dist/clients/bounded-cache.js +0 -105
  33. package/extensions/dm-lens/dist/clients/bounded-pid-file-lock.js +0 -173
  34. package/extensions/dm-lens/dist/clients/bounded-telemetry.js +0 -104
  35. package/extensions/dm-lens/dist/clients/build-identity.js +0 -45
  36. package/extensions/dm-lens/dist/clients/bundled-resource-health.js +0 -41
  37. package/extensions/dm-lens/dist/clients/bus-events-logger.js +0 -48
  38. package/extensions/dm-lens/dist/clients/bus-publish.js +0 -117
  39. package/extensions/dm-lens/dist/clients/cache/rule-cache.js +0 -103
  40. package/extensions/dm-lens/dist/clients/cache-manager.js +0 -340
  41. package/extensions/dm-lens/dist/clients/cache-observability.js +0 -847
  42. package/extensions/dm-lens/dist/clients/call-graph.js +0 -628
  43. package/extensions/dm-lens/dist/clients/cargo-manifest.js +0 -151
  44. package/extensions/dm-lens/dist/clients/cascade-budget.js +0 -52
  45. package/extensions/dm-lens/dist/clients/cascade-format.js +0 -160
  46. package/extensions/dm-lens/dist/clients/cascade-logger.js +0 -22
  47. package/extensions/dm-lens/dist/clients/cascade-types.js +0 -1
  48. package/extensions/dm-lens/dist/clients/child-unref.js +0 -59
  49. package/extensions/dm-lens/dist/clients/code-quality-warnings.js +0 -192
  50. package/extensions/dm-lens/dist/clients/codebase-model.js +0 -110
  51. package/extensions/dm-lens/dist/clients/collateral-test-role.js +0 -8
  52. package/extensions/dm-lens/dist/clients/complexity-client.js +0 -398
  53. package/extensions/dm-lens/dist/clients/config-core/deny.js +0 -117
  54. package/extensions/dm-lens/dist/clients/config-core/index.js +0 -2
  55. package/extensions/dm-lens/dist/clients/config-core/merge.js +0 -228
  56. package/extensions/dm-lens/dist/clients/config-core/normalize.js +0 -217
  57. package/extensions/dm-lens/dist/clients/config-core/process-spec.js +0 -147
  58. package/extensions/dm-lens/dist/clients/config-core/provenance.js +0 -54
  59. package/extensions/dm-lens/dist/clients/config-core/records.js +0 -79
  60. package/extensions/dm-lens/dist/clients/config-core/resolve.js +0 -48
  61. package/extensions/dm-lens/dist/clients/config-core/safe-object.js +0 -22
  62. package/extensions/dm-lens/dist/clients/config-core/schema.js +0 -90
  63. package/extensions/dm-lens/dist/clients/config-diagnostic-codes.js +0 -90
  64. package/extensions/dm-lens/dist/clients/config-locations.js +0 -175
  65. package/extensions/dm-lens/dist/clients/config-resolve.js +0 -359
  66. package/extensions/dm-lens/dist/clients/config-schema.js +0 -128
  67. package/extensions/dm-lens/dist/clients/config-warn.js +0 -146
  68. package/extensions/dm-lens/dist/clients/console-guard-install.js +0 -4
  69. package/extensions/dm-lens/dist/clients/cooperative-budget.js +0 -36
  70. package/extensions/dm-lens/dist/clients/dead-code-client.js +0 -342
  71. package/extensions/dm-lens/dist/clients/dead-code-logger.js +0 -18
  72. package/extensions/dm-lens/dist/clients/deadline-utils.js +0 -117
  73. package/extensions/dm-lens/dist/clients/debug-handles.js +0 -121
  74. package/extensions/dm-lens/dist/clients/debug-heap.js +0 -80
  75. package/extensions/dm-lens/dist/clients/deferred-lsp-work.js +0 -33
  76. package/extensions/dm-lens/dist/clients/degradation-ledger.js +0 -272
  77. package/extensions/dm-lens/dist/clients/demoted-finding-render.js +0 -61
  78. package/extensions/dm-lens/dist/clients/dependency-checker.js +0 -525
  79. package/extensions/dm-lens/dist/clients/deps/ast-grep-napi.js +0 -17
  80. package/extensions/dm-lens/dist/clients/deps/dm-host-deps.js +0 -10
  81. package/extensions/dm-lens/dist/clients/deps/dm-tui-compat.js +0 -58
  82. package/extensions/dm-lens/dist/clients/deps/js-yaml.js +0 -7
  83. package/extensions/dm-lens/dist/clients/deps/minimatch.js +0 -6
  84. package/extensions/dm-lens/dist/clients/deps/pidusage.js +0 -5
  85. package/extensions/dm-lens/dist/clients/deps/typebox.js +0 -5
  86. package/extensions/dm-lens/dist/clients/deps/vscode-jsonrpc.js +0 -8
  87. package/extensions/dm-lens/dist/clients/deps/web-tree-sitter.js +0 -11
  88. package/extensions/dm-lens/dist/clients/diagnostic-dispositions.js +0 -318
  89. package/extensions/dm-lens/dist/clients/diagnostic-line-freshness.js +0 -144
  90. package/extensions/dm-lens/dist/clients/diagnostic-logger.js +0 -60
  91. package/extensions/dm-lens/dist/clients/diagnostic-tracker.js +0 -89
  92. package/extensions/dm-lens/dist/clients/diagnostics-publish.js +0 -134
  93. package/extensions/dm-lens/dist/clients/dispatch/ast-grep-catalog.js +0 -16
  94. package/extensions/dm-lens/dist/clients/dispatch/auxiliary-lsp.js +0 -158
  95. package/extensions/dm-lens/dist/clients/dispatch/collect-later-tier.js +0 -25
  96. package/extensions/dm-lens/dist/clients/dispatch/diagnostic-taxonomy.js +0 -58
  97. package/extensions/dm-lens/dist/clients/dispatch/dispatcher.js +0 -953
  98. package/extensions/dm-lens/dist/clients/dispatch/fact-provider-types.js +0 -1
  99. package/extensions/dm-lens/dist/clients/dispatch/fact-rule-runner.js +0 -17
  100. package/extensions/dm-lens/dist/clients/dispatch/fact-runner.js +0 -18
  101. package/extensions/dm-lens/dist/clients/dispatch/fact-scheduler.js +0 -52
  102. package/extensions/dm-lens/dist/clients/dispatch/fact-store.js +0 -199
  103. package/extensions/dm-lens/dist/clients/dispatch/facts/comment-facts.js +0 -20
  104. package/extensions/dm-lens/dist/clients/dispatch/facts/file-content.js +0 -18
  105. package/extensions/dm-lens/dist/clients/dispatch/facts/function-facts.js +0 -281
  106. package/extensions/dm-lens/dist/clients/dispatch/facts/import-facts.js +0 -169
  107. package/extensions/dm-lens/dist/clients/dispatch/facts/tree-sitter-facts.js +0 -19
  108. package/extensions/dm-lens/dist/clients/dispatch/facts/try-catch-facts.js +0 -95
  109. package/extensions/dm-lens/dist/clients/dispatch/finding-policy.js +0 -159
  110. package/extensions/dm-lens/dist/clients/dispatch/indent-detect.js +0 -227
  111. package/extensions/dm-lens/dist/clients/dispatch/inline-suppressions.js +0 -52
  112. package/extensions/dm-lens/dist/clients/dispatch/integration.js +0 -1463
  113. package/extensions/dm-lens/dist/clients/dispatch/lazy.js +0 -8
  114. package/extensions/dm-lens/dist/clients/dispatch/pending-runner-findings.js +0 -75
  115. package/extensions/dm-lens/dist/clients/dispatch/plan.js +0 -278
  116. package/extensions/dm-lens/dist/clients/dispatch/priorities.js +0 -14
  117. package/extensions/dm-lens/dist/clients/dispatch/rule-id-normalize.js +0 -42
  118. package/extensions/dm-lens/dist/clients/dispatch/rule-ignores.js +0 -21
  119. package/extensions/dm-lens/dist/clients/dispatch/rule-policy.js +0 -73
  120. package/extensions/dm-lens/dist/clients/dispatch/rules/async-noise.js +0 -31
  121. package/extensions/dm-lens/dist/clients/dispatch/rules/async-unnecessary-wrapper.js +0 -27
  122. package/extensions/dm-lens/dist/clients/dispatch/rules/cors-wildcard.js +0 -35
  123. package/extensions/dm-lens/dist/clients/dispatch/rules/error-obscuring.js +0 -29
  124. package/extensions/dm-lens/dist/clients/dispatch/rules/error-swallowing.js +0 -29
  125. package/extensions/dm-lens/dist/clients/dispatch/rules/framework-call-noise.js +0 -31
  126. package/extensions/dm-lens/dist/clients/dispatch/rules/high-complexity.js +0 -56
  127. package/extensions/dm-lens/dist/clients/dispatch/rules/high-fan-out.js +0 -45
  128. package/extensions/dm-lens/dist/clients/dispatch/rules/high-import-coupling.js +0 -31
  129. package/extensions/dm-lens/dist/clients/dispatch/rules/missing-error-propagation.js +0 -45
  130. package/extensions/dm-lens/dist/clients/dispatch/rules/no-commented-credentials.js +0 -46
  131. package/extensions/dm-lens/dist/clients/dispatch/rules/pass-through-wrappers.js +0 -38
  132. package/extensions/dm-lens/dist/clients/dispatch/rules/placeholder-comments.js +0 -40
  133. package/extensions/dm-lens/dist/clients/dispatch/rules/unsafe-boundary.js +0 -101
  134. package/extensions/dm-lens/dist/clients/dispatch/runner-context.js +0 -46
  135. package/extensions/dm-lens/dist/clients/dispatch/runners/actionlint.js +0 -98
  136. package/extensions/dm-lens/dist/clients/dispatch/runners/ast-grep-napi.js +0 -690
  137. package/extensions/dm-lens/dist/clients/dispatch/runners/biome-check.js +0 -202
  138. package/extensions/dm-lens/dist/clients/dispatch/runners/cpp-check.js +0 -190
  139. package/extensions/dm-lens/dist/clients/dispatch/runners/credo.js +0 -66
  140. package/extensions/dm-lens/dist/clients/dispatch/runners/cue-vet.js +0 -167
  141. package/extensions/dm-lens/dist/clients/dispatch/runners/dart-analyze.js +0 -151
  142. package/extensions/dm-lens/dist/clients/dispatch/runners/detekt.js +0 -157
  143. package/extensions/dm-lens/dist/clients/dispatch/runners/dotnet-build.js +0 -157
  144. package/extensions/dm-lens/dist/clients/dispatch/runners/elixir-check.js +0 -153
  145. package/extensions/dm-lens/dist/clients/dispatch/runners/eslint.js +0 -99
  146. package/extensions/dm-lens/dist/clients/dispatch/runners/fact-rules.js +0 -20
  147. package/extensions/dm-lens/dist/clients/dispatch/runners/fish-indent.js +0 -65
  148. package/extensions/dm-lens/dist/clients/dispatch/runners/gleam-check.js +0 -107
  149. package/extensions/dm-lens/dist/clients/dispatch/runners/go-vet.js +0 -51
  150. package/extensions/dm-lens/dist/clients/dispatch/runners/golangci-lint.js +0 -89
  151. package/extensions/dm-lens/dist/clients/dispatch/runners/hadolint.js +0 -83
  152. package/extensions/dm-lens/dist/clients/dispatch/runners/helm-lint.js +0 -144
  153. package/extensions/dm-lens/dist/clients/dispatch/runners/helm-render.js +0 -593
  154. package/extensions/dm-lens/dist/clients/dispatch/runners/htmlhint.js +0 -103
  155. package/extensions/dm-lens/dist/clients/dispatch/runners/index.js +0 -100
  156. package/extensions/dm-lens/dist/clients/dispatch/runners/javac.js +0 -82
  157. package/extensions/dm-lens/dist/clients/dispatch/runners/ktlint.js +0 -93
  158. package/extensions/dm-lens/dist/clients/dispatch/runners/lsp.js +0 -206
  159. package/extensions/dm-lens/dist/clients/dispatch/runners/markdownlint.js +0 -129
  160. package/extensions/dm-lens/dist/clients/dispatch/runners/mypy.js +0 -70
  161. package/extensions/dm-lens/dist/clients/dispatch/runners/oxlint.js +0 -305
  162. package/extensions/dm-lens/dist/clients/dispatch/runners/php-lint.js +0 -70
  163. package/extensions/dm-lens/dist/clients/dispatch/runners/phpstan.js +0 -90
  164. package/extensions/dm-lens/dist/clients/dispatch/runners/prisma-validate.js +0 -56
  165. package/extensions/dm-lens/dist/clients/dispatch/runners/psscriptanalyzer.js +0 -307
  166. package/extensions/dm-lens/dist/clients/dispatch/runners/pyright.js +0 -118
  167. package/extensions/dm-lens/dist/clients/dispatch/runners/rubocop.js +0 -79
  168. package/extensions/dm-lens/dist/clients/dispatch/runners/ruff.js +0 -69
  169. package/extensions/dm-lens/dist/clients/dispatch/runners/rust-clippy.js +0 -147
  170. package/extensions/dm-lens/dist/clients/dispatch/runners/shellcheck.js +0 -111
  171. package/extensions/dm-lens/dist/clients/dispatch/runners/shfmt.js +0 -81
  172. package/extensions/dm-lens/dist/clients/dispatch/runners/spellcheck.js +0 -74
  173. package/extensions/dm-lens/dist/clients/dispatch/runners/spotbugs.js +0 -208
  174. package/extensions/dm-lens/dist/clients/dispatch/runners/sqlfluff.js +0 -136
  175. package/extensions/dm-lens/dist/clients/dispatch/runners/stylelint.js +0 -118
  176. package/extensions/dm-lens/dist/clients/dispatch/runners/swiftlint.js +0 -143
  177. package/extensions/dm-lens/dist/clients/dispatch/runners/taplo.js +0 -97
  178. package/extensions/dm-lens/dist/clients/dispatch/runners/terragrunt.js +0 -110
  179. package/extensions/dm-lens/dist/clients/dispatch/runners/tflint.js +0 -104
  180. package/extensions/dm-lens/dist/clients/dispatch/runners/tree-sitter.js +0 -516
  181. package/extensions/dm-lens/dist/clients/dispatch/runners/trivy-config.js +0 -155
  182. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/availability-policy.js +0 -285
  183. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/candidate-probe.js +0 -61
  184. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/diagnostic-parsers.js +0 -61
  185. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/lazy-installer.js +0 -130
  186. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/runner-helpers.js +0 -1067
  187. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/spawn-outcome.js +0 -40
  188. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/tool-failure.js +0 -117
  189. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/toolchain-availability.js +0 -88
  190. package/extensions/dm-lens/dist/clients/dispatch/runners/utils.js +0 -8
  191. package/extensions/dm-lens/dist/clients/dispatch/runners/vale.js +0 -106
  192. package/extensions/dm-lens/dist/clients/dispatch/runners/yaml-rule-parser.js +0 -163
  193. package/extensions/dm-lens/dist/clients/dispatch/runners/yamllint.js +0 -83
  194. package/extensions/dm-lens/dist/clients/dispatch/runners/zig-check.js +0 -72
  195. package/extensions/dm-lens/dist/clients/dispatch/suppress-writer.js +0 -57
  196. package/extensions/dm-lens/dist/clients/dispatch/tool-profile.js +0 -30
  197. package/extensions/dm-lens/dist/clients/dispatch/types.js +0 -7
  198. package/extensions/dm-lens/dist/clients/dispatch/utils/format-utils.js +0 -45
  199. package/extensions/dm-lens/dist/clients/dispatch/utils/lsp-diagnostics.js +0 -31
  200. package/extensions/dm-lens/dist/clients/disposition-logger.js +0 -19
  201. package/extensions/dm-lens/dist/clients/disposition-publish.js +0 -88
  202. package/extensions/dm-lens/dist/clients/durable-store.js +0 -77
  203. package/extensions/dm-lens/dist/clients/effective-config.js +0 -160
  204. package/extensions/dm-lens/dist/clients/env-utils.js +0 -26
  205. package/extensions/dm-lens/dist/clients/error-class.js +0 -3
  206. package/extensions/dm-lens/dist/clients/eval-timestamp.js +0 -2
  207. package/extensions/dm-lens/dist/clients/event-loop-hold.js +0 -119
  208. package/extensions/dm-lens/dist/clients/event-loop-monitor.js +0 -84
  209. package/extensions/dm-lens/dist/clients/extension-log.js +0 -230
  210. package/extensions/dm-lens/dist/clients/extension-mode.js +0 -20
  211. package/extensions/dm-lens/dist/clients/feature-hints.js +0 -88
  212. package/extensions/dm-lens/dist/clients/file-kinds.js +0 -304
  213. package/extensions/dm-lens/dist/clients/file-role.js +0 -50
  214. package/extensions/dm-lens/dist/clients/file-time.js +0 -112
  215. package/extensions/dm-lens/dist/clients/file-utils.js +0 -630
  216. package/extensions/dm-lens/dist/clients/finding-delivery-gate.js +0 -129
  217. package/extensions/dm-lens/dist/clients/finding-identity.js +0 -23
  218. package/extensions/dm-lens/dist/clients/fix-worklog.js +0 -75
  219. package/extensions/dm-lens/dist/clients/format-events-publish.js +0 -230
  220. package/extensions/dm-lens/dist/clients/format-service.js +0 -154
  221. package/extensions/dm-lens/dist/clients/formatters-lazy.js +0 -8
  222. package/extensions/dm-lens/dist/clients/formatters.js +0 -1351
  223. package/extensions/dm-lens/dist/clients/freshness-cadence.js +0 -1
  224. package/extensions/dm-lens/dist/clients/freshness.js +0 -8
  225. package/extensions/dm-lens/dist/clients/generated-artifacts.js +0 -209
  226. package/extensions/dm-lens/dist/clients/generation-guard.js +0 -105
  227. package/extensions/dm-lens/dist/clients/git-guard.js +0 -770
  228. package/extensions/dm-lens/dist/clients/git-tracked-ignore.js +0 -120
  229. package/extensions/dm-lens/dist/clients/gitleaks-client.js +0 -282
  230. package/extensions/dm-lens/dist/clients/go-client.js +0 -47
  231. package/extensions/dm-lens/dist/clients/govulncheck-client.js +0 -411
  232. package/extensions/dm-lens/dist/clients/gradle-ktfmt-style.js +0 -177
  233. package/extensions/dm-lens/dist/clients/grammar-source.js +0 -224
  234. package/extensions/dm-lens/dist/clients/gzip-stage-write.js +0 -85
  235. package/extensions/dm-lens/dist/clients/hashline-anchor.js +0 -222
  236. package/extensions/dm-lens/dist/clients/hook-budgets.js +0 -16
  237. package/extensions/dm-lens/dist/clients/host-edit-normalize.js +0 -87
  238. package/extensions/dm-lens/dist/clients/host-ports.js +0 -35
  239. package/extensions/dm-lens/dist/clients/indent-retarget.js +0 -102
  240. package/extensions/dm-lens/dist/clients/inline-blocker-dispositions.js +0 -103
  241. package/extensions/dm-lens/dist/clients/install-diagnostics.js +0 -123
  242. package/extensions/dm-lens/dist/clients/installer/index.js +0 -3770
  243. package/extensions/dm-lens/dist/clients/installer/managed-tool-refresh-session.js +0 -17
  244. package/extensions/dm-lens/dist/clients/installer/managed-tool-refresh.js +0 -522
  245. package/extensions/dm-lens/dist/clients/instance-reaper-state.js +0 -3
  246. package/extensions/dm-lens/dist/clients/instance-reaper.js +0 -577
  247. package/extensions/dm-lens/dist/clients/instance-registry-lock.js +0 -131
  248. package/extensions/dm-lens/dist/clients/instance-registry.js +0 -452
  249. package/extensions/dm-lens/dist/clients/jscpd-client.js +0 -252
  250. package/extensions/dm-lens/dist/clients/json-cache-read.js +0 -25
  251. package/extensions/dm-lens/dist/clients/knip-client.js +0 -472
  252. package/extensions/dm-lens/dist/clients/language-policy.js +0 -242
  253. package/extensions/dm-lens/dist/clients/language-profile.js +0 -261
  254. package/extensions/dm-lens/dist/clients/language-registry.js +0 -424
  255. package/extensions/dm-lens/dist/clients/latency-logger.js +0 -192
  256. package/extensions/dm-lens/dist/clients/lazy-import.js +0 -14
  257. package/extensions/dm-lens/dist/clients/ledger-bounds.js +0 -21
  258. package/extensions/dm-lens/dist/clients/lens-config.js +0 -237
  259. package/extensions/dm-lens/dist/clients/lens-engine.js +0 -181
  260. package/extensions/dm-lens/dist/clients/lens-events.js +0 -105
  261. package/extensions/dm-lens/dist/clients/lens-flag-registry.js +0 -302
  262. package/extensions/dm-lens/dist/clients/lens-map.js +0 -980
  263. package/extensions/dm-lens/dist/clients/live-bus-emitter.js +0 -53
  264. package/extensions/dm-lens/dist/clients/log-cleanup.js +0 -138
  265. package/extensions/dm-lens/dist/clients/lsp/aggregation.js +0 -88
  266. package/extensions/dm-lens/dist/clients/lsp/cascade-tier.js +0 -203
  267. package/extensions/dm-lens/dist/clients/lsp/client.js +0 -2709
  268. package/extensions/dm-lens/dist/clients/lsp/config.js +0 -252
  269. package/extensions/dm-lens/dist/clients/lsp/content-limits.js +0 -21
  270. package/extensions/dm-lens/dist/clients/lsp/diagnostic-binding.js +0 -79
  271. package/extensions/dm-lens/dist/clients/lsp/document-drift.js +0 -312
  272. package/extensions/dm-lens/dist/clients/lsp/edits.js +0 -930
  273. package/extensions/dm-lens/dist/clients/lsp/index.js +0 -4448
  274. package/extensions/dm-lens/dist/clients/lsp/inferred-project.js +0 -121
  275. package/extensions/dm-lens/dist/clients/lsp/jvm-runtime.js +0 -194
  276. package/extensions/dm-lens/dist/clients/lsp/language.js +0 -23
  277. package/extensions/dm-lens/dist/clients/lsp/launch.js +0 -468
  278. package/extensions/dm-lens/dist/clients/lsp/lombok.js +0 -146
  279. package/extensions/dm-lens/dist/clients/lsp/path-utils.js +0 -1
  280. package/extensions/dm-lens/dist/clients/lsp/pending-aux-coverage.js +0 -90
  281. package/extensions/dm-lens/dist/clients/lsp/position-encoding.js +0 -28
  282. package/extensions/dm-lens/dist/clients/lsp/ruby-drive-dirs.js +0 -42
  283. package/extensions/dm-lens/dist/clients/lsp/server.js +0 -2422
  284. package/extensions/dm-lens/dist/clients/lsp/session-roots.js +0 -52
  285. package/extensions/dm-lens/dist/clients/lsp/spawn-history.js +0 -15
  286. package/extensions/dm-lens/dist/clients/lsp/sync-kind.js +0 -30
  287. package/extensions/dm-lens/dist/clients/lsp/tsserver-sync.js +0 -156
  288. package/extensions/dm-lens/dist/clients/lsp/wait-policy/capability-snapshot.js +0 -1
  289. package/extensions/dm-lens/dist/clients/lsp/wait-policy/classification.js +0 -36
  290. package/extensions/dm-lens/dist/clients/lsp/wait-policy/index.js +0 -3
  291. package/extensions/dm-lens/dist/clients/lsp/wait-policy/strategies.js +0 -175
  292. package/extensions/dm-lens/dist/clients/lsp/watch-queue.js +0 -40
  293. package/extensions/dm-lens/dist/clients/lsp/workspace-diagnostics-cache.js +0 -267
  294. package/extensions/dm-lens/dist/clients/lsp/workspace-diagnostics-session.js +0 -7
  295. package/extensions/dm-lens/dist/clients/lsp/workspace-sweep-hold.js +0 -93
  296. package/extensions/dm-lens/dist/clients/lsp-budget.js +0 -83
  297. package/extensions/dm-lens/dist/clients/lsp-document-symbols.js +0 -93
  298. package/extensions/dm-lens/dist/clients/lsp-lazy.js +0 -8
  299. package/extensions/dm-lens/dist/clients/lsp-mutation.js +0 -273
  300. package/extensions/dm-lens/dist/clients/lsp-status.js +0 -37
  301. package/extensions/dm-lens/dist/clients/map-with-concurrency.js +0 -20
  302. package/extensions/dm-lens/dist/clients/mcp/analyze.js +0 -251
  303. package/extensions/dm-lens/dist/clients/mcp/host-shim.js +0 -14
  304. package/extensions/dm-lens/dist/clients/mcp/ipc.js +0 -302
  305. package/extensions/dm-lens/dist/clients/mcp/review.js +0 -137
  306. package/extensions/dm-lens/dist/clients/mcp/session.js +0 -305
  307. package/extensions/dm-lens/dist/clients/memory-sampler.js +0 -107
  308. package/extensions/dm-lens/dist/clients/message-end-attribution.js +0 -18
  309. package/extensions/dm-lens/dist/clients/metrics-client.js +0 -80
  310. package/extensions/dm-lens/dist/clients/metrics-history.js +0 -255
  311. package/extensions/dm-lens/dist/clients/middle-man-analysis.js +0 -161
  312. package/extensions/dm-lens/dist/clients/model-provider.js +0 -31
  313. package/extensions/dm-lens/dist/clients/module-report-lsp.js +0 -140
  314. package/extensions/dm-lens/dist/clients/module-report.js +0 -1642
  315. package/extensions/dm-lens/dist/clients/mutating-tool.js +0 -377
  316. package/extensions/dm-lens/dist/clients/mutation-attribution.js +0 -168
  317. package/extensions/dm-lens/dist/clients/mutation-bridge.js +0 -102
  318. package/extensions/dm-lens/dist/clients/ndjson-logger.js +0 -471
  319. package/extensions/dm-lens/dist/clients/observed-mutation-sources.js +0 -43
  320. package/extensions/dm-lens/dist/clients/observed-mutation.js +0 -709
  321. package/extensions/dm-lens/dist/clients/oldtext-autopatch.js +0 -100
  322. package/extensions/dm-lens/dist/clients/opaque-mutation-scan.js +0 -313
  323. package/extensions/dm-lens/dist/clients/opengrep-client.js +0 -216
  324. package/extensions/dm-lens/dist/clients/opengrep-config.js +0 -52
  325. package/extensions/dm-lens/dist/clients/package-manager.js +0 -303
  326. package/extensions/dm-lens/dist/clients/package-root.js +0 -25
  327. package/extensions/dm-lens/dist/clients/partial-edit-apply.js +0 -337
  328. package/extensions/dm-lens/dist/clients/path-attribution-telemetry.js +0 -31
  329. package/extensions/dm-lens/dist/clients/path-keyed-map.js +0 -57
  330. package/extensions/dm-lens/dist/clients/path-utils.js +0 -476
  331. package/extensions/dm-lens/dist/clients/performance-report.js +0 -291
  332. package/extensions/dm-lens/dist/clients/persist-debounce.js +0 -37
  333. package/extensions/dm-lens/dist/clients/persistent-reverify.js +0 -165
  334. package/extensions/dm-lens/dist/clients/php-cs-fixer-config.js +0 -15
  335. package/extensions/dm-lens/dist/clients/pipeline.js +0 -1091
  336. package/extensions/dm-lens/dist/clients/post-autofix-notice.js +0 -19
  337. package/extensions/dm-lens/dist/clients/print-mode.js +0 -3
  338. package/extensions/dm-lens/dist/clients/probe-home-state.js +0 -62
  339. package/extensions/dm-lens/dist/clients/process-bridge.js +0 -20
  340. package/extensions/dm-lens/dist/clients/process-singletons.js +0 -69
  341. package/extensions/dm-lens/dist/clients/process-snapshot.js +0 -22
  342. package/extensions/dm-lens/dist/clients/project-changes.js +0 -112
  343. package/extensions/dm-lens/dist/clients/project-conventions.js +0 -152
  344. package/extensions/dm-lens/dist/clients/project-diagnostics/cache.js +0 -91
  345. package/extensions/dm-lens/dist/clients/project-diagnostics/extractors.js +0 -53
  346. package/extensions/dm-lens/dist/clients/project-diagnostics/fresh-fetch.js +0 -408
  347. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/call-graph-impact.js +0 -64
  348. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/dead-code.js +0 -38
  349. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/gitleaks.js +0 -21
  350. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/govulncheck.js +0 -23
  351. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/jscpd.js +0 -28
  352. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/knip.js +0 -45
  353. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/madge.js +0 -34
  354. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/opengrep.js +0 -32
  355. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/runner-findings.js +0 -79
  356. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/trivy.js +0 -41
  357. package/extensions/dm-lens/dist/clients/project-diagnostics/scanner.js +0 -349
  358. package/extensions/dm-lens/dist/clients/project-diagnostics/types.js +0 -1
  359. package/extensions/dm-lens/dist/clients/project-lens-config.js +0 -437
  360. package/extensions/dm-lens/dist/clients/project-report.js +0 -527
  361. package/extensions/dm-lens/dist/clients/project-scale.js +0 -60
  362. package/extensions/dm-lens/dist/clients/project-scan-policy.js +0 -4
  363. package/extensions/dm-lens/dist/clients/project-snapshot-fingerprint.js +0 -39
  364. package/extensions/dm-lens/dist/clients/project-snapshot-persist-worker.js +0 -14
  365. package/extensions/dm-lens/dist/clients/project-snapshot.js +0 -1178
  366. package/extensions/dm-lens/dist/clients/project-trust.js +0 -104
  367. package/extensions/dm-lens/dist/clients/python-environment.js +0 -120
  368. package/extensions/dm-lens/dist/clients/python-provenance.js +0 -551
  369. package/extensions/dm-lens/dist/clients/quiet-window-config.js +0 -16
  370. package/extensions/dm-lens/dist/clients/quiet-window.js +0 -126
  371. package/extensions/dm-lens/dist/clients/read-bridge.js +0 -46
  372. package/extensions/dm-lens/dist/clients/read-expansion.js +0 -218
  373. package/extensions/dm-lens/dist/clients/read-guard-logger.js +0 -178
  374. package/extensions/dm-lens/dist/clients/read-guard-tool-lines.js +0 -1042
  375. package/extensions/dm-lens/dist/clients/read-guard.js +0 -1096
  376. package/extensions/dm-lens/dist/clients/recent-touches.js +0 -126
  377. package/extensions/dm-lens/dist/clients/redact/secrets.js +0 -386
  378. package/extensions/dm-lens/dist/clients/resource-sampler.js +0 -344
  379. package/extensions/dm-lens/dist/clients/reverse-deps.js +0 -227
  380. package/extensions/dm-lens/dist/clients/review-graph/builder.js +0 -3635
  381. package/extensions/dm-lens/dist/clients/review-graph/format.js +0 -30
  382. package/extensions/dm-lens/dist/clients/review-graph/git-identity.js +0 -115
  383. package/extensions/dm-lens/dist/clients/review-graph/import-resolvers.js +0 -325
  384. package/extensions/dm-lens/dist/clients/review-graph/persist-worker.js +0 -8
  385. package/extensions/dm-lens/dist/clients/review-graph/query.js +0 -195
  386. package/extensions/dm-lens/dist/clients/review-graph/revision-drift.js +0 -3
  387. package/extensions/dm-lens/dist/clients/review-graph/service.js +0 -60
  388. package/extensions/dm-lens/dist/clients/review-graph/shared-extraction-ir.js +0 -54
  389. package/extensions/dm-lens/dist/clients/review-graph/symbol-id.js +0 -29
  390. package/extensions/dm-lens/dist/clients/review-graph/tsconfig-paths.js +0 -253
  391. package/extensions/dm-lens/dist/clients/review-graph/types.js +0 -1
  392. package/extensions/dm-lens/dist/clients/review-graph/workspace-modules.js +0 -374
  393. package/extensions/dm-lens/dist/clients/review-graph-logger.js +0 -51
  394. package/extensions/dm-lens/dist/clients/ruff-client.js +0 -109
  395. package/extensions/dm-lens/dist/clients/rules-scanner.js +0 -113
  396. package/extensions/dm-lens/dist/clients/run-duration.js +0 -9
  397. package/extensions/dm-lens/dist/clients/runtime-agent-end.js +0 -608
  398. package/extensions/dm-lens/dist/clients/runtime-config.js +0 -39
  399. package/extensions/dm-lens/dist/clients/runtime-context.js +0 -155
  400. package/extensions/dm-lens/dist/clients/runtime-coordinator.js +0 -817
  401. package/extensions/dm-lens/dist/clients/runtime-session.js +0 -1625
  402. package/extensions/dm-lens/dist/clients/runtime-tool-call.js +0 -868
  403. package/extensions/dm-lens/dist/clients/runtime-tool-result.js +0 -1317
  404. package/extensions/dm-lens/dist/clients/runtime-turn.js +0 -2333
  405. package/extensions/dm-lens/dist/clients/rust-client.js +0 -48
  406. package/extensions/dm-lens/dist/clients/safe-spawn.js +0 -1267
  407. package/extensions/dm-lens/dist/clients/sanitize.js +0 -174
  408. package/extensions/dm-lens/dist/clients/scan-utils.js +0 -7
  409. package/extensions/dm-lens/dist/clients/scratch-tree-policy.js +0 -57
  410. package/extensions/dm-lens/dist/clients/search-read-registration.js +0 -59
  411. package/extensions/dm-lens/dist/clients/secret-findings.js +0 -69
  412. package/extensions/dm-lens/dist/clients/security-scan-client.js +0 -208
  413. package/extensions/dm-lens/dist/clients/session-event-guard.js +0 -111
  414. package/extensions/dm-lens/dist/clients/session-lifecycle.js +0 -173
  415. package/extensions/dm-lens/dist/clients/session-start-observability.js +0 -47
  416. package/extensions/dm-lens/dist/clients/session-state-store.js +0 -63
  417. package/extensions/dm-lens/dist/clients/session-summary.js +0 -8
  418. package/extensions/dm-lens/dist/clients/sessionstart-logger.js +0 -22
  419. package/extensions/dm-lens/dist/clients/sg-runner.js +0 -627
  420. package/extensions/dm-lens/dist/clients/sgconfig.js +0 -280
  421. package/extensions/dm-lens/dist/clients/shared-checkout-guard.js +0 -177
  422. package/extensions/dm-lens/dist/clients/single-flight.js +0 -52
  423. package/extensions/dm-lens/dist/clients/situational-tool-telemetry.js +0 -85
  424. package/extensions/dm-lens/dist/clients/skills-resolver.js +0 -38
  425. package/extensions/dm-lens/dist/clients/slow-fs.js +0 -77
  426. package/extensions/dm-lens/dist/clients/smells-rollup.js +0 -118
  427. package/extensions/dm-lens/dist/clients/source-filter.js +0 -320
  428. package/extensions/dm-lens/dist/clients/source-walker.js +0 -96
  429. package/extensions/dm-lens/dist/clients/spawn-output-cap.js +0 -35
  430. package/extensions/dm-lens/dist/clients/spawn-timeout-cooldown.js +0 -51
  431. package/extensions/dm-lens/dist/clients/stale-marker.js +0 -1
  432. package/extensions/dm-lens/dist/clients/startup-scan.js +0 -222
  433. package/extensions/dm-lens/dist/clients/startup-timing.js +0 -67
  434. package/extensions/dm-lens/dist/clients/string-utils.js +0 -6
  435. package/extensions/dm-lens/dist/clients/subagent-mode.js +0 -40
  436. package/extensions/dm-lens/dist/clients/symbol-containment.js +0 -16
  437. package/extensions/dm-lens/dist/clients/symbol-types.js +0 -1
  438. package/extensions/dm-lens/dist/clients/test-runner-client.js +0 -1504
  439. package/extensions/dm-lens/dist/clients/test-runner-delivery.js +0 -260
  440. package/extensions/dm-lens/dist/clients/todo-scanner.js +0 -164
  441. package/extensions/dm-lens/dist/clients/tool-agreement.js +0 -377
  442. package/extensions/dm-lens/dist/clients/tool-config.js +0 -218
  443. package/extensions/dm-lens/dist/clients/tool-cwd.js +0 -235
  444. package/extensions/dm-lens/dist/clients/tool-definition.js +0 -22
  445. package/extensions/dm-lens/dist/clients/tool-event.js +0 -18
  446. package/extensions/dm-lens/dist/clients/tool-policy.js +0 -2393
  447. package/extensions/dm-lens/dist/clients/tool-probe.js +0 -5
  448. package/extensions/dm-lens/dist/clients/tool-render.js +0 -79
  449. package/extensions/dm-lens/dist/clients/tool-set-policy.js +0 -70
  450. package/extensions/dm-lens/dist/clients/tree-sitter-cache.js +0 -206
  451. package/extensions/dm-lens/dist/clients/tree-sitter-client.js +0 -2787
  452. package/extensions/dm-lens/dist/clients/tree-sitter-logger.js +0 -77
  453. package/extensions/dm-lens/dist/clients/tree-sitter-navigator.js +0 -198
  454. package/extensions/dm-lens/dist/clients/tree-sitter-query-loader.js +0 -318
  455. package/extensions/dm-lens/dist/clients/tree-sitter-shared.js +0 -87
  456. package/extensions/dm-lens/dist/clients/tree-sitter-symbol-extractor.js +0 -957
  457. package/extensions/dm-lens/dist/clients/trivy-client.js +0 -305
  458. package/extensions/dm-lens/dist/clients/tui-fit.js +0 -26
  459. package/extensions/dm-lens/dist/clients/turn-context.js +0 -48
  460. package/extensions/dm-lens/dist/clients/turn-end/lane.js +0 -1
  461. package/extensions/dm-lens/dist/clients/turn-end/lanes/govulncheck.js +0 -54
  462. package/extensions/dm-lens/dist/clients/turn-end/lanes/secrets.js +0 -131
  463. package/extensions/dm-lens/dist/clients/turn-summary-render.js +0 -56
  464. package/extensions/dm-lens/dist/clients/turn-summary.js +0 -84
  465. package/extensions/dm-lens/dist/clients/typos-config.js +0 -9
  466. package/extensions/dm-lens/dist/clients/user-notify.js +0 -15
  467. package/extensions/dm-lens/dist/clients/vanished-instance-marker.js +0 -18
  468. package/extensions/dm-lens/dist/clients/warm-attach.js +0 -210
  469. package/extensions/dm-lens/dist/clients/widget-state.js +0 -963
  470. package/extensions/dm-lens/dist/clients/word-index-logger.js +0 -21
  471. package/extensions/dm-lens/dist/clients/word-index-store.js +0 -222
  472. package/extensions/dm-lens/dist/clients/word-index.js +0 -1426
  473. package/extensions/dm-lens/dist/clients/workspace-topology.js +0 -261
  474. package/extensions/dm-lens/dist/clients/write-ordering-guard.js +0 -24
  475. package/extensions/dm-lens/dist/clients/zizmor-config.js +0 -160
  476. package/extensions/dm-lens/dist/i18n.js +0 -67
  477. package/extensions/dm-lens/dist/index.js +0 -1782
  478. package/extensions/dm-lens/dist/mcp/analyze-cli.js +0 -178
  479. package/extensions/dm-lens/dist/mcp/build-staleness.js +0 -55
  480. package/extensions/dm-lens/dist/mcp/cli.js +0 -78
  481. package/extensions/dm-lens/dist/mcp/server.js +0 -1208
  482. package/extensions/dm-lens/dist/mcp/worker.js +0 -33
  483. package/extensions/dm-lens/dist/scripts/lib/process-scan.mjs +0 -256
  484. package/extensions/dm-lens/dist/scripts/lib/skills-predicate.mjs +0 -53
  485. package/extensions/dm-lens/dist/scripts/lib/web-tree-sitter-dir.mjs +0 -45
  486. package/extensions/dm-lens/dist/tools/activate-tools.js +0 -61
  487. package/extensions/dm-lens/dist/tools/ast-grep-outline.js +0 -127
  488. package/extensions/dm-lens/dist/tools/ast-grep-replace.js +0 -226
  489. package/extensions/dm-lens/dist/tools/ast-grep-search.js +0 -687
  490. package/extensions/dm-lens/dist/tools/effective-config.js +0 -59
  491. package/extensions/dm-lens/dist/tools/lens-diagnostic-mark.js +0 -240
  492. package/extensions/dm-lens/dist/tools/lens-diagnostics.js +0 -1484
  493. package/extensions/dm-lens/dist/tools/lsp-diagnostics.js +0 -1088
  494. package/extensions/dm-lens/dist/tools/lsp-navigation.js +0 -1194
  495. package/extensions/dm-lens/dist/tools/lsp-structured-output.js +0 -277
  496. package/extensions/dm-lens/dist/tools/module-report.js +0 -332
  497. package/extensions/dm-lens/dist/tools/project-report.js +0 -72
  498. package/extensions/dm-lens/dist/tools/render-compact.js +0 -272
  499. package/extensions/dm-lens/dist/tools/scan-progress.js +0 -31
  500. package/extensions/dm-lens/dist/tools/shared.js +0 -26
  501. package/extensions/dm-lens/dist/tools/symbol-search.js +0 -133
  502. package/extensions/dm-mcp-adapter/dist/abort.js +0 -35
  503. package/extensions/dm-mcp-adapter/dist/agent-dir.js +0 -45
  504. package/extensions/dm-mcp-adapter/dist/agent-plugin-loader.js +0 -392
  505. package/extensions/dm-mcp-adapter/dist/agent-plugin-provenance.js +0 -26
  506. package/extensions/dm-mcp-adapter/dist/bearer-command-resolver.js +0 -182
  507. package/extensions/dm-mcp-adapter/dist/claude-plugin-loader.js +0 -350
  508. package/extensions/dm-mcp-adapter/dist/config.js +0 -1310
  509. package/extensions/dm-mcp-adapter/dist/consent-manager.js +0 -84
  510. package/extensions/dm-mcp-adapter/dist/elicitation-handler.js +0 -308
  511. package/extensions/dm-mcp-adapter/dist/errors.js +0 -225
  512. package/extensions/dm-mcp-adapter/dist/http-ca.js +0 -71
  513. package/extensions/dm-mcp-adapter/dist/jev-client.js +0 -359
  514. package/extensions/dm-mcp-adapter/dist/jev-contracts.js +0 -1
  515. package/extensions/dm-mcp-adapter/dist/jev-key-store.js +0 -176
  516. package/extensions/dm-mcp-adapter/dist/json-schema-validator.js +0 -70
  517. package/extensions/dm-mcp-adapter/dist/lifecycle.js +0 -387
  518. package/extensions/dm-mcp-adapter/dist/logger.js +0 -115
  519. package/extensions/dm-mcp-adapter/dist/mcp-auth-fetch.js +0 -86
  520. package/extensions/dm-mcp-adapter/dist/mcp-auth-flow.js +0 -949
  521. package/extensions/dm-mcp-adapter/dist/mcp-auth.js +0 -997
  522. package/extensions/dm-mcp-adapter/dist/mcp-bearer-store.js +0 -182
  523. package/extensions/dm-mcp-adapter/dist/mcp-callback-server.js +0 -381
  524. package/extensions/dm-mcp-adapter/dist/mcp-oauth-provider.js +0 -524
  525. package/extensions/dm-mcp-adapter/dist/mcp-probe.js +0 -151
  526. package/extensions/dm-mcp-adapter/dist/mcp-tasks.js +0 -300
  527. package/extensions/dm-mcp-adapter/dist/mcp-trace.js +0 -215
  528. package/extensions/dm-mcp-adapter/dist/metadata-cache.js +0 -267
  529. package/extensions/dm-mcp-adapter/dist/npx-resolver.js +0 -465
  530. package/extensions/dm-mcp-adapter/dist/package-mcp-loader.js +0 -135
  531. package/extensions/dm-mcp-adapter/dist/request-headers-command.js +0 -294
  532. package/extensions/dm-mcp-adapter/dist/resource-tools.js +0 -7
  533. package/extensions/dm-mcp-adapter/dist/runtime-owner.js +0 -94
  534. package/extensions/dm-mcp-adapter/dist/sampling-handler.js +0 -213
  535. package/extensions/dm-mcp-adapter/dist/secure-keyring.js +0 -191
  536. package/extensions/dm-mcp-adapter/dist/server-manager.js +0 -1514
  537. package/extensions/dm-mcp-adapter/dist/session-approvals.js +0 -127
  538. package/extensions/dm-mcp-adapter/dist/session-recovery.js +0 -82
  539. package/extensions/dm-mcp-adapter/dist/state.js +0 -1
  540. package/extensions/dm-mcp-adapter/dist/types.js +0 -286
  541. package/extensions/dm-mcp-adapter/dist/ui-app-bridge-helpers.js +0 -36
  542. package/extensions/dm-mcp-adapter/dist/ui-resource-handler.js +0 -204
  543. package/extensions/dm-mcp-adapter/dist/ui-stream-types.js +0 -58
  544. package/extensions/dm-mcp-adapter/dist/ui-tool-visibility.js +0 -26
  545. package/extensions/dm-mcp-adapter/dist/unix-socket-transport.js +0 -83
  546. package/extensions/dm-mcp-adapter/dist/utils.js +0 -382
@@ -1,817 +0,0 @@
1
- import { randomBytes } from "node:crypto";
2
- import * as fs from "node:fs";
3
- import * as path from "node:path";
4
- import { logCascade } from "./cascade-logger.js";
5
- import { appendProjectChange } from "./project-changes.js";
6
- import { normalizeMapKey, pathsEqual } from "./path-utils.js";
7
- import { PathKeyedMap } from "./path-keyed-map.js";
8
- import { BoundedLruCache } from "./bounded-cache.js";
9
- import { PartialApplyRecordStore } from "./partial-edit-apply.js";
10
- import { ReadGuard } from "./read-guard.js";
11
- import { RUNTIME_CONFIG } from "./runtime-config.js";
12
- import { TurnSummaryCollector } from "./turn-summary.js";
13
- import { deriveProviderFromModelId } from "./model-provider.js";
14
- import { beginTurnContext, setTurnContextSession } from "./turn-context.js";
15
- import { recordDegradationOnce } from "./degradation-ledger.js";
16
- export const MAX_PENDING_CASCADE_RUNS = 32;
17
- const MAX_MUTATION_RECEIPTS = 512;
18
- const TOOL_CALL_ATTRIBUTION_CAPACITY = 256;
19
- const TOOL_CALL_ATTRIBUTION_TTL_MS = 5 * 60000;
20
-
21
- export class RuntimeCoordinator {
22
- _projectRoot = normalizeMapKey(process.cwd());
23
- _sessionGeneration = 0;
24
- _sessionStartedAt = Date.now();
25
- _errorDebtBaseline = null;
26
- _pipelineCrashCounts = new Map;
27
- _cachedExports = new Map;
28
- _startupScansInFlight = new Map;
29
- _cascadeRuns = [];
30
- _turnEndCascadeSettleStarts = new Map;
31
- _nextCascadeSettleToken = 0;
32
- _pendingCascadeRuns = [];
33
- _cascadeSessionStats = {
34
- runs: 0,
35
- diagnosticsSurfaced: 0,
36
- coldSnapshotTouches: 0
37
- };
38
- _complexityBaselines = new Map;
39
- _fixedThisTurn = new PathKeyedMap(normalizeMapKey);
40
- _writtenThisTurn = new PathKeyedMap(normalizeMapKey);
41
- _autofixDemotedThisTurn = new PathKeyedMap(normalizeMapKey);
42
- _reportedThisTurn = new Set;
43
- _mutationReceipts = [];
44
- _droppedMutationReceipts = 0;
45
- _projectRulesScan = {
46
- rules: [],
47
- hasCustomRules: false
48
- };
49
- _telemetrySessionId = `lens-${Date.now().toString(36)}`;
50
- _lifecycleReason;
51
- _hasStableSessionId = false;
52
- _telemetryModel = "unknown";
53
- _telemetryModelId = "";
54
- _telemetryProvider = "";
55
- _telemetryProviderIsExplicit = false;
56
- _turnIndex = 0;
57
- _writeIndex = 0;
58
- _projectSeq = 0;
59
- _turnStartProjectSeq = 0;
60
- _fileSeq = new Map;
61
- _fileLastProjectSeq = new Map;
62
- _gitGuardHasBlockers = false;
63
- _gitGuardSummary = "";
64
- _gitGuardCacheUnknownReason;
65
- callGraph = null;
66
- wordIndex = null;
67
- _readGuard = null;
68
- _pendingDeferredMutations = new PathKeyedMap(normalizeMapKey);
69
- _toolCallAttributions = new BoundedLruCache(TOOL_CALL_ATTRIBUTION_CAPACITY);
70
- _lspReadWarmState = new Map;
71
- _pendingInlineBlockers = new PathKeyedMap(normalizeMapKey);
72
- _actionableWarningsThisTurn = new Map;
73
- _codeQualityWarningsThisTurn = new Map;
74
- _turnSummary = new TurnSummaryCollector;
75
- partialApplyRecords = new PartialApplyRecordStore;
76
- resetForSession(startedAt = Date.now()) {
77
- this._sessionGeneration += 1;
78
- this._sessionStartedAt = startedAt;
79
- this._complexityBaselines.clear();
80
- this._pipelineCrashCounts.clear();
81
- this._cachedExports.clear();
82
- this.wordIndex = null;
83
- this._startupScansInFlight.clear();
84
- this._cascadeRuns = [];
85
- this._pendingCascadeRuns = [];
86
- this._turnEndCascadeSettleStarts.clear();
87
- this._cascadeSessionStats = {
88
- runs: 0,
89
- diagnosticsSurfaced: 0,
90
- coldSnapshotTouches: 0
91
- };
92
- this._fixedThisTurn.clear();
93
- this._writtenThisTurn.clear();
94
- this._autofixDemotedThisTurn.clear();
95
- this._reportedThisTurn.clear();
96
- this._mutationReceipts = [];
97
- this._droppedMutationReceipts = 0;
98
- this._telemetrySessionId = `lens-${Date.now().toString(36)}-${randomBytes(4).toString("hex")}`;
99
- this._hasStableSessionId = false;
100
- this._telemetryModel = "unknown";
101
- this._telemetryModelId = "";
102
- this._telemetryProvider = "";
103
- this._telemetryProviderIsExplicit = false;
104
- this._turnIndex = 0;
105
- this._writeIndex = 0;
106
- this._projectSeq = 0;
107
- this._turnStartProjectSeq = 0;
108
- this._fileSeq.clear();
109
- this._fileLastProjectSeq.clear();
110
- this._gitGuardHasBlockers = false;
111
- this._gitGuardSummary = "";
112
- this._gitGuardCacheUnknownReason = undefined;
113
- this._readGuard = null;
114
- this._pendingDeferredMutations.clear();
115
- this._toolCallAttributions.clear();
116
- this._lspReadWarmState.clear();
117
- this._pendingInlineBlockers.clear();
118
- this._actionableWarningsThisTurn.clear();
119
- this._codeQualityWarningsThisTurn.clear();
120
- this._turnSummary.clear();
121
- this.partialApplyRecords.clear();
122
- }
123
- get sessionStartedAt() {
124
- return this._sessionStartedAt;
125
- }
126
- get cascadeSessionStats() {
127
- return this._cascadeSessionStats;
128
- }
129
- recordCascadeRun(diagnosticsSurfaced, coldSnapshotTouches) {
130
- this._cascadeSessionStats.runs += 1;
131
- this._cascadeSessionStats.diagnosticsSurfaced += diagnosticsSurfaced;
132
- this._cascadeSessionStats.coldSnapshotTouches += coldSnapshotTouches;
133
- }
134
- applyInlineBlockerPolicyVerdicts(suppressedFilePaths) {
135
- const suppressed = new Set(suppressedFilePaths.map((filePath) => path.resolve(filePath)));
136
- let changed = 0;
137
- for (const [key, entry] of this._pendingInlineBlockers.entries()) {
138
- const policySuppressed = suppressed.has(path.resolve(entry.filePath));
139
- if (!!entry.policySuppressed === policySuppressed)
140
- continue;
141
- this._pendingInlineBlockers.set(key, { ...entry, policySuppressed });
142
- changed += 1;
143
- }
144
- return changed;
145
- }
146
- updateGitGuardStatus(hasBlockers, output) {
147
- const blocking = this.getInlineBlockersSnapshot().filter((entry) => !entry.policySuppressed);
148
- this._gitGuardHasBlockers = hasBlockers || blocking.length > 0;
149
- if (!this._gitGuardHasBlockers) {
150
- this._gitGuardSummary = "";
151
- return;
152
- }
153
- const firstLine = output.split(`
154
- `).map((line) => line.trim()).find((line) => line.length > 0);
155
- const summaries = blocking.map((entry) => entry.summary.trim()).filter(Boolean);
156
- this._gitGuardSummary = (summaries[0] ?? firstLine ?? "Unresolved blockers detected").slice(0, 160);
157
- }
158
- get gitGuardHasBlockers() {
159
- return this._gitGuardHasBlockers;
160
- }
161
- get gitGuardSummary() {
162
- return this._gitGuardSummary;
163
- }
164
- markGitGuardCacheUnknown(reason) {
165
- this._gitGuardCacheUnknownReason = reason;
166
- }
167
- clearGitGuardCacheUnknown() {
168
- this._gitGuardCacheUnknownReason = undefined;
169
- }
170
- get gitGuardCacheUnknownReason() {
171
- return this._gitGuardCacheUnknownReason;
172
- }
173
- beginTurn() {
174
- this._cascadeRuns = this._cascadeRuns.flatMap((run) => {
175
- const carriedTurns = (run.carriedTurns ?? 0) + 1;
176
- if (carriedTurns > 1) {
177
- logCascade({
178
- phase: "cascade_carry_over_drop",
179
- filePath: run.filePath,
180
- neighborCount: run.neighborCount,
181
- diagnosticCount: run.diagnosticCount,
182
- metadata: { carriedTurns, turnIndex: this._turnIndex }
183
- });
184
- return [];
185
- }
186
- return [{ ...run, carriedTurns }];
187
- });
188
- this._actionableWarningsThisTurn.clear();
189
- this._codeQualityWarningsThisTurn.clear();
190
- this._turnStartProjectSeq = this._projectSeq;
191
- this._turnIndex += 1;
192
- beginTurnContext(this._telemetrySessionId);
193
- this._writeIndex = 0;
194
- this._reportedThisTurn.clear();
195
- this._writtenThisTurn.clear();
196
- this._autofixDemotedThisTurn.clear();
197
- }
198
- recordProjectMutation(args) {
199
- const { projectSeq, fileSeq, key } = this.bumpFileSeq(args.filePath);
200
- if (this._mutationReceipts.length >= MAX_MUTATION_RECEIPTS) {
201
- this._mutationReceipts.shift();
202
- this._droppedMutationReceipts += 1;
203
- }
204
- this._mutationReceipts.push({
205
- seq: projectSeq,
206
- filePath: key,
207
- source: args.source,
208
- turnIndex: this._turnIndex,
209
- ts: Date.now()
210
- });
211
- if (args.cwd !== undefined) {
212
- try {
213
- appendProjectChange(args.cwd, {
214
- seq: projectSeq,
215
- timestamp: new Date().toISOString(),
216
- sessionId: this.telemetrySessionId,
217
- turnIndex: this.turnIndex,
218
- source: args.source,
219
- filePath: path.resolve(args.filePath),
220
- fileSeq,
221
- changedRange: args.changedRange
222
- });
223
- } catch (err) {
224
- args.onAppendError?.(err);
225
- }
226
- }
227
- return { projectSeq, fileSeq };
228
- }
229
- getMutationsSince(seq) {
230
- return this._mutationReceipts.filter((r) => r.seq > seq).map((r) => ({ ...r }));
231
- }
232
- get droppedMutationReceiptCount() {
233
- return this._droppedMutationReceipts;
234
- }
235
- recordMutationToolReceipt(filePath, kind) {
236
- if (kind === "write") {
237
- this._writtenThisTurn.set(filePath, true);
238
- } else if (this._writtenThisTurn.has(filePath)) {
239
- this._autofixDemotedThisTurn.set(filePath, true);
240
- this._fixedThisTurn.delete(filePath);
241
- }
242
- return {
243
- autofixMode: kind === "edit" || this._autofixDemotedThisTurn.has(filePath) ? "deferred" : "immediate"
244
- };
245
- }
246
- get reportedThisTurn() {
247
- return this._reportedThisTurn;
248
- }
249
- nextWriteIndex() {
250
- this._writeIndex += 1;
251
- return this._writeIndex;
252
- }
253
- peekWriteIndex() {
254
- return this._writeIndex;
255
- }
256
- setTelemetryIdentity(identity) {
257
- if (identity.sessionId && identity.sessionId.trim()) {
258
- this._telemetrySessionId = identity.sessionId.trim();
259
- setTurnContextSession(this._telemetrySessionId);
260
- }
261
- const model = identity.model?.trim();
262
- const provider = identity.provider?.trim();
263
- if (model && provider) {
264
- this._telemetryModel = `${provider}/${model}`;
265
- } else if (model) {
266
- this._telemetryModel = model;
267
- } else if (provider) {
268
- this._telemetryModel = provider;
269
- }
270
- if (model)
271
- this._telemetryModelId = model;
272
- if (provider) {
273
- this._telemetryProvider = provider;
274
- this._telemetryProviderIsExplicit = true;
275
- } else if (model && !this._telemetryProviderIsExplicit) {
276
- this._telemetryProvider = deriveProviderFromModelId(model);
277
- }
278
- }
279
- get telemetrySessionId() {
280
- return this._telemetrySessionId;
281
- }
282
- setSessionLifecycle(args) {
283
- if (args.sessionId && args.sessionId.trim()) {
284
- this._telemetrySessionId = args.sessionId.trim();
285
- this._hasStableSessionId = true;
286
- }
287
- this._lifecycleReason = args.reason;
288
- }
289
- get sessionLifecycleReason() {
290
- return this._lifecycleReason;
291
- }
292
- get hasStableSessionId() {
293
- return this._hasStableSessionId;
294
- }
295
- get telemetryModel() {
296
- return this._telemetryModel;
297
- }
298
- get telemetryModelId() {
299
- return this._telemetryModelId;
300
- }
301
- get telemetryProviderId() {
302
- return this._telemetryProvider;
303
- }
304
- get turnIndex() {
305
- return this._turnIndex;
306
- }
307
- get projectSeq() {
308
- return this._projectSeq;
309
- }
310
- get turnStartProjectSeq() {
311
- return this._turnStartProjectSeq;
312
- }
313
- seedProjectSequence(projectSeq, fileSeqByPath) {
314
- this._projectSeq = Math.max(0, Math.floor(projectSeq));
315
- this._turnStartProjectSeq = this._projectSeq;
316
- this._fileSeq.clear();
317
- this._fileLastProjectSeq.clear();
318
- for (const [filePath, seq] of fileSeqByPath ?? []) {
319
- this._fileSeq.set(normalizeMapKey(path.resolve(filePath)), Math.max(0, seq));
320
- }
321
- }
322
- bumpFileSeq(filePath) {
323
- const key = normalizeMapKey(path.resolve(filePath));
324
- this._projectSeq += 1;
325
- const fileSeq = (this._fileSeq.get(key) ?? 0) + 1;
326
- this._fileSeq.set(key, fileSeq);
327
- this._fileLastProjectSeq.set(key, this._projectSeq);
328
- return { projectSeq: this._projectSeq, fileSeq, key };
329
- }
330
- getFilesChangedSince(seq) {
331
- const changed = [];
332
- for (const [key, lastSeq] of this._fileLastProjectSeq) {
333
- if (lastSeq > seq)
334
- changed.push(key);
335
- }
336
- return changed;
337
- }
338
- getFileSeq(filePath) {
339
- return this._fileSeq.get(normalizeMapKey(path.resolve(filePath))) ?? 0;
340
- }
341
- getFileSeqEntries() {
342
- return [...this._fileSeq.entries()];
343
- }
344
- get sessionGeneration() {
345
- return this._sessionGeneration;
346
- }
347
- isCurrentSession(generation) {
348
- return this._sessionGeneration === generation;
349
- }
350
- markStartupScanInFlight(name, generation) {
351
- this._startupScansInFlight.set(name, generation);
352
- }
353
- clearStartupScanInFlight(name, generation) {
354
- const owner = this._startupScansInFlight.get(name);
355
- if (owner === generation) {
356
- this._startupScansInFlight.delete(name);
357
- }
358
- }
359
- isStartupScanInFlight(name) {
360
- return this._startupScansInFlight.has(name);
361
- }
362
- formatPipelineCrashNotice(filePath, err) {
363
- const key = path.resolve(filePath);
364
- const count = (this._pipelineCrashCounts.get(key) ?? 0) + 1;
365
- this._pipelineCrashCounts.set(key, count);
366
- const message = err instanceof Error ? err.message : String(err);
367
- const shortMessage = message.split(`
368
- `)[0].slice(0, 220);
369
- const shouldSurface = count <= RUNTIME_CONFIG.crashNotice.alwaysShowFirstN || count % RUNTIME_CONFIG.crashNotice.showEveryNth === 0;
370
- if (!shouldSurface)
371
- return "";
372
- return [
373
- "⚠️ dm-lens pipeline crashed while analyzing this write.",
374
- `File: ${path.basename(filePath)} | crash count this session: ${count}`,
375
- `Error: ${shortMessage}`,
376
- "Recovery: LSP service was reset. If this repeats, rerun with --no-lsp and report the file + stack."
377
- ].join(`
378
- `);
379
- }
380
- getCrashEntries() {
381
- return Array.from(this._pipelineCrashCounts.entries());
382
- }
383
- get projectRoot() {
384
- return this._projectRoot;
385
- }
386
- set projectRoot(value) {
387
- this._projectRoot = normalizeMapKey(value);
388
- }
389
- get errorDebtBaseline() {
390
- return this._errorDebtBaseline;
391
- }
392
- set errorDebtBaseline(value) {
393
- this._errorDebtBaseline = value;
394
- }
395
- get cachedExports() {
396
- return this._cachedExports;
397
- }
398
- appendCascadeRun(run) {
399
- this._cascadeRuns.push(run);
400
- }
401
- appendCascadePromise(p) {
402
- if (this._pendingCascadeRuns.length < MAX_PENDING_CASCADE_RUNS) {
403
- this._pendingCascadeRuns.push(p);
404
- return;
405
- }
406
- recordDegradationOnce({
407
- kind: "cascade-pending-cap",
408
- subject: "runtime-coordinator",
409
- reason: `deferred cascade admission capped at ${MAX_PENDING_CASCADE_RUNS}`
410
- });
411
- p.then((run) => this.appendCascadeRun(run)).catch(() => {});
412
- }
413
- getTurnEndCascadeSettleStart() {
414
- let latest;
415
- for (const start of this._turnEndCascadeSettleStarts.values())
416
- latest = start;
417
- return latest;
418
- }
419
- async settleCascadeRuns(maxWaitMs, settleOptions = {}) {
420
- const pending = this._pendingCascadeRuns;
421
- if (pending.length === 0)
422
- return { settled: 0, timedOut: 0 };
423
- this._pendingCascadeRuns = [];
424
- const settleToken = settleOptions.trackTurnEndClock ? ++this._nextCascadeSettleToken : undefined;
425
- if (settleToken !== undefined) {
426
- this._turnEndCascadeSettleStarts.set(settleToken, Date.now());
427
- }
428
- try {
429
- const tracked = pending.map((p) => {
430
- const entry = { done: false, promise: p };
431
- entry.promise = p.then((run) => {
432
- entry.done = true;
433
- entry.run = run;
434
- return run;
435
- });
436
- return entry;
437
- });
438
- const timeout = new Promise((resolve) => {
439
- setTimeout(resolve, maxWaitMs).unref?.();
440
- });
441
- await Promise.race([
442
- Promise.allSettled(tracked.map((t) => t.promise)),
443
- timeout
444
- ]);
445
- let settled = 0;
446
- let timedOut = 0;
447
- for (const entry of tracked) {
448
- if (entry.done && entry.run) {
449
- this.appendCascadeRun(entry.run);
450
- settled += 1;
451
- } else {
452
- this._pendingCascadeRuns.push(entry.promise);
453
- timedOut += 1;
454
- }
455
- }
456
- return { settled, timedOut };
457
- } finally {
458
- if (settleToken !== undefined) {
459
- this._turnEndCascadeSettleStarts.delete(settleToken);
460
- }
461
- }
462
- }
463
- consumeCascadeRuns() {
464
- const runs = this._cascadeRuns;
465
- this._cascadeRuns = [];
466
- return runs;
467
- }
468
- hasCascadeRuns() {
469
- return this._cascadeRuns.length > 0;
470
- }
471
- recordInlineBlockers(filePath, summary, writeIndex, sources, lines, contentBaseline, diagnostics) {
472
- const recordedAtMs = Date.now();
473
- this._pendingInlineBlockers.set(path.resolve(filePath), {
474
- filePath,
475
- summary,
476
- writeIndex,
477
- sources,
478
- lines,
479
- diagnostics,
480
- recordedAtMs,
481
- stale: false,
482
- ...contentBaseline ? {
483
- recordedSize: contentBaseline.size,
484
- recordedHash: contentBaseline.sha256
485
- } : {}
486
- });
487
- return recordedAtMs;
488
- }
489
- clearInlineBlockers(filePath) {
490
- this._pendingInlineBlockers.delete(path.resolve(filePath));
491
- }
492
- markInlineBlockerStale(filePath, reason = "dependency-drift") {
493
- const key = path.resolve(filePath);
494
- const existing = this._pendingInlineBlockers.get(key);
495
- if (!existing || existing.stale)
496
- return false;
497
- this._pendingInlineBlockers.set(key, {
498
- ...existing,
499
- stale: true,
500
- staleReason: reason
501
- });
502
- return true;
503
- }
504
- setInlineBlockerPastEofStale(filePath, isPastEof) {
505
- const key = path.resolve(filePath);
506
- const existing = this._pendingInlineBlockers.get(key);
507
- if (!existing)
508
- return false;
509
- if (existing.stale && existing.staleReason !== "past-eof")
510
- return false;
511
- const currentlyPastEof = !!existing.stale && existing.staleReason === "past-eof";
512
- if (currentlyPastEof === isPastEof)
513
- return false;
514
- this._pendingInlineBlockers.set(key, {
515
- ...existing,
516
- stale: isPastEof,
517
- staleReason: isPastEof ? "past-eof" : undefined
518
- });
519
- return true;
520
- }
521
- setInlineBlockerSelfDriftStale(filePath, isSelfDrift) {
522
- const key = path.resolve(filePath);
523
- const existing = this._pendingInlineBlockers.get(key);
524
- if (!existing)
525
- return false;
526
- if (existing.stale && existing.staleReason !== "self-drift")
527
- return false;
528
- const currentlySelfDrift = !!existing.stale && existing.staleReason === "self-drift";
529
- if (currentlySelfDrift === isSelfDrift)
530
- return false;
531
- const { staleReason: _cleared, ...rest } = existing;
532
- this._pendingInlineBlockers.set(key, {
533
- ...rest,
534
- stale: isSelfDrift,
535
- ...isSelfDrift ? { staleReason: "self-drift" } : {}
536
- });
537
- return true;
538
- }
539
- retireDemotedPastEofBlocker(filePath, deadLines) {
540
- if (deadLines.length === 0)
541
- return false;
542
- const key = path.resolve(filePath);
543
- const existing = this._pendingInlineBlockers.get(key);
544
- if (!existing)
545
- return false;
546
- if (!existing.stale)
547
- return false;
548
- if ((existing.staleReason ?? "past-eof") !== "past-eof")
549
- return false;
550
- this._pendingInlineBlockers.delete(key);
551
- return true;
552
- }
553
- peekInlineBlockerStaleDeliveryCount(filePath) {
554
- const key = path.resolve(filePath);
555
- return this._pendingInlineBlockers.get(key)?.staleDeliveryCount ?? 0;
556
- }
557
- incrementInlineBlockerStaleDelivery(filePath) {
558
- const key = path.resolve(filePath);
559
- const existing = this._pendingInlineBlockers.get(key);
560
- if (!existing)
561
- return 0;
562
- const next = (existing.staleDeliveryCount ?? 0) + 1;
563
- this._pendingInlineBlockers.set(key, {
564
- ...existing,
565
- staleDeliveryCount: next
566
- });
567
- return next;
568
- }
569
- retireDemotedDependencyDriftBlocker(filePath) {
570
- const key = path.resolve(filePath);
571
- const existing = this._pendingInlineBlockers.get(key);
572
- if (!existing)
573
- return false;
574
- if (!existing.stale)
575
- return false;
576
- if (existing.staleReason !== "dependency-drift")
577
- return false;
578
- this._pendingInlineBlockers.delete(key);
579
- return true;
580
- }
581
- retireInlineBlockerOnConfirmedClean(filePath, confirmedAtWriteIndex, coveredSources) {
582
- const key = path.resolve(filePath);
583
- const existing = this._pendingInlineBlockers.get(key);
584
- if (!existing)
585
- return false;
586
- if (existing.writeIndex !== undefined && confirmedAtWriteIndex !== undefined && confirmedAtWriteIndex <= existing.writeIndex) {
587
- return false;
588
- }
589
- if (!existing.sources || existing.sources.length === 0)
590
- return false;
591
- const covered = new Set(coveredSources ?? []);
592
- if (!existing.sources.every((source) => covered.has(source)))
593
- return false;
594
- this._pendingInlineBlockers.delete(key);
595
- return true;
596
- }
597
- reconcileInlineBlockers() {
598
- const survivors = [];
599
- for (const [displayPath, value] of this._pendingInlineBlockers.entries()) {
600
- if (fs.existsSync(displayPath))
601
- survivors.push([displayPath, value]);
602
- }
603
- if (survivors.length !== this._pendingInlineBlockers.size) {
604
- this._pendingInlineBlockers.clear();
605
- for (const [displayPath, value] of survivors) {
606
- this._pendingInlineBlockers.set(displayPath, value);
607
- }
608
- }
609
- }
610
- getInlineBlockersSnapshot() {
611
- this.reconcileInlineBlockers();
612
- return [...this._pendingInlineBlockers.values()];
613
- }
614
- consumeInlineBlockers() {
615
- const entries = this.getInlineBlockersSnapshot();
616
- this._pendingInlineBlockers.clear();
617
- return entries;
618
- }
619
- recordActionableWarnings(warnings) {
620
- for (const warning of warnings) {
621
- this._actionableWarningsThisTurn.set(warning.id, warning);
622
- }
623
- }
624
- peekActionableWarnings() {
625
- return [...this._actionableWarningsThisTurn.values()];
626
- }
627
- clearActionableWarnings() {
628
- this._actionableWarningsThisTurn.clear();
629
- }
630
- recordCodeQualityWarnings(warnings) {
631
- for (const warning of warnings) {
632
- this._codeQualityWarningsThisTurn.set(warning.id, warning);
633
- }
634
- }
635
- peekCodeQualityWarnings() {
636
- return [...this._codeQualityWarningsThisTurn.values()];
637
- }
638
- clearCodeQualityWarnings() {
639
- this._codeQualityWarningsThisTurn.clear();
640
- }
641
- get turnSummary() {
642
- return this._turnSummary;
643
- }
644
- get complexityBaselines() {
645
- return this._complexityBaselines;
646
- }
647
- get fixedThisTurn() {
648
- const facade = {
649
- add: (filePath) => {
650
- this._fixedThisTurn.set(filePath, true);
651
- return facade;
652
- },
653
- has: (filePath) => this._fixedThisTurn.has(filePath),
654
- delete: (filePath) => this._fixedThisTurn.delete(filePath),
655
- clear: () => this._fixedThisTurn.clear()
656
- };
657
- return facade;
658
- }
659
- get projectRulesScan() {
660
- return this._projectRulesScan;
661
- }
662
- set projectRulesScan(value) {
663
- this._projectRulesScan = value;
664
- }
665
- get readGuard() {
666
- this._readGuard ??= new ReadGuard(this._telemetrySessionId);
667
- return this._readGuard;
668
- }
669
- recordToolCallAttribution(toolCallId, attribution) {
670
- this._toolCallAttributions.set(toolCallId, {
671
- ...attribution,
672
- recordedAt: Date.now()
673
- });
674
- }
675
- takeToolCallAttribution(toolCallId) {
676
- const attribution = this._toolCallAttributions.get(toolCallId);
677
- if (attribution === undefined)
678
- return;
679
- this._toolCallAttributions.delete(toolCallId);
680
- if (Date.now() - attribution.recordedAt > TOOL_CALL_ATTRIBUTION_TTL_MS) {
681
- return;
682
- }
683
- return attribution;
684
- }
685
- deferMutation(filePath, cwd, toolName, turnStateCwd, kind, ownerSessionId, originCwd) {
686
- const key = path.resolve(filePath);
687
- const now = Date.now();
688
- const resolvedOriginCwd = originCwd ?? turnStateCwd;
689
- const existing = this._pendingDeferredMutations.get(key);
690
- if (existing) {
691
- const addedKind = !existing.kinds.has(kind);
692
- existing.lastTouchedAt = now;
693
- existing.cwd = cwd;
694
- existing.turnStateCwd = turnStateCwd;
695
- existing.toolNames.add(toolName);
696
- existing.kinds.add(kind);
697
- existing.queuedTurnIndex = this._turnIndex;
698
- existing.queuedTurnId = `${this._telemetrySessionId}:${this._turnIndex}`;
699
- existing.ownerSessionId = ownerSessionId;
700
- existing.originCwd = resolvedOriginCwd;
701
- return addedKind;
702
- }
703
- this._pendingDeferredMutations.set(key, {
704
- filePath: key,
705
- cwd,
706
- turnStateCwd,
707
- firstTouchedAt: now,
708
- lastTouchedAt: now,
709
- toolNames: new Set([toolName]),
710
- kinds: new Set([kind]),
711
- queuedTurnIndex: this._turnIndex,
712
- queuedTurnId: `${this._telemetrySessionId}:${this._turnIndex}`,
713
- ownerSessionId,
714
- originCwd: resolvedOriginCwd
715
- });
716
- return true;
717
- }
718
- deferFormat(filePath, cwd, toolName, turnStateCwd, ownerSessionId, originCwd) {
719
- return this.deferMutation(filePath, cwd, toolName, turnStateCwd, "format", ownerSessionId, originCwd);
720
- }
721
- get pendingDeferredFormatCount() {
722
- return this._pendingDeferredMutations.size;
723
- }
724
- get pendingDeferredMutationCount() {
725
- return this._pendingDeferredMutations.size;
726
- }
727
- consumeDeferredFormatFiles() {
728
- const records = [...this._pendingDeferredMutations.values()];
729
- this._pendingDeferredMutations.clear();
730
- return records;
731
- }
732
- claimDeferredFormatFiles(currentSessionId, now, staleAfterMs, currentOriginCwd) {
733
- const claimed = [];
734
- const staleClaimed = [];
735
- const deferredToOwner = [];
736
- const droppedOrphans = [];
737
- for (const [key, record] of this._pendingDeferredMutations) {
738
- const sameSession = record.ownerSessionId === undefined || currentSessionId === undefined || record.ownerSessionId === currentSessionId;
739
- if (sameSession) {
740
- claimed.push(record);
741
- this._pendingDeferredMutations.delete(key);
742
- continue;
743
- }
744
- const age = now - record.lastTouchedAt;
745
- if (age > staleAfterMs) {
746
- const originMatches = currentOriginCwd === undefined || pathsEqual(record.originCwd, currentOriginCwd);
747
- if (originMatches) {
748
- this._pendingDeferredMutations.delete(key);
749
- staleClaimed.push(record);
750
- } else {
751
- droppedOrphans.push(record);
752
- }
753
- continue;
754
- }
755
- deferredToOwner.push(record);
756
- }
757
- return { claimed, staleClaimed, deferredToOwner, droppedOrphans };
758
- }
759
- requeueDeferredFormatFiles(records) {
760
- for (const record of records) {
761
- const key = path.resolve(record.filePath);
762
- const existing = this._pendingDeferredMutations.get(key);
763
- if (existing) {
764
- for (const kind of record.kinds)
765
- existing.kinds.add(kind);
766
- for (const toolName of record.toolNames)
767
- existing.toolNames.add(toolName);
768
- continue;
769
- }
770
- this._pendingDeferredMutations.set(key, {
771
- ...record,
772
- kinds: new Set(record.kinds),
773
- toolNames: new Set(record.toolNames)
774
- });
775
- }
776
- }
777
- claimDeferredMutations(currentSessionId, now, staleAfterMs, currentOriginCwd) {
778
- return this.claimDeferredFormatFiles(currentSessionId, now, staleAfterMs, currentOriginCwd);
779
- }
780
- requeueDeferredMutations(records) {
781
- this.requeueDeferredFormatFiles(records);
782
- }
783
- shouldWarmLspOnRead(filePath, maxAgeMs = 120000) {
784
- const state = this._lspReadWarmState.get(path.resolve(filePath));
785
- if (!state)
786
- return true;
787
- if (state.status === "warming")
788
- return false;
789
- return Date.now() - state.ts > maxAgeMs;
790
- }
791
- markLspReadWarmStarted(filePath) {
792
- this._lspReadWarmState.set(path.resolve(filePath), {
793
- status: "warming",
794
- ts: Date.now()
795
- });
796
- }
797
- markLspReadWarmCompleted(filePath) {
798
- this._lspReadWarmState.set(path.resolve(filePath), {
799
- status: "ready",
800
- ts: Date.now()
801
- });
802
- }
803
- clearLspReadWarmState(filePath) {
804
- this._lspReadWarmState.delete(path.resolve(filePath));
805
- }
806
- }
807
- export function readHostModelIdentity(ctx) {
808
- try {
809
- const model = ctx?.model;
810
- return {
811
- model: typeof model?.id === "string" ? model.id : undefined,
812
- provider: typeof model?.provider === "string" ? model.provider : undefined
813
- };
814
- } catch {
815
- return {};
816
- }
817
- }