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
@@ -1,6 +1,8 @@
1
1
  import type { CaptureMatch, ParsedImport, ParsedTypeBinding } from '../../../../_shared/index.js';
2
2
  export declare function interpretGoImport(captures: CaptureMatch): ParsedImport | null;
3
3
  export declare function interpretGoTypeBinding(captures: CaptureMatch): ParsedTypeBinding | null;
4
+ /** `map[K]V` → `V`, trimmed. `undefined` when `text` is not a map spelling. */
5
+ export declare function goMapValueType(text: string): string | undefined;
4
6
  export declare function normalizeGoTypeName(text: string): string;
5
7
  /**
6
8
  * Like `normalizeGoTypeName` but preserves dotted package-prefix
@@ -29,8 +29,12 @@ export function interpretGoTypeBinding(captures) {
29
29
  if (captures['@type-binding.self'] !== undefined) {
30
30
  source = 'self';
31
31
  // Preserve pointer shape on receiver self-bindings (`*T` vs `T`).
32
- // Method-owner enrichment consumes that raw shape to model Go value and
33
- // pointer receiver method sets conservatively.
32
+ // Method-owner enrichment consumes that raw shape to stamp `goReceiverKind`
33
+ // on each method. Since #2813 that stamp is metadata, NOT a filter:
34
+ // structural interface satisfaction counts pointer-receiver methods, because
35
+ // `*T`'s method set is what an interface-typed field actually holds. The
36
+ // preserved distinction is the hook a future value/pointer-aware model would
37
+ // read — do not reintroduce it as an exclusion.
34
38
  normalizedType = type.trim();
35
39
  }
36
40
  else if (captures['@type-binding.constructor'] !== undefined) {
@@ -91,12 +95,22 @@ export function interpretGoTypeBinding(captures) {
91
95
  }
92
96
  return { boundName: name, rawTypeName: normalizedType, source };
93
97
  }
98
+ /** Shallow `map[K]V` spelling match — the key is anything up to the first `]`,
99
+ * so a nested map key (`map[map[a]b]V`) is deliberately NOT recognised. Held
100
+ * in one place so the capture-side normalizers and the resolver's element-type
101
+ * hook cannot drift on what counts as a map spelling. */
102
+ const GO_MAP_VALUE_RE = /^map\[[^\]]+\]\s*(.+)$/;
103
+ /** `map[K]V` → `V`, trimmed. `undefined` when `text` is not a map spelling. */
104
+ export function goMapValueType(text) {
105
+ const match = GO_MAP_VALUE_RE.exec(text);
106
+ return match === null ? undefined : match[1].trim();
107
+ }
94
108
  export function normalizeGoTypeName(text) {
95
109
  let t = text.trim();
96
110
  t = stripGoOuterTypePrefixes(t);
97
- const mapMatch = t.match(/^map\[[^\]]+\]\s*(.+)$/);
98
- if (mapMatch)
99
- t = mapMatch[1].trim();
111
+ const mapValue = goMapValueType(t);
112
+ if (mapValue !== undefined)
113
+ t = mapValue;
100
114
  t = stripGoOuterTypePrefixes(t.replace(/^(?:<-)?chan(?:<-)?\s+/, ''));
101
115
  if (t.startsWith('func(')) {
102
116
  const retMatch = t.match(/^func\([^)]*\)\s*(.*)$/);
@@ -126,9 +140,9 @@ export function normalizeGoReturnType(text) {
126
140
  t = t.slice(1, closeIdx).trim();
127
141
  }
128
142
  t = stripGoOuterTypePrefixes(t);
129
- const mapMatch = t.match(/^map\[[^\]]+\]\s*(.+)$/);
130
- if (mapMatch)
131
- t = mapMatch[1].trim();
143
+ const mapValue = goMapValueType(t);
144
+ if (mapValue !== undefined)
145
+ t = mapValue;
132
146
  t = stripGoOuterTypePrefixes(t.replace(/^(?:<-)?chan(?:<-)?\s+/, ''));
133
147
  if (t.startsWith('func(')) {
134
148
  const retMatch = t.match(/^func\([^)]*\)\s*(.*)$/);
@@ -1,4 +1,9 @@
1
+ import { logger } from '../../../logger.js';
1
2
  import { isClassLike, populateClassOwnedMembers } from '../../scope-resolution/scope/walkers.js';
3
+ import { goPackageDir, inferGoPackageName } from './package-clause.js';
4
+ import { stampGoInterfaceTypeParameters } from './generic-type-parameters.js';
5
+ /** Bound on the sample of no-package-clause paths named in the warning. */
6
+ const SKIPPED_SAMPLE_CAP = 5;
2
7
  /**
3
8
  * Populate `ownerId` on Go Method defs by matching receiver types
4
9
  * extracted from `@type-binding.self` captures against struct defs in
@@ -19,16 +24,39 @@ export function populateGoOwners(parsed) {
19
24
  populateGoOwnersInPackage([parsed]);
20
25
  }
21
26
  export function populateGoWorkspaceOwners(parsedFiles, ctx) {
27
+ // Generic interfaces get their type-parameter list stamped here rather than at
28
+ // capture time, because this is the first main-thread hook that sees BOTH the
29
+ // parsed scopes and the file text (it already reads `fileContents` for the
30
+ // package clause). `detectGoInterfaceImplementations` runs later in the same
31
+ // pass and is the only reader. See `stampGoInterfaceTypeParameters`.
32
+ stampGoInterfaceTypeParameters(parsedFiles, ctx.fileContents);
22
33
  const filesByPackage = new Map();
34
+ // A file with no resolvable package clause is dropped from ownership
35
+ // resolution entirely — its methods never attach to a struct declared in a
36
+ // sibling file. That used to be a bare `continue` with no trace, which is the
37
+ // same false-safe silence #2813 was filed about. Report it once, bounded
38
+ // (mirrors the fan-out-cap warning in scope-resolution/pipeline/run.ts).
39
+ let skippedCount = 0;
40
+ const skippedSample = [];
23
41
  for (const parsed of parsedFiles) {
24
- const pkgName = inferPackageName(ctx.fileContents.get(parsed.filePath) ?? '');
25
- if (pkgName === null)
42
+ const pkgName = inferGoPackageName(ctx.fileContents.get(parsed.filePath) ?? '');
43
+ if (pkgName === null) {
44
+ // Count everything, retain only the sample — a misrouted vendored tree
45
+ // would otherwise accumulate one path reference per file to print five.
46
+ skippedCount += 1;
47
+ if (skippedSample.length < SKIPPED_SAMPLE_CAP)
48
+ skippedSample.push(parsed.filePath);
26
49
  continue;
27
- const key = `${packageDir(parsed.filePath)}\0${pkgName}`;
50
+ }
51
+ const key = `${goPackageDir(parsed.filePath)}\0${pkgName}`;
28
52
  const bucket = filesByPackage.get(key) ?? [];
29
53
  bucket.push(parsed);
30
54
  filesByPackage.set(key, bucket);
31
55
  }
56
+ if (skippedCount > 0) {
57
+ logger.warn({ skippedFiles: skippedCount, sample: skippedSample }, 'go: files with no resolvable package clause were excluded from method-owner ' +
58
+ 'resolution (their methods cannot attach to structs declared in sibling files)');
59
+ }
32
60
  for (const bucket of filesByPackage.values()) {
33
61
  populateGoOwnersInPackage(bucket);
34
62
  }
@@ -97,12 +125,3 @@ function populateGoOwnersInPackage(parsedFiles) {
97
125
  }
98
126
  }
99
127
  }
100
- function inferPackageName(sourceText) {
101
- const match = sourceText.match(/^\s*package\s+([A-Za-z_][A-Za-z0-9_]*)/m);
102
- return match?.[1] ?? null;
103
- }
104
- function packageDir(filePath) {
105
- const normalized = filePath.replace(/\\/g, '/');
106
- const idx = normalized.lastIndexOf('/');
107
- return idx === -1 ? '' : normalized.slice(0, idx);
108
- }
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Go package-clause resolution — the single derivation of a file's package
3
+ * identity (#2837).
4
+ *
5
+ * Both Go passes that bucket files by package (`populateGoWorkspaceOwners` and
6
+ * `populateGoPackageSiblings`) previously carried their own byte-identical copy
7
+ * of this, spelled as one unanchored multiline regex:
8
+ *
9
+ * sourceText.match(/^\s*package\s+([A-Za-z_][A-Za-z0-9_]*)/m)
10
+ *
11
+ * With the `m` flag that matches the first line ANYWHERE in the file starting
12
+ * with `package <ident>` — comment bodies included. Measured against that exact
13
+ * expression: a header comment containing `package legacy_notes kept for
14
+ * history` yields `legacy_notes`, and an indented ` package helper old name`
15
+ * yields `helper`. A file that mis-infers its own package gets a bucket key no
16
+ * sibling shares, so it is isolated in BOTH passes: its methods never attach to
17
+ * structs declared in sibling files, and it exchanges no same-package bindings.
18
+ * Every field-receiver call in it then resolves to nothing, silently — the same
19
+ * per-file signature #2837 reported.
20
+ *
21
+ * The Go spec makes the correct rule exact rather than heuristic: a source
22
+ * file's first non-comment, non-blank token is `package`. So skip the leading
23
+ * run of whitespace and comments, then require the very next token to be the
24
+ * clause. Anything else is `null` — a truncated read, a misrouted non-Go file,
25
+ * an unparseable header — reported by the caller rather than guessed at.
26
+ *
27
+ * ONE rule governs every leniency below (the `\s+` separator, the shebang skip,
28
+ * CR-only line endings): a file this returns `null` for is dropped from BOTH
29
+ * passes, so refusing a shape the previous regex accepted is a silent
30
+ * regression, not a principled tightening. Be no stricter than the grammar.
31
+ */
32
+ /**
33
+ * The package name declared by this Go source text, or `null` when its first
34
+ * real token is not a package clause.
35
+ *
36
+ * Only the leading run before the clause is skipped — deliberately NOT a
37
+ * whole-file comment strip, which would be O(file) on every Go file and would
38
+ * also have to model string literals to stay correct.
39
+ */
40
+ export declare function inferGoPackageName(sourceText: string): string | null;
41
+ /**
42
+ * The directory half of a Go package key. Go package identity is
43
+ * directory-scoped, so repeated `package main` directories must not see each
44
+ * other's unqualified names.
45
+ */
46
+ export declare function goPackageDir(filePath: string): string;
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Go package-clause resolution — the single derivation of a file's package
3
+ * identity (#2837).
4
+ *
5
+ * Both Go passes that bucket files by package (`populateGoWorkspaceOwners` and
6
+ * `populateGoPackageSiblings`) previously carried their own byte-identical copy
7
+ * of this, spelled as one unanchored multiline regex:
8
+ *
9
+ * sourceText.match(/^\s*package\s+([A-Za-z_][A-Za-z0-9_]*)/m)
10
+ *
11
+ * With the `m` flag that matches the first line ANYWHERE in the file starting
12
+ * with `package <ident>` — comment bodies included. Measured against that exact
13
+ * expression: a header comment containing `package legacy_notes kept for
14
+ * history` yields `legacy_notes`, and an indented ` package helper old name`
15
+ * yields `helper`. A file that mis-infers its own package gets a bucket key no
16
+ * sibling shares, so it is isolated in BOTH passes: its methods never attach to
17
+ * structs declared in sibling files, and it exchanges no same-package bindings.
18
+ * Every field-receiver call in it then resolves to nothing, silently — the same
19
+ * per-file signature #2837 reported.
20
+ *
21
+ * The Go spec makes the correct rule exact rather than heuristic: a source
22
+ * file's first non-comment, non-blank token is `package`. So skip the leading
23
+ * run of whitespace and comments, then require the very next token to be the
24
+ * clause. Anything else is `null` — a truncated read, a misrouted non-Go file,
25
+ * an unparseable header — reported by the caller rather than guessed at.
26
+ *
27
+ * ONE rule governs every leniency below (the `\s+` separator, the shebang skip,
28
+ * CR-only line endings): a file this returns `null` for is dropped from BOTH
29
+ * passes, so refusing a shape the previous regex accepted is a silent
30
+ * regression, not a principled tightening. Be no stricter than the grammar.
31
+ */
32
+ /** Leading trivia: whitespace, `//` lines, block comments. Sticky. */
33
+ const LEADING_TRIVIA = /(?:\s+|\/\/[^\n\r]*|\/\*[\s\S]*?\*\/)*/y;
34
+ /** The clause itself, anchored at the first non-trivia byte. `\s+` (not
35
+ * `[ \t]+`) because Go separates tokens by any whitespace: `package\nmain` is
36
+ * legal and tree-sitter parses it without error. */
37
+ const PACKAGE_CLAUSE = /package\s+([A-Za-z_][A-Za-z0-9_]*)/y;
38
+ /**
39
+ * The package name declared by this Go source text, or `null` when its first
40
+ * real token is not a package clause.
41
+ *
42
+ * Only the leading run before the clause is skipped — deliberately NOT a
43
+ * whole-file comment strip, which would be O(file) on every Go file and would
44
+ * also have to model string literals to stay correct.
45
+ */
46
+ export function inferGoPackageName(sourceText) {
47
+ let i = 0;
48
+ // A leading `#!` line: `gorun`-style scripts carry one. Only a FIRST-line
49
+ // `#!` is skipped; a `#` anywhere else still ends the scan.
50
+ if (sourceText.startsWith('#!')) {
51
+ const eol = sourceText.search(/[\n\r]/);
52
+ if (eol === -1)
53
+ return null;
54
+ i = eol + 1;
55
+ }
56
+ // Whitespace (`\s` covers the BOM and every line ending), `//` lines and block
57
+ // comments — the run a Go file may carry before its clause. Sticky, so the
58
+ // header is skipped in place without slicing a copy of the file. An
59
+ // unterminated `/*` or a `//` running to EOF simply leaves `lastIndex` where
60
+ // the clause cannot match, so neither needs its own early return.
61
+ LEADING_TRIVIA.lastIndex = i;
62
+ LEADING_TRIVIA.exec(sourceText);
63
+ PACKAGE_CLAUSE.lastIndex = LEADING_TRIVIA.lastIndex;
64
+ return PACKAGE_CLAUSE.exec(sourceText)?.[1] ?? null;
65
+ }
66
+ /**
67
+ * The directory half of a Go package key. Go package identity is
68
+ * directory-scoped, so repeated `package main` directories must not see each
69
+ * other's unqualified names.
70
+ */
71
+ export function goPackageDir(filePath) {
72
+ const normalized = filePath.replace(/\\/g, '/');
73
+ const idx = normalized.lastIndexOf('/');
74
+ return idx === -1 ? '' : normalized.slice(0, idx);
75
+ }
@@ -1,4 +1,5 @@
1
1
  import { expandGoDotImports } from './expand-wildcards.js';
2
+ import { goPackageDir, inferGoPackageName } from './package-clause.js';
2
3
  /**
3
4
  * O(n²×d) where n = files per package, d = defs per file.
4
5
  * Acceptable for V1 since Go packages are typically small (< 20 files).
@@ -17,9 +18,13 @@ export function populateGoPackageSiblings(parsedFiles, indexes, ctx) {
17
18
  // must not see each other's unqualified names.
18
19
  const packageByFile = new Map();
19
20
  for (const parsed of nonTestFiles) {
20
- const pkgName = inferPackageName(ctx.fileContents.get(parsed.filePath) ?? '');
21
+ // Same derivation as `populateGoWorkspaceOwners` — one shared resolver, so
22
+ // the two passes cannot disagree about a file's package (#2837). The
23
+ // no-clause case is reported there; warning twice for one fact would be
24
+ // noise.
25
+ const pkgName = inferGoPackageName(ctx.fileContents.get(parsed.filePath) ?? '');
21
26
  if (pkgName !== null) {
22
- packageByFile.set(parsed.filePath, `${packageDir(parsed.filePath)}\0${pkgName}`);
27
+ packageByFile.set(parsed.filePath, `${goPackageDir(parsed.filePath)}\0${pkgName}`);
23
28
  }
24
29
  }
25
30
  const filesByPackage = new Map();
@@ -60,15 +65,6 @@ export function populateGoPackageSiblings(parsedFiles, indexes, ctx) {
60
65
  }
61
66
  }
62
67
  }
63
- function inferPackageName(sourceText) {
64
- const match = sourceText.match(/^\s*package\s+([A-Za-z_][A-Za-z0-9_]*)/m);
65
- return match?.[1] ?? null;
66
- }
67
- function packageDir(filePath) {
68
- const normalized = filePath.replace(/\\/g, '/');
69
- const idx = normalized.lastIndexOf('/');
70
- return idx === -1 ? '' : normalized.slice(0, idx);
71
- }
72
68
  function getAugmentationBucket(augmentations, scopeId, name) {
73
69
  let scopeBindings = augmentations.get(scopeId);
74
70
  if (scopeBindings === undefined) {
@@ -3,9 +3,33 @@ import Go from 'tree-sitter-go';
3
3
  const GO_SCOPE_QUERY = `
4
4
  ;; Scopes
5
5
  (source_file) @scope.module
6
+ ;; One Class scope per DECLARED TYPE, not per declaration (#2837).
7
+ ;;
8
+ ;; Capturing the type_declaration made a grouped declaration
9
+ ;; type (
10
+ ;; Decoy struct { ... }
11
+ ;; PickService struct { ... }
12
+ ;; )
13
+ ;; a SINGLE Class scope owning every struct in the block. Downstream that scope
14
+ ;; can name only one owner -- buildWorkspaceResolutionIndex keeps the first
15
+ ;; class-like def it finds -- so the block's structs lost their field type
16
+ ;; bindings, typeOfMemberOnClass found no scope, the compound-receiver fold
17
+ ;; declined, and every s.field.Method() site in the file emitted nothing at
18
+ ;; all. Silent, per-file, and independent of file size: exactly the split
19
+ ;; reported in #2837 that #2829's global fixes could not explain. Measured on
20
+ ;; the go-grouped-type-decl fixture: EVERY struct in a grouped block lost its
21
+ ;; edges, the first one included, and grouped interface blocks produced no
22
+ ;; IMPLEMENTS edges at all.
23
+ ;;
24
+ ;; type_spec is the node Go's own grammar gives one declared type, so one
25
+ ;; capture per type_spec is the granularity the rest of the pipeline already
26
+ ;; assumes. A plain single-type declaration is unaffected in count -- only its
27
+ ;; scope range narrows, from the type keyword to the name.
28
+ ;;
29
+ ;; NOTE: this string is a JS template literal. Backticks are a syntax error.
6
30
  (type_declaration
7
31
  (type_spec
8
- type: [(struct_type) (interface_type)])) @scope.class
32
+ type: [(struct_type) (interface_type)]) @scope.class)
9
33
  (function_declaration) @scope.function
10
34
  (method_declaration) @scope.function
11
35
  (func_literal) @scope.function
@@ -21,19 +45,48 @@ const GO_SCOPE_QUERY = `
21
45
  (communication_case) @scope.block
22
46
 
23
47
  ;; Declarations — struct
48
+ ;;
49
+ ;; Anchored on the type_spec, in lockstep with @scope.class above (#2837). Both
50
+ ;; captures MUST name the same node: the def node and the class-scope node are
51
+ ;; paired by range, so anchoring the def on the enclosing type_declaration while
52
+ ;; the scope sits on the type_spec leaves the def strictly larger than its own
53
+ ;; scope and NOTHING is owned -- measured as every Go field-receiver edge in the
54
+ ;; fixture disappearing, plain declarations included. Keeping both on
55
+ ;; type_declaration is the original bug: a grouped block gave both structs the
56
+ ;; same capture node, so one silently displaced the other.
24
57
  (type_declaration
25
58
  (type_spec name: (type_identifier) @declaration.name
26
- type: (struct_type))) @declaration.struct
59
+ type: (struct_type)) @declaration.struct)
27
60
 
28
61
  ;; Declarations — interface
62
+ ;; Same lockstep requirement as @declaration.struct above (#2837).
29
63
  (type_declaration
30
64
  (type_spec name: (type_identifier) @declaration.name
31
- type: (interface_type))) @declaration.interface
65
+ type: (interface_type)) @declaration.interface)
32
66
 
33
67
  ;; Declarations — function
34
68
  (function_declaration
35
69
  name: (identifier) @declaration.name) @declaration.function
36
70
 
71
+ ;; Declarations — closure bindings (\`var f = func(){}\`, \`f := func(){}\`).
72
+ ;; The \`@declaration.function\` anchor sits on the INNER func_literal so its
73
+ ;; range aligns with the \`(func_literal) @scope.function\` scope above —
74
+ ;; without that alignment pass2AttachDeclarations owns the def by the module
75
+ ;; scope and calls inside the closure lose caller attribution. Mirrors the
76
+ ;; TypeScript \`const f = () => {}\` patterns (#2687).
77
+ (var_declaration
78
+ (var_spec
79
+ name: (identifier) @declaration.name
80
+ value: (expression_list (func_literal) @declaration.function)))
81
+ (var_declaration
82
+ (var_spec_list
83
+ (var_spec
84
+ name: (identifier) @declaration.name
85
+ value: (expression_list (func_literal) @declaration.function))))
86
+ (short_var_declaration
87
+ left: (expression_list (identifier) @declaration.name)
88
+ right: (expression_list (func_literal) @declaration.function))
89
+
37
90
  ;; Declarations — method
38
91
  (method_declaration
39
92
  name: (field_identifier) @declaration.name) @declaration.method
@@ -7,6 +7,10 @@ import { goArityCompatibility, goMergeBindings, populateGoPackageSiblings, resol
7
7
  import { detectGoInterfaceImplementations } from './interface-impls.js';
8
8
  import { populateGoRangeBindings } from './range-binding.js';
9
9
  import { expandGoWildcardNames } from './expand-wildcards.js';
10
+ import { goMapValueType } from './interpret.js';
11
+ /** Slice `[]T` and array `[N]T` / `[...]T` → the element spelling. Hoisted —
12
+ * a literal inside the hook would mint a fresh RegExp per folded subscript. */
13
+ const GO_SLICE_ELEMENT_RE = /^\[[^\]]*\]\s*(.+)$/;
10
14
  export const goScopeResolver = {
11
15
  language: SupportedLanguages.Go,
12
16
  languageProvider: goProvider,
@@ -16,6 +20,41 @@ export const goScopeResolver = {
16
20
  expandsWildcardTo: (targetModuleScope, parsedFiles) => expandGoWildcardNames(targetModuleScope, parsedFiles),
17
21
  mergeBindings: (existing, incoming, scopeId) => goMergeBindings(existing, incoming, scopeId),
18
22
  arityCompatibility: (callsite, def) => goArityCompatibility(def, callsite),
23
+ // Only `*` — a pointer leaves the method set reachable by selector unchanged,
24
+ // so `*Host` and `Host` name the same class for receiver typing. `[]` and
25
+ // `map[…]` are deliberately NOT stripped here: they are containers whose
26
+ // member set differs from the element's, and unwrapping them belongs to the
27
+ // index step that consumed a subscript. (Field bindings never reach this
28
+ // anyway — `normalizeGoTypeName` already strips them at capture. The one
29
+ // binding that arrives decorated is the receiver self-binding, kept raw on
30
+ // purpose for `method-owners.ts`.)
31
+ stripTypePreservingDecoration: (typeName) => typeName.startsWith('*') ? typeName.slice(1).trim() : undefined,
32
+ // The subscript counterpart of the stripper above, and the reason the two are
33
+ // separate hooks: `*` is safe to strip at any class lookup, `[]` / `map[K]`
34
+ // only where the source actually indexed. Answers the `index` route only —
35
+ // Go has no property-style collection view.
36
+ //
37
+ // Reads the AS-WRITTEN spelling (`[]*User`), not the capture-normalized name:
38
+ // `normalizeGoTypeName` already collapsed that to `User`, which is exactly the
39
+ // ambiguity that made an unanswered index step fold onto the container. The
40
+ // element is returned STILL DECORATED (`*User`) — the index step looks it up
41
+ // through `stripTypePreservingDecoration` above, so the pointer resolves.
42
+ elementTypeOf: (containerType, via) => {
43
+ if (via.kind !== 'index')
44
+ return undefined;
45
+ const t = containerType.trim();
46
+ // `map[K]V` — a subscript yields V. Literally the same matcher
47
+ // `normalizeGoTypeName` uses, so the two cannot disagree on what a map
48
+ // spelling is.
49
+ const mapValue = goMapValueType(t);
50
+ if (mapValue !== undefined)
51
+ return mapValue;
52
+ // Slice `[]T` and array `[N]T` / `[...]T`.
53
+ const sliceMatch = GO_SLICE_ELEMENT_RE.exec(t);
54
+ if (sliceMatch !== null)
55
+ return sliceMatch[1].trim();
56
+ return undefined;
57
+ },
19
58
  buildMro: (graph, parsedFiles, nodeLookup) => buildMro(graph, parsedFiles, nodeLookup, defaultLinearize),
20
59
  populateOwners: (parsed) => populateGoOwners(parsed),
21
60
  populateWorkspaceOwners: (parsedFiles, ctx) => populateGoWorkspaceOwners(parsedFiles, ctx),
@@ -132,6 +132,15 @@ export const goProvider = defineLanguage({
132
132
  descriptionExtractor: createLeadingDocDescriptionExtractor({
133
133
  lineCommentPrefixes: ['//'],
134
134
  lineDirectivePrefixes: ['//go:', '// +build', '//nolint', '//line'],
135
+ // #2837: Go type declarations anchor on the `type_spec`, whose
136
+ // `previousNamedSibling` is null for the ordinary `type T struct{…}` form —
137
+ // the godoc comment is a sibling of the enclosing `type_declaration`, one
138
+ // level up. Without this the doc silently vanished for EVERY Go struct and
139
+ // interface (measured: pre-#2837 `desc=YES`, post `none`), taking #2270's
140
+ // description out of both the embedding header and the FTS column.
141
+ // Functions/methods are unaffected — they anchor on their own declaration
142
+ // node, which does carry the comment as a previous sibling.
143
+ wrapperNodeTypes: ['type_declaration'],
135
144
  }),
136
145
  builtInNames: GO_BUILT_INS,
137
146
  // ── RFC #909 Ring 3: scope-based resolution hooks ──────────
@@ -1,3 +1,7 @@
1
1
  import type { AnalysisFeatureDescriptor } from '../../../analysis-features.js';
2
2
  /** Durable completeness contract for Java Spring configuration bindings. */
3
3
  export declare const SPRING_CONFIG_BINDINGS_FEATURE: AnalysisFeatureDescriptor;
4
+ /** Durable completeness contract for implicit Java record-component accessors. */
5
+ export declare const JAVA_RECORD_COMPONENT_ACCESSORS_FEATURE: AnalysisFeatureDescriptor;
6
+ /** Durable completeness contract for Java heritage captures. */
7
+ export declare const JAVA_ENUM_INTERFACE_HERITAGE_FEATURE: AnalysisFeatureDescriptor;
@@ -11,3 +11,15 @@ export const SPRING_CONFIG_BINDINGS_FEATURE = {
11
11
  // need a one-time rebuild to backfill language-agnostic Property nodes.
12
12
  appliesTo: (filePaths) => filePaths.some((filePath) => filePath.toLowerCase().endsWith('.java') || isSpringApplicationConfig(filePath)),
13
13
  };
14
+ /** Durable completeness contract for implicit Java record-component accessors. */
15
+ export const JAVA_RECORD_COMPONENT_ACCESSORS_FEATURE = {
16
+ id: 'java.record-component-accessors',
17
+ version: 1,
18
+ appliesTo: (filePaths) => filePaths.some((filePath) => filePath.toLowerCase().endsWith('.java')),
19
+ };
20
+ /** Durable completeness contract for Java heritage captures. */
21
+ export const JAVA_ENUM_INTERFACE_HERITAGE_FEATURE = {
22
+ id: 'java.heritage-captures',
23
+ version: 1,
24
+ appliesTo: (filePaths) => filePaths.some((filePath) => filePath.toLowerCase().endsWith('.java')),
25
+ };
@@ -2,23 +2,35 @@ import type { ParsedFile } from '../../../../_shared/index.js';
2
2
  import { type ClassAnnotationFact } from '../../frameworks/spring/bean-candidates.js';
3
3
  import { type JvmPackageFact } from '../jvm/package-facts.js';
4
4
  import type { JavaSpringConfigConsumerFact } from './spring-config-bindings.js';
5
+ import type { JavaSpringAopFact } from './spring-aop.js';
6
+ import type { JavaSpringConditionalFact } from './spring-conditionals.js';
5
7
  import type { JavaSpringDiClassFact } from './spring-di.js';
8
+ import type { JavaSpringNonHttpHandlerFact } from './spring-non-http-handlers.js';
6
9
  export type JavaClassAnnotationFact = ClassAnnotationFact;
7
10
  export interface JavaCaptureSideChannel {
8
11
  readonly kind: 'java';
9
12
  readonly packageFact: JvmPackageFact;
10
13
  readonly classAnnotations: readonly JavaClassAnnotationFact[];
14
+ readonly springAopFacts?: readonly JavaSpringAopFact[];
11
15
  readonly springConfigConsumers?: readonly JavaSpringConfigConsumerFact[];
16
+ readonly springConditionalFacts?: readonly JavaSpringConditionalFact[];
12
17
  readonly springDiFacts?: readonly JavaSpringDiClassFact[];
18
+ readonly springNonHttpHandlerFacts?: readonly JavaSpringNonHttpHandlerFact[];
13
19
  }
14
20
  /** Clear facts retained by a prior workspace pass in a long-lived process. */
15
21
  export declare function clearJavaClassAnnotationFacts(): void;
22
+ export declare function setJavaSpringAopFacts(filePath: string, facts: readonly JavaSpringAopFact[]): void;
23
+ export declare function getJavaSpringAopFacts(filePath: string): readonly JavaSpringAopFact[];
16
24
  /** Store the annotation syntax collected by Java's existing scope-query traversal. */
17
25
  export declare function setJavaClassAnnotationFacts(filePath: string, facts: readonly JavaClassAnnotationFact[]): void;
18
26
  export declare function setJavaSpringConfigConsumerFacts(filePath: string, facts: readonly JavaSpringConfigConsumerFact[]): void;
19
27
  export declare function getJavaSpringConfigConsumerFacts(filePath: string): readonly JavaSpringConfigConsumerFact[];
28
+ export declare function setJavaSpringConditionalFacts(filePath: string, facts: readonly JavaSpringConditionalFact[]): void;
29
+ export declare function getJavaSpringConditionalFacts(filePath: string): readonly JavaSpringConditionalFact[];
20
30
  export declare function setJavaSpringDiFacts(filePath: string, facts: readonly JavaSpringDiClassFact[]): void;
21
31
  export declare function getJavaSpringDiFacts(filePath: string): readonly JavaSpringDiClassFact[];
32
+ export declare function setJavaSpringNonHttpHandlerFacts(filePath: string, facts: readonly JavaSpringNonHttpHandlerFact[]): void;
33
+ export declare function getJavaSpringNonHttpHandlerFacts(filePath: string): readonly JavaSpringNonHttpHandlerFact[];
22
34
  /** Snapshot worker-local Java annotation facts for ParsedFile serialization. */
23
35
  export declare function collectJavaCaptureSideChannel(filePath: string): JavaCaptureSideChannel | undefined;
24
36
  export declare function getJavaClassAnnotationFacts(filePath: string): readonly JavaClassAnnotationFact[];
@@ -2,13 +2,28 @@ import { createClassAnnotationFactStore, } from '../../frameworks/spring/bean-ca
2
2
  import { isJvmPackageFact, UNKNOWN_JVM_PACKAGE_FACT, } from '../jvm/package-facts.js';
3
3
  import { getJavaPackageFact, setJavaPackageFact } from './package-facts.js';
4
4
  const classAnnotations = createClassAnnotationFactStore();
5
+ const springAopFacts = new Map();
5
6
  const springConfigConsumers = new Map();
7
+ const springConditionalFacts = new Map();
6
8
  const springDiFacts = new Map();
9
+ const springNonHttpHandlerFacts = new Map();
7
10
  /** Clear facts retained by a prior workspace pass in a long-lived process. */
8
11
  export function clearJavaClassAnnotationFacts() {
9
12
  classAnnotations.clear();
13
+ springAopFacts.clear();
10
14
  springConfigConsumers.clear();
15
+ springConditionalFacts.clear();
11
16
  springDiFacts.clear();
17
+ springNonHttpHandlerFacts.clear();
18
+ }
19
+ export function setJavaSpringAopFacts(filePath, facts) {
20
+ if (facts.length === 0)
21
+ springAopFacts.delete(filePath);
22
+ else
23
+ springAopFacts.set(filePath, facts);
24
+ }
25
+ export function getJavaSpringAopFacts(filePath) {
26
+ return springAopFacts.get(filePath) ?? [];
12
27
  }
13
28
  /** Store the annotation syntax collected by Java's existing scope-query traversal. */
14
29
  export function setJavaClassAnnotationFacts(filePath, facts) {
@@ -23,6 +38,15 @@ export function setJavaSpringConfigConsumerFacts(filePath, facts) {
23
38
  export function getJavaSpringConfigConsumerFacts(filePath) {
24
39
  return springConfigConsumers.get(filePath) ?? [];
25
40
  }
41
+ export function setJavaSpringConditionalFacts(filePath, facts) {
42
+ if (facts.length === 0)
43
+ springConditionalFacts.delete(filePath);
44
+ else
45
+ springConditionalFacts.set(filePath, facts);
46
+ }
47
+ export function getJavaSpringConditionalFacts(filePath) {
48
+ return springConditionalFacts.get(filePath) ?? [];
49
+ }
26
50
  export function setJavaSpringDiFacts(filePath, facts) {
27
51
  if (facts.length === 0)
28
52
  springDiFacts.delete(filePath);
@@ -32,15 +56,30 @@ export function setJavaSpringDiFacts(filePath, facts) {
32
56
  export function getJavaSpringDiFacts(filePath) {
33
57
  return springDiFacts.get(filePath) ?? [];
34
58
  }
59
+ export function setJavaSpringNonHttpHandlerFacts(filePath, facts) {
60
+ if (facts.length === 0)
61
+ springNonHttpHandlerFacts.delete(filePath);
62
+ else
63
+ springNonHttpHandlerFacts.set(filePath, facts);
64
+ }
65
+ export function getJavaSpringNonHttpHandlerFacts(filePath) {
66
+ return springNonHttpHandlerFacts.get(filePath) ?? [];
67
+ }
35
68
  /** Snapshot worker-local Java annotation facts for ParsedFile serialization. */
36
69
  export function collectJavaCaptureSideChannel(filePath) {
37
70
  const facts = classAnnotations.get(filePath);
71
+ const aopFacts = springAopFacts.get(filePath) ?? [];
38
72
  const configConsumers = springConfigConsumers.get(filePath) ?? [];
73
+ const conditionFacts = springConditionalFacts.get(filePath) ?? [];
39
74
  const diFacts = springDiFacts.get(filePath) ?? [];
75
+ const nonHttpHandlerFacts = springNonHttpHandlerFacts.get(filePath) ?? [];
40
76
  const packageFact = getJavaPackageFact(filePath);
41
77
  if (facts.length === 0 &&
78
+ aopFacts.length === 0 &&
42
79
  configConsumers.length === 0 &&
80
+ conditionFacts.length === 0 &&
43
81
  diFacts.length === 0 &&
82
+ nonHttpHandlerFacts.length === 0 &&
44
83
  packageFact === undefined) {
45
84
  return undefined;
46
85
  }
@@ -48,8 +87,11 @@ export function collectJavaCaptureSideChannel(filePath) {
48
87
  kind: 'java',
49
88
  packageFact: packageFact ?? UNKNOWN_JVM_PACKAGE_FACT,
50
89
  classAnnotations: facts,
90
+ ...(aopFacts.length > 0 ? { springAopFacts: aopFacts } : {}),
51
91
  ...(configConsumers.length > 0 ? { springConfigConsumers: configConsumers } : {}),
92
+ ...(conditionFacts.length > 0 ? { springConditionalFacts: conditionFacts } : {}),
52
93
  ...(diFacts.length > 0 ? { springDiFacts: diFacts } : {}),
94
+ ...(nonHttpHandlerFacts.length > 0 ? { springNonHttpHandlerFacts: nonHttpHandlerFacts } : {}),
53
95
  };
54
96
  }
55
97
  export function getJavaClassAnnotationFacts(filePath) {
@@ -64,13 +106,19 @@ export function applyJavaCaptureSideChannel(parsed) {
64
106
  data.kind !== 'java' ||
65
107
  !Array.isArray(data.classAnnotations)) {
66
108
  setJavaClassAnnotationFacts(parsed.filePath, []);
109
+ setJavaSpringAopFacts(parsed.filePath, []);
67
110
  setJavaSpringConfigConsumerFacts(parsed.filePath, []);
111
+ setJavaSpringConditionalFacts(parsed.filePath, []);
68
112
  setJavaSpringDiFacts(parsed.filePath, []);
113
+ setJavaSpringNonHttpHandlerFacts(parsed.filePath, []);
69
114
  setJavaPackageFact(parsed.filePath, UNKNOWN_JVM_PACKAGE_FACT);
70
115
  return;
71
116
  }
72
117
  setJavaClassAnnotationFacts(parsed.filePath, data.classAnnotations);
118
+ setJavaSpringAopFacts(parsed.filePath, Array.isArray(data.springAopFacts) ? data.springAopFacts : []);
73
119
  setJavaSpringConfigConsumerFacts(parsed.filePath, Array.isArray(data.springConfigConsumers) ? data.springConfigConsumers : []);
120
+ setJavaSpringConditionalFacts(parsed.filePath, Array.isArray(data.springConditionalFacts) ? data.springConditionalFacts : []);
74
121
  setJavaSpringDiFacts(parsed.filePath, Array.isArray(data.springDiFacts) ? data.springDiFacts : []);
122
+ setJavaSpringNonHttpHandlerFacts(parsed.filePath, Array.isArray(data.springNonHttpHandlerFacts) ? data.springNonHttpHandlerFacts : []);
75
123
  setJavaPackageFact(parsed.filePath, isJvmPackageFact(data.packageFact) ? data.packageFact : UNKNOWN_JVM_PACKAGE_FACT);
76
124
  }