gitnexus 1.6.10-rc.21 → 1.6.10-rc.211

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 (870) hide show
  1. package/README.md +212 -22
  2. package/dist/_shared/graph/types.d.ts +27 -8
  3. package/dist/_shared/graph/types.d.ts.map +1 -1
  4. package/dist/_shared/index.d.ts +4 -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 +19 -1
  11. package/dist/_shared/integrations/resilient-fetch.d.ts.map +1 -1
  12. package/dist/_shared/integrations/resilient-fetch.js +23 -10
  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/callable-flow-site.d.ts +110 -0
  20. package/dist/_shared/scope-resolution/callable-flow-site.d.ts.map +1 -0
  21. package/dist/_shared/scope-resolution/callable-flow-site.js +11 -0
  22. package/dist/_shared/scope-resolution/callable-flow-site.js.map +1 -0
  23. package/dist/_shared/scope-resolution/evidence-weights.d.ts.map +1 -1
  24. package/dist/_shared/scope-resolution/finalize-algorithm.d.ts +6 -1
  25. package/dist/_shared/scope-resolution/finalize-algorithm.d.ts.map +1 -1
  26. package/dist/_shared/scope-resolution/finalize-algorithm.js +316 -37
  27. package/dist/_shared/scope-resolution/finalize-algorithm.js.map +1 -1
  28. package/dist/_shared/scope-resolution/parsed-file.d.ts +7 -0
  29. package/dist/_shared/scope-resolution/parsed-file.d.ts.map +1 -1
  30. package/dist/_shared/scope-resolution/reference-site.d.ts +124 -1
  31. package/dist/_shared/scope-resolution/reference-site.d.ts.map +1 -1
  32. package/dist/_shared/scope-resolution/registries/field-registry.js.map +1 -1
  33. package/dist/_shared/scope-resolution/registries/lookup-core.d.ts.map +1 -1
  34. package/dist/_shared/scope-resolution/registries/lookup-core.js +58 -2
  35. package/dist/_shared/scope-resolution/registries/lookup-core.js.map +1 -1
  36. package/dist/_shared/scope-resolution/registries/method-registry.js.map +1 -1
  37. package/dist/_shared/scope-resolution/scope-tree.d.ts.map +1 -1
  38. package/dist/_shared/scope-resolution/scope-tree.js.map +1 -1
  39. package/dist/_shared/scope-resolution/symbol-definition.d.ts +47 -0
  40. package/dist/_shared/scope-resolution/symbol-definition.d.ts.map +1 -1
  41. package/dist/_shared/scope-resolution/types.d.ts +297 -5
  42. package/dist/_shared/scope-resolution/types.d.ts.map +1 -1
  43. package/dist/cli/ai-context.d.ts +10 -2
  44. package/dist/cli/ai-context.js +128 -61
  45. package/dist/cli/analyze-config.d.ts +1 -1
  46. package/dist/cli/analyze-options.d.ts +131 -0
  47. package/dist/cli/analyze-options.js +1 -0
  48. package/dist/cli/analyze.d.ts +25 -114
  49. package/dist/cli/analyze.js +194 -36
  50. package/dist/cli/cli-message.d.ts +1 -1
  51. package/dist/cli/detect-changes-format.js +19 -2
  52. package/dist/cli/doctor.d.ts +23 -0
  53. package/dist/cli/doctor.js +72 -9
  54. package/dist/cli/editor-targets.js +6 -0
  55. package/dist/cli/eval-server.d.ts +23 -1
  56. package/dist/cli/eval-server.js +128 -9
  57. package/dist/cli/format-symbol.d.ts +15 -0
  58. package/dist/cli/format-symbol.js +17 -0
  59. package/dist/cli/generated-skill.d.ts +17 -0
  60. package/dist/cli/generated-skill.js +1 -0
  61. package/dist/cli/group.js +23 -2
  62. package/dist/cli/help-i18n.js +3 -0
  63. package/dist/cli/i18n/en.d.ts +17 -8
  64. package/dist/cli/i18n/en.js +19 -8
  65. package/dist/cli/i18n/resources.d.ts +26 -8
  66. package/dist/cli/i18n/zh-CN.d.ts +9 -0
  67. package/dist/cli/i18n/zh-CN.js +17 -8
  68. package/dist/cli/index.js +16 -9
  69. package/dist/cli/lazy-action.d.ts +7 -0
  70. package/dist/cli/lazy-action.js +27 -0
  71. package/dist/cli/mcp.js +6 -3
  72. package/dist/cli/resolve-invocation.d.ts +7 -3
  73. package/dist/cli/resolve-invocation.js +7 -3
  74. package/dist/cli/setup.d.ts +8 -0
  75. package/dist/cli/setup.js +30 -7
  76. package/dist/cli/skill-gen.d.ts +1 -6
  77. package/dist/cli/skill-gen.js +88 -18
  78. package/dist/cli/standard-skills.d.ts +76 -0
  79. package/dist/cli/standard-skills.js +45 -0
  80. package/dist/cli/status.d.ts +4 -1
  81. package/dist/cli/status.js +57 -4
  82. package/dist/cli/tool.d.ts +1 -0
  83. package/dist/cli/tool.js +75 -7
  84. package/dist/cli/uninstall.js +7 -2
  85. package/dist/cli/wiki.d.ts +1 -0
  86. package/dist/cli/wiki.js +59 -10
  87. package/dist/config/ignore-service.d.ts +2 -0
  88. package/dist/config/ignore-service.js +31 -4
  89. package/dist/core/analysis-features.d.ts +21 -0
  90. package/dist/core/analysis-features.js +59 -0
  91. package/dist/core/analyzer-identity.d.ts +154 -0
  92. package/dist/core/analyzer-identity.js +2158 -0
  93. package/dist/core/augmentation/engine.js +95 -76
  94. package/dist/core/embedding-checkpoint.d.ts +143 -0
  95. package/dist/core/embedding-checkpoint.js +221 -0
  96. package/dist/core/embedding-count.d.ts +61 -0
  97. package/dist/core/embedding-count.js +69 -0
  98. package/dist/core/embeddings/ast-utils.js +9 -1
  99. package/dist/core/embeddings/embedder.d.ts +3 -2
  100. package/dist/core/embeddings/embedder.js +8 -5
  101. package/dist/core/embeddings/embedding-identity.d.ts +11 -0
  102. package/dist/core/embeddings/embedding-identity.js +24 -0
  103. package/dist/core/embeddings/embedding-pipeline.d.ts +24 -1
  104. package/dist/core/embeddings/embedding-pipeline.js +341 -19
  105. package/dist/core/embeddings/http-client.d.ts +10 -2
  106. package/dist/core/embeddings/http-client.js +282 -47
  107. package/dist/core/embeddings/node-module-compat.d.ts +4 -2
  108. package/dist/core/embeddings/node-module-compat.js +4 -2
  109. package/dist/core/embeddings/onnxruntime-common-resolver.js +5 -5
  110. package/dist/core/embeddings/onnxruntime-node-resolver.js +2 -2
  111. package/dist/core/embeddings/runtime-install.js +1 -1
  112. package/dist/core/git-staleness.js +1 -1
  113. package/dist/core/graph/graph.js +3 -0
  114. package/dist/core/graph/import-cycles.d.ts +194 -3
  115. package/dist/core/graph/import-cycles.js +522 -73
  116. package/dist/core/graph/types.d.ts +18 -0
  117. package/dist/core/group/bridge-db.js +5 -27
  118. package/dist/core/group/cross-impact.d.ts +21 -0
  119. package/dist/core/group/cross-impact.js +128 -15
  120. package/dist/core/group/cross-trace.js +27 -16
  121. package/dist/core/group/extractors/http-patterns/java.js +91 -14
  122. package/dist/core/group/extractors/http-patterns/node.js +19 -0
  123. package/dist/core/group/extractors/http-patterns/types.d.ts +8 -0
  124. package/dist/core/group/extractors/http-route-extractor.d.ts +1 -0
  125. package/dist/core/group/extractors/http-route-extractor.js +122 -48
  126. package/dist/core/group/extractors/include-extractor.js +20 -2
  127. package/dist/core/group/extractors/manifest-extractor.d.ts +1 -1
  128. package/dist/core/group/extractors/manifest-extractor.js +7 -7
  129. package/dist/core/group/service.js +10 -1
  130. package/dist/core/group/storage.js +2 -33
  131. package/dist/core/group/types.d.ts +18 -0
  132. package/dist/core/incremental/subgraph-extract.d.ts +9 -6
  133. package/dist/core/incremental/subgraph-extract.js +33 -10
  134. package/dist/core/index-freshness.d.ts +80 -0
  135. package/dist/core/index-freshness.js +120 -0
  136. package/dist/core/ingestion/call-processor.d.ts +13 -1
  137. package/dist/core/ingestion/call-processor.js +110 -3
  138. package/dist/core/ingestion/cfg/callee-cell-format.d.ts +42 -0
  139. package/dist/core/ingestion/cfg/callee-cell-format.js +42 -0
  140. package/dist/core/ingestion/cfg/emit.d.ts +8 -23
  141. package/dist/core/ingestion/cfg/emit.js +9 -23
  142. package/dist/core/ingestion/class-extractors/configs/go.js +10 -5
  143. package/dist/core/ingestion/class-extractors/configs/jvm.js +29 -0
  144. package/dist/core/ingestion/cluster-enricher.js +8 -4
  145. package/dist/core/ingestion/cobol/cobol-preprocessor.js +1 -1
  146. package/dist/core/ingestion/community-processor.d.ts +21 -3
  147. package/dist/core/ingestion/community-processor.js +88 -83
  148. package/dist/core/ingestion/di-extractors/index.d.ts +22 -34
  149. package/dist/core/ingestion/di-extractors/index.js +17 -18
  150. package/dist/core/ingestion/di-extractors/spring.d.ts +27 -5
  151. package/dist/core/ingestion/di-extractors/spring.js +87 -3
  152. package/dist/core/ingestion/di-extractors/types.d.ts +60 -0
  153. package/dist/core/ingestion/di-extractors/types.js +15 -0
  154. package/dist/core/ingestion/emit-references.js +4 -0
  155. package/dist/core/ingestion/filesystem-walker.js +16 -12
  156. package/dist/core/ingestion/finalize-orchestrator.js +1 -0
  157. package/dist/core/ingestion/frameworks/spring/analysis-features.d.ts +9 -0
  158. package/dist/core/ingestion/frameworks/spring/analysis-features.js +41 -0
  159. package/dist/core/ingestion/frameworks/spring/annotation-arguments.d.ts +13 -0
  160. package/dist/core/ingestion/frameworks/spring/annotation-arguments.js +227 -0
  161. package/dist/core/ingestion/frameworks/spring/aop-candidates.d.ts +15 -0
  162. package/dist/core/ingestion/frameworks/spring/aop-candidates.js +85 -0
  163. package/dist/core/ingestion/frameworks/spring/aop.d.ts +118 -0
  164. package/dist/core/ingestion/frameworks/spring/aop.js +476 -0
  165. package/dist/core/ingestion/frameworks/spring/auto-configuration.d.ts +8 -0
  166. package/dist/core/ingestion/frameworks/spring/auto-configuration.js +16 -0
  167. package/dist/core/ingestion/frameworks/spring/bean-candidates.d.ts +30 -0
  168. package/dist/core/ingestion/frameworks/spring/bean-candidates.js +182 -0
  169. package/dist/core/ingestion/frameworks/spring/bean-catalog.d.ts +12 -0
  170. package/dist/core/ingestion/frameworks/spring/bean-catalog.js +27 -0
  171. package/dist/core/ingestion/frameworks/spring/bean-factories.d.ts +33 -0
  172. package/dist/core/ingestion/frameworks/spring/bean-factories.js +65 -0
  173. package/dist/core/ingestion/frameworks/spring/conditionals.d.ts +25 -0
  174. package/dist/core/ingestion/frameworks/spring/conditionals.js +319 -0
  175. package/dist/core/ingestion/frameworks/spring/config-bindings.d.ts +24 -0
  176. package/dist/core/ingestion/frameworks/spring/config-bindings.js +115 -0
  177. package/dist/core/ingestion/frameworks/spring/di-metadata.d.ts +48 -0
  178. package/dist/core/ingestion/frameworks/spring/di-metadata.js +379 -0
  179. package/dist/core/ingestion/frameworks/spring/non-http-handlers.d.ts +28 -0
  180. package/dist/core/ingestion/frameworks/spring/non-http-handlers.js +152 -0
  181. package/dist/core/ingestion/frameworks/spring/resource-injection.d.ts +5 -0
  182. package/dist/core/ingestion/frameworks/spring/resource-injection.js +91 -0
  183. package/dist/core/ingestion/import-resolvers/configs/csharp.js +5 -1
  184. package/dist/core/ingestion/import-resolvers/configs/swift.js +13 -0
  185. package/dist/core/ingestion/import-resolvers/csharp.d.ts +9 -1
  186. package/dist/core/ingestion/import-resolvers/csharp.js +234 -27
  187. package/dist/core/ingestion/import-resolvers/go.d.ts +11 -1
  188. package/dist/core/ingestion/import-resolvers/go.js +44 -17
  189. package/dist/core/ingestion/import-resolvers/jvm.d.ts +2 -2
  190. package/dist/core/ingestion/import-resolvers/node-workspace-packages.d.ts +90 -0
  191. package/dist/core/ingestion/import-resolvers/node-workspace-packages.js +428 -0
  192. package/dist/core/ingestion/import-resolvers/package-dir-index.d.ts +124 -0
  193. package/dist/core/ingestion/import-resolvers/package-dir-index.js +223 -0
  194. package/dist/core/ingestion/import-resolvers/pass-cache.d.ts +50 -0
  195. package/dist/core/ingestion/import-resolvers/pass-cache.js +60 -0
  196. package/dist/core/ingestion/import-resolvers/per-file-set.d.ts +71 -0
  197. package/dist/core/ingestion/import-resolvers/per-file-set.js +11 -0
  198. package/dist/core/ingestion/import-resolvers/php.d.ts +1 -1
  199. package/dist/core/ingestion/import-resolvers/php.js +27 -8
  200. package/dist/core/ingestion/import-resolvers/python-file-index.d.ts +201 -0
  201. package/dist/core/ingestion/import-resolvers/python-file-index.js +302 -0
  202. package/dist/core/ingestion/import-resolvers/python.js +25 -6
  203. package/dist/core/ingestion/import-resolvers/ruby.d.ts +1 -1
  204. package/dist/core/ingestion/import-resolvers/rust.d.ts +2 -2
  205. package/dist/core/ingestion/import-resolvers/standard.d.ts +1 -1
  206. package/dist/core/ingestion/import-resolvers/types.d.ts +1 -12
  207. package/dist/core/ingestion/import-resolvers/utils.d.ts +65 -6
  208. package/dist/core/ingestion/import-resolvers/utils.js +215 -36
  209. package/dist/core/ingestion/import-resolvers/workspace-file-index.d.ts +72 -0
  210. package/dist/core/ingestion/import-resolvers/workspace-file-index.js +58 -0
  211. package/dist/core/ingestion/language-config.d.ts +20 -1
  212. package/dist/core/ingestion/language-config.js +18 -23
  213. package/dist/core/ingestion/language-provider.d.ts +133 -7
  214. package/dist/core/ingestion/languages/c/captures.js +63 -0
  215. package/dist/core/ingestion/languages/c/import-target.js +12 -16
  216. package/dist/core/ingestion/languages/c/query.js +17 -0
  217. package/dist/core/ingestion/languages/c/scope-resolver.js +26 -19
  218. package/dist/core/ingestion/languages/c/static-linkage.js +12 -16
  219. package/dist/core/ingestion/languages/c-cpp.js +13 -0
  220. package/dist/core/ingestion/languages/cobol/captures.js +93 -0
  221. package/dist/core/ingestion/languages/cobol/scope-resolver.js +34 -20
  222. package/dist/core/ingestion/languages/cobol.js +13 -0
  223. package/dist/core/ingestion/languages/cpp/adl.d.ts +2 -2
  224. package/dist/core/ingestion/languages/cpp/adl.js +67 -44
  225. package/dist/core/ingestion/languages/cpp/captures.js +222 -3
  226. package/dist/core/ingestion/languages/cpp/file-local-linkage.js +11 -15
  227. package/dist/core/ingestion/languages/cpp/inline-namespaces.d.ts +28 -8
  228. package/dist/core/ingestion/languages/cpp/inline-namespaces.js +242 -68
  229. package/dist/core/ingestion/languages/cpp/interpret.d.ts +2 -0
  230. package/dist/core/ingestion/languages/cpp/interpret.js +126 -6
  231. package/dist/core/ingestion/languages/cpp/query.js +106 -0
  232. package/dist/core/ingestion/languages/cpp/scope-resolver.js +62 -20
  233. package/dist/core/ingestion/languages/csharp/accessor-unwrap.d.ts +2 -15
  234. package/dist/core/ingestion/languages/csharp/accessor-unwrap.js +18 -10
  235. package/dist/core/ingestion/languages/csharp/captures.js +44 -0
  236. package/dist/core/ingestion/languages/csharp/import-target.js +46 -72
  237. package/dist/core/ingestion/languages/csharp/namespace-siblings.js +5 -1
  238. package/dist/core/ingestion/languages/csharp/query.js +25 -5
  239. package/dist/core/ingestion/languages/csharp/scope-resolver.js +75 -2
  240. package/dist/core/ingestion/languages/dart/captures.d.ts +10 -0
  241. package/dist/core/ingestion/languages/dart/captures.js +686 -16
  242. package/dist/core/ingestion/languages/dart/extension-type-preprocess.d.ts +7 -0
  243. package/dist/core/ingestion/languages/dart/extension-type-preprocess.js +30 -0
  244. package/dist/core/ingestion/languages/dart/import-target.js +32 -9
  245. package/dist/core/ingestion/languages/dart/index.d.ts +1 -1
  246. package/dist/core/ingestion/languages/dart/index.js +1 -1
  247. package/dist/core/ingestion/languages/dart/query.js +98 -1
  248. package/dist/core/ingestion/languages/dart/scope-resolver.js +14 -3
  249. package/dist/core/ingestion/languages/dart/simple-hooks.js +9 -0
  250. package/dist/core/ingestion/languages/dart.js +8 -1
  251. package/dist/core/ingestion/languages/go/captures.js +142 -3
  252. package/dist/core/ingestion/languages/go/generic-type-parameters.d.ts +31 -0
  253. package/dist/core/ingestion/languages/go/generic-type-parameters.js +140 -0
  254. package/dist/core/ingestion/languages/go/import-target.d.ts +3 -10
  255. package/dist/core/ingestion/languages/go/import-target.js +34 -30
  256. package/dist/core/ingestion/languages/go/index.d.ts +1 -1
  257. package/dist/core/ingestion/languages/go/interface-impls.d.ts +9 -1
  258. package/dist/core/ingestion/languages/go/interface-impls.js +693 -87
  259. package/dist/core/ingestion/languages/go/interpret.d.ts +2 -0
  260. package/dist/core/ingestion/languages/go/interpret.js +22 -8
  261. package/dist/core/ingestion/languages/go/method-owners.js +31 -12
  262. package/dist/core/ingestion/languages/go/package-clause.d.ts +46 -0
  263. package/dist/core/ingestion/languages/go/package-clause.js +75 -0
  264. package/dist/core/ingestion/languages/go/package-siblings.js +7 -11
  265. package/dist/core/ingestion/languages/go/query.js +56 -3
  266. package/dist/core/ingestion/languages/go/scope-resolver.js +39 -0
  267. package/dist/core/ingestion/languages/go.js +9 -0
  268. package/dist/core/ingestion/languages/java/analysis-features.d.ts +7 -0
  269. package/dist/core/ingestion/languages/java/analysis-features.js +25 -0
  270. package/dist/core/ingestion/languages/java/capture-side-channel.d.ts +38 -0
  271. package/dist/core/ingestion/languages/java/capture-side-channel.js +124 -0
  272. package/dist/core/ingestion/languages/java/captures.d.ts +4 -3
  273. package/dist/core/ingestion/languages/java/captures.js +321 -49
  274. package/dist/core/ingestion/languages/java/import-target.d.ts +49 -9
  275. package/dist/core/ingestion/languages/java/import-target.js +68 -88
  276. package/dist/core/ingestion/languages/java/interpret.js +3 -2
  277. package/dist/core/ingestion/languages/java/module-resolution.d.ts +62 -0
  278. package/dist/core/ingestion/languages/java/module-resolution.js +142 -0
  279. package/dist/core/ingestion/languages/java/package-facts.d.ts +5 -0
  280. package/dist/core/ingestion/languages/java/package-facts.js +9 -0
  281. package/dist/core/ingestion/languages/java/package-siblings.d.ts +3 -16
  282. package/dist/core/ingestion/languages/java/package-siblings.js +8 -147
  283. package/dist/core/ingestion/languages/java/query.js +39 -3
  284. package/dist/core/ingestion/languages/java/record-components.d.ts +14 -0
  285. package/dist/core/ingestion/languages/java/record-components.js +185 -0
  286. package/dist/core/ingestion/languages/java/scope-resolver.js +35 -2
  287. package/dist/core/ingestion/languages/java/spring-aop.d.ts +12 -0
  288. package/dist/core/ingestion/languages/java/spring-aop.js +49 -0
  289. package/dist/core/ingestion/languages/java/spring-bean-metadata.d.ts +2 -0
  290. package/dist/core/ingestion/languages/java/spring-bean-metadata.js +8 -0
  291. package/dist/core/ingestion/languages/java/spring-conditionals.d.ts +11 -0
  292. package/dist/core/ingestion/languages/java/spring-conditionals.js +48 -0
  293. package/dist/core/ingestion/languages/java/spring-config-bindings.d.ts +23 -0
  294. package/dist/core/ingestion/languages/java/spring-config-bindings.js +215 -0
  295. package/dist/core/ingestion/languages/java/spring-di.d.ts +20 -0
  296. package/dist/core/ingestion/languages/java/spring-di.js +160 -0
  297. package/dist/core/ingestion/languages/java/spring-non-http-handlers.d.ts +7 -0
  298. package/dist/core/ingestion/languages/java/spring-non-http-handlers.js +32 -0
  299. package/dist/core/ingestion/languages/java.js +76 -3
  300. package/dist/core/ingestion/languages/javascript/captures.d.ts +6 -1
  301. package/dist/core/ingestion/languages/javascript/captures.js +278 -4
  302. package/dist/core/ingestion/languages/javascript/import-target.d.ts +17 -21
  303. package/dist/core/ingestion/languages/javascript/import-target.js +24 -41
  304. package/dist/core/ingestion/languages/javascript/index.d.ts +54 -5
  305. package/dist/core/ingestion/languages/javascript/index.js +54 -5
  306. package/dist/core/ingestion/languages/javascript/query.d.ts +1 -0
  307. package/dist/core/ingestion/languages/javascript/query.js +232 -5
  308. package/dist/core/ingestion/languages/javascript/scope-resolver.js +12 -0
  309. package/dist/core/ingestion/languages/javascript/simple-hooks.js +2 -1
  310. package/dist/core/ingestion/languages/jvm/package-facts.d.ts +35 -0
  311. package/dist/core/ingestion/languages/jvm/package-facts.js +40 -0
  312. package/dist/core/ingestion/languages/jvm/package-siblings.d.ts +14 -0
  313. package/dist/core/ingestion/languages/jvm/package-siblings.js +197 -0
  314. package/dist/core/ingestion/languages/kotlin/capture-side-channel.d.ts +40 -3
  315. package/dist/core/ingestion/languages/kotlin/capture-side-channel.js +111 -8
  316. package/dist/core/ingestion/languages/kotlin/captures.js +112 -0
  317. package/dist/core/ingestion/languages/kotlin/import-target.d.ts +8 -1
  318. package/dist/core/ingestion/languages/kotlin/import-target.js +20 -123
  319. package/dist/core/ingestion/languages/kotlin/index.d.ts +1 -0
  320. package/dist/core/ingestion/languages/kotlin/index.js +1 -0
  321. package/dist/core/ingestion/languages/kotlin/module-resolution.d.ts +22 -0
  322. package/dist/core/ingestion/languages/kotlin/module-resolution.js +108 -0
  323. package/dist/core/ingestion/languages/kotlin/package-facts.d.ts +5 -0
  324. package/dist/core/ingestion/languages/kotlin/package-facts.js +9 -0
  325. package/dist/core/ingestion/languages/kotlin/package-siblings.d.ts +4 -0
  326. package/dist/core/ingestion/languages/kotlin/package-siblings.js +8 -0
  327. package/dist/core/ingestion/languages/kotlin/query.js +47 -2
  328. package/dist/core/ingestion/languages/kotlin/scope-resolver.js +36 -3
  329. package/dist/core/ingestion/languages/kotlin/spring-aop.d.ts +12 -0
  330. package/dist/core/ingestion/languages/kotlin/spring-aop.js +64 -0
  331. package/dist/core/ingestion/languages/kotlin/spring-bean-metadata.d.ts +2 -0
  332. package/dist/core/ingestion/languages/kotlin/spring-bean-metadata.js +8 -0
  333. package/dist/core/ingestion/languages/kotlin/spring-conditionals.d.ts +12 -0
  334. package/dist/core/ingestion/languages/kotlin/spring-conditionals.js +49 -0
  335. package/dist/core/ingestion/languages/kotlin/spring-di.d.ts +20 -0
  336. package/dist/core/ingestion/languages/kotlin/spring-di.js +299 -0
  337. package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.d.ts +10 -0
  338. package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.js +41 -0
  339. package/dist/core/ingestion/languages/kotlin.js +5 -6
  340. package/dist/core/ingestion/languages/php/captures.d.ts +5 -0
  341. package/dist/core/ingestion/languages/php/captures.js +359 -51
  342. package/dist/core/ingestion/languages/php/import-decomposer.js +12 -0
  343. package/dist/core/ingestion/languages/php/import-target.d.ts +2 -1
  344. package/dist/core/ingestion/languages/php/import-target.js +229 -7
  345. package/dist/core/ingestion/languages/php/interpret.js +10 -0
  346. package/dist/core/ingestion/languages/php/query.js +31 -0
  347. package/dist/core/ingestion/languages/php/scope-resolver.js +1 -1
  348. package/dist/core/ingestion/languages/python/arity-metadata.d.ts +1 -0
  349. package/dist/core/ingestion/languages/python/arity-metadata.js +1 -0
  350. package/dist/core/ingestion/languages/python/captures.d.ts +3 -4
  351. package/dist/core/ingestion/languages/python/captures.js +53 -5
  352. package/dist/core/ingestion/languages/python/import-decomposer.js +22 -1
  353. package/dist/core/ingestion/languages/python/import-target.d.ts +42 -1
  354. package/dist/core/ingestion/languages/python/import-target.js +277 -91
  355. package/dist/core/ingestion/languages/python/index.d.ts +1 -1
  356. package/dist/core/ingestion/languages/python/index.js +1 -1
  357. package/dist/core/ingestion/languages/python/interpret.d.ts +52 -0
  358. package/dist/core/ingestion/languages/python/interpret.js +249 -3
  359. package/dist/core/ingestion/languages/python/query.js +9 -0
  360. package/dist/core/ingestion/languages/python/receiver-binding.d.ts +17 -2
  361. package/dist/core/ingestion/languages/python/receiver-binding.js +192 -2
  362. package/dist/core/ingestion/languages/python/scope-resolver.js +27 -4
  363. package/dist/core/ingestion/languages/python/simple-hooks.d.ts +5 -5
  364. package/dist/core/ingestion/languages/python/simple-hooks.js +9 -5
  365. package/dist/core/ingestion/languages/ruby/captures.js +200 -0
  366. package/dist/core/ingestion/languages/ruby/import-target.js +7 -5
  367. package/dist/core/ingestion/languages/ruby/query.js +93 -0
  368. package/dist/core/ingestion/languages/ruby/scope-resolver.js +2 -0
  369. package/dist/core/ingestion/languages/ruby/simple-hooks.d.ts +1 -1
  370. package/dist/core/ingestion/languages/ruby/simple-hooks.js +22 -1
  371. package/dist/core/ingestion/languages/rust/captures.js +52 -1
  372. package/dist/core/ingestion/languages/rust/interpret.js +18 -0
  373. package/dist/core/ingestion/languages/rust/method-owners.js +11 -1
  374. package/dist/core/ingestion/languages/rust/module-path.d.ts +126 -0
  375. package/dist/core/ingestion/languages/rust/module-path.js +214 -0
  376. package/dist/core/ingestion/languages/rust/qualified-call.d.ts +41 -0
  377. package/dist/core/ingestion/languages/rust/qualified-call.js +481 -0
  378. package/dist/core/ingestion/languages/rust/query.js +48 -6
  379. package/dist/core/ingestion/languages/rust/range-binding.d.ts +1 -11
  380. package/dist/core/ingestion/languages/rust/range-binding.js +149 -63
  381. package/dist/core/ingestion/languages/rust/scope-resolver.js +21 -2
  382. package/dist/core/ingestion/languages/rust.js +17 -0
  383. package/dist/core/ingestion/languages/swift/captures.js +99 -3
  384. package/dist/core/ingestion/languages/swift/conditional-directive-preprocess.d.ts +48 -0
  385. package/dist/core/ingestion/languages/swift/conditional-directive-preprocess.js +253 -0
  386. package/dist/core/ingestion/languages/swift/import-target.js +4 -9
  387. package/dist/core/ingestion/languages/swift/query.js +17 -0
  388. package/dist/core/ingestion/languages/swift/receiver-binding.d.ts +8 -0
  389. package/dist/core/ingestion/languages/swift/receiver-binding.js +6 -2
  390. package/dist/core/ingestion/languages/swift.js +2 -0
  391. package/dist/core/ingestion/languages/typescript/captures.d.ts +90 -1
  392. package/dist/core/ingestion/languages/typescript/captures.js +288 -5
  393. package/dist/core/ingestion/languages/typescript/cjs-export-assignment.d.ts +134 -0
  394. package/dist/core/ingestion/languages/typescript/cjs-export-assignment.js +523 -0
  395. package/dist/core/ingestion/languages/typescript/cjs-module-exports.d.ts +54 -0
  396. package/dist/core/ingestion/languages/typescript/cjs-module-exports.js +191 -0
  397. package/dist/core/ingestion/languages/typescript/file-candidates.d.ts +29 -0
  398. package/dist/core/ingestion/languages/typescript/file-candidates.js +70 -0
  399. package/dist/core/ingestion/languages/typescript/import-decomposer.d.ts +28 -1
  400. package/dist/core/ingestion/languages/typescript/import-decomposer.js +125 -10
  401. package/dist/core/ingestion/languages/typescript/import-target.d.ts +25 -37
  402. package/dist/core/ingestion/languages/typescript/import-target.js +24 -26
  403. package/dist/core/ingestion/languages/typescript/interpret.d.ts +21 -1
  404. package/dist/core/ingestion/languages/typescript/interpret.js +45 -5
  405. package/dist/core/ingestion/languages/typescript/module-resolution.d.ts +48 -0
  406. package/dist/core/ingestion/languages/typescript/module-resolution.js +171 -0
  407. package/dist/core/ingestion/languages/typescript/nuxt-auto-imports.js +2 -1
  408. package/dist/core/ingestion/languages/typescript/query.d.ts +1 -0
  409. package/dist/core/ingestion/languages/typescript/query.js +340 -14
  410. package/dist/core/ingestion/languages/typescript/receiver-binding.d.ts +17 -0
  411. package/dist/core/ingestion/languages/typescript/receiver-binding.js +27 -0
  412. package/dist/core/ingestion/languages/typescript/scope-resolver.js +27 -40
  413. package/dist/core/ingestion/languages/typescript/simple-hooks.d.ts +0 -10
  414. package/dist/core/ingestion/languages/typescript/simple-hooks.js +22 -22
  415. package/dist/core/ingestion/languages/typescript/tsconfig.d.ts +59 -0
  416. package/dist/core/ingestion/languages/typescript/tsconfig.js +291 -0
  417. package/dist/core/ingestion/languages/typescript.js +87 -1
  418. package/dist/core/ingestion/languages/vue/import-target.d.ts +6 -22
  419. package/dist/core/ingestion/languages/vue/import-target.js +11 -47
  420. package/dist/core/ingestion/languages/vue/scope-resolver.js +4 -2
  421. package/dist/core/ingestion/local-symbol-pruner.js +11 -11
  422. package/dist/core/ingestion/method-extractors/configs/csharp.js +1 -0
  423. package/dist/core/ingestion/method-extractors/generic.js +1 -0
  424. package/dist/core/ingestion/method-types.d.ts +16 -0
  425. package/dist/core/ingestion/parsing-processor.js +32 -1
  426. package/dist/core/ingestion/pipeline-phases/di.d.ts +8 -33
  427. package/dist/core/ingestion/pipeline-phases/di.js +275 -157
  428. package/dist/core/ingestion/pipeline-phases/index.d.ts +3 -0
  429. package/dist/core/ingestion/pipeline-phases/index.js +3 -0
  430. package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +15 -0
  431. package/dist/core/ingestion/pipeline-phases/parse-impl.js +158 -3
  432. package/dist/core/ingestion/pipeline-phases/parse.js +5 -0
  433. package/dist/core/ingestion/pipeline-phases/processes.d.ts +11 -2
  434. package/dist/core/ingestion/pipeline-phases/processes.js +102 -7
  435. package/dist/core/ingestion/pipeline-phases/routes.js +56 -10
  436. package/dist/core/ingestion/pipeline-phases/spring-aop.d.ts +34 -0
  437. package/dist/core/ingestion/pipeline-phases/spring-aop.js +439 -0
  438. package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.d.ts +34 -0
  439. package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.js +255 -0
  440. package/dist/core/ingestion/pipeline-phases/spring-config.d.ts +37 -0
  441. package/dist/core/ingestion/pipeline-phases/spring-config.js +433 -0
  442. package/dist/core/ingestion/pipeline-phases/types.d.ts +7 -0
  443. package/dist/core/ingestion/pipeline.d.ts +27 -3
  444. package/dist/core/ingestion/pipeline.js +62 -12
  445. package/dist/core/ingestion/process-processor.d.ts +109 -2
  446. package/dist/core/ingestion/process-processor.js +464 -52
  447. package/dist/core/ingestion/resolve-references.d.ts +6 -1
  448. package/dist/core/ingestion/resolve-references.js +78 -6
  449. package/dist/core/ingestion/route-extractors/data-route-table.d.ts +25 -0
  450. package/dist/core/ingestion/route-extractors/data-route-table.js +864 -0
  451. package/dist/core/ingestion/route-extractors/dispatch-guard.d.ts +96 -0
  452. package/dist/core/ingestion/route-extractors/dispatch-guard.js +1184 -0
  453. package/dist/core/ingestion/route-extractors/spring-shared.d.ts +11 -0
  454. package/dist/core/ingestion/route-extractors/spring-shared.js +89 -0
  455. package/dist/core/ingestion/route-extractors/spring.js +109 -24
  456. package/dist/core/ingestion/scope-extractor-bridge.js +9 -1
  457. package/dist/core/ingestion/scope-extractor.d.ts +22 -7
  458. package/dist/core/ingestion/scope-extractor.js +617 -59
  459. package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +381 -22
  460. package/dist/core/ingestion/scope-resolution/contract/scope-resolver.js +16 -5
  461. package/dist/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.d.ts +7 -7
  462. package/dist/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.js +8 -7
  463. package/dist/core/ingestion/scope-resolution/graph-bridge/edges.d.ts +15 -1
  464. package/dist/core/ingestion/scope-resolution/graph-bridge/edges.js +53 -0
  465. package/dist/core/ingestion/scope-resolution/graph-bridge/ids.d.ts +20 -15
  466. package/dist/core/ingestion/scope-resolution/graph-bridge/ids.js +275 -41
  467. package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.d.ts +123 -0
  468. package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +171 -17
  469. package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.d.ts +56 -1
  470. package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +130 -32
  471. package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.d.ts +30 -1
  472. package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +46 -3
  473. package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.d.ts +64 -0
  474. package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.js +1233 -0
  475. package/dist/core/ingestion/scope-resolution/passes/compound-receiver.d.ts +107 -5
  476. package/dist/core/ingestion/scope-resolution/passes/compound-receiver.js +590 -33
  477. package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +19 -4
  478. package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +160 -4
  479. package/dist/core/ingestion/scope-resolution/passes/imported-value-refs.d.ts +34 -0
  480. package/dist/core/ingestion/scope-resolution/passes/imported-value-refs.js +62 -0
  481. package/dist/core/ingestion/scope-resolution/passes/property-dispatch.d.ts +64 -0
  482. package/dist/core/ingestion/scope-resolution/passes/property-dispatch.js +118 -0
  483. package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.d.ts +109 -8
  484. package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +931 -92
  485. package/dist/core/ingestion/scope-resolution/passes/return-shape-members.d.ts +58 -0
  486. package/dist/core/ingestion/scope-resolution/passes/return-shape-members.js +458 -0
  487. package/dist/core/ingestion/scope-resolution/passes/unique-name-properties.d.ts +180 -0
  488. package/dist/core/ingestion/scope-resolution/passes/unique-name-properties.js +418 -0
  489. package/dist/core/ingestion/scope-resolution/pipeline/phase.d.ts +34 -0
  490. package/dist/core/ingestion/scope-resolution/pipeline/phase.js +82 -38
  491. package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +61 -1
  492. package/dist/core/ingestion/scope-resolution/pipeline/run.js +384 -48
  493. package/dist/core/ingestion/scope-resolution/resolution-outcome.d.ts +112 -2
  494. package/dist/core/ingestion/scope-resolution/resolution-outcome.js +38 -1
  495. package/dist/core/ingestion/scope-resolution/scope/namespace-targets.d.ts +25 -3
  496. package/dist/core/ingestion/scope-resolution/scope/namespace-targets.js +36 -16
  497. package/dist/core/ingestion/scope-resolution/scope/walkers.d.ts +210 -9
  498. package/dist/core/ingestion/scope-resolution/scope/walkers.js +968 -56
  499. package/dist/core/ingestion/scope-resolution/summary-maps.d.ts +28 -0
  500. package/dist/core/ingestion/scope-resolution/summary-maps.js +50 -0
  501. package/dist/core/ingestion/scope-resolution/undecided-satisfaction.d.ts +55 -0
  502. package/dist/core/ingestion/scope-resolution/undecided-satisfaction.js +37 -0
  503. package/dist/core/ingestion/scope-resolution/unresolved-receivers.d.ts +109 -0
  504. package/dist/core/ingestion/scope-resolution/unresolved-receivers.js +204 -0
  505. package/dist/core/ingestion/scope-resolution/utils/definition-id.d.ts +13 -0
  506. package/dist/core/ingestion/scope-resolution/utils/definition-id.js +19 -0
  507. package/dist/core/ingestion/scope-resolution/utils/generic-instantiation.d.ts +171 -0
  508. package/dist/core/ingestion/scope-resolution/utils/generic-instantiation.js +218 -0
  509. package/dist/core/ingestion/scope-resolution/workspace-index-types.d.ts +34 -0
  510. package/dist/core/ingestion/scope-resolution/workspace-index-types.js +15 -0
  511. package/dist/core/ingestion/scope-resolution/workspace-index.d.ts +7 -20
  512. package/dist/core/ingestion/taint/typescript-model.js +34 -2
  513. package/dist/core/ingestion/tree-sitter-queries.d.ts +11 -11
  514. package/dist/core/ingestion/tree-sitter-queries.js +688 -5
  515. package/dist/core/ingestion/type-env.js +11 -7
  516. package/dist/core/ingestion/type-extractors/jvm.js +17 -2
  517. package/dist/core/ingestion/type-extractors/shared.d.ts +17 -0
  518. package/dist/core/ingestion/type-extractors/shared.js +16 -0
  519. package/dist/core/ingestion/type-extractors/types.d.ts +12 -0
  520. package/dist/core/ingestion/type-extractors/typescript.d.ts +20 -0
  521. package/dist/core/ingestion/type-extractors/typescript.js +26 -0
  522. package/dist/core/ingestion/utils/ast-helpers.d.ts +311 -14
  523. package/dist/core/ingestion/utils/ast-helpers.js +745 -48
  524. package/dist/core/ingestion/utils/call-analysis.d.ts +27 -22
  525. package/dist/core/ingestion/utils/call-analysis.js +202 -7
  526. package/dist/core/ingestion/utils/callable-flow-captures.d.ts +153 -0
  527. package/dist/core/ingestion/utils/callable-flow-captures.js +928 -0
  528. package/dist/core/ingestion/utils/callable-labels.d.ts +25 -0
  529. package/dist/core/ingestion/utils/callable-labels.js +31 -0
  530. package/dist/core/ingestion/utils/effective-ram.d.ts +40 -0
  531. package/dist/core/ingestion/utils/effective-ram.js +58 -0
  532. package/dist/core/ingestion/utils/line-base.d.ts +14 -0
  533. package/dist/core/ingestion/utils/line-base.js +14 -0
  534. package/dist/core/ingestion/utils/method-props.d.ts +27 -4
  535. package/dist/core/ingestion/utils/method-props.js +29 -4
  536. package/dist/core/ingestion/utils/receiver-chain-captures.d.ts +31 -0
  537. package/dist/core/ingestion/utils/receiver-chain-captures.js +57 -0
  538. package/dist/core/ingestion/utils/receiver-chain-codec.d.ts +89 -0
  539. package/dist/core/ingestion/utils/receiver-chain-codec.js +182 -0
  540. package/dist/core/ingestion/utils/scope-tree-walk.d.ts +22 -0
  541. package/dist/core/ingestion/utils/scope-tree-walk.js +33 -0
  542. package/dist/core/ingestion/utils/template-arguments.d.ts +96 -0
  543. package/dist/core/ingestion/utils/template-arguments.js +196 -0
  544. package/dist/core/ingestion/utils/type-parameters.d.ts +49 -0
  545. package/dist/core/ingestion/utils/type-parameters.js +206 -0
  546. package/dist/core/ingestion/workers/callable-id.d.ts +72 -0
  547. package/dist/core/ingestion/workers/callable-id.js +116 -0
  548. package/dist/core/ingestion/workers/parse-worker.d.ts +14 -1
  549. package/dist/core/ingestion/workers/parse-worker.js +409 -39
  550. package/dist/core/ingestion/workers/worker-pool.d.ts +34 -27
  551. package/dist/core/ingestion/workers/worker-pool.js +133 -25
  552. package/dist/core/lbug/csv-generator.d.ts +27 -0
  553. package/dist/core/lbug/csv-generator.js +80 -17
  554. package/dist/core/lbug/extension-load-error.d.ts +2 -2
  555. package/dist/core/lbug/extension-load-error.js +44 -27
  556. package/dist/core/lbug/extension-loader.d.ts +29 -0
  557. package/dist/core/lbug/extension-loader.js +32 -7
  558. package/dist/core/lbug/graph-emit-sink.d.ts +264 -0
  559. package/dist/core/lbug/graph-emit-sink.js +581 -0
  560. package/dist/core/lbug/lbug-adapter.d.ts +337 -3
  561. package/dist/core/lbug/lbug-adapter.js +772 -67
  562. package/dist/core/lbug/lbug-config.d.ts +93 -6
  563. package/dist/core/lbug/lbug-config.js +269 -9
  564. package/dist/core/lbug/native-check.d.ts +39 -0
  565. package/dist/core/lbug/native-check.js +323 -46
  566. package/dist/core/lbug/pdg-emit-sink.d.ts +13 -4
  567. package/dist/core/lbug/pdg-emit-sink.js +21 -111
  568. package/dist/core/lbug/pool-adapter.d.ts +23 -1
  569. package/dist/core/lbug/pool-adapter.js +115 -7
  570. package/dist/core/lbug/query-batch.d.ts +75 -0
  571. package/dist/core/lbug/query-batch.js +102 -0
  572. package/dist/core/lbug/rel-pair-routing.d.ts +160 -2
  573. package/dist/core/lbug/rel-pair-routing.js +228 -10
  574. package/dist/core/lbug/schema.d.ts +162 -3
  575. package/dist/core/lbug/schema.js +392 -157
  576. package/dist/core/lbug/sidecar-recovery.d.ts +1 -0
  577. package/dist/core/lbug/sidecar-recovery.js +1 -1
  578. package/dist/core/lbug/sync-csv-writer.d.ts +47 -0
  579. package/dist/core/lbug/sync-csv-writer.js +108 -0
  580. package/dist/core/lbug/wal-checkpoint-driver.js +3 -0
  581. package/dist/core/platform/capabilities.d.ts +0 -1
  582. package/dist/core/platform/capabilities.js +12 -7
  583. package/dist/core/run-analyze.d.ts +150 -3
  584. package/dist/core/run-analyze.js +1562 -151
  585. package/dist/core/search/bm25-index.d.ts +11 -0
  586. package/dist/core/search/bm25-index.js +60 -26
  587. package/dist/core/search/fts-indexes.d.ts +167 -2
  588. package/dist/core/search/fts-indexes.js +264 -10
  589. package/dist/core/wiki/graph-queries.js +145 -112
  590. package/dist/core/wiki/llm-client.d.ts +37 -5
  591. package/dist/core/wiki/llm-client.js +88 -17
  592. package/dist/core/wiki/prompts.d.ts +19 -0
  593. package/dist/core/wiki/prompts.js +20 -1
  594. package/dist/lib/utils.d.ts +113 -0
  595. package/dist/lib/utils.js +185 -0
  596. package/dist/mcp/http-transport.d.ts +5 -0
  597. package/dist/mcp/http-transport.js +19 -5
  598. package/dist/mcp/local/aop-metadata.d.ts +77 -0
  599. package/dist/mcp/local/aop-metadata.js +227 -0
  600. package/dist/mcp/local/bean-metadata.d.ts +3 -0
  601. package/dist/mcp/local/bean-metadata.js +46 -0
  602. package/dist/mcp/local/local-backend.d.ts +167 -6
  603. package/dist/mcp/local/local-backend.js +1756 -405
  604. package/dist/mcp/local/path-predicate.d.ts +19 -0
  605. package/dist/mcp/local/path-predicate.js +21 -0
  606. package/dist/mcp/local/pdg-impact.d.ts +132 -10
  607. package/dist/mcp/local/pdg-impact.js +391 -98
  608. package/dist/mcp/output-budget.d.ts +5 -0
  609. package/dist/mcp/output-budget.js +52 -0
  610. package/dist/mcp/read-only-policy.d.ts +12 -0
  611. package/dist/mcp/read-only-policy.js +102 -0
  612. package/dist/mcp/repository-policy.d.ts +35 -0
  613. package/dist/mcp/repository-policy.js +333 -0
  614. package/dist/mcp/resources.js +34 -7
  615. package/dist/mcp/server.d.ts +5 -2
  616. package/dist/mcp/server.js +48 -18
  617. package/dist/mcp/tools.d.ts +8 -8
  618. package/dist/mcp/tools.js +91 -20
  619. package/dist/server/analyze-job.d.ts +40 -2
  620. package/dist/server/analyze-job.js +30 -2
  621. package/dist/server/analyze-launch.d.ts +1 -1
  622. package/dist/server/analyze-launch.js +79 -10
  623. package/dist/server/analyze-worker-core.d.ts +3 -2
  624. package/dist/server/analyze-worker-core.js +15 -3
  625. package/dist/server/analyze-worker-ipc.d.ts +1 -1
  626. package/dist/server/analyze-worker-ipc.js +4 -0
  627. package/dist/server/analyze-worker-protocol.d.ts +59 -0
  628. package/dist/server/analyze-worker-protocol.js +1 -0
  629. package/dist/server/analyze-worker.d.ts +1 -17
  630. package/dist/server/analyze-worker.js +29 -6
  631. package/dist/server/api.d.ts +2 -11
  632. package/dist/server/api.js +200 -155
  633. package/dist/server/embed-run-outcome.d.ts +89 -0
  634. package/dist/server/embed-run-outcome.js +88 -0
  635. package/dist/server/git-clone.js +6 -2
  636. package/dist/server/mcp-http.d.ts +1 -1
  637. package/dist/server/mcp-http.js +4 -2
  638. package/dist/server/middleware.d.ts +116 -9
  639. package/dist/server/middleware.js +291 -22
  640. package/dist/server/sse-progress.d.ts +41 -0
  641. package/dist/server/sse-progress.js +125 -0
  642. package/dist/server/upload-ingest.js +2 -1
  643. package/dist/server/validation.js +2 -1
  644. package/dist/storage/branch-index.d.ts +11 -6
  645. package/dist/storage/branch-index.js +15 -7
  646. package/dist/storage/file-hash.js +2 -2
  647. package/dist/storage/fs-atomic.d.ts +25 -0
  648. package/dist/storage/fs-atomic.js +42 -0
  649. package/dist/storage/git.d.ts +165 -0
  650. package/dist/storage/git.js +352 -3
  651. package/dist/storage/index-lock.d.ts +83 -0
  652. package/dist/storage/index-lock.js +654 -0
  653. package/dist/storage/parse-cache.js +482 -1
  654. package/dist/storage/parsedfile-store.d.ts +8 -0
  655. package/dist/storage/parsedfile-store.js +235 -1
  656. package/dist/storage/repo-manager.d.ts +29 -309
  657. package/dist/storage/repo-manager.js +187 -165
  658. package/dist/storage/repo-meta.d.ts +530 -0
  659. package/dist/storage/repo-meta.js +100 -0
  660. package/dist/types/pipeline.d.ts +37 -0
  661. package/hooks/antigravity/gitnexus-antigravity-hook.cjs +1 -1
  662. package/hooks/claude/gitnexus-hook.cjs +1 -1
  663. package/hooks/claude/resolve-analyze-cmd.cjs +80 -13
  664. package/package.json +20 -12
  665. package/scripts/cross-platform-shard.ts +143 -0
  666. package/scripts/cross-platform-tests.ts +94 -0
  667. package/scripts/ensure-fts.ts +14 -3
  668. package/scripts/run-cross-platform.ts +36 -10
  669. package/scripts/sync-plugin-manifests.mjs +192 -0
  670. package/skills/gitnexus-cli.md +3 -3
  671. package/skills/gitnexus-debugging.md +37 -7
  672. package/skills/gitnexus-exploring.md +26 -4
  673. package/skills/gitnexus-impact-analysis.md +71 -10
  674. package/skills/gitnexus-lfg/README.md +55 -0
  675. package/skills/gitnexus-lfg/SKILL.md +86 -0
  676. package/skills/gitnexus-plan/README.md +147 -0
  677. package/skills/gitnexus-plan/SKILL.md +348 -0
  678. package/skills/gitnexus-plan/references/context-ledger.md +137 -0
  679. package/skills/gitnexus-plan/references/context-pack.md +126 -0
  680. package/skills/gitnexus-plan/references/evidence-provenance.md +309 -0
  681. package/skills/gitnexus-plan/references/pdg-slice.md +109 -0
  682. package/skills/gitnexus-plan/references/plan-template.md +201 -0
  683. package/skills/gitnexus-plan/scripts/evidence-provenance.mjs +2366 -0
  684. package/skills/gitnexus-refactoring.md +48 -5
  685. package/skills/gitnexus-review/SKILL.md +279 -0
  686. package/skills/gitnexus-review/ci-personas/ci-adversarial-lens.md +42 -0
  687. package/skills/gitnexus-review/ci-personas/ci-blast-radius-lens.md +39 -0
  688. package/skills/gitnexus-review/ci-personas/ci-correctness-lens.md +37 -0
  689. package/skills/gitnexus-review/ci-personas/ci-coverage-lens.md +40 -0
  690. package/skills/gitnexus-review/ci-personas/ci-critic-lens.md +42 -0
  691. package/skills/gitnexus-review/ci-personas/ci-security-lens.md +39 -0
  692. package/skills/gitnexus-taint-analysis.md +13 -7
  693. package/skills/gitnexus-work/README.md +71 -0
  694. package/skills/gitnexus-work/SKILL.md +272 -0
  695. package/skills/gitnexus-work/references/evidence-provenance.md +309 -0
  696. package/skills/gitnexus-work/scripts/evidence-provenance.mjs +2366 -0
  697. package/vendor/leiden/utils.cjs +28 -1
  698. package/web/assets/ProcessFlowModal-Badh2Pbg.js +24 -0
  699. package/web/assets/__vite-browser-external-bMKyYQkO.js +1 -0
  700. package/web/assets/abnfDiagram-QNN2D4NM-Cq2djWWe.js +1 -0
  701. package/web/assets/agent-DIzEQ1JJ.js +626 -0
  702. package/web/assets/architecture-TIHT7OUA-V6N4J3SY-fTePvLoe.js +1 -0
  703. package/web/assets/architectureDiagram-OT7VKSJ7-mKEXxkeF.js +36 -0
  704. package/web/assets/blockDiagram-54WLDVWM-Dg_hrRWE.js +132 -0
  705. package/web/assets/{c4Diagram-Y2BXMSZH-DOXVs7-C.js → c4Diagram-X2LASM7V-CnhoT4aV.js} +6 -6
  706. package/web/assets/chunk-224SPVON-B8gxtXpy.js +1 -0
  707. package/web/assets/chunk-2AEHWXPW-CV4r6-1I.js +127 -0
  708. package/web/assets/chunk-2SREHG4O-Dip42xOq.js +1 -0
  709. package/web/assets/chunk-4RFN2BYJ-DHHWuC-n.js +1 -0
  710. package/web/assets/chunk-66DQ2XMT-CM0xjFAN.js +1 -0
  711. package/web/assets/chunk-6BELYETK-ChsYtfHW.js +1 -0
  712. package/web/assets/chunk-6L755F7B-CMhLBxi2.js +1 -0
  713. package/web/assets/chunk-7CWYLC5S-DRgGkkpF.js +2 -0
  714. package/web/assets/chunk-A7VWPJGB-B4O3oQdQ.js +1 -0
  715. package/web/assets/chunk-BI6VK774-D0oaWk8V.js +1 -0
  716. package/web/assets/chunk-D6VWDJW2-BxcBdZ9c.js +2 -0
  717. package/web/assets/chunk-DMV4VAQV-Bn6WXDSX.js +4 -0
  718. package/web/assets/chunk-E5QJAATJ-dh-5CtIV.js +2 -0
  719. package/web/assets/chunk-EQFTRU2I-1ix7TzW9.js +2 -0
  720. package/web/assets/chunk-FWYVLQTC-BgDItRzJ.js +1 -0
  721. package/web/assets/chunk-HNC4WDU7-DoU3KnA7.js +1 -0
  722. package/web/assets/chunk-L5GCOVLC-CE2w8Nm_.js +161 -0
  723. package/web/assets/chunk-LAHSG3N2-Bz4hcn0N.js +321 -0
  724. package/web/assets/chunk-LORZLZWG-B57uGw2N.js +88 -0
  725. package/web/assets/chunk-NLANEA3F-XpH_NPA5.js +62 -0
  726. package/web/assets/chunk-NV3KIAZN-5yvcpMiu.js +1 -0
  727. package/web/assets/chunk-OIYT25JQ-CQ6KOZGX.js +1 -0
  728. package/web/assets/chunk-PE7DX7ZZ-CCvRVj43.js +10 -0
  729. package/web/assets/chunk-Q67WD55A-BWCH2SVz.js +156 -0
  730. package/web/assets/chunk-RRFMTAIC-CMN0wcYA.js +1 -0
  731. package/web/assets/{chunk-RLI5ZMPA-CkXZ0y0U.js → chunk-SATU7PGQ-B1zhgOvc.js} +1 -1
  732. package/web/assets/chunk-STOV2HOB-GnExfzIX.js +1 -0
  733. package/web/assets/chunk-SZD42YQK-ijyKKVr1.js +70 -0
  734. package/web/assets/chunk-TFPGFQPA-Dj6a-0pC.js +231 -0
  735. package/web/assets/chunk-TGVD4F4B-BMc31Gj2.js +2 -0
  736. package/web/assets/chunk-TZUXEDM2-B7p9AcTw.js +1 -0
  737. package/web/assets/chunk-UAT7B5JY-DW-A_fpI.js +1 -0
  738. package/web/assets/{chunk-6764PJDD-C7xxk063.js → chunk-VE5CLXGZ-C1vB7wpY.js} +1 -1
  739. package/web/assets/chunk-VJFVEZTB-CX66F2ep.js +206 -0
  740. package/web/assets/chunk-VY5UBI4V-yxPQAWxw.js +1 -0
  741. package/web/assets/chunk-WJBAP47W-BckNkuEN.js +1 -0
  742. package/web/assets/chunk-XNMVGMAZ-Cg_LnPtj.js +1 -0
  743. package/web/assets/classDiagram-VPOSVPXH-BjOiXA_C.js +1 -0
  744. package/web/assets/classDiagram-v2-5VFNUXQA-BjOiXA_C.js +1 -0
  745. package/web/assets/{cose-bilkent-UX7MHV2Q-BmnZ7Mvj.js → cose-bilkent-RZA4XIPR-BHpK4Crp.js} +1 -1
  746. package/web/assets/cynefin-VYW2F7L2-2VAHYKR6-DAsF6GZv.js +1 -0
  747. package/web/assets/cynefinDiagram-TR7LZUCG-C3Iar9lZ.js +62 -0
  748. package/web/assets/dagre-K64A6Z3X-CUwi79mA.js +4 -0
  749. package/web/assets/diagram-2TLGJV2N-C2F5Nfym.js +30 -0
  750. package/web/assets/diagram-JCD7PQ7C-DC5-9FRr.js +24 -0
  751. package/web/assets/diagram-KFBZAVDW-Dfmf_4ti.js +3 -0
  752. package/web/assets/diagram-L7DVE3PN-GIRyVUtt.js +41 -0
  753. package/web/assets/diagram-YP3FGXHI-CyNFYtkd.js +24 -0
  754. package/web/assets/ebnfDiagram-DRHRQJWO-D8_CI4ZF.js +1 -0
  755. package/web/assets/erDiagram-SZLJLQMB-CohQjznC.js +85 -0
  756. package/web/assets/eventmodeling-45OFAUF4-AOUJWSLX-BvTc6iQi.js +1 -0
  757. package/web/assets/flowDiagram-BWE6NHOH-B6RnEvD9.js +1 -0
  758. package/web/assets/ganttDiagram-2QTCJSNI-Cks_mEcF.js +292 -0
  759. package/web/assets/gitGraph-TEB2WS4Q-U5VWYIBC-Dy7CCSZ5.js +1 -0
  760. package/web/assets/gitGraphDiagram-VVZAVV5G-CG41cIVc.js +106 -0
  761. package/web/assets/{index-B4eB4dNZ.js → index-BBNl0qfX.js} +51 -51
  762. package/web/assets/index-CJDpyH-n.css +2 -0
  763. package/web/assets/info-DKCQHKI2-DX6KST54-BLJg1ikX.js +1 -0
  764. package/web/assets/infoDiagram-FY4PZKRE-BJ3vPVwW.js +2 -0
  765. package/web/assets/{ishikawaDiagram-BNXS4ZKH-BLjivjXL.js → ishikawaDiagram-4JDSWWDM-DmqWtjkl.js} +6 -6
  766. package/web/assets/{journeyDiagram-M6C3CM3L-Cetgs3NH.js → journeyDiagram-QUS3FAKT-XAzVzrQW.js} +6 -6
  767. package/web/assets/{kanban-definition-75IXJCU3-DMlCaIpf.js → kanban-definition-D4L7SQKK-YurRnmYn.js} +27 -27
  768. package/web/assets/katex-C5OPUE3Q-Bnbavtmu.js +257 -0
  769. package/web/assets/{mindmap-definition-2TDM6QVE-B4GbXQBc.js → mindmap-definition-66QP5TD6-ChrWWnil.js} +29 -29
  770. package/web/assets/node-Ct_zna8U.js +8 -0
  771. package/web/assets/packet-7NZHBO7P-5WG45QPS-KUxcuvaA.js +1 -0
  772. package/web/assets/pegDiagram-YKIO5C6U-QGeQLEq2.js +1 -0
  773. package/web/assets/pie-RZYD4A2V-2OCZ2VTD-DPs08kJY.js +1 -0
  774. package/web/assets/pieDiagram-YPY3TKG5-BuT3MYzm.js +39 -0
  775. package/web/assets/preload-helper-Czpn1I53.js +1 -0
  776. package/web/assets/{quadrantDiagram-VICAPDV7-B1TQnlm0.js → quadrantDiagram-VO5QLCXA-B7098wSc.js} +6 -6
  777. package/web/assets/radar-I7S5WNFK-EPLSA35B-w5F0K3a7.js +1 -0
  778. package/web/assets/railroad-3IZDKUUU-PWFQV6Y6-Bu668yqY.js +1 -0
  779. package/web/assets/railroad-abnf-AHOZXSZD-JYYJX3BS-B6ghpETS.js +1 -0
  780. package/web/assets/railroad-ebnf-EBAXGLYW-RBZ4ONAP-D-XmHh3M.js +1 -0
  781. package/web/assets/railroad-peg-LSFZ7HO6-KHNPXGPG-mhkrhzEn.js +1 -0
  782. package/web/assets/railroadDiagram-M77LTMSB-AXu4vxk_.js +1 -0
  783. package/web/assets/requirementDiagram-RASO5HTO-B-l8InpK.js +84 -0
  784. package/web/assets/sankeyDiagram-F32LOJ6L-Kd7zjJgX.js +40 -0
  785. package/web/assets/sdk-CzHHH8tD.js +37 -0
  786. package/web/assets/sequenceDiagram-URATNSBD-BlcdY9DS.js +162 -0
  787. package/web/assets/sizeCapture-5GORAGP4-BEqQzsxs.js +1 -0
  788. package/web/assets/src-C5sx_gMp.js +1 -0
  789. package/web/assets/stateDiagram-DODFXNG5-DTdHc-fF.js +1 -0
  790. package/web/assets/stateDiagram-v2-JNMM5JRA-DioNLDDo.js +1 -0
  791. package/web/assets/swimlanes-OSWOYLSK-CA0ofdwY.js +2 -0
  792. package/web/assets/swimlanesDiagram-RHGX2RDE-PkwUdckC.js +8 -0
  793. package/web/assets/timeline-definition-WJXWRH4I-DUfp1R3E.js +120 -0
  794. package/web/assets/treeView-QDETBFTQ-EHYTSQNO-C5lpBgPm.js +1 -0
  795. package/web/assets/treemap-6X3UGDF4-CCWCF7EK-BB0ZyO-B.js +1 -0
  796. package/web/assets/vennDiagram-K3VCMQLI-Bj-FN-XS.js +34 -0
  797. package/web/assets/wardley-OPB4EBWU-6OWERDVT-CEA3Nq0j.js +1 -0
  798. package/web/assets/wardleyDiagram-XK6FUAWV-CVV0dHFr.js +78 -0
  799. package/web/assets/xychartDiagram-5VRUVLCW-CK_rbSWE.js +7 -0
  800. package/web/index.html +17 -15
  801. package/dist/core/ingestion/languages/python/index-stats.d.ts +0 -18
  802. package/dist/core/ingestion/languages/python/index-stats.js +0 -25
  803. package/skills/gitnexus-pr-review.md +0 -163
  804. package/web/assets/ProcessFlowModal-Dna7GkwO.js +0 -22
  805. package/web/assets/agent-DNYDy-KA.js +0 -660
  806. package/web/assets/architecture-7EHR7CIX-6QZW5X65-BVWFvYz2.js +0 -1
  807. package/web/assets/architectureDiagram-UL44E2DR-BU5ZRITg.js +0 -36
  808. package/web/assets/blockDiagram-7IZFK4PR-Dut1BpTV.js +0 -132
  809. package/web/assets/chunk-2T2R6R2M-pkw2oXHH.js +0 -4
  810. package/web/assets/chunk-2UTLFMKG-CXlhF3Pt.js +0 -1
  811. package/web/assets/chunk-3SSMPTDK-rPsRM1x0.js +0 -321
  812. package/web/assets/chunk-4R4BOZG6-Be_F0JoX.js +0 -159
  813. package/web/assets/chunk-67TQ5CYL-zxhDWgyF.js +0 -124
  814. package/web/assets/chunk-7J6CGLKN-AmkN8jJN.js +0 -10
  815. package/web/assets/chunk-C62D2QBJ-3gdL8EKc.js +0 -1
  816. package/web/assets/chunk-CEXFNPSA-CjwtMDkc.js +0 -1
  817. package/web/assets/chunk-INKRHTLW-D9BM9HWZ.js +0 -70
  818. package/web/assets/chunk-J5EP6P6S-L19oz55R.js +0 -1
  819. package/web/assets/chunk-KGFNY3KK-tD2F6wxK.js +0 -62
  820. package/web/assets/chunk-KGYTTC2M-zm6n242I.js +0 -1
  821. package/web/assets/chunk-KNLZD3CH-BGlP6X9R.js +0 -1
  822. package/web/assets/chunk-LCXTWHL2-Ba9JK-6F.js +0 -231
  823. package/web/assets/chunk-LII3EMHJ-EGx-eBIu.js +0 -1
  824. package/web/assets/chunk-LRIF4GLE-C3_PqUBq.js +0 -1
  825. package/web/assets/chunk-QA3QBVWF-D4cSJBf6.js +0 -2
  826. package/web/assets/chunk-RERM46MO-B5dAdWpP.js +0 -1
  827. package/web/assets/chunk-RG4AUYOV-OqBBMwuQ.js +0 -206
  828. package/web/assets/chunk-RKZBBQEN-MyIQbGgD.js +0 -1
  829. package/web/assets/chunk-T2UQINTJ-BJusEiGe.js +0 -1
  830. package/web/assets/chunk-UP6H54XL-BG-n7qDp.js +0 -1
  831. package/web/assets/chunk-UXSXWOXI-CW1_r5cS.js +0 -1
  832. package/web/assets/chunk-UY5QBCOK-BCpUlARQ.js +0 -1
  833. package/web/assets/chunk-VU6ZFW4Y-BeXVk45_.js +0 -2
  834. package/web/assets/chunk-ZXARS5L4-BI_qR2Nm.js +0 -1
  835. package/web/assets/classDiagram-KGZ6W3CR-D9zSIg0x.js +0 -1
  836. package/web/assets/classDiagram-v2-72OJOZXJ-D9zSIg0x.js +0 -1
  837. package/web/assets/dagre-ND4H6XIP-CpcV5kbl.js +0 -4
  838. package/web/assets/diagram-3NCE3AQN-6SMxBRpj.js +0 -43
  839. package/web/assets/diagram-GF46GFSD-BZEdNcRZ.js +0 -24
  840. package/web/assets/diagram-HNR7UZ2L-DxKW2a2Y.js +0 -3
  841. package/web/assets/diagram-QXG6HAR7-HfTHcXX_.js +0 -24
  842. package/web/assets/diagram-WEQXMOUZ-CyijUS8r.js +0 -10
  843. package/web/assets/erDiagram-L5TCEMPS-D0fvpWEX.js +0 -85
  844. package/web/assets/eventmodeling-FCH6USID-MREXMVOE-CgFBM7e-.js +0 -1
  845. package/web/assets/flowDiagram-H6V6AXG4-Bvr9bbhk.js +0 -162
  846. package/web/assets/ganttDiagram-JCBTUEKG-TzODrLzv.js +0 -292
  847. package/web/assets/gitGraph-WXDBUCRP-R675I2BI-DCJv7SII.js +0 -1
  848. package/web/assets/gitGraphDiagram-S2ZK5IYY-ONQSwJIY.js +0 -106
  849. package/web/assets/index-CX_fADmQ.css +0 -2
  850. package/web/assets/info-J43DQDTF-KCYPFFUO-BfNy-9Nd.js +0 -1
  851. package/web/assets/infoDiagram-3YFTVSEB-DIPVUIQ6.js +0 -2
  852. package/web/assets/katex-K3KEBU37-qRQBy-EZ.js +0 -261
  853. package/web/assets/packet-YPE3B663-LP52Z2RK-D4qkeG9k.js +0 -1
  854. package/web/assets/pie-LRSECV5Y-TCRJHUBD-B_yMKyQa.js +0 -1
  855. package/web/assets/pieDiagram-CU6KROY3-D3YC_xyg.js +0 -30
  856. package/web/assets/radar-GUYGQ44K-RDLRG3WG-DeD6yN_0.js +0 -1
  857. package/web/assets/requirementDiagram-JXO7QTGE-f8wczLQf.js +0 -84
  858. package/web/assets/sankeyDiagram-URQDO5SZ-BTxzG5j0.js +0 -40
  859. package/web/assets/sequenceDiagram-VS2MUI6T-DuamM-IR.js +0 -162
  860. package/web/assets/src-BNCXICdA.js +0 -1
  861. package/web/assets/stateDiagram-7D4R322I-Ch2pEUcw.js +0 -1
  862. package/web/assets/stateDiagram-v2-36443NZ5-7ANuoZLL.js +0 -1
  863. package/web/assets/timeline-definition-O6YCAMPW-07BR8R8G.js +0 -120
  864. package/web/assets/treeView-BLDUP644-QA4HXRO3-CDuSYnd4.js +0 -1
  865. package/web/assets/treemap-LRROVOQU-LLAWBHMP-imazucyJ.js +0 -1
  866. package/web/assets/vennDiagram-MWXL3ELB-BQX2ossk.js +0 -34
  867. package/web/assets/wardley-L42UT6IY-5TKZOOLJ-DqrT9tB8.js +0 -1
  868. package/web/assets/wardleyDiagram-CUQ6CDDI-CGIJBBiK.js +0 -78
  869. package/web/assets/xychartDiagram-N2JHSOCM-B3HNMuWp.js +0 -7
  870. /package/web/assets/{chunk-7W6UQGC5-pyKGssV3.js → chunk-LIEV3EAG-pyKGssV3.js} +0 -0
@@ -1,132 +1,29 @@
1
+ /**
2
+ * Adapter from `(ParsedImport, WorkspaceIndex)` to Kotlin declared-package
3
+ * resolution. Package facts and module bindings are already present on the
4
+ * parsed workspace, so this performs no source I/O and no path inference.
5
+ */
6
+ import { perFileSet } from '../../import-resolvers/per-file-set.js';
7
+ import { getKotlinPackageFact } from './package-facts.js';
8
+ import { buildKotlinPackageIndex, resolveKotlinModule, } from './module-resolution.js';
9
+ const getKotlinPackageIndex = perFileSet((parsedFiles) => buildKotlinPackageIndex(parsedFiles, getKotlinPackageFact));
1
10
  export function resolveKotlinImportTarget(parsedImport, workspaceIndex) {
2
- const ctx = workspaceIndex;
3
- if (ctx === undefined ||
4
- typeof ctx.fromFile !== 'string' ||
5
- !(ctx.allFilePaths instanceof Set)) {
6
- return null;
7
- }
8
- if (parsedImport.kind === 'dynamic-unresolved')
11
+ const ctx = narrowContext(workspaceIndex);
12
+ if (ctx === null || parsedImport.kind === 'dynamic-unresolved')
9
13
  return null;
10
14
  if (parsedImport.targetRaw === null || parsedImport.targetRaw === '')
11
15
  return null;
12
- const target = parsedImport.targetRaw.endsWith('.*')
13
- ? parsedImport.targetRaw.slice(0, -2)
14
- : parsedImport.targetRaw;
15
- const pathLike = target.replace(/\./g, '/');
16
- // Resolution tiers, most-specific first:
17
- // 1. The full `pathLike` matches a `.kt`/`.kts` file directly
18
- // (`import util.User` → `util/User.kt`).
19
- // 2. Stripped (last-segment removed) `pathLike` matches a file
20
- // directly (`import util.OneArg.writeAudit` → `util/OneArg.kt`,
21
- // a class-or-object holding `writeAudit`).
22
- // 3. Stripped `pathLike` matches a *package directory* — fan out to
23
- // every `.kt`/`.kts` file inside it (`import models.getRepo` →
24
- // `[models/User.kt, models/Repo.kt]`). The finalize pass walks
25
- // each candidate and picks the one whose `localDefs` actually
26
- // export the imported name (#1759).
27
- // 4. Progressive prefix strip for deeper namespace aliases that
28
- // don't map 1:1 to directories.
29
- const stripped = pathLike.split('/').slice(0, -1).join('/');
30
- return (findKotlinFile(ctx.allFilePaths, pathLike) ??
31
- findKotlinExactOrSuffix(ctx.allFilePaths, stripped) ??
32
- findKotlinPackageFiles(ctx.allFilePaths, stripped) ??
33
- findByProgressivePrefixStrip(ctx.allFilePaths, pathLike));
34
- }
35
- function findKotlinFile(allFilePaths, pathLike) {
36
- return (findKotlinExactOrSuffix(allFilePaths, pathLike) ??
37
- findKotlinDirectoryChild(allFilePaths, pathLike));
38
- }
39
- /** Exact (`file === pathLike+ext`) or suffix (`file ends with /pathLike+ext`)
40
- * match — does NOT fall back to picking an arbitrary file inside a
41
- * `pathLike/` directory. Used by the stripped-path tier in
42
- * `resolveKotlinImportTarget` so a package import like `models.getRepo`
43
- * delegates to `findKotlinPackageFiles` (multi-file fan-out) instead of
44
- * silently committing to the first directory child. */
45
- function findKotlinExactOrSuffix(allFilePaths, pathLike) {
46
- if (pathLike === '')
47
- return null;
48
- const extensions = ['.kt', '.kts'];
49
- const suffix = `/${pathLike}`;
50
- let suffixFile = null;
51
- for (const raw of allFilePaths) {
52
- const file = raw.replace(/\\/g, '/');
53
- if (!extensions.some((ext) => file.endsWith(ext)))
54
- continue;
55
- for (const ext of extensions) {
56
- if (file === `${pathLike}${ext}`)
57
- return raw;
58
- if (suffixFile === null && file.endsWith(`${suffix}${ext}`))
59
- suffixFile = raw;
60
- }
61
- }
62
- return suffixFile;
63
- }
64
- /** First directory child of `pathLike/` — preserves the legacy single-
65
- * file fallback for cases where `pathLike` itself is an unqualified
66
- * package reference (rare in real Kotlin code; some fixtures rely on
67
- * it). Multi-file package fan-out goes through
68
- * `findKotlinPackageFiles` instead. */
69
- function findKotlinDirectoryChild(allFilePaths, pathLike) {
70
- if (pathLike === '')
16
+ const parsedFiles = ctx.parsedFiles;
17
+ if (parsedFiles === undefined || parsedFiles.length === 0)
71
18
  return null;
72
- const extensions = ['.kt', '.kts'];
73
- const dirPrefix = `${pathLike}/`;
74
- const suffixDirPrefix = `/${dirPrefix}`;
75
- for (const raw of allFilePaths) {
76
- const file = raw.replace(/\\/g, '/');
77
- if (!extensions.some((ext) => file.endsWith(ext)))
78
- continue;
79
- const atRoot = file.startsWith(dirPrefix);
80
- const atNested = file.includes(suffixDirPrefix);
81
- if (!atRoot && !atNested)
82
- continue;
83
- const idx = atRoot ? 0 : file.indexOf(suffixDirPrefix) + 1;
84
- const after = file.slice(idx + dirPrefix.length);
85
- if (after.length > 0 && !after.includes('/'))
86
- return raw;
87
- }
88
- return null;
19
+ return resolveKotlinModule(parsedImport.targetRaw, getKotlinPackageIndex(parsedFiles));
89
20
  }
90
- /**
91
- * Return every `.kt`/`.kts` file inside the package directory `dirPath`
92
- * (e.g. `models` → `['models/User.kt', 'models/Repo.kt']`). Used as a
93
- * fallback when an import like `models.getRepo` does not resolve to a
94
- * file named after the symbol — in Kotlin the symbol can live in any
95
- * file inside the package directory. The finalize pass walks each
96
- * candidate and picks the one whose `localDefs` actually export the
97
- * imported name (#1759).
98
- */
99
- function findKotlinPackageFiles(allFilePaths, dirPath) {
100
- if (dirPath === '')
21
+ function narrowContext(workspaceIndex) {
22
+ const ctx = workspaceIndex;
23
+ if (ctx === undefined ||
24
+ typeof ctx.fromFile !== 'string' ||
25
+ !(ctx.allFilePaths instanceof Set)) {
101
26
  return null;
102
- const extensions = ['.kt', '.kts'];
103
- const dirPrefix = `${dirPath}/`;
104
- const suffixDirPrefix = `/${dirPrefix}`;
105
- const out = [];
106
- for (const raw of allFilePaths) {
107
- const file = raw.replace(/\\/g, '/');
108
- if (!extensions.some((ext) => file.endsWith(ext)))
109
- continue;
110
- const atRoot = file.startsWith(dirPrefix);
111
- const atNested = file.includes(suffixDirPrefix);
112
- if (!atRoot && !atNested)
113
- continue;
114
- const idx = atRoot ? 0 : file.indexOf(suffixDirPrefix) + 1;
115
- const after = file.slice(idx + dirPrefix.length);
116
- // Direct children only — `models/sub/Util.kt` is a different package
117
- // (`models.sub`) and must not be merged with `models`.
118
- if (after.length === 0 || after.includes('/'))
119
- continue;
120
- out.push(raw);
121
- }
122
- return out.length === 0 ? null : out;
123
- }
124
- function findByProgressivePrefixStrip(allFilePaths, pathLike) {
125
- const segments = pathLike.split('/').filter(Boolean);
126
- for (let skip = 1; skip < segments.length; skip++) {
127
- const found = findKotlinFile(allFilePaths, segments.slice(skip).join('/'));
128
- if (found !== null)
129
- return found;
130
27
  }
131
- return null;
28
+ return ctx;
132
29
  }
@@ -4,6 +4,7 @@ export { getKotlinCaptureCacheStats, resetKotlinCaptureCacheStats } from './cach
4
4
  export { interpretKotlinImport, interpretKotlinTypeBinding } from './interpret.js';
5
5
  export { kotlinArityCompatibility } from './arity.js';
6
6
  export { resolveKotlinImportTarget, type KotlinResolveContext } from './import-target.js';
7
+ export { buildKotlinPackageIndex, resolveKotlinModule, type KotlinPackageIndex, } from './module-resolution.js';
7
8
  export { kotlinMergeBindings } from './merge-bindings.js';
8
9
  export { populateKotlinOwners } from './owners.js';
9
10
  export { kotlinBindingScopeFor, kotlinImportOwningScope, kotlinReceiverBinding, } from './simple-hooks.js';
@@ -4,6 +4,7 @@ export { getKotlinCaptureCacheStats, resetKotlinCaptureCacheStats } from './cach
4
4
  export { interpretKotlinImport, interpretKotlinTypeBinding } from './interpret.js';
5
5
  export { kotlinArityCompatibility } from './arity.js';
6
6
  export { resolveKotlinImportTarget } from './import-target.js';
7
+ export { buildKotlinPackageIndex, resolveKotlinModule, } from './module-resolution.js';
7
8
  export { kotlinMergeBindings } from './merge-bindings.js';
8
9
  export { populateKotlinOwners } from './owners.js';
9
10
  export { kotlinBindingScopeFor, kotlinImportOwningScope, kotlinReceiverBinding, } from './simple-hooks.js';
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Kotlin import resolution against declared packages and module exports (#2960).
3
+ *
4
+ * Kotlin source layout is conventional, not semantic: a file may declare any
5
+ * package from any directory, and a top-level class, function or property need
6
+ * not match the file name. Resolution therefore uses the package fact captured
7
+ * during parsing plus the file's module-scope bindings. It never guesses from a
8
+ * coincidental path suffix.
9
+ */
10
+ import type { ParsedFile } from '../../../../_shared/index.js';
11
+ import type { JvmPackageFact } from '../jvm/package-facts.js';
12
+ export interface KotlinPackageIndex {
13
+ /** Declared package -> top-level exported name -> files declaring that name. */
14
+ readonly declarationsByPackage: ReadonlyMap<string, ReadonlyMap<string, readonly string[]>>;
15
+ /** Declared package -> every file declaring it, for wildcard imports. */
16
+ readonly filesByPackage: ReadonlyMap<string, readonly string[]>;
17
+ /** Files whose package header could not be interpreted conservatively. */
18
+ readonly unreadablePackageFiles: number;
19
+ }
20
+ export declare function buildKotlinPackageIndex(parsedFiles: readonly ParsedFile[], packageOf: (filePath: string) => JvmPackageFact | undefined): KotlinPackageIndex;
21
+ /** Resolve a Kotlin import to the file(s) its declarations name. */
22
+ export declare function resolveKotlinModule(targetRaw: string, index: KotlinPackageIndex): string | readonly string[] | null;
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Kotlin import resolution against declared packages and module exports (#2960).
3
+ *
4
+ * Kotlin source layout is conventional, not semantic: a file may declare any
5
+ * package from any directory, and a top-level class, function or property need
6
+ * not match the file name. Resolution therefore uses the package fact captured
7
+ * during parsing plus the file's module-scope bindings. It never guesses from a
8
+ * coincidental path suffix.
9
+ */
10
+ const EMPTY_INDEX = {
11
+ declarationsByPackage: new Map(),
12
+ filesByPackage: new Map(),
13
+ unreadablePackageFiles: 0,
14
+ };
15
+ export function buildKotlinPackageIndex(parsedFiles, packageOf) {
16
+ if (parsedFiles.length === 0)
17
+ return EMPTY_INDEX;
18
+ const declarationsByPackage = new Map();
19
+ const filesByPackage = new Map();
20
+ let unreadablePackageFiles = 0;
21
+ for (const parsed of parsedFiles) {
22
+ const fact = packageOf(parsed.filePath);
23
+ if (fact === undefined)
24
+ continue;
25
+ if (fact.status !== 'known') {
26
+ unreadablePackageFiles++;
27
+ continue;
28
+ }
29
+ const packageName = fact.packageName;
30
+ const packageFiles = filesByPackage.get(packageName);
31
+ if (packageFiles === undefined)
32
+ filesByPackage.set(packageName, [parsed.filePath]);
33
+ else
34
+ packageFiles.push(parsed.filePath);
35
+ const moduleScope = parsed.scopes.find((scope) => scope.id === parsed.moduleScope && scope.kind === 'Module') ??
36
+ parsed.scopes.find((scope) => scope.kind === 'Module');
37
+ if (moduleScope === undefined)
38
+ continue;
39
+ let declarations = declarationsByPackage.get(packageName);
40
+ if (declarations === undefined) {
41
+ declarations = new Map();
42
+ declarationsByPackage.set(packageName, declarations);
43
+ }
44
+ for (const [name, refs] of moduleScope.bindings) {
45
+ if (name === '' ||
46
+ !refs.some((ref) => ref.origin === 'local' && ref.def.filePath === parsed.filePath)) {
47
+ continue;
48
+ }
49
+ const files = declarations.get(name);
50
+ if (files === undefined)
51
+ declarations.set(name, [parsed.filePath]);
52
+ else if (!files.includes(parsed.filePath))
53
+ files.push(parsed.filePath);
54
+ }
55
+ }
56
+ return { declarationsByPackage, filesByPackage, unreadablePackageFiles };
57
+ }
58
+ /** Resolve a Kotlin import to the file(s) its declarations name. */
59
+ export function resolveKotlinModule(targetRaw, index) {
60
+ if (targetRaw === '')
61
+ return null;
62
+ if (targetRaw.endsWith('.*')) {
63
+ const stem = targetRaw.slice(0, -2);
64
+ if (stem === '')
65
+ return null;
66
+ const packageFiles = index.filesByPackage.get(stem);
67
+ if (packageFiles !== undefined)
68
+ return packageFiles;
69
+ // Kotlin also permits star imports from a class or object. Resolve the
70
+ // owning top-level declaration, while keeping an undeclared package null.
71
+ return resolveTopLevelDeclaration(stem, index);
72
+ }
73
+ return resolveTopLevelDeclaration(targetRaw, index);
74
+ }
75
+ function resolveTopLevelDeclaration(qualifiedName, index) {
76
+ const parts = qualifiedName.split('.').filter((part) => part !== '');
77
+ if (parts.length === 0)
78
+ return null;
79
+ // A bare name can refer to the special root package. It is still backed by
80
+ // package and binding evidence; no path fallback is involved.
81
+ if (parts.length === 1) {
82
+ const name = parts[0];
83
+ return name === undefined
84
+ ? null
85
+ : declarationFiles(index.declarationsByPackage.get('')?.get(name));
86
+ }
87
+ for (let split = parts.length - 1; split >= 1; split--) {
88
+ const packageName = parts.slice(0, split).join('.');
89
+ const declarations = index.declarationsByPackage.get(packageName);
90
+ if (declarations === undefined)
91
+ continue;
92
+ const declarationName = parts[split];
93
+ if (declarationName === undefined)
94
+ continue;
95
+ const files = declarations.get(declarationName);
96
+ if (files === undefined)
97
+ continue;
98
+ return declarationFiles(files);
99
+ }
100
+ return null;
101
+ }
102
+ function declarationFiles(files) {
103
+ if (files === undefined || files.length === 0)
104
+ return null;
105
+ // Kotlin permits overloaded top-level callables across files. Preserve the
106
+ // complete candidate set instead of choosing one by parse order.
107
+ return files.length === 1 ? (files[0] ?? null) : files;
108
+ }
@@ -0,0 +1,5 @@
1
+ import { type JvmPackageFact, type JvmPackageSyntaxNode } from '../jvm/package-facts.js';
2
+ export declare const clearKotlinPackageFacts: () => void;
3
+ export declare const captureKotlinPackageFact: (filePath: string, root: JvmPackageSyntaxNode) => void;
4
+ export declare const setKotlinPackageFact: (filePath: string, fact: JvmPackageFact) => void;
5
+ export declare const getKotlinPackageFact: (filePath: string) => JvmPackageFact | undefined;
@@ -0,0 +1,9 @@
1
+ import { createJvmPackageFactStore, } from '../jvm/package-facts.js';
2
+ const kotlinPackageFacts = createJvmPackageFactStore({
3
+ packageNodeType: 'package_header',
4
+ packageNameNodeTypes: ['identifier'],
5
+ });
6
+ export const clearKotlinPackageFacts = () => kotlinPackageFacts.clear();
7
+ export const captureKotlinPackageFact = (filePath, root) => kotlinPackageFacts.capture(filePath, root);
8
+ export const setKotlinPackageFact = (filePath, fact) => kotlinPackageFacts.set(filePath, fact);
9
+ export const getKotlinPackageFact = (filePath) => kotlinPackageFacts.get(filePath);
@@ -0,0 +1,4 @@
1
+ export declare const populateKotlinPackageSiblings: (parsedFiles: readonly import('../../../../_shared/index.js').ParsedFile[], indexes: import("../../model/scope-resolution-indexes.js").ScopeResolutionIndexes, ctx: {
2
+ readonly fileContents: ReadonlyMap<string, string>;
3
+ }) => void;
4
+ export declare const isKotlinPackageSiblingVisibilityIncomplete: (filePath: string) => boolean;
@@ -0,0 +1,8 @@
1
+ import { createJvmPackageSiblingVisibility } from '../jvm/package-siblings.js';
2
+ import { getKotlinPackageFact } from './package-facts.js';
3
+ const kotlinPackageSiblingVisibility = createJvmPackageSiblingVisibility({
4
+ languageLabel: 'kotlin',
5
+ getPackageFact: getKotlinPackageFact,
6
+ });
7
+ export const populateKotlinPackageSiblings = kotlinPackageSiblingVisibility.populateNamespaceSiblings;
8
+ export const isKotlinPackageSiblingVisibilityIncomplete = kotlinPackageSiblingVisibility.isVisibilityIncomplete;
@@ -15,6 +15,12 @@ const KOTLIN_SCOPE_QUERY = `
15
15
  (class_declaration) @scope.class
16
16
  (object_declaration) @scope.class
17
17
  (companion_object) @scope.class
18
+ ;; Anonymous object expression: \`val h = object { fun fetch() {} }\`
19
+ ;; (distinct from the named \`object_declaration\`/\`companion_object\` above).
20
+ ;; Without its own scope, a method's auto-hoist (scope-extractor.ts) has
21
+ ;; nowhere to stop and leaks the name past the literal into the enclosing
22
+ ;; scope -- the same failure mode fixed for TS/JS object literals (#2545).
23
+ (object_literal) @scope.class
18
24
  (function_declaration) @scope.function
19
25
 
20
26
  ;; Secondary-constructor body scope (issue #1919 review CF1). A
@@ -74,13 +80,22 @@ const KOTLIN_SCOPE_QUERY = `
74
80
  (lambda_literal) @scope.block
75
81
 
76
82
  ;; Declarations — types
83
+ ;; The Kotlin grammar puts NO named fields on \`class_declaration\`, so the
84
+ ;; parameter list is matched positionally as an optional unnamed child, exactly
85
+ ;; as the name already is.
86
+ ;;
87
+ ;; Only the INLINE bound (\`<T : Repo>\`) is read. A \`where T : Repo\` clause is a
88
+ ;; separate \`type_constraints\` sibling and is left alone, so its bound reads as
89
+ ;; absent — "unknown", not "unbounded".
77
90
  (class_declaration
78
91
  "interface"
79
- (type_identifier) @declaration.name) @declaration.interface
92
+ (type_identifier) @declaration.name
93
+ (type_parameters)? @declaration.type-parameters) @declaration.interface
80
94
 
81
95
  (class_declaration
82
96
  "class"
83
- (type_identifier) @declaration.name) @declaration.class
97
+ (type_identifier) @declaration.name
98
+ (type_parameters)? @declaration.type-parameters) @declaration.class
84
99
 
85
100
  (object_declaration
86
101
  (type_identifier) @declaration.name) @declaration.class
@@ -91,10 +106,40 @@ const KOTLIN_SCOPE_QUERY = `
91
106
  (type_alias
92
107
  (type_identifier) @declaration.name) @declaration.type_alias
93
108
 
109
+ ;; Class annotation syntax is carried to post-resolution enrichment. Keeping
110
+ ;; this in the existing scope query avoids a second AST traversal. Eligibility
111
+ ;; filtering (class vs interface/enum/annotation class) happens in captures.ts.
112
+ (class_declaration
113
+ (modifiers
114
+ [
115
+ (annotation
116
+ (user_type) @class-annotation.name)
117
+ (annotation
118
+ (constructor_invocation
119
+ (user_type) @class-annotation.name))
120
+ ])) @class-annotation.class
121
+
94
122
  ;; Declarations — functions / methods / properties
123
+ ;;
124
+ ;; A generic FUNCTION's parameters are read for the same reason a generic type's
125
+ ;; are (#2912 review): \`fun <T> runAny(v: Validator<T>)\` writes a receiver whose
126
+ ;; argument is a type VARIABLE, and a pass that cannot tell that from a concrete
127
+ ;; type prunes every implementor from the call's dispatch fan-out.
95
128
  (function_declaration
129
+ (type_parameters)? @declaration.type-parameters
96
130
  (simple_identifier) @declaration.name) @declaration.function
97
131
 
132
+ ;; Lambda bound to a val/var: val handler = { x: Int -> target(x) }
133
+ ;; Anchor discipline (same contract as javascript/query.ts): @declaration.function
134
+ ;; sits on the INNER lambda_literal, NOT on the property_declaration wrapper, so
135
+ ;; anchor.range aligns with the (lambda_literal) @scope.block range. That
136
+ ;; alignment is what lets pickCallerCallableDef accept a Block-kind scope as a
137
+ ;; callable boundary: the scope IS the callable's body. The lambda stays
138
+ ;; @scope.block deliberately (#1757 smart casts) — do NOT re-kind it.
139
+ (property_declaration
140
+ (variable_declaration (simple_identifier) @declaration.name)
141
+ (lambda_literal) @declaration.function)
142
+
98
143
  (property_declaration
99
144
  (variable_declaration
100
145
  (simple_identifier) @declaration.name)) @declaration.property
@@ -2,11 +2,19 @@ import { SupportedLanguages } from '../../../../_shared/index.js';
2
2
  import { buildMro, defaultLinearize } from '../../scope-resolution/passes/mro.js';
3
3
  import { resolveDefGraphId } from '../../scope-resolution/graph-bridge/ids.js';
4
4
  import { isClassLike } from '../../scope-resolution/scope/walkers.js';
5
+ import { indexOnlyElementType } from '../../type-extractors/shared.js';
5
6
  import { kotlinProvider } from '../kotlin.js';
6
7
  import { kotlinArityCompatibility, kotlinMergeBindings, populateKotlinOwners, resolveKotlinImportTarget, } from './index.js';
7
8
  import { clearCompanionScopes } from './companion-scopes.js';
8
- import { applyKotlinCaptureSideChannel } from './capture-side-channel.js';
9
+ import { applyKotlinCaptureSideChannel, clearKotlinClassAnnotationFacts, } from './capture-side-channel.js';
9
10
  import { isKotlinStaticOnly } from './owners.js';
11
+ import { populateKotlinPackageSiblings } from './package-siblings.js';
12
+ import { attachKotlinSpringBeanCandidateMetadata } from './spring-bean-metadata.js';
13
+ import { attachKotlinSpringAopMetadata } from './spring-aop.js';
14
+ import { clearKotlinPackageFacts } from './package-facts.js';
15
+ import { attachKotlinSpringDiMetadata } from './spring-di.js';
16
+ import { attachKotlinSpringConditionalMetadata } from './spring-conditionals.js';
17
+ import { attachKotlinSpringNonHttpHandlerMetadata } from './spring-non-http-handlers.js';
10
18
  /**
11
19
  * Kotlin scope resolver for RFC #909 Ring 3.
12
20
  *
@@ -57,10 +65,16 @@ export const kotlinScopeResolver = {
57
65
  // `undefined` because Kotlin has no external resolution config
58
66
  // to load.
59
67
  clearCompanionScopes();
68
+ clearKotlinClassAnnotationFacts();
69
+ clearKotlinPackageFacts();
60
70
  return undefined;
61
71
  },
62
- resolveImportTarget: (targetRaw, fromFile, allFilePaths) => {
63
- const ws = { fromFile, allFilePaths };
72
+ resolveImportTarget: (targetRaw, fromFile, allFilePaths, _resolutionConfig, context) => {
73
+ const ws = {
74
+ fromFile,
75
+ allFilePaths,
76
+ parsedFiles: context?.parsedFiles,
77
+ };
64
78
  return resolveKotlinImportTarget({ kind: 'named', localName: '_', importedName: '_', targetRaw }, ws);
65
79
  },
66
80
  mergeBindings: (existing, incoming) => [...kotlinMergeBindings([...existing, ...incoming])],
@@ -84,11 +98,30 @@ export const kotlinScopeResolver = {
84
98
  applyCaptureSideChannel: applyKotlinCaptureSideChannel,
85
99
  populateOwners: (parsed) => populateKotlinOwners(parsed),
86
100
  isSuperReceiver: (text) => text.trim() === 'super',
101
+ // Subscript route only — Kotlin's collection views (`.values`, `.keys`) are
102
+ // properties on the stdlib types, resolved by the ordinary member walk rather
103
+ // than by unwrapping a generic here.
104
+ //
105
+ // Fed the annotation AS WRITTEN (`List<User>`, `Map<String, User>`), which
106
+ // `normalizeKotlinType` had already reduced to `User`. `undefined` means "not
107
+ // a container", so an `operator fun get` class does not fold `cache[k]` onto
108
+ // `Cache` itself.
109
+ elementTypeOf: indexOnlyElementType,
87
110
  isStaticOnly: isKotlinStaticOnly,
88
111
  fieldFallbackOnMethodLookup: false,
89
112
  propagatesReturnTypesAcrossImports: true,
90
113
  collapseMemberCallsByCallerTarget: false,
91
114
  hoistTypeBindingsToModule: true,
115
+ freeCallsRequireInstanceOwnership: true,
116
+ postExtractSourceTextPolicy: 'uncached-files',
117
+ populateNamespaceSiblings: populateKotlinPackageSiblings,
118
+ emitPostResolutionEdges: (graph, parsedFiles, nodeLookup, indexes) => {
119
+ attachKotlinSpringBeanCandidateMetadata(graph, parsedFiles, nodeLookup, indexes);
120
+ attachKotlinSpringAopMetadata(graph, parsedFiles, nodeLookup, indexes);
121
+ attachKotlinSpringConditionalMetadata(graph, parsedFiles, nodeLookup, indexes);
122
+ attachKotlinSpringDiMetadata(graph, parsedFiles, nodeLookup, indexes);
123
+ attachKotlinSpringNonHttpHandlerMetadata(graph, parsedFiles, nodeLookup, indexes);
124
+ },
92
125
  };
93
126
  /**
94
127
  * Kotlin MRO builder — extends `defaultLinearize` (EXTENDS-only) with
@@ -0,0 +1,12 @@
1
+ import { type SpringAopOwnerFact } from '../../frameworks/spring/aop.js';
2
+ import { type SyntaxNode } from '../../utils/ast-helpers.js';
3
+ import { type KotlinAnnotationSyntaxFact } from './spring-di.js';
4
+ export type KotlinSpringAopAnnotationFact = KotlinAnnotationSyntaxFact;
5
+ export type KotlinSpringAopFact = SpringAopOwnerFact<KotlinSpringAopAnnotationFact>;
6
+ /**
7
+ * Capture Spring AOP syntax from the class node already surfaced by Kotlin's
8
+ * scope query. The shared layer resolves annotations and rejects non-default
9
+ * use-site targets after imports and package visibility have finalized.
10
+ */
11
+ export declare function captureKotlinSpringAopFacts(classNode: SyntaxNode, filePath: string): KotlinSpringAopFact[];
12
+ export declare const attachKotlinSpringAopMetadata: (graph: import("../../../graph/types.js").KnowledgeGraph, parsedFiles: readonly import('../../../../_shared/index.js').ParsedFile[], nodeLookup: import("../../scope-resolution/graph-bridge/node-lookup.js").GraphNodeLookup, indexes: import("../../model/scope-resolution-indexes.js").ScopeResolutionIndexes) => void;
@@ -0,0 +1,64 @@
1
+ import { makeScopeId } from '../../../../_shared/index.js';
2
+ import { createSpringAopMetadataAttacher, } from '../../frameworks/spring/aop.js';
3
+ import { nodeToCapture } from '../../utils/ast-helpers.js';
4
+ import { getKotlinSpringAopFacts } from './capture-side-channel.js';
5
+ import { isKotlinPackageSiblingVisibilityIncomplete } from './package-siblings.js';
6
+ import { kotlinSpringAnnotationFacts } from './spring-di.js';
7
+ function scopeId(filePath, node, kind) {
8
+ return makeScopeId({
9
+ filePath,
10
+ range: nodeToCapture('@spring-aop.owner', node).range,
11
+ kind,
12
+ });
13
+ }
14
+ function ownerRange(node) {
15
+ return nodeToCapture('@spring-aop.owner', node).range;
16
+ }
17
+ /**
18
+ * Capture Spring AOP syntax from the class node already surfaced by Kotlin's
19
+ * scope query. The shared layer resolves annotations and rejects non-default
20
+ * use-site targets after imports and package visibility have finalized.
21
+ */
22
+ export function captureKotlinSpringAopFacts(classNode, filePath) {
23
+ const facts = [];
24
+ const classAnnotations = kotlinSpringAnnotationFacts(classNode);
25
+ const singletonInstance = classNode.type === 'object_declaration' || classNode.type === 'companion_object';
26
+ // Kotlin import aliases can give a Spring annotation any local simple name.
27
+ // Capture annotated owners conservatively, then let the post-import shared
28
+ // resolver keep only recognized Spring AOP annotations. Objects also retain
29
+ // an empty owner fact so the shared phase can distinguish their singleton
30
+ // instance members from true static methods without naming Kotlin.
31
+ if (classAnnotations.length > 0 || singletonInstance) {
32
+ facts.push({
33
+ ownerScopeId: scopeId(filePath, classNode, 'Class'),
34
+ ownerKind: 'class',
35
+ ownerFilePath: filePath,
36
+ ownerRange: ownerRange(classNode),
37
+ ...(singletonInstance ? { singletonInstance: true } : {}),
38
+ annotations: classAnnotations,
39
+ });
40
+ }
41
+ const body = classNode.namedChildren.find((child) => child.type === 'class_body');
42
+ if (body === undefined)
43
+ return facts;
44
+ for (const member of body.namedChildren) {
45
+ if (member.type !== 'function_declaration')
46
+ continue;
47
+ const annotations = kotlinSpringAnnotationFacts(member);
48
+ if (annotations.length === 0)
49
+ continue;
50
+ facts.push({
51
+ ownerScopeId: scopeId(filePath, member, 'Function'),
52
+ ownerKind: 'callable',
53
+ ownerFilePath: filePath,
54
+ ownerRange: ownerRange(member),
55
+ ...(singletonInstance ? { singletonInstance: true } : {}),
56
+ annotations,
57
+ });
58
+ }
59
+ return facts;
60
+ }
61
+ export const attachKotlinSpringAopMetadata = createSpringAopMetadataAttacher({
62
+ getFacts: getKotlinSpringAopFacts,
63
+ isPackageVisibilityIncomplete: isKotlinPackageSiblingVisibilityIncomplete,
64
+ });
@@ -0,0 +1,2 @@
1
+ /** Kotlin wiring for the language-neutral Spring candidate engine. */
2
+ export declare const attachKotlinSpringBeanCandidateMetadata: (graph: import("../../../graph/types.js").KnowledgeGraph, parsedFiles: readonly import('../../../../_shared/index.js').ParsedFile[], nodeLookup: import("../../scope-resolution/graph-bridge/node-lookup.js").GraphNodeLookup, indexes: import("../../model/scope-resolution-indexes.js").ScopeResolutionIndexes) => void;
@@ -0,0 +1,8 @@
1
+ import { createSpringBeanCandidateAttacher } from '../../frameworks/spring/bean-candidates.js';
2
+ import { getKotlinClassAnnotationFacts } from './capture-side-channel.js';
3
+ import { isKotlinPackageSiblingVisibilityIncomplete } from './package-siblings.js';
4
+ /** Kotlin wiring for the language-neutral Spring candidate engine. */
5
+ export const attachKotlinSpringBeanCandidateMetadata = createSpringBeanCandidateAttacher({
6
+ getClassAnnotationFacts: getKotlinClassAnnotationFacts,
7
+ isPackageVisibilityIncomplete: isKotlinPackageSiblingVisibilityIncomplete,
8
+ });
@@ -0,0 +1,12 @@
1
+ import { type SpringConditionalOwnerFact } from '../../frameworks/spring/conditionals.js';
2
+ import { type SyntaxNode } from '../../utils/ast-helpers.js';
3
+ import { type KotlinAnnotationSyntaxFact } from './spring-di.js';
4
+ export type KotlinSpringConditionalAnnotationFact = KotlinAnnotationSyntaxFact;
5
+ export type KotlinSpringConditionalFact = SpringConditionalOwnerFact<KotlinSpringConditionalAnnotationFact>;
6
+ /**
7
+ * Capture Kotlin condition syntax from the class node already surfaced by the
8
+ * scope query. Kotlin syntax stays local; shared Spring semantics are attached
9
+ * after resolution.
10
+ */
11
+ export declare function captureKotlinSpringConditionalFacts(classNode: SyntaxNode, filePath: string): KotlinSpringConditionalFact[];
12
+ export declare const attachKotlinSpringConditionalMetadata: (graph: import("../../../graph/types.js").KnowledgeGraph, parsedFiles: readonly import('../../../../_shared/index.js').ParsedFile[], nodeLookup: import("../../scope-resolution/graph-bridge/node-lookup.js").GraphNodeLookup, indexes: import("../../model/scope-resolution-indexes.js").ScopeResolutionIndexes) => void;
@@ -0,0 +1,49 @@
1
+ import { makeScopeId } from '../../../../_shared/index.js';
2
+ import { createSpringConditionalMetadataAttacher, hasSpringConditionalRelevantAnnotation, } from '../../frameworks/spring/conditionals.js';
3
+ import { nodeToCapture } from '../../utils/ast-helpers.js';
4
+ import { getKotlinSpringConditionalFacts } from './capture-side-channel.js';
5
+ import { isKotlinPackageSiblingVisibilityIncomplete } from './package-siblings.js';
6
+ import { kotlinSpringAnnotationFacts } from './spring-di.js';
7
+ function scopeId(filePath, node, kind) {
8
+ return makeScopeId({
9
+ filePath,
10
+ range: nodeToCapture('@spring-condition.owner', node).range,
11
+ kind,
12
+ });
13
+ }
14
+ /**
15
+ * Capture Kotlin condition syntax from the class node already surfaced by the
16
+ * scope query. Kotlin syntax stays local; shared Spring semantics are attached
17
+ * after resolution.
18
+ */
19
+ export function captureKotlinSpringConditionalFacts(classNode, filePath) {
20
+ const facts = [];
21
+ const classAnnotations = kotlinSpringAnnotationFacts(classNode);
22
+ if (hasSpringConditionalRelevantAnnotation(classAnnotations)) {
23
+ facts.push({
24
+ ownerScopeId: scopeId(filePath, classNode, 'Class'),
25
+ ownerKind: 'class',
26
+ annotations: classAnnotations,
27
+ });
28
+ }
29
+ const body = classNode.namedChildren.find((child) => child.type === 'class_body');
30
+ if (body === undefined)
31
+ return facts;
32
+ for (const member of body.namedChildren) {
33
+ if (member.type !== 'function_declaration')
34
+ continue;
35
+ const annotations = kotlinSpringAnnotationFacts(member);
36
+ if (!hasSpringConditionalRelevantAnnotation(annotations))
37
+ continue;
38
+ facts.push({
39
+ ownerScopeId: scopeId(filePath, member, 'Function'),
40
+ ownerKind: 'callable',
41
+ annotations,
42
+ });
43
+ }
44
+ return facts;
45
+ }
46
+ export const attachKotlinSpringConditionalMetadata = createSpringConditionalMetadataAttacher({
47
+ getFacts: getKotlinSpringConditionalFacts,
48
+ isPackageVisibilityIncomplete: isKotlinPackageSiblingVisibilityIncomplete,
49
+ });