arceus-s 1.6.4

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 (1231) hide show
  1. package/README.md +395 -0
  2. package/dist/_shared/graph/types.d.ts +81 -0
  3. package/dist/_shared/graph/types.d.ts.map +1 -0
  4. package/dist/_shared/graph/types.js +8 -0
  5. package/dist/_shared/graph/types.js.map +1 -0
  6. package/dist/_shared/index.d.ts +63 -0
  7. package/dist/_shared/index.d.ts.map +1 -0
  8. package/dist/_shared/index.js +48 -0
  9. package/dist/_shared/index.js.map +1 -0
  10. package/dist/_shared/integrations/circuit-breaker.d.ts +183 -0
  11. package/dist/_shared/integrations/circuit-breaker.d.ts.map +1 -0
  12. package/dist/_shared/integrations/circuit-breaker.js +236 -0
  13. package/dist/_shared/integrations/circuit-breaker.js.map +1 -0
  14. package/dist/_shared/integrations/resilient-fetch.d.ts +99 -0
  15. package/dist/_shared/integrations/resilient-fetch.d.ts.map +1 -0
  16. package/dist/_shared/integrations/resilient-fetch.js +204 -0
  17. package/dist/_shared/integrations/resilient-fetch.js.map +1 -0
  18. package/dist/_shared/integrations/retry.d.ts +60 -0
  19. package/dist/_shared/integrations/retry.d.ts.map +1 -0
  20. package/dist/_shared/integrations/retry.js +67 -0
  21. package/dist/_shared/integrations/retry.js.map +1 -0
  22. package/dist/_shared/integrations/understand-quickly.d.ts +77 -0
  23. package/dist/_shared/integrations/understand-quickly.d.ts.map +1 -0
  24. package/dist/_shared/integrations/understand-quickly.js +176 -0
  25. package/dist/_shared/integrations/understand-quickly.js.map +1 -0
  26. package/dist/_shared/language-detection.d.ts +23 -0
  27. package/dist/_shared/language-detection.d.ts.map +1 -0
  28. package/dist/_shared/language-detection.js +139 -0
  29. package/dist/_shared/language-detection.js.map +1 -0
  30. package/dist/_shared/languages.d.ts +26 -0
  31. package/dist/_shared/languages.d.ts.map +1 -0
  32. package/dist/_shared/languages.js +27 -0
  33. package/dist/_shared/languages.js.map +1 -0
  34. package/dist/_shared/lbug/schema-constants.d.ts +16 -0
  35. package/dist/_shared/lbug/schema-constants.d.ts.map +1 -0
  36. package/dist/_shared/lbug/schema-constants.js +67 -0
  37. package/dist/_shared/lbug/schema-constants.js.map +1 -0
  38. package/dist/_shared/mro-strategy.d.ts +41 -0
  39. package/dist/_shared/mro-strategy.d.ts.map +1 -0
  40. package/dist/_shared/mro-strategy.js +2 -0
  41. package/dist/_shared/mro-strategy.js.map +1 -0
  42. package/dist/_shared/pipeline.d.ts +16 -0
  43. package/dist/_shared/pipeline.d.ts.map +1 -0
  44. package/dist/_shared/pipeline.js +5 -0
  45. package/dist/_shared/pipeline.js.map +1 -0
  46. package/dist/_shared/scope-resolution/def-index.d.ts +36 -0
  47. package/dist/_shared/scope-resolution/def-index.d.ts.map +1 -0
  48. package/dist/_shared/scope-resolution/def-index.js +51 -0
  49. package/dist/_shared/scope-resolution/def-index.js.map +1 -0
  50. package/dist/_shared/scope-resolution/evidence-weights.d.ts +69 -0
  51. package/dist/_shared/scope-resolution/evidence-weights.d.ts.map +1 -0
  52. package/dist/_shared/scope-resolution/evidence-weights.js +84 -0
  53. package/dist/_shared/scope-resolution/evidence-weights.js.map +1 -0
  54. package/dist/_shared/scope-resolution/finalize-algorithm.d.ts +149 -0
  55. package/dist/_shared/scope-resolution/finalize-algorithm.d.ts.map +1 -0
  56. package/dist/_shared/scope-resolution/finalize-algorithm.js +795 -0
  57. package/dist/_shared/scope-resolution/finalize-algorithm.js.map +1 -0
  58. package/dist/_shared/scope-resolution/language-classification.d.ts +26 -0
  59. package/dist/_shared/scope-resolution/language-classification.d.ts.map +1 -0
  60. package/dist/_shared/scope-resolution/language-classification.js +44 -0
  61. package/dist/_shared/scope-resolution/language-classification.js.map +1 -0
  62. package/dist/_shared/scope-resolution/method-dispatch-index.d.ts +106 -0
  63. package/dist/_shared/scope-resolution/method-dispatch-index.d.ts.map +1 -0
  64. package/dist/_shared/scope-resolution/method-dispatch-index.js +98 -0
  65. package/dist/_shared/scope-resolution/method-dispatch-index.js.map +1 -0
  66. package/dist/_shared/scope-resolution/module-scope-index.d.ts +46 -0
  67. package/dist/_shared/scope-resolution/module-scope-index.d.ts.map +1 -0
  68. package/dist/_shared/scope-resolution/module-scope-index.js +58 -0
  69. package/dist/_shared/scope-resolution/module-scope-index.js.map +1 -0
  70. package/dist/_shared/scope-resolution/origin-priority.d.ts +14 -0
  71. package/dist/_shared/scope-resolution/origin-priority.d.ts.map +1 -0
  72. package/dist/_shared/scope-resolution/origin-priority.js +21 -0
  73. package/dist/_shared/scope-resolution/origin-priority.js.map +1 -0
  74. package/dist/_shared/scope-resolution/parsed-file.d.ts +76 -0
  75. package/dist/_shared/scope-resolution/parsed-file.d.ts.map +1 -0
  76. package/dist/_shared/scope-resolution/parsed-file.js +54 -0
  77. package/dist/_shared/scope-resolution/parsed-file.js.map +1 -0
  78. package/dist/_shared/scope-resolution/position-index.d.ts +62 -0
  79. package/dist/_shared/scope-resolution/position-index.d.ts.map +1 -0
  80. package/dist/_shared/scope-resolution/position-index.js +134 -0
  81. package/dist/_shared/scope-resolution/position-index.js.map +1 -0
  82. package/dist/_shared/scope-resolution/qualified-name-index.d.ts +44 -0
  83. package/dist/_shared/scope-resolution/qualified-name-index.d.ts.map +1 -0
  84. package/dist/_shared/scope-resolution/qualified-name-index.js +75 -0
  85. package/dist/_shared/scope-resolution/qualified-name-index.js.map +1 -0
  86. package/dist/_shared/scope-resolution/reference-site.d.ts +75 -0
  87. package/dist/_shared/scope-resolution/reference-site.d.ts.map +1 -0
  88. package/dist/_shared/scope-resolution/reference-site.js +24 -0
  89. package/dist/_shared/scope-resolution/reference-site.js.map +1 -0
  90. package/dist/_shared/scope-resolution/registries/class-registry.d.ts +27 -0
  91. package/dist/_shared/scope-resolution/registries/class-registry.d.ts.map +1 -0
  92. package/dist/_shared/scope-resolution/registries/class-registry.js +30 -0
  93. package/dist/_shared/scope-resolution/registries/class-registry.js.map +1 -0
  94. package/dist/_shared/scope-resolution/registries/context.d.ts +69 -0
  95. package/dist/_shared/scope-resolution/registries/context.d.ts.map +1 -0
  96. package/dist/_shared/scope-resolution/registries/context.js +44 -0
  97. package/dist/_shared/scope-resolution/registries/context.js.map +1 -0
  98. package/dist/_shared/scope-resolution/registries/evidence.d.ts +56 -0
  99. package/dist/_shared/scope-resolution/registries/evidence.d.ts.map +1 -0
  100. package/dist/_shared/scope-resolution/registries/evidence.js +150 -0
  101. package/dist/_shared/scope-resolution/registries/evidence.js.map +1 -0
  102. package/dist/_shared/scope-resolution/registries/field-registry.d.ts +26 -0
  103. package/dist/_shared/scope-resolution/registries/field-registry.d.ts.map +1 -0
  104. package/dist/_shared/scope-resolution/registries/field-registry.js +31 -0
  105. package/dist/_shared/scope-resolution/registries/field-registry.js.map +1 -0
  106. package/dist/_shared/scope-resolution/registries/lookup-core.d.ts +81 -0
  107. package/dist/_shared/scope-resolution/registries/lookup-core.d.ts.map +1 -0
  108. package/dist/_shared/scope-resolution/registries/lookup-core.js +349 -0
  109. package/dist/_shared/scope-resolution/registries/lookup-core.js.map +1 -0
  110. package/dist/_shared/scope-resolution/registries/lookup-qualified.d.ts +33 -0
  111. package/dist/_shared/scope-resolution/registries/lookup-qualified.d.ts.map +1 -0
  112. package/dist/_shared/scope-resolution/registries/lookup-qualified.js +56 -0
  113. package/dist/_shared/scope-resolution/registries/lookup-qualified.js.map +1 -0
  114. package/dist/_shared/scope-resolution/registries/method-registry.d.ts +36 -0
  115. package/dist/_shared/scope-resolution/registries/method-registry.d.ts.map +1 -0
  116. package/dist/_shared/scope-resolution/registries/method-registry.js +32 -0
  117. package/dist/_shared/scope-resolution/registries/method-registry.js.map +1 -0
  118. package/dist/_shared/scope-resolution/registries/tie-breaks.d.ts +43 -0
  119. package/dist/_shared/scope-resolution/registries/tie-breaks.d.ts.map +1 -0
  120. package/dist/_shared/scope-resolution/registries/tie-breaks.js +60 -0
  121. package/dist/_shared/scope-resolution/registries/tie-breaks.js.map +1 -0
  122. package/dist/_shared/scope-resolution/resolve-type-ref.d.ts +53 -0
  123. package/dist/_shared/scope-resolution/resolve-type-ref.d.ts.map +1 -0
  124. package/dist/_shared/scope-resolution/resolve-type-ref.js +126 -0
  125. package/dist/_shared/scope-resolution/resolve-type-ref.js.map +1 -0
  126. package/dist/_shared/scope-resolution/scope-id.d.ts +43 -0
  127. package/dist/_shared/scope-resolution/scope-id.d.ts.map +1 -0
  128. package/dist/_shared/scope-resolution/scope-id.js +46 -0
  129. package/dist/_shared/scope-resolution/scope-id.js.map +1 -0
  130. package/dist/_shared/scope-resolution/scope-tree.d.ts +83 -0
  131. package/dist/_shared/scope-resolution/scope-tree.d.ts.map +1 -0
  132. package/dist/_shared/scope-resolution/scope-tree.js +220 -0
  133. package/dist/_shared/scope-resolution/scope-tree.js.map +1 -0
  134. package/dist/_shared/scope-resolution/shadow/aggregate.d.ts +63 -0
  135. package/dist/_shared/scope-resolution/shadow/aggregate.d.ts.map +1 -0
  136. package/dist/_shared/scope-resolution/shadow/aggregate.js +122 -0
  137. package/dist/_shared/scope-resolution/shadow/aggregate.js.map +1 -0
  138. package/dist/_shared/scope-resolution/shadow/diff.d.ts +59 -0
  139. package/dist/_shared/scope-resolution/shadow/diff.d.ts.map +1 -0
  140. package/dist/_shared/scope-resolution/shadow/diff.js +79 -0
  141. package/dist/_shared/scope-resolution/shadow/diff.js.map +1 -0
  142. package/dist/_shared/scope-resolution/symbol-definition.d.ts +34 -0
  143. package/dist/_shared/scope-resolution/symbol-definition.d.ts.map +1 -0
  144. package/dist/_shared/scope-resolution/symbol-definition.js +12 -0
  145. package/dist/_shared/scope-resolution/symbol-definition.js.map +1 -0
  146. package/dist/_shared/scope-resolution/types.d.ts +400 -0
  147. package/dist/_shared/scope-resolution/types.d.ts.map +1 -0
  148. package/dist/_shared/scope-resolution/types.js +25 -0
  149. package/dist/_shared/scope-resolution/types.js.map +1 -0
  150. package/dist/_shared/test-helpers.d.ts +13 -0
  151. package/dist/_shared/test-helpers.d.ts.map +1 -0
  152. package/dist/_shared/test-helpers.js +13 -0
  153. package/dist/_shared/test-helpers.js.map +1 -0
  154. package/dist/cli/ai-context.d.ts +28 -0
  155. package/dist/cli/ai-context.js +289 -0
  156. package/dist/cli/analyze.d.ts +80 -0
  157. package/dist/cli/analyze.js +525 -0
  158. package/dist/cli/augment.d.ts +13 -0
  159. package/dist/cli/augment.js +33 -0
  160. package/dist/cli/clean.d.ts +10 -0
  161. package/dist/cli/clean.js +79 -0
  162. package/dist/cli/cli-message.d.ts +16 -0
  163. package/dist/cli/cli-message.js +71 -0
  164. package/dist/cli/doctor.d.ts +1 -0
  165. package/dist/cli/doctor.js +31 -0
  166. package/dist/cli/eval-server.d.ts +37 -0
  167. package/dist/cli/eval-server.js +423 -0
  168. package/dist/cli/group.d.ts +1 -0
  169. package/dist/cli/group.js +323 -0
  170. package/dist/cli/index-repo.d.ts +15 -0
  171. package/dist/cli/index-repo.js +120 -0
  172. package/dist/cli/index.d.ts +2 -0
  173. package/dist/cli/index.js +492 -0
  174. package/dist/cli/lazy-action.d.ts +6 -0
  175. package/dist/cli/lazy-action.js +18 -0
  176. package/dist/cli/list.d.ts +6 -0
  177. package/dist/cli/list.js +40 -0
  178. package/dist/cli/mcp.d.ts +29 -0
  179. package/dist/cli/mcp.js +73 -0
  180. package/dist/cli/optional-grammars.d.ts +47 -0
  181. package/dist/cli/optional-grammars.js +87 -0
  182. package/dist/cli/publish.d.ts +29 -0
  183. package/dist/cli/publish.js +174 -0
  184. package/dist/cli/remove.d.ts +30 -0
  185. package/dist/cli/remove.js +102 -0
  186. package/dist/cli/serve.d.ts +4 -0
  187. package/dist/cli/serve.js +55 -0
  188. package/dist/cli/setup.d.ts +8 -0
  189. package/dist/cli/setup.js +642 -0
  190. package/dist/cli/skill-gen.d.ts +26 -0
  191. package/dist/cli/skill-gen.js +555 -0
  192. package/dist/cli/status.d.ts +6 -0
  193. package/dist/cli/status.js +36 -0
  194. package/dist/cli/tool.d.ts +43 -0
  195. package/dist/cli/tool.js +169 -0
  196. package/dist/cli/wiki.d.ts +23 -0
  197. package/dist/cli/wiki.js +616 -0
  198. package/dist/config/ignore-service.d.ts +35 -0
  199. package/dist/config/ignore-service.js +439 -0
  200. package/dist/config/supported-languages.d.ts +13 -0
  201. package/dist/config/supported-languages.js +13 -0
  202. package/dist/core/augmentation/engine.d.ts +26 -0
  203. package/dist/core/augmentation/engine.js +272 -0
  204. package/dist/core/embedding-mode.d.ts +51 -0
  205. package/dist/core/embedding-mode.js +48 -0
  206. package/dist/core/embeddings/ast-utils.d.ts +22 -0
  207. package/dist/core/embeddings/ast-utils.js +106 -0
  208. package/dist/core/embeddings/character-chunk.d.ts +12 -0
  209. package/dist/core/embeddings/character-chunk.js +43 -0
  210. package/dist/core/embeddings/chunker.d.ts +14 -0
  211. package/dist/core/embeddings/chunker.js +239 -0
  212. package/dist/core/embeddings/config.d.ts +2 -0
  213. package/dist/core/embeddings/config.js +36 -0
  214. package/dist/core/embeddings/embedder.d.ts +65 -0
  215. package/dist/core/embeddings/embedder.js +349 -0
  216. package/dist/core/embeddings/embedding-pipeline.d.ts +68 -0
  217. package/dist/core/embeddings/embedding-pipeline.js +552 -0
  218. package/dist/core/embeddings/exact-search.d.ts +15 -0
  219. package/dist/core/embeddings/exact-search.js +27 -0
  220. package/dist/core/embeddings/hf-env.d.ts +135 -0
  221. package/dist/core/embeddings/hf-env.js +232 -0
  222. package/dist/core/embeddings/http-client.d.ts +37 -0
  223. package/dist/core/embeddings/http-client.js +199 -0
  224. package/dist/core/embeddings/index.d.ts +10 -0
  225. package/dist/core/embeddings/index.js +10 -0
  226. package/dist/core/embeddings/line-index.d.ts +7 -0
  227. package/dist/core/embeddings/line-index.js +42 -0
  228. package/dist/core/embeddings/server-mapping.d.ts +15 -0
  229. package/dist/core/embeddings/server-mapping.js +33 -0
  230. package/dist/core/embeddings/structural-extractor.d.ts +15 -0
  231. package/dist/core/embeddings/structural-extractor.js +58 -0
  232. package/dist/core/embeddings/text-generator.d.ts +31 -0
  233. package/dist/core/embeddings/text-generator.js +208 -0
  234. package/dist/core/embeddings/types.d.ts +211 -0
  235. package/dist/core/embeddings/types.js +202 -0
  236. package/dist/core/git-staleness.d.ts +37 -0
  237. package/dist/core/git-staleness.js +167 -0
  238. package/dist/core/graph/graph.d.ts +2 -0
  239. package/dist/core/graph/graph.js +173 -0
  240. package/dist/core/graph/types.d.ts +36 -0
  241. package/dist/core/graph/types.js +1 -0
  242. package/dist/core/group/bridge-db.d.ts +82 -0
  243. package/dist/core/group/bridge-db.js +609 -0
  244. package/dist/core/group/bridge-schema.d.ts +27 -0
  245. package/dist/core/group/bridge-schema.js +55 -0
  246. package/dist/core/group/config-parser.d.ts +7 -0
  247. package/dist/core/group/config-parser.js +122 -0
  248. package/dist/core/group/contract-extractor.d.ts +7 -0
  249. package/dist/core/group/contract-extractor.js +1 -0
  250. package/dist/core/group/cross-impact.d.ts +85 -0
  251. package/dist/core/group/cross-impact.js +515 -0
  252. package/dist/core/group/extractors/elixir-workspace-extractor.d.ts +15 -0
  253. package/dist/core/group/extractors/elixir-workspace-extractor.js +204 -0
  254. package/dist/core/group/extractors/fs-utils.d.ts +10 -0
  255. package/dist/core/group/extractors/fs-utils.js +24 -0
  256. package/dist/core/group/extractors/go-workspace-extractor.d.ts +14 -0
  257. package/dist/core/group/extractors/go-workspace-extractor.js +217 -0
  258. package/dist/core/group/extractors/grpc-extractor.d.ts +25 -0
  259. package/dist/core/group/extractors/grpc-extractor.js +414 -0
  260. package/dist/core/group/extractors/grpc-patterns/go.d.ts +2 -0
  261. package/dist/core/group/extractors/grpc-patterns/go.js +97 -0
  262. package/dist/core/group/extractors/grpc-patterns/index.d.ts +19 -0
  263. package/dist/core/group/extractors/grpc-patterns/index.js +46 -0
  264. package/dist/core/group/extractors/grpc-patterns/java.d.ts +2 -0
  265. package/dist/core/group/extractors/grpc-patterns/java.js +173 -0
  266. package/dist/core/group/extractors/grpc-patterns/node.d.ts +4 -0
  267. package/dist/core/group/extractors/grpc-patterns/node.js +290 -0
  268. package/dist/core/group/extractors/grpc-patterns/proto.d.ts +9 -0
  269. package/dist/core/group/extractors/grpc-patterns/proto.js +134 -0
  270. package/dist/core/group/extractors/grpc-patterns/python.d.ts +2 -0
  271. package/dist/core/group/extractors/grpc-patterns/python.js +67 -0
  272. package/dist/core/group/extractors/grpc-patterns/types.d.ts +50 -0
  273. package/dist/core/group/extractors/grpc-patterns/types.js +1 -0
  274. package/dist/core/group/extractors/http-patterns/go.d.ts +2 -0
  275. package/dist/core/group/extractors/http-patterns/go.js +215 -0
  276. package/dist/core/group/extractors/http-patterns/index.d.ts +17 -0
  277. package/dist/core/group/extractors/http-patterns/index.js +44 -0
  278. package/dist/core/group/extractors/http-patterns/java.d.ts +2 -0
  279. package/dist/core/group/extractors/http-patterns/java.js +253 -0
  280. package/dist/core/group/extractors/http-patterns/node.d.ts +4 -0
  281. package/dist/core/group/extractors/http-patterns/node.js +484 -0
  282. package/dist/core/group/extractors/http-patterns/php.d.ts +2 -0
  283. package/dist/core/group/extractors/http-patterns/php.js +178 -0
  284. package/dist/core/group/extractors/http-patterns/python.d.ts +2 -0
  285. package/dist/core/group/extractors/http-patterns/python.js +308 -0
  286. package/dist/core/group/extractors/http-patterns/types.d.ts +61 -0
  287. package/dist/core/group/extractors/http-patterns/types.js +1 -0
  288. package/dist/core/group/extractors/http-route-extractor.d.ts +21 -0
  289. package/dist/core/group/extractors/http-route-extractor.js +430 -0
  290. package/dist/core/group/extractors/include-extractor.d.ts +39 -0
  291. package/dist/core/group/extractors/include-extractor.js +566 -0
  292. package/dist/core/group/extractors/java-workspace-extractor.d.ts +16 -0
  293. package/dist/core/group/extractors/java-workspace-extractor.js +204 -0
  294. package/dist/core/group/extractors/manifest-extractor.d.ts +54 -0
  295. package/dist/core/group/extractors/manifest-extractor.js +320 -0
  296. package/dist/core/group/extractors/node-workspace-extractor.d.ts +14 -0
  297. package/dist/core/group/extractors/node-workspace-extractor.js +207 -0
  298. package/dist/core/group/extractors/python-workspace-extractor.d.ts +15 -0
  299. package/dist/core/group/extractors/python-workspace-extractor.js +205 -0
  300. package/dist/core/group/extractors/rust-workspace-extractor.d.ts +44 -0
  301. package/dist/core/group/extractors/rust-workspace-extractor.js +240 -0
  302. package/dist/core/group/extractors/thrift-extractor.d.ts +22 -0
  303. package/dist/core/group/extractors/thrift-extractor.js +283 -0
  304. package/dist/core/group/extractors/thrift-patterns/index.d.ts +4 -0
  305. package/dist/core/group/extractors/thrift-patterns/index.js +10 -0
  306. package/dist/core/group/extractors/thrift-patterns/java.d.ts +2 -0
  307. package/dist/core/group/extractors/thrift-patterns/java.js +220 -0
  308. package/dist/core/group/extractors/thrift-patterns/types.d.ts +17 -0
  309. package/dist/core/group/extractors/thrift-patterns/types.js +1 -0
  310. package/dist/core/group/extractors/topic-extractor.d.ts +8 -0
  311. package/dist/core/group/extractors/topic-extractor.js +97 -0
  312. package/dist/core/group/extractors/topic-patterns/go.d.ts +2 -0
  313. package/dist/core/group/extractors/topic-patterns/go.js +120 -0
  314. package/dist/core/group/extractors/topic-patterns/index.d.ts +14 -0
  315. package/dist/core/group/extractors/topic-patterns/index.js +38 -0
  316. package/dist/core/group/extractors/topic-patterns/java.d.ts +2 -0
  317. package/dist/core/group/extractors/topic-patterns/java.js +80 -0
  318. package/dist/core/group/extractors/topic-patterns/node.d.ts +4 -0
  319. package/dist/core/group/extractors/topic-patterns/node.js +155 -0
  320. package/dist/core/group/extractors/topic-patterns/python.d.ts +2 -0
  321. package/dist/core/group/extractors/topic-patterns/python.js +116 -0
  322. package/dist/core/group/extractors/topic-patterns/types.d.ts +25 -0
  323. package/dist/core/group/extractors/topic-patterns/types.js +10 -0
  324. package/dist/core/group/extractors/tree-sitter-scanner.d.ts +113 -0
  325. package/dist/core/group/extractors/tree-sitter-scanner.js +95 -0
  326. package/dist/core/group/extractors/workspace-extractor.d.ts +13 -0
  327. package/dist/core/group/extractors/workspace-extractor.js +65 -0
  328. package/dist/core/group/group-path-utils.d.ts +17 -0
  329. package/dist/core/group/group-path-utils.js +40 -0
  330. package/dist/core/group/matching.d.ts +13 -0
  331. package/dist/core/group/matching.js +284 -0
  332. package/dist/core/group/normalization.d.ts +3 -0
  333. package/dist/core/group/normalization.js +115 -0
  334. package/dist/core/group/resolve-at-member.d.ts +10 -0
  335. package/dist/core/group/resolve-at-member.js +31 -0
  336. package/dist/core/group/service-boundary-detector.d.ts +8 -0
  337. package/dist/core/group/service-boundary-detector.js +155 -0
  338. package/dist/core/group/service.d.ts +56 -0
  339. package/dist/core/group/service.js +395 -0
  340. package/dist/core/group/storage.d.ts +9 -0
  341. package/dist/core/group/storage.js +157 -0
  342. package/dist/core/group/sync.d.ts +21 -0
  343. package/dist/core/group/sync.js +267 -0
  344. package/dist/core/group/types.d.ts +181 -0
  345. package/dist/core/group/types.js +1 -0
  346. package/dist/core/incremental/shadow-candidates.d.ts +44 -0
  347. package/dist/core/incremental/shadow-candidates.js +74 -0
  348. package/dist/core/incremental/subgraph-extract.d.ts +64 -0
  349. package/dist/core/incremental/subgraph-extract.js +111 -0
  350. package/dist/core/ingestion/ast-cache.d.ts +26 -0
  351. package/dist/core/ingestion/ast-cache.js +48 -0
  352. package/dist/core/ingestion/binding-accumulator.d.ts +212 -0
  353. package/dist/core/ingestion/binding-accumulator.js +336 -0
  354. package/dist/core/ingestion/call-extractors/configs/c-cpp.d.ts +3 -0
  355. package/dist/core/ingestion/call-extractors/configs/c-cpp.js +8 -0
  356. package/dist/core/ingestion/call-extractors/configs/csharp.d.ts +2 -0
  357. package/dist/core/ingestion/call-extractors/configs/csharp.js +6 -0
  358. package/dist/core/ingestion/call-extractors/configs/dart.d.ts +2 -0
  359. package/dist/core/ingestion/call-extractors/configs/dart.js +5 -0
  360. package/dist/core/ingestion/call-extractors/configs/go.d.ts +2 -0
  361. package/dist/core/ingestion/call-extractors/configs/go.js +5 -0
  362. package/dist/core/ingestion/call-extractors/configs/jvm.d.ts +3 -0
  363. package/dist/core/ingestion/call-extractors/configs/jvm.js +51 -0
  364. package/dist/core/ingestion/call-extractors/configs/php.d.ts +2 -0
  365. package/dist/core/ingestion/call-extractors/configs/php.js +5 -0
  366. package/dist/core/ingestion/call-extractors/configs/python.d.ts +2 -0
  367. package/dist/core/ingestion/call-extractors/configs/python.js +5 -0
  368. package/dist/core/ingestion/call-extractors/configs/ruby.d.ts +2 -0
  369. package/dist/core/ingestion/call-extractors/configs/ruby.js +5 -0
  370. package/dist/core/ingestion/call-extractors/configs/rust.d.ts +2 -0
  371. package/dist/core/ingestion/call-extractors/configs/rust.js +5 -0
  372. package/dist/core/ingestion/call-extractors/configs/swift.d.ts +2 -0
  373. package/dist/core/ingestion/call-extractors/configs/swift.js +5 -0
  374. package/dist/core/ingestion/call-extractors/configs/typescript-javascript.d.ts +3 -0
  375. package/dist/core/ingestion/call-extractors/configs/typescript-javascript.js +8 -0
  376. package/dist/core/ingestion/call-extractors/generic.d.ts +5 -0
  377. package/dist/core/ingestion/call-extractors/generic.js +59 -0
  378. package/dist/core/ingestion/call-processor.d.ts +235 -0
  379. package/dist/core/ingestion/call-processor.js +2754 -0
  380. package/dist/core/ingestion/call-routing.d.ts +55 -0
  381. package/dist/core/ingestion/call-routing.js +95 -0
  382. package/dist/core/ingestion/call-types.d.ts +135 -0
  383. package/dist/core/ingestion/call-types.js +2 -0
  384. package/dist/core/ingestion/class-extractors/configs/c-cpp.d.ts +3 -0
  385. package/dist/core/ingestion/class-extractors/configs/c-cpp.js +11 -0
  386. package/dist/core/ingestion/class-extractors/configs/csharp.d.ts +2 -0
  387. package/dist/core/ingestion/class-extractors/configs/csharp.js +21 -0
  388. package/dist/core/ingestion/class-extractors/configs/dart.d.ts +2 -0
  389. package/dist/core/ingestion/class-extractors/configs/dart.js +7 -0
  390. package/dist/core/ingestion/class-extractors/configs/go.d.ts +2 -0
  391. package/dist/core/ingestion/class-extractors/configs/go.js +20 -0
  392. package/dist/core/ingestion/class-extractors/configs/jvm.d.ts +3 -0
  393. package/dist/core/ingestion/class-extractors/configs/jvm.js +35 -0
  394. package/dist/core/ingestion/class-extractors/configs/php.d.ts +2 -0
  395. package/dist/core/ingestion/class-extractors/configs/php.js +7 -0
  396. package/dist/core/ingestion/class-extractors/configs/python.d.ts +2 -0
  397. package/dist/core/ingestion/class-extractors/configs/python.js +7 -0
  398. package/dist/core/ingestion/class-extractors/configs/ruby.d.ts +2 -0
  399. package/dist/core/ingestion/class-extractors/configs/ruby.js +7 -0
  400. package/dist/core/ingestion/class-extractors/configs/rust.d.ts +2 -0
  401. package/dist/core/ingestion/class-extractors/configs/rust.js +7 -0
  402. package/dist/core/ingestion/class-extractors/configs/swift.d.ts +2 -0
  403. package/dist/core/ingestion/class-extractors/configs/swift.js +18 -0
  404. package/dist/core/ingestion/class-extractors/configs/typescript-javascript.d.ts +4 -0
  405. package/dist/core/ingestion/class-extractors/configs/typescript-javascript.js +28 -0
  406. package/dist/core/ingestion/class-extractors/generic.d.ts +2 -0
  407. package/dist/core/ingestion/class-extractors/generic.js +135 -0
  408. package/dist/core/ingestion/class-types.d.ts +34 -0
  409. package/dist/core/ingestion/class-types.js +1 -0
  410. package/dist/core/ingestion/cluster-enricher.d.ts +38 -0
  411. package/dist/core/ingestion/cluster-enricher.js +169 -0
  412. package/dist/core/ingestion/cobol/cobol-copy-expander.d.ts +57 -0
  413. package/dist/core/ingestion/cobol/cobol-copy-expander.js +376 -0
  414. package/dist/core/ingestion/cobol/cobol-preprocessor.d.ts +212 -0
  415. package/dist/core/ingestion/cobol/cobol-preprocessor.js +1727 -0
  416. package/dist/core/ingestion/cobol/jcl-parser.d.ts +68 -0
  417. package/dist/core/ingestion/cobol/jcl-parser.js +217 -0
  418. package/dist/core/ingestion/cobol/jcl-processor.d.ts +33 -0
  419. package/dist/core/ingestion/cobol/jcl-processor.js +229 -0
  420. package/dist/core/ingestion/cobol-processor.d.ts +54 -0
  421. package/dist/core/ingestion/cobol-processor.js +1232 -0
  422. package/dist/core/ingestion/community-processor.d.ts +39 -0
  423. package/dist/core/ingestion/community-processor.js +336 -0
  424. package/dist/core/ingestion/constants.d.ts +17 -0
  425. package/dist/core/ingestion/constants.js +21 -0
  426. package/dist/core/ingestion/cpp-ue-preprocessor.d.ts +12 -0
  427. package/dist/core/ingestion/cpp-ue-preprocessor.js +260 -0
  428. package/dist/core/ingestion/emit-references.d.ts +88 -0
  429. package/dist/core/ingestion/emit-references.js +229 -0
  430. package/dist/core/ingestion/entry-point-scoring.d.ts +40 -0
  431. package/dist/core/ingestion/entry-point-scoring.js +196 -0
  432. package/dist/core/ingestion/export-detection.d.ts +57 -0
  433. package/dist/core/ingestion/export-detection.js +233 -0
  434. package/dist/core/ingestion/field-extractor.d.ts +29 -0
  435. package/dist/core/ingestion/field-extractor.js +25 -0
  436. package/dist/core/ingestion/field-extractors/configs/c-cpp.d.ts +3 -0
  437. package/dist/core/ingestion/field-extractors/configs/c-cpp.js +104 -0
  438. package/dist/core/ingestion/field-extractors/configs/csharp.d.ts +8 -0
  439. package/dist/core/ingestion/field-extractors/configs/csharp.js +121 -0
  440. package/dist/core/ingestion/field-extractors/configs/dart.d.ts +8 -0
  441. package/dist/core/ingestion/field-extractors/configs/dart.js +78 -0
  442. package/dist/core/ingestion/field-extractors/configs/go.d.ts +11 -0
  443. package/dist/core/ingestion/field-extractors/configs/go.js +60 -0
  444. package/dist/core/ingestion/field-extractors/configs/helpers.d.ts +53 -0
  445. package/dist/core/ingestion/field-extractors/configs/helpers.js +158 -0
  446. package/dist/core/ingestion/field-extractors/configs/jvm.d.ts +3 -0
  447. package/dist/core/ingestion/field-extractors/configs/jvm.js +118 -0
  448. package/dist/core/ingestion/field-extractors/configs/php.d.ts +8 -0
  449. package/dist/core/ingestion/field-extractors/configs/php.js +65 -0
  450. package/dist/core/ingestion/field-extractors/configs/python.d.ts +12 -0
  451. package/dist/core/ingestion/field-extractors/configs/python.js +91 -0
  452. package/dist/core/ingestion/field-extractors/configs/ruby.d.ts +16 -0
  453. package/dist/core/ingestion/field-extractors/configs/ruby.js +76 -0
  454. package/dist/core/ingestion/field-extractors/configs/rust.d.ts +9 -0
  455. package/dist/core/ingestion/field-extractors/configs/rust.js +52 -0
  456. package/dist/core/ingestion/field-extractors/configs/swift.d.ts +8 -0
  457. package/dist/core/ingestion/field-extractors/configs/swift.js +65 -0
  458. package/dist/core/ingestion/field-extractors/configs/typescript-javascript.d.ts +3 -0
  459. package/dist/core/ingestion/field-extractors/configs/typescript-javascript.js +56 -0
  460. package/dist/core/ingestion/field-extractors/generic.d.ts +49 -0
  461. package/dist/core/ingestion/field-extractors/generic.js +117 -0
  462. package/dist/core/ingestion/field-extractors/typescript.d.ts +77 -0
  463. package/dist/core/ingestion/field-extractors/typescript.js +291 -0
  464. package/dist/core/ingestion/field-types.d.ts +61 -0
  465. package/dist/core/ingestion/field-types.js +2 -0
  466. package/dist/core/ingestion/filesystem-walker.d.ts +28 -0
  467. package/dist/core/ingestion/filesystem-walker.js +92 -0
  468. package/dist/core/ingestion/finalize-orchestrator.d.ts +63 -0
  469. package/dist/core/ingestion/finalize-orchestrator.js +142 -0
  470. package/dist/core/ingestion/framework-detection.d.ts +30 -0
  471. package/dist/core/ingestion/framework-detection.js +428 -0
  472. package/dist/core/ingestion/heritage-extractors/configs/go.d.ts +13 -0
  473. package/dist/core/ingestion/heritage-extractors/configs/go.js +20 -0
  474. package/dist/core/ingestion/heritage-extractors/configs/ruby.d.ts +18 -0
  475. package/dist/core/ingestion/heritage-extractors/configs/ruby.js +65 -0
  476. package/dist/core/ingestion/heritage-extractors/generic.d.ts +23 -0
  477. package/dist/core/ingestion/heritage-extractors/generic.js +47 -0
  478. package/dist/core/ingestion/heritage-processor.d.ts +54 -0
  479. package/dist/core/ingestion/heritage-processor.js +367 -0
  480. package/dist/core/ingestion/heritage-types.d.ts +73 -0
  481. package/dist/core/ingestion/heritage-types.js +2 -0
  482. package/dist/core/ingestion/import-processor.d.ts +23 -0
  483. package/dist/core/ingestion/import-processor.js +377 -0
  484. package/dist/core/ingestion/import-resolvers/configs/c-cpp.d.ts +7 -0
  485. package/dist/core/ingestion/import-resolvers/configs/c-cpp.js +14 -0
  486. package/dist/core/ingestion/import-resolvers/configs/csharp.d.ts +8 -0
  487. package/dist/core/ingestion/import-resolvers/configs/csharp.js +27 -0
  488. package/dist/core/ingestion/import-resolvers/configs/dart.d.ts +17 -0
  489. package/dist/core/ingestion/import-resolvers/configs/dart.js +54 -0
  490. package/dist/core/ingestion/import-resolvers/configs/go.d.ts +8 -0
  491. package/dist/core/ingestion/import-resolvers/configs/go.js +26 -0
  492. package/dist/core/ingestion/import-resolvers/configs/jvm.d.ts +13 -0
  493. package/dist/core/ingestion/import-resolvers/configs/jvm.js +68 -0
  494. package/dist/core/ingestion/import-resolvers/configs/php.d.ts +8 -0
  495. package/dist/core/ingestion/import-resolvers/configs/php.js +15 -0
  496. package/dist/core/ingestion/import-resolvers/configs/python.d.ts +12 -0
  497. package/dist/core/ingestion/import-resolvers/configs/python.js +41 -0
  498. package/dist/core/ingestion/import-resolvers/configs/ruby.d.ts +8 -0
  499. package/dist/core/ingestion/import-resolvers/configs/ruby.js +16 -0
  500. package/dist/core/ingestion/import-resolvers/configs/rust.d.ts +8 -0
  501. package/dist/core/ingestion/import-resolvers/configs/rust.js +54 -0
  502. package/dist/core/ingestion/import-resolvers/configs/swift.d.ts +8 -0
  503. package/dist/core/ingestion/import-resolvers/configs/swift.js +29 -0
  504. package/dist/core/ingestion/import-resolvers/configs/typescript-javascript.d.ts +9 -0
  505. package/dist/core/ingestion/import-resolvers/configs/typescript-javascript.js +23 -0
  506. package/dist/core/ingestion/import-resolvers/csharp.d.ts +18 -0
  507. package/dist/core/ingestion/import-resolvers/csharp.js +115 -0
  508. package/dist/core/ingestion/import-resolvers/go.d.ts +17 -0
  509. package/dist/core/ingestion/import-resolvers/go.js +46 -0
  510. package/dist/core/ingestion/import-resolvers/jvm.d.ts +27 -0
  511. package/dist/core/ingestion/import-resolvers/jvm.js +106 -0
  512. package/dist/core/ingestion/import-resolvers/php.d.ts +24 -0
  513. package/dist/core/ingestion/import-resolvers/php.js +77 -0
  514. package/dist/core/ingestion/import-resolvers/python.d.ts +22 -0
  515. package/dist/core/ingestion/import-resolvers/python.js +72 -0
  516. package/dist/core/ingestion/import-resolvers/resolver-factory.d.ts +24 -0
  517. package/dist/core/ingestion/import-resolvers/resolver-factory.js +33 -0
  518. package/dist/core/ingestion/import-resolvers/ruby.d.ts +14 -0
  519. package/dist/core/ingestion/import-resolvers/ruby.js +17 -0
  520. package/dist/core/ingestion/import-resolvers/rust.d.ts +17 -0
  521. package/dist/core/ingestion/import-resolvers/rust.js +75 -0
  522. package/dist/core/ingestion/import-resolvers/standard.d.ts +35 -0
  523. package/dist/core/ingestion/import-resolvers/standard.js +168 -0
  524. package/dist/core/ingestion/import-resolvers/types.d.ts +68 -0
  525. package/dist/core/ingestion/import-resolvers/types.js +6 -0
  526. package/dist/core/ingestion/import-resolvers/utils.d.ts +35 -0
  527. package/dist/core/ingestion/import-resolvers/utils.js +153 -0
  528. package/dist/core/ingestion/import-target-adapter.d.ts +73 -0
  529. package/dist/core/ingestion/import-target-adapter.js +95 -0
  530. package/dist/core/ingestion/language-config.d.ts +52 -0
  531. package/dist/core/ingestion/language-config.js +182 -0
  532. package/dist/core/ingestion/language-provider.d.ts +465 -0
  533. package/dist/core/ingestion/language-provider.js +24 -0
  534. package/dist/core/ingestion/languages/c/arity-metadata.d.ts +14 -0
  535. package/dist/core/ingestion/languages/c/arity-metadata.js +94 -0
  536. package/dist/core/ingestion/languages/c/arity.d.ts +6 -0
  537. package/dist/core/ingestion/languages/c/arity.js +18 -0
  538. package/dist/core/ingestion/languages/c/captures.d.ts +2 -0
  539. package/dist/core/ingestion/languages/c/captures.js +105 -0
  540. package/dist/core/ingestion/languages/c/header-scan.d.ts +7 -0
  541. package/dist/core/ingestion/languages/c/header-scan.js +55 -0
  542. package/dist/core/ingestion/languages/c/import-decomposer.d.ts +8 -0
  543. package/dist/core/ingestion/languages/c/import-decomposer.js +50 -0
  544. package/dist/core/ingestion/languages/c/import-target.d.ts +14 -0
  545. package/dist/core/ingestion/languages/c/import-target.js +57 -0
  546. package/dist/core/ingestion/languages/c/index.d.ts +11 -0
  547. package/dist/core/ingestion/languages/c/index.js +11 -0
  548. package/dist/core/ingestion/languages/c/interpret.d.ts +14 -0
  549. package/dist/core/ingestion/languages/c/interpret.js +48 -0
  550. package/dist/core/ingestion/languages/c/merge-bindings.d.ts +7 -0
  551. package/dist/core/ingestion/languages/c/merge-bindings.js +23 -0
  552. package/dist/core/ingestion/languages/c/query.d.ts +3 -0
  553. package/dist/core/ingestion/languages/c/query.js +161 -0
  554. package/dist/core/ingestion/languages/c/scope-resolver.d.ts +13 -0
  555. package/dist/core/ingestion/languages/c/scope-resolver.js +60 -0
  556. package/dist/core/ingestion/languages/c/simple-hooks.d.ts +14 -0
  557. package/dist/core/ingestion/languages/c/simple-hooks.js +19 -0
  558. package/dist/core/ingestion/languages/c/static-linkage.d.ts +13 -0
  559. package/dist/core/ingestion/languages/c/static-linkage.js +57 -0
  560. package/dist/core/ingestion/languages/c-cpp.d.ts +12 -0
  561. package/dist/core/ingestion/languages/c-cpp.js +411 -0
  562. package/dist/core/ingestion/languages/cobol.d.ts +1 -0
  563. package/dist/core/ingestion/languages/cobol.js +28 -0
  564. package/dist/core/ingestion/languages/csharp/accessor-unwrap.d.ts +21 -0
  565. package/dist/core/ingestion/languages/csharp/accessor-unwrap.js +56 -0
  566. package/dist/core/ingestion/languages/csharp/arity-metadata.d.ts +26 -0
  567. package/dist/core/ingestion/languages/csharp/arity-metadata.js +46 -0
  568. package/dist/core/ingestion/languages/csharp/arity.d.ts +23 -0
  569. package/dist/core/ingestion/languages/csharp/arity.js +37 -0
  570. package/dist/core/ingestion/languages/csharp/cache-stats.d.ts +15 -0
  571. package/dist/core/ingestion/languages/csharp/cache-stats.js +26 -0
  572. package/dist/core/ingestion/languages/csharp/captures.d.ts +19 -0
  573. package/dist/core/ingestion/languages/csharp/captures.js +346 -0
  574. package/dist/core/ingestion/languages/csharp/import-decomposer.d.ts +19 -0
  575. package/dist/core/ingestion/languages/csharp/import-decomposer.js +93 -0
  576. package/dist/core/ingestion/languages/csharp/import-target.d.ts +25 -0
  577. package/dist/core/ingestion/languages/csharp/import-target.js +123 -0
  578. package/dist/core/ingestion/languages/csharp/index.d.ts +82 -0
  579. package/dist/core/ingestion/languages/csharp/index.js +82 -0
  580. package/dist/core/ingestion/languages/csharp/interpret.d.ts +15 -0
  581. package/dist/core/ingestion/languages/csharp/interpret.js +132 -0
  582. package/dist/core/ingestion/languages/csharp/merge-bindings.d.ts +27 -0
  583. package/dist/core/ingestion/languages/csharp/merge-bindings.js +55 -0
  584. package/dist/core/ingestion/languages/csharp/namespace-siblings.d.ts +51 -0
  585. package/dist/core/ingestion/languages/csharp/namespace-siblings.js +387 -0
  586. package/dist/core/ingestion/languages/csharp/query.d.ts +35 -0
  587. package/dist/core/ingestion/languages/csharp/query.js +521 -0
  588. package/dist/core/ingestion/languages/csharp/receiver-binding.d.ts +31 -0
  589. package/dist/core/ingestion/languages/csharp/receiver-binding.js +135 -0
  590. package/dist/core/ingestion/languages/csharp/scope-resolver.d.ts +10 -0
  591. package/dist/core/ingestion/languages/csharp/scope-resolver.js +63 -0
  592. package/dist/core/ingestion/languages/csharp/simple-hooks.d.ts +53 -0
  593. package/dist/core/ingestion/languages/csharp/simple-hooks.js +76 -0
  594. package/dist/core/ingestion/languages/csharp.d.ts +8 -0
  595. package/dist/core/ingestion/languages/csharp.js +201 -0
  596. package/dist/core/ingestion/languages/dart.d.ts +12 -0
  597. package/dist/core/ingestion/languages/dart.js +138 -0
  598. package/dist/core/ingestion/languages/go/arity-metadata.d.ts +8 -0
  599. package/dist/core/ingestion/languages/go/arity-metadata.js +37 -0
  600. package/dist/core/ingestion/languages/go/arity.d.ts +2 -0
  601. package/dist/core/ingestion/languages/go/arity.js +14 -0
  602. package/dist/core/ingestion/languages/go/cache-stats.d.ts +7 -0
  603. package/dist/core/ingestion/languages/go/cache-stats.js +15 -0
  604. package/dist/core/ingestion/languages/go/captures.d.ts +2 -0
  605. package/dist/core/ingestion/languages/go/captures.js +129 -0
  606. package/dist/core/ingestion/languages/go/expand-wildcards.d.ts +15 -0
  607. package/dist/core/ingestion/languages/go/expand-wildcards.js +93 -0
  608. package/dist/core/ingestion/languages/go/import-decomposer.d.ts +3 -0
  609. package/dist/core/ingestion/languages/go/import-decomposer.js +44 -0
  610. package/dist/core/ingestion/languages/go/import-target.d.ts +21 -0
  611. package/dist/core/ingestion/languages/go/import-target.js +67 -0
  612. package/dist/core/ingestion/languages/go/index.d.ts +17 -0
  613. package/dist/core/ingestion/languages/go/index.js +17 -0
  614. package/dist/core/ingestion/languages/go/interface-impls.d.ts +4 -0
  615. package/dist/core/ingestion/languages/go/interface-impls.js +72 -0
  616. package/dist/core/ingestion/languages/go/interpret.d.ts +11 -0
  617. package/dist/core/ingestion/languages/go/interpret.js +146 -0
  618. package/dist/core/ingestion/languages/go/merge-bindings.d.ts +2 -0
  619. package/dist/core/ingestion/languages/go/merge-bindings.js +18 -0
  620. package/dist/core/ingestion/languages/go/method-owners.d.ts +17 -0
  621. package/dist/core/ingestion/languages/go/method-owners.js +96 -0
  622. package/dist/core/ingestion/languages/go/namespace-mirror.d.ts +15 -0
  623. package/dist/core/ingestion/languages/go/namespace-mirror.js +53 -0
  624. package/dist/core/ingestion/languages/go/package-siblings.d.ts +11 -0
  625. package/dist/core/ingestion/languages/go/package-siblings.js +84 -0
  626. package/dist/core/ingestion/languages/go/query.d.ts +3 -0
  627. package/dist/core/ingestion/languages/go/query.js +207 -0
  628. package/dist/core/ingestion/languages/go/range-binding.d.ts +8 -0
  629. package/dist/core/ingestion/languages/go/range-binding.js +109 -0
  630. package/dist/core/ingestion/languages/go/receiver-binding.d.ts +3 -0
  631. package/dist/core/ingestion/languages/go/receiver-binding.js +21 -0
  632. package/dist/core/ingestion/languages/go/scope-resolver.d.ts +2 -0
  633. package/dist/core/ingestion/languages/go/scope-resolver.js +33 -0
  634. package/dist/core/ingestion/languages/go/simple-hooks.d.ts +4 -0
  635. package/dist/core/ingestion/languages/go/simple-hooks.js +21 -0
  636. package/dist/core/ingestion/languages/go/type-binding.d.ts +3 -0
  637. package/dist/core/ingestion/languages/go/type-binding.js +237 -0
  638. package/dist/core/ingestion/languages/go.d.ts +11 -0
  639. package/dist/core/ingestion/languages/go.js +94 -0
  640. package/dist/core/ingestion/languages/index.d.ts +39 -0
  641. package/dist/core/ingestion/languages/index.js +64 -0
  642. package/dist/core/ingestion/languages/java/arity-metadata.d.ts +18 -0
  643. package/dist/core/ingestion/languages/java/arity-metadata.js +40 -0
  644. package/dist/core/ingestion/languages/java/arity.d.ts +10 -0
  645. package/dist/core/ingestion/languages/java/arity.js +24 -0
  646. package/dist/core/ingestion/languages/java/cache-stats.d.ts +15 -0
  647. package/dist/core/ingestion/languages/java/cache-stats.js +26 -0
  648. package/dist/core/ingestion/languages/java/captures.d.ts +17 -0
  649. package/dist/core/ingestion/languages/java/captures.js +187 -0
  650. package/dist/core/ingestion/languages/java/import-decomposer.d.ts +18 -0
  651. package/dist/core/ingestion/languages/java/import-decomposer.js +85 -0
  652. package/dist/core/ingestion/languages/java/import-target.d.ts +17 -0
  653. package/dist/core/ingestion/languages/java/import-target.js +100 -0
  654. package/dist/core/ingestion/languages/java/index.d.ts +29 -0
  655. package/dist/core/ingestion/languages/java/index.js +29 -0
  656. package/dist/core/ingestion/languages/java/interpret.d.ts +13 -0
  657. package/dist/core/ingestion/languages/java/interpret.js +131 -0
  658. package/dist/core/ingestion/languages/java/merge-bindings.d.ts +12 -0
  659. package/dist/core/ingestion/languages/java/merge-bindings.js +40 -0
  660. package/dist/core/ingestion/languages/java/query.d.ts +30 -0
  661. package/dist/core/ingestion/languages/java/query.js +192 -0
  662. package/dist/core/ingestion/languages/java/receiver-binding.d.ts +11 -0
  663. package/dist/core/ingestion/languages/java/receiver-binding.js +95 -0
  664. package/dist/core/ingestion/languages/java/scope-resolver.d.ts +50 -0
  665. package/dist/core/ingestion/languages/java/scope-resolver.js +74 -0
  666. package/dist/core/ingestion/languages/java/simple-hooks.d.ts +13 -0
  667. package/dist/core/ingestion/languages/java/simple-hooks.js +34 -0
  668. package/dist/core/ingestion/languages/java.d.ts +9 -0
  669. package/dist/core/ingestion/languages/java.js +76 -0
  670. package/dist/core/ingestion/languages/kotlin.d.ts +9 -0
  671. package/dist/core/ingestion/languages/kotlin.js +164 -0
  672. package/dist/core/ingestion/languages/php/arity-metadata.d.ts +28 -0
  673. package/dist/core/ingestion/languages/php/arity-metadata.js +63 -0
  674. package/dist/core/ingestion/languages/php/arity.d.ts +25 -0
  675. package/dist/core/ingestion/languages/php/arity.js +40 -0
  676. package/dist/core/ingestion/languages/php/cache-stats.d.ts +15 -0
  677. package/dist/core/ingestion/languages/php/cache-stats.js +26 -0
  678. package/dist/core/ingestion/languages/php/captures.d.ts +34 -0
  679. package/dist/core/ingestion/languages/php/captures.js +739 -0
  680. package/dist/core/ingestion/languages/php/import-decomposer.d.ts +28 -0
  681. package/dist/core/ingestion/languages/php/import-decomposer.js +265 -0
  682. package/dist/core/ingestion/languages/php/import-target.d.ts +47 -0
  683. package/dist/core/ingestion/languages/php/import-target.js +100 -0
  684. package/dist/core/ingestion/languages/php/index.d.ts +68 -0
  685. package/dist/core/ingestion/languages/php/index.js +72 -0
  686. package/dist/core/ingestion/languages/php/interpret.d.ts +36 -0
  687. package/dist/core/ingestion/languages/php/interpret.js +241 -0
  688. package/dist/core/ingestion/languages/php/merge-bindings.d.ts +19 -0
  689. package/dist/core/ingestion/languages/php/merge-bindings.js +47 -0
  690. package/dist/core/ingestion/languages/php/namespace-siblings.d.ts +51 -0
  691. package/dist/core/ingestion/languages/php/namespace-siblings.js +288 -0
  692. package/dist/core/ingestion/languages/php/query.d.ts +32 -0
  693. package/dist/core/ingestion/languages/php/query.js +326 -0
  694. package/dist/core/ingestion/languages/php/receiver-binding.d.ts +36 -0
  695. package/dist/core/ingestion/languages/php/receiver-binding.js +128 -0
  696. package/dist/core/ingestion/languages/php/scope-resolver.d.ts +23 -0
  697. package/dist/core/ingestion/languages/php/scope-resolver.js +358 -0
  698. package/dist/core/ingestion/languages/php/simple-hooks.d.ts +42 -0
  699. package/dist/core/ingestion/languages/php/simple-hooks.js +111 -0
  700. package/dist/core/ingestion/languages/php.d.ts +1 -0
  701. package/dist/core/ingestion/languages/php.js +290 -0
  702. package/dist/core/ingestion/languages/python/arity-metadata.d.ts +24 -0
  703. package/dist/core/ingestion/languages/python/arity-metadata.js +45 -0
  704. package/dist/core/ingestion/languages/python/arity.d.ts +22 -0
  705. package/dist/core/ingestion/languages/python/arity.js +38 -0
  706. package/dist/core/ingestion/languages/python/cache-stats.d.ts +17 -0
  707. package/dist/core/ingestion/languages/python/cache-stats.js +28 -0
  708. package/dist/core/ingestion/languages/python/captures.d.ts +19 -0
  709. package/dist/core/ingestion/languages/python/captures.js +130 -0
  710. package/dist/core/ingestion/languages/python/import-decomposer.d.ts +15 -0
  711. package/dist/core/ingestion/languages/python/import-decomposer.js +112 -0
  712. package/dist/core/ingestion/languages/python/import-target.d.ts +21 -0
  713. package/dist/core/ingestion/languages/python/import-target.js +195 -0
  714. package/dist/core/ingestion/languages/python/index.d.ts +80 -0
  715. package/dist/core/ingestion/languages/python/index.js +80 -0
  716. package/dist/core/ingestion/languages/python/interpret.d.ts +15 -0
  717. package/dist/core/ingestion/languages/python/interpret.js +191 -0
  718. package/dist/core/ingestion/languages/python/merge-bindings.d.ts +16 -0
  719. package/dist/core/ingestion/languages/python/merge-bindings.js +44 -0
  720. package/dist/core/ingestion/languages/python/query.d.ts +9 -0
  721. package/dist/core/ingestion/languages/python/query.js +267 -0
  722. package/dist/core/ingestion/languages/python/receiver-binding.d.ts +21 -0
  723. package/dist/core/ingestion/languages/python/receiver-binding.js +116 -0
  724. package/dist/core/ingestion/languages/python/scope-resolver.d.ts +16 -0
  725. package/dist/core/ingestion/languages/python/scope-resolver.js +53 -0
  726. package/dist/core/ingestion/languages/python/simple-hooks.d.ts +25 -0
  727. package/dist/core/ingestion/languages/python/simple-hooks.js +43 -0
  728. package/dist/core/ingestion/languages/python.d.ts +12 -0
  729. package/dist/core/ingestion/languages/python.js +133 -0
  730. package/dist/core/ingestion/languages/ruby.d.ts +9 -0
  731. package/dist/core/ingestion/languages/ruby.js +235 -0
  732. package/dist/core/ingestion/languages/rust.d.ts +12 -0
  733. package/dist/core/ingestion/languages/rust.js +167 -0
  734. package/dist/core/ingestion/languages/swift.d.ts +12 -0
  735. package/dist/core/ingestion/languages/swift.js +312 -0
  736. package/dist/core/ingestion/languages/typescript/arity-metadata.d.ts +59 -0
  737. package/dist/core/ingestion/languages/typescript/arity-metadata.js +103 -0
  738. package/dist/core/ingestion/languages/typescript/arity.d.ts +37 -0
  739. package/dist/core/ingestion/languages/typescript/arity.js +54 -0
  740. package/dist/core/ingestion/languages/typescript/cache-stats.d.ts +17 -0
  741. package/dist/core/ingestion/languages/typescript/cache-stats.js +28 -0
  742. package/dist/core/ingestion/languages/typescript/captures.d.ts +28 -0
  743. package/dist/core/ingestion/languages/typescript/captures.js +474 -0
  744. package/dist/core/ingestion/languages/typescript/import-decomposer.d.ts +49 -0
  745. package/dist/core/ingestion/languages/typescript/import-decomposer.js +371 -0
  746. package/dist/core/ingestion/languages/typescript/import-target.d.ts +50 -0
  747. package/dist/core/ingestion/languages/typescript/import-target.js +61 -0
  748. package/dist/core/ingestion/languages/typescript/index.d.ts +94 -0
  749. package/dist/core/ingestion/languages/typescript/index.js +94 -0
  750. package/dist/core/ingestion/languages/typescript/interpret.d.ts +35 -0
  751. package/dist/core/ingestion/languages/typescript/interpret.js +317 -0
  752. package/dist/core/ingestion/languages/typescript/merge-bindings.d.ts +62 -0
  753. package/dist/core/ingestion/languages/typescript/merge-bindings.js +158 -0
  754. package/dist/core/ingestion/languages/typescript/query.d.ts +84 -0
  755. package/dist/core/ingestion/languages/typescript/query.js +978 -0
  756. package/dist/core/ingestion/languages/typescript/receiver-binding.d.ts +59 -0
  757. package/dist/core/ingestion/languages/typescript/receiver-binding.js +171 -0
  758. package/dist/core/ingestion/languages/typescript/scope-resolver.d.ts +16 -0
  759. package/dist/core/ingestion/languages/typescript/scope-resolver.js +113 -0
  760. package/dist/core/ingestion/languages/typescript/simple-hooks.d.ts +71 -0
  761. package/dist/core/ingestion/languages/typescript/simple-hooks.js +131 -0
  762. package/dist/core/ingestion/languages/typescript.d.ts +11 -0
  763. package/dist/core/ingestion/languages/typescript.js +324 -0
  764. package/dist/core/ingestion/languages/vue.d.ts +13 -0
  765. package/dist/core/ingestion/languages/vue.js +79 -0
  766. package/dist/core/ingestion/markdown-processor.d.ts +17 -0
  767. package/dist/core/ingestion/markdown-processor.js +124 -0
  768. package/dist/core/ingestion/method-extractors/configs/c-cpp.d.ts +3 -0
  769. package/dist/core/ingestion/method-extractors/configs/c-cpp.js +387 -0
  770. package/dist/core/ingestion/method-extractors/configs/csharp.d.ts +2 -0
  771. package/dist/core/ingestion/method-extractors/configs/csharp.js +287 -0
  772. package/dist/core/ingestion/method-extractors/configs/dart.d.ts +2 -0
  773. package/dist/core/ingestion/method-extractors/configs/dart.js +376 -0
  774. package/dist/core/ingestion/method-extractors/configs/go.d.ts +2 -0
  775. package/dist/core/ingestion/method-extractors/configs/go.js +176 -0
  776. package/dist/core/ingestion/method-extractors/configs/jvm.d.ts +3 -0
  777. package/dist/core/ingestion/method-extractors/configs/jvm.js +336 -0
  778. package/dist/core/ingestion/method-extractors/configs/php.d.ts +2 -0
  779. package/dist/core/ingestion/method-extractors/configs/php.js +304 -0
  780. package/dist/core/ingestion/method-extractors/configs/python.d.ts +2 -0
  781. package/dist/core/ingestion/method-extractors/configs/python.js +309 -0
  782. package/dist/core/ingestion/method-extractors/configs/ruby.d.ts +2 -0
  783. package/dist/core/ingestion/method-extractors/configs/ruby.js +286 -0
  784. package/dist/core/ingestion/method-extractors/configs/rust.d.ts +2 -0
  785. package/dist/core/ingestion/method-extractors/configs/rust.js +195 -0
  786. package/dist/core/ingestion/method-extractors/configs/swift.d.ts +2 -0
  787. package/dist/core/ingestion/method-extractors/configs/swift.js +276 -0
  788. package/dist/core/ingestion/method-extractors/configs/typescript-javascript.d.ts +3 -0
  789. package/dist/core/ingestion/method-extractors/configs/typescript-javascript.js +338 -0
  790. package/dist/core/ingestion/method-extractors/generic.d.ts +11 -0
  791. package/dist/core/ingestion/method-extractors/generic.js +205 -0
  792. package/dist/core/ingestion/method-types.d.ts +90 -0
  793. package/dist/core/ingestion/method-types.js +2 -0
  794. package/dist/core/ingestion/model/field-registry.d.ts +18 -0
  795. package/dist/core/ingestion/model/field-registry.js +22 -0
  796. package/dist/core/ingestion/model/heritage-map.d.ts +105 -0
  797. package/dist/core/ingestion/model/heritage-map.js +260 -0
  798. package/dist/core/ingestion/model/index.d.ts +20 -0
  799. package/dist/core/ingestion/model/index.js +43 -0
  800. package/dist/core/ingestion/model/method-registry.d.ts +71 -0
  801. package/dist/core/ingestion/model/method-registry.js +134 -0
  802. package/dist/core/ingestion/model/registration-table.d.ts +138 -0
  803. package/dist/core/ingestion/model/registration-table.js +224 -0
  804. package/dist/core/ingestion/model/resolution-context.d.ts +93 -0
  805. package/dist/core/ingestion/model/resolution-context.js +337 -0
  806. package/dist/core/ingestion/model/resolve.d.ts +61 -0
  807. package/dist/core/ingestion/model/resolve.js +401 -0
  808. package/dist/core/ingestion/model/scope-resolution-indexes.d.ts +72 -0
  809. package/dist/core/ingestion/model/scope-resolution-indexes.js +42 -0
  810. package/dist/core/ingestion/model/semantic-model.d.ts +150 -0
  811. package/dist/core/ingestion/model/semantic-model.js +175 -0
  812. package/dist/core/ingestion/model/symbol-table.d.ts +200 -0
  813. package/dist/core/ingestion/model/symbol-table.js +206 -0
  814. package/dist/core/ingestion/model/type-registry.d.ts +39 -0
  815. package/dist/core/ingestion/model/type-registry.js +62 -0
  816. package/dist/core/ingestion/mro-processor.d.ts +46 -0
  817. package/dist/core/ingestion/mro-processor.js +597 -0
  818. package/dist/core/ingestion/named-bindings/csharp.d.ts +3 -0
  819. package/dist/core/ingestion/named-bindings/csharp.js +37 -0
  820. package/dist/core/ingestion/named-bindings/java.d.ts +3 -0
  821. package/dist/core/ingestion/named-bindings/java.js +29 -0
  822. package/dist/core/ingestion/named-bindings/kotlin.d.ts +3 -0
  823. package/dist/core/ingestion/named-bindings/kotlin.js +36 -0
  824. package/dist/core/ingestion/named-bindings/php.d.ts +3 -0
  825. package/dist/core/ingestion/named-bindings/php.js +61 -0
  826. package/dist/core/ingestion/named-bindings/python.d.ts +3 -0
  827. package/dist/core/ingestion/named-bindings/python.js +49 -0
  828. package/dist/core/ingestion/named-bindings/rust.d.ts +3 -0
  829. package/dist/core/ingestion/named-bindings/rust.js +66 -0
  830. package/dist/core/ingestion/named-bindings/types.d.ts +16 -0
  831. package/dist/core/ingestion/named-bindings/types.js +6 -0
  832. package/dist/core/ingestion/named-bindings/typescript.d.ts +3 -0
  833. package/dist/core/ingestion/named-bindings/typescript.js +58 -0
  834. package/dist/core/ingestion/parsing-processor.d.ts +60 -0
  835. package/dist/core/ingestion/parsing-processor.js +627 -0
  836. package/dist/core/ingestion/pipeline-phases/cobol.d.ts +16 -0
  837. package/dist/core/ingestion/pipeline-phases/cobol.js +46 -0
  838. package/dist/core/ingestion/pipeline-phases/communities.d.ts +16 -0
  839. package/dist/core/ingestion/pipeline-phases/communities.js +63 -0
  840. package/dist/core/ingestion/pipeline-phases/cross-file-impl.d.ts +17 -0
  841. package/dist/core/ingestion/pipeline-phases/cross-file-impl.js +157 -0
  842. package/dist/core/ingestion/pipeline-phases/cross-file.d.ts +37 -0
  843. package/dist/core/ingestion/pipeline-phases/cross-file.js +64 -0
  844. package/dist/core/ingestion/pipeline-phases/index.d.ts +22 -0
  845. package/dist/core/ingestion/pipeline-phases/index.js +23 -0
  846. package/dist/core/ingestion/pipeline-phases/markdown.d.ts +17 -0
  847. package/dist/core/ingestion/pipeline-phases/markdown.js +34 -0
  848. package/dist/core/ingestion/pipeline-phases/mro.d.ts +18 -0
  849. package/dist/core/ingestion/pipeline-phases/mro.js +37 -0
  850. package/dist/core/ingestion/pipeline-phases/orm-extraction.d.ts +22 -0
  851. package/dist/core/ingestion/pipeline-phases/orm-extraction.js +92 -0
  852. package/dist/core/ingestion/pipeline-phases/orm.d.ts +15 -0
  853. package/dist/core/ingestion/pipeline-phases/orm.js +75 -0
  854. package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +63 -0
  855. package/dist/core/ingestion/pipeline-phases/parse-impl.js +567 -0
  856. package/dist/core/ingestion/pipeline-phases/parse.d.ts +88 -0
  857. package/dist/core/ingestion/pipeline-phases/parse.js +33 -0
  858. package/dist/core/ingestion/pipeline-phases/processes.d.ts +16 -0
  859. package/dist/core/ingestion/pipeline-phases/processes.js +149 -0
  860. package/dist/core/ingestion/pipeline-phases/routes.d.ts +21 -0
  861. package/dist/core/ingestion/pipeline-phases/routes.js +244 -0
  862. package/dist/core/ingestion/pipeline-phases/runner.d.ts +22 -0
  863. package/dist/core/ingestion/pipeline-phases/runner.js +204 -0
  864. package/dist/core/ingestion/pipeline-phases/scan.d.ts +21 -0
  865. package/dist/core/ingestion/pipeline-phases/scan.js +46 -0
  866. package/dist/core/ingestion/pipeline-phases/structure.d.ts +27 -0
  867. package/dist/core/ingestion/pipeline-phases/structure.js +35 -0
  868. package/dist/core/ingestion/pipeline-phases/tools.d.ts +21 -0
  869. package/dist/core/ingestion/pipeline-phases/tools.js +86 -0
  870. package/dist/core/ingestion/pipeline-phases/types.d.ts +79 -0
  871. package/dist/core/ingestion/pipeline-phases/types.js +37 -0
  872. package/dist/core/ingestion/pipeline-phases/wildcard-synthesis.d.ts +70 -0
  873. package/dist/core/ingestion/pipeline-phases/wildcard-synthesis.js +312 -0
  874. package/dist/core/ingestion/pipeline.d.ts +49 -0
  875. package/dist/core/ingestion/pipeline.js +89 -0
  876. package/dist/core/ingestion/process-processor.d.ts +51 -0
  877. package/dist/core/ingestion/process-processor.js +318 -0
  878. package/dist/core/ingestion/registry-primary-flag.d.ts +88 -0
  879. package/dist/core/ingestion/registry-primary-flag.js +117 -0
  880. package/dist/core/ingestion/resolve-references.d.ts +63 -0
  881. package/dist/core/ingestion/resolve-references.js +175 -0
  882. package/dist/core/ingestion/route-extractors/expo.d.ts +1 -0
  883. package/dist/core/ingestion/route-extractors/expo.js +36 -0
  884. package/dist/core/ingestion/route-extractors/middleware.d.ts +47 -0
  885. package/dist/core/ingestion/route-extractors/middleware.js +167 -0
  886. package/dist/core/ingestion/route-extractors/nextjs.d.ts +3 -0
  887. package/dist/core/ingestion/route-extractors/nextjs.js +76 -0
  888. package/dist/core/ingestion/route-extractors/php.d.ts +7 -0
  889. package/dist/core/ingestion/route-extractors/php.js +22 -0
  890. package/dist/core/ingestion/route-extractors/response-shapes.d.ts +20 -0
  891. package/dist/core/ingestion/route-extractors/response-shapes.js +294 -0
  892. package/dist/core/ingestion/scope-extractor-bridge.d.ts +35 -0
  893. package/dist/core/ingestion/scope-extractor-bridge.js +49 -0
  894. package/dist/core/ingestion/scope-extractor.d.ts +86 -0
  895. package/dist/core/ingestion/scope-extractor.js +772 -0
  896. package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +558 -0
  897. package/dist/core/ingestion/scope-resolution/contract/scope-resolver.js +250 -0
  898. package/dist/core/ingestion/scope-resolution/graph-bridge/edges.d.ts +43 -0
  899. package/dist/core/ingestion/scope-resolution/graph-bridge/edges.js +79 -0
  900. package/dist/core/ingestion/scope-resolution/graph-bridge/ids.d.ts +57 -0
  901. package/dist/core/ingestion/scope-resolution/graph-bridge/ids.js +142 -0
  902. package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.d.ts +17 -0
  903. package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +46 -0
  904. package/dist/core/ingestion/scope-resolution/graph-bridge/method-dispatch.d.ts +19 -0
  905. package/dist/core/ingestion/scope-resolution/graph-bridge/method-dispatch.js +40 -0
  906. package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.d.ts +37 -0
  907. package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +118 -0
  908. package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.d.ts +38 -0
  909. package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +73 -0
  910. package/dist/core/ingestion/scope-resolution/passes/compound-receiver.d.ts +42 -0
  911. package/dist/core/ingestion/scope-resolution/passes/compound-receiver.js +467 -0
  912. package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +53 -0
  913. package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +251 -0
  914. package/dist/core/ingestion/scope-resolution/passes/imported-return-types.d.ts +75 -0
  915. package/dist/core/ingestion/scope-resolution/passes/imported-return-types.js +202 -0
  916. package/dist/core/ingestion/scope-resolution/passes/mro.d.ts +42 -0
  917. package/dist/core/ingestion/scope-resolution/passes/mro.js +102 -0
  918. package/dist/core/ingestion/scope-resolution/passes/overload-narrowing.d.ts +30 -0
  919. package/dist/core/ingestion/scope-resolution/passes/overload-narrowing.js +81 -0
  920. package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.d.ts +46 -0
  921. package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +377 -0
  922. package/dist/core/ingestion/scope-resolution/pipeline/phase.d.ts +47 -0
  923. package/dist/core/ingestion/scope-resolution/pipeline/phase.js +152 -0
  924. package/dist/core/ingestion/scope-resolution/pipeline/reconcile-ownership.d.ts +68 -0
  925. package/dist/core/ingestion/scope-resolution/pipeline/reconcile-ownership.js +125 -0
  926. package/dist/core/ingestion/scope-resolution/pipeline/registry.d.ts +17 -0
  927. package/dist/core/ingestion/scope-resolution/pipeline/registry.js +31 -0
  928. package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +91 -0
  929. package/dist/core/ingestion/scope-resolution/pipeline/run.js +218 -0
  930. package/dist/core/ingestion/scope-resolution/pipeline/validate-bindings-immutability.d.ts +39 -0
  931. package/dist/core/ingestion/scope-resolution/pipeline/validate-bindings-immutability.js +65 -0
  932. package/dist/core/ingestion/scope-resolution/scope/namespace-targets.d.ts +36 -0
  933. package/dist/core/ingestion/scope-resolution/scope/namespace-targets.js +58 -0
  934. package/dist/core/ingestion/scope-resolution/scope/walkers.d.ts +170 -0
  935. package/dist/core/ingestion/scope-resolution/scope/walkers.js +447 -0
  936. package/dist/core/ingestion/scope-resolution/workspace-index.d.ts +52 -0
  937. package/dist/core/ingestion/scope-resolution/workspace-index.js +61 -0
  938. package/dist/core/ingestion/shadow-harness.d.ts +113 -0
  939. package/dist/core/ingestion/shadow-harness.js +148 -0
  940. package/dist/core/ingestion/structure-processor.d.ts +2 -0
  941. package/dist/core/ingestion/structure-processor.js +36 -0
  942. package/dist/core/ingestion/tree-sitter-queries.d.ts +16 -0
  943. package/dist/core/ingestion/tree-sitter-queries.js +1497 -0
  944. package/dist/core/ingestion/type-env.d.ts +86 -0
  945. package/dist/core/ingestion/type-env.js +1129 -0
  946. package/dist/core/ingestion/type-extractors/c-cpp.d.ts +7 -0
  947. package/dist/core/ingestion/type-extractors/c-cpp.js +532 -0
  948. package/dist/core/ingestion/type-extractors/csharp.d.ts +2 -0
  949. package/dist/core/ingestion/type-extractors/csharp.js +583 -0
  950. package/dist/core/ingestion/type-extractors/dart.d.ts +15 -0
  951. package/dist/core/ingestion/type-extractors/dart.js +369 -0
  952. package/dist/core/ingestion/type-extractors/go.d.ts +2 -0
  953. package/dist/core/ingestion/type-extractors/go.js +513 -0
  954. package/dist/core/ingestion/type-extractors/jvm.d.ts +3 -0
  955. package/dist/core/ingestion/type-extractors/jvm.js +856 -0
  956. package/dist/core/ingestion/type-extractors/php.d.ts +2 -0
  957. package/dist/core/ingestion/type-extractors/php.js +534 -0
  958. package/dist/core/ingestion/type-extractors/python.d.ts +2 -0
  959. package/dist/core/ingestion/type-extractors/python.js +474 -0
  960. package/dist/core/ingestion/type-extractors/ruby.d.ts +2 -0
  961. package/dist/core/ingestion/type-extractors/ruby.js +377 -0
  962. package/dist/core/ingestion/type-extractors/rust.d.ts +2 -0
  963. package/dist/core/ingestion/type-extractors/rust.js +515 -0
  964. package/dist/core/ingestion/type-extractors/shared.d.ts +131 -0
  965. package/dist/core/ingestion/type-extractors/shared.js +796 -0
  966. package/dist/core/ingestion/type-extractors/swift.d.ts +2 -0
  967. package/dist/core/ingestion/type-extractors/swift.js +487 -0
  968. package/dist/core/ingestion/type-extractors/types.d.ts +172 -0
  969. package/dist/core/ingestion/type-extractors/types.js +1 -0
  970. package/dist/core/ingestion/type-extractors/typescript.d.ts +2 -0
  971. package/dist/core/ingestion/type-extractors/typescript.js +661 -0
  972. package/dist/core/ingestion/utils/ast-helpers.d.ts +102 -0
  973. package/dist/core/ingestion/utils/ast-helpers.js +561 -0
  974. package/dist/core/ingestion/utils/call-analysis.d.ts +75 -0
  975. package/dist/core/ingestion/utils/call-analysis.js +574 -0
  976. package/dist/core/ingestion/utils/env.d.ts +20 -0
  977. package/dist/core/ingestion/utils/env.js +24 -0
  978. package/dist/core/ingestion/utils/event-loop.d.ts +5 -0
  979. package/dist/core/ingestion/utils/event-loop.js +5 -0
  980. package/dist/core/ingestion/utils/graph-sort.d.ts +58 -0
  981. package/dist/core/ingestion/utils/graph-sort.js +100 -0
  982. package/dist/core/ingestion/utils/max-file-size.d.ts +20 -0
  983. package/dist/core/ingestion/utils/max-file-size.js +53 -0
  984. package/dist/core/ingestion/utils/method-props.d.ts +32 -0
  985. package/dist/core/ingestion/utils/method-props.js +147 -0
  986. package/dist/core/ingestion/utils/ruby-self-call.d.ts +52 -0
  987. package/dist/core/ingestion/utils/ruby-self-call.js +59 -0
  988. package/dist/core/ingestion/utils/verbose.d.ts +1 -0
  989. package/dist/core/ingestion/utils/verbose.js +7 -0
  990. package/dist/core/ingestion/variable-extractors/configs/c-cpp.d.ts +3 -0
  991. package/dist/core/ingestion/variable-extractors/configs/c-cpp.js +81 -0
  992. package/dist/core/ingestion/variable-extractors/configs/csharp.d.ts +9 -0
  993. package/dist/core/ingestion/variable-extractors/configs/csharp.js +63 -0
  994. package/dist/core/ingestion/variable-extractors/configs/dart.d.ts +2 -0
  995. package/dist/core/ingestion/variable-extractors/configs/dart.js +94 -0
  996. package/dist/core/ingestion/variable-extractors/configs/go.d.ts +2 -0
  997. package/dist/core/ingestion/variable-extractors/configs/go.js +83 -0
  998. package/dist/core/ingestion/variable-extractors/configs/jvm.d.ts +18 -0
  999. package/dist/core/ingestion/variable-extractors/configs/jvm.js +115 -0
  1000. package/dist/core/ingestion/variable-extractors/configs/php.d.ts +14 -0
  1001. package/dist/core/ingestion/variable-extractors/configs/php.js +58 -0
  1002. package/dist/core/ingestion/variable-extractors/configs/python.d.ts +2 -0
  1003. package/dist/core/ingestion/variable-extractors/configs/python.js +101 -0
  1004. package/dist/core/ingestion/variable-extractors/configs/ruby.d.ts +11 -0
  1005. package/dist/core/ingestion/variable-extractors/configs/ruby.js +52 -0
  1006. package/dist/core/ingestion/variable-extractors/configs/rust.d.ts +2 -0
  1007. package/dist/core/ingestion/variable-extractors/configs/rust.js +76 -0
  1008. package/dist/core/ingestion/variable-extractors/configs/swift.d.ts +2 -0
  1009. package/dist/core/ingestion/variable-extractors/configs/swift.js +88 -0
  1010. package/dist/core/ingestion/variable-extractors/configs/typescript-javascript.d.ts +3 -0
  1011. package/dist/core/ingestion/variable-extractors/configs/typescript-javascript.js +83 -0
  1012. package/dist/core/ingestion/variable-extractors/generic.d.ts +5 -0
  1013. package/dist/core/ingestion/variable-extractors/generic.js +80 -0
  1014. package/dist/core/ingestion/variable-types.d.ts +82 -0
  1015. package/dist/core/ingestion/variable-types.js +2 -0
  1016. package/dist/core/ingestion/vue-sfc-extractor.d.ts +44 -0
  1017. package/dist/core/ingestion/vue-sfc-extractor.js +111 -0
  1018. package/dist/core/ingestion/workers/parse-worker.d.ts +199 -0
  1019. package/dist/core/ingestion/workers/parse-worker.js +1940 -0
  1020. package/dist/core/ingestion/workers/worker-pool.d.ts +23 -0
  1021. package/dist/core/ingestion/workers/worker-pool.js +380 -0
  1022. package/dist/core/lbug/csv-generator.d.ts +33 -0
  1023. package/dist/core/lbug/csv-generator.js +463 -0
  1024. package/dist/core/lbug/extension-loader.d.ts +86 -0
  1025. package/dist/core/lbug/extension-loader.js +186 -0
  1026. package/dist/core/lbug/lbug-adapter.d.ts +243 -0
  1027. package/dist/core/lbug/lbug-adapter.js +1377 -0
  1028. package/dist/core/lbug/lbug-config.d.ts +102 -0
  1029. package/dist/core/lbug/lbug-config.js +303 -0
  1030. package/dist/core/lbug/pool-adapter.d.ts +90 -0
  1031. package/dist/core/lbug/pool-adapter.js +592 -0
  1032. package/dist/core/lbug/schema.d.ts +62 -0
  1033. package/dist/core/lbug/schema.js +495 -0
  1034. package/dist/core/logger.d.ts +125 -0
  1035. package/dist/core/logger.js +323 -0
  1036. package/dist/core/platform/capabilities.d.ts +24 -0
  1037. package/dist/core/platform/capabilities.js +54 -0
  1038. package/dist/core/run-analyze.d.ts +92 -0
  1039. package/dist/core/run-analyze.js +672 -0
  1040. package/dist/core/search/bm25-index.d.ts +29 -0
  1041. package/dist/core/search/bm25-index.js +118 -0
  1042. package/dist/core/search/fts-indexes.d.ts +1 -0
  1043. package/dist/core/search/fts-indexes.js +7 -0
  1044. package/dist/core/search/fts-schema.d.ts +6 -0
  1045. package/dist/core/search/fts-schema.js +7 -0
  1046. package/dist/core/search/hybrid-search.d.ts +53 -0
  1047. package/dist/core/search/hybrid-search.js +136 -0
  1048. package/dist/core/search/phase-timer.d.ts +72 -0
  1049. package/dist/core/search/phase-timer.js +106 -0
  1050. package/dist/core/tree-sitter/parser-loader.d.ts +8 -0
  1051. package/dist/core/tree-sitter/parser-loader.js +189 -0
  1052. package/dist/core/tree-sitter/safe-parse.d.ts +6 -0
  1053. package/dist/core/tree-sitter/safe-parse.js +32 -0
  1054. package/dist/core/wiki/cursor-client.d.ts +31 -0
  1055. package/dist/core/wiki/cursor-client.js +123 -0
  1056. package/dist/core/wiki/generator.d.ts +129 -0
  1057. package/dist/core/wiki/generator.js +899 -0
  1058. package/dist/core/wiki/graph-queries.d.ts +84 -0
  1059. package/dist/core/wiki/graph-queries.js +244 -0
  1060. package/dist/core/wiki/html-viewer.d.ts +10 -0
  1061. package/dist/core/wiki/html-viewer.js +304 -0
  1062. package/dist/core/wiki/llm-client.d.ts +83 -0
  1063. package/dist/core/wiki/llm-client.js +267 -0
  1064. package/dist/core/wiki/mermaid-sanitizer.d.ts +2 -0
  1065. package/dist/core/wiki/mermaid-sanitizer.js +100 -0
  1066. package/dist/core/wiki/prompts.d.ts +53 -0
  1067. package/dist/core/wiki/prompts.js +181 -0
  1068. package/dist/lib/utils.d.ts +1 -0
  1069. package/dist/lib/utils.js +3 -0
  1070. package/dist/mcp/compatible-stdio-transport.d.ts +25 -0
  1071. package/dist/mcp/compatible-stdio-transport.js +206 -0
  1072. package/dist/mcp/core/embedder.d.ts +27 -0
  1073. package/dist/mcp/core/embedder.js +145 -0
  1074. package/dist/mcp/core/lbug-adapter.d.ts +11 -0
  1075. package/dist/mcp/core/lbug-adapter.js +11 -0
  1076. package/dist/mcp/local/local-backend.d.ts +356 -0
  1077. package/dist/mcp/local/local-backend.js +3251 -0
  1078. package/dist/mcp/resources.d.ts +62 -0
  1079. package/dist/mcp/resources.js +512 -0
  1080. package/dist/mcp/server.d.ts +23 -0
  1081. package/dist/mcp/server.js +314 -0
  1082. package/dist/mcp/staleness.d.ts +5 -0
  1083. package/dist/mcp/staleness.js +4 -0
  1084. package/dist/mcp/stdio-capture.d.ts +40 -0
  1085. package/dist/mcp/stdio-capture.js +53 -0
  1086. package/dist/mcp/stdio-context.d.ts +47 -0
  1087. package/dist/mcp/stdio-context.js +145 -0
  1088. package/dist/mcp/tools.d.ts +29 -0
  1089. package/dist/mcp/tools.js +506 -0
  1090. package/dist/server/analyze-job.d.ts +55 -0
  1091. package/dist/server/analyze-job.js +150 -0
  1092. package/dist/server/analyze-worker.d.ts +13 -0
  1093. package/dist/server/analyze-worker.js +59 -0
  1094. package/dist/server/api.d.ts +72 -0
  1095. package/dist/server/api.js +1638 -0
  1096. package/dist/server/git-clone.d.ts +99 -0
  1097. package/dist/server/git-clone.js +397 -0
  1098. package/dist/server/mcp-http.d.ts +13 -0
  1099. package/dist/server/mcp-http.js +101 -0
  1100. package/dist/server/validation.d.ts +98 -0
  1101. package/dist/server/validation.js +142 -0
  1102. package/dist/storage/file-hash.d.ts +47 -0
  1103. package/dist/storage/file-hash.js +86 -0
  1104. package/dist/storage/git.d.ts +148 -0
  1105. package/dist/storage/git.js +346 -0
  1106. package/dist/storage/parse-cache.d.ts +67 -0
  1107. package/dist/storage/parse-cache.js +182 -0
  1108. package/dist/storage/repo-manager.d.ts +467 -0
  1109. package/dist/storage/repo-manager.js +804 -0
  1110. package/dist/types/pipeline.d.ts +18 -0
  1111. package/dist/types/pipeline.js +1 -0
  1112. package/hooks/claude/arc-hook.cjs +334 -0
  1113. package/hooks/claude/hook-lock.cjs +119 -0
  1114. package/hooks/claude/pre-tool-use.sh +79 -0
  1115. package/hooks/claude/session-start.sh +42 -0
  1116. package/package.json +122 -0
  1117. package/scripts/bench-scope-resolution.ts +134 -0
  1118. package/scripts/build-tree-sitter-dart.cjs +53 -0
  1119. package/scripts/build-tree-sitter-proto.cjs +93 -0
  1120. package/scripts/build.js +99 -0
  1121. package/scripts/ci-list-migrated-languages.ts +24 -0
  1122. package/scripts/install-duckdb-extension.mjs +48 -0
  1123. package/skills/arc-cli.md +83 -0
  1124. package/skills/arc-debugging.md +89 -0
  1125. package/skills/arc-exploring.md +78 -0
  1126. package/skills/arc-guide.md +64 -0
  1127. package/skills/arc-impact-analysis.md +97 -0
  1128. package/skills/arc-pr-review.md +163 -0
  1129. package/skills/arc-refactoring.md +121 -0
  1130. package/vendor/leiden/index.cjs +355 -0
  1131. package/vendor/leiden/utils.cjs +392 -0
  1132. package/vendor/tree-sitter-dart/README.md +18 -0
  1133. package/vendor/tree-sitter-dart/binding.gyp +31 -0
  1134. package/vendor/tree-sitter-dart/bindings/node/binding.cc +20 -0
  1135. package/vendor/tree-sitter-dart/bindings/node/index.d.ts +28 -0
  1136. package/vendor/tree-sitter-dart/bindings/node/index.js +7 -0
  1137. package/vendor/tree-sitter-dart/grammar.js +2895 -0
  1138. package/vendor/tree-sitter-dart/package.json +18 -0
  1139. package/vendor/tree-sitter-dart/queries/highlights.scm +246 -0
  1140. package/vendor/tree-sitter-dart/queries/tags.scm +92 -0
  1141. package/vendor/tree-sitter-dart/queries/test.scm +1 -0
  1142. package/vendor/tree-sitter-dart/src/grammar.json +12459 -0
  1143. package/vendor/tree-sitter-dart/src/node-types.json +15055 -0
  1144. package/vendor/tree-sitter-dart/src/parser.c +196127 -0
  1145. package/vendor/tree-sitter-dart/src/scanner.c +130 -0
  1146. package/vendor/tree-sitter-dart/src/tree_sitter/alloc.h +54 -0
  1147. package/vendor/tree-sitter-dart/src/tree_sitter/array.h +290 -0
  1148. package/vendor/tree-sitter-dart/src/tree_sitter/parser.h +265 -0
  1149. package/vendor/tree-sitter-proto/binding.gyp +30 -0
  1150. package/vendor/tree-sitter-proto/bindings/node/binding.cc +20 -0
  1151. package/vendor/tree-sitter-proto/bindings/node/index.d.ts +28 -0
  1152. package/vendor/tree-sitter-proto/bindings/node/index.js +7 -0
  1153. package/vendor/tree-sitter-proto/package.json +12 -0
  1154. package/vendor/tree-sitter-proto/src/node-types.json +1145 -0
  1155. package/vendor/tree-sitter-proto/src/parser.c +10149 -0
  1156. package/vendor/tree-sitter-proto/src/tree_sitter/alloc.h +54 -0
  1157. package/vendor/tree-sitter-proto/src/tree_sitter/array.h +291 -0
  1158. package/vendor/tree-sitter-proto/src/tree_sitter/parser.h +266 -0
  1159. package/vendor/tree-sitter-swift/LICENSE +21 -0
  1160. package/vendor/tree-sitter-swift/README.md +139 -0
  1161. package/vendor/tree-sitter-swift/bindings/node/index.d.ts +28 -0
  1162. package/vendor/tree-sitter-swift/bindings/node/index.js +7 -0
  1163. package/vendor/tree-sitter-swift/package.json +28 -0
  1164. package/vendor/tree-sitter-swift/prebuilds/darwin-arm64/tree-sitter-swift.node +0 -0
  1165. package/vendor/tree-sitter-swift/prebuilds/darwin-x64/tree-sitter-swift.node +0 -0
  1166. package/vendor/tree-sitter-swift/prebuilds/linux-arm64/tree-sitter-swift.node +0 -0
  1167. package/vendor/tree-sitter-swift/prebuilds/linux-x64/tree-sitter-swift.node +0 -0
  1168. package/vendor/tree-sitter-swift/prebuilds/win32-arm64/tree-sitter-swift.node +0 -0
  1169. package/vendor/tree-sitter-swift/prebuilds/win32-x64/tree-sitter-swift.node +0 -0
  1170. package/vendor/tree-sitter-swift/src/node-types.json +30694 -0
  1171. package/web/assets/__vite-browser-external-CLwMvL_q.js +1 -0
  1172. package/web/assets/agent-DaYmiVrk.js +601 -0
  1173. package/web/assets/architecture-7EHR7CIX-6QZW5X65-aGTGQQQG.js +1 -0
  1174. package/web/assets/architectureDiagram-UL44E2DR-613o-OfM.js +36 -0
  1175. package/web/assets/blockDiagram-7IZFK4PR-BBJRt4vF.js +132 -0
  1176. package/web/assets/c4Diagram-Y2BXMSZH-BhR2CErx.js +10 -0
  1177. package/web/assets/chunk-3SSMPTDK-DWfEAoKy.js +321 -0
  1178. package/web/assets/chunk-6764PJDD-NOXEgi3n.js +1 -0
  1179. package/web/assets/chunk-AZZRMDJM-DVvcxwI7.js +15 -0
  1180. package/web/assets/chunk-JQRUD6KW-CQgkrimK.js +1 -0
  1181. package/web/assets/chunk-KGYTTC2M-DxOdSoAJ.js +161 -0
  1182. package/web/assets/chunk-KRXBNO2N-BlnQTnxv.js +1 -0
  1183. package/web/assets/chunk-LCXTWHL2-Dhf_u-1F.js +231 -0
  1184. package/web/assets/chunk-LII3EMHJ-Cb3HLCZX.js +1 -0
  1185. package/web/assets/chunk-RG4AUYOV-DLCfNede.js +206 -0
  1186. package/web/assets/chunk-T5OCTHI4-B0CGAG7q.js +1 -0
  1187. package/web/assets/chunk-W44A43WB-ZyrAMwtT.js +1 -0
  1188. package/web/assets/chunk-ZXARS5L4-B0TJPmj5.js +1 -0
  1189. package/web/assets/classDiagram-KGZ6W3CR-CvSnsfJD.js +1 -0
  1190. package/web/assets/classDiagram-v2-72OJOZXJ-CvSnsfJD.js +1 -0
  1191. package/web/assets/context-builder-BREgwful.js +15 -0
  1192. package/web/assets/cose-bilkent-UX7MHV2Q-BsPIaeag.js +1 -0
  1193. package/web/assets/dagre-ND4H6XIP-CV4l9vOZ.js +4 -0
  1194. package/web/assets/diagram-3NCE3AQN-9kSzEbS8.js +43 -0
  1195. package/web/assets/diagram-GF46GFSD-qRvqbex6.js +24 -0
  1196. package/web/assets/diagram-HNR7UZ2L-Dj_ye4Ua.js +3 -0
  1197. package/web/assets/diagram-QXG6HAR7-COwBV6B0.js +24 -0
  1198. package/web/assets/diagram-WEQXMOUZ-C9xjn5dU.js +10 -0
  1199. package/web/assets/erDiagram-L5TCEMPS-fRp0t1Yd.js +85 -0
  1200. package/web/assets/eventmodeling-FCH6USID-MREXMVOE-BR0Ygfrw.js +1 -0
  1201. package/web/assets/flowDiagram-H6V6AXG4-Ccr8FDLD.js +162 -0
  1202. package/web/assets/ganttDiagram-JCBTUEKG-DfBPqAGN.js +292 -0
  1203. package/web/assets/gitGraph-WXDBUCRP-R675I2BI-CYihBz6Z.js +1 -0
  1204. package/web/assets/gitGraphDiagram-S2ZK5IYY-CHvG_UQ0.js +106 -0
  1205. package/web/assets/index-B7cw1L6-.css +2 -0
  1206. package/web/assets/index-CJJQgfSH.js +886 -0
  1207. package/web/assets/info-J43DQDTF-KCYPFFUO-BmmoeX4D.js +1 -0
  1208. package/web/assets/infoDiagram-3YFTVSEB-C7cMy-GP.js +2 -0
  1209. package/web/assets/ishikawaDiagram-BNXS4ZKH-C80yCPYi.js +70 -0
  1210. package/web/assets/journeyDiagram-M6C3CM3L-BHxH1zjE.js +139 -0
  1211. package/web/assets/kanban-definition-75IXJCU3-DNZo1hOE.js +89 -0
  1212. package/web/assets/katex-K3KEBU37-CbyuvTf1.js +261 -0
  1213. package/web/assets/mindmap-definition-2TDM6QVE-Dpgl3Elt.js +96 -0
  1214. package/web/assets/packet-YPE3B663-LP52Z2RK-7JAqDnUy.js +1 -0
  1215. package/web/assets/pie-LRSECV5Y-TCRJHUBD-Bv9vE7io.js +1 -0
  1216. package/web/assets/pieDiagram-CU6KROY3-BW0mr0ek.js +30 -0
  1217. package/web/assets/quadrantDiagram-VICAPDV7-C1dCMBbk.js +7 -0
  1218. package/web/assets/radar-GUYGQ44K-RDLRG3WG-dtZpcOZd.js +1 -0
  1219. package/web/assets/requirementDiagram-JXO7QTGE-Dyqqny4j.js +84 -0
  1220. package/web/assets/sankeyDiagram-URQDO5SZ-B3FGr5SL.js +40 -0
  1221. package/web/assets/sequenceDiagram-VS2MUI6T-B4LlGP9C.js +162 -0
  1222. package/web/assets/stateDiagram-7D4R322I-V9F-klBP.js +1 -0
  1223. package/web/assets/stateDiagram-v2-36443NZ5-CKDYYzqR.js +1 -0
  1224. package/web/assets/timeline-definition-O6YCAMPW-CX2WjkZA.js +120 -0
  1225. package/web/assets/treeView-BLDUP644-QA4HXRO3-BQaKTdhr.js +1 -0
  1226. package/web/assets/treemap-LRROVOQU-LLAWBHMP-Bqlxdyrq.js +1 -0
  1227. package/web/assets/vennDiagram-MWXL3ELB-BxZPYqOF.js +34 -0
  1228. package/web/assets/wardley-L42UT6IY-5TKZOOLJ-dofeprUr.js +1 -0
  1229. package/web/assets/wardleyDiagram-CUQ6CDDI-BLdJJYkV.js +78 -0
  1230. package/web/assets/xychartDiagram-N2JHSOCM-DqDgigLa.js +7 -0
  1231. package/web/index.html +19 -0
@@ -0,0 +1,609 @@
1
+ import fsp from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { createHash, randomBytes } from 'node:crypto';
4
+ import lbug from '@ladybugdb/core';
5
+ import { BRIDGE_SCHEMA_QUERIES, BRIDGE_SCHEMA_VERSION } from './bridge-schema.js';
6
+ import { closeLbugConnection, openLbugConnection, } from '../lbug/lbug-config.js';
7
+ import { dedupeContracts, dedupeCrossLinks } from './normalization.js';
8
+ import { createLogger } from '../logger.js';
9
+ const bridgeLogger = createLogger('bridge-db', { debugEnvVar: 'ARC_DEBUG_BRIDGE' });
10
+ /**
11
+ * Sidecar files that LadybugDB creates next to a `bridge.lbug` file.
12
+ *
13
+ * - `.wal` — write-ahead log; persists across opens but must be associated
14
+ * with the same database instance (LadybugDB 0.16.0 enforces this via a
15
+ * database-id check and rejects opens with the diagnostic
16
+ * `"Database ID for temporary file 'X.wal' does not match the current
17
+ * database. This file may have been left behind from a previous database
18
+ * with the same name"`).
19
+ * - `.shadow` — non-blocking concurrent checkpoint sidecar (added in
20
+ * LadybugDB 0.15.4); same pairing constraint as `.wal`.
21
+ *
22
+ * `bridge-db` writes to a `bridge.lbug.tmp.<random>` file and then atomically renames
23
+ * it into place. The rename only moves the main file; sidecars must be
24
+ * cleaned up explicitly or the next writer trips the database-id check.
25
+ */
26
+ const LBUG_SIDECAR_SUFFIXES = ['.wal', '.shadow'];
27
+ async function removeLbugFile(basePath) {
28
+ const candidates = [basePath, ...LBUG_SIDECAR_SUFFIXES.map((s) => `${basePath}${s}`)];
29
+ for (const f of candidates) {
30
+ try {
31
+ await fsp.rm(f, { recursive: true, force: true });
32
+ }
33
+ catch {
34
+ /* best-effort: caller will surface real errors via the open path */
35
+ }
36
+ }
37
+ }
38
+ export function contractNodeId(repo, contractId, role, filePath) {
39
+ return createHash('sha256').update(`${repo}\0${contractId}\0${role}\0${filePath}`).digest('hex');
40
+ }
41
+ export function createContractLookupIndex() {
42
+ return {
43
+ byUid: new Map(),
44
+ byRef: new Map(),
45
+ byFile: new Map(),
46
+ };
47
+ }
48
+ function uidKey(repo, role, symbolUid) {
49
+ return `${repo}\0${role}\0${symbolUid}`;
50
+ }
51
+ function refKey(repo, role, filePath, symbolName) {
52
+ return `${repo}\0${role}\0${filePath}\0${symbolName}`;
53
+ }
54
+ function fileKey(repo, role, filePath) {
55
+ return `${repo}\0${role}\0${filePath}`;
56
+ }
57
+ /**
58
+ * Add a successfully-inserted contract to the lookup index. Must be called
59
+ * AFTER the DB insert succeeds (not before) so failed inserts don't poison
60
+ * the index and cause cross-links to point at non-existent rows.
61
+ */
62
+ export function indexContract(index, contract, nodeId) {
63
+ if (contract.symbolUid) {
64
+ index.byUid.set(uidKey(contract.repo, contract.role, contract.symbolUid), nodeId);
65
+ }
66
+ index.byRef.set(refKey(contract.repo, contract.role, contract.symbolRef.filePath, contract.symbolRef.name), nodeId);
67
+ const fk = fileKey(contract.repo, contract.role, contract.symbolRef.filePath);
68
+ const existing = index.byFile.get(fk);
69
+ if (existing) {
70
+ existing.push(nodeId);
71
+ }
72
+ else {
73
+ index.byFile.set(fk, [nodeId]);
74
+ }
75
+ }
76
+ /**
77
+ * Resolve a cross-link endpoint (consumer or provider reference) to an
78
+ * already-inserted contract node id. Returns `null` if no match — the
79
+ * caller is expected to count that as a dropped link in `WriteBridgeReport`.
80
+ *
81
+ * The resolution order matches the pre-cache DB-query behavior:
82
+ * 1. exact `symbolUid` match in the same `(repo, role)` scope
83
+ * 2. exact `(filePath, symbolName)` match
84
+ * 3. if exactly one contract lives in the file → that one (fallback for
85
+ * legacy graph-assisted extractors that couldn't resolve a symbol name)
86
+ *
87
+ * This is a pure function — no I/O, no DB — so it's trivial to unit-test
88
+ * in isolation (which was the reviewer's main clean-code concern on the
89
+ * original 35-line inner closure in `writeBridge`).
90
+ */
91
+ export function findContractNode(index, repo, role, symbolUid, filePath, symbolName) {
92
+ if (symbolUid) {
93
+ const uidHit = index.byUid.get(uidKey(repo, role, symbolUid));
94
+ if (uidHit !== undefined)
95
+ return uidHit;
96
+ }
97
+ const refHit = index.byRef.get(refKey(repo, role, filePath, symbolName));
98
+ if (refHit !== undefined)
99
+ return refHit;
100
+ const fileCandidates = index.byFile.get(fileKey(repo, role, filePath));
101
+ if (fileCandidates && fileCandidates.length === 1)
102
+ return fileCandidates[0];
103
+ return null;
104
+ }
105
+ export async function openBridgeDb(dbPath) {
106
+ const parentDir = path.dirname(dbPath);
107
+ await fsp.mkdir(parentDir, { recursive: true });
108
+ const { db, conn } = await openLbugConnection(lbug, dbPath);
109
+ return { _db: db, _conn: conn, groupDir: parentDir };
110
+ }
111
+ /**
112
+ * LadybugDB returns an error whose message contains this substring when a
113
+ * CREATE NODE TABLE or CREATE REL TABLE statement hits an already-existing
114
+ * table. LadybugDB DDL doesn't support IF NOT EXISTS, and its JS driver
115
+ * doesn't expose typed error codes, so we match on the message substring —
116
+ * the same pattern used by `core/lbug/lbug-adapter.ts`. If a future
117
+ * LadybugDB release changes the wording, update this constant.
118
+ */
119
+ const LBUG_ALREADY_EXISTS_MSG = 'already exists';
120
+ export async function ensureBridgeSchema(handle) {
121
+ const conn = handle._conn;
122
+ for (const q of BRIDGE_SCHEMA_QUERIES) {
123
+ try {
124
+ await conn.query(q);
125
+ }
126
+ catch (err) {
127
+ const msg = err instanceof Error ? err.message : String(err);
128
+ if (!msg.includes(LBUG_ALREADY_EXISTS_MSG))
129
+ throw err;
130
+ }
131
+ }
132
+ }
133
+ export async function queryBridge(handle, cypher, params) {
134
+ const conn = handle._conn;
135
+ if (params && Object.keys(params).length > 0) {
136
+ const stmt = await conn.prepare(cypher);
137
+ if (!stmt.isSuccess()) {
138
+ const errMsg = await stmt.getErrorMessage();
139
+ throw new Error(`Bridge query prepare failed: ${errMsg}`);
140
+ }
141
+ const queryResult = await conn.execute(stmt, params);
142
+ const result = unwrapQueryResult(queryResult);
143
+ return (await result.getAll());
144
+ }
145
+ const queryResult = await conn.query(cypher);
146
+ const result = unwrapQueryResult(queryResult);
147
+ return (await result.getAll());
148
+ }
149
+ /**
150
+ * LadybugDB's `conn.query` / `conn.execute` can return either a single
151
+ * `QueryResult` (for a single statement) or an array of them (when a
152
+ * multi-statement script is dispatched). We always pass a single statement,
153
+ * so the array form is a wrapper we unwrap here — but an empty top-level
154
+ * array would cause `.getAll()` on `undefined` and crash with a confusing
155
+ * stack. Throwing an explicit error makes a driver-contract regression
156
+ * visible immediately instead of masking it.
157
+ */
158
+ function unwrapQueryResult(queryResult) {
159
+ if (Array.isArray(queryResult)) {
160
+ if (queryResult.length === 0) {
161
+ throw new Error('Bridge query returned an empty QueryResult array');
162
+ }
163
+ return queryResult[0];
164
+ }
165
+ return queryResult;
166
+ }
167
+ export async function closeBridgeDb(handle) {
168
+ // CHECKPOINT before close so the WAL/.shadow contents are flushed into
169
+ // the main database file. Without this, LadybugDB 0.16.0's non-blocking
170
+ // checkpoint thread can outlive the close call and leave sidecar pages
171
+ // pending on disk, which makes a subsequent read-side open either race
172
+ // with the WAL replay or trip the database-id check on the sidecars.
173
+ // CHECKPOINT is a no-op when there's nothing pending, so it's cheap.
174
+ try {
175
+ await handle._conn.query('CHECKPOINT');
176
+ }
177
+ catch {
178
+ /* ignore — older LadybugDB or schemaless DB may not accept it */
179
+ }
180
+ try {
181
+ await handle._conn.close();
182
+ }
183
+ catch {
184
+ /* ignore */
185
+ }
186
+ try {
187
+ await handle._db.close();
188
+ }
189
+ catch {
190
+ /* ignore */
191
+ }
192
+ }
193
+ /* ------------------------------------------------------------------ */
194
+ /* retryRename — handles transient EBUSY/EPERM/EACCES on Windows */
195
+ /* ------------------------------------------------------------------ */
196
+ const RETRY_CODES = new Set(['EBUSY', 'EPERM', 'EACCES']);
197
+ export async function retryRename(src, dst, attempts = 3) {
198
+ for (let i = 1; i <= attempts; i++) {
199
+ try {
200
+ await fsp.rename(src, dst);
201
+ return;
202
+ }
203
+ catch (err) {
204
+ const code = err.code;
205
+ if (!code || !RETRY_CODES.has(code) || i === attempts)
206
+ throw err;
207
+ await new Promise((r) => setTimeout(r, 100 * Math.pow(2, i - 1)));
208
+ }
209
+ }
210
+ }
211
+ /* ------------------------------------------------------------------ */
212
+ /* writeBridgeMeta / readBridgeMeta */
213
+ /* ------------------------------------------------------------------ */
214
+ export async function writeBridgeMeta(groupDir, meta) {
215
+ const target = path.join(groupDir, 'meta.json');
216
+ // Unpredictable suffix + O_EXCL via `'wx'` flag closes the symlink/
217
+ // pre-create attack window. The third argument `0o600` is the
218
+ // user-only mode mask — CodeQL's `js/insecure-temporary-file` query
219
+ // sources its verdict from the `mode` argument, NOT from `flags`:
220
+ // its `isSecureMode(mode)` predicate requires the low 6 bits to be
221
+ // zero (no group/world bits). Without an explicit mode the file is
222
+ // created with the process umask (typically 0o644 = group/world
223
+ // readable), which the query treats as the actual vulnerability.
224
+ // Both `'wx'` (runtime O_EXCL) AND `0o600` (CodeQL-credited mode)
225
+ // are needed: one closes the symlink race, the other closes the
226
+ // permissions exposure.
227
+ const tmp = `${target}.tmp.${randomBytes(8).toString('hex')}`;
228
+ const handle = await fsp.open(tmp, 'wx', 0o600);
229
+ try {
230
+ await handle.writeFile(JSON.stringify(meta, null, 2), 'utf-8');
231
+ }
232
+ finally {
233
+ await handle.close();
234
+ }
235
+ // Use retryRename for consistency with writeBridge's atomic swap — on
236
+ // Windows a concurrent reader can cause EBUSY/EPERM even on a tiny
237
+ // meta.json, and we don't want meta write to be less robust than the
238
+ // bridge.lbug swap it accompanies.
239
+ await retryRename(tmp, target);
240
+ }
241
+ export async function readBridgeMeta(groupDir) {
242
+ try {
243
+ const content = await fsp.readFile(path.join(groupDir, 'meta.json'), 'utf-8');
244
+ return JSON.parse(content);
245
+ }
246
+ catch {
247
+ return { version: 0, generatedAt: '', missingRepos: [] };
248
+ }
249
+ }
250
+ const MAX_SAMPLE_ERRORS = 10;
251
+ function errMessage(err) {
252
+ if (err instanceof Error)
253
+ return err.message;
254
+ try {
255
+ return String(err);
256
+ }
257
+ catch {
258
+ return 'unknown error';
259
+ }
260
+ }
261
+ export async function writeBridge(groupDir, input) {
262
+ await fsp.mkdir(groupDir, { recursive: true });
263
+ const contracts = dedupeContracts(input.contracts);
264
+ const crossLinks = dedupeCrossLinks(input.crossLinks);
265
+ const finalPath = path.join(groupDir, 'bridge.lbug');
266
+ // Stage the temp database inside a unique mkdtemp directory rather than
267
+ // a fixed `bridge.lbug.tmp` name. The previous shape was flagged by
268
+ // CodeQL js/insecure-temporary-file as a predictable path: a co-located
269
+ // attacker (or a parallel writeBridge call into the same group) could
270
+ // pre-create or symlink that path before this writer opens it. mkdtemp
271
+ // returns a directory whose suffix is filled with cryptographically
272
+ // random bytes, so the staging path is unguessable AND collision-free
273
+ // across parallel callers. We anchor the staging directory inside
274
+ // `groupDir` so the subsequent rename of `bridge.lbug` (and its
275
+ // `.wal` / `.shadow` sidecars) into place stays on the same filesystem
276
+ // and remains atomic — moving across `os.tmpdir()` could trip EXDEV.
277
+ const stagingDir = await fsp.mkdtemp(path.join(groupDir, 'bridge-tmp-'));
278
+ const tmpPath = path.join(stagingDir, 'bridge.lbug');
279
+ const bakPath = path.join(groupDir, 'bridge.lbug.bak');
280
+ const report = {
281
+ contractsInserted: 0,
282
+ contractsFailed: 0,
283
+ snapshotsInserted: 0,
284
+ snapshotsFailed: 0,
285
+ linksInserted: 0,
286
+ linksFailed: 0,
287
+ linksDroppedMissingNode: 0,
288
+ sampleErrors: [],
289
+ };
290
+ const recordError = (kind, id, err) => {
291
+ if (report.sampleErrors.length < MAX_SAMPLE_ERRORS) {
292
+ report.sampleErrors.push({ kind, id, message: errMessage(err) });
293
+ }
294
+ };
295
+ // The mkdtemp staging directory above is freshly created with a unique
296
+ // random suffix, so there are no leftover `bridge.lbug.tmp` / `.wal` /
297
+ // `.shadow` sidecars from a previous crashed run to clean up here — the
298
+ // directory is empty by construction.
299
+ try {
300
+ // 1. Create temp DB, insert all data.
301
+ //
302
+ // Everything after `openBridgeDb` must run inside a try/finally so that
303
+ // if ANY step before the explicit `closeBridgeDb` throws — schema
304
+ // creation, a contract insert loop that rethrows, a snapshot write, the
305
+ // cross-link loop, or anything else — the handle is still released. A
306
+ // leaked handle holds the native LadybugDB file lock on tmpPath, which
307
+ // (a) leaks a FD and (b) prevents the next writeBridge call from
308
+ // reusing the same tmp slot.
309
+ const handle = await openBridgeDb(tmpPath);
310
+ let handleClosed = false;
311
+ try {
312
+ await ensureBridgeSchema(handle);
313
+ // Build the lookup index incrementally as contracts are inserted, so
314
+ // failed inserts are never in the index (and therefore never resolved
315
+ // by the cross-link loop below). This replaces a previous N+1 query
316
+ // pattern where each link made up to 6 DB round-trips to find its
317
+ // endpoints — see ContractLookupIndex.
318
+ const lookupIndex = createContractLookupIndex();
319
+ // Insert contracts — tolerate individual failures (e.g., a corrupt meta
320
+ // that can't be serialized). The whole sync must not fail because one
321
+ // contract is broken.
322
+ for (const c of contracts) {
323
+ const id = contractNodeId(c.repo, c.contractId, c.role, c.symbolRef.filePath);
324
+ try {
325
+ await queryBridge(handle, `CREATE (n:Contract {
326
+ id: $id,
327
+ contractId: $contractId,
328
+ type: $type,
329
+ role: $role,
330
+ repo: $repo,
331
+ service: $service,
332
+ symbolUid: $symbolUid,
333
+ filePath: $filePath,
334
+ symbolName: $symbolName,
335
+ confidence: $confidence,
336
+ meta: $meta
337
+ })`, {
338
+ id,
339
+ contractId: c.contractId,
340
+ type: c.type,
341
+ role: c.role,
342
+ repo: c.repo,
343
+ service: c.service ?? '',
344
+ symbolUid: c.symbolUid,
345
+ filePath: c.symbolRef.filePath,
346
+ symbolName: c.symbolName,
347
+ confidence: c.confidence,
348
+ meta: JSON.stringify(c.meta),
349
+ });
350
+ report.contractsInserted++;
351
+ // Only index on successful insert — the cross-link loop must never
352
+ // resolve to a row that isn't actually in the DB.
353
+ indexContract(lookupIndex, c, id);
354
+ }
355
+ catch (err) {
356
+ report.contractsFailed++;
357
+ recordError('contract', id, err);
358
+ }
359
+ }
360
+ // Insert repo snapshots
361
+ for (const [repoId, snap] of Object.entries(input.repoSnapshots)) {
362
+ try {
363
+ await queryBridge(handle, `CREATE (s:RepoSnapshot {
364
+ id: $id,
365
+ indexedAt: $indexedAt,
366
+ lastCommit: $lastCommit
367
+ })`, {
368
+ id: repoId,
369
+ indexedAt: snap.indexedAt,
370
+ lastCommit: snap.lastCommit,
371
+ });
372
+ report.snapshotsInserted++;
373
+ }
374
+ catch (err) {
375
+ report.snapshotsFailed++;
376
+ recordError('snapshot', repoId, err);
377
+ }
378
+ }
379
+ // Insert cross-links (tolerating missing nodes).
380
+ //
381
+ // `findContractNode` consults the in-memory lookup index built above,
382
+ // not the DB — that's an O(1) pure-function lookup per endpoint instead
383
+ // of the previous 2-3 DB queries. For M cross-links, the previous code
384
+ // issued up to 6M round-trips; this version issues zero.
385
+ //
386
+ // `link.contractId` may differ between the consumer and provider sides
387
+ // (e.g. wildcard consumer `grpc::Service/*` → method-level provider
388
+ // `grpc::Service/Method`) — that's why we resolve each endpoint
389
+ // independently via its own `(repo, role, symbolUid, filePath, symbolName)`
390
+ // tuple rather than matching on contractId.
391
+ for (const link of crossLinks) {
392
+ const linkId = `${link.from.repo}::${link.contractId}->${link.to.repo}::${link.contractId}`;
393
+ try {
394
+ const fromId = findContractNode(lookupIndex, link.from.repo, 'consumer', link.from.symbolUid, link.from.symbolRef.filePath, link.from.symbolRef.name);
395
+ const toId = findContractNode(lookupIndex, link.to.repo, 'provider', link.to.symbolUid, link.to.symbolRef.filePath, link.to.symbolRef.name);
396
+ if (!fromId || !toId) {
397
+ report.linksDroppedMissingNode++;
398
+ continue;
399
+ }
400
+ await queryBridge(handle, `
401
+ MATCH (a:Contract), (b:Contract)
402
+ WHERE a.id = $fromId AND b.id = $toId
403
+ CREATE (a)-[:ContractLink {
404
+ matchType: $matchType,
405
+ confidence: $confidence,
406
+ contractId: $contractId,
407
+ fromRepo: $fromRepo,
408
+ toRepo: $toRepo
409
+ }]->(b)
410
+ `, {
411
+ fromId,
412
+ toId,
413
+ matchType: link.matchType,
414
+ confidence: link.confidence,
415
+ contractId: link.contractId,
416
+ fromRepo: link.from.repo,
417
+ toRepo: link.to.repo,
418
+ });
419
+ report.linksInserted++;
420
+ }
421
+ catch (err) {
422
+ report.linksFailed++;
423
+ recordError('link', linkId, err);
424
+ }
425
+ }
426
+ // 2. Close temp DB (happy path). The finally block also calls
427
+ // closeBridgeDb if we threw above; `handleClosed` prevents a
428
+ // double-close on the native handle.
429
+ await closeBridgeDb(handle);
430
+ handleClosed = true;
431
+ }
432
+ finally {
433
+ if (!handleClosed) {
434
+ await closeBridgeDb(handle).catch(() => {
435
+ /* ignore: cleanup path, best effort */
436
+ });
437
+ }
438
+ }
439
+ // 3. Atomic swap: old→.bak, tmp→final, rm .bak
440
+ //
441
+ // The current database file (with its `.wal` / `.shadow` sidecars) is
442
+ // moved aside, then the freshly built tmp database takes its place.
443
+ // We move the sidecars together with the main file so the open below
444
+ // and any external readers see a consistent set; orphan sidecars from
445
+ // the tmp namespace are then removed because LadybugDB looks for them
446
+ // under the renamed-to base name and would reject mismatching IDs.
447
+ try {
448
+ await fsp.access(finalPath);
449
+ await retryRename(finalPath, bakPath);
450
+ for (const suffix of LBUG_SIDECAR_SUFFIXES) {
451
+ try {
452
+ await fsp.access(`${finalPath}${suffix}`);
453
+ await retryRename(`${finalPath}${suffix}`, `${bakPath}${suffix}`);
454
+ }
455
+ catch {
456
+ /* sidecar absent — nothing to move */
457
+ }
458
+ }
459
+ }
460
+ catch {
461
+ /* no existing db */
462
+ }
463
+ await retryRename(tmpPath, finalPath);
464
+ for (const suffix of LBUG_SIDECAR_SUFFIXES) {
465
+ // Rename — not delete — so the WAL (which may carry uncommitted-at-
466
+ // close-time pages on a graceful close, depending on
467
+ // `autoCheckpoint` / `checkpointThreshold`) and the `.shadow`
468
+ // checkpoint snapshot stay paired with the database file under its
469
+ // final name. LadybugDB 0.16.0's database-id check rejects an open
470
+ // when the sidecars belong to a different base name.
471
+ try {
472
+ await fsp.access(`${tmpPath}${suffix}`);
473
+ await retryRename(`${tmpPath}${suffix}`, `${finalPath}${suffix}`);
474
+ }
475
+ catch {
476
+ /* sidecar absent — nothing to move */
477
+ }
478
+ }
479
+ await removeLbugFile(bakPath);
480
+ // 4. Write meta.json
481
+ await writeBridgeMeta(groupDir, {
482
+ version: BRIDGE_SCHEMA_VERSION,
483
+ generatedAt: new Date().toISOString(),
484
+ missingRepos: input.missingRepos,
485
+ });
486
+ return report;
487
+ }
488
+ finally {
489
+ // Always remove the mkdtemp staging directory. On the happy path the
490
+ // main file and sidecars have been renamed out of it, so it's empty;
491
+ // on any error path it may still contain a partial database — either
492
+ // way `recursive: true, force: true` removes it without surfacing
493
+ // "directory not empty" or ENOENT.
494
+ await fsp.rm(stagingDir, { recursive: true, force: true }).catch(() => {
495
+ /* best-effort cleanup */
496
+ });
497
+ }
498
+ }
499
+ /* ------------------------------------------------------------------ */
500
+ /* openBridgeDbReadOnly */
501
+ /* ------------------------------------------------------------------ */
502
+ /**
503
+ * Substrings observed in the message of an `Error` raised by the LadybugDB
504
+ * native open path when Windows still holds an exclusive lock on the file
505
+ * after a writer's `Database.close()` returned. LadybugDB 0.16.0's
506
+ * non-blocking checkpoint thread can briefly outlive the close call, so a
507
+ * read-side opener that races in immediately afterwards sees Win32 error
508
+ * 33 ("The process cannot access the file because another process has
509
+ * locked a portion of the file"). Retrying with a small back-off lets the
510
+ * background thread settle and the OS release the handle.
511
+ */
512
+ const LBUG_OPEN_RETRY_PATTERNS = [
513
+ 'process cannot access the file',
514
+ 'another process has locked',
515
+ 'could not set lock',
516
+ 'lock held by another process',
517
+ ];
518
+ const LBUG_OPEN_RETRY_ATTEMPTS = 10;
519
+ const LBUG_OPEN_RETRY_BASE_MS = 100;
520
+ /** Cap individual back-off delays so the total wait is bounded (~3s). */
521
+ const LBUG_OPEN_RETRY_MAX_MS = 500;
522
+ function isTransientLockError(err) {
523
+ const msg = (err instanceof Error ? err.message : String(err)).toLowerCase();
524
+ return LBUG_OPEN_RETRY_PATTERNS.some((p) => msg.includes(p));
525
+ }
526
+ async function ensureBridgeDbFileAvailable(groupDir) {
527
+ const dbPath = path.join(groupDir, 'bridge.lbug');
528
+ try {
529
+ await fsp.access(dbPath);
530
+ return true;
531
+ }
532
+ catch {
533
+ // Check for .bak recovery. Use `retryRename` (not `fsp.rename`) for the
534
+ // exact same reason the rest of this file does: the scenario that
535
+ // triggers bak recovery is an interrupted writer, which on Windows may
536
+ // still be holding an open handle on `.bak` for a few milliseconds when
537
+ // a reader races in. EBUSY/EPERM retries recover that case silently.
538
+ const bakPath = path.join(groupDir, 'bridge.lbug.bak');
539
+ try {
540
+ await fsp.access(bakPath);
541
+ await retryRename(bakPath, dbPath);
542
+ for (const suffix of LBUG_SIDECAR_SUFFIXES) {
543
+ try {
544
+ await fsp.access(`${bakPath}${suffix}`);
545
+ await retryRename(`${bakPath}${suffix}`, `${dbPath}${suffix}`);
546
+ }
547
+ catch {
548
+ /* sidecar absent */
549
+ }
550
+ }
551
+ return true;
552
+ }
553
+ catch {
554
+ return false;
555
+ }
556
+ }
557
+ }
558
+ export async function openBridgeDbReadOnly(groupDir) {
559
+ const dbPath = path.join(groupDir, 'bridge.lbug');
560
+ if (!(await ensureBridgeDbFileAvailable(groupDir)))
561
+ return null;
562
+ // Version gate: check meta.json version compatibility
563
+ const meta = await readBridgeMeta(groupDir);
564
+ if (meta.version > 0 && meta.version !== BRIDGE_SCHEMA_VERSION) {
565
+ return null; // incompatible schema version — fallback to JSON or re-sync
566
+ }
567
+ // Open the native handle with a bounded retry on transient OS-level file
568
+ // locks (see LBUG_OPEN_RETRY_PATTERNS). If Connection construction throws
569
+ // AFTER Database was successfully allocated, we'd leak the native Database
570
+ // object — wrap each step separately and tear down the partial handle.
571
+ let lastErr;
572
+ for (let attempt = 1; attempt <= LBUG_OPEN_RETRY_ATTEMPTS; attempt++) {
573
+ let handle;
574
+ try {
575
+ handle = await openLbugConnection(lbug, dbPath, { readOnly: true });
576
+ // Force the lazy native init now so a transient lock surfaces here
577
+ // (where we can retry) instead of on the first user query.
578
+ await handle.db.init();
579
+ await handle.conn.init();
580
+ return { _db: handle.db, _conn: handle.conn, groupDir };
581
+ }
582
+ catch (err) {
583
+ lastErr = err;
584
+ if (handle)
585
+ await closeLbugConnection(handle);
586
+ if (!isTransientLockError(err) || attempt === LBUG_OPEN_RETRY_ATTEMPTS)
587
+ break;
588
+ const delay = Math.min(LBUG_OPEN_RETRY_BASE_MS * attempt, LBUG_OPEN_RETRY_MAX_MS);
589
+ await new Promise((r) => setTimeout(r, delay));
590
+ }
591
+ }
592
+ // Strip CRLF from user-controlled strings before logging to close
593
+ // CodeQL js/log-injection. Pino's NDJSON serialization already
594
+ // JSON-escapes all values, but we sanitize here as a defence-in-depth
595
+ // measure so CodeQL can see the taint flow is broken.
596
+ const safeGroupDir = String(groupDir).replace(/[\r\n]/g, ' ');
597
+ const safeErrMsg = lastErr instanceof Error ? String(lastErr.message).replace(/[\r\n]/g, ' ') : undefined;
598
+ bridgeLogger.debug({ groupDir: safeGroupDir, errMsg: safeErrMsg, attempts: LBUG_OPEN_RETRY_ATTEMPTS }, 'openBridgeDbReadOnly gave up');
599
+ return null;
600
+ }
601
+ /* ------------------------------------------------------------------ */
602
+ /* bridgeExists */
603
+ /* ------------------------------------------------------------------ */
604
+ export async function bridgeExists(groupDir) {
605
+ if (!(await ensureBridgeDbFileAvailable(groupDir)))
606
+ return false;
607
+ const meta = await readBridgeMeta(groupDir);
608
+ return meta.version === 0 || meta.version === BRIDGE_SCHEMA_VERSION;
609
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Bridge LadybugDB schema for cross-repo Contract Registry.
3
+ * Separate from per-repo schema in lbug/schema.ts.
4
+ */
5
+ /**
6
+ * Version of the bridge.lbug schema below. `openBridgeDbReadOnly` compares
7
+ * this against `meta.json`'s version field and returns `null` on mismatch,
8
+ * which trips the caller into either the JSON fallback path or a fresh
9
+ * `group sync` that rebuilds `bridge.lbug` from scratch.
10
+ *
11
+ * Migration contract for contributors bumping this constant:
12
+ * 1. Bump the number (e.g. `1` → `2`).
13
+ * 2. Update the DDL below to match the new schema.
14
+ * 3. DO NOT attempt an online migration in this file — the version gate
15
+ * is intentionally a "discard and re-sync" strategy for V1. An old
16
+ * bridge.lbug whose version doesn't match is treated as opaque and
17
+ * rebuilt by the next `group sync`.
18
+ * 4. If online migration becomes necessary (e.g. when groups accumulate
19
+ * large amounts of embedding data), add a migration path as a
20
+ * separate `bridge-migrations.ts` module rather than bloating this
21
+ * file — keep schema and migration concerns separate.
22
+ */
23
+ export declare const BRIDGE_SCHEMA_VERSION = 1;
24
+ export declare const CONTRACT_SCHEMA = "\nCREATE NODE TABLE Contract (\n id STRING,\n contractId STRING,\n type STRING,\n role STRING,\n repo STRING,\n service STRING DEFAULT '',\n symbolUid STRING DEFAULT '',\n filePath STRING DEFAULT '',\n symbolName STRING DEFAULT '',\n confidence DOUBLE DEFAULT 0.0,\n meta STRING DEFAULT '{}',\n PRIMARY KEY (id)\n)";
25
+ export declare const REPO_SNAPSHOT_SCHEMA = "\nCREATE NODE TABLE RepoSnapshot (\n id STRING,\n indexedAt STRING DEFAULT '',\n lastCommit STRING DEFAULT '',\n PRIMARY KEY (id)\n)";
26
+ export declare const CONTRACT_LINK_SCHEMA = "\nCREATE REL TABLE ContractLink (\n FROM Contract TO Contract,\n matchType STRING,\n confidence DOUBLE,\n contractId STRING,\n fromRepo STRING,\n toRepo STRING\n)";
27
+ export declare const BRIDGE_SCHEMA_QUERIES: string[];