gitnexus 1.6.10-rc.99 → 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 (775) 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/cluster-enricher.js +8 -4
  126. package/dist/core/ingestion/community-processor.d.ts +21 -3
  127. package/dist/core/ingestion/community-processor.js +81 -82
  128. package/dist/core/ingestion/di-extractors/index.d.ts +9 -33
  129. package/dist/core/ingestion/di-extractors/spring.d.ts +1 -1
  130. package/dist/core/ingestion/di-extractors/spring.js +8 -1
  131. package/dist/core/ingestion/di-extractors/types.d.ts +60 -0
  132. package/dist/core/ingestion/di-extractors/types.js +15 -0
  133. package/dist/core/ingestion/filesystem-walker.js +30 -14
  134. package/dist/core/ingestion/finalize-orchestrator.js +1 -0
  135. package/dist/core/ingestion/frameworks/spring/analysis-features.d.ts +6 -0
  136. package/dist/core/ingestion/frameworks/spring/analysis-features.js +35 -1
  137. package/dist/core/ingestion/frameworks/spring/annotation-arguments.d.ts +13 -0
  138. package/dist/core/ingestion/frameworks/spring/annotation-arguments.js +227 -0
  139. package/dist/core/ingestion/frameworks/spring/aop-candidates.d.ts +15 -0
  140. package/dist/core/ingestion/frameworks/spring/aop-candidates.js +85 -0
  141. package/dist/core/ingestion/frameworks/spring/aop.d.ts +118 -0
  142. package/dist/core/ingestion/frameworks/spring/aop.js +476 -0
  143. package/dist/core/ingestion/frameworks/spring/auto-configuration.d.ts +8 -0
  144. package/dist/core/ingestion/frameworks/spring/auto-configuration.js +16 -0
  145. package/dist/core/ingestion/frameworks/spring/bean-catalog.js +1 -0
  146. package/dist/core/ingestion/frameworks/spring/bean-factories.d.ts +33 -0
  147. package/dist/core/ingestion/frameworks/spring/bean-factories.js +65 -0
  148. package/dist/core/ingestion/frameworks/spring/conditionals.d.ts +25 -0
  149. package/dist/core/ingestion/frameworks/spring/conditionals.js +319 -0
  150. package/dist/core/ingestion/frameworks/spring/di-metadata.d.ts +3 -0
  151. package/dist/core/ingestion/frameworks/spring/di-metadata.js +162 -13
  152. package/dist/core/ingestion/frameworks/spring/non-http-handlers.d.ts +28 -0
  153. package/dist/core/ingestion/frameworks/spring/non-http-handlers.js +152 -0
  154. package/dist/core/ingestion/frameworks/spring/resource-injection.d.ts +5 -0
  155. package/dist/core/ingestion/frameworks/spring/resource-injection.js +91 -0
  156. package/dist/core/ingestion/import-resolvers/configs/csharp.js +5 -1
  157. package/dist/core/ingestion/import-resolvers/configs/swift.js +13 -0
  158. package/dist/core/ingestion/import-resolvers/csharp.d.ts +9 -1
  159. package/dist/core/ingestion/import-resolvers/csharp.js +234 -27
  160. package/dist/core/ingestion/import-resolvers/go.d.ts +11 -1
  161. package/dist/core/ingestion/import-resolvers/go.js +44 -17
  162. package/dist/core/ingestion/import-resolvers/jvm.d.ts +2 -2
  163. package/dist/core/ingestion/import-resolvers/node-workspace-packages.d.ts +90 -0
  164. package/dist/core/ingestion/import-resolvers/node-workspace-packages.js +429 -0
  165. package/dist/core/ingestion/import-resolvers/package-dir-index.d.ts +124 -0
  166. package/dist/core/ingestion/import-resolvers/package-dir-index.js +223 -0
  167. package/dist/core/ingestion/import-resolvers/pass-cache.d.ts +50 -0
  168. package/dist/core/ingestion/import-resolvers/pass-cache.js +60 -0
  169. package/dist/core/ingestion/import-resolvers/per-file-set.d.ts +71 -0
  170. package/dist/core/ingestion/import-resolvers/per-file-set.js +11 -0
  171. package/dist/core/ingestion/import-resolvers/php.d.ts +1 -1
  172. package/dist/core/ingestion/import-resolvers/php.js +65 -19
  173. package/dist/core/ingestion/import-resolvers/python-file-index.d.ts +201 -0
  174. package/dist/core/ingestion/import-resolvers/python-file-index.js +302 -0
  175. package/dist/core/ingestion/import-resolvers/python.js +25 -6
  176. package/dist/core/ingestion/import-resolvers/ruby.d.ts +1 -1
  177. package/dist/core/ingestion/import-resolvers/rust.d.ts +2 -2
  178. package/dist/core/ingestion/import-resolvers/standard.d.ts +1 -1
  179. package/dist/core/ingestion/import-resolvers/types.d.ts +1 -12
  180. package/dist/core/ingestion/import-resolvers/utils.d.ts +65 -6
  181. package/dist/core/ingestion/import-resolvers/utils.js +215 -36
  182. package/dist/core/ingestion/import-resolvers/workspace-file-index.d.ts +72 -0
  183. package/dist/core/ingestion/import-resolvers/workspace-file-index.js +58 -0
  184. package/dist/core/ingestion/language-config.d.ts +29 -1
  185. package/dist/core/ingestion/language-config.js +110 -35
  186. package/dist/core/ingestion/language-provider.d.ts +209 -7
  187. package/dist/core/ingestion/language-provider.js +37 -0
  188. package/dist/core/ingestion/languages/c/captures.js +7 -0
  189. package/dist/core/ingestion/languages/c/import-target.js +12 -16
  190. package/dist/core/ingestion/languages/c/scope-resolver.js +20 -19
  191. package/dist/core/ingestion/languages/c/static-linkage.js +12 -16
  192. package/dist/core/ingestion/languages/c-cpp.js +13 -0
  193. package/dist/core/ingestion/languages/cobol/scope-resolver.js +27 -20
  194. package/dist/core/ingestion/languages/cobol.js +13 -0
  195. package/dist/core/ingestion/languages/cpp/adl.d.ts +2 -2
  196. package/dist/core/ingestion/languages/cpp/adl.js +67 -44
  197. package/dist/core/ingestion/languages/cpp/captures.js +14 -2
  198. package/dist/core/ingestion/languages/cpp/file-local-linkage.js +11 -15
  199. package/dist/core/ingestion/languages/cpp/inline-namespaces.d.ts +28 -8
  200. package/dist/core/ingestion/languages/cpp/inline-namespaces.js +242 -68
  201. package/dist/core/ingestion/languages/cpp/interpret.d.ts +2 -0
  202. package/dist/core/ingestion/languages/cpp/interpret.js +126 -6
  203. package/dist/core/ingestion/languages/cpp/query.js +106 -0
  204. package/dist/core/ingestion/languages/cpp/scope-resolver.js +48 -20
  205. package/dist/core/ingestion/languages/csharp/accessor-unwrap.d.ts +2 -15
  206. package/dist/core/ingestion/languages/csharp/accessor-unwrap.js +18 -10
  207. package/dist/core/ingestion/languages/csharp/captures.js +19 -0
  208. package/dist/core/ingestion/languages/csharp/import-target.js +46 -72
  209. package/dist/core/ingestion/languages/csharp/namespace-siblings.js +5 -1
  210. package/dist/core/ingestion/languages/csharp/query.js +25 -5
  211. package/dist/core/ingestion/languages/csharp/scope-resolver.js +75 -2
  212. package/dist/core/ingestion/languages/dart/captures.d.ts +10 -0
  213. package/dist/core/ingestion/languages/dart/captures.js +598 -16
  214. package/dist/core/ingestion/languages/dart/import-target.js +32 -9
  215. package/dist/core/ingestion/languages/dart/index.d.ts +1 -1
  216. package/dist/core/ingestion/languages/dart/index.js +1 -1
  217. package/dist/core/ingestion/languages/dart/query.js +98 -1
  218. package/dist/core/ingestion/languages/dart/scope-resolver.js +14 -3
  219. package/dist/core/ingestion/languages/dart/simple-hooks.js +9 -0
  220. package/dist/core/ingestion/languages/dart.js +6 -1
  221. package/dist/core/ingestion/languages/go/captures.js +108 -3
  222. package/dist/core/ingestion/languages/go/generic-type-parameters.d.ts +31 -0
  223. package/dist/core/ingestion/languages/go/generic-type-parameters.js +140 -0
  224. package/dist/core/ingestion/languages/go/import-target.d.ts +3 -10
  225. package/dist/core/ingestion/languages/go/import-target.js +34 -30
  226. package/dist/core/ingestion/languages/go/index.d.ts +1 -1
  227. package/dist/core/ingestion/languages/go/interface-impls.d.ts +9 -1
  228. package/dist/core/ingestion/languages/go/interface-impls.js +693 -87
  229. package/dist/core/ingestion/languages/go/interpret.d.ts +2 -0
  230. package/dist/core/ingestion/languages/go/interpret.js +22 -8
  231. package/dist/core/ingestion/languages/go/method-owners.js +31 -12
  232. package/dist/core/ingestion/languages/go/package-clause.d.ts +46 -0
  233. package/dist/core/ingestion/languages/go/package-clause.js +75 -0
  234. package/dist/core/ingestion/languages/go/package-siblings.js +7 -11
  235. package/dist/core/ingestion/languages/go/query.js +56 -3
  236. package/dist/core/ingestion/languages/go/scope-resolver.js +39 -0
  237. package/dist/core/ingestion/languages/go.js +9 -0
  238. package/dist/core/ingestion/languages/java/analysis-features.d.ts +4 -0
  239. package/dist/core/ingestion/languages/java/analysis-features.js +12 -0
  240. package/dist/core/ingestion/languages/java/capture-side-channel.d.ts +12 -0
  241. package/dist/core/ingestion/languages/java/capture-side-channel.js +48 -0
  242. package/dist/core/ingestion/languages/java/captures.js +77 -32
  243. package/dist/core/ingestion/languages/java/import-target.d.ts +49 -9
  244. package/dist/core/ingestion/languages/java/import-target.js +68 -88
  245. package/dist/core/ingestion/languages/java/interpret.js +3 -2
  246. package/dist/core/ingestion/languages/java/module-resolution.d.ts +62 -0
  247. package/dist/core/ingestion/languages/java/module-resolution.js +142 -0
  248. package/dist/core/ingestion/languages/java/query.js +15 -3
  249. package/dist/core/ingestion/languages/java/record-components.d.ts +14 -0
  250. package/dist/core/ingestion/languages/java/record-components.js +185 -0
  251. package/dist/core/ingestion/languages/java/scope-resolver.js +10 -2
  252. package/dist/core/ingestion/languages/java/spring-aop.d.ts +12 -0
  253. package/dist/core/ingestion/languages/java/spring-aop.js +49 -0
  254. package/dist/core/ingestion/languages/java/spring-conditionals.d.ts +11 -0
  255. package/dist/core/ingestion/languages/java/spring-conditionals.js +48 -0
  256. package/dist/core/ingestion/languages/java/spring-di.d.ts +4 -1
  257. package/dist/core/ingestion/languages/java/spring-di.js +41 -9
  258. package/dist/core/ingestion/languages/java/spring-non-http-handlers.d.ts +7 -0
  259. package/dist/core/ingestion/languages/java/spring-non-http-handlers.js +32 -0
  260. package/dist/core/ingestion/languages/java.js +94 -3
  261. package/dist/core/ingestion/languages/javascript/captures.d.ts +6 -1
  262. package/dist/core/ingestion/languages/javascript/captures.js +262 -4
  263. package/dist/core/ingestion/languages/javascript/import-target.d.ts +17 -21
  264. package/dist/core/ingestion/languages/javascript/import-target.js +24 -41
  265. package/dist/core/ingestion/languages/javascript/index.d.ts +54 -5
  266. package/dist/core/ingestion/languages/javascript/index.js +54 -5
  267. package/dist/core/ingestion/languages/javascript/query.d.ts +1 -0
  268. package/dist/core/ingestion/languages/javascript/query.js +211 -5
  269. package/dist/core/ingestion/languages/javascript/scope-resolver.js +12 -0
  270. package/dist/core/ingestion/languages/javascript/simple-hooks.js +2 -1
  271. package/dist/core/ingestion/languages/jvm/package-siblings.js +77 -9
  272. package/dist/core/ingestion/languages/kotlin/capture-side-channel.d.ts +15 -0
  273. package/dist/core/ingestion/languages/kotlin/capture-side-channel.js +48 -0
  274. package/dist/core/ingestion/languages/kotlin/captures.js +43 -1
  275. package/dist/core/ingestion/languages/kotlin/import-target.d.ts +8 -1
  276. package/dist/core/ingestion/languages/kotlin/import-target.js +20 -123
  277. package/dist/core/ingestion/languages/kotlin/index.d.ts +1 -0
  278. package/dist/core/ingestion/languages/kotlin/index.js +1 -0
  279. package/dist/core/ingestion/languages/kotlin/module-resolution.d.ts +22 -0
  280. package/dist/core/ingestion/languages/kotlin/module-resolution.js +108 -0
  281. package/dist/core/ingestion/languages/kotlin/query.js +28 -2
  282. package/dist/core/ingestion/languages/kotlin/scope-resolver.js +23 -2
  283. package/dist/core/ingestion/languages/kotlin/spring-aop.d.ts +12 -0
  284. package/dist/core/ingestion/languages/kotlin/spring-aop.js +64 -0
  285. package/dist/core/ingestion/languages/kotlin/spring-conditionals.d.ts +12 -0
  286. package/dist/core/ingestion/languages/kotlin/spring-conditionals.js +49 -0
  287. package/dist/core/ingestion/languages/kotlin/spring-di.d.ts +2 -0
  288. package/dist/core/ingestion/languages/kotlin/spring-di.js +60 -11
  289. package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.d.ts +10 -0
  290. package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.js +41 -0
  291. package/dist/core/ingestion/languages/php/captures.d.ts +5 -0
  292. package/dist/core/ingestion/languages/php/captures.js +319 -51
  293. package/dist/core/ingestion/languages/php/import-target.d.ts +3 -4
  294. package/dist/core/ingestion/languages/php/import-target.js +192 -62
  295. package/dist/core/ingestion/languages/php/query.js +31 -0
  296. package/dist/core/ingestion/languages/python/arity-metadata.d.ts +1 -0
  297. package/dist/core/ingestion/languages/python/arity-metadata.js +1 -0
  298. package/dist/core/ingestion/languages/python/captures.js +29 -0
  299. package/dist/core/ingestion/languages/python/import-decomposer.js +22 -1
  300. package/dist/core/ingestion/languages/python/import-target.d.ts +42 -1
  301. package/dist/core/ingestion/languages/python/import-target.js +277 -91
  302. package/dist/core/ingestion/languages/python/index.d.ts +1 -1
  303. package/dist/core/ingestion/languages/python/index.js +1 -1
  304. package/dist/core/ingestion/languages/python/interpret.d.ts +52 -0
  305. package/dist/core/ingestion/languages/python/interpret.js +249 -7
  306. package/dist/core/ingestion/languages/python/query.js +9 -0
  307. package/dist/core/ingestion/languages/python/receiver-binding.d.ts +8 -6
  308. package/dist/core/ingestion/languages/python/receiver-binding.js +108 -12
  309. package/dist/core/ingestion/languages/python/scope-resolver.js +27 -4
  310. package/dist/core/ingestion/languages/python/simple-hooks.js +2 -8
  311. package/dist/core/ingestion/languages/python.js +13 -0
  312. package/dist/core/ingestion/languages/ruby/captures.js +158 -0
  313. package/dist/core/ingestion/languages/ruby/import-target.js +7 -5
  314. package/dist/core/ingestion/languages/ruby/query.js +93 -0
  315. package/dist/core/ingestion/languages/ruby/scope-resolver.js +2 -0
  316. package/dist/core/ingestion/languages/ruby/simple-hooks.d.ts +1 -1
  317. package/dist/core/ingestion/languages/ruby/simple-hooks.js +22 -1
  318. package/dist/core/ingestion/languages/rust/captures.js +39 -1
  319. package/dist/core/ingestion/languages/rust/method-owners.js +11 -1
  320. package/dist/core/ingestion/languages/rust/module-path.d.ts +126 -0
  321. package/dist/core/ingestion/languages/rust/module-path.js +214 -0
  322. package/dist/core/ingestion/languages/rust/qualified-call.d.ts +41 -0
  323. package/dist/core/ingestion/languages/rust/qualified-call.js +481 -0
  324. package/dist/core/ingestion/languages/rust/query.js +39 -6
  325. package/dist/core/ingestion/languages/rust/scope-resolver.js +21 -2
  326. package/dist/core/ingestion/languages/rust.js +17 -0
  327. package/dist/core/ingestion/languages/swift/captures.js +87 -3
  328. package/dist/core/ingestion/languages/swift/conditional-directive-preprocess.d.ts +48 -0
  329. package/dist/core/ingestion/languages/swift/conditional-directive-preprocess.js +253 -0
  330. package/dist/core/ingestion/languages/swift/import-target.js +4 -9
  331. package/dist/core/ingestion/languages/swift/query.js +17 -0
  332. package/dist/core/ingestion/languages/swift/receiver-binding.d.ts +8 -0
  333. package/dist/core/ingestion/languages/swift/receiver-binding.js +6 -2
  334. package/dist/core/ingestion/languages/swift.js +2 -0
  335. package/dist/core/ingestion/languages/typescript/captures.d.ts +90 -1
  336. package/dist/core/ingestion/languages/typescript/captures.js +267 -5
  337. package/dist/core/ingestion/languages/typescript/cjs-export-assignment.d.ts +134 -0
  338. package/dist/core/ingestion/languages/typescript/cjs-export-assignment.js +523 -0
  339. package/dist/core/ingestion/languages/typescript/cjs-module-exports.d.ts +54 -0
  340. package/dist/core/ingestion/languages/typescript/cjs-module-exports.js +191 -0
  341. package/dist/core/ingestion/languages/typescript/convex-endpoint-metadata.d.ts +7 -0
  342. package/dist/core/ingestion/languages/typescript/convex-endpoint-metadata.js +92 -0
  343. package/dist/core/ingestion/languages/typescript/file-candidates.d.ts +29 -0
  344. package/dist/core/ingestion/languages/typescript/file-candidates.js +70 -0
  345. package/dist/core/ingestion/languages/typescript/import-decomposer.d.ts +28 -1
  346. package/dist/core/ingestion/languages/typescript/import-decomposer.js +125 -10
  347. package/dist/core/ingestion/languages/typescript/import-target.d.ts +25 -37
  348. package/dist/core/ingestion/languages/typescript/import-target.js +24 -26
  349. package/dist/core/ingestion/languages/typescript/interpret.d.ts +21 -1
  350. package/dist/core/ingestion/languages/typescript/interpret.js +45 -5
  351. package/dist/core/ingestion/languages/typescript/module-resolution.d.ts +48 -0
  352. package/dist/core/ingestion/languages/typescript/module-resolution.js +171 -0
  353. package/dist/core/ingestion/languages/typescript/query.d.ts +1 -0
  354. package/dist/core/ingestion/languages/typescript/query.js +303 -14
  355. package/dist/core/ingestion/languages/typescript/receiver-binding.d.ts +17 -0
  356. package/dist/core/ingestion/languages/typescript/receiver-binding.js +27 -0
  357. package/dist/core/ingestion/languages/typescript/scope-resolver.js +27 -40
  358. package/dist/core/ingestion/languages/typescript/simple-hooks.d.ts +0 -10
  359. package/dist/core/ingestion/languages/typescript/simple-hooks.js +22 -22
  360. package/dist/core/ingestion/languages/typescript/tsconfig.d.ts +59 -0
  361. package/dist/core/ingestion/languages/typescript/tsconfig.js +292 -0
  362. package/dist/core/ingestion/languages/typescript.js +93 -2
  363. package/dist/core/ingestion/languages/vue/import-target.d.ts +6 -22
  364. package/dist/core/ingestion/languages/vue/import-target.js +11 -47
  365. package/dist/core/ingestion/languages/vue/scope-resolver.js +4 -2
  366. package/dist/core/ingestion/local-symbol-pruner.js +11 -11
  367. package/dist/core/ingestion/method-extractors/configs/csharp.js +1 -0
  368. package/dist/core/ingestion/method-extractors/generic.js +1 -0
  369. package/dist/core/ingestion/method-types.d.ts +16 -0
  370. package/dist/core/ingestion/pipeline-phases/di.d.ts +1 -1
  371. package/dist/core/ingestion/pipeline-phases/di.js +136 -21
  372. package/dist/core/ingestion/pipeline-phases/index.d.ts +2 -0
  373. package/dist/core/ingestion/pipeline-phases/index.js +2 -0
  374. package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +15 -0
  375. package/dist/core/ingestion/pipeline-phases/parse-impl.js +154 -4
  376. package/dist/core/ingestion/pipeline-phases/parse.js +5 -0
  377. package/dist/core/ingestion/pipeline-phases/processes.d.ts +3 -2
  378. package/dist/core/ingestion/pipeline-phases/processes.js +91 -6
  379. package/dist/core/ingestion/pipeline-phases/routes.js +116 -25
  380. package/dist/core/ingestion/pipeline-phases/spring-aop.d.ts +34 -0
  381. package/dist/core/ingestion/pipeline-phases/spring-aop.js +439 -0
  382. package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.d.ts +34 -0
  383. package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.js +255 -0
  384. package/dist/core/ingestion/pipeline-phases/types.d.ts +7 -0
  385. package/dist/core/ingestion/pipeline.d.ts +26 -2
  386. package/dist/core/ingestion/pipeline.js +60 -11
  387. package/dist/core/ingestion/process-processor.d.ts +109 -2
  388. package/dist/core/ingestion/process-processor.js +464 -52
  389. package/dist/core/ingestion/resolve-references.d.ts +6 -1
  390. package/dist/core/ingestion/resolve-references.js +66 -6
  391. package/dist/core/ingestion/route-extractors/constant-resolver.d.ts +8 -2
  392. package/dist/core/ingestion/route-extractors/constant-resolver.js +11 -7
  393. package/dist/core/ingestion/route-extractors/data-route-table.d.ts +40 -0
  394. package/dist/core/ingestion/route-extractors/data-route-table.js +876 -0
  395. package/dist/core/ingestion/route-extractors/dispatch-guard.d.ts +96 -0
  396. package/dist/core/ingestion/route-extractors/dispatch-guard.js +1184 -0
  397. package/dist/core/ingestion/route-extractors/java-const-resolver.d.ts +114 -0
  398. package/dist/core/ingestion/route-extractors/java-const-resolver.js +569 -0
  399. package/dist/core/ingestion/route-extractors/js-const-resolver.d.ts +192 -0
  400. package/dist/core/ingestion/route-extractors/js-const-resolver.js +1033 -0
  401. package/dist/core/ingestion/route-extractors/nest.d.ts +53 -0
  402. package/dist/core/ingestion/route-extractors/nest.js +523 -0
  403. package/dist/core/ingestion/route-extractors/spring-shared.d.ts +11 -0
  404. package/dist/core/ingestion/route-extractors/spring-shared.js +89 -0
  405. package/dist/core/ingestion/route-extractors/spring.js +214 -29
  406. package/dist/core/ingestion/scope-extractor-bridge.js +9 -1
  407. package/dist/core/ingestion/scope-extractor.d.ts +22 -7
  408. package/dist/core/ingestion/scope-extractor.js +309 -15
  409. package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +311 -21
  410. package/dist/core/ingestion/scope-resolution/contract/scope-resolver.js +16 -5
  411. package/dist/core/ingestion/scope-resolution/graph-bridge/edges.d.ts +12 -0
  412. package/dist/core/ingestion/scope-resolution/graph-bridge/edges.js +47 -0
  413. package/dist/core/ingestion/scope-resolution/graph-bridge/ids.d.ts +20 -15
  414. package/dist/core/ingestion/scope-resolution/graph-bridge/ids.js +280 -42
  415. package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.d.ts +123 -0
  416. package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +171 -17
  417. package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.d.ts +58 -1
  418. package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +137 -34
  419. package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.d.ts +30 -1
  420. package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +39 -1
  421. package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.d.ts +18 -1
  422. package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.js +113 -18
  423. package/dist/core/ingestion/scope-resolution/passes/compound-receiver.d.ts +107 -5
  424. package/dist/core/ingestion/scope-resolution/passes/compound-receiver.js +590 -33
  425. package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +3 -0
  426. package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +101 -41
  427. package/dist/core/ingestion/scope-resolution/passes/imported-value-refs.d.ts +34 -0
  428. package/dist/core/ingestion/scope-resolution/passes/imported-value-refs.js +62 -0
  429. package/dist/core/ingestion/scope-resolution/passes/property-dispatch.d.ts +5 -1
  430. package/dist/core/ingestion/scope-resolution/passes/property-dispatch.js +8 -1
  431. package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.d.ts +105 -5
  432. package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +931 -92
  433. package/dist/core/ingestion/scope-resolution/passes/return-shape-members.d.ts +58 -0
  434. package/dist/core/ingestion/scope-resolution/passes/return-shape-members.js +458 -0
  435. package/dist/core/ingestion/scope-resolution/passes/unique-name-properties.d.ts +180 -0
  436. package/dist/core/ingestion/scope-resolution/passes/unique-name-properties.js +418 -0
  437. package/dist/core/ingestion/scope-resolution/pipeline/phase.d.ts +29 -0
  438. package/dist/core/ingestion/scope-resolution/pipeline/phase.js +57 -0
  439. package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +55 -1
  440. package/dist/core/ingestion/scope-resolution/pipeline/run.js +241 -19
  441. package/dist/core/ingestion/scope-resolution/resolution-outcome.d.ts +112 -2
  442. package/dist/core/ingestion/scope-resolution/resolution-outcome.js +38 -1
  443. package/dist/core/ingestion/scope-resolution/scope/namespace-targets.d.ts +25 -3
  444. package/dist/core/ingestion/scope-resolution/scope/namespace-targets.js +36 -16
  445. package/dist/core/ingestion/scope-resolution/scope/walkers.d.ts +210 -9
  446. package/dist/core/ingestion/scope-resolution/scope/walkers.js +905 -22
  447. package/dist/core/ingestion/scope-resolution/summary-maps.d.ts +28 -0
  448. package/dist/core/ingestion/scope-resolution/summary-maps.js +50 -0
  449. package/dist/core/ingestion/scope-resolution/undecided-satisfaction.d.ts +55 -0
  450. package/dist/core/ingestion/scope-resolution/undecided-satisfaction.js +37 -0
  451. package/dist/core/ingestion/scope-resolution/unresolved-receivers.d.ts +109 -0
  452. package/dist/core/ingestion/scope-resolution/unresolved-receivers.js +204 -0
  453. package/dist/core/ingestion/scope-resolution/utils/definition-id.d.ts +13 -0
  454. package/dist/core/ingestion/scope-resolution/utils/definition-id.js +19 -0
  455. package/dist/core/ingestion/scope-resolution/utils/generic-instantiation.d.ts +171 -0
  456. package/dist/core/ingestion/scope-resolution/utils/generic-instantiation.js +218 -0
  457. package/dist/core/ingestion/scope-resolution/workspace-index-types.d.ts +34 -0
  458. package/dist/core/ingestion/scope-resolution/workspace-index-types.js +15 -0
  459. package/dist/core/ingestion/scope-resolution/workspace-index.d.ts +7 -20
  460. package/dist/core/ingestion/tree-sitter-queries.d.ts +11 -11
  461. package/dist/core/ingestion/tree-sitter-queries.js +678 -4
  462. package/dist/core/ingestion/type-env.js +11 -7
  463. package/dist/core/ingestion/type-extractors/shared.d.ts +17 -0
  464. package/dist/core/ingestion/type-extractors/shared.js +16 -0
  465. package/dist/core/ingestion/type-extractors/types.d.ts +12 -0
  466. package/dist/core/ingestion/type-extractors/typescript.d.ts +20 -0
  467. package/dist/core/ingestion/type-extractors/typescript.js +26 -0
  468. package/dist/core/ingestion/utils/ast-helpers.d.ts +297 -15
  469. package/dist/core/ingestion/utils/ast-helpers.js +578 -46
  470. package/dist/core/ingestion/utils/call-analysis.d.ts +27 -22
  471. package/dist/core/ingestion/utils/call-analysis.js +202 -7
  472. package/dist/core/ingestion/utils/callable-flow-captures.d.ts +59 -0
  473. package/dist/core/ingestion/utils/callable-flow-captures.js +51 -1
  474. package/dist/core/ingestion/utils/callable-labels.d.ts +25 -0
  475. package/dist/core/ingestion/utils/callable-labels.js +31 -0
  476. package/dist/core/ingestion/utils/effective-ram.d.ts +40 -0
  477. package/dist/core/ingestion/utils/effective-ram.js +58 -0
  478. package/dist/core/ingestion/utils/line-base.d.ts +14 -0
  479. package/dist/core/ingestion/utils/line-base.js +14 -0
  480. package/dist/core/ingestion/utils/method-props.d.ts +27 -4
  481. package/dist/core/ingestion/utils/method-props.js +29 -4
  482. package/dist/core/ingestion/utils/receiver-chain-captures.d.ts +31 -0
  483. package/dist/core/ingestion/utils/receiver-chain-captures.js +57 -0
  484. package/dist/core/ingestion/utils/receiver-chain-codec.d.ts +89 -0
  485. package/dist/core/ingestion/utils/receiver-chain-codec.js +182 -0
  486. package/dist/core/ingestion/utils/scope-tree-walk.d.ts +22 -0
  487. package/dist/core/ingestion/utils/scope-tree-walk.js +33 -0
  488. package/dist/core/ingestion/utils/template-arguments.d.ts +96 -0
  489. package/dist/core/ingestion/utils/template-arguments.js +196 -0
  490. package/dist/core/ingestion/utils/type-parameters.d.ts +49 -0
  491. package/dist/core/ingestion/utils/type-parameters.js +206 -0
  492. package/dist/core/ingestion/workers/callable-id.d.ts +80 -0
  493. package/dist/core/ingestion/workers/callable-id.js +125 -0
  494. package/dist/core/ingestion/workers/parse-worker.d.ts +14 -1
  495. package/dist/core/ingestion/workers/parse-worker.js +493 -54
  496. package/dist/core/ingestion/workers/worker-pool.d.ts +20 -27
  497. package/dist/core/ingestion/workers/worker-pool.js +91 -3
  498. package/dist/core/lbug/csv-generator.d.ts +27 -0
  499. package/dist/core/lbug/csv-generator.js +72 -17
  500. package/dist/core/lbug/extension-load-error.js +13 -2
  501. package/dist/core/lbug/extension-loader.d.ts +29 -0
  502. package/dist/core/lbug/extension-loader.js +31 -6
  503. package/dist/core/lbug/graph-emit-sink.d.ts +264 -0
  504. package/dist/core/lbug/graph-emit-sink.js +581 -0
  505. package/dist/core/lbug/lbug-adapter.d.ts +290 -11
  506. package/dist/core/lbug/lbug-adapter.js +652 -69
  507. package/dist/core/lbug/native-check.d.ts +21 -0
  508. package/dist/core/lbug/native-check.js +248 -32
  509. package/dist/core/lbug/pdg-emit-sink.d.ts +13 -4
  510. package/dist/core/lbug/pdg-emit-sink.js +21 -111
  511. package/dist/core/lbug/pool-adapter.d.ts +9 -0
  512. package/dist/core/lbug/pool-adapter.js +164 -14
  513. package/dist/core/lbug/query-batch.d.ts +75 -0
  514. package/dist/core/lbug/query-batch.js +102 -0
  515. package/dist/core/lbug/rel-pair-routing.d.ts +160 -2
  516. package/dist/core/lbug/rel-pair-routing.js +228 -10
  517. package/dist/core/lbug/schema.d.ts +163 -4
  518. package/dist/core/lbug/schema.js +404 -159
  519. package/dist/core/lbug/sync-csv-writer.d.ts +47 -0
  520. package/dist/core/lbug/sync-csv-writer.js +108 -0
  521. package/dist/core/run-analyze.d.ts +147 -0
  522. package/dist/core/run-analyze.js +1215 -179
  523. package/dist/core/search/bm25-index.d.ts +11 -0
  524. package/dist/core/search/bm25-index.js +60 -26
  525. package/dist/core/search/fts-indexes.d.ts +150 -9
  526. package/dist/core/search/fts-indexes.js +241 -23
  527. package/dist/core/wiki/graph-queries.js +145 -112
  528. package/dist/core/wiki/llm-client.d.ts +29 -3
  529. package/dist/core/wiki/llm-client.js +47 -12
  530. package/dist/core/wiki/prompts.d.ts +19 -0
  531. package/dist/core/wiki/prompts.js +20 -1
  532. package/dist/lib/utils.d.ts +113 -0
  533. package/dist/lib/utils.js +185 -0
  534. package/dist/mcp/local/aop-metadata.d.ts +77 -0
  535. package/dist/mcp/local/aop-metadata.js +227 -0
  536. package/dist/mcp/local/bean-metadata.d.ts +2 -1
  537. package/dist/mcp/local/bean-metadata.js +22 -1
  538. package/dist/mcp/local/convex-metadata.d.ts +8 -0
  539. package/dist/mcp/local/convex-metadata.js +45 -0
  540. package/dist/mcp/local/local-backend.d.ts +174 -11
  541. package/dist/mcp/local/local-backend.js +1678 -331
  542. package/dist/mcp/local/path-predicate.d.ts +19 -0
  543. package/dist/mcp/local/path-predicate.js +21 -0
  544. package/dist/mcp/local/pdg-impact.d.ts +132 -10
  545. package/dist/mcp/local/pdg-impact.js +391 -98
  546. package/dist/mcp/repository-policy.d.ts +1 -0
  547. package/dist/mcp/repository-policy.js +5 -0
  548. package/dist/mcp/resources.js +26 -4
  549. package/dist/mcp/server.js +23 -13
  550. package/dist/mcp/tools.d.ts +8 -0
  551. package/dist/mcp/tools.js +76 -23
  552. package/dist/server/analyze-job.d.ts +37 -2
  553. package/dist/server/analyze-job.js +13 -2
  554. package/dist/server/analyze-launch.d.ts +1 -1
  555. package/dist/server/analyze-launch.js +79 -10
  556. package/dist/server/analyze-worker-core.d.ts +1 -1
  557. package/dist/server/analyze-worker-core.js +10 -1
  558. package/dist/server/analyze-worker-ipc.d.ts +1 -1
  559. package/dist/server/analyze-worker-ipc.js +4 -0
  560. package/dist/server/analyze-worker-protocol.d.ts +59 -0
  561. package/dist/server/analyze-worker-protocol.js +1 -0
  562. package/dist/server/analyze-worker.d.ts +1 -17
  563. package/dist/server/api.d.ts +2 -11
  564. package/dist/server/api.js +164 -163
  565. package/dist/server/embed-run-outcome.d.ts +89 -0
  566. package/dist/server/embed-run-outcome.js +88 -0
  567. package/dist/server/git-clone.js +6 -2
  568. package/dist/server/middleware.d.ts +116 -9
  569. package/dist/server/middleware.js +291 -22
  570. package/dist/server/sse-progress.d.ts +41 -0
  571. package/dist/server/sse-progress.js +125 -0
  572. package/dist/storage/branch-index.d.ts +11 -6
  573. package/dist/storage/branch-index.js +15 -7
  574. package/dist/storage/file-hash.js +2 -2
  575. package/dist/storage/fs-atomic.d.ts +25 -0
  576. package/dist/storage/fs-atomic.js +42 -0
  577. package/dist/storage/git.d.ts +131 -0
  578. package/dist/storage/git.js +236 -2
  579. package/dist/storage/index-lock.d.ts +102 -0
  580. package/dist/storage/index-lock.js +660 -0
  581. package/dist/storage/parse-cache.js +588 -6
  582. package/dist/storage/parsedfile-store.js +76 -6
  583. package/dist/storage/repo-manager.d.ts +54 -441
  584. package/dist/storage/repo-manager.js +312 -221
  585. package/dist/storage/repo-meta.d.ts +530 -0
  586. package/dist/storage/repo-meta.js +100 -0
  587. package/dist/types/pipeline.d.ts +37 -0
  588. package/hooks/antigravity/gitnexus-antigravity-hook.cjs +1 -1
  589. package/hooks/claude/gitnexus-hook.cjs +1 -1
  590. package/hooks/claude/resolve-analyze-cmd.cjs +80 -13
  591. package/package.json +11 -2
  592. package/scripts/cross-platform-shard.ts +153 -0
  593. package/scripts/cross-platform-tests.ts +122 -0
  594. package/scripts/run-cross-platform.ts +16 -5
  595. package/skills/gitnexus-cli.md +3 -3
  596. package/skills/gitnexus-debugging.md +37 -7
  597. package/skills/gitnexus-exploring.md +26 -4
  598. package/skills/gitnexus-impact-analysis.md +71 -10
  599. package/skills/gitnexus-plan/README.md +11 -6
  600. package/skills/gitnexus-plan/references/evidence-provenance.md +49 -12
  601. package/skills/gitnexus-plan/scripts/evidence-provenance.mjs +654 -372
  602. package/skills/gitnexus-refactoring.md +48 -5
  603. package/skills/gitnexus-review/SKILL.md +12 -6
  604. package/skills/gitnexus-review/ci-personas/ci-adversarial-lens.md +1 -1
  605. package/skills/gitnexus-review/ci-personas/ci-blast-radius-lens.md +1 -1
  606. package/skills/gitnexus-review/ci-personas/ci-correctness-lens.md +1 -1
  607. package/skills/gitnexus-review/ci-personas/ci-coverage-lens.md +1 -1
  608. package/skills/gitnexus-review/ci-personas/ci-critic-lens.md +1 -1
  609. package/skills/gitnexus-review/ci-personas/ci-security-lens.md +1 -1
  610. package/skills/gitnexus-taint-analysis.md +13 -7
  611. package/skills/gitnexus-work/SKILL.md +4 -1
  612. package/skills/gitnexus-work/references/evidence-provenance.md +49 -12
  613. package/skills/gitnexus-work/scripts/evidence-provenance.mjs +654 -372
  614. package/vendor/leiden/utils.cjs +28 -1
  615. package/web/assets/ProcessFlowModal-Badh2Pbg.js +24 -0
  616. package/web/assets/{__vite-browser-external-bMKyYQkO.js → __vite-browser-external-COxE8F0G.js} +1 -1
  617. package/web/assets/abnfDiagram-QNN2D4NM-Cq2djWWe.js +1 -0
  618. package/web/assets/agent-Dr4l5EOp.js +662 -0
  619. package/web/assets/architecture-TIHT7OUA-V6N4J3SY-fTePvLoe.js +1 -0
  620. package/web/assets/architectureDiagram-OT7VKSJ7-mKEXxkeF.js +36 -0
  621. package/web/assets/{blockDiagram-7IZFK4PR-DBefcjof.js → blockDiagram-54WLDVWM-Dg_hrRWE.js} +4 -4
  622. package/web/assets/{c4Diagram-Y2BXMSZH-EjWnjEJl.js → c4Diagram-X2LASM7V-CnhoT4aV.js} +2 -2
  623. package/web/assets/chunk-224SPVON-B8gxtXpy.js +1 -0
  624. package/web/assets/chunk-2AEHWXPW-CV4r6-1I.js +127 -0
  625. package/web/assets/chunk-2SREHG4O-Dip42xOq.js +1 -0
  626. package/web/assets/chunk-4RFN2BYJ-DHHWuC-n.js +1 -0
  627. package/web/assets/chunk-66DQ2XMT-CM0xjFAN.js +1 -0
  628. package/web/assets/chunk-6BELYETK-ChsYtfHW.js +1 -0
  629. package/web/assets/{chunk-LII3EMHJ-BL6lKJ_P.js → chunk-6L755F7B-CMhLBxi2.js} +1 -1
  630. package/web/assets/{chunk-QA3QBVWF-DVXPOIxe.js → chunk-7CWYLC5S-DRgGkkpF.js} +1 -1
  631. package/web/assets/{chunk-ZXARS5L4-C3v-4Fsw.js → chunk-A7VWPJGB-B4O3oQdQ.js} +1 -1
  632. package/web/assets/chunk-BI6VK774-D0oaWk8V.js +1 -0
  633. package/web/assets/chunk-D6VWDJW2-BxcBdZ9c.js +2 -0
  634. package/web/assets/chunk-DMV4VAQV-Bn6WXDSX.js +4 -0
  635. package/web/assets/chunk-E5QJAATJ-dh-5CtIV.js +2 -0
  636. package/web/assets/chunk-EQFTRU2I-1ix7TzW9.js +2 -0
  637. package/web/assets/chunk-FWYVLQTC-BgDItRzJ.js +1 -0
  638. package/web/assets/chunk-HNC4WDU7-DoU3KnA7.js +1 -0
  639. package/web/assets/chunk-L5GCOVLC-CE2w8Nm_.js +161 -0
  640. package/web/assets/chunk-LAHSG3N2-Bz4hcn0N.js +321 -0
  641. package/web/assets/chunk-LORZLZWG-B57uGw2N.js +88 -0
  642. package/web/assets/chunk-NLANEA3F-XpH_NPA5.js +62 -0
  643. package/web/assets/chunk-NV3KIAZN-5yvcpMiu.js +1 -0
  644. package/web/assets/chunk-OIYT25JQ-CQ6KOZGX.js +1 -0
  645. package/web/assets/chunk-PE7DX7ZZ-CCvRVj43.js +10 -0
  646. package/web/assets/chunk-Q67WD55A-BWCH2SVz.js +156 -0
  647. package/web/assets/chunk-RRFMTAIC-CMN0wcYA.js +1 -0
  648. package/web/assets/{chunk-RLI5ZMPA-CkXZ0y0U.js → chunk-SATU7PGQ-B1zhgOvc.js} +1 -1
  649. package/web/assets/chunk-STOV2HOB-GnExfzIX.js +1 -0
  650. package/web/assets/{chunk-INKRHTLW-Ckl3_KkO.js → chunk-SZD42YQK-ijyKKVr1.js} +21 -21
  651. package/web/assets/{chunk-LCXTWHL2-C162wE5z.js → chunk-TFPGFQPA-Dj6a-0pC.js} +3 -3
  652. package/web/assets/chunk-TGVD4F4B-BMc31Gj2.js +2 -0
  653. package/web/assets/chunk-TZUXEDM2-B7p9AcTw.js +1 -0
  654. package/web/assets/chunk-UAT7B5JY-DW-A_fpI.js +1 -0
  655. package/web/assets/{chunk-6764PJDD-C7xxk063.js → chunk-VE5CLXGZ-C1vB7wpY.js} +1 -1
  656. package/web/assets/{chunk-RG4AUYOV-ZNgyLFq6.js → chunk-VJFVEZTB-CX66F2ep.js} +3 -3
  657. package/web/assets/chunk-VY5UBI4V-yxPQAWxw.js +1 -0
  658. package/web/assets/chunk-WJBAP47W-BckNkuEN.js +1 -0
  659. package/web/assets/chunk-XNMVGMAZ-Cg_LnPtj.js +1 -0
  660. package/web/assets/classDiagram-VPOSVPXH-BjOiXA_C.js +1 -0
  661. package/web/assets/classDiagram-v2-5VFNUXQA-BjOiXA_C.js +1 -0
  662. package/web/assets/{cose-bilkent-UX7MHV2Q-BmnZ7Mvj.js → cose-bilkent-RZA4XIPR-BHpK4Crp.js} +1 -1
  663. package/web/assets/cynefin-VYW2F7L2-2VAHYKR6-DAsF6GZv.js +1 -0
  664. package/web/assets/cynefinDiagram-TR7LZUCG-C3Iar9lZ.js +62 -0
  665. package/web/assets/dagre-K64A6Z3X-CUwi79mA.js +4 -0
  666. package/web/assets/diagram-2TLGJV2N-C2F5Nfym.js +30 -0
  667. package/web/assets/diagram-JCD7PQ7C-DC5-9FRr.js +24 -0
  668. package/web/assets/{diagram-HNR7UZ2L-DVRltWbL.js → diagram-KFBZAVDW-Dfmf_4ti.js} +3 -3
  669. package/web/assets/diagram-L7DVE3PN-GIRyVUtt.js +41 -0
  670. package/web/assets/diagram-YP3FGXHI-CyNFYtkd.js +24 -0
  671. package/web/assets/ebnfDiagram-DRHRQJWO-D8_CI4ZF.js +1 -0
  672. package/web/assets/erDiagram-SZLJLQMB-CohQjznC.js +85 -0
  673. package/web/assets/error-D9MtuG9s.js +1 -0
  674. package/web/assets/eventmodeling-45OFAUF4-AOUJWSLX-BvTc6iQi.js +1 -0
  675. package/web/assets/flowDiagram-BWE6NHOH-B6RnEvD9.js +1 -0
  676. package/web/assets/ganttDiagram-2QTCJSNI-Cks_mEcF.js +292 -0
  677. package/web/assets/gitGraph-TEB2WS4Q-U5VWYIBC-Dy7CCSZ5.js +1 -0
  678. package/web/assets/gitGraphDiagram-VVZAVV5G-CG41cIVc.js +106 -0
  679. package/web/assets/{index-D7mTFcvQ.js → index-2zdvEdzg.js} +51 -51
  680. package/web/assets/index-CJDpyH-n.css +2 -0
  681. package/web/assets/info-DKCQHKI2-DX6KST54-BLJg1ikX.js +1 -0
  682. package/web/assets/infoDiagram-FY4PZKRE-BJ3vPVwW.js +2 -0
  683. package/web/assets/{ishikawaDiagram-BNXS4ZKH-XpjJRU9h.js → ishikawaDiagram-4JDSWWDM-DmqWtjkl.js} +2 -2
  684. package/web/assets/{journeyDiagram-M6C3CM3L-C6wjooas.js → journeyDiagram-QUS3FAKT-XAzVzrQW.js} +3 -3
  685. package/web/assets/{kanban-definition-75IXJCU3-5_UVY79g.js → kanban-definition-D4L7SQKK-YurRnmYn.js} +6 -6
  686. package/web/assets/katex-C5OPUE3Q-Bnbavtmu.js +257 -0
  687. package/web/assets/{mindmap-definition-2TDM6QVE-8xDLzk2e.js → mindmap-definition-66QP5TD6-ChrWWnil.js} +5 -5
  688. package/web/assets/node.browser-U-KyT5AW.js +1 -0
  689. package/web/assets/packet-7NZHBO7P-5WG45QPS-KUxcuvaA.js +1 -0
  690. package/web/assets/pegDiagram-YKIO5C6U-QGeQLEq2.js +1 -0
  691. package/web/assets/pie-RZYD4A2V-2OCZ2VTD-DPs08kJY.js +1 -0
  692. package/web/assets/pieDiagram-YPY3TKG5-BuT3MYzm.js +39 -0
  693. package/web/assets/{quadrantDiagram-VICAPDV7-DR54jOeR.js → quadrantDiagram-VO5QLCXA-B7098wSc.js} +3 -3
  694. package/web/assets/radar-I7S5WNFK-EPLSA35B-w5F0K3a7.js +1 -0
  695. package/web/assets/railroad-3IZDKUUU-PWFQV6Y6-Bu668yqY.js +1 -0
  696. package/web/assets/railroad-abnf-AHOZXSZD-JYYJX3BS-B6ghpETS.js +1 -0
  697. package/web/assets/railroad-ebnf-EBAXGLYW-RBZ4ONAP-D-XmHh3M.js +1 -0
  698. package/web/assets/railroad-peg-LSFZ7HO6-KHNPXGPG-mhkrhzEn.js +1 -0
  699. package/web/assets/railroadDiagram-M77LTMSB-AXu4vxk_.js +1 -0
  700. package/web/assets/{requirementDiagram-JXO7QTGE-PEkg7sKC.js → requirementDiagram-RASO5HTO-B-l8InpK.js} +4 -4
  701. package/web/assets/{sankeyDiagram-URQDO5SZ-DDWEtjcs.js → sankeyDiagram-F32LOJ6L-Kd7zjJgX.js} +3 -3
  702. package/web/assets/{sequenceDiagram-VS2MUI6T-Bv-uwANx.js → sequenceDiagram-URATNSBD-BlcdY9DS.js} +7 -7
  703. package/web/assets/sizeCapture-5GORAGP4-BEqQzsxs.js +1 -0
  704. package/web/assets/src-C5sx_gMp.js +1 -0
  705. package/web/assets/stateDiagram-DODFXNG5-DTdHc-fF.js +1 -0
  706. package/web/assets/stateDiagram-v2-JNMM5JRA-DioNLDDo.js +1 -0
  707. package/web/assets/swimlanes-OSWOYLSK-CA0ofdwY.js +2 -0
  708. package/web/assets/swimlanesDiagram-RHGX2RDE-PkwUdckC.js +8 -0
  709. package/web/assets/{timeline-definition-O6YCAMPW-Qmsuo7qS.js → timeline-definition-WJXWRH4I-DUfp1R3E.js} +3 -3
  710. package/web/assets/treeView-QDETBFTQ-EHYTSQNO-C5lpBgPm.js +1 -0
  711. package/web/assets/treemap-6X3UGDF4-CCWCF7EK-BB0ZyO-B.js +1 -0
  712. package/web/assets/vennDiagram-K3VCMQLI-Bj-FN-XS.js +34 -0
  713. package/web/assets/wardley-OPB4EBWU-6OWERDVT-CEA3Nq0j.js +1 -0
  714. package/web/assets/wardleyDiagram-XK6FUAWV-CVV0dHFr.js +78 -0
  715. package/web/assets/xychartDiagram-5VRUVLCW-CK_rbSWE.js +7 -0
  716. package/web/index.html +16 -15
  717. package/dist/core/ingestion/languages/python/index-stats.d.ts +0 -18
  718. package/dist/core/ingestion/languages/python/index-stats.js +0 -25
  719. package/web/assets/ProcessFlowModal-CwkpVkv-.js +0 -22
  720. package/web/assets/agent-Ds-lkZjX.js +0 -626
  721. package/web/assets/architecture-7EHR7CIX-6QZW5X65-BVWFvYz2.js +0 -1
  722. package/web/assets/architectureDiagram-UL44E2DR-CmG3uPWf.js +0 -36
  723. package/web/assets/chunk-2T2R6R2M-Bb6Sy3_j.js +0 -4
  724. package/web/assets/chunk-2UTLFMKG-CXlhF3Pt.js +0 -1
  725. package/web/assets/chunk-3SSMPTDK-rPsRM1x0.js +0 -321
  726. package/web/assets/chunk-4R4BOZG6-Be_F0JoX.js +0 -159
  727. package/web/assets/chunk-67TQ5CYL-CA7OhIEf.js +0 -124
  728. package/web/assets/chunk-7J6CGLKN-BlKwgXKs.js +0 -10
  729. package/web/assets/chunk-C62D2QBJ-3gdL8EKc.js +0 -1
  730. package/web/assets/chunk-CEXFNPSA-CjwtMDkc.js +0 -1
  731. package/web/assets/chunk-J5EP6P6S-L19oz55R.js +0 -1
  732. package/web/assets/chunk-KGFNY3KK-BZeP-55u.js +0 -62
  733. package/web/assets/chunk-KGYTTC2M-zm6n242I.js +0 -1
  734. package/web/assets/chunk-KNLZD3CH-BGlP6X9R.js +0 -1
  735. package/web/assets/chunk-LRIF4GLE-n59lhprL.js +0 -1
  736. package/web/assets/chunk-RERM46MO-B5dAdWpP.js +0 -1
  737. package/web/assets/chunk-RKZBBQEN-MyIQbGgD.js +0 -1
  738. package/web/assets/chunk-T2UQINTJ-BEyXhZWe.js +0 -1
  739. package/web/assets/chunk-UP6H54XL-BG-n7qDp.js +0 -1
  740. package/web/assets/chunk-UXSXWOXI-CW1_r5cS.js +0 -1
  741. package/web/assets/chunk-UY5QBCOK-ByqTVLvh.js +0 -1
  742. package/web/assets/chunk-VU6ZFW4Y-BLeasdkU.js +0 -2
  743. package/web/assets/classDiagram-KGZ6W3CR-olpO3fMe.js +0 -1
  744. package/web/assets/classDiagram-v2-72OJOZXJ-olpO3fMe.js +0 -1
  745. package/web/assets/dagre-ND4H6XIP-CY4iIF7v.js +0 -4
  746. package/web/assets/diagram-3NCE3AQN-CO6QpzEE.js +0 -43
  747. package/web/assets/diagram-GF46GFSD-B2atbzmU.js +0 -24
  748. package/web/assets/diagram-QXG6HAR7-DR6AHD2h.js +0 -24
  749. package/web/assets/diagram-WEQXMOUZ-DkpoMwTL.js +0 -10
  750. package/web/assets/erDiagram-L5TCEMPS-n8g_90bc.js +0 -85
  751. package/web/assets/eventmodeling-FCH6USID-MREXMVOE-CgFBM7e-.js +0 -1
  752. package/web/assets/flowDiagram-H6V6AXG4-SGMDiCkB.js +0 -162
  753. package/web/assets/ganttDiagram-JCBTUEKG-Cb3UBqRS.js +0 -292
  754. package/web/assets/gitGraph-WXDBUCRP-R675I2BI-DCJv7SII.js +0 -1
  755. package/web/assets/gitGraphDiagram-S2ZK5IYY-Bs9CR7tq.js +0 -106
  756. package/web/assets/index-CX_fADmQ.css +0 -2
  757. package/web/assets/info-J43DQDTF-KCYPFFUO-BfNy-9Nd.js +0 -1
  758. package/web/assets/infoDiagram-3YFTVSEB-T368on4D.js +0 -2
  759. package/web/assets/katex-K3KEBU37-qRQBy-EZ.js +0 -261
  760. package/web/assets/node-Ct_zna8U.js +0 -8
  761. package/web/assets/packet-YPE3B663-LP52Z2RK-D4qkeG9k.js +0 -1
  762. package/web/assets/pie-LRSECV5Y-TCRJHUBD-B_yMKyQa.js +0 -1
  763. package/web/assets/pieDiagram-CU6KROY3-Bv4LpAbr.js +0 -30
  764. package/web/assets/radar-GUYGQ44K-RDLRG3WG-DeD6yN_0.js +0 -1
  765. package/web/assets/sdk-CzHHH8tD.js +0 -37
  766. package/web/assets/src-Cv1eWg0o.js +0 -1
  767. package/web/assets/stateDiagram-7D4R322I-DVNjmkEq.js +0 -1
  768. package/web/assets/stateDiagram-v2-36443NZ5-CyN4Fh7_.js +0 -1
  769. package/web/assets/treeView-BLDUP644-QA4HXRO3-CDuSYnd4.js +0 -1
  770. package/web/assets/treemap-LRROVOQU-LLAWBHMP-imazucyJ.js +0 -1
  771. package/web/assets/vennDiagram-MWXL3ELB-BD1iK1SX.js +0 -34
  772. package/web/assets/wardley-L42UT6IY-5TKZOOLJ-DqrT9tB8.js +0 -1
  773. package/web/assets/wardleyDiagram-CUQ6CDDI-D6TzLVob.js +0 -78
  774. package/web/assets/xychartDiagram-N2JHSOCM-CoZ_Tits.js +0 -7
  775. /package/web/assets/{chunk-7W6UQGC5-pyKGssV3.js → chunk-LIEV3EAG-pyKGssV3.js} +0 -0
@@ -9,7 +9,51 @@ import { SupportedLanguages } from '../../../_shared/index.js';
9
9
  import { defineLanguage } from '../language-provider.js';
10
10
  import { createClassExtractor } from '../class-extractors/generic.js';
11
11
  import { typescriptClassConfig, javascriptClassConfig, } from '../class-extractors/configs/typescript-javascript.js';
12
- import { createLeadingDocDescriptionExtractor } from '../utils/ast-helpers.js';
12
+ import { createLeadingDocDescriptionExtractor, isCjsDefaultExportAssignment, isPrototypeMemberAssignmentNode, } from '../utils/ast-helpers.js';
13
+ import { cjsExportedNameFor, isModuleLevelThisAssignment, isModuleLevelThisExport, isShadowedCjsExportAssignmentNode, } from './typescript/cjs-export-assignment.js';
14
+ const rootOf = (node) => node.tree?.rootNode;
15
+ /** `exports.X = fn` where the module already declares `X` — see #2723. */
16
+ const isShadowedCjsExportNode = (node) => {
17
+ const root = rootOf(node);
18
+ return root !== undefined && isShadowedCjsExportAssignmentNode(node, root);
19
+ };
20
+ /**
21
+ * Label for a `<receiver>.<member> = <function>` capture (#2723 follow-up).
22
+ *
23
+ * The member-assignment queries match ANY identifier receiver, because an
24
+ * `exports` alias (`const e = exports; e.foo = fn`) cannot be pinned in the
25
+ * query. Everything that is not a recognised shape is dropped HERE — without
26
+ * that, every `obj.handler = function () {}` in every JS/TS file would emit a
27
+ * spurious top-level `Function` named `handler`.
28
+ *
29
+ * Recognised: a CJS export (direct, `module.exports`, or via a module-scope
30
+ * alias) stays a Function; a prototype or `this` member becomes a Method; a
31
+ * CJS export shadowing a name the module already declares emits nothing.
32
+ */
33
+ const memberAssignmentLabel = (node) => {
34
+ const root = rootOf(node);
35
+ // Module-level `this.X = fn` in CommonJS IS `module.exports.X = fn`, so it
36
+ // is an exported Function, not an instance member. Checked before the
37
+ // Method branch, which would otherwise claim every `this` receiver.
38
+ if (root !== undefined && isModuleLevelThisExport(node, root))
39
+ return 'Function';
40
+ // `module.exports = fn` — the module itself is the callable.
41
+ if (isCjsDefaultExportAssignment(node))
42
+ return 'Function';
43
+ // A module-level `this` member in ESM or a no-signal file is neither an
44
+ // export (top-level `this` is undefined) nor an instance member. Emitting a
45
+ // Method there minted an ownerless node (#2729 review F13).
46
+ if (isModuleLevelThisAssignment(node))
47
+ return null;
48
+ if (isPrototypeMemberAssignmentNode(node))
49
+ return 'Method';
50
+ if (isShadowedCjsExportNode(node))
51
+ return null;
52
+ const value = node.childForFieldName('right');
53
+ if (root === undefined || value === null)
54
+ return null;
55
+ return cjsExportedNameFor(value, root) !== null ? 'Function' : null;
56
+ };
13
57
  import { createTypeScriptCfgVisitor } from '../cfg/visitors/typescript.js';
14
58
  import { typeConfig as typescriptConfig } from '../type-extractors/typescript.js';
15
59
  import { tsExportChecker } from '../export-detection.js';
@@ -28,6 +72,15 @@ import { typescriptCallConfig, javascriptCallConfig, } from '../call-extractors/
28
72
  import { ARRAY_METHOD_HOC_BLOCKLIST_SET, DEFAULT_EXPORT_IDENTIFIER_BLOCKLIST_SET, deriveDefaultExportHocName, } from '../ts-js-hoc-utils.js';
29
73
  import { emitTsScopeCaptures, interpretTsImport, interpretTsTypeBinding, tsBindingScopeFor, tsImportOwningScope, tsReceiverBinding, typescriptMergeBindings, typescriptArityCompatibility, resolveTsImportTarget, } from './typescript/index.js';
30
74
  import { emitJsScopeCaptures, interpretJsImport, interpretJsTypeBinding, jsBindingScopeFor, jsImportOwningScope, jsReceiverBinding, jsMergeBindings, jsArityCompatibility, } from './javascript/index.js';
75
+ import { extractDispatchGuardRoutes } from '../route-extractors/dispatch-guard.js';
76
+ import { extractDataRouteTableRoutes } from '../route-extractors/data-route-table.js';
77
+ import { extractNestRoutes } from '../route-extractors/nest.js';
78
+ import { extractConvexEndpointProperties } from './typescript/convex-endpoint-metadata.js';
79
+ const extractJsTsRoutes = (...args) => [
80
+ ...extractDispatchGuardRoutes(...args),
81
+ ...extractDataRouteTableRoutes(...args),
82
+ ...extractNestRoutes(...args),
83
+ ];
31
84
  /**
32
85
  * TypeScript/JavaScript: arrow_function and function_expression are
33
86
  * anonymous AST nodes — they take their name from the surrounding
@@ -250,6 +303,15 @@ export const BUILT_INS = new Set([
250
303
  'toString',
251
304
  'valueOf',
252
305
  ]);
306
+ /**
307
+ * `this` is the only receiver keyword JavaScript and TypeScript bind, and it
308
+ * is bound by every function form except an arrow (#2701). The query files
309
+ * tag those forms with `@receiver-owner.this`; this hook just reads the tag,
310
+ * so the node-type list stays in the one place that already names grammar
311
+ * nodes. See `Scope.ownsReceivers` for what the marker does to the walk.
312
+ */
313
+ const TS_OWNED_RECEIVERS = new Set(['this']);
314
+ const tsScopeOwnsReceivers = (match) => match['@receiver-owner.this'] === undefined ? undefined : TS_OWNED_RECEIVERS;
253
315
  export const typescriptProvider = defineLanguage({
254
316
  id: SupportedLanguages.TypeScript,
255
317
  extensions: ['.ts', '.tsx'],
@@ -278,6 +340,7 @@ export const typescriptProvider = defineLanguage({
278
340
  ],
279
341
  treeSitterQueries: TYPESCRIPT_QUERIES,
280
342
  typeConfig: typescriptConfig,
343
+ scopeOwnsReceivers: tsScopeOwnsReceivers,
281
344
  exportChecker: tsExportChecker,
282
345
  importResolver: createImportResolver(typescriptImportConfig),
283
346
  callExtractor: createCallExtractor(typescriptCallConfig),
@@ -287,6 +350,7 @@ export const typescriptProvider = defineLanguage({
287
350
  extractFunctionName: tsExtractFunctionName,
288
351
  }),
289
352
  variableExtractor: createVariableExtractor(typescriptVariableConfig),
353
+ definitionPropertiesExtractor: extractConvexEndpointProperties,
290
354
  classExtractor: createClassExtractor(typescriptClassConfig),
291
355
  // ── JSDoc → description (issue #2270). An exported decl is captured as the
292
356
  // inner declaration; its JSDoc precedes the wrapping `export_statement`. ──
@@ -294,6 +358,19 @@ export const typescriptProvider = defineLanguage({
294
358
  wrapperNodeTypes: ['export_statement'],
295
359
  }),
296
360
  builtInNames: BUILT_INS,
361
+ // Member-assignment shapes are not free functions (#2723 follow-up). The
362
+ // capture arrives anchored on the assignment, so the shape is decided from
363
+ // the left-hand side:
364
+ // - `Foo.prototype.bar = fn` / `this.bar = fn` -> a Method
365
+ // - a CJS export shadowing a name the module already declares -> no node
366
+ // at all, since the scope declaration that would reach it is suppressed
367
+ // too (an orphan `Function` twin beside `class Dup {}` otherwise).
368
+ // Every other `definition.function` capture keeps its default label.
369
+ labelOverride: (functionNode, defaultLabel) => defaultLabel !== 'Function'
370
+ ? defaultLabel
371
+ : functionNode.type === 'assignment_expression'
372
+ ? memberAssignmentLabel(functionNode)
373
+ : defaultLabel,
297
374
  // ── RFC #909 Ring 3: scope-based resolution hooks (RFC §5) ──────────
298
375
  // TypeScript is the third migration after Python and C#. See
299
376
  // ./typescript/index.ts for the full per-hook rationale and the
@@ -314,10 +391,14 @@ export const typescriptProvider = defineLanguage({
314
391
  receiverBinding: tsReceiverBinding,
315
392
  arityCompatibility: typescriptArityCompatibility,
316
393
  resolveImportTarget: resolveTsImportTarget,
394
+ // A raw `node:http` server declares its routes by comparing the request path
395
+ // to a literal; nothing else in this pipeline can see that shape. TS and JS
396
+ // share the grammar, so they share the extractor.
397
+ extractDecoratorRoutes: extractJsTsRoutes,
317
398
  });
318
399
  export const javascriptProvider = defineLanguage({
319
400
  id: SupportedLanguages.JavaScript,
320
- extensions: ['.js', '.jsx'],
401
+ extensions: ['.js', '.jsx', '.mjs', '.cjs'],
321
402
  entryPointPatterns: [/^use[A-Z]/],
322
403
  astFrameworkPatterns: [
323
404
  {
@@ -343,6 +424,7 @@ export const javascriptProvider = defineLanguage({
343
424
  ],
344
425
  treeSitterQueries: JAVASCRIPT_QUERIES,
345
426
  typeConfig: typescriptConfig,
427
+ scopeOwnsReceivers: tsScopeOwnsReceivers,
346
428
  exportChecker: tsExportChecker,
347
429
  importResolver: createImportResolver(javascriptImportConfig),
348
430
  callExtractor: createCallExtractor(javascriptCallConfig),
@@ -352,6 +434,7 @@ export const javascriptProvider = defineLanguage({
352
434
  extractFunctionName: tsExtractFunctionName,
353
435
  }),
354
436
  variableExtractor: createVariableExtractor(javascriptVariableConfig),
437
+ definitionPropertiesExtractor: extractConvexEndpointProperties,
355
438
  classExtractor: createClassExtractor(javascriptClassConfig),
356
439
  // ── JSDoc → description (issue #2270). An exported decl is captured as the
357
440
  // inner declaration; its JSDoc precedes the wrapping `export_statement`. ──
@@ -359,6 +442,12 @@ export const javascriptProvider = defineLanguage({
359
442
  wrapperNodeTypes: ['export_statement'],
360
443
  }),
361
444
  builtInNames: BUILT_INS,
445
+ // Member-assignment shapes — see the TypeScript provider above.
446
+ labelOverride: (functionNode, defaultLabel) => defaultLabel !== 'Function'
447
+ ? defaultLabel
448
+ : functionNode.type === 'assignment_expression'
449
+ ? memberAssignmentLabel(functionNode)
450
+ : defaultLabel,
362
451
  // ── RFC #909 Ring 3: scope-based resolution hooks (RFC §5) ──────────
363
452
  // JavaScript is the fourth migration after Python, C#, and TypeScript.
364
453
  // Hooks are thin wrappers over the TypeScript implementations where
@@ -375,4 +464,6 @@ export const javascriptProvider = defineLanguage({
375
464
  mergeBindings: (_scope, bindings) => jsMergeBindings(bindings),
376
465
  receiverBinding: jsReceiverBinding,
377
466
  arityCompatibility: jsArityCompatibility,
467
+ // See the TypeScript provider above.
468
+ extractDecoratorRoutes: extractJsTsRoutes,
378
469
  });
@@ -1,27 +1,11 @@
1
1
  /**
2
2
  * Import-target resolver for Vue SFCs (RFC #909 Ring 3, issue #940).
3
3
  *
4
- * Vue `<script>` / `<script setup>` blocks are TypeScript (or plain
5
- * JavaScript), so the resolver delegates to `resolveTsTarget` with
6
- * `language: SupportedLanguages.TypeScript` to get:
7
- *
8
- * - tsconfig path-alias rewriting (Vue projects universally use TS)
9
- * - `.ts` / `.tsx` / `.js` / `.jsx` extension-suffix fallback
10
- *
11
- * `.vue` imports are written with explicit extensions (`'./Button.vue'`),
12
- * so no Vue-specific suffix guessing is required: the standard
13
- * resolver finds them via the exact-path branch before any extension
14
- * logic fires.
15
- *
16
- * Memoization mirrors the TypeScript adapter: workspace file-list
17
- * arrays, the suffix index, and the per-pass resolve cache are rebuilt
18
- * lazily when `allFilePaths` reference changes (once per workspace pass).
19
- */
20
- /**
21
- * Build a memoized `resolveImportTarget` adapter for Vue SFCs.
22
- *
23
- * Uses `SupportedLanguages.TypeScript` so tsconfig path-alias resolution
24
- * and `.ts`/`.tsx` extension guessing fire for relative and bare-specifier
25
- * imports inside `<script>` blocks.
4
+ * `<script>` / `<script setup>` blocks are TypeScript or plain JavaScript, so
5
+ * resolution is TypeScript's: the same tsconfig `paths`/`baseUrl` rules and the
6
+ * same `package.json` manifests. `.vue` imports are written with an explicit
7
+ * extension (`'./Button.vue'`) and `.vue` is in the candidate list, so no
8
+ * Vue-specific guessing is required — the exact-path branch finds them first.
26
9
  */
10
+ /** Build the Vue `resolveImportTarget` adapter. */
27
11
  export declare function makeVueResolveImportTarget(): (targetRaw: string, fromFile: string, allFilePaths: ReadonlySet<string>, resolutionConfig?: unknown) => string | readonly string[] | null;
@@ -1,58 +1,22 @@
1
1
  /**
2
2
  * Import-target resolver for Vue SFCs (RFC #909 Ring 3, issue #940).
3
3
  *
4
- * Vue `<script>` / `<script setup>` blocks are TypeScript (or plain
5
- * JavaScript), so the resolver delegates to `resolveTsTarget` with
6
- * `language: SupportedLanguages.TypeScript` to get:
7
- *
8
- * - tsconfig path-alias rewriting (Vue projects universally use TS)
9
- * - `.ts` / `.tsx` / `.js` / `.jsx` extension-suffix fallback
10
- *
11
- * `.vue` imports are written with explicit extensions (`'./Button.vue'`),
12
- * so no Vue-specific suffix guessing is required: the standard
13
- * resolver finds them via the exact-path branch before any extension
14
- * logic fires.
15
- *
16
- * Memoization mirrors the TypeScript adapter: workspace file-list
17
- * arrays, the suffix index, and the per-pass resolve cache are rebuilt
18
- * lazily when `allFilePaths` reference changes (once per workspace pass).
4
+ * `<script>` / `<script setup>` blocks are TypeScript or plain JavaScript, so
5
+ * resolution is TypeScript's: the same tsconfig `paths`/`baseUrl` rules and the
6
+ * same `package.json` manifests. `.vue` imports are written with an explicit
7
+ * extension (`'./Button.vue'`) and `.vue` is in the candidate list, so no
8
+ * Vue-specific guessing is required — the exact-path branch finds them first.
19
9
  */
20
- import { SupportedLanguages } from '../../../../_shared/index.js';
21
10
  import { resolveTsTarget } from '../typescript/import-target.js';
22
- import { buildSuffixIndex } from '../../import-resolvers/utils.js';
23
- /**
24
- * Build a memoized `resolveImportTarget` adapter for Vue SFCs.
25
- *
26
- * Uses `SupportedLanguages.TypeScript` so tsconfig path-alias resolution
27
- * and `.ts`/`.tsx` extension guessing fire for relative and bare-specifier
28
- * imports inside `<script>` blocks.
29
- */
11
+ /** Build the Vue `resolveImportTarget` adapter. */
30
12
  export function makeVueResolveImportTarget() {
31
- let cached = null;
32
13
  return (targetRaw, fromFile, allFilePaths, resolutionConfig) => {
33
- if (cached === null || cached.key !== allFilePaths) {
34
- const allFileList = Array.from(allFilePaths);
35
- const normalizedFileList = allFileList.map((f) => f.toLowerCase());
36
- cached = {
37
- key: allFilePaths,
38
- allFilePaths: new Set(allFilePaths),
39
- allFileList,
40
- normalizedFileList,
41
- index: buildSuffixIndex(normalizedFileList, allFileList),
42
- resolveCache: new Map(),
43
- };
44
- }
45
14
  const cfg = resolutionConfig;
46
- const ws = {
15
+ return resolveTsTarget(targetRaw, {
47
16
  fromFile,
48
- language: SupportedLanguages.TypeScript,
49
- allFilePaths: cached.allFilePaths,
50
- allFileList: cached.allFileList,
51
- normalizedFileList: cached.normalizedFileList,
52
- index: cached.index,
53
- resolveCache: cached.resolveCache,
54
- tsconfigPaths: cfg?.tsconfigPaths ?? null,
55
- };
56
- return resolveTsTarget(targetRaw, ws);
17
+ allFilePaths,
18
+ tsconfigs: cfg?.tsconfigs ?? null,
19
+ nodeWorkspacePackages: cfg?.nodeWorkspacePackages ?? null,
20
+ });
57
21
  };
58
22
  }
@@ -56,7 +56,8 @@ import { buildMro, defaultLinearize } from '../../scope-resolution/passes/mro.js
56
56
  import { populateClassOwnedMembers } from '../../scope-resolution/scope/walkers.js';
57
57
  import { simpleKey } from '../../scope-resolution/graph-bridge/node-lookup.js';
58
58
  import { vueProvider } from '../vue.js';
59
- import { loadTsconfigPaths } from '../../language-config.js';
59
+ import { loadTsconfigIndex } from '../typescript/tsconfig.js';
60
+ import { loadNodeWorkspacePackages } from '../../import-resolvers/node-workspace-packages.js';
60
61
  import { typescriptArityCompatibility, typescriptMergeBindings } from '../typescript/index.js';
61
62
  import { makeVueResolveImportTarget } from './import-target.js';
62
63
  import { extractVueTemplateEdgeData } from '../../vue-sfc-extractor.js';
@@ -79,7 +80,8 @@ const vueScopeResolver = {
79
80
  // Vue projects universally use TypeScript — load tsconfig so path
80
81
  // aliases (`@/`, `~/`, `#/`) resolve through the standard branch.
81
82
  loadResolutionConfig: async (repoPath) => ({
82
- tsconfigPaths: await loadTsconfigPaths(repoPath),
83
+ tsconfigs: await loadTsconfigIndex(repoPath),
84
+ nodeWorkspacePackages: await loadNodeWorkspacePackages(repoPath),
83
85
  }),
84
86
  // TypeScript LEGB semantics apply inside `<script>` / `<script setup>`.
85
87
  mergeBindings: (existing, incoming) => [...typescriptMergeBindings([...existing, ...incoming])],
@@ -16,10 +16,10 @@ const isLocalValueCandidate = (node) => {
16
16
  // True when `rel` is the structural `File -> DEFINES -> candidate` edge. Callers
17
17
  // guard on the candidate already being the edge target, so only the source label
18
18
  // needs checking here.
19
- const isFileDefinesEdge = (graph, rel) => {
20
- if (rel.type !== 'DEFINES')
19
+ const isFileDefinesEdge = (graph, type, sourceId) => {
20
+ if (type !== 'DEFINES')
21
21
  return false;
22
- return graph.getNode(rel.sourceId)?.label === 'File';
22
+ return graph.getNode(sourceId)?.label === 'File';
23
23
  };
24
24
  export const pruneLocalValueSymbols = (graph, options = {}) => {
25
25
  if (options.keepLocalValueSymbols ?? shouldKeepLocalValueSymbols()) {
@@ -33,20 +33,20 @@ export const pruneLocalValueSymbols = (graph, options = {}) => {
33
33
  if (candidateIds.size === 0)
34
34
  return emptyStats(false);
35
35
  const candidatesWithSemanticEdges = new Set();
36
- for (const rel of graph.iterRelationships()) {
36
+ // Field-wise scan (#2680): a whole-graph walk that reads only these three, so
37
+ // materializing a relationship object per edge would be pure overhead.
38
+ graph.forEachRelationshipFields((sourceId, targetId, type) => {
37
39
  // Any outgoing edge from a candidate is a semantic edge: the only structural
38
40
  // edge a block-local value symbol carries is the incoming File -> DEFINES, on
39
41
  // which the candidate is the target, never the source.
40
- if (candidateIds.has(rel.sourceId)) {
41
- candidatesWithSemanticEdges.add(rel.sourceId);
42
+ if (candidateIds.has(sourceId)) {
43
+ candidatesWithSemanticEdges.add(sourceId);
42
44
  }
43
45
  // An incoming edge is semantic unless it is the structural File -> DEFINES.
44
- if (candidateIds.has(rel.targetId)) {
45
- if (!isFileDefinesEdge(graph, rel)) {
46
- candidatesWithSemanticEdges.add(rel.targetId);
47
- }
46
+ if (candidateIds.has(targetId) && !isFileDefinesEdge(graph, type, sourceId)) {
47
+ candidatesWithSemanticEdges.add(targetId);
48
48
  }
49
- }
49
+ });
50
50
  let prunedNodes = 0;
51
51
  for (const candidateId of candidateIds) {
52
52
  if (candidatesWithSemanticEdges.has(candidateId))
@@ -282,6 +282,7 @@ export const csharpMethodConfig = {
282
282
  annotations: [], // C# has no syntax for attributes on primary constructors
283
283
  sourceFile: context.filePath,
284
284
  line: paramList.startPosition.row + 1,
285
+ column: paramList.startPosition.column,
285
286
  };
286
287
  },
287
288
  };
@@ -202,5 +202,6 @@ function buildMethod(node, ownerNode, context, config) {
202
202
  annotations: config.extractAnnotations?.(node) ?? [],
203
203
  sourceFile: context.filePath,
204
204
  line: node.startPosition.row + 1,
205
+ column: node.startPosition.column,
205
206
  };
206
207
  }
@@ -31,6 +31,22 @@ export interface MethodInfo {
31
31
  annotations: string[];
32
32
  sourceFile: string;
33
33
  line: number;
34
+ /**
35
+ * 0-based `startPosition.column` of the node `line` was derived from.
36
+ *
37
+ * `line` alone does NOT identify a callable. A callable that is SYNTHESIZED
38
+ * at a position that is not its own declaration shares its owner's line: a
39
+ * Java record's implicit component accessor is minted at the COMPONENT, and a
40
+ * C# 12 primary constructor at the owner's `parameter_list`. So both
41
+ * `record P(int x, int y) { int x(int s) {…} }` and
42
+ * `class Point(int x, int y) { public Point(int x) : this(x, 0) {} }` give two
43
+ * different callables the same (name, line) (#2936).
44
+ *
45
+ * Required, not optional: the per-class map in parse-worker keys on it, and
46
+ * an absent column would key an entry no lookup could ever reach — a silent,
47
+ * whole-language loss of method enrichment rather than a compile error.
48
+ */
49
+ column: number;
34
50
  }
35
51
  export interface MethodExtractorContext {
36
52
  filePath: string;
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Framework-neutral dependency-injection resolution. Per-language resolvers
5
5
  * identify injection sites and provider metadata; this phase performs only
6
- * graph-level type/heritage resolution and emits Class -> Class INJECTS edges.
6
+ * graph-level type/heritage resolution and emits owner/site -> provider INJECTS edges.
7
7
  *
8
8
  * @deps mro
9
9
  * @reads graph (Class/Interface/member nodes and heritage/ownership edges)
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Framework-neutral dependency-injection resolution. Per-language resolvers
5
5
  * identify injection sites and provider metadata; this phase performs only
6
- * graph-level type/heritage resolution and emits Class -> Class INJECTS edges.
6
+ * graph-level type/heritage resolution and emits owner/site -> provider INJECTS edges.
7
7
  *
8
8
  * @deps mro
9
9
  * @reads graph (Class/Interface/member nodes and heritage/ownership edges)
@@ -13,6 +13,16 @@ import { DI_RESOLVERS, isSupportedLanguage, } from '../di-extractors/index.js';
13
13
  import { isDev } from '../utils/env.js';
14
14
  import { logger } from '../../logger.js';
15
15
  const AMBIGUOUS = Symbol('ambiguous');
16
+ function addProvidedType(index, language, typeName, providerId) {
17
+ const byName = index.get(language) ?? new Map();
18
+ const names = new Set([typeName, typeName.slice(typeName.lastIndexOf('.') + 1)]);
19
+ for (const name of names) {
20
+ const providers = byName.get(name) ?? new Set();
21
+ providers.add(providerId);
22
+ byName.set(name, providers);
23
+ }
24
+ index.set(language, byName);
25
+ }
16
26
  function emptyNameIndex() {
17
27
  return { byQualifiedName: new Map(), bySimpleName: new Map() };
18
28
  }
@@ -50,6 +60,10 @@ export const diPhase = {
50
60
  });
51
61
  const candidates = [];
52
62
  const providers = new Map();
63
+ const providedTypes = new Map();
64
+ const providerNames = new Map();
65
+ const providerNodes = new Map();
66
+ const providersByDeclarer = new Map();
53
67
  ctx.graph.forEachNode((node) => {
54
68
  const language = node.properties.language;
55
69
  if (language === undefined || !isSupportedLanguage(language))
@@ -58,8 +72,25 @@ export const diPhase = {
58
72
  if (resolver === undefined)
59
73
  return;
60
74
  const provider = resolver.matchProvider(node);
61
- if (provider !== null)
75
+ if (provider !== null) {
62
76
  providers.set(node.id, provider);
77
+ providerNodes.set(node.id, node);
78
+ const namesByLanguage = providerNames.get(language) ?? new Map();
79
+ for (const name of provider.names) {
80
+ const namedProviders = namesByLanguage.get(name) ?? new Set();
81
+ namedProviders.add(node.id);
82
+ namesByLanguage.set(name, namedProviders);
83
+ }
84
+ providerNames.set(language, namesByLanguage);
85
+ if (provider.providedTypeName !== undefined) {
86
+ addProvidedType(providedTypes, language, provider.providedTypeName, node.id);
87
+ }
88
+ if (provider.declaredByNodeId !== undefined) {
89
+ const declared = providersByDeclarer.get(provider.declaredByNodeId) ?? new Set();
90
+ declared.add(node.id);
91
+ providersByDeclarer.set(provider.declaredByNodeId, declared);
92
+ }
93
+ }
63
94
  for (const match of resolver.matchInjectionSites(node)) {
64
95
  candidates.push({ ...match, siteNodeId: node.id, language });
65
96
  }
@@ -73,10 +104,19 @@ export const diPhase = {
73
104
  };
74
105
  }
75
106
  const interfaceToImplementers = new Map();
107
+ const directSupertypes = new Map();
76
108
  for (const rel of ctx.graph.iterRelationshipsByType('IMPLEMENTS')) {
77
109
  const set = interfaceToImplementers.get(rel.targetId) ?? new Set();
78
110
  set.add(rel.sourceId);
79
111
  interfaceToImplementers.set(rel.targetId, set);
112
+ const supertypes = directSupertypes.get(rel.sourceId) ?? new Set();
113
+ supertypes.add(rel.targetId);
114
+ directSupertypes.set(rel.sourceId, supertypes);
115
+ }
116
+ for (const rel of ctx.graph.iterRelationshipsByType('EXTENDS')) {
117
+ const supertypes = directSupertypes.get(rel.sourceId) ?? new Set();
118
+ supertypes.add(rel.targetId);
119
+ directSupertypes.set(rel.sourceId, supertypes);
80
120
  }
81
121
  const memberToClass = new Map();
82
122
  for (const relationType of ['HAS_PROPERTY', 'HAS_METHOD']) {
@@ -87,7 +127,6 @@ export const diPhase = {
87
127
  const candidateLanguages = new Set(candidates.map((candidate) => candidate.language));
88
128
  const interfacesByLanguage = new Map();
89
129
  const classesByLanguage = new Map();
90
- const classNodes = new Map();
91
130
  ctx.graph.forEachNode((node) => {
92
131
  if (node.label !== 'Class' && node.label !== 'Interface')
93
132
  return;
@@ -99,8 +138,62 @@ export const diPhase = {
99
138
  addIndexedName(index, node);
100
139
  indexes.set(language, index);
101
140
  if (node.label === 'Class')
102
- classNodes.set(node.id, node);
141
+ providerNodes.set(node.id, node);
103
142
  });
143
+ // A declaration returning a concrete class is assignable to every class or
144
+ // interface that type extends/implements. Expand once per language+type and
145
+ // register the declaration under those ancestor names. This keeps named
146
+ // selection fast (set intersection below) while allowing, for example, a
147
+ // `DefaultGateway` Bean to satisfy a named `Gateway` Resource site.
148
+ const assignableNamesByProvidedType = new Map();
149
+ for (const [providerId, provider] of providers) {
150
+ if (provider.providedTypeName === undefined)
151
+ continue;
152
+ const providerNode = providerNodes.get(providerId);
153
+ const language = providerNode?.properties.language;
154
+ if (typeof language !== 'string')
155
+ continue;
156
+ const cacheKey = `${language}\0${provider.providedTypeName}`;
157
+ let assignableTypeNames = assignableNamesByProvidedType.get(cacheKey);
158
+ if (assignableTypeNames === undefined) {
159
+ const classEntry = resolveIndexedName(classesByLanguage.get(language), provider.providedTypeName);
160
+ const interfaceEntry = resolveIndexedName(interfacesByLanguage.get(language), provider.providedTypeName);
161
+ const rootTypeId = typeof classEntry === 'string' && interfaceEntry === undefined
162
+ ? classEntry
163
+ : typeof interfaceEntry === 'string' && classEntry === undefined
164
+ ? interfaceEntry
165
+ : undefined;
166
+ const names = new Set();
167
+ if (rootTypeId !== undefined) {
168
+ const queue = [rootTypeId];
169
+ const visited = new Set();
170
+ while (queue.length > 0) {
171
+ const typeId = queue.pop();
172
+ if (typeId === undefined)
173
+ continue;
174
+ if (visited.has(typeId))
175
+ continue;
176
+ visited.add(typeId);
177
+ const typeNode = ctx.graph.getNode(typeId);
178
+ if ((typeNode?.label === 'Class' || typeNode?.label === 'Interface') &&
179
+ typeNode.properties.language === language) {
180
+ names.add(typeNode.properties.name);
181
+ const qualifiedName = typeNode.properties.qualifiedName;
182
+ if (typeof qualifiedName === 'string')
183
+ names.add(qualifiedName);
184
+ }
185
+ for (const supertypeId of directSupertypes.get(typeId) ?? []) {
186
+ queue.push(supertypeId);
187
+ }
188
+ }
189
+ }
190
+ assignableTypeNames = [...names];
191
+ assignableNamesByProvidedType.set(cacheKey, assignableTypeNames);
192
+ }
193
+ for (const typeName of assignableTypeNames) {
194
+ addProvidedType(providedTypes, language, typeName, providerId);
195
+ }
196
+ }
104
197
  let ambiguousSkipped = 0;
105
198
  let ambiguousInjections = 0;
106
199
  const ambiguousTypeNames = new Set();
@@ -118,6 +211,7 @@ export const diPhase = {
118
211
  const consumerClassId = siteNode?.label === 'Class' ? siteNode.id : memberToClass.get(candidate.siteNodeId);
119
212
  if (consumerClassId === undefined)
120
213
  continue;
214
+ const edgeSourceId = candidate.edgeSource === 'site' && siteNode !== undefined ? siteNode.id : consumerClassId;
121
215
  const classEntry = resolveIndexedName(classesByLanguage.get(candidate.language), candidate.targetTypeName);
122
216
  const interfaceEntry = resolveIndexedName(interfacesByLanguage.get(candidate.language), candidate.targetTypeName);
123
217
  if (classEntry === AMBIGUOUS ||
@@ -140,36 +234,57 @@ export const diPhase = {
140
234
  for (const id of interfaceToImplementers.get(interfaceEntry) ?? [])
141
235
  structural.add(id);
142
236
  }
237
+ for (const id of providedTypes.get(candidate.language)?.get(candidate.targetTypeName) ?? []) {
238
+ structural.add(id);
239
+ }
240
+ for (const id of providersByDeclarer.get(edgeSourceId) ?? [])
241
+ structural.delete(id);
143
242
  structural.delete(consumerClassId);
243
+ structural.delete(edgeSourceId);
144
244
  if (structural.size === 0)
145
245
  continue;
146
- let viable = providerCandidates(structural, providers);
147
246
  const namedSelection = candidate.namedSelection;
247
+ let usedNamedSelection = false;
248
+ let selectionSuffix = '';
249
+ let viable;
148
250
  if (namedSelection !== undefined) {
149
- viable = viable.filter((id) => providers.get(id)?.names.includes(namedSelection.name) === true);
150
- if (viable.length === 0)
251
+ const named = [
252
+ ...(providerNames.get(candidate.language)?.get(namedSelection.name) ?? []),
253
+ ].filter((id) => structural.has(id));
254
+ if (named.length > 0) {
255
+ viable = named;
256
+ usedNamedSelection = true;
257
+ selectionSuffix = `; ${namedSelection.reason}`;
258
+ }
259
+ else if (namedSelection.fallbackToType === true) {
260
+ viable = providerCandidates(structural, providers);
261
+ selectionSuffix = `; ${namedSelection.reason} unmatched; type fallback`;
262
+ }
263
+ else {
151
264
  continue;
265
+ }
266
+ }
267
+ else {
268
+ viable = providerCandidates(structural, providers);
152
269
  }
153
270
  if (candidate.cardinality === 'collection') {
154
- const confidence = namedSelection === undefined ? 0.8 : 0.9;
155
- const suffix = namedSelection === undefined ? '' : `; ${namedSelection.reason}`;
271
+ const confidence = usedNamedSelection ? 0.9 : 0.8;
156
272
  for (const targetId of viable) {
157
273
  queueEdge({
158
- sourceId: consumerClassId,
274
+ sourceId: edgeSourceId,
159
275
  targetId,
160
276
  confidence,
161
- reason: candidate.reason + suffix,
277
+ reason: candidate.reason + selectionSuffix,
162
278
  });
163
279
  }
164
280
  continue;
165
281
  }
166
282
  if (viable.length === 1) {
167
- const suffix = namedSelection === undefined ? '' : `; ${namedSelection.reason}`;
168
283
  queueEdge({
169
- sourceId: consumerClassId,
284
+ sourceId: edgeSourceId,
170
285
  targetId: viable[0],
171
- confidence: namedSelection === undefined ? 0.9 : 0.95,
172
- reason: candidate.reason + suffix,
286
+ confidence: usedNamedSelection ? 0.95 : namedSelection === undefined ? 0.9 : 0.85,
287
+ reason: candidate.reason + selectionSuffix,
173
288
  });
174
289
  continue;
175
290
  }
@@ -177,27 +292,27 @@ export const diPhase = {
177
292
  const reason = providers.get(id)?.preferenceReason;
178
293
  return reason === undefined ? [] : [{ id, reason }];
179
294
  });
180
- if (namedSelection === undefined && preferred.length === 1) {
295
+ if (!usedNamedSelection && preferred.length === 1) {
181
296
  const selected = preferred[0];
182
297
  queueEdge({
183
- sourceId: consumerClassId,
298
+ sourceId: edgeSourceId,
184
299
  targetId: selected.id,
185
300
  confidence: 0.95,
186
- reason: `${candidate.reason}; ${selected.reason}`,
301
+ reason: `${candidate.reason}${selectionSuffix}; ${selected.reason}`,
187
302
  });
188
303
  continue;
189
304
  }
190
305
  ambiguousInjections++;
191
306
  const candidateNames = viable
192
- .map((id) => classNodes.get(id)?.properties.name ?? id)
307
+ .map((id) => providerNodes.get(id)?.properties.name ?? id)
193
308
  .sort()
194
309
  .join(', ');
195
310
  for (const targetId of viable) {
196
311
  queueEdge({
197
- sourceId: consumerClassId,
312
+ sourceId: edgeSourceId,
198
313
  targetId,
199
314
  confidence: 0.5,
200
- reason: `${candidate.reason}; ambiguous candidates: ${candidateNames}`,
315
+ reason: `${candidate.reason}${selectionSuffix}; ambiguous candidates: ${candidateNames}`,
201
316
  });
202
317
  }
203
318
  }