cgraphx 2.0.1 → 2.0.3

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 (701) hide show
  1. package/dist/.claude-template/FLOW-MAP.md +7 -5
  2. package/dist/.claude-template/commands/end.md +1 -1
  3. package/dist/.claude-template/skills/cgraphx-guide/SKILL.md +2 -1
  4. package/dist/.claude-template/skills/cgraphx-guide/how-to-use.html +4 -2
  5. package/dist/.claude-template/skills/cgraphx-guide/how-to-use.md +5 -2
  6. package/dist/.claude-template/skills/iboc-check/SKILL.md +116 -0
  7. package/dist/.claude-template/skills/iboc-check/filler-prompt.md +75 -0
  8. package/dist/.claude-template/skills/implementation/SKILL.md +7 -0
  9. package/dist/.claude-template/skills/init-project-guides/SKILL.md +1 -1
  10. package/dist/.claude-template/skills/run-api-test/references/db-verification.md +2 -2
  11. package/dist/.claude-template/skills/subagent-implement/SKILL.md +3 -2
  12. package/dist/.claude-template/skills/write-api/assets/template-request.bru +3 -3
  13. package/dist/.claude-template/skills/write-api/references/bru-format.md +6 -6
  14. package/dist/.claude-template/skills/write-delivery-guide/SKILL.md +97 -0
  15. package/dist/.claude-template/skills/write-delivery-guide/template-change-type.md +120 -0
  16. package/dist/.claude-template/skills/write-delivery-guide/template-multi-role-flow.md +148 -0
  17. package/dist/.claude-template/skills/write-unit-test-code/SKILL.md +23 -6
  18. package/dist/core/code/engine/cli/analyze-config.js +320 -0
  19. package/dist/core/code/engine/cli/analyze.js +1086 -0
  20. package/dist/core/code/engine/cli/cli-message.js +83 -0
  21. package/dist/core/code/engine/cli/detect-changes-format.js +58 -0
  22. package/dist/core/code/engine/cli/embedding-dims.js +43 -0
  23. package/dist/core/code/engine/cli/format-elapsed.js +12 -0
  24. package/dist/core/code/engine/cli/help-i18n.js +144 -0
  25. package/dist/core/code/engine/cli/i18n/en.js +110 -0
  26. package/dist/core/code/engine/cli/i18n/index.js +47 -0
  27. package/dist/core/code/engine/cli/i18n/resources.js +9 -0
  28. package/dist/core/code/engine/cli/i18n/zh-CN.js +110 -0
  29. package/dist/core/code/engine/cli/lazy-action.js +67 -0
  30. package/dist/core/code/engine/cli/optional-grammars.js +136 -0
  31. package/dist/core/code/engine/cli/resolve-invocation.js +76 -0
  32. package/dist/core/code/engine/cli/status.js +156 -0
  33. package/dist/core/code/engine/cli/tool.js +384 -0
  34. package/dist/core/code/engine/config/ignore-service.js +511 -0
  35. package/dist/core/code/engine/config/supported-languages.js +17 -0
  36. package/dist/core/code/engine/core/analysis-features.js +64 -0
  37. package/dist/core/code/engine/core/analyzer-identity.js +2171 -0
  38. package/dist/core/code/engine/core/git-staleness.js +180 -0
  39. package/dist/core/code/engine/core/graph/graph.js +180 -0
  40. package/dist/core/code/engine/core/graph/import-cycles.js +106 -0
  41. package/dist/core/code/engine/core/graph/types.js +2 -0
  42. package/dist/core/code/engine/core/index-freshness.js +12 -0
  43. package/dist/core/code/engine/core/ingestion/binding-accumulator.js +341 -0
  44. package/dist/core/code/engine/core/ingestion/call-extractors/configs/c-cpp.js +168 -0
  45. package/dist/core/code/engine/core/ingestion/call-extractors/configs/csharp.js +9 -0
  46. package/dist/core/code/engine/core/ingestion/call-extractors/configs/dart.js +8 -0
  47. package/dist/core/code/engine/core/ingestion/call-extractors/configs/go.js +8 -0
  48. package/dist/core/code/engine/core/ingestion/call-extractors/configs/jvm.js +54 -0
  49. package/dist/core/code/engine/core/ingestion/call-extractors/configs/php.js +8 -0
  50. package/dist/core/code/engine/core/ingestion/call-extractors/configs/python.js +8 -0
  51. package/dist/core/code/engine/core/ingestion/call-extractors/configs/ruby.js +8 -0
  52. package/dist/core/code/engine/core/ingestion/call-extractors/configs/rust.js +8 -0
  53. package/dist/core/code/engine/core/ingestion/call-extractors/configs/swift.js +8 -0
  54. package/dist/core/code/engine/core/ingestion/call-extractors/configs/typescript-javascript.js +11 -0
  55. package/dist/core/code/engine/core/ingestion/call-extractors/generic.js +62 -0
  56. package/dist/core/code/engine/core/ingestion/call-processor.js +503 -0
  57. package/dist/core/code/engine/core/ingestion/call-routing.js +98 -0
  58. package/dist/core/code/engine/core/ingestion/call-types.js +3 -0
  59. package/dist/core/code/engine/core/ingestion/cfg/callee-cell-format.js +45 -0
  60. package/dist/core/code/engine/core/ingestion/cfg/cfg-builder.js +202 -0
  61. package/dist/core/code/engine/core/ingestion/cfg/collect.js +81 -0
  62. package/dist/core/code/engine/core/ingestion/cfg/control-dependence.js +185 -0
  63. package/dist/core/code/engine/core/ingestion/cfg/control-flow-context.js +130 -0
  64. package/dist/core/code/engine/core/ingestion/cfg/emit.js +646 -0
  65. package/dist/core/code/engine/core/ingestion/cfg/post-dominators.js +182 -0
  66. package/dist/core/code/engine/core/ingestion/cfg/reaching-def-reason-codec.js +139 -0
  67. package/dist/core/code/engine/core/ingestion/cfg/reaching-defs-graph.js +322 -0
  68. package/dist/core/code/engine/core/ingestion/cfg/reaching-defs.js +792 -0
  69. package/dist/core/code/engine/core/ingestion/cfg/synthetic-escape.js +305 -0
  70. package/dist/core/code/engine/core/ingestion/cfg/traversal-result.js +6 -0
  71. package/dist/core/code/engine/core/ingestion/cfg/types.js +14 -0
  72. package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp-harvest.js +545 -0
  73. package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp.js +590 -0
  74. package/dist/core/code/engine/core/ingestion/cfg/visitors/call-site-harvest.js +356 -0
  75. package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp-harvest.js +593 -0
  76. package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp.js +871 -0
  77. package/dist/core/code/engine/core/ingestion/cfg/visitors/dart-harvest.js +874 -0
  78. package/dist/core/code/engine/core/ingestion/cfg/visitors/dart.js +840 -0
  79. package/dist/core/code/engine/core/ingestion/cfg/visitors/go-harvest.js +625 -0
  80. package/dist/core/code/engine/core/ingestion/cfg/visitors/go.js +642 -0
  81. package/dist/core/code/engine/core/ingestion/cfg/visitors/java-harvest.js +517 -0
  82. package/dist/core/code/engine/core/ingestion/cfg/visitors/java.js +816 -0
  83. package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin-harvest.js +723 -0
  84. package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin.js +813 -0
  85. package/dist/core/code/engine/core/ingestion/cfg/visitors/php-harvest.js +630 -0
  86. package/dist/core/code/engine/core/ingestion/cfg/visitors/php.js +725 -0
  87. package/dist/core/code/engine/core/ingestion/cfg/visitors/python-harvest.js +776 -0
  88. package/dist/core/code/engine/core/ingestion/cfg/visitors/python.js +562 -0
  89. package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby-harvest.js +591 -0
  90. package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby.js +760 -0
  91. package/dist/core/code/engine/core/ingestion/cfg/visitors/rust-harvest.js +877 -0
  92. package/dist/core/code/engine/core/ingestion/cfg/visitors/rust.js +562 -0
  93. package/dist/core/code/engine/core/ingestion/cfg/visitors/scope-tree-harvest.js +120 -0
  94. package/dist/core/code/engine/core/ingestion/cfg/visitors/swift-harvest.js +683 -0
  95. package/dist/core/code/engine/core/ingestion/cfg/visitors/swift.js +791 -0
  96. package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript-harvest.js +1060 -0
  97. package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript.js +587 -0
  98. package/dist/core/code/engine/core/ingestion/class-extractors/configs/c-cpp.js +77 -0
  99. package/dist/core/code/engine/core/ingestion/class-extractors/configs/csharp.js +24 -0
  100. package/dist/core/code/engine/core/ingestion/class-extractors/configs/dart.js +10 -0
  101. package/dist/core/code/engine/core/ingestion/class-extractors/configs/go.js +28 -0
  102. package/dist/core/code/engine/core/ingestion/class-extractors/configs/jvm.js +67 -0
  103. package/dist/core/code/engine/core/ingestion/class-extractors/configs/php.js +10 -0
  104. package/dist/core/code/engine/core/ingestion/class-extractors/configs/python.js +10 -0
  105. package/dist/core/code/engine/core/ingestion/class-extractors/configs/ruby.js +13 -0
  106. package/dist/core/code/engine/core/ingestion/class-extractors/configs/rust.js +10 -0
  107. package/dist/core/code/engine/core/ingestion/class-extractors/configs/swift.js +21 -0
  108. package/dist/core/code/engine/core/ingestion/class-extractors/configs/typescript-javascript.js +31 -0
  109. package/dist/core/code/engine/core/ingestion/class-extractors/generic.js +144 -0
  110. package/dist/core/code/engine/core/ingestion/class-types.js +2 -0
  111. package/dist/core/code/engine/core/ingestion/cluster-enricher.js +174 -0
  112. package/dist/core/code/engine/core/ingestion/community-processor.js +604 -0
  113. package/dist/core/code/engine/core/ingestion/constants.js +26 -0
  114. package/dist/core/code/engine/core/ingestion/cpp-ue-preprocessor.js +263 -0
  115. package/dist/core/code/engine/core/ingestion/csharp-namespace-gate.js +133 -0
  116. package/dist/core/code/engine/core/ingestion/di-extractors/index.js +38 -0
  117. package/dist/core/code/engine/core/ingestion/di-extractors/spring.js +310 -0
  118. package/dist/core/code/engine/core/ingestion/emit-references.js +244 -0
  119. package/dist/core/code/engine/core/ingestion/entry-point-scoring.js +201 -0
  120. package/dist/core/code/engine/core/ingestion/export-detection.js +244 -0
  121. package/dist/core/code/engine/core/ingestion/field-extractor.js +29 -0
  122. package/dist/core/code/engine/core/ingestion/field-extractors/configs/c-cpp.js +107 -0
  123. package/dist/core/code/engine/core/ingestion/field-extractors/configs/csharp.js +124 -0
  124. package/dist/core/code/engine/core/ingestion/field-extractors/configs/dart.js +99 -0
  125. package/dist/core/code/engine/core/ingestion/field-extractors/configs/go.js +102 -0
  126. package/dist/core/code/engine/core/ingestion/field-extractors/configs/helpers.js +198 -0
  127. package/dist/core/code/engine/core/ingestion/field-extractors/configs/jvm.js +172 -0
  128. package/dist/core/code/engine/core/ingestion/field-extractors/configs/php.js +67 -0
  129. package/dist/core/code/engine/core/ingestion/field-extractors/configs/python.js +94 -0
  130. package/dist/core/code/engine/core/ingestion/field-extractors/configs/ruby.js +79 -0
  131. package/dist/core/code/engine/core/ingestion/field-extractors/configs/rust.js +55 -0
  132. package/dist/core/code/engine/core/ingestion/field-extractors/configs/swift.js +93 -0
  133. package/dist/core/code/engine/core/ingestion/field-extractors/configs/typescript-javascript.js +59 -0
  134. package/dist/core/code/engine/core/ingestion/field-extractors/generic.js +147 -0
  135. package/dist/core/code/engine/core/ingestion/field-extractors/typescript.js +266 -0
  136. package/dist/core/code/engine/core/ingestion/field-types.js +3 -0
  137. package/dist/core/code/engine/core/ingestion/filesystem-walker.js +136 -0
  138. package/dist/core/code/engine/core/ingestion/finalize-orchestrator.js +159 -0
  139. package/dist/core/code/engine/core/ingestion/framework-detection.js +432 -0
  140. package/dist/core/code/engine/core/ingestion/frameworks/spring/analysis-features.js +38 -0
  141. package/dist/core/code/engine/core/ingestion/frameworks/spring/annotation-arguments.js +234 -0
  142. package/dist/core/code/engine/core/ingestion/frameworks/spring/aop-candidates.js +88 -0
  143. package/dist/core/code/engine/core/ingestion/frameworks/spring/aop.js +487 -0
  144. package/dist/core/code/engine/core/ingestion/frameworks/spring/auto-configuration.js +21 -0
  145. package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-candidates.js +189 -0
  146. package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-catalog.js +32 -0
  147. package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-factories.js +73 -0
  148. package/dist/core/code/engine/core/ingestion/frameworks/spring/conditionals.js +323 -0
  149. package/dist/core/code/engine/core/ingestion/frameworks/spring/config-bindings.js +119 -0
  150. package/dist/core/code/engine/core/ingestion/frameworks/spring/di-metadata.js +385 -0
  151. package/dist/core/code/engine/core/ingestion/frameworks/spring/resource-injection.js +96 -0
  152. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/c-cpp.js +17 -0
  153. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/csharp.js +46 -0
  154. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/dart.js +59 -0
  155. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/go.js +30 -0
  156. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/jvm.js +73 -0
  157. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/php.js +19 -0
  158. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/python.js +45 -0
  159. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/ruby.js +20 -0
  160. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/rust.js +58 -0
  161. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/swift.js +94 -0
  162. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/typescript-javascript.js +26 -0
  163. package/dist/core/code/engine/core/ingestion/import-resolvers/csharp.js +128 -0
  164. package/dist/core/code/engine/core/ingestion/import-resolvers/go.js +50 -0
  165. package/dist/core/code/engine/core/ingestion/import-resolvers/jvm.js +112 -0
  166. package/dist/core/code/engine/core/ingestion/import-resolvers/php.js +80 -0
  167. package/dist/core/code/engine/core/ingestion/import-resolvers/python.js +75 -0
  168. package/dist/core/code/engine/core/ingestion/import-resolvers/resolver-factory.js +36 -0
  169. package/dist/core/code/engine/core/ingestion/import-resolvers/ruby.js +20 -0
  170. package/dist/core/code/engine/core/ingestion/import-resolvers/rust.js +79 -0
  171. package/dist/core/code/engine/core/ingestion/import-resolvers/standard.js +180 -0
  172. package/dist/core/code/engine/core/ingestion/import-resolvers/types.js +7 -0
  173. package/dist/core/code/engine/core/ingestion/import-resolvers/utils.js +153 -0
  174. package/dist/core/code/engine/core/ingestion/import-target-adapter.js +99 -0
  175. package/dist/core/code/engine/core/ingestion/language-config.js +391 -0
  176. package/dist/core/code/engine/core/ingestion/language-provider.js +25 -0
  177. package/dist/core/code/engine/core/ingestion/languages/c/arity-metadata.js +98 -0
  178. package/dist/core/code/engine/core/ingestion/languages/c/arity.js +21 -0
  179. package/dist/core/code/engine/core/ingestion/languages/c/capture-side-channel.js +69 -0
  180. package/dist/core/code/engine/core/ingestion/languages/c/captures.js +189 -0
  181. package/dist/core/code/engine/core/ingestion/languages/c/header-scan.js +58 -0
  182. package/dist/core/code/engine/core/ingestion/languages/c/import-decomposer.js +68 -0
  183. package/dist/core/code/engine/core/ingestion/languages/c/import-target.js +103 -0
  184. package/dist/core/code/engine/core/ingestion/languages/c/index.js +33 -0
  185. package/dist/core/code/engine/core/ingestion/languages/c/interpret.js +53 -0
  186. package/dist/core/code/engine/core/ingestion/languages/c/merge-bindings.js +26 -0
  187. package/dist/core/code/engine/core/ingestion/languages/c/query.js +210 -0
  188. package/dist/core/code/engine/core/ingestion/languages/c/scope-resolver.js +112 -0
  189. package/dist/core/code/engine/core/ingestion/languages/c/simple-hooks.js +24 -0
  190. package/dist/core/code/engine/core/ingestion/languages/c/static-linkage.js +109 -0
  191. package/dist/core/code/engine/core/ingestion/languages/c-cpp.js +506 -0
  192. package/dist/core/code/engine/core/ingestion/languages/cpp/adl.js +804 -0
  193. package/dist/core/code/engine/core/ingestion/languages/cpp/arity-metadata.js +258 -0
  194. package/dist/core/code/engine/core/ingestion/languages/cpp/arity.js +37 -0
  195. package/dist/core/code/engine/core/ingestion/languages/cpp/capture-side-channel.js +89 -0
  196. package/dist/core/code/engine/core/ingestion/languages/cpp/captures.js +1975 -0
  197. package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-extractor.js +311 -0
  198. package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-filter.js +210 -0
  199. package/dist/core/code/engine/core/ingestion/languages/cpp/conversion-rank.js +163 -0
  200. package/dist/core/code/engine/core/ingestion/languages/cpp/file-local-linkage.js +327 -0
  201. package/dist/core/code/engine/core/ingestion/languages/cpp/header-scan.js +53 -0
  202. package/dist/core/code/engine/core/ingestion/languages/cpp/import-decomposer.js +134 -0
  203. package/dist/core/code/engine/core/ingestion/languages/cpp/import-target.js +16 -0
  204. package/dist/core/code/engine/core/ingestion/languages/cpp/index.js +33 -0
  205. package/dist/core/code/engine/core/ingestion/languages/cpp/inline-namespaces.js +379 -0
  206. package/dist/core/code/engine/core/ingestion/languages/cpp/interpret.js +239 -0
  207. package/dist/core/code/engine/core/ingestion/languages/cpp/member-lookup.js +470 -0
  208. package/dist/core/code/engine/core/ingestion/languages/cpp/merge-bindings.js +32 -0
  209. package/dist/core/code/engine/core/ingestion/languages/cpp/query.js +763 -0
  210. package/dist/core/code/engine/core/ingestion/languages/cpp/range-bindings.js +230 -0
  211. package/dist/core/code/engine/core/ingestion/languages/cpp/scope-resolver.js +354 -0
  212. package/dist/core/code/engine/core/ingestion/languages/cpp/simple-hooks.js +67 -0
  213. package/dist/core/code/engine/core/ingestion/languages/cpp/two-phase-lookup.js +348 -0
  214. package/dist/core/code/engine/core/ingestion/languages/cpp/type-classifier.js +56 -0
  215. package/dist/core/code/engine/core/ingestion/languages/cpp/user-defined-conversions.js +128 -0
  216. package/dist/core/code/engine/core/ingestion/languages/csharp/accessor-unwrap.js +67 -0
  217. package/dist/core/code/engine/core/ingestion/languages/csharp/arity-metadata.js +49 -0
  218. package/dist/core/code/engine/core/ingestion/languages/csharp/arity.js +40 -0
  219. package/dist/core/code/engine/core/ingestion/languages/csharp/cache-stats.js +32 -0
  220. package/dist/core/code/engine/core/ingestion/languages/csharp/captures.js +557 -0
  221. package/dist/core/code/engine/core/ingestion/languages/csharp/import-decomposer.js +96 -0
  222. package/dist/core/code/engine/core/ingestion/languages/csharp/import-target.js +176 -0
  223. package/dist/core/code/engine/core/ingestion/languages/csharp/index.js +95 -0
  224. package/dist/core/code/engine/core/ingestion/languages/csharp/interpret.js +150 -0
  225. package/dist/core/code/engine/core/ingestion/languages/csharp/merge-bindings.js +58 -0
  226. package/dist/core/code/engine/core/ingestion/languages/csharp/namespace-siblings.js +708 -0
  227. package/dist/core/code/engine/core/ingestion/languages/csharp/qualified-type-names.js +62 -0
  228. package/dist/core/code/engine/core/ingestion/languages/csharp/query.js +578 -0
  229. package/dist/core/code/engine/core/ingestion/languages/csharp/receiver-binding.js +142 -0
  230. package/dist/core/code/engine/core/ingestion/languages/csharp/resolution-config.js +18 -0
  231. package/dist/core/code/engine/core/ingestion/languages/csharp/scope-resolver.js +84 -0
  232. package/dist/core/code/engine/core/ingestion/languages/csharp/simple-hooks.js +81 -0
  233. package/dist/core/code/engine/core/ingestion/languages/csharp.js +204 -0
  234. package/dist/core/code/engine/core/ingestion/languages/dart/arity-metadata.js +38 -0
  235. package/dist/core/code/engine/core/ingestion/languages/dart/arity.js +34 -0
  236. package/dist/core/code/engine/core/ingestion/languages/dart/built-ins.js +37 -0
  237. package/dist/core/code/engine/core/ingestion/languages/dart/cache-stats.js +30 -0
  238. package/dist/core/code/engine/core/ingestion/languages/dart/captures.js +1096 -0
  239. package/dist/core/code/engine/core/ingestion/languages/dart/expand-wildcards.js +34 -0
  240. package/dist/core/code/engine/core/ingestion/languages/dart/extension-type-preprocess.js +33 -0
  241. package/dist/core/code/engine/core/ingestion/languages/dart/import-target.js +68 -0
  242. package/dist/core/code/engine/core/ingestion/languages/dart/index.js +45 -0
  243. package/dist/core/code/engine/core/ingestion/languages/dart/interpret.js +101 -0
  244. package/dist/core/code/engine/core/ingestion/languages/dart/merge-bindings.js +42 -0
  245. package/dist/core/code/engine/core/ingestion/languages/dart/query.js +246 -0
  246. package/dist/core/code/engine/core/ingestion/languages/dart/receiver-binding.js +90 -0
  247. package/dist/core/code/engine/core/ingestion/languages/dart/scope-resolver.js +197 -0
  248. package/dist/core/code/engine/core/ingestion/languages/dart/signature-bindings.js +54 -0
  249. package/dist/core/code/engine/core/ingestion/languages/dart/simple-hooks.js +61 -0
  250. package/dist/core/code/engine/core/ingestion/languages/dart.js +138 -0
  251. package/dist/core/code/engine/core/ingestion/languages/go/arity-metadata.js +71 -0
  252. package/dist/core/code/engine/core/ingestion/languages/go/arity.js +17 -0
  253. package/dist/core/code/engine/core/ingestion/languages/go/cache-stats.js +21 -0
  254. package/dist/core/code/engine/core/ingestion/languages/go/captures.js +492 -0
  255. package/dist/core/code/engine/core/ingestion/languages/go/expand-wildcards.js +97 -0
  256. package/dist/core/code/engine/core/ingestion/languages/go/generic-type-parameters.js +146 -0
  257. package/dist/core/code/engine/core/ingestion/languages/go/import-decomposer.js +47 -0
  258. package/dist/core/code/engine/core/ingestion/languages/go/import-target.js +70 -0
  259. package/dist/core/code/engine/core/ingestion/languages/go/index.js +39 -0
  260. package/dist/core/code/engine/core/ingestion/languages/go/interface-impls.js +955 -0
  261. package/dist/core/code/engine/core/ingestion/languages/go/interpret.js +177 -0
  262. package/dist/core/code/engine/core/ingestion/languages/go/merge-bindings.js +21 -0
  263. package/dist/core/code/engine/core/ingestion/languages/go/method-owners.js +131 -0
  264. package/dist/core/code/engine/core/ingestion/languages/go/namespace-mirror.js +56 -0
  265. package/dist/core/code/engine/core/ingestion/languages/go/package-clause.js +79 -0
  266. package/dist/core/code/engine/core/ingestion/languages/go/package-siblings.js +83 -0
  267. package/dist/core/code/engine/core/ingestion/languages/go/query.js +298 -0
  268. package/dist/core/code/engine/core/ingestion/languages/go/range-binding.js +127 -0
  269. package/dist/core/code/engine/core/ingestion/languages/go/receiver-binding.js +24 -0
  270. package/dist/core/code/engine/core/ingestion/languages/go/scope-resolver.js +75 -0
  271. package/dist/core/code/engine/core/ingestion/languages/go/simple-hooks.js +31 -0
  272. package/dist/core/code/engine/core/ingestion/languages/go/type-binding.js +279 -0
  273. package/dist/core/code/engine/core/ingestion/languages/go.js +160 -0
  274. package/dist/core/code/engine/core/ingestion/languages/index.js +66 -0
  275. package/dist/core/code/engine/core/ingestion/languages/java/analysis-features.js +16 -0
  276. package/dist/core/code/engine/core/ingestion/languages/java/arity-metadata.js +43 -0
  277. package/dist/core/code/engine/core/ingestion/languages/java/arity.js +27 -0
  278. package/dist/core/code/engine/core/ingestion/languages/java/cache-stats.js +32 -0
  279. package/dist/core/code/engine/core/ingestion/languages/java/capture-side-channel.js +123 -0
  280. package/dist/core/code/engine/core/ingestion/languages/java/captures.js +791 -0
  281. package/dist/core/code/engine/core/ingestion/languages/java/import-decomposer.js +88 -0
  282. package/dist/core/code/engine/core/ingestion/languages/java/import-target.js +103 -0
  283. package/dist/core/code/engine/core/ingestion/languages/java/index.js +43 -0
  284. package/dist/core/code/engine/core/ingestion/languages/java/interpret.js +146 -0
  285. package/dist/core/code/engine/core/ingestion/languages/java/merge-bindings.js +43 -0
  286. package/dist/core/code/engine/core/ingestion/languages/java/package-facts.js +16 -0
  287. package/dist/core/code/engine/core/ingestion/languages/java/package-siblings.js +11 -0
  288. package/dist/core/code/engine/core/ingestion/languages/java/query.js +319 -0
  289. package/dist/core/code/engine/core/ingestion/languages/java/receiver-binding.js +98 -0
  290. package/dist/core/code/engine/core/ingestion/languages/java/scope-resolver.js +213 -0
  291. package/dist/core/code/engine/core/ingestion/languages/java/simple-hooks.js +39 -0
  292. package/dist/core/code/engine/core/ingestion/languages/java/spring-aop.js +53 -0
  293. package/dist/core/code/engine/core/ingestion/languages/java/spring-bean-metadata.js +11 -0
  294. package/dist/core/code/engine/core/ingestion/languages/java/spring-conditionals.js +52 -0
  295. package/dist/core/code/engine/core/ingestion/languages/java/spring-config-bindings.js +222 -0
  296. package/dist/core/code/engine/core/ingestion/languages/java/spring-di.js +165 -0
  297. package/dist/core/code/engine/core/ingestion/languages/java.js +192 -0
  298. package/dist/core/code/engine/core/ingestion/languages/javascript/arity.js +15 -0
  299. package/dist/core/code/engine/core/ingestion/languages/javascript/captures.js +1122 -0
  300. package/dist/core/code/engine/core/ingestion/languages/javascript/import-target.js +56 -0
  301. package/dist/core/code/engine/core/ingestion/languages/javascript/index.js +109 -0
  302. package/dist/core/code/engine/core/ingestion/languages/javascript/interpret.js +45 -0
  303. package/dist/core/code/engine/core/ingestion/languages/javascript/merge-bindings.js +21 -0
  304. package/dist/core/code/engine/core/ingestion/languages/javascript/query.js +659 -0
  305. package/dist/core/code/engine/core/ingestion/languages/javascript/scope-resolver.js +78 -0
  306. package/dist/core/code/engine/core/ingestion/languages/javascript/simple-hooks.js +44 -0
  307. package/dist/core/code/engine/core/ingestion/languages/jvm/package-facts.js +46 -0
  308. package/dist/core/code/engine/core/ingestion/languages/jvm/package-siblings.js +200 -0
  309. package/dist/core/code/engine/core/ingestion/languages/kotlin/arity-metadata.js +23 -0
  310. package/dist/core/code/engine/core/ingestion/languages/kotlin/arity.js +18 -0
  311. package/dist/core/code/engine/core/ingestion/languages/kotlin/cache-stats.js +21 -0
  312. package/dist/core/code/engine/core/ingestion/languages/kotlin/capture-side-channel.js +160 -0
  313. package/dist/core/code/engine/core/ingestion/languages/kotlin/captures.js +1262 -0
  314. package/dist/core/code/engine/core/ingestion/languages/kotlin/companion-scopes.js +72 -0
  315. package/dist/core/code/engine/core/ingestion/languages/kotlin/import-decomposer.js +40 -0
  316. package/dist/core/code/engine/core/ingestion/languages/kotlin/import-target.js +135 -0
  317. package/dist/core/code/engine/core/ingestion/languages/kotlin/index.js +26 -0
  318. package/dist/core/code/engine/core/ingestion/languages/kotlin/interpret.js +75 -0
  319. package/dist/core/code/engine/core/ingestion/languages/kotlin/merge-bindings.js +28 -0
  320. package/dist/core/code/engine/core/ingestion/languages/kotlin/owners.js +134 -0
  321. package/dist/core/code/engine/core/ingestion/languages/kotlin/package-facts.js +16 -0
  322. package/dist/core/code/engine/core/ingestion/languages/kotlin/package-siblings.js +11 -0
  323. package/dist/core/code/engine/core/ingestion/languages/kotlin/query.js +243 -0
  324. package/dist/core/code/engine/core/ingestion/languages/kotlin/receiver-binding.js +103 -0
  325. package/dist/core/code/engine/core/ingestion/languages/kotlin/scope-resolver.js +207 -0
  326. package/dist/core/code/engine/core/ingestion/languages/kotlin/simple-hooks.js +42 -0
  327. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-aop.js +68 -0
  328. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-bean-metadata.js +11 -0
  329. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-conditionals.js +53 -0
  330. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-di.js +304 -0
  331. package/dist/core/code/engine/core/ingestion/languages/kotlin.js +189 -0
  332. package/dist/core/code/engine/core/ingestion/languages/php/arity-metadata.js +66 -0
  333. package/dist/core/code/engine/core/ingestion/languages/php/arity.js +43 -0
  334. package/dist/core/code/engine/core/ingestion/languages/php/cache-stats.js +32 -0
  335. package/dist/core/code/engine/core/ingestion/languages/php/captures.js +1166 -0
  336. package/dist/core/code/engine/core/ingestion/languages/php/import-decomposer.js +238 -0
  337. package/dist/core/code/engine/core/ingestion/languages/php/import-target.js +213 -0
  338. package/dist/core/code/engine/core/ingestion/languages/php/index.js +85 -0
  339. package/dist/core/code/engine/core/ingestion/languages/php/interpret.js +256 -0
  340. package/dist/core/code/engine/core/ingestion/languages/php/merge-bindings.js +50 -0
  341. package/dist/core/code/engine/core/ingestion/languages/php/namespace-siblings.js +353 -0
  342. package/dist/core/code/engine/core/ingestion/languages/php/query.js +391 -0
  343. package/dist/core/code/engine/core/ingestion/languages/php/receiver-binding.js +135 -0
  344. package/dist/core/code/engine/core/ingestion/languages/php/scope-resolver.js +361 -0
  345. package/dist/core/code/engine/core/ingestion/languages/php/simple-hooks.js +116 -0
  346. package/dist/core/code/engine/core/ingestion/languages/php.js +302 -0
  347. package/dist/core/code/engine/core/ingestion/languages/python/arity-metadata.js +49 -0
  348. package/dist/core/code/engine/core/ingestion/languages/python/arity.js +41 -0
  349. package/dist/core/code/engine/core/ingestion/languages/python/cache-stats.js +34 -0
  350. package/dist/core/code/engine/core/ingestion/languages/python/captures.js +299 -0
  351. package/dist/core/code/engine/core/ingestion/languages/python/depends-references.js +68 -0
  352. package/dist/core/code/engine/core/ingestion/languages/python/import-decomposer.js +115 -0
  353. package/dist/core/code/engine/core/ingestion/languages/python/import-target.js +440 -0
  354. package/dist/core/code/engine/core/ingestion/languages/python/index-stats.js +30 -0
  355. package/dist/core/code/engine/core/ingestion/languages/python/index.js +96 -0
  356. package/dist/core/code/engine/core/ingestion/languages/python/interpret.js +430 -0
  357. package/dist/core/code/engine/core/ingestion/languages/python/merge-bindings.js +47 -0
  358. package/dist/core/code/engine/core/ingestion/languages/python/query.js +323 -0
  359. package/dist/core/code/engine/core/ingestion/languages/python/receiver-binding.js +310 -0
  360. package/dist/core/code/engine/core/ingestion/languages/python/scope-resolver.js +80 -0
  361. package/dist/core/code/engine/core/ingestion/languages/python/simple-hooks.js +53 -0
  362. package/dist/core/code/engine/core/ingestion/languages/python.js +140 -0
  363. package/dist/core/code/engine/core/ingestion/languages/ruby/arity.js +41 -0
  364. package/dist/core/code/engine/core/ingestion/languages/ruby/cache-stats.js +21 -0
  365. package/dist/core/code/engine/core/ingestion/languages/ruby/captures.js +864 -0
  366. package/dist/core/code/engine/core/ingestion/languages/ruby/import-target.js +88 -0
  367. package/dist/core/code/engine/core/ingestion/languages/ruby/index.js +29 -0
  368. package/dist/core/code/engine/core/ingestion/languages/ruby/interpret.js +115 -0
  369. package/dist/core/code/engine/core/ingestion/languages/ruby/merge-bindings.js +21 -0
  370. package/dist/core/code/engine/core/ingestion/languages/ruby/query.js +349 -0
  371. package/dist/core/code/engine/core/ingestion/languages/ruby/receiver-binding.js +70 -0
  372. package/dist/core/code/engine/core/ingestion/languages/ruby/scope-resolver.js +263 -0
  373. package/dist/core/code/engine/core/ingestion/languages/ruby/simple-hooks.js +68 -0
  374. package/dist/core/code/engine/core/ingestion/languages/ruby.js +215 -0
  375. package/dist/core/code/engine/core/ingestion/languages/rust/arity.js +16 -0
  376. package/dist/core/code/engine/core/ingestion/languages/rust/cache-stats.js +21 -0
  377. package/dist/core/code/engine/core/ingestion/languages/rust/captures.js +304 -0
  378. package/dist/core/code/engine/core/ingestion/languages/rust/import-decomposer.js +167 -0
  379. package/dist/core/code/engine/core/ingestion/languages/rust/import-target.js +108 -0
  380. package/dist/core/code/engine/core/ingestion/languages/rust/index.js +29 -0
  381. package/dist/core/code/engine/core/ingestion/languages/rust/interpret.js +201 -0
  382. package/dist/core/code/engine/core/ingestion/languages/rust/merge-bindings.js +21 -0
  383. package/dist/core/code/engine/core/ingestion/languages/rust/method-owners.js +76 -0
  384. package/dist/core/code/engine/core/ingestion/languages/rust/module-path.js +222 -0
  385. package/dist/core/code/engine/core/ingestion/languages/rust/qualified-call.js +482 -0
  386. package/dist/core/code/engine/core/ingestion/languages/rust/query.js +280 -0
  387. package/dist/core/code/engine/core/ingestion/languages/rust/range-binding.js +687 -0
  388. package/dist/core/code/engine/core/ingestion/languages/rust/receiver-binding.js +148 -0
  389. package/dist/core/code/engine/core/ingestion/languages/rust/scope-resolver.js +151 -0
  390. package/dist/core/code/engine/core/ingestion/languages/rust/simple-hooks.js +32 -0
  391. package/dist/core/code/engine/core/ingestion/languages/rust.js +183 -0
  392. package/dist/core/code/engine/core/ingestion/languages/swift/arity-metadata.js +44 -0
  393. package/dist/core/code/engine/core/ingestion/languages/swift/arity.js +45 -0
  394. package/dist/core/code/engine/core/ingestion/languages/swift/base-type.js +30 -0
  395. package/dist/core/code/engine/core/ingestion/languages/swift/cache-stats.js +32 -0
  396. package/dist/core/code/engine/core/ingestion/languages/swift/captures.js +594 -0
  397. package/dist/core/code/engine/core/ingestion/languages/swift/conditional-directive-preprocess.js +256 -0
  398. package/dist/core/code/engine/core/ingestion/languages/swift/implicit-imports.js +60 -0
  399. package/dist/core/code/engine/core/ingestion/languages/swift/import-decomposer.js +87 -0
  400. package/dist/core/code/engine/core/ingestion/languages/swift/import-target.js +84 -0
  401. package/dist/core/code/engine/core/ingestion/languages/swift/index.js +56 -0
  402. package/dist/core/code/engine/core/ingestion/languages/swift/interpret.js +93 -0
  403. package/dist/core/code/engine/core/ingestion/languages/swift/merge-bindings.js +51 -0
  404. package/dist/core/code/engine/core/ingestion/languages/swift/query.js +226 -0
  405. package/dist/core/code/engine/core/ingestion/languages/swift/receiver-binding.js +169 -0
  406. package/dist/core/code/engine/core/ingestion/languages/swift/scope-resolver.js +192 -0
  407. package/dist/core/code/engine/core/ingestion/languages/swift/sibling-type-bindings.js +68 -0
  408. package/dist/core/code/engine/core/ingestion/languages/swift/signature-bindings.js +69 -0
  409. package/dist/core/code/engine/core/ingestion/languages/swift/simple-hooks.js +65 -0
  410. package/dist/core/code/engine/core/ingestion/languages/swift/target-grouping.js +97 -0
  411. package/dist/core/code/engine/core/ingestion/languages/swift/target-siblings.js +74 -0
  412. package/dist/core/code/engine/core/ingestion/languages/swift.js +246 -0
  413. package/dist/core/code/engine/core/ingestion/languages/typescript/arity-metadata.js +106 -0
  414. package/dist/core/code/engine/core/ingestion/languages/typescript/arity.js +57 -0
  415. package/dist/core/code/engine/core/ingestion/languages/typescript/array-callback.js +58 -0
  416. package/dist/core/code/engine/core/ingestion/languages/typescript/cache-stats.js +34 -0
  417. package/dist/core/code/engine/core/ingestion/languages/typescript/captures.js +956 -0
  418. package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-export-assignment.js +535 -0
  419. package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-module-exports.js +196 -0
  420. package/dist/core/code/engine/core/ingestion/languages/typescript/import-decomposer.js +374 -0
  421. package/dist/core/code/engine/core/ingestion/languages/typescript/import-target.js +65 -0
  422. package/dist/core/code/engine/core/ingestion/languages/typescript/index.js +108 -0
  423. package/dist/core/code/engine/core/ingestion/languages/typescript/interpret.js +344 -0
  424. package/dist/core/code/engine/core/ingestion/languages/typescript/merge-bindings.js +161 -0
  425. package/dist/core/code/engine/core/ingestion/languages/typescript/nuxt-auto-imports.js +325 -0
  426. package/dist/core/code/engine/core/ingestion/languages/typescript/query.js +1328 -0
  427. package/dist/core/code/engine/core/ingestion/languages/typescript/receiver-binding.js +201 -0
  428. package/dist/core/code/engine/core/ingestion/languages/typescript/scope-resolver.js +293 -0
  429. package/dist/core/code/engine/core/ingestion/languages/typescript/simple-hooks.js +139 -0
  430. package/dist/core/code/engine/core/ingestion/languages/typescript.js +455 -0
  431. package/dist/core/code/engine/core/ingestion/languages/vue/captures.js +70 -0
  432. package/dist/core/code/engine/core/ingestion/languages/vue/import-target.js +61 -0
  433. package/dist/core/code/engine/core/ingestion/languages/vue/index.js +55 -0
  434. package/dist/core/code/engine/core/ingestion/languages/vue/scope-resolver.js +295 -0
  435. package/dist/core/code/engine/core/ingestion/languages/vue.js +96 -0
  436. package/dist/core/code/engine/core/ingestion/local-symbol-pruner.js +68 -0
  437. package/dist/core/code/engine/core/ingestion/method-extractors/configs/c-cpp.js +387 -0
  438. package/dist/core/code/engine/core/ingestion/method-extractors/configs/csharp.js +290 -0
  439. package/dist/core/code/engine/core/ingestion/method-extractors/configs/dart.js +392 -0
  440. package/dist/core/code/engine/core/ingestion/method-extractors/configs/go.js +179 -0
  441. package/dist/core/code/engine/core/ingestion/method-extractors/configs/jvm.js +350 -0
  442. package/dist/core/code/engine/core/ingestion/method-extractors/configs/php.js +306 -0
  443. package/dist/core/code/engine/core/ingestion/method-extractors/configs/python.js +312 -0
  444. package/dist/core/code/engine/core/ingestion/method-extractors/configs/ruby.js +289 -0
  445. package/dist/core/code/engine/core/ingestion/method-extractors/configs/rust.js +198 -0
  446. package/dist/core/code/engine/core/ingestion/method-extractors/configs/swift.js +286 -0
  447. package/dist/core/code/engine/core/ingestion/method-extractors/configs/typescript-javascript.js +341 -0
  448. package/dist/core/code/engine/core/ingestion/method-extractors/generic.js +209 -0
  449. package/dist/core/code/engine/core/ingestion/method-types.js +3 -0
  450. package/dist/core/code/engine/core/ingestion/model/field-registry.js +41 -0
  451. package/dist/core/code/engine/core/ingestion/model/index.js +52 -0
  452. package/dist/core/code/engine/core/ingestion/model/method-registry.js +138 -0
  453. package/dist/core/code/engine/core/ingestion/model/owned-members-lookup.js +46 -0
  454. package/dist/core/code/engine/core/ingestion/model/registration-table.js +234 -0
  455. package/dist/core/code/engine/core/ingestion/model/resolve.js +183 -0
  456. package/dist/core/code/engine/core/ingestion/model/scope-resolution-indexes.js +43 -0
  457. package/dist/core/code/engine/core/ingestion/model/semantic-model.js +179 -0
  458. package/dist/core/code/engine/core/ingestion/model/symbol-table.js +216 -0
  459. package/dist/core/code/engine/core/ingestion/model/type-registry.js +84 -0
  460. package/dist/core/code/engine/core/ingestion/mro-processor.js +709 -0
  461. package/dist/core/code/engine/core/ingestion/parsing-processor.js +312 -0
  462. package/dist/core/code/engine/core/ingestion/pipeline-phases/communities.js +69 -0
  463. package/dist/core/code/engine/core/ingestion/pipeline-phases/cross-file.js +71 -0
  464. package/dist/core/code/engine/core/ingestion/pipeline-phases/di.js +338 -0
  465. package/dist/core/code/engine/core/ingestion/pipeline-phases/http-api-calls.js +312 -0
  466. package/dist/core/code/engine/core/ingestion/pipeline-phases/index.js +54 -0
  467. package/dist/core/code/engine/core/ingestion/pipeline-phases/mro.js +40 -0
  468. package/dist/core/code/engine/core/ingestion/pipeline-phases/orm.js +78 -0
  469. package/dist/core/code/engine/core/ingestion/pipeline-phases/parse-impl.js +1286 -0
  470. package/dist/core/code/engine/core/ingestion/pipeline-phases/parse.js +41 -0
  471. package/dist/core/code/engine/core/ingestion/pipeline-phases/processes.js +193 -0
  472. package/dist/core/code/engine/core/ingestion/pipeline-phases/prune-local-symbols.js +29 -0
  473. package/dist/core/code/engine/core/ingestion/pipeline-phases/registry.js +52 -0
  474. package/dist/core/code/engine/core/ingestion/pipeline-phases/routes.js +409 -0
  475. package/dist/core/code/engine/core/ingestion/pipeline-phases/rpc-edges.js +301 -0
  476. package/dist/core/code/engine/core/ingestion/pipeline-phases/runner.js +207 -0
  477. package/dist/core/code/engine/core/ingestion/pipeline-phases/scan.js +49 -0
  478. package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-aop.js +442 -0
  479. package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-auto-configuration.js +264 -0
  480. package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-config.js +440 -0
  481. package/dist/core/code/engine/core/ingestion/pipeline-phases/structure.js +38 -0
  482. package/dist/core/code/engine/core/ingestion/pipeline-phases/tools.js +89 -0
  483. package/dist/core/code/engine/core/ingestion/pipeline-phases/types.js +40 -0
  484. package/dist/core/code/engine/core/ingestion/pipeline.js +152 -0
  485. package/dist/core/code/engine/core/ingestion/process-processor.js +325 -0
  486. package/dist/core/code/engine/core/ingestion/resolve-references.js +205 -0
  487. package/dist/core/code/engine/core/ingestion/route-extractors/constant-resolver.js +135 -0
  488. package/dist/core/code/engine/core/ingestion/route-extractors/django-root-discovery.js +221 -0
  489. package/dist/core/code/engine/core/ingestion/route-extractors/django.js +428 -0
  490. package/dist/core/code/engine/core/ingestion/route-extractors/expo.js +39 -0
  491. package/dist/core/code/engine/core/ingestion/route-extractors/fastapi-router-bindings.js +264 -0
  492. package/dist/core/code/engine/core/ingestion/route-extractors/laravel.js +501 -0
  493. package/dist/core/code/engine/core/ingestion/route-extractors/middleware.js +175 -0
  494. package/dist/core/code/engine/core/ingestion/route-extractors/nextjs.js +81 -0
  495. package/dist/core/code/engine/core/ingestion/route-extractors/php.js +25 -0
  496. package/dist/core/code/engine/core/ingestion/route-extractors/python-const-resolver.js +307 -0
  497. package/dist/core/code/engine/core/ingestion/route-extractors/response-shapes.js +299 -0
  498. package/dist/core/code/engine/core/ingestion/route-extractors/route-path.js +71 -0
  499. package/dist/core/code/engine/core/ingestion/route-extractors/spring-shared.js +310 -0
  500. package/dist/core/code/engine/core/ingestion/route-extractors/spring.js +441 -0
  501. package/dist/core/code/engine/core/ingestion/scope-extractor-bridge.js +60 -0
  502. package/dist/core/code/engine/core/ingestion/scope-extractor.js +1373 -0
  503. package/dist/core/code/engine/core/ingestion/scope-resolution/contract/scope-resolver.js +282 -0
  504. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.js +72 -0
  505. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/edges.js +194 -0
  506. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/ids.js +472 -0
  507. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +49 -0
  508. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/method-dispatch.js +43 -0
  509. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +274 -0
  510. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +93 -0
  511. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/callable-value-flow.js +1240 -0
  512. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/compound-receiver.js +1174 -0
  513. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/free-call-fallback.js +873 -0
  514. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/imported-return-types.js +226 -0
  515. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/mro.js +107 -0
  516. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/overload-narrowing.js +441 -0
  517. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/property-dispatch.js +122 -0
  518. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +1720 -0
  519. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/phase.js +395 -0
  520. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/reconcile-ownership.js +208 -0
  521. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/registry.js +49 -0
  522. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/run.js +632 -0
  523. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/validate-bindings-immutability.js +112 -0
  524. package/dist/core/code/engine/core/ingestion/scope-resolution/resolution-outcome.js +41 -0
  525. package/dist/core/code/engine/core/ingestion/scope-resolution/scope/namespace-targets.js +81 -0
  526. package/dist/core/code/engine/core/ingestion/scope-resolution/scope/walkers.js +1835 -0
  527. package/dist/core/code/engine/core/ingestion/scope-resolution/unresolved-receivers.js +242 -0
  528. package/dist/core/code/engine/core/ingestion/scope-resolution/utils/definition-id.js +22 -0
  529. package/dist/core/code/engine/core/ingestion/scope-resolution/workspace-index.js +151 -0
  530. package/dist/core/code/engine/core/ingestion/structure-processor.js +40 -0
  531. package/dist/core/code/engine/core/ingestion/tree-sitter-queries.js +2244 -0
  532. package/dist/core/code/engine/core/ingestion/ts-js-hoc-utils.js +115 -0
  533. package/dist/core/code/engine/core/ingestion/type-env.js +1136 -0
  534. package/dist/core/code/engine/core/ingestion/type-extractors/c-cpp.js +555 -0
  535. package/dist/core/code/engine/core/ingestion/type-extractors/csharp.js +570 -0
  536. package/dist/core/code/engine/core/ingestion/type-extractors/dart.js +372 -0
  537. package/dist/core/code/engine/core/ingestion/type-extractors/go.js +508 -0
  538. package/dist/core/code/engine/core/ingestion/type-extractors/jvm.js +875 -0
  539. package/dist/core/code/engine/core/ingestion/type-extractors/php.js +537 -0
  540. package/dist/core/code/engine/core/ingestion/type-extractors/python.js +477 -0
  541. package/dist/core/code/engine/core/ingestion/type-extractors/ruby.js +380 -0
  542. package/dist/core/code/engine/core/ingestion/type-extractors/rust.js +502 -0
  543. package/dist/core/code/engine/core/ingestion/type-extractors/shared.js +843 -0
  544. package/dist/core/code/engine/core/ingestion/type-extractors/swift.js +490 -0
  545. package/dist/core/code/engine/core/ingestion/type-extractors/types.js +2 -0
  546. package/dist/core/code/engine/core/ingestion/type-extractors/typescript.js +690 -0
  547. package/dist/core/code/engine/core/ingestion/utils/ast-helpers.js +1693 -0
  548. package/dist/core/code/engine/core/ingestion/utils/call-analysis.js +779 -0
  549. package/dist/core/code/engine/core/ingestion/utils/callable-flow-captures.js +932 -0
  550. package/dist/core/code/engine/core/ingestion/utils/callable-labels.js +49 -0
  551. package/dist/core/code/engine/core/ingestion/utils/deferred-resolution-profile.js +151 -0
  552. package/dist/core/code/engine/core/ingestion/utils/effective-ram.js +67 -0
  553. package/dist/core/code/engine/core/ingestion/utils/env.js +60 -0
  554. package/dist/core/code/engine/core/ingestion/utils/event-loop.js +9 -0
  555. package/dist/core/code/engine/core/ingestion/utils/graph-sort.js +103 -0
  556. package/dist/core/code/engine/core/ingestion/utils/heap-probe.js +45 -0
  557. package/dist/core/code/engine/core/ingestion/utils/heritage-marker.js +47 -0
  558. package/dist/core/code/engine/core/ingestion/utils/line-base.js +24 -0
  559. package/dist/core/code/engine/core/ingestion/utils/max-file-size.js +59 -0
  560. package/dist/core/code/engine/core/ingestion/utils/method-props.js +198 -0
  561. package/dist/core/code/engine/core/ingestion/utils/qualified-name.js +73 -0
  562. package/dist/core/code/engine/core/ingestion/utils/receiver-chain-captures.js +60 -0
  563. package/dist/core/code/engine/core/ingestion/utils/receiver-chain-codec.js +188 -0
  564. package/dist/core/code/engine/core/ingestion/utils/scope-tree-walk.js +36 -0
  565. package/dist/core/code/engine/core/ingestion/utils/symbol-labels.js +48 -0
  566. package/dist/core/code/engine/core/ingestion/utils/template-arguments.js +187 -0
  567. package/dist/core/code/engine/core/ingestion/utils/type-parameters.js +209 -0
  568. package/dist/core/code/engine/core/ingestion/utils/verbose.js +6 -0
  569. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/c-cpp.js +133 -0
  570. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/csharp.js +66 -0
  571. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/dart.js +111 -0
  572. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/go.js +153 -0
  573. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/jvm.js +145 -0
  574. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/php.js +61 -0
  575. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/python.js +104 -0
  576. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/ruby.js +55 -0
  577. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/rust.js +79 -0
  578. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/swift.js +91 -0
  579. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/typescript-javascript.js +86 -0
  580. package/dist/core/code/engine/core/ingestion/variable-extractors/generic.js +111 -0
  581. package/dist/core/code/engine/core/ingestion/variable-types.js +3 -0
  582. package/dist/core/code/engine/core/ingestion/vue-sfc-extractor.js +544 -0
  583. package/dist/core/code/engine/core/ingestion/workers/callable-id.js +122 -0
  584. package/dist/core/code/engine/core/ingestion/workers/clone-safety.js +470 -0
  585. package/dist/core/code/engine/core/ingestion/workers/parse-worker.js +2456 -0
  586. package/dist/core/code/engine/core/ingestion/workers/post-result.js +90 -0
  587. package/dist/core/code/engine/core/ingestion/workers/quarantine.js +41 -0
  588. package/dist/core/code/engine/core/ingestion/workers/result-merge.js +59 -0
  589. package/dist/core/code/engine/core/ingestion/workers/worker-pool.js +1725 -0
  590. package/dist/core/code/engine/core/ingestion/workspace-config.js +139 -0
  591. package/dist/core/code/engine/core/lbug/conn-lock.js +72 -0
  592. package/dist/core/code/engine/core/lbug/csv-generator.js +710 -0
  593. package/dist/core/code/engine/core/lbug/cypher-escape.js +24 -0
  594. package/dist/core/code/engine/core/lbug/extension-load-error.js +339 -0
  595. package/dist/core/code/engine/core/lbug/extension-loader.js +261 -0
  596. package/dist/core/code/engine/core/lbug/graph-emit-sink.js +584 -0
  597. package/dist/core/code/engine/core/lbug/lbug-adapter.js +2703 -0
  598. package/dist/core/code/engine/core/lbug/lbug-config.js +1029 -0
  599. package/dist/core/code/engine/core/lbug/native-check.js +435 -0
  600. package/dist/core/code/engine/core/lbug/pool-adapter.js +973 -0
  601. package/dist/core/code/engine/core/lbug/query-params.js +25 -0
  602. package/dist/core/code/engine/core/lbug/query-result-utils.js +31 -0
  603. package/dist/core/code/engine/core/lbug/rel-pair-routing.js +373 -0
  604. package/dist/core/code/engine/core/lbug/schema.js +771 -0
  605. package/dist/core/code/engine/core/lbug/shutdown-helpers.js +40 -0
  606. package/dist/core/code/engine/core/lbug/sidecar-recovery.js +716 -0
  607. package/dist/core/code/engine/core/lbug/stdio-capture.js +49 -0
  608. package/dist/core/code/engine/core/lbug/sync-csv-writer.js +115 -0
  609. package/dist/core/code/engine/core/lbug/wal-checkpoint-driver.js +215 -0
  610. package/dist/core/code/engine/core/lbug/wal-driver-state.js +28 -0
  611. package/dist/core/code/engine/core/logger.js +339 -0
  612. package/dist/core/code/engine/core/platform/capabilities.js +91 -0
  613. package/dist/core/code/engine/core/run-analyze.js +1098 -0
  614. package/dist/core/code/engine/core/tree-sitter/parser-loader.js +281 -0
  615. package/dist/core/code/engine/core/tree-sitter/safe-parse.js +258 -0
  616. package/dist/core/code/engine/core/tree-sitter/vendored-grammars.js +64 -0
  617. package/dist/core/code/engine/lib/utils.js +121 -0
  618. package/dist/core/code/engine/mcp/core/lbug-adapter.js +27 -0
  619. package/dist/core/code/engine/mcp/local/aop-metadata.js +230 -0
  620. package/dist/core/code/engine/mcp/local/bean-metadata.js +49 -0
  621. package/dist/core/code/engine/mcp/local/limits.js +15 -0
  622. package/dist/core/code/engine/mcp/local/line-display.js +6 -0
  623. package/dist/core/code/engine/mcp/local/local-backend.js +4142 -0
  624. package/dist/core/code/engine/storage/branch-index.js +72 -0
  625. package/dist/core/code/engine/storage/file-hash.js +95 -0
  626. package/dist/core/code/engine/storage/fs-atomic.js +34 -0
  627. package/dist/core/code/engine/storage/git.js +555 -0
  628. package/dist/core/code/engine/storage/index-lock.js +664 -0
  629. package/dist/core/code/engine/storage/parse-cache.js +650 -0
  630. package/dist/core/code/engine/storage/parsedfile-store.js +620 -0
  631. package/dist/core/code/engine/storage/repo-manager.js +1061 -0
  632. package/dist/core/code/engine/storage/scope-index-store.js +247 -0
  633. package/dist/core/code/engine/types/pipeline.js +2 -0
  634. package/dist/core/code/scripts/install-duckdb-extension.mjs +125 -0
  635. package/dist/core/code/scripts/resolve-analyze-cmd.cjs +346 -0
  636. package/dist/core/code/shared/graph/types.js +8 -0
  637. package/dist/core/code/shared/index.js +105 -0
  638. package/dist/core/code/shared/integrations/circuit-breaker.js +242 -0
  639. package/dist/core/code/shared/integrations/resilient-fetch.js +224 -0
  640. package/dist/core/code/shared/integrations/retry.js +70 -0
  641. package/dist/core/code/shared/integrations/understand-quickly.js +145 -0
  642. package/dist/core/code/shared/language-detection.js +162 -0
  643. package/dist/core/code/shared/languages.js +27 -0
  644. package/dist/core/code/shared/lbug/schema-constants.js +98 -0
  645. package/dist/core/code/shared/mro-strategy.js +2 -0
  646. package/dist/core/code/shared/pipeline.js +5 -0
  647. package/dist/core/code/shared/scope-resolution/callable-flow-site.js +11 -0
  648. package/dist/core/code/shared/scope-resolution/def-index.js +53 -0
  649. package/dist/core/code/shared/scope-resolution/evidence-weights.js +87 -0
  650. package/dist/core/code/shared/scope-resolution/finalize-algorithm.js +807 -0
  651. package/dist/core/code/shared/scope-resolution/language-classification.js +46 -0
  652. package/dist/core/code/shared/scope-resolution/method-dispatch-index.js +100 -0
  653. package/dist/core/code/shared/scope-resolution/module-scope-index.js +59 -0
  654. package/dist/core/code/shared/scope-resolution/origin-priority.js +23 -0
  655. package/dist/core/code/shared/scope-resolution/parsed-file.js +54 -0
  656. package/dist/core/code/shared/scope-resolution/position-index.js +136 -0
  657. package/dist/core/code/shared/scope-resolution/qualified-name-index.js +77 -0
  658. package/dist/core/code/shared/scope-resolution/reference-site.js +24 -0
  659. package/dist/core/code/shared/scope-resolution/registries/class-registry.js +32 -0
  660. package/dist/core/code/shared/scope-resolution/registries/context.js +52 -0
  661. package/dist/core/code/shared/scope-resolution/registries/evidence.js +152 -0
  662. package/dist/core/code/shared/scope-resolution/registries/field-registry.js +33 -0
  663. package/dist/core/code/shared/scope-resolution/registries/lookup-core.js +392 -0
  664. package/dist/core/code/shared/scope-resolution/registries/lookup-qualified.js +58 -0
  665. package/dist/core/code/shared/scope-resolution/registries/macro-registry.js +34 -0
  666. package/dist/core/code/shared/scope-resolution/registries/method-registry.js +34 -0
  667. package/dist/core/code/shared/scope-resolution/registries/tie-breaks.js +63 -0
  668. package/dist/core/code/shared/scope-resolution/resolve-type-ref.js +128 -0
  669. package/dist/core/code/shared/scope-resolution/scope-id.js +49 -0
  670. package/dist/core/code/shared/scope-resolution/scope-tree.js +225 -0
  671. package/dist/core/code/shared/scope-resolution/symbol-definition.js +12 -0
  672. package/dist/core/code/shared/scope-resolution/types.js +25 -0
  673. package/dist/core/code/shared/test-helpers.js +17 -0
  674. package/dist/core/code/vendor/leiden/index.cjs +355 -0
  675. package/dist/core/code/vendor/leiden/utils.cjs +419 -0
  676. package/dist/core/features/scanner.d.ts +2 -0
  677. package/dist/core/features/scanner.d.ts.map +1 -1
  678. package/dist/core/features/scanner.js +27 -6
  679. package/dist/core/features/scanner.js.map +1 -1
  680. package/dist/core/timeline/cli.d.ts.map +1 -1
  681. package/dist/core/timeline/cli.js +13 -6
  682. package/dist/core/timeline/cli.js.map +1 -1
  683. package/dist/core/timeline/debris.d.ts +20 -0
  684. package/dist/core/timeline/debris.d.ts.map +1 -0
  685. package/dist/core/timeline/debris.js +124 -0
  686. package/dist/core/timeline/debris.js.map +1 -0
  687. package/dist/core/timeline/hook-runner.d.ts.map +1 -1
  688. package/dist/core/timeline/hook-runner.js +3 -1
  689. package/dist/core/timeline/hook-runner.js.map +1 -1
  690. package/dist/core/timeline/hooks.d.ts.map +1 -1
  691. package/dist/core/timeline/hooks.js +13 -5
  692. package/dist/core/timeline/hooks.js.map +1 -1
  693. package/dist/core/timeline/installer.d.ts +2 -0
  694. package/dist/core/timeline/installer.d.ts.map +1 -1
  695. package/dist/core/timeline/installer.js +12 -0
  696. package/dist/core/timeline/installer.js.map +1 -1
  697. package/dist/core/timeline/project-root.d.ts +21 -0
  698. package/dist/core/timeline/project-root.d.ts.map +1 -0
  699. package/dist/core/timeline/project-root.js +83 -0
  700. package/dist/core/timeline/project-root.js.map +1 -0
  701. package/package.json +1 -1
@@ -0,0 +1,243 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getKotlinParser = getKotlinParser;
7
+ exports.getKotlinScopeQuery = getKotlinScopeQuery;
8
+ const tree_sitter_1 = __importDefault(require("tree-sitter"));
9
+ const index_js_1 = require("../../../../../shared/index.js");
10
+ // `tree-sitter-kotlin` is a vendored grammar (loaded from vendor/ by absolute
11
+ // path, never node_modules — vendored-grammars.ts / #2111) that may be absent on
12
+ // a platform without a matching prebuild. Loaded lazily + guarded via parser-loader
13
+ // rather than statically imported: this module is pulled onto the main thread
14
+ // eagerly by the scope-resolution registry and the language-provider index, so
15
+ // a top-level `import Kotlin from 'tree-sitter-kotlin'` would throw
16
+ // ERR_MODULE_NOT_FOUND at module-load and crash `analyze` even for repos with no
17
+ // Kotlin files (#2091, #2093). The grammar is only ever needed in the getters.
18
+ const parser_loader_js_1 = require("../../../tree-sitter/parser-loader.js");
19
+ const KOTLIN_SCOPE_QUERY = `
20
+ ;; Scopes
21
+ (source_file) @scope.module
22
+ (class_declaration) @scope.class
23
+ (object_declaration) @scope.class
24
+ (companion_object) @scope.class
25
+ ;; Anonymous object expression: \`val h = object { fun fetch() {} }\`
26
+ ;; (distinct from the named \`object_declaration\`/\`companion_object\` above).
27
+ ;; Without its own scope, a method's auto-hoist (scope-extractor.ts) has
28
+ ;; nowhere to stop and leaks the name past the literal into the enclosing
29
+ ;; scope -- the same failure mode fixed for TS/JS object literals (#2545).
30
+ (object_literal) @scope.class
31
+ (function_declaration) @scope.function
32
+
33
+ ;; Secondary-constructor body scope (issue #1919 review CF1). A
34
+ ;; secondary constructor's "constructor(...) { ... }" body executes statements
35
+ ;; just like a method body, so it must be its OWN Function scope — otherwise a
36
+ ;; call inside the body resolves its caller anchor up to the enclosing Class
37
+ ;; scope (the class's Class def), mis-attributing the CALLS edge to the class
38
+ ;; rather than the Constructor. The matching @declaration.constructor is
39
+ ;; synthesized in captures.ts (synthesizeKotlinSecondaryConstructorDeclarations)
40
+ ;; so this scope owns a Constructor def keyed to the structure-phase node id.
41
+ (secondary_constructor) @scope.function
42
+
43
+ ;; Companion-object marker (issue #1756 / U4). Side-channel capture that
44
+ ;; lets populateCompanionMembersOnEnclosingClass distinguish a companion
45
+ ;; Class scope from a regular Class scope without inspecting ownedDefs.
46
+ ;; Anonymous companions AND companions containing nested classes both
47
+ ;; look like regular classes through the old ownedDefs-based heuristic;
48
+ ;; the marker lifts the distinction up to the parser layer where it is
49
+ ;; unambiguous (any companion_object AST node is a companion, full
50
+ ;; stop). Consumed by markCompanionScope / isCompanionScope in
51
+ ;; captures.ts / companion-scopes.ts. The scope-extractor ignores the
52
+ ;; "companion" suffix (no ScopeKind mapping), so this rule contributes
53
+ ;; no Scope record of its own — the existing (companion_object)
54
+ ;; @scope.class rule still creates the Class scope.
55
+ (companion_object) @scope.companion
56
+
57
+ ;; Smart-cast narrowing scopes (RFC #909 Ring 3, issue #1758).
58
+ ;; Each is-test arm body and each if-then body becomes its own Block
59
+ ;; scope so synthesized narrowed type-bindings (see captures.ts
60
+ ;; synthesizeKotlinSmartCastBindings) shadow the outer parameter
61
+ ;; binding for calls inside the body — without leaking across arms.
62
+ (when_entry
63
+ (when_condition (type_test))
64
+ (control_structure_body) @scope.block)
65
+
66
+ (if_expression
67
+ (check_expression)
68
+ (control_structure_body) @scope.block)
69
+
70
+ ;; Lambda body scope (issue #1757). Each lambda_literal becomes its
71
+ ;; own Block scope so synthesized lambda-parameter and implicit-'it'
72
+ ;; type-bindings (see captures.ts synthesizeKotlinLambdaBindings) stay
73
+ ;; inside the lambda — they must not leak to the enclosing function
74
+ ;; scope and must shadow same-named outer bindings (val it = "outer";
75
+ ;; users.forEach { it.save() } — inner 'it' is the lambda's, not the
76
+ ;; outer String).
77
+ ;;
78
+ ;; Lambdas appear inside call_suffix for trailing-lambda syntax
79
+ ;; (list.forEach { it.foo() }) and inside value_arguments for
80
+ ;; explicit-paren syntax (list.forEach({ x -> x.foo() })); both AST
81
+ ;; positions produce the same lambda_literal subtree, so a single
82
+ ;; capture suffices.
83
+ ;;
84
+ ;; Uses @scope.block (not @scope.function) to match the smart-cast
85
+ ;; precedent (#1758) — keeps narrowed/lambda bindings scope-local
86
+ ;; without the auto-hoist semantics of Function scopes.
87
+ (lambda_literal) @scope.block
88
+
89
+ ;; Declarations — types
90
+ ;; The Kotlin grammar puts NO named fields on \`class_declaration\`, so the
91
+ ;; parameter list is matched positionally as an optional unnamed child, exactly
92
+ ;; as the name already is.
93
+ ;;
94
+ ;; Only the INLINE bound (\`<T : Repo>\`) is read. A \`where T : Repo\` clause is a
95
+ ;; separate \`type_constraints\` sibling and is left alone, so its bound reads as
96
+ ;; absent — "unknown", not "unbounded".
97
+ (class_declaration
98
+ "interface"
99
+ (type_identifier) @declaration.name
100
+ (type_parameters)? @declaration.type-parameters) @declaration.interface
101
+
102
+ (class_declaration
103
+ "class"
104
+ (type_identifier) @declaration.name
105
+ (type_parameters)? @declaration.type-parameters) @declaration.class
106
+
107
+ (object_declaration
108
+ (type_identifier) @declaration.name) @declaration.class
109
+
110
+ (companion_object
111
+ (type_identifier) @declaration.name) @declaration.class
112
+
113
+ (type_alias
114
+ (type_identifier) @declaration.name) @declaration.type_alias
115
+
116
+ ;; Class annotation syntax is carried to post-resolution enrichment. Keeping
117
+ ;; this in the existing scope query avoids a second AST traversal. Eligibility
118
+ ;; filtering (class vs interface/enum/annotation class) happens in captures.ts.
119
+ (class_declaration
120
+ (modifiers
121
+ [
122
+ (annotation
123
+ (user_type) @class-annotation.name)
124
+ (annotation
125
+ (constructor_invocation
126
+ (user_type) @class-annotation.name))
127
+ ])) @class-annotation.class
128
+
129
+ ;; Declarations — functions / methods / properties
130
+ (function_declaration
131
+ (simple_identifier) @declaration.name) @declaration.function
132
+
133
+ ;; Lambda bound to a val/var: val handler = { x: Int -> target(x) }
134
+ ;; Anchor discipline (same contract as javascript/query.ts): @declaration.function
135
+ ;; sits on the INNER lambda_literal, NOT on the property_declaration wrapper, so
136
+ ;; anchor.range aligns with the (lambda_literal) @scope.block range. That
137
+ ;; alignment is what lets pickCallerCallableDef accept a Block-kind scope as a
138
+ ;; callable boundary: the scope IS the callable's body. The lambda stays
139
+ ;; @scope.block deliberately (#1757 smart casts) — do NOT re-kind it.
140
+ (property_declaration
141
+ (variable_declaration (simple_identifier) @declaration.name)
142
+ (lambda_literal) @declaration.function)
143
+
144
+ (property_declaration
145
+ (variable_declaration
146
+ (simple_identifier) @declaration.name)) @declaration.property
147
+
148
+ (class_parameter
149
+ (binding_pattern_kind)
150
+ (simple_identifier) @declaration.name) @declaration.property
151
+
152
+ ;; Imports
153
+ (import_header) @import.statement
154
+
155
+ ;; Type bindings — parameters
156
+ (parameter
157
+ (simple_identifier) @type-binding.name
158
+ [(user_type) (nullable_type) (function_type)] @type-binding.type) @type-binding.parameter
159
+
160
+ ;; Type bindings — property / local annotations
161
+ (property_declaration
162
+ (variable_declaration
163
+ (simple_identifier) @type-binding.name
164
+ [(user_type) (nullable_type) (function_type)] @type-binding.type)) @type-binding.annotation
165
+
166
+ (class_parameter
167
+ (binding_pattern_kind)
168
+ (simple_identifier) @type-binding.name
169
+ [(user_type) (nullable_type) (function_type)] @type-binding.type) @type-binding.annotation
170
+
171
+ ;; Type bindings — constructor-inferred val user = User(...)
172
+ (property_declaration
173
+ (variable_declaration
174
+ (simple_identifier) @type-binding.name)
175
+ (call_expression
176
+ (simple_identifier) @type-binding.type)) @type-binding.constructor
177
+
178
+ ;; Type bindings — return annotations after function parameters
179
+ (function_declaration
180
+ (simple_identifier) @type-binding.name
181
+ (function_value_parameters)
182
+ [(user_type) (nullable_type) (function_type)] @type-binding.type) @type-binding.return
183
+
184
+ ;; References — callable references ("::method", "Type::new", "obj::m") — F47.
185
+ ;; A "callable_reference" references a function/constructor as a value (no
186
+ ;; call_suffix), so the registry-primary call path never saw it. Real-parse
187
+ ;; (issue #1919) shows the canonical shape inside a function body is:
188
+ ;; "::topLevelFn" -> (callable_reference :: (simple_identifier)) member only
189
+ ;; "String::length" -> (callable_reference (type_identifier) :: (simple_identifier))
190
+ ;; "obj::method" -> (callable_reference (type_identifier) :: (simple_identifier))
191
+ ;; "Type::new" -> (callable_reference (type_identifier) :: (simple_identifier))
192
+ ;; The receiver (real type OR object) is always a "type_identifier"; the
193
+ ;; referenced member is the LAST "simple_identifier". One rule with an
194
+ ;; optional receiver and an end-anchored member covers all four forms with
195
+ ;; exactly one match per callable_reference (no sibling-branch double-match).
196
+ ;; (NOTE: a qualified "A.B::m" parses as a nested navigation_expression, not a
197
+ ;; callable_reference, and is already captured by the read.member rule below.)
198
+ ;; emitKotlinScopeCaptures rewrites this into a free/member call reference.
199
+ (callable_reference
200
+ (type_identifier)? @reference.receiver
201
+ (simple_identifier) @reference.name
202
+ .) @reference.callable
203
+
204
+ ;; References — direct calls / constructor syntax
205
+ (call_expression
206
+ (simple_identifier) @reference.name) @reference.call.free
207
+
208
+ ;; References — member calls: obj.method()
209
+ (call_expression
210
+ (navigation_expression
211
+ (_) @reference.receiver
212
+ (navigation_suffix
213
+ (simple_identifier) @reference.name))) @reference.call.member
214
+
215
+ ;; References — property writes
216
+ (assignment
217
+ (directly_assignable_expression
218
+ (_) @reference.receiver
219
+ (navigation_suffix
220
+ (simple_identifier) @reference.name))
221
+ (_)) @reference.write.member
222
+
223
+ ;; References — property reads
224
+ (navigation_expression
225
+ (_) @reference.receiver
226
+ (navigation_suffix
227
+ (simple_identifier) @reference.name)) @reference.read.member
228
+ `;
229
+ let parser = null;
230
+ let query = null;
231
+ function getKotlinParser() {
232
+ if (parser === null) {
233
+ parser = new tree_sitter_1.default();
234
+ parser.setLanguage((0, parser_loader_js_1.getLanguageGrammar)(index_js_1.SupportedLanguages.Kotlin));
235
+ }
236
+ return parser;
237
+ }
238
+ function getKotlinScopeQuery() {
239
+ if (query === null) {
240
+ query = new tree_sitter_1.default.Query((0, parser_loader_js_1.getLanguageGrammar)(index_js_1.SupportedLanguages.Kotlin), KOTLIN_SCOPE_QUERY);
241
+ }
242
+ return query;
243
+ }
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.synthesizeKotlinReceiverBinding = synthesizeKotlinReceiverBinding;
4
+ const ast_helpers_js_1 = require("../../utils/ast-helpers.js");
5
+ const interpret_js_1 = require("./interpret.js");
6
+ const TYPE_DECL_NODE_TYPES = new Set([
7
+ 'class_declaration',
8
+ 'object_declaration',
9
+ 'companion_object',
10
+ ]);
11
+ function synthesizeKotlinReceiverBinding(fnNode) {
12
+ if (fnNode.type !== 'function_declaration')
13
+ return [];
14
+ const anchorNode = findFunctionBody(fnNode);
15
+ if (anchorNode === null)
16
+ return [];
17
+ const extensionReceiver = extensionReceiverType(fnNode);
18
+ if (extensionReceiver !== null) {
19
+ return [buildReceiverMatch(anchorNode, 'this', extensionReceiver)];
20
+ }
21
+ const enclosingType = findEnclosingTypeDeclaration(fnNode);
22
+ if (enclosingType === null)
23
+ return [];
24
+ const enclosingName = typeDeclarationName(enclosingType);
25
+ if (enclosingName === null)
26
+ return [];
27
+ const out = [buildReceiverMatch(anchorNode, 'this', enclosingName)];
28
+ const superName = firstSuperclassText(enclosingType);
29
+ if (superName !== null)
30
+ out.push(buildReceiverMatch(anchorNode, 'super', superName));
31
+ return out;
32
+ }
33
+ function findFunctionBody(fnNode) {
34
+ for (let i = 0; i < fnNode.namedChildCount; i++) {
35
+ const child = fnNode.namedChild(i);
36
+ if (child?.type === 'function_body')
37
+ return child;
38
+ }
39
+ return fnNode;
40
+ }
41
+ function extensionReceiverType(fnNode) {
42
+ for (let i = 0; i < fnNode.namedChildCount; i++) {
43
+ const child = fnNode.namedChild(i);
44
+ if (child === null)
45
+ continue;
46
+ if (child.type === 'simple_identifier')
47
+ return null;
48
+ if (child.type === 'user_type' || child.type === 'nullable_type') {
49
+ return (0, interpret_js_1.normalizeKotlinType)(child.text);
50
+ }
51
+ }
52
+ return null;
53
+ }
54
+ function findEnclosingTypeDeclaration(node) {
55
+ let current = node.parent;
56
+ while (current !== null) {
57
+ if (TYPE_DECL_NODE_TYPES.has(current.type))
58
+ return current;
59
+ current = current.parent;
60
+ }
61
+ return null;
62
+ }
63
+ function typeDeclarationName(typeNode) {
64
+ if (typeNode.type === 'companion_object') {
65
+ return (typeNode.namedChildren.find((child) => child.type === 'type_identifier')?.text ??
66
+ enclosingNonCompanionTypeName(typeNode) ??
67
+ 'Companion');
68
+ }
69
+ return typeNode.namedChildren.find((child) => child.type === 'type_identifier')?.text ?? null;
70
+ }
71
+ function enclosingNonCompanionTypeName(node) {
72
+ let current = node.parent;
73
+ while (current !== null) {
74
+ if (current.type === 'class_declaration' || current.type === 'object_declaration') {
75
+ return current.namedChildren.find((child) => child.type === 'type_identifier')?.text ?? null;
76
+ }
77
+ current = current.parent;
78
+ }
79
+ return null;
80
+ }
81
+ function firstSuperclassText(typeNode) {
82
+ if (typeNode.type !== 'class_declaration')
83
+ return null;
84
+ for (const child of typeNode.namedChildren) {
85
+ if (child.type !== 'delegation_specifier')
86
+ continue;
87
+ const ctor = child.namedChildren.find((n) => n.type === 'constructor_invocation');
88
+ const userType = ctor?.namedChildren.find((n) => n.type === 'user_type') ??
89
+ child.namedChildren.find((n) => n.type === 'user_type');
90
+ const name = userType?.namedChildren.find((n) => n.type === 'type_identifier')?.text;
91
+ if (name !== undefined)
92
+ return (0, interpret_js_1.normalizeKotlinType)(name);
93
+ }
94
+ return null;
95
+ }
96
+ function buildReceiverMatch(anchorNode, name, typeText) {
97
+ const out = {
98
+ '@type-binding.self': (0, ast_helpers_js_1.nodeToCapture)('@type-binding.self', anchorNode),
99
+ '@type-binding.name': (0, ast_helpers_js_1.syntheticCapture)('@type-binding.name', anchorNode, name),
100
+ '@type-binding.type': (0, ast_helpers_js_1.syntheticCapture)('@type-binding.type', anchorNode, typeText),
101
+ };
102
+ return out;
103
+ }
@@ -0,0 +1,207 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.kotlinScopeResolver = void 0;
4
+ const index_js_1 = require("../../../../../shared/index.js");
5
+ const mro_js_1 = require("../../scope-resolution/passes/mro.js");
6
+ const ids_js_1 = require("../../scope-resolution/graph-bridge/ids.js");
7
+ const walkers_js_1 = require("../../scope-resolution/scope/walkers.js");
8
+ const shared_js_1 = require("../../type-extractors/shared.js");
9
+ const kotlin_js_1 = require("../kotlin.js");
10
+ const index_js_2 = require("./index.js");
11
+ const companion_scopes_js_1 = require("./companion-scopes.js");
12
+ const capture_side_channel_js_1 = require("./capture-side-channel.js");
13
+ const owners_js_1 = require("./owners.js");
14
+ const package_siblings_js_1 = require("./package-siblings.js");
15
+ const spring_bean_metadata_js_1 = require("./spring-bean-metadata.js");
16
+ const spring_aop_js_1 = require("./spring-aop.js");
17
+ const package_facts_js_1 = require("./package-facts.js");
18
+ const spring_di_js_1 = require("./spring-di.js");
19
+ const spring_conditionals_js_1 = require("./spring-conditionals.js");
20
+ /**
21
+ * Kotlin scope resolver for RFC #909 Ring 3.
22
+ *
23
+ * Kotlin resolves via the scope-resolution registry — production
24
+ * resolution flows through the scope-resolution pipeline as the sole
25
+ * call-resolution path.
26
+ *
27
+ * **Coverage:** 208/208 fixtures pass after the migration sub-issues
28
+ * #1758–#1763, the
29
+ * companion/instance dispatch fix #1756, and the lambda scopes
30
+ * fix #1757. Covers core import, receiver, companion, default-param,
31
+ * vararg, constructor, local assignment-chain, collection-iteration,
32
+ * smart casts (`when (x) { is T -> … }` and `if (x is T)` — #1758),
33
+ * cross-file iterable return propagation (#1759), single-level
34
+ * method-chain fixpoint receiver types (#1760), parameter-type-narrowed
35
+ * overload target-id selection (#1761), virtual dispatch via constructor
36
+ * RHS (`val x: Animal = Dog()` — #1762), interface default-method
37
+ * dispatch via implements-split MRO (#1763), companion-object vs
38
+ * instance member dispatch (#1756) via the `isStaticOnly` hook
39
+ * (including named companions and MRO-shadow / chain-typebinding /
40
+ * value-receiver crossover cases), and lambda-body Block scopes
41
+ * with scoped type-bindings for explicit parameters and implicit
42
+ * `it` (#1757) via `synthesizeKotlinLambdaBindings` plus the
43
+ * `(lambda_literal) @scope.block` query rule.
44
+ *
45
+ * **Legacy parity skip list:** `LEGACY_RESOLVER_PARITY_EXPECTED_FAILURES.kotlin`
46
+ * in `test/integration/resolvers/helpers.ts` records scope-resolver-only
47
+ * correctness wins that the legacy DAG cannot replicate. As of #1756 /
48
+ * #1757 there are 8 entries covering: the bare companion-vs-instance
49
+ * crossover, three MRO-shadow / standalone-chain cases, the chained-
50
+ * forEach lambda-scope case, the named-companion crossover, and the
51
+ * Case-0 / Case-3b / Case-5 companion crossovers under
52
+ * `kotlin-companion-other-cases`. Each entry is documented inline with
53
+ * its issue ref and rationale.
54
+ */
55
+ exports.kotlinScopeResolver = {
56
+ language: index_js_1.SupportedLanguages.Kotlin,
57
+ languageProvider: kotlin_js_1.kotlinProvider,
58
+ importEdgeReason: 'kotlin-scope: import',
59
+ loadResolutionConfig: () => {
60
+ // Drop the module-level `companionScopesByFile` table from any
61
+ // prior workspace pass before this run populates it via
62
+ // `emitKotlinScopeCaptures`. Mirrors the C resolver's
63
+ // `clearStaticNames()` call in `loadResolutionConfig` — the
64
+ // orchestrator awaits this hook exactly once per workspace pass
65
+ // (see `pipeline/phase.ts`), making it the right lifecycle seam
66
+ // for clearing per-language side-channel state. Returns
67
+ // `undefined` because Kotlin has no external resolution config
68
+ // to load.
69
+ (0, companion_scopes_js_1.clearCompanionScopes)();
70
+ (0, capture_side_channel_js_1.clearKotlinClassAnnotationFacts)();
71
+ (0, package_facts_js_1.clearKotlinPackageFacts)();
72
+ return undefined;
73
+ },
74
+ resolveImportTarget: (targetRaw, fromFile, allFilePaths) => {
75
+ const ws = { fromFile, allFilePaths };
76
+ return (0, index_js_2.resolveKotlinImportTarget)({ kind: 'named', localName: '_', importedName: '_', targetRaw }, ws);
77
+ },
78
+ mergeBindings: (existing, incoming) => [...(0, index_js_2.kotlinMergeBindings)([...existing, ...incoming])],
79
+ arityCompatibility: (callsite, def) => (0, index_js_2.kotlinArityCompatibility)(def, callsite),
80
+ buildMro: (graph, parsedFiles, nodeLookup) => buildKotlinMro(graph, parsedFiles, nodeLookup),
81
+ // Worker-boundary restore (see `ScopeResolver.applyCaptureSideChannel`).
82
+ // `emitKotlinScopeCaptures` records per-file companion-object scope ids
83
+ // (`markCompanionScope` → `companionScopesByFile`) as a SIDE EFFECT — that
84
+ // state is NOT serialized onto the returned ParsedFile's scopes/defs. On the
85
+ // worker path those marks are populated in the worker process and lost across
86
+ // the MessageChannel / disk store; the main thread reuses the serialized
87
+ // ParsedFile and skips `extractParsedFile`, so `isKotlinStaticOnly` and
88
+ // `populateCompanionMembersOnEnclosingClass` (owners.ts) would see an empty
89
+ // map and companion/static dispatch would emit zero CALLS edges. The worker
90
+ // stashed a plain-data snapshot on `parsed.captureSideChannel` via
91
+ // `kotlinProvider.collectCaptureSideChannel`; this restores it into the
92
+ // module map WITHOUT any tree-sitter re-parse (the #1983 fix). The
93
+ // freshly-extracted leg never calls this — its marks were just populated in
94
+ // this process. Runs BEFORE `populateOwners` so the restored companion map is
95
+ // visible to it.
96
+ applyCaptureSideChannel: capture_side_channel_js_1.applyKotlinCaptureSideChannel,
97
+ populateOwners: (parsed) => (0, index_js_2.populateKotlinOwners)(parsed),
98
+ isSuperReceiver: (text) => text.trim() === 'super',
99
+ // Subscript route only — Kotlin's collection views (`.values`, `.keys`) are
100
+ // properties on the stdlib types, resolved by the ordinary member walk rather
101
+ // than by unwrapping a generic here.
102
+ //
103
+ // Fed the annotation AS WRITTEN (`List<User>`, `Map<String, User>`), which
104
+ // `normalizeKotlinType` had already reduced to `User`. `undefined` means "not
105
+ // a container", so an `operator fun get` class does not fold `cache[k]` onto
106
+ // `Cache` itself.
107
+ elementTypeOf: shared_js_1.indexOnlyElementType,
108
+ isStaticOnly: owners_js_1.isKotlinStaticOnly,
109
+ fieldFallbackOnMethodLookup: false,
110
+ propagatesReturnTypesAcrossImports: true,
111
+ collapseMemberCallsByCallerTarget: false,
112
+ hoistTypeBindingsToModule: true,
113
+ freeCallsRequireInstanceOwnership: true,
114
+ postExtractSourceTextPolicy: 'uncached-files',
115
+ populateNamespaceSiblings: package_siblings_js_1.populateKotlinPackageSiblings,
116
+ emitPostResolutionEdges: (graph, parsedFiles, nodeLookup, indexes) => {
117
+ (0, spring_bean_metadata_js_1.attachKotlinSpringBeanCandidateMetadata)(graph, parsedFiles, nodeLookup, indexes);
118
+ (0, spring_aop_js_1.attachKotlinSpringAopMetadata)(graph, parsedFiles, nodeLookup, indexes);
119
+ (0, spring_conditionals_js_1.attachKotlinSpringConditionalMetadata)(graph, parsedFiles, nodeLookup, indexes);
120
+ (0, spring_di_js_1.attachKotlinSpringDiMetadata)(graph, parsedFiles, nodeLookup, indexes);
121
+ },
122
+ };
123
+ /**
124
+ * Kotlin MRO builder — extends `defaultLinearize` (EXTENDS-only) with
125
+ * interface ancestors discovered via `IMPLEMENTS` edges. Interface
126
+ * default methods (`interface Validator { fun validate(): Boolean = true }`)
127
+ * are inherited by implementing classes without an explicit override;
128
+ * the generic MRO would not surface them because the implementor has
129
+ * no `EXTENDS` link to the interface (#1763).
130
+ *
131
+ * Interfaces are appended after the EXTENDS chain (Kotlin resolves
132
+ * conflicts by requiring an explicit override, so first-seen-in-MRO
133
+ * ordering is a reasonable approximation for method lookup). Transitive
134
+ * interface inheritance (`interface A : B`) is closed via BFS.
135
+ */
136
+ function buildKotlinMro(graph, parsedFiles, nodeLookup) {
137
+ const mro = (0, mro_js_1.buildMro)(graph, parsedFiles, nodeLookup, mro_js_1.defaultLinearize);
138
+ const defIdByGraphId = new Map();
139
+ for (const parsed of parsedFiles) {
140
+ for (const def of parsed.localDefs) {
141
+ if (!(0, walkers_js_1.isClassLike)(def.type))
142
+ continue;
143
+ const graphId = (0, ids_js_1.resolveDefGraphId)(parsed.filePath, def, nodeLookup);
144
+ if (graphId !== undefined)
145
+ defIdByGraphId.set(graphId, def.nodeId);
146
+ }
147
+ }
148
+ // Direct IMPLEMENTS targets per class-like def.
149
+ const directImpls = new Map();
150
+ for (const rel of graph.iterRelationshipsByType('IMPLEMENTS')) {
151
+ const source = defIdByGraphId.get(rel.sourceId);
152
+ const target = defIdByGraphId.get(rel.targetId);
153
+ if (source === undefined || target === undefined)
154
+ continue;
155
+ let list = directImpls.get(source);
156
+ if (list === undefined) {
157
+ list = [];
158
+ directImpls.set(source, list);
159
+ }
160
+ if (!list.includes(target))
161
+ list.push(target);
162
+ }
163
+ // For each class, append the transitive closure of interfaces reachable
164
+ // through its own + ancestor classes' IMPLEMENTS edges. Walking
165
+ // ancestors picks up interfaces inherited via the EXTENDS chain
166
+ // (e.g. `class C : B; class B : A; interface A` — C inherits A's
167
+ // interface methods through B).
168
+ for (const [classDefId, extendsMro] of mro) {
169
+ const ancestorChain = [classDefId, ...extendsMro];
170
+ const seeds = [];
171
+ for (const ancestorId of ancestorChain) {
172
+ for (const ifaceId of directImpls.get(ancestorId) ?? []) {
173
+ seeds.push(ifaceId);
174
+ }
175
+ }
176
+ if (seeds.length === 0)
177
+ continue;
178
+ const interfaces = closeInterfaces(seeds, directImpls);
179
+ mro.set(classDefId, [...extendsMro, ...interfaces.filter((i) => !extendsMro.includes(i))]);
180
+ }
181
+ // Classes with no EXTENDS still need an MRO entry when they implement
182
+ // interfaces (e.g. `class User : Validator` — no `mro` entry from the
183
+ // EXTENDS-only pass because no EXTENDS edges exist).
184
+ for (const [classDefId, ifaces] of directImpls) {
185
+ if (mro.has(classDefId))
186
+ continue;
187
+ mro.set(classDefId, closeInterfaces([...ifaces], directImpls));
188
+ }
189
+ return mro;
190
+ }
191
+ function closeInterfaces(seeds, directImpls) {
192
+ const out = [];
193
+ const seen = new Set();
194
+ const queue = [...seeds];
195
+ while (queue.length > 0) {
196
+ const cur = queue.shift();
197
+ if (seen.has(cur))
198
+ continue;
199
+ seen.add(cur);
200
+ out.push(cur);
201
+ for (const next of directImpls.get(cur) ?? []) {
202
+ if (!seen.has(next))
203
+ queue.push(next);
204
+ }
205
+ }
206
+ return out;
207
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.kotlinBindingScopeFor = kotlinBindingScopeFor;
4
+ exports.kotlinImportOwningScope = kotlinImportOwningScope;
5
+ exports.kotlinReceiverBinding = kotlinReceiverBinding;
6
+ function kotlinBindingScopeFor(decl, innermost, tree) {
7
+ // Smart-cast narrowed bindings (issue #1758) must stay at the innermost
8
+ // (Block) scope. Their anchor coincides with the Block's range for
9
+ // unbraced arm bodies (`is User -> obj.save()`), which would otherwise
10
+ // trigger scope-extractor auto-hoist into the enclosing function scope
11
+ // and erase the arm-local narrowing.
12
+ if (decl['@type-binding.narrowed'] !== undefined)
13
+ return innermost.id;
14
+ // Lambda-scoped bindings (issue #1757) — explicit lambda parameters
15
+ // and implicit `it` must stay inside the lambda body Block scope.
16
+ // Without this gating, the binding hoists to the enclosing function
17
+ // scope and:
18
+ // - `it` leaks past the closing brace of the lambda, shadowing the
19
+ // parameter-scope `it` (or outer `val it = "outer"`) for everything
20
+ // that follows in the function body.
21
+ // - Nested lambda parameters override each other across siblings.
22
+ // Same mechanism as the smart-cast precedent above.
23
+ if (decl['@type-binding.lambda-scoped'] !== undefined)
24
+ return innermost.id;
25
+ if (decl['@type-binding.return'] === undefined)
26
+ return null;
27
+ let current = innermost;
28
+ while (current !== undefined && current.kind !== 'Module') {
29
+ if (current.parent === null)
30
+ break;
31
+ current = tree.getScope(current.parent);
32
+ }
33
+ return current?.kind === 'Module' ? current.id : null;
34
+ }
35
+ function kotlinImportOwningScope(_imp, _innermost, _tree) {
36
+ return null;
37
+ }
38
+ function kotlinReceiverBinding(functionScope) {
39
+ if (functionScope.kind !== 'Function')
40
+ return null;
41
+ return functionScope.typeBindings.get('this') ?? functionScope.typeBindings.get('super') ?? null;
42
+ }
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.attachKotlinSpringAopMetadata = void 0;
4
+ exports.captureKotlinSpringAopFacts = captureKotlinSpringAopFacts;
5
+ const index_js_1 = require("../../../../../shared/index.js");
6
+ const aop_js_1 = require("../../frameworks/spring/aop.js");
7
+ const ast_helpers_js_1 = require("../../utils/ast-helpers.js");
8
+ const capture_side_channel_js_1 = require("./capture-side-channel.js");
9
+ const package_siblings_js_1 = require("./package-siblings.js");
10
+ const spring_di_js_1 = require("./spring-di.js");
11
+ function scopeId(filePath, node, kind) {
12
+ return (0, index_js_1.makeScopeId)({
13
+ filePath,
14
+ range: (0, ast_helpers_js_1.nodeToCapture)('@spring-aop.owner', node).range,
15
+ kind,
16
+ });
17
+ }
18
+ function ownerRange(node) {
19
+ return (0, ast_helpers_js_1.nodeToCapture)('@spring-aop.owner', node).range;
20
+ }
21
+ /**
22
+ * Capture Spring AOP syntax from the class node already surfaced by Kotlin's
23
+ * scope query. The shared layer resolves annotations and rejects non-default
24
+ * use-site targets after imports and package visibility have finalized.
25
+ */
26
+ function captureKotlinSpringAopFacts(classNode, filePath) {
27
+ const facts = [];
28
+ const classAnnotations = (0, spring_di_js_1.kotlinSpringAnnotationFacts)(classNode);
29
+ const singletonInstance = classNode.type === 'object_declaration' || classNode.type === 'companion_object';
30
+ // Kotlin import aliases can give a Spring annotation any local simple name.
31
+ // Capture annotated owners conservatively, then let the post-import shared
32
+ // resolver keep only recognized Spring AOP annotations. Objects also retain
33
+ // an empty owner fact so the shared phase can distinguish their singleton
34
+ // instance members from true static methods without naming Kotlin.
35
+ if (classAnnotations.length > 0 || singletonInstance) {
36
+ facts.push({
37
+ ownerScopeId: scopeId(filePath, classNode, 'Class'),
38
+ ownerKind: 'class',
39
+ ownerFilePath: filePath,
40
+ ownerRange: ownerRange(classNode),
41
+ ...(singletonInstance ? { singletonInstance: true } : {}),
42
+ annotations: classAnnotations,
43
+ });
44
+ }
45
+ const body = classNode.namedChildren.find((child) => child.type === 'class_body');
46
+ if (body === undefined)
47
+ return facts;
48
+ for (const member of body.namedChildren) {
49
+ if (member.type !== 'function_declaration')
50
+ continue;
51
+ const annotations = (0, spring_di_js_1.kotlinSpringAnnotationFacts)(member);
52
+ if (annotations.length === 0)
53
+ continue;
54
+ facts.push({
55
+ ownerScopeId: scopeId(filePath, member, 'Function'),
56
+ ownerKind: 'callable',
57
+ ownerFilePath: filePath,
58
+ ownerRange: ownerRange(member),
59
+ ...(singletonInstance ? { singletonInstance: true } : {}),
60
+ annotations,
61
+ });
62
+ }
63
+ return facts;
64
+ }
65
+ exports.attachKotlinSpringAopMetadata = (0, aop_js_1.createSpringAopMetadataAttacher)({
66
+ getFacts: capture_side_channel_js_1.getKotlinSpringAopFacts,
67
+ isPackageVisibilityIncomplete: package_siblings_js_1.isKotlinPackageSiblingVisibilityIncomplete,
68
+ });
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.attachKotlinSpringBeanCandidateMetadata = void 0;
4
+ const bean_candidates_js_1 = require("../../frameworks/spring/bean-candidates.js");
5
+ const capture_side_channel_js_1 = require("./capture-side-channel.js");
6
+ const package_siblings_js_1 = require("./package-siblings.js");
7
+ /** Kotlin wiring for the language-neutral Spring candidate engine. */
8
+ exports.attachKotlinSpringBeanCandidateMetadata = (0, bean_candidates_js_1.createSpringBeanCandidateAttacher)({
9
+ getClassAnnotationFacts: capture_side_channel_js_1.getKotlinClassAnnotationFacts,
10
+ isPackageVisibilityIncomplete: package_siblings_js_1.isKotlinPackageSiblingVisibilityIncomplete,
11
+ });