@codragraph/cli 1.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (909) hide show
  1. package/README.md +341 -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 +55 -0
  7. package/dist/_shared/index.d.ts.map +1 -0
  8. package/dist/_shared/index.js +39 -0
  9. package/dist/_shared/index.js.map +1 -0
  10. package/dist/_shared/language-detection.d.ts +23 -0
  11. package/dist/_shared/language-detection.d.ts.map +1 -0
  12. package/dist/_shared/language-detection.js +139 -0
  13. package/dist/_shared/language-detection.js.map +1 -0
  14. package/dist/_shared/languages.d.ts +26 -0
  15. package/dist/_shared/languages.d.ts.map +1 -0
  16. package/dist/_shared/languages.js +27 -0
  17. package/dist/_shared/languages.js.map +1 -0
  18. package/dist/_shared/lbug/schema-constants.d.ts +16 -0
  19. package/dist/_shared/lbug/schema-constants.d.ts.map +1 -0
  20. package/dist/_shared/lbug/schema-constants.js +67 -0
  21. package/dist/_shared/lbug/schema-constants.js.map +1 -0
  22. package/dist/_shared/mro-strategy.d.ts +41 -0
  23. package/dist/_shared/mro-strategy.d.ts.map +1 -0
  24. package/dist/_shared/mro-strategy.js +2 -0
  25. package/dist/_shared/mro-strategy.js.map +1 -0
  26. package/dist/_shared/pipeline.d.ts +16 -0
  27. package/dist/_shared/pipeline.d.ts.map +1 -0
  28. package/dist/_shared/pipeline.js +5 -0
  29. package/dist/_shared/pipeline.js.map +1 -0
  30. package/dist/_shared/scope-resolution/def-index.d.ts +36 -0
  31. package/dist/_shared/scope-resolution/def-index.d.ts.map +1 -0
  32. package/dist/_shared/scope-resolution/def-index.js +51 -0
  33. package/dist/_shared/scope-resolution/def-index.js.map +1 -0
  34. package/dist/_shared/scope-resolution/evidence-weights.d.ts +69 -0
  35. package/dist/_shared/scope-resolution/evidence-weights.d.ts.map +1 -0
  36. package/dist/_shared/scope-resolution/evidence-weights.js +84 -0
  37. package/dist/_shared/scope-resolution/evidence-weights.js.map +1 -0
  38. package/dist/_shared/scope-resolution/finalize-algorithm.d.ts +139 -0
  39. package/dist/_shared/scope-resolution/finalize-algorithm.d.ts.map +1 -0
  40. package/dist/_shared/scope-resolution/finalize-algorithm.js +479 -0
  41. package/dist/_shared/scope-resolution/finalize-algorithm.js.map +1 -0
  42. package/dist/_shared/scope-resolution/language-classification.d.ts +26 -0
  43. package/dist/_shared/scope-resolution/language-classification.d.ts.map +1 -0
  44. package/dist/_shared/scope-resolution/language-classification.js +44 -0
  45. package/dist/_shared/scope-resolution/language-classification.js.map +1 -0
  46. package/dist/_shared/scope-resolution/method-dispatch-index.d.ts +80 -0
  47. package/dist/_shared/scope-resolution/method-dispatch-index.d.ts.map +1 -0
  48. package/dist/_shared/scope-resolution/method-dispatch-index.js +79 -0
  49. package/dist/_shared/scope-resolution/method-dispatch-index.js.map +1 -0
  50. package/dist/_shared/scope-resolution/module-scope-index.d.ts +46 -0
  51. package/dist/_shared/scope-resolution/module-scope-index.d.ts.map +1 -0
  52. package/dist/_shared/scope-resolution/module-scope-index.js +58 -0
  53. package/dist/_shared/scope-resolution/module-scope-index.js.map +1 -0
  54. package/dist/_shared/scope-resolution/origin-priority.d.ts +14 -0
  55. package/dist/_shared/scope-resolution/origin-priority.d.ts.map +1 -0
  56. package/dist/_shared/scope-resolution/origin-priority.js +21 -0
  57. package/dist/_shared/scope-resolution/origin-priority.js.map +1 -0
  58. package/dist/_shared/scope-resolution/parsed-file.d.ts +76 -0
  59. package/dist/_shared/scope-resolution/parsed-file.d.ts.map +1 -0
  60. package/dist/_shared/scope-resolution/parsed-file.js +54 -0
  61. package/dist/_shared/scope-resolution/parsed-file.js.map +1 -0
  62. package/dist/_shared/scope-resolution/position-index.d.ts +62 -0
  63. package/dist/_shared/scope-resolution/position-index.d.ts.map +1 -0
  64. package/dist/_shared/scope-resolution/position-index.js +134 -0
  65. package/dist/_shared/scope-resolution/position-index.js.map +1 -0
  66. package/dist/_shared/scope-resolution/qualified-name-index.d.ts +44 -0
  67. package/dist/_shared/scope-resolution/qualified-name-index.d.ts.map +1 -0
  68. package/dist/_shared/scope-resolution/qualified-name-index.js +75 -0
  69. package/dist/_shared/scope-resolution/qualified-name-index.js.map +1 -0
  70. package/dist/_shared/scope-resolution/reference-site.d.ts +75 -0
  71. package/dist/_shared/scope-resolution/reference-site.d.ts.map +1 -0
  72. package/dist/_shared/scope-resolution/reference-site.js +24 -0
  73. package/dist/_shared/scope-resolution/reference-site.js.map +1 -0
  74. package/dist/_shared/scope-resolution/registries/class-registry.d.ts +27 -0
  75. package/dist/_shared/scope-resolution/registries/class-registry.d.ts.map +1 -0
  76. package/dist/_shared/scope-resolution/registries/class-registry.js +30 -0
  77. package/dist/_shared/scope-resolution/registries/class-registry.js.map +1 -0
  78. package/dist/_shared/scope-resolution/registries/context.d.ts +69 -0
  79. package/dist/_shared/scope-resolution/registries/context.d.ts.map +1 -0
  80. package/dist/_shared/scope-resolution/registries/context.js +44 -0
  81. package/dist/_shared/scope-resolution/registries/context.js.map +1 -0
  82. package/dist/_shared/scope-resolution/registries/evidence.d.ts +56 -0
  83. package/dist/_shared/scope-resolution/registries/evidence.d.ts.map +1 -0
  84. package/dist/_shared/scope-resolution/registries/evidence.js +150 -0
  85. package/dist/_shared/scope-resolution/registries/evidence.js.map +1 -0
  86. package/dist/_shared/scope-resolution/registries/field-registry.d.ts +26 -0
  87. package/dist/_shared/scope-resolution/registries/field-registry.d.ts.map +1 -0
  88. package/dist/_shared/scope-resolution/registries/field-registry.js +31 -0
  89. package/dist/_shared/scope-resolution/registries/field-registry.js.map +1 -0
  90. package/dist/_shared/scope-resolution/registries/lookup-core.d.ts +81 -0
  91. package/dist/_shared/scope-resolution/registries/lookup-core.d.ts.map +1 -0
  92. package/dist/_shared/scope-resolution/registries/lookup-core.js +332 -0
  93. package/dist/_shared/scope-resolution/registries/lookup-core.js.map +1 -0
  94. package/dist/_shared/scope-resolution/registries/lookup-qualified.d.ts +33 -0
  95. package/dist/_shared/scope-resolution/registries/lookup-qualified.d.ts.map +1 -0
  96. package/dist/_shared/scope-resolution/registries/lookup-qualified.js +56 -0
  97. package/dist/_shared/scope-resolution/registries/lookup-qualified.js.map +1 -0
  98. package/dist/_shared/scope-resolution/registries/method-registry.d.ts +36 -0
  99. package/dist/_shared/scope-resolution/registries/method-registry.d.ts.map +1 -0
  100. package/dist/_shared/scope-resolution/registries/method-registry.js +32 -0
  101. package/dist/_shared/scope-resolution/registries/method-registry.js.map +1 -0
  102. package/dist/_shared/scope-resolution/registries/tie-breaks.d.ts +43 -0
  103. package/dist/_shared/scope-resolution/registries/tie-breaks.d.ts.map +1 -0
  104. package/dist/_shared/scope-resolution/registries/tie-breaks.js +60 -0
  105. package/dist/_shared/scope-resolution/registries/tie-breaks.js.map +1 -0
  106. package/dist/_shared/scope-resolution/resolve-type-ref.d.ts +53 -0
  107. package/dist/_shared/scope-resolution/resolve-type-ref.d.ts.map +1 -0
  108. package/dist/_shared/scope-resolution/resolve-type-ref.js +126 -0
  109. package/dist/_shared/scope-resolution/resolve-type-ref.js.map +1 -0
  110. package/dist/_shared/scope-resolution/scope-id.d.ts +43 -0
  111. package/dist/_shared/scope-resolution/scope-id.d.ts.map +1 -0
  112. package/dist/_shared/scope-resolution/scope-id.js +46 -0
  113. package/dist/_shared/scope-resolution/scope-id.js.map +1 -0
  114. package/dist/_shared/scope-resolution/scope-tree.d.ts +61 -0
  115. package/dist/_shared/scope-resolution/scope-tree.d.ts.map +1 -0
  116. package/dist/_shared/scope-resolution/scope-tree.js +186 -0
  117. package/dist/_shared/scope-resolution/scope-tree.js.map +1 -0
  118. package/dist/_shared/scope-resolution/shadow/aggregate.d.ts +63 -0
  119. package/dist/_shared/scope-resolution/shadow/aggregate.d.ts.map +1 -0
  120. package/dist/_shared/scope-resolution/shadow/aggregate.js +122 -0
  121. package/dist/_shared/scope-resolution/shadow/aggregate.js.map +1 -0
  122. package/dist/_shared/scope-resolution/shadow/diff.d.ts +59 -0
  123. package/dist/_shared/scope-resolution/shadow/diff.d.ts.map +1 -0
  124. package/dist/_shared/scope-resolution/shadow/diff.js +79 -0
  125. package/dist/_shared/scope-resolution/shadow/diff.js.map +1 -0
  126. package/dist/_shared/scope-resolution/symbol-definition.d.ts +34 -0
  127. package/dist/_shared/scope-resolution/symbol-definition.d.ts.map +1 -0
  128. package/dist/_shared/scope-resolution/symbol-definition.js +12 -0
  129. package/dist/_shared/scope-resolution/symbol-definition.js.map +1 -0
  130. package/dist/_shared/scope-resolution/types.d.ts +356 -0
  131. package/dist/_shared/scope-resolution/types.d.ts.map +1 -0
  132. package/dist/_shared/scope-resolution/types.js +17 -0
  133. package/dist/_shared/scope-resolution/types.js.map +1 -0
  134. package/dist/cli/ai-context.d.ts +27 -0
  135. package/dist/cli/ai-context.js +270 -0
  136. package/dist/cli/analyze.d.ts +43 -0
  137. package/dist/cli/analyze.js +312 -0
  138. package/dist/cli/augment.d.ts +13 -0
  139. package/dist/cli/augment.js +33 -0
  140. package/dist/cli/clean.d.ts +10 -0
  141. package/dist/cli/clean.js +78 -0
  142. package/dist/cli/config.d.ts +27 -0
  143. package/dist/cli/config.js +106 -0
  144. package/dist/cli/eval-server.d.ts +37 -0
  145. package/dist/cli/eval-server.js +398 -0
  146. package/dist/cli/graphstore.d.ts +40 -0
  147. package/dist/cli/graphstore.js +639 -0
  148. package/dist/cli/group.d.ts +2 -0
  149. package/dist/cli/group.js +306 -0
  150. package/dist/cli/index-repo.d.ts +15 -0
  151. package/dist/cli/index-repo.js +120 -0
  152. package/dist/cli/index.d.ts +2 -0
  153. package/dist/cli/index.js +236 -0
  154. package/dist/cli/lazy-action.d.ts +6 -0
  155. package/dist/cli/lazy-action.js +18 -0
  156. package/dist/cli/list.d.ts +6 -0
  157. package/dist/cli/list.js +40 -0
  158. package/dist/cli/mcp.d.ts +8 -0
  159. package/dist/cli/mcp.js +36 -0
  160. package/dist/cli/remove.d.ts +30 -0
  161. package/dist/cli/remove.js +99 -0
  162. package/dist/cli/serve.d.ts +4 -0
  163. package/dist/cli/serve.js +37 -0
  164. package/dist/cli/setup.d.ts +8 -0
  165. package/dist/cli/setup.js +543 -0
  166. package/dist/cli/skill-gen.d.ts +26 -0
  167. package/dist/cli/skill-gen.js +555 -0
  168. package/dist/cli/status.d.ts +6 -0
  169. package/dist/cli/status.js +36 -0
  170. package/dist/cli/tool.d.ts +43 -0
  171. package/dist/cli/tool.js +168 -0
  172. package/dist/cli/wiki.d.ts +21 -0
  173. package/dist/cli/wiki.js +579 -0
  174. package/dist/config/ignore-service.d.ts +35 -0
  175. package/dist/config/ignore-service.js +436 -0
  176. package/dist/config/supported-languages.d.ts +13 -0
  177. package/dist/config/supported-languages.js +13 -0
  178. package/dist/core/augmentation/engine.d.ts +26 -0
  179. package/dist/core/augmentation/engine.js +252 -0
  180. package/dist/core/embeddings/ast-utils.d.ts +22 -0
  181. package/dist/core/embeddings/ast-utils.js +105 -0
  182. package/dist/core/embeddings/character-chunk.d.ts +12 -0
  183. package/dist/core/embeddings/character-chunk.js +43 -0
  184. package/dist/core/embeddings/chunker.d.ts +14 -0
  185. package/dist/core/embeddings/chunker.js +239 -0
  186. package/dist/core/embeddings/embedder.d.ts +65 -0
  187. package/dist/core/embeddings/embedder.js +320 -0
  188. package/dist/core/embeddings/embedding-pipeline.d.ts +62 -0
  189. package/dist/core/embeddings/embedding-pipeline.js +486 -0
  190. package/dist/core/embeddings/http-client.d.ts +31 -0
  191. package/dist/core/embeddings/http-client.js +179 -0
  192. package/dist/core/embeddings/index.d.ts +10 -0
  193. package/dist/core/embeddings/index.js +10 -0
  194. package/dist/core/embeddings/line-index.d.ts +7 -0
  195. package/dist/core/embeddings/line-index.js +42 -0
  196. package/dist/core/embeddings/server-mapping.d.ts +15 -0
  197. package/dist/core/embeddings/server-mapping.js +33 -0
  198. package/dist/core/embeddings/structural-extractor.d.ts +15 -0
  199. package/dist/core/embeddings/structural-extractor.js +58 -0
  200. package/dist/core/embeddings/text-generator.d.ts +31 -0
  201. package/dist/core/embeddings/text-generator.js +208 -0
  202. package/dist/core/embeddings/types.d.ts +207 -0
  203. package/dist/core/embeddings/types.js +200 -0
  204. package/dist/core/git-staleness.d.ts +31 -0
  205. package/dist/core/git-staleness.js +137 -0
  206. package/dist/core/graph/graph.d.ts +2 -0
  207. package/dist/core/graph/graph.js +173 -0
  208. package/dist/core/graph/types.d.ts +36 -0
  209. package/dist/core/graph/types.js +1 -0
  210. package/dist/core/graphstore/index.d.ts +46 -0
  211. package/dist/core/graphstore/index.js +80 -0
  212. package/dist/core/graphstore/lbug-row-source.d.ts +19 -0
  213. package/dist/core/graphstore/lbug-row-source.js +141 -0
  214. package/dist/core/group/bridge-db.d.ts +82 -0
  215. package/dist/core/group/bridge-db.js +460 -0
  216. package/dist/core/group/bridge-schema.d.ts +27 -0
  217. package/dist/core/group/bridge-schema.js +55 -0
  218. package/dist/core/group/config-parser.d.ts +7 -0
  219. package/dist/core/group/config-parser.js +100 -0
  220. package/dist/core/group/contract-extractor.d.ts +7 -0
  221. package/dist/core/group/contract-extractor.js +1 -0
  222. package/dist/core/group/cross-impact.d.ts +41 -0
  223. package/dist/core/group/cross-impact.js +441 -0
  224. package/dist/core/group/extractors/fs-utils.d.ts +10 -0
  225. package/dist/core/group/extractors/fs-utils.js +24 -0
  226. package/dist/core/group/extractors/grpc-extractor.d.ts +25 -0
  227. package/dist/core/group/extractors/grpc-extractor.js +401 -0
  228. package/dist/core/group/extractors/grpc-patterns/go.d.ts +2 -0
  229. package/dist/core/group/extractors/grpc-patterns/go.js +97 -0
  230. package/dist/core/group/extractors/grpc-patterns/index.d.ts +19 -0
  231. package/dist/core/group/extractors/grpc-patterns/index.js +46 -0
  232. package/dist/core/group/extractors/grpc-patterns/java.d.ts +2 -0
  233. package/dist/core/group/extractors/grpc-patterns/java.js +173 -0
  234. package/dist/core/group/extractors/grpc-patterns/node.d.ts +4 -0
  235. package/dist/core/group/extractors/grpc-patterns/node.js +290 -0
  236. package/dist/core/group/extractors/grpc-patterns/proto.d.ts +9 -0
  237. package/dist/core/group/extractors/grpc-patterns/proto.js +134 -0
  238. package/dist/core/group/extractors/grpc-patterns/python.d.ts +2 -0
  239. package/dist/core/group/extractors/grpc-patterns/python.js +67 -0
  240. package/dist/core/group/extractors/grpc-patterns/types.d.ts +50 -0
  241. package/dist/core/group/extractors/grpc-patterns/types.js +1 -0
  242. package/dist/core/group/extractors/http-patterns/go.d.ts +2 -0
  243. package/dist/core/group/extractors/http-patterns/go.js +215 -0
  244. package/dist/core/group/extractors/http-patterns/index.d.ts +17 -0
  245. package/dist/core/group/extractors/http-patterns/index.js +44 -0
  246. package/dist/core/group/extractors/http-patterns/java.d.ts +2 -0
  247. package/dist/core/group/extractors/http-patterns/java.js +253 -0
  248. package/dist/core/group/extractors/http-patterns/node.d.ts +4 -0
  249. package/dist/core/group/extractors/http-patterns/node.js +484 -0
  250. package/dist/core/group/extractors/http-patterns/php.d.ts +2 -0
  251. package/dist/core/group/extractors/http-patterns/php.js +178 -0
  252. package/dist/core/group/extractors/http-patterns/python.d.ts +2 -0
  253. package/dist/core/group/extractors/http-patterns/python.js +133 -0
  254. package/dist/core/group/extractors/http-patterns/types.d.ts +61 -0
  255. package/dist/core/group/extractors/http-patterns/types.js +1 -0
  256. package/dist/core/group/extractors/http-route-extractor.d.ts +21 -0
  257. package/dist/core/group/extractors/http-route-extractor.js +421 -0
  258. package/dist/core/group/extractors/manifest-extractor.d.ts +54 -0
  259. package/dist/core/group/extractors/manifest-extractor.js +292 -0
  260. package/dist/core/group/extractors/topic-extractor.d.ts +8 -0
  261. package/dist/core/group/extractors/topic-extractor.js +97 -0
  262. package/dist/core/group/extractors/topic-patterns/go.d.ts +2 -0
  263. package/dist/core/group/extractors/topic-patterns/go.js +120 -0
  264. package/dist/core/group/extractors/topic-patterns/index.d.ts +14 -0
  265. package/dist/core/group/extractors/topic-patterns/index.js +38 -0
  266. package/dist/core/group/extractors/topic-patterns/java.d.ts +2 -0
  267. package/dist/core/group/extractors/topic-patterns/java.js +80 -0
  268. package/dist/core/group/extractors/topic-patterns/node.d.ts +4 -0
  269. package/dist/core/group/extractors/topic-patterns/node.js +155 -0
  270. package/dist/core/group/extractors/topic-patterns/python.d.ts +2 -0
  271. package/dist/core/group/extractors/topic-patterns/python.js +116 -0
  272. package/dist/core/group/extractors/topic-patterns/types.d.ts +25 -0
  273. package/dist/core/group/extractors/topic-patterns/types.js +10 -0
  274. package/dist/core/group/extractors/tree-sitter-scanner.d.ts +113 -0
  275. package/dist/core/group/extractors/tree-sitter-scanner.js +94 -0
  276. package/dist/core/group/group-path-utils.d.ts +17 -0
  277. package/dist/core/group/group-path-utils.js +40 -0
  278. package/dist/core/group/matching.d.ts +13 -0
  279. package/dist/core/group/matching.js +198 -0
  280. package/dist/core/group/normalization.d.ts +3 -0
  281. package/dist/core/group/normalization.js +115 -0
  282. package/dist/core/group/resolve-at-member.d.ts +10 -0
  283. package/dist/core/group/resolve-at-member.js +31 -0
  284. package/dist/core/group/service-boundary-detector.d.ts +8 -0
  285. package/dist/core/group/service-boundary-detector.js +155 -0
  286. package/dist/core/group/service.d.ts +55 -0
  287. package/dist/core/group/service.js +394 -0
  288. package/dist/core/group/storage.d.ts +9 -0
  289. package/dist/core/group/storage.js +91 -0
  290. package/dist/core/group/sync.d.ts +21 -0
  291. package/dist/core/group/sync.js +196 -0
  292. package/dist/core/group/types.d.ts +160 -0
  293. package/dist/core/group/types.js +1 -0
  294. package/dist/core/ingestion/ast-cache.d.ts +26 -0
  295. package/dist/core/ingestion/ast-cache.js +47 -0
  296. package/dist/core/ingestion/binding-accumulator.d.ts +212 -0
  297. package/dist/core/ingestion/binding-accumulator.js +336 -0
  298. package/dist/core/ingestion/call-extractors/configs/c-cpp.d.ts +3 -0
  299. package/dist/core/ingestion/call-extractors/configs/c-cpp.js +8 -0
  300. package/dist/core/ingestion/call-extractors/configs/csharp.d.ts +2 -0
  301. package/dist/core/ingestion/call-extractors/configs/csharp.js +6 -0
  302. package/dist/core/ingestion/call-extractors/configs/dart.d.ts +2 -0
  303. package/dist/core/ingestion/call-extractors/configs/dart.js +5 -0
  304. package/dist/core/ingestion/call-extractors/configs/go.d.ts +2 -0
  305. package/dist/core/ingestion/call-extractors/configs/go.js +5 -0
  306. package/dist/core/ingestion/call-extractors/configs/jvm.d.ts +3 -0
  307. package/dist/core/ingestion/call-extractors/configs/jvm.js +51 -0
  308. package/dist/core/ingestion/call-extractors/configs/php.d.ts +2 -0
  309. package/dist/core/ingestion/call-extractors/configs/php.js +5 -0
  310. package/dist/core/ingestion/call-extractors/configs/python.d.ts +2 -0
  311. package/dist/core/ingestion/call-extractors/configs/python.js +5 -0
  312. package/dist/core/ingestion/call-extractors/configs/ruby.d.ts +2 -0
  313. package/dist/core/ingestion/call-extractors/configs/ruby.js +5 -0
  314. package/dist/core/ingestion/call-extractors/configs/rust.d.ts +2 -0
  315. package/dist/core/ingestion/call-extractors/configs/rust.js +5 -0
  316. package/dist/core/ingestion/call-extractors/configs/swift.d.ts +2 -0
  317. package/dist/core/ingestion/call-extractors/configs/swift.js +5 -0
  318. package/dist/core/ingestion/call-extractors/configs/typescript-javascript.d.ts +3 -0
  319. package/dist/core/ingestion/call-extractors/configs/typescript-javascript.js +8 -0
  320. package/dist/core/ingestion/call-extractors/generic.d.ts +5 -0
  321. package/dist/core/ingestion/call-extractors/generic.js +59 -0
  322. package/dist/core/ingestion/call-processor.d.ts +235 -0
  323. package/dist/core/ingestion/call-processor.js +2639 -0
  324. package/dist/core/ingestion/call-routing.d.ts +55 -0
  325. package/dist/core/ingestion/call-routing.js +95 -0
  326. package/dist/core/ingestion/call-types.d.ts +135 -0
  327. package/dist/core/ingestion/call-types.js +2 -0
  328. package/dist/core/ingestion/class-extractors/configs/c-cpp.d.ts +3 -0
  329. package/dist/core/ingestion/class-extractors/configs/c-cpp.js +11 -0
  330. package/dist/core/ingestion/class-extractors/configs/csharp.d.ts +2 -0
  331. package/dist/core/ingestion/class-extractors/configs/csharp.js +21 -0
  332. package/dist/core/ingestion/class-extractors/configs/dart.d.ts +2 -0
  333. package/dist/core/ingestion/class-extractors/configs/dart.js +7 -0
  334. package/dist/core/ingestion/class-extractors/configs/go.d.ts +2 -0
  335. package/dist/core/ingestion/class-extractors/configs/go.js +20 -0
  336. package/dist/core/ingestion/class-extractors/configs/jvm.d.ts +3 -0
  337. package/dist/core/ingestion/class-extractors/configs/jvm.js +35 -0
  338. package/dist/core/ingestion/class-extractors/configs/php.d.ts +2 -0
  339. package/dist/core/ingestion/class-extractors/configs/php.js +7 -0
  340. package/dist/core/ingestion/class-extractors/configs/python.d.ts +2 -0
  341. package/dist/core/ingestion/class-extractors/configs/python.js +7 -0
  342. package/dist/core/ingestion/class-extractors/configs/ruby.d.ts +2 -0
  343. package/dist/core/ingestion/class-extractors/configs/ruby.js +7 -0
  344. package/dist/core/ingestion/class-extractors/configs/rust.d.ts +2 -0
  345. package/dist/core/ingestion/class-extractors/configs/rust.js +7 -0
  346. package/dist/core/ingestion/class-extractors/configs/swift.d.ts +2 -0
  347. package/dist/core/ingestion/class-extractors/configs/swift.js +18 -0
  348. package/dist/core/ingestion/class-extractors/configs/typescript-javascript.d.ts +4 -0
  349. package/dist/core/ingestion/class-extractors/configs/typescript-javascript.js +28 -0
  350. package/dist/core/ingestion/class-extractors/generic.d.ts +2 -0
  351. package/dist/core/ingestion/class-extractors/generic.js +135 -0
  352. package/dist/core/ingestion/class-types.d.ts +34 -0
  353. package/dist/core/ingestion/class-types.js +1 -0
  354. package/dist/core/ingestion/cluster-enricher.d.ts +38 -0
  355. package/dist/core/ingestion/cluster-enricher.js +168 -0
  356. package/dist/core/ingestion/cobol/cobol-copy-expander.d.ts +57 -0
  357. package/dist/core/ingestion/cobol/cobol-copy-expander.js +392 -0
  358. package/dist/core/ingestion/cobol/cobol-preprocessor.d.ts +210 -0
  359. package/dist/core/ingestion/cobol/cobol-preprocessor.js +1715 -0
  360. package/dist/core/ingestion/cobol/jcl-parser.d.ts +68 -0
  361. package/dist/core/ingestion/cobol/jcl-parser.js +217 -0
  362. package/dist/core/ingestion/cobol/jcl-processor.d.ts +33 -0
  363. package/dist/core/ingestion/cobol/jcl-processor.js +229 -0
  364. package/dist/core/ingestion/cobol-processor.d.ts +54 -0
  365. package/dist/core/ingestion/cobol-processor.js +1232 -0
  366. package/dist/core/ingestion/community-processor.d.ts +39 -0
  367. package/dist/core/ingestion/community-processor.js +318 -0
  368. package/dist/core/ingestion/constants.d.ts +16 -0
  369. package/dist/core/ingestion/constants.js +16 -0
  370. package/dist/core/ingestion/emit-references.d.ts +88 -0
  371. package/dist/core/ingestion/emit-references.js +229 -0
  372. package/dist/core/ingestion/entry-point-scoring.d.ts +58 -0
  373. package/dist/core/ingestion/entry-point-scoring.js +380 -0
  374. package/dist/core/ingestion/export-detection.d.ts +57 -0
  375. package/dist/core/ingestion/export-detection.js +233 -0
  376. package/dist/core/ingestion/field-extractor.d.ts +29 -0
  377. package/dist/core/ingestion/field-extractor.js +25 -0
  378. package/dist/core/ingestion/field-extractors/configs/c-cpp.d.ts +3 -0
  379. package/dist/core/ingestion/field-extractors/configs/c-cpp.js +104 -0
  380. package/dist/core/ingestion/field-extractors/configs/csharp.d.ts +8 -0
  381. package/dist/core/ingestion/field-extractors/configs/csharp.js +116 -0
  382. package/dist/core/ingestion/field-extractors/configs/dart.d.ts +8 -0
  383. package/dist/core/ingestion/field-extractors/configs/dart.js +78 -0
  384. package/dist/core/ingestion/field-extractors/configs/go.d.ts +11 -0
  385. package/dist/core/ingestion/field-extractors/configs/go.js +60 -0
  386. package/dist/core/ingestion/field-extractors/configs/helpers.d.ts +53 -0
  387. package/dist/core/ingestion/field-extractors/configs/helpers.js +158 -0
  388. package/dist/core/ingestion/field-extractors/configs/jvm.d.ts +3 -0
  389. package/dist/core/ingestion/field-extractors/configs/jvm.js +118 -0
  390. package/dist/core/ingestion/field-extractors/configs/php.d.ts +8 -0
  391. package/dist/core/ingestion/field-extractors/configs/php.js +65 -0
  392. package/dist/core/ingestion/field-extractors/configs/python.d.ts +12 -0
  393. package/dist/core/ingestion/field-extractors/configs/python.js +91 -0
  394. package/dist/core/ingestion/field-extractors/configs/ruby.d.ts +16 -0
  395. package/dist/core/ingestion/field-extractors/configs/ruby.js +76 -0
  396. package/dist/core/ingestion/field-extractors/configs/rust.d.ts +9 -0
  397. package/dist/core/ingestion/field-extractors/configs/rust.js +52 -0
  398. package/dist/core/ingestion/field-extractors/configs/swift.d.ts +8 -0
  399. package/dist/core/ingestion/field-extractors/configs/swift.js +65 -0
  400. package/dist/core/ingestion/field-extractors/configs/typescript-javascript.d.ts +3 -0
  401. package/dist/core/ingestion/field-extractors/configs/typescript-javascript.js +56 -0
  402. package/dist/core/ingestion/field-extractors/generic.d.ts +49 -0
  403. package/dist/core/ingestion/field-extractors/generic.js +117 -0
  404. package/dist/core/ingestion/field-extractors/typescript.d.ts +77 -0
  405. package/dist/core/ingestion/field-extractors/typescript.js +291 -0
  406. package/dist/core/ingestion/field-types.d.ts +61 -0
  407. package/dist/core/ingestion/field-types.js +2 -0
  408. package/dist/core/ingestion/filesystem-walker.d.ts +28 -0
  409. package/dist/core/ingestion/filesystem-walker.js +91 -0
  410. package/dist/core/ingestion/finalize-orchestrator.d.ts +63 -0
  411. package/dist/core/ingestion/finalize-orchestrator.js +139 -0
  412. package/dist/core/ingestion/framework-detection.d.ts +150 -0
  413. package/dist/core/ingestion/framework-detection.js +786 -0
  414. package/dist/core/ingestion/heritage-extractors/configs/go.d.ts +13 -0
  415. package/dist/core/ingestion/heritage-extractors/configs/go.js +20 -0
  416. package/dist/core/ingestion/heritage-extractors/configs/ruby.d.ts +18 -0
  417. package/dist/core/ingestion/heritage-extractors/configs/ruby.js +65 -0
  418. package/dist/core/ingestion/heritage-extractors/generic.d.ts +23 -0
  419. package/dist/core/ingestion/heritage-extractors/generic.js +47 -0
  420. package/dist/core/ingestion/heritage-processor.d.ts +54 -0
  421. package/dist/core/ingestion/heritage-processor.js +360 -0
  422. package/dist/core/ingestion/heritage-types.d.ts +73 -0
  423. package/dist/core/ingestion/heritage-types.js +2 -0
  424. package/dist/core/ingestion/import-processor.d.ts +23 -0
  425. package/dist/core/ingestion/import-processor.js +373 -0
  426. package/dist/core/ingestion/import-resolvers/configs/c-cpp.d.ts +7 -0
  427. package/dist/core/ingestion/import-resolvers/configs/c-cpp.js +14 -0
  428. package/dist/core/ingestion/import-resolvers/configs/csharp.d.ts +8 -0
  429. package/dist/core/ingestion/import-resolvers/configs/csharp.js +27 -0
  430. package/dist/core/ingestion/import-resolvers/configs/dart.d.ts +17 -0
  431. package/dist/core/ingestion/import-resolvers/configs/dart.js +54 -0
  432. package/dist/core/ingestion/import-resolvers/configs/go.d.ts +8 -0
  433. package/dist/core/ingestion/import-resolvers/configs/go.js +26 -0
  434. package/dist/core/ingestion/import-resolvers/configs/jvm.d.ts +13 -0
  435. package/dist/core/ingestion/import-resolvers/configs/jvm.js +68 -0
  436. package/dist/core/ingestion/import-resolvers/configs/php.d.ts +8 -0
  437. package/dist/core/ingestion/import-resolvers/configs/php.js +15 -0
  438. package/dist/core/ingestion/import-resolvers/configs/python.d.ts +12 -0
  439. package/dist/core/ingestion/import-resolvers/configs/python.js +41 -0
  440. package/dist/core/ingestion/import-resolvers/configs/ruby.d.ts +8 -0
  441. package/dist/core/ingestion/import-resolvers/configs/ruby.js +16 -0
  442. package/dist/core/ingestion/import-resolvers/configs/rust.d.ts +8 -0
  443. package/dist/core/ingestion/import-resolvers/configs/rust.js +54 -0
  444. package/dist/core/ingestion/import-resolvers/configs/swift.d.ts +8 -0
  445. package/dist/core/ingestion/import-resolvers/configs/swift.js +29 -0
  446. package/dist/core/ingestion/import-resolvers/configs/typescript-javascript.d.ts +9 -0
  447. package/dist/core/ingestion/import-resolvers/configs/typescript-javascript.js +23 -0
  448. package/dist/core/ingestion/import-resolvers/csharp.d.ts +18 -0
  449. package/dist/core/ingestion/import-resolvers/csharp.js +115 -0
  450. package/dist/core/ingestion/import-resolvers/go.d.ts +17 -0
  451. package/dist/core/ingestion/import-resolvers/go.js +46 -0
  452. package/dist/core/ingestion/import-resolvers/jvm.d.ts +27 -0
  453. package/dist/core/ingestion/import-resolvers/jvm.js +106 -0
  454. package/dist/core/ingestion/import-resolvers/php.d.ts +24 -0
  455. package/dist/core/ingestion/import-resolvers/php.js +77 -0
  456. package/dist/core/ingestion/import-resolvers/python.d.ts +22 -0
  457. package/dist/core/ingestion/import-resolvers/python.js +72 -0
  458. package/dist/core/ingestion/import-resolvers/resolver-factory.d.ts +24 -0
  459. package/dist/core/ingestion/import-resolvers/resolver-factory.js +33 -0
  460. package/dist/core/ingestion/import-resolvers/ruby.d.ts +14 -0
  461. package/dist/core/ingestion/import-resolvers/ruby.js +17 -0
  462. package/dist/core/ingestion/import-resolvers/rust.d.ts +17 -0
  463. package/dist/core/ingestion/import-resolvers/rust.js +75 -0
  464. package/dist/core/ingestion/import-resolvers/standard.d.ts +30 -0
  465. package/dist/core/ingestion/import-resolvers/standard.js +142 -0
  466. package/dist/core/ingestion/import-resolvers/types.d.ts +68 -0
  467. package/dist/core/ingestion/import-resolvers/types.js +6 -0
  468. package/dist/core/ingestion/import-resolvers/utils.d.ts +35 -0
  469. package/dist/core/ingestion/import-resolvers/utils.js +149 -0
  470. package/dist/core/ingestion/import-target-adapter.d.ts +73 -0
  471. package/dist/core/ingestion/import-target-adapter.js +95 -0
  472. package/dist/core/ingestion/language-config.d.ts +52 -0
  473. package/dist/core/ingestion/language-config.js +181 -0
  474. package/dist/core/ingestion/language-provider.d.ts +410 -0
  475. package/dist/core/ingestion/language-provider.js +24 -0
  476. package/dist/core/ingestion/languages/c-cpp.d.ts +12 -0
  477. package/dist/core/ingestion/languages/c-cpp.js +329 -0
  478. package/dist/core/ingestion/languages/cobol.d.ts +1 -0
  479. package/dist/core/ingestion/languages/cobol.js +26 -0
  480. package/dist/core/ingestion/languages/csharp/accessor-unwrap.d.ts +21 -0
  481. package/dist/core/ingestion/languages/csharp/accessor-unwrap.js +56 -0
  482. package/dist/core/ingestion/languages/csharp/arity-metadata.d.ts +26 -0
  483. package/dist/core/ingestion/languages/csharp/arity-metadata.js +46 -0
  484. package/dist/core/ingestion/languages/csharp/arity.d.ts +23 -0
  485. package/dist/core/ingestion/languages/csharp/arity.js +37 -0
  486. package/dist/core/ingestion/languages/csharp/cache-stats.d.ts +15 -0
  487. package/dist/core/ingestion/languages/csharp/cache-stats.js +26 -0
  488. package/dist/core/ingestion/languages/csharp/captures.d.ts +19 -0
  489. package/dist/core/ingestion/languages/csharp/captures.js +249 -0
  490. package/dist/core/ingestion/languages/csharp/import-decomposer.d.ts +19 -0
  491. package/dist/core/ingestion/languages/csharp/import-decomposer.js +93 -0
  492. package/dist/core/ingestion/languages/csharp/import-target.d.ts +25 -0
  493. package/dist/core/ingestion/languages/csharp/import-target.js +123 -0
  494. package/dist/core/ingestion/languages/csharp/index.d.ts +82 -0
  495. package/dist/core/ingestion/languages/csharp/index.js +82 -0
  496. package/dist/core/ingestion/languages/csharp/interpret.d.ts +15 -0
  497. package/dist/core/ingestion/languages/csharp/interpret.js +132 -0
  498. package/dist/core/ingestion/languages/csharp/merge-bindings.d.ts +27 -0
  499. package/dist/core/ingestion/languages/csharp/merge-bindings.js +55 -0
  500. package/dist/core/ingestion/languages/csharp/namespace-siblings.d.ts +50 -0
  501. package/dist/core/ingestion/languages/csharp/namespace-siblings.js +374 -0
  502. package/dist/core/ingestion/languages/csharp/query.d.ts +35 -0
  503. package/dist/core/ingestion/languages/csharp/query.js +515 -0
  504. package/dist/core/ingestion/languages/csharp/receiver-binding.d.ts +31 -0
  505. package/dist/core/ingestion/languages/csharp/receiver-binding.js +135 -0
  506. package/dist/core/ingestion/languages/csharp/scope-resolver.d.ts +10 -0
  507. package/dist/core/ingestion/languages/csharp/scope-resolver.js +63 -0
  508. package/dist/core/ingestion/languages/csharp/simple-hooks.d.ts +53 -0
  509. package/dist/core/ingestion/languages/csharp/simple-hooks.js +76 -0
  510. package/dist/core/ingestion/languages/csharp.d.ts +8 -0
  511. package/dist/core/ingestion/languages/csharp.js +152 -0
  512. package/dist/core/ingestion/languages/dart.d.ts +12 -0
  513. package/dist/core/ingestion/languages/dart.js +102 -0
  514. package/dist/core/ingestion/languages/go.d.ts +11 -0
  515. package/dist/core/ingestion/languages/go.js +44 -0
  516. package/dist/core/ingestion/languages/index.d.ts +39 -0
  517. package/dist/core/ingestion/languages/index.js +64 -0
  518. package/dist/core/ingestion/languages/java.d.ts +9 -0
  519. package/dist/core/ingestion/languages/java.js +44 -0
  520. package/dist/core/ingestion/languages/kotlin.d.ts +9 -0
  521. package/dist/core/ingestion/languages/kotlin.js +123 -0
  522. package/dist/core/ingestion/languages/php.d.ts +8 -0
  523. package/dist/core/ingestion/languages/php.js +240 -0
  524. package/dist/core/ingestion/languages/python/arity-metadata.d.ts +24 -0
  525. package/dist/core/ingestion/languages/python/arity-metadata.js +45 -0
  526. package/dist/core/ingestion/languages/python/arity.d.ts +22 -0
  527. package/dist/core/ingestion/languages/python/arity.js +38 -0
  528. package/dist/core/ingestion/languages/python/cache-stats.d.ts +17 -0
  529. package/dist/core/ingestion/languages/python/cache-stats.js +28 -0
  530. package/dist/core/ingestion/languages/python/captures.d.ts +19 -0
  531. package/dist/core/ingestion/languages/python/captures.js +106 -0
  532. package/dist/core/ingestion/languages/python/import-decomposer.d.ts +15 -0
  533. package/dist/core/ingestion/languages/python/import-decomposer.js +112 -0
  534. package/dist/core/ingestion/languages/python/import-target.d.ts +21 -0
  535. package/dist/core/ingestion/languages/python/import-target.js +99 -0
  536. package/dist/core/ingestion/languages/python/index.d.ts +80 -0
  537. package/dist/core/ingestion/languages/python/index.js +80 -0
  538. package/dist/core/ingestion/languages/python/interpret.d.ts +15 -0
  539. package/dist/core/ingestion/languages/python/interpret.js +191 -0
  540. package/dist/core/ingestion/languages/python/merge-bindings.d.ts +16 -0
  541. package/dist/core/ingestion/languages/python/merge-bindings.js +44 -0
  542. package/dist/core/ingestion/languages/python/query.d.ts +9 -0
  543. package/dist/core/ingestion/languages/python/query.js +267 -0
  544. package/dist/core/ingestion/languages/python/receiver-binding.d.ts +21 -0
  545. package/dist/core/ingestion/languages/python/receiver-binding.js +116 -0
  546. package/dist/core/ingestion/languages/python/scope-resolver.d.ts +16 -0
  547. package/dist/core/ingestion/languages/python/scope-resolver.js +53 -0
  548. package/dist/core/ingestion/languages/python/simple-hooks.d.ts +23 -0
  549. package/dist/core/ingestion/languages/python/simple-hooks.js +35 -0
  550. package/dist/core/ingestion/languages/python.d.ts +12 -0
  551. package/dist/core/ingestion/languages/python.js +91 -0
  552. package/dist/core/ingestion/languages/ruby.d.ts +9 -0
  553. package/dist/core/ingestion/languages/ruby.js +210 -0
  554. package/dist/core/ingestion/languages/rust.d.ts +12 -0
  555. package/dist/core/ingestion/languages/rust.js +132 -0
  556. package/dist/core/ingestion/languages/swift.d.ts +12 -0
  557. package/dist/core/ingestion/languages/swift.js +244 -0
  558. package/dist/core/ingestion/languages/typescript.d.ts +11 -0
  559. package/dist/core/ingestion/languages/typescript.js +184 -0
  560. package/dist/core/ingestion/languages/vue.d.ts +13 -0
  561. package/dist/core/ingestion/languages/vue.js +77 -0
  562. package/dist/core/ingestion/markdown-processor.d.ts +17 -0
  563. package/dist/core/ingestion/markdown-processor.js +124 -0
  564. package/dist/core/ingestion/method-extractors/configs/c-cpp.d.ts +3 -0
  565. package/dist/core/ingestion/method-extractors/configs/c-cpp.js +387 -0
  566. package/dist/core/ingestion/method-extractors/configs/csharp.d.ts +2 -0
  567. package/dist/core/ingestion/method-extractors/configs/csharp.js +287 -0
  568. package/dist/core/ingestion/method-extractors/configs/dart.d.ts +2 -0
  569. package/dist/core/ingestion/method-extractors/configs/dart.js +376 -0
  570. package/dist/core/ingestion/method-extractors/configs/go.d.ts +2 -0
  571. package/dist/core/ingestion/method-extractors/configs/go.js +176 -0
  572. package/dist/core/ingestion/method-extractors/configs/jvm.d.ts +3 -0
  573. package/dist/core/ingestion/method-extractors/configs/jvm.js +336 -0
  574. package/dist/core/ingestion/method-extractors/configs/php.d.ts +2 -0
  575. package/dist/core/ingestion/method-extractors/configs/php.js +304 -0
  576. package/dist/core/ingestion/method-extractors/configs/python.d.ts +2 -0
  577. package/dist/core/ingestion/method-extractors/configs/python.js +309 -0
  578. package/dist/core/ingestion/method-extractors/configs/ruby.d.ts +2 -0
  579. package/dist/core/ingestion/method-extractors/configs/ruby.js +286 -0
  580. package/dist/core/ingestion/method-extractors/configs/rust.d.ts +2 -0
  581. package/dist/core/ingestion/method-extractors/configs/rust.js +195 -0
  582. package/dist/core/ingestion/method-extractors/configs/swift.d.ts +2 -0
  583. package/dist/core/ingestion/method-extractors/configs/swift.js +277 -0
  584. package/dist/core/ingestion/method-extractors/configs/typescript-javascript.d.ts +3 -0
  585. package/dist/core/ingestion/method-extractors/configs/typescript-javascript.js +338 -0
  586. package/dist/core/ingestion/method-extractors/generic.d.ts +11 -0
  587. package/dist/core/ingestion/method-extractors/generic.js +204 -0
  588. package/dist/core/ingestion/method-types.d.ts +90 -0
  589. package/dist/core/ingestion/method-types.js +2 -0
  590. package/dist/core/ingestion/model/field-registry.d.ts +18 -0
  591. package/dist/core/ingestion/model/field-registry.js +22 -0
  592. package/dist/core/ingestion/model/heritage-map.d.ts +105 -0
  593. package/dist/core/ingestion/model/heritage-map.js +260 -0
  594. package/dist/core/ingestion/model/index.d.ts +20 -0
  595. package/dist/core/ingestion/model/index.js +43 -0
  596. package/dist/core/ingestion/model/method-registry.d.ts +71 -0
  597. package/dist/core/ingestion/model/method-registry.js +134 -0
  598. package/dist/core/ingestion/model/registration-table.d.ts +138 -0
  599. package/dist/core/ingestion/model/registration-table.js +224 -0
  600. package/dist/core/ingestion/model/resolution-context.d.ts +93 -0
  601. package/dist/core/ingestion/model/resolution-context.js +337 -0
  602. package/dist/core/ingestion/model/resolve.d.ts +61 -0
  603. package/dist/core/ingestion/model/resolve.js +381 -0
  604. package/dist/core/ingestion/model/scope-resolution-indexes.d.ts +59 -0
  605. package/dist/core/ingestion/model/scope-resolution-indexes.js +42 -0
  606. package/dist/core/ingestion/model/semantic-model.d.ts +150 -0
  607. package/dist/core/ingestion/model/semantic-model.js +175 -0
  608. package/dist/core/ingestion/model/symbol-table.d.ts +200 -0
  609. package/dist/core/ingestion/model/symbol-table.js +206 -0
  610. package/dist/core/ingestion/model/type-registry.d.ts +39 -0
  611. package/dist/core/ingestion/model/type-registry.js +62 -0
  612. package/dist/core/ingestion/mro-processor.d.ts +46 -0
  613. package/dist/core/ingestion/mro-processor.js +597 -0
  614. package/dist/core/ingestion/named-bindings/csharp.d.ts +3 -0
  615. package/dist/core/ingestion/named-bindings/csharp.js +37 -0
  616. package/dist/core/ingestion/named-bindings/java.d.ts +3 -0
  617. package/dist/core/ingestion/named-bindings/java.js +29 -0
  618. package/dist/core/ingestion/named-bindings/kotlin.d.ts +3 -0
  619. package/dist/core/ingestion/named-bindings/kotlin.js +36 -0
  620. package/dist/core/ingestion/named-bindings/php.d.ts +3 -0
  621. package/dist/core/ingestion/named-bindings/php.js +61 -0
  622. package/dist/core/ingestion/named-bindings/python.d.ts +3 -0
  623. package/dist/core/ingestion/named-bindings/python.js +49 -0
  624. package/dist/core/ingestion/named-bindings/rust.d.ts +3 -0
  625. package/dist/core/ingestion/named-bindings/rust.js +66 -0
  626. package/dist/core/ingestion/named-bindings/types.d.ts +16 -0
  627. package/dist/core/ingestion/named-bindings/types.js +6 -0
  628. package/dist/core/ingestion/named-bindings/typescript.d.ts +3 -0
  629. package/dist/core/ingestion/named-bindings/typescript.js +58 -0
  630. package/dist/core/ingestion/parsing-processor.d.ts +40 -0
  631. package/dist/core/ingestion/parsing-processor.js +576 -0
  632. package/dist/core/ingestion/pipeline-phases/cobol.d.ts +16 -0
  633. package/dist/core/ingestion/pipeline-phases/cobol.js +45 -0
  634. package/dist/core/ingestion/pipeline-phases/communities.d.ts +16 -0
  635. package/dist/core/ingestion/pipeline-phases/communities.js +62 -0
  636. package/dist/core/ingestion/pipeline-phases/cross-file-impl.d.ts +17 -0
  637. package/dist/core/ingestion/pipeline-phases/cross-file-impl.js +156 -0
  638. package/dist/core/ingestion/pipeline-phases/cross-file.d.ts +37 -0
  639. package/dist/core/ingestion/pipeline-phases/cross-file.js +63 -0
  640. package/dist/core/ingestion/pipeline-phases/index.d.ts +22 -0
  641. package/dist/core/ingestion/pipeline-phases/index.js +23 -0
  642. package/dist/core/ingestion/pipeline-phases/markdown.d.ts +17 -0
  643. package/dist/core/ingestion/pipeline-phases/markdown.js +33 -0
  644. package/dist/core/ingestion/pipeline-phases/mro.d.ts +18 -0
  645. package/dist/core/ingestion/pipeline-phases/mro.js +36 -0
  646. package/dist/core/ingestion/pipeline-phases/orm-extraction.d.ts +22 -0
  647. package/dist/core/ingestion/pipeline-phases/orm-extraction.js +92 -0
  648. package/dist/core/ingestion/pipeline-phases/orm.d.ts +15 -0
  649. package/dist/core/ingestion/pipeline-phases/orm.js +74 -0
  650. package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +58 -0
  651. package/dist/core/ingestion/pipeline-phases/parse-impl.js +458 -0
  652. package/dist/core/ingestion/pipeline-phases/parse.d.ts +74 -0
  653. package/dist/core/ingestion/pipeline-phases/parse.js +33 -0
  654. package/dist/core/ingestion/pipeline-phases/processes.d.ts +16 -0
  655. package/dist/core/ingestion/pipeline-phases/processes.js +143 -0
  656. package/dist/core/ingestion/pipeline-phases/routes.d.ts +21 -0
  657. package/dist/core/ingestion/pipeline-phases/routes.js +243 -0
  658. package/dist/core/ingestion/pipeline-phases/runner.d.ts +22 -0
  659. package/dist/core/ingestion/pipeline-phases/runner.js +203 -0
  660. package/dist/core/ingestion/pipeline-phases/scan.d.ts +21 -0
  661. package/dist/core/ingestion/pipeline-phases/scan.js +46 -0
  662. package/dist/core/ingestion/pipeline-phases/structure.d.ts +27 -0
  663. package/dist/core/ingestion/pipeline-phases/structure.js +35 -0
  664. package/dist/core/ingestion/pipeline-phases/tools.d.ts +20 -0
  665. package/dist/core/ingestion/pipeline-phases/tools.js +79 -0
  666. package/dist/core/ingestion/pipeline-phases/types.d.ts +79 -0
  667. package/dist/core/ingestion/pipeline-phases/types.js +37 -0
  668. package/dist/core/ingestion/pipeline-phases/wildcard-synthesis.d.ts +70 -0
  669. package/dist/core/ingestion/pipeline-phases/wildcard-synthesis.js +312 -0
  670. package/dist/core/ingestion/pipeline.d.ts +36 -0
  671. package/dist/core/ingestion/pipeline.js +89 -0
  672. package/dist/core/ingestion/process-processor.d.ts +51 -0
  673. package/dist/core/ingestion/process-processor.js +317 -0
  674. package/dist/core/ingestion/registry-primary-flag.d.ts +86 -0
  675. package/dist/core/ingestion/registry-primary-flag.js +111 -0
  676. package/dist/core/ingestion/resolve-references.d.ts +63 -0
  677. package/dist/core/ingestion/resolve-references.js +175 -0
  678. package/dist/core/ingestion/route-extractors/expo.d.ts +1 -0
  679. package/dist/core/ingestion/route-extractors/expo.js +36 -0
  680. package/dist/core/ingestion/route-extractors/middleware.d.ts +47 -0
  681. package/dist/core/ingestion/route-extractors/middleware.js +167 -0
  682. package/dist/core/ingestion/route-extractors/nextjs.d.ts +3 -0
  683. package/dist/core/ingestion/route-extractors/nextjs.js +76 -0
  684. package/dist/core/ingestion/route-extractors/php.d.ts +7 -0
  685. package/dist/core/ingestion/route-extractors/php.js +22 -0
  686. package/dist/core/ingestion/route-extractors/response-shapes.d.ts +20 -0
  687. package/dist/core/ingestion/route-extractors/response-shapes.js +294 -0
  688. package/dist/core/ingestion/scope-extractor-bridge.d.ts +32 -0
  689. package/dist/core/ingestion/scope-extractor-bridge.js +44 -0
  690. package/dist/core/ingestion/scope-extractor.d.ts +86 -0
  691. package/dist/core/ingestion/scope-extractor.js +758 -0
  692. package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +372 -0
  693. package/dist/core/ingestion/scope-resolution/contract/scope-resolver.js +212 -0
  694. package/dist/core/ingestion/scope-resolution/graph-bridge/edges.d.ts +43 -0
  695. package/dist/core/ingestion/scope-resolution/graph-bridge/edges.js +79 -0
  696. package/dist/core/ingestion/scope-resolution/graph-bridge/ids.d.ts +57 -0
  697. package/dist/core/ingestion/scope-resolution/graph-bridge/ids.js +112 -0
  698. package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.d.ts +17 -0
  699. package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +46 -0
  700. package/dist/core/ingestion/scope-resolution/graph-bridge/method-dispatch.d.ts +19 -0
  701. package/dist/core/ingestion/scope-resolution/graph-bridge/method-dispatch.js +30 -0
  702. package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.d.ts +37 -0
  703. package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +113 -0
  704. package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.d.ts +38 -0
  705. package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +73 -0
  706. package/dist/core/ingestion/scope-resolution/passes/compound-receiver.d.ts +42 -0
  707. package/dist/core/ingestion/scope-resolution/passes/compound-receiver.js +198 -0
  708. package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +27 -0
  709. package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +131 -0
  710. package/dist/core/ingestion/scope-resolution/passes/imported-return-types.d.ts +48 -0
  711. package/dist/core/ingestion/scope-resolution/passes/imported-return-types.js +130 -0
  712. package/dist/core/ingestion/scope-resolution/passes/mro.d.ts +42 -0
  713. package/dist/core/ingestion/scope-resolution/passes/mro.js +99 -0
  714. package/dist/core/ingestion/scope-resolution/passes/overload-narrowing.d.ts +26 -0
  715. package/dist/core/ingestion/scope-resolution/passes/overload-narrowing.js +61 -0
  716. package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.d.ts +46 -0
  717. package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +327 -0
  718. package/dist/core/ingestion/scope-resolution/pipeline/phase.d.ts +47 -0
  719. package/dist/core/ingestion/scope-resolution/pipeline/phase.js +130 -0
  720. package/dist/core/ingestion/scope-resolution/pipeline/reconcile-ownership.d.ts +68 -0
  721. package/dist/core/ingestion/scope-resolution/pipeline/reconcile-ownership.js +125 -0
  722. package/dist/core/ingestion/scope-resolution/pipeline/registry.d.ts +17 -0
  723. package/dist/core/ingestion/scope-resolution/pipeline/registry.js +21 -0
  724. package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +66 -0
  725. package/dist/core/ingestion/scope-resolution/pipeline/run.js +157 -0
  726. package/dist/core/ingestion/scope-resolution/scope/namespace-targets.d.ts +36 -0
  727. package/dist/core/ingestion/scope-resolution/scope/namespace-targets.js +52 -0
  728. package/dist/core/ingestion/scope-resolution/scope/walkers.d.ts +127 -0
  729. package/dist/core/ingestion/scope-resolution/scope/walkers.js +349 -0
  730. package/dist/core/ingestion/scope-resolution/workspace-index.d.ts +52 -0
  731. package/dist/core/ingestion/scope-resolution/workspace-index.js +61 -0
  732. package/dist/core/ingestion/shadow-harness.d.ts +113 -0
  733. package/dist/core/ingestion/shadow-harness.js +148 -0
  734. package/dist/core/ingestion/structure-processor.d.ts +2 -0
  735. package/dist/core/ingestion/structure-processor.js +36 -0
  736. package/dist/core/ingestion/tree-sitter-queries.d.ts +16 -0
  737. package/dist/core/ingestion/tree-sitter-queries.js +1338 -0
  738. package/dist/core/ingestion/type-env.d.ts +86 -0
  739. package/dist/core/ingestion/type-env.js +1128 -0
  740. package/dist/core/ingestion/type-extractors/c-cpp.d.ts +7 -0
  741. package/dist/core/ingestion/type-extractors/c-cpp.js +532 -0
  742. package/dist/core/ingestion/type-extractors/csharp.d.ts +2 -0
  743. package/dist/core/ingestion/type-extractors/csharp.js +583 -0
  744. package/dist/core/ingestion/type-extractors/dart.d.ts +15 -0
  745. package/dist/core/ingestion/type-extractors/dart.js +369 -0
  746. package/dist/core/ingestion/type-extractors/go.d.ts +2 -0
  747. package/dist/core/ingestion/type-extractors/go.js +513 -0
  748. package/dist/core/ingestion/type-extractors/jvm.d.ts +3 -0
  749. package/dist/core/ingestion/type-extractors/jvm.js +856 -0
  750. package/dist/core/ingestion/type-extractors/php.d.ts +2 -0
  751. package/dist/core/ingestion/type-extractors/php.js +534 -0
  752. package/dist/core/ingestion/type-extractors/python.d.ts +2 -0
  753. package/dist/core/ingestion/type-extractors/python.js +474 -0
  754. package/dist/core/ingestion/type-extractors/ruby.d.ts +2 -0
  755. package/dist/core/ingestion/type-extractors/ruby.js +377 -0
  756. package/dist/core/ingestion/type-extractors/rust.d.ts +2 -0
  757. package/dist/core/ingestion/type-extractors/rust.js +515 -0
  758. package/dist/core/ingestion/type-extractors/shared.d.ts +131 -0
  759. package/dist/core/ingestion/type-extractors/shared.js +796 -0
  760. package/dist/core/ingestion/type-extractors/swift.d.ts +2 -0
  761. package/dist/core/ingestion/type-extractors/swift.js +484 -0
  762. package/dist/core/ingestion/type-extractors/types.d.ts +172 -0
  763. package/dist/core/ingestion/type-extractors/types.js +1 -0
  764. package/dist/core/ingestion/type-extractors/typescript.d.ts +2 -0
  765. package/dist/core/ingestion/type-extractors/typescript.js +661 -0
  766. package/dist/core/ingestion/utils/ast-helpers.d.ts +89 -0
  767. package/dist/core/ingestion/utils/ast-helpers.js +535 -0
  768. package/dist/core/ingestion/utils/call-analysis.d.ts +75 -0
  769. package/dist/core/ingestion/utils/call-analysis.js +574 -0
  770. package/dist/core/ingestion/utils/env.d.ts +10 -0
  771. package/dist/core/ingestion/utils/env.js +10 -0
  772. package/dist/core/ingestion/utils/event-loop.d.ts +5 -0
  773. package/dist/core/ingestion/utils/event-loop.js +5 -0
  774. package/dist/core/ingestion/utils/graph-sort.d.ts +58 -0
  775. package/dist/core/ingestion/utils/graph-sort.js +100 -0
  776. package/dist/core/ingestion/utils/max-file-size.d.ts +20 -0
  777. package/dist/core/ingestion/utils/max-file-size.js +52 -0
  778. package/dist/core/ingestion/utils/method-props.d.ts +32 -0
  779. package/dist/core/ingestion/utils/method-props.js +147 -0
  780. package/dist/core/ingestion/utils/ruby-self-call.d.ts +52 -0
  781. package/dist/core/ingestion/utils/ruby-self-call.js +59 -0
  782. package/dist/core/ingestion/utils/verbose.d.ts +1 -0
  783. package/dist/core/ingestion/utils/verbose.js +7 -0
  784. package/dist/core/ingestion/variable-extractors/configs/c-cpp.d.ts +3 -0
  785. package/dist/core/ingestion/variable-extractors/configs/c-cpp.js +81 -0
  786. package/dist/core/ingestion/variable-extractors/configs/csharp.d.ts +9 -0
  787. package/dist/core/ingestion/variable-extractors/configs/csharp.js +63 -0
  788. package/dist/core/ingestion/variable-extractors/configs/dart.d.ts +2 -0
  789. package/dist/core/ingestion/variable-extractors/configs/dart.js +94 -0
  790. package/dist/core/ingestion/variable-extractors/configs/go.d.ts +2 -0
  791. package/dist/core/ingestion/variable-extractors/configs/go.js +83 -0
  792. package/dist/core/ingestion/variable-extractors/configs/jvm.d.ts +18 -0
  793. package/dist/core/ingestion/variable-extractors/configs/jvm.js +115 -0
  794. package/dist/core/ingestion/variable-extractors/configs/php.d.ts +14 -0
  795. package/dist/core/ingestion/variable-extractors/configs/php.js +58 -0
  796. package/dist/core/ingestion/variable-extractors/configs/python.d.ts +2 -0
  797. package/dist/core/ingestion/variable-extractors/configs/python.js +101 -0
  798. package/dist/core/ingestion/variable-extractors/configs/ruby.d.ts +11 -0
  799. package/dist/core/ingestion/variable-extractors/configs/ruby.js +52 -0
  800. package/dist/core/ingestion/variable-extractors/configs/rust.d.ts +2 -0
  801. package/dist/core/ingestion/variable-extractors/configs/rust.js +76 -0
  802. package/dist/core/ingestion/variable-extractors/configs/swift.d.ts +2 -0
  803. package/dist/core/ingestion/variable-extractors/configs/swift.js +88 -0
  804. package/dist/core/ingestion/variable-extractors/configs/typescript-javascript.d.ts +3 -0
  805. package/dist/core/ingestion/variable-extractors/configs/typescript-javascript.js +83 -0
  806. package/dist/core/ingestion/variable-extractors/generic.d.ts +5 -0
  807. package/dist/core/ingestion/variable-extractors/generic.js +80 -0
  808. package/dist/core/ingestion/variable-types.d.ts +82 -0
  809. package/dist/core/ingestion/variable-types.js +2 -0
  810. package/dist/core/ingestion/vue-sfc-extractor.d.ts +44 -0
  811. package/dist/core/ingestion/vue-sfc-extractor.js +94 -0
  812. package/dist/core/ingestion/workers/parse-worker.d.ts +198 -0
  813. package/dist/core/ingestion/workers/parse-worker.js +1928 -0
  814. package/dist/core/ingestion/workers/worker-pool.d.ts +16 -0
  815. package/dist/core/ingestion/workers/worker-pool.js +126 -0
  816. package/dist/core/lbug/csv-generator.d.ts +33 -0
  817. package/dist/core/lbug/csv-generator.js +459 -0
  818. package/dist/core/lbug/lbug-adapter.d.ts +173 -0
  819. package/dist/core/lbug/lbug-adapter.js +1188 -0
  820. package/dist/core/lbug/pool-adapter.d.ts +93 -0
  821. package/dist/core/lbug/pool-adapter.js +543 -0
  822. package/dist/core/lbug/schema.d.ts +62 -0
  823. package/dist/core/lbug/schema.js +484 -0
  824. package/dist/core/run-analyze.d.ts +72 -0
  825. package/dist/core/run-analyze.js +315 -0
  826. package/dist/core/search/bm25-index.d.ts +41 -0
  827. package/dist/core/search/bm25-index.js +209 -0
  828. package/dist/core/search/hybrid-search.d.ts +49 -0
  829. package/dist/core/search/hybrid-search.js +118 -0
  830. package/dist/core/search/phase-timer.d.ts +72 -0
  831. package/dist/core/search/phase-timer.js +106 -0
  832. package/dist/core/tree-sitter/parser-loader.d.ts +8 -0
  833. package/dist/core/tree-sitter/parser-loader.js +84 -0
  834. package/dist/core/wiki/cursor-client.d.ts +31 -0
  835. package/dist/core/wiki/cursor-client.js +122 -0
  836. package/dist/core/wiki/generator.d.ts +129 -0
  837. package/dist/core/wiki/generator.js +898 -0
  838. package/dist/core/wiki/graph-queries.d.ts +84 -0
  839. package/dist/core/wiki/graph-queries.js +244 -0
  840. package/dist/core/wiki/html-viewer.d.ts +10 -0
  841. package/dist/core/wiki/html-viewer.js +303 -0
  842. package/dist/core/wiki/llm-client.d.ts +63 -0
  843. package/dist/core/wiki/llm-client.js +234 -0
  844. package/dist/core/wiki/prompts.d.ts +53 -0
  845. package/dist/core/wiki/prompts.js +181 -0
  846. package/dist/lib/utils.d.ts +1 -0
  847. package/dist/lib/utils.js +3 -0
  848. package/dist/mcp/compatible-stdio-transport.d.ts +25 -0
  849. package/dist/mcp/compatible-stdio-transport.js +200 -0
  850. package/dist/mcp/core/embedder.d.ts +27 -0
  851. package/dist/mcp/core/embedder.js +122 -0
  852. package/dist/mcp/core/lbug-adapter.d.ts +5 -0
  853. package/dist/mcp/core/lbug-adapter.js +5 -0
  854. package/dist/mcp/local/graphstore-handler.d.ts +214 -0
  855. package/dist/mcp/local/graphstore-handler.js +272 -0
  856. package/dist/mcp/local/local-backend.d.ts +347 -0
  857. package/dist/mcp/local/local-backend.js +3218 -0
  858. package/dist/mcp/resources.d.ts +62 -0
  859. package/dist/mcp/resources.js +696 -0
  860. package/dist/mcp/server.d.ts +23 -0
  861. package/dist/mcp/server.js +533 -0
  862. package/dist/mcp/staleness.d.ts +5 -0
  863. package/dist/mcp/staleness.js +4 -0
  864. package/dist/mcp/tools.d.ts +27 -0
  865. package/dist/mcp/tools.js +823 -0
  866. package/dist/server/analyze-job.d.ts +55 -0
  867. package/dist/server/analyze-job.js +150 -0
  868. package/dist/server/analyze-worker.d.ts +13 -0
  869. package/dist/server/analyze-worker.js +59 -0
  870. package/dist/server/api.d.ts +47 -0
  871. package/dist/server/api.js +1727 -0
  872. package/dist/server/git-clone.d.ts +26 -0
  873. package/dist/server/git-clone.js +184 -0
  874. package/dist/server/mcp-http.d.ts +13 -0
  875. package/dist/server/mcp-http.js +100 -0
  876. package/dist/storage/git.d.ts +80 -0
  877. package/dist/storage/git.js +190 -0
  878. package/dist/storage/repo-manager.d.ts +458 -0
  879. package/dist/storage/repo-manager.js +766 -0
  880. package/dist/types/pipeline.d.ts +18 -0
  881. package/dist/types/pipeline.js +1 -0
  882. package/hooks/claude/codragraph-hook.cjs +268 -0
  883. package/hooks/claude/pre-tool-use.sh +79 -0
  884. package/hooks/claude/session-start.sh +42 -0
  885. package/package.json +127 -0
  886. package/scripts/bench-scope-resolution.ts +134 -0
  887. package/scripts/build-tree-sitter-proto.cjs +82 -0
  888. package/scripts/build.js +90 -0
  889. package/scripts/ci-list-migrated-languages.ts +24 -0
  890. package/scripts/patch-tree-sitter-swift.cjs +78 -0
  891. package/skills/codragraph-cli.md +82 -0
  892. package/skills/codragraph-debugging.md +89 -0
  893. package/skills/codragraph-exploring.md +78 -0
  894. package/skills/codragraph-guide.md +64 -0
  895. package/skills/codragraph-impact-analysis.md +97 -0
  896. package/skills/codragraph-pr-review.md +163 -0
  897. package/skills/codragraph-refactoring.md +121 -0
  898. package/vendor/leiden/index.cjs +355 -0
  899. package/vendor/leiden/utils.cjs +392 -0
  900. package/vendor/tree-sitter-proto/binding.gyp +30 -0
  901. package/vendor/tree-sitter-proto/bindings/node/binding.cc +20 -0
  902. package/vendor/tree-sitter-proto/bindings/node/index.d.ts +28 -0
  903. package/vendor/tree-sitter-proto/bindings/node/index.js +7 -0
  904. package/vendor/tree-sitter-proto/package.json +12 -0
  905. package/vendor/tree-sitter-proto/src/node-types.json +1145 -0
  906. package/vendor/tree-sitter-proto/src/parser.c +10149 -0
  907. package/vendor/tree-sitter-proto/src/tree_sitter/alloc.h +54 -0
  908. package/vendor/tree-sitter-proto/src/tree_sitter/array.h +291 -0
  909. package/vendor/tree-sitter-proto/src/tree_sitter/parser.h +266 -0
@@ -0,0 +1,54 @@
1
+ import type { CrossLink, GroupManifestLink, StoredContract } from '../types.js';
2
+ import type { CypherExecutor } from '../contract-extractor.js';
3
+ export interface ManifestExtractResult {
4
+ contracts: StoredContract[];
5
+ crossLinks: CrossLink[];
6
+ }
7
+ /**
8
+ * Stable synthetic symbolUid for a manifest-declared contract whose target
9
+ * symbol could not be resolved against the per-repo graph (resolveSymbol
10
+ * returned null). Two reasons we don't leave the uid empty:
11
+ *
12
+ * 1. The bridge stores Contract nodes keyed in part by symbolUid; an empty
13
+ * uid means downstream Cypher queries that anchor on `provider.symbolUid`
14
+ * can't tell two different unresolved manifest contracts apart.
15
+ * 2. The cross-impact bridge query in cross-impact.ts joins local impact
16
+ * results to bridge contracts via `WHERE provider.symbolUid IN $localUids`.
17
+ * If the local impact engine produces a deterministic identifier for the
18
+ * unresolved target, it must agree with the value the bridge stored. A
19
+ * synthetic uid keyed off (repo, contractId) is the only thing both sides
20
+ * can derive without knowing about each other.
21
+ *
22
+ * Format: `manifest::<repo>::<contractId>`. Stable across syncs, scoped to a
23
+ * single repo within a group, and never collides with real indexer uids
24
+ * (which never start with `manifest::`).
25
+ */
26
+ export declare function manifestSymbolUid(repo: string, contractId: string): string;
27
+ export declare class ManifestExtractor {
28
+ extractFromManifest(links: GroupManifestLink[], dbExecutors?: Map<string, CypherExecutor>): Promise<ManifestExtractResult>;
29
+ private resolveSymbol;
30
+ /**
31
+ * Build a canonical contract id for a manifest link.
32
+ *
33
+ * HTTP is the only type with two valid forms:
34
+ * - Explicit method: `"GET::/api/orders"` → `"http::GET::/api/orders"`
35
+ * (matches exactly against `HttpRouteExtractor` provider/consumer
36
+ * contracts, which are also keyed by `http::<METHOD>::<path>`).
37
+ * - Method-agnostic: `"/api/orders"` → `"http::*::/api/orders"`
38
+ * — the `*` is a wildcard and is intended to match any concrete
39
+ * HTTP method on that path. Wildcard-aware matching is the
40
+ * responsibility of the sync / cross-impact layer (see #793);
41
+ * downstream code should treat `http::*::<path>` as matching
42
+ * every `http::<METHOD>::<path>` for the same path.
43
+ *
44
+ * Recommend the explicit-method form in group.yaml whenever the
45
+ * manifest author knows the method — it round-trips through exact
46
+ * equality matching without requiring wildcard logic downstream.
47
+ *
48
+ * NOTE on exhaustiveness: the switch covers every current
49
+ * `ContractType` variant and falls through to a `never` assertion so
50
+ * TypeScript fails the build if a new variant is added without a
51
+ * corresponding case.
52
+ */
53
+ private buildContractId;
54
+ }
@@ -0,0 +1,292 @@
1
+ /**
2
+ * Canonicalize an HTTP path for matching against Route.name in the graph.
3
+ * Mirrors core/ingestion/pipeline.ts ensureSlash semantics:
4
+ * - Ensures a leading slash.
5
+ * - Strips trailing slashes (except the root "/").
6
+ * - Normalizes consecutive slashes.
7
+ * - Does NOT lowercase (route matching is case-sensitive).
8
+ */
9
+ function normalizeRoutePath(raw) {
10
+ const trimmed = raw.trim();
11
+ if (!trimmed)
12
+ return '/';
13
+ const withLeading = trimmed.startsWith('/') ? trimmed : `/${trimmed}`;
14
+ const collapsed = withLeading.replace(/\/+/g, '/');
15
+ if (collapsed === '/')
16
+ return '/';
17
+ return collapsed.replace(/\/+$/, '');
18
+ }
19
+ /**
20
+ * Split a manifest HTTP contract into its optional `METHOD::` prefix and
21
+ * its path portion.
22
+ *
23
+ * `buildContractId` recommends the explicit-method form `GET::/api/orders`
24
+ * in group.yaml; if we hand that raw string to `normalizeRoutePath` we get
25
+ * `/GET::/api/orders`, which can never match `Route.name = "/api/orders"`
26
+ * in the graph. This helper extracts the path portion so the Cypher
27
+ * lookup uses the canonical route name.
28
+ *
29
+ * The method prefix regex mirrors `buildContractId` (line ~251) for
30
+ * symmetry: case-insensitive `[A-Za-z]+` followed by `::`. The captured
31
+ * method is upper-cased for downstream use; method-constrained matching
32
+ * against `HANDLES_ROUTE` is a future enhancement (not yet wired).
33
+ *
34
+ * Edge cases:
35
+ * - `"::/api/orders"` — empty method portion, no alpha prefix match, so
36
+ * the whole string is treated as a bare path (matches buildContractId
37
+ * which also requires `[A-Za-z]+`).
38
+ * - `"GET::"` — method with empty path, returns `{ method: 'GET', path: '' }`;
39
+ * `normalizeRoutePath('')` resolves to `/` for caller.
40
+ */
41
+ function parseHttpContract(raw) {
42
+ const match = raw.match(/^([A-Za-z]+)::/);
43
+ if (!match)
44
+ return { method: null, path: raw };
45
+ return { method: match[1].toUpperCase(), path: raw.slice(match[0].length) };
46
+ }
47
+ /**
48
+ * Stable synthetic symbolUid for a manifest-declared contract whose target
49
+ * symbol could not be resolved against the per-repo graph (resolveSymbol
50
+ * returned null). Two reasons we don't leave the uid empty:
51
+ *
52
+ * 1. The bridge stores Contract nodes keyed in part by symbolUid; an empty
53
+ * uid means downstream Cypher queries that anchor on `provider.symbolUid`
54
+ * can't tell two different unresolved manifest contracts apart.
55
+ * 2. The cross-impact bridge query in cross-impact.ts joins local impact
56
+ * results to bridge contracts via `WHERE provider.symbolUid IN $localUids`.
57
+ * If the local impact engine produces a deterministic identifier for the
58
+ * unresolved target, it must agree with the value the bridge stored. A
59
+ * synthetic uid keyed off (repo, contractId) is the only thing both sides
60
+ * can derive without knowing about each other.
61
+ *
62
+ * Format: `manifest::<repo>::<contractId>`. Stable across syncs, scoped to a
63
+ * single repo within a group, and never collides with real indexer uids
64
+ * (which never start with `manifest::`).
65
+ */
66
+ export function manifestSymbolUid(repo, contractId) {
67
+ return `manifest::${repo}::${contractId}`;
68
+ }
69
+ export class ManifestExtractor {
70
+ async extractFromManifest(links, dbExecutors) {
71
+ const resolveCache = new Map();
72
+ const resolveOnce = (repo, link) => {
73
+ const key = `${repo}\u0000${link.type}\u0000${link.contract}`;
74
+ let pending = resolveCache.get(key);
75
+ if (!pending) {
76
+ pending = this.resolveSymbol(repo, link, dbExecutors);
77
+ resolveCache.set(key, pending);
78
+ }
79
+ return pending;
80
+ };
81
+ const perLink = await Promise.all(links.map(async (link) => {
82
+ const contractId = this.buildContractId(link.type, link.contract);
83
+ const providerRepo = link.role === 'provider' ? link.from : link.to;
84
+ const consumerRepo = link.role === 'provider' ? link.to : link.from;
85
+ const [providerSymbol, consumerSymbol] = await Promise.all([
86
+ resolveOnce(providerRepo, link),
87
+ resolveOnce(consumerRepo, link),
88
+ ]);
89
+ return { link, contractId, providerRepo, consumerRepo, providerSymbol, consumerSymbol };
90
+ }));
91
+ const contracts = [];
92
+ const crossLinks = [];
93
+ for (const { link, contractId, providerRepo, consumerRepo, providerSymbol, consumerSymbol, } of perLink) {
94
+ const providerRef = providerSymbol || { filePath: '', name: link.contract };
95
+ const consumerRef = consumerSymbol || { filePath: '', name: link.contract };
96
+ // When the resolver finds a real graph symbol we keep its uid, otherwise
97
+ // fall back to the deterministic synthetic uid (see manifestSymbolUid).
98
+ const providerUid = providerSymbol?.uid || manifestSymbolUid(providerRepo, contractId);
99
+ const consumerUid = consumerSymbol?.uid || manifestSymbolUid(consumerRepo, contractId);
100
+ contracts.push({
101
+ contractId,
102
+ type: link.type,
103
+ role: 'provider',
104
+ symbolUid: providerUid,
105
+ symbolRef: providerRef,
106
+ symbolName: link.contract,
107
+ confidence: 1.0,
108
+ meta: { source: 'manifest' },
109
+ repo: providerRepo,
110
+ });
111
+ contracts.push({
112
+ contractId,
113
+ type: link.type,
114
+ role: 'consumer',
115
+ symbolUid: consumerUid,
116
+ symbolRef: consumerRef,
117
+ symbolName: link.contract,
118
+ confidence: 1.0,
119
+ meta: { source: 'manifest' },
120
+ repo: consumerRepo,
121
+ });
122
+ crossLinks.push({
123
+ from: { repo: consumerRepo, symbolUid: consumerUid, symbolRef: consumerRef },
124
+ to: { repo: providerRepo, symbolUid: providerUid, symbolRef: providerRef },
125
+ type: link.type,
126
+ contractId,
127
+ matchType: 'manifest',
128
+ confidence: 1.0,
129
+ });
130
+ }
131
+ return { contracts, crossLinks };
132
+ }
133
+ async resolveSymbol(repoPathKey, link, dbExecutors) {
134
+ const executor = dbExecutors?.get(repoPathKey);
135
+ if (!executor)
136
+ return null;
137
+ // NOTE: All lookups use EXACT equality on the relevant name field and
138
+ // deterministic ORDER BY before LIMIT 1. Previous versions used CONTAINS
139
+ // for fuzzy matching (plus an unconditional ".proto" fallback for gRPC)
140
+ // which produced silent false positives: e.g. manifest "/orders" would
141
+ // match "/suborders", and a gRPC manifest entry in a repo with any
142
+ // .proto file would attach to a random proto symbol.
143
+ //
144
+ // If resolveSymbol returns null, the extractor falls back to a
145
+ // deterministic synthetic uid via `manifestSymbolUid(repo, contractId)`
146
+ // (see the function's docstring for why synthetic rather than empty).
147
+ // Cross-impact still works: the bridge query joins on the synthetic
148
+ // uid, and the local impact engine derives the same uid for the
149
+ // unresolved symbol — name-based hints are the additional safety net.
150
+ try {
151
+ let rows;
152
+ if (link.type === 'http') {
153
+ // Route.name is the canonicalized URL path (see
154
+ // core/ingestion/pipeline.ts ensureSlash + generateId('Route', ...)).
155
+ // Normalize the manifest contract the same way so a user-written
156
+ // "/api/orders" matches "api/orders" in the graph.
157
+ //
158
+ // The contract may also use the explicit-method form "GET::/api/orders"
159
+ // recommended by buildContractId. Strip the METHOD:: prefix before
160
+ // normalizing — otherwise `normalizeRoutePath('GET::/api/orders')`
161
+ // returns `/GET::/api/orders` and never matches Route.name. The
162
+ // captured method is not yet used to constrain the Cypher query
163
+ // (method-aware HANDLES_ROUTE matching is a future enhancement).
164
+ const parsed = parseHttpContract(link.contract);
165
+ const normalized = normalizeRoutePath(parsed.path);
166
+ rows = await executor(`MATCH (handler)-[r:CodeRelation {type: 'HANDLES_ROUTE'}]->(route:Route)
167
+ WHERE route.name = $normalized
168
+ RETURN handler.id AS uid, handler.name AS name, handler.filePath AS filePath
169
+ ORDER BY handler.filePath ASC
170
+ LIMIT 1`, { normalized });
171
+ }
172
+ else if (link.type === 'topic') {
173
+ // Topic names aren't a first-class NodeLabel in the graph —
174
+ // topics are referenced by function/method symbols (Kafka
175
+ // listeners, publishers). Restrict to symbol-like labels to
176
+ // avoid cross-matching Files/Variables/Imports that happen to
177
+ // share the topic name.
178
+ rows = await executor(`MATCH (n:Function|Method|Class|Interface) WHERE n.name = $contract
179
+ RETURN n.id AS uid, n.name AS name, n.filePath AS filePath
180
+ ORDER BY n.filePath ASC
181
+ LIMIT 1`, { contract: link.contract });
182
+ }
183
+ else if (link.type === 'grpc') {
184
+ // Contract is "Service/Method" or just "Service" (or package.Service
185
+ // variants). Prefer matching by method name when present, otherwise
186
+ // by service name. NO .proto path fallback — that's guaranteed to
187
+ // return a wrong symbol in any repo with more than one proto file.
188
+ // Label filters scope lookups: methods → Function|Method, services
189
+ // → Class|Interface (no label match = no silent wrong hits on
190
+ // File/Variable nodes that happen to share the name).
191
+ const parts = link.contract.split('/');
192
+ const serviceName = parts[0]?.trim() ?? '';
193
+ const methodName = parts[1]?.trim() ?? '';
194
+ if (methodName) {
195
+ rows = await executor(`MATCH (n:Function|Method) WHERE n.name = $methodName
196
+ RETURN n.id AS uid, n.name AS name, n.filePath AS filePath
197
+ ORDER BY n.filePath ASC
198
+ LIMIT 1`, { methodName });
199
+ }
200
+ else if (serviceName) {
201
+ rows = await executor(`MATCH (n:Class|Interface) WHERE n.name = $serviceName
202
+ RETURN n.id AS uid, n.name AS name, n.filePath AS filePath
203
+ ORDER BY n.filePath ASC
204
+ LIMIT 1`, { serviceName });
205
+ }
206
+ else {
207
+ rows = [];
208
+ }
209
+ }
210
+ else if (link.type === 'lib') {
211
+ // Only exact match on the symbol's name. Previous fallback to
212
+ // CONTAINS on n.filePath would promote "react" to "react-native"
213
+ // or "@types/react" — silent wrong attribution. Restrict to
214
+ // package-level labels so we don't return arbitrary symbols
215
+ // named after a library.
216
+ rows = await executor(`MATCH (n:Package|Module) WHERE n.name = $contract
217
+ RETURN n.id AS uid, n.name AS name, n.filePath AS filePath
218
+ ORDER BY n.filePath ASC
219
+ LIMIT 1`, { contract: link.contract });
220
+ }
221
+ else {
222
+ return null;
223
+ }
224
+ if (rows.length > 0) {
225
+ return {
226
+ filePath: rows[0].filePath,
227
+ name: rows[0].name,
228
+ uid: String(rows[0].uid ?? ''),
229
+ };
230
+ }
231
+ }
232
+ catch (err) {
233
+ // Log but don't throw: a broken graph query in one repo shouldn't
234
+ // fail the whole manifest extraction. Unresolved contracts still
235
+ // get a synthetic symbolUid below, so cross-impact can proceed.
236
+ const message = err instanceof Error ? err.message : String(err);
237
+ console.warn(`[manifest-extractor] resolveSymbol failed for ${link.type}:${link.contract} ` +
238
+ `in ${repoPathKey}: ${message}`);
239
+ }
240
+ return null;
241
+ }
242
+ /**
243
+ * Build a canonical contract id for a manifest link.
244
+ *
245
+ * HTTP is the only type with two valid forms:
246
+ * - Explicit method: `"GET::/api/orders"` → `"http::GET::/api/orders"`
247
+ * (matches exactly against `HttpRouteExtractor` provider/consumer
248
+ * contracts, which are also keyed by `http::<METHOD>::<path>`).
249
+ * - Method-agnostic: `"/api/orders"` → `"http::*::/api/orders"`
250
+ * — the `*` is a wildcard and is intended to match any concrete
251
+ * HTTP method on that path. Wildcard-aware matching is the
252
+ * responsibility of the sync / cross-impact layer (see #793);
253
+ * downstream code should treat `http::*::<path>` as matching
254
+ * every `http::<METHOD>::<path>` for the same path.
255
+ *
256
+ * Recommend the explicit-method form in group.yaml whenever the
257
+ * manifest author knows the method — it round-trips through exact
258
+ * equality matching without requiring wildcard logic downstream.
259
+ *
260
+ * NOTE on exhaustiveness: the switch covers every current
261
+ * `ContractType` variant and falls through to a `never` assertion so
262
+ * TypeScript fails the build if a new variant is added without a
263
+ * corresponding case.
264
+ */
265
+ buildContractId(type, contract) {
266
+ switch (type) {
267
+ case 'http': {
268
+ // Canonicalize method casing and path separators so logically
269
+ // equivalent inputs (`get::/api/orders` vs `GET::/api/orders`,
270
+ // or trailing-slash variants) produce the same contractId and
271
+ // matching `manifestSymbolUid` fallback. Without this, raw
272
+ // user casing leaks into cross-impact join keys and fragments
273
+ // matches across repos.
274
+ const { method, path: rawPath } = parseHttpContract(contract);
275
+ const normalizedPath = normalizeRoutePath(rawPath);
276
+ return method ? `http::${method}::${normalizedPath}` : `http::*::${normalizedPath}`;
277
+ }
278
+ case 'grpc':
279
+ return `grpc::${contract}`;
280
+ case 'topic':
281
+ return `topic::${contract}`;
282
+ case 'lib':
283
+ return `lib::${contract}`;
284
+ case 'custom':
285
+ return `custom::${contract}`;
286
+ default: {
287
+ const _exhaustive = type;
288
+ throw new Error(`Unhandled ContractType: ${String(_exhaustive)}`);
289
+ }
290
+ }
291
+ }
292
+ }
@@ -0,0 +1,8 @@
1
+ import type { ContractExtractor, CypherExecutor } from '../contract-extractor.js';
2
+ import type { ExtractedContract, RepoHandle } from '../types.js';
3
+ export declare class TopicExtractor implements ContractExtractor {
4
+ type: "topic";
5
+ canExtract(_repo: RepoHandle): Promise<boolean>;
6
+ extract(_dbExecutor: CypherExecutor | null, repoPath: string, _repo: RepoHandle): Promise<ExtractedContract[]>;
7
+ private dedupe;
8
+ }
@@ -0,0 +1,97 @@
1
+ import { glob } from 'glob';
2
+ import Parser from 'tree-sitter';
3
+ import { readSafe } from './fs-utils.js';
4
+ import { scanFile, unquoteLiteral } from './tree-sitter-scanner.js';
5
+ import { TOPIC_SCAN_GLOB, getProviderForFile, } from './topic-patterns/index.js';
6
+ /**
7
+ * Language-agnostic orchestrator for topic (message broker) contract
8
+ * extraction. All grammar-specific knowledge lives in `topic-patterns/*`
9
+ * — this file must not import any tree-sitter grammar directly.
10
+ *
11
+ * Flow per file:
12
+ * 1. `getProviderForFile(rel)` → compiled plugin (or `undefined` if the
13
+ * file's extension isn't registered, in which case we skip it).
14
+ * 2. `scanFile(parser, provider, content)` → list of `{meta, valueText}`
15
+ * pairs, one per matched literal.
16
+ * 3. `unquoteLiteral(valueText)` → the raw topic string.
17
+ * 4. `makeContract(topic, meta, relPath)` → `ExtractedContract`.
18
+ *
19
+ * Adding a new language is a one-file edit in `topic-patterns/index.ts`.
20
+ */
21
+ function makeContract(topicName, meta, filePath) {
22
+ return {
23
+ contractId: `topic::${topicName}`,
24
+ type: 'topic',
25
+ role: meta.role,
26
+ symbolUid: '',
27
+ symbolRef: { filePath: filePath.replace(/\\/g, '/'), name: meta.symbolName },
28
+ symbolName: meta.symbolName,
29
+ confidence: meta.confidence,
30
+ meta: {
31
+ broker: meta.broker,
32
+ topicName,
33
+ extractionStrategy: 'tree_sitter',
34
+ },
35
+ };
36
+ }
37
+ export class TopicExtractor {
38
+ type = 'topic';
39
+ async canExtract(_repo) {
40
+ return true;
41
+ }
42
+ async extract(_dbExecutor, repoPath, _repo) {
43
+ const files = await glob(TOPIC_SCAN_GLOB, {
44
+ cwd: repoPath,
45
+ ignore: [
46
+ '**/node_modules/**',
47
+ '**/.git/**',
48
+ '**/vendor/**',
49
+ '**/dist/**',
50
+ '**/build/**',
51
+ // Language-level test file conventions. Go test files
52
+ // `*_test.go` live next to source; other languages either use
53
+ // separate test directories (Python's `tests/`, Java's
54
+ // `src/test/`) or are already covered by the dist/build ignores.
55
+ // Pushed to the glob level so the orchestrator stays
56
+ // language-agnostic.
57
+ '**/*_test.go',
58
+ ],
59
+ nodir: true,
60
+ });
61
+ // One parser reused across files; the scanner calls `setLanguage` per
62
+ // file based on which plugin the registry returns.
63
+ const parser = new Parser();
64
+ const out = [];
65
+ for (const rel of files) {
66
+ const provider = getProviderForFile(rel);
67
+ if (!provider)
68
+ continue;
69
+ const content = readSafe(repoPath, rel);
70
+ if (!content)
71
+ continue;
72
+ const matches = scanFile(parser, provider, content);
73
+ for (const match of matches) {
74
+ const valueNode = match.captures.value;
75
+ if (!valueNode)
76
+ continue;
77
+ const topicName = unquoteLiteral(valueNode.text);
78
+ if (!topicName)
79
+ continue;
80
+ out.push(makeContract(topicName, match.meta, rel));
81
+ }
82
+ }
83
+ return this.dedupe(out);
84
+ }
85
+ dedupe(items) {
86
+ const seen = new Set();
87
+ const out = [];
88
+ for (const c of items) {
89
+ const k = `${c.contractId}|${c.role}|${c.symbolRef.filePath}`;
90
+ if (seen.has(k))
91
+ continue;
92
+ seen.add(k);
93
+ out.push(c);
94
+ }
95
+ return out;
96
+ }
97
+ }
@@ -0,0 +1,2 @@
1
+ import type { TopicMeta } from './types.js';
2
+ export declare const GO_TOPIC_PROVIDER: import("../tree-sitter-scanner.js").CompiledPatterns<TopicMeta>;
@@ -0,0 +1,120 @@
1
+ import Go from 'tree-sitter-go';
2
+ import { compilePatterns } from '../tree-sitter-scanner.js';
3
+ /**
4
+ * Go topic extraction patterns.
5
+ *
6
+ * Detects Sarama, segmentio/kafka-go and nats.go producer/consumer APIs:
7
+ * - `X.ConsumePartition("topic", ...)`
8
+ * - `sarama.ProducerMessage{Topic: "xxx"}`
9
+ * - `kafka.Writer{Topic: "xxx"}` / `kafka.WriterConfig{Topic: ...}`
10
+ * - `kafka.Reader{Topic: "xxx"}` / `kafka.ReaderConfig{Topic: ...}`
11
+ * - `nc.Subscribe("topic", ...)` / `js.Subscribe("topic", ...)`
12
+ * - `nc.Publish("topic", ...)` / `js.Publish("topic", ...)`
13
+ *
14
+ * Every query MUST bind `@value` to the topic literal node.
15
+ */
16
+ const GO_TOPIC_SPEC = {
17
+ name: 'go-topic',
18
+ language: Go,
19
+ patterns: [
20
+ {
21
+ meta: {
22
+ role: 'consumer',
23
+ broker: 'kafka',
24
+ confidence: 0.7,
25
+ symbolName: 'ConsumePartition',
26
+ },
27
+ query: `
28
+ (call_expression
29
+ function: (selector_expression
30
+ field: (field_identifier) @method (#eq? @method "ConsumePartition"))
31
+ arguments: (argument_list . (interpreted_string_literal) @value))
32
+ `,
33
+ },
34
+ {
35
+ meta: {
36
+ role: 'provider',
37
+ broker: 'kafka',
38
+ confidence: 0.75,
39
+ symbolName: 'sarama.ProducerMessage',
40
+ },
41
+ query: `
42
+ (composite_literal
43
+ type: (qualified_type
44
+ package: (package_identifier) @pkg (#eq? @pkg "sarama")
45
+ name: (type_identifier) @ty (#eq? @ty "ProducerMessage"))
46
+ body: (literal_value
47
+ (keyed_element
48
+ (literal_element (identifier) @field (#eq? @field "Topic"))
49
+ (literal_element (interpreted_string_literal) @value))))
50
+ `,
51
+ },
52
+ {
53
+ meta: {
54
+ role: 'provider',
55
+ broker: 'kafka',
56
+ confidence: 0.75,
57
+ symbolName: 'kafka.Writer',
58
+ },
59
+ query: `
60
+ (composite_literal
61
+ type: (qualified_type
62
+ package: (package_identifier) @pkg (#eq? @pkg "kafka")
63
+ name: (type_identifier) @ty (#match? @ty "^(Writer|WriterConfig)$"))
64
+ body: (literal_value
65
+ (keyed_element
66
+ (literal_element (identifier) @field (#eq? @field "Topic"))
67
+ (literal_element (interpreted_string_literal) @value))))
68
+ `,
69
+ },
70
+ {
71
+ meta: {
72
+ role: 'consumer',
73
+ broker: 'kafka',
74
+ confidence: 0.75,
75
+ symbolName: 'kafka.Reader',
76
+ },
77
+ query: `
78
+ (composite_literal
79
+ type: (qualified_type
80
+ package: (package_identifier) @pkg (#eq? @pkg "kafka")
81
+ name: (type_identifier) @ty (#match? @ty "^(Reader|ReaderConfig)$"))
82
+ body: (literal_value
83
+ (keyed_element
84
+ (literal_element (identifier) @field (#eq? @field "Topic"))
85
+ (literal_element (interpreted_string_literal) @value))))
86
+ `,
87
+ },
88
+ {
89
+ meta: {
90
+ role: 'consumer',
91
+ broker: 'nats',
92
+ confidence: 0.8,
93
+ symbolName: 'nc.Subscribe',
94
+ },
95
+ query: `
96
+ (call_expression
97
+ function: (selector_expression
98
+ operand: (identifier) @obj (#match? @obj "^(nc|js)$")
99
+ field: (field_identifier) @method (#match? @method "^[Ss]ubscribe$"))
100
+ arguments: (argument_list . (interpreted_string_literal) @value))
101
+ `,
102
+ },
103
+ {
104
+ meta: {
105
+ role: 'provider',
106
+ broker: 'nats',
107
+ confidence: 0.8,
108
+ symbolName: 'nc.Publish',
109
+ },
110
+ query: `
111
+ (call_expression
112
+ function: (selector_expression
113
+ operand: (identifier) @obj (#match? @obj "^(nc|js)$")
114
+ field: (field_identifier) @method (#match? @method "^[Pp]ublish$"))
115
+ arguments: (argument_list . (interpreted_string_literal) @value))
116
+ `,
117
+ },
118
+ ],
119
+ };
120
+ export const GO_TOPIC_PROVIDER = compilePatterns(GO_TOPIC_SPEC);
@@ -0,0 +1,14 @@
1
+ import type { CompiledPatterns } from '../tree-sitter-scanner.js';
2
+ import type { TopicMeta } from './types.js';
3
+ export type { TopicMeta, Broker } from './types.js';
4
+ /**
5
+ * Glob pattern for files worth scanning. Kept here so adding a new
6
+ * language to the registry also widens the glob automatically via a
7
+ * single edit.
8
+ */
9
+ export declare const TOPIC_SCAN_GLOB = "**/*.{ts,tsx,js,jsx,java,go,py}";
10
+ /**
11
+ * Return the compiled provider registered for the given file's
12
+ * extension, or `undefined` if the extension is not registered.
13
+ */
14
+ export declare function getProviderForFile(rel: string): CompiledPatterns<TopicMeta> | undefined;
@@ -0,0 +1,38 @@
1
+ import * as path from 'node:path';
2
+ import { JAVA_TOPIC_PROVIDER } from './java.js';
3
+ import { GO_TOPIC_PROVIDER } from './go.js';
4
+ import { PYTHON_TOPIC_PROVIDER } from './python.js';
5
+ import { JAVASCRIPT_TOPIC_PROVIDER, TYPESCRIPT_TOPIC_PROVIDER, TSX_TOPIC_PROVIDER, } from './node.js';
6
+ /**
7
+ * File-extension → compiled-plugin registry for topic extraction. The
8
+ * top-level orchestrator (`topic-extractor.ts`) looks up the plugin for
9
+ * each file it visits and delegates the scanning to `tree-sitter-scanner`.
10
+ *
11
+ * Keys are lowercase extensions including the leading dot. To add a new
12
+ * language, drop a `topic-patterns/<lang>.ts` that exports a compiled
13
+ * provider, import it here and register the extension(s). No edits to
14
+ * `topic-extractor.ts` are required.
15
+ */
16
+ const REGISTRY = {
17
+ '.java': JAVA_TOPIC_PROVIDER,
18
+ '.go': GO_TOPIC_PROVIDER,
19
+ '.py': PYTHON_TOPIC_PROVIDER,
20
+ '.js': JAVASCRIPT_TOPIC_PROVIDER,
21
+ '.jsx': JAVASCRIPT_TOPIC_PROVIDER,
22
+ '.ts': TYPESCRIPT_TOPIC_PROVIDER,
23
+ '.tsx': TSX_TOPIC_PROVIDER,
24
+ };
25
+ /**
26
+ * Glob pattern for files worth scanning. Kept here so adding a new
27
+ * language to the registry also widens the glob automatically via a
28
+ * single edit.
29
+ */
30
+ export const TOPIC_SCAN_GLOB = '**/*.{ts,tsx,js,jsx,java,go,py}';
31
+ /**
32
+ * Return the compiled provider registered for the given file's
33
+ * extension, or `undefined` if the extension is not registered.
34
+ */
35
+ export function getProviderForFile(rel) {
36
+ const ext = path.extname(rel).toLowerCase();
37
+ return REGISTRY[ext];
38
+ }
@@ -0,0 +1,2 @@
1
+ import type { TopicMeta } from './types.js';
2
+ export declare const JAVA_TOPIC_PROVIDER: import("../tree-sitter-scanner.js").CompiledPatterns<TopicMeta>;