@duckmind/dm-linux-x64 0.65.8 → 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 (549) hide show
  1. package/dm +2 -2
  2. package/extensions/.dm-extensions.json +14 -548
  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/extension/tool-activation.js +7 -2
  8. package/extensions/dm-subagents/src/runs/background/runner-aliases.js +2 -2
  9. package/extensions/dm-subagents/src/runs/foreground/prompt-audit.js +4 -1
  10. package/extensions/dm-subagents/src/runs/shared/child-session.js +8 -6
  11. package/extensions/dm-subagents/src/runs/shared/dm-spawn.js +5 -1
  12. package/extensions/dm-subagents/src/watchdog/permission-arbiter.js +9 -1
  13. package/extensions/dm-subagents/src/watchdog/review.js +4 -1
  14. package/extensions/dm-web-access/tool-activation.js +0 -1
  15. package/package.json +1 -1
  16. package/extensions/dm-lens/dist/clients/actionable-warnings-logger.js +0 -24
  17. package/extensions/dm-lens/dist/clients/actionable-warnings.js +0 -1014
  18. package/extensions/dm-lens/dist/clients/advisory-provenance.js +0 -385
  19. package/extensions/dm-lens/dist/clients/agent-behavior-client.js +0 -94
  20. package/extensions/dm-lens/dist/clients/agent-nudge.js +0 -151
  21. package/extensions/dm-lens/dist/clients/analysed-root.js +0 -1
  22. package/extensions/dm-lens/dist/clients/ast-grep-client.js +0 -576
  23. package/extensions/dm-lens/dist/clients/ast-grep-rule-manager.js +0 -114
  24. package/extensions/dm-lens/dist/clients/ast-grep-tool-logger.js +0 -85
  25. package/extensions/dm-lens/dist/clients/ast-grep-types.js +0 -1
  26. package/extensions/dm-lens/dist/clients/ast-grep-yaml-synth.js +0 -109
  27. package/extensions/dm-lens/dist/clients/atomic-write-staging.js +0 -66
  28. package/extensions/dm-lens/dist/clients/atomic-write.js +0 -37
  29. package/extensions/dm-lens/dist/clients/availability-probe-flight.js +0 -11
  30. package/extensions/dm-lens/dist/clients/bash-file-access.js +0 -830
  31. package/extensions/dm-lens/dist/clients/biome-client.js +0 -221
  32. package/extensions/dm-lens/dist/clients/blocker-freshness.js +0 -385
  33. package/extensions/dm-lens/dist/clients/blocker-past-eof.js +0 -49
  34. package/extensions/dm-lens/dist/clients/bootstrap.js +0 -246
  35. package/extensions/dm-lens/dist/clients/bounded-cache.js +0 -105
  36. package/extensions/dm-lens/dist/clients/bounded-pid-file-lock.js +0 -173
  37. package/extensions/dm-lens/dist/clients/bounded-telemetry.js +0 -104
  38. package/extensions/dm-lens/dist/clients/build-identity.js +0 -45
  39. package/extensions/dm-lens/dist/clients/bundled-resource-health.js +0 -41
  40. package/extensions/dm-lens/dist/clients/bus-events-logger.js +0 -48
  41. package/extensions/dm-lens/dist/clients/bus-publish.js +0 -117
  42. package/extensions/dm-lens/dist/clients/cache/rule-cache.js +0 -103
  43. package/extensions/dm-lens/dist/clients/cache-manager.js +0 -340
  44. package/extensions/dm-lens/dist/clients/cache-observability.js +0 -847
  45. package/extensions/dm-lens/dist/clients/call-graph.js +0 -628
  46. package/extensions/dm-lens/dist/clients/cargo-manifest.js +0 -151
  47. package/extensions/dm-lens/dist/clients/cascade-budget.js +0 -52
  48. package/extensions/dm-lens/dist/clients/cascade-format.js +0 -160
  49. package/extensions/dm-lens/dist/clients/cascade-logger.js +0 -22
  50. package/extensions/dm-lens/dist/clients/cascade-types.js +0 -1
  51. package/extensions/dm-lens/dist/clients/child-unref.js +0 -59
  52. package/extensions/dm-lens/dist/clients/code-quality-warnings.js +0 -192
  53. package/extensions/dm-lens/dist/clients/codebase-model.js +0 -110
  54. package/extensions/dm-lens/dist/clients/collateral-test-role.js +0 -8
  55. package/extensions/dm-lens/dist/clients/complexity-client.js +0 -398
  56. package/extensions/dm-lens/dist/clients/config-core/deny.js +0 -117
  57. package/extensions/dm-lens/dist/clients/config-core/index.js +0 -2
  58. package/extensions/dm-lens/dist/clients/config-core/merge.js +0 -228
  59. package/extensions/dm-lens/dist/clients/config-core/normalize.js +0 -217
  60. package/extensions/dm-lens/dist/clients/config-core/process-spec.js +0 -147
  61. package/extensions/dm-lens/dist/clients/config-core/provenance.js +0 -54
  62. package/extensions/dm-lens/dist/clients/config-core/records.js +0 -79
  63. package/extensions/dm-lens/dist/clients/config-core/resolve.js +0 -48
  64. package/extensions/dm-lens/dist/clients/config-core/safe-object.js +0 -22
  65. package/extensions/dm-lens/dist/clients/config-core/schema.js +0 -90
  66. package/extensions/dm-lens/dist/clients/config-diagnostic-codes.js +0 -90
  67. package/extensions/dm-lens/dist/clients/config-locations.js +0 -175
  68. package/extensions/dm-lens/dist/clients/config-resolve.js +0 -359
  69. package/extensions/dm-lens/dist/clients/config-schema.js +0 -128
  70. package/extensions/dm-lens/dist/clients/config-warn.js +0 -146
  71. package/extensions/dm-lens/dist/clients/console-guard-install.js +0 -4
  72. package/extensions/dm-lens/dist/clients/cooperative-budget.js +0 -36
  73. package/extensions/dm-lens/dist/clients/dead-code-client.js +0 -342
  74. package/extensions/dm-lens/dist/clients/dead-code-logger.js +0 -18
  75. package/extensions/dm-lens/dist/clients/deadline-utils.js +0 -117
  76. package/extensions/dm-lens/dist/clients/debug-handles.js +0 -121
  77. package/extensions/dm-lens/dist/clients/debug-heap.js +0 -80
  78. package/extensions/dm-lens/dist/clients/deferred-lsp-work.js +0 -33
  79. package/extensions/dm-lens/dist/clients/degradation-ledger.js +0 -272
  80. package/extensions/dm-lens/dist/clients/demoted-finding-render.js +0 -61
  81. package/extensions/dm-lens/dist/clients/dependency-checker.js +0 -525
  82. package/extensions/dm-lens/dist/clients/deps/ast-grep-napi.js +0 -17
  83. package/extensions/dm-lens/dist/clients/deps/dm-host-deps.js +0 -10
  84. package/extensions/dm-lens/dist/clients/deps/dm-tui-compat.js +0 -58
  85. package/extensions/dm-lens/dist/clients/deps/js-yaml.js +0 -7
  86. package/extensions/dm-lens/dist/clients/deps/minimatch.js +0 -6
  87. package/extensions/dm-lens/dist/clients/deps/pidusage.js +0 -5
  88. package/extensions/dm-lens/dist/clients/deps/typebox.js +0 -5
  89. package/extensions/dm-lens/dist/clients/deps/vscode-jsonrpc.js +0 -8
  90. package/extensions/dm-lens/dist/clients/deps/web-tree-sitter.js +0 -11
  91. package/extensions/dm-lens/dist/clients/diagnostic-dispositions.js +0 -318
  92. package/extensions/dm-lens/dist/clients/diagnostic-line-freshness.js +0 -144
  93. package/extensions/dm-lens/dist/clients/diagnostic-logger.js +0 -60
  94. package/extensions/dm-lens/dist/clients/diagnostic-tracker.js +0 -89
  95. package/extensions/dm-lens/dist/clients/diagnostics-publish.js +0 -134
  96. package/extensions/dm-lens/dist/clients/dispatch/ast-grep-catalog.js +0 -16
  97. package/extensions/dm-lens/dist/clients/dispatch/auxiliary-lsp.js +0 -158
  98. package/extensions/dm-lens/dist/clients/dispatch/collect-later-tier.js +0 -25
  99. package/extensions/dm-lens/dist/clients/dispatch/diagnostic-taxonomy.js +0 -58
  100. package/extensions/dm-lens/dist/clients/dispatch/dispatcher.js +0 -953
  101. package/extensions/dm-lens/dist/clients/dispatch/fact-provider-types.js +0 -1
  102. package/extensions/dm-lens/dist/clients/dispatch/fact-rule-runner.js +0 -17
  103. package/extensions/dm-lens/dist/clients/dispatch/fact-runner.js +0 -18
  104. package/extensions/dm-lens/dist/clients/dispatch/fact-scheduler.js +0 -52
  105. package/extensions/dm-lens/dist/clients/dispatch/fact-store.js +0 -199
  106. package/extensions/dm-lens/dist/clients/dispatch/facts/comment-facts.js +0 -20
  107. package/extensions/dm-lens/dist/clients/dispatch/facts/file-content.js +0 -18
  108. package/extensions/dm-lens/dist/clients/dispatch/facts/function-facts.js +0 -281
  109. package/extensions/dm-lens/dist/clients/dispatch/facts/import-facts.js +0 -169
  110. package/extensions/dm-lens/dist/clients/dispatch/facts/tree-sitter-facts.js +0 -19
  111. package/extensions/dm-lens/dist/clients/dispatch/facts/try-catch-facts.js +0 -95
  112. package/extensions/dm-lens/dist/clients/dispatch/finding-policy.js +0 -159
  113. package/extensions/dm-lens/dist/clients/dispatch/indent-detect.js +0 -227
  114. package/extensions/dm-lens/dist/clients/dispatch/inline-suppressions.js +0 -52
  115. package/extensions/dm-lens/dist/clients/dispatch/integration.js +0 -1463
  116. package/extensions/dm-lens/dist/clients/dispatch/lazy.js +0 -8
  117. package/extensions/dm-lens/dist/clients/dispatch/pending-runner-findings.js +0 -75
  118. package/extensions/dm-lens/dist/clients/dispatch/plan.js +0 -278
  119. package/extensions/dm-lens/dist/clients/dispatch/priorities.js +0 -14
  120. package/extensions/dm-lens/dist/clients/dispatch/rule-id-normalize.js +0 -42
  121. package/extensions/dm-lens/dist/clients/dispatch/rule-ignores.js +0 -21
  122. package/extensions/dm-lens/dist/clients/dispatch/rule-policy.js +0 -73
  123. package/extensions/dm-lens/dist/clients/dispatch/rules/async-noise.js +0 -31
  124. package/extensions/dm-lens/dist/clients/dispatch/rules/async-unnecessary-wrapper.js +0 -27
  125. package/extensions/dm-lens/dist/clients/dispatch/rules/cors-wildcard.js +0 -35
  126. package/extensions/dm-lens/dist/clients/dispatch/rules/error-obscuring.js +0 -29
  127. package/extensions/dm-lens/dist/clients/dispatch/rules/error-swallowing.js +0 -29
  128. package/extensions/dm-lens/dist/clients/dispatch/rules/framework-call-noise.js +0 -31
  129. package/extensions/dm-lens/dist/clients/dispatch/rules/high-complexity.js +0 -56
  130. package/extensions/dm-lens/dist/clients/dispatch/rules/high-fan-out.js +0 -45
  131. package/extensions/dm-lens/dist/clients/dispatch/rules/high-import-coupling.js +0 -31
  132. package/extensions/dm-lens/dist/clients/dispatch/rules/missing-error-propagation.js +0 -45
  133. package/extensions/dm-lens/dist/clients/dispatch/rules/no-commented-credentials.js +0 -46
  134. package/extensions/dm-lens/dist/clients/dispatch/rules/pass-through-wrappers.js +0 -38
  135. package/extensions/dm-lens/dist/clients/dispatch/rules/placeholder-comments.js +0 -40
  136. package/extensions/dm-lens/dist/clients/dispatch/rules/unsafe-boundary.js +0 -101
  137. package/extensions/dm-lens/dist/clients/dispatch/runner-context.js +0 -46
  138. package/extensions/dm-lens/dist/clients/dispatch/runners/actionlint.js +0 -98
  139. package/extensions/dm-lens/dist/clients/dispatch/runners/ast-grep-napi.js +0 -690
  140. package/extensions/dm-lens/dist/clients/dispatch/runners/biome-check.js +0 -202
  141. package/extensions/dm-lens/dist/clients/dispatch/runners/cpp-check.js +0 -190
  142. package/extensions/dm-lens/dist/clients/dispatch/runners/credo.js +0 -66
  143. package/extensions/dm-lens/dist/clients/dispatch/runners/cue-vet.js +0 -167
  144. package/extensions/dm-lens/dist/clients/dispatch/runners/dart-analyze.js +0 -151
  145. package/extensions/dm-lens/dist/clients/dispatch/runners/detekt.js +0 -157
  146. package/extensions/dm-lens/dist/clients/dispatch/runners/dotnet-build.js +0 -157
  147. package/extensions/dm-lens/dist/clients/dispatch/runners/elixir-check.js +0 -153
  148. package/extensions/dm-lens/dist/clients/dispatch/runners/eslint.js +0 -99
  149. package/extensions/dm-lens/dist/clients/dispatch/runners/fact-rules.js +0 -20
  150. package/extensions/dm-lens/dist/clients/dispatch/runners/fish-indent.js +0 -65
  151. package/extensions/dm-lens/dist/clients/dispatch/runners/gleam-check.js +0 -107
  152. package/extensions/dm-lens/dist/clients/dispatch/runners/go-vet.js +0 -51
  153. package/extensions/dm-lens/dist/clients/dispatch/runners/golangci-lint.js +0 -89
  154. package/extensions/dm-lens/dist/clients/dispatch/runners/hadolint.js +0 -83
  155. package/extensions/dm-lens/dist/clients/dispatch/runners/helm-lint.js +0 -144
  156. package/extensions/dm-lens/dist/clients/dispatch/runners/helm-render.js +0 -593
  157. package/extensions/dm-lens/dist/clients/dispatch/runners/htmlhint.js +0 -103
  158. package/extensions/dm-lens/dist/clients/dispatch/runners/index.js +0 -100
  159. package/extensions/dm-lens/dist/clients/dispatch/runners/javac.js +0 -82
  160. package/extensions/dm-lens/dist/clients/dispatch/runners/ktlint.js +0 -93
  161. package/extensions/dm-lens/dist/clients/dispatch/runners/lsp.js +0 -206
  162. package/extensions/dm-lens/dist/clients/dispatch/runners/markdownlint.js +0 -129
  163. package/extensions/dm-lens/dist/clients/dispatch/runners/mypy.js +0 -70
  164. package/extensions/dm-lens/dist/clients/dispatch/runners/oxlint.js +0 -305
  165. package/extensions/dm-lens/dist/clients/dispatch/runners/php-lint.js +0 -70
  166. package/extensions/dm-lens/dist/clients/dispatch/runners/phpstan.js +0 -90
  167. package/extensions/dm-lens/dist/clients/dispatch/runners/prisma-validate.js +0 -56
  168. package/extensions/dm-lens/dist/clients/dispatch/runners/psscriptanalyzer.js +0 -307
  169. package/extensions/dm-lens/dist/clients/dispatch/runners/pyright.js +0 -118
  170. package/extensions/dm-lens/dist/clients/dispatch/runners/rubocop.js +0 -79
  171. package/extensions/dm-lens/dist/clients/dispatch/runners/ruff.js +0 -69
  172. package/extensions/dm-lens/dist/clients/dispatch/runners/rust-clippy.js +0 -147
  173. package/extensions/dm-lens/dist/clients/dispatch/runners/shellcheck.js +0 -111
  174. package/extensions/dm-lens/dist/clients/dispatch/runners/shfmt.js +0 -81
  175. package/extensions/dm-lens/dist/clients/dispatch/runners/spellcheck.js +0 -74
  176. package/extensions/dm-lens/dist/clients/dispatch/runners/spotbugs.js +0 -208
  177. package/extensions/dm-lens/dist/clients/dispatch/runners/sqlfluff.js +0 -136
  178. package/extensions/dm-lens/dist/clients/dispatch/runners/stylelint.js +0 -118
  179. package/extensions/dm-lens/dist/clients/dispatch/runners/swiftlint.js +0 -143
  180. package/extensions/dm-lens/dist/clients/dispatch/runners/taplo.js +0 -97
  181. package/extensions/dm-lens/dist/clients/dispatch/runners/terragrunt.js +0 -110
  182. package/extensions/dm-lens/dist/clients/dispatch/runners/tflint.js +0 -104
  183. package/extensions/dm-lens/dist/clients/dispatch/runners/tree-sitter.js +0 -516
  184. package/extensions/dm-lens/dist/clients/dispatch/runners/trivy-config.js +0 -155
  185. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/availability-policy.js +0 -285
  186. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/candidate-probe.js +0 -61
  187. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/diagnostic-parsers.js +0 -61
  188. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/lazy-installer.js +0 -130
  189. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/runner-helpers.js +0 -1067
  190. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/spawn-outcome.js +0 -40
  191. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/tool-failure.js +0 -117
  192. package/extensions/dm-lens/dist/clients/dispatch/runners/utils/toolchain-availability.js +0 -88
  193. package/extensions/dm-lens/dist/clients/dispatch/runners/utils.js +0 -8
  194. package/extensions/dm-lens/dist/clients/dispatch/runners/vale.js +0 -106
  195. package/extensions/dm-lens/dist/clients/dispatch/runners/yaml-rule-parser.js +0 -163
  196. package/extensions/dm-lens/dist/clients/dispatch/runners/yamllint.js +0 -83
  197. package/extensions/dm-lens/dist/clients/dispatch/runners/zig-check.js +0 -72
  198. package/extensions/dm-lens/dist/clients/dispatch/suppress-writer.js +0 -57
  199. package/extensions/dm-lens/dist/clients/dispatch/tool-profile.js +0 -30
  200. package/extensions/dm-lens/dist/clients/dispatch/types.js +0 -7
  201. package/extensions/dm-lens/dist/clients/dispatch/utils/format-utils.js +0 -45
  202. package/extensions/dm-lens/dist/clients/dispatch/utils/lsp-diagnostics.js +0 -31
  203. package/extensions/dm-lens/dist/clients/disposition-logger.js +0 -19
  204. package/extensions/dm-lens/dist/clients/disposition-publish.js +0 -88
  205. package/extensions/dm-lens/dist/clients/durable-store.js +0 -77
  206. package/extensions/dm-lens/dist/clients/effective-config.js +0 -160
  207. package/extensions/dm-lens/dist/clients/env-utils.js +0 -26
  208. package/extensions/dm-lens/dist/clients/error-class.js +0 -3
  209. package/extensions/dm-lens/dist/clients/eval-timestamp.js +0 -2
  210. package/extensions/dm-lens/dist/clients/event-loop-hold.js +0 -119
  211. package/extensions/dm-lens/dist/clients/event-loop-monitor.js +0 -84
  212. package/extensions/dm-lens/dist/clients/extension-log.js +0 -230
  213. package/extensions/dm-lens/dist/clients/extension-mode.js +0 -20
  214. package/extensions/dm-lens/dist/clients/feature-hints.js +0 -88
  215. package/extensions/dm-lens/dist/clients/file-kinds.js +0 -304
  216. package/extensions/dm-lens/dist/clients/file-role.js +0 -50
  217. package/extensions/dm-lens/dist/clients/file-time.js +0 -112
  218. package/extensions/dm-lens/dist/clients/file-utils.js +0 -630
  219. package/extensions/dm-lens/dist/clients/finding-delivery-gate.js +0 -129
  220. package/extensions/dm-lens/dist/clients/finding-identity.js +0 -23
  221. package/extensions/dm-lens/dist/clients/fix-worklog.js +0 -75
  222. package/extensions/dm-lens/dist/clients/format-events-publish.js +0 -230
  223. package/extensions/dm-lens/dist/clients/format-service.js +0 -154
  224. package/extensions/dm-lens/dist/clients/formatters-lazy.js +0 -8
  225. package/extensions/dm-lens/dist/clients/formatters.js +0 -1351
  226. package/extensions/dm-lens/dist/clients/freshness-cadence.js +0 -1
  227. package/extensions/dm-lens/dist/clients/freshness.js +0 -8
  228. package/extensions/dm-lens/dist/clients/generated-artifacts.js +0 -209
  229. package/extensions/dm-lens/dist/clients/generation-guard.js +0 -105
  230. package/extensions/dm-lens/dist/clients/git-guard.js +0 -770
  231. package/extensions/dm-lens/dist/clients/git-tracked-ignore.js +0 -120
  232. package/extensions/dm-lens/dist/clients/gitleaks-client.js +0 -282
  233. package/extensions/dm-lens/dist/clients/go-client.js +0 -47
  234. package/extensions/dm-lens/dist/clients/govulncheck-client.js +0 -411
  235. package/extensions/dm-lens/dist/clients/gradle-ktfmt-style.js +0 -177
  236. package/extensions/dm-lens/dist/clients/grammar-source.js +0 -224
  237. package/extensions/dm-lens/dist/clients/gzip-stage-write.js +0 -85
  238. package/extensions/dm-lens/dist/clients/hashline-anchor.js +0 -222
  239. package/extensions/dm-lens/dist/clients/hook-budgets.js +0 -16
  240. package/extensions/dm-lens/dist/clients/host-edit-normalize.js +0 -87
  241. package/extensions/dm-lens/dist/clients/host-ports.js +0 -35
  242. package/extensions/dm-lens/dist/clients/indent-retarget.js +0 -102
  243. package/extensions/dm-lens/dist/clients/inline-blocker-dispositions.js +0 -103
  244. package/extensions/dm-lens/dist/clients/install-diagnostics.js +0 -123
  245. package/extensions/dm-lens/dist/clients/installer/index.js +0 -3770
  246. package/extensions/dm-lens/dist/clients/installer/managed-tool-refresh-session.js +0 -17
  247. package/extensions/dm-lens/dist/clients/installer/managed-tool-refresh.js +0 -522
  248. package/extensions/dm-lens/dist/clients/instance-reaper-state.js +0 -3
  249. package/extensions/dm-lens/dist/clients/instance-reaper.js +0 -577
  250. package/extensions/dm-lens/dist/clients/instance-registry-lock.js +0 -131
  251. package/extensions/dm-lens/dist/clients/instance-registry.js +0 -452
  252. package/extensions/dm-lens/dist/clients/jscpd-client.js +0 -252
  253. package/extensions/dm-lens/dist/clients/json-cache-read.js +0 -25
  254. package/extensions/dm-lens/dist/clients/knip-client.js +0 -472
  255. package/extensions/dm-lens/dist/clients/language-policy.js +0 -242
  256. package/extensions/dm-lens/dist/clients/language-profile.js +0 -261
  257. package/extensions/dm-lens/dist/clients/language-registry.js +0 -424
  258. package/extensions/dm-lens/dist/clients/latency-logger.js +0 -192
  259. package/extensions/dm-lens/dist/clients/lazy-import.js +0 -14
  260. package/extensions/dm-lens/dist/clients/ledger-bounds.js +0 -21
  261. package/extensions/dm-lens/dist/clients/lens-config.js +0 -237
  262. package/extensions/dm-lens/dist/clients/lens-engine.js +0 -181
  263. package/extensions/dm-lens/dist/clients/lens-events.js +0 -105
  264. package/extensions/dm-lens/dist/clients/lens-flag-registry.js +0 -302
  265. package/extensions/dm-lens/dist/clients/lens-map.js +0 -980
  266. package/extensions/dm-lens/dist/clients/live-bus-emitter.js +0 -53
  267. package/extensions/dm-lens/dist/clients/log-cleanup.js +0 -138
  268. package/extensions/dm-lens/dist/clients/lsp/aggregation.js +0 -88
  269. package/extensions/dm-lens/dist/clients/lsp/cascade-tier.js +0 -203
  270. package/extensions/dm-lens/dist/clients/lsp/client.js +0 -2709
  271. package/extensions/dm-lens/dist/clients/lsp/config.js +0 -252
  272. package/extensions/dm-lens/dist/clients/lsp/content-limits.js +0 -21
  273. package/extensions/dm-lens/dist/clients/lsp/diagnostic-binding.js +0 -79
  274. package/extensions/dm-lens/dist/clients/lsp/document-drift.js +0 -312
  275. package/extensions/dm-lens/dist/clients/lsp/edits.js +0 -930
  276. package/extensions/dm-lens/dist/clients/lsp/index.js +0 -4448
  277. package/extensions/dm-lens/dist/clients/lsp/inferred-project.js +0 -121
  278. package/extensions/dm-lens/dist/clients/lsp/jvm-runtime.js +0 -194
  279. package/extensions/dm-lens/dist/clients/lsp/language.js +0 -23
  280. package/extensions/dm-lens/dist/clients/lsp/launch.js +0 -468
  281. package/extensions/dm-lens/dist/clients/lsp/lombok.js +0 -146
  282. package/extensions/dm-lens/dist/clients/lsp/path-utils.js +0 -1
  283. package/extensions/dm-lens/dist/clients/lsp/pending-aux-coverage.js +0 -90
  284. package/extensions/dm-lens/dist/clients/lsp/position-encoding.js +0 -28
  285. package/extensions/dm-lens/dist/clients/lsp/ruby-drive-dirs.js +0 -42
  286. package/extensions/dm-lens/dist/clients/lsp/server.js +0 -2422
  287. package/extensions/dm-lens/dist/clients/lsp/session-roots.js +0 -52
  288. package/extensions/dm-lens/dist/clients/lsp/spawn-history.js +0 -15
  289. package/extensions/dm-lens/dist/clients/lsp/sync-kind.js +0 -30
  290. package/extensions/dm-lens/dist/clients/lsp/tsserver-sync.js +0 -156
  291. package/extensions/dm-lens/dist/clients/lsp/wait-policy/capability-snapshot.js +0 -1
  292. package/extensions/dm-lens/dist/clients/lsp/wait-policy/classification.js +0 -36
  293. package/extensions/dm-lens/dist/clients/lsp/wait-policy/index.js +0 -3
  294. package/extensions/dm-lens/dist/clients/lsp/wait-policy/strategies.js +0 -175
  295. package/extensions/dm-lens/dist/clients/lsp/watch-queue.js +0 -40
  296. package/extensions/dm-lens/dist/clients/lsp/workspace-diagnostics-cache.js +0 -267
  297. package/extensions/dm-lens/dist/clients/lsp/workspace-diagnostics-session.js +0 -7
  298. package/extensions/dm-lens/dist/clients/lsp/workspace-sweep-hold.js +0 -93
  299. package/extensions/dm-lens/dist/clients/lsp-budget.js +0 -83
  300. package/extensions/dm-lens/dist/clients/lsp-document-symbols.js +0 -93
  301. package/extensions/dm-lens/dist/clients/lsp-lazy.js +0 -8
  302. package/extensions/dm-lens/dist/clients/lsp-mutation.js +0 -273
  303. package/extensions/dm-lens/dist/clients/lsp-status.js +0 -37
  304. package/extensions/dm-lens/dist/clients/map-with-concurrency.js +0 -20
  305. package/extensions/dm-lens/dist/clients/mcp/analyze.js +0 -251
  306. package/extensions/dm-lens/dist/clients/mcp/host-shim.js +0 -14
  307. package/extensions/dm-lens/dist/clients/mcp/ipc.js +0 -302
  308. package/extensions/dm-lens/dist/clients/mcp/review.js +0 -137
  309. package/extensions/dm-lens/dist/clients/mcp/session.js +0 -305
  310. package/extensions/dm-lens/dist/clients/memory-sampler.js +0 -107
  311. package/extensions/dm-lens/dist/clients/message-end-attribution.js +0 -18
  312. package/extensions/dm-lens/dist/clients/metrics-client.js +0 -80
  313. package/extensions/dm-lens/dist/clients/metrics-history.js +0 -255
  314. package/extensions/dm-lens/dist/clients/middle-man-analysis.js +0 -161
  315. package/extensions/dm-lens/dist/clients/model-provider.js +0 -31
  316. package/extensions/dm-lens/dist/clients/module-report-lsp.js +0 -140
  317. package/extensions/dm-lens/dist/clients/module-report.js +0 -1642
  318. package/extensions/dm-lens/dist/clients/mutating-tool.js +0 -377
  319. package/extensions/dm-lens/dist/clients/mutation-attribution.js +0 -168
  320. package/extensions/dm-lens/dist/clients/mutation-bridge.js +0 -102
  321. package/extensions/dm-lens/dist/clients/ndjson-logger.js +0 -471
  322. package/extensions/dm-lens/dist/clients/observed-mutation-sources.js +0 -43
  323. package/extensions/dm-lens/dist/clients/observed-mutation.js +0 -709
  324. package/extensions/dm-lens/dist/clients/oldtext-autopatch.js +0 -100
  325. package/extensions/dm-lens/dist/clients/opaque-mutation-scan.js +0 -313
  326. package/extensions/dm-lens/dist/clients/opengrep-client.js +0 -216
  327. package/extensions/dm-lens/dist/clients/opengrep-config.js +0 -52
  328. package/extensions/dm-lens/dist/clients/package-manager.js +0 -303
  329. package/extensions/dm-lens/dist/clients/package-root.js +0 -25
  330. package/extensions/dm-lens/dist/clients/partial-edit-apply.js +0 -337
  331. package/extensions/dm-lens/dist/clients/path-attribution-telemetry.js +0 -31
  332. package/extensions/dm-lens/dist/clients/path-keyed-map.js +0 -57
  333. package/extensions/dm-lens/dist/clients/path-utils.js +0 -476
  334. package/extensions/dm-lens/dist/clients/performance-report.js +0 -291
  335. package/extensions/dm-lens/dist/clients/persist-debounce.js +0 -37
  336. package/extensions/dm-lens/dist/clients/persistent-reverify.js +0 -165
  337. package/extensions/dm-lens/dist/clients/php-cs-fixer-config.js +0 -15
  338. package/extensions/dm-lens/dist/clients/pipeline.js +0 -1091
  339. package/extensions/dm-lens/dist/clients/post-autofix-notice.js +0 -19
  340. package/extensions/dm-lens/dist/clients/print-mode.js +0 -3
  341. package/extensions/dm-lens/dist/clients/probe-home-state.js +0 -62
  342. package/extensions/dm-lens/dist/clients/process-bridge.js +0 -20
  343. package/extensions/dm-lens/dist/clients/process-singletons.js +0 -69
  344. package/extensions/dm-lens/dist/clients/process-snapshot.js +0 -22
  345. package/extensions/dm-lens/dist/clients/project-changes.js +0 -112
  346. package/extensions/dm-lens/dist/clients/project-conventions.js +0 -152
  347. package/extensions/dm-lens/dist/clients/project-diagnostics/cache.js +0 -91
  348. package/extensions/dm-lens/dist/clients/project-diagnostics/extractors.js +0 -53
  349. package/extensions/dm-lens/dist/clients/project-diagnostics/fresh-fetch.js +0 -408
  350. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/call-graph-impact.js +0 -64
  351. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/dead-code.js +0 -38
  352. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/gitleaks.js +0 -21
  353. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/govulncheck.js +0 -23
  354. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/jscpd.js +0 -28
  355. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/knip.js +0 -45
  356. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/madge.js +0 -34
  357. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/opengrep.js +0 -32
  358. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/runner-findings.js +0 -79
  359. package/extensions/dm-lens/dist/clients/project-diagnostics/runner-adapters/trivy.js +0 -41
  360. package/extensions/dm-lens/dist/clients/project-diagnostics/scanner.js +0 -349
  361. package/extensions/dm-lens/dist/clients/project-diagnostics/types.js +0 -1
  362. package/extensions/dm-lens/dist/clients/project-lens-config.js +0 -437
  363. package/extensions/dm-lens/dist/clients/project-report.js +0 -527
  364. package/extensions/dm-lens/dist/clients/project-scale.js +0 -60
  365. package/extensions/dm-lens/dist/clients/project-scan-policy.js +0 -4
  366. package/extensions/dm-lens/dist/clients/project-snapshot-fingerprint.js +0 -39
  367. package/extensions/dm-lens/dist/clients/project-snapshot-persist-worker.js +0 -14
  368. package/extensions/dm-lens/dist/clients/project-snapshot.js +0 -1178
  369. package/extensions/dm-lens/dist/clients/project-trust.js +0 -104
  370. package/extensions/dm-lens/dist/clients/python-environment.js +0 -120
  371. package/extensions/dm-lens/dist/clients/python-provenance.js +0 -551
  372. package/extensions/dm-lens/dist/clients/quiet-window-config.js +0 -16
  373. package/extensions/dm-lens/dist/clients/quiet-window.js +0 -126
  374. package/extensions/dm-lens/dist/clients/read-bridge.js +0 -46
  375. package/extensions/dm-lens/dist/clients/read-expansion.js +0 -218
  376. package/extensions/dm-lens/dist/clients/read-guard-logger.js +0 -178
  377. package/extensions/dm-lens/dist/clients/read-guard-tool-lines.js +0 -1042
  378. package/extensions/dm-lens/dist/clients/read-guard.js +0 -1096
  379. package/extensions/dm-lens/dist/clients/recent-touches.js +0 -126
  380. package/extensions/dm-lens/dist/clients/redact/secrets.js +0 -386
  381. package/extensions/dm-lens/dist/clients/resource-sampler.js +0 -344
  382. package/extensions/dm-lens/dist/clients/reverse-deps.js +0 -227
  383. package/extensions/dm-lens/dist/clients/review-graph/builder.js +0 -3635
  384. package/extensions/dm-lens/dist/clients/review-graph/format.js +0 -30
  385. package/extensions/dm-lens/dist/clients/review-graph/git-identity.js +0 -115
  386. package/extensions/dm-lens/dist/clients/review-graph/import-resolvers.js +0 -325
  387. package/extensions/dm-lens/dist/clients/review-graph/persist-worker.js +0 -8
  388. package/extensions/dm-lens/dist/clients/review-graph/query.js +0 -195
  389. package/extensions/dm-lens/dist/clients/review-graph/revision-drift.js +0 -3
  390. package/extensions/dm-lens/dist/clients/review-graph/service.js +0 -60
  391. package/extensions/dm-lens/dist/clients/review-graph/shared-extraction-ir.js +0 -54
  392. package/extensions/dm-lens/dist/clients/review-graph/symbol-id.js +0 -29
  393. package/extensions/dm-lens/dist/clients/review-graph/tsconfig-paths.js +0 -253
  394. package/extensions/dm-lens/dist/clients/review-graph/types.js +0 -1
  395. package/extensions/dm-lens/dist/clients/review-graph/workspace-modules.js +0 -374
  396. package/extensions/dm-lens/dist/clients/review-graph-logger.js +0 -51
  397. package/extensions/dm-lens/dist/clients/ruff-client.js +0 -109
  398. package/extensions/dm-lens/dist/clients/rules-scanner.js +0 -113
  399. package/extensions/dm-lens/dist/clients/run-duration.js +0 -9
  400. package/extensions/dm-lens/dist/clients/runtime-agent-end.js +0 -608
  401. package/extensions/dm-lens/dist/clients/runtime-config.js +0 -39
  402. package/extensions/dm-lens/dist/clients/runtime-context.js +0 -155
  403. package/extensions/dm-lens/dist/clients/runtime-coordinator.js +0 -817
  404. package/extensions/dm-lens/dist/clients/runtime-session.js +0 -1625
  405. package/extensions/dm-lens/dist/clients/runtime-tool-call.js +0 -868
  406. package/extensions/dm-lens/dist/clients/runtime-tool-result.js +0 -1317
  407. package/extensions/dm-lens/dist/clients/runtime-turn.js +0 -2333
  408. package/extensions/dm-lens/dist/clients/rust-client.js +0 -48
  409. package/extensions/dm-lens/dist/clients/safe-spawn.js +0 -1267
  410. package/extensions/dm-lens/dist/clients/sanitize.js +0 -174
  411. package/extensions/dm-lens/dist/clients/scan-utils.js +0 -7
  412. package/extensions/dm-lens/dist/clients/scratch-tree-policy.js +0 -57
  413. package/extensions/dm-lens/dist/clients/search-read-registration.js +0 -59
  414. package/extensions/dm-lens/dist/clients/secret-findings.js +0 -69
  415. package/extensions/dm-lens/dist/clients/security-scan-client.js +0 -208
  416. package/extensions/dm-lens/dist/clients/session-event-guard.js +0 -111
  417. package/extensions/dm-lens/dist/clients/session-lifecycle.js +0 -173
  418. package/extensions/dm-lens/dist/clients/session-start-observability.js +0 -47
  419. package/extensions/dm-lens/dist/clients/session-state-store.js +0 -63
  420. package/extensions/dm-lens/dist/clients/session-summary.js +0 -8
  421. package/extensions/dm-lens/dist/clients/sessionstart-logger.js +0 -22
  422. package/extensions/dm-lens/dist/clients/sg-runner.js +0 -627
  423. package/extensions/dm-lens/dist/clients/sgconfig.js +0 -280
  424. package/extensions/dm-lens/dist/clients/shared-checkout-guard.js +0 -177
  425. package/extensions/dm-lens/dist/clients/single-flight.js +0 -52
  426. package/extensions/dm-lens/dist/clients/situational-tool-telemetry.js +0 -85
  427. package/extensions/dm-lens/dist/clients/skills-resolver.js +0 -38
  428. package/extensions/dm-lens/dist/clients/slow-fs.js +0 -77
  429. package/extensions/dm-lens/dist/clients/smells-rollup.js +0 -118
  430. package/extensions/dm-lens/dist/clients/source-filter.js +0 -320
  431. package/extensions/dm-lens/dist/clients/source-walker.js +0 -96
  432. package/extensions/dm-lens/dist/clients/spawn-output-cap.js +0 -35
  433. package/extensions/dm-lens/dist/clients/spawn-timeout-cooldown.js +0 -51
  434. package/extensions/dm-lens/dist/clients/stale-marker.js +0 -1
  435. package/extensions/dm-lens/dist/clients/startup-scan.js +0 -222
  436. package/extensions/dm-lens/dist/clients/startup-timing.js +0 -67
  437. package/extensions/dm-lens/dist/clients/string-utils.js +0 -6
  438. package/extensions/dm-lens/dist/clients/subagent-mode.js +0 -40
  439. package/extensions/dm-lens/dist/clients/symbol-containment.js +0 -16
  440. package/extensions/dm-lens/dist/clients/symbol-types.js +0 -1
  441. package/extensions/dm-lens/dist/clients/test-runner-client.js +0 -1504
  442. package/extensions/dm-lens/dist/clients/test-runner-delivery.js +0 -260
  443. package/extensions/dm-lens/dist/clients/todo-scanner.js +0 -164
  444. package/extensions/dm-lens/dist/clients/tool-agreement.js +0 -377
  445. package/extensions/dm-lens/dist/clients/tool-config.js +0 -218
  446. package/extensions/dm-lens/dist/clients/tool-cwd.js +0 -235
  447. package/extensions/dm-lens/dist/clients/tool-definition.js +0 -22
  448. package/extensions/dm-lens/dist/clients/tool-event.js +0 -18
  449. package/extensions/dm-lens/dist/clients/tool-policy.js +0 -2393
  450. package/extensions/dm-lens/dist/clients/tool-probe.js +0 -5
  451. package/extensions/dm-lens/dist/clients/tool-render.js +0 -79
  452. package/extensions/dm-lens/dist/clients/tool-set-policy.js +0 -70
  453. package/extensions/dm-lens/dist/clients/tree-sitter-cache.js +0 -206
  454. package/extensions/dm-lens/dist/clients/tree-sitter-client.js +0 -2787
  455. package/extensions/dm-lens/dist/clients/tree-sitter-logger.js +0 -77
  456. package/extensions/dm-lens/dist/clients/tree-sitter-navigator.js +0 -198
  457. package/extensions/dm-lens/dist/clients/tree-sitter-query-loader.js +0 -318
  458. package/extensions/dm-lens/dist/clients/tree-sitter-shared.js +0 -87
  459. package/extensions/dm-lens/dist/clients/tree-sitter-symbol-extractor.js +0 -957
  460. package/extensions/dm-lens/dist/clients/trivy-client.js +0 -305
  461. package/extensions/dm-lens/dist/clients/tui-fit.js +0 -26
  462. package/extensions/dm-lens/dist/clients/turn-context.js +0 -48
  463. package/extensions/dm-lens/dist/clients/turn-end/lane.js +0 -1
  464. package/extensions/dm-lens/dist/clients/turn-end/lanes/govulncheck.js +0 -54
  465. package/extensions/dm-lens/dist/clients/turn-end/lanes/secrets.js +0 -131
  466. package/extensions/dm-lens/dist/clients/turn-summary-render.js +0 -56
  467. package/extensions/dm-lens/dist/clients/turn-summary.js +0 -84
  468. package/extensions/dm-lens/dist/clients/typos-config.js +0 -9
  469. package/extensions/dm-lens/dist/clients/user-notify.js +0 -15
  470. package/extensions/dm-lens/dist/clients/vanished-instance-marker.js +0 -18
  471. package/extensions/dm-lens/dist/clients/warm-attach.js +0 -210
  472. package/extensions/dm-lens/dist/clients/widget-state.js +0 -963
  473. package/extensions/dm-lens/dist/clients/word-index-logger.js +0 -21
  474. package/extensions/dm-lens/dist/clients/word-index-store.js +0 -222
  475. package/extensions/dm-lens/dist/clients/word-index.js +0 -1426
  476. package/extensions/dm-lens/dist/clients/workspace-topology.js +0 -261
  477. package/extensions/dm-lens/dist/clients/write-ordering-guard.js +0 -24
  478. package/extensions/dm-lens/dist/clients/zizmor-config.js +0 -160
  479. package/extensions/dm-lens/dist/i18n.js +0 -67
  480. package/extensions/dm-lens/dist/index.js +0 -1782
  481. package/extensions/dm-lens/dist/mcp/analyze-cli.js +0 -178
  482. package/extensions/dm-lens/dist/mcp/build-staleness.js +0 -55
  483. package/extensions/dm-lens/dist/mcp/cli.js +0 -78
  484. package/extensions/dm-lens/dist/mcp/server.js +0 -1208
  485. package/extensions/dm-lens/dist/mcp/worker.js +0 -33
  486. package/extensions/dm-lens/dist/scripts/lib/process-scan.mjs +0 -256
  487. package/extensions/dm-lens/dist/scripts/lib/skills-predicate.mjs +0 -53
  488. package/extensions/dm-lens/dist/scripts/lib/web-tree-sitter-dir.mjs +0 -45
  489. package/extensions/dm-lens/dist/tools/activate-tools.js +0 -61
  490. package/extensions/dm-lens/dist/tools/ast-grep-outline.js +0 -127
  491. package/extensions/dm-lens/dist/tools/ast-grep-replace.js +0 -226
  492. package/extensions/dm-lens/dist/tools/ast-grep-search.js +0 -687
  493. package/extensions/dm-lens/dist/tools/effective-config.js +0 -59
  494. package/extensions/dm-lens/dist/tools/lens-diagnostic-mark.js +0 -240
  495. package/extensions/dm-lens/dist/tools/lens-diagnostics.js +0 -1484
  496. package/extensions/dm-lens/dist/tools/lsp-diagnostics.js +0 -1088
  497. package/extensions/dm-lens/dist/tools/lsp-navigation.js +0 -1194
  498. package/extensions/dm-lens/dist/tools/lsp-structured-output.js +0 -277
  499. package/extensions/dm-lens/dist/tools/module-report.js +0 -332
  500. package/extensions/dm-lens/dist/tools/project-report.js +0 -72
  501. package/extensions/dm-lens/dist/tools/render-compact.js +0 -272
  502. package/extensions/dm-lens/dist/tools/scan-progress.js +0 -31
  503. package/extensions/dm-lens/dist/tools/shared.js +0 -26
  504. package/extensions/dm-lens/dist/tools/symbol-search.js +0 -133
  505. package/extensions/dm-mcp-adapter/dist/abort.js +0 -35
  506. package/extensions/dm-mcp-adapter/dist/agent-dir.js +0 -45
  507. package/extensions/dm-mcp-adapter/dist/agent-plugin-loader.js +0 -392
  508. package/extensions/dm-mcp-adapter/dist/agent-plugin-provenance.js +0 -26
  509. package/extensions/dm-mcp-adapter/dist/bearer-command-resolver.js +0 -182
  510. package/extensions/dm-mcp-adapter/dist/claude-plugin-loader.js +0 -350
  511. package/extensions/dm-mcp-adapter/dist/config.js +0 -1310
  512. package/extensions/dm-mcp-adapter/dist/consent-manager.js +0 -84
  513. package/extensions/dm-mcp-adapter/dist/elicitation-handler.js +0 -308
  514. package/extensions/dm-mcp-adapter/dist/errors.js +0 -225
  515. package/extensions/dm-mcp-adapter/dist/http-ca.js +0 -71
  516. package/extensions/dm-mcp-adapter/dist/jev-client.js +0 -359
  517. package/extensions/dm-mcp-adapter/dist/jev-contracts.js +0 -1
  518. package/extensions/dm-mcp-adapter/dist/jev-key-store.js +0 -176
  519. package/extensions/dm-mcp-adapter/dist/json-schema-validator.js +0 -70
  520. package/extensions/dm-mcp-adapter/dist/lifecycle.js +0 -387
  521. package/extensions/dm-mcp-adapter/dist/logger.js +0 -115
  522. package/extensions/dm-mcp-adapter/dist/mcp-auth-fetch.js +0 -86
  523. package/extensions/dm-mcp-adapter/dist/mcp-auth-flow.js +0 -949
  524. package/extensions/dm-mcp-adapter/dist/mcp-auth.js +0 -997
  525. package/extensions/dm-mcp-adapter/dist/mcp-bearer-store.js +0 -182
  526. package/extensions/dm-mcp-adapter/dist/mcp-callback-server.js +0 -381
  527. package/extensions/dm-mcp-adapter/dist/mcp-oauth-provider.js +0 -524
  528. package/extensions/dm-mcp-adapter/dist/mcp-probe.js +0 -151
  529. package/extensions/dm-mcp-adapter/dist/mcp-tasks.js +0 -300
  530. package/extensions/dm-mcp-adapter/dist/mcp-trace.js +0 -215
  531. package/extensions/dm-mcp-adapter/dist/metadata-cache.js +0 -267
  532. package/extensions/dm-mcp-adapter/dist/npx-resolver.js +0 -465
  533. package/extensions/dm-mcp-adapter/dist/package-mcp-loader.js +0 -135
  534. package/extensions/dm-mcp-adapter/dist/request-headers-command.js +0 -294
  535. package/extensions/dm-mcp-adapter/dist/resource-tools.js +0 -7
  536. package/extensions/dm-mcp-adapter/dist/runtime-owner.js +0 -94
  537. package/extensions/dm-mcp-adapter/dist/sampling-handler.js +0 -213
  538. package/extensions/dm-mcp-adapter/dist/secure-keyring.js +0 -191
  539. package/extensions/dm-mcp-adapter/dist/server-manager.js +0 -1514
  540. package/extensions/dm-mcp-adapter/dist/session-approvals.js +0 -127
  541. package/extensions/dm-mcp-adapter/dist/session-recovery.js +0 -82
  542. package/extensions/dm-mcp-adapter/dist/state.js +0 -1
  543. package/extensions/dm-mcp-adapter/dist/types.js +0 -286
  544. package/extensions/dm-mcp-adapter/dist/ui-app-bridge-helpers.js +0 -36
  545. package/extensions/dm-mcp-adapter/dist/ui-resource-handler.js +0 -204
  546. package/extensions/dm-mcp-adapter/dist/ui-stream-types.js +0 -58
  547. package/extensions/dm-mcp-adapter/dist/ui-tool-visibility.js +0 -26
  548. package/extensions/dm-mcp-adapter/dist/unix-socket-transport.js +0 -83
  549. package/extensions/dm-mcp-adapter/dist/utils.js +0 -382
@@ -1,628 +0,0 @@
1
- import * as fs from "node:fs";
2
- import * as path from "node:path";
3
- import { getProjectDataDir } from "./file-utils.js";
4
- import { writeFileAtomic } from "./atomic-write.js";
5
- import { parseSymbolKey as parseCanonicalSymbolKey } from "./review-graph/symbol-id.js";
6
- import { normalizeMapKey, toProjectRelativePath } from "./path-utils.js";
7
- export const CALL_GRAPH_CACHE_VERSION = 5;
8
- function severityForDepth(depth) {
9
- if (depth === 1)
10
- return "WillBreak";
11
- if (depth === 2)
12
- return "MayBreak";
13
- return "Review";
14
- }
15
- export function impact(graph, startKey, maxDepth = 3, minWeight = 0.1) {
16
- const results = [];
17
- const visited = new Set([startKey]);
18
- const queue = [
19
- { key: startKey, depth: 0 }
20
- ];
21
- const edgeWeightMap = new Map;
22
- for (const edge of graph.edges) {
23
- const edgeKey = `${edge.calleeKey}→${edge.callerKey}`;
24
- const existing = edgeWeightMap.get(edgeKey) ?? 0;
25
- edgeWeightMap.set(edgeKey, Math.max(existing, edge.weight));
26
- }
27
- while (queue.length > 0) {
28
- const item = queue.shift();
29
- if (item.depth >= maxDepth)
30
- continue;
31
- const directCallers = graph.callers.get(item.key);
32
- if (!directCallers)
33
- continue;
34
- for (const callerKey of directCallers) {
35
- if (visited.has(callerKey))
36
- continue;
37
- const edgeKey = `${item.key}→${callerKey}`;
38
- const weight = edgeWeightMap.get(edgeKey) ?? 1;
39
- if (weight < minWeight)
40
- continue;
41
- visited.add(callerKey);
42
- const depth = item.depth + 1;
43
- results.push({
44
- symbolKey: callerKey,
45
- depth,
46
- severity: severityForDepth(depth)
47
- });
48
- queue.push({ key: callerKey, depth });
49
- }
50
- }
51
- return results.sort((a, b) => a.depth - b.depth || a.symbolKey.localeCompare(b.symbolKey));
52
- }
53
- export function parseSymbolKey(key, knownFilePath) {
54
- return parseCanonicalSymbolKey(key, knownFilePath);
55
- }
56
- export function formatImpact(results, projectRoot) {
57
- if (results.length === 0)
58
- return "";
59
- const willBreak = results.filter((r) => r.severity === "WillBreak");
60
- const mayBreak = results.filter((r) => r.severity === "MayBreak");
61
- const review = results.filter((r) => r.severity === "Review");
62
- const parts = [];
63
- const label = (r) => {
64
- const parsed = parseSymbolKey(r.symbolKey);
65
- const name = parsed.symbolName ?? r.symbolKey;
66
- const file = toProjectRelativePath(parsed.filePath, projectRoot);
67
- return file ? `${name} (${file})` : name;
68
- };
69
- if (willBreak.length > 0) {
70
- parts.push(willBreak.slice(0, 3).map((r) => `${label(r)} ⚠ WillBreak`).join(", "));
71
- }
72
- if (mayBreak.length > 0) {
73
- parts.push(mayBreak.slice(0, 2).map((r) => `${label(r)} MayBreak`).join(", "));
74
- }
75
- if (review.length > 0) {
76
- parts.push(`${review.length} Review caller${review.length === 1 ? "" : "s"}`);
77
- }
78
- return parts.join(" → ");
79
- }
80
- const STDLIB_NAMES = new Set([
81
- "console",
82
- "Math",
83
- "Object",
84
- "Array",
85
- "String",
86
- "Number",
87
- "Boolean",
88
- "Promise",
89
- "Error",
90
- "Map",
91
- "Set",
92
- "WeakMap",
93
- "WeakSet",
94
- "JSON",
95
- "Date",
96
- "RegExp",
97
- "Symbol",
98
- "BigInt",
99
- "parseInt",
100
- "parseFloat",
101
- "isNaN",
102
- "isFinite",
103
- "setTimeout",
104
- "clearTimeout",
105
- "setInterval",
106
- "clearInterval",
107
- "fetch",
108
- "URL",
109
- "URLSearchParams",
110
- "Buffer",
111
- "process",
112
- "require",
113
- "print",
114
- "len",
115
- "range",
116
- "list",
117
- "dict",
118
- "str",
119
- "int",
120
- "float",
121
- "bool",
122
- "open",
123
- "isinstance",
124
- "issubclass",
125
- "type",
126
- "super",
127
- "hasattr",
128
- "getattr",
129
- "setattr",
130
- "enumerate",
131
- "zip",
132
- "map",
133
- "filter",
134
- "sorted",
135
- "reversed",
136
- "fmt",
137
- "log",
138
- "os",
139
- "io",
140
- "err",
141
- "make",
142
- "append",
143
- "cap",
144
- "copy",
145
- "close",
146
- "delete",
147
- "panic",
148
- "recover",
149
- "new",
150
- "eprintln",
151
- "eprint",
152
- "vec",
153
- "Some",
154
- "None",
155
- "Ok",
156
- "Err",
157
- "Box",
158
- "Rc",
159
- "Arc",
160
- "Vec",
161
- "HashMap",
162
- "HashSet",
163
- "format",
164
- "System",
165
- "toString",
166
- "equals",
167
- "hashCode",
168
- "Objects",
169
- "this",
170
- "self",
171
- "nil",
172
- "null",
173
- "undefined",
174
- "true",
175
- "false"
176
- ]);
177
- function buildDefIndex(allSymbols) {
178
- const byName = new Map;
179
- const byId = new Map;
180
- for (const [, symbols] of allSymbols) {
181
- for (const sym of symbols) {
182
- if (!sym.name || !sym.id)
183
- continue;
184
- const key = sym.id;
185
- byId.set(key, sym);
186
- const existing = byName.get(sym.name) ?? [];
187
- if (!existing.includes(key))
188
- existing.push(key);
189
- byName.set(sym.name, existing);
190
- }
191
- }
192
- return { byName, byId };
193
- }
194
- function findEnclosingSymbol(symbols, refLine) {
195
- let best;
196
- for (const sym of symbols) {
197
- if (sym.line <= refLine && (sym.endLine === undefined || refLine <= sym.endLine) && (sym.kind === "function" || sym.kind === "method")) {
198
- if (!best || sym.line > best.line)
199
- best = sym;
200
- }
201
- }
202
- return best;
203
- }
204
- export function buildCallGraph(allSymbols, allRefs, inputCoverage) {
205
- const canonicalSymbols = new Map;
206
- for (const [filePath, symbols] of allSymbols)
207
- canonicalSymbols.set(normalizeMapKey(filePath), symbols);
208
- const defIndex = buildDefIndex(canonicalSymbols);
209
- const callees = new Map;
210
- const callers = new Map;
211
- const inDegree = new Map;
212
- const edgeByPair = new Map;
213
- let unresolvedRefs = 0;
214
- let totalRefs = 0;
215
- const hasInputCoverage = inputCoverage !== undefined;
216
- const coverage = inputCoverage ? { ...inputCoverage } : {
217
- totalEvidence: 0,
218
- callsEvidence: 0,
219
- referencesEvidence: 0,
220
- eligibleEvidence: 0,
221
- resolvedEvidence: 0,
222
- unresolvedEvidence: 0,
223
- typeOnlyEvidence: 0,
224
- unsupportedEvidence: 0,
225
- sameFileEvidence: 0,
226
- duplicateEvidence: 0,
227
- complete: false
228
- };
229
- for (const [callerFile, refs] of allRefs) {
230
- const callerFileKey = normalizeMapKey(callerFile);
231
- const callerSymbols = canonicalSymbols.get(callerFileKey) ?? [];
232
- for (const ref of refs) {
233
- totalRefs++;
234
- if (!hasInputCoverage) {
235
- coverage.totalEvidence++;
236
- if (ref.evidenceKind === "references" || ref.referenceKind === "type")
237
- coverage.referencesEvidence++;
238
- else
239
- coverage.callsEvidence++;
240
- }
241
- if (ref.referenceKind === "type") {
242
- if (!hasInputCoverage)
243
- coverage.typeOnlyEvidence++;
244
- continue;
245
- }
246
- if (ref.evidenceKind && ref.referenceKind !== "call") {
247
- if (!hasInputCoverage)
248
- coverage.unsupportedEvidence++;
249
- continue;
250
- }
251
- const candidates = [];
252
- if (ref.targetId) {
253
- const callee = defIndex.byId.get(ref.targetId);
254
- if (!callee || ref.resolution === "name-only" || ref.resolution === "unresolved") {
255
- if (!hasInputCoverage) {
256
- unresolvedRefs++;
257
- coverage.unresolvedEvidence++;
258
- }
259
- continue;
260
- }
261
- candidates.push({
262
- callee,
263
- resolution: ref.resolution ?? "exact",
264
- candidateCount: 1
265
- });
266
- } else {
267
- const refName = ref.symbolName ?? parseSymbolKey(ref.symbolId, callerFile).symbolName ?? "";
268
- if (STDLIB_NAMES.has(refName) || !refName) {
269
- if (!hasInputCoverage)
270
- coverage.unsupportedEvidence++;
271
- continue;
272
- }
273
- const defs = defIndex.byName.get(refName);
274
- if (!defs || defs.length === 0) {
275
- if (!hasInputCoverage) {
276
- unresolvedRefs++;
277
- coverage.unresolvedEvidence++;
278
- }
279
- continue;
280
- }
281
- const crossFileDefs = defs.map((id) => defIndex.byId.get(id)).filter((candidate) => candidate !== undefined && normalizeMapKey(candidate.filePath) !== callerFileKey);
282
- if (crossFileDefs.length === 0) {
283
- if (!hasInputCoverage)
284
- coverage.unsupportedEvidence++;
285
- continue;
286
- }
287
- const resolution = crossFileDefs.length === 1 ? "exact" : "name-only";
288
- for (const callee of crossFileDefs) {
289
- candidates.push({
290
- callee,
291
- resolution,
292
- candidateCount: crossFileDefs.length
293
- });
294
- }
295
- }
296
- if (ref.evidenceKind && candidates.some(({ resolution }) => resolution === "name-only")) {
297
- if (!hasInputCoverage) {
298
- unresolvedRefs++;
299
- coverage.unresolvedEvidence++;
300
- }
301
- continue;
302
- }
303
- const caller = ref.callerSymbolId ? defIndex.byId.get(ref.callerSymbolId) : undefined;
304
- const enclosing = caller ?? findEnclosingSymbol(callerSymbols, ref.line);
305
- const callerKey = enclosing?.id ?? `file:${callerFile}`;
306
- let producedEdge = false;
307
- let duplicateRef = false;
308
- for (const { callee, resolution, candidateCount } of candidates) {
309
- if (normalizeMapKey(callee.filePath) === callerFileKey) {
310
- coverage.sameFileEvidence++;
311
- if (hasInputCoverage) {
312
- coverage.eligibleEvidence--;
313
- coverage.resolvedEvidence--;
314
- }
315
- continue;
316
- }
317
- producedEdge = true;
318
- const pairKey = `${callerKey}\x00${callee.id}`;
319
- const existing = edgeByPair.get(pairKey);
320
- if (existing) {
321
- existing.evidenceCount = (existing.evidenceCount ?? 1) + 1;
322
- existing.evidenceKind = existing.evidenceKind === ref.evidenceKind ? existing.evidenceKind : "mixed";
323
- duplicateRef = true;
324
- continue;
325
- }
326
- const weight = ref.evidenceKind ? 1 : 1 / Math.max(1, candidateCount);
327
- const edge = {
328
- callerFile,
329
- callerSymbol: enclosing?.name,
330
- callerKey,
331
- callerKind: enclosing?.kind,
332
- callerLine: enclosing?.line,
333
- callerColumn: enclosing?.column,
334
- calleeFile: callee.filePath,
335
- calleeSymbol: callee.name,
336
- calleeKey: callee.id,
337
- calleeKind: callee.kind,
338
- calleeLine: callee.line,
339
- calleeColumn: callee.column,
340
- evidenceKind: ref.evidenceKind,
341
- resolution,
342
- evidenceCount: 1,
343
- weight
344
- };
345
- edgeByPair.set(pairKey, edge);
346
- const callerCallees = callees.get(callerKey) ?? new Set;
347
- callerCallees.add(callee.id);
348
- callees.set(callerKey, callerCallees);
349
- const calleeCallers = callers.get(callee.id) ?? new Set;
350
- calleeCallers.add(callerKey);
351
- callers.set(callee.id, calleeCallers);
352
- inDegree.set(callee.id, (inDegree.get(callee.id) ?? 0) + weight);
353
- }
354
- if (!hasInputCoverage && producedEdge) {
355
- coverage.eligibleEvidence++;
356
- coverage.resolvedEvidence++;
357
- if (duplicateRef)
358
- coverage.duplicateEvidence++;
359
- }
360
- if (hasInputCoverage && producedEdge && duplicateRef)
361
- coverage.duplicateEvidence++;
362
- }
363
- }
364
- if (hasInputCoverage)
365
- totalRefs = coverage.totalEvidence;
366
- const languagesKnownComplete = Object.values(coverage.languages ?? {}).every((status) => status === "complete");
367
- coverage.complete = coverage.complete && hasInputCoverage && coverage.unsupportedEvidence === 0 && languagesKnownComplete && (allSymbols.size > 0 || coverage.totalEvidence > 0);
368
- return {
369
- callees,
370
- callers,
371
- inDegree,
372
- edges: [...edgeByPair.values()],
373
- unresolvedRefs: hasInputCoverage ? coverage.unresolvedEvidence : unresolvedRefs,
374
- totalRefs,
375
- coverage,
376
- builtAt: new Date().toISOString()
377
- };
378
- }
379
- function cacheFilePath(cwd) {
380
- return path.join(getProjectDataDir(cwd), "cache", "call-graph.json");
381
- }
382
- function metaFilePath(cwd) {
383
- return path.join(getProjectDataDir(cwd), "cache", "call-graph.meta.json");
384
- }
385
- export function saveCallGraph(cwd, graph, identity) {
386
- const cacheFile = cacheFilePath(cwd);
387
- const metaFile = metaFilePath(cwd);
388
- try {
389
- fs.mkdirSync(path.dirname(cacheFile), { recursive: true });
390
- const persisted = {
391
- version: CALL_GRAPH_CACHE_VERSION,
392
- builtAt: graph.builtAt,
393
- reviewGraphVersion: identity.reviewGraphVersion,
394
- reviewGraphSignature: identity.reviewGraphSignature,
395
- edges: graph.edges,
396
- callees: [...graph.callees.entries()].map(([k, v]) => [k, [...v]]),
397
- callers: [...graph.callers.entries()].map(([k, v]) => [k, [...v]]),
398
- inDegree: [...graph.inDegree.entries()],
399
- totalRefs: graph.totalRefs,
400
- unresolvedRefs: graph.unresolvedRefs,
401
- coverage: graph.coverage
402
- };
403
- writeFileAtomic(cacheFile, JSON.stringify(persisted));
404
- writeFileAtomic(metaFile, JSON.stringify({
405
- savedAt: new Date().toISOString(),
406
- edgeCount: graph.edges.length
407
- }));
408
- } catch {}
409
- }
410
- function inferLegacyCoverage(edges) {
411
- let weightedTotalEvidence = 0;
412
- let weightedReferencesEvidence = 0;
413
- let weightedDuplicateEvidence = 0;
414
- for (const edge of edges) {
415
- const count = Number.isFinite(edge.evidenceCount) && (edge.evidenceCount ?? 0) > 0 ? Math.floor(edge.evidenceCount) : 1;
416
- const weight = Number.isFinite(edge.weight) && edge.weight >= 0 ? edge.weight : 1;
417
- weightedTotalEvidence += count * weight;
418
- weightedDuplicateEvidence += Math.max(0, count - 1) * weight;
419
- if (edge.evidenceKind === "references")
420
- weightedReferencesEvidence += count * weight;
421
- }
422
- const totalEvidence = Math.max(0, Math.round(weightedTotalEvidence));
423
- const referencesEvidence = Math.max(0, Math.round(weightedReferencesEvidence));
424
- const duplicateEvidence = Math.max(0, Math.round(weightedDuplicateEvidence));
425
- return {
426
- totalEvidence,
427
- callsEvidence: totalEvidence - referencesEvidence,
428
- referencesEvidence,
429
- eligibleEvidence: totalEvidence,
430
- resolvedEvidence: totalEvidence,
431
- unresolvedEvidence: 0,
432
- typeOnlyEvidence: 0,
433
- unsupportedEvidence: 0,
434
- sameFileEvidence: 0,
435
- duplicateEvidence,
436
- complete: false
437
- };
438
- }
439
- function loadCoverage(rawCoverage, edges) {
440
- const inferred = inferLegacyCoverage(edges);
441
- return rawCoverage ? {
442
- ...inferred,
443
- ...rawCoverage
444
- } : inferred;
445
- }
446
- function finiteCount(value) {
447
- return typeof value === "number" && Number.isInteger(value) && value >= 0;
448
- }
449
- function countsMatch(left, right) {
450
- return Math.abs(left - right) <= 0.000000001 * Math.max(1, Math.abs(left), Math.abs(right));
451
- }
452
- function validatePersistedCallGraph(raw, coverage) {
453
- const nonEmptyString = (value) => typeof value === "string" && value.trim().length > 0;
454
- const enumValue = (value, values) => typeof value === "string" && values.includes(value);
455
- const edgeKinds = ["calls", "references", "mixed"];
456
- const resolutions = [
457
- "exact",
458
- "import",
459
- "receiver-type",
460
- "name-only",
461
- "unresolved"
462
- ];
463
- if (!raw || raw.version !== CALL_GRAPH_CACHE_VERSION || !nonEmptyString(raw.builtAt))
464
- return false;
465
- if (!nonEmptyString(raw.reviewGraphVersion) || !nonEmptyString(raw.reviewGraphSignature))
466
- return false;
467
- if (raw.coverage !== undefined && (!raw.coverage || typeof raw.coverage !== "object" || Array.isArray(raw.coverage)))
468
- return false;
469
- if (!Array.isArray(raw.edges) || !Array.isArray(raw.callees) || !Array.isArray(raw.callers) || !Array.isArray(raw.inDegree))
470
- return false;
471
- const coverageValues = [
472
- coverage.totalEvidence,
473
- coverage.callsEvidence,
474
- coverage.referencesEvidence,
475
- coverage.eligibleEvidence,
476
- coverage.resolvedEvidence,
477
- coverage.unresolvedEvidence,
478
- coverage.typeOnlyEvidence,
479
- coverage.unsupportedEvidence,
480
- coverage.sameFileEvidence,
481
- coverage.duplicateEvidence
482
- ];
483
- if (typeof coverage.complete !== "boolean" || coverageValues.some((value) => !finiteCount(value)))
484
- return false;
485
- if (coverage.languages !== undefined && (!coverage.languages || typeof coverage.languages !== "object" || Array.isArray(coverage.languages) || Object.entries(coverage.languages).some(([language, status]) => !nonEmptyString(language) || !enumValue(status, ["complete", "partial", "unavailable"]))))
486
- return false;
487
- if (coverage.callsEvidence + coverage.referencesEvidence !== coverage.totalEvidence)
488
- return false;
489
- if (coverage.resolvedEvidence > coverage.eligibleEvidence)
490
- return false;
491
- if (coverage.eligibleEvidence !== coverage.resolvedEvidence)
492
- return false;
493
- if (coverage.resolvedEvidence + coverage.unresolvedEvidence + coverage.typeOnlyEvidence + coverage.unsupportedEvidence + coverage.sameFileEvidence !== coverage.totalEvidence)
494
- return false;
495
- if (coverage.complete && coverage.unsupportedEvidence > 0)
496
- return false;
497
- if (coverage.complete && Object.values(coverage.languages ?? {}).some((status) => status !== "complete"))
498
- return false;
499
- const expectedCallees = new Map;
500
- const expectedCallers = new Map;
501
- const expectedInDegree = new Map;
502
- const pairKeys = new Set;
503
- let weightedEdgeEvidence = 0;
504
- let weightedDuplicateEvidence = 0;
505
- for (const edge of raw.edges) {
506
- if (!edge || typeof edge !== "object" || !nonEmptyString(edge.callerKey) || !nonEmptyString(edge.calleeKey) || !nonEmptyString(edge.callerFile) || !nonEmptyString(edge.calleeFile) || !nonEmptyString(edge.calleeSymbol) || typeof edge.weight !== "number" || !Number.isFinite(edge.weight) || edge.weight <= 0 || edge.weight > 1)
507
- return false;
508
- if (edge.callerSymbol !== undefined && !nonEmptyString(edge.callerSymbol))
509
- return false;
510
- if (edge.callerKind !== undefined && !nonEmptyString(edge.callerKind))
511
- return false;
512
- if (edge.calleeKind !== undefined && !nonEmptyString(edge.calleeKind))
513
- return false;
514
- if (edge.evidenceKind !== undefined && !enumValue(edge.evidenceKind, edgeKinds))
515
- return false;
516
- if (edge.resolution !== undefined && !enumValue(edge.resolution, resolutions))
517
- return false;
518
- if (edge.evidenceCount !== undefined && (!finiteCount(edge.evidenceCount) || edge.evidenceCount < 1))
519
- return false;
520
- const evidenceCount = edge.evidenceCount ?? 1;
521
- const callerIdentity = parseCanonicalSymbolKey(edge.callerKey, edge.callerFile);
522
- const calleeIdentity = parseCanonicalSymbolKey(edge.calleeKey, edge.calleeFile);
523
- if (normalizeMapKey(callerIdentity.filePath) !== normalizeMapKey(edge.callerFile) || normalizeMapKey(calleeIdentity.filePath) !== normalizeMapKey(edge.calleeFile) || calleeIdentity.symbolName !== undefined && calleeIdentity.symbolName !== edge.calleeSymbol || callerIdentity.symbolName !== undefined && edge.callerSymbol !== undefined && callerIdentity.symbolName !== edge.callerSymbol)
524
- return false;
525
- const pair = `${edge.callerKey}\x00${edge.calleeKey}`;
526
- if (pairKeys.has(pair))
527
- return false;
528
- pairKeys.add(pair);
529
- weightedEdgeEvidence += evidenceCount * edge.weight;
530
- weightedDuplicateEvidence += (evidenceCount - 1) * edge.weight;
531
- const callees = expectedCallees.get(edge.callerKey) ?? new Set;
532
- callees.add(edge.calleeKey);
533
- expectedCallees.set(edge.callerKey, callees);
534
- const callers = expectedCallers.get(edge.calleeKey) ?? new Set;
535
- callers.add(edge.callerKey);
536
- expectedCallers.set(edge.calleeKey, callers);
537
- expectedInDegree.set(edge.calleeKey, (expectedInDegree.get(edge.calleeKey) ?? 0) + edge.weight);
538
- }
539
- if (!countsMatch(weightedEdgeEvidence, coverage.resolvedEvidence))
540
- return false;
541
- if (!countsMatch(weightedDuplicateEvidence, coverage.duplicateEvidence))
542
- return false;
543
- if (!countsMatch(coverage.totalEvidence, weightedEdgeEvidence + coverage.unresolvedEvidence + coverage.typeOnlyEvidence + coverage.unsupportedEvidence + coverage.sameFileEvidence))
544
- return false;
545
- if (raw.totalRefs !== undefined && !finiteCount(raw.totalRefs))
546
- return false;
547
- if (raw.unresolvedRefs !== undefined && !finiteCount(raw.unresolvedRefs))
548
- return false;
549
- if (raw.totalRefs !== undefined && raw.totalRefs !== coverage.totalEvidence)
550
- return false;
551
- if (raw.unresolvedRefs !== undefined && raw.unresolvedRefs !== coverage.unresolvedEvidence)
552
- return false;
553
- const readAdjacency = (entries) => {
554
- const result = new Map;
555
- if (!Array.isArray(entries))
556
- return;
557
- for (const entry of entries) {
558
- if (!Array.isArray(entry) || !nonEmptyString(entry[0]) || !Array.isArray(entry[1]) || entry[1].some((key) => !nonEmptyString(key)))
559
- return;
560
- const keys = entry[1];
561
- if (new Set(keys).size !== keys.length || result.has(entry[0]))
562
- return;
563
- result.set(entry[0], new Set(keys));
564
- }
565
- return result;
566
- };
567
- const actualCallees = readAdjacency(raw.callees);
568
- const actualCallers = readAdjacency(raw.callers);
569
- if (!actualCallees || !actualCallers || actualCallees.size !== expectedCallees.size || actualCallers.size !== expectedCallers.size)
570
- return false;
571
- const sameSets = (actual, expected) => {
572
- for (const [key, values] of expected) {
573
- const got = actual.get(key);
574
- if (!got || got.size !== values.size || [...values].some((value) => !got.has(value)))
575
- return false;
576
- }
577
- return true;
578
- };
579
- if (!sameSets(actualCallees, expectedCallees) || !sameSets(actualCallers, expectedCallers))
580
- return false;
581
- const actualInDegree = new Map;
582
- for (const entry of raw.inDegree) {
583
- if (!Array.isArray(entry) || !nonEmptyString(entry[0]) || typeof entry[1] !== "number" || !Number.isFinite(entry[1]) || entry[1] < 0 || actualInDegree.has(entry[0]))
584
- return false;
585
- actualInDegree.set(entry[0], entry[1]);
586
- }
587
- if (actualInDegree.size !== expectedInDegree.size)
588
- return false;
589
- for (const [key, value] of expectedInDegree) {
590
- if (actualInDegree.get(key) !== value)
591
- return false;
592
- }
593
- return true;
594
- }
595
- export function loadCallGraph(cwd, expectedIdentity) {
596
- const cacheFile = cacheFilePath(cwd);
597
- try {
598
- const raw = JSON.parse(fs.readFileSync(cacheFile, "utf-8"));
599
- if (raw.version !== CALL_GRAPH_CACHE_VERSION)
600
- return;
601
- if (typeof raw.reviewGraphVersion !== "string" || typeof raw.reviewGraphSignature !== "string")
602
- return;
603
- const identity = {
604
- reviewGraphVersion: raw.reviewGraphVersion,
605
- reviewGraphSignature: raw.reviewGraphSignature
606
- };
607
- if (expectedIdentity && (identity.reviewGraphVersion !== expectedIdentity.reviewGraphVersion || identity.reviewGraphSignature !== expectedIdentity.reviewGraphSignature))
608
- return;
609
- const coverage = loadCoverage(raw.coverage, raw.edges);
610
- if (!validatePersistedCallGraph(raw, coverage))
611
- return;
612
- return {
613
- graph: {
614
- callees: new Map(raw.callees.map(([k, v]) => [k, new Set(v)])),
615
- callers: new Map(raw.callers.map(([k, v]) => [k, new Set(v)])),
616
- inDegree: new Map(raw.inDegree),
617
- edges: raw.edges,
618
- unresolvedRefs: raw.unresolvedRefs ?? coverage.unresolvedEvidence,
619
- totalRefs: raw.totalRefs ?? coverage.totalEvidence,
620
- coverage,
621
- builtAt: raw.builtAt
622
- },
623
- identity
624
- };
625
- } catch {
626
- return;
627
- }
628
- }