cgraphx 2.0.2 → 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 (680) hide show
  1. package/dist/core/code/engine/cli/analyze-config.js +320 -0
  2. package/dist/core/code/engine/cli/analyze.js +1086 -0
  3. package/dist/core/code/engine/cli/cli-message.js +83 -0
  4. package/dist/core/code/engine/cli/detect-changes-format.js +58 -0
  5. package/dist/core/code/engine/cli/embedding-dims.js +43 -0
  6. package/dist/core/code/engine/cli/format-elapsed.js +12 -0
  7. package/dist/core/code/engine/cli/help-i18n.js +144 -0
  8. package/dist/core/code/engine/cli/i18n/en.js +110 -0
  9. package/dist/core/code/engine/cli/i18n/index.js +47 -0
  10. package/dist/core/code/engine/cli/i18n/resources.js +9 -0
  11. package/dist/core/code/engine/cli/i18n/zh-CN.js +110 -0
  12. package/dist/core/code/engine/cli/lazy-action.js +67 -0
  13. package/dist/core/code/engine/cli/optional-grammars.js +136 -0
  14. package/dist/core/code/engine/cli/resolve-invocation.js +76 -0
  15. package/dist/core/code/engine/cli/status.js +156 -0
  16. package/dist/core/code/engine/cli/tool.js +384 -0
  17. package/dist/core/code/engine/config/ignore-service.js +511 -0
  18. package/dist/core/code/engine/config/supported-languages.js +17 -0
  19. package/dist/core/code/engine/core/analysis-features.js +64 -0
  20. package/dist/core/code/engine/core/analyzer-identity.js +2171 -0
  21. package/dist/core/code/engine/core/git-staleness.js +180 -0
  22. package/dist/core/code/engine/core/graph/graph.js +180 -0
  23. package/dist/core/code/engine/core/graph/import-cycles.js +106 -0
  24. package/dist/core/code/engine/core/graph/types.js +2 -0
  25. package/dist/core/code/engine/core/index-freshness.js +12 -0
  26. package/dist/core/code/engine/core/ingestion/binding-accumulator.js +341 -0
  27. package/dist/core/code/engine/core/ingestion/call-extractors/configs/c-cpp.js +168 -0
  28. package/dist/core/code/engine/core/ingestion/call-extractors/configs/csharp.js +9 -0
  29. package/dist/core/code/engine/core/ingestion/call-extractors/configs/dart.js +8 -0
  30. package/dist/core/code/engine/core/ingestion/call-extractors/configs/go.js +8 -0
  31. package/dist/core/code/engine/core/ingestion/call-extractors/configs/jvm.js +54 -0
  32. package/dist/core/code/engine/core/ingestion/call-extractors/configs/php.js +8 -0
  33. package/dist/core/code/engine/core/ingestion/call-extractors/configs/python.js +8 -0
  34. package/dist/core/code/engine/core/ingestion/call-extractors/configs/ruby.js +8 -0
  35. package/dist/core/code/engine/core/ingestion/call-extractors/configs/rust.js +8 -0
  36. package/dist/core/code/engine/core/ingestion/call-extractors/configs/swift.js +8 -0
  37. package/dist/core/code/engine/core/ingestion/call-extractors/configs/typescript-javascript.js +11 -0
  38. package/dist/core/code/engine/core/ingestion/call-extractors/generic.js +62 -0
  39. package/dist/core/code/engine/core/ingestion/call-processor.js +503 -0
  40. package/dist/core/code/engine/core/ingestion/call-routing.js +98 -0
  41. package/dist/core/code/engine/core/ingestion/call-types.js +3 -0
  42. package/dist/core/code/engine/core/ingestion/cfg/callee-cell-format.js +45 -0
  43. package/dist/core/code/engine/core/ingestion/cfg/cfg-builder.js +202 -0
  44. package/dist/core/code/engine/core/ingestion/cfg/collect.js +81 -0
  45. package/dist/core/code/engine/core/ingestion/cfg/control-dependence.js +185 -0
  46. package/dist/core/code/engine/core/ingestion/cfg/control-flow-context.js +130 -0
  47. package/dist/core/code/engine/core/ingestion/cfg/emit.js +646 -0
  48. package/dist/core/code/engine/core/ingestion/cfg/post-dominators.js +182 -0
  49. package/dist/core/code/engine/core/ingestion/cfg/reaching-def-reason-codec.js +139 -0
  50. package/dist/core/code/engine/core/ingestion/cfg/reaching-defs-graph.js +322 -0
  51. package/dist/core/code/engine/core/ingestion/cfg/reaching-defs.js +792 -0
  52. package/dist/core/code/engine/core/ingestion/cfg/synthetic-escape.js +305 -0
  53. package/dist/core/code/engine/core/ingestion/cfg/traversal-result.js +6 -0
  54. package/dist/core/code/engine/core/ingestion/cfg/types.js +14 -0
  55. package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp-harvest.js +545 -0
  56. package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp.js +590 -0
  57. package/dist/core/code/engine/core/ingestion/cfg/visitors/call-site-harvest.js +356 -0
  58. package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp-harvest.js +593 -0
  59. package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp.js +871 -0
  60. package/dist/core/code/engine/core/ingestion/cfg/visitors/dart-harvest.js +874 -0
  61. package/dist/core/code/engine/core/ingestion/cfg/visitors/dart.js +840 -0
  62. package/dist/core/code/engine/core/ingestion/cfg/visitors/go-harvest.js +625 -0
  63. package/dist/core/code/engine/core/ingestion/cfg/visitors/go.js +642 -0
  64. package/dist/core/code/engine/core/ingestion/cfg/visitors/java-harvest.js +517 -0
  65. package/dist/core/code/engine/core/ingestion/cfg/visitors/java.js +816 -0
  66. package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin-harvest.js +723 -0
  67. package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin.js +813 -0
  68. package/dist/core/code/engine/core/ingestion/cfg/visitors/php-harvest.js +630 -0
  69. package/dist/core/code/engine/core/ingestion/cfg/visitors/php.js +725 -0
  70. package/dist/core/code/engine/core/ingestion/cfg/visitors/python-harvest.js +776 -0
  71. package/dist/core/code/engine/core/ingestion/cfg/visitors/python.js +562 -0
  72. package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby-harvest.js +591 -0
  73. package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby.js +760 -0
  74. package/dist/core/code/engine/core/ingestion/cfg/visitors/rust-harvest.js +877 -0
  75. package/dist/core/code/engine/core/ingestion/cfg/visitors/rust.js +562 -0
  76. package/dist/core/code/engine/core/ingestion/cfg/visitors/scope-tree-harvest.js +120 -0
  77. package/dist/core/code/engine/core/ingestion/cfg/visitors/swift-harvest.js +683 -0
  78. package/dist/core/code/engine/core/ingestion/cfg/visitors/swift.js +791 -0
  79. package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript-harvest.js +1060 -0
  80. package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript.js +587 -0
  81. package/dist/core/code/engine/core/ingestion/class-extractors/configs/c-cpp.js +77 -0
  82. package/dist/core/code/engine/core/ingestion/class-extractors/configs/csharp.js +24 -0
  83. package/dist/core/code/engine/core/ingestion/class-extractors/configs/dart.js +10 -0
  84. package/dist/core/code/engine/core/ingestion/class-extractors/configs/go.js +28 -0
  85. package/dist/core/code/engine/core/ingestion/class-extractors/configs/jvm.js +67 -0
  86. package/dist/core/code/engine/core/ingestion/class-extractors/configs/php.js +10 -0
  87. package/dist/core/code/engine/core/ingestion/class-extractors/configs/python.js +10 -0
  88. package/dist/core/code/engine/core/ingestion/class-extractors/configs/ruby.js +13 -0
  89. package/dist/core/code/engine/core/ingestion/class-extractors/configs/rust.js +10 -0
  90. package/dist/core/code/engine/core/ingestion/class-extractors/configs/swift.js +21 -0
  91. package/dist/core/code/engine/core/ingestion/class-extractors/configs/typescript-javascript.js +31 -0
  92. package/dist/core/code/engine/core/ingestion/class-extractors/generic.js +144 -0
  93. package/dist/core/code/engine/core/ingestion/class-types.js +2 -0
  94. package/dist/core/code/engine/core/ingestion/cluster-enricher.js +174 -0
  95. package/dist/core/code/engine/core/ingestion/community-processor.js +604 -0
  96. package/dist/core/code/engine/core/ingestion/constants.js +26 -0
  97. package/dist/core/code/engine/core/ingestion/cpp-ue-preprocessor.js +263 -0
  98. package/dist/core/code/engine/core/ingestion/csharp-namespace-gate.js +133 -0
  99. package/dist/core/code/engine/core/ingestion/di-extractors/index.js +38 -0
  100. package/dist/core/code/engine/core/ingestion/di-extractors/spring.js +310 -0
  101. package/dist/core/code/engine/core/ingestion/emit-references.js +244 -0
  102. package/dist/core/code/engine/core/ingestion/entry-point-scoring.js +201 -0
  103. package/dist/core/code/engine/core/ingestion/export-detection.js +244 -0
  104. package/dist/core/code/engine/core/ingestion/field-extractor.js +29 -0
  105. package/dist/core/code/engine/core/ingestion/field-extractors/configs/c-cpp.js +107 -0
  106. package/dist/core/code/engine/core/ingestion/field-extractors/configs/csharp.js +124 -0
  107. package/dist/core/code/engine/core/ingestion/field-extractors/configs/dart.js +99 -0
  108. package/dist/core/code/engine/core/ingestion/field-extractors/configs/go.js +102 -0
  109. package/dist/core/code/engine/core/ingestion/field-extractors/configs/helpers.js +198 -0
  110. package/dist/core/code/engine/core/ingestion/field-extractors/configs/jvm.js +172 -0
  111. package/dist/core/code/engine/core/ingestion/field-extractors/configs/php.js +67 -0
  112. package/dist/core/code/engine/core/ingestion/field-extractors/configs/python.js +94 -0
  113. package/dist/core/code/engine/core/ingestion/field-extractors/configs/ruby.js +79 -0
  114. package/dist/core/code/engine/core/ingestion/field-extractors/configs/rust.js +55 -0
  115. package/dist/core/code/engine/core/ingestion/field-extractors/configs/swift.js +93 -0
  116. package/dist/core/code/engine/core/ingestion/field-extractors/configs/typescript-javascript.js +59 -0
  117. package/dist/core/code/engine/core/ingestion/field-extractors/generic.js +147 -0
  118. package/dist/core/code/engine/core/ingestion/field-extractors/typescript.js +266 -0
  119. package/dist/core/code/engine/core/ingestion/field-types.js +3 -0
  120. package/dist/core/code/engine/core/ingestion/filesystem-walker.js +136 -0
  121. package/dist/core/code/engine/core/ingestion/finalize-orchestrator.js +159 -0
  122. package/dist/core/code/engine/core/ingestion/framework-detection.js +432 -0
  123. package/dist/core/code/engine/core/ingestion/frameworks/spring/analysis-features.js +38 -0
  124. package/dist/core/code/engine/core/ingestion/frameworks/spring/annotation-arguments.js +234 -0
  125. package/dist/core/code/engine/core/ingestion/frameworks/spring/aop-candidates.js +88 -0
  126. package/dist/core/code/engine/core/ingestion/frameworks/spring/aop.js +487 -0
  127. package/dist/core/code/engine/core/ingestion/frameworks/spring/auto-configuration.js +21 -0
  128. package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-candidates.js +189 -0
  129. package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-catalog.js +32 -0
  130. package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-factories.js +73 -0
  131. package/dist/core/code/engine/core/ingestion/frameworks/spring/conditionals.js +323 -0
  132. package/dist/core/code/engine/core/ingestion/frameworks/spring/config-bindings.js +119 -0
  133. package/dist/core/code/engine/core/ingestion/frameworks/spring/di-metadata.js +385 -0
  134. package/dist/core/code/engine/core/ingestion/frameworks/spring/resource-injection.js +96 -0
  135. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/c-cpp.js +17 -0
  136. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/csharp.js +46 -0
  137. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/dart.js +59 -0
  138. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/go.js +30 -0
  139. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/jvm.js +73 -0
  140. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/php.js +19 -0
  141. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/python.js +45 -0
  142. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/ruby.js +20 -0
  143. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/rust.js +58 -0
  144. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/swift.js +94 -0
  145. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/typescript-javascript.js +26 -0
  146. package/dist/core/code/engine/core/ingestion/import-resolvers/csharp.js +128 -0
  147. package/dist/core/code/engine/core/ingestion/import-resolvers/go.js +50 -0
  148. package/dist/core/code/engine/core/ingestion/import-resolvers/jvm.js +112 -0
  149. package/dist/core/code/engine/core/ingestion/import-resolvers/php.js +80 -0
  150. package/dist/core/code/engine/core/ingestion/import-resolvers/python.js +75 -0
  151. package/dist/core/code/engine/core/ingestion/import-resolvers/resolver-factory.js +36 -0
  152. package/dist/core/code/engine/core/ingestion/import-resolvers/ruby.js +20 -0
  153. package/dist/core/code/engine/core/ingestion/import-resolvers/rust.js +79 -0
  154. package/dist/core/code/engine/core/ingestion/import-resolvers/standard.js +180 -0
  155. package/dist/core/code/engine/core/ingestion/import-resolvers/types.js +7 -0
  156. package/dist/core/code/engine/core/ingestion/import-resolvers/utils.js +153 -0
  157. package/dist/core/code/engine/core/ingestion/import-target-adapter.js +99 -0
  158. package/dist/core/code/engine/core/ingestion/language-config.js +391 -0
  159. package/dist/core/code/engine/core/ingestion/language-provider.js +25 -0
  160. package/dist/core/code/engine/core/ingestion/languages/c/arity-metadata.js +98 -0
  161. package/dist/core/code/engine/core/ingestion/languages/c/arity.js +21 -0
  162. package/dist/core/code/engine/core/ingestion/languages/c/capture-side-channel.js +69 -0
  163. package/dist/core/code/engine/core/ingestion/languages/c/captures.js +189 -0
  164. package/dist/core/code/engine/core/ingestion/languages/c/header-scan.js +58 -0
  165. package/dist/core/code/engine/core/ingestion/languages/c/import-decomposer.js +68 -0
  166. package/dist/core/code/engine/core/ingestion/languages/c/import-target.js +103 -0
  167. package/dist/core/code/engine/core/ingestion/languages/c/index.js +33 -0
  168. package/dist/core/code/engine/core/ingestion/languages/c/interpret.js +53 -0
  169. package/dist/core/code/engine/core/ingestion/languages/c/merge-bindings.js +26 -0
  170. package/dist/core/code/engine/core/ingestion/languages/c/query.js +210 -0
  171. package/dist/core/code/engine/core/ingestion/languages/c/scope-resolver.js +112 -0
  172. package/dist/core/code/engine/core/ingestion/languages/c/simple-hooks.js +24 -0
  173. package/dist/core/code/engine/core/ingestion/languages/c/static-linkage.js +109 -0
  174. package/dist/core/code/engine/core/ingestion/languages/c-cpp.js +506 -0
  175. package/dist/core/code/engine/core/ingestion/languages/cpp/adl.js +804 -0
  176. package/dist/core/code/engine/core/ingestion/languages/cpp/arity-metadata.js +258 -0
  177. package/dist/core/code/engine/core/ingestion/languages/cpp/arity.js +37 -0
  178. package/dist/core/code/engine/core/ingestion/languages/cpp/capture-side-channel.js +89 -0
  179. package/dist/core/code/engine/core/ingestion/languages/cpp/captures.js +1975 -0
  180. package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-extractor.js +311 -0
  181. package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-filter.js +210 -0
  182. package/dist/core/code/engine/core/ingestion/languages/cpp/conversion-rank.js +163 -0
  183. package/dist/core/code/engine/core/ingestion/languages/cpp/file-local-linkage.js +327 -0
  184. package/dist/core/code/engine/core/ingestion/languages/cpp/header-scan.js +53 -0
  185. package/dist/core/code/engine/core/ingestion/languages/cpp/import-decomposer.js +134 -0
  186. package/dist/core/code/engine/core/ingestion/languages/cpp/import-target.js +16 -0
  187. package/dist/core/code/engine/core/ingestion/languages/cpp/index.js +33 -0
  188. package/dist/core/code/engine/core/ingestion/languages/cpp/inline-namespaces.js +379 -0
  189. package/dist/core/code/engine/core/ingestion/languages/cpp/interpret.js +239 -0
  190. package/dist/core/code/engine/core/ingestion/languages/cpp/member-lookup.js +470 -0
  191. package/dist/core/code/engine/core/ingestion/languages/cpp/merge-bindings.js +32 -0
  192. package/dist/core/code/engine/core/ingestion/languages/cpp/query.js +763 -0
  193. package/dist/core/code/engine/core/ingestion/languages/cpp/range-bindings.js +230 -0
  194. package/dist/core/code/engine/core/ingestion/languages/cpp/scope-resolver.js +354 -0
  195. package/dist/core/code/engine/core/ingestion/languages/cpp/simple-hooks.js +67 -0
  196. package/dist/core/code/engine/core/ingestion/languages/cpp/two-phase-lookup.js +348 -0
  197. package/dist/core/code/engine/core/ingestion/languages/cpp/type-classifier.js +56 -0
  198. package/dist/core/code/engine/core/ingestion/languages/cpp/user-defined-conversions.js +128 -0
  199. package/dist/core/code/engine/core/ingestion/languages/csharp/accessor-unwrap.js +67 -0
  200. package/dist/core/code/engine/core/ingestion/languages/csharp/arity-metadata.js +49 -0
  201. package/dist/core/code/engine/core/ingestion/languages/csharp/arity.js +40 -0
  202. package/dist/core/code/engine/core/ingestion/languages/csharp/cache-stats.js +32 -0
  203. package/dist/core/code/engine/core/ingestion/languages/csharp/captures.js +557 -0
  204. package/dist/core/code/engine/core/ingestion/languages/csharp/import-decomposer.js +96 -0
  205. package/dist/core/code/engine/core/ingestion/languages/csharp/import-target.js +176 -0
  206. package/dist/core/code/engine/core/ingestion/languages/csharp/index.js +95 -0
  207. package/dist/core/code/engine/core/ingestion/languages/csharp/interpret.js +150 -0
  208. package/dist/core/code/engine/core/ingestion/languages/csharp/merge-bindings.js +58 -0
  209. package/dist/core/code/engine/core/ingestion/languages/csharp/namespace-siblings.js +708 -0
  210. package/dist/core/code/engine/core/ingestion/languages/csharp/qualified-type-names.js +62 -0
  211. package/dist/core/code/engine/core/ingestion/languages/csharp/query.js +578 -0
  212. package/dist/core/code/engine/core/ingestion/languages/csharp/receiver-binding.js +142 -0
  213. package/dist/core/code/engine/core/ingestion/languages/csharp/resolution-config.js +18 -0
  214. package/dist/core/code/engine/core/ingestion/languages/csharp/scope-resolver.js +84 -0
  215. package/dist/core/code/engine/core/ingestion/languages/csharp/simple-hooks.js +81 -0
  216. package/dist/core/code/engine/core/ingestion/languages/csharp.js +204 -0
  217. package/dist/core/code/engine/core/ingestion/languages/dart/arity-metadata.js +38 -0
  218. package/dist/core/code/engine/core/ingestion/languages/dart/arity.js +34 -0
  219. package/dist/core/code/engine/core/ingestion/languages/dart/built-ins.js +37 -0
  220. package/dist/core/code/engine/core/ingestion/languages/dart/cache-stats.js +30 -0
  221. package/dist/core/code/engine/core/ingestion/languages/dart/captures.js +1096 -0
  222. package/dist/core/code/engine/core/ingestion/languages/dart/expand-wildcards.js +34 -0
  223. package/dist/core/code/engine/core/ingestion/languages/dart/extension-type-preprocess.js +33 -0
  224. package/dist/core/code/engine/core/ingestion/languages/dart/import-target.js +68 -0
  225. package/dist/core/code/engine/core/ingestion/languages/dart/index.js +45 -0
  226. package/dist/core/code/engine/core/ingestion/languages/dart/interpret.js +101 -0
  227. package/dist/core/code/engine/core/ingestion/languages/dart/merge-bindings.js +42 -0
  228. package/dist/core/code/engine/core/ingestion/languages/dart/query.js +246 -0
  229. package/dist/core/code/engine/core/ingestion/languages/dart/receiver-binding.js +90 -0
  230. package/dist/core/code/engine/core/ingestion/languages/dart/scope-resolver.js +197 -0
  231. package/dist/core/code/engine/core/ingestion/languages/dart/signature-bindings.js +54 -0
  232. package/dist/core/code/engine/core/ingestion/languages/dart/simple-hooks.js +61 -0
  233. package/dist/core/code/engine/core/ingestion/languages/dart.js +138 -0
  234. package/dist/core/code/engine/core/ingestion/languages/go/arity-metadata.js +71 -0
  235. package/dist/core/code/engine/core/ingestion/languages/go/arity.js +17 -0
  236. package/dist/core/code/engine/core/ingestion/languages/go/cache-stats.js +21 -0
  237. package/dist/core/code/engine/core/ingestion/languages/go/captures.js +492 -0
  238. package/dist/core/code/engine/core/ingestion/languages/go/expand-wildcards.js +97 -0
  239. package/dist/core/code/engine/core/ingestion/languages/go/generic-type-parameters.js +146 -0
  240. package/dist/core/code/engine/core/ingestion/languages/go/import-decomposer.js +47 -0
  241. package/dist/core/code/engine/core/ingestion/languages/go/import-target.js +70 -0
  242. package/dist/core/code/engine/core/ingestion/languages/go/index.js +39 -0
  243. package/dist/core/code/engine/core/ingestion/languages/go/interface-impls.js +955 -0
  244. package/dist/core/code/engine/core/ingestion/languages/go/interpret.js +177 -0
  245. package/dist/core/code/engine/core/ingestion/languages/go/merge-bindings.js +21 -0
  246. package/dist/core/code/engine/core/ingestion/languages/go/method-owners.js +131 -0
  247. package/dist/core/code/engine/core/ingestion/languages/go/namespace-mirror.js +56 -0
  248. package/dist/core/code/engine/core/ingestion/languages/go/package-clause.js +79 -0
  249. package/dist/core/code/engine/core/ingestion/languages/go/package-siblings.js +83 -0
  250. package/dist/core/code/engine/core/ingestion/languages/go/query.js +298 -0
  251. package/dist/core/code/engine/core/ingestion/languages/go/range-binding.js +127 -0
  252. package/dist/core/code/engine/core/ingestion/languages/go/receiver-binding.js +24 -0
  253. package/dist/core/code/engine/core/ingestion/languages/go/scope-resolver.js +75 -0
  254. package/dist/core/code/engine/core/ingestion/languages/go/simple-hooks.js +31 -0
  255. package/dist/core/code/engine/core/ingestion/languages/go/type-binding.js +279 -0
  256. package/dist/core/code/engine/core/ingestion/languages/go.js +160 -0
  257. package/dist/core/code/engine/core/ingestion/languages/index.js +66 -0
  258. package/dist/core/code/engine/core/ingestion/languages/java/analysis-features.js +16 -0
  259. package/dist/core/code/engine/core/ingestion/languages/java/arity-metadata.js +43 -0
  260. package/dist/core/code/engine/core/ingestion/languages/java/arity.js +27 -0
  261. package/dist/core/code/engine/core/ingestion/languages/java/cache-stats.js +32 -0
  262. package/dist/core/code/engine/core/ingestion/languages/java/capture-side-channel.js +123 -0
  263. package/dist/core/code/engine/core/ingestion/languages/java/captures.js +791 -0
  264. package/dist/core/code/engine/core/ingestion/languages/java/import-decomposer.js +88 -0
  265. package/dist/core/code/engine/core/ingestion/languages/java/import-target.js +103 -0
  266. package/dist/core/code/engine/core/ingestion/languages/java/index.js +43 -0
  267. package/dist/core/code/engine/core/ingestion/languages/java/interpret.js +146 -0
  268. package/dist/core/code/engine/core/ingestion/languages/java/merge-bindings.js +43 -0
  269. package/dist/core/code/engine/core/ingestion/languages/java/package-facts.js +16 -0
  270. package/dist/core/code/engine/core/ingestion/languages/java/package-siblings.js +11 -0
  271. package/dist/core/code/engine/core/ingestion/languages/java/query.js +319 -0
  272. package/dist/core/code/engine/core/ingestion/languages/java/receiver-binding.js +98 -0
  273. package/dist/core/code/engine/core/ingestion/languages/java/scope-resolver.js +213 -0
  274. package/dist/core/code/engine/core/ingestion/languages/java/simple-hooks.js +39 -0
  275. package/dist/core/code/engine/core/ingestion/languages/java/spring-aop.js +53 -0
  276. package/dist/core/code/engine/core/ingestion/languages/java/spring-bean-metadata.js +11 -0
  277. package/dist/core/code/engine/core/ingestion/languages/java/spring-conditionals.js +52 -0
  278. package/dist/core/code/engine/core/ingestion/languages/java/spring-config-bindings.js +222 -0
  279. package/dist/core/code/engine/core/ingestion/languages/java/spring-di.js +165 -0
  280. package/dist/core/code/engine/core/ingestion/languages/java.js +192 -0
  281. package/dist/core/code/engine/core/ingestion/languages/javascript/arity.js +15 -0
  282. package/dist/core/code/engine/core/ingestion/languages/javascript/captures.js +1122 -0
  283. package/dist/core/code/engine/core/ingestion/languages/javascript/import-target.js +56 -0
  284. package/dist/core/code/engine/core/ingestion/languages/javascript/index.js +109 -0
  285. package/dist/core/code/engine/core/ingestion/languages/javascript/interpret.js +45 -0
  286. package/dist/core/code/engine/core/ingestion/languages/javascript/merge-bindings.js +21 -0
  287. package/dist/core/code/engine/core/ingestion/languages/javascript/query.js +659 -0
  288. package/dist/core/code/engine/core/ingestion/languages/javascript/scope-resolver.js +78 -0
  289. package/dist/core/code/engine/core/ingestion/languages/javascript/simple-hooks.js +44 -0
  290. package/dist/core/code/engine/core/ingestion/languages/jvm/package-facts.js +46 -0
  291. package/dist/core/code/engine/core/ingestion/languages/jvm/package-siblings.js +200 -0
  292. package/dist/core/code/engine/core/ingestion/languages/kotlin/arity-metadata.js +23 -0
  293. package/dist/core/code/engine/core/ingestion/languages/kotlin/arity.js +18 -0
  294. package/dist/core/code/engine/core/ingestion/languages/kotlin/cache-stats.js +21 -0
  295. package/dist/core/code/engine/core/ingestion/languages/kotlin/capture-side-channel.js +160 -0
  296. package/dist/core/code/engine/core/ingestion/languages/kotlin/captures.js +1262 -0
  297. package/dist/core/code/engine/core/ingestion/languages/kotlin/companion-scopes.js +72 -0
  298. package/dist/core/code/engine/core/ingestion/languages/kotlin/import-decomposer.js +40 -0
  299. package/dist/core/code/engine/core/ingestion/languages/kotlin/import-target.js +135 -0
  300. package/dist/core/code/engine/core/ingestion/languages/kotlin/index.js +26 -0
  301. package/dist/core/code/engine/core/ingestion/languages/kotlin/interpret.js +75 -0
  302. package/dist/core/code/engine/core/ingestion/languages/kotlin/merge-bindings.js +28 -0
  303. package/dist/core/code/engine/core/ingestion/languages/kotlin/owners.js +134 -0
  304. package/dist/core/code/engine/core/ingestion/languages/kotlin/package-facts.js +16 -0
  305. package/dist/core/code/engine/core/ingestion/languages/kotlin/package-siblings.js +11 -0
  306. package/dist/core/code/engine/core/ingestion/languages/kotlin/query.js +243 -0
  307. package/dist/core/code/engine/core/ingestion/languages/kotlin/receiver-binding.js +103 -0
  308. package/dist/core/code/engine/core/ingestion/languages/kotlin/scope-resolver.js +207 -0
  309. package/dist/core/code/engine/core/ingestion/languages/kotlin/simple-hooks.js +42 -0
  310. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-aop.js +68 -0
  311. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-bean-metadata.js +11 -0
  312. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-conditionals.js +53 -0
  313. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-di.js +304 -0
  314. package/dist/core/code/engine/core/ingestion/languages/kotlin.js +189 -0
  315. package/dist/core/code/engine/core/ingestion/languages/php/arity-metadata.js +66 -0
  316. package/dist/core/code/engine/core/ingestion/languages/php/arity.js +43 -0
  317. package/dist/core/code/engine/core/ingestion/languages/php/cache-stats.js +32 -0
  318. package/dist/core/code/engine/core/ingestion/languages/php/captures.js +1166 -0
  319. package/dist/core/code/engine/core/ingestion/languages/php/import-decomposer.js +238 -0
  320. package/dist/core/code/engine/core/ingestion/languages/php/import-target.js +213 -0
  321. package/dist/core/code/engine/core/ingestion/languages/php/index.js +85 -0
  322. package/dist/core/code/engine/core/ingestion/languages/php/interpret.js +256 -0
  323. package/dist/core/code/engine/core/ingestion/languages/php/merge-bindings.js +50 -0
  324. package/dist/core/code/engine/core/ingestion/languages/php/namespace-siblings.js +353 -0
  325. package/dist/core/code/engine/core/ingestion/languages/php/query.js +391 -0
  326. package/dist/core/code/engine/core/ingestion/languages/php/receiver-binding.js +135 -0
  327. package/dist/core/code/engine/core/ingestion/languages/php/scope-resolver.js +361 -0
  328. package/dist/core/code/engine/core/ingestion/languages/php/simple-hooks.js +116 -0
  329. package/dist/core/code/engine/core/ingestion/languages/php.js +302 -0
  330. package/dist/core/code/engine/core/ingestion/languages/python/arity-metadata.js +49 -0
  331. package/dist/core/code/engine/core/ingestion/languages/python/arity.js +41 -0
  332. package/dist/core/code/engine/core/ingestion/languages/python/cache-stats.js +34 -0
  333. package/dist/core/code/engine/core/ingestion/languages/python/captures.js +299 -0
  334. package/dist/core/code/engine/core/ingestion/languages/python/depends-references.js +68 -0
  335. package/dist/core/code/engine/core/ingestion/languages/python/import-decomposer.js +115 -0
  336. package/dist/core/code/engine/core/ingestion/languages/python/import-target.js +440 -0
  337. package/dist/core/code/engine/core/ingestion/languages/python/index-stats.js +30 -0
  338. package/dist/core/code/engine/core/ingestion/languages/python/index.js +96 -0
  339. package/dist/core/code/engine/core/ingestion/languages/python/interpret.js +430 -0
  340. package/dist/core/code/engine/core/ingestion/languages/python/merge-bindings.js +47 -0
  341. package/dist/core/code/engine/core/ingestion/languages/python/query.js +323 -0
  342. package/dist/core/code/engine/core/ingestion/languages/python/receiver-binding.js +310 -0
  343. package/dist/core/code/engine/core/ingestion/languages/python/scope-resolver.js +80 -0
  344. package/dist/core/code/engine/core/ingestion/languages/python/simple-hooks.js +53 -0
  345. package/dist/core/code/engine/core/ingestion/languages/python.js +140 -0
  346. package/dist/core/code/engine/core/ingestion/languages/ruby/arity.js +41 -0
  347. package/dist/core/code/engine/core/ingestion/languages/ruby/cache-stats.js +21 -0
  348. package/dist/core/code/engine/core/ingestion/languages/ruby/captures.js +864 -0
  349. package/dist/core/code/engine/core/ingestion/languages/ruby/import-target.js +88 -0
  350. package/dist/core/code/engine/core/ingestion/languages/ruby/index.js +29 -0
  351. package/dist/core/code/engine/core/ingestion/languages/ruby/interpret.js +115 -0
  352. package/dist/core/code/engine/core/ingestion/languages/ruby/merge-bindings.js +21 -0
  353. package/dist/core/code/engine/core/ingestion/languages/ruby/query.js +349 -0
  354. package/dist/core/code/engine/core/ingestion/languages/ruby/receiver-binding.js +70 -0
  355. package/dist/core/code/engine/core/ingestion/languages/ruby/scope-resolver.js +263 -0
  356. package/dist/core/code/engine/core/ingestion/languages/ruby/simple-hooks.js +68 -0
  357. package/dist/core/code/engine/core/ingestion/languages/ruby.js +215 -0
  358. package/dist/core/code/engine/core/ingestion/languages/rust/arity.js +16 -0
  359. package/dist/core/code/engine/core/ingestion/languages/rust/cache-stats.js +21 -0
  360. package/dist/core/code/engine/core/ingestion/languages/rust/captures.js +304 -0
  361. package/dist/core/code/engine/core/ingestion/languages/rust/import-decomposer.js +167 -0
  362. package/dist/core/code/engine/core/ingestion/languages/rust/import-target.js +108 -0
  363. package/dist/core/code/engine/core/ingestion/languages/rust/index.js +29 -0
  364. package/dist/core/code/engine/core/ingestion/languages/rust/interpret.js +201 -0
  365. package/dist/core/code/engine/core/ingestion/languages/rust/merge-bindings.js +21 -0
  366. package/dist/core/code/engine/core/ingestion/languages/rust/method-owners.js +76 -0
  367. package/dist/core/code/engine/core/ingestion/languages/rust/module-path.js +222 -0
  368. package/dist/core/code/engine/core/ingestion/languages/rust/qualified-call.js +482 -0
  369. package/dist/core/code/engine/core/ingestion/languages/rust/query.js +280 -0
  370. package/dist/core/code/engine/core/ingestion/languages/rust/range-binding.js +687 -0
  371. package/dist/core/code/engine/core/ingestion/languages/rust/receiver-binding.js +148 -0
  372. package/dist/core/code/engine/core/ingestion/languages/rust/scope-resolver.js +151 -0
  373. package/dist/core/code/engine/core/ingestion/languages/rust/simple-hooks.js +32 -0
  374. package/dist/core/code/engine/core/ingestion/languages/rust.js +183 -0
  375. package/dist/core/code/engine/core/ingestion/languages/swift/arity-metadata.js +44 -0
  376. package/dist/core/code/engine/core/ingestion/languages/swift/arity.js +45 -0
  377. package/dist/core/code/engine/core/ingestion/languages/swift/base-type.js +30 -0
  378. package/dist/core/code/engine/core/ingestion/languages/swift/cache-stats.js +32 -0
  379. package/dist/core/code/engine/core/ingestion/languages/swift/captures.js +594 -0
  380. package/dist/core/code/engine/core/ingestion/languages/swift/conditional-directive-preprocess.js +256 -0
  381. package/dist/core/code/engine/core/ingestion/languages/swift/implicit-imports.js +60 -0
  382. package/dist/core/code/engine/core/ingestion/languages/swift/import-decomposer.js +87 -0
  383. package/dist/core/code/engine/core/ingestion/languages/swift/import-target.js +84 -0
  384. package/dist/core/code/engine/core/ingestion/languages/swift/index.js +56 -0
  385. package/dist/core/code/engine/core/ingestion/languages/swift/interpret.js +93 -0
  386. package/dist/core/code/engine/core/ingestion/languages/swift/merge-bindings.js +51 -0
  387. package/dist/core/code/engine/core/ingestion/languages/swift/query.js +226 -0
  388. package/dist/core/code/engine/core/ingestion/languages/swift/receiver-binding.js +169 -0
  389. package/dist/core/code/engine/core/ingestion/languages/swift/scope-resolver.js +192 -0
  390. package/dist/core/code/engine/core/ingestion/languages/swift/sibling-type-bindings.js +68 -0
  391. package/dist/core/code/engine/core/ingestion/languages/swift/signature-bindings.js +69 -0
  392. package/dist/core/code/engine/core/ingestion/languages/swift/simple-hooks.js +65 -0
  393. package/dist/core/code/engine/core/ingestion/languages/swift/target-grouping.js +97 -0
  394. package/dist/core/code/engine/core/ingestion/languages/swift/target-siblings.js +74 -0
  395. package/dist/core/code/engine/core/ingestion/languages/swift.js +246 -0
  396. package/dist/core/code/engine/core/ingestion/languages/typescript/arity-metadata.js +106 -0
  397. package/dist/core/code/engine/core/ingestion/languages/typescript/arity.js +57 -0
  398. package/dist/core/code/engine/core/ingestion/languages/typescript/array-callback.js +58 -0
  399. package/dist/core/code/engine/core/ingestion/languages/typescript/cache-stats.js +34 -0
  400. package/dist/core/code/engine/core/ingestion/languages/typescript/captures.js +956 -0
  401. package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-export-assignment.js +535 -0
  402. package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-module-exports.js +196 -0
  403. package/dist/core/code/engine/core/ingestion/languages/typescript/import-decomposer.js +374 -0
  404. package/dist/core/code/engine/core/ingestion/languages/typescript/import-target.js +65 -0
  405. package/dist/core/code/engine/core/ingestion/languages/typescript/index.js +108 -0
  406. package/dist/core/code/engine/core/ingestion/languages/typescript/interpret.js +344 -0
  407. package/dist/core/code/engine/core/ingestion/languages/typescript/merge-bindings.js +161 -0
  408. package/dist/core/code/engine/core/ingestion/languages/typescript/nuxt-auto-imports.js +325 -0
  409. package/dist/core/code/engine/core/ingestion/languages/typescript/query.js +1328 -0
  410. package/dist/core/code/engine/core/ingestion/languages/typescript/receiver-binding.js +201 -0
  411. package/dist/core/code/engine/core/ingestion/languages/typescript/scope-resolver.js +293 -0
  412. package/dist/core/code/engine/core/ingestion/languages/typescript/simple-hooks.js +139 -0
  413. package/dist/core/code/engine/core/ingestion/languages/typescript.js +455 -0
  414. package/dist/core/code/engine/core/ingestion/languages/vue/captures.js +70 -0
  415. package/dist/core/code/engine/core/ingestion/languages/vue/import-target.js +61 -0
  416. package/dist/core/code/engine/core/ingestion/languages/vue/index.js +55 -0
  417. package/dist/core/code/engine/core/ingestion/languages/vue/scope-resolver.js +295 -0
  418. package/dist/core/code/engine/core/ingestion/languages/vue.js +96 -0
  419. package/dist/core/code/engine/core/ingestion/local-symbol-pruner.js +68 -0
  420. package/dist/core/code/engine/core/ingestion/method-extractors/configs/c-cpp.js +387 -0
  421. package/dist/core/code/engine/core/ingestion/method-extractors/configs/csharp.js +290 -0
  422. package/dist/core/code/engine/core/ingestion/method-extractors/configs/dart.js +392 -0
  423. package/dist/core/code/engine/core/ingestion/method-extractors/configs/go.js +179 -0
  424. package/dist/core/code/engine/core/ingestion/method-extractors/configs/jvm.js +350 -0
  425. package/dist/core/code/engine/core/ingestion/method-extractors/configs/php.js +306 -0
  426. package/dist/core/code/engine/core/ingestion/method-extractors/configs/python.js +312 -0
  427. package/dist/core/code/engine/core/ingestion/method-extractors/configs/ruby.js +289 -0
  428. package/dist/core/code/engine/core/ingestion/method-extractors/configs/rust.js +198 -0
  429. package/dist/core/code/engine/core/ingestion/method-extractors/configs/swift.js +286 -0
  430. package/dist/core/code/engine/core/ingestion/method-extractors/configs/typescript-javascript.js +341 -0
  431. package/dist/core/code/engine/core/ingestion/method-extractors/generic.js +209 -0
  432. package/dist/core/code/engine/core/ingestion/method-types.js +3 -0
  433. package/dist/core/code/engine/core/ingestion/model/field-registry.js +41 -0
  434. package/dist/core/code/engine/core/ingestion/model/index.js +52 -0
  435. package/dist/core/code/engine/core/ingestion/model/method-registry.js +138 -0
  436. package/dist/core/code/engine/core/ingestion/model/owned-members-lookup.js +46 -0
  437. package/dist/core/code/engine/core/ingestion/model/registration-table.js +234 -0
  438. package/dist/core/code/engine/core/ingestion/model/resolve.js +183 -0
  439. package/dist/core/code/engine/core/ingestion/model/scope-resolution-indexes.js +43 -0
  440. package/dist/core/code/engine/core/ingestion/model/semantic-model.js +179 -0
  441. package/dist/core/code/engine/core/ingestion/model/symbol-table.js +216 -0
  442. package/dist/core/code/engine/core/ingestion/model/type-registry.js +84 -0
  443. package/dist/core/code/engine/core/ingestion/mro-processor.js +709 -0
  444. package/dist/core/code/engine/core/ingestion/parsing-processor.js +312 -0
  445. package/dist/core/code/engine/core/ingestion/pipeline-phases/communities.js +69 -0
  446. package/dist/core/code/engine/core/ingestion/pipeline-phases/cross-file.js +71 -0
  447. package/dist/core/code/engine/core/ingestion/pipeline-phases/di.js +338 -0
  448. package/dist/core/code/engine/core/ingestion/pipeline-phases/http-api-calls.js +312 -0
  449. package/dist/core/code/engine/core/ingestion/pipeline-phases/index.js +54 -0
  450. package/dist/core/code/engine/core/ingestion/pipeline-phases/mro.js +40 -0
  451. package/dist/core/code/engine/core/ingestion/pipeline-phases/orm.js +78 -0
  452. package/dist/core/code/engine/core/ingestion/pipeline-phases/parse-impl.js +1286 -0
  453. package/dist/core/code/engine/core/ingestion/pipeline-phases/parse.js +41 -0
  454. package/dist/core/code/engine/core/ingestion/pipeline-phases/processes.js +193 -0
  455. package/dist/core/code/engine/core/ingestion/pipeline-phases/prune-local-symbols.js +29 -0
  456. package/dist/core/code/engine/core/ingestion/pipeline-phases/registry.js +52 -0
  457. package/dist/core/code/engine/core/ingestion/pipeline-phases/routes.js +409 -0
  458. package/dist/core/code/engine/core/ingestion/pipeline-phases/rpc-edges.js +301 -0
  459. package/dist/core/code/engine/core/ingestion/pipeline-phases/runner.js +207 -0
  460. package/dist/core/code/engine/core/ingestion/pipeline-phases/scan.js +49 -0
  461. package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-aop.js +442 -0
  462. package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-auto-configuration.js +264 -0
  463. package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-config.js +440 -0
  464. package/dist/core/code/engine/core/ingestion/pipeline-phases/structure.js +38 -0
  465. package/dist/core/code/engine/core/ingestion/pipeline-phases/tools.js +89 -0
  466. package/dist/core/code/engine/core/ingestion/pipeline-phases/types.js +40 -0
  467. package/dist/core/code/engine/core/ingestion/pipeline.js +152 -0
  468. package/dist/core/code/engine/core/ingestion/process-processor.js +325 -0
  469. package/dist/core/code/engine/core/ingestion/resolve-references.js +205 -0
  470. package/dist/core/code/engine/core/ingestion/route-extractors/constant-resolver.js +135 -0
  471. package/dist/core/code/engine/core/ingestion/route-extractors/django-root-discovery.js +221 -0
  472. package/dist/core/code/engine/core/ingestion/route-extractors/django.js +428 -0
  473. package/dist/core/code/engine/core/ingestion/route-extractors/expo.js +39 -0
  474. package/dist/core/code/engine/core/ingestion/route-extractors/fastapi-router-bindings.js +264 -0
  475. package/dist/core/code/engine/core/ingestion/route-extractors/laravel.js +501 -0
  476. package/dist/core/code/engine/core/ingestion/route-extractors/middleware.js +175 -0
  477. package/dist/core/code/engine/core/ingestion/route-extractors/nextjs.js +81 -0
  478. package/dist/core/code/engine/core/ingestion/route-extractors/php.js +25 -0
  479. package/dist/core/code/engine/core/ingestion/route-extractors/python-const-resolver.js +307 -0
  480. package/dist/core/code/engine/core/ingestion/route-extractors/response-shapes.js +299 -0
  481. package/dist/core/code/engine/core/ingestion/route-extractors/route-path.js +71 -0
  482. package/dist/core/code/engine/core/ingestion/route-extractors/spring-shared.js +310 -0
  483. package/dist/core/code/engine/core/ingestion/route-extractors/spring.js +441 -0
  484. package/dist/core/code/engine/core/ingestion/scope-extractor-bridge.js +60 -0
  485. package/dist/core/code/engine/core/ingestion/scope-extractor.js +1373 -0
  486. package/dist/core/code/engine/core/ingestion/scope-resolution/contract/scope-resolver.js +282 -0
  487. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.js +72 -0
  488. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/edges.js +194 -0
  489. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/ids.js +472 -0
  490. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +49 -0
  491. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/method-dispatch.js +43 -0
  492. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +274 -0
  493. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +93 -0
  494. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/callable-value-flow.js +1240 -0
  495. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/compound-receiver.js +1174 -0
  496. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/free-call-fallback.js +873 -0
  497. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/imported-return-types.js +226 -0
  498. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/mro.js +107 -0
  499. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/overload-narrowing.js +441 -0
  500. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/property-dispatch.js +122 -0
  501. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +1720 -0
  502. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/phase.js +395 -0
  503. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/reconcile-ownership.js +208 -0
  504. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/registry.js +49 -0
  505. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/run.js +632 -0
  506. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/validate-bindings-immutability.js +112 -0
  507. package/dist/core/code/engine/core/ingestion/scope-resolution/resolution-outcome.js +41 -0
  508. package/dist/core/code/engine/core/ingestion/scope-resolution/scope/namespace-targets.js +81 -0
  509. package/dist/core/code/engine/core/ingestion/scope-resolution/scope/walkers.js +1835 -0
  510. package/dist/core/code/engine/core/ingestion/scope-resolution/unresolved-receivers.js +242 -0
  511. package/dist/core/code/engine/core/ingestion/scope-resolution/utils/definition-id.js +22 -0
  512. package/dist/core/code/engine/core/ingestion/scope-resolution/workspace-index.js +151 -0
  513. package/dist/core/code/engine/core/ingestion/structure-processor.js +40 -0
  514. package/dist/core/code/engine/core/ingestion/tree-sitter-queries.js +2244 -0
  515. package/dist/core/code/engine/core/ingestion/ts-js-hoc-utils.js +115 -0
  516. package/dist/core/code/engine/core/ingestion/type-env.js +1136 -0
  517. package/dist/core/code/engine/core/ingestion/type-extractors/c-cpp.js +555 -0
  518. package/dist/core/code/engine/core/ingestion/type-extractors/csharp.js +570 -0
  519. package/dist/core/code/engine/core/ingestion/type-extractors/dart.js +372 -0
  520. package/dist/core/code/engine/core/ingestion/type-extractors/go.js +508 -0
  521. package/dist/core/code/engine/core/ingestion/type-extractors/jvm.js +875 -0
  522. package/dist/core/code/engine/core/ingestion/type-extractors/php.js +537 -0
  523. package/dist/core/code/engine/core/ingestion/type-extractors/python.js +477 -0
  524. package/dist/core/code/engine/core/ingestion/type-extractors/ruby.js +380 -0
  525. package/dist/core/code/engine/core/ingestion/type-extractors/rust.js +502 -0
  526. package/dist/core/code/engine/core/ingestion/type-extractors/shared.js +843 -0
  527. package/dist/core/code/engine/core/ingestion/type-extractors/swift.js +490 -0
  528. package/dist/core/code/engine/core/ingestion/type-extractors/types.js +2 -0
  529. package/dist/core/code/engine/core/ingestion/type-extractors/typescript.js +690 -0
  530. package/dist/core/code/engine/core/ingestion/utils/ast-helpers.js +1693 -0
  531. package/dist/core/code/engine/core/ingestion/utils/call-analysis.js +779 -0
  532. package/dist/core/code/engine/core/ingestion/utils/callable-flow-captures.js +932 -0
  533. package/dist/core/code/engine/core/ingestion/utils/callable-labels.js +49 -0
  534. package/dist/core/code/engine/core/ingestion/utils/deferred-resolution-profile.js +151 -0
  535. package/dist/core/code/engine/core/ingestion/utils/effective-ram.js +67 -0
  536. package/dist/core/code/engine/core/ingestion/utils/env.js +60 -0
  537. package/dist/core/code/engine/core/ingestion/utils/event-loop.js +9 -0
  538. package/dist/core/code/engine/core/ingestion/utils/graph-sort.js +103 -0
  539. package/dist/core/code/engine/core/ingestion/utils/heap-probe.js +45 -0
  540. package/dist/core/code/engine/core/ingestion/utils/heritage-marker.js +47 -0
  541. package/dist/core/code/engine/core/ingestion/utils/line-base.js +24 -0
  542. package/dist/core/code/engine/core/ingestion/utils/max-file-size.js +59 -0
  543. package/dist/core/code/engine/core/ingestion/utils/method-props.js +198 -0
  544. package/dist/core/code/engine/core/ingestion/utils/qualified-name.js +73 -0
  545. package/dist/core/code/engine/core/ingestion/utils/receiver-chain-captures.js +60 -0
  546. package/dist/core/code/engine/core/ingestion/utils/receiver-chain-codec.js +188 -0
  547. package/dist/core/code/engine/core/ingestion/utils/scope-tree-walk.js +36 -0
  548. package/dist/core/code/engine/core/ingestion/utils/symbol-labels.js +48 -0
  549. package/dist/core/code/engine/core/ingestion/utils/template-arguments.js +187 -0
  550. package/dist/core/code/engine/core/ingestion/utils/type-parameters.js +209 -0
  551. package/dist/core/code/engine/core/ingestion/utils/verbose.js +6 -0
  552. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/c-cpp.js +133 -0
  553. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/csharp.js +66 -0
  554. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/dart.js +111 -0
  555. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/go.js +153 -0
  556. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/jvm.js +145 -0
  557. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/php.js +61 -0
  558. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/python.js +104 -0
  559. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/ruby.js +55 -0
  560. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/rust.js +79 -0
  561. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/swift.js +91 -0
  562. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/typescript-javascript.js +86 -0
  563. package/dist/core/code/engine/core/ingestion/variable-extractors/generic.js +111 -0
  564. package/dist/core/code/engine/core/ingestion/variable-types.js +3 -0
  565. package/dist/core/code/engine/core/ingestion/vue-sfc-extractor.js +544 -0
  566. package/dist/core/code/engine/core/ingestion/workers/callable-id.js +122 -0
  567. package/dist/core/code/engine/core/ingestion/workers/clone-safety.js +470 -0
  568. package/dist/core/code/engine/core/ingestion/workers/parse-worker.js +2456 -0
  569. package/dist/core/code/engine/core/ingestion/workers/post-result.js +90 -0
  570. package/dist/core/code/engine/core/ingestion/workers/quarantine.js +41 -0
  571. package/dist/core/code/engine/core/ingestion/workers/result-merge.js +59 -0
  572. package/dist/core/code/engine/core/ingestion/workers/worker-pool.js +1725 -0
  573. package/dist/core/code/engine/core/ingestion/workspace-config.js +139 -0
  574. package/dist/core/code/engine/core/lbug/conn-lock.js +72 -0
  575. package/dist/core/code/engine/core/lbug/csv-generator.js +710 -0
  576. package/dist/core/code/engine/core/lbug/cypher-escape.js +24 -0
  577. package/dist/core/code/engine/core/lbug/extension-load-error.js +339 -0
  578. package/dist/core/code/engine/core/lbug/extension-loader.js +261 -0
  579. package/dist/core/code/engine/core/lbug/graph-emit-sink.js +584 -0
  580. package/dist/core/code/engine/core/lbug/lbug-adapter.js +2703 -0
  581. package/dist/core/code/engine/core/lbug/lbug-config.js +1029 -0
  582. package/dist/core/code/engine/core/lbug/native-check.js +435 -0
  583. package/dist/core/code/engine/core/lbug/pool-adapter.js +973 -0
  584. package/dist/core/code/engine/core/lbug/query-params.js +25 -0
  585. package/dist/core/code/engine/core/lbug/query-result-utils.js +31 -0
  586. package/dist/core/code/engine/core/lbug/rel-pair-routing.js +373 -0
  587. package/dist/core/code/engine/core/lbug/schema.js +771 -0
  588. package/dist/core/code/engine/core/lbug/shutdown-helpers.js +40 -0
  589. package/dist/core/code/engine/core/lbug/sidecar-recovery.js +716 -0
  590. package/dist/core/code/engine/core/lbug/stdio-capture.js +49 -0
  591. package/dist/core/code/engine/core/lbug/sync-csv-writer.js +115 -0
  592. package/dist/core/code/engine/core/lbug/wal-checkpoint-driver.js +215 -0
  593. package/dist/core/code/engine/core/lbug/wal-driver-state.js +28 -0
  594. package/dist/core/code/engine/core/logger.js +339 -0
  595. package/dist/core/code/engine/core/platform/capabilities.js +91 -0
  596. package/dist/core/code/engine/core/run-analyze.js +1098 -0
  597. package/dist/core/code/engine/core/tree-sitter/parser-loader.js +281 -0
  598. package/dist/core/code/engine/core/tree-sitter/safe-parse.js +258 -0
  599. package/dist/core/code/engine/core/tree-sitter/vendored-grammars.js +64 -0
  600. package/dist/core/code/engine/lib/utils.js +121 -0
  601. package/dist/core/code/engine/mcp/core/lbug-adapter.js +27 -0
  602. package/dist/core/code/engine/mcp/local/aop-metadata.js +230 -0
  603. package/dist/core/code/engine/mcp/local/bean-metadata.js +49 -0
  604. package/dist/core/code/engine/mcp/local/limits.js +15 -0
  605. package/dist/core/code/engine/mcp/local/line-display.js +6 -0
  606. package/dist/core/code/engine/mcp/local/local-backend.js +4142 -0
  607. package/dist/core/code/engine/storage/branch-index.js +72 -0
  608. package/dist/core/code/engine/storage/file-hash.js +95 -0
  609. package/dist/core/code/engine/storage/fs-atomic.js +34 -0
  610. package/dist/core/code/engine/storage/git.js +555 -0
  611. package/dist/core/code/engine/storage/index-lock.js +664 -0
  612. package/dist/core/code/engine/storage/parse-cache.js +650 -0
  613. package/dist/core/code/engine/storage/parsedfile-store.js +620 -0
  614. package/dist/core/code/engine/storage/repo-manager.js +1061 -0
  615. package/dist/core/code/engine/storage/scope-index-store.js +247 -0
  616. package/dist/core/code/engine/types/pipeline.js +2 -0
  617. package/dist/core/code/scripts/install-duckdb-extension.mjs +125 -0
  618. package/dist/core/code/scripts/resolve-analyze-cmd.cjs +346 -0
  619. package/dist/core/code/shared/graph/types.js +8 -0
  620. package/dist/core/code/shared/index.js +105 -0
  621. package/dist/core/code/shared/integrations/circuit-breaker.js +242 -0
  622. package/dist/core/code/shared/integrations/resilient-fetch.js +224 -0
  623. package/dist/core/code/shared/integrations/retry.js +70 -0
  624. package/dist/core/code/shared/integrations/understand-quickly.js +145 -0
  625. package/dist/core/code/shared/language-detection.js +162 -0
  626. package/dist/core/code/shared/languages.js +27 -0
  627. package/dist/core/code/shared/lbug/schema-constants.js +98 -0
  628. package/dist/core/code/shared/mro-strategy.js +2 -0
  629. package/dist/core/code/shared/pipeline.js +5 -0
  630. package/dist/core/code/shared/scope-resolution/callable-flow-site.js +11 -0
  631. package/dist/core/code/shared/scope-resolution/def-index.js +53 -0
  632. package/dist/core/code/shared/scope-resolution/evidence-weights.js +87 -0
  633. package/dist/core/code/shared/scope-resolution/finalize-algorithm.js +807 -0
  634. package/dist/core/code/shared/scope-resolution/language-classification.js +46 -0
  635. package/dist/core/code/shared/scope-resolution/method-dispatch-index.js +100 -0
  636. package/dist/core/code/shared/scope-resolution/module-scope-index.js +59 -0
  637. package/dist/core/code/shared/scope-resolution/origin-priority.js +23 -0
  638. package/dist/core/code/shared/scope-resolution/parsed-file.js +54 -0
  639. package/dist/core/code/shared/scope-resolution/position-index.js +136 -0
  640. package/dist/core/code/shared/scope-resolution/qualified-name-index.js +77 -0
  641. package/dist/core/code/shared/scope-resolution/reference-site.js +24 -0
  642. package/dist/core/code/shared/scope-resolution/registries/class-registry.js +32 -0
  643. package/dist/core/code/shared/scope-resolution/registries/context.js +52 -0
  644. package/dist/core/code/shared/scope-resolution/registries/evidence.js +152 -0
  645. package/dist/core/code/shared/scope-resolution/registries/field-registry.js +33 -0
  646. package/dist/core/code/shared/scope-resolution/registries/lookup-core.js +392 -0
  647. package/dist/core/code/shared/scope-resolution/registries/lookup-qualified.js +58 -0
  648. package/dist/core/code/shared/scope-resolution/registries/macro-registry.js +34 -0
  649. package/dist/core/code/shared/scope-resolution/registries/method-registry.js +34 -0
  650. package/dist/core/code/shared/scope-resolution/registries/tie-breaks.js +63 -0
  651. package/dist/core/code/shared/scope-resolution/resolve-type-ref.js +128 -0
  652. package/dist/core/code/shared/scope-resolution/scope-id.js +49 -0
  653. package/dist/core/code/shared/scope-resolution/scope-tree.js +225 -0
  654. package/dist/core/code/shared/scope-resolution/symbol-definition.js +12 -0
  655. package/dist/core/code/shared/scope-resolution/types.js +25 -0
  656. package/dist/core/code/shared/test-helpers.js +17 -0
  657. package/dist/core/code/vendor/leiden/index.cjs +355 -0
  658. package/dist/core/code/vendor/leiden/utils.cjs +419 -0
  659. package/dist/core/timeline/cli.d.ts.map +1 -1
  660. package/dist/core/timeline/cli.js +13 -6
  661. package/dist/core/timeline/cli.js.map +1 -1
  662. package/dist/core/timeline/debris.d.ts +20 -0
  663. package/dist/core/timeline/debris.d.ts.map +1 -0
  664. package/dist/core/timeline/debris.js +124 -0
  665. package/dist/core/timeline/debris.js.map +1 -0
  666. package/dist/core/timeline/hook-runner.d.ts.map +1 -1
  667. package/dist/core/timeline/hook-runner.js +3 -1
  668. package/dist/core/timeline/hook-runner.js.map +1 -1
  669. package/dist/core/timeline/hooks.d.ts.map +1 -1
  670. package/dist/core/timeline/hooks.js +13 -5
  671. package/dist/core/timeline/hooks.js.map +1 -1
  672. package/dist/core/timeline/installer.d.ts +2 -0
  673. package/dist/core/timeline/installer.d.ts.map +1 -1
  674. package/dist/core/timeline/installer.js +12 -0
  675. package/dist/core/timeline/installer.js.map +1 -1
  676. package/dist/core/timeline/project-root.d.ts +21 -0
  677. package/dist/core/timeline/project-root.d.ts.map +1 -0
  678. package/dist/core/timeline/project-root.js +83 -0
  679. package/dist/core/timeline/project-root.js.map +1 -0
  680. package/package.json +1 -1
@@ -0,0 +1,282 @@
1
+ "use strict";
2
+ /**
3
+ * `ScopeResolver` — the per-language contract consumed by the generic
4
+ * scope-resolution orchestrator (`runScopeResolution`).
5
+ *
6
+ * ## Migration cookbook (next language)
7
+ *
8
+ * To add a language to the registry-primary path:
9
+ *
10
+ * 1. Implement `ScopeResolver` in
11
+ * `cgraph/src/core/ingestion/languages/<lang>/scope-resolver.ts`.
12
+ * Nine required fields (language, languageProvider,
13
+ * importEdgeReason, resolveImportTarget, mergeBindings,
14
+ * arityCompatibility, buildMro, populateOwners, isSuperReceiver)
15
+ * plus optional toggles / hooks:
16
+ * - propagatesReturnTypesAcrossImports (default true)
17
+ * - fieldFallbackOnMethodLookup (default true — turn OFF for
18
+ * statically-typed languages; the heuristic over-connects)
19
+ * - elementTypeOf — container element type, by subscript or accessor
20
+ * - collapseMemberCallsByCallerTarget — one edge per caller/target
21
+ * - populateNamespaceSiblings — cross-file implicit visibility
22
+ * - hoistTypeBindingsToModule — enable ONLY when method return
23
+ * types are stored on the enclosing Module scope; most
24
+ * languages attach them to the class scope and leave this off
25
+ * 2. Export a thin entry point:
26
+ * `runYourLangScopeResolution(input) = runScopeResolution(input, yourScopeResolver)`.
27
+ * 3. Register the provider in
28
+ * `cgraph/src/core/ingestion/scope-resolution/pipeline/registry.ts`
29
+ * (the `SCOPE_RESOLVERS` map). That registration is all it takes — the
30
+ * `scopeResolutionPhase` runs every registered resolver.
31
+ * 4. Verify the resolver integration test at
32
+ * `cgraph/test/integration/resolvers/<lang>.test.ts` passes (it runs
33
+ * in the standard test suite). Scope-resolution is the only resolution
34
+ * path — the legacy call-resolution DAG was removed in RING4-1 #942.
35
+ *
36
+ * No new pipeline phase, no orchestrator copy-paste, no workflow
37
+ * change. The generic `scopeResolutionPhase` auto-discovers everything via
38
+ * the `SCOPE_RESOLVERS` map.
39
+ *
40
+ * ## ScopeResolver vs LanguageProvider
41
+ *
42
+ * The codebase has two provider contracts. Their lifecycles differ:
43
+ *
44
+ * - `LanguageProvider` (`language-provider.ts`) is the
45
+ * **parsing-side** contract — how to emit captures, classify
46
+ * scopes, interpret imports / typeBindings. ~40 fields covering
47
+ * both legacy and new pipelines. Consumed by `ScopeExtractor`,
48
+ * once per file at extract time.
49
+ * - `ScopeResolver` (this file) is the **emit-side** contract — how
50
+ * the resolution pipeline dispatches references to graph edges.
51
+ * 8 fields total. Consumed by `runScopeResolution`, once per
52
+ * workspace at resolve time.
53
+ *
54
+ * They share three concept names (`arityCompatibility`, `mergeBindings`,
55
+ * `resolveImportTarget`) because the emit pipeline reuses a few
56
+ * finalize hooks. Per-language wiring passes the SAME function
57
+ * reference through both interfaces — no second copy of the logic.
58
+ * Rationale for not collapsing: lifecycle separation, and merging
59
+ * would create a god-interface complicating future migrations.
60
+ *
61
+ * ## Reference implementation
62
+ *
63
+ * `cgraph/src/core/ingestion/languages/python/scope-resolver.ts` —
64
+ * `pythonScopeResolver` is the canonical example. Read that file when
65
+ * migrating a new language; this interface lists the fields that
66
+ * implementation populates.
67
+ *
68
+ * ## Contract Invariants the orchestrator depends on
69
+ *
70
+ * These are non-obvious behaviors that the orchestrator and the
71
+ * existing Python + C# resolvers depend on. Future implementers will
72
+ * break them silently if not documented.
73
+ *
74
+ * - **I1 — Phase 4 emission order is load-bearing.** `emitReceiverBoundCalls`
75
+ * runs FIRST (populates `handledSites`), then `emitFreeCallFallback`,
76
+ * then `emitReferencesViaLookup` (consumes `handledSites` as a skip
77
+ * set), then `emitImportEdges`. Reordering breaks same-name collision
78
+ * resolution: the shared lookup can mis-resolve `app_metrics.get_metrics()`
79
+ * to a same-named local function, and only the precise per-receiver
80
+ * pass running first prevents the wrong edge.
81
+ *
82
+ * - **I2 — `handledSites` semantics.** A site is added to
83
+ * `handledSites` IFF a `tryEmitEdge` call returned `true` for it.
84
+ * Sites a pass touched but couldn't resolve do NOT get marked —
85
+ * they still get a chance from the shared resolver. Exception:
86
+ * the free-call fallback marks the site unconditionally after
87
+ * attempting emission (even on dedup-collapse), because the
88
+ * per-(caller, target) collapse semantics require multiple call
89
+ * sites in the same caller body not produce multiple edges.
90
+ * `preEmitInheritanceEdges` also pre-marks every `inherits` site so
91
+ * the generic bridge cannot remap class heritage into method-owned
92
+ * EXTENDS edges via `resolveCallerGraphId`.
93
+ *
94
+ * - **I3 — `propagateImportedReturnTypes` mutation timing + ordering.**
95
+ * The pass mutates `Scope.typeBindings` (a plain `new Map(...)` from
96
+ * `draftToScope`, NOT frozen). It MUST run AFTER `finalizeScopeModel`
97
+ * (so `indexes.bindings` is populated) and BEFORE
98
+ * `resolveReferenceSites` (so resolution sees the propagated types).
99
+ * The pass also re-runs `followChainPostFinalize` on every scope's
100
+ * typeBindings because scope-extractor's pass-4 already ran and
101
+ * missed any chain whose terminal lives in a foreign file.
102
+ * Within the pass, files are walked in `indexes.sccs` reverse-
103
+ * topological order (leaves first) so multi-hop alias chains
104
+ * (e.g. `models.User → service.user → app.user`) collapse to the
105
+ * terminal class in a single pass — every importer sees its
106
+ * source's already-chain-followed typeBindings. Cyclic SCCs reach
107
+ * a partial fixpoint within a single pass without iterating to
108
+ * convergence; `ts-circular` only asserts pipeline-no-throw.
109
+ *
110
+ * - **I4 — `emitReceiverBoundCalls` case order.** Cases are evaluated
111
+ * in this order; the FIRST that emits an edge wins:
112
+ * 1. super branch (`provider.isSuperReceiver(receiverName)`)
113
+ * 2. Case 0 compound (`receiverName` has `.` or `(`)
114
+ * 3. Case 0.5 implicit-`this` chain walk — GATED: fires only for
115
+ * languages that set `resolveThisViaEnclosingClass === true`;
116
+ * it intercepts every bare-`this` call/read/write site ahead of
117
+ * Case 4 and does NOT emit the interface-dispatch fan-out that
118
+ * Cases 0, 3b and 4 all perform (Case 0 gained it in #2829 and
119
+ * Case 3b in #2832, leaving 0.5 the only INSTANCE-receiver case
120
+ * that folds or walks to a receiver type without fanning out.
121
+ * Read that narrowly: Case 2 also walks an MRO and its binding
122
+ * admits `Interface`, but its receiver IS the type name, so the
123
+ * site is static dispatch and a fan-out would be wrong; Cases 3
124
+ * and 5 resolve by direct lookup rather than a fold or MRO walk,
125
+ * and no language is known to reach Case 3 with an Interface —
126
+ * every one that could strips the namespace qualifier first,
127
+ * sending it to Case 4), so enabling the toggle
128
+ * for a language changes that language's `this` dispatch
129
+ * semantics (see the toggle's doc below)
130
+ * 4. Case 1 namespace-receiver
131
+ * 5. Case 2 class-name receiver
132
+ * 6. Case 3 dotted typeBinding for namespace prefix
133
+ * 7. Case 3b chain-typebinding (compound resolver + interface-dispatch
134
+ * fan-out on an Interface fold, #2832)
135
+ * 8. Case 4 simple typeBinding (MRO walk + findOwnedMember)
136
+ * Reordering or merging cases changes resolution semantics. The
137
+ * numbering is part of the contract — keep the comments.
138
+ *
139
+ * - **I5 — Pre-seeding `seen` from `referenceIndex` is forbidden.**
140
+ * Earlier versions of the receiver-bound pass pre-populated `seen`
141
+ * to avoid double-emit. After Phase 4 was reordered, pre-seeding
142
+ * became actively harmful: it suppresses correct emissions for
143
+ * sites the shared resolver happened to resolve to a wrong target.
144
+ * The orchestrator MUST NOT pre-seed.
145
+ *
146
+ * - **I6 — `Scope.typeBindings` is mutable post-finalize.** `draftToScope`
147
+ * (in `scope-extractor.ts`) builds `typeBindings` as a plain
148
+ * `new Map(...)` — not frozen, intentionally. Passes below rely on
149
+ * this. Do NOT freeze `typeBindings` in any downstream refactor.
150
+ *
151
+ * - **I7 — `ScopeResolver` and `LanguageProvider` are distinct contracts.**
152
+ * Python and C# pass the SAME function reference through both
153
+ * interfaces where they share a hook name — no second copy of the
154
+ * logic. Rationale for not collapsing them: lifecycles differ
155
+ * (parsing-side runs once per file at extract time, emit-side runs
156
+ * once per workspace at resolve time), and merging would create a
157
+ * god-interface that complicates future migrations.
158
+ *
159
+ * - **I8 — Binding-channel lifecycle.** Post-finalize binding lookup
160
+ * fans across several channels (`lookupBindingsAt` /
161
+ * `findReceiverTypeBinding` consult them in precedence order):
162
+ * `indexes.bindings` (frozen finalize output), `Scope.bindings`
163
+ * (lexical local, first-tier shadowing), `indexes.bindingAugmentations`
164
+ * (per-scope append-only), `indexes.workspaceFqnBindings` +
165
+ * `indexes.workspaceTypeBindings` (scope-independent / global, consulted
166
+ * unconditionally), and `indexes.namespaceFqnBindings` +
167
+ * `indexes.namespaceTypeBindings` (per-namespace, consulted only for the
168
+ * namespaces in `indexes.accessibleNamespacesByScope` for the caller's
169
+ * module). All but `indexes.bindings` are mutable post-finalize and
170
+ * populated by hooks; only `indexes.bindings` is frozen.
171
+ *
172
+ * `indexes.bindings` is the **finalize-output channel**. After
173
+ * `finalizeScopeModel` returns, its inner `BindingRef[]` arrays
174
+ * are deep-frozen by `materializeBindings` and MUST NOT be
175
+ * mutated by any post-finalize hook. Treat `indexes.bindings` as
176
+ * immutable from the moment `finalizeScopeModel` returns.
177
+ *
178
+ * `indexes.bindingAugmentations` is the **post-finalize
179
+ * append-only channel**. Hooks like `populateNamespaceSiblings`
180
+ * append cross-file bindings synthesized after finalize (C#
181
+ * same-namespace visibility, `using static` member exposure)
182
+ * into this channel, NOT into `indexes.bindings`. Inner arrays
183
+ * here are NEVER frozen — hooks `push()` directly. Any consumer
184
+ * that reads post-finalize workspace bindings MUST query both
185
+ * index channels via `lookupBindingsAt`
186
+ * (`scope-resolution/scope/walkers.ts`); the helper returns
187
+ * finalized refs first, appends unique augmentation refs after,
188
+ * and dedupes by `def.nodeId` so finalized metadata wins on
189
+ * duplicate defs. Per-`Scope.bindings` local declarations are the
190
+ * lexical extraction channel and remain a separate first-tier
191
+ * lookup for local shadowing.
192
+ *
193
+ * `Scope.typeBindings` remains mutable post-finalize per I6 (it
194
+ * is intentionally not frozen at any point).
195
+ *
196
+ * The `ReadonlyMap<...>` types on `ScopeResolutionIndexes` are
197
+ * compile-time read-guidance for consumers; structural mutation
198
+ * of `bindingAugmentations` is performed via a deliberate
199
+ * `as Map<...>` cast inside the hook implementations and is the
200
+ * ONLY sanctioned channel for post-finalize binding fanout.
201
+ *
202
+ * The dev-mode runtime validator
203
+ * (`validateBindingsImmutability` in
204
+ * `scope-resolution/validate-bindings-immutability.ts`) surfaces
205
+ * any drift — i.e. a hook writing to `indexes.bindings` instead
206
+ * of `bindingAugmentations`, or producing a non-frozen finalized
207
+ * bucket — via `onWarn` when explicitly enabled by
208
+ * `NODE_ENV === 'development' || VALIDATE_SEMANTIC_MODEL === '1'`
209
+ * (`VALIDATE_SEMANTIC_MODEL=0` is an explicit off switch).
210
+ *
211
+ * - **I9 — `SemanticModel` is the single authoritative symbol store.**
212
+ * Every symbol-indexed lookup (key = `nodeId | simpleName |
213
+ * qualifiedName | filePath`) resolves through
214
+ * `SemanticModel.{symbols,types,methods,fields}`. Scope-resolution
215
+ * passes MUST NOT maintain parallel owner-keyed or name-keyed
216
+ * symbol indexes — `WorkspaceResolutionIndex` is reserved for
217
+ * `Scope`-valued lookups that `SemanticModel` structurally cannot
218
+ * carry.
219
+ *
220
+ * The `runScopeResolution` orchestrator guarantees this invariant
221
+ * in two steps:
222
+ * 1. The legacy `parse` phase populates `SemanticModel` via
223
+ * `symbolTable.add(...)`. For languages whose extractor
224
+ * resolves `enclosingClassId` at parse time, class-body defs
225
+ * are correctly owner-keyed there.
226
+ * 2. The `reconcileOwnership` pass runs after
227
+ * `provider.populateOwners(parsed)` and registers any def in
228
+ * `parsed.localDefs[i]` with a corrected `ownerId` that the
229
+ * legacy pass missed (primarily Python class-body methods).
230
+ * Idempotent — duplicates are skipped by `nodeId`.
231
+ *
232
+ * Contract for consumers: `model` is `MutableSemanticModel` only
233
+ * during those two write phases. Downstream passes receive a
234
+ * narrowed `SemanticModel` (read-only) handle. This is enforced by
235
+ * `runScopeResolution`'s type-level narrowing at the phase
236
+ * boundary.
237
+ *
238
+ * The dev-mode runtime validator (`validateOwnershipParity`)
239
+ * surfaces any drift between `parsed.localDefs` ownership and the
240
+ * registries via `onWarn` when
241
+ * `NODE_ENV !== 'production' && VALIDATE_SEMANTIC_MODEL !== '0'`.
242
+ *
243
+ * This invariant is a **transitional shim**: the architectural
244
+ * end state is for every language's parse-time extractor to emit
245
+ * the correct `ownerId` directly, removing the need for
246
+ * reconciliation. Tracked as a follow-up; see ARCHITECTURE.md §
247
+ * "Semantic-model source of truth".
248
+ *
249
+ * ## Semantic-model source of truth
250
+ *
251
+ * `ParsedFile` (from `cgraph-shared/src/scope-resolution/parsed-file.ts`)
252
+ * is the single semantic model consumed by both the legacy DAG and the
253
+ * scope-resolution pipeline. Scope-resolution passes MUST NOT build a
254
+ * parallel parse representation; if a pass needs AST-level facts that
255
+ * `ParsedFile` doesn't expose, it should reuse the orchestrator's
256
+ * `treeCache` (see `RunScopeResolutionInput.treeCache`) rather than
257
+ * re-invoke `parser.parse(...)` on its own.
258
+ *
259
+ * ## Same-graph guarantee
260
+ *
261
+ * Edges emitted by `runScopeResolution` and edges emitted by the legacy
262
+ * DAG are indistinguishable to downstream consumers:
263
+ * - Node identity: same `generateId(...)` helper, same qualified-name
264
+ * keyspace, same File/Folder/Method/Class node labels.
265
+ * - Edge vocabulary: `'import-resolved' | 'global' | 'local-call' |
266
+ * 'same-file' | 'interface-dispatch' | 'read' | 'write'` — both
267
+ * paths emit the same reasons (see
268
+ * `cgraph/src/core/ingestion/call-processor.ts` for the legacy
269
+ * emitter and `passes/receiver-bound-calls.ts` /
270
+ * `passes/free-call-fallback.ts` for the scope-resolution emitters).
271
+ * - Overload disambiguation: both paths use
272
+ * `generateId('Method', ...)` suffixed with `parameterTypes` when a
273
+ * method has overloads — see `graph-bridge/ids.ts`.
274
+ *
275
+ * The CI parity workflow (`.github/workflows/ci-scope-parity.yml`)
276
+ * runs both paths on every migrated language's fixture corpus and
277
+ * fails if the graph outputs diverge.
278
+ *
279
+ * Plan that introduced most of these invariants:
280
+ * `docs/plans/2026-04-20-001-refactor-emit-pipeline-generalization-plan.md`.
281
+ */
282
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ /**
3
+ * Resolved-callee-id capture sink (#2227 follow-up plan U2).
4
+ *
5
+ * During Phase-4 scope-resolution CALLS-edge emission, each resolved call
6
+ * site's `(callSiteLine, callSiteCol) → resolvedCalleeId` mapping is
7
+ * accumulated here — across ALL THREE CALLS emit paths
8
+ * (`emitReceiverBoundCalls` via `tryEmitEdge`/`tryEmitEdgeWithExplicitTargetId`,
9
+ * and the inline `graph.addRelationship` in `emitFreeCallFallback` and
10
+ * `emitReferencesViaLookup`), each BEFORE its dedup (KTD6/R8). A later unit
11
+ * (U3) joins this map to CFG `BasicBlock`s by exact call-site position and
12
+ * emits a `BasicBlock.calleeIds` set.
13
+ *
14
+ * KEY ALIGNMENT (plan KTD7 — load-bearing): the key is the call/new
15
+ * expression node's start position — `line` 1-based (`startPosition.row + 1`),
16
+ * `col` 0-based (`startPosition.column`). This MUST equal the U1
17
+ * `SiteRecord.at` so the U3 position join lands. The CALLS resolution exposes
18
+ * the same node's range via `site.atRange` (`atRange: anchor.range`,
19
+ * scope-extractor.ts:1030), whose `startLine`/`startCol` are built by
20
+ * `nodeToCapture` as `row + 1` / `column` (1-based line, 0-based col — see the
21
+ * `Range` doc in cgraph-shared). So a capture keyed on
22
+ * `(atRange.startLine, atRange.startCol)` is byte-equal to U1's `at` — no
23
+ * normalization needed.
24
+ *
25
+ * Gating (R4): the concrete sink is created in `run.ts` when PDG is enabled OR
26
+ * always-on callable-flow facts need direct call targets for actual→formal
27
+ * propagation. The read-side CFG join remains strictly PDG-gated.
28
+ *
29
+ * Multi-target dispatch (R2/KTD8): one site → multiple emit calls → the `Set`
30
+ * accumulates every resolved target. Capture is per-emit-call, so the
31
+ * candidate set is complete and a real target is never dropped.
32
+ */
33
+ Object.defineProperty(exports, "__esModule", { value: true });
34
+ exports.calleeIdPosKey = calleeIdPosKey;
35
+ exports.createCalleeIdAccumulator = createCalleeIdAccumulator;
36
+ /** Build the position key from a call-site anchor. Single source of truth so
37
+ * producer (this sink) and consumer (U3's CFG join) encode positions
38
+ * identically. */
39
+ function calleeIdPosKey(line, col) {
40
+ return `${line}:${col}`;
41
+ }
42
+ /**
43
+ * Create the concrete nested-`Map` accumulator for PDG callee capture or
44
+ * callable-value-flow's direct-target index.
45
+ */
46
+ function createCalleeIdAccumulator(shouldCapture) {
47
+ const byFile = new Map();
48
+ return {
49
+ add(filePath, line, col, calleeId) {
50
+ if (shouldCapture?.(filePath, line, col) === false)
51
+ return;
52
+ let byPos = byFile.get(filePath);
53
+ if (byPos === undefined) {
54
+ byPos = new Map();
55
+ byFile.set(filePath, byPos);
56
+ }
57
+ const key = calleeIdPosKey(line, col);
58
+ let ids = byPos.get(key);
59
+ if (ids === undefined) {
60
+ ids = new Set();
61
+ byPos.set(key, ids);
62
+ }
63
+ ids.add(calleeId);
64
+ },
65
+ get(filePath) {
66
+ return byFile.get(filePath);
67
+ },
68
+ delete(filePath) {
69
+ byFile.delete(filePath);
70
+ },
71
+ };
72
+ }
@@ -0,0 +1,194 @@
1
+ "use strict";
2
+ /**
3
+ * Graph edge emission primitives.
4
+ *
5
+ * Two functions:
6
+ * - `mapReferenceKindToEdgeType` — translate a scope-resolution
7
+ * `Reference.kind` into the corresponding graph edge type.
8
+ * - `tryEmitEdge` — given a reference site + target def, resolve
9
+ * caller + target to graph ids and emit the edge with
10
+ * language-provided reason text, dedup-keyed by
11
+ * `(edgeType, callerId, targetId, line, col)`.
12
+ *
13
+ * Next-consumer contract: any language provider can call `tryEmitEdge`
14
+ * from its own post-pass to emit edges it resolves Python-specific
15
+ * (or TypeScript-specific, etc.) logic. The dedup key is
16
+ * language-agnostic — no language needs to change it.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.mapReferenceKindToEdgeType = mapReferenceKindToEdgeType;
20
+ exports.tryEmitEdge = tryEmitEdge;
21
+ exports.tryEmitEdgeWithExplicitTargetId = tryEmitEdgeWithExplicitTargetId;
22
+ const symbol_table_js_1 = require("../../model/symbol-table.js");
23
+ const ids_js_1 = require("../graph-bridge/ids.js");
24
+ /**
25
+ * Map a `Reference.kind` to a graph edge type. `import-use` is dropped
26
+ * (no edge type today — provenance lives on the IMPORTS edge emitted
27
+ * by `emitImportEdges`).
28
+ */
29
+ function mapReferenceKindToEdgeType(kind) {
30
+ switch (kind) {
31
+ case 'call':
32
+ return 'CALLS';
33
+ case 'read':
34
+ case 'write':
35
+ return 'ACCESSES';
36
+ case 'inherits':
37
+ return 'EXTENDS';
38
+ case 'type-reference':
39
+ return 'USES';
40
+ // A function registered as an object-literal property value emits a
41
+ // reference-class USES edge, NOT CALLS — a registration is not an
42
+ // invocation (Kythe `ref` vs `ref/call`; Joern `METHOD_REF`). The
43
+ // invocation side is synthesized by the property-dispatch pass (#2437).
44
+ case 'value-ref':
45
+ return 'USES';
46
+ // Macro invocations resolve to a `Macro` node (never a function), so
47
+ // they emit `USES` — kept out of the `CALLS` keyspace which denotes
48
+ // function/method dispatch (#1934 review).
49
+ case 'macro':
50
+ return 'USES';
51
+ case 'import-use':
52
+ return undefined;
53
+ default:
54
+ return undefined;
55
+ }
56
+ }
57
+ /**
58
+ * Is this read site a PHANTOM — a duplicate of the call happening beside it?
59
+ *
60
+ * Some languages' member-read capture also matches the callee of a member call,
61
+ * so `obj.f()` produces a `call` site on `f` AND a `read` site on `obj.f` at the
62
+ * same position (Go's `@reference.read` matches every `selector_expression`).
63
+ * The capture layer marks that second site `inCalleePosition` rather than
64
+ * dropping it, because the two cases it covers are indistinguishable there:
65
+ *
66
+ * - tail resolves to a METHOD → phantom. The ACCESSES edge duplicates the
67
+ * CALLS edge emitted for the same source position; suppress it.
68
+ * - tail resolves to a FIELD → genuine. `h.dep.Work()` where
69
+ * `Work func() error` reads a func-typed struct field and calls the value
70
+ * it holds. That read is the field's only ACCESSES evidence — keep it.
71
+ *
72
+ * Only the resolved target's kind separates them, which is why this decision
73
+ * lives at emission and not in any language's capture code. Sites without the
74
+ * marker are untouched, so a genuine method VALUE (`f := obj.method`) — never in
75
+ * callee position — keeps its read.
76
+ *
77
+ * "Invoked rather than read" is `CALL_TARGET_TYPES` — the canonical callable
78
+ * target set (`FREE_CALLABLE_TYPES` ∪ Method/Constructor), not a local copy. A
79
+ * hand-rolled `{Function, Method, Constructor}` silently omits `Macro` (C/C++)
80
+ * and `Delegate` (C#), the two labels that set exists to add, and drops the
81
+ * `satisfies` guard in `symbol-table.ts` that compile-enforces every free
82
+ * callable label against `LABEL_BEHAVIOR`.
83
+ */
84
+ function isPhantomCalleeRead(site, targetDef) {
85
+ if (site.kind !== 'read' || site.inCalleePosition !== true)
86
+ return false;
87
+ return symbol_table_js_1.CALL_TARGET_TYPES.has(targetDef.type);
88
+ }
89
+ /**
90
+ * Resolve caller + target to graph ids and emit the edge. Returns true
91
+ * if the edge was emitted (not deduped, not skipped).
92
+ *
93
+ * `seen` is a language-shared dedup set keyed by
94
+ * `${edgeType}:${callerGraphId}->${targetGraphId}:${line}:${col}` so
95
+ * multiple language-specific post-passes can share it and never
96
+ * double-emit a resolution one of them already produced.
97
+ */
98
+ function tryEmitEdge(graph, scopes, nodeLookup, site, targetDef, reason, seen, confidence = 0.85, collapseByCallerTarget = false, calleeCapture) {
99
+ // A read that only exists because it is the callee of the call beside it, and
100
+ // whose tail resolved to a callable, is that call restated as an access —
101
+ // checked first because it needs no id resolution.
102
+ if (isPhantomCalleeRead(site, targetDef))
103
+ return false;
104
+ // Inheritance edges are emitted directly by `preEmitInheritanceEdges` (which
105
+ // owns the enclosing-class caller and the EXTENDS-vs-IMPLEMENTS type), so this
106
+ // generic bridge derives caller + edge type purely from the site.
107
+ const callerGraphId = (0, ids_js_1.resolveCallerGraphId)(site.inScope, scopes, nodeLookup, site.atRange);
108
+ const targetGraphId = (0, ids_js_1.resolveDefGraphId)(targetDef.filePath, targetDef, nodeLookup);
109
+ const edgeType = mapReferenceKindToEdgeType(site.kind);
110
+ if (callerGraphId === undefined)
111
+ return false;
112
+ if (targetGraphId === undefined)
113
+ return false;
114
+ if (edgeType === undefined)
115
+ return false;
116
+ // Resolved-callee-id capture (#2227 U2/KTD6/R8): record this CALLS site's
117
+ // resolved target BEFORE the dedup `seen` check, so collapsed same-target
118
+ // multi-line calls are still captured per site. Keyed on `site.atRange`
119
+ // (1-based line / 0-based col — byte-equal to U1's SiteRecord.at).
120
+ if (calleeCapture !== undefined && edgeType === 'CALLS') {
121
+ calleeCapture.sink.add(calleeCapture.filePath, site.atRange.startLine, site.atRange.startCol, targetGraphId);
122
+ }
123
+ // CALLS edges may collapse to `(caller, target)` granularity when
124
+ // the provider opts in (C# matches legacy DAG behavior this way).
125
+ // Write/read ACCESSES keep per-site dedup so multiple writes to the
126
+ // same field on different lines produce distinct edges.
127
+ const useCollapsed = collapseByCallerTarget && edgeType === 'CALLS';
128
+ const dedupKey = useCollapsed
129
+ ? `${edgeType}:${callerGraphId}->${targetGraphId}`
130
+ : `${edgeType}:${callerGraphId}->${targetGraphId}:${site.atRange.startLine}:${site.atRange.startCol}`;
131
+ if (seen.has(dedupKey))
132
+ return false;
133
+ seen.add(dedupKey);
134
+ graph.addRelationship({
135
+ id: `rel:${dedupKey}`,
136
+ sourceId: callerGraphId,
137
+ targetId: targetGraphId,
138
+ type: edgeType,
139
+ confidence,
140
+ reason,
141
+ });
142
+ return true;
143
+ }
144
+ /**
145
+ * Variant of `tryEmitEdge` that takes a pre-resolved target graph id
146
+ * instead of resolving it from a `SymbolDefinition`. Used by the
147
+ * value-receiver-owner bridge (`receiver-bound-calls.ts` Case 5) where
148
+ * the picked owner-indexed method def carries no `qualifiedName` (object
149
+ * literals have no class owner to seed it) and therefore cannot
150
+ * round-trip through `resolveDefGraphId`. The def's `nodeId` IS the
151
+ * canonical graph node id (written by the parse phase), so the caller
152
+ * passes it directly.
153
+ *
154
+ * All other invariants of `tryEmitEdge` apply: dedup key shape, collapse
155
+ * flag honoring, edge-type mapping, caller-id resolution.
156
+ *
157
+ * ONE deliberate exception: the {@link isPhantomCalleeRead} suppression is not
158
+ * applied here, because it keys on the target's node label and this entry point
159
+ * is handed an id rather than a def. Reachable only for a `read` site marked
160
+ * `inCalleePosition` whose receiver typed as an object-literal VALUE — a
161
+ * JS/TS-shaped registration. No language that sets the marker resolves through
162
+ * this bridge today (verified for Go, whose func-valued struct-literal fields
163
+ * resolve through the owned-member path instead). A language adding the marker
164
+ * must re-check this path.
165
+ */
166
+ function tryEmitEdgeWithExplicitTargetId(graph, scopes, nodeLookup, site, targetGraphId, reason, seen, confidence = 0.85, collapseByCallerTarget = false, calleeCapture) {
167
+ const callerGraphId = (0, ids_js_1.resolveCallerGraphId)(site.inScope, scopes, nodeLookup, site.atRange);
168
+ const edgeType = mapReferenceKindToEdgeType(site.kind);
169
+ if (callerGraphId === undefined)
170
+ return false;
171
+ if (edgeType === undefined)
172
+ return false;
173
+ // Resolved-callee-id capture (#2227 U2/KTD6/R8) — before dedup, see
174
+ // `tryEmitEdge`. The explicit target id IS the resolved callee id.
175
+ if (calleeCapture !== undefined && edgeType === 'CALLS') {
176
+ calleeCapture.sink.add(calleeCapture.filePath, site.atRange.startLine, site.atRange.startCol, targetGraphId);
177
+ }
178
+ const useCollapsed = collapseByCallerTarget && edgeType === 'CALLS';
179
+ const dedupKey = useCollapsed
180
+ ? `${edgeType}:${callerGraphId}->${targetGraphId}`
181
+ : `${edgeType}:${callerGraphId}->${targetGraphId}:${site.atRange.startLine}:${site.atRange.startCol}`;
182
+ if (seen.has(dedupKey))
183
+ return false;
184
+ seen.add(dedupKey);
185
+ graph.addRelationship({
186
+ id: `rel:${dedupKey}`,
187
+ sourceId: callerGraphId,
188
+ targetId: targetGraphId,
189
+ type: edgeType,
190
+ confidence,
191
+ reason,
192
+ });
193
+ return true;
194
+ }