@opensip-cli/graph 0.1.0

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 (836) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +8 -0
  3. package/README.md +31 -0
  4. package/dist/__tests__/baseline-plane.test.d.ts +11 -0
  5. package/dist/__tests__/baseline-plane.test.d.ts.map +1 -0
  6. package/dist/__tests__/baseline-plane.test.js +60 -0
  7. package/dist/__tests__/baseline-plane.test.js.map +1 -0
  8. package/dist/__tests__/cache/engine-version.test.d.ts +12 -0
  9. package/dist/__tests__/cache/engine-version.test.d.ts.map +1 -0
  10. package/dist/__tests__/cache/engine-version.test.js +79 -0
  11. package/dist/__tests__/cache/engine-version.test.js.map +1 -0
  12. package/dist/__tests__/cache/invalidate.test.d.ts +9 -0
  13. package/dist/__tests__/cache/invalidate.test.d.ts.map +1 -0
  14. package/dist/__tests__/cache/invalidate.test.js +228 -0
  15. package/dist/__tests__/cache/invalidate.test.js.map +1 -0
  16. package/dist/__tests__/cli/contribution-from-signals.test.d.ts +17 -0
  17. package/dist/__tests__/cli/contribution-from-signals.test.d.ts.map +1 -0
  18. package/dist/__tests__/cli/contribution-from-signals.test.js +89 -0
  19. package/dist/__tests__/cli/contribution-from-signals.test.js.map +1 -0
  20. package/dist/__tests__/cli/detect.test.d.ts +2 -0
  21. package/dist/__tests__/cli/detect.test.d.ts.map +1 -0
  22. package/dist/__tests__/cli/detect.test.js +96 -0
  23. package/dist/__tests__/cli/detect.test.js.map +1 -0
  24. package/dist/__tests__/cli/graph-config.test.d.ts +9 -0
  25. package/dist/__tests__/cli/graph-config.test.d.ts.map +1 -0
  26. package/dist/__tests__/cli/graph-config.test.js +113 -0
  27. package/dist/__tests__/cli/graph-config.test.js.map +1 -0
  28. package/dist/__tests__/cli/graph-execute.test.d.ts +9 -0
  29. package/dist/__tests__/cli/graph-execute.test.d.ts.map +1 -0
  30. package/dist/__tests__/cli/graph-execute.test.js +434 -0
  31. package/dist/__tests__/cli/graph-execute.test.js.map +1 -0
  32. package/dist/__tests__/cli/graph.test.d.ts +12 -0
  33. package/dist/__tests__/cli/graph.test.d.ts.map +1 -0
  34. package/dist/__tests__/cli/graph.test.js +589 -0
  35. package/dist/__tests__/cli/graph.test.js.map +1 -0
  36. package/dist/__tests__/cli/heap-preflight.test.d.ts +11 -0
  37. package/dist/__tests__/cli/heap-preflight.test.d.ts.map +1 -0
  38. package/dist/__tests__/cli/heap-preflight.test.js +150 -0
  39. package/dist/__tests__/cli/heap-preflight.test.js.map +1 -0
  40. package/dist/__tests__/cli/language-mismatch.test.d.ts +10 -0
  41. package/dist/__tests__/cli/language-mismatch.test.d.ts.map +1 -0
  42. package/dist/__tests__/cli/language-mismatch.test.js +155 -0
  43. package/dist/__tests__/cli/language-mismatch.test.js.map +1 -0
  44. package/dist/__tests__/cli/lookup.test.d.ts +7 -0
  45. package/dist/__tests__/cli/lookup.test.d.ts.map +1 -0
  46. package/dist/__tests__/cli/lookup.test.js +104 -0
  47. package/dist/__tests__/cli/lookup.test.js.map +1 -0
  48. package/dist/__tests__/cli/orchestrate.test.d.ts +12 -0
  49. package/dist/__tests__/cli/orchestrate.test.d.ts.map +1 -0
  50. package/dist/__tests__/cli/orchestrate.test.js +315 -0
  51. package/dist/__tests__/cli/orchestrate.test.js.map +1 -0
  52. package/dist/__tests__/cli/positional-paths.test.d.ts +5 -0
  53. package/dist/__tests__/cli/positional-paths.test.d.ts.map +1 -0
  54. package/dist/__tests__/cli/positional-paths.test.js +87 -0
  55. package/dist/__tests__/cli/positional-paths.test.js.map +1 -0
  56. package/dist/__tests__/cli/pressure-monitor.test.d.ts +11 -0
  57. package/dist/__tests__/cli/pressure-monitor.test.d.ts.map +1 -0
  58. package/dist/__tests__/cli/pressure-monitor.test.js +94 -0
  59. package/dist/__tests__/cli/pressure-monitor.test.js.map +1 -0
  60. package/dist/__tests__/cli/sarif-export.test.d.ts +8 -0
  61. package/dist/__tests__/cli/sarif-export.test.d.ts.map +1 -0
  62. package/dist/__tests__/cli/sarif-export.test.js +94 -0
  63. package/dist/__tests__/cli/sarif-export.test.js.map +1 -0
  64. package/dist/__tests__/cli/session-contract.test.d.ts +17 -0
  65. package/dist/__tests__/cli/session-contract.test.d.ts.map +1 -0
  66. package/dist/__tests__/cli/session-contract.test.js +225 -0
  67. package/dist/__tests__/cli/session-contract.test.js.map +1 -0
  68. package/dist/__tests__/cli/symbol-index.test.d.ts +7 -0
  69. package/dist/__tests__/cli/symbol-index.test.d.ts.map +1 -0
  70. package/dist/__tests__/cli/symbol-index.test.js +117 -0
  71. package/dist/__tests__/cli/symbol-index.test.js.map +1 -0
  72. package/dist/__tests__/cli/tool-show-mode.test.d.ts +10 -0
  73. package/dist/__tests__/cli/tool-show-mode.test.d.ts.map +1 -0
  74. package/dist/__tests__/cli/tool-show-mode.test.js +128 -0
  75. package/dist/__tests__/cli/tool-show-mode.test.js.map +1 -0
  76. package/dist/__tests__/cli/workspace-runner-polyglot.test.d.ts +10 -0
  77. package/dist/__tests__/cli/workspace-runner-polyglot.test.d.ts.map +1 -0
  78. package/dist/__tests__/cli/workspace-runner-polyglot.test.js +120 -0
  79. package/dist/__tests__/cli/workspace-runner-polyglot.test.js.map +1 -0
  80. package/dist/__tests__/graph-catalog-drift.test.d.ts +24 -0
  81. package/dist/__tests__/graph-catalog-drift.test.d.ts.map +1 -0
  82. package/dist/__tests__/graph-catalog-drift.test.js +34 -0
  83. package/dist/__tests__/graph-catalog-drift.test.js.map +1 -0
  84. package/dist/__tests__/internal-surface.test.d.ts +17 -0
  85. package/dist/__tests__/internal-surface.test.d.ts.map +1 -0
  86. package/dist/__tests__/internal-surface.test.js +45 -0
  87. package/dist/__tests__/internal-surface.test.js.map +1 -0
  88. package/dist/__tests__/lang-adapter/body-digest.test.d.ts +13 -0
  89. package/dist/__tests__/lang-adapter/body-digest.test.d.ts.map +1 -0
  90. package/dist/__tests__/lang-adapter/body-digest.test.js +51 -0
  91. package/dist/__tests__/lang-adapter/body-digest.test.js.map +1 -0
  92. package/dist/__tests__/lang-adapter/edge-helpers.test.d.ts +12 -0
  93. package/dist/__tests__/lang-adapter/edge-helpers.test.d.ts.map +1 -0
  94. package/dist/__tests__/lang-adapter/edge-helpers.test.js +147 -0
  95. package/dist/__tests__/lang-adapter/edge-helpers.test.js.map +1 -0
  96. package/dist/__tests__/lang-adapter/registry.test.d.ts +9 -0
  97. package/dist/__tests__/lang-adapter/registry.test.d.ts.map +1 -0
  98. package/dist/__tests__/lang-adapter/registry.test.js +228 -0
  99. package/dist/__tests__/lang-adapter/registry.test.js.map +1 -0
  100. package/dist/__tests__/persistence/catalog-repo.test.d.ts +2 -0
  101. package/dist/__tests__/persistence/catalog-repo.test.d.ts.map +1 -0
  102. package/dist/__tests__/persistence/catalog-repo.test.js +188 -0
  103. package/dist/__tests__/persistence/catalog-repo.test.js.map +1 -0
  104. package/dist/__tests__/persistence/session-payload.test.d.ts +2 -0
  105. package/dist/__tests__/persistence/session-payload.test.d.ts.map +1 -0
  106. package/dist/__tests__/persistence/session-payload.test.js +81 -0
  107. package/dist/__tests__/persistence/session-payload.test.js.map +1 -0
  108. package/dist/__tests__/persistence/session-replay.test.d.ts +10 -0
  109. package/dist/__tests__/persistence/session-replay.test.d.ts.map +1 -0
  110. package/dist/__tests__/persistence/session-replay.test.js +196 -0
  111. package/dist/__tests__/persistence/session-replay.test.js.map +1 -0
  112. package/dist/__tests__/public-api.test.d.ts +19 -0
  113. package/dist/__tests__/public-api.test.d.ts.map +1 -0
  114. package/dist/__tests__/public-api.test.js +96 -0
  115. package/dist/__tests__/public-api.test.js.map +1 -0
  116. package/dist/__tests__/render/catalog-json-types.test.d.ts +10 -0
  117. package/dist/__tests__/render/catalog-json-types.test.d.ts.map +1 -0
  118. package/dist/__tests__/render/catalog-json-types.test.js +121 -0
  119. package/dist/__tests__/render/catalog-json-types.test.js.map +1 -0
  120. package/dist/__tests__/render/catalog-json.test.d.ts +19 -0
  121. package/dist/__tests__/render/catalog-json.test.d.ts.map +1 -0
  122. package/dist/__tests__/render/catalog-json.test.js +435 -0
  123. package/dist/__tests__/render/catalog-json.test.js.map +1 -0
  124. package/dist/__tests__/render/opensip-id-derivation.test.d.ts +21 -0
  125. package/dist/__tests__/render/opensip-id-derivation.test.d.ts.map +1 -0
  126. package/dist/__tests__/render/opensip-id-derivation.test.js +159 -0
  127. package/dist/__tests__/render/opensip-id-derivation.test.js.map +1 -0
  128. package/dist/__tests__/render/rule-id-mapping.test.d.ts +13 -0
  129. package/dist/__tests__/render/rule-id-mapping.test.d.ts.map +1 -0
  130. package/dist/__tests__/render/rule-id-mapping.test.js +50 -0
  131. package/dist/__tests__/render/rule-id-mapping.test.js.map +1 -0
  132. package/dist/__tests__/render/sarif-opensip.test.d.ts +20 -0
  133. package/dist/__tests__/render/sarif-opensip.test.d.ts.map +1 -0
  134. package/dist/__tests__/render/sarif-opensip.test.js +235 -0
  135. package/dist/__tests__/render/sarif-opensip.test.js.map +1 -0
  136. package/dist/__tests__/resolution-mode.test.d.ts +10 -0
  137. package/dist/__tests__/resolution-mode.test.d.ts.map +1 -0
  138. package/dist/__tests__/resolution-mode.test.js +96 -0
  139. package/dist/__tests__/resolution-mode.test.js.map +1 -0
  140. package/dist/__tests__/resolve-callee.test.d.ts +2 -0
  141. package/dist/__tests__/resolve-callee.test.d.ts.map +1 -0
  142. package/dist/__tests__/resolve-callee.test.js +119 -0
  143. package/dist/__tests__/resolve-callee.test.js.map +1 -0
  144. package/dist/__tests__/rules/_entry-points.test.d.ts +8 -0
  145. package/dist/__tests__/rules/_entry-points.test.d.ts.map +1 -0
  146. package/dist/__tests__/rules/_entry-points.test.js +74 -0
  147. package/dist/__tests__/rules/_entry-points.test.js.map +1 -0
  148. package/dist/__tests__/rules/_helpers.d.ts +18 -0
  149. package/dist/__tests__/rules/_helpers.d.ts.map +1 -0
  150. package/dist/__tests__/rules/_helpers.js +72 -0
  151. package/dist/__tests__/rules/_helpers.js.map +1 -0
  152. package/dist/__tests__/rules/always-throws-branch.test.d.ts +9 -0
  153. package/dist/__tests__/rules/always-throws-branch.test.d.ts.map +1 -0
  154. package/dist/__tests__/rules/always-throws-branch.test.js +113 -0
  155. package/dist/__tests__/rules/always-throws-branch.test.js.map +1 -0
  156. package/dist/__tests__/rules/cycle-and-coupling.test.d.ts +13 -0
  157. package/dist/__tests__/rules/cycle-and-coupling.test.d.ts.map +1 -0
  158. package/dist/__tests__/rules/cycle-and-coupling.test.js +224 -0
  159. package/dist/__tests__/rules/cycle-and-coupling.test.js.map +1 -0
  160. package/dist/__tests__/rules/duplicated-function-body-config.test.d.ts +8 -0
  161. package/dist/__tests__/rules/duplicated-function-body-config.test.d.ts.map +1 -0
  162. package/dist/__tests__/rules/duplicated-function-body-config.test.js +132 -0
  163. package/dist/__tests__/rules/duplicated-function-body-config.test.js.map +1 -0
  164. package/dist/__tests__/rules/duplicated-function-body-cross-package.test.d.ts +10 -0
  165. package/dist/__tests__/rules/duplicated-function-body-cross-package.test.d.ts.map +1 -0
  166. package/dist/__tests__/rules/duplicated-function-body-cross-package.test.js +274 -0
  167. package/dist/__tests__/rules/duplicated-function-body-cross-package.test.js.map +1 -0
  168. package/dist/__tests__/rules/feature-column-parity.test.d.ts +11 -0
  169. package/dist/__tests__/rules/feature-column-parity.test.d.ts.map +1 -0
  170. package/dist/__tests__/rules/feature-column-parity.test.js +169 -0
  171. package/dist/__tests__/rules/feature-column-parity.test.js.map +1 -0
  172. package/dist/__tests__/rules/high-blast-untested.test.d.ts +13 -0
  173. package/dist/__tests__/rules/high-blast-untested.test.d.ts.map +1 -0
  174. package/dist/__tests__/rules/high-blast-untested.test.js +108 -0
  175. package/dist/__tests__/rules/high-blast-untested.test.js.map +1 -0
  176. package/dist/__tests__/rules/large-function.test.d.ts +11 -0
  177. package/dist/__tests__/rules/large-function.test.d.ts.map +1 -0
  178. package/dist/__tests__/rules/large-function.test.js +105 -0
  179. package/dist/__tests__/rules/large-function.test.js.map +1 -0
  180. package/dist/__tests__/rules/no-side-effect-path.test.d.ts +10 -0
  181. package/dist/__tests__/rules/no-side-effect-path.test.d.ts.map +1 -0
  182. package/dist/__tests__/rules/no-side-effect-path.test.js +301 -0
  183. package/dist/__tests__/rules/no-side-effect-path.test.js.map +1 -0
  184. package/dist/__tests__/rules/orphan-subtree-config.test.d.ts +8 -0
  185. package/dist/__tests__/rules/orphan-subtree-config.test.d.ts.map +1 -0
  186. package/dist/__tests__/rules/orphan-subtree-config.test.js +176 -0
  187. package/dist/__tests__/rules/orphan-subtree-config.test.js.map +1 -0
  188. package/dist/__tests__/rules/registry.test.d.ts +11 -0
  189. package/dist/__tests__/rules/registry.test.d.ts.map +1 -0
  190. package/dist/__tests__/rules/registry.test.js +50 -0
  191. package/dist/__tests__/rules/registry.test.js.map +1 -0
  192. package/dist/__tests__/rules/severity-override.test.d.ts +11 -0
  193. package/dist/__tests__/rules/severity-override.test.d.ts.map +1 -0
  194. package/dist/__tests__/rules/severity-override.test.js +67 -0
  195. package/dist/__tests__/rules/severity-override.test.js.map +1 -0
  196. package/dist/__tests__/rules/test-only-reachable.test.d.ts +9 -0
  197. package/dist/__tests__/rules/test-only-reachable.test.d.ts.map +1 -0
  198. package/dist/__tests__/rules/test-only-reachable.test.js +142 -0
  199. package/dist/__tests__/rules/test-only-reachable.test.js.map +1 -0
  200. package/dist/__tests__/rules/wide-function.test.d.ts +9 -0
  201. package/dist/__tests__/rules/wide-function.test.d.ts.map +1 -0
  202. package/dist/__tests__/rules/wide-function.test.js +64 -0
  203. package/dist/__tests__/rules/wide-function.test.js.map +1 -0
  204. package/dist/__tests__/test-utils/with-graph-scope.d.ts +14 -0
  205. package/dist/__tests__/test-utils/with-graph-scope.d.ts.map +1 -0
  206. package/dist/__tests__/test-utils/with-graph-scope.js +26 -0
  207. package/dist/__tests__/test-utils/with-graph-scope.js.map +1 -0
  208. package/dist/__tests__/tool-branches.test.d.ts +18 -0
  209. package/dist/__tests__/tool-branches.test.d.ts.map +1 -0
  210. package/dist/__tests__/tool-branches.test.js +262 -0
  211. package/dist/__tests__/tool-branches.test.js.map +1 -0
  212. package/dist/__tests__/tool-register.test.d.ts +16 -0
  213. package/dist/__tests__/tool-register.test.d.ts.map +1 -0
  214. package/dist/__tests__/tool-register.test.js +419 -0
  215. package/dist/__tests__/tool-register.test.js.map +1 -0
  216. package/dist/__tests__/tool.test.d.ts +18 -0
  217. package/dist/__tests__/tool.test.d.ts.map +1 -0
  218. package/dist/__tests__/tool.test.js +65 -0
  219. package/dist/__tests__/tool.test.js.map +1 -0
  220. package/dist/baseline-strategy.d.ts +28 -0
  221. package/dist/baseline-strategy.d.ts.map +1 -0
  222. package/dist/baseline-strategy.js +27 -0
  223. package/dist/baseline-strategy.js.map +1 -0
  224. package/dist/cache/engine-version.d.ts +69 -0
  225. package/dist/cache/engine-version.d.ts.map +1 -0
  226. package/dist/cache/engine-version.js +60 -0
  227. package/dist/cache/engine-version.js.map +1 -0
  228. package/dist/cache/invalidate.d.ts +60 -0
  229. package/dist/cache/invalidate.d.ts.map +1 -0
  230. package/dist/cache/invalidate.js +120 -0
  231. package/dist/cache/invalidate.js.map +1 -0
  232. package/dist/cli/__tests__/build-envelope.test.d.ts +8 -0
  233. package/dist/cli/__tests__/build-envelope.test.d.ts.map +1 -0
  234. package/dist/cli/__tests__/build-envelope.test.js +70 -0
  235. package/dist/cli/__tests__/build-envelope.test.js.map +1 -0
  236. package/dist/cli/__tests__/dispatch-envelope.test.d.ts +15 -0
  237. package/dist/cli/__tests__/dispatch-envelope.test.d.ts.map +1 -0
  238. package/dist/cli/__tests__/dispatch-envelope.test.js +73 -0
  239. package/dist/cli/__tests__/dispatch-envelope.test.js.map +1 -0
  240. package/dist/cli/__tests__/dispatch-suppression-root.test.d.ts +18 -0
  241. package/dist/cli/__tests__/dispatch-suppression-root.test.d.ts.map +1 -0
  242. package/dist/cli/__tests__/dispatch-suppression-root.test.js +91 -0
  243. package/dist/cli/__tests__/dispatch-suppression-root.test.js.map +1 -0
  244. package/dist/cli/__tests__/graph-config-schema.test.d.ts +7 -0
  245. package/dist/cli/__tests__/graph-config-schema.test.d.ts.map +1 -0
  246. package/dist/cli/__tests__/graph-config-schema.test.js +60 -0
  247. package/dist/cli/__tests__/graph-config-schema.test.js.map +1 -0
  248. package/dist/cli/__tests__/graph-gate-mode.test.d.ts +15 -0
  249. package/dist/cli/__tests__/graph-gate-mode.test.d.ts.map +1 -0
  250. package/dist/cli/__tests__/graph-gate-mode.test.js +99 -0
  251. package/dist/cli/__tests__/graph-gate-mode.test.js.map +1 -0
  252. package/dist/cli/__tests__/graph-recipes.test.d.ts +7 -0
  253. package/dist/cli/__tests__/graph-recipes.test.d.ts.map +1 -0
  254. package/dist/cli/__tests__/graph-recipes.test.js +24 -0
  255. package/dist/cli/__tests__/graph-recipes.test.js.map +1 -0
  256. package/dist/cli/__tests__/graph-report.test.d.ts +7 -0
  257. package/dist/cli/__tests__/graph-report.test.d.ts.map +1 -0
  258. package/dist/cli/__tests__/graph-report.test.js +138 -0
  259. package/dist/cli/__tests__/graph-report.test.js.map +1 -0
  260. package/dist/cli/__tests__/graph-tracer.test.d.ts +11 -0
  261. package/dist/cli/__tests__/graph-tracer.test.d.ts.map +1 -0
  262. package/dist/cli/__tests__/graph-tracer.test.js +41 -0
  263. package/dist/cli/__tests__/graph-tracer.test.js.map +1 -0
  264. package/dist/cli/__tests__/graph-worker.test.d.ts +13 -0
  265. package/dist/cli/__tests__/graph-worker.test.d.ts.map +1 -0
  266. package/dist/cli/__tests__/graph-worker.test.js +127 -0
  267. package/dist/cli/__tests__/graph-worker.test.js.map +1 -0
  268. package/dist/cli/__tests__/list-files.test.d.ts +12 -0
  269. package/dist/cli/__tests__/list-files.test.d.ts.map +1 -0
  270. package/dist/cli/__tests__/list-files.test.js +146 -0
  271. package/dist/cli/__tests__/list-files.test.js.map +1 -0
  272. package/dist/cli/__tests__/live-suppression-parity.test.d.ts +23 -0
  273. package/dist/cli/__tests__/live-suppression-parity.test.d.ts.map +1 -0
  274. package/dist/cli/__tests__/live-suppression-parity.test.js +136 -0
  275. package/dist/cli/__tests__/live-suppression-parity.test.js.map +1 -0
  276. package/dist/cli/__tests__/orchestrate-spans.test.d.ts +18 -0
  277. package/dist/cli/__tests__/orchestrate-spans.test.d.ts.map +1 -0
  278. package/dist/cli/__tests__/orchestrate-spans.test.js +108 -0
  279. package/dist/cli/__tests__/orchestrate-spans.test.js.map +1 -0
  280. package/dist/cli/__tests__/shard-worker.test.d.ts +10 -0
  281. package/dist/cli/__tests__/shard-worker.test.d.ts.map +1 -0
  282. package/dist/cli/__tests__/shard-worker.test.js +153 -0
  283. package/dist/cli/__tests__/shard-worker.test.js.map +1 -0
  284. package/dist/cli/__tests__/workspace-report.test.d.ts +6 -0
  285. package/dist/cli/__tests__/workspace-report.test.d.ts.map +1 -0
  286. package/dist/cli/__tests__/workspace-report.test.js +89 -0
  287. package/dist/cli/__tests__/workspace-report.test.js.map +1 -0
  288. package/dist/cli/apply-suppressions.d.ts +86 -0
  289. package/dist/cli/apply-suppressions.d.ts.map +1 -0
  290. package/dist/cli/apply-suppressions.js +101 -0
  291. package/dist/cli/apply-suppressions.js.map +1 -0
  292. package/dist/cli/apply-suppressions.test.d.ts +12 -0
  293. package/dist/cli/apply-suppressions.test.d.ts.map +1 -0
  294. package/dist/cli/apply-suppressions.test.js +85 -0
  295. package/dist/cli/apply-suppressions.test.js.map +1 -0
  296. package/dist/cli/build-envelope.d.ts +53 -0
  297. package/dist/cli/build-envelope.d.ts.map +1 -0
  298. package/dist/cli/build-envelope.js +88 -0
  299. package/dist/cli/build-envelope.js.map +1 -0
  300. package/dist/cli/detect.d.ts +37 -0
  301. package/dist/cli/detect.d.ts.map +1 -0
  302. package/dist/cli/detect.js +60 -0
  303. package/dist/cli/detect.js.map +1 -0
  304. package/dist/cli/equivalence-check-command.d.ts +45 -0
  305. package/dist/cli/equivalence-check-command.d.ts.map +1 -0
  306. package/dist/cli/equivalence-check-command.js +196 -0
  307. package/dist/cli/equivalence-check-command.js.map +1 -0
  308. package/dist/cli/graph/graph-aux-command-specs.d.ts +60 -0
  309. package/dist/cli/graph/graph-aux-command-specs.d.ts.map +1 -0
  310. package/dist/cli/graph/graph-aux-command-specs.js +390 -0
  311. package/dist/cli/graph/graph-aux-command-specs.js.map +1 -0
  312. package/dist/cli/graph/graph-command-spec.d.ts +43 -0
  313. package/dist/cli/graph/graph-command-spec.d.ts.map +1 -0
  314. package/dist/cli/graph/graph-command-spec.js +456 -0
  315. package/dist/cli/graph/graph-command-spec.js.map +1 -0
  316. package/dist/cli/graph-config-schema.d.ts +70 -0
  317. package/dist/cli/graph-config-schema.d.ts.map +1 -0
  318. package/dist/cli/graph-config-schema.js +68 -0
  319. package/dist/cli/graph-config-schema.js.map +1 -0
  320. package/dist/cli/graph-config.d.ts +53 -0
  321. package/dist/cli/graph-config.d.ts.map +1 -0
  322. package/dist/cli/graph-config.js +111 -0
  323. package/dist/cli/graph-config.js.map +1 -0
  324. package/dist/cli/graph-modes.d.ts +36 -0
  325. package/dist/cli/graph-modes.d.ts.map +1 -0
  326. package/dist/cli/graph-modes.js +161 -0
  327. package/dist/cli/graph-modes.js.map +1 -0
  328. package/dist/cli/graph-options.d.ts +143 -0
  329. package/dist/cli/graph-options.d.ts.map +1 -0
  330. package/dist/cli/graph-options.js +15 -0
  331. package/dist/cli/graph-options.js.map +1 -0
  332. package/dist/cli/graph-progress.d.ts +31 -0
  333. package/dist/cli/graph-progress.d.ts.map +1 -0
  334. package/dist/cli/graph-progress.js +56 -0
  335. package/dist/cli/graph-progress.js.map +1 -0
  336. package/dist/cli/graph-recipes.d.ts +23 -0
  337. package/dist/cli/graph-recipes.d.ts.map +1 -0
  338. package/dist/cli/graph-recipes.js +44 -0
  339. package/dist/cli/graph-recipes.js.map +1 -0
  340. package/dist/cli/graph-report.d.ts +79 -0
  341. package/dist/cli/graph-report.d.ts.map +1 -0
  342. package/dist/cli/graph-report.js +186 -0
  343. package/dist/cli/graph-report.js.map +1 -0
  344. package/dist/cli/graph-runner.d.ts +106 -0
  345. package/dist/cli/graph-runner.d.ts.map +1 -0
  346. package/dist/cli/graph-runner.js +274 -0
  347. package/dist/cli/graph-runner.js.map +1 -0
  348. package/dist/cli/graph-tracer.d.ts +27 -0
  349. package/dist/cli/graph-tracer.d.ts.map +1 -0
  350. package/dist/cli/graph-tracer.js +33 -0
  351. package/dist/cli/graph-tracer.js.map +1 -0
  352. package/dist/cli/graph-worker.d.ts +29 -0
  353. package/dist/cli/graph-worker.d.ts.map +1 -0
  354. package/dist/cli/graph-worker.js +86 -0
  355. package/dist/cli/graph-worker.js.map +1 -0
  356. package/dist/cli/graph.d.ts +171 -0
  357. package/dist/cli/graph.d.ts.map +1 -0
  358. package/dist/cli/graph.js +1041 -0
  359. package/dist/cli/graph.js.map +1 -0
  360. package/dist/cli/heap-preflight.d.ts +62 -0
  361. package/dist/cli/heap-preflight.d.ts.map +1 -0
  362. package/dist/cli/heap-preflight.js +176 -0
  363. package/dist/cli/heap-preflight.js.map +1 -0
  364. package/dist/cli/list-files.d.ts +37 -0
  365. package/dist/cli/list-files.d.ts.map +1 -0
  366. package/dist/cli/list-files.js +166 -0
  367. package/dist/cli/list-files.js.map +1 -0
  368. package/dist/cli/lookup.d.ts +19 -0
  369. package/dist/cli/lookup.d.ts.map +1 -0
  370. package/dist/cli/lookup.js +87 -0
  371. package/dist/cli/lookup.js.map +1 -0
  372. package/dist/cli/orchestrate/__tests__/_equivalence-harness.d.ts +47 -0
  373. package/dist/cli/orchestrate/__tests__/_equivalence-harness.d.ts.map +1 -0
  374. package/dist/cli/orchestrate/__tests__/_equivalence-harness.js +331 -0
  375. package/dist/cli/orchestrate/__tests__/_equivalence-harness.js.map +1 -0
  376. package/dist/cli/orchestrate/__tests__/_flat-large-fixture.d.ts +69 -0
  377. package/dist/cli/orchestrate/__tests__/_flat-large-fixture.d.ts.map +1 -0
  378. package/dist/cli/orchestrate/__tests__/_flat-large-fixture.js +181 -0
  379. package/dist/cli/orchestrate/__tests__/_flat-large-fixture.js.map +1 -0
  380. package/dist/cli/orchestrate/__tests__/canonical-file-set.test.d.ts +8 -0
  381. package/dist/cli/orchestrate/__tests__/canonical-file-set.test.d.ts.map +1 -0
  382. package/dist/cli/orchestrate/__tests__/canonical-file-set.test.js +51 -0
  383. package/dist/cli/orchestrate/__tests__/canonical-file-set.test.js.map +1 -0
  384. package/dist/cli/orchestrate/__tests__/catalog-builder-incremental.test.d.ts +9 -0
  385. package/dist/cli/orchestrate/__tests__/catalog-builder-incremental.test.d.ts.map +1 -0
  386. package/dist/cli/orchestrate/__tests__/catalog-builder-incremental.test.js +147 -0
  387. package/dist/cli/orchestrate/__tests__/catalog-builder-incremental.test.js.map +1 -0
  388. package/dist/cli/orchestrate/__tests__/cross-shard-resolve.test.d.ts +12 -0
  389. package/dist/cli/orchestrate/__tests__/cross-shard-resolve.test.d.ts.map +1 -0
  390. package/dist/cli/orchestrate/__tests__/cross-shard-resolve.test.js +509 -0
  391. package/dist/cli/orchestrate/__tests__/cross-shard-resolve.test.js.map +1 -0
  392. package/dist/cli/orchestrate/__tests__/determinism.test.d.ts +19 -0
  393. package/dist/cli/orchestrate/__tests__/determinism.test.d.ts.map +1 -0
  394. package/dist/cli/orchestrate/__tests__/determinism.test.js +163 -0
  395. package/dist/cli/orchestrate/__tests__/determinism.test.js.map +1 -0
  396. package/dist/cli/orchestrate/__tests__/edge-identity.test.d.ts +9 -0
  397. package/dist/cli/orchestrate/__tests__/edge-identity.test.d.ts.map +1 -0
  398. package/dist/cli/orchestrate/__tests__/edge-identity.test.js +103 -0
  399. package/dist/cli/orchestrate/__tests__/edge-identity.test.js.map +1 -0
  400. package/dist/cli/orchestrate/__tests__/equivalence-check.test.d.ts +10 -0
  401. package/dist/cli/orchestrate/__tests__/equivalence-check.test.d.ts.map +1 -0
  402. package/dist/cli/orchestrate/__tests__/equivalence-check.test.js +277 -0
  403. package/dist/cli/orchestrate/__tests__/equivalence-check.test.js.map +1 -0
  404. package/dist/cli/orchestrate/__tests__/equivalence-repo-scale.test.d.ts +51 -0
  405. package/dist/cli/orchestrate/__tests__/equivalence-repo-scale.test.d.ts.map +1 -0
  406. package/dist/cli/orchestrate/__tests__/equivalence-repo-scale.test.js +183 -0
  407. package/dist/cli/orchestrate/__tests__/equivalence-repo-scale.test.js.map +1 -0
  408. package/dist/cli/orchestrate/__tests__/equivalence.test.d.ts +47 -0
  409. package/dist/cli/orchestrate/__tests__/equivalence.test.d.ts.map +1 -0
  410. package/dist/cli/orchestrate/__tests__/equivalence.test.js +259 -0
  411. package/dist/cli/orchestrate/__tests__/equivalence.test.js.map +1 -0
  412. package/dist/cli/orchestrate/__tests__/exact-boundary-recovery.test.d.ts +9 -0
  413. package/dist/cli/orchestrate/__tests__/exact-boundary-recovery.test.d.ts.map +1 -0
  414. package/dist/cli/orchestrate/__tests__/exact-boundary-recovery.test.js +105 -0
  415. package/dist/cli/orchestrate/__tests__/exact-boundary-recovery.test.js.map +1 -0
  416. package/dist/cli/orchestrate/__tests__/export-index.test.d.ts +12 -0
  417. package/dist/cli/orchestrate/__tests__/export-index.test.d.ts.map +1 -0
  418. package/dist/cli/orchestrate/__tests__/export-index.test.js +346 -0
  419. package/dist/cli/orchestrate/__tests__/export-index.test.js.map +1 -0
  420. package/dist/cli/orchestrate/__tests__/flat-large-fixture.test.d.ts +16 -0
  421. package/dist/cli/orchestrate/__tests__/flat-large-fixture.test.d.ts.map +1 -0
  422. package/dist/cli/orchestrate/__tests__/flat-large-fixture.test.js +99 -0
  423. package/dist/cli/orchestrate/__tests__/flat-large-fixture.test.js.map +1 -0
  424. package/dist/cli/orchestrate/__tests__/flat-monorepo-strategy.test.d.ts +11 -0
  425. package/dist/cli/orchestrate/__tests__/flat-monorepo-strategy.test.d.ts.map +1 -0
  426. package/dist/cli/orchestrate/__tests__/flat-monorepo-strategy.test.js +271 -0
  427. package/dist/cli/orchestrate/__tests__/flat-monorepo-strategy.test.js.map +1 -0
  428. package/dist/cli/orchestrate/__tests__/function-set-parity.test.d.ts +38 -0
  429. package/dist/cli/orchestrate/__tests__/function-set-parity.test.d.ts.map +1 -0
  430. package/dist/cli/orchestrate/__tests__/function-set-parity.test.js +163 -0
  431. package/dist/cli/orchestrate/__tests__/function-set-parity.test.js.map +1 -0
  432. package/dist/cli/orchestrate/__tests__/incremental-merge.test.d.ts +8 -0
  433. package/dist/cli/orchestrate/__tests__/incremental-merge.test.d.ts.map +1 -0
  434. package/dist/cli/orchestrate/__tests__/incremental-merge.test.js +153 -0
  435. package/dist/cli/orchestrate/__tests__/incremental-merge.test.js.map +1 -0
  436. package/dist/cli/orchestrate/__tests__/partition-files.test.d.ts +10 -0
  437. package/dist/cli/orchestrate/__tests__/partition-files.test.d.ts.map +1 -0
  438. package/dist/cli/orchestrate/__tests__/partition-files.test.js +104 -0
  439. package/dist/cli/orchestrate/__tests__/partition-files.test.js.map +1 -0
  440. package/dist/cli/orchestrate/__tests__/resolution-completeness-floor.test.d.ts +21 -0
  441. package/dist/cli/orchestrate/__tests__/resolution-completeness-floor.test.d.ts.map +1 -0
  442. package/dist/cli/orchestrate/__tests__/resolution-completeness-floor.test.js +59 -0
  443. package/dist/cli/orchestrate/__tests__/resolution-completeness-floor.test.js.map +1 -0
  444. package/dist/cli/orchestrate/__tests__/shard-model.test.d.ts +8 -0
  445. package/dist/cli/orchestrate/__tests__/shard-model.test.d.ts.map +1 -0
  446. package/dist/cli/orchestrate/__tests__/shard-model.test.js +77 -0
  447. package/dist/cli/orchestrate/__tests__/shard-model.test.js.map +1 -0
  448. package/dist/cli/orchestrate/__tests__/shard-runner-spawn.test.d.ts +13 -0
  449. package/dist/cli/orchestrate/__tests__/shard-runner-spawn.test.d.ts.map +1 -0
  450. package/dist/cli/orchestrate/__tests__/shard-runner-spawn.test.js +103 -0
  451. package/dist/cli/orchestrate/__tests__/shard-runner-spawn.test.js.map +1 -0
  452. package/dist/cli/orchestrate/__tests__/sharded-graph.test.d.ts +13 -0
  453. package/dist/cli/orchestrate/__tests__/sharded-graph.test.d.ts.map +1 -0
  454. package/dist/cli/orchestrate/__tests__/sharded-graph.test.js +257 -0
  455. package/dist/cli/orchestrate/__tests__/sharded-graph.test.js.map +1 -0
  456. package/dist/cli/orchestrate/__tests__/worker-pool.test.d.ts +6 -0
  457. package/dist/cli/orchestrate/__tests__/worker-pool.test.d.ts.map +1 -0
  458. package/dist/cli/orchestrate/__tests__/worker-pool.test.js +38 -0
  459. package/dist/cli/orchestrate/__tests__/worker-pool.test.js.map +1 -0
  460. package/dist/cli/orchestrate/cache-orchestrator.d.ts +42 -0
  461. package/dist/cli/orchestrate/cache-orchestrator.d.ts.map +1 -0
  462. package/dist/cli/orchestrate/cache-orchestrator.js +92 -0
  463. package/dist/cli/orchestrate/cache-orchestrator.js.map +1 -0
  464. package/dist/cli/orchestrate/canonical-file-set.d.ts +51 -0
  465. package/dist/cli/orchestrate/canonical-file-set.d.ts.map +1 -0
  466. package/dist/cli/orchestrate/canonical-file-set.js +58 -0
  467. package/dist/cli/orchestrate/canonical-file-set.js.map +1 -0
  468. package/dist/cli/orchestrate/catalog-builder.d.ts +121 -0
  469. package/dist/cli/orchestrate/catalog-builder.d.ts.map +1 -0
  470. package/dist/cli/orchestrate/catalog-builder.js +279 -0
  471. package/dist/cli/orchestrate/catalog-builder.js.map +1 -0
  472. package/dist/cli/orchestrate/catalog-stats.d.ts +31 -0
  473. package/dist/cli/orchestrate/catalog-stats.d.ts.map +1 -0
  474. package/dist/cli/orchestrate/catalog-stats.js +52 -0
  475. package/dist/cli/orchestrate/catalog-stats.js.map +1 -0
  476. package/dist/cli/orchestrate/cross-shard-resolve.d.ts +190 -0
  477. package/dist/cli/orchestrate/cross-shard-resolve.d.ts.map +1 -0
  478. package/dist/cli/orchestrate/cross-shard-resolve.js +523 -0
  479. package/dist/cli/orchestrate/cross-shard-resolve.js.map +1 -0
  480. package/dist/cli/orchestrate/edge-identity.d.ts +48 -0
  481. package/dist/cli/orchestrate/edge-identity.d.ts.map +1 -0
  482. package/dist/cli/orchestrate/edge-identity.js +68 -0
  483. package/dist/cli/orchestrate/edge-identity.js.map +1 -0
  484. package/dist/cli/orchestrate/equivalence-check.d.ts +227 -0
  485. package/dist/cli/orchestrate/equivalence-check.d.ts.map +1 -0
  486. package/dist/cli/orchestrate/equivalence-check.js +264 -0
  487. package/dist/cli/orchestrate/equivalence-check.js.map +1 -0
  488. package/dist/cli/orchestrate/exact-boundary-recovery.d.ts +33 -0
  489. package/dist/cli/orchestrate/exact-boundary-recovery.d.ts.map +1 -0
  490. package/dist/cli/orchestrate/exact-boundary-recovery.js +62 -0
  491. package/dist/cli/orchestrate/exact-boundary-recovery.js.map +1 -0
  492. package/dist/cli/orchestrate/flat-monorepo-strategy.d.ts +171 -0
  493. package/dist/cli/orchestrate/flat-monorepo-strategy.d.ts.map +1 -0
  494. package/dist/cli/orchestrate/flat-monorepo-strategy.js +328 -0
  495. package/dist/cli/orchestrate/flat-monorepo-strategy.js.map +1 -0
  496. package/dist/cli/orchestrate/incremental-merge.d.ts +46 -0
  497. package/dist/cli/orchestrate/incremental-merge.d.ts.map +1 -0
  498. package/dist/cli/orchestrate/incremental-merge.js +236 -0
  499. package/dist/cli/orchestrate/incremental-merge.js.map +1 -0
  500. package/dist/cli/orchestrate/partition-chunk.d.ts +36 -0
  501. package/dist/cli/orchestrate/partition-chunk.d.ts.map +1 -0
  502. package/dist/cli/orchestrate/partition-chunk.js +37 -0
  503. package/dist/cli/orchestrate/partition-chunk.js.map +1 -0
  504. package/dist/cli/orchestrate/partition-files.d.ts +52 -0
  505. package/dist/cli/orchestrate/partition-files.d.ts.map +1 -0
  506. package/dist/cli/orchestrate/partition-files.js +94 -0
  507. package/dist/cli/orchestrate/partition-files.js.map +1 -0
  508. package/dist/cli/orchestrate/resolution-trace.d.ts +11 -0
  509. package/dist/cli/orchestrate/resolution-trace.d.ts.map +1 -0
  510. package/dist/cli/orchestrate/resolution-trace.js +27 -0
  511. package/dist/cli/orchestrate/resolution-trace.js.map +1 -0
  512. package/dist/cli/orchestrate/shard-model.d.ts +99 -0
  513. package/dist/cli/orchestrate/shard-model.d.ts.map +1 -0
  514. package/dist/cli/orchestrate/shard-model.js +23 -0
  515. package/dist/cli/orchestrate/shard-model.js.map +1 -0
  516. package/dist/cli/orchestrate/shard-runner.d.ts +65 -0
  517. package/dist/cli/orchestrate/shard-runner.d.ts.map +1 -0
  518. package/dist/cli/orchestrate/shard-runner.js +169 -0
  519. package/dist/cli/orchestrate/shard-runner.js.map +1 -0
  520. package/dist/cli/orchestrate/sharded-graph.d.ts +86 -0
  521. package/dist/cli/orchestrate/sharded-graph.d.ts.map +1 -0
  522. package/dist/cli/orchestrate/sharded-graph.js +227 -0
  523. package/dist/cli/orchestrate/sharded-graph.js.map +1 -0
  524. package/dist/cli/orchestrate/types.d.ts +31 -0
  525. package/dist/cli/orchestrate/types.d.ts.map +1 -0
  526. package/dist/cli/orchestrate/types.js +24 -0
  527. package/dist/cli/orchestrate/types.js.map +1 -0
  528. package/dist/cli/orchestrate/worker-pool.d.ts +16 -0
  529. package/dist/cli/orchestrate/worker-pool.d.ts.map +1 -0
  530. package/dist/cli/orchestrate/worker-pool.js +39 -0
  531. package/dist/cli/orchestrate/worker-pool.js.map +1 -0
  532. package/dist/cli/orchestrate.d.ts +106 -0
  533. package/dist/cli/orchestrate.d.ts.map +1 -0
  534. package/dist/cli/orchestrate.js +228 -0
  535. package/dist/cli/orchestrate.js.map +1 -0
  536. package/dist/cli/positional-paths.d.ts +23 -0
  537. package/dist/cli/positional-paths.d.ts.map +1 -0
  538. package/dist/cli/positional-paths.js +64 -0
  539. package/dist/cli/positional-paths.js.map +1 -0
  540. package/dist/cli/pressure-monitor.d.ts +62 -0
  541. package/dist/cli/pressure-monitor.d.ts.map +1 -0
  542. package/dist/cli/pressure-monitor.js +110 -0
  543. package/dist/cli/pressure-monitor.js.map +1 -0
  544. package/dist/cli/profile.d.ts +82 -0
  545. package/dist/cli/profile.d.ts.map +1 -0
  546. package/dist/cli/profile.js +120 -0
  547. package/dist/cli/profile.js.map +1 -0
  548. package/dist/cli/report-data.d.ts +46 -0
  549. package/dist/cli/report-data.d.ts.map +1 -0
  550. package/dist/cli/report-data.js +48 -0
  551. package/dist/cli/report-data.js.map +1 -0
  552. package/dist/cli/resolve-adapters.d.ts +19 -0
  553. package/dist/cli/resolve-adapters.d.ts.map +1 -0
  554. package/dist/cli/resolve-adapters.js +38 -0
  555. package/dist/cli/resolve-adapters.js.map +1 -0
  556. package/dist/cli/sarif-export.d.ts +40 -0
  557. package/dist/cli/sarif-export.d.ts.map +1 -0
  558. package/dist/cli/sarif-export.js +69 -0
  559. package/dist/cli/sarif-export.js.map +1 -0
  560. package/dist/cli/shard-worker.d.ts +25 -0
  561. package/dist/cli/shard-worker.d.ts.map +1 -0
  562. package/dist/cli/shard-worker.js +98 -0
  563. package/dist/cli/shard-worker.js.map +1 -0
  564. package/dist/cli/symbol-index.d.ts +51 -0
  565. package/dist/cli/symbol-index.d.ts.map +1 -0
  566. package/dist/cli/symbol-index.js +120 -0
  567. package/dist/cli/symbol-index.js.map +1 -0
  568. package/dist/cli/workspace-report.d.ts +32 -0
  569. package/dist/cli/workspace-report.d.ts.map +1 -0
  570. package/dist/cli/workspace-report.js +107 -0
  571. package/dist/cli/workspace-report.js.map +1 -0
  572. package/dist/cli/workspace-runner.d.ts +104 -0
  573. package/dist/cli/workspace-runner.d.ts.map +1 -0
  574. package/dist/cli/workspace-runner.js +166 -0
  575. package/dist/cli/workspace-runner.js.map +1 -0
  576. package/dist/cross-package/export-index.d.ts +118 -0
  577. package/dist/cross-package/export-index.d.ts.map +1 -0
  578. package/dist/cross-package/export-index.js +296 -0
  579. package/dist/cross-package/export-index.js.map +1 -0
  580. package/dist/cross-package/posix-path.d.ts +16 -0
  581. package/dist/cross-package/posix-path.d.ts.map +1 -0
  582. package/dist/cross-package/posix-path.js +18 -0
  583. package/dist/cross-package/posix-path.js.map +1 -0
  584. package/dist/cross-package/resolve.d.ts +68 -0
  585. package/dist/cross-package/resolve.d.ts.map +1 -0
  586. package/dist/cross-package/resolve.js +83 -0
  587. package/dist/cross-package/resolve.js.map +1 -0
  588. package/dist/index.d.ts +33 -0
  589. package/dist/index.d.ts.map +1 -0
  590. package/dist/index.js +61 -0
  591. package/dist/index.js.map +1 -0
  592. package/dist/internal.d.ts +25 -0
  593. package/dist/internal.d.ts.map +1 -0
  594. package/dist/internal.js +38 -0
  595. package/dist/internal.js.map +1 -0
  596. package/dist/lang-adapter/body-digest.d.ts +46 -0
  597. package/dist/lang-adapter/body-digest.d.ts.map +1 -0
  598. package/dist/lang-adapter/body-digest.js +49 -0
  599. package/dist/lang-adapter/body-digest.js.map +1 -0
  600. package/dist/lang-adapter/edge-helpers.d.ts +104 -0
  601. package/dist/lang-adapter/edge-helpers.d.ts.map +1 -0
  602. package/dist/lang-adapter/edge-helpers.js +120 -0
  603. package/dist/lang-adapter/edge-helpers.js.map +1 -0
  604. package/dist/lang-adapter/registry.d.ts +59 -0
  605. package/dist/lang-adapter/registry.d.ts.map +1 -0
  606. package/dist/lang-adapter/registry.js +100 -0
  607. package/dist/lang-adapter/registry.js.map +1 -0
  608. package/dist/lang-adapter/selector.d.ts +39 -0
  609. package/dist/lang-adapter/selector.d.ts.map +1 -0
  610. package/dist/lang-adapter/selector.js +140 -0
  611. package/dist/lang-adapter/selector.js.map +1 -0
  612. package/dist/lang-adapter/types.d.ts +217 -0
  613. package/dist/lang-adapter/types.d.ts.map +1 -0
  614. package/dist/lang-adapter/types.js +18 -0
  615. package/dist/lang-adapter/types.js.map +1 -0
  616. package/dist/owner-key.d.ts +22 -0
  617. package/dist/owner-key.d.ts.map +1 -0
  618. package/dist/owner-key.js +25 -0
  619. package/dist/owner-key.js.map +1 -0
  620. package/dist/persistence/__tests__/shard-fragment-cache.test.d.ts +8 -0
  621. package/dist/persistence/__tests__/shard-fragment-cache.test.d.ts.map +1 -0
  622. package/dist/persistence/__tests__/shard-fragment-cache.test.js +126 -0
  623. package/dist/persistence/__tests__/shard-fragment-cache.test.js.map +1 -0
  624. package/dist/persistence/catalog-repo.d.ts +77 -0
  625. package/dist/persistence/catalog-repo.d.ts.map +1 -0
  626. package/dist/persistence/catalog-repo.js +229 -0
  627. package/dist/persistence/catalog-repo.js.map +1 -0
  628. package/dist/persistence/schema.d.ts +249 -0
  629. package/dist/persistence/schema.d.ts.map +1 -0
  630. package/dist/persistence/schema.js +53 -0
  631. package/dist/persistence/schema.js.map +1 -0
  632. package/dist/persistence/session-payload.d.ts +96 -0
  633. package/dist/persistence/session-payload.d.ts.map +1 -0
  634. package/dist/persistence/session-payload.js +116 -0
  635. package/dist/persistence/session-payload.js.map +1 -0
  636. package/dist/persistence/session-replay.d.ts +15 -0
  637. package/dist/persistence/session-replay.d.ts.map +1 -0
  638. package/dist/persistence/session-replay.js +80 -0
  639. package/dist/persistence/session-replay.js.map +1 -0
  640. package/dist/pipeline/__tests__/assign-packages.test.d.ts +2 -0
  641. package/dist/pipeline/__tests__/assign-packages.test.d.ts.map +1 -0
  642. package/dist/pipeline/__tests__/assign-packages.test.js +88 -0
  643. package/dist/pipeline/__tests__/assign-packages.test.js.map +1 -0
  644. package/dist/pipeline/__tests__/constrain-edges.test.d.ts +2 -0
  645. package/dist/pipeline/__tests__/constrain-edges.test.d.ts.map +1 -0
  646. package/dist/pipeline/__tests__/constrain-edges.test.js +228 -0
  647. package/dist/pipeline/__tests__/constrain-edges.test.js.map +1 -0
  648. package/dist/pipeline/__tests__/features.test.d.ts +9 -0
  649. package/dist/pipeline/__tests__/features.test.d.ts.map +1 -0
  650. package/dist/pipeline/__tests__/features.test.js +458 -0
  651. package/dist/pipeline/__tests__/features.test.js.map +1 -0
  652. package/dist/pipeline/__tests__/indexes-imports.test.d.ts +2 -0
  653. package/dist/pipeline/__tests__/indexes-imports.test.d.ts.map +1 -0
  654. package/dist/pipeline/__tests__/indexes-imports.test.js +114 -0
  655. package/dist/pipeline/__tests__/indexes-imports.test.js.map +1 -0
  656. package/dist/pipeline/assign-packages.d.ts +18 -0
  657. package/dist/pipeline/assign-packages.d.ts.map +1 -0
  658. package/dist/pipeline/assign-packages.js +86 -0
  659. package/dist/pipeline/assign-packages.js.map +1 -0
  660. package/dist/pipeline/constrain-edges.d.ts +34 -0
  661. package/dist/pipeline/constrain-edges.d.ts.map +1 -0
  662. package/dist/pipeline/constrain-edges.js +139 -0
  663. package/dist/pipeline/constrain-edges.js.map +1 -0
  664. package/dist/pipeline/feature-deps.d.ts +19 -0
  665. package/dist/pipeline/feature-deps.d.ts.map +1 -0
  666. package/dist/pipeline/feature-deps.js +28 -0
  667. package/dist/pipeline/feature-deps.js.map +1 -0
  668. package/dist/pipeline/features.d.ts +50 -0
  669. package/dist/pipeline/features.d.ts.map +1 -0
  670. package/dist/pipeline/features.js +462 -0
  671. package/dist/pipeline/features.js.map +1 -0
  672. package/dist/pipeline/indexes.d.ts +27 -0
  673. package/dist/pipeline/indexes.d.ts.map +1 -0
  674. package/dist/pipeline/indexes.js +159 -0
  675. package/dist/pipeline/indexes.js.map +1 -0
  676. package/dist/recipes/__tests__/built-in-recipes.test.d.ts +5 -0
  677. package/dist/recipes/__tests__/built-in-recipes.test.d.ts.map +1 -0
  678. package/dist/recipes/__tests__/built-in-recipes.test.js +24 -0
  679. package/dist/recipes/__tests__/built-in-recipes.test.js.map +1 -0
  680. package/dist/recipes/__tests__/registry.test.d.ts +7 -0
  681. package/dist/recipes/__tests__/registry.test.d.ts.map +1 -0
  682. package/dist/recipes/__tests__/registry.test.js +34 -0
  683. package/dist/recipes/__tests__/registry.test.js.map +1 -0
  684. package/dist/recipes/__tests__/resolve.test.d.ts +10 -0
  685. package/dist/recipes/__tests__/resolve.test.d.ts.map +1 -0
  686. package/dist/recipes/__tests__/resolve.test.js +38 -0
  687. package/dist/recipes/__tests__/resolve.test.js.map +1 -0
  688. package/dist/recipes/built-in-recipes.d.ts +26 -0
  689. package/dist/recipes/built-in-recipes.d.ts.map +1 -0
  690. package/dist/recipes/built-in-recipes.js +43 -0
  691. package/dist/recipes/built-in-recipes.js.map +1 -0
  692. package/dist/recipes/registry.d.ts +31 -0
  693. package/dist/recipes/registry.d.ts.map +1 -0
  694. package/dist/recipes/registry.js +48 -0
  695. package/dist/recipes/registry.js.map +1 -0
  696. package/dist/recipes/resolve.d.ts +31 -0
  697. package/dist/recipes/resolve.d.ts.map +1 -0
  698. package/dist/recipes/resolve.js +70 -0
  699. package/dist/recipes/resolve.js.map +1 -0
  700. package/dist/recipes/types.d.ts +58 -0
  701. package/dist/recipes/types.d.ts.map +1 -0
  702. package/dist/recipes/types.js +39 -0
  703. package/dist/recipes/types.js.map +1 -0
  704. package/dist/render/__tests__/catalog-json.test.d.ts +9 -0
  705. package/dist/render/__tests__/catalog-json.test.d.ts.map +1 -0
  706. package/dist/render/__tests__/catalog-json.test.js +132 -0
  707. package/dist/render/__tests__/catalog-json.test.js.map +1 -0
  708. package/dist/render/catalog-json-types.d.ts +114 -0
  709. package/dist/render/catalog-json-types.d.ts.map +1 -0
  710. package/dist/render/catalog-json-types.js +23 -0
  711. package/dist/render/catalog-json-types.js.map +1 -0
  712. package/dist/render/catalog-json.d.ts +43 -0
  713. package/dist/render/catalog-json.d.ts.map +1 -0
  714. package/dist/render/catalog-json.js +303 -0
  715. package/dist/render/catalog-json.js.map +1 -0
  716. package/dist/render/opensip-id-derivation.d.ts +73 -0
  717. package/dist/render/opensip-id-derivation.d.ts.map +1 -0
  718. package/dist/render/opensip-id-derivation.js +65 -0
  719. package/dist/render/opensip-id-derivation.js.map +1 -0
  720. package/dist/render/rule-id-mapping.d.ts +61 -0
  721. package/dist/render/rule-id-mapping.d.ts.map +1 -0
  722. package/dist/render/rule-id-mapping.js +82 -0
  723. package/dist/render/rule-id-mapping.js.map +1 -0
  724. package/dist/resolve-callee.d.ts +50 -0
  725. package/dist/resolve-callee.d.ts.map +1 -0
  726. package/dist/resolve-callee.js +80 -0
  727. package/dist/resolve-callee.js.map +1 -0
  728. package/dist/rules/__tests__/__fixtures__/catalog.fixture.d.ts +22 -0
  729. package/dist/rules/__tests__/__fixtures__/catalog.fixture.d.ts.map +1 -0
  730. package/dist/rules/__tests__/__fixtures__/catalog.fixture.js +143 -0
  731. package/dist/rules/__tests__/__fixtures__/catalog.fixture.js.map +1 -0
  732. package/dist/rules/__tests__/create-graph-signal.test.d.ts +8 -0
  733. package/dist/rules/__tests__/create-graph-signal.test.d.ts.map +1 -0
  734. package/dist/rules/__tests__/create-graph-signal.test.js +55 -0
  735. package/dist/rules/__tests__/create-graph-signal.test.js.map +1 -0
  736. package/dist/rules/__tests__/define-rule.test.d.ts +13 -0
  737. package/dist/rules/__tests__/define-rule.test.d.ts.map +1 -0
  738. package/dist/rules/__tests__/define-rule.test.js +102 -0
  739. package/dist/rules/__tests__/define-rule.test.js.map +1 -0
  740. package/dist/rules/__tests__/fingerprint-golden.test.d.ts +21 -0
  741. package/dist/rules/__tests__/fingerprint-golden.test.d.ts.map +1 -0
  742. package/dist/rules/__tests__/fingerprint-golden.test.js +69 -0
  743. package/dist/rules/__tests__/fingerprint-golden.test.js.map +1 -0
  744. package/dist/rules/__tests__/registry.test.d.ts +6 -0
  745. package/dist/rules/__tests__/registry.test.d.ts.map +1 -0
  746. package/dist/rules/__tests__/registry.test.js +37 -0
  747. package/dist/rules/__tests__/registry.test.js.map +1 -0
  748. package/dist/rules/__tests__/rule-behaviors.test.d.ts +9 -0
  749. package/dist/rules/__tests__/rule-behaviors.test.d.ts.map +1 -0
  750. package/dist/rules/__tests__/rule-behaviors.test.js +204 -0
  751. package/dist/rules/__tests__/rule-behaviors.test.js.map +1 -0
  752. package/dist/rules/__tests__/signal-output.snapshot.test.d.ts +11 -0
  753. package/dist/rules/__tests__/signal-output.snapshot.test.d.ts.map +1 -0
  754. package/dist/rules/__tests__/signal-output.snapshot.test.js +55 -0
  755. package/dist/rules/__tests__/signal-output.snapshot.test.js.map +1 -0
  756. package/dist/rules/_approximation.d.ts +23 -0
  757. package/dist/rules/_approximation.d.ts.map +1 -0
  758. package/dist/rules/_approximation.js +28 -0
  759. package/dist/rules/_approximation.js.map +1 -0
  760. package/dist/rules/_entry-points.d.ts +27 -0
  761. package/dist/rules/_entry-points.d.ts.map +1 -0
  762. package/dist/rules/_entry-points.js +81 -0
  763. package/dist/rules/_entry-points.js.map +1 -0
  764. package/dist/rules/_severity-override.d.ts +32 -0
  765. package/dist/rules/_severity-override.d.ts.map +1 -0
  766. package/dist/rules/_severity-override.js +33 -0
  767. package/dist/rules/_severity-override.js.map +1 -0
  768. package/dist/rules/always-throws-branch.d.ts +26 -0
  769. package/dist/rules/always-throws-branch.d.ts.map +1 -0
  770. package/dist/rules/always-throws-branch.js +66 -0
  771. package/dist/rules/always-throws-branch.js.map +1 -0
  772. package/dist/rules/create-graph-signal.d.ts +38 -0
  773. package/dist/rules/create-graph-signal.d.ts.map +1 -0
  774. package/dist/rules/create-graph-signal.js +35 -0
  775. package/dist/rules/create-graph-signal.js.map +1 -0
  776. package/dist/rules/cycle.d.ts +29 -0
  777. package/dist/rules/cycle.d.ts.map +1 -0
  778. package/dist/rules/cycle.js +166 -0
  779. package/dist/rules/cycle.js.map +1 -0
  780. package/dist/rules/cycle.memberlocations.test.d.ts +11 -0
  781. package/dist/rules/cycle.memberlocations.test.d.ts.map +1 -0
  782. package/dist/rules/cycle.memberlocations.test.js +84 -0
  783. package/dist/rules/cycle.memberlocations.test.js.map +1 -0
  784. package/dist/rules/define-rule.d.ts +67 -0
  785. package/dist/rules/define-rule.d.ts.map +1 -0
  786. package/dist/rules/define-rule.js +66 -0
  787. package/dist/rules/define-rule.js.map +1 -0
  788. package/dist/rules/duplicated-function-body.d.ts +40 -0
  789. package/dist/rules/duplicated-function-body.d.ts.map +1 -0
  790. package/dist/rules/duplicated-function-body.js +232 -0
  791. package/dist/rules/duplicated-function-body.js.map +1 -0
  792. package/dist/rules/high-blast-untested.d.ts +26 -0
  793. package/dist/rules/high-blast-untested.d.ts.map +1 -0
  794. package/dist/rules/high-blast-untested.js +82 -0
  795. package/dist/rules/high-blast-untested.js.map +1 -0
  796. package/dist/rules/large-function.d.ts +22 -0
  797. package/dist/rules/large-function.d.ts.map +1 -0
  798. package/dist/rules/large-function.js +72 -0
  799. package/dist/rules/large-function.js.map +1 -0
  800. package/dist/rules/no-side-effect-path.d.ts +31 -0
  801. package/dist/rules/no-side-effect-path.d.ts.map +1 -0
  802. package/dist/rules/no-side-effect-path.js +217 -0
  803. package/dist/rules/no-side-effect-path.js.map +1 -0
  804. package/dist/rules/orphan-subtree.d.ts +11 -0
  805. package/dist/rules/orphan-subtree.d.ts.map +1 -0
  806. package/dist/rules/orphan-subtree.js +104 -0
  807. package/dist/rules/orphan-subtree.js.map +1 -0
  808. package/dist/rules/registry.d.ts +35 -0
  809. package/dist/rules/registry.d.ts.map +1 -0
  810. package/dist/rules/registry.js +96 -0
  811. package/dist/rules/registry.js.map +1 -0
  812. package/dist/rules/test-only-reachable.d.ts +9 -0
  813. package/dist/rules/test-only-reachable.d.ts.map +1 -0
  814. package/dist/rules/test-only-reachable.js +101 -0
  815. package/dist/rules/test-only-reachable.js.map +1 -0
  816. package/dist/rules/unexpected-coupling.d.ts +29 -0
  817. package/dist/rules/unexpected-coupling.d.ts.map +1 -0
  818. package/dist/rules/unexpected-coupling.js +0 -0
  819. package/dist/rules/unexpected-coupling.js.map +1 -0
  820. package/dist/rules/wide-function.d.ts +18 -0
  821. package/dist/rules/wide-function.d.ts.map +1 -0
  822. package/dist/rules/wide-function.js +58 -0
  823. package/dist/rules/wide-function.js.map +1 -0
  824. package/dist/scope-augmentation.d.ts +58 -0
  825. package/dist/scope-augmentation.d.ts.map +1 -0
  826. package/dist/scope-augmentation.js +29 -0
  827. package/dist/scope-augmentation.js.map +1 -0
  828. package/dist/tool.d.ts +29 -0
  829. package/dist/tool.d.ts.map +1 -0
  830. package/dist/tool.js +241 -0
  831. package/dist/tool.js.map +1 -0
  832. package/dist/types.d.ts +642 -0
  833. package/dist/types.d.ts.map +1 -0
  834. package/dist/types.js +2 -0
  835. package/dist/types.js.map +1 -0
  836. package/package.json +136 -0
@@ -0,0 +1,523 @@
1
+ /**
2
+ * Cross-shard merge & semantic boundary linking (plan #2, Phase 2).
3
+ *
4
+ * After the shard workers return per-shard fragments + cross-boundary
5
+ * call descriptors, this module:
6
+ * 1. merges the fragments into one unified catalog (union of occurrences,
7
+ * each keeping its already-resolved intra-shard edges);
8
+ * 2. LINKS the boundary calls semantically against the export symbol table
9
+ * ({@link ExportIndex}) + package manifest index ({@link PackageManifestIndex})
10
+ * built from the merged catalog and the resolved shard set, then stitches
11
+ * the recovered edges onto their owner occurrences as
12
+ * `resolution: 'semantic'`, `crossShard: true`, `confidence: 'high'`.
13
+ *
14
+ * The linker emits a cross-package edge ONLY when the import specifier + callee
15
+ * name resolve to a UNIQUE exported occurrence in the imported package — exactly
16
+ * what the TypeScript type checker would conclude. On ANY ambiguity (a name with
17
+ * multiple matching exports the subpath can't disambiguate, a name the package
18
+ * does not export, a specifier pointing at an external npm package) it DECLINES
19
+ * and emits an unresolved (`to: []`) edge. A missing edge is safe; a phantom
20
+ * cross-package edge would fail the gate. This replaces the old name-only
21
+ * syntactic fallback, which fabricated impossible coupling edges by matching a
22
+ * globally-unique simple name into a package the caller never imported.
23
+ *
24
+ * Intra-shard edges retain their original (semantic, in exact mode) fidelity;
25
+ * relative imports are still path-pinned (already exact for same-package
26
+ * imports). Engine-layer and language-agnostic: it operates on plain catalog
27
+ * data + the descriptors' callee names / import specifiers + each package's
28
+ * `package.json` — no parser, no TypeScript assumptions.
29
+ */
30
+ import { posix } from 'node:path';
31
+ import { stampEngineVersion } from '../../cache/engine-version.js';
32
+ import { computeFilesFingerprint } from '../../cache/invalidate.js';
33
+ import { buildExportIndex } from '../../cross-package/export-index.js';
34
+ import { resolveCrossPackageCall } from '../../cross-package/resolve.js';
35
+ import { createMutableStats, truncateForCallEdge } from '../../lang-adapter/edge-helpers.js';
36
+ import { assignPackages } from '../../pipeline/assign-packages.js';
37
+ import { constrainCrossPackageEdges } from '../../pipeline/constrain-edges.js';
38
+ import { computeSccs } from '../../pipeline/features.js';
39
+ import { buildIndexes } from '../../pipeline/indexes.js';
40
+ import { bucketEdgesByOwner, stitchEdgesByOwner } from './edge-identity.js';
41
+ import { traceResolveOne } from './resolution-trace.js';
42
+ /**
43
+ * Merge per-shard fragments and recover cross-package edges. The single
44
+ * Phase-2 entry the orchestrator calls.
45
+ */
46
+ export function mergeAndResolveShards(fragments, allFiles, manifestIndex) {
47
+ const merged = mergeShardFragments(fragments.map((f) => f.fragment), allFiles);
48
+ const boundaryCalls = fragments.flatMap((f) => f.boundaryCalls);
49
+ return resolveCrossBoundaryCalls(merged, boundaryCalls, manifestIndex);
50
+ }
51
+ /**
52
+ * Finalize cross-package edges on a merged catalog: stamp each occurrence's
53
+ * owning package (`assignPackages`) then drop name-guessed cross-package edges
54
+ * that contradict the import graph (`constrainCrossPackageEdges`). These two
55
+ * pipeline steps are always applied as a pair on the post-resolve catalog — by
56
+ * both the sharded build (`runShardedGraph`) and the cached single-program
57
+ * recovery path (`cache-orchestrator`) — so they live here, the cross-package
58
+ * resolution module, as one helper rather than duplicated import pairs.
59
+ */
60
+ export function stampAndConstrainPackages(catalog, projectRoot) {
61
+ return constrainCrossPackageEdges(assignPackages(catalog, projectRoot));
62
+ }
63
+ // ── Task 2.1: merge fragments ─────────────────────────────────────
64
+ /**
65
+ * Union every fragment's `functions` map into one catalog. Each
66
+ * occurrence keeps its already-resolved intra-shard `calls`. Shards are
67
+ * disjoint by construction (distinct files), so occurrences don't
68
+ * conflict; a defensive dedup by occurrence IDENTITY — (bodyHash,
69
+ * filePath, line, column) — drops any accidental duplicate rather than
70
+ * double-counting.
71
+ *
72
+ * The dedup key MUST include `column`: two distinct callables can share a
73
+ * `(bodyHash, filePath, line)` triple when they sit on the SAME source line
74
+ * with BYTE-IDENTICAL bodies — e.g. `a.some((p) => p.test(x)) || b.some((p) =>
75
+ * p.test(x))` (two body-twin arrows on one line). `bodyHash` is a CONTENT hash,
76
+ * so both twins hash equally; a column-less key collapsed them into one,
77
+ * dropping the second occurrence the single-program engine keeps. Keying on the
78
+ * full occurrence identity (filePath:line:column — the same tuple the SCC graph
79
+ * uses as its node id) makes the merged function set byte-identical to exact
80
+ * (Phase 3 closed the residual 2-occurrence delta this way).
81
+ */
82
+ export function mergeShardFragments(fragments, allFiles) {
83
+ const functions = Object.create(null);
84
+ const seen = new Set();
85
+ for (const frag of fragments)
86
+ addFragmentOccurrences(frag, functions, seen);
87
+ // Canonicalize: shards complete in nondeterministic order, so the merged
88
+ // function-name keys, occurrence buckets, and each occurrence's `calls` are
89
+ // all sorted by a stable key here. This makes the merged catalog a pure
90
+ // function of the fragment SET — independent of shard completion order — so
91
+ // cold, warm-all-cached, and warm-partial-rebuild produce a byte-identical
92
+ // catalog (Phase 3).
93
+ const canonicalFunctions = canonicalizeFunctions(functions);
94
+ const reExports = mergeFragmentReExports(fragments);
95
+ const first = fragments[0];
96
+ return {
97
+ version: '3.0',
98
+ tool: 'graph',
99
+ language: first?.language ?? 'typescript',
100
+ // `builtAt` is the SOLE intentionally-nondeterministic catalog field — a
101
+ // wall-clock stamp. It is excluded from structural determinism/equivalence
102
+ // comparisons (Phase 0 determinism test, Phase 4 guardrail). Everything
103
+ // else in this catalog is a pure function of the fragment set.
104
+ builtAt: new Date().toISOString(),
105
+ // Build-level key derived from the per-shard keys so the merged
106
+ // catalog invalidates when any shard's key changes. Stamped with the
107
+ // engine version + `mode=sharded` (same channel as the single-program
108
+ // exact key) so the two engines — which share the single `graph_catalog`
109
+ // row but build structurally incompatible catalogs — can never read each
110
+ // other's row: a mode switch is a clean `cacheKey` mismatch (a rebuild),
111
+ // never a silent cross-engine read of a clobbered row.
112
+ cacheKey: stampEngineVersion(`sharded-${String(fragments.length)}-${hashKeys(fragments)}`, 'sharded'),
113
+ filesFingerprint: computeFilesFingerprint(allFiles),
114
+ resolutionMode: first?.resolutionMode,
115
+ ...(reExports.length > 0 ? { reExports } : {}),
116
+ functions: canonicalFunctions,
117
+ };
118
+ }
119
+ /**
120
+ * Union the per-shard re-export facts into the merged catalog, deduped by full
121
+ * identity and sorted — so the merged set is a pure function of the fragment SET
122
+ * (order-independent across shard completion), keeping cold == warm. The engine's
123
+ * `buildExportIndex` reads these to follow cross-package re-export chains.
124
+ */
125
+ function mergeFragmentReExports(fragments) {
126
+ const seen = new Set();
127
+ const out = [];
128
+ for (const frag of fragments) {
129
+ for (const r of frag.reExports ?? []) {
130
+ const key = `${r.fromFile}|${r.exportedName}|${r.sourceName}|${r.specifier}`;
131
+ if (seen.has(key))
132
+ continue;
133
+ seen.add(key);
134
+ out.push(r);
135
+ }
136
+ }
137
+ return out.sort((a, b) => Number(a.fromFile > b.fromFile) - Number(a.fromFile < b.fromFile) ||
138
+ Number(a.exportedName > b.exportedName) - Number(a.exportedName < b.exportedName) ||
139
+ Number(a.specifier > b.specifier) - Number(a.specifier < b.specifier));
140
+ }
141
+ /**
142
+ * Build a canonical copy of a merged function map: function-name keys inserted
143
+ * in sorted order, each function's occurrence bucket sorted by a stable key
144
+ * (`filePath`, then `line`, then `bodyHash`), and each occurrence's `calls`
145
+ * sorted by `(line, column, sorted(to))`. The catalog shape is unchanged —
146
+ * only the ordering becomes deterministic regardless of the order shards
147
+ * completed in. (JSON serialization preserves insertion order, so sorting the
148
+ * top-level keys is what makes the serialized catalog byte-identical.)
149
+ */
150
+ function canonicalizeFunctions(functions) {
151
+ const out = Object.create(null);
152
+ for (const name of Object.keys(functions).sort()) {
153
+ const occs = functions[name];
154
+ if (!occs)
155
+ continue;
156
+ const sorted = [...occs].sort(compareOccurrences);
157
+ out[name] = sorted.map((occ) => ({ ...occ, calls: sortCalls(occ.calls) }));
158
+ }
159
+ return out;
160
+ }
161
+ /** Stable occurrence order: filePath, then line, then bodyHash. */
162
+ function compareOccurrences(a, b) {
163
+ return (Number(a.filePath > b.filePath) - Number(a.filePath < b.filePath) ||
164
+ a.line - b.line ||
165
+ Number(a.bodyHash > b.bodyHash) - Number(a.bodyHash < b.bodyHash));
166
+ }
167
+ /** Stable edge order within an occurrence: line, then column, then sorted(to). */
168
+ function sortCalls(calls) {
169
+ return [...calls].sort((a, b) => {
170
+ const toA = [...a.to].sort().join(',');
171
+ const toB = [...b.to].sort().join(',');
172
+ return a.line - b.line || a.column - b.column || Number(toA > toB) - Number(toA < toB);
173
+ });
174
+ }
175
+ /** Append one fragment's occurrences into the merged map, deduping by
176
+ * (bodyHash, filePath, line). Extracted to keep mergeShardFragments flat. */
177
+ function addFragmentOccurrences(frag, functions, seen) {
178
+ for (const [name, occs] of Object.entries(frag.functions)) {
179
+ if (!occs)
180
+ continue;
181
+ for (const occ of occs) {
182
+ const key = `${occ.bodyHash}|${occ.filePath}|${String(occ.line)}|${String(occ.column)}`;
183
+ if (seen.has(key))
184
+ continue;
185
+ seen.add(key);
186
+ const bucket = functions[name];
187
+ if (bucket)
188
+ bucket.push(occ);
189
+ else
190
+ functions[name] = [occ];
191
+ }
192
+ }
193
+ }
194
+ function hashKeys(fragments) {
195
+ // Order-independent join of shard cacheKeys (shards may complete in any
196
+ // order); kept short and deterministic.
197
+ return [...fragments.map((f) => f.cacheKey)].sort().join('+').slice(0, 64);
198
+ }
199
+ // ── Task 2.2: resolve cross-boundary calls ────────────────────────
200
+ /**
201
+ * Resolve each cross-boundary call against the merged global catalog and
202
+ * stitch the recovered edge onto its owner. A recovered edge is `'semantic'`,
203
+ * `crossShard: true`, `confidence: 'high'` — the import specifier + callee name
204
+ * linked to a UNIQUE target occurrence (relative imports pin by path; bare /
205
+ * workspace imports pin by the imported package's export symbol table). On any
206
+ * ambiguity the resolver DECLINES (`to: []`) — a missing edge is safe, a phantom
207
+ * cross-package edge is not. Declined / external boundary calls stay unresolved
208
+ * but are counted (attributable).
209
+ */
210
+ export function resolveCrossBoundaryCalls(merged, boundaryCalls, manifestIndex) {
211
+ const exportIndex = buildExportIndex(merged, manifestIndex);
212
+ const nameIndex = buildNameIndex(merged);
213
+ const knownFiles = new Set(Object.values(merged.functions)
214
+ .flat()
215
+ .map((o) => o.filePath));
216
+ const ctx = { exportIndex, manifestIndex, nameIndex, knownFiles };
217
+ const stats = createMutableStats();
218
+ // Resolve each boundary call to a recovered edge first (counting as we go).
219
+ // The stats DO count declined (`to: []`) calls — they are attributable
220
+ // unresolved cross-shard sites — but only RESOLVED edges are stitched into the
221
+ // catalog (see below).
222
+ const resolvedCalls = boundaryCalls.map((bc) => {
223
+ const edge = resolveOne(bc, ctx);
224
+ stats.totalCallSites++;
225
+ stats.apply(edge);
226
+ return { bc, edge };
227
+ });
228
+ // Placeholder pruning (Phase 6): a boundary call that resolved to NOTHING must
229
+ // NOT persist a standalone `to: []` crossShard CallEdge. The single-program
230
+ // (exact) engine emits no such per-call-site catalog edge — it simply has no
231
+ // edge there (the intra-shard `to: []` placeholder the local pass left, which
232
+ // exact ALSO emits for its own unresolved sites, remains and is the parity
233
+ // representation). Persisting ~45k empty-`to` crossShard placeholders only
234
+ // bloated the catalog and formed the bulk of the guardrail's `structural`
235
+ // (unresolved-vs-absent) divergence partition. Bucket ONLY resolved edges; a
236
+ // declined site contributes nothing, so its intra placeholder is left intact
237
+ // (matching exact) rather than replaced by a crossShard placeholder.
238
+ // Keyed by OCCURRENCE via the shared identity module — `ownerEdgeKey(ownerHash,
239
+ // ownerFile)`, never `ownerHash` alone (ADR-0003: body-twins share a hash; an
240
+ // owner-hash bucket would union their edges into phantom cross-package coupling).
241
+ const edgesByOwnerKey = bucketEdgesByOwner(resolvedCalls.filter(({ edge }) => edge.to.length > 0), ({ bc }) => ({ bodyHash: bc.ownerHash, filePath: bc.ownerFile }), ({ edge }) => edge);
242
+ const functions = stitchCrossShardEdges(merged.functions, edgesByOwnerKey);
243
+ return { catalog: { ...merged, functions }, boundaryStats: stats };
244
+ }
245
+ /**
246
+ * Resolve one cross-boundary call to a recovered edge — semantically, by
247
+ * linking the import specifier + callee name to a UNIQUE target occurrence, or
248
+ * DECLINING (`to: []`) when the link is absent or ambiguous. Three branches:
249
+ *
250
+ * (a) RELATIVE specifier (`./x`) → pin by path against the owner's directory
251
+ * (an intra-package import; already exact). Emit when ≥1 occurrence in the
252
+ * resolved file matches the callee name.
253
+ * (b) BARE / workspace specifier that resolves to a known workspace package P →
254
+ * look the callee name up in P's export bucket: exactly 1 export → emit;
255
+ * >1 → narrow by a single subpath-pinned file if possible, else decline;
256
+ * 0 → decline (not exported / re-export chain we don't follow).
257
+ * (c) Specifier maps to no known workspace package (external npm) → unresolved.
258
+ *
259
+ * A recovered edge is `'semantic'`, `crossShard: true`, `confidence: 'high'`.
260
+ */
261
+ function resolveOne(bc, ctx) {
262
+ const base = {
263
+ line: bc.line,
264
+ column: bc.column,
265
+ resolution: 'semantic',
266
+ text: truncateForCallEdge(bc.text),
267
+ discarded: bc.discarded ?? false,
268
+ crossShard: true,
269
+ confidence: 'high',
270
+ };
271
+ const spec = bc.importSpecifier;
272
+ // (a0) Type-attested cross-package METHOD: the checker resolved `recv.m()`'s
273
+ // method to a workspace `dist/*.d.ts` whose SOURCE lives in another shard, so
274
+ // the boundary extractor carried the mapped source file. Pin by (target file +
275
+ // method name) against the merged catalog. UNIQUE-or-decline, mirroring the
276
+ // exact engine's intra-package `pinByDtsDeclSource` — both engines route
277
+ // cross-package methods here, so they resolve identically.
278
+ if (bc.targetFile !== undefined) {
279
+ const candidates = ctx.nameIndex.get(bc.calleeName) ?? [];
280
+ const distinct = [
281
+ ...new Set(candidates.filter((o) => o.filePath === bc.targetFile).map((o) => o.bodyHash)),
282
+ ];
283
+ const edge = distinct.length === 1 ? { ...base, to: distinct } : { ...base, to: [] };
284
+ traceResolveOne(bc, 'method-target', edge.to);
285
+ return edge;
286
+ }
287
+ // (a) Relative import → path-pin (intra-package). UNIQUE-or-decline: a single
288
+ // distinct target bodyHash in the pinned file resolves; same-name ambiguity
289
+ // declines — identical semantics to the exact engine's file+name pin
290
+ // (`pinByFileAndName`), so the two engines converge (Phase 3, Option A;
291
+ // decline-beats-guess). Previously emitted ALL matches as a multi-target edge.
292
+ if (spec?.startsWith('.')) {
293
+ const candidates = ctx.nameIndex.get(bc.calleeName) ?? [];
294
+ const pinned = pinBySpecifier(bc, candidates, ctx.knownFiles);
295
+ const distinct = [...new Set(pinned.map((o) => o.bodyHash))];
296
+ const edge = distinct.length === 1 ? { ...base, to: distinct } : { ...base, to: [] };
297
+ traceResolveOne(bc, 'relative-pin', edge.to);
298
+ return edge;
299
+ }
300
+ // (b)/(c) Bare or workspace specifier → resolve to a package and link by export
301
+ // through the SHARED cross-package resolver the exact adapter also uses.
302
+ const linked = resolveCrossPackageCall({
303
+ importSpecifier: spec,
304
+ calleeName: bc.calleeName,
305
+ exportIndex: ctx.exportIndex,
306
+ manifestIndex: ctx.manifestIndex,
307
+ });
308
+ const edge = linked === undefined ? { ...base, to: [] } : { ...base, to: [linked.bodyHash] };
309
+ traceResolveOne(bc, 'workspace-export', edge.to);
310
+ return edge;
311
+ }
312
+ /**
313
+ * Pin a boundary call to specific target occurrences via its import
314
+ * specifier. Only RELATIVE specifiers are path-pinnable here (resolved
315
+ * against the owner's REAL file directory carried on the descriptor —
316
+ * `bc.ownerFile`, byte-identical to the owner occurrence's `filePath`);
317
+ * bare/package specifiers fall through to name-only resolution. Purely
318
+ * generic path math. Resolving against the owner's actual file (not a
319
+ * last-writer-wins `bodyHash→file` guess) is what keeps body-twins from
320
+ * pinning relative imports against the wrong twin's directory (ADR-0003).
321
+ */
322
+ function pinBySpecifier(bc, candidates, knownFiles) {
323
+ const spec = bc.importSpecifier;
324
+ if (!spec?.startsWith('.'))
325
+ return [];
326
+ const resolved = posix.normalize(posix.join(posix.dirname(bc.ownerFile), spec));
327
+ const target = stripExt(resolved);
328
+ // Accept either `<target>.<ext>` or `<target>/index.<ext>`.
329
+ const matchesTarget = (filePath) => {
330
+ const fp = stripExt(filePath);
331
+ return fp === target || fp === `${target}/index`;
332
+ };
333
+ // Only pin when the resolved target actually exists in the catalog.
334
+ if (![...knownFiles].some(matchesTarget))
335
+ return [];
336
+ return candidates.filter((c) => matchesTarget(c.filePath));
337
+ }
338
+ function stripExt(p) {
339
+ return p.replace(/\.[A-Za-z0-9]+$/, '');
340
+ }
341
+ // ── catalog helpers ───────────────────────────────────────────────
342
+ function buildNameIndex(catalog) {
343
+ const index = new Map();
344
+ for (const [name, occs] of Object.entries(catalog.functions)) {
345
+ if (occs && occs.length > 0)
346
+ index.set(name, occs);
347
+ }
348
+ return index;
349
+ }
350
+ /**
351
+ * Stitch cross-shard edges onto each owner occurrence, via the shared identity
352
+ * module keyed by `ownerEdgeKey(o.bodyHash, o.filePath)` — so ONLY the owning
353
+ * occurrence receives its recovered edges (body-twins in different files never
354
+ * smear; ADR-0003). A recovered edge REPLACES the unresolved (`to: []`)
355
+ * intra-shard placeholder the local resolver left at the same call site —
356
+ * otherwise the site would carry two edges (one unresolved, one recovered) and
357
+ * double-count. Resolved intra-shard edges are always kept.
358
+ */
359
+ function stitchCrossShardEdges(functions, edgesByOwnerKey) {
360
+ return stitchEdgesByOwner(functions, edgesByOwnerKey, (o, extra) => {
361
+ const recoveredAt = new Set(extra.map((e) => `${String(e.line)}:${String(e.column)}`));
362
+ // Drop the unresolved placeholder the local pass left at a recovered site.
363
+ const kept = o.calls.filter((e) => !(e.to.length === 0 && recoveredAt.has(`${String(e.line)}:${String(e.column)}`)));
364
+ // Re-canonicalize the merged edge list — `extra` is in boundary-call
365
+ // (flat-map) order, which depends on shard completion order; sorting here
366
+ // keeps the stitched occurrence byte-identical across runs.
367
+ return { ...o, calls: sortCalls([...kept, ...extra]) };
368
+ });
369
+ }
370
+ /**
371
+ * Full structural diff of two catalogs: function set + edges + SCCs. The
372
+ * Phase-4 equivalence gate runs this over (sharded, exact) and asserts every
373
+ * partition empty. Composes the three orthogonal diffs:
374
+ * - `diffFunctionSets` — occurrence-identity symmetric difference;
375
+ * - `diffCatalogsByEdge` — the per-edge target diff (intra / cross);
376
+ * - `diffSccs` — occId-keyed SCC membership diff (reusing the engine's own
377
+ * `computeSccs` over `buildIndexes`, so the gate measures the SAME SCCs the
378
+ * `cycle` rule consumes).
379
+ */
380
+ export function diffCatalogs(a, b) {
381
+ const fnDiff = diffFunctionSets(a, b);
382
+ const edgeDiff = diffCatalogsByEdge(a, b);
383
+ const sccDifferences = diffSccs(a, b);
384
+ return {
385
+ functionsOnlyInA: fnDiff.onlyInA,
386
+ functionsOnlyInB: fnDiff.onlyInB,
387
+ intraMismatches: edgeDiff.intraMismatches,
388
+ crossDifferences: edgeDiff.crossDifferences,
389
+ sccDifferences,
390
+ edgeDifferences: edgeDiff.differences,
391
+ };
392
+ }
393
+ /** True when every partition of a {@link CatalogEquivalence} is empty. */
394
+ export function isEquivalent(eq) {
395
+ return (eq.functionsOnlyInA.length === 0 &&
396
+ eq.functionsOnlyInB.length === 0 &&
397
+ eq.intraMismatches.length === 0 &&
398
+ eq.crossDifferences.length === 0 &&
399
+ eq.sccDifferences.length === 0);
400
+ }
401
+ /**
402
+ * Symmetric difference of the two catalogs' OCCURRENCE IDENTITY sets. Identity
403
+ * is `qualifiedName` when present, else `filePath:line:simpleName` — mirroring
404
+ * the FunctionOccurrence identity model used by `graph-catalog-diff.mjs` and
405
+ * the symbol index, so the in-test gate and the repo-scale diagnostic agree.
406
+ */
407
+ function diffFunctionSets(a, b) {
408
+ const idsA = functionIdentities(a);
409
+ const idsB = functionIdentities(b);
410
+ const onlyInA = [...idsA].filter((id) => !idsB.has(id)).sort();
411
+ const onlyInB = [...idsB].filter((id) => !idsA.has(id)).sort();
412
+ return { onlyInA, onlyInB };
413
+ }
414
+ /** The set of occurrence identities (`qualifiedName` ?? `filePath:line:name`). */
415
+ function functionIdentities(catalog) {
416
+ const ids = new Set();
417
+ for (const [name, occs] of Object.entries(catalog.functions)) {
418
+ if (!occs)
419
+ continue;
420
+ for (const o of occs)
421
+ ids.add(occurrenceIdentity(o, name));
422
+ }
423
+ return ids;
424
+ }
425
+ function occurrenceIdentity(o, simpleName) {
426
+ return o.qualifiedName.length > 0
427
+ ? o.qualifiedName
428
+ : `${o.filePath}:${String(o.line)}:${simpleName}`;
429
+ }
430
+ /**
431
+ * Diff the two catalogs' strongly-connected components by SORTED-MEMBER
432
+ * signature. Each SCC is computed via the engine's canonical `computeSccs`
433
+ * (occId-keyed Tarjan) over `buildIndexes(catalog)` — the exact same pass the
434
+ * `cycle` rule's feature column uses — then keyed by its sorted member occIds
435
+ * joined. The result is the symmetric difference of those signatures: a
436
+ * component present in one catalog but not the other (a cycle the two engines
437
+ * disagree on). Singletons are included by `computeSccs` but are stable across
438
+ * engines once the function set matches, so they don't generate noise; only a
439
+ * genuine membership divergence surfaces.
440
+ */
441
+ function diffSccs(a, b) {
442
+ const sigA = sccSignatures(a);
443
+ const sigB = sccSignatures(b);
444
+ const diff = [...[...sigA].filter((s) => !sigB.has(s)), ...[...sigB].filter((s) => !sigA.has(s))];
445
+ return [...new Set(diff)].sort();
446
+ }
447
+ /** Sorted-member signatures of a catalog's SCCs (the engine's own computation). */
448
+ function sccSignatures(catalog) {
449
+ const indexes = buildIndexes(catalog);
450
+ const signatures = new Set();
451
+ for (const scc of computeSccs(indexes)) {
452
+ signatures.add([...scc.members].sort().join('|'));
453
+ }
454
+ return signatures;
455
+ }
456
+ /**
457
+ * Diff two catalogs by edge, partitioned into intra-shard mismatches and
458
+ * cross-package (boundary-linked) differences. An edge is keyed by
459
+ * `ownerHash@line:col → sorted(to)`; a key is a difference when the two
460
+ * catalogs disagree on its target set. Both partitions MUST be empty for a
461
+ * correct sharded build vs single-program build: intra-package edges are exact
462
+ * in both, and semantic boundary linking reproduces the single-program build's
463
+ * cross-package edges verbatim (Phase 2). The partition only records WHICH side
464
+ * a difference falls on (cross when either edge is `crossShard`), so a
465
+ * regression is attributable to the linker vs a local resolver. The Phase 4
466
+ * equivalence guardrail (`__tests__/equivalence.test.ts`) is the live gate.
467
+ *
468
+ * `differences` additionally carries the OWNER FILE PATH + call-site line/column
469
+ * of every differing edge, so the real-repo equivalence guardrail can classify a
470
+ * divergence by owner file (test/fixture-owned ⇒ gate-invisible; production ⇒
471
+ * meaningful) and print the offending `file:line → target` on a budget breach.
472
+ * The legacy key arrays are unchanged.
473
+ */
474
+ export function diffCatalogsByEdge(a, b) {
475
+ const ea = indexEdges(a);
476
+ const eb = indexEdges(b);
477
+ const intraMismatches = [];
478
+ const crossDifferences = [];
479
+ const differences = [];
480
+ const keys = new Set([...ea.keys(), ...eb.keys()]);
481
+ for (const key of keys) {
482
+ const x = ea.get(key);
483
+ const y = eb.get(key);
484
+ if (x?.to === y?.to)
485
+ continue; // identical (or both absent) → no difference
486
+ const isCross = (x?.crossShard ?? false) || (y?.crossShard ?? false);
487
+ (isCross ? crossDifferences : intraMismatches).push(key);
488
+ // Owner file path + position is the same on both sides (shared occurrence
489
+ // identity); take whichever side carries the edge.
490
+ const present = x ?? y;
491
+ differences.push({
492
+ key,
493
+ ownerFilePath: present?.ownerFilePath ?? '',
494
+ line: present?.line ?? 0,
495
+ column: present?.column ?? 0,
496
+ toA: x?.to ?? '',
497
+ toB: y?.to ?? '',
498
+ cross: isCross,
499
+ });
500
+ }
501
+ return { intraMismatches, crossDifferences, differences };
502
+ }
503
+ function indexEdges(catalog) {
504
+ const map = new Map();
505
+ for (const occs of Object.values(catalog.functions)) {
506
+ if (!occs)
507
+ continue;
508
+ for (const o of occs) {
509
+ for (const e of o.calls) {
510
+ const key = `${o.bodyHash}@${String(e.line)}:${String(e.column)}`;
511
+ map.set(key, {
512
+ to: [...e.to].sort().join(','),
513
+ crossShard: e.crossShard ?? false,
514
+ ownerFilePath: o.filePath,
515
+ line: e.line,
516
+ column: e.column,
517
+ });
518
+ }
519
+ }
520
+ }
521
+ return map;
522
+ }
523
+ //# sourceMappingURL=cross-shard-resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-shard-resolve.js","sourceRoot":"","sources":["../../../src/cli/orchestrate/cross-shard-resolve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Shared occurrence/edge IDENTITY — the ONE module that owns how call/dependency
3
+ * edges are keyed to their owning occurrence and stitched back onto it.
4
+ *
5
+ * WHY THIS EXISTS (the drift it closes):
6
+ * ADR-0003 mandates edges be keyed by OCCURRENCE — `ownerEdgeKey(bodyHash,
7
+ * filePath)` — not by `bodyHash` alone: two functions with byte-identical
8
+ * bodies in different files (e.g. `stripStrings` duplicated across the language
9
+ * adapters) share a hash, so a hash-only bucket UNIONS their edges, inventing
10
+ * phantom cross-package coupling. The EXACT path complied (its resolver returns
11
+ * an `ownerEdgeKey`-keyed map; `catalog-builder.stitchEdges` reads it the same
12
+ * way). The CROSS-SHARD merge did NOT — it bucketed/stitched by `bc.ownerHash`
13
+ * alone (a second, drifting keying scheme). That drift is the root cause of the
14
+ * F1 ADR-0003 violation.
15
+ *
16
+ * This module is the single home of that identity. Both engines import it; no
17
+ * consumer keys edges by a bare `bodyHash`. The Phase-1 fitness check
18
+ * (`no-bodyhash-keying-outside-identity`) forbids re-deriving an owner-keyed
19
+ * edge map anywhere else, so the drift cannot recur.
20
+ *
21
+ * Pure: no fs, no engine state — both engines and the equivalence harness import
22
+ * the same helpers.
23
+ */
24
+ import type { CallEdge, FunctionOccurrence } from '../../types.js';
25
+ export { ownerEdgeKey } from '../../owner-key.js';
26
+ /**
27
+ * Bucket a flat list of edge-bearing items into a `Map<ownerEdgeKey, CallEdge[]>`,
28
+ * keyed via {@link ownerEdgeKey} (NOT by `bodyHash` alone). `keyParts` extracts
29
+ * the owning occurrence's `(bodyHash, filePath)` from each item; `edgeOf`
30
+ * extracts the edge. Append-order within a bucket is preserved (callers sort
31
+ * downstream for determinism). The canonical owner-keyed bucket: every consumer
32
+ * routes through this instead of re-deriving an owner key inline.
33
+ */
34
+ export declare function bucketEdgesByOwner<T>(items: Iterable<T>, keyParts: (item: T) => {
35
+ readonly bodyHash: string;
36
+ readonly filePath: string;
37
+ }, edgeOf: (item: T) => CallEdge): Map<string, CallEdge[]>;
38
+ /**
39
+ * Stitch recovered edges onto each occurrence, keyed by
40
+ * `ownerEdgeKey(o.bodyHash, o.filePath)` so ONLY the owning occurrence receives
41
+ * its edges (body-twins in different files never smear). `combine` decides how an
42
+ * occurrence's existing `calls` and its recovered edges merge (e.g. replace,
43
+ * concatenate, or drop-placeholder-then-concat) and returns the new occurrence —
44
+ * keeping the keying in one place while leaving the per-engine merge policy to
45
+ * the caller. An occurrence with no recovered edges is returned unchanged.
46
+ */
47
+ export declare function stitchEdgesByOwner(functions: Readonly<Record<string, readonly FunctionOccurrence[]>>, edgesByOwnerKey: ReadonlyMap<string, readonly CallEdge[]>, combine: (occ: FunctionOccurrence, recovered: readonly CallEdge[]) => FunctionOccurrence): Record<string, readonly FunctionOccurrence[]>;
48
+ //# sourceMappingURL=edge-identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edge-identity.d.ts","sourceRoot":"","sources":["../../../src/cli/orchestrate/edge-identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAC/E,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,QAAQ,GAC5B,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAUzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,kBAAkB,EAAE,CAAC,CAAC,EAClE,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,CAAC,EACzD,OAAO,EAAE,CAAC,GAAG,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,QAAQ,EAAE,KAAK,kBAAkB,GACvF,MAAM,CAAC,MAAM,EAAE,SAAS,kBAAkB,EAAE,CAAC,CAa/C"}