@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 @@
1
+ {"version":3,"file":"shard-worker.d.ts","sourceRoot":"","sources":["../../src/cli/shard-worker.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AAcH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB7F"}
@@ -0,0 +1,98 @@
1
+ // @fitness-ignore-file no-direct-stdout-in-tool-engine -- subprocess IPC protocol: the worker serializes its ShardBuildResult to stdout and the parent (shard runner) reads stdout to EOF. This is not run output through the render seam; it is the wire format between two CLI processes.
2
+ // @fitness-ignore-file only-documented-toolcli-seams -- same rationale as above: this stdout write is the worker↔parent IPC wire, not user-facing run output through a ToolCliContext seam.
3
+ /**
4
+ * `graph-shard-worker <specPath>` — the per-shard build subprocess.
5
+ *
6
+ * One worker process builds ONE shard: it reads a {@link ShardWorkerSpec}
7
+ * JSON file, runs parse → walk → resolve over the shard's explicit file
8
+ * set (requesting cross-boundary descriptors), and writes a serializable
9
+ * {@link ShardBuildResult} JSON to stdout. The parent (the shard runner)
10
+ * spawns N of these under a concurrency cap and merges their fragments.
11
+ *
12
+ * This is an internal command, not a user-facing one — the shard runner
13
+ * invokes `node <cliScript> graph-shard-worker <specPath>`. It exists as a
14
+ * subcommand so the worker runs inside the bootstrapped CLI scope (the
15
+ * language-adapter registry is populated), letting `pickAdapter` resolve
16
+ * the adapter exactly as the main build does.
17
+ *
18
+ * The boundary is JSON only: no `ts.Node` / `ts.Program` ever crosses it.
19
+ */
20
+ import { readFileSync } from 'node:fs';
21
+ import { logger } from '@opensip-cli/core';
22
+ import { computeFilesFingerprint } from '../cache/invalidate.js';
23
+ import { pickAdapter } from '../lang-adapter/registry.js';
24
+ import { spanRunStage } from './graph-tracer.js';
25
+ import { buildAndResolveCatalog } from './orchestrate/catalog-builder.js';
26
+ /**
27
+ * Build one shard and emit its `ShardBuildResult` as JSON on stdout.
28
+ * Exits non-zero (via setExitCode) on failure so the parent can attribute
29
+ * the error to this shard.
30
+ */
31
+ export async function executeShardWorker(specPath, cli) {
32
+ let shardId = '<unknown>';
33
+ try {
34
+ const spec = JSON.parse(readFileSync(specPath, 'utf8'));
35
+ shardId = spec.shard.id;
36
+ const result = await buildShard(spec);
37
+ // Single write of the whole JSON document — the parent reads stdout to EOF.
38
+ process.stdout.write(JSON.stringify(result));
39
+ cli.setExitCode(0);
40
+ }
41
+ catch (error) {
42
+ logger.error({
43
+ evt: 'graph.shard.worker.error',
44
+ module: 'graph:shard-worker',
45
+ shardId,
46
+ err: error instanceof Error ? error.message : String(error),
47
+ });
48
+ process.stderr.write(`graph-shard-worker [${shardId}]: ${error instanceof Error ? error.message : String(error)}\n`);
49
+ cli.setExitCode(1);
50
+ }
51
+ }
52
+ async function buildShard(spec) {
53
+ const { shard, projectRoot, resolutionMode } = spec;
54
+ const adapter = pickAdapter(shard.rootDir, spec.language);
55
+ // Anchor compiler options to the shard's own config, but compute
56
+ // occurrence filePaths against the COMMON project root so fragments
57
+ // align across shards when merged. For the synthetic `:root` shard,
58
+ // `shard.configPathAbs` is the ROOT tsconfig — so root scripts and other
59
+ // files under no package tsconfig parse/resolve against the root compiler
60
+ // options (Phase 1). The discovery here is consulted ONLY for those compiler
61
+ // options: the file set is `shard.files` (the canonical partition the runner
62
+ // pre-enumerated), NOT the tsconfig's own include/exclude glob — so test
63
+ // files now assigned to a package shard parse even though that package's
64
+ // tsconfig would have excluded them (tsc compiles `rootNames` verbatim).
65
+ const discovered = adapter.discoverFiles({
66
+ cwd: shard.rootDir,
67
+ configPathOverride: shard.configPathAbs,
68
+ });
69
+ const discovery = {
70
+ projectDirAbs: projectRoot,
71
+ files: shard.files,
72
+ configPathAbs: shard.configPathAbs ?? discovered.configPathAbs,
73
+ compilerOptions: discovered.compilerOptions,
74
+ };
75
+ // Emit per-stage spans tagged with this shard's id. They nest under the
76
+ // parent build's sharded span via the TRACEPARENT the runner propagates into
77
+ // this worker's env (extracted at the CLI boundary by initTelemetry). No live
78
+ // view here — the worker is headless — so no progress/monitor plumbing.
79
+ const built = await buildAndResolveCatalog({
80
+ runStage: spanRunStage({ 'opensip_cli.graph.shard_id': shard.id }),
81
+ adapter,
82
+ discovery,
83
+ resolutionMode,
84
+ emitBoundaryCalls: true,
85
+ // Stamp this fragment's cacheKey with `mode=sharded` so it matches what
86
+ // `planShardWork` compares against (loadValidShardFragment) and never
87
+ // collides with a single-program (exact) catalog row.
88
+ engineMode: 'sharded',
89
+ });
90
+ return {
91
+ shardId: shard.id,
92
+ fragment: built.catalog,
93
+ fingerprint: computeFilesFingerprint(shard.files),
94
+ boundaryCalls: built.boundaryCalls ?? [],
95
+ parseErrors: built.parseErrors,
96
+ };
97
+ }
98
+ //# sourceMappingURL=shard-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shard-worker.js","sourceRoot":"","sources":["../../src/cli/shard-worker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * `opensip graph symbol-index --out <path>` — emit a symbol-index
3
+ * JSON artifact suitable for agent consumption (e.g., feeding into a
4
+ * coding LLM's context, or piping into another tool).
5
+ *
6
+ * Schema:
7
+ * {
8
+ * "version": "1.0",
9
+ * "tool": "graph",
10
+ * "generatedAt": "<ISO timestamp>",
11
+ * "symbols": {
12
+ * "<simpleName>": [
13
+ * { "qualifiedName", "filePath", "line", "column",
14
+ * "kind", "visibility", "bodyHash" },
15
+ * ...
16
+ * ]
17
+ * },
18
+ * "fileSymbols": {
19
+ * "<filePath>": ["<simpleName>", ...]
20
+ * }
21
+ * }
22
+ *
23
+ * Bidirectional like codeindex (name→file and file→names), but enriched
24
+ * with kind/visibility/bodyHash since we already have that data.
25
+ */
26
+ import type { Catalog } from '../types.js';
27
+ import type { ToolCliContext } from '@opensip-cli/core';
28
+ export interface SymbolIndexCommandOptions {
29
+ readonly cwd: string;
30
+ readonly out: string;
31
+ }
32
+ interface SymbolEntry {
33
+ readonly qualifiedName: string;
34
+ readonly filePath: string;
35
+ readonly line: number;
36
+ readonly column: number;
37
+ readonly kind: string;
38
+ readonly visibility: string;
39
+ readonly bodyHash: string;
40
+ }
41
+ interface SymbolIndexArtifact {
42
+ readonly version: '1.0';
43
+ readonly tool: 'graph';
44
+ readonly generatedAt: string;
45
+ readonly symbols: Record<string, readonly SymbolEntry[]>;
46
+ readonly fileSymbols: Record<string, readonly string[]>;
47
+ }
48
+ export declare function executeSymbolIndex(opts: SymbolIndexCommandOptions, cli: ToolCliContext): void;
49
+ export declare function buildArtifact(catalog: Catalog): SymbolIndexArtifact;
50
+ export {};
51
+ //# sourceMappingURL=symbol-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol-index.d.ts","sourceRoot":"","sources":["../../src/cli/symbol-index.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAUH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,WAAW;IACnB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC,CAAC;IACzD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;CACzD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,yBAAyB,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CA+C7F;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,mBAAmB,CAgBnE"}
@@ -0,0 +1,120 @@
1
+ // @fitness-ignore-file no-direct-stdout-in-tool-engine -- auxiliary subcommand status line: `graph symbol-index` writes its artifact to a file and prints a one-line "wrote N symbols to <path>" confirmation. This is not the signal-envelope run output (ADR-0011), which routes through the composition root.
2
+ // @fitness-ignore-file only-documented-toolcli-seams -- same rationale as above: this is the one-line "wrote N symbols to <path>" status confirmation after a file write, not user-facing run output through a ToolCliContext seam.
3
+ /**
4
+ * `opensip graph symbol-index --out <path>` — emit a symbol-index
5
+ * JSON artifact suitable for agent consumption (e.g., feeding into a
6
+ * coding LLM's context, or piping into another tool).
7
+ *
8
+ * Schema:
9
+ * {
10
+ * "version": "1.0",
11
+ * "tool": "graph",
12
+ * "generatedAt": "<ISO timestamp>",
13
+ * "symbols": {
14
+ * "<simpleName>": [
15
+ * { "qualifiedName", "filePath", "line", "column",
16
+ * "kind", "visibility", "bodyHash" },
17
+ * ...
18
+ * ]
19
+ * },
20
+ * "fileSymbols": {
21
+ * "<filePath>": ["<simpleName>", ...]
22
+ * }
23
+ * }
24
+ *
25
+ * Bidirectional like codeindex (name→file and file→names), but enriched
26
+ * with kind/visibility/bodyHash since we already have that data.
27
+ */
28
+ import { mkdirSync, writeFileSync } from 'node:fs';
29
+ import { dirname, resolve } from 'node:path';
30
+ import { EXIT_CODES } from '@opensip-cli/contracts';
31
+ import { ConfigurationError, logger } from '@opensip-cli/core';
32
+ import { CatalogRepo } from '../persistence/catalog-repo.js';
33
+ export function executeSymbolIndex(opts, cli) {
34
+ logger.info({ evt: 'graph.cli.symbol-index.start', module: 'graph:cli' });
35
+ try {
36
+ const datastore = cli.scope.datastore();
37
+ if (!datastore) {
38
+ throw new ConfigurationError('graph symbol-index requires a DataStore on ToolCliContext.');
39
+ }
40
+ const catalog = new CatalogRepo(datastore).loadFullCatalog();
41
+ if (!catalog) {
42
+ throw new ConfigurationError('No graph catalog found. Run `opensip graph` first to build the catalog.');
43
+ }
44
+ const artifact = buildArtifact(catalog);
45
+ const outPath = resolve(opts.cwd, opts.out);
46
+ // Create the parent dir before writing so a nested --out
47
+ // (e.g. reports/symbolindex.json) doesn't throw ENOENT — matches
48
+ // the sibling writers (sarif-export, baseline-export, catalog-json).
49
+ mkdirSync(dirname(outPath), { recursive: true });
50
+ writeFileSync(outPath, `${JSON.stringify(artifact, null, 2)}\n`, 'utf8');
51
+ const symbolCount = Object.values(artifact.symbols).reduce((n, arr) => n + arr.length, 0);
52
+ const fileCount = Object.keys(artifact.fileSymbols).length;
53
+ process.stdout.write(`wrote ${String(symbolCount)} symbol(s) across ${String(fileCount)} file(s) to ${outPath}\n`);
54
+ cli.setExitCode(EXIT_CODES.SUCCESS);
55
+ logger.info({
56
+ evt: 'graph.cli.symbol-index.complete',
57
+ module: 'graph:cli',
58
+ symbols: symbolCount,
59
+ files: fileCount,
60
+ });
61
+ }
62
+ catch (error) {
63
+ logger.error({
64
+ evt: 'graph.cli.symbol-index.error',
65
+ module: 'graph:cli',
66
+ err: error instanceof Error ? error.message : String(error),
67
+ });
68
+ cli.setExitCode(error instanceof ConfigurationError
69
+ ? EXIT_CODES.CONFIGURATION_ERROR
70
+ : EXIT_CODES.RUNTIME_ERROR);
71
+ process.stderr.write(`graph symbol-index: ${error instanceof Error ? error.message : String(error)}\n`);
72
+ }
73
+ }
74
+ export function buildArtifact(catalog) {
75
+ const symbols = {};
76
+ const fileSymbols = {};
77
+ for (const name of Object.keys(catalog.functions)) {
78
+ const bucket = catalog.functions[name];
79
+ if (!bucket)
80
+ continue;
81
+ const entries = collectEntriesForName(bucket, name, fileSymbols);
82
+ if (entries.length > 0)
83
+ symbols[name] = entries;
84
+ }
85
+ return {
86
+ version: '1.0',
87
+ tool: 'graph',
88
+ generatedAt: new Date().toISOString(),
89
+ symbols,
90
+ fileSymbols,
91
+ };
92
+ }
93
+ function collectEntriesForName(bucket, name, fileSymbols) {
94
+ const entries = [];
95
+ for (const occ of bucket) {
96
+ if (occ.kind === 'module-init')
97
+ continue;
98
+ entries.push({
99
+ qualifiedName: occ.qualifiedName,
100
+ filePath: occ.filePath,
101
+ line: occ.line,
102
+ column: occ.column,
103
+ kind: occ.kind,
104
+ visibility: occ.visibility,
105
+ bodyHash: occ.bodyHash,
106
+ });
107
+ addNameToFileBucket(fileSymbols, occ.filePath, name);
108
+ }
109
+ return entries;
110
+ }
111
+ function addNameToFileBucket(fileSymbols, filePath, name) {
112
+ let bucket = fileSymbols[filePath];
113
+ if (!bucket) {
114
+ bucket = [];
115
+ fileSymbols[filePath] = bucket;
116
+ }
117
+ if (!bucket.includes(name))
118
+ bucket.push(name);
119
+ }
120
+ //# sourceMappingURL=symbol-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol-index.js","sourceRoot":"","sources":["../../src/cli/symbol-index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Render helpers for `graph --workspace` output — both the human
3
+ * terminal report and the JSON shape. Extracted from `cli/graph.ts`
4
+ * to keep the dispatcher file under the file-length-limit fitness
5
+ * check.
6
+ */
7
+ import type { WorkspaceUnitRunResult } from './workspace-runner.js';
8
+ import type { ToolCliContext } from '@opensip-cli/core';
9
+ /**
10
+ * Compose the human-readable workspace report as plain lines (no Ink twin),
11
+ * for the render seam.
12
+ */
13
+ export declare function workspaceReportLines(perUnit: readonly WorkspaceUnitRunResult[], durationMs: number): readonly string[];
14
+ /**
15
+ * Render the human-readable workspace report through the seam (Ink on TTY,
16
+ * plain text in pipes/CI) rather than writing to stdout directly.
17
+ */
18
+ export declare function writeWorkspaceReport(perUnit: readonly WorkspaceUnitRunResult[], durationMs: number, cli: ToolCliContext): Promise<void>;
19
+ /**
20
+ * Build the JSON document object for `graph --workspace --json`. Returns the
21
+ * plain object so the dispatcher can route it through the CLI's `emitJson`
22
+ * seam (ADR-0011: tools emit, the composition root owns the stdout IO),
23
+ * instead of writing to `process.stdout` directly.
24
+ */
25
+ export declare function buildWorkspaceJsonDocument(perUnit: readonly WorkspaceUnitRunResult[], durationMs: number): Record<string, unknown>;
26
+ /**
27
+ * Render the JSON document for `graph --workspace --json` as a string.
28
+ * Retained for unit-test ergonomics; the dispatcher emits the object via
29
+ * `cli.emitJson` (which applies the same `JSON.stringify(_, null, 2)`).
30
+ */
31
+ export declare function renderWorkspaceJson(perUnit: readonly WorkspaceUnitRunResult[], durationMs: number): string;
32
+ //# sourceMappingURL=workspace-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-report.d.ts","sourceRoot":"","sources":["../../src/cli/workspace-report.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIxD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,SAAS,sBAAsB,EAAE,EAC1C,UAAU,EAAE,MAAM,GACjB,SAAS,MAAM,EAAE,CAanB;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,SAAS,sBAAsB,EAAE,EAC1C,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,SAAS,sBAAsB,EAAE,EAC1C,UAAU,EAAE,MAAM,GACjB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAuBzB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,SAAS,sBAAsB,EAAE,EAC1C,UAAU,EAAE,MAAM,GACjB,MAAM,CAER"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Render helpers for `graph --workspace` output — both the human
3
+ * terminal report and the JSON shape. Extracted from `cli/graph.ts`
4
+ * to keep the dispatcher file under the file-length-limit fitness
5
+ * check.
6
+ */
7
+ const FINDINGS_PREVIEW = 10;
8
+ /**
9
+ * Compose the human-readable workspace report as plain lines (no Ink twin),
10
+ * for the render seam.
11
+ */
12
+ export function workspaceReportLines(perUnit, durationMs) {
13
+ const totalFindings = perUnit.reduce((n, r) => n + r.signals.length, 0);
14
+ return [
15
+ 'opensip graph --workspace',
16
+ '',
17
+ `== Units (${String(perUnit.length)}) ==`,
18
+ ...renderWorkspaceStatusLines(perUnit),
19
+ '',
20
+ '== Findings ==',
21
+ ...renderWorkspaceFindingsLines(perUnit),
22
+ '== Summary ==',
23
+ `${String(totalFindings)} total finding(s) across ${String(perUnit.length)} unit(s) in ${String(durationMs)} ms.`,
24
+ ];
25
+ }
26
+ /**
27
+ * Render the human-readable workspace report through the seam (Ink on TTY,
28
+ * plain text in pipes/CI) rather than writing to stdout directly.
29
+ */
30
+ export async function writeWorkspaceReport(perUnit, durationMs, cli) {
31
+ await cli.render({ type: 'graph-status', lines: workspaceReportLines(perUnit, durationMs) });
32
+ }
33
+ /**
34
+ * Build the JSON document object for `graph --workspace --json`. Returns the
35
+ * plain object so the dispatcher can route it through the CLI's `emitJson`
36
+ * seam (ADR-0011: tools emit, the composition root owns the stdout IO),
37
+ * instead of writing to `process.stdout` directly.
38
+ */
39
+ export function buildWorkspaceJsonDocument(perUnit, durationMs) {
40
+ return {
41
+ version: '1.0',
42
+ tool: 'graph',
43
+ command: 'graph',
44
+ mode: 'workspace',
45
+ // Workspace-specific artifact timestamp (for the --workspace JSON/report document).
46
+ // This is *not* the StoredSession row: the parent handler RETURNS the single
47
+ // aggregate session contribution for the whole --workspace invocation and the
48
+ // host run plane persists it (children are carrier --json and do not write
49
+ // sessions). This keeps user-facing workspace docs with their own clocks while
50
+ // the durable history row is host-stamped from the RunTimer.
51
+ timestamp: new Date().toISOString(),
52
+ durationMs,
53
+ units: perUnit.map((r) => ({
54
+ unitId: r.unitId,
55
+ rootDir: r.rootDir,
56
+ displayPath: r.displayPath,
57
+ exitCode: r.exitCode,
58
+ signals: r.signals,
59
+ })),
60
+ totalFindings: perUnit.reduce((n, r) => n + r.signals.length, 0),
61
+ };
62
+ }
63
+ /**
64
+ * Render the JSON document for `graph --workspace --json` as a string.
65
+ * Retained for unit-test ergonomics; the dispatcher emits the object via
66
+ * `cli.emitJson` (which applies the same `JSON.stringify(_, null, 2)`).
67
+ */
68
+ export function renderWorkspaceJson(perUnit, durationMs) {
69
+ return JSON.stringify(buildWorkspaceJsonDocument(perUnit, durationMs), null, 2);
70
+ }
71
+ function renderWorkspaceStatusLines(perUnit) {
72
+ const out = [];
73
+ for (const r of perUnit) {
74
+ const status = r.exitCode === 0 ? 'ok' : `FAILED (exit ${String(r.exitCode)})`;
75
+ const display = unitDisplay(r);
76
+ out.push(` ${display}: ${String(r.signals.length)} finding(s) — ${status}`);
77
+ if (r.exitCode !== 0 && r.stderr.length > 0) {
78
+ const stderrPreview = r.stderr.split('\n').slice(0, 3).join('\n ');
79
+ out.push(` stderr: ${stderrPreview}`);
80
+ }
81
+ }
82
+ return out;
83
+ }
84
+ function renderWorkspaceFindingsLines(perUnit) {
85
+ const out = [];
86
+ for (const r of perUnit) {
87
+ if (r.signals.length === 0)
88
+ continue;
89
+ out.push(`[${unitDisplay(r)}]`, ...renderUnitFindingPreview(r), '');
90
+ }
91
+ return out;
92
+ }
93
+ function renderUnitFindingPreview(r) {
94
+ const preview = r.signals.slice(0, FINDINGS_PREVIEW);
95
+ const lines = preview.map((s) => {
96
+ const loc = typeof s.line === 'number' ? `:${String(s.line)}` : '';
97
+ return ` ${s.filePath}${loc} — ${s.message}`;
98
+ });
99
+ if (r.signals.length > preview.length) {
100
+ lines.push(` ... ${String(r.signals.length - preview.length)} more (use --json for full list)`);
101
+ }
102
+ return lines;
103
+ }
104
+ function unitDisplay(r) {
105
+ return r.displayPath.length > 0 ? r.displayPath : r.rootDir;
106
+ }
107
+ //# sourceMappingURL=workspace-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-report.js","sourceRoot":"","sources":["../../src/cli/workspace-report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * `graph --workspace` parallel runner.
3
+ *
4
+ * Fans a graph run out across every workspace unit detected by the
5
+ * language adapters' `discoverWorkspaceUnits` hook by spawning one
6
+ * child process per unit, each running `graph <rootDir> --json`. Each
7
+ * child has its own Node heap, so the per-unit memory ceiling that
8
+ * Phase 6 already provides scales naturally:
9
+ * N units × ~per-unit-budget ≈ total budget. Concurrency is capped at
10
+ * `os.cpus().length - 1` (or a caller override) so we don't
11
+ * oversubscribe.
12
+ *
13
+ * Polyglot per spec D8b: callers compose units from multiple adapters
14
+ * via `discoverPolyglotUnits` and pass the flattened list. The runner
15
+ * itself is language-agnostic — it only sees opaque `WorkspaceUnit`s.
16
+ */
17
+ import { type LanguageAdapter, type Signal, type WorkspaceUnit } from '@opensip-cli/core';
18
+ import type { ResolutionMode } from '../types.js';
19
+ /**
20
+ * Per-unit result from a `graph --workspace` fan-out — one entry per
21
+ * child process spawned by `runWorkspaceUnitsInParallel`.
22
+ */
23
+ export interface WorkspaceUnitRunResult {
24
+ /** Human-readable unit id (e.g. `core`, `cli`, `crate-foo`). */
25
+ readonly unitId: string;
26
+ /** Absolute root dir the child was spawned against. */
27
+ readonly rootDir: string;
28
+ /**
29
+ * Project-relative path for display. Empty string if `rootDir` isn't
30
+ * under `cwd`.
31
+ */
32
+ readonly displayPath: string;
33
+ /**
34
+ * The child run's signals, parsed from its `--json` {@link SignalEnvelope}
35
+ * stdout (ADR-0011). These carry OpenSIP-mapped `ruleId`/`source` (the
36
+ * child applies Option A); the parent reverse-maps to engine slugs only
37
+ * where the dashboard session payload needs them.
38
+ */
39
+ readonly signals: readonly Signal[];
40
+ readonly exitCode: number;
41
+ readonly stderr: string;
42
+ }
43
+ /**
44
+ * Inputs to `runWorkspaceUnitsInParallel`. `units` is the flattened
45
+ * polyglot list typically produced by `discoverPolyglotUnits`.
46
+ */
47
+ export interface RunWorkspaceUnitsInput {
48
+ readonly cwd: string;
49
+ readonly units: readonly WorkspaceUnit[];
50
+ /**
51
+ * Path to the CLI entry script — typically `process.argv[1]` from
52
+ * the parent. Children invoke `node <cliScript> graph <rootDir>
53
+ * --json`.
54
+ */
55
+ readonly cliScript: string;
56
+ /** Override concurrency for tests. Default: cpus()-1, min 1. */
57
+ readonly concurrency?: number;
58
+ /** Forwarded to children if true. */
59
+ readonly noCache?: boolean;
60
+ /**
61
+ * Edge resolution tier. Forwarded to each child as `--resolution
62
+ * <mode>` so a `--workspace --resolution fast` run is fast per unit,
63
+ * not silently exact. Omitted/`'exact'` ⇒ children use their default.
64
+ */
65
+ readonly resolution?: ResolutionMode;
66
+ /**
67
+ * Optional adapter id. Forwarded to each child as `--language <id>` so
68
+ * workspace fan-out preserves the parent's explicit adapter selection.
69
+ */
70
+ readonly language?: string;
71
+ /**
72
+ * `--recipe <name>`: forwarded to each child as `--recipe <name>` so a
73
+ * `--workspace --recipe <name>` run selects the same rule subset per
74
+ * unit. Children re-resolve the recipe in their own scope (resolved
75
+ * `Rule` objects can't cross the process boundary). Omitted ⇒ children
76
+ * use the default recipe.
77
+ */
78
+ readonly recipe?: string;
79
+ }
80
+ /**
81
+ * Aggregate output from `runWorkspaceUnitsInParallel` — per-unit
82
+ * results plus a single boolean indicating whether any child failed.
83
+ */
84
+ export interface RunWorkspaceUnitsOutput {
85
+ readonly perUnit: readonly WorkspaceUnitRunResult[];
86
+ readonly anyChildFailed: boolean;
87
+ }
88
+ /**
89
+ * Aggregate WorkspaceUnits across all adapters that implement the
90
+ * discovery hook. Per spec D8b: in a polyglot repo (e.g. TS frontend +
91
+ * Cargo backend) both adapters contribute units to one combined fan-
92
+ * out. Adapters without the hook contribute zero units (D5).
93
+ *
94
+ * Returns units sorted by `rootDir` for deterministic fan-out order.
95
+ */
96
+ export declare function discoverPolyglotUnits(rootDir: string, adapters: readonly LanguageAdapter[]): Promise<readonly WorkspaceUnit[]>;
97
+ /**
98
+ * Spawn one child process per WorkspaceUnit, run `graph <rootDir>
99
+ * --json` in each, and aggregate the parsed findings. Concurrency is
100
+ * capped (default `cpus()-1`). Always resolves; child failures are
101
+ * surfaced via `anyChildFailed`.
102
+ */
103
+ export declare function runWorkspaceUnitsInParallel(input: RunWorkspaceUnitsInput): Promise<RunWorkspaceUnitsOutput>;
104
+ //# sourceMappingURL=workspace-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-runner.d.ts","sourceRoot":"","sources":["../../src/cli/workspace-runner.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,aAAa,EACnB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,gEAAgE;IAChE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,gEAAgE;IAChE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,qCAAqC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACpD,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,SAAS,eAAe,EAAE,GACnC,OAAO,CAAC,SAAS,aAAa,EAAE,CAAC,CASnC;AAED;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,uBAAuB,CAAC,CA0ClC"}