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
@@ -6,6 +6,7 @@ import { cArityCompatibility, cMergeBindings, resolveCImportTarget } from './ind
6
6
  import { scanHeaderFiles } from './header-scan.js';
7
7
  import { expandCWildcardNames, isStaticName, clearStaticNames } from './static-linkage.js';
8
8
  import { applyCStaticLinkageSideChannel } from './capture-side-channel.js';
9
+ import { perFileSet } from '../../import-resolvers/per-file-set.js';
9
10
  /**
10
11
  * Per-pass memo of the augmented `#include`-resolution file set
11
12
  * (`allFilePaths` ∪ header `.h` paths), keyed on the two stable source sets.
@@ -16,25 +17,25 @@ import { applyCStaticLinkageSideChannel } from './capture-side-channel.js';
16
17
  * handing it a new set identity each time. Both `allFilePaths` (built once in
17
18
  * scope-resolution `run.ts`) and the header set (`loadResolutionConfig`
18
19
  * result) are stable per pass, so the union is built once and reused.
19
- * `WeakMap`-keyed → reclaimed with the pass (no cross-pass staleness).
20
+ * Reclaimed with the pass (no cross-pass staleness).
21
+ *
22
+ * Two inputs, so two levels of `perFileSet` composed rather than a second
23
+ * primitive: the outer memo's value is the inner memo, and a function is an
24
+ * object, which is all `T extends object` asks for.
25
+ *
26
+ * The MEMO stays private to this file even though the C++ resolver's twin is
27
+ * byte-identical. The augmented set's IDENTITY is load-bearing downstream —
28
+ * C++ delegates to `resolveCImportTarget`, whose `suffixIndex` memo is keyed on
29
+ * exactly this set — so one memo shared across the two languages would hand
30
+ * each the other's index. Same builder-shared/memo-separate rule as
31
+ * `import-resolvers/pass-cache.ts`.
20
32
  */
21
- const augmentedPathsByPass = new WeakMap();
22
- function augmentedFilePaths(allFilePaths, headerPaths) {
23
- let byHeaders = augmentedPathsByPass.get(allFilePaths);
24
- if (byHeaders === undefined) {
25
- byHeaders = new WeakMap();
26
- augmentedPathsByPass.set(allFilePaths, byHeaders);
27
- }
28
- let augmented = byHeaders.get(headerPaths);
29
- if (augmented === undefined) {
30
- const set = new Set(allFilePaths);
31
- for (const h of headerPaths)
32
- set.add(h);
33
- augmented = set;
34
- byHeaders.set(headerPaths, augmented);
35
- }
36
- return augmented;
37
- }
33
+ const augmentedFilePathsFor = perFileSet((allFilePaths) => perFileSet((headerPaths) => {
34
+ const set = new Set(allFilePaths);
35
+ for (const h of headerPaths)
36
+ set.add(h);
37
+ return set;
38
+ }));
38
39
  /**
39
40
  * C `ScopeResolver` registered in `SCOPE_RESOLVERS` and consumed by
40
41
  * the generic `runScopeResolution` orchestrator (RFC #909 Ring 3).
@@ -78,7 +79,7 @@ export const cScopeResolver = {
78
79
  // targets .h files classified as C++ in language detection.
79
80
  const headerPaths = resolutionConfig;
80
81
  if (headerPaths !== undefined && headerPaths.size > 0) {
81
- return resolveCImportTarget(targetRaw, fromFile, augmentedFilePaths(allFilePaths, headerPaths));
82
+ return resolveCImportTarget(targetRaw, fromFile, augmentedFilePathsFor(allFilePaths)(headerPaths));
82
83
  }
83
84
  return resolveCImportTarget(targetRaw, fromFile, allFilePaths);
84
85
  },
@@ -1,3 +1,4 @@
1
+ import { perFileSet } from '../../import-resolvers/per-file-set.js';
1
2
  /**
2
3
  * Per-file set of function names declared with `static` storage class.
3
4
  * Populated during `emitCScopeCaptures` and consumed by `expandCWildcardNames`
@@ -52,27 +53,22 @@ export function clearStaticNames() {
52
53
  * thousands of resolved includes) that is ~10^10+ comparisons on a single
53
54
  * thread — the dominant term in the scope-resolution finalize grind.
54
55
  *
55
- * Building the lookup once collapses it to O(R_include + F). `WeakMap`-keyed
56
- * on the array so the index is reclaimed with the pass — no cross-pass
56
+ * Building the lookup once collapses it to O(R_include + F). `perFileSet` keys
57
+ * on the array identity so the index is reclaimed with the pass — no cross-pass
57
58
  * staleness (mirrors the {@link clearStaticNames} discipline for server-mode
58
59
  * / multi-repo reuse), and a fresh array transparently rebuilds.
59
60
  */
60
- const moduleScopeIndexByPass = new WeakMap();
61
- function moduleScopeIndex(parsedFiles) {
62
- let index = moduleScopeIndexByPass.get(parsedFiles);
63
- if (index === undefined) {
64
- index = new Map();
65
- // First-wins to preserve `Array.find` semantics (returns the first match).
66
- // `moduleScope` is unique per file in practice, so collisions are absent;
67
- // the guard only formalises identical behaviour to the prior `.find`.
68
- for (const p of parsedFiles) {
69
- if (!index.has(p.moduleScope))
70
- index.set(p.moduleScope, p);
71
- }
72
- moduleScopeIndexByPass.set(parsedFiles, index);
61
+ const moduleScopeIndex = perFileSet((parsedFiles) => {
62
+ const index = new Map();
63
+ // First-wins to preserve `Array.find` semantics (returns the first match).
64
+ // `moduleScope` is unique per file in practice, so collisions are absent;
65
+ // the guard only formalises identical behaviour to the prior `.find`.
66
+ for (const p of parsedFiles) {
67
+ if (!index.has(p.moduleScope))
68
+ index.set(p.moduleScope, p);
73
69
  }
74
70
  return index;
75
- }
71
+ });
76
72
  /**
77
73
  * Return the names visible through a C wildcard import (`#include`).
78
74
  * All module-scope defs from the target file are visible EXCEPT those
@@ -369,6 +369,13 @@ export const cProvider = defineLanguage({
369
369
  // than a DataCloneError at the worker boundary (#2143).
370
370
  collectCaptureSideChannel: (filePath) => assertCloneable(collectCStaticLinkageSideChannel(filePath)),
371
371
  interpretImport: interpretCImport,
372
+ // `#include` is a preprocessor directive, not a statement that runs. The
373
+ // header text is spliced in before the program starts, wherever the directive
374
+ // sits — and C allows it inside a function body. Without this the central
375
+ // Pass-3 position rule would mark such an include `runsOnlyWhenCalled` and
376
+ // `check --cycles` would silently drop an include cycle that is entirely
377
+ // real. See `LanguageProvider.importsExecuteWhereWritten`.
378
+ importsExecuteWhereWritten: false,
372
379
  interpretTypeBinding: interpretCTypeBinding,
373
380
  bindingScopeFor: cBindingScopeFor,
374
381
  importOwningScope: cImportOwningScope,
@@ -447,6 +454,12 @@ export const cppProvider = defineLanguage({
447
454
  // re-parse (#1983). See `cpp/capture-side-channel.ts`.
448
455
  collectCaptureSideChannel: (filePath) => assertCloneable(collectCppCaptureSideChannel(filePath)),
449
456
  interpretImport: interpretCppImport,
457
+ // Same as C — `cpp/query.ts` emits `@import.statement` for `preproc_include`
458
+ // too. It holds for C++'s whole import surface: the only other form Pass 3
459
+ // sees is `@import.using-decl` (`using ns::name` / `using namespace ns`),
460
+ // which is a compile-time name-lookup declaration and executes no more than
461
+ // an `#include` does. See the note on `cProvider`.
462
+ importsExecuteWhereWritten: false,
450
463
  interpretTypeBinding: interpretCppTypeBinding,
451
464
  bindingScopeFor: cppBindingScopeFor,
452
465
  importOwningScope: cppImportOwningScope,
@@ -10,10 +10,34 @@
10
10
  */
11
11
  import path from 'node:path';
12
12
  import { SupportedLanguages } from '../../../../_shared/index.js';
13
+ import { perFileSet } from '../../import-resolvers/per-file-set.js';
13
14
  import { populateClassOwnedMembers } from '../../scope-resolution/scope/walkers.js';
14
15
  import { cobolProvider } from '../cobol.js';
15
16
  // Copybook file extensions for COPY name resolution
16
17
  const COPYBOOK_EXTENSIONS = new Set(['.cpy', '.copybook']);
18
+ // COBOL source files, searched only after every copybook has missed.
19
+ const COBOL_SOURCE_EXTENSIONS = new Set(['.cbl', '.cob', '.cobol']);
20
+ const getCobolCopyIndex = perFileSet((allFilePaths) => {
21
+ const copybooks = new Map();
22
+ const sources = new Map();
23
+ // One pass builds both tiers: the two scans walked the same files and
24
+ // classified each by the same extension test.
25
+ for (const fp of allFilePaths) {
26
+ const ext = path.extname(fp).toLowerCase();
27
+ const tier = COPYBOOK_EXTENSIONS.has(ext)
28
+ ? copybooks
29
+ : COBOL_SOURCE_EXTENSIONS.has(ext)
30
+ ? sources
31
+ : undefined;
32
+ if (tier === undefined)
33
+ continue;
34
+ const basename = path.basename(fp, ext).toUpperCase();
35
+ // First in Set-iteration order wins, as the scans' first-match `return` did.
36
+ if (!tier.has(basename))
37
+ tier.set(basename, fp);
38
+ }
39
+ return { copybooks, sources };
40
+ });
17
41
  const cobolScopeResolver = {
18
42
  language: SupportedLanguages.Cobol,
19
43
  languageProvider: cobolProvider,
@@ -21,26 +45,9 @@ const cobolScopeResolver = {
21
45
  // ── Resolve COPY bookname to file path ─────────────────────────────
22
46
  resolveImportTarget: (targetRaw, _fromFile, allFilePaths) => {
23
47
  const upper = targetRaw.toUpperCase();
24
- // Check copybook files first
25
- for (const fp of allFilePaths) {
26
- const ext = path.extname(fp).toLowerCase();
27
- if (!COPYBOOK_EXTENSIONS.has(ext))
28
- continue;
29
- const basename = path.basename(fp, ext).toUpperCase();
30
- if (basename === upper)
31
- return fp;
32
- }
33
- // Also search COBOL source files (.cbl, .cob, .cobol)
34
- const COBOL_SOURCE_EXTS = new Set(['.cbl', '.cob', '.cobol']);
35
- for (const fp of allFilePaths) {
36
- const ext = path.extname(fp).toLowerCase();
37
- if (!COBOL_SOURCE_EXTS.has(ext))
38
- continue;
39
- const basename = path.basename(fp, ext).toUpperCase();
40
- if (basename === upper)
41
- return fp;
42
- }
43
- return null;
48
+ const index = getCobolCopyIndex(allFilePaths);
49
+ // Copybooks first, then COBOL sources — the tier order IS the tie-break.
50
+ return index.copybooks.get(upper) ?? index.sources.get(upper) ?? null;
44
51
  },
45
52
  // COBOL has no binding-merge rules beyond the default (local-first-then-imports).
46
53
  mergeBindings: (existing) => [...existing],
@@ -34,6 +34,19 @@ export const cobolProvider = defineLanguage({
34
34
  // ── Scope-resolution hooks ───────────────────────────────────────
35
35
  emitScopeCaptures: emitCobolScopeCaptures,
36
36
  interpretImport: interpretCobolImport,
37
+ // `COPY` is a pure textual splice by the copybook preprocessor — the
38
+ // `#include` case exactly, and COBOL's only import form. It is spliced before
39
+ // anything runs, so a copybook cycle built from `COPY` statements is real and
40
+ // must not be tagged `runsOnlyWhenCalled` by the central Pass-3 position rule.
41
+ //
42
+ // LATENT today, declared anyway. `cobol/captures.ts` ranges every
43
+ // `@scope.function` (PROCEDURE DIVISION sections and paragraphs) over a
44
+ // SINGLE line — `rangeOf(line, 0, line, endCol)` — so a `COPY` on any later
45
+ // line never resolves inside a Function scope and Pass 3 has nothing to mark.
46
+ // The flag is here so that giving those anchors their true multi-line ranges
47
+ // is a scope-resolution fix and not, silently, a cycle-suppression bug.
48
+ // See `LanguageProvider.importsExecuteWhereWritten`.
49
+ importsExecuteWhereWritten: false,
37
50
  importOwningScope: cobolImportOwningScope,
38
51
  receiverBinding: cobolReceiverBinding,
39
52
  });
@@ -58,8 +58,8 @@
58
58
  * - `noAdlSites` — call sites with parenthesized function (capture-time)
59
59
  * - `classToNamespaceQualifiedName` — class def → its enclosing namespace
60
60
  * qualified name (`populateCppAssociatedNamespaces` time)
61
- * - `adlIndex` / `adlIndexSource` — the lazily-built candidate index and the
62
- * `parsedFiles` reference it was built from (first-`pickCppAdlCandidates`
61
+ * - `adlIndexByPass` — the lazily-built candidate index, memoized weakly on
62
+ * the `parsedFiles` array it was built from (first-`pickCppAdlCandidates`
63
63
  * time; see `ensureAdlIndex`)
64
64
  *
65
65
  * The class→namespace map uses qualified names (not scope IDs) because
@@ -58,8 +58,8 @@
58
58
  * - `noAdlSites` — call sites with parenthesized function (capture-time)
59
59
  * - `classToNamespaceQualifiedName` — class def → its enclosing namespace
60
60
  * qualified name (`populateCppAssociatedNamespaces` time)
61
- * - `adlIndex` / `adlIndexSource` — the lazily-built candidate index and the
62
- * `parsedFiles` reference it was built from (first-`pickCppAdlCandidates`
61
+ * - `adlIndexByPass` — the lazily-built candidate index, memoized weakly on
62
+ * the `parsedFiles` array it was built from (first-`pickCppAdlCandidates`
63
63
  * time; see `ensureAdlIndex`)
64
64
  *
65
65
  * The class→namespace map uses qualified names (not scope IDs) because
@@ -103,8 +103,21 @@ function pushFileSiteKey(idx, filePath, key) {
103
103
  }
104
104
  keys.push(key);
105
105
  }
106
- let adlIndex;
107
- let adlIndexSource;
106
+ /**
107
+ * Per-pass memo: `parsedFiles` array identity → the built index. `WeakMap`-keyed
108
+ * so the entry lives only as long as the caller's `parsedFiles` array does, and
109
+ * is reclaimed with the pass — mirrors `qualifiedNsIndexByPass` in
110
+ * `inline-namespaces.ts` and `moduleScopeIndexByPass` in `file-local-linkage.ts`.
111
+ *
112
+ * Weak keying is load-bearing, not stylistic: the index holds
113
+ * `SymbolDefinition` references reaching into every ParsedFile's scopes, so the
114
+ * previous module-level strong `let` pair (index + source array) kept the whole
115
+ * C/C++ ParsedFile set alive past the point `scope-resolution/pipeline/phase.ts`
116
+ * evicts `files`/`contents`/`preExtractedByPath` and calls `forceGc()` to
117
+ * reclaim it — C++ is 7th of 16 `SCOPE_RESOLVERS` entries, so the retention
118
+ * survived nine later language passes plus emit.
119
+ */
120
+ let adlIndexByPass = new WeakMap();
108
121
  function siteKey(filePath, line, col) {
109
122
  return `${filePath}:${line}:${col}`;
110
123
  }
@@ -292,26 +305,36 @@ export function validateAdlSeqCoverage(idx) {
292
305
  return [...missing];
293
306
  }
294
307
  /** Build the ADL index on first use of a given `parsedFiles` set; reuse it for
295
- * all subsequent call sites in the same pipeline run. Reset by
308
+ * every subsequent call site in the same pipeline run. Reset by
296
309
  * `clearCppAdlState`.
297
310
  *
311
+ * Lifetime: the memoized entry is reachable only while the caller still holds
312
+ * the `parsedFiles` array. Once the pipeline drops it, the entry — and the
313
+ * `SymbolDefinition` references it holds into those files' scopes — becomes
314
+ * collectable; nothing here pins it (see {@link adlIndexByPass}).
315
+ *
298
316
  * Staleness is keyed on `parsedFiles` reference identity ONLY, but the index
299
317
  * is a function of THREE inputs: `parsedFiles` (namespace/friend candidates),
300
318
  * `scopes` (`classDefsBySimple`, read from `scopes.defs.byId`), and the
301
- * module-level `classToNamespaceQualifiedName` (friend-candidate keys). This
302
- * is sound for the current pipeline because all three are built together once
303
- * per `runScopeResolution` pass and `clearCppAdlState` runs in
304
- * `loadResolutionConfig` at the start of every pass. Callers MUST call
305
- * `clearCppAdlState` between any two passes that change `scopes` or
306
- * `classToNamespaceQualifiedName` while reusing the same `parsedFiles` array
307
- * reference — otherwise a stale index would be served. (No such caller exists
308
- * today; widening the guard to also key on `scopes` is deferred until one
309
- * does.) */
319
+ * module-level `classToNamespaceQualifiedName` (friend-candidate keys). The
320
+ * WeakMap key covers only the first, so the explicit clear is still REQUIRED
321
+ * for the other two: a later pass may hand back the same `parsedFiles`
322
+ * reference with different `scopes` / class→namespace state, and identity
323
+ * alone would serve the stale index. This is sound for the current pipeline
324
+ * because all three are built together once per `runScopeResolution` pass and
325
+ * `clearCppAdlState` runs in `loadResolutionConfig` at the start of every
326
+ * pass. Callers MUST call `clearCppAdlState` between any two passes that
327
+ * change `scopes` or `classToNamespaceQualifiedName` while reusing the same
328
+ * `parsedFiles` array reference — otherwise a stale index would be served.
329
+ * (No such caller exists today; widening the key to also cover `scopes` is
330
+ * deferred until one does.) */
310
331
  function ensureAdlIndex(scopes, parsedFiles) {
311
- if (adlIndex !== undefined && adlIndexSource === parsedFiles)
312
- return;
313
- adlIndex = buildAdlIndex(scopes, parsedFiles);
314
- adlIndexSource = parsedFiles;
332
+ let index = adlIndexByPass.get(parsedFiles);
333
+ if (index === undefined) {
334
+ index = buildAdlIndex(scopes, parsedFiles);
335
+ adlIndexByPass.set(parsedFiles, index);
336
+ }
337
+ return index;
315
338
  }
316
339
  /** Record per-call-site argument info. Called once per call site from
317
340
  * `emitCppScopeCaptures`. */
@@ -403,8 +426,14 @@ export function clearCppAdlState() {
403
426
  argInfoSiteKeysByFile.clear();
404
427
  noAdlSiteKeysByFile.clear();
405
428
  classToNamespaceQualifiedName.clear();
406
- adlIndex = undefined;
407
- adlIndexSource = undefined;
429
+ // The candidate index is dropped by REASSIGNING a fresh `WeakMap`: `WeakMap`
430
+ // has no `.clear()`, and swapping the instance discards every memoized entry
431
+ // at once — the exact invalidation the previous `adlIndex = undefined` pair
432
+ // provided. Required even though the map is keyed on `parsedFiles` identity,
433
+ // because the index also depends on `scopes` and
434
+ // `classToNamespaceQualifiedName`, which the key cannot observe (see
435
+ // {@link ensureAdlIndex}).
436
+ adlIndexByPass = new WeakMap();
408
437
  }
409
438
  /**
410
439
  * Walk `parsed.scopes` to record each Class def's enclosing namespace
@@ -467,14 +496,14 @@ export function pickCppAdlCandidates(site, callerParsed, scopes, parsedFiles) {
467
496
  if (args === undefined || args.length === 0)
468
497
  return undefined;
469
498
  // Build the workspace-wide ADL candidate index once; reuse for every site.
470
- ensureAdlIndex(scopes, parsedFiles);
499
+ const idx = ensureAdlIndex(scopes, parsedFiles);
471
500
  // Collect associated namespace QNames from every participating class-typed arg
472
501
  // and from function-reference args.
473
502
  const associatedNamespaces = new Set();
474
503
  for (const arg of args) {
475
- collectAssociatedNamespacesForAdlArg(arg, scopes, associatedNamespaces);
504
+ collectAssociatedNamespacesForAdlArg(arg, scopes, idx, associatedNamespaces);
476
505
  if (arg.functionRefText !== undefined) {
477
- collectFunctionTypeAssociatedNamespaces(arg.functionRefText, scopes, associatedNamespaces);
506
+ collectFunctionTypeAssociatedNamespaces(arg.functionRefText, scopes, idx, associatedNamespaces);
478
507
  }
479
508
  }
480
509
  if (associatedNamespaces.size === 0)
@@ -487,9 +516,6 @@ export function pickCppAdlCandidates(site, callerParsed, scopes, parsedFiles) {
487
516
  // (`friendCandidates`, ISO C++ `[basic.lookup.argdep]` §2).
488
517
  // Dedup by nodeId and sort by visitation sequence so the candidate list is
489
518
  // byte-for-byte identical to the legacy file-major scan order.
490
- const idx = adlIndex;
491
- if (idx === undefined)
492
- return undefined;
493
519
  const bySeq = new Map();
494
520
  const seenKey = new Set();
495
521
  const collectFrom = (buckets) => {
@@ -515,11 +541,11 @@ export function pickCppAdlCandidates(site, callerParsed, scopes, parsedFiles) {
515
541
  return undefined;
516
542
  return [...bySeq.entries()].sort((a, b) => a[0] - b[0]).map(([, def]) => def);
517
543
  }
518
- function collectAssociatedNamespacesForAdlArg(arg, scopes, associatedNamespaces) {
544
+ function collectAssociatedNamespacesForAdlArg(arg, scopes, idx, associatedNamespaces) {
519
545
  // For template args this may be the template name itself (e.g. `vector`);
520
546
  // simple-name lookup can match project classes with the same name (known
521
547
  // V1/V2 simplification).
522
- addAssociatedNamespaceForClassName(arg.simpleClassName, scopes, associatedNamespaces);
548
+ addAssociatedNamespaceForClassName(arg.simpleClassName, scopes, idx, associatedNamespaces);
523
549
  // Includes template-owner namespaces (e.g. `std` in std::vector<T>). If
524
550
  // that surfaces extra candidates, merged-candidate overload narrowing in
525
551
  // free-call-fallback suppresses arbitrary edge emission.
@@ -530,13 +556,13 @@ function collectAssociatedNamespacesForAdlArg(arg, scopes, associatedNamespaces)
530
556
  associatedNamespaces.add(ns);
531
557
  }
532
558
  for (const className of arg.templateArgClassNames) {
533
- addAssociatedNamespaceForClassName(className, scopes, associatedNamespaces);
559
+ addAssociatedNamespaceForClassName(className, scopes, idx, associatedNamespaces);
534
560
  }
535
561
  }
536
- function addAssociatedNamespaceForClassName(simpleClassName, scopes, associatedNamespaces) {
562
+ function addAssociatedNamespaceForClassName(simpleClassName, scopes, idx, associatedNamespaces) {
537
563
  if (simpleClassName.length === 0)
538
564
  return;
539
- const classLookup = findCppClassDefBySimpleName(simpleClassName);
565
+ const classLookup = findCppClassDefBySimpleName(idx, simpleClassName);
540
566
  if (classLookup === undefined)
541
567
  return;
542
568
  const { classDef, ambiguous } = classLookup;
@@ -629,10 +655,10 @@ function findNamespaceDefInScope(scope) {
629
655
  *
630
656
  * ISO C++ `[basic.lookup.argdep]` §2: enumerations contribute their
631
657
  * enclosing namespace to the associated set, just like class types. */
632
- function findCppClassDefBySimpleName(simpleName) {
658
+ function findCppClassDefBySimpleName(idx, simpleName) {
633
659
  // `classDefsBySimple` preserves `scopes.defs.byId` order, so `[0]` is the
634
660
  // legacy first-match and `length > 1` is the legacy `ambiguous` flag.
635
- const matches = adlIndex?.classDefsBySimple.get(simpleName);
661
+ const matches = idx.classDefsBySimple.get(simpleName);
636
662
  if (matches === undefined)
637
663
  return undefined;
638
664
  const first = matches[0];
@@ -644,10 +670,7 @@ function findCppClassDefBySimpleName(simpleName) {
644
670
  * Contribute associated namespaces for a function-reference argument by walking
645
671
  * the referenced overload set's parameter and return types.
646
672
  */
647
- function collectFunctionTypeAssociatedNamespaces(refText, scopes, out) {
648
- const idx = adlIndex;
649
- if (idx === undefined)
650
- return;
673
+ function collectFunctionTypeAssociatedNamespaces(refText, scopes, idx, out) {
651
674
  const colonIdx = refText.lastIndexOf('::');
652
675
  if (colonIdx !== -1) {
653
676
  // Qualified ref: extract namespace prefix and normalise :: → dot notation.
@@ -662,7 +685,7 @@ function collectFunctionTypeAssociatedNamespaces(refText, scopes, out) {
662
685
  const matches = idx.nsFunctionsByQName.get(nsText)?.get(simpleName);
663
686
  if (matches !== undefined) {
664
687
  for (const def of matches)
665
- collectAssociatedNamespacesForFunctionDef(def, scopes, out);
688
+ collectAssociatedNamespacesForFunctionDef(def, scopes, idx, out);
666
689
  }
667
690
  return;
668
691
  }
@@ -673,23 +696,23 @@ function collectFunctionTypeAssociatedNamespaces(refText, scopes, out) {
673
696
  const matches = idx.nsFunctionsBySimple.get(refText);
674
697
  if (matches !== undefined) {
675
698
  for (const def of matches)
676
- collectAssociatedNamespacesForFunctionDef(def, scopes, out);
699
+ collectAssociatedNamespacesForFunctionDef(def, scopes, idx, out);
677
700
  }
678
701
  }
679
- function collectAssociatedNamespacesForFunctionDef(def, scopes, out) {
702
+ function collectAssociatedNamespacesForFunctionDef(def, scopes, idx, out) {
680
703
  const parameterTypes = def.parameterTypeClasses?.map((typeClass) => typeClass.base);
681
704
  for (const paramType of parameterTypes ?? def.parameterTypes ?? []) {
682
- collectAssociatedNamespacesForFunctionTypeText(paramType, scopes, out);
705
+ collectAssociatedNamespacesForFunctionTypeText(paramType, scopes, idx, out);
683
706
  }
684
707
  if (def.returnType !== undefined) {
685
- collectAssociatedNamespacesForFunctionTypeText(def.returnType, scopes, out);
708
+ collectAssociatedNamespacesForFunctionTypeText(def.returnType, scopes, idx, out);
686
709
  }
687
710
  }
688
- function collectAssociatedNamespacesForFunctionTypeText(typeText, scopes, out) {
711
+ function collectAssociatedNamespacesForFunctionTypeText(typeText, scopes, idx, out) {
689
712
  for (const token of extractCppTypeNameTokens(typeText)) {
690
713
  if (isIgnoredCppAdlNamespace(token.namespaceName))
691
714
  continue;
692
- addAssociatedNamespaceForClassName(token.simpleName, scopes, out);
715
+ addAssociatedNamespaceForClassName(token.simpleName, scopes, idx, out);
693
716
  if (token.namespaceName !== '')
694
717
  out.add(token.namespaceName);
695
718
  }
@@ -2,6 +2,7 @@ import { nodeIfType, nodeToCapture, syntheticCapture, } from '../../utils/ast-he
2
2
  import { getCppParser, getCppScopeQuery } from './query.js';
3
3
  import { getTreeSitterBufferSize } from '../../constants.js';
4
4
  import { parseSourceSafe } from '../../../tree-sitter/safe-parse.js';
5
+ import { stripUeMacros } from '../../cpp-ue-preprocessor.js';
5
6
  import { normalizeQualifiedName } from '../../utils/qualified-name.js';
6
7
  import { splitCppInclude, splitCppUsingDecl } from './import-decomposer.js';
7
8
  import { classifyCppParameterType, computeCppDeclarationArity, computeCppCallArity, normalizeCppParamType, } from './arity-metadata.js';
@@ -13,6 +14,7 @@ import { extractCppTemplateConstraints } from './constraint-extractor.js';
13
14
  import { captureCppMemberLookupFacts } from './member-lookup.js';
14
15
  import { CPP_BRACED_INIT_TYPE_PREFIX } from './conversion-rank.js';
15
16
  import { logger } from '../../../logger.js';
17
+ import { synthesizeReceiverChainCapture } from '../../utils/receiver-chain-captures.js';
16
18
  import { synthesizeCallableFlowCaptures, } from '../../utils/callable-flow-captures.js';
17
19
  const CPP_CALLABLE_CAPTURE_OPTIONS = {
18
20
  functionNodeTypes: new Set(['function_definition', 'lambda_expression']),
@@ -126,8 +128,12 @@ function cppCaptureBudgetMs() {
126
128
  export function emitCppScopeCaptures(sourceText, filePath, cachedTree) {
127
129
  let tree = cachedTree;
128
130
  if (tree === undefined) {
129
- tree = parseSourceSafe(getCppParser(), sourceText, undefined, {
130
- bufferSize: getTreeSitterBufferSize(sourceText),
131
+ // Idempotent re-application: `extractParsedFile` already preprocesses, but
132
+ // direct emitter callers (benchmarks, capture goldens) must see the same
133
+ // program the pipeline does.
134
+ const parseText = stripUeMacros(sourceText);
135
+ tree = parseSourceSafe(getCppParser(), parseText, undefined, {
136
+ bufferSize: getTreeSitterBufferSize(parseText),
131
137
  });
132
138
  }
133
139
  const rawMatches = getCppScopeQuery().matches(tree.rootNode);
@@ -470,6 +476,12 @@ export function emitCppScopeCaptures(sourceText, filePath, cachedTree) {
470
476
  }
471
477
  }
472
478
  }
479
+ // Structural receiver chain for a call whose receiver is itself an
480
+ // expression, so resolution can type it by folding over structure
481
+ // instead of re-parsing the receiver's source text. Self-gating: a
482
+ // non-call match, an absent receiver, or a chain with no nameable base
483
+ // all leave `grouped` untouched.
484
+ synthesizeReceiverChainCapture(grouped, nodeMap['@reference.receiver']);
473
485
  out.push(grouped);
474
486
  }
475
487
  // ── Emit inheritance references for scope-resolution MRO / EXTENDS ──
@@ -1,3 +1,4 @@
1
+ import { perFileSet } from '../../import-resolvers/per-file-set.js';
1
2
  import { isCppInlineNamespaceScope } from './inline-namespaces.js';
2
3
  /**
3
4
  * Per-file set of symbol names with file-local linkage.
@@ -235,24 +236,19 @@ export function isCppDefGloballyVisible(filePath, nodeId) {
235
236
  * `parsedFiles` reference; the old `parsedFiles.find(...)` was therefore O(F)
236
237
  * per edge → O(R·F) overall (at kernel scale the ~25–30k `.h` headers are
237
238
  * classified C++, so this fires hard — the C twin in `c/static-linkage.ts`).
238
- * Building the lookup once collapses it to O(R+F). `WeakMap`-keyed so it is
239
- * reclaimed with the pass (no cross-pass staleness; mirrors
240
- * {@link clearFileLocalNames}).
239
+ * Building the lookup once collapses it to O(R+F). `perFileSet` keys on the
240
+ * array identity so it is reclaimed with the pass (no cross-pass staleness;
241
+ * mirrors {@link clearFileLocalNames}).
241
242
  */
242
- const moduleScopeIndexByPass = new WeakMap();
243
- function moduleScopeIndex(parsedFiles) {
244
- let index = moduleScopeIndexByPass.get(parsedFiles);
245
- if (index === undefined) {
246
- index = new Map();
247
- // First-wins to preserve `Array.find` semantics (returns the first match).
248
- for (const p of parsedFiles) {
249
- if (!index.has(p.moduleScope))
250
- index.set(p.moduleScope, p);
251
- }
252
- moduleScopeIndexByPass.set(parsedFiles, index);
243
+ const moduleScopeIndex = perFileSet((parsedFiles) => {
244
+ const index = new Map();
245
+ // First-wins to preserve `Array.find` semantics (returns the first match).
246
+ for (const p of parsedFiles) {
247
+ if (!index.has(p.moduleScope))
248
+ index.set(p.moduleScope, p);
253
249
  }
254
250
  return index;
255
- }
251
+ });
256
252
  export function expandCppWildcardNames(targetModuleScope, parsedFiles) {
257
253
  const target = moduleScopeIndex(parsedFiles).get(targetModuleScope);
258
254
  if (target === undefined)
@@ -14,12 +14,14 @@
14
14
  * 2. **Transitive qualified visibility.** `outer::foo()` resolves to
15
15
  * `outer::v1::foo()` when `v1` is inline. The qualified-namespace
16
16
  * receiver resolver (`resolveCppQualifiedNamespaceMember`) walks
17
- * inline-namespace children transitively when collecting candidates.
17
+ * inline-namespace children transitively when collecting candidates —
18
+ * once per pipeline run, into {@link QualifiedNsMemberIndex} (#2788).
18
19
  *
19
20
  * State lifecycle: capture-time `markCppInlineNamespaceRange` records each
20
21
  * inline namespace's source range; `populateCppInlineNamespaceScopes`
21
22
  * resolves ranges to `ScopeId`s during `populateOwners`. Cleared via
22
- * `clearCppInlineNamespaces`, called from `clearFileLocalNames`.
23
+ * `clearCppInlineNamespaces`, called from
24
+ * `cppScopeResolver.loadResolutionConfig` at the start of every pass.
23
25
  *
24
26
  * STL idiom this enables: `std::__1::vector` (libc++) and `std::__cxx11`
25
27
  * (libstdc++) are inline namespaces of `std`. With this support,
@@ -46,7 +48,14 @@ export declare function markCppInlineNamespaceRange(filePath: string, range: Ran
46
48
  export declare function collectCppInlineNamespaceSideChannel(filePath: string): readonly string[];
47
49
  /** Restore this file's captured inline-namespace ranges from the side-channel. */
48
50
  export declare function applyCppInlineNamespaceSideChannel(filePath: string, ranges: readonly string[]): void;
49
- /** Clear all inline-namespace state. Called from `clearFileLocalNames`. */
51
+ /** Clear all inline-namespace state. Called from
52
+ * `cppScopeResolver.loadResolutionConfig` at the start of every pass.
53
+ *
54
+ * The qualified-namespace index is dropped by REASSIGNING a fresh `WeakMap`
55
+ * (`WeakMap` has no `.clear()`) so its entries — and the `SymbolDefinition`
56
+ * references they hold — are released here rather than waiting on the key.
57
+ * Correctness does not rest on that: {@link inlineNamespaceEpoch} invalidates
58
+ * any surviving entry. */
50
59
  export declare function clearCppInlineNamespaces(): void;
51
60
  /** Resolve captured ranges to actual ScopeIds by matching scope ranges
52
61
  * against the inline-namespace ranges recorded for this file. Run from
@@ -59,17 +68,28 @@ export declare function populateCppInlineNamespaceScopes(parsed: ParsedFile): vo
59
68
  * namespace's level). */
60
69
  export declare function isCppInlineNamespaceScope(scopeId: ScopeId): boolean;
61
70
  /**
62
- * Walk every parsed file looking for a Namespace scope whose qualified
63
- * name matches `receiverName`, collect its callable ownedDefs matching
64
- * `memberName`, transitively descending into any inline-namespace
65
- * children (since they're members of the enclosing namespace under ISO
66
- * C++).
71
+ * Find the Namespace scopes whose simple name matches `receiverName` and
72
+ * return their callable members matching `memberName`, transitively
73
+ * including inline-namespace children (since they're members of the
74
+ * enclosing namespace under ISO C++). Served from a per-pipeline index
75
+ * ({@link QualifiedNsMemberIndex}), not a per-call-site workspace scan.
67
76
  *
68
77
  * Returns the most specific (innermost) match — for `outer::foo()`
69
78
  * where `inline namespace v1` declares `foo`, returns `v1::foo`. When
70
79
  * multiple inline-namespace children declare the same name, ISO C++
71
80
  * leaves the call ambiguous; returns `'ambiguous'` so the caller
72
81
  * suppresses edge emission rather than picking arbitrarily (#1564).
82
+ *
83
+ * Two production call sites, both in `scope-resolver.ts`:
84
+ * - `resolveQualifiedReceiverMember` — the `outer::foo()` qualified-receiver
85
+ * hook. Passes `callsite`, so a multi-candidate set can be narrowed by
86
+ * arity and argument types.
87
+ * - `resolveAdlCandidates` — resolving a `using ns::name;` named import back
88
+ * to its namespace member, for template-class method bodies where the
89
+ * lexical walk misses that visibility. Passes NO `callsite`, which makes
90
+ * the narrowing filters below pass-throughs: on that path any receiver
91
+ * whose member has more than one candidate returns `'ambiguous'` (and the
92
+ * caller then skips it) rather than being disambiguated.
73
93
  */
74
94
  export declare function resolveCppQualifiedNamespaceMember(receiverName: string, memberName: string, parsedFiles: readonly ParsedFile[], _scopes: ScopeResolutionIndexes, callsite?: Callsite): SymbolDefinition | 'ambiguous' | undefined;
75
95
  export {};