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,62 @@
1
+ "use strict";
2
+ // cgraph/src/core/ingestion/call-extractors/generic.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.createCallExtractor = createCallExtractor;
5
+ const call_analysis_js_1 = require("../utils/call-analysis.js");
6
+ /**
7
+ * Create a CallExtractor from a declarative config.
8
+ */
9
+ function createCallExtractor(config) {
10
+ return {
11
+ language: config.language,
12
+ extract(callNode, callNameNode) {
13
+ // ── Path 1: Language-specific call site ──────────────────────────
14
+ // Non-standard call shapes (e.g. Java `::` method references) are
15
+ // handled entirely by the config hook. When it returns a result,
16
+ // the generic path is skipped — no argCount, no mixed chain.
17
+ //
18
+ // Note: `extractLanguageCallSite` is called on every `extract()`
19
+ // invocation — both `extract(callNode, undefined)` (parse-worker
20
+ // Path 1) and `extract(callNode, callNameNode)` (Path 2).
21
+ // Language hooks must therefore be idempotent and cheap (e.g. a
22
+ // single node-type check).
23
+ if (config.extractLanguageCallSite) {
24
+ const seed = config.extractLanguageCallSite(callNode);
25
+ if (seed) {
26
+ return {
27
+ ...seed,
28
+ ...(config.typeAsReceiverHeuristic ? { typeAsReceiverHeuristic: true } : {}),
29
+ };
30
+ }
31
+ }
32
+ // ── Path 2: Generic extraction via @call.name ────────────────────
33
+ if (!callNameNode)
34
+ return null;
35
+ const calledName = callNameNode.text;
36
+ const callForm = (0, call_analysis_js_1.inferCallForm)(callNode, callNameNode);
37
+ let receiverName = callForm === 'member' ? (0, call_analysis_js_1.extractReceiverName)(callNameNode) : undefined;
38
+ let receiverMixedChain;
39
+ // When the receiver is a complex expression (call chain, field chain,
40
+ // or mixed), extractReceiverName returns undefined. Walk the receiver
41
+ // node to build a unified mixed chain for deferred resolution.
42
+ if (callForm === 'member' && receiverName === undefined) {
43
+ const receiverNode = (0, call_analysis_js_1.extractReceiverNode)(callNameNode);
44
+ if (receiverNode) {
45
+ const extracted = (0, call_analysis_js_1.extractMixedChain)(receiverNode);
46
+ if (extracted && extracted.chain.length > 0) {
47
+ receiverMixedChain = extracted.chain;
48
+ receiverName = extracted.baseReceiverName;
49
+ }
50
+ }
51
+ }
52
+ return {
53
+ calledName,
54
+ ...(callForm !== undefined ? { callForm } : {}),
55
+ ...(receiverName !== undefined ? { receiverName } : {}),
56
+ argCount: (0, call_analysis_js_1.countCallArguments)(callNode),
57
+ ...(receiverMixedChain !== undefined ? { receiverMixedChain } : {}),
58
+ ...(config.typeAsReceiverHeuristic ? { typeAsReceiverHeuristic: true } : {}),
59
+ };
60
+ },
61
+ };
62
+ }
@@ -0,0 +1,503 @@
1
+ "use strict";
2
+ /**
3
+ * Route / fetch edge emission + exported-type-map helpers.
4
+ *
5
+ * The legacy call-resolution DAG that previously lived here (per-file type
6
+ * inference → receiver inference → dispatch selection → MRO walk over the
7
+ * legacy heritage map) was deleted in RING4-1 (#942): all languages now resolve
8
+ * calls through the scope-resolution registry pipeline. What remains are the
9
+ * language-agnostic edge emitters that are NOT part of call resolution:
10
+ *
11
+ * - `processRoutesFromExtracted` — CALLS edges from framework routes
12
+ * (e.g. Laravel) to their controller methods.
13
+ * - `processNextjsFetchRoutes` / `extractConsumerAccessedKeys` — FETCHES edges
14
+ * from `fetch()` calls to Next.js Route nodes.
15
+ * - `buildExportedTypeMapFromGraph` — exported symbol → return/declared type
16
+ * map, consumed by the cross-file enrichment pass.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.processNextjsFetchRoutes = exports.extractConsumerAccessedKeys = exports.processRoutesFromExtracted = exports.accumulateExportedTypesFromParsedNode = void 0;
20
+ exports.buildExportedTypeMapFromGraph = buildExportedTypeMapFromGraph;
21
+ exports.resolveRouteHandlerSymbols = resolveRouteHandlerSymbols;
22
+ const utils_js_1 = require("../../lib/utils.js");
23
+ const event_loop_js_1 = require("./utils/event-loop.js");
24
+ const nextjs_js_1 = require("./route-extractors/nextjs.js");
25
+ const route_path_js_1 = require("./route-extractors/route-path.js");
26
+ const shared_js_1 = require("./type-extractors/shared.js");
27
+ const MAX_EXPORTS_PER_FILE = 500;
28
+ const MAX_TYPE_NAME_LENGTH = 256;
29
+ /** Record one exported graph node into the incremental ExportedTypeMap. */
30
+ const accumulateExportedTypesFromParsedNode = (result, node, symbolTable) => {
31
+ if (!node.properties?.isExported)
32
+ return;
33
+ if (!node.properties?.filePath || !node.properties?.name)
34
+ return;
35
+ const filePath = node.properties.filePath;
36
+ const name = node.properties.name;
37
+ if (!name || name.length > MAX_TYPE_NAME_LENGTH)
38
+ return;
39
+ const defs = symbolTable.lookupExactAll(filePath, name);
40
+ const def = defs.find((d) => d.nodeId === node.id) ?? defs[0];
41
+ if (!def)
42
+ return;
43
+ const typeName = def.returnType ?? def.declaredType;
44
+ if (!typeName || typeName.length > MAX_TYPE_NAME_LENGTH)
45
+ return;
46
+ const simpleType = (0, shared_js_1.extractReturnTypeName)(typeName) ?? typeName;
47
+ if (!simpleType)
48
+ return;
49
+ let fileExports = result.get(filePath);
50
+ if (!fileExports) {
51
+ fileExports = new Map();
52
+ result.set(filePath, fileExports);
53
+ }
54
+ if (fileExports.size < MAX_EXPORTS_PER_FILE) {
55
+ fileExports.set(name, simpleType);
56
+ }
57
+ };
58
+ exports.accumulateExportedTypesFromParsedNode = accumulateExportedTypesFromParsedNode;
59
+ /** Build ExportedTypeMap from graph nodes — used for the worker path where the
60
+ * sequential TypeEnv is not available in the main thread. Collects
61
+ * returnType/declaredType from exported symbols with known types. */
62
+ function buildExportedTypeMapFromGraph(graph, symbolTable) {
63
+ const result = new Map();
64
+ graph.forEachNode((node) => {
65
+ (0, exports.accumulateExportedTypesFromParsedNode)(result, node, symbolTable);
66
+ });
67
+ return result;
68
+ }
69
+ /**
70
+ * Confidence for route → controller-method CALLS edges. Framework-route
71
+ * controller references (e.g. `OrderController::class` in `routes/web.php`)
72
+ * resolve by global class name, so this matches the legacy `global`-tier
73
+ * confidence the tiered resolver previously assigned these edges.
74
+ */
75
+ const ROUTE_EDGE_CONFIDENCE = 0.5;
76
+ /**
77
+ * Resolve a route's controller class from its normalized dot-joined
78
+ * fully-qualified name (threaded by the Laravel extractor from a `use`/`::class`
79
+ * reference). Two strategies, in order:
80
+ *
81
+ * 1. Direct qualified lookup — works when the type registry keys the class by
82
+ * its FQN (block-form namespaces, non-PHP frameworks, seeded test models).
83
+ * 2. PSR-4 file-path disambiguation — PHP's common statement-form namespace
84
+ * (`namespace App\Http\Controllers;`) leaves the structure-phase
85
+ * `qualifiedName` as the *short* class name, so the registry has no FQN
86
+ * key. Instead, take the FQN's last segment as the class name, fetch the
87
+ * same-short-name candidates, and pick the one whose file path's tail
88
+ * matches the FQN's namespace tail (e.g. `App.Admin.OrderController` ↔
89
+ * `app/Admin/OrderController.php`). Requires ≥2 trailing segments (class +
90
+ * ≥1 namespace segment) and a unique winner — conservative, so a
91
+ * non-PSR-4 layout falls through to short-name resolution rather than
92
+ * guessing.
93
+ *
94
+ * Returns the resolved class, or `undefined` when the FQN cannot be uniquely
95
+ * resolved (the caller then falls back to bare short-name resolution).
96
+ */
97
+ function resolveControllerByQualifiedName(model, fqn) {
98
+ const direct = model.types.lookupClassByQualifiedName(fqn);
99
+ if (direct.length === 1)
100
+ return direct[0];
101
+ const fqnSegments = fqn.split('.');
102
+ const shortName = fqnSegments[fqnSegments.length - 1];
103
+ if (!shortName)
104
+ return undefined;
105
+ const candidates = model.types.lookupClassByName(shortName);
106
+ if (candidates.length === 1)
107
+ return candidates[0];
108
+ if (candidates.length === 0)
109
+ return undefined;
110
+ let best;
111
+ let bestScore = 0;
112
+ let tie = false;
113
+ for (const candidate of candidates) {
114
+ // Compare the FQN's namespace tail against the file path's directory tail
115
+ // (PSR-4: `App\Admin\OrderController` ↔ `app/Admin/OrderController.php`).
116
+ // Split on `/` (a path separator normalizeQualifiedName does not touch).
117
+ const fileBase = candidate.filePath.replace(/\.[^./]+$/, '');
118
+ const fileSegments = fileBase.split('/').filter((s) => s.length > 0);
119
+ let score = 0;
120
+ while (score < fqnSegments.length &&
121
+ score < fileSegments.length &&
122
+ fqnSegments[fqnSegments.length - 1 - score].toLowerCase() ===
123
+ fileSegments[fileSegments.length - 1 - score].toLowerCase()) {
124
+ score++;
125
+ }
126
+ if (score > bestScore) {
127
+ bestScore = score;
128
+ best = candidate;
129
+ tie = false;
130
+ }
131
+ else if (score === bestScore) {
132
+ tie = true;
133
+ }
134
+ }
135
+ // Need the class name + at least one namespace segment to disambiguate, and a
136
+ // single unambiguous winner.
137
+ return bestScore >= 2 && !tie ? best : undefined;
138
+ }
139
+ /**
140
+ * Create CALLS edges from extracted framework routes (e.g. Laravel) to their
141
+ * controller methods. Runs for all languages — independent of call resolution.
142
+ *
143
+ * Resolution is registry-based (RING4-2 #943 retired the tiered resolver):
144
+ * - Controller: **qualified-first** (see {@link resolveControllerByQualifiedName}).
145
+ * When the routes file disambiguated the controller, the Laravel extractor
146
+ * threads `route.controllerQualifiedName` (a `use` import — incl. aliased
147
+ * `use … as X;` — or an inline qualified `::class`, normalized to the dot-
148
+ * joined key shape). The emitter resolves it by direct qualified lookup, or
149
+ * by PSR-4 file-path disambiguation when PHP's statement-form namespace left
150
+ * the registry keyed only by the short name — either way picking the
151
+ * specific class even when the short name is globally duplicated (the common
152
+ * admin/public `OrderController` split) or aliased. It falls back to the
153
+ * global short-name lookup (`lookupClassByName`), which still skips on
154
+ * ambiguity (`length !== 1`) — so a bare, genuinely ambiguous short name
155
+ * with no `use`/FQN correctly produces no (wrong) edge.
156
+ * - Method: resolved within the controller's own file via the symbol table
157
+ * (the legacy emitter only accepted same-file method resolutions).
158
+ *
159
+ * Edge confidence is a flat {@link ROUTE_EDGE_CONFIDENCE}. Route CALLS edges
160
+ * are gated downstream by the process-trace (`MIN_TRACE_CONFIDENCE`) and
161
+ * large-graph community (`MIN_CONFIDENCE_LARGE`) thresholds (both 0.5); a
162
+ * resolved edge lands at exactly 0.5 and passes (`>= 0.5`). The guessed-method
163
+ * fallback edge (`× 0.8` = 0.4) sits below the gate and is excluded from those
164
+ * passes — acceptable for an edge whose target method could not be resolved.
165
+ */
166
+ const processRoutesFromExtracted = async (graph, extractedRoutes, model, onProgress) => {
167
+ for (let i = 0; i < extractedRoutes.length; i++) {
168
+ const route = extractedRoutes[i];
169
+ if (i % 50 === 0) {
170
+ onProgress?.(i, extractedRoutes.length);
171
+ await (0, event_loop_js_1.yieldToEventLoop)();
172
+ }
173
+ if (!route.controllerName || !route.methodName)
174
+ continue;
175
+ // Resolve the controller class. Qualified-first: when the routes file
176
+ // disambiguated the controller (a `use` import or inline `::class` FQN, both
177
+ // normalized to the registry's dot-joined key shape by the extractor), look
178
+ // it up by qualified name — this resolves aliased imports and same-short-name
179
+ // controllers in different namespaces. Fall back to the global short-name
180
+ // lookup, which still refuses ambiguous matches (`length !== 1 → skip`),
181
+ // mirroring the legacy global tier.
182
+ let controllerDef;
183
+ if (route.controllerQualifiedName) {
184
+ controllerDef = resolveControllerByQualifiedName(model, route.controllerQualifiedName);
185
+ }
186
+ if (!controllerDef) {
187
+ const controllerDefs = model.types.lookupClassByName(route.controllerName);
188
+ if (controllerDefs.length !== 1)
189
+ continue;
190
+ controllerDef = controllerDefs[0];
191
+ }
192
+ const confidence = ROUTE_EDGE_CONFIDENCE;
193
+ // Method must live in the controller's own file (the legacy emitter only
194
+ // accepted same-file method resolutions).
195
+ const methodDefs = model.symbols.lookupExactAll(controllerDef.filePath, route.methodName);
196
+ const methodId = methodDefs[0]?.nodeId;
197
+ const sourceId = (0, utils_js_1.generateId)('File', route.filePath);
198
+ if (!methodId) {
199
+ const guessedId = (0, utils_js_1.generateId)('Method', `${controllerDef.filePath}:${route.methodName}`);
200
+ const relId = (0, utils_js_1.generateId)('CALLS', `${sourceId}:route->${guessedId}`);
201
+ graph.addRelationship({
202
+ id: relId,
203
+ sourceId,
204
+ targetId: guessedId,
205
+ type: 'CALLS',
206
+ confidence: confidence * 0.8,
207
+ reason: 'laravel-route',
208
+ });
209
+ continue;
210
+ }
211
+ const relId = (0, utils_js_1.generateId)('CALLS', `${sourceId}:route->${methodId}`);
212
+ graph.addRelationship({
213
+ id: relId,
214
+ sourceId,
215
+ targetId: methodId,
216
+ type: 'CALLS',
217
+ confidence,
218
+ reason: 'laravel-route',
219
+ });
220
+ }
221
+ onProgress?.(extractedRoutes.length, extractedRoutes.length);
222
+ };
223
+ exports.processRoutesFromExtracted = processRoutesFromExtracted;
224
+ /**
225
+ * Resolve each route's handler to a real symbol UID, keyed by the route's
226
+ * `(method, url)` identity (`routeNodeKey` — the same key the routes phase uses
227
+ * for the `Route` node). This is the Part 2 (#2138) groundwork that lets
228
+ * `HttpRouteExtractor.extractProvidersGraph` read the handler symbol from the
229
+ * graph instead of re-parsing source via `getDetections()`.
230
+ *
231
+ * Two route shapes, one resolution target — `(filePath, name) → nodeId`:
232
+ * - Laravel framework routes (`ExtractedRoute`) carry `controllerName` +
233
+ * `methodName`; resolve the controller (qualified-first) then the method in
234
+ * the controller's own file (mirrors `processRoutesFromExtracted`).
235
+ * - Decorator routes (`ExtractedDecoratorRoute`, e.g. Spring/FastAPI) carry
236
+ * `handlerName` (the decorated method, captured at extraction); resolve it
237
+ * directly in the route's own file.
238
+ *
239
+ * First-writer-wins per route identity, matching the routes phase's dedup (it
240
+ * keeps the first route registered for a `(method, url)` key and counts the rest
241
+ * as duplicates). The first route to claim a key reserves it **even when its
242
+ * handler is unresolvable**, so a later same-key route can never stamp its
243
+ * handler onto the first route's Route node (the routes phase made that first
244
+ * route the node-winner). Keying is `routeNodeKey(method, url)` (#2289): a
245
+ * same-URL multi-verb pair (`GET /x` + `POST /x`) resolves two handlers, one per
246
+ * node; method-less / wildcard routes key by URL alone, byte-identical to the
247
+ * pre-#2289 behavior. Routes whose handler cannot be *uniquely* resolved (no
248
+ * name, zero matches, or an ambiguous same-name match) carry no
249
+ * `handlerSymbolId`; the extractor then falls back to source scan for that route
250
+ * (fail-open, no regression, never a wrong handler).
251
+ */
252
+ function resolveRouteHandlerSymbols(model, extractedRoutes, decoratorRoutes) {
253
+ const out = new Map();
254
+ // Route identities already claimed by an earlier route (resolved or not).
255
+ // Mirrors the routes phase `addRoute` first-writer-wins so the handler we
256
+ // stamp always belongs to the route that actually won the Route node.
257
+ const claimed = new Set();
258
+ // Resolve a single same-file symbol by name, refusing to guess on ambiguity:
259
+ // exactly one match → its nodeId; zero or many → undefined (fail-open).
260
+ const uniqueSymbolId = (filePath, name) => {
261
+ const defs = model.symbols.lookupExactAll(filePath, name);
262
+ return defs.length === 1 ? defs[0]?.nodeId : undefined;
263
+ };
264
+ const claim = (routePath, prefix, httpMethod, symbolId) => {
265
+ if (!routePath)
266
+ return;
267
+ const url = (0, route_path_js_1.normalizeExtractedRoutePath)(routePath, prefix);
268
+ const key = (0, route_path_js_1.routeNodeKey)((0, route_path_js_1.normalizeRouteMethod)(httpMethod), url);
269
+ if (claimed.has(key))
270
+ return; // first-writer-wins: later same-key routes can't override
271
+ claimed.add(key);
272
+ if (symbolId)
273
+ out.set(key, symbolId);
274
+ };
275
+ // Laravel framework routes — controller class + method name.
276
+ for (const route of extractedRoutes) {
277
+ let methodId;
278
+ if (route.controllerName && route.methodName) {
279
+ let controllerDef;
280
+ if (route.controllerQualifiedName) {
281
+ controllerDef = resolveControllerByQualifiedName(model, route.controllerQualifiedName);
282
+ }
283
+ if (!controllerDef) {
284
+ const controllerDefs = model.types.lookupClassByName(route.controllerName);
285
+ if (controllerDefs.length === 1)
286
+ controllerDef = controllerDefs[0];
287
+ }
288
+ if (controllerDef)
289
+ methodId = uniqueSymbolId(controllerDef.filePath, route.methodName);
290
+ }
291
+ claim(route.routePath, route.prefix ?? null, route.httpMethod, methodId);
292
+ }
293
+ // Decorator routes (Spring / FastAPI / generic) — the decorated handler in
294
+ // the route's own file.
295
+ for (const dr of decoratorRoutes) {
296
+ const handlerId = dr.handlerName ? uniqueSymbolId(dr.filePath, dr.handlerName) : undefined;
297
+ claim(dr.routePath, dr.prefix ?? null, dr.httpMethod, handlerId);
298
+ }
299
+ return out;
300
+ }
301
+ /** Common method names on response/data objects that are NOT property accesses */
302
+ // Properties/methods to ignore when extracting consumer accessed keys from `data.X` patterns.
303
+ // Avoids false positives from Fetch API, Array, Object, Promise, and DOM access on variables
304
+ // that happen to share names with response variables (data, result, response, etc.).
305
+ const RESPONSE_ACCESS_BLOCKLIST = new Set([
306
+ // Fetch/Response API
307
+ 'json',
308
+ 'text',
309
+ 'blob',
310
+ 'arrayBuffer',
311
+ 'formData',
312
+ 'ok',
313
+ 'status',
314
+ 'headers',
315
+ 'clone',
316
+ // Promise
317
+ 'then',
318
+ 'catch',
319
+ 'finally',
320
+ // Array
321
+ 'map',
322
+ 'filter',
323
+ 'forEach',
324
+ 'reduce',
325
+ 'find',
326
+ 'some',
327
+ 'every',
328
+ 'push',
329
+ 'pop',
330
+ 'shift',
331
+ 'unshift',
332
+ 'splice',
333
+ 'slice',
334
+ 'concat',
335
+ 'join',
336
+ 'sort',
337
+ 'reverse',
338
+ 'includes',
339
+ 'indexOf',
340
+ // Object
341
+ 'length',
342
+ 'toString',
343
+ 'valueOf',
344
+ 'keys',
345
+ 'values',
346
+ 'entries',
347
+ // DOM methods — file-download patterns often reuse `data`/`response` variable names
348
+ 'appendChild',
349
+ 'removeChild',
350
+ 'insertBefore',
351
+ 'replaceChild',
352
+ 'replaceChildren',
353
+ 'createElement',
354
+ 'getElementById',
355
+ 'querySelector',
356
+ 'querySelectorAll',
357
+ 'setAttribute',
358
+ 'getAttribute',
359
+ 'removeAttribute',
360
+ 'hasAttribute',
361
+ 'addEventListener',
362
+ 'removeEventListener',
363
+ 'dispatchEvent',
364
+ 'classList',
365
+ 'className',
366
+ 'parentNode',
367
+ 'parentElement',
368
+ 'childNodes',
369
+ 'children',
370
+ 'nextSibling',
371
+ 'previousSibling',
372
+ 'firstChild',
373
+ 'lastChild',
374
+ 'click',
375
+ 'focus',
376
+ 'blur',
377
+ 'submit',
378
+ 'reset',
379
+ 'innerHTML',
380
+ 'outerHTML',
381
+ 'textContent',
382
+ 'innerText',
383
+ ]);
384
+ /**
385
+ * Extract property access keys from a consumer file's source code near fetch calls.
386
+ *
387
+ * Looks for destructuring (`const { data } = await res.json()`), property access
388
+ * (`response.data`), and optional chaining (`data?.key`). Returns deduplicated
389
+ * top-level property names accessed on the response. Scans the whole file, so
390
+ * all accessed keys are attributed to each fetch — acceptable for regex-based
391
+ * extraction.
392
+ */
393
+ const extractConsumerAccessedKeys = (content) => {
394
+ const keys = new Set();
395
+ // Pattern 1: Destructuring from .json() — const { key1, key2 } = await res.json()
396
+ // Also matches: const { key1, key2 } = await (await fetch(...)).json()
397
+ const destructurePattern = /(?:const|let|var)\s+\{([^}]+)\}\s*=\s*(?:await\s+)?(?:\w+\.json\s*\(\)|(?:await\s+)?(?:fetch|axios|got)\s*\([^)]*\)(?:\.then\s*\([^)]*\))?(?:\.json\s*\(\))?)/g;
398
+ let match;
399
+ while ((match = destructurePattern.exec(content)) !== null) {
400
+ const destructuredBody = match[1];
401
+ // Extract identifiers from destructuring, handling renamed bindings (key: alias)
402
+ const keyPattern = /(\w+)\s*(?::\s*\w+)?/g;
403
+ let keyMatch;
404
+ while ((keyMatch = keyPattern.exec(destructuredBody)) !== null) {
405
+ keys.add(keyMatch[1]);
406
+ }
407
+ }
408
+ // Pattern 2: Destructuring from a data/result/response/json variable
409
+ // e.g., const { items, total } = data; or const { error } = result;
410
+ const dataVarDestructure = /(?:const|let|var)\s+\{([^}]+)\}\s*=\s*(?:data|result|response|json|body|res)\b/g;
411
+ while ((match = dataVarDestructure.exec(content)) !== null) {
412
+ const destructuredBody = match[1];
413
+ const keyPattern = /(\w+)\s*(?::\s*\w+)?/g;
414
+ let keyMatch;
415
+ while ((keyMatch = keyPattern.exec(destructuredBody)) !== null) {
416
+ keys.add(keyMatch[1]);
417
+ }
418
+ }
419
+ // Pattern 3: Property access on common response variable names
420
+ // Matches: data.key, response.key, result.key, json.key, body.key
421
+ // Also matches optional chaining: data?.key
422
+ const propAccessPattern = /\b(?:data|response|result|json|body|res)\s*(?:\?\.|\.)(\w+)/g;
423
+ while ((match = propAccessPattern.exec(content)) !== null) {
424
+ const key = match[1];
425
+ // Skip common method calls that aren't property accesses
426
+ if (!RESPONSE_ACCESS_BLOCKLIST.has(key)) {
427
+ keys.add(key);
428
+ }
429
+ }
430
+ return [...keys];
431
+ };
432
+ exports.extractConsumerAccessedKeys = extractConsumerAccessedKeys;
433
+ /**
434
+ * Create FETCHES edges from extracted fetch() calls to matching Route nodes.
435
+ * When consumerContents is provided, extracts property access patterns from
436
+ * consumer files and encodes them in the edge reason field.
437
+ *
438
+ * Matching stays URL-only (#2289): a verb-less consumer (a `fetch()` call has
439
+ * no statically-known HTTP method) matches a route by URL and connects to
440
+ * **every** Route node sharing that URL — i.e. both the `GET /x` and `POST /x`
441
+ * nodes when a URL carries multiple verbs. `routeUrlToKeys` therefore maps each
442
+ * route URL to the list of `routeNodeKey` identities at that URL; a single-verb
443
+ * (or method-less) URL has a one-element list, keeping edges byte-identical to
444
+ * the pre-#2289 behavior.
445
+ */
446
+ const processNextjsFetchRoutes = (graph, fetchCalls, routeUrlToKeys, // routeURL → route node keys at that URL
447
+ consumerContents) => {
448
+ // Pre-count how many route URLs each consumer file matches (for confidence
449
+ // attribution). Counts once per call that matches any URL — independent of how
450
+ // many verbs share that URL — so the multi-fetch heuristic is unchanged.
451
+ const routeCountByFile = new Map();
452
+ for (const call of fetchCalls) {
453
+ const normalized = (0, nextjs_js_1.normalizeFetchURL)(call.fetchURL);
454
+ if (!normalized)
455
+ continue;
456
+ for (const routeURL of routeUrlToKeys.keys()) {
457
+ if ((0, nextjs_js_1.routeMatches)(normalized, routeURL)) {
458
+ routeCountByFile.set(call.filePath, (routeCountByFile.get(call.filePath) ?? 0) + 1);
459
+ break;
460
+ }
461
+ }
462
+ }
463
+ for (const call of fetchCalls) {
464
+ const normalized = (0, nextjs_js_1.normalizeFetchURL)(call.fetchURL);
465
+ if (!normalized)
466
+ continue;
467
+ for (const [routeURL, routeKeys] of routeUrlToKeys) {
468
+ if ((0, nextjs_js_1.routeMatches)(normalized, routeURL)) {
469
+ const sourceId = (0, utils_js_1.generateId)('File', call.filePath);
470
+ // Extract consumer accessed keys if file content is available
471
+ let reason = 'fetch-url-match';
472
+ if (consumerContents) {
473
+ const content = consumerContents.get(call.filePath);
474
+ if (content) {
475
+ const accessedKeys = (0, exports.extractConsumerAccessedKeys)(content);
476
+ if (accessedKeys.length > 0) {
477
+ reason = `fetch-url-match|keys:${accessedKeys.join(',')}`;
478
+ }
479
+ }
480
+ }
481
+ // Encode multi-fetch count so downstream can set confidence
482
+ const fetchCount = routeCountByFile.get(call.filePath) ?? 1;
483
+ if (fetchCount > 1) {
484
+ reason = `${reason}|fetches:${fetchCount}`;
485
+ }
486
+ // Connect to every Route node at this URL (one per verb).
487
+ for (const routeKey of routeKeys) {
488
+ const routeNodeId = (0, utils_js_1.generateId)('Route', routeKey);
489
+ graph.addRelationship({
490
+ id: (0, utils_js_1.generateId)('FETCHES', `${sourceId}->${routeNodeId}`),
491
+ sourceId,
492
+ targetId: routeNodeId,
493
+ type: 'FETCHES',
494
+ confidence: 0.9,
495
+ reason,
496
+ });
497
+ }
498
+ break;
499
+ }
500
+ }
501
+ }
502
+ };
503
+ exports.processNextjsFetchRoutes = processNextjsFetchRoutes;
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ /**
3
+ * Shared Ruby call routing logic.
4
+ *
5
+ * Ruby expresses imports and property definitions as method calls rather
6
+ * than syntax-level constructs. This module provides a routing function
7
+ * used by the CLI call-processor, CLI parse-worker, and the web
8
+ * call-processor so that the classification logic lives in one place.
9
+ *
10
+ * Heritage (mixins: include/extend/prepend) was previously routed here
11
+ * but is now emitted by the scope-resolution pipeline. The router still
12
+ * returns 'skip' for these calls so they don't become spurious call edges.
13
+ *
14
+ * NOTE: This file is intentionally duplicated in cgraph-web/ because the
15
+ * two packages have separate build targets (Node native vs WASM/browser).
16
+ * Keep both copies in sync until a shared package is introduced.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.routeRubyCall = routeRubyCall;
20
+ // ── Pre-allocated singletons for common return values ────────────────────────
21
+ const CALL_RESULT = { kind: 'call' };
22
+ const SKIP_RESULT = { kind: 'skip' };
23
+ // ── Routing function ────────────────────────────────────────────────────────
24
+ /**
25
+ * Classify a Ruby call node and extract its semantic payload.
26
+ *
27
+ * @param calledName - The method name (e.g. 'require', 'include', 'attr_accessor')
28
+ * @param callNode - The tree-sitter `call` AST node
29
+ * @returns A discriminated union describing the call's semantic role
30
+ */
31
+ function routeRubyCall(calledName, callNode) {
32
+ // ── require / require_relative → import ─────────────────────────────────
33
+ if (calledName === 'require' || calledName === 'require_relative') {
34
+ const argList = callNode.childForFieldName?.('arguments');
35
+ const stringNode = argList?.children?.find((c) => c.type === 'string');
36
+ const contentNode = stringNode?.children?.find((c) => c.type === 'string_content');
37
+ if (!contentNode)
38
+ return SKIP_RESULT;
39
+ let importPath = contentNode.text;
40
+ // Validate: reject null bytes, control chars, excessively long paths
41
+ if (!importPath || importPath.length > 1024 || /[\x00-\x1f]/.test(importPath)) {
42
+ return SKIP_RESULT;
43
+ }
44
+ const isRelative = calledName === 'require_relative';
45
+ if (isRelative && !importPath.startsWith('.')) {
46
+ importPath = './' + importPath;
47
+ }
48
+ return { kind: 'import', importPath, isRelative };
49
+ }
50
+ // ── include / extend / prepend — heritage (emitted by scope-resolution) ─
51
+ // Call-based heritage (Ruby mixins) is emitted by the scope-resolution
52
+ // pipeline. Return SKIP_RESULT so these calls don't fall through to normal
53
+ // call processing and become spurious call edges.
54
+ if (calledName === 'include' || calledName === 'extend' || calledName === 'prepend') {
55
+ return SKIP_RESULT;
56
+ }
57
+ // ── attr_accessor / attr_reader / attr_writer → property definitions ───
58
+ if (calledName === 'attr_accessor' ||
59
+ calledName === 'attr_reader' ||
60
+ calledName === 'attr_writer') {
61
+ // Extract YARD @return [Type] from preceding comment (e.g. `# @return [Address]`)
62
+ let yardType;
63
+ let sibling = callNode.previousSibling;
64
+ while (sibling) {
65
+ if (sibling.type === 'comment') {
66
+ const match = /@return\s+\[([^\]]+)\]/.exec(sibling.text);
67
+ if (match) {
68
+ const raw = match[1].trim();
69
+ // Extract simple type name: "User", "Array<User>" → "User"
70
+ const simple = raw.match(/^([A-Z]\w*)/);
71
+ if (simple)
72
+ yardType = simple[1];
73
+ break;
74
+ }
75
+ }
76
+ else if (sibling.isNamed) {
77
+ break; // stop at non-comment named sibling
78
+ }
79
+ sibling = sibling.previousSibling;
80
+ }
81
+ const items = [];
82
+ const argList = callNode.childForFieldName?.('arguments');
83
+ for (const arg of argList?.children ?? []) {
84
+ if (arg.type === 'simple_symbol') {
85
+ items.push({
86
+ propName: arg.text.startsWith(':') ? arg.text.slice(1) : arg.text,
87
+ accessorType: calledName,
88
+ startLine: arg.startPosition.row,
89
+ endLine: arg.endPosition.row,
90
+ ...(yardType ? { declaredType: yardType } : {}),
91
+ });
92
+ }
93
+ }
94
+ return items.length > 0 ? { kind: 'properties', items } : SKIP_RESULT;
95
+ }
96
+ // ── Everything else → regular call ─────────────────────────────────────
97
+ return CALL_RESULT;
98
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ // cgraph/src/core/ingestion/call-types.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });