gitnexus 1.6.10-rc.98 → 1.6.10

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 (777) hide show
  1. package/README.md +177 -18
  2. package/dist/_shared/graph/types.d.ts +21 -2
  3. package/dist/_shared/graph/types.d.ts.map +1 -1
  4. package/dist/_shared/index.d.ts +3 -3
  5. package/dist/_shared/index.d.ts.map +1 -1
  6. package/dist/_shared/index.js +1 -1
  7. package/dist/_shared/index.js.map +1 -1
  8. package/dist/_shared/integrations/circuit-breaker.d.ts.map +1 -1
  9. package/dist/_shared/integrations/circuit-breaker.js.map +1 -1
  10. package/dist/_shared/integrations/resilient-fetch.d.ts +16 -0
  11. package/dist/_shared/integrations/resilient-fetch.d.ts.map +1 -1
  12. package/dist/_shared/integrations/resilient-fetch.js +19 -7
  13. package/dist/_shared/integrations/resilient-fetch.js.map +1 -1
  14. package/dist/_shared/language-detection.d.ts.map +1 -1
  15. package/dist/_shared/lbug/schema-constants.d.ts +2 -2
  16. package/dist/_shared/lbug/schema-constants.d.ts.map +1 -1
  17. package/dist/_shared/lbug/schema-constants.js +3 -0
  18. package/dist/_shared/lbug/schema-constants.js.map +1 -1
  19. package/dist/_shared/scope-resolution/evidence-weights.d.ts.map +1 -1
  20. package/dist/_shared/scope-resolution/finalize-algorithm.d.ts +5 -0
  21. package/dist/_shared/scope-resolution/finalize-algorithm.d.ts.map +1 -1
  22. package/dist/_shared/scope-resolution/finalize-algorithm.js +315 -36
  23. package/dist/_shared/scope-resolution/finalize-algorithm.js.map +1 -1
  24. package/dist/_shared/scope-resolution/reference-site.d.ts +115 -0
  25. package/dist/_shared/scope-resolution/reference-site.d.ts.map +1 -1
  26. package/dist/_shared/scope-resolution/registries/field-registry.js.map +1 -1
  27. package/dist/_shared/scope-resolution/registries/lookup-core.d.ts.map +1 -1
  28. package/dist/_shared/scope-resolution/registries/lookup-core.js +58 -2
  29. package/dist/_shared/scope-resolution/registries/lookup-core.js.map +1 -1
  30. package/dist/_shared/scope-resolution/registries/method-registry.js.map +1 -1
  31. package/dist/_shared/scope-resolution/scope-tree.d.ts.map +1 -1
  32. package/dist/_shared/scope-resolution/scope-tree.js.map +1 -1
  33. package/dist/_shared/scope-resolution/symbol-definition.d.ts +47 -0
  34. package/dist/_shared/scope-resolution/symbol-definition.d.ts.map +1 -1
  35. package/dist/_shared/scope-resolution/types.d.ts +278 -3
  36. package/dist/_shared/scope-resolution/types.d.ts.map +1 -1
  37. package/dist/cli/ai-context.d.ts +3 -2
  38. package/dist/cli/ai-context.js +71 -16
  39. package/dist/cli/analyze-config.d.ts +1 -1
  40. package/dist/cli/analyze-options.d.ts +131 -0
  41. package/dist/cli/analyze-options.js +1 -0
  42. package/dist/cli/analyze.d.ts +21 -113
  43. package/dist/cli/analyze.js +172 -29
  44. package/dist/cli/cli-message.d.ts +1 -1
  45. package/dist/cli/detect-changes-format.js +19 -2
  46. package/dist/cli/doctor.d.ts +12 -0
  47. package/dist/cli/doctor.js +32 -5
  48. package/dist/cli/editor-targets.js +6 -0
  49. package/dist/cli/eval-server.js +2 -1
  50. package/dist/cli/format-symbol.d.ts +15 -0
  51. package/dist/cli/format-symbol.js +17 -0
  52. package/dist/cli/generated-skill.d.ts +17 -0
  53. package/dist/cli/generated-skill.js +1 -0
  54. package/dist/cli/group.js +229 -21
  55. package/dist/cli/help-i18n.js +1 -2
  56. package/dist/cli/i18n/en.d.ts +11 -9
  57. package/dist/cli/i18n/en.js +13 -9
  58. package/dist/cli/i18n/resources.d.ts +15 -11
  59. package/dist/cli/i18n/zh-CN.d.ts +4 -2
  60. package/dist/cli/i18n/zh-CN.js +11 -9
  61. package/dist/cli/index.js +8 -4
  62. package/dist/cli/resolve-invocation.d.ts +7 -3
  63. package/dist/cli/resolve-invocation.js +7 -3
  64. package/dist/cli/setup.js +4 -3
  65. package/dist/cli/skill-gen.d.ts +1 -6
  66. package/dist/cli/tool.d.ts +1 -0
  67. package/dist/cli/tool.js +74 -17
  68. package/dist/cli/wiki.js +53 -10
  69. package/dist/config/ignore-service.d.ts +2 -0
  70. package/dist/config/ignore-service.js +54 -13
  71. package/dist/core/analyzer-identity.d.ts +80 -0
  72. package/dist/core/analyzer-identity.js +364 -26
  73. package/dist/core/augmentation/engine.js +86 -71
  74. package/dist/core/embedding-checkpoint.d.ts +143 -0
  75. package/dist/core/embedding-checkpoint.js +221 -0
  76. package/dist/core/embedding-count.d.ts +61 -0
  77. package/dist/core/embedding-count.js +69 -0
  78. package/dist/core/embeddings/ast-utils.js +9 -1
  79. package/dist/core/embeddings/embedding-pipeline.d.ts +8 -0
  80. package/dist/core/embeddings/embedding-pipeline.js +253 -14
  81. package/dist/core/embeddings/http-client.d.ts +5 -0
  82. package/dist/core/embeddings/http-client.js +142 -27
  83. package/dist/core/graph/graph.js +3 -0
  84. package/dist/core/graph/import-cycles.d.ts +194 -3
  85. package/dist/core/graph/import-cycles.js +522 -73
  86. package/dist/core/graph/types.d.ts +18 -0
  87. package/dist/core/group/bridge-db.d.ts +204 -1
  88. package/dist/core/group/bridge-db.js +401 -28
  89. package/dist/core/group/completeness.d.ts +130 -0
  90. package/dist/core/group/completeness.js +83 -0
  91. package/dist/core/group/config-parser.js +0 -5
  92. package/dist/core/group/cross-impact.d.ts +46 -1
  93. package/dist/core/group/cross-impact.js +220 -19
  94. package/dist/core/group/cross-trace.d.ts +32 -11
  95. package/dist/core/group/cross-trace.js +114 -20
  96. package/dist/core/group/extractors/http-patterns/java.js +278 -22
  97. package/dist/core/group/extractors/http-patterns/node.js +332 -216
  98. package/dist/core/group/extractors/http-patterns/types.d.ts +8 -0
  99. package/dist/core/group/extractors/http-route-extractor.d.ts +1 -0
  100. package/dist/core/group/extractors/http-route-extractor.js +122 -48
  101. package/dist/core/group/extractors/include-extractor.js +20 -2
  102. package/dist/core/group/extractors/manifest-extractor.d.ts +1 -1
  103. package/dist/core/group/extractors/manifest-extractor.js +7 -7
  104. package/dist/core/group/extractors/python-workspace-extractor.js +5 -2
  105. package/dist/core/group/group-lock.d.ts +31 -0
  106. package/dist/core/group/group-lock.js +166 -0
  107. package/dist/core/group/service.js +297 -16
  108. package/dist/core/group/storage.d.ts +3 -0
  109. package/dist/core/group/storage.js +7 -39
  110. package/dist/core/group/sync.d.ts +49 -3
  111. package/dist/core/group/sync.js +0 -0
  112. package/dist/core/group/types.d.ts +183 -8
  113. package/dist/core/group/types.js +28 -1
  114. package/dist/core/incremental/subgraph-extract.d.ts +9 -6
  115. package/dist/core/incremental/subgraph-extract.js +33 -10
  116. package/dist/core/index-freshness.d.ts +77 -2
  117. package/dist/core/index-freshness.js +109 -2
  118. package/dist/core/ingestion/call-processor.d.ts +13 -1
  119. package/dist/core/ingestion/call-processor.js +110 -3
  120. package/dist/core/ingestion/cfg/callee-cell-format.d.ts +42 -0
  121. package/dist/core/ingestion/cfg/callee-cell-format.js +42 -0
  122. package/dist/core/ingestion/cfg/emit.d.ts +8 -23
  123. package/dist/core/ingestion/cfg/emit.js +9 -23
  124. package/dist/core/ingestion/class-extractors/configs/go.js +10 -5
  125. package/dist/core/ingestion/class-extractors/configs/jvm.js +6 -6
  126. package/dist/core/ingestion/cluster-enricher.js +8 -4
  127. package/dist/core/ingestion/community-processor.d.ts +21 -3
  128. package/dist/core/ingestion/community-processor.js +81 -82
  129. package/dist/core/ingestion/di-extractors/index.d.ts +9 -33
  130. package/dist/core/ingestion/di-extractors/spring.d.ts +1 -1
  131. package/dist/core/ingestion/di-extractors/spring.js +8 -1
  132. package/dist/core/ingestion/di-extractors/types.d.ts +60 -0
  133. package/dist/core/ingestion/di-extractors/types.js +15 -0
  134. package/dist/core/ingestion/filesystem-walker.js +30 -14
  135. package/dist/core/ingestion/finalize-orchestrator.js +1 -0
  136. package/dist/core/ingestion/frameworks/spring/analysis-features.d.ts +6 -0
  137. package/dist/core/ingestion/frameworks/spring/analysis-features.js +35 -1
  138. package/dist/core/ingestion/frameworks/spring/annotation-arguments.d.ts +13 -0
  139. package/dist/core/ingestion/frameworks/spring/annotation-arguments.js +227 -0
  140. package/dist/core/ingestion/frameworks/spring/aop-candidates.d.ts +15 -0
  141. package/dist/core/ingestion/frameworks/spring/aop-candidates.js +85 -0
  142. package/dist/core/ingestion/frameworks/spring/aop.d.ts +118 -0
  143. package/dist/core/ingestion/frameworks/spring/aop.js +476 -0
  144. package/dist/core/ingestion/frameworks/spring/auto-configuration.d.ts +8 -0
  145. package/dist/core/ingestion/frameworks/spring/auto-configuration.js +16 -0
  146. package/dist/core/ingestion/frameworks/spring/bean-catalog.js +1 -0
  147. package/dist/core/ingestion/frameworks/spring/bean-factories.d.ts +33 -0
  148. package/dist/core/ingestion/frameworks/spring/bean-factories.js +65 -0
  149. package/dist/core/ingestion/frameworks/spring/conditionals.d.ts +25 -0
  150. package/dist/core/ingestion/frameworks/spring/conditionals.js +319 -0
  151. package/dist/core/ingestion/frameworks/spring/di-metadata.d.ts +3 -0
  152. package/dist/core/ingestion/frameworks/spring/di-metadata.js +162 -13
  153. package/dist/core/ingestion/frameworks/spring/non-http-handlers.d.ts +28 -0
  154. package/dist/core/ingestion/frameworks/spring/non-http-handlers.js +152 -0
  155. package/dist/core/ingestion/frameworks/spring/resource-injection.d.ts +5 -0
  156. package/dist/core/ingestion/frameworks/spring/resource-injection.js +91 -0
  157. package/dist/core/ingestion/import-resolvers/configs/csharp.js +5 -1
  158. package/dist/core/ingestion/import-resolvers/configs/swift.js +13 -0
  159. package/dist/core/ingestion/import-resolvers/csharp.d.ts +9 -1
  160. package/dist/core/ingestion/import-resolvers/csharp.js +234 -27
  161. package/dist/core/ingestion/import-resolvers/go.d.ts +11 -1
  162. package/dist/core/ingestion/import-resolvers/go.js +44 -17
  163. package/dist/core/ingestion/import-resolvers/jvm.d.ts +2 -2
  164. package/dist/core/ingestion/import-resolvers/node-workspace-packages.d.ts +90 -0
  165. package/dist/core/ingestion/import-resolvers/node-workspace-packages.js +429 -0
  166. package/dist/core/ingestion/import-resolvers/package-dir-index.d.ts +124 -0
  167. package/dist/core/ingestion/import-resolvers/package-dir-index.js +223 -0
  168. package/dist/core/ingestion/import-resolvers/pass-cache.d.ts +50 -0
  169. package/dist/core/ingestion/import-resolvers/pass-cache.js +60 -0
  170. package/dist/core/ingestion/import-resolvers/per-file-set.d.ts +71 -0
  171. package/dist/core/ingestion/import-resolvers/per-file-set.js +11 -0
  172. package/dist/core/ingestion/import-resolvers/php.d.ts +1 -1
  173. package/dist/core/ingestion/import-resolvers/php.js +65 -19
  174. package/dist/core/ingestion/import-resolvers/python-file-index.d.ts +201 -0
  175. package/dist/core/ingestion/import-resolvers/python-file-index.js +302 -0
  176. package/dist/core/ingestion/import-resolvers/python.js +25 -6
  177. package/dist/core/ingestion/import-resolvers/ruby.d.ts +1 -1
  178. package/dist/core/ingestion/import-resolvers/rust.d.ts +2 -2
  179. package/dist/core/ingestion/import-resolvers/standard.d.ts +1 -1
  180. package/dist/core/ingestion/import-resolvers/types.d.ts +1 -12
  181. package/dist/core/ingestion/import-resolvers/utils.d.ts +65 -6
  182. package/dist/core/ingestion/import-resolvers/utils.js +215 -36
  183. package/dist/core/ingestion/import-resolvers/workspace-file-index.d.ts +72 -0
  184. package/dist/core/ingestion/import-resolvers/workspace-file-index.js +58 -0
  185. package/dist/core/ingestion/language-config.d.ts +29 -1
  186. package/dist/core/ingestion/language-config.js +110 -35
  187. package/dist/core/ingestion/language-provider.d.ts +209 -7
  188. package/dist/core/ingestion/language-provider.js +37 -0
  189. package/dist/core/ingestion/languages/c/captures.js +7 -0
  190. package/dist/core/ingestion/languages/c/import-target.js +12 -16
  191. package/dist/core/ingestion/languages/c/scope-resolver.js +20 -19
  192. package/dist/core/ingestion/languages/c/static-linkage.js +12 -16
  193. package/dist/core/ingestion/languages/c-cpp.js +13 -0
  194. package/dist/core/ingestion/languages/cobol/scope-resolver.js +27 -20
  195. package/dist/core/ingestion/languages/cobol.js +13 -0
  196. package/dist/core/ingestion/languages/cpp/adl.d.ts +2 -2
  197. package/dist/core/ingestion/languages/cpp/adl.js +67 -44
  198. package/dist/core/ingestion/languages/cpp/captures.js +14 -2
  199. package/dist/core/ingestion/languages/cpp/file-local-linkage.js +11 -15
  200. package/dist/core/ingestion/languages/cpp/inline-namespaces.d.ts +28 -8
  201. package/dist/core/ingestion/languages/cpp/inline-namespaces.js +242 -68
  202. package/dist/core/ingestion/languages/cpp/interpret.d.ts +2 -0
  203. package/dist/core/ingestion/languages/cpp/interpret.js +126 -6
  204. package/dist/core/ingestion/languages/cpp/query.js +106 -0
  205. package/dist/core/ingestion/languages/cpp/scope-resolver.js +48 -20
  206. package/dist/core/ingestion/languages/csharp/accessor-unwrap.d.ts +2 -15
  207. package/dist/core/ingestion/languages/csharp/accessor-unwrap.js +18 -10
  208. package/dist/core/ingestion/languages/csharp/captures.js +19 -0
  209. package/dist/core/ingestion/languages/csharp/import-target.js +46 -72
  210. package/dist/core/ingestion/languages/csharp/namespace-siblings.js +5 -1
  211. package/dist/core/ingestion/languages/csharp/query.js +25 -5
  212. package/dist/core/ingestion/languages/csharp/scope-resolver.js +75 -2
  213. package/dist/core/ingestion/languages/dart/captures.d.ts +10 -0
  214. package/dist/core/ingestion/languages/dart/captures.js +598 -16
  215. package/dist/core/ingestion/languages/dart/import-target.js +32 -9
  216. package/dist/core/ingestion/languages/dart/index.d.ts +1 -1
  217. package/dist/core/ingestion/languages/dart/index.js +1 -1
  218. package/dist/core/ingestion/languages/dart/query.js +98 -1
  219. package/dist/core/ingestion/languages/dart/scope-resolver.js +14 -3
  220. package/dist/core/ingestion/languages/dart/simple-hooks.js +9 -0
  221. package/dist/core/ingestion/languages/dart.js +6 -1
  222. package/dist/core/ingestion/languages/go/captures.js +108 -3
  223. package/dist/core/ingestion/languages/go/generic-type-parameters.d.ts +31 -0
  224. package/dist/core/ingestion/languages/go/generic-type-parameters.js +140 -0
  225. package/dist/core/ingestion/languages/go/import-target.d.ts +3 -10
  226. package/dist/core/ingestion/languages/go/import-target.js +34 -30
  227. package/dist/core/ingestion/languages/go/index.d.ts +1 -1
  228. package/dist/core/ingestion/languages/go/interface-impls.d.ts +9 -1
  229. package/dist/core/ingestion/languages/go/interface-impls.js +693 -87
  230. package/dist/core/ingestion/languages/go/interpret.d.ts +2 -0
  231. package/dist/core/ingestion/languages/go/interpret.js +22 -8
  232. package/dist/core/ingestion/languages/go/method-owners.js +31 -12
  233. package/dist/core/ingestion/languages/go/package-clause.d.ts +46 -0
  234. package/dist/core/ingestion/languages/go/package-clause.js +75 -0
  235. package/dist/core/ingestion/languages/go/package-siblings.js +7 -11
  236. package/dist/core/ingestion/languages/go/query.js +56 -3
  237. package/dist/core/ingestion/languages/go/scope-resolver.js +39 -0
  238. package/dist/core/ingestion/languages/go.js +9 -0
  239. package/dist/core/ingestion/languages/java/analysis-features.d.ts +4 -0
  240. package/dist/core/ingestion/languages/java/analysis-features.js +12 -0
  241. package/dist/core/ingestion/languages/java/capture-side-channel.d.ts +12 -0
  242. package/dist/core/ingestion/languages/java/capture-side-channel.js +48 -0
  243. package/dist/core/ingestion/languages/java/captures.js +129 -44
  244. package/dist/core/ingestion/languages/java/import-target.d.ts +49 -9
  245. package/dist/core/ingestion/languages/java/import-target.js +68 -88
  246. package/dist/core/ingestion/languages/java/interpret.js +3 -2
  247. package/dist/core/ingestion/languages/java/module-resolution.d.ts +62 -0
  248. package/dist/core/ingestion/languages/java/module-resolution.js +142 -0
  249. package/dist/core/ingestion/languages/java/query.js +16 -3
  250. package/dist/core/ingestion/languages/java/record-components.d.ts +14 -0
  251. package/dist/core/ingestion/languages/java/record-components.js +185 -0
  252. package/dist/core/ingestion/languages/java/scope-resolver.js +10 -2
  253. package/dist/core/ingestion/languages/java/spring-aop.d.ts +12 -0
  254. package/dist/core/ingestion/languages/java/spring-aop.js +49 -0
  255. package/dist/core/ingestion/languages/java/spring-conditionals.d.ts +11 -0
  256. package/dist/core/ingestion/languages/java/spring-conditionals.js +48 -0
  257. package/dist/core/ingestion/languages/java/spring-di.d.ts +4 -1
  258. package/dist/core/ingestion/languages/java/spring-di.js +41 -9
  259. package/dist/core/ingestion/languages/java/spring-non-http-handlers.d.ts +7 -0
  260. package/dist/core/ingestion/languages/java/spring-non-http-handlers.js +32 -0
  261. package/dist/core/ingestion/languages/java.js +94 -3
  262. package/dist/core/ingestion/languages/javascript/captures.d.ts +6 -1
  263. package/dist/core/ingestion/languages/javascript/captures.js +262 -4
  264. package/dist/core/ingestion/languages/javascript/import-target.d.ts +17 -21
  265. package/dist/core/ingestion/languages/javascript/import-target.js +24 -41
  266. package/dist/core/ingestion/languages/javascript/index.d.ts +54 -5
  267. package/dist/core/ingestion/languages/javascript/index.js +54 -5
  268. package/dist/core/ingestion/languages/javascript/query.d.ts +1 -0
  269. package/dist/core/ingestion/languages/javascript/query.js +211 -5
  270. package/dist/core/ingestion/languages/javascript/scope-resolver.js +12 -0
  271. package/dist/core/ingestion/languages/javascript/simple-hooks.js +2 -1
  272. package/dist/core/ingestion/languages/jvm/package-siblings.js +77 -9
  273. package/dist/core/ingestion/languages/kotlin/capture-side-channel.d.ts +15 -0
  274. package/dist/core/ingestion/languages/kotlin/capture-side-channel.js +48 -0
  275. package/dist/core/ingestion/languages/kotlin/captures.js +43 -1
  276. package/dist/core/ingestion/languages/kotlin/import-target.d.ts +8 -1
  277. package/dist/core/ingestion/languages/kotlin/import-target.js +20 -123
  278. package/dist/core/ingestion/languages/kotlin/index.d.ts +1 -0
  279. package/dist/core/ingestion/languages/kotlin/index.js +1 -0
  280. package/dist/core/ingestion/languages/kotlin/module-resolution.d.ts +22 -0
  281. package/dist/core/ingestion/languages/kotlin/module-resolution.js +108 -0
  282. package/dist/core/ingestion/languages/kotlin/query.js +28 -2
  283. package/dist/core/ingestion/languages/kotlin/scope-resolver.js +23 -2
  284. package/dist/core/ingestion/languages/kotlin/spring-aop.d.ts +12 -0
  285. package/dist/core/ingestion/languages/kotlin/spring-aop.js +64 -0
  286. package/dist/core/ingestion/languages/kotlin/spring-conditionals.d.ts +12 -0
  287. package/dist/core/ingestion/languages/kotlin/spring-conditionals.js +49 -0
  288. package/dist/core/ingestion/languages/kotlin/spring-di.d.ts +2 -0
  289. package/dist/core/ingestion/languages/kotlin/spring-di.js +60 -11
  290. package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.d.ts +10 -0
  291. package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.js +41 -0
  292. package/dist/core/ingestion/languages/php/captures.d.ts +5 -0
  293. package/dist/core/ingestion/languages/php/captures.js +319 -51
  294. package/dist/core/ingestion/languages/php/import-target.d.ts +3 -4
  295. package/dist/core/ingestion/languages/php/import-target.js +192 -62
  296. package/dist/core/ingestion/languages/php/query.js +31 -0
  297. package/dist/core/ingestion/languages/python/arity-metadata.d.ts +1 -0
  298. package/dist/core/ingestion/languages/python/arity-metadata.js +1 -0
  299. package/dist/core/ingestion/languages/python/captures.js +29 -0
  300. package/dist/core/ingestion/languages/python/import-decomposer.js +22 -1
  301. package/dist/core/ingestion/languages/python/import-target.d.ts +42 -1
  302. package/dist/core/ingestion/languages/python/import-target.js +277 -91
  303. package/dist/core/ingestion/languages/python/index.d.ts +1 -1
  304. package/dist/core/ingestion/languages/python/index.js +1 -1
  305. package/dist/core/ingestion/languages/python/interpret.d.ts +52 -0
  306. package/dist/core/ingestion/languages/python/interpret.js +249 -7
  307. package/dist/core/ingestion/languages/python/query.js +9 -0
  308. package/dist/core/ingestion/languages/python/receiver-binding.d.ts +8 -6
  309. package/dist/core/ingestion/languages/python/receiver-binding.js +108 -12
  310. package/dist/core/ingestion/languages/python/scope-resolver.js +27 -4
  311. package/dist/core/ingestion/languages/python/simple-hooks.js +2 -8
  312. package/dist/core/ingestion/languages/python.js +13 -0
  313. package/dist/core/ingestion/languages/ruby/captures.js +158 -0
  314. package/dist/core/ingestion/languages/ruby/import-target.js +7 -5
  315. package/dist/core/ingestion/languages/ruby/query.js +93 -0
  316. package/dist/core/ingestion/languages/ruby/scope-resolver.js +2 -0
  317. package/dist/core/ingestion/languages/ruby/simple-hooks.d.ts +1 -1
  318. package/dist/core/ingestion/languages/ruby/simple-hooks.js +22 -1
  319. package/dist/core/ingestion/languages/rust/captures.js +39 -1
  320. package/dist/core/ingestion/languages/rust/method-owners.js +11 -1
  321. package/dist/core/ingestion/languages/rust/module-path.d.ts +126 -0
  322. package/dist/core/ingestion/languages/rust/module-path.js +214 -0
  323. package/dist/core/ingestion/languages/rust/qualified-call.d.ts +41 -0
  324. package/dist/core/ingestion/languages/rust/qualified-call.js +481 -0
  325. package/dist/core/ingestion/languages/rust/query.js +39 -6
  326. package/dist/core/ingestion/languages/rust/scope-resolver.js +21 -2
  327. package/dist/core/ingestion/languages/rust.js +17 -0
  328. package/dist/core/ingestion/languages/swift/captures.js +87 -3
  329. package/dist/core/ingestion/languages/swift/conditional-directive-preprocess.d.ts +48 -0
  330. package/dist/core/ingestion/languages/swift/conditional-directive-preprocess.js +253 -0
  331. package/dist/core/ingestion/languages/swift/import-target.js +4 -9
  332. package/dist/core/ingestion/languages/swift/query.js +17 -0
  333. package/dist/core/ingestion/languages/swift/receiver-binding.d.ts +8 -0
  334. package/dist/core/ingestion/languages/swift/receiver-binding.js +6 -2
  335. package/dist/core/ingestion/languages/swift.js +2 -0
  336. package/dist/core/ingestion/languages/typescript/captures.d.ts +90 -1
  337. package/dist/core/ingestion/languages/typescript/captures.js +267 -5
  338. package/dist/core/ingestion/languages/typescript/cjs-export-assignment.d.ts +134 -0
  339. package/dist/core/ingestion/languages/typescript/cjs-export-assignment.js +523 -0
  340. package/dist/core/ingestion/languages/typescript/cjs-module-exports.d.ts +54 -0
  341. package/dist/core/ingestion/languages/typescript/cjs-module-exports.js +191 -0
  342. package/dist/core/ingestion/languages/typescript/convex-endpoint-metadata.d.ts +7 -0
  343. package/dist/core/ingestion/languages/typescript/convex-endpoint-metadata.js +92 -0
  344. package/dist/core/ingestion/languages/typescript/file-candidates.d.ts +29 -0
  345. package/dist/core/ingestion/languages/typescript/file-candidates.js +70 -0
  346. package/dist/core/ingestion/languages/typescript/import-decomposer.d.ts +28 -1
  347. package/dist/core/ingestion/languages/typescript/import-decomposer.js +125 -10
  348. package/dist/core/ingestion/languages/typescript/import-target.d.ts +25 -37
  349. package/dist/core/ingestion/languages/typescript/import-target.js +24 -26
  350. package/dist/core/ingestion/languages/typescript/interpret.d.ts +21 -1
  351. package/dist/core/ingestion/languages/typescript/interpret.js +45 -5
  352. package/dist/core/ingestion/languages/typescript/module-resolution.d.ts +48 -0
  353. package/dist/core/ingestion/languages/typescript/module-resolution.js +171 -0
  354. package/dist/core/ingestion/languages/typescript/query.d.ts +1 -0
  355. package/dist/core/ingestion/languages/typescript/query.js +303 -14
  356. package/dist/core/ingestion/languages/typescript/receiver-binding.d.ts +17 -0
  357. package/dist/core/ingestion/languages/typescript/receiver-binding.js +27 -0
  358. package/dist/core/ingestion/languages/typescript/scope-resolver.js +27 -40
  359. package/dist/core/ingestion/languages/typescript/simple-hooks.d.ts +0 -10
  360. package/dist/core/ingestion/languages/typescript/simple-hooks.js +22 -22
  361. package/dist/core/ingestion/languages/typescript/tsconfig.d.ts +59 -0
  362. package/dist/core/ingestion/languages/typescript/tsconfig.js +292 -0
  363. package/dist/core/ingestion/languages/typescript.js +93 -2
  364. package/dist/core/ingestion/languages/vue/import-target.d.ts +6 -22
  365. package/dist/core/ingestion/languages/vue/import-target.js +11 -47
  366. package/dist/core/ingestion/languages/vue/scope-resolver.js +4 -2
  367. package/dist/core/ingestion/local-symbol-pruner.js +11 -11
  368. package/dist/core/ingestion/method-extractors/configs/csharp.js +1 -0
  369. package/dist/core/ingestion/method-extractors/generic.js +1 -0
  370. package/dist/core/ingestion/method-types.d.ts +16 -0
  371. package/dist/core/ingestion/pipeline-phases/di.d.ts +1 -1
  372. package/dist/core/ingestion/pipeline-phases/di.js +136 -21
  373. package/dist/core/ingestion/pipeline-phases/index.d.ts +2 -0
  374. package/dist/core/ingestion/pipeline-phases/index.js +2 -0
  375. package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +15 -0
  376. package/dist/core/ingestion/pipeline-phases/parse-impl.js +154 -4
  377. package/dist/core/ingestion/pipeline-phases/parse.js +5 -0
  378. package/dist/core/ingestion/pipeline-phases/processes.d.ts +3 -2
  379. package/dist/core/ingestion/pipeline-phases/processes.js +91 -6
  380. package/dist/core/ingestion/pipeline-phases/routes.js +116 -25
  381. package/dist/core/ingestion/pipeline-phases/spring-aop.d.ts +34 -0
  382. package/dist/core/ingestion/pipeline-phases/spring-aop.js +439 -0
  383. package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.d.ts +34 -0
  384. package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.js +255 -0
  385. package/dist/core/ingestion/pipeline-phases/types.d.ts +7 -0
  386. package/dist/core/ingestion/pipeline.d.ts +26 -2
  387. package/dist/core/ingestion/pipeline.js +60 -11
  388. package/dist/core/ingestion/process-processor.d.ts +109 -2
  389. package/dist/core/ingestion/process-processor.js +464 -52
  390. package/dist/core/ingestion/resolve-references.d.ts +6 -1
  391. package/dist/core/ingestion/resolve-references.js +66 -6
  392. package/dist/core/ingestion/route-extractors/constant-resolver.d.ts +8 -2
  393. package/dist/core/ingestion/route-extractors/constant-resolver.js +11 -7
  394. package/dist/core/ingestion/route-extractors/data-route-table.d.ts +40 -0
  395. package/dist/core/ingestion/route-extractors/data-route-table.js +876 -0
  396. package/dist/core/ingestion/route-extractors/dispatch-guard.d.ts +96 -0
  397. package/dist/core/ingestion/route-extractors/dispatch-guard.js +1184 -0
  398. package/dist/core/ingestion/route-extractors/java-const-resolver.d.ts +114 -0
  399. package/dist/core/ingestion/route-extractors/java-const-resolver.js +569 -0
  400. package/dist/core/ingestion/route-extractors/js-const-resolver.d.ts +192 -0
  401. package/dist/core/ingestion/route-extractors/js-const-resolver.js +1033 -0
  402. package/dist/core/ingestion/route-extractors/nest.d.ts +53 -0
  403. package/dist/core/ingestion/route-extractors/nest.js +523 -0
  404. package/dist/core/ingestion/route-extractors/spring-shared.d.ts +11 -0
  405. package/dist/core/ingestion/route-extractors/spring-shared.js +89 -0
  406. package/dist/core/ingestion/route-extractors/spring.js +214 -29
  407. package/dist/core/ingestion/scope-extractor-bridge.js +9 -1
  408. package/dist/core/ingestion/scope-extractor.d.ts +22 -7
  409. package/dist/core/ingestion/scope-extractor.js +311 -16
  410. package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +311 -21
  411. package/dist/core/ingestion/scope-resolution/contract/scope-resolver.js +16 -5
  412. package/dist/core/ingestion/scope-resolution/graph-bridge/edges.d.ts +12 -0
  413. package/dist/core/ingestion/scope-resolution/graph-bridge/edges.js +47 -0
  414. package/dist/core/ingestion/scope-resolution/graph-bridge/ids.d.ts +20 -15
  415. package/dist/core/ingestion/scope-resolution/graph-bridge/ids.js +280 -42
  416. package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.d.ts +123 -0
  417. package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +171 -17
  418. package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.d.ts +58 -1
  419. package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +137 -34
  420. package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.d.ts +30 -1
  421. package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +39 -1
  422. package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.d.ts +18 -1
  423. package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.js +113 -18
  424. package/dist/core/ingestion/scope-resolution/passes/compound-receiver.d.ts +107 -5
  425. package/dist/core/ingestion/scope-resolution/passes/compound-receiver.js +590 -33
  426. package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +3 -0
  427. package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +101 -41
  428. package/dist/core/ingestion/scope-resolution/passes/imported-value-refs.d.ts +34 -0
  429. package/dist/core/ingestion/scope-resolution/passes/imported-value-refs.js +62 -0
  430. package/dist/core/ingestion/scope-resolution/passes/property-dispatch.d.ts +5 -1
  431. package/dist/core/ingestion/scope-resolution/passes/property-dispatch.js +8 -1
  432. package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.d.ts +105 -5
  433. package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +931 -92
  434. package/dist/core/ingestion/scope-resolution/passes/return-shape-members.d.ts +58 -0
  435. package/dist/core/ingestion/scope-resolution/passes/return-shape-members.js +458 -0
  436. package/dist/core/ingestion/scope-resolution/passes/unique-name-properties.d.ts +180 -0
  437. package/dist/core/ingestion/scope-resolution/passes/unique-name-properties.js +418 -0
  438. package/dist/core/ingestion/scope-resolution/pipeline/phase.d.ts +29 -0
  439. package/dist/core/ingestion/scope-resolution/pipeline/phase.js +57 -0
  440. package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +55 -1
  441. package/dist/core/ingestion/scope-resolution/pipeline/run.js +241 -19
  442. package/dist/core/ingestion/scope-resolution/resolution-outcome.d.ts +112 -2
  443. package/dist/core/ingestion/scope-resolution/resolution-outcome.js +38 -1
  444. package/dist/core/ingestion/scope-resolution/scope/namespace-targets.d.ts +25 -3
  445. package/dist/core/ingestion/scope-resolution/scope/namespace-targets.js +36 -16
  446. package/dist/core/ingestion/scope-resolution/scope/walkers.d.ts +210 -9
  447. package/dist/core/ingestion/scope-resolution/scope/walkers.js +905 -22
  448. package/dist/core/ingestion/scope-resolution/summary-maps.d.ts +28 -0
  449. package/dist/core/ingestion/scope-resolution/summary-maps.js +50 -0
  450. package/dist/core/ingestion/scope-resolution/undecided-satisfaction.d.ts +55 -0
  451. package/dist/core/ingestion/scope-resolution/undecided-satisfaction.js +37 -0
  452. package/dist/core/ingestion/scope-resolution/unresolved-receivers.d.ts +109 -0
  453. package/dist/core/ingestion/scope-resolution/unresolved-receivers.js +204 -0
  454. package/dist/core/ingestion/scope-resolution/utils/definition-id.d.ts +13 -0
  455. package/dist/core/ingestion/scope-resolution/utils/definition-id.js +19 -0
  456. package/dist/core/ingestion/scope-resolution/utils/generic-instantiation.d.ts +171 -0
  457. package/dist/core/ingestion/scope-resolution/utils/generic-instantiation.js +218 -0
  458. package/dist/core/ingestion/scope-resolution/workspace-index-types.d.ts +34 -0
  459. package/dist/core/ingestion/scope-resolution/workspace-index-types.js +15 -0
  460. package/dist/core/ingestion/scope-resolution/workspace-index.d.ts +7 -20
  461. package/dist/core/ingestion/tree-sitter-queries.d.ts +11 -11
  462. package/dist/core/ingestion/tree-sitter-queries.js +678 -4
  463. package/dist/core/ingestion/type-env.js +11 -7
  464. package/dist/core/ingestion/type-extractors/jvm.js +2 -2
  465. package/dist/core/ingestion/type-extractors/shared.d.ts +17 -0
  466. package/dist/core/ingestion/type-extractors/shared.js +16 -0
  467. package/dist/core/ingestion/type-extractors/types.d.ts +12 -0
  468. package/dist/core/ingestion/type-extractors/typescript.d.ts +20 -0
  469. package/dist/core/ingestion/type-extractors/typescript.js +26 -0
  470. package/dist/core/ingestion/utils/ast-helpers.d.ts +322 -16
  471. package/dist/core/ingestion/utils/ast-helpers.js +727 -150
  472. package/dist/core/ingestion/utils/call-analysis.d.ts +27 -22
  473. package/dist/core/ingestion/utils/call-analysis.js +202 -7
  474. package/dist/core/ingestion/utils/callable-flow-captures.d.ts +59 -0
  475. package/dist/core/ingestion/utils/callable-flow-captures.js +51 -1
  476. package/dist/core/ingestion/utils/callable-labels.d.ts +25 -0
  477. package/dist/core/ingestion/utils/callable-labels.js +31 -0
  478. package/dist/core/ingestion/utils/effective-ram.d.ts +40 -0
  479. package/dist/core/ingestion/utils/effective-ram.js +58 -0
  480. package/dist/core/ingestion/utils/line-base.d.ts +14 -0
  481. package/dist/core/ingestion/utils/line-base.js +14 -0
  482. package/dist/core/ingestion/utils/method-props.d.ts +27 -4
  483. package/dist/core/ingestion/utils/method-props.js +29 -4
  484. package/dist/core/ingestion/utils/receiver-chain-captures.d.ts +31 -0
  485. package/dist/core/ingestion/utils/receiver-chain-captures.js +57 -0
  486. package/dist/core/ingestion/utils/receiver-chain-codec.d.ts +89 -0
  487. package/dist/core/ingestion/utils/receiver-chain-codec.js +182 -0
  488. package/dist/core/ingestion/utils/scope-tree-walk.d.ts +22 -0
  489. package/dist/core/ingestion/utils/scope-tree-walk.js +33 -0
  490. package/dist/core/ingestion/utils/template-arguments.d.ts +96 -0
  491. package/dist/core/ingestion/utils/template-arguments.js +196 -0
  492. package/dist/core/ingestion/utils/type-parameters.d.ts +49 -0
  493. package/dist/core/ingestion/utils/type-parameters.js +206 -0
  494. package/dist/core/ingestion/workers/callable-id.d.ts +80 -0
  495. package/dist/core/ingestion/workers/callable-id.js +125 -0
  496. package/dist/core/ingestion/workers/parse-worker.d.ts +14 -1
  497. package/dist/core/ingestion/workers/parse-worker.js +493 -54
  498. package/dist/core/ingestion/workers/worker-pool.d.ts +20 -27
  499. package/dist/core/ingestion/workers/worker-pool.js +91 -3
  500. package/dist/core/lbug/csv-generator.d.ts +27 -0
  501. package/dist/core/lbug/csv-generator.js +72 -17
  502. package/dist/core/lbug/extension-load-error.js +13 -2
  503. package/dist/core/lbug/extension-loader.d.ts +29 -0
  504. package/dist/core/lbug/extension-loader.js +31 -6
  505. package/dist/core/lbug/graph-emit-sink.d.ts +264 -0
  506. package/dist/core/lbug/graph-emit-sink.js +581 -0
  507. package/dist/core/lbug/lbug-adapter.d.ts +290 -11
  508. package/dist/core/lbug/lbug-adapter.js +652 -69
  509. package/dist/core/lbug/native-check.d.ts +21 -0
  510. package/dist/core/lbug/native-check.js +248 -32
  511. package/dist/core/lbug/pdg-emit-sink.d.ts +13 -4
  512. package/dist/core/lbug/pdg-emit-sink.js +21 -111
  513. package/dist/core/lbug/pool-adapter.d.ts +9 -0
  514. package/dist/core/lbug/pool-adapter.js +164 -14
  515. package/dist/core/lbug/query-batch.d.ts +75 -0
  516. package/dist/core/lbug/query-batch.js +102 -0
  517. package/dist/core/lbug/rel-pair-routing.d.ts +160 -2
  518. package/dist/core/lbug/rel-pair-routing.js +228 -10
  519. package/dist/core/lbug/schema.d.ts +163 -4
  520. package/dist/core/lbug/schema.js +404 -159
  521. package/dist/core/lbug/sync-csv-writer.d.ts +47 -0
  522. package/dist/core/lbug/sync-csv-writer.js +108 -0
  523. package/dist/core/run-analyze.d.ts +147 -0
  524. package/dist/core/run-analyze.js +1215 -179
  525. package/dist/core/search/bm25-index.d.ts +11 -0
  526. package/dist/core/search/bm25-index.js +60 -26
  527. package/dist/core/search/fts-indexes.d.ts +150 -9
  528. package/dist/core/search/fts-indexes.js +241 -23
  529. package/dist/core/wiki/graph-queries.js +145 -112
  530. package/dist/core/wiki/llm-client.d.ts +29 -3
  531. package/dist/core/wiki/llm-client.js +47 -12
  532. package/dist/core/wiki/prompts.d.ts +19 -0
  533. package/dist/core/wiki/prompts.js +20 -1
  534. package/dist/lib/utils.d.ts +113 -0
  535. package/dist/lib/utils.js +185 -0
  536. package/dist/mcp/local/aop-metadata.d.ts +77 -0
  537. package/dist/mcp/local/aop-metadata.js +227 -0
  538. package/dist/mcp/local/bean-metadata.d.ts +2 -1
  539. package/dist/mcp/local/bean-metadata.js +22 -1
  540. package/dist/mcp/local/convex-metadata.d.ts +8 -0
  541. package/dist/mcp/local/convex-metadata.js +45 -0
  542. package/dist/mcp/local/local-backend.d.ts +174 -11
  543. package/dist/mcp/local/local-backend.js +1678 -331
  544. package/dist/mcp/local/path-predicate.d.ts +19 -0
  545. package/dist/mcp/local/path-predicate.js +21 -0
  546. package/dist/mcp/local/pdg-impact.d.ts +132 -10
  547. package/dist/mcp/local/pdg-impact.js +391 -98
  548. package/dist/mcp/repository-policy.d.ts +1 -0
  549. package/dist/mcp/repository-policy.js +5 -0
  550. package/dist/mcp/resources.js +26 -4
  551. package/dist/mcp/server.js +23 -13
  552. package/dist/mcp/tools.d.ts +8 -0
  553. package/dist/mcp/tools.js +76 -23
  554. package/dist/server/analyze-job.d.ts +37 -2
  555. package/dist/server/analyze-job.js +13 -2
  556. package/dist/server/analyze-launch.d.ts +1 -1
  557. package/dist/server/analyze-launch.js +79 -10
  558. package/dist/server/analyze-worker-core.d.ts +1 -1
  559. package/dist/server/analyze-worker-core.js +10 -1
  560. package/dist/server/analyze-worker-ipc.d.ts +1 -1
  561. package/dist/server/analyze-worker-ipc.js +4 -0
  562. package/dist/server/analyze-worker-protocol.d.ts +59 -0
  563. package/dist/server/analyze-worker-protocol.js +1 -0
  564. package/dist/server/analyze-worker.d.ts +1 -17
  565. package/dist/server/api.d.ts +2 -11
  566. package/dist/server/api.js +164 -163
  567. package/dist/server/embed-run-outcome.d.ts +89 -0
  568. package/dist/server/embed-run-outcome.js +88 -0
  569. package/dist/server/git-clone.js +6 -2
  570. package/dist/server/middleware.d.ts +116 -9
  571. package/dist/server/middleware.js +291 -22
  572. package/dist/server/sse-progress.d.ts +41 -0
  573. package/dist/server/sse-progress.js +125 -0
  574. package/dist/storage/branch-index.d.ts +11 -6
  575. package/dist/storage/branch-index.js +15 -7
  576. package/dist/storage/file-hash.js +2 -2
  577. package/dist/storage/fs-atomic.d.ts +25 -0
  578. package/dist/storage/fs-atomic.js +42 -0
  579. package/dist/storage/git.d.ts +131 -0
  580. package/dist/storage/git.js +236 -2
  581. package/dist/storage/index-lock.d.ts +102 -0
  582. package/dist/storage/index-lock.js +660 -0
  583. package/dist/storage/parse-cache.js +588 -3
  584. package/dist/storage/parsedfile-store.js +76 -6
  585. package/dist/storage/repo-manager.d.ts +54 -435
  586. package/dist/storage/repo-manager.js +312 -215
  587. package/dist/storage/repo-meta.d.ts +530 -0
  588. package/dist/storage/repo-meta.js +100 -0
  589. package/dist/types/pipeline.d.ts +37 -0
  590. package/hooks/antigravity/gitnexus-antigravity-hook.cjs +1 -1
  591. package/hooks/claude/gitnexus-hook.cjs +1 -1
  592. package/hooks/claude/resolve-analyze-cmd.cjs +80 -13
  593. package/package.json +11 -2
  594. package/scripts/cross-platform-shard.ts +153 -0
  595. package/scripts/cross-platform-tests.ts +122 -0
  596. package/scripts/run-cross-platform.ts +16 -5
  597. package/skills/gitnexus-cli.md +3 -3
  598. package/skills/gitnexus-debugging.md +37 -7
  599. package/skills/gitnexus-exploring.md +26 -4
  600. package/skills/gitnexus-impact-analysis.md +71 -10
  601. package/skills/gitnexus-plan/README.md +11 -6
  602. package/skills/gitnexus-plan/references/evidence-provenance.md +49 -12
  603. package/skills/gitnexus-plan/scripts/evidence-provenance.mjs +654 -372
  604. package/skills/gitnexus-refactoring.md +48 -5
  605. package/skills/gitnexus-review/SKILL.md +12 -6
  606. package/skills/gitnexus-review/ci-personas/ci-adversarial-lens.md +1 -1
  607. package/skills/gitnexus-review/ci-personas/ci-blast-radius-lens.md +1 -1
  608. package/skills/gitnexus-review/ci-personas/ci-correctness-lens.md +1 -1
  609. package/skills/gitnexus-review/ci-personas/ci-coverage-lens.md +1 -1
  610. package/skills/gitnexus-review/ci-personas/ci-critic-lens.md +1 -1
  611. package/skills/gitnexus-review/ci-personas/ci-security-lens.md +1 -1
  612. package/skills/gitnexus-taint-analysis.md +13 -7
  613. package/skills/gitnexus-work/SKILL.md +4 -1
  614. package/skills/gitnexus-work/references/evidence-provenance.md +49 -12
  615. package/skills/gitnexus-work/scripts/evidence-provenance.mjs +654 -372
  616. package/vendor/leiden/utils.cjs +28 -1
  617. package/web/assets/ProcessFlowModal-Badh2Pbg.js +24 -0
  618. package/web/assets/{__vite-browser-external-bMKyYQkO.js → __vite-browser-external-COxE8F0G.js} +1 -1
  619. package/web/assets/abnfDiagram-QNN2D4NM-Cq2djWWe.js +1 -0
  620. package/web/assets/agent-Dr4l5EOp.js +662 -0
  621. package/web/assets/architecture-TIHT7OUA-V6N4J3SY-fTePvLoe.js +1 -0
  622. package/web/assets/architectureDiagram-OT7VKSJ7-mKEXxkeF.js +36 -0
  623. package/web/assets/{blockDiagram-7IZFK4PR-DBefcjof.js → blockDiagram-54WLDVWM-Dg_hrRWE.js} +4 -4
  624. package/web/assets/{c4Diagram-Y2BXMSZH-EjWnjEJl.js → c4Diagram-X2LASM7V-CnhoT4aV.js} +2 -2
  625. package/web/assets/chunk-224SPVON-B8gxtXpy.js +1 -0
  626. package/web/assets/chunk-2AEHWXPW-CV4r6-1I.js +127 -0
  627. package/web/assets/chunk-2SREHG4O-Dip42xOq.js +1 -0
  628. package/web/assets/chunk-4RFN2BYJ-DHHWuC-n.js +1 -0
  629. package/web/assets/chunk-66DQ2XMT-CM0xjFAN.js +1 -0
  630. package/web/assets/chunk-6BELYETK-ChsYtfHW.js +1 -0
  631. package/web/assets/{chunk-LII3EMHJ-BL6lKJ_P.js → chunk-6L755F7B-CMhLBxi2.js} +1 -1
  632. package/web/assets/{chunk-QA3QBVWF-DVXPOIxe.js → chunk-7CWYLC5S-DRgGkkpF.js} +1 -1
  633. package/web/assets/{chunk-ZXARS5L4-C3v-4Fsw.js → chunk-A7VWPJGB-B4O3oQdQ.js} +1 -1
  634. package/web/assets/chunk-BI6VK774-D0oaWk8V.js +1 -0
  635. package/web/assets/chunk-D6VWDJW2-BxcBdZ9c.js +2 -0
  636. package/web/assets/chunk-DMV4VAQV-Bn6WXDSX.js +4 -0
  637. package/web/assets/chunk-E5QJAATJ-dh-5CtIV.js +2 -0
  638. package/web/assets/chunk-EQFTRU2I-1ix7TzW9.js +2 -0
  639. package/web/assets/chunk-FWYVLQTC-BgDItRzJ.js +1 -0
  640. package/web/assets/chunk-HNC4WDU7-DoU3KnA7.js +1 -0
  641. package/web/assets/chunk-L5GCOVLC-CE2w8Nm_.js +161 -0
  642. package/web/assets/chunk-LAHSG3N2-Bz4hcn0N.js +321 -0
  643. package/web/assets/chunk-LORZLZWG-B57uGw2N.js +88 -0
  644. package/web/assets/chunk-NLANEA3F-XpH_NPA5.js +62 -0
  645. package/web/assets/chunk-NV3KIAZN-5yvcpMiu.js +1 -0
  646. package/web/assets/chunk-OIYT25JQ-CQ6KOZGX.js +1 -0
  647. package/web/assets/chunk-PE7DX7ZZ-CCvRVj43.js +10 -0
  648. package/web/assets/chunk-Q67WD55A-BWCH2SVz.js +156 -0
  649. package/web/assets/chunk-RRFMTAIC-CMN0wcYA.js +1 -0
  650. package/web/assets/{chunk-RLI5ZMPA-CkXZ0y0U.js → chunk-SATU7PGQ-B1zhgOvc.js} +1 -1
  651. package/web/assets/chunk-STOV2HOB-GnExfzIX.js +1 -0
  652. package/web/assets/{chunk-INKRHTLW-Ckl3_KkO.js → chunk-SZD42YQK-ijyKKVr1.js} +21 -21
  653. package/web/assets/{chunk-LCXTWHL2-C162wE5z.js → chunk-TFPGFQPA-Dj6a-0pC.js} +3 -3
  654. package/web/assets/chunk-TGVD4F4B-BMc31Gj2.js +2 -0
  655. package/web/assets/chunk-TZUXEDM2-B7p9AcTw.js +1 -0
  656. package/web/assets/chunk-UAT7B5JY-DW-A_fpI.js +1 -0
  657. package/web/assets/{chunk-6764PJDD-C7xxk063.js → chunk-VE5CLXGZ-C1vB7wpY.js} +1 -1
  658. package/web/assets/{chunk-RG4AUYOV-ZNgyLFq6.js → chunk-VJFVEZTB-CX66F2ep.js} +3 -3
  659. package/web/assets/chunk-VY5UBI4V-yxPQAWxw.js +1 -0
  660. package/web/assets/chunk-WJBAP47W-BckNkuEN.js +1 -0
  661. package/web/assets/chunk-XNMVGMAZ-Cg_LnPtj.js +1 -0
  662. package/web/assets/classDiagram-VPOSVPXH-BjOiXA_C.js +1 -0
  663. package/web/assets/classDiagram-v2-5VFNUXQA-BjOiXA_C.js +1 -0
  664. package/web/assets/{cose-bilkent-UX7MHV2Q-BmnZ7Mvj.js → cose-bilkent-RZA4XIPR-BHpK4Crp.js} +1 -1
  665. package/web/assets/cynefin-VYW2F7L2-2VAHYKR6-DAsF6GZv.js +1 -0
  666. package/web/assets/cynefinDiagram-TR7LZUCG-C3Iar9lZ.js +62 -0
  667. package/web/assets/dagre-K64A6Z3X-CUwi79mA.js +4 -0
  668. package/web/assets/diagram-2TLGJV2N-C2F5Nfym.js +30 -0
  669. package/web/assets/diagram-JCD7PQ7C-DC5-9FRr.js +24 -0
  670. package/web/assets/{diagram-HNR7UZ2L-DVRltWbL.js → diagram-KFBZAVDW-Dfmf_4ti.js} +3 -3
  671. package/web/assets/diagram-L7DVE3PN-GIRyVUtt.js +41 -0
  672. package/web/assets/diagram-YP3FGXHI-CyNFYtkd.js +24 -0
  673. package/web/assets/ebnfDiagram-DRHRQJWO-D8_CI4ZF.js +1 -0
  674. package/web/assets/erDiagram-SZLJLQMB-CohQjznC.js +85 -0
  675. package/web/assets/error-D9MtuG9s.js +1 -0
  676. package/web/assets/eventmodeling-45OFAUF4-AOUJWSLX-BvTc6iQi.js +1 -0
  677. package/web/assets/flowDiagram-BWE6NHOH-B6RnEvD9.js +1 -0
  678. package/web/assets/ganttDiagram-2QTCJSNI-Cks_mEcF.js +292 -0
  679. package/web/assets/gitGraph-TEB2WS4Q-U5VWYIBC-Dy7CCSZ5.js +1 -0
  680. package/web/assets/gitGraphDiagram-VVZAVV5G-CG41cIVc.js +106 -0
  681. package/web/assets/{index-D7mTFcvQ.js → index-2zdvEdzg.js} +51 -51
  682. package/web/assets/index-CJDpyH-n.css +2 -0
  683. package/web/assets/info-DKCQHKI2-DX6KST54-BLJg1ikX.js +1 -0
  684. package/web/assets/infoDiagram-FY4PZKRE-BJ3vPVwW.js +2 -0
  685. package/web/assets/{ishikawaDiagram-BNXS4ZKH-XpjJRU9h.js → ishikawaDiagram-4JDSWWDM-DmqWtjkl.js} +2 -2
  686. package/web/assets/{journeyDiagram-M6C3CM3L-C6wjooas.js → journeyDiagram-QUS3FAKT-XAzVzrQW.js} +3 -3
  687. package/web/assets/{kanban-definition-75IXJCU3-5_UVY79g.js → kanban-definition-D4L7SQKK-YurRnmYn.js} +6 -6
  688. package/web/assets/katex-C5OPUE3Q-Bnbavtmu.js +257 -0
  689. package/web/assets/{mindmap-definition-2TDM6QVE-8xDLzk2e.js → mindmap-definition-66QP5TD6-ChrWWnil.js} +5 -5
  690. package/web/assets/node.browser-U-KyT5AW.js +1 -0
  691. package/web/assets/packet-7NZHBO7P-5WG45QPS-KUxcuvaA.js +1 -0
  692. package/web/assets/pegDiagram-YKIO5C6U-QGeQLEq2.js +1 -0
  693. package/web/assets/pie-RZYD4A2V-2OCZ2VTD-DPs08kJY.js +1 -0
  694. package/web/assets/pieDiagram-YPY3TKG5-BuT3MYzm.js +39 -0
  695. package/web/assets/{quadrantDiagram-VICAPDV7-DR54jOeR.js → quadrantDiagram-VO5QLCXA-B7098wSc.js} +3 -3
  696. package/web/assets/radar-I7S5WNFK-EPLSA35B-w5F0K3a7.js +1 -0
  697. package/web/assets/railroad-3IZDKUUU-PWFQV6Y6-Bu668yqY.js +1 -0
  698. package/web/assets/railroad-abnf-AHOZXSZD-JYYJX3BS-B6ghpETS.js +1 -0
  699. package/web/assets/railroad-ebnf-EBAXGLYW-RBZ4ONAP-D-XmHh3M.js +1 -0
  700. package/web/assets/railroad-peg-LSFZ7HO6-KHNPXGPG-mhkrhzEn.js +1 -0
  701. package/web/assets/railroadDiagram-M77LTMSB-AXu4vxk_.js +1 -0
  702. package/web/assets/{requirementDiagram-JXO7QTGE-PEkg7sKC.js → requirementDiagram-RASO5HTO-B-l8InpK.js} +4 -4
  703. package/web/assets/{sankeyDiagram-URQDO5SZ-DDWEtjcs.js → sankeyDiagram-F32LOJ6L-Kd7zjJgX.js} +3 -3
  704. package/web/assets/{sequenceDiagram-VS2MUI6T-Bv-uwANx.js → sequenceDiagram-URATNSBD-BlcdY9DS.js} +7 -7
  705. package/web/assets/sizeCapture-5GORAGP4-BEqQzsxs.js +1 -0
  706. package/web/assets/src-C5sx_gMp.js +1 -0
  707. package/web/assets/stateDiagram-DODFXNG5-DTdHc-fF.js +1 -0
  708. package/web/assets/stateDiagram-v2-JNMM5JRA-DioNLDDo.js +1 -0
  709. package/web/assets/swimlanes-OSWOYLSK-CA0ofdwY.js +2 -0
  710. package/web/assets/swimlanesDiagram-RHGX2RDE-PkwUdckC.js +8 -0
  711. package/web/assets/{timeline-definition-O6YCAMPW-Qmsuo7qS.js → timeline-definition-WJXWRH4I-DUfp1R3E.js} +3 -3
  712. package/web/assets/treeView-QDETBFTQ-EHYTSQNO-C5lpBgPm.js +1 -0
  713. package/web/assets/treemap-6X3UGDF4-CCWCF7EK-BB0ZyO-B.js +1 -0
  714. package/web/assets/vennDiagram-K3VCMQLI-Bj-FN-XS.js +34 -0
  715. package/web/assets/wardley-OPB4EBWU-6OWERDVT-CEA3Nq0j.js +1 -0
  716. package/web/assets/wardleyDiagram-XK6FUAWV-CVV0dHFr.js +78 -0
  717. package/web/assets/xychartDiagram-5VRUVLCW-CK_rbSWE.js +7 -0
  718. package/web/index.html +16 -15
  719. package/dist/core/ingestion/languages/python/index-stats.d.ts +0 -18
  720. package/dist/core/ingestion/languages/python/index-stats.js +0 -25
  721. package/web/assets/ProcessFlowModal-CwkpVkv-.js +0 -22
  722. package/web/assets/agent-Ds-lkZjX.js +0 -626
  723. package/web/assets/architecture-7EHR7CIX-6QZW5X65-BVWFvYz2.js +0 -1
  724. package/web/assets/architectureDiagram-UL44E2DR-CmG3uPWf.js +0 -36
  725. package/web/assets/chunk-2T2R6R2M-Bb6Sy3_j.js +0 -4
  726. package/web/assets/chunk-2UTLFMKG-CXlhF3Pt.js +0 -1
  727. package/web/assets/chunk-3SSMPTDK-rPsRM1x0.js +0 -321
  728. package/web/assets/chunk-4R4BOZG6-Be_F0JoX.js +0 -159
  729. package/web/assets/chunk-67TQ5CYL-CA7OhIEf.js +0 -124
  730. package/web/assets/chunk-7J6CGLKN-BlKwgXKs.js +0 -10
  731. package/web/assets/chunk-C62D2QBJ-3gdL8EKc.js +0 -1
  732. package/web/assets/chunk-CEXFNPSA-CjwtMDkc.js +0 -1
  733. package/web/assets/chunk-J5EP6P6S-L19oz55R.js +0 -1
  734. package/web/assets/chunk-KGFNY3KK-BZeP-55u.js +0 -62
  735. package/web/assets/chunk-KGYTTC2M-zm6n242I.js +0 -1
  736. package/web/assets/chunk-KNLZD3CH-BGlP6X9R.js +0 -1
  737. package/web/assets/chunk-LRIF4GLE-n59lhprL.js +0 -1
  738. package/web/assets/chunk-RERM46MO-B5dAdWpP.js +0 -1
  739. package/web/assets/chunk-RKZBBQEN-MyIQbGgD.js +0 -1
  740. package/web/assets/chunk-T2UQINTJ-BEyXhZWe.js +0 -1
  741. package/web/assets/chunk-UP6H54XL-BG-n7qDp.js +0 -1
  742. package/web/assets/chunk-UXSXWOXI-CW1_r5cS.js +0 -1
  743. package/web/assets/chunk-UY5QBCOK-ByqTVLvh.js +0 -1
  744. package/web/assets/chunk-VU6ZFW4Y-BLeasdkU.js +0 -2
  745. package/web/assets/classDiagram-KGZ6W3CR-olpO3fMe.js +0 -1
  746. package/web/assets/classDiagram-v2-72OJOZXJ-olpO3fMe.js +0 -1
  747. package/web/assets/dagre-ND4H6XIP-CY4iIF7v.js +0 -4
  748. package/web/assets/diagram-3NCE3AQN-CO6QpzEE.js +0 -43
  749. package/web/assets/diagram-GF46GFSD-B2atbzmU.js +0 -24
  750. package/web/assets/diagram-QXG6HAR7-DR6AHD2h.js +0 -24
  751. package/web/assets/diagram-WEQXMOUZ-DkpoMwTL.js +0 -10
  752. package/web/assets/erDiagram-L5TCEMPS-n8g_90bc.js +0 -85
  753. package/web/assets/eventmodeling-FCH6USID-MREXMVOE-CgFBM7e-.js +0 -1
  754. package/web/assets/flowDiagram-H6V6AXG4-SGMDiCkB.js +0 -162
  755. package/web/assets/ganttDiagram-JCBTUEKG-Cb3UBqRS.js +0 -292
  756. package/web/assets/gitGraph-WXDBUCRP-R675I2BI-DCJv7SII.js +0 -1
  757. package/web/assets/gitGraphDiagram-S2ZK5IYY-Bs9CR7tq.js +0 -106
  758. package/web/assets/index-CX_fADmQ.css +0 -2
  759. package/web/assets/info-J43DQDTF-KCYPFFUO-BfNy-9Nd.js +0 -1
  760. package/web/assets/infoDiagram-3YFTVSEB-T368on4D.js +0 -2
  761. package/web/assets/katex-K3KEBU37-qRQBy-EZ.js +0 -261
  762. package/web/assets/node-Ct_zna8U.js +0 -8
  763. package/web/assets/packet-YPE3B663-LP52Z2RK-D4qkeG9k.js +0 -1
  764. package/web/assets/pie-LRSECV5Y-TCRJHUBD-B_yMKyQa.js +0 -1
  765. package/web/assets/pieDiagram-CU6KROY3-Bv4LpAbr.js +0 -30
  766. package/web/assets/radar-GUYGQ44K-RDLRG3WG-DeD6yN_0.js +0 -1
  767. package/web/assets/sdk-CzHHH8tD.js +0 -37
  768. package/web/assets/src-Cv1eWg0o.js +0 -1
  769. package/web/assets/stateDiagram-7D4R322I-DVNjmkEq.js +0 -1
  770. package/web/assets/stateDiagram-v2-36443NZ5-CyN4Fh7_.js +0 -1
  771. package/web/assets/treeView-BLDUP644-QA4HXRO3-CDuSYnd4.js +0 -1
  772. package/web/assets/treemap-LRROVOQU-LLAWBHMP-imazucyJ.js +0 -1
  773. package/web/assets/vennDiagram-MWXL3ELB-BD1iK1SX.js +0 -34
  774. package/web/assets/wardley-L42UT6IY-5TKZOOLJ-DqrT9tB8.js +0 -1
  775. package/web/assets/wardleyDiagram-CUQ6CDDI-D6TzLVob.js +0 -78
  776. package/web/assets/xychartDiagram-N2JHSOCM-CoZ_Tits.js +0 -7
  777. /package/web/assets/{chunk-7W6UQGC5-pyKGssV3.js → chunk-LIEV3EAG-pyKGssV3.js} +0 -0
@@ -12,7 +12,34 @@
12
12
  * The `ScopeResolver` hook signature is `(targetRaw, fromFile, allFilePaths)`;
13
13
  * `targetRaw` arrives already quote-stripped from `interpretDartImport`.
14
14
  */
15
+ import { perFileSet } from '../../import-resolvers/per-file-set.js';
15
16
  import { DART_HERITAGE_PREFIX } from './interpret.js';
17
+ const getDartFileIndex = perFileSet((allFilePaths) => {
18
+ const byBasename = new Map();
19
+ for (const fp of allFilePaths) {
20
+ const base = fp.slice(fp.lastIndexOf('/') + 1);
21
+ let bucket = byBasename.get(base);
22
+ if (bucket === undefined) {
23
+ bucket = [];
24
+ byBasename.set(base, bucket);
25
+ }
26
+ bucket.push(fp);
27
+ }
28
+ return { byBasename };
29
+ });
30
+ /** First file (in Set-iteration order) that IS `candidate` or ends with
31
+ * `/<candidate>` — the exact predicate of the scans this replaces. */
32
+ function findByPathSuffix(allFilePaths, candidate) {
33
+ const bucket = getDartFileIndex(allFilePaths).byBasename.get(candidate.slice(candidate.lastIndexOf('/') + 1));
34
+ if (bucket === undefined)
35
+ return null;
36
+ const suffix = '/' + candidate;
37
+ for (const fp of bucket) {
38
+ if (fp === candidate || fp.endsWith(suffix))
39
+ return fp;
40
+ }
41
+ return null;
42
+ }
16
43
  /** Resolve a relative path against the importer's directory, normalizing
17
44
  * `.`/`..` segments, then confirm it exists in the workspace file set. */
18
45
  function resolveRelative(rel, fromFile, allFilePaths) {
@@ -31,11 +58,7 @@ function resolveRelative(rel, fromFile, allFilePaths) {
31
58
  if (allFilePaths.has(target))
32
59
  return target;
33
60
  // Suffix fallback for absolute/rooted workspace paths.
34
- for (const fp of allFilePaths) {
35
- if (fp === target || fp.endsWith('/' + target))
36
- return fp;
37
- }
38
- return null;
61
+ return findByPathSuffix(allFilePaths, target);
39
62
  }
40
63
  export function resolveDartImportTarget(targetRaw, fromFile, allFilePaths) {
41
64
  if (targetRaw.startsWith(DART_HERITAGE_PREFIX))
@@ -52,11 +75,11 @@ export function resolveDartImportTarget(targetRaw, fromFile, allFilePaths) {
52
75
  if (slash === -1)
53
76
  return null;
54
77
  const relPath = targetRaw.slice(slash + 1);
78
+ // Candidate priority is load-bearing: `lib/<rel>` before bare `<rel>`.
55
79
  for (const candidate of [`lib/${relPath}`, relPath]) {
56
- for (const fp of allFilePaths) {
57
- if (fp === candidate || fp.endsWith('/' + candidate))
58
- return fp;
59
- }
80
+ const hit = findByPathSuffix(allFilePaths, candidate);
81
+ if (hit !== null)
82
+ return hit;
60
83
  }
61
84
  return null; // external package
62
85
  }
@@ -19,7 +19,7 @@
19
19
  * - `scope-resolver.ts` — `ScopeResolver` registered in `SCOPE_RESOLVERS`
20
20
  * - `cache-stats.ts` — PROF_SCOPE_RESOLUTION cache hit/miss counters
21
21
  */
22
- export { emitDartScopeCaptures } from './captures.js';
22
+ export { emitDartScopeCaptures, dartScopeOwnsReceivers } from './captures.js';
23
23
  export { getDartCaptureCacheStats, resetDartCaptureCacheStats } from './cache-stats.js';
24
24
  export { interpretDartImport, interpretDartTypeBinding, normalizeDartType, DART_HERITAGE_PREFIX, } from './interpret.js';
25
25
  export { dartMergeBindings } from './merge-bindings.js';
@@ -19,7 +19,7 @@
19
19
  * - `scope-resolver.ts` — `ScopeResolver` registered in `SCOPE_RESOLVERS`
20
20
  * - `cache-stats.ts` — PROF_SCOPE_RESOLUTION cache hit/miss counters
21
21
  */
22
- export { emitDartScopeCaptures } from './captures.js';
22
+ export { emitDartScopeCaptures, dartScopeOwnsReceivers } from './captures.js';
23
23
  export { getDartCaptureCacheStats, resetDartCaptureCacheStats } from './cache-stats.js';
24
24
  export { interpretDartImport, interpretDartTypeBinding, normalizeDartType, DART_HERITAGE_PREFIX, } from './interpret.js';
25
25
  export { dartMergeBindings } from './merge-bindings.js';
@@ -40,7 +40,15 @@ const DART_SCOPE_QUERY = `
40
40
  (enum_declaration) @scope.class
41
41
 
42
42
  ; ── Declarations — types ─────────────────────────────────────────────────────
43
- (class_definition name: (identifier) @declaration.name) @declaration.class
43
+ ; The type-parameter list is matched as an UNNAMED optional child: the Dart
44
+ ; grammar hangs \`type_parameters\` off \`class_definition\` without a field name.
45
+ ; Recording it is what lets instantiation-aware interface dispatch tell a type
46
+ ; VARIABLE (\`class Box<T> implements Validator<T>\`) from a concrete argument
47
+ ; (\`class V implements Validator<String>\`) — see #2912; absent parameters are
48
+ ; indistinguishable from a language that captures none, and read as unknown.
49
+ (class_definition
50
+ name: (identifier) @declaration.name
51
+ (type_parameters)? @declaration.type-parameters) @declaration.class
44
52
  (mixin_declaration (identifier) @declaration.name) @declaration.trait
45
53
  (extension_declaration name: (identifier) @declaration.name) @declaration.class
46
54
  (enum_declaration name: (identifier) @declaration.name) @declaration.enum
@@ -90,6 +98,43 @@ const DART_SCOPE_QUERY = `
90
98
  (function_signature
91
99
  name: (identifier) @declaration.name) @declaration.function)
92
100
 
101
+ ; ── Declarations — closure bound to a local ──────────────────────────────────
102
+ ;
103
+ ; var handler = (int x) => target(x); / var blk = (int y) { ... };
104
+ ;
105
+ ; Anchor discipline (same contract as javascript/query.ts): @declaration.function
106
+ ; sits on the INNER function_expression, NOT on the local_variable_declaration
107
+ ; wrapper. Dart is the one language that declares NO @scope.function in this
108
+ ; file — its function scopes are SYNTHESIZED in captures.ts from
109
+ ; declNode + findFunctionBody(declNode). So this rule deliberately does not add
110
+ ; a @scope.function of its own: doing that would collide with the synthesized
111
+ ; one at identical range, and duplicate scope ids make buildScopeTree throw,
112
+ ; which drops the whole file. Instead findFunctionBody now understands a
113
+ ; closure's child function_expression_body, so the existing synthesis produces
114
+ ; exactly one scope, anchored on the same node as the declaration (#2699 S4).
115
+ ;; THREE binding shapes, not one. Dart wraps only the FIRST local declarator in
116
+ ;; initialized_variable_definition; a top-level var and every later declarator
117
+ ;; are initialized_identifier, and a top-level final/const is
118
+ ;; static_final_declaration. Matching only the first shape left idiomatic
119
+ ;; top-level closures and the g of "var f = ..., g = ..." with no declaration
120
+ ;; capture, so findFunctionBody never synthesized their scope and they could
121
+ ;; never be call SOURCES.
122
+ ;;
123
+ ;; This mirrors DART_CALLABLE_CAPTURE_OPTIONS.bindingNodeTypes in captures.ts,
124
+ ;; which already listed all three for callable-flow. The two lists must stay in
125
+ ;; step; dart-closure-binding-shapes.test.ts pins that.
126
+ (initialized_variable_definition
127
+ (identifier) @declaration.name
128
+ (function_expression) @declaration.function)
129
+
130
+ (initialized_identifier
131
+ (identifier) @declaration.name
132
+ (function_expression) @declaration.function)
133
+
134
+ (static_final_declaration
135
+ (identifier) @declaration.name
136
+ (function_expression) @declaration.function)
137
+
93
138
  ; ── Declarations — methods (inside class/mixin/extension bodies) ─────────────
94
139
  (method_signature
95
140
  (function_signature
@@ -124,6 +169,58 @@ const DART_SCOPE_QUERY = `
124
169
  (initialized_identifier
125
170
  . (identifier) @declaration.name))) @declaration.property
126
171
 
172
+ ; Inference-typed fields — \`var b = Outer();\`, \`final b = Outer();\`,
173
+ ; \`late final b = Outer();\`, \`static var b = Outer();\` (#2807). The two
174
+ ; patterns above require a written type, so a field whose type comes from its
175
+ ; initializer produced NO property declaration at all — no Property node, and
176
+ ; nothing for captures.ts to hang a type binding on, so \`b.inner()\` could not
177
+ ; resolve its receiver while the annotated twin resolved fine.
178
+ ;
179
+ ; Dart spells the keyword as \`inferred_type\` for \`var\` and \`final_builtin\`
180
+ ; for \`final\` / \`late final\`; both are class fields and both are idiomatic,
181
+ ; so covering only one would leave the more common Dart style broken.
182
+ (declaration
183
+ (inferred_type)
184
+ (initialized_identifier_list
185
+ (initialized_identifier
186
+ . (identifier) @declaration.name))) @declaration.property
187
+ (declaration
188
+ (final_builtin)
189
+ (initialized_identifier_list
190
+ (initialized_identifier
191
+ . (identifier) @declaration.name))) @declaration.property
192
+
193
+ ; ── Declarations — closure bindings (#2693) ──────────────────────────────────
194
+ ; \`var f = (x) => x;\` binds a callable. Without a declaration the binding has
195
+ ; no SymbolDefinition, so callable-value-flow has nothing to attach its seed to
196
+ ; and \`f()\` stays unresolved even though the graph emits a Function node for it.
197
+ ;
198
+ ; Restricted to a function_expression value on purpose: declaring every Dart
199
+ ; variable would mint defs repo-wide for no resolution benefit. The top-level
200
+ ; rule is anchored under (program) — the same disambiguation the graph-node
201
+ ; query uses — so class-body fields, which reuse initialized_identifier_list
202
+ ; and are already @declaration.property, are never matched twice.
203
+ (program
204
+ (initialized_identifier_list
205
+ (initialized_identifier
206
+ (identifier) @declaration.name
207
+ (function_expression))) @declaration.variable)
208
+ (program
209
+ (static_final_declaration_list
210
+ (static_final_declaration
211
+ (identifier) @declaration.name
212
+ (function_expression))) @declaration.variable)
213
+ (initialized_variable_definition
214
+ name: (identifier) @declaration.name
215
+ value: (function_expression)) @declaration.variable
216
+ ; Second and later declarators of \`var f = .., g = ..;\` are nested
217
+ ; initialized_identifier children of the same initialized_variable_definition,
218
+ ; which the field-based rule above only reaches for the first name.
219
+ (initialized_variable_definition
220
+ (initialized_identifier
221
+ (identifier) @declaration.name
222
+ (function_expression)) @declaration.variable)
223
+
127
224
  ; ── Imports / re-exports ─────────────────────────────────────────────────────
128
225
  (import_or_export
129
226
  (library_import
@@ -33,6 +33,7 @@ import { generateId } from '../../../../lib/utils.js';
33
33
  import { dartProvider } from '../dart.js';
34
34
  import { dartArityCompatibility, dartMergeBindings, resolveDartImportTarget } from './index.js';
35
35
  import { decodeMarker } from '../../utils/heritage-marker.js';
36
+ import { typeApplicationArguments } from '../../utils/template-arguments.js';
36
37
  import { expandDartWildcardNames } from './expand-wildcards.js';
37
38
  /**
38
39
  * Resolve a class simple name to a graph id with FILE AFFINITY: prefer a
@@ -60,7 +61,7 @@ function pickClassByName(name, preferredFile, defsByName) {
60
61
  * which keeps cross-file same-name classes from collapsing (mirror of Ruby's
61
62
  * `emitRubyMixinEdges`, with the #1951-style file-affinity hardening).
62
63
  */
63
- function emitDartHeritageEdges(graph, parsedFiles, nodeLookup) {
64
+ function emitDartHeritageEdges(graph, parsedFiles, nodeLookup, recordTypeArguments) {
64
65
  const defsByName = new Map();
65
66
  for (const parsed of parsedFiles) {
66
67
  for (const def of parsed.localDefs) {
@@ -97,11 +98,21 @@ function emitDartHeritageEdges(graph, parsedFiles, nodeLookup) {
97
98
  const parts = decoded.fields;
98
99
  if (parts.length < 3)
99
100
  continue;
100
- const [kind, baseName, childName] = parts;
101
+ const [kind, baseName, childName, rawTypeArguments] = parts;
101
102
  const childId = pickClassByName(childName, parsed.filePath, defsByName);
102
103
  const baseId = pickClassByName(baseName, parsed.filePath, defsByName);
103
104
  if (childId === undefined || baseId === undefined || childId === baseId)
104
105
  continue;
106
+ // The instantiation this clause was written with — `implements
107
+ // Validator<String>` (#2912). Recorded before the dedup below, since the
108
+ // FIRST writer wins on both sides and an edge deduped here still needs
109
+ // its arguments. A marker from a pre-#2912 cache has no fourth field,
110
+ // which reads as unknown.
111
+ if (rawTypeArguments !== undefined) {
112
+ const typeArguments = typeApplicationArguments(rawTypeArguments);
113
+ if (typeArguments !== undefined)
114
+ recordTypeArguments?.(childId, baseId, typeArguments);
115
+ }
105
116
  const key = `${childId}->${baseId}:${kind}`;
106
117
  if (emitted.has(key))
107
118
  continue;
@@ -183,7 +194,7 @@ export const dartScopeResolver = {
183
194
  isSuperReceiver: (text) => text.trim() === 'super',
184
195
  // `implements` / `with` IMPLEMENTS edges (extends rides the generic
185
196
  // inherits pre-pass; these need an explicit, kind-independent edge type).
186
- emitHeritageEdges: (graph, parsedFiles, nodeLookup) => emitDartHeritageEdges(graph, parsedFiles, nodeLookup),
197
+ emitHeritageEdges: (graph, parsedFiles, nodeLookup, _scopes, recordTypeArguments) => emitDartHeritageEdges(graph, parsedFiles, nodeLookup, recordTypeArguments),
187
198
  // Dart is statically typed — the field-fallback heuristic over-connects.
188
199
  fieldFallbackOnMethodLookup: false,
189
200
  propagatesReturnTypesAcrossImports: true,
@@ -14,6 +14,7 @@
14
14
  * - `dartReceiverBinding` — the implicit `this`/`super` receiver of a
15
15
  * Function scope.
16
16
  */
17
+ import { walkToScope } from '../../utils/scope-tree-walk.js';
17
18
  export function dartBindingScopeFor(decl, innermost, tree) {
18
19
  // (1) Return-type bindings hoist to the Module scope.
19
20
  if (decl['@type-binding.return'] !== undefined) {
@@ -28,6 +29,14 @@ export function dartBindingScopeFor(decl, innermost, tree) {
28
29
  return cur.id;
29
30
  return null;
30
31
  }
32
+ // (1b) A field typed from a constructor assigned to it (`r = Outer();` in a
33
+ // constructor body) must live on the CLASS scope — the assignment sits inside
34
+ // the constructor's own Function scope, where `typeOfMemberOnClass` never
35
+ // looks (#2807). Gated on the dedicated marker, never on
36
+ // `@type-binding.constructor` at large, which also fires for genuine locals.
37
+ if (decl['@type-binding.dart-field'] !== undefined) {
38
+ return walkToScope(innermost, tree, 'Class');
39
+ }
31
40
  // (2) Function/method/constructor names are visible in the enclosing scope.
32
41
  if (decl['@declaration.function'] !== undefined ||
33
42
  decl['@declaration.method'] !== undefined ||
@@ -27,7 +27,7 @@ import { createVariableExtractor } from '../variable-extractors/generic.js';
27
27
  import { dartVariableConfig } from '../variable-extractors/configs/dart.js';
28
28
  import { createCallExtractor } from '../call-extractors/generic.js';
29
29
  import { dartCallConfig } from '../call-extractors/configs/dart.js';
30
- import { emitDartScopeCaptures, interpretDartImport, interpretDartTypeBinding, dartBindingScopeFor, dartImportOwningScope, dartReceiverBinding, dartMergeBindings, dartArityCompatibility, } from './dart/index.js';
30
+ import { emitDartScopeCaptures, dartScopeOwnsReceivers, interpretDartImport, interpretDartTypeBinding, dartBindingScopeFor, dartImportOwningScope, dartReceiverBinding, dartMergeBindings, dartArityCompatibility, } from './dart/index.js';
31
31
  import { DART_BUILT_INS } from './dart/built-ins.js';
32
32
  import { preprocessDartExtensionTypes } from './dart/extension-type-preprocess.js';
33
33
  /**
@@ -119,6 +119,11 @@ export const dartProvider = defineLanguage({
119
119
  // emit-side `ScopeResolver` lives in `dart/scope-resolver.ts`; the same
120
120
  // function references flow through both interfaces.
121
121
  emitScopeCaptures: emitDartScopeCaptures,
122
+ // Dart's `ownsReceivers` masks FIELD NAMES a member body rebinds, not `this`
123
+ // (which Dart binds lexically in every closure form, so there is nothing to
124
+ // own). See `dartShadowedFieldsCapture` in `dart/captures.ts` for why the
125
+ // read side needs the mask and what it deliberately does not cover.
126
+ scopeOwnsReceivers: dartScopeOwnsReceivers,
122
127
  cfgVisitor: createDartCfgVisitor(),
123
128
  interpretImport: interpretDartImport,
124
129
  interpretTypeBinding: interpretDartTypeBinding,
@@ -8,6 +8,44 @@ import { synthesizeGoTypeBindings, extractSimpleTypeNameText } from './type-bind
8
8
  import { getTreeSitterBufferSize } from '../../constants.js';
9
9
  import { parseSourceSafe } from '../../../tree-sitter/safe-parse.js';
10
10
  import { synthesizeCallableFlowCaptures } from '../../utils/callable-flow-captures.js';
11
+ import { synthesizeReceiverChainCapture } from '../../utils/receiver-chain-captures.js';
12
+ /** Range for a capture that marks no source span. */
13
+ const ZERO_RANGE = Object.freeze({ startLine: 0, startCol: 0, endLine: 0, endCol: 0 });
14
+ /**
15
+ * The callee-position marker, allocated once for the whole process.
16
+ *
17
+ * This capture is a PRESENCE FLAG, not a payload: `scope-extractor.ts` reads it
18
+ * only as `match['@reference.callee-position'] !== undefined`, and the tag is
19
+ * listed in `KNOWN_SUB_TAGS`, so `anchorCaptureFor` never considers its range
20
+ * when picking a reference anchor. Nothing else in the pipeline touches it.
21
+ * (Its range used to duplicate `@reference.read`'s exactly, and that capture is
22
+ * still emitted, so the one place that scans every capture's range — the
23
+ * synthetic Module-scope span in `scope-extractor.ts` — sees the same maximum.)
24
+ *
25
+ * Minting it per site from the read node was therefore pure cost, and not a
26
+ * cheap one: `node.text` is an `input.substring` behind N-API index marshals,
27
+ * and `startPosition` / `endPosition` are two more round-trips each. A frozen
28
+ * singleton carries exactly the same information — its presence — for free.
29
+ */
30
+ const CALLEE_POSITION_MARKER = Object.freeze({
31
+ name: '@reference.callee-position',
32
+ range: ZERO_RANGE,
33
+ text: '',
34
+ });
35
+ /**
36
+ * Presence-only marker for an embedded field written as `*T` rather than `T`.
37
+ *
38
+ * Go's method-set rules treat the two forms differently — `S{T}` promotes only
39
+ * the value-receiver methods of `T` into `MS(S)`, while `S{*T}` promotes both
40
+ * value- and pointer-receiver ones (go.dev/ref/spec#Struct_types). Structural
41
+ * interface detection cannot give an exact answer without knowing which was
42
+ * written, so the spelling is recorded here and interpreted downstream.
43
+ */
44
+ const EMBEDDED_POINTER_MARKER = Object.freeze({
45
+ name: '@reference.embedded-pointer',
46
+ range: ZERO_RANGE,
47
+ text: '',
48
+ });
11
49
  const GO_CALLABLE_CAPTURE_OPTIONS = {
12
50
  functionNodeTypes: new Set(['function_declaration', 'method_declaration', 'func_literal']),
13
51
  callNodeTypes: new Set(['call_expression']),
@@ -40,6 +78,25 @@ const GO_CALLABLE_CAPTURE_OPTIONS = {
40
78
  return destinations.map((destination, index) => ({ destination, source: sources[index] }));
41
79
  },
42
80
  };
81
+ /**
82
+ * Is this `selector_expression` in CALLEE position — the `function` child of an
83
+ * enclosing `call_expression` — rather than free-standing?
84
+ *
85
+ * `h.dep.Work` in `h.dep.Work()` is in callee position; `f := h.dep.Work` (a
86
+ * method value, or a func-typed field value) is not.
87
+ *
88
+ * Callee position alone does NOT make the selector a non-read. Go dispatches
89
+ * `h.dep.Work()` through a func-typed struct field just as readily as through a
90
+ * method, and this predicate cannot tell the two apart — `call_expression` has
91
+ * the same shape either way, and the tail's declaration may live in another
92
+ * package. See {@link emitGoScopeCaptures} for what is done with the answer.
93
+ */
94
+ function isCalleeOfMemberCall(node) {
95
+ const parent = node.parent;
96
+ if (parent === null || parent.type !== 'call_expression')
97
+ return false;
98
+ return parent.childForFieldName('function')?.id === node.id;
99
+ }
43
100
  export function emitGoScopeCaptures(sourceText, _filePath, cachedTree) {
44
101
  let tree = cachedTree;
45
102
  if (tree === undefined) {
@@ -127,6 +184,12 @@ export function emitGoScopeCaptures(sourceText, _filePath, cachedTree) {
127
184
  grouped['@declaration.return-type'] = syntheticCapture('@declaration.return-type', fnNode, arity.returnType);
128
185
  }
129
186
  }
187
+ // Structural receiver chain for a call whose receiver is itself an
188
+ // expression, so resolution can type it by folding over structure
189
+ // instead of re-parsing the receiver's source text. Self-gating: a
190
+ // non-call match, an absent receiver, or a chain with no nameable base
191
+ // all leave `grouped` untouched.
192
+ synthesizeReceiverChainCapture(grouped, nodeMap['@reference.receiver']);
130
193
  out.push(grouped);
131
194
  continue;
132
195
  }
@@ -141,6 +204,39 @@ export function emitGoScopeCaptures(sourceText, _filePath, cachedTree) {
141
204
  grouped['@reference.arity'] = syntheticCapture('@reference.arity', callNode, String(computeGoCallArity(callNode)));
142
205
  }
143
206
  }
207
+ // Mark — do NOT drop — the read site on a member call's callee.
208
+ //
209
+ // The `@reference.read` pattern matches every `selector_expression`, so
210
+ // `h.dep.Work()` yields THREE sites: the call on `Work`, a read on the inner
211
+ // `h.dep` (the genuine field read), and a read on the OUTER `h.dep.Work`.
212
+ //
213
+ // That third site is a phantom ONLY when `Work` is a method: it then
214
+ // resolves through `findOwnedMember` (which prefers methods over fields) and
215
+ // emits an ACCESSES edge to the METHOD duplicating the CALLS edge at the
216
+ // same position — `v.impl.DoWork()` emitting both `CALLS -> DoWork` and
217
+ // `ACCESSES -> DoWork`.
218
+ //
219
+ // When `Work` is a FUNC-TYPED STRUCT FIELD (`Work func() error` — callback
220
+ // structs, hook structs, hand-rolled mocks) the very same syntax is a
221
+ // genuine field read followed by an indirect call through the value it
222
+ // holds, and that read is the field's only ACCESSES evidence. Dropping the
223
+ // site here deleted it (#2782 review).
224
+ //
225
+ // Method-vs-field is not knowable at capture: `call_expression` has the same
226
+ // shape either way and the tail's declaration may live in another package.
227
+ // So the capture layer records the POSITION and edge emission — which knows
228
+ // the resolved target's kind — decides. See `ReferenceSite.inCalleePosition`
229
+ // and `tryEmitEdge`.
230
+ const readNode = nodeMap['@reference.read'];
231
+ if (readNode !== undefined && isCalleeOfMemberCall(readNode)) {
232
+ grouped['@reference.callee-position'] = CALLEE_POSITION_MARKER;
233
+ }
234
+ // Structural receiver chain for a call whose receiver is itself an
235
+ // expression, so resolution can type it by folding over structure
236
+ // instead of re-parsing the receiver's source text. Self-gating: a
237
+ // non-call match, an absent receiver, or a chain with no nameable base
238
+ // all leave `grouped` untouched.
239
+ synthesizeReceiverChainCapture(grouped, nodeMap['@reference.receiver']);
144
240
  out.push(grouped);
145
241
  }
146
242
  // Layer on type-binding synthesis (new/make/qualified composite literal)
@@ -241,7 +337,12 @@ function synthesizeGoInheritanceReferences(root) {
241
337
  continue;
242
338
  // `field.type` is the embedded base — bare/qualified/generic, with any
243
339
  // `*` pointer marker as an unnamed sibling token (already unwrapped).
244
- emitGoEmbedInheritance(field.childForFieldName('type'), out);
340
+ // That token is the ONLY record of `*T` versus `T`, and the two have
341
+ // different method sets, so read it off the field text before it is
342
+ // lost. An embedded field has no name, so a leading `*` can only be
343
+ // the pointer marker.
344
+ const embeddedAsPointer = field.text.trimStart().startsWith('*');
345
+ emitGoEmbedInheritance(field.childForFieldName('type'), out, embeddedAsPointer);
245
346
  }
246
347
  }
247
348
  else if (typeNode.type === 'interface_type') {
@@ -252,7 +353,8 @@ function synthesizeGoInheritanceReferences(root) {
252
353
  // `shouldSkipExtends`); a single-element `type_elem` is the embed.
253
354
  if (elem.type !== 'type_elem' || elem.namedChildCount !== 1)
254
355
  continue;
255
- emitGoEmbedInheritance(elem.namedChild(0), out);
356
+ // An interface embed is never a pointer form.
357
+ emitGoEmbedInheritance(elem.namedChild(0), out, false);
256
358
  }
257
359
  }
258
360
  }
@@ -264,7 +366,7 @@ function synthesizeGoInheritanceReferences(root) {
264
366
  * node, reducing the name to its bare simple identifier. No-ops when `baseNode`
265
367
  * is null or not one of the embed shapes.
266
368
  */
267
- function emitGoEmbedInheritance(baseNode, out) {
369
+ function emitGoEmbedInheritance(baseNode, out, embeddedAsPointer) {
268
370
  if (baseNode === null)
269
371
  return;
270
372
  const nameNode = goEmbedBaseNameNode(baseNode);
@@ -273,6 +375,9 @@ function emitGoEmbedInheritance(baseNode, out) {
273
375
  out.push({
274
376
  '@reference.inherits': nodeToCapture('@reference.inherits', baseNode),
275
377
  '@reference.name': nodeToCapture('@reference.name', nameNode),
378
+ // Added ONLY for the pointer form, so a value embed's capture set is
379
+ // byte-identical to what it was before this marker existed.
380
+ ...(embeddedAsPointer ? { '@reference.embedded-pointer': EMBEDDED_POINTER_MARKER } : {}),
276
381
  });
277
382
  }
278
383
  /**
@@ -0,0 +1,31 @@
1
+ import type { ParsedFile, SymbolDefinition } from '../../../../_shared/index.js';
2
+ /**
3
+ * Stamp every generic interface in `parsedFiles` with its type-parameter names,
4
+ * read out of the declaration's own source text.
5
+ *
6
+ * WHY SOURCE TEXT AND NOT A CAPTURE. The tree has the list right there
7
+ * (`type_spec` carries a `type_parameters` field), and capturing it would be two
8
+ * lines. But captures run inside the PARSE WORKER, whose script is resolved from
9
+ * the compiled `dist/` build, and their output is additionally memoized by the
10
+ * parse cache and the durable ParsedFile store — so a capture-side change is
11
+ * invisible until a rebuild AND a cache-version bump, and silently wrong in
12
+ * between. Everything here runs on the main thread from data the pipeline
13
+ * already materialized, so it is correct on the first run and needs neither.
14
+ *
15
+ * The scan is exact rather than a grep over the file: an interface declaration
16
+ * owns a `Class` scope whose range spans exactly its `type_spec`
17
+ * (`Repo[T any] interface{ … }`), so the text is sliced by that range and the
18
+ * type parameters are, by grammar, whatever sits between the brackets that
19
+ * IMMEDIATELY follow the name. Comments and strings elsewhere in the file cannot
20
+ * reach it.
21
+ */
22
+ export declare function stampGoInterfaceTypeParameters(parsedFiles: readonly ParsedFile[], fileContents: ReadonlyMap<string, string>): void;
23
+ /** Read back a stamp, rejecting anything whose shape does not match — the
24
+ * sidecar is optional and a hand-built fixture def carries none. */
25
+ export declare function readGoTypeParameters(def: SymbolDefinition): readonly string[] | undefined;
26
+ /** Index of the delimiter closing the one at `open`, or -1 when unbalanced.
27
+ * Tracks `[]`, `{}` and `()` together so an `interface{ M(a, b int) }`
28
+ * constraint cannot end the list early. */
29
+ export declare function matchingGoDelimiter(text: string, open: number): number;
30
+ /** Split on commas that are not nested inside brackets, braces or parens. */
31
+ export declare function splitTopLevelGoList(text: string): string[];
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Stamp every generic interface in `parsedFiles` with its type-parameter names,
3
+ * read out of the declaration's own source text.
4
+ *
5
+ * WHY SOURCE TEXT AND NOT A CAPTURE. The tree has the list right there
6
+ * (`type_spec` carries a `type_parameters` field), and capturing it would be two
7
+ * lines. But captures run inside the PARSE WORKER, whose script is resolved from
8
+ * the compiled `dist/` build, and their output is additionally memoized by the
9
+ * parse cache and the durable ParsedFile store — so a capture-side change is
10
+ * invisible until a rebuild AND a cache-version bump, and silently wrong in
11
+ * between. Everything here runs on the main thread from data the pipeline
12
+ * already materialized, so it is correct on the first run and needs neither.
13
+ *
14
+ * The scan is exact rather than a grep over the file: an interface declaration
15
+ * owns a `Class` scope whose range spans exactly its `type_spec`
16
+ * (`Repo[T any] interface{ … }`), so the text is sliced by that range and the
17
+ * type parameters are, by grammar, whatever sits between the brackets that
18
+ * IMMEDIATELY follow the name. Comments and strings elsewhere in the file cannot
19
+ * reach it.
20
+ */
21
+ export function stampGoInterfaceTypeParameters(parsedFiles, fileContents) {
22
+ for (const parsed of parsedFiles) {
23
+ // Deferred so a file with no interface declaration never indexes its lines.
24
+ let lines;
25
+ for (const scope of parsed.scopes) {
26
+ if (scope.kind !== 'Class')
27
+ continue;
28
+ const iface = scope.ownedDefs.find((def) => def.type === 'Interface');
29
+ if (iface?.qualifiedName === undefined)
30
+ continue;
31
+ if (lines === undefined) {
32
+ const source = fileContents.get(parsed.filePath);
33
+ if (source === undefined)
34
+ break;
35
+ lines = { source, starts: buildLineStarts(source) };
36
+ }
37
+ const declaration = sliceRange(lines.source, lines.starts, scope.range);
38
+ if (declaration === undefined)
39
+ continue;
40
+ const names = goTypeParameterNames(declaration, simpleGoName(iface.qualifiedName));
41
+ if (names === undefined)
42
+ continue;
43
+ iface.goTypeParameters = names;
44
+ }
45
+ }
46
+ }
47
+ /** Read back a stamp, rejecting anything whose shape does not match — the
48
+ * sidecar is optional and a hand-built fixture def carries none. */
49
+ export function readGoTypeParameters(def) {
50
+ const names = def.goTypeParameters;
51
+ if (!Array.isArray(names) || names.length === 0)
52
+ return undefined;
53
+ return names.every((name) => typeof name === 'string') ? names : undefined;
54
+ }
55
+ /**
56
+ * The declared type-parameter names of `Name[…] interface{…}`, in source order,
57
+ * or `undefined` when the declaration is not generic.
58
+ *
59
+ * Go spec, Type parameter declarations: the list is comma-separated and one
60
+ * entry may declare SEVERAL names sharing one constraint — `[K, V any]` declares
61
+ * `K` and `V`, and `[S ~[]E, E any]` declares `S` and `E`. Each entry therefore
62
+ * contributes exactly its FIRST token as a name; anything after it is the
63
+ * constraint, which is not needed here (satisfaction of a constraint is a
64
+ * separate question from implementation of an interface, and constraints are
65
+ * never harvested as instantiations — see `interface-impls.ts`).
66
+ */
67
+ function goTypeParameterNames(declaration, interfaceName) {
68
+ if (!declaration.startsWith(interfaceName))
69
+ return undefined;
70
+ if (declaration[interfaceName.length] !== '[')
71
+ return undefined;
72
+ const close = matchingGoDelimiter(declaration, interfaceName.length);
73
+ if (close === -1)
74
+ return undefined;
75
+ const names = [];
76
+ for (const entry of splitTopLevelGoList(declaration.slice(interfaceName.length + 1, close))) {
77
+ const name = /^[A-Za-z_][A-Za-z0-9_]*/.exec(entry)?.[0];
78
+ if (name === undefined)
79
+ return undefined;
80
+ names.push(name);
81
+ }
82
+ return names.length === 0 ? undefined : names;
83
+ }
84
+ /** Index of the delimiter closing the one at `open`, or -1 when unbalanced.
85
+ * Tracks `[]`, `{}` and `()` together so an `interface{ M(a, b int) }`
86
+ * constraint cannot end the list early. */
87
+ export function matchingGoDelimiter(text, open) {
88
+ let depth = 0;
89
+ for (let i = open; i < text.length; i += 1) {
90
+ const ch = text[i];
91
+ if (ch === '[' || ch === '{' || ch === '(')
92
+ depth += 1;
93
+ else if (ch === ']' || ch === '}' || ch === ')') {
94
+ depth -= 1;
95
+ if (depth === 0)
96
+ return i;
97
+ }
98
+ }
99
+ return -1;
100
+ }
101
+ /** Split on commas that are not nested inside brackets, braces or parens. */
102
+ export function splitTopLevelGoList(text) {
103
+ const parts = [];
104
+ let depth = 0;
105
+ let start = 0;
106
+ for (let i = 0; i < text.length; i += 1) {
107
+ const ch = text[i];
108
+ if (ch === '[' || ch === '{' || ch === '(')
109
+ depth += 1;
110
+ else if (ch === ']' || ch === '}' || ch === ')')
111
+ depth -= 1;
112
+ else if (ch === ',' && depth === 0) {
113
+ parts.push(text.slice(start, i));
114
+ start = i + 1;
115
+ }
116
+ }
117
+ parts.push(text.slice(start));
118
+ return parts.map((part) => part.trim()).filter((part) => part.length > 0);
119
+ }
120
+ function simpleGoName(qualifiedName) {
121
+ const dot = qualifiedName.lastIndexOf('.');
122
+ return dot === -1 ? qualifiedName : qualifiedName.slice(dot + 1);
123
+ }
124
+ /** Offsets at which each 1-based line begins. */
125
+ function buildLineStarts(source) {
126
+ const starts = [0, 0];
127
+ for (let i = 0; i < source.length; i += 1) {
128
+ if (source[i] === '\n')
129
+ starts.push(i + 1);
130
+ }
131
+ return starts;
132
+ }
133
+ /** `Range` is 1-based on lines and 0-based on columns (`syntheticCapture`). */
134
+ function sliceRange(source, lineStarts, range) {
135
+ const start = lineStarts[range.startLine];
136
+ const end = lineStarts[range.endLine];
137
+ if (start === undefined || end === undefined)
138
+ return undefined;
139
+ return source.slice(start + range.startCol, end + range.endCol);
140
+ }
@@ -1,4 +1,3 @@
1
- import type { GoModuleConfig } from '../../language-config.js';
2
1
  /**
3
2
  * Resolve a Go import path to ALL .go files in the matching package directory.
4
3
  *
@@ -8,14 +7,8 @@ import type { GoModuleConfig } from '../../language-config.js';
8
7
  * IMPORTS edge fanout AND binding materialization for every exported symbol in
9
8
  * the package.
10
9
  *
11
- * Strategy (first match wins):
12
- * 1. go.mod-based: strip module prefix, match package directory
13
- * 2. Non-go.mod / GOPATH: progressively shorter directory suffixes
10
+ * Strategy:
11
+ * 1. With go.mod: resolve only imports owned by that module
12
+ * 2. Without go.mod / GOPATH: progressively shorter directory suffixes
14
13
  */
15
14
  export declare function resolveGoImportTarget(targetRaw: string, _fromFile: string, allFilePaths: ReadonlySet<string>, resolutionConfig?: unknown): string | readonly string[] | null;
16
- /** Preserved for backward compat. */
17
- export interface GoResolveContext {
18
- readonly fromFile: string;
19
- readonly allFilePaths: ReadonlySet<string>;
20
- readonly goModule?: GoModuleConfig;
21
- }