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
@@ -0,0 +1,292 @@
1
+ /**
2
+ * Vue `ScopeResolver` registered in `SCOPE_RESOLVERS` and consumed by
3
+ * the generic `runScopeResolution` orchestrator (RFC #909 Ring 3, issue #940).
4
+ *
5
+ * ## Design rationale
6
+ *
7
+ * Vue SFCs compile down to TypeScript/JavaScript — the `<script>` /
8
+ * `<script setup>` block is pure TS/JS, parsed with the TypeScript
9
+ * grammar and captured by `emitVueScopeCaptures` (which delegates
10
+ * to `emitTsScopeCaptures`). Because of this, nearly all hooks are
11
+ * identical to the TypeScript resolver:
12
+ *
13
+ * - `mergeBindings` — TypeScript LEGB semantics apply in script blocks.
14
+ * - `arityCompatibility` — same positional + rest rules.
15
+ * - `buildMro` / `populateOwners` — shared with TypeScript.
16
+ * - `isSuperReceiver` — `super(...)` / `super.foo` / `super[x]` pattern.
17
+ * - `resolveImportTarget` — TypeScript resolver with `.vue` explicit-
18
+ * extension support; tsconfig paths loaded via
19
+ * `loadResolutionConfig`.
20
+ *
21
+ * ## Key differences from TypeScript
22
+ *
23
+ * - `language: SupportedLanguages.Vue` — routes the resolver to Vue
24
+ * files only; TypeScript files use the TypeScript resolver.
25
+ * - `languageProvider: vueProvider` — the Vue-specific language
26
+ * provider supplies the right built-ins and export checker for
27
+ * `<script setup>` (all top-level bindings implicitly exported).
28
+ * - `importEdgeReason: 'vue-scope: import'` — distinct tag for
29
+ * debugging / edge provenance.
30
+ * - `allowGlobalFreeCallFallback: false` — Vue uses explicit imports;
31
+ * workspace-wide unique-name fallback is unnecessary and would
32
+ * produce spurious edges for Vue built-ins (ref, reactive, …).
33
+ *
34
+ * ## Options API / this-binding
35
+ *
36
+ * Options API (`defineComponent({ methods: { … } })`) stores methods
37
+ * on the component instance, which tree-sitter sees as object property
38
+ * values. `this.X()` inside a method resolves via the existing
39
+ * `tsReceiverBinding` hook (inherited from TypeScript), which walks to
40
+ * the enclosing Class scope. For Options API the enclosing "class" is
41
+ * the `defineComponent({…})` object — not a true class — so `this`
42
+ * calls may not resolve through the type-binding layer. `fieldFallbackOnMethodLookup`
43
+ * is therefore set to `true` so the field-name fallback catches common
44
+ * patterns even without an explicit type annotation.
45
+ *
46
+ * ## `<script setup>` macro calls
47
+ *
48
+ * `defineProps`, `defineEmits`, `defineExpose`, `withDefaults`, etc.
49
+ * are compiler macros available as globals inside `<script setup>`.
50
+ * They are listed in `vueProvider.builtInNames` and therefore treated
51
+ * as resolved without requiring an import edge.
52
+ */
53
+ import { SupportedLanguages, getLanguageFromFilename } from '../../../../_shared/index.js';
54
+ import { generateId } from '../../../../lib/utils.js';
55
+ import { buildMro, defaultLinearize } from '../../scope-resolution/passes/mro.js';
56
+ import { populateClassOwnedMembers } from '../../scope-resolution/scope/walkers.js';
57
+ import { simpleKey } from '../../scope-resolution/graph-bridge/node-lookup.js';
58
+ import { vueProvider } from '../vue.js';
59
+ import { loadTsconfigPaths } from '../../language-config.js';
60
+ import { typescriptArityCompatibility, typescriptMergeBindings } from '../typescript/index.js';
61
+ import { makeVueResolveImportTarget } from './import-target.js';
62
+ import { extractVueTemplateEdgeData } from '../../vue-sfc-extractor.js';
63
+ import { extractParsedFile } from '../../scope-extractor-bridge.js';
64
+ // Languages whose files may be pulled into the Vue scope-resolution pass
65
+ // as import-closure context (`.vue` → `.ts` / `.js` cross-file resolution).
66
+ const VUE_SCOPE_CONTEXT_LANGUAGES = new Set([
67
+ SupportedLanguages.Vue,
68
+ SupportedLanguages.TypeScript,
69
+ SupportedLanguages.JavaScript,
70
+ ]);
71
+ function isVueScopeContextLanguage(lang) {
72
+ return lang !== null && VUE_SCOPE_CONTEXT_LANGUAGES.has(lang);
73
+ }
74
+ const vueScopeResolver = {
75
+ language: SupportedLanguages.Vue,
76
+ languageProvider: vueProvider,
77
+ importEdgeReason: 'vue-scope: import',
78
+ resolveImportTarget: makeVueResolveImportTarget(),
79
+ // Vue projects universally use TypeScript — load tsconfig so path
80
+ // aliases (`@/`, `~/`, `#/`) resolve through the standard branch.
81
+ loadResolutionConfig: async (repoPath) => ({
82
+ tsconfigPaths: await loadTsconfigPaths(repoPath),
83
+ }),
84
+ // TypeScript LEGB semantics apply inside `<script>` / `<script setup>`.
85
+ mergeBindings: (existing, incoming) => [...typescriptMergeBindings([...existing, ...incoming])],
86
+ // Adapter: typescriptArityCompatibility uses (def, callsite); contract is (callsite, def).
87
+ arityCompatibility: (callsite, def) => typescriptArityCompatibility(def, callsite),
88
+ buildMro: (graph, parsedFiles, nodeLookup) => buildMro(graph, parsedFiles, nodeLookup, defaultLinearize),
89
+ populateOwners: (parsed) => populateClassOwnedMembers(parsed),
90
+ isSuperReceiver: (text) => /^super(\s*\(|\s*\.|\s*\[|\s*$)/.test(text.trim()),
91
+ // Options API `this.X()` calls may not resolve through the type-binding
92
+ // layer (no formal class declaration), so enable the field-fallback
93
+ // heuristic to catch them via declared field names.
94
+ fieldFallbackOnMethodLookup: true,
95
+ // Return-type propagation mirrors TypeScript.
96
+ propagatesReturnTypesAcrossImports: true,
97
+ hoistTypeBindingsToModule: true,
98
+ // Vue uses explicit imports for all external symbols; no global free-
99
+ // call fallback needed (would produce spurious edges for built-ins).
100
+ allowGlobalFreeCallFallback: false,
101
+ /**
102
+ * Expand the scope-resolution file universe for Vue by performing a
103
+ * transitive closure over imports starting from the primary `.vue` files.
104
+ *
105
+ * Vue SFCs import TypeScript/JavaScript modules (`import { fn } from './api'`),
106
+ * and those modules must be included in the Vue resolution pass for cross-file
107
+ * IMPORTS/CALLS edges to resolve correctly. Without this expansion, only
108
+ * `.vue` files would be processed and all TS/JS imports would remain
109
+ * unresolved.
110
+ *
111
+ * Keeping this logic here (rather than hard-coding it in `phase.ts`) ensures
112
+ * that shared pipeline code remains language-agnostic.
113
+ */
114
+ collectScopeContextPaths({ primaryFilePaths, preExtractedByPath, entryFileContents, allScannedPaths, resolutionConfig, }) {
115
+ const resolveTargets = (targetRaw, fromFile) => {
116
+ const resolved = vueScopeResolver.resolveImportTarget(targetRaw, fromFile, allScannedPaths, resolutionConfig);
117
+ if (resolved === null)
118
+ return [];
119
+ if (typeof resolved === 'string')
120
+ return [resolved];
121
+ return resolved;
122
+ };
123
+ const visited = new Set(primaryFilePaths);
124
+ const queue = [...primaryFilePaths];
125
+ const fallbackParsed = new Map();
126
+ while (queue.length > 0) {
127
+ const current = queue.shift();
128
+ if (current === undefined)
129
+ break;
130
+ let parsed = preExtractedByPath.get(current) ?? fallbackParsed.get(current) ?? undefined;
131
+ if (parsed === undefined) {
132
+ const source = entryFileContents.get(current);
133
+ if (source !== undefined) {
134
+ parsed = extractParsedFile(vueProvider, source, current);
135
+ if (parsed !== undefined)
136
+ fallbackParsed.set(current, parsed);
137
+ }
138
+ }
139
+ if (parsed === undefined)
140
+ continue;
141
+ for (const parsedImport of parsed.parsedImports) {
142
+ if (parsedImport.targetRaw.trim().length === 0)
143
+ continue;
144
+ for (const targetPath of resolveTargets(parsedImport.targetRaw, current)) {
145
+ if (!allScannedPaths.has(targetPath))
146
+ continue;
147
+ if (!isVueScopeContextLanguage(getLanguageFromFilename(targetPath)))
148
+ continue;
149
+ if (visited.has(targetPath))
150
+ continue;
151
+ visited.add(targetPath);
152
+ queue.push(targetPath);
153
+ }
154
+ }
155
+ }
156
+ return visited;
157
+ },
158
+ /**
159
+ * Emit template-derived edges after standard scope-resolution passes.
160
+ *
161
+ * Six edge categories (all scoped to `.vue` files only):
162
+ *
163
+ * 1. **CALLS** (`vue-template-component`)
164
+ * PascalCase component elements → the imported component's File node.
165
+ * Source = the parent file (File node).
166
+ *
167
+ * 2. **CALLS** (`vue-template-callback`) — reserved for future use
168
+ * (see category 3 below).
169
+ *
170
+ * 3. **CALLS** (`vue-template-callback`)
171
+ * `@event="handler"` on a **native** HTML element (`<button>`, `<input>`).
172
+ * Source = the parent file (File node). Target = handler Function/Method.
173
+ *
174
+ * 4. **BINDS_EVENT_HANDLER** (`vue-event: @<eventName>`)
175
+ * `@event="handler"` on a **component** element.
176
+ * Source = the handler Function/Method node in the parent file.
177
+ * Target = the child component's File node.
178
+ *
179
+ * 5. **EMITS_EVENT** (`vue-emit: <eventName>`)
180
+ * `emit('eventName', …)` / `this.$emit('eventName', …)` in script block.
181
+ * Source = the file's own File node (self-referential annotation).
182
+ * Target = the same File node.
183
+ * These "hanging" edges join with BINDS_EVENT_HANDLER via Cypher query
184
+ * on the shared component File node to reveal handler/emitter pairs.
185
+ *
186
+ * 6. **ACCESSES** (`vue-template-attribute`)
187
+ * `:prop="varName"` bound-attribute references.
188
+ * Source = the file's File node. Target = resolved variable node.
189
+ */
190
+ emitPostResolutionEdges(graph, parsedFiles, nodeLookup, indexes, ctx) {
191
+ for (const parsedFile of parsedFiles) {
192
+ if (!parsedFile.filePath.endsWith('.vue'))
193
+ continue;
194
+ const content = ctx.fileContents.get(parsedFile.filePath);
195
+ if (!content)
196
+ continue;
197
+ const fileId = generateId('File', parsedFile.filePath);
198
+ // Build localName → resolved targetFile from finalized import edges.
199
+ const importTargetByName = new Map();
200
+ for (const [scopeId, edges] of indexes.imports) {
201
+ const scope = indexes.scopeTree.getScope(scopeId);
202
+ if (scope?.filePath !== parsedFile.filePath)
203
+ continue;
204
+ for (const edge of edges) {
205
+ if (edge.targetFile !== null && edge.localName) {
206
+ importTargetByName.set(edge.localName, edge.targetFile);
207
+ }
208
+ }
209
+ }
210
+ // Extract all template/script edge data in a single pass — avoids
211
+ // re-running TEMPLATE_RE for each individual extractor call.
212
+ const { templateComponents, nativeEventHandlers, componentEventBindings, scriptEmitCalls, templateAttributeBindings, } = extractVueTemplateEdgeData(content, { sourceKind: 'full-sfc' });
213
+ // 1 — Component-reference CALLS
214
+ for (const componentName of templateComponents) {
215
+ const targetFile = importTargetByName.get(componentName);
216
+ if (!targetFile)
217
+ continue;
218
+ const targetFileId = generateId('File', targetFile);
219
+ if (!graph.getNode(targetFileId))
220
+ continue;
221
+ graph.addRelationship({
222
+ id: generateId('CALLS', `${fileId}:${componentName}->${targetFileId}`),
223
+ sourceId: fileId,
224
+ targetId: targetFileId,
225
+ type: 'CALLS',
226
+ confidence: 0.9,
227
+ reason: 'vue-template-component',
228
+ });
229
+ }
230
+ // 3 — Native-element event-handler CALLS (@click="method" on <button> etc.)
231
+ for (const handlerName of nativeEventHandlers) {
232
+ const handlerNodeId = nodeLookup.get(simpleKey(parsedFile.filePath, handlerName));
233
+ if (!handlerNodeId)
234
+ continue;
235
+ graph.addRelationship({
236
+ id: generateId('CALLS', `${fileId}:@native:${handlerName}->${handlerNodeId}`),
237
+ sourceId: fileId,
238
+ targetId: handlerNodeId,
239
+ type: 'CALLS',
240
+ confidence: 0.9,
241
+ reason: 'vue-template-callback',
242
+ });
243
+ }
244
+ // 4 — BINDS_EVENT_HANDLER: component event bindings (@event="handler" on component elements)
245
+ for (const { componentName, eventName, handlerName } of componentEventBindings) {
246
+ const targetFile = importTargetByName.get(componentName);
247
+ if (!targetFile)
248
+ continue;
249
+ const targetFileId = generateId('File', targetFile);
250
+ if (!graph.getNode(targetFileId))
251
+ continue;
252
+ const handlerNodeId = nodeLookup.get(simpleKey(parsedFile.filePath, handlerName));
253
+ if (!handlerNodeId)
254
+ continue;
255
+ graph.addRelationship({
256
+ id: generateId('BINDS_EVENT_HANDLER', `${handlerNodeId}:@${eventName}->${targetFileId}`),
257
+ sourceId: handlerNodeId,
258
+ targetId: targetFileId,
259
+ type: 'BINDS_EVENT_HANDLER',
260
+ confidence: 0.9,
261
+ reason: `vue-event: @${eventName}`,
262
+ });
263
+ }
264
+ // 5 — EMITS_EVENT: emit() / this.$emit() calls (self-referential annotation)
265
+ for (const { eventName } of scriptEmitCalls) {
266
+ graph.addRelationship({
267
+ id: generateId('EMITS_EVENT', `${fileId}:emit:${eventName}`),
268
+ sourceId: fileId,
269
+ targetId: fileId,
270
+ type: 'EMITS_EVENT',
271
+ confidence: 0.9,
272
+ reason: `vue-emit: ${eventName}`,
273
+ });
274
+ }
275
+ // 6 — ACCESSES: bound-attribute references (:prop="varName")
276
+ for (const varName of templateAttributeBindings) {
277
+ const varNodeId = nodeLookup.get(simpleKey(parsedFile.filePath, varName));
278
+ if (!varNodeId)
279
+ continue;
280
+ graph.addRelationship({
281
+ id: generateId('ACCESSES', `${fileId}:bind:${varName}->${varNodeId}`),
282
+ sourceId: fileId,
283
+ targetId: varNodeId,
284
+ type: 'ACCESSES',
285
+ confidence: 0.8,
286
+ reason: 'vue-template-attribute',
287
+ });
288
+ }
289
+ }
290
+ },
291
+ };
292
+ export { vueScopeResolver };
@@ -18,7 +18,6 @@ import { typeConfig as typescriptConfig } from '../type-extractors/typescript.js
18
18
  import { tsExportChecker } from '../export-detection.js';
19
19
  import { createImportResolver } from '../import-resolvers/resolver-factory.js';
20
20
  import { vueImportConfig } from '../import-resolvers/configs/typescript-javascript.js';
21
- import { extractTsNamedBindings } from '../named-bindings/typescript.js';
22
21
  import { TYPESCRIPT_QUERIES } from '../tree-sitter-queries.js';
23
22
  import { typescriptFieldExtractor } from '../field-extractors/typescript.js';
24
23
  import { BUILT_INS as TS_BUILT_INS } from './typescript.js';
@@ -26,7 +25,8 @@ import { createVariableExtractor } from '../variable-extractors/generic.js';
26
25
  import { typescriptVariableConfig } from '../variable-extractors/configs/typescript-javascript.js';
27
26
  import { createCallExtractor } from '../call-extractors/generic.js';
28
27
  import { typescriptCallConfig } from '../call-extractors/configs/typescript-javascript.js';
29
- import { createHeritageExtractor } from '../heritage-extractors/generic.js';
28
+ import { interpretTsImport, interpretTsTypeBinding, tsBindingScopeFor, tsImportOwningScope, tsReceiverBinding, typescriptMergeBindings, typescriptArityCompatibility, resolveTsImportTarget, } from './typescript/index.js';
29
+ import { emitVueScopeCaptures } from './vue/captures.js';
30
30
  const VUE_SPECIFIC_BUILT_INS = [
31
31
  'ref',
32
32
  'reactive',
@@ -69,11 +69,19 @@ export const vueProvider = defineLanguage({
69
69
  typeConfig: typescriptConfig,
70
70
  exportChecker: tsExportChecker,
71
71
  importResolver: createImportResolver(vueImportConfig),
72
- namedBindingExtractor: extractTsNamedBindings,
73
72
  callExtractor: createCallExtractor(typescriptCallConfig),
74
73
  fieldExtractor: typescriptFieldExtractor,
75
74
  variableExtractor: createVariableExtractor(typescriptVariableConfig),
76
75
  classExtractor: vueClassExtractor,
77
- heritageExtractor: createHeritageExtractor(SupportedLanguages.TypeScript),
78
76
  builtInNames: VUE_BUILT_INS,
77
+ // Scope-resolution pipeline hooks (RFC #909 Ring 3)
78
+ emitScopeCaptures: emitVueScopeCaptures,
79
+ interpretImport: interpretTsImport,
80
+ interpretTypeBinding: interpretTsTypeBinding,
81
+ bindingScopeFor: tsBindingScopeFor,
82
+ importOwningScope: tsImportOwningScope,
83
+ receiverBinding: tsReceiverBinding,
84
+ mergeBindings: (_scope, bindings) => typescriptMergeBindings(bindings),
85
+ arityCompatibility: typescriptArityCompatibility,
86
+ resolveImportTarget: resolveTsImportTarget,
79
87
  });
@@ -0,0 +1,11 @@
1
+ import type { KnowledgeGraph } from '../graph/types.js';
2
+ export interface LocalSymbolPruneStats {
3
+ candidateNodes: number;
4
+ prunedNodes: number;
5
+ keptWithSemanticEdges: number;
6
+ skippedByEnv: boolean;
7
+ }
8
+ export declare const shouldKeepLocalValueSymbols: () => boolean;
9
+ export declare const pruneLocalValueSymbols: (graph: KnowledgeGraph, options?: {
10
+ keepLocalValueSymbols?: boolean;
11
+ }) => LocalSymbolPruneStats;
@@ -0,0 +1,63 @@
1
+ import { parseTruthyEnv } from './utils/env.js';
2
+ const LOCAL_VALUE_LABELS = new Set(['Const', 'Variable', 'Static']);
3
+ const KEEP_LOCAL_VALUE_SYMBOLS_ENV = 'GITNEXUS_KEEP_LOCAL_VALUE_SYMBOLS';
4
+ export const shouldKeepLocalValueSymbols = () => parseTruthyEnv(process.env[KEEP_LOCAL_VALUE_SYMBOLS_ENV]);
5
+ const emptyStats = (skippedByEnv) => ({
6
+ candidateNodes: 0,
7
+ prunedNodes: 0,
8
+ keptWithSemanticEdges: 0,
9
+ skippedByEnv,
10
+ });
11
+ const isLocalValueCandidate = (node) => {
12
+ if (!LOCAL_VALUE_LABELS.has(node.label))
13
+ return false;
14
+ return node.properties.scope === 'block';
15
+ };
16
+ // True when `rel` is the structural `File -> DEFINES -> candidate` edge. Callers
17
+ // guard on the candidate already being the edge target, so only the source label
18
+ // needs checking here.
19
+ const isFileDefinesEdge = (graph, rel) => {
20
+ if (rel.type !== 'DEFINES')
21
+ return false;
22
+ return graph.getNode(rel.sourceId)?.label === 'File';
23
+ };
24
+ export const pruneLocalValueSymbols = (graph, options = {}) => {
25
+ if (options.keepLocalValueSymbols ?? shouldKeepLocalValueSymbols()) {
26
+ return emptyStats(true);
27
+ }
28
+ const candidateIds = new Set();
29
+ for (const node of graph.iterNodes()) {
30
+ if (isLocalValueCandidate(node))
31
+ candidateIds.add(node.id);
32
+ }
33
+ if (candidateIds.size === 0)
34
+ return emptyStats(false);
35
+ const candidatesWithSemanticEdges = new Set();
36
+ for (const rel of graph.iterRelationships()) {
37
+ // Any outgoing edge from a candidate is a semantic edge: the only structural
38
+ // edge a block-local value symbol carries is the incoming File -> DEFINES, on
39
+ // which the candidate is the target, never the source.
40
+ if (candidateIds.has(rel.sourceId)) {
41
+ candidatesWithSemanticEdges.add(rel.sourceId);
42
+ }
43
+ // An incoming edge is semantic unless it is the structural File -> DEFINES.
44
+ if (candidateIds.has(rel.targetId)) {
45
+ if (!isFileDefinesEdge(graph, rel)) {
46
+ candidatesWithSemanticEdges.add(rel.targetId);
47
+ }
48
+ }
49
+ }
50
+ let prunedNodes = 0;
51
+ for (const candidateId of candidateIds) {
52
+ if (candidatesWithSemanticEdges.has(candidateId))
53
+ continue;
54
+ if (graph.removeNode(candidateId))
55
+ prunedNodes++;
56
+ }
57
+ return {
58
+ candidateNodes: candidateIds.size,
59
+ prunedNodes,
60
+ keptWithSemanticEdges: candidatesWithSemanticEdges.size,
61
+ skippedByEnv: false,
62
+ };
63
+ };
@@ -8,7 +8,6 @@ import { extractSimpleTypeName } from '../../type-extractors/shared.js';
8
8
  /** Type node types that represent a return type in function/getter/setter signatures. */
9
9
  const TYPE_NODE_TYPES = new Set([
10
10
  'type_identifier',
11
- 'generic_type',
12
11
  'function_type',
13
12
  'nullable_type',
14
13
  'void_type',
@@ -23,6 +22,20 @@ const TYPE_NODE_TYPES = new Set([
23
22
  * method_signature itself.
24
23
  */
25
24
  function getInnerSignature(node) {
25
+ // A bare signature node IS its own inner signature. The scope-resolution
26
+ // path passes top-level `function_signature` (and constructor/getter/setter
27
+ // signatures) directly, unlike the legacy method extractor which always
28
+ // hands in a `method_signature`/`declaration` wrapper — so the descent loop
29
+ // below never sees a bare signature on the legacy path and this early return
30
+ // leaves legacy behavior byte-identical.
31
+ if (node.type === 'function_signature' ||
32
+ node.type === 'constructor_signature' ||
33
+ node.type === 'getter_signature' ||
34
+ node.type === 'setter_signature' ||
35
+ node.type === 'operator_signature' ||
36
+ node.type === 'factory_constructor_signature') {
37
+ return node;
38
+ }
26
39
  for (let i = 0; i < node.namedChildCount; i++) {
27
40
  const child = node.namedChild(i);
28
41
  if (child &&
@@ -155,9 +155,42 @@ export const javaMethodConfig = {
155
155
  // Kotlin
156
156
  // ---------------------------------------------------------------------------
157
157
  const KOTLIN_VIS = new Set(['public', 'private', 'protected', 'internal']);
158
+ function kotlinParameterHasDefaultValue(param) {
159
+ // tree-sitter-kotlin inlines `_function_value_parameter`, so `=` and its
160
+ // expression are siblings of `parameter`, not children of the parameter.
161
+ for (let sibling = param.nextSibling; sibling !== null; sibling = sibling.nextSibling) {
162
+ if (sibling.type === ',' || sibling.type === ')')
163
+ return false;
164
+ if (sibling.type === '=')
165
+ return true;
166
+ }
167
+ return false;
168
+ }
169
+ /**
170
+ * Member name for a Kotlin method node. A `secondary_constructor`
171
+ * (`constructor(...) { }`) has no name child — its only identity token is
172
+ * the anonymous `constructor` keyword — so it is named "constructor" (F48,
173
+ * issue #1919), matching the @name the KOTLIN_QUERIES structure rule captures
174
+ * off that keyword so method-extractor enrichment keys (`name:line`) align.
175
+ * Multiple secondary constructors collide on this name but are disambiguated
176
+ * downstream by the `#<arity>` ID suffix the worker appends to Constructors.
177
+ */
178
+ function extractKotlinMethodName(node) {
179
+ if (node.type === 'secondary_constructor')
180
+ return 'constructor';
181
+ for (let i = 0; i < node.namedChildCount; i++) {
182
+ const child = node.namedChild(i);
183
+ if (child?.type === 'simple_identifier')
184
+ return child.text;
185
+ }
186
+ return undefined;
187
+ }
158
188
  function extractKotlinParameters(node) {
159
189
  const params = [];
160
- // Kotlin: function_declaration > function_value_parameters > parameter
190
+ // Kotlin: function_declaration / secondary_constructor >
191
+ // function_value_parameters > parameter. Both node types nest the
192
+ // parameter list the same way, so the same walk extracts a secondary
193
+ // constructor's parameters (F48).
161
194
  for (let i = 0; i < node.namedChildCount; i++) {
162
195
  const child = node.namedChild(i);
163
196
  if (child && child.type === 'function_value_parameters') {
@@ -180,7 +213,6 @@ function extractKotlinParameters(node) {
180
213
  let paramName;
181
214
  let paramType = null;
182
215
  let paramRawType = null;
183
- let hasDefault = false;
184
216
  const isVariadic = nextIsVariadic;
185
217
  nextIsVariadic = false;
186
218
  for (let k = 0; k < param.namedChildCount; k++) {
@@ -197,20 +229,12 @@ function extractKotlinParameters(node) {
197
229
  paramType = extractSimpleTypeName(part) ?? paramRawType;
198
230
  }
199
231
  }
200
- // Check for default value: `= expr`
201
- for (let k = 0; k < param.childCount; k++) {
202
- const c = param.child(k);
203
- if (c && c.text === '=') {
204
- hasDefault = true;
205
- break;
206
- }
207
- }
208
232
  if (paramName) {
209
233
  params.push({
210
234
  name: paramName,
211
235
  type: paramType,
212
236
  rawType: paramRawType,
213
- isOptional: hasDefault,
237
+ isOptional: kotlinParameterHasDefaultValue(param),
214
238
  isVariadic: isVariadic,
215
239
  });
216
240
  }
@@ -246,17 +270,10 @@ function extractKotlinReturnType(node) {
246
270
  export const kotlinMethodConfig = {
247
271
  language: SupportedLanguages.Kotlin,
248
272
  typeDeclarationNodes: ['class_declaration', 'object_declaration', 'companion_object'],
249
- methodNodeTypes: ['function_declaration'],
273
+ methodNodeTypes: ['function_declaration', 'secondary_constructor'],
250
274
  bodyNodeTypes: ['class_body'],
251
275
  staticOwnerTypes: new Set(['companion_object', 'object_declaration']),
252
- extractName(node) {
253
- for (let i = 0; i < node.namedChildCount; i++) {
254
- const child = node.namedChild(i);
255
- if (child?.type === 'simple_identifier')
256
- return child.text;
257
- }
258
- return undefined;
259
- },
276
+ extractName: extractKotlinMethodName,
260
277
  extractReturnType: extractKotlinReturnType,
261
278
  extractParameters: extractKotlinParameters,
262
279
  extractVisibility(node) {
@@ -101,7 +101,6 @@ function extractPhpReturnType(node) {
101
101
  'named_type',
102
102
  'union_type',
103
103
  'optional_type',
104
- 'nullable_type',
105
104
  'intersection_type',
106
105
  ]);
107
106
  let astType;
@@ -242,14 +242,21 @@ function extractSwiftAnnotations(node) {
242
242
  // ---------------------------------------------------------------------------
243
243
  export const swiftMethodConfig = {
244
244
  language: SupportedLanguages.Swift,
245
- // Keep this conservative until Swift type-shape coverage is expanded.
246
- // TODO: Verify struct_declaration, enum_declaration, extension_declaration, actor_declaration
247
- // node types once tree-sitter-swift loads on Node 22, and add them here if they are distinct.
245
+ // tree-sitter-swift collapses class / struct / enum / extension / actor into a
246
+ // single `class_declaration` node (distinguished by the `declaration_kind`
247
+ // field) verified by real parse. There is NO separate `enum_declaration`
248
+ // node type, so it must NOT be listed here (it would fail the grammar-drift
249
+ // gate). The enum's owner node is therefore already covered by
250
+ // `class_declaration`; F79 only needed the enum BODY node added below.
248
251
  // protocol_declaration is a separate, confirmed node type.
249
252
  typeDeclarationNodes: ['class_declaration', 'protocol_declaration'],
250
253
  // function_declaration for class/struct methods, protocol_function_declaration for protocol methods
251
254
  methodNodeTypes: ['function_declaration', 'protocol_function_declaration'],
252
- bodyNodeTypes: ['class_body', 'protocol_body'],
255
+ // class_body for class/struct/extension/actor, protocol_body for protocols,
256
+ // enum_class_body for enums (F79). Without enum_class_body the factory only
257
+ // reached enum methods via the generic findBodies fallback, which logs a
258
+ // dev-mode "body field type not in bodyNodeTypes" warning.
259
+ bodyNodeTypes: ['class_body', 'protocol_body', 'enum_class_body'],
253
260
  extractName: extractSwiftName,
254
261
  extractReturnType: extractSwiftReturnType,
255
262
  extractParameters: extractSwiftParameters,
@@ -50,7 +50,7 @@ export interface MethodExtractor {
50
50
  * unwrapping, Swift init/deinit, Rust impl_item) provide this hook
51
51
  * to replace the generic name-field lookup.
52
52
  * Return null to fall through to the generic extractor. */
53
- extractFunctionName?(node: SyntaxNode): {
53
+ extractFunctionName?(node: SyntaxNode, filePath?: string): {
54
54
  funcName: string | null;
55
55
  label: import('../../_shared/index.js').NodeLabel;
56
56
  } | null;
@@ -84,7 +84,7 @@ export interface MethodExtractionConfig {
84
84
  extractPrimaryConstructor?: (ownerNode: SyntaxNode, context: MethodExtractorContext) => MethodInfo | null;
85
85
  /** Extract function name + label from an AST node during parent-walk.
86
86
  * Passed through to the MethodExtractor by createMethodExtractor. */
87
- extractFunctionName?: (node: SyntaxNode) => {
87
+ extractFunctionName?: (node: SyntaxNode, filePath?: string) => {
88
88
  funcName: string | null;
89
89
  label: import('../../_shared/index.js').NodeLabel;
90
90
  } | null;
@@ -14,7 +14,4 @@ export { type SymbolTableReader, type SymbolTableWriter, createSymbolTable, type
14
14
  export { type TypeRegistry, type MutableTypeRegistry, createTypeRegistry, } from './type-registry.js';
15
15
  export { type MethodRegistry, type MutableMethodRegistry, createMethodRegistry, } from './method-registry.js';
16
16
  export { type FieldRegistry, type MutableFieldRegistry, createFieldRegistry, } from './field-registry.js';
17
- export { lookupMethodByOwnerWithMRO } from './resolve.js';
18
- export { type NamedImportBinding, type NamedImportMap, isFileInPackageDir, } from './resolution-context.js';
19
- export { type ExtractedHeritage, type HeritageMap, type HeritageResolutionStrategy, type HeritageStrategyLookup, } from './heritage-map.js';
20
17
  export { CALLABLE_ONLY_LABELS, INERT_LABELS, DISPATCH_LABELS, ALL_NODE_LABELS, type LabelBehavior, } from './registration-table.js';
@@ -25,14 +25,6 @@ export { createTypeRegistry, } from './type-registry.js';
25
25
  export { createMethodRegistry, } from './method-registry.js';
26
26
  // Field registry (owner-scoped fields/properties)
27
27
  export { createFieldRegistry, } from './field-registry.js';
28
- // MRO-aware method resolution (C3, first-wins, leftmost-base, implements-split,
29
- // qualified-syntax). Pure function that depends only on the model + HeritageMap.
30
- // `MroStrategy` itself lives in `gitnexus-shared`; re-exported here for
31
- // consumers that reach model behavior through the barrel.
32
- export { lookupMethodByOwnerWithMRO } from './resolve.js';
33
- // Named-import types and package-dir helper. Re-exported so barrel
34
- // consumers don't need to reach into a specific model file.
35
- export { isFileInPackageDir, } from './resolution-context.js';
36
28
  // Behavior-grouped dispatch table for SymbolTable.add() routing.
37
29
  // See registration-table.ts module JSDoc for the behavior group taxonomy
38
30
  // and "how to add a new NodeLabel" checklist.