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,194 @@
1
+ /**
2
+ * Dart `ScopeResolver` registered in `SCOPE_RESOLVERS` and consumed by the
3
+ * generic `runScopeResolution` orchestrator (RFC #909 Ring 3, issue #939).
4
+ *
5
+ * Closest reference: Swift (`swiftScopeResolver`) — both are statically typed,
6
+ * have no `new` keyword, and model `Type(...)` as a reference to the type.
7
+ *
8
+ * ## Dart specifics
9
+ *
10
+ * - **`implements` / `with`.** Dart can implement (and mixes in) ordinary
11
+ * classes, so the edge type cannot be decided from the target's symbol
12
+ * kind (the generic `preEmitInheritanceEdges` pre-pass routes
13
+ * `Interface`/`Trait` → IMPLEMENTS, everything else → EXTENDS). `extends`
14
+ * is captured as `@reference.inherits` and rides the generic pre-pass
15
+ * (target is a class → EXTENDS); `implements`/`with` are carried as
16
+ * `__heritage__:` side-effect imports and emitted here as IMPLEMENTS by
17
+ * `emitDartHeritageEdges`. METHOD_IMPLEMENTS then falls out of the shared
18
+ * MRO/interface-dispatch phase.
19
+ * - **Mixin MRO.** `buildDartMro` augments the EXTENDS chain with mixin /
20
+ * interface ancestors (IMPLEMENTS edges) so mixed-in members participate
21
+ * in method lookup (PHP/Ruby trait pattern).
22
+ * - **No `new`.** `Type(...)` resolves to the Class node
23
+ * (`constructorCallTargetsClass`); the cross-file global free-call
24
+ * fallback is allowed (`allowGlobalFreeCallFallback`).
25
+ * - **Statically typed** → `fieldFallbackOnMethodLookup: false` (the
26
+ * field-walk heuristic over-connects when types are reliable).
27
+ */
28
+ import { SupportedLanguages } from '../../../../_shared/index.js';
29
+ import { buildMro, defaultLinearize } from '../../scope-resolution/passes/mro.js';
30
+ import { populateClassOwnedMembers, isClassLike } from '../../scope-resolution/scope/walkers.js';
31
+ import { resolveDefGraphId } from '../../scope-resolution/graph-bridge/ids.js';
32
+ import { generateId } from '../../../../lib/utils.js';
33
+ import { dartProvider } from '../dart.js';
34
+ import { dartArityCompatibility, dartMergeBindings, resolveDartImportTarget } from './index.js';
35
+ import { decodeMarker } from '../../utils/heritage-marker.js';
36
+ import { expandDartWildcardNames } from './expand-wildcards.js';
37
+ /**
38
+ * Resolve a class simple name to a graph id with FILE AFFINITY: prefer a
39
+ * definition in `preferredFile`, then a workspace-unique match, otherwise
40
+ * refuse to guess (return undefined). This avoids the cross-file simple-name
41
+ * collision a global last-write-wins map produces — two files each declaring
42
+ * `Logger` where one `implements Logger` must bind its OWN file's `Logger`.
43
+ */
44
+ function pickClassByName(name, preferredFile, defsByName) {
45
+ const cands = defsByName.get(name);
46
+ if (cands === undefined || cands.length === 0)
47
+ return undefined;
48
+ const sameFile = cands.find((c) => c.filePath === preferredFile);
49
+ if (sameFile !== undefined)
50
+ return sameFile.graphId;
51
+ if (cands.length === 1)
52
+ return cands[0].graphId;
53
+ return undefined; // ambiguous across files, none same-file — don't emit a wrong edge
54
+ }
55
+ /**
56
+ * Emit IMPLEMENTS edges for Dart `implements`/`with` clauses, carried from
57
+ * `captures.ts` as `__heritage__:<kind>:<base>:<child>` side-effect imports.
58
+ * The marker lives in the implementing class's `ParsedFile`, so both the child
59
+ * and base names are resolved with same-file affinity (see `pickClassByName`),
60
+ * which keeps cross-file same-name classes from collapsing (mirror of Ruby's
61
+ * `emitRubyMixinEdges`, with the #1951-style file-affinity hardening).
62
+ */
63
+ function emitDartHeritageEdges(graph, parsedFiles, nodeLookup) {
64
+ const defsByName = new Map();
65
+ for (const parsed of parsedFiles) {
66
+ for (const def of parsed.localDefs) {
67
+ if (!isClassLike(def.type))
68
+ continue;
69
+ const graphId = resolveDefGraphId(parsed.filePath, def, nodeLookup);
70
+ if (graphId === undefined)
71
+ continue;
72
+ const simpleName = def.qualifiedName?.split('.').pop() ?? def.qualifiedName ?? '';
73
+ if (simpleName === '')
74
+ continue;
75
+ let list = defsByName.get(simpleName);
76
+ if (list === undefined) {
77
+ list = [];
78
+ defsByName.set(simpleName, list);
79
+ }
80
+ list.push({ graphId, filePath: parsed.filePath });
81
+ }
82
+ }
83
+ // Pre-seed with existing IMPLEMENTS edges (reason-qualified) so a class that
84
+ // both `implements X` and `with X` keeps both distinct edges.
85
+ const emitted = new Set();
86
+ for (const rel of graph.iterRelationshipsByType('IMPLEMENTS')) {
87
+ emitted.add(`${rel.sourceId}->${rel.targetId}:${rel.reason}`);
88
+ }
89
+ for (const parsed of parsedFiles) {
90
+ for (const imp of parsed.parsedImports) {
91
+ const raw = imp.targetRaw;
92
+ if (typeof raw !== 'string')
93
+ continue;
94
+ const decoded = decodeMarker(raw);
95
+ if (decoded?.kind !== 'heritage')
96
+ continue;
97
+ const parts = decoded.fields;
98
+ if (parts.length < 3)
99
+ continue;
100
+ const [kind, baseName, childName] = parts;
101
+ const childId = pickClassByName(childName, parsed.filePath, defsByName);
102
+ const baseId = pickClassByName(baseName, parsed.filePath, defsByName);
103
+ if (childId === undefined || baseId === undefined || childId === baseId)
104
+ continue;
105
+ const key = `${childId}->${baseId}:${kind}`;
106
+ if (emitted.has(key))
107
+ continue;
108
+ emitted.add(key);
109
+ graph.addRelationship({
110
+ id: generateId('IMPLEMENTS', key),
111
+ sourceId: childId,
112
+ targetId: baseId,
113
+ type: 'IMPLEMENTS',
114
+ confidence: 0.9,
115
+ reason: kind,
116
+ });
117
+ }
118
+ }
119
+ }
120
+ /**
121
+ * Dart MRO: the EXTENDS superclass chain (`defaultLinearize`) augmented with
122
+ * mixin / interface ancestors discovered via IMPLEMENTS edges, so mixed-in and
123
+ * interface-default members participate in method lookup. Mixins are appended
124
+ * after the superclass chain (first-seen approximates Dart linearization for
125
+ * dispatch purposes).
126
+ */
127
+ function buildDartMro(graph, parsedFiles, nodeLookup) {
128
+ const mro = buildMro(graph, parsedFiles, nodeLookup, defaultLinearize);
129
+ const defIdByGraphId = new Map();
130
+ for (const parsed of parsedFiles) {
131
+ for (const def of parsed.localDefs) {
132
+ if (!isClassLike(def.type))
133
+ continue;
134
+ const graphId = resolveDefGraphId(parsed.filePath, def, nodeLookup);
135
+ if (graphId !== undefined)
136
+ defIdByGraphId.set(graphId, def.nodeId);
137
+ }
138
+ }
139
+ const implsByChild = new Map();
140
+ for (const rel of graph.iterRelationshipsByType('IMPLEMENTS')) {
141
+ const child = defIdByGraphId.get(rel.sourceId);
142
+ const base = defIdByGraphId.get(rel.targetId);
143
+ if (child === undefined || base === undefined)
144
+ continue;
145
+ let set = implsByChild.get(child);
146
+ if (set === undefined) {
147
+ set = new Set();
148
+ implsByChild.set(child, set);
149
+ }
150
+ set.add(base);
151
+ }
152
+ for (const [childDefId, impls] of implsByChild) {
153
+ const extendsChain = mro.get(childDefId) ?? [];
154
+ const seen = new Set(extendsChain);
155
+ const merged = [...extendsChain];
156
+ for (const base of impls) {
157
+ if (!seen.has(base)) {
158
+ seen.add(base);
159
+ merged.push(base);
160
+ }
161
+ }
162
+ mro.set(childDefId, merged);
163
+ }
164
+ return mro;
165
+ }
166
+ export const dartScopeResolver = {
167
+ language: SupportedLanguages.Dart,
168
+ languageProvider: dartProvider,
169
+ importEdgeReason: 'dart-scope: import',
170
+ resolveImportTarget: (targetRaw, fromFile, allFilePaths) => resolveDartImportTarget(targetRaw, fromFile, allFilePaths),
171
+ // Dart `import` is whole-library: every public top-level symbol of the
172
+ // target enters scope. Enumerating them lets `propagateImportedReturnTypes`
173
+ // mirror imported functions' return types into the importer.
174
+ expandsWildcardTo: (targetModuleScope, parsedFiles) => expandDartWildcardNames(targetModuleScope, parsedFiles),
175
+ // Dart shadowing: local declarations hide imports.
176
+ mergeBindings: (existing, incoming) => [...dartMergeBindings([...existing, ...incoming])],
177
+ // Adapter: dartArityCompatibility uses (def, callsite); contract is (callsite, def).
178
+ arityCompatibility: (callsite, def) => dartArityCompatibility(def, callsite),
179
+ buildMro: (graph, parsedFiles, nodeLookup) => buildDartMro(graph, parsedFiles, nodeLookup),
180
+ // Methods/fields are owned by their enclosing class/mixin/extension.
181
+ populateOwners: (parsed) => populateClassOwnedMembers(parsed),
182
+ // `super.method()` dispatches through the superclass + mixin chain.
183
+ isSuperReceiver: (text) => text.trim() === 'super',
184
+ // `implements` / `with` IMPLEMENTS edges (extends rides the generic
185
+ // inherits pre-pass; these need an explicit, kind-independent edge type).
186
+ emitHeritageEdges: (graph, parsedFiles, nodeLookup) => emitDartHeritageEdges(graph, parsedFiles, nodeLookup),
187
+ // Dart is statically typed — the field-fallback heuristic over-connects.
188
+ fieldFallbackOnMethodLookup: false,
189
+ propagatesReturnTypesAcrossImports: true,
190
+ // No `new`: bare `Foo()` resolves to the type; with cross-file imports the
191
+ // callee is reachable workspace-wide.
192
+ allowGlobalFreeCallFallback: true,
193
+ constructorCallTargetsClass: true,
194
+ };
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Synthesize parameter-type and return-type bindings for a Dart function /
3
+ * method. Mirror of `languages/swift/signature-bindings.ts`:
4
+ *
5
+ * - Parameter bindings (`@type-binding.parameter`) are anchored on the
6
+ * `function_body` node so they land in the (synthesized) Function scope
7
+ * — the receiver of `param.method()` resolves against the param's type.
8
+ * - The return-type binding (`@type-binding.return`) is anchored on the
9
+ * declaration node and carries the function name → return type; the
10
+ * `bindingScopeFor` hook hoists it to the Module scope so callers (and
11
+ * `propagateImportedReturnTypes`) see `var u = getUser(); u.m()` resolve.
12
+ *
13
+ * Reuses `dartMethodConfig.extractParameters/extractName/extractReturnType`,
14
+ * which descend the `method_signature`/`declaration` wrapper internally.
15
+ */
16
+ import { type SyntaxNode } from '../../utils/ast-helpers.js';
17
+ import type { CaptureMatch } from '../../../../_shared/index.js';
18
+ /**
19
+ * `declNode` is the declaration wrapper. `bodyNode` is the resolved sibling
20
+ * `function_body` (or `null` for a bodyless/abstract declaration, in which
21
+ * case only the return binding is emitted).
22
+ */
23
+ export declare function synthesizeDartSignatureBindings(declNode: SyntaxNode, bodyNode: SyntaxNode | null): CaptureMatch[];
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Synthesize parameter-type and return-type bindings for a Dart function /
3
+ * method. Mirror of `languages/swift/signature-bindings.ts`:
4
+ *
5
+ * - Parameter bindings (`@type-binding.parameter`) are anchored on the
6
+ * `function_body` node so they land in the (synthesized) Function scope
7
+ * — the receiver of `param.method()` resolves against the param's type.
8
+ * - The return-type binding (`@type-binding.return`) is anchored on the
9
+ * declaration node and carries the function name → return type; the
10
+ * `bindingScopeFor` hook hoists it to the Module scope so callers (and
11
+ * `propagateImportedReturnTypes`) see `var u = getUser(); u.m()` resolve.
12
+ *
13
+ * Reuses `dartMethodConfig.extractParameters/extractName/extractReturnType`,
14
+ * which descend the `method_signature`/`declaration` wrapper internally.
15
+ */
16
+ import { nodeToCapture, syntheticCapture } from '../../utils/ast-helpers.js';
17
+ import { dartMethodConfig } from '../../method-extractors/configs/dart.js';
18
+ function buildBindingMatch(anchor, sourceTag, name, typeText) {
19
+ return {
20
+ [sourceTag]: nodeToCapture(sourceTag, anchor),
21
+ '@type-binding.name': syntheticCapture('@type-binding.name', anchor, name),
22
+ '@type-binding.type': syntheticCapture('@type-binding.type', anchor, typeText),
23
+ };
24
+ }
25
+ /**
26
+ * `declNode` is the declaration wrapper. `bodyNode` is the resolved sibling
27
+ * `function_body` (or `null` for a bodyless/abstract declaration, in which
28
+ * case only the return binding is emitted).
29
+ */
30
+ export function synthesizeDartSignatureBindings(declNode, bodyNode) {
31
+ const out = [];
32
+ if (bodyNode !== null) {
33
+ const params = dartMethodConfig.extractParameters?.(declNode) ?? [];
34
+ for (const p of params) {
35
+ if (p.type === null || p.name === '')
36
+ continue;
37
+ out.push(buildBindingMatch(bodyNode, '@type-binding.parameter', p.name, p.type));
38
+ }
39
+ }
40
+ const returnType = dartMethodConfig.extractReturnType?.(declNode);
41
+ const funcName = dartMethodConfig.extractName?.(declNode);
42
+ if (funcName !== undefined &&
43
+ funcName !== '' &&
44
+ returnType !== undefined &&
45
+ returnType !== '' &&
46
+ returnType !== 'void' &&
47
+ returnType !== 'dynamic') {
48
+ out.push(buildBindingMatch(declNode, '@type-binding.return', funcName, returnType));
49
+ }
50
+ return out;
51
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Small explicit Dart scope-resolution hooks:
3
+ *
4
+ * - `dartBindingScopeFor` — (1) hoists `@type-binding.return` bindings to
5
+ * the Module scope so chain-follow + `propagateImportedReturnTypes` see
6
+ * them; (2) hoists function/method/constructor declaration NAMES to the
7
+ * enclosing parent scope. The second case is Dart-specific: because
8
+ * `function_signature`/`function_body` are siblings, the synthesized
9
+ * Function scope starts AT the declaration, so the central auto-hoist
10
+ * (which fires only when the declaration anchor range equals the scope
11
+ * range) does not trigger; without this the function name would bind
12
+ * inside its own body instead of being visible to callers/siblings.
13
+ * - `dartImportOwningScope` — imports attach to the Module scope only.
14
+ * - `dartReceiverBinding` — the implicit `this`/`super` receiver of a
15
+ * Function scope.
16
+ */
17
+ import type { ParsedImport, Scope, ScopeId, ScopeTree, TypeRef, CaptureMatch } from '../../../../_shared/index.js';
18
+ export declare function dartBindingScopeFor(decl: CaptureMatch, innermost: Scope, tree: ScopeTree): ScopeId | null;
19
+ export declare function dartImportOwningScope(_imp: ParsedImport, innermost: Scope, _tree: ScopeTree): ScopeId | null;
20
+ export declare function dartReceiverBinding(functionScope: Scope): TypeRef | null;
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Small explicit Dart scope-resolution hooks:
3
+ *
4
+ * - `dartBindingScopeFor` — (1) hoists `@type-binding.return` bindings to
5
+ * the Module scope so chain-follow + `propagateImportedReturnTypes` see
6
+ * them; (2) hoists function/method/constructor declaration NAMES to the
7
+ * enclosing parent scope. The second case is Dart-specific: because
8
+ * `function_signature`/`function_body` are siblings, the synthesized
9
+ * Function scope starts AT the declaration, so the central auto-hoist
10
+ * (which fires only when the declaration anchor range equals the scope
11
+ * range) does not trigger; without this the function name would bind
12
+ * inside its own body instead of being visible to callers/siblings.
13
+ * - `dartImportOwningScope` — imports attach to the Module scope only.
14
+ * - `dartReceiverBinding` — the implicit `this`/`super` receiver of a
15
+ * Function scope.
16
+ */
17
+ export function dartBindingScopeFor(decl, innermost, tree) {
18
+ // (1) Return-type bindings hoist to the Module scope.
19
+ if (decl['@type-binding.return'] !== undefined) {
20
+ let cur = innermost;
21
+ while (cur !== undefined && cur.kind !== 'Module') {
22
+ const parentId = cur.parent;
23
+ if (parentId === null)
24
+ break;
25
+ cur = tree.getScope(parentId);
26
+ }
27
+ if (cur !== undefined && cur.kind === 'Module')
28
+ return cur.id;
29
+ return null;
30
+ }
31
+ // (2) Function/method/constructor names are visible in the enclosing scope.
32
+ if (decl['@declaration.function'] !== undefined ||
33
+ decl['@declaration.method'] !== undefined ||
34
+ decl['@declaration.constructor'] !== undefined) {
35
+ if (innermost.kind === 'Function' && innermost.parent !== null)
36
+ return innermost.parent;
37
+ }
38
+ return null;
39
+ }
40
+ export function dartImportOwningScope(_imp, innermost, _tree) {
41
+ return innermost.kind === 'Module' ? innermost.id : null;
42
+ }
43
+ export function dartReceiverBinding(functionScope) {
44
+ if (functionScope.kind !== 'Function')
45
+ return null;
46
+ return functionScope.typeBindings.get('this') ?? functionScope.typeBindings.get('super') ?? null;
47
+ }
@@ -2,7 +2,6 @@
2
2
  * Dart Language Provider
3
3
  *
4
4
  * Dart traits:
5
- * - importSemantics: 'wildcard-leaf' (Dart imports bring everything public into scope)
6
5
  * - exportChecker: public if no leading underscore
7
6
  * - Dart SDK imports (dart:*) and external packages are skipped
8
7
  * - enclosingFunctionFinder: Dart's tree-sitter grammar places function_body
@@ -2,7 +2,6 @@
2
2
  * Dart Language Provider
3
3
  *
4
4
  * Dart traits:
5
- * - importSemantics: 'wildcard-leaf' (Dart imports bring everything public into scope)
6
5
  * - exportChecker: public if no leading underscore
7
6
  * - Dart SDK imports (dart:*) and external packages are skipped
8
7
  * - enclosingFunctionFinder: Dart's tree-sitter grammar places function_body
@@ -27,7 +26,8 @@ import { createVariableExtractor } from '../variable-extractors/generic.js';
27
26
  import { dartVariableConfig } from '../variable-extractors/configs/dart.js';
28
27
  import { createCallExtractor } from '../call-extractors/generic.js';
29
28
  import { dartCallConfig } from '../call-extractors/configs/dart.js';
30
- import { createHeritageExtractor } from '../heritage-extractors/generic.js';
29
+ import { emitDartScopeCaptures, interpretDartImport, interpretDartTypeBinding, dartBindingScopeFor, dartImportOwningScope, dartReceiverBinding, dartMergeBindings, dartArityCompatibility, } from './dart/index.js';
30
+ import { DART_BUILT_INS } from './dart/built-ins.js';
31
31
  /**
32
32
  * Resolve the enclosing function from a `function_body` node by looking at its
33
33
  * previous sibling. In Dart's tree-sitter grammar, function_signature and
@@ -59,30 +59,6 @@ const dartEnclosingFunctionFinder = (node) => {
59
59
  const funcName = target.childForFieldName?.('name')?.text ?? null;
60
60
  return funcName ? { funcName, label } : null;
61
61
  };
62
- const BUILT_INS = new Set([
63
- 'setState',
64
- 'mounted',
65
- 'debugPrint',
66
- 'runApp',
67
- 'showDialog',
68
- 'showModalBottomSheet',
69
- 'Navigator',
70
- 'push',
71
- 'pushNamed',
72
- 'pushReplacement',
73
- 'pop',
74
- 'maybePop',
75
- 'ScaffoldMessenger',
76
- 'showSnackBar',
77
- 'deactivate',
78
- 'reassemble',
79
- 'debugDumpApp',
80
- 'debugDumpRenderTree',
81
- 'then',
82
- 'catchError',
83
- 'whenComplete',
84
- 'listen',
85
- ]);
86
62
  export const dartProvider = defineLanguage({
87
63
  id: SupportedLanguages.Dart,
88
64
  extensions: ['.dart'],
@@ -126,13 +102,23 @@ export const dartProvider = defineLanguage({
126
102
  typeConfig: dartConfig,
127
103
  exportChecker: dartExportChecker,
128
104
  importResolver: createImportResolver(dartImportConfig),
129
- importSemantics: 'wildcard-leaf',
130
105
  callExtractor: createCallExtractor(dartCallConfig),
131
106
  fieldExtractor: createFieldExtractor(dartFieldConfig),
132
107
  methodExtractor: createMethodExtractor(dartMethodConfig),
133
108
  variableExtractor: createVariableExtractor(dartVariableConfig),
134
109
  classExtractor: createClassExtractor(dartClassConfig),
135
- heritageExtractor: createHeritageExtractor(SupportedLanguages.Dart),
136
110
  enclosingFunctionFinder: dartEnclosingFunctionFinder,
137
- builtInNames: BUILT_INS,
111
+ builtInNames: DART_BUILT_INS,
112
+ // ── Scope-based resolution hooks (RFC #909 Ring 3, issue #939) ──────────────
113
+ // Parsing-side surface consumed by `ScopeExtractor` once per file. The
114
+ // emit-side `ScopeResolver` lives in `dart/scope-resolver.ts`; the same
115
+ // function references flow through both interfaces.
116
+ emitScopeCaptures: emitDartScopeCaptures,
117
+ interpretImport: interpretDartImport,
118
+ interpretTypeBinding: interpretDartTypeBinding,
119
+ bindingScopeFor: dartBindingScopeFor,
120
+ importOwningScope: dartImportOwningScope,
121
+ receiverBinding: dartReceiverBinding,
122
+ mergeBindings: (_scope, bindings) => dartMergeBindings(bindings),
123
+ arityCompatibility: dartArityCompatibility,
138
124
  });
@@ -3,6 +3,7 @@ export interface GoArityMetadata {
3
3
  readonly parameterCount?: number;
4
4
  readonly requiredParameterCount?: number;
5
5
  readonly parameterTypes?: readonly string[];
6
+ readonly returnType?: string;
6
7
  }
7
8
  export declare function computeGoDeclarationArity(node: SyntaxNode): GoArityMetadata;
8
9
  export declare function computeGoCallArity(callNode: SyntaxNode): number;
@@ -1,7 +1,14 @@
1
1
  export function computeGoDeclarationArity(node) {
2
2
  const params = node.childForFieldName('parameters');
3
+ const returnType = extractGoReturnType(node);
3
4
  if (params === null)
4
- return {};
5
+ return returnType === undefined ? {} : { returnType };
6
+ return {
7
+ ...computeGoParameterMetadata(params),
8
+ ...(returnType === undefined ? {} : { returnType }),
9
+ };
10
+ }
11
+ function computeGoParameterMetadata(params) {
5
12
  let count = 0;
6
13
  let required = 0;
7
14
  const types = [];
@@ -35,3 +42,26 @@ export function computeGoCallArity(callNode) {
35
42
  return 0;
36
43
  return args.namedChildCount;
37
44
  }
45
+ function extractGoReturnType(node) {
46
+ const result = node.childForFieldName('result');
47
+ if (result === null)
48
+ return undefined;
49
+ if (result.type !== 'parameter_list')
50
+ return result.text;
51
+ const returnTypes = [];
52
+ for (const child of result.namedChildren) {
53
+ if (child.type !== 'parameter_declaration')
54
+ continue;
55
+ const typeNode = child.childForFieldName('type');
56
+ if (typeNode === null)
57
+ continue;
58
+ const names = child.namedChildren.filter((c) => c.type === 'identifier');
59
+ const n = Math.max(1, names.length);
60
+ for (let i = 0; i < n; i++) {
61
+ returnTypes.push(typeNode.text);
62
+ }
63
+ }
64
+ if (returnTypes.length === 0)
65
+ return undefined;
66
+ return returnTypes.length === 1 ? returnTypes[0] : `(${returnTypes.join(', ')})`;
67
+ }