gitnexus 1.6.6-rc.99 → 1.6.6

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 (541) hide show
  1. package/README.md +122 -68
  2. package/dist/_shared/graph/types.d.ts +17 -1
  3. package/dist/_shared/graph/types.d.ts.map +1 -1
  4. package/dist/_shared/index.d.ts +3 -5
  5. package/dist/_shared/index.d.ts.map +1 -1
  6. package/dist/_shared/index.js +2 -4
  7. package/dist/_shared/index.js.map +1 -1
  8. package/dist/_shared/scope-resolution/module-scope-index.d.ts +1 -2
  9. package/dist/_shared/scope-resolution/module-scope-index.d.ts.map +1 -1
  10. package/dist/_shared/scope-resolution/module-scope-index.js +1 -2
  11. package/dist/_shared/scope-resolution/module-scope-index.js.map +1 -1
  12. package/dist/_shared/scope-resolution/parsed-file.d.ts +24 -0
  13. package/dist/_shared/scope-resolution/parsed-file.d.ts.map +1 -1
  14. package/dist/_shared/scope-resolution/reference-site.d.ts +13 -1
  15. package/dist/_shared/scope-resolution/reference-site.d.ts.map +1 -1
  16. package/dist/_shared/scope-resolution/registries/context.d.ts +1 -0
  17. package/dist/_shared/scope-resolution/registries/context.d.ts.map +1 -1
  18. package/dist/_shared/scope-resolution/registries/context.js +6 -0
  19. package/dist/_shared/scope-resolution/registries/context.js.map +1 -1
  20. package/dist/_shared/scope-resolution/registries/evidence.d.ts +2 -3
  21. package/dist/_shared/scope-resolution/registries/evidence.d.ts.map +1 -1
  22. package/dist/_shared/scope-resolution/registries/evidence.js +2 -3
  23. package/dist/_shared/scope-resolution/registries/evidence.js.map +1 -1
  24. package/dist/_shared/scope-resolution/registries/macro-registry.d.ts +29 -0
  25. package/dist/_shared/scope-resolution/registries/macro-registry.d.ts.map +1 -0
  26. package/dist/_shared/scope-resolution/registries/macro-registry.js +32 -0
  27. package/dist/_shared/scope-resolution/registries/macro-registry.js.map +1 -0
  28. package/dist/_shared/scope-resolution/symbol-definition.d.ts +9 -0
  29. package/dist/_shared/scope-resolution/symbol-definition.d.ts.map +1 -1
  30. package/dist/_shared/scope-resolution/types.d.ts +1 -1
  31. package/dist/_shared/scope-resolution/types.d.ts.map +1 -1
  32. package/dist/cli/ai-context.d.ts +35 -1
  33. package/dist/cli/ai-context.js +111 -12
  34. package/dist/cli/analyze-config.d.ts +92 -0
  35. package/dist/cli/analyze-config.js +364 -0
  36. package/dist/cli/analyze.d.ts +17 -1
  37. package/dist/cli/analyze.js +224 -71
  38. package/dist/cli/cli-message.d.ts +1 -1
  39. package/dist/cli/doctor.d.ts +18 -0
  40. package/dist/cli/doctor.js +32 -0
  41. package/dist/cli/i18n/en.d.ts +2 -2
  42. package/dist/cli/i18n/en.js +2 -2
  43. package/dist/cli/i18n/resources.d.ts +2 -2
  44. package/dist/cli/i18n/zh-CN.js +2 -2
  45. package/dist/cli/index.js +4 -2
  46. package/dist/cli/resolve-invocation.d.ts +21 -0
  47. package/dist/cli/resolve-invocation.js +68 -0
  48. package/dist/cli/setup.d.ts +33 -0
  49. package/dist/cli/setup.js +96 -35
  50. package/dist/cli/skill-gen.js +2 -2
  51. package/dist/cli/wiki.js +20 -4
  52. package/dist/core/embeddings/embedder.d.ts +1 -1
  53. package/dist/core/embeddings/embedder.js +14 -1
  54. package/dist/core/embeddings/runtime-support.d.ts +41 -0
  55. package/dist/core/embeddings/runtime-support.js +65 -0
  56. package/dist/core/group/extractors/grpc-patterns/proto.js +2 -1
  57. package/dist/core/group/extractors/http-patterns/java.js +15 -1
  58. package/dist/core/ingestion/call-processor.d.ts +57 -227
  59. package/dist/core/ingestion/call-processor.js +172 -2595
  60. package/dist/core/ingestion/call-routing.d.ts +6 -5
  61. package/dist/core/ingestion/call-routing.js +6 -6
  62. package/dist/core/ingestion/call-types.d.ts +0 -75
  63. package/dist/core/ingestion/class-extractors/configs/c-cpp.js +26 -1
  64. package/dist/core/ingestion/class-extractors/configs/ruby.js +3 -0
  65. package/dist/core/ingestion/class-extractors/generic.js +9 -11
  66. package/dist/core/ingestion/class-types.d.ts +23 -0
  67. package/dist/core/ingestion/cobol/cobol-preprocessor.d.ts +11 -0
  68. package/dist/core/ingestion/cobol/cobol-preprocessor.js +227 -73
  69. package/dist/core/ingestion/cobol-processor.d.ts +1 -0
  70. package/dist/core/ingestion/cobol-processor.js +51 -2
  71. package/dist/core/ingestion/emit-references.js +8 -2
  72. package/dist/core/ingestion/export-detection.d.ts +2 -1
  73. package/dist/core/ingestion/export-detection.js +2 -6
  74. package/dist/core/ingestion/field-extractors/configs/dart.d.ts +0 -6
  75. package/dist/core/ingestion/field-extractors/configs/dart.js +62 -44
  76. package/dist/core/ingestion/field-extractors/configs/go.d.ts +0 -9
  77. package/dist/core/ingestion/field-extractors/configs/go.js +40 -1
  78. package/dist/core/ingestion/field-extractors/configs/jvm.js +43 -4
  79. package/dist/core/ingestion/field-extractors/configs/php.js +1 -2
  80. package/dist/core/ingestion/field-extractors/configs/swift.d.ts +12 -1
  81. package/dist/core/ingestion/field-extractors/configs/swift.js +31 -6
  82. package/dist/core/ingestion/field-extractors/generic.d.ts +6 -0
  83. package/dist/core/ingestion/field-extractors/generic.js +5 -4
  84. package/dist/core/ingestion/field-extractors/typescript.js +0 -29
  85. package/dist/core/ingestion/filesystem-walker.d.ts +0 -9
  86. package/dist/core/ingestion/filesystem-walker.js +0 -11
  87. package/dist/core/ingestion/finalize-orchestrator.js +14 -2
  88. package/dist/core/ingestion/import-resolvers/configs/swift.d.ts +21 -0
  89. package/dist/core/ingestion/import-resolvers/configs/swift.js +72 -11
  90. package/dist/core/ingestion/import-resolvers/python.d.ts +1 -1
  91. package/dist/core/ingestion/import-resolvers/standard.d.ts +2 -2
  92. package/dist/core/ingestion/import-resolvers/standard.js +6 -5
  93. package/dist/core/ingestion/import-resolvers/utils.d.ts +2 -5
  94. package/dist/core/ingestion/import-resolvers/utils.js +1 -9
  95. package/dist/core/ingestion/language-provider.d.ts +39 -119
  96. package/dist/core/ingestion/language-provider.js +0 -2
  97. package/dist/core/ingestion/languages/c/capture-side-channel.d.ts +62 -0
  98. package/dist/core/ingestion/languages/c/capture-side-channel.js +65 -0
  99. package/dist/core/ingestion/languages/c/captures.js +41 -23
  100. package/dist/core/ingestion/languages/c/import-decomposer.d.ts +9 -0
  101. package/dist/core/ingestion/languages/c/import-decomposer.js +15 -0
  102. package/dist/core/ingestion/languages/c/import-target.js +52 -9
  103. package/dist/core/ingestion/languages/c/index.d.ts +2 -1
  104. package/dist/core/ingestion/languages/c/index.js +2 -1
  105. package/dist/core/ingestion/languages/c/query.js +15 -0
  106. package/dist/core/ingestion/languages/c/scope-resolver.js +47 -4
  107. package/dist/core/ingestion/languages/c/static-linkage.d.ts +8 -0
  108. package/dist/core/ingestion/languages/c/static-linkage.js +46 -1
  109. package/dist/core/ingestion/languages/c-cpp.js +16 -7
  110. package/dist/core/ingestion/languages/cobol/captures.js +25 -2
  111. package/dist/core/ingestion/languages/cpp/adl.d.ts +88 -4
  112. package/dist/core/ingestion/languages/cpp/adl.js +380 -160
  113. package/dist/core/ingestion/languages/cpp/arity-metadata.js +2 -8
  114. package/dist/core/ingestion/languages/cpp/capture-side-channel.d.ts +65 -0
  115. package/dist/core/ingestion/languages/cpp/capture-side-channel.js +78 -0
  116. package/dist/core/ingestion/languages/cpp/captures.js +162 -54
  117. package/dist/core/ingestion/languages/cpp/file-local-linkage.d.ts +18 -52
  118. package/dist/core/ingestion/languages/cpp/file-local-linkage.js +49 -1
  119. package/dist/core/ingestion/languages/cpp/import-decomposer.d.ts +7 -0
  120. package/dist/core/ingestion/languages/cpp/import-decomposer.js +12 -0
  121. package/dist/core/ingestion/languages/cpp/index.d.ts +1 -0
  122. package/dist/core/ingestion/languages/cpp/index.js +1 -0
  123. package/dist/core/ingestion/languages/cpp/inline-namespaces.d.ts +8 -0
  124. package/dist/core/ingestion/languages/cpp/inline-namespaces.js +21 -0
  125. package/dist/core/ingestion/languages/cpp/query.js +21 -0
  126. package/dist/core/ingestion/languages/cpp/range-bindings.js +20 -5
  127. package/dist/core/ingestion/languages/cpp/scope-resolver.js +52 -5
  128. package/dist/core/ingestion/languages/cpp/two-phase-lookup.d.ts +20 -0
  129. package/dist/core/ingestion/languages/cpp/two-phase-lookup.js +83 -3
  130. package/dist/core/ingestion/languages/csharp/captures.js +205 -41
  131. package/dist/core/ingestion/languages/csharp/index.d.ts +3 -4
  132. package/dist/core/ingestion/languages/csharp/index.js +3 -4
  133. package/dist/core/ingestion/languages/csharp/interpret.js +17 -3
  134. package/dist/core/ingestion/languages/csharp/namespace-siblings.d.ts +17 -7
  135. package/dist/core/ingestion/languages/csharp/namespace-siblings.js +129 -124
  136. package/dist/core/ingestion/languages/csharp/qualified-type-names.d.ts +14 -0
  137. package/dist/core/ingestion/languages/csharp/qualified-type-names.js +59 -0
  138. package/dist/core/ingestion/languages/csharp/query.js +13 -0
  139. package/dist/core/ingestion/languages/csharp/receiver-binding.js +10 -6
  140. package/dist/core/ingestion/languages/csharp/scope-resolver.js +8 -1
  141. package/dist/core/ingestion/languages/csharp.js +0 -5
  142. package/dist/core/ingestion/languages/dart/arity-metadata.d.ts +25 -0
  143. package/dist/core/ingestion/languages/dart/arity-metadata.js +35 -0
  144. package/dist/core/ingestion/languages/dart/arity.d.ts +19 -0
  145. package/dist/core/ingestion/languages/dart/arity.js +31 -0
  146. package/dist/core/ingestion/languages/dart/built-ins.d.ts +11 -0
  147. package/dist/core/ingestion/languages/dart/built-ins.js +34 -0
  148. package/dist/core/ingestion/languages/dart/cache-stats.d.ts +13 -0
  149. package/dist/core/ingestion/languages/dart/cache-stats.js +24 -0
  150. package/dist/core/ingestion/languages/dart/captures.d.ts +29 -0
  151. package/dist/core/ingestion/languages/dart/captures.js +445 -0
  152. package/dist/core/ingestion/languages/dart/expand-wildcards.d.ts +13 -0
  153. package/dist/core/ingestion/languages/dart/expand-wildcards.js +31 -0
  154. package/dist/core/ingestion/languages/dart/import-target.d.ts +15 -0
  155. package/dist/core/ingestion/languages/dart/import-target.js +65 -0
  156. package/dist/core/ingestion/languages/dart/index.d.ts +28 -0
  157. package/dist/core/ingestion/languages/dart/index.js +28 -0
  158. package/dist/core/ingestion/languages/dart/interpret.d.ts +24 -0
  159. package/dist/core/ingestion/languages/dart/interpret.js +95 -0
  160. package/dist/core/ingestion/languages/dart/merge-bindings.d.ts +10 -0
  161. package/dist/core/ingestion/languages/dart/merge-bindings.js +39 -0
  162. package/dist/core/ingestion/languages/dart/query.d.ts +26 -0
  163. package/dist/core/ingestion/languages/dart/query.js +142 -0
  164. package/dist/core/ingestion/languages/dart/receiver-binding.d.ts +24 -0
  165. package/dist/core/ingestion/languages/dart/receiver-binding.js +87 -0
  166. package/dist/core/ingestion/languages/dart/scope-resolver.d.ts +29 -0
  167. package/dist/core/ingestion/languages/dart/scope-resolver.js +194 -0
  168. package/dist/core/ingestion/languages/dart/signature-bindings.d.ts +23 -0
  169. package/dist/core/ingestion/languages/dart/signature-bindings.js +51 -0
  170. package/dist/core/ingestion/languages/dart/simple-hooks.d.ts +20 -0
  171. package/dist/core/ingestion/languages/dart/simple-hooks.js +47 -0
  172. package/dist/core/ingestion/languages/dart.d.ts +0 -1
  173. package/dist/core/ingestion/languages/dart.js +15 -29
  174. package/dist/core/ingestion/languages/go/arity-metadata.d.ts +1 -0
  175. package/dist/core/ingestion/languages/go/arity-metadata.js +31 -1
  176. package/dist/core/ingestion/languages/go/captures.js +162 -3
  177. package/dist/core/ingestion/languages/go/interface-impls.js +476 -50
  178. package/dist/core/ingestion/languages/go/interpret.js +21 -11
  179. package/dist/core/ingestion/languages/go/method-owners.js +20 -8
  180. package/dist/core/ingestion/languages/go/query.js +15 -7
  181. package/dist/core/ingestion/languages/go/range-binding.js +24 -9
  182. package/dist/core/ingestion/languages/go/receiver-binding.js +1 -1
  183. package/dist/core/ingestion/languages/go/scope-resolver.js +2 -2
  184. package/dist/core/ingestion/languages/go/simple-hooks.js +10 -5
  185. package/dist/core/ingestion/languages/go/type-binding.d.ts +1 -0
  186. package/dist/core/ingestion/languages/go/type-binding.js +40 -2
  187. package/dist/core/ingestion/languages/go.d.ts +0 -1
  188. package/dist/core/ingestion/languages/go.js +0 -5
  189. package/dist/core/ingestion/languages/index.d.ts +0 -5
  190. package/dist/core/ingestion/languages/index.js +0 -3
  191. package/dist/core/ingestion/languages/java/captures.js +252 -23
  192. package/dist/core/ingestion/languages/java/interpret.js +12 -6
  193. package/dist/core/ingestion/languages/java/package-siblings.js +18 -5
  194. package/dist/core/ingestion/languages/java/query.js +16 -1
  195. package/dist/core/ingestion/languages/java/scope-resolver.d.ts +2 -8
  196. package/dist/core/ingestion/languages/java/scope-resolver.js +2 -8
  197. package/dist/core/ingestion/languages/java.js +0 -5
  198. package/dist/core/ingestion/languages/javascript/captures.js +185 -11
  199. package/dist/core/ingestion/languages/javascript/query.js +107 -1
  200. package/dist/core/ingestion/languages/kotlin/capture-side-channel.d.ts +57 -0
  201. package/dist/core/ingestion/languages/kotlin/capture-side-channel.js +60 -0
  202. package/dist/core/ingestion/languages/kotlin/captures.js +213 -22
  203. package/dist/core/ingestion/languages/kotlin/companion-scopes.d.ts +7 -0
  204. package/dist/core/ingestion/languages/kotlin/companion-scopes.js +10 -0
  205. package/dist/core/ingestion/languages/kotlin/index.d.ts +1 -0
  206. package/dist/core/ingestion/languages/kotlin/index.js +1 -0
  207. package/dist/core/ingestion/languages/kotlin/query.js +30 -0
  208. package/dist/core/ingestion/languages/kotlin/scope-resolver.d.ts +5 -7
  209. package/dist/core/ingestion/languages/kotlin/scope-resolver.js +22 -7
  210. package/dist/core/ingestion/languages/kotlin.js +8 -5
  211. package/dist/core/ingestion/languages/php/captures.js +135 -19
  212. package/dist/core/ingestion/languages/php/import-decomposer.js +21 -63
  213. package/dist/core/ingestion/languages/php/index.d.ts +3 -4
  214. package/dist/core/ingestion/languages/php/index.js +3 -4
  215. package/dist/core/ingestion/languages/php/query.js +5 -0
  216. package/dist/core/ingestion/languages/php/receiver-binding.js +8 -4
  217. package/dist/core/ingestion/languages/php.js +0 -4
  218. package/dist/core/ingestion/languages/python/captures.js +128 -13
  219. package/dist/core/ingestion/languages/python/depends-references.js +1 -1
  220. package/dist/core/ingestion/languages/python/import-target.d.ts +4 -5
  221. package/dist/core/ingestion/languages/python/import-target.js +108 -16
  222. package/dist/core/ingestion/languages/python/index-stats.d.ts +18 -0
  223. package/dist/core/ingestion/languages/python/index-stats.js +25 -0
  224. package/dist/core/ingestion/languages/python/index.d.ts +3 -4
  225. package/dist/core/ingestion/languages/python/index.js +3 -4
  226. package/dist/core/ingestion/languages/python/query.js +17 -0
  227. package/dist/core/ingestion/languages/python/scope-resolver.js +7 -6
  228. package/dist/core/ingestion/languages/python.d.ts +0 -2
  229. package/dist/core/ingestion/languages/python.js +0 -7
  230. package/dist/core/ingestion/languages/ruby/captures.js +174 -31
  231. package/dist/core/ingestion/languages/ruby/import-target.js +2 -1
  232. package/dist/core/ingestion/languages/ruby/interpret.js +2 -1
  233. package/dist/core/ingestion/languages/ruby/query.js +10 -0
  234. package/dist/core/ingestion/languages/ruby/scope-resolver.js +61 -11
  235. package/dist/core/ingestion/languages/ruby.js +4 -53
  236. package/dist/core/ingestion/languages/rust/captures.js +95 -13
  237. package/dist/core/ingestion/languages/rust/query.js +64 -1
  238. package/dist/core/ingestion/languages/rust/range-binding.js +40 -12
  239. package/dist/core/ingestion/languages/rust/receiver-binding.js +9 -0
  240. package/dist/core/ingestion/languages/rust/scope-resolver.js +75 -1
  241. package/dist/core/ingestion/languages/rust.d.ts +0 -2
  242. package/dist/core/ingestion/languages/rust.js +0 -6
  243. package/dist/core/ingestion/languages/swift/arity-metadata.d.ts +24 -0
  244. package/dist/core/ingestion/languages/swift/arity-metadata.js +41 -0
  245. package/dist/core/ingestion/languages/swift/arity.d.ts +29 -0
  246. package/dist/core/ingestion/languages/swift/arity.js +42 -0
  247. package/dist/core/ingestion/languages/swift/base-type.d.ts +20 -0
  248. package/dist/core/ingestion/languages/swift/base-type.js +27 -0
  249. package/dist/core/ingestion/languages/swift/cache-stats.d.ts +15 -0
  250. package/dist/core/ingestion/languages/swift/cache-stats.js +26 -0
  251. package/dist/core/ingestion/languages/swift/captures.d.ts +35 -0
  252. package/dist/core/ingestion/languages/swift/captures.js +495 -0
  253. package/dist/core/ingestion/languages/swift/implicit-imports.d.ts +34 -0
  254. package/dist/core/ingestion/languages/swift/implicit-imports.js +57 -0
  255. package/dist/core/ingestion/languages/swift/import-decomposer.d.ts +24 -0
  256. package/dist/core/ingestion/languages/swift/import-decomposer.js +84 -0
  257. package/dist/core/ingestion/languages/swift/import-target.d.ts +33 -0
  258. package/dist/core/ingestion/languages/swift/import-target.js +81 -0
  259. package/dist/core/ingestion/languages/swift/index.d.ts +37 -0
  260. package/dist/core/ingestion/languages/swift/index.js +37 -0
  261. package/dist/core/ingestion/languages/swift/interpret.d.ts +15 -0
  262. package/dist/core/ingestion/languages/swift/interpret.js +89 -0
  263. package/dist/core/ingestion/languages/swift/merge-bindings.d.ts +20 -0
  264. package/dist/core/ingestion/languages/swift/merge-bindings.js +48 -0
  265. package/dist/core/ingestion/languages/swift/query.d.ts +46 -0
  266. package/dist/core/ingestion/languages/swift/query.js +194 -0
  267. package/dist/core/ingestion/languages/swift/receiver-binding.d.ts +40 -0
  268. package/dist/core/ingestion/languages/swift/receiver-binding.js +161 -0
  269. package/dist/core/ingestion/languages/swift/scope-resolver.d.ts +50 -0
  270. package/dist/core/ingestion/languages/swift/scope-resolver.js +189 -0
  271. package/dist/core/ingestion/languages/swift/sibling-type-bindings.d.ts +34 -0
  272. package/dist/core/ingestion/languages/swift/sibling-type-bindings.js +65 -0
  273. package/dist/core/ingestion/languages/swift/signature-bindings.d.ts +25 -0
  274. package/dist/core/ingestion/languages/swift/signature-bindings.js +66 -0
  275. package/dist/core/ingestion/languages/swift/simple-hooks.d.ts +37 -0
  276. package/dist/core/ingestion/languages/swift/simple-hooks.js +60 -0
  277. package/dist/core/ingestion/languages/swift/target-grouping.d.ts +51 -0
  278. package/dist/core/ingestion/languages/swift/target-grouping.js +93 -0
  279. package/dist/core/ingestion/languages/swift/target-siblings.d.ts +30 -0
  280. package/dist/core/ingestion/languages/swift/target-siblings.js +71 -0
  281. package/dist/core/ingestion/languages/swift.d.ts +0 -5
  282. package/dist/core/ingestion/languages/swift.js +11 -87
  283. package/dist/core/ingestion/languages/typescript/array-callback.d.ts +3 -29
  284. package/dist/core/ingestion/languages/typescript/array-callback.js +4 -43
  285. package/dist/core/ingestion/languages/typescript/captures.js +147 -17
  286. package/dist/core/ingestion/languages/typescript/index.d.ts +3 -4
  287. package/dist/core/ingestion/languages/typescript/index.js +3 -4
  288. package/dist/core/ingestion/languages/typescript/query.d.ts +2 -3
  289. package/dist/core/ingestion/languages/typescript/query.js +125 -4
  290. package/dist/core/ingestion/languages/typescript/receiver-binding.js +0 -1
  291. package/dist/core/ingestion/languages/typescript.d.ts +2 -3
  292. package/dist/core/ingestion/languages/typescript.js +46 -23
  293. package/dist/core/ingestion/languages/vue/captures.d.ts +46 -0
  294. package/dist/core/ingestion/languages/vue/captures.js +67 -0
  295. package/dist/core/ingestion/languages/vue/import-target.d.ts +27 -0
  296. package/dist/core/ingestion/languages/vue/import-target.js +58 -0
  297. package/dist/core/ingestion/languages/vue/index.d.ts +49 -0
  298. package/dist/core/ingestion/languages/vue/index.js +49 -0
  299. package/dist/core/ingestion/languages/vue/scope-resolver.d.ts +55 -0
  300. package/dist/core/ingestion/languages/vue/scope-resolver.js +292 -0
  301. package/dist/core/ingestion/languages/vue.js +12 -4
  302. package/dist/core/ingestion/local-symbol-pruner.d.ts +11 -0
  303. package/dist/core/ingestion/local-symbol-pruner.js +63 -0
  304. package/dist/core/ingestion/method-extractors/configs/dart.js +14 -1
  305. package/dist/core/ingestion/method-extractors/configs/jvm.js +37 -20
  306. package/dist/core/ingestion/method-extractors/configs/php.js +0 -1
  307. package/dist/core/ingestion/method-extractors/configs/swift.js +11 -4
  308. package/dist/core/ingestion/method-types.d.ts +2 -2
  309. package/dist/core/ingestion/model/index.d.ts +0 -3
  310. package/dist/core/ingestion/model/index.js +0 -8
  311. package/dist/core/ingestion/model/resolve.d.ts +7 -43
  312. package/dist/core/ingestion/model/resolve.js +7 -226
  313. package/dist/core/ingestion/model/scope-resolution-indexes.d.ts +46 -1
  314. package/dist/core/ingestion/model/semantic-model.d.ts +4 -6
  315. package/dist/core/ingestion/model/semantic-model.js +1 -1
  316. package/dist/core/ingestion/model/symbol-table.d.ts +3 -4
  317. package/dist/core/ingestion/model/symbol-table.js +3 -4
  318. package/dist/core/ingestion/parsing-processor.d.ts +30 -24
  319. package/dist/core/ingestion/parsing-processor.js +76 -640
  320. package/dist/core/ingestion/pipeline-phases/communities.d.ts +1 -1
  321. package/dist/core/ingestion/pipeline-phases/communities.js +5 -2
  322. package/dist/core/ingestion/pipeline-phases/cross-file.d.ts +9 -8
  323. package/dist/core/ingestion/pipeline-phases/cross-file.js +16 -12
  324. package/dist/core/ingestion/pipeline-phases/index.d.ts +1 -0
  325. package/dist/core/ingestion/pipeline-phases/index.js +1 -0
  326. package/dist/core/ingestion/pipeline-phases/mro.d.ts +1 -1
  327. package/dist/core/ingestion/pipeline-phases/mro.js +2 -2
  328. package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +44 -22
  329. package/dist/core/ingestion/pipeline-phases/parse-impl.js +426 -565
  330. package/dist/core/ingestion/pipeline-phases/parse.d.ts +13 -33
  331. package/dist/core/ingestion/pipeline-phases/parse.js +2 -2
  332. package/dist/core/ingestion/pipeline-phases/processes.d.ts +1 -1
  333. package/dist/core/ingestion/pipeline-phases/processes.js +5 -3
  334. package/dist/core/ingestion/pipeline-phases/prune-local-symbols.d.ts +14 -0
  335. package/dist/core/ingestion/pipeline-phases/prune-local-symbols.js +26 -0
  336. package/dist/core/ingestion/pipeline.d.ts +27 -19
  337. package/dist/core/ingestion/pipeline.js +4 -2
  338. package/dist/core/ingestion/resolve-references.js +15 -3
  339. package/dist/core/ingestion/route-extractors/laravel.d.ts +10 -0
  340. package/dist/core/ingestion/route-extractors/laravel.js +88 -9
  341. package/dist/core/ingestion/scope-extractor-bridge.d.ts +2 -1
  342. package/dist/core/ingestion/scope-extractor-bridge.js +2 -2
  343. package/dist/core/ingestion/scope-extractor.js +13 -0
  344. package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +181 -15
  345. package/dist/core/ingestion/scope-resolution/contract/scope-resolver.js +21 -10
  346. package/dist/core/ingestion/scope-resolution/graph-bridge/edges.js +10 -2
  347. package/dist/core/ingestion/scope-resolution/graph-bridge/ids.d.ts +7 -1
  348. package/dist/core/ingestion/scope-resolution/graph-bridge/ids.js +58 -6
  349. package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +24 -5
  350. package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +68 -1
  351. package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +189 -29
  352. package/dist/core/ingestion/scope-resolution/passes/imported-return-types.js +21 -1
  353. package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +1 -1
  354. package/dist/core/ingestion/scope-resolution/pipeline/phase.d.ts +8 -11
  355. package/dist/core/ingestion/scope-resolution/pipeline/phase.js +171 -50
  356. package/dist/core/ingestion/scope-resolution/pipeline/registry.d.ts +3 -4
  357. package/dist/core/ingestion/scope-resolution/pipeline/registry.js +9 -4
  358. package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +28 -5
  359. package/dist/core/ingestion/scope-resolution/pipeline/run.js +191 -24
  360. package/dist/core/ingestion/scope-resolution/pipeline/validate-bindings-immutability.js +31 -0
  361. package/dist/core/ingestion/scope-resolution/scope/walkers.d.ts +72 -0
  362. package/dist/core/ingestion/scope-resolution/scope/walkers.js +440 -39
  363. package/dist/core/ingestion/scope-resolution/workspace-index.d.ts +18 -2
  364. package/dist/core/ingestion/scope-resolution/workspace-index.js +94 -7
  365. package/dist/core/ingestion/tree-sitter-queries.d.ts +14 -14
  366. package/dist/core/ingestion/tree-sitter-queries.js +380 -158
  367. package/dist/core/ingestion/ts-js-hoc-utils.d.ts +12 -0
  368. package/dist/core/ingestion/ts-js-hoc-utils.js +105 -0
  369. package/dist/core/ingestion/type-env.d.ts +2 -1
  370. package/dist/core/ingestion/type-env.js +6 -8
  371. package/dist/core/ingestion/type-extractors/c-cpp.js +8 -10
  372. package/dist/core/ingestion/type-extractors/csharp.js +18 -34
  373. package/dist/core/ingestion/type-extractors/go.js +2 -10
  374. package/dist/core/ingestion/type-extractors/jvm.js +6 -5
  375. package/dist/core/ingestion/type-extractors/php.js +1 -1
  376. package/dist/core/ingestion/type-extractors/python.js +1 -1
  377. package/dist/core/ingestion/type-extractors/ruby.js +2 -2
  378. package/dist/core/ingestion/type-extractors/rust.js +0 -16
  379. package/dist/core/ingestion/type-extractors/shared.d.ts +2 -2
  380. package/dist/core/ingestion/type-extractors/shared.js +25 -11
  381. package/dist/core/ingestion/type-extractors/swift.js +5 -5
  382. package/dist/core/ingestion/type-extractors/types.d.ts +1 -1
  383. package/dist/core/ingestion/type-extractors/typescript.js +1 -1
  384. package/dist/core/ingestion/utils/ast-helpers.d.ts +119 -1
  385. package/dist/core/ingestion/utils/ast-helpers.js +260 -13
  386. package/dist/core/ingestion/utils/callable-labels.d.ts +13 -0
  387. package/dist/core/ingestion/utils/callable-labels.js +14 -0
  388. package/dist/core/ingestion/utils/deferred-resolution-profile.d.ts +10 -0
  389. package/dist/core/ingestion/utils/deferred-resolution-profile.js +30 -0
  390. package/dist/core/ingestion/utils/heap-probe.d.ts +20 -0
  391. package/dist/core/ingestion/utils/heap-probe.js +39 -0
  392. package/dist/core/ingestion/utils/heritage-marker.d.ts +33 -0
  393. package/dist/core/ingestion/utils/heritage-marker.js +41 -0
  394. package/dist/core/ingestion/utils/qualified-name.d.ts +37 -0
  395. package/dist/core/ingestion/utils/qualified-name.js +67 -0
  396. package/dist/core/ingestion/variable-extractors/configs/c-cpp.js +49 -0
  397. package/dist/core/ingestion/variable-extractors/configs/dart.js +76 -62
  398. package/dist/core/ingestion/variable-extractors/configs/go.js +74 -7
  399. package/dist/core/ingestion/variable-extractors/configs/jvm.js +35 -8
  400. package/dist/core/ingestion/variable-extractors/generic.js +40 -12
  401. package/dist/core/ingestion/variable-types.d.ts +9 -0
  402. package/dist/core/ingestion/vue-sfc-extractor.d.ts +97 -7
  403. package/dist/core/ingestion/vue-sfc-extractor.js +433 -11
  404. package/dist/core/ingestion/workers/parse-worker.d.ts +0 -11
  405. package/dist/core/ingestion/workers/parse-worker.js +358 -187
  406. package/dist/core/ingestion/workers/worker-pool.d.ts +78 -9
  407. package/dist/core/ingestion/workers/worker-pool.js +346 -49
  408. package/dist/core/lbug/csv-generator.js +20 -2
  409. package/dist/core/lbug/lbug-adapter.js +29 -10
  410. package/dist/core/lbug/native-check.js +17 -5
  411. package/dist/core/lbug/pool-adapter.d.ts +0 -19
  412. package/dist/core/lbug/pool-adapter.js +40 -77
  413. package/dist/core/lbug/query-result-utils.d.ts +19 -0
  414. package/dist/core/lbug/query-result-utils.js +28 -0
  415. package/dist/core/run-analyze.d.ts +9 -2
  416. package/dist/core/run-analyze.js +24 -3
  417. package/dist/core/tree-sitter/parser-loader.d.ts +13 -0
  418. package/dist/core/tree-sitter/parser-loader.js +4 -0
  419. package/dist/core/tree-sitter/safe-parse.d.ts +70 -3
  420. package/dist/core/tree-sitter/safe-parse.js +214 -11
  421. package/dist/core/wiki/generator.js +13 -5
  422. package/dist/core/wiki/graph-queries.d.ts +3 -0
  423. package/dist/core/wiki/graph-queries.js +9 -1
  424. package/dist/core/wiki/llm-client.d.ts +1 -1
  425. package/dist/core/wiki/llm-client.js +7 -2
  426. package/dist/core/wiki/local-cli-client.d.ts +2 -1
  427. package/dist/core/wiki/local-cli-client.js +62 -4
  428. package/dist/mcp/compatible-stdio-transport.d.ts +3 -0
  429. package/dist/mcp/compatible-stdio-transport.js +22 -0
  430. package/dist/mcp/core/embedder.d.ts +1 -1
  431. package/dist/mcp/core/embedder.js +13 -1
  432. package/dist/mcp/local/local-backend.d.ts +37 -5
  433. package/dist/mcp/local/local-backend.js +227 -129
  434. package/dist/mcp/resources.js +3 -3
  435. package/dist/mcp/server.js +9 -1
  436. package/dist/storage/git.d.ts +11 -0
  437. package/dist/storage/git.js +30 -0
  438. package/dist/storage/parse-cache.d.ts +23 -1
  439. package/dist/storage/parse-cache.js +138 -32
  440. package/dist/storage/parsedfile-store.d.ts +142 -0
  441. package/dist/storage/parsedfile-store.js +367 -0
  442. package/dist/storage/repo-manager.d.ts +2 -1
  443. package/dist/storage/scope-index-store.d.ts +114 -0
  444. package/dist/storage/scope-index-store.js +236 -0
  445. package/dist/types/pipeline.d.ts +6 -3
  446. package/hooks/antigravity/gitnexus-antigravity-hook.cjs +2 -1
  447. package/hooks/claude/gitnexus-hook.cjs +2 -1
  448. package/hooks/claude/resolve-analyze-cmd.cjs +323 -0
  449. package/package.json +4 -5
  450. package/scripts/bench-scope-resolution.ts +1 -3
  451. package/scripts/cross-platform-tests.ts +4 -1
  452. package/skills/gitnexus-cli.md +8 -6
  453. package/skills/gitnexus-debugging.md +15 -15
  454. package/skills/gitnexus-exploring.md +11 -11
  455. package/skills/gitnexus-guide.md +1 -1
  456. package/skills/gitnexus-impact-analysis.md +10 -10
  457. package/skills/gitnexus-pr-review.md +19 -19
  458. package/skills/gitnexus-refactoring.md +25 -25
  459. package/web/assets/{agent-BRX-afm3.js → agent-EkX7webX.js} +156 -131
  460. package/web/assets/{architectureDiagram-UL44E2DR-B1oYB8-c.js → architectureDiagram-UL44E2DR-BoczH8cv.js} +1 -1
  461. package/web/assets/{chunk-LCXTWHL2-SPC6pgWI.js → chunk-LCXTWHL2-By5HB3b-.js} +1 -1
  462. package/web/assets/{chunk-RG4AUYOV-DZXr4Yv3.js → chunk-RG4AUYOV-BQE_DkpL.js} +1 -1
  463. package/web/assets/{classDiagram-KGZ6W3CR-BqpOj8L9.js → classDiagram-KGZ6W3CR-Dj_02GUH.js} +1 -1
  464. package/web/assets/{classDiagram-v2-72OJOZXJ-FmElywK2.js → classDiagram-v2-72OJOZXJ-D-NArMpf.js} +1 -1
  465. package/web/assets/{diagram-3NCE3AQN-BWtJXMDq.js → diagram-3NCE3AQN-VXtXDO95.js} +1 -1
  466. package/web/assets/{diagram-GF46GFSD-Hh-fChxU.js → diagram-GF46GFSD-B1qab2Ah.js} +1 -1
  467. package/web/assets/{diagram-QXG6HAR7-DYeQHxGU.js → diagram-QXG6HAR7-BSCHGzzT.js} +1 -1
  468. package/web/assets/{diagram-WEQXMOUZ-DYGU4T0y.js → diagram-WEQXMOUZ-DHtknmNT.js} +1 -1
  469. package/web/assets/{erDiagram-L5TCEMPS-bN3wlP2A.js → erDiagram-L5TCEMPS-Db-IYTmm.js} +1 -1
  470. package/web/assets/{flowDiagram-H6V6AXG4-YACVtF3-.js → flowDiagram-H6V6AXG4-BHDoyVoW.js} +1 -1
  471. package/web/assets/{index-BhnAdWTt.js → index-BR0IhgbR.js} +10 -10
  472. package/web/assets/{infoDiagram-3YFTVSEB-BWBzD28-.js → infoDiagram-3YFTVSEB-6h8wbWEe.js} +1 -1
  473. package/web/assets/{ishikawaDiagram-BNXS4ZKH-B8qYT-j9.js → ishikawaDiagram-BNXS4ZKH-Dx2OkPk1.js} +1 -1
  474. package/web/assets/{kanban-definition-75IXJCU3-BeoPr5Tl.js → kanban-definition-75IXJCU3-CIIEZfqV.js} +1 -1
  475. package/web/assets/{mindmap-definition-2TDM6QVE-CdLLN_so.js → mindmap-definition-2TDM6QVE-DUAqydRq.js} +1 -1
  476. package/web/assets/{pieDiagram-CU6KROY3-DEd2a_k_.js → pieDiagram-CU6KROY3-BntYuYZa.js} +1 -1
  477. package/web/assets/{requirementDiagram-JXO7QTGE-QNeTo5C_.js → requirementDiagram-JXO7QTGE-QCD6I29n.js} +1 -1
  478. package/web/assets/{sequenceDiagram-VS2MUI6T-BHC7q7yJ.js → sequenceDiagram-VS2MUI6T-DScFwLz2.js} +1 -1
  479. package/web/assets/{stateDiagram-7D4R322I-KONnc2Px.js → stateDiagram-7D4R322I-AkRAm6Hl.js} +1 -1
  480. package/web/assets/{stateDiagram-v2-36443NZ5-C2QfuMlu.js → stateDiagram-v2-36443NZ5-BCK1vigR.js} +1 -1
  481. package/web/assets/{timeline-definition-O6YCAMPW-D4t4NJx1.js → timeline-definition-O6YCAMPW-BvpIVXjX.js} +1 -1
  482. package/web/assets/{vennDiagram-MWXL3ELB-6bctC9Yg.js → vennDiagram-MWXL3ELB-BYGWk6dK.js} +1 -1
  483. package/web/assets/{wardleyDiagram-CUQ6CDDI-BPZYNTvC.js → wardleyDiagram-CUQ6CDDI-Dk1z7H2T.js} +1 -1
  484. package/web/assets/{xychartDiagram-N2JHSOCM-lBI9O6DW.js → xychartDiagram-N2JHSOCM-2N6NCSWN.js} +1 -1
  485. package/web/index.html +1 -1
  486. package/dist/_shared/scope-resolution/shadow/aggregate.d.ts +0 -63
  487. package/dist/_shared/scope-resolution/shadow/aggregate.d.ts.map +0 -1
  488. package/dist/_shared/scope-resolution/shadow/aggregate.js +0 -122
  489. package/dist/_shared/scope-resolution/shadow/aggregate.js.map +0 -1
  490. package/dist/_shared/scope-resolution/shadow/diff.d.ts +0 -59
  491. package/dist/_shared/scope-resolution/shadow/diff.d.ts.map +0 -1
  492. package/dist/_shared/scope-resolution/shadow/diff.js +0 -79
  493. package/dist/_shared/scope-resolution/shadow/diff.js.map +0 -1
  494. package/dist/core/ingestion/ast-cache.d.ts +0 -26
  495. package/dist/core/ingestion/ast-cache.js +0 -48
  496. package/dist/core/ingestion/heritage-extractors/configs/go.d.ts +0 -13
  497. package/dist/core/ingestion/heritage-extractors/configs/go.js +0 -20
  498. package/dist/core/ingestion/heritage-extractors/configs/ruby.d.ts +0 -18
  499. package/dist/core/ingestion/heritage-extractors/configs/ruby.js +0 -65
  500. package/dist/core/ingestion/heritage-extractors/generic.d.ts +0 -23
  501. package/dist/core/ingestion/heritage-extractors/generic.js +0 -47
  502. package/dist/core/ingestion/heritage-processor.d.ts +0 -54
  503. package/dist/core/ingestion/heritage-processor.js +0 -367
  504. package/dist/core/ingestion/heritage-types.d.ts +0 -73
  505. package/dist/core/ingestion/heritage-types.js +0 -2
  506. package/dist/core/ingestion/import-processor.d.ts +0 -23
  507. package/dist/core/ingestion/import-processor.js +0 -377
  508. package/dist/core/ingestion/model/heritage-map.d.ts +0 -105
  509. package/dist/core/ingestion/model/heritage-map.js +0 -294
  510. package/dist/core/ingestion/model/resolution-context.d.ts +0 -93
  511. package/dist/core/ingestion/model/resolution-context.js +0 -337
  512. package/dist/core/ingestion/named-bindings/csharp.d.ts +0 -3
  513. package/dist/core/ingestion/named-bindings/csharp.js +0 -37
  514. package/dist/core/ingestion/named-bindings/java.d.ts +0 -3
  515. package/dist/core/ingestion/named-bindings/java.js +0 -29
  516. package/dist/core/ingestion/named-bindings/kotlin.d.ts +0 -3
  517. package/dist/core/ingestion/named-bindings/kotlin.js +0 -36
  518. package/dist/core/ingestion/named-bindings/php.d.ts +0 -3
  519. package/dist/core/ingestion/named-bindings/php.js +0 -61
  520. package/dist/core/ingestion/named-bindings/python.d.ts +0 -3
  521. package/dist/core/ingestion/named-bindings/python.js +0 -49
  522. package/dist/core/ingestion/named-bindings/rust.d.ts +0 -3
  523. package/dist/core/ingestion/named-bindings/rust.js +0 -66
  524. package/dist/core/ingestion/named-bindings/types.d.ts +0 -16
  525. package/dist/core/ingestion/named-bindings/types.js +0 -6
  526. package/dist/core/ingestion/named-bindings/typescript.d.ts +0 -3
  527. package/dist/core/ingestion/named-bindings/typescript.js +0 -58
  528. package/dist/core/ingestion/pipeline-phases/cross-file-impl.d.ts +0 -17
  529. package/dist/core/ingestion/pipeline-phases/cross-file-impl.js +0 -209
  530. package/dist/core/ingestion/pipeline-phases/orm-extraction.d.ts +0 -22
  531. package/dist/core/ingestion/pipeline-phases/orm-extraction.js +0 -92
  532. package/dist/core/ingestion/pipeline-phases/wildcard-synthesis.d.ts +0 -70
  533. package/dist/core/ingestion/pipeline-phases/wildcard-synthesis.js +0 -312
  534. package/dist/core/ingestion/registry-primary-flag.d.ts +0 -89
  535. package/dist/core/ingestion/registry-primary-flag.js +0 -122
  536. package/dist/core/ingestion/shadow-harness.d.ts +0 -113
  537. package/dist/core/ingestion/shadow-harness.js +0 -148
  538. package/dist/core/ingestion/utils/ruby-self-call.d.ts +0 -52
  539. package/dist/core/ingestion/utils/ruby-self-call.js +0 -59
  540. package/scripts/ci-list-migrated-languages.ts +0 -24
  541. package/scripts/run-parity.ts +0 -128
@@ -1,54 +0,0 @@
1
- /**
2
- * Heritage Processor
3
- *
4
- * Extracts class inheritance relationships:
5
- * - EXTENDS: Class extends another Class (TS, JS, Python, C#, C++)
6
- * - IMPLEMENTS: Class implements an Interface (TS, C#, Java, Kotlin, PHP)
7
- *
8
- * Languages like C# use a single `base_list` for both class and interface parents.
9
- * We resolve the correct edge type by checking the symbol table: if the parent is
10
- * registered as an Interface, we emit IMPLEMENTS; otherwise EXTENDS. For unresolved
11
- * external symbols, the fallback heuristic is language-gated:
12
- * - C# / Java: apply the `I[A-Z]` naming convention (e.g. IDisposable → IMPLEMENTS)
13
- * - Swift: default to IMPLEMENTS (protocol conformance is more common than class inheritance)
14
- * - All other languages: default to EXTENDS
15
- */
16
- import { KnowledgeGraph } from '../graph/types.js';
17
- import { ASTCache } from './ast-cache.js';
18
- import type { ExtractedHeritage, HeritageStrategyLookup } from './model/heritage-map.js';
19
- import type { ResolutionContext } from './model/resolution-context.js';
20
- /**
21
- * Derive the heritage-resolution strategy for a language from its
22
- * `LanguageProvider`. This is the production wiring that `buildHeritageMap`
23
- * and the standalone `resolveExtendsType` call site use — the model layer
24
- * itself stays unaware of the provider registry.
25
- */
26
- export declare const getHeritageStrategyForLanguage: HeritageStrategyLookup;
27
- export declare const processHeritage: (graph: KnowledgeGraph, files: {
28
- path: string;
29
- content: string;
30
- }[], astCache: ASTCache, ctx: ResolutionContext, onProgress?: (current: number, total: number) => void) => Promise<void>;
31
- /**
32
- * Fast path: resolve pre-extracted heritage from workers.
33
- * No AST parsing — workers already extracted className + parentName + kind.
34
- */
35
- export declare const processHeritageFromExtracted: (graph: KnowledgeGraph, extractedHeritage: ExtractedHeritage[], ctx: ResolutionContext, onProgress?: (current: number, total: number) => void) => Promise<void>;
36
- /**
37
- * Walk source files with the same heritage captures as parse-worker, producing
38
- * {@link ExtractedHeritage} rows without mutating the graph. Used on the
39
- * sequential pipeline path so `buildHeritageMap(..., ctx)` can run before
40
- * `processCalls` (worker path defers calls until heritage from all chunks exists).
41
- *
42
- * This prepass extracts BOTH capture-based heritage (`@heritage.*` — extends /
43
- * implements / trait-impl) AND call-based heritage (`@call.name` routed through
44
- * `heritageExtractor.extractFromCall` — Ruby `include` / `extend` / `prepend`).
45
- * Without the second pass, sequential-mode `sequentialHeritageMap` would not
46
- * know about Ruby mixin ancestry before `processCalls` resolves calls against
47
- * it, silently dropping mixed-in methods from the graph. This function stays
48
- * read-only — `processCalls` still owns emission of heritage graph edges via
49
- * its `rubyHeritage` return path.
50
- */
51
- export declare function extractExtractedHeritageFromFiles(files: {
52
- path: string;
53
- content: string;
54
- }[], astCache: ASTCache): Promise<ExtractedHeritage[]>;
@@ -1,367 +0,0 @@
1
- /**
2
- * Heritage Processor
3
- *
4
- * Extracts class inheritance relationships:
5
- * - EXTENDS: Class extends another Class (TS, JS, Python, C#, C++)
6
- * - IMPLEMENTS: Class implements an Interface (TS, C#, Java, Kotlin, PHP)
7
- *
8
- * Languages like C# use a single `base_list` for both class and interface parents.
9
- * We resolve the correct edge type by checking the symbol table: if the parent is
10
- * registered as an Interface, we emit IMPLEMENTS; otherwise EXTENDS. For unresolved
11
- * external symbols, the fallback heuristic is language-gated:
12
- * - C# / Java: apply the `I[A-Z]` naming convention (e.g. IDisposable → IMPLEMENTS)
13
- * - Swift: default to IMPLEMENTS (protocol conformance is more common than class inheritance)
14
- * - All other languages: default to EXTENDS
15
- */
16
- import Parser from 'tree-sitter';
17
- import { isLanguageAvailable, loadParser, loadLanguage } from '../tree-sitter/parser-loader.js';
18
- import { generateId } from '../../lib/utils.js';
19
- import { getLanguageFromFilename } from '../../_shared/index.js';
20
- import { isVerboseIngestionEnabled } from './utils/verbose.js';
21
- import { yieldToEventLoop } from './utils/event-loop.js';
22
- import { parseSourceSafe } from '../tree-sitter/safe-parse.js';
23
- import { getProvider } from './languages/index.js';
24
- import { getTreeSitterBufferSize } from './constants.js';
25
- import { resolveExtendsType } from './model/heritage-map.js';
26
- import { TIER_CONFIDENCE } from './model/resolution-context.js';
27
- import { logger } from '../logger.js';
28
- /**
29
- * Derive the heritage-resolution strategy for a language from its
30
- * `LanguageProvider`. This is the production wiring that `buildHeritageMap`
31
- * and the standalone `resolveExtendsType` call site use — the model layer
32
- * itself stays unaware of the provider registry.
33
- */
34
- export const getHeritageStrategyForLanguage = (lang) => {
35
- const provider = getProvider(lang);
36
- return {
37
- interfaceNamePattern: provider.interfaceNamePattern,
38
- defaultEdge: provider.heritageDefaultEdge ?? 'EXTENDS',
39
- };
40
- };
41
- const resolveHeritageId = (name, filePath, ctx, fallbackLabel, fallbackKey) => {
42
- const resolved = ctx.resolve(name, filePath);
43
- if (resolved && resolved.candidates.length > 0) {
44
- // For global with multiple candidates, refuse (a wrong edge is worse than no edge)
45
- if (resolved.tier === 'global' && resolved.candidates.length > 1) {
46
- return {
47
- id: generateId(fallbackLabel, fallbackKey ?? name),
48
- confidence: TIER_CONFIDENCE['global'],
49
- };
50
- }
51
- return { id: resolved.candidates[0].nodeId, confidence: TIER_CONFIDENCE[resolved.tier] };
52
- }
53
- // Unresolved: use global-tier confidence as fallback
54
- return {
55
- id: generateId(fallbackLabel, fallbackKey ?? name),
56
- confidence: TIER_CONFIDENCE['global'],
57
- };
58
- };
59
- /**
60
- * Resolve a single HeritageInfo to a graph edge, using the same resolution
61
- * logic as processHeritageFromExtracted. This bridges the heritage extractor
62
- * output format to the graph-resolution side.
63
- */
64
- const resolveAndAddHeritageEdge = (graph, item, filePath, language, ctx) => {
65
- if (item.kind === 'extends') {
66
- const { type: relType, idPrefix } = resolveExtendsType(item.parentName, filePath, ctx, getHeritageStrategyForLanguage(language));
67
- const child = resolveHeritageId(item.className, filePath, ctx, 'Class', `${filePath}:${item.className}`);
68
- const parent = resolveHeritageId(item.parentName, filePath, ctx, idPrefix);
69
- if (child.id && parent.id && child.id !== parent.id) {
70
- graph.addRelationship({
71
- id: generateId(relType, `${child.id}->${parent.id}`),
72
- sourceId: child.id,
73
- targetId: parent.id,
74
- type: relType,
75
- confidence: Math.sqrt(child.confidence * parent.confidence),
76
- reason: '',
77
- });
78
- }
79
- }
80
- else if (item.kind === 'implements') {
81
- const cls = resolveHeritageId(item.className, filePath, ctx, 'Class', `${filePath}:${item.className}`);
82
- const iface = resolveHeritageId(item.parentName, filePath, ctx, 'Interface');
83
- if (cls.id && iface.id) {
84
- graph.addRelationship({
85
- id: generateId('IMPLEMENTS', `${cls.id}->${iface.id}`),
86
- sourceId: cls.id,
87
- targetId: iface.id,
88
- type: 'IMPLEMENTS',
89
- confidence: Math.sqrt(cls.confidence * iface.confidence),
90
- reason: '',
91
- });
92
- }
93
- }
94
- else if (item.kind === 'trait-impl' ||
95
- item.kind === 'include' ||
96
- item.kind === 'extend' ||
97
- item.kind === 'prepend') {
98
- // Fallback label for an unresolved child name. Rust `trait-impl` children
99
- // are structs; Ruby mixin children are classes or modules (Trait). For
100
- // Ruby mixin kinds the common case resolves through the type registry
101
- // post-plan-001, so the fallback only fires for true-unresolved references
102
- // (e.g. mixin inside a singleton_class). `Class` is strictly better than
103
- // `Struct` there because it matches the label the structure phase would
104
- // emit for a Ruby `class` — the dominant shape. Ruby modules that fail
105
- // to resolve still lose their `Trait` label in the synthesized id, but
106
- // they fail to resolve rarely and the tradeoff is documented.
107
- const childFallbackLabel = item.kind === 'trait-impl' ? 'Struct' : 'Class';
108
- const strct = resolveHeritageId(item.className, filePath, ctx, childFallbackLabel, `${filePath}:${item.className}`);
109
- const trait = resolveHeritageId(item.parentName, filePath, ctx, 'Trait');
110
- if (strct.id && trait.id) {
111
- graph.addRelationship({
112
- id: generateId('IMPLEMENTS', `${strct.id}->${trait.id}:${item.kind}`),
113
- sourceId: strct.id,
114
- targetId: trait.id,
115
- type: 'IMPLEMENTS',
116
- confidence: Math.sqrt(strct.confidence * trait.confidence),
117
- reason: item.kind,
118
- });
119
- }
120
- }
121
- };
122
- export const processHeritage = async (graph, files, astCache, ctx, onProgress) => {
123
- const parser = await loadParser();
124
- const logSkipped = isVerboseIngestionEnabled();
125
- const skippedByLang = logSkipped ? new Map() : null;
126
- for (let i = 0; i < files.length; i++) {
127
- const file = files[i];
128
- onProgress?.(i + 1, files.length);
129
- if (i % 20 === 0)
130
- await yieldToEventLoop();
131
- // 1. Check language support
132
- const language = getLanguageFromFilename(file.path);
133
- if (!language)
134
- continue;
135
- if (!isLanguageAvailable(language)) {
136
- if (skippedByLang) {
137
- skippedByLang.set(language, (skippedByLang.get(language) ?? 0) + 1);
138
- }
139
- continue;
140
- }
141
- const provider = getProvider(language);
142
- const queryStr = provider.treeSitterQueries;
143
- if (!queryStr)
144
- continue;
145
- // 2. Load the language
146
- await loadLanguage(language, file.path);
147
- // 3. Get AST
148
- let tree = astCache.get(file.path);
149
- if (!tree) {
150
- // Use larger bufferSize for files > 32KB
151
- // Per-language source preprocessor (length-preserving, e.g. UE macro
152
- // stripping for C++). MUST mirror parsing-processor on cache miss so
153
- // re-parses see the same input as the cached AST.
154
- const parseContent = provider.preprocessSource?.(file.content, file.path) ?? file.content;
155
- try {
156
- tree = parseSourceSafe(parser, parseContent, undefined, {
157
- bufferSize: getTreeSitterBufferSize(parseContent),
158
- });
159
- }
160
- catch (parseError) {
161
- // Skip files that can't be parsed
162
- continue;
163
- }
164
- // Cache re-parsed tree for potential future use
165
- astCache.set(file.path, tree);
166
- }
167
- let query;
168
- let matches;
169
- try {
170
- const treeSitterLang = parser.getLanguage();
171
- query = new Parser.Query(treeSitterLang, queryStr);
172
- matches = query.matches(tree.rootNode);
173
- }
174
- catch (queryError) {
175
- logger.warn({ queryError }, `Heritage query error for ${file.path}:`);
176
- continue;
177
- }
178
- // 4. Process heritage matches via provider heritage extractor
179
- const heritageExtractor = provider.heritageExtractor;
180
- matches.forEach((match) => {
181
- const captureMap = {};
182
- match.captures.forEach((c) => {
183
- captureMap[c.name] = c.node;
184
- });
185
- if (!captureMap['heritage.class'])
186
- return;
187
- if (!heritageExtractor)
188
- return;
189
- const heritageItems = heritageExtractor.extract(captureMap, {
190
- filePath: file.path,
191
- language,
192
- });
193
- for (const item of heritageItems) {
194
- resolveAndAddHeritageEdge(graph, item, file.path, language, ctx);
195
- }
196
- });
197
- // Tree is now owned by the LRU cache — no manual delete needed
198
- }
199
- if (skippedByLang && skippedByLang.size > 0) {
200
- for (const [lang, count] of skippedByLang.entries()) {
201
- logger.warn(`[ingestion] Skipped ${count} ${lang} file(s) in heritage processing — ${lang} parser not available.`);
202
- }
203
- }
204
- };
205
- /**
206
- * Fast path: resolve pre-extracted heritage from workers.
207
- * No AST parsing — workers already extracted className + parentName + kind.
208
- */
209
- export const processHeritageFromExtracted = async (graph, extractedHeritage, ctx, onProgress) => {
210
- const total = extractedHeritage.length;
211
- for (let i = 0; i < extractedHeritage.length; i++) {
212
- if (i % 500 === 0) {
213
- onProgress?.(i, total);
214
- await yieldToEventLoop();
215
- }
216
- const h = extractedHeritage[i];
217
- if (h.kind === 'extends') {
218
- const fileLanguage = getLanguageFromFilename(h.filePath);
219
- if (!fileLanguage)
220
- continue;
221
- const { type: relType, idPrefix } = resolveExtendsType(h.parentName, h.filePath, ctx, getHeritageStrategyForLanguage(fileLanguage));
222
- const child = resolveHeritageId(h.className, h.filePath, ctx, 'Class', `${h.filePath}:${h.className}`);
223
- const parent = resolveHeritageId(h.parentName, h.filePath, ctx, idPrefix);
224
- if (child.id && parent.id && child.id !== parent.id) {
225
- graph.addRelationship({
226
- id: generateId(relType, `${child.id}->${parent.id}`),
227
- sourceId: child.id,
228
- targetId: parent.id,
229
- type: relType,
230
- confidence: Math.sqrt(child.confidence * parent.confidence),
231
- reason: '',
232
- });
233
- }
234
- }
235
- else if (h.kind === 'implements') {
236
- const cls = resolveHeritageId(h.className, h.filePath, ctx, 'Class', `${h.filePath}:${h.className}`);
237
- const iface = resolveHeritageId(h.parentName, h.filePath, ctx, 'Interface');
238
- if (cls.id && iface.id) {
239
- graph.addRelationship({
240
- id: generateId('IMPLEMENTS', `${cls.id}->${iface.id}`),
241
- sourceId: cls.id,
242
- targetId: iface.id,
243
- type: 'IMPLEMENTS',
244
- confidence: Math.sqrt(cls.confidence * iface.confidence),
245
- reason: '',
246
- });
247
- }
248
- }
249
- else if (h.kind === 'trait-impl' ||
250
- h.kind === 'include' ||
251
- h.kind === 'extend' ||
252
- h.kind === 'prepend') {
253
- // See the per-item call above (processHeritageFromExtractedItem) for
254
- // rationale: `Class` is the correct fallback for Ruby mixin kinds,
255
- // `Struct` stays the Rust `trait-impl` default.
256
- const childFallbackLabel = h.kind === 'trait-impl' ? 'Struct' : 'Class';
257
- const strct = resolveHeritageId(h.className, h.filePath, ctx, childFallbackLabel, `${h.filePath}:${h.className}`);
258
- const trait = resolveHeritageId(h.parentName, h.filePath, ctx, 'Trait');
259
- if (strct.id && trait.id) {
260
- graph.addRelationship({
261
- id: generateId('IMPLEMENTS', `${strct.id}->${trait.id}:${h.kind}`),
262
- sourceId: strct.id,
263
- targetId: trait.id,
264
- type: 'IMPLEMENTS',
265
- confidence: Math.sqrt(strct.confidence * trait.confidence),
266
- reason: h.kind,
267
- });
268
- }
269
- }
270
- }
271
- onProgress?.(total, total);
272
- };
273
- /**
274
- * Walk source files with the same heritage captures as parse-worker, producing
275
- * {@link ExtractedHeritage} rows without mutating the graph. Used on the
276
- * sequential pipeline path so `buildHeritageMap(..., ctx)` can run before
277
- * `processCalls` (worker path defers calls until heritage from all chunks exists).
278
- *
279
- * This prepass extracts BOTH capture-based heritage (`@heritage.*` — extends /
280
- * implements / trait-impl) AND call-based heritage (`@call.name` routed through
281
- * `heritageExtractor.extractFromCall` — Ruby `include` / `extend` / `prepend`).
282
- * Without the second pass, sequential-mode `sequentialHeritageMap` would not
283
- * know about Ruby mixin ancestry before `processCalls` resolves calls against
284
- * it, silently dropping mixed-in methods from the graph. This function stays
285
- * read-only — `processCalls` still owns emission of heritage graph edges via
286
- * its `rubyHeritage` return path.
287
- */
288
- export async function extractExtractedHeritageFromFiles(files, astCache) {
289
- const parser = await loadParser();
290
- const out = [];
291
- for (const file of files) {
292
- const language = getLanguageFromFilename(file.path);
293
- if (!language || !isLanguageAvailable(language))
294
- continue;
295
- const provider = getProvider(language);
296
- const queryStr = provider.treeSitterQueries;
297
- if (!queryStr)
298
- continue;
299
- await loadLanguage(language, file.path);
300
- let tree = astCache.get(file.path);
301
- if (!tree) {
302
- const parseContent = provider.preprocessSource?.(file.content, file.path) ?? file.content;
303
- try {
304
- tree = parseSourceSafe(parser, parseContent, undefined, {
305
- bufferSize: getTreeSitterBufferSize(parseContent),
306
- });
307
- }
308
- catch {
309
- continue;
310
- }
311
- astCache.set(file.path, tree);
312
- }
313
- let matches;
314
- try {
315
- const lang = parser.getLanguage();
316
- const query = new Parser.Query(lang, queryStr);
317
- matches = query.matches(tree.rootNode);
318
- }
319
- catch {
320
- continue;
321
- }
322
- const callBasedEnabled = !!provider.heritageExtractor?.extractFromCall;
323
- for (const match of matches) {
324
- const captureMap = {};
325
- match.captures.forEach((c) => {
326
- captureMap[c.name] = c.node;
327
- });
328
- if (captureMap['heritage.class']) {
329
- if (provider.heritageExtractor) {
330
- const heritageItems = provider.heritageExtractor.extract(captureMap, {
331
- filePath: file.path,
332
- language,
333
- });
334
- for (const item of heritageItems) {
335
- out.push({
336
- filePath: file.path,
337
- className: item.className,
338
- parentName: item.parentName,
339
- kind: item.kind,
340
- });
341
- }
342
- }
343
- continue;
344
- }
345
- // Call-based heritage (e.g. Ruby include/extend/prepend). Matches the
346
- // routing the worker path performs inline in parse-worker.ts — see the
347
- // `provider.heritageExtractor?.extractFromCall` branch there. We only
348
- // need call-based records here; other @call captures are consumed by
349
- // processCalls later in the sequential loop.
350
- if (callBasedEnabled && captureMap['call'] && captureMap['call.name']) {
351
- const calledName = captureMap['call.name'].text;
352
- const heritageItems = provider.heritageExtractor.extractFromCall(calledName, captureMap['call'], { filePath: file.path, language });
353
- if (heritageItems) {
354
- for (const item of heritageItems) {
355
- out.push({
356
- filePath: file.path,
357
- className: item.className,
358
- parentName: item.parentName,
359
- kind: item.kind,
360
- });
361
- }
362
- }
363
- }
364
- }
365
- }
366
- return out;
367
- }
@@ -1,73 +0,0 @@
1
- /**
2
- * Types for the language-agnostic heritage extraction pipeline.
3
- *
4
- * Follows the same pattern as call-types.ts, variable-types.ts, and
5
- * method-types.ts: defines the domain interfaces consumed by
6
- * createHeritageExtractor() and the per-language configs.
7
- *
8
- * Heritage extraction handles extends/implements/trait-impl captures from
9
- * tree-sitter queries, plus call-based heritage for languages like Ruby
10
- * (include/extend/prepend expressed as method calls).
11
- */
12
- import type { SupportedLanguages } from '../../_shared/index.js';
13
- import type { SyntaxNode } from './utils/ast-helpers.js';
14
- import type { CaptureMap } from './language-provider.js';
15
- /**
16
- * Per-match heritage extraction result. The parse worker adds filePath to
17
- * produce the final {@link ExtractedHeritage} that enters the resolution
18
- * pipeline (heritage-processor.ts / heritage-map.ts).
19
- */
20
- export interface HeritageInfo {
21
- className: string;
22
- parentName: string;
23
- /** 'extends' | 'implements' | 'trait-impl' | 'include' | 'extend' | 'prepend' */
24
- kind: string;
25
- }
26
- export interface HeritageExtractorContext {
27
- filePath: string;
28
- language: SupportedLanguages;
29
- }
30
- export interface HeritageExtractor {
31
- readonly language: SupportedLanguages;
32
- /**
33
- * Extract heritage records from tree-sitter @heritage.* captures.
34
- *
35
- * @param captureMap The capture map from a single tree-sitter match
36
- * @param context File path and language context
37
- * @returns Array of heritage records (may be empty if captures don't match)
38
- */
39
- extract(captureMap: CaptureMap, context: HeritageExtractorContext): HeritageInfo[];
40
- /**
41
- * Extract heritage from a call node (for languages where heritage is
42
- * expressed as method calls, e.g., Ruby include/extend/prepend).
43
- *
44
- * @param calledName The method name (e.g. 'include', 'extend', 'prepend')
45
- * @param callNode The tree-sitter call AST node
46
- * @param context File path and language context
47
- * @returns Heritage records if the call is heritage-related, or null to
48
- * fall through to the call router / normal call handling.
49
- */
50
- extractFromCall?(calledName: string, callNode: SyntaxNode, context: HeritageExtractorContext): HeritageInfo[] | null;
51
- }
52
- export interface HeritageExtractionConfig {
53
- language: SupportedLanguages;
54
- /**
55
- * Called for heritage.extends captures. Return true to skip this extends
56
- * capture. Used by Go to skip named struct fields that match the
57
- * field_declaration pattern but are not anonymous embeddings.
58
- *
59
- * Default: never skip (all extends captures are valid).
60
- */
61
- shouldSkipExtends?: (extendsNode: SyntaxNode) => boolean;
62
- /**
63
- * Call-based heritage extraction for languages where heritage is expressed
64
- * as method calls (e.g., Ruby include/extend/prepend).
65
- *
66
- * callNames: set of method names that trigger heritage extraction.
67
- * extract: extract heritage items from the call node + method name.
68
- */
69
- callBasedHeritage?: {
70
- readonly callNames: ReadonlySet<string>;
71
- extract(calledName: string, callNode: SyntaxNode, filePath: string): HeritageInfo[];
72
- };
73
- }
@@ -1,2 +0,0 @@
1
- // gitnexus/src/core/ingestion/heritage-types.ts
2
- export {};
@@ -1,23 +0,0 @@
1
- import { KnowledgeGraph } from '../graph/types.js';
2
- import { ASTCache } from './ast-cache.js';
3
- import type { LanguageProvider } from './language-provider.js';
4
- import type { ExtractedImport } from './workers/parse-worker.js';
5
- import type { ResolutionContext } from './model/resolution-context.js';
6
- import type { ImportResolutionContext } from './import-resolvers/types.js';
7
- import type { SyntaxNode } from './utils/ast-helpers.js';
8
- export type ImportMap = Map<string, Set<string>>;
9
- export type PackageMap = Map<string, Set<string>>;
10
- export declare function buildImportResolutionContext(allPaths: string[]): ImportResolutionContext;
11
- /**
12
- * Clean and preprocess a raw import source text into a resolved import path.
13
- * Strips quotes/angle brackets (universal) and applies provider-specific
14
- * transformations (currently only Kotlin wildcard import detection).
15
- */
16
- export declare function preprocessImportPath(sourceText: string, importNode: SyntaxNode, provider: LanguageProvider): string | null;
17
- export declare const processImports: (graph: KnowledgeGraph, files: {
18
- path: string;
19
- content: string;
20
- }[], astCache: ASTCache, ctx: ResolutionContext, onProgress?: (current: number, total: number) => void, repoRoot?: string, allPaths?: string[]) => Promise<void>;
21
- export declare const processImportsFromExtracted: (graph: KnowledgeGraph, files: {
22
- path: string;
23
- }[], extractedImports: ExtractedImport[], ctx: ResolutionContext, onProgress?: (current: number, total: number) => void, repoRoot?: string, prebuiltCtx?: ImportResolutionContext) => Promise<void>;