cgraphx 2.0.2 → 2.0.6

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 (754) hide show
  1. package/dist/.claude-template/FLOW-MAP.md +13 -3
  2. package/dist/.claude-template/agents/task-history.md +186 -0
  3. package/dist/.claude-template/commands/end.md +1 -0
  4. package/dist/.claude-template/skills/cgraphx-guide/SKILL.md +5 -3
  5. package/dist/.claude-template/skills/cgraphx-guide/how-to-use.html +8 -8
  6. package/dist/.claude-template/skills/cgraphx-guide/how-to-use.md +8 -8
  7. package/dist/.claude-template/skills/clarify-requirements/SKILL.md +13 -9
  8. package/dist/.claude-template/skills/db-query/SKILL.md +19 -2
  9. package/dist/.claude-template/skills/iboc-check/SKILL.md +51 -23
  10. package/dist/.claude-template/skills/iboc-check/filler-prompt.md +3 -4
  11. package/dist/.claude-template/skills/run-api-test/SKILL.md +15 -15
  12. package/dist/.claude-template/skills/run-api-test/assets/{template-test-report.md → template-/346/216/245/345/217/243/346/265/213/350/257/225/346/212/245/345/221/212.md} +4 -4
  13. package/dist/.claude-template/skills/run-api-test/references/bru-run.md +1 -1
  14. package/dist/.claude-template/skills/run-api-test/references/db-verification.md +2 -2
  15. package/dist/.claude-template/skills/run-api-test/references/report-format.md +6 -6
  16. package/dist/.claude-template/skills/run-api-test/references/service-readiness.md +1 -1
  17. package/dist/.claude-template/skills/run-api-test/references/test-scope.md +6 -6
  18. package/dist/.claude-template/skills/run-ui-test/SKILL.md +186 -0
  19. package/dist/.claude-template/skills/run-ui-test/references/report-format.md +77 -0
  20. package/dist/.claude-template/skills/subagent-implement/SKILL.md +3 -2
  21. package/dist/.claude-template/skills/write-api/SKILL.md +18 -18
  22. package/dist/.claude-template/skills/write-api/assets/{template-api-spec.md → template-/346/216/245/345/217/243/346/265/213/350/257/225-spec.md} +1 -1
  23. package/dist/.claude-template/skills/write-api/references/{api-spec-format.md → /346/216/245/345/217/243/346/265/213/350/257/225-spec-format.md} +3 -3
  24. package/dist/.claude-template/skills/write-plan/SKILL.md +4 -2
  25. package/dist/.claude-template/skills/write-ui-test/SKILL.md +125 -0
  26. package/dist/.claude-template/skills/write-ui-test/references//347/224/250/344/276/213/350/247/204/346/240/274-format.md +94 -0
  27. package/dist/core/code/engine/cli/analyze-config.js +320 -0
  28. package/dist/core/code/engine/cli/analyze.js +1086 -0
  29. package/dist/core/code/engine/cli/cli-message.js +83 -0
  30. package/dist/core/code/engine/cli/detect-changes-format.js +58 -0
  31. package/dist/core/code/engine/cli/embedding-dims.js +43 -0
  32. package/dist/core/code/engine/cli/format-elapsed.js +12 -0
  33. package/dist/core/code/engine/cli/help-i18n.js +144 -0
  34. package/dist/core/code/engine/cli/i18n/en.js +110 -0
  35. package/dist/core/code/engine/cli/i18n/index.js +47 -0
  36. package/dist/core/code/engine/cli/i18n/resources.js +9 -0
  37. package/dist/core/code/engine/cli/i18n/zh-CN.js +110 -0
  38. package/dist/core/code/engine/cli/lazy-action.js +67 -0
  39. package/dist/core/code/engine/cli/optional-grammars.js +136 -0
  40. package/dist/core/code/engine/cli/resolve-invocation.js +76 -0
  41. package/dist/core/code/engine/cli/status.js +156 -0
  42. package/dist/core/code/engine/cli/tool.js +384 -0
  43. package/dist/core/code/engine/config/ignore-service.js +511 -0
  44. package/dist/core/code/engine/config/supported-languages.js +17 -0
  45. package/dist/core/code/engine/core/analysis-features.js +64 -0
  46. package/dist/core/code/engine/core/analyzer-identity.js +2171 -0
  47. package/dist/core/code/engine/core/git-staleness.js +180 -0
  48. package/dist/core/code/engine/core/graph/graph.js +180 -0
  49. package/dist/core/code/engine/core/graph/import-cycles.js +106 -0
  50. package/dist/core/code/engine/core/graph/types.js +2 -0
  51. package/dist/core/code/engine/core/index-freshness.js +12 -0
  52. package/dist/core/code/engine/core/ingestion/binding-accumulator.js +341 -0
  53. package/dist/core/code/engine/core/ingestion/call-extractors/configs/c-cpp.js +168 -0
  54. package/dist/core/code/engine/core/ingestion/call-extractors/configs/csharp.js +9 -0
  55. package/dist/core/code/engine/core/ingestion/call-extractors/configs/dart.js +8 -0
  56. package/dist/core/code/engine/core/ingestion/call-extractors/configs/go.js +8 -0
  57. package/dist/core/code/engine/core/ingestion/call-extractors/configs/jvm.js +54 -0
  58. package/dist/core/code/engine/core/ingestion/call-extractors/configs/php.js +8 -0
  59. package/dist/core/code/engine/core/ingestion/call-extractors/configs/python.js +8 -0
  60. package/dist/core/code/engine/core/ingestion/call-extractors/configs/ruby.js +8 -0
  61. package/dist/core/code/engine/core/ingestion/call-extractors/configs/rust.js +8 -0
  62. package/dist/core/code/engine/core/ingestion/call-extractors/configs/swift.js +8 -0
  63. package/dist/core/code/engine/core/ingestion/call-extractors/configs/typescript-javascript.js +11 -0
  64. package/dist/core/code/engine/core/ingestion/call-extractors/generic.js +62 -0
  65. package/dist/core/code/engine/core/ingestion/call-processor.js +503 -0
  66. package/dist/core/code/engine/core/ingestion/call-routing.js +98 -0
  67. package/dist/core/code/engine/core/ingestion/call-types.js +3 -0
  68. package/dist/core/code/engine/core/ingestion/cfg/callee-cell-format.js +45 -0
  69. package/dist/core/code/engine/core/ingestion/cfg/cfg-builder.js +202 -0
  70. package/dist/core/code/engine/core/ingestion/cfg/collect.js +81 -0
  71. package/dist/core/code/engine/core/ingestion/cfg/control-dependence.js +185 -0
  72. package/dist/core/code/engine/core/ingestion/cfg/control-flow-context.js +130 -0
  73. package/dist/core/code/engine/core/ingestion/cfg/emit.js +646 -0
  74. package/dist/core/code/engine/core/ingestion/cfg/post-dominators.js +182 -0
  75. package/dist/core/code/engine/core/ingestion/cfg/reaching-def-reason-codec.js +139 -0
  76. package/dist/core/code/engine/core/ingestion/cfg/reaching-defs-graph.js +322 -0
  77. package/dist/core/code/engine/core/ingestion/cfg/reaching-defs.js +792 -0
  78. package/dist/core/code/engine/core/ingestion/cfg/synthetic-escape.js +305 -0
  79. package/dist/core/code/engine/core/ingestion/cfg/traversal-result.js +6 -0
  80. package/dist/core/code/engine/core/ingestion/cfg/types.js +14 -0
  81. package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp-harvest.js +545 -0
  82. package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp.js +590 -0
  83. package/dist/core/code/engine/core/ingestion/cfg/visitors/call-site-harvest.js +356 -0
  84. package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp-harvest.js +593 -0
  85. package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp.js +871 -0
  86. package/dist/core/code/engine/core/ingestion/cfg/visitors/dart-harvest.js +874 -0
  87. package/dist/core/code/engine/core/ingestion/cfg/visitors/dart.js +840 -0
  88. package/dist/core/code/engine/core/ingestion/cfg/visitors/go-harvest.js +625 -0
  89. package/dist/core/code/engine/core/ingestion/cfg/visitors/go.js +642 -0
  90. package/dist/core/code/engine/core/ingestion/cfg/visitors/java-harvest.js +517 -0
  91. package/dist/core/code/engine/core/ingestion/cfg/visitors/java.js +816 -0
  92. package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin-harvest.js +723 -0
  93. package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin.js +813 -0
  94. package/dist/core/code/engine/core/ingestion/cfg/visitors/php-harvest.js +630 -0
  95. package/dist/core/code/engine/core/ingestion/cfg/visitors/php.js +725 -0
  96. package/dist/core/code/engine/core/ingestion/cfg/visitors/python-harvest.js +776 -0
  97. package/dist/core/code/engine/core/ingestion/cfg/visitors/python.js +562 -0
  98. package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby-harvest.js +591 -0
  99. package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby.js +760 -0
  100. package/dist/core/code/engine/core/ingestion/cfg/visitors/rust-harvest.js +877 -0
  101. package/dist/core/code/engine/core/ingestion/cfg/visitors/rust.js +562 -0
  102. package/dist/core/code/engine/core/ingestion/cfg/visitors/scope-tree-harvest.js +120 -0
  103. package/dist/core/code/engine/core/ingestion/cfg/visitors/swift-harvest.js +683 -0
  104. package/dist/core/code/engine/core/ingestion/cfg/visitors/swift.js +791 -0
  105. package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript-harvest.js +1060 -0
  106. package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript.js +587 -0
  107. package/dist/core/code/engine/core/ingestion/class-extractors/configs/c-cpp.js +77 -0
  108. package/dist/core/code/engine/core/ingestion/class-extractors/configs/csharp.js +24 -0
  109. package/dist/core/code/engine/core/ingestion/class-extractors/configs/dart.js +10 -0
  110. package/dist/core/code/engine/core/ingestion/class-extractors/configs/go.js +28 -0
  111. package/dist/core/code/engine/core/ingestion/class-extractors/configs/jvm.js +67 -0
  112. package/dist/core/code/engine/core/ingestion/class-extractors/configs/php.js +10 -0
  113. package/dist/core/code/engine/core/ingestion/class-extractors/configs/python.js +10 -0
  114. package/dist/core/code/engine/core/ingestion/class-extractors/configs/ruby.js +13 -0
  115. package/dist/core/code/engine/core/ingestion/class-extractors/configs/rust.js +10 -0
  116. package/dist/core/code/engine/core/ingestion/class-extractors/configs/swift.js +21 -0
  117. package/dist/core/code/engine/core/ingestion/class-extractors/configs/typescript-javascript.js +31 -0
  118. package/dist/core/code/engine/core/ingestion/class-extractors/generic.js +144 -0
  119. package/dist/core/code/engine/core/ingestion/class-types.js +2 -0
  120. package/dist/core/code/engine/core/ingestion/cluster-enricher.js +174 -0
  121. package/dist/core/code/engine/core/ingestion/community-processor.js +604 -0
  122. package/dist/core/code/engine/core/ingestion/constants.js +26 -0
  123. package/dist/core/code/engine/core/ingestion/cpp-ue-preprocessor.js +263 -0
  124. package/dist/core/code/engine/core/ingestion/csharp-namespace-gate.js +133 -0
  125. package/dist/core/code/engine/core/ingestion/di-extractors/index.js +38 -0
  126. package/dist/core/code/engine/core/ingestion/di-extractors/spring.js +310 -0
  127. package/dist/core/code/engine/core/ingestion/emit-references.js +244 -0
  128. package/dist/core/code/engine/core/ingestion/entry-point-scoring.js +201 -0
  129. package/dist/core/code/engine/core/ingestion/export-detection.js +244 -0
  130. package/dist/core/code/engine/core/ingestion/field-extractor.js +29 -0
  131. package/dist/core/code/engine/core/ingestion/field-extractors/configs/c-cpp.js +107 -0
  132. package/dist/core/code/engine/core/ingestion/field-extractors/configs/csharp.js +124 -0
  133. package/dist/core/code/engine/core/ingestion/field-extractors/configs/dart.js +99 -0
  134. package/dist/core/code/engine/core/ingestion/field-extractors/configs/go.js +102 -0
  135. package/dist/core/code/engine/core/ingestion/field-extractors/configs/helpers.js +198 -0
  136. package/dist/core/code/engine/core/ingestion/field-extractors/configs/jvm.js +172 -0
  137. package/dist/core/code/engine/core/ingestion/field-extractors/configs/php.js +67 -0
  138. package/dist/core/code/engine/core/ingestion/field-extractors/configs/python.js +94 -0
  139. package/dist/core/code/engine/core/ingestion/field-extractors/configs/ruby.js +79 -0
  140. package/dist/core/code/engine/core/ingestion/field-extractors/configs/rust.js +55 -0
  141. package/dist/core/code/engine/core/ingestion/field-extractors/configs/swift.js +93 -0
  142. package/dist/core/code/engine/core/ingestion/field-extractors/configs/typescript-javascript.js +59 -0
  143. package/dist/core/code/engine/core/ingestion/field-extractors/generic.js +147 -0
  144. package/dist/core/code/engine/core/ingestion/field-extractors/typescript.js +266 -0
  145. package/dist/core/code/engine/core/ingestion/field-types.js +3 -0
  146. package/dist/core/code/engine/core/ingestion/filesystem-walker.js +136 -0
  147. package/dist/core/code/engine/core/ingestion/finalize-orchestrator.js +159 -0
  148. package/dist/core/code/engine/core/ingestion/framework-detection.js +432 -0
  149. package/dist/core/code/engine/core/ingestion/frameworks/spring/analysis-features.js +38 -0
  150. package/dist/core/code/engine/core/ingestion/frameworks/spring/annotation-arguments.js +234 -0
  151. package/dist/core/code/engine/core/ingestion/frameworks/spring/aop-candidates.js +88 -0
  152. package/dist/core/code/engine/core/ingestion/frameworks/spring/aop.js +487 -0
  153. package/dist/core/code/engine/core/ingestion/frameworks/spring/auto-configuration.js +21 -0
  154. package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-candidates.js +189 -0
  155. package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-catalog.js +32 -0
  156. package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-factories.js +73 -0
  157. package/dist/core/code/engine/core/ingestion/frameworks/spring/conditionals.js +323 -0
  158. package/dist/core/code/engine/core/ingestion/frameworks/spring/config-bindings.js +119 -0
  159. package/dist/core/code/engine/core/ingestion/frameworks/spring/di-metadata.js +385 -0
  160. package/dist/core/code/engine/core/ingestion/frameworks/spring/resource-injection.js +96 -0
  161. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/c-cpp.js +17 -0
  162. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/csharp.js +46 -0
  163. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/dart.js +59 -0
  164. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/go.js +30 -0
  165. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/jvm.js +73 -0
  166. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/php.js +19 -0
  167. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/python.js +45 -0
  168. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/ruby.js +20 -0
  169. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/rust.js +58 -0
  170. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/swift.js +94 -0
  171. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/typescript-javascript.js +26 -0
  172. package/dist/core/code/engine/core/ingestion/import-resolvers/csharp.js +128 -0
  173. package/dist/core/code/engine/core/ingestion/import-resolvers/go.js +50 -0
  174. package/dist/core/code/engine/core/ingestion/import-resolvers/jvm.js +112 -0
  175. package/dist/core/code/engine/core/ingestion/import-resolvers/php.js +80 -0
  176. package/dist/core/code/engine/core/ingestion/import-resolvers/python.js +75 -0
  177. package/dist/core/code/engine/core/ingestion/import-resolvers/resolver-factory.js +36 -0
  178. package/dist/core/code/engine/core/ingestion/import-resolvers/ruby.js +20 -0
  179. package/dist/core/code/engine/core/ingestion/import-resolvers/rust.js +79 -0
  180. package/dist/core/code/engine/core/ingestion/import-resolvers/standard.js +180 -0
  181. package/dist/core/code/engine/core/ingestion/import-resolvers/types.js +7 -0
  182. package/dist/core/code/engine/core/ingestion/import-resolvers/utils.js +153 -0
  183. package/dist/core/code/engine/core/ingestion/import-target-adapter.js +99 -0
  184. package/dist/core/code/engine/core/ingestion/language-config.js +391 -0
  185. package/dist/core/code/engine/core/ingestion/language-provider.js +25 -0
  186. package/dist/core/code/engine/core/ingestion/languages/c/arity-metadata.js +98 -0
  187. package/dist/core/code/engine/core/ingestion/languages/c/arity.js +21 -0
  188. package/dist/core/code/engine/core/ingestion/languages/c/capture-side-channel.js +69 -0
  189. package/dist/core/code/engine/core/ingestion/languages/c/captures.js +189 -0
  190. package/dist/core/code/engine/core/ingestion/languages/c/header-scan.js +58 -0
  191. package/dist/core/code/engine/core/ingestion/languages/c/import-decomposer.js +68 -0
  192. package/dist/core/code/engine/core/ingestion/languages/c/import-target.js +103 -0
  193. package/dist/core/code/engine/core/ingestion/languages/c/index.js +33 -0
  194. package/dist/core/code/engine/core/ingestion/languages/c/interpret.js +53 -0
  195. package/dist/core/code/engine/core/ingestion/languages/c/merge-bindings.js +26 -0
  196. package/dist/core/code/engine/core/ingestion/languages/c/query.js +210 -0
  197. package/dist/core/code/engine/core/ingestion/languages/c/scope-resolver.js +112 -0
  198. package/dist/core/code/engine/core/ingestion/languages/c/simple-hooks.js +24 -0
  199. package/dist/core/code/engine/core/ingestion/languages/c/static-linkage.js +109 -0
  200. package/dist/core/code/engine/core/ingestion/languages/c-cpp.js +506 -0
  201. package/dist/core/code/engine/core/ingestion/languages/cpp/adl.js +804 -0
  202. package/dist/core/code/engine/core/ingestion/languages/cpp/arity-metadata.js +258 -0
  203. package/dist/core/code/engine/core/ingestion/languages/cpp/arity.js +37 -0
  204. package/dist/core/code/engine/core/ingestion/languages/cpp/capture-side-channel.js +89 -0
  205. package/dist/core/code/engine/core/ingestion/languages/cpp/captures.js +1975 -0
  206. package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-extractor.js +311 -0
  207. package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-filter.js +210 -0
  208. package/dist/core/code/engine/core/ingestion/languages/cpp/conversion-rank.js +163 -0
  209. package/dist/core/code/engine/core/ingestion/languages/cpp/file-local-linkage.js +327 -0
  210. package/dist/core/code/engine/core/ingestion/languages/cpp/header-scan.js +53 -0
  211. package/dist/core/code/engine/core/ingestion/languages/cpp/import-decomposer.js +134 -0
  212. package/dist/core/code/engine/core/ingestion/languages/cpp/import-target.js +16 -0
  213. package/dist/core/code/engine/core/ingestion/languages/cpp/index.js +33 -0
  214. package/dist/core/code/engine/core/ingestion/languages/cpp/inline-namespaces.js +379 -0
  215. package/dist/core/code/engine/core/ingestion/languages/cpp/interpret.js +239 -0
  216. package/dist/core/code/engine/core/ingestion/languages/cpp/member-lookup.js +470 -0
  217. package/dist/core/code/engine/core/ingestion/languages/cpp/merge-bindings.js +32 -0
  218. package/dist/core/code/engine/core/ingestion/languages/cpp/query.js +763 -0
  219. package/dist/core/code/engine/core/ingestion/languages/cpp/range-bindings.js +230 -0
  220. package/dist/core/code/engine/core/ingestion/languages/cpp/scope-resolver.js +354 -0
  221. package/dist/core/code/engine/core/ingestion/languages/cpp/simple-hooks.js +67 -0
  222. package/dist/core/code/engine/core/ingestion/languages/cpp/two-phase-lookup.js +348 -0
  223. package/dist/core/code/engine/core/ingestion/languages/cpp/type-classifier.js +56 -0
  224. package/dist/core/code/engine/core/ingestion/languages/cpp/user-defined-conversions.js +128 -0
  225. package/dist/core/code/engine/core/ingestion/languages/csharp/accessor-unwrap.js +67 -0
  226. package/dist/core/code/engine/core/ingestion/languages/csharp/arity-metadata.js +49 -0
  227. package/dist/core/code/engine/core/ingestion/languages/csharp/arity.js +40 -0
  228. package/dist/core/code/engine/core/ingestion/languages/csharp/cache-stats.js +32 -0
  229. package/dist/core/code/engine/core/ingestion/languages/csharp/captures.js +557 -0
  230. package/dist/core/code/engine/core/ingestion/languages/csharp/import-decomposer.js +96 -0
  231. package/dist/core/code/engine/core/ingestion/languages/csharp/import-target.js +176 -0
  232. package/dist/core/code/engine/core/ingestion/languages/csharp/index.js +95 -0
  233. package/dist/core/code/engine/core/ingestion/languages/csharp/interpret.js +150 -0
  234. package/dist/core/code/engine/core/ingestion/languages/csharp/merge-bindings.js +58 -0
  235. package/dist/core/code/engine/core/ingestion/languages/csharp/namespace-siblings.js +708 -0
  236. package/dist/core/code/engine/core/ingestion/languages/csharp/qualified-type-names.js +62 -0
  237. package/dist/core/code/engine/core/ingestion/languages/csharp/query.js +578 -0
  238. package/dist/core/code/engine/core/ingestion/languages/csharp/receiver-binding.js +142 -0
  239. package/dist/core/code/engine/core/ingestion/languages/csharp/resolution-config.js +18 -0
  240. package/dist/core/code/engine/core/ingestion/languages/csharp/scope-resolver.js +84 -0
  241. package/dist/core/code/engine/core/ingestion/languages/csharp/simple-hooks.js +81 -0
  242. package/dist/core/code/engine/core/ingestion/languages/csharp.js +204 -0
  243. package/dist/core/code/engine/core/ingestion/languages/dart/arity-metadata.js +38 -0
  244. package/dist/core/code/engine/core/ingestion/languages/dart/arity.js +34 -0
  245. package/dist/core/code/engine/core/ingestion/languages/dart/built-ins.js +37 -0
  246. package/dist/core/code/engine/core/ingestion/languages/dart/cache-stats.js +30 -0
  247. package/dist/core/code/engine/core/ingestion/languages/dart/captures.js +1096 -0
  248. package/dist/core/code/engine/core/ingestion/languages/dart/expand-wildcards.js +34 -0
  249. package/dist/core/code/engine/core/ingestion/languages/dart/extension-type-preprocess.js +33 -0
  250. package/dist/core/code/engine/core/ingestion/languages/dart/import-target.js +68 -0
  251. package/dist/core/code/engine/core/ingestion/languages/dart/index.js +45 -0
  252. package/dist/core/code/engine/core/ingestion/languages/dart/interpret.js +101 -0
  253. package/dist/core/code/engine/core/ingestion/languages/dart/merge-bindings.js +42 -0
  254. package/dist/core/code/engine/core/ingestion/languages/dart/query.js +246 -0
  255. package/dist/core/code/engine/core/ingestion/languages/dart/receiver-binding.js +90 -0
  256. package/dist/core/code/engine/core/ingestion/languages/dart/scope-resolver.js +197 -0
  257. package/dist/core/code/engine/core/ingestion/languages/dart/signature-bindings.js +54 -0
  258. package/dist/core/code/engine/core/ingestion/languages/dart/simple-hooks.js +61 -0
  259. package/dist/core/code/engine/core/ingestion/languages/dart.js +138 -0
  260. package/dist/core/code/engine/core/ingestion/languages/go/arity-metadata.js +71 -0
  261. package/dist/core/code/engine/core/ingestion/languages/go/arity.js +17 -0
  262. package/dist/core/code/engine/core/ingestion/languages/go/cache-stats.js +21 -0
  263. package/dist/core/code/engine/core/ingestion/languages/go/captures.js +492 -0
  264. package/dist/core/code/engine/core/ingestion/languages/go/expand-wildcards.js +97 -0
  265. package/dist/core/code/engine/core/ingestion/languages/go/generic-type-parameters.js +146 -0
  266. package/dist/core/code/engine/core/ingestion/languages/go/import-decomposer.js +47 -0
  267. package/dist/core/code/engine/core/ingestion/languages/go/import-target.js +70 -0
  268. package/dist/core/code/engine/core/ingestion/languages/go/index.js +39 -0
  269. package/dist/core/code/engine/core/ingestion/languages/go/interface-impls.js +955 -0
  270. package/dist/core/code/engine/core/ingestion/languages/go/interpret.js +177 -0
  271. package/dist/core/code/engine/core/ingestion/languages/go/merge-bindings.js +21 -0
  272. package/dist/core/code/engine/core/ingestion/languages/go/method-owners.js +131 -0
  273. package/dist/core/code/engine/core/ingestion/languages/go/namespace-mirror.js +56 -0
  274. package/dist/core/code/engine/core/ingestion/languages/go/package-clause.js +79 -0
  275. package/dist/core/code/engine/core/ingestion/languages/go/package-siblings.js +83 -0
  276. package/dist/core/code/engine/core/ingestion/languages/go/query.js +298 -0
  277. package/dist/core/code/engine/core/ingestion/languages/go/range-binding.js +127 -0
  278. package/dist/core/code/engine/core/ingestion/languages/go/receiver-binding.js +24 -0
  279. package/dist/core/code/engine/core/ingestion/languages/go/scope-resolver.js +75 -0
  280. package/dist/core/code/engine/core/ingestion/languages/go/simple-hooks.js +31 -0
  281. package/dist/core/code/engine/core/ingestion/languages/go/type-binding.js +279 -0
  282. package/dist/core/code/engine/core/ingestion/languages/go.js +160 -0
  283. package/dist/core/code/engine/core/ingestion/languages/index.js +66 -0
  284. package/dist/core/code/engine/core/ingestion/languages/java/analysis-features.js +16 -0
  285. package/dist/core/code/engine/core/ingestion/languages/java/arity-metadata.js +43 -0
  286. package/dist/core/code/engine/core/ingestion/languages/java/arity.js +27 -0
  287. package/dist/core/code/engine/core/ingestion/languages/java/cache-stats.js +32 -0
  288. package/dist/core/code/engine/core/ingestion/languages/java/capture-side-channel.js +123 -0
  289. package/dist/core/code/engine/core/ingestion/languages/java/captures.js +791 -0
  290. package/dist/core/code/engine/core/ingestion/languages/java/import-decomposer.js +88 -0
  291. package/dist/core/code/engine/core/ingestion/languages/java/import-target.js +103 -0
  292. package/dist/core/code/engine/core/ingestion/languages/java/index.js +43 -0
  293. package/dist/core/code/engine/core/ingestion/languages/java/interpret.js +146 -0
  294. package/dist/core/code/engine/core/ingestion/languages/java/merge-bindings.js +43 -0
  295. package/dist/core/code/engine/core/ingestion/languages/java/package-facts.js +16 -0
  296. package/dist/core/code/engine/core/ingestion/languages/java/package-siblings.js +11 -0
  297. package/dist/core/code/engine/core/ingestion/languages/java/query.js +319 -0
  298. package/dist/core/code/engine/core/ingestion/languages/java/receiver-binding.js +98 -0
  299. package/dist/core/code/engine/core/ingestion/languages/java/scope-resolver.js +213 -0
  300. package/dist/core/code/engine/core/ingestion/languages/java/simple-hooks.js +39 -0
  301. package/dist/core/code/engine/core/ingestion/languages/java/spring-aop.js +53 -0
  302. package/dist/core/code/engine/core/ingestion/languages/java/spring-bean-metadata.js +11 -0
  303. package/dist/core/code/engine/core/ingestion/languages/java/spring-conditionals.js +52 -0
  304. package/dist/core/code/engine/core/ingestion/languages/java/spring-config-bindings.js +222 -0
  305. package/dist/core/code/engine/core/ingestion/languages/java/spring-di.js +165 -0
  306. package/dist/core/code/engine/core/ingestion/languages/java.js +192 -0
  307. package/dist/core/code/engine/core/ingestion/languages/javascript/arity.js +15 -0
  308. package/dist/core/code/engine/core/ingestion/languages/javascript/captures.js +1122 -0
  309. package/dist/core/code/engine/core/ingestion/languages/javascript/import-target.js +56 -0
  310. package/dist/core/code/engine/core/ingestion/languages/javascript/index.js +109 -0
  311. package/dist/core/code/engine/core/ingestion/languages/javascript/interpret.js +45 -0
  312. package/dist/core/code/engine/core/ingestion/languages/javascript/merge-bindings.js +21 -0
  313. package/dist/core/code/engine/core/ingestion/languages/javascript/query.js +659 -0
  314. package/dist/core/code/engine/core/ingestion/languages/javascript/scope-resolver.js +78 -0
  315. package/dist/core/code/engine/core/ingestion/languages/javascript/simple-hooks.js +44 -0
  316. package/dist/core/code/engine/core/ingestion/languages/jvm/package-facts.js +46 -0
  317. package/dist/core/code/engine/core/ingestion/languages/jvm/package-siblings.js +200 -0
  318. package/dist/core/code/engine/core/ingestion/languages/kotlin/arity-metadata.js +23 -0
  319. package/dist/core/code/engine/core/ingestion/languages/kotlin/arity.js +18 -0
  320. package/dist/core/code/engine/core/ingestion/languages/kotlin/cache-stats.js +21 -0
  321. package/dist/core/code/engine/core/ingestion/languages/kotlin/capture-side-channel.js +160 -0
  322. package/dist/core/code/engine/core/ingestion/languages/kotlin/captures.js +1262 -0
  323. package/dist/core/code/engine/core/ingestion/languages/kotlin/companion-scopes.js +72 -0
  324. package/dist/core/code/engine/core/ingestion/languages/kotlin/import-decomposer.js +40 -0
  325. package/dist/core/code/engine/core/ingestion/languages/kotlin/import-target.js +135 -0
  326. package/dist/core/code/engine/core/ingestion/languages/kotlin/index.js +26 -0
  327. package/dist/core/code/engine/core/ingestion/languages/kotlin/interpret.js +75 -0
  328. package/dist/core/code/engine/core/ingestion/languages/kotlin/merge-bindings.js +28 -0
  329. package/dist/core/code/engine/core/ingestion/languages/kotlin/owners.js +134 -0
  330. package/dist/core/code/engine/core/ingestion/languages/kotlin/package-facts.js +16 -0
  331. package/dist/core/code/engine/core/ingestion/languages/kotlin/package-siblings.js +11 -0
  332. package/dist/core/code/engine/core/ingestion/languages/kotlin/query.js +243 -0
  333. package/dist/core/code/engine/core/ingestion/languages/kotlin/receiver-binding.js +103 -0
  334. package/dist/core/code/engine/core/ingestion/languages/kotlin/scope-resolver.js +207 -0
  335. package/dist/core/code/engine/core/ingestion/languages/kotlin/simple-hooks.js +42 -0
  336. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-aop.js +68 -0
  337. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-bean-metadata.js +11 -0
  338. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-conditionals.js +53 -0
  339. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-di.js +304 -0
  340. package/dist/core/code/engine/core/ingestion/languages/kotlin.js +189 -0
  341. package/dist/core/code/engine/core/ingestion/languages/php/arity-metadata.js +66 -0
  342. package/dist/core/code/engine/core/ingestion/languages/php/arity.js +43 -0
  343. package/dist/core/code/engine/core/ingestion/languages/php/cache-stats.js +32 -0
  344. package/dist/core/code/engine/core/ingestion/languages/php/captures.js +1166 -0
  345. package/dist/core/code/engine/core/ingestion/languages/php/import-decomposer.js +238 -0
  346. package/dist/core/code/engine/core/ingestion/languages/php/import-target.js +213 -0
  347. package/dist/core/code/engine/core/ingestion/languages/php/index.js +85 -0
  348. package/dist/core/code/engine/core/ingestion/languages/php/interpret.js +256 -0
  349. package/dist/core/code/engine/core/ingestion/languages/php/merge-bindings.js +50 -0
  350. package/dist/core/code/engine/core/ingestion/languages/php/namespace-siblings.js +353 -0
  351. package/dist/core/code/engine/core/ingestion/languages/php/query.js +391 -0
  352. package/dist/core/code/engine/core/ingestion/languages/php/receiver-binding.js +135 -0
  353. package/dist/core/code/engine/core/ingestion/languages/php/scope-resolver.js +361 -0
  354. package/dist/core/code/engine/core/ingestion/languages/php/simple-hooks.js +116 -0
  355. package/dist/core/code/engine/core/ingestion/languages/php.js +302 -0
  356. package/dist/core/code/engine/core/ingestion/languages/python/arity-metadata.js +49 -0
  357. package/dist/core/code/engine/core/ingestion/languages/python/arity.js +41 -0
  358. package/dist/core/code/engine/core/ingestion/languages/python/cache-stats.js +34 -0
  359. package/dist/core/code/engine/core/ingestion/languages/python/captures.js +299 -0
  360. package/dist/core/code/engine/core/ingestion/languages/python/depends-references.js +68 -0
  361. package/dist/core/code/engine/core/ingestion/languages/python/import-decomposer.js +115 -0
  362. package/dist/core/code/engine/core/ingestion/languages/python/import-target.js +440 -0
  363. package/dist/core/code/engine/core/ingestion/languages/python/index-stats.js +30 -0
  364. package/dist/core/code/engine/core/ingestion/languages/python/index.js +96 -0
  365. package/dist/core/code/engine/core/ingestion/languages/python/interpret.js +430 -0
  366. package/dist/core/code/engine/core/ingestion/languages/python/merge-bindings.js +47 -0
  367. package/dist/core/code/engine/core/ingestion/languages/python/query.js +323 -0
  368. package/dist/core/code/engine/core/ingestion/languages/python/receiver-binding.js +310 -0
  369. package/dist/core/code/engine/core/ingestion/languages/python/scope-resolver.js +80 -0
  370. package/dist/core/code/engine/core/ingestion/languages/python/simple-hooks.js +53 -0
  371. package/dist/core/code/engine/core/ingestion/languages/python.js +140 -0
  372. package/dist/core/code/engine/core/ingestion/languages/ruby/arity.js +41 -0
  373. package/dist/core/code/engine/core/ingestion/languages/ruby/cache-stats.js +21 -0
  374. package/dist/core/code/engine/core/ingestion/languages/ruby/captures.js +864 -0
  375. package/dist/core/code/engine/core/ingestion/languages/ruby/import-target.js +88 -0
  376. package/dist/core/code/engine/core/ingestion/languages/ruby/index.js +29 -0
  377. package/dist/core/code/engine/core/ingestion/languages/ruby/interpret.js +115 -0
  378. package/dist/core/code/engine/core/ingestion/languages/ruby/merge-bindings.js +21 -0
  379. package/dist/core/code/engine/core/ingestion/languages/ruby/query.js +349 -0
  380. package/dist/core/code/engine/core/ingestion/languages/ruby/receiver-binding.js +70 -0
  381. package/dist/core/code/engine/core/ingestion/languages/ruby/scope-resolver.js +263 -0
  382. package/dist/core/code/engine/core/ingestion/languages/ruby/simple-hooks.js +68 -0
  383. package/dist/core/code/engine/core/ingestion/languages/ruby.js +215 -0
  384. package/dist/core/code/engine/core/ingestion/languages/rust/arity.js +16 -0
  385. package/dist/core/code/engine/core/ingestion/languages/rust/cache-stats.js +21 -0
  386. package/dist/core/code/engine/core/ingestion/languages/rust/captures.js +304 -0
  387. package/dist/core/code/engine/core/ingestion/languages/rust/import-decomposer.js +167 -0
  388. package/dist/core/code/engine/core/ingestion/languages/rust/import-target.js +108 -0
  389. package/dist/core/code/engine/core/ingestion/languages/rust/index.js +29 -0
  390. package/dist/core/code/engine/core/ingestion/languages/rust/interpret.js +201 -0
  391. package/dist/core/code/engine/core/ingestion/languages/rust/merge-bindings.js +21 -0
  392. package/dist/core/code/engine/core/ingestion/languages/rust/method-owners.js +76 -0
  393. package/dist/core/code/engine/core/ingestion/languages/rust/module-path.js +222 -0
  394. package/dist/core/code/engine/core/ingestion/languages/rust/qualified-call.js +482 -0
  395. package/dist/core/code/engine/core/ingestion/languages/rust/query.js +280 -0
  396. package/dist/core/code/engine/core/ingestion/languages/rust/range-binding.js +687 -0
  397. package/dist/core/code/engine/core/ingestion/languages/rust/receiver-binding.js +148 -0
  398. package/dist/core/code/engine/core/ingestion/languages/rust/scope-resolver.js +151 -0
  399. package/dist/core/code/engine/core/ingestion/languages/rust/simple-hooks.js +32 -0
  400. package/dist/core/code/engine/core/ingestion/languages/rust.js +183 -0
  401. package/dist/core/code/engine/core/ingestion/languages/swift/arity-metadata.js +44 -0
  402. package/dist/core/code/engine/core/ingestion/languages/swift/arity.js +45 -0
  403. package/dist/core/code/engine/core/ingestion/languages/swift/base-type.js +30 -0
  404. package/dist/core/code/engine/core/ingestion/languages/swift/cache-stats.js +32 -0
  405. package/dist/core/code/engine/core/ingestion/languages/swift/captures.js +594 -0
  406. package/dist/core/code/engine/core/ingestion/languages/swift/conditional-directive-preprocess.js +256 -0
  407. package/dist/core/code/engine/core/ingestion/languages/swift/implicit-imports.js +60 -0
  408. package/dist/core/code/engine/core/ingestion/languages/swift/import-decomposer.js +87 -0
  409. package/dist/core/code/engine/core/ingestion/languages/swift/import-target.js +84 -0
  410. package/dist/core/code/engine/core/ingestion/languages/swift/index.js +56 -0
  411. package/dist/core/code/engine/core/ingestion/languages/swift/interpret.js +93 -0
  412. package/dist/core/code/engine/core/ingestion/languages/swift/merge-bindings.js +51 -0
  413. package/dist/core/code/engine/core/ingestion/languages/swift/query.js +226 -0
  414. package/dist/core/code/engine/core/ingestion/languages/swift/receiver-binding.js +169 -0
  415. package/dist/core/code/engine/core/ingestion/languages/swift/scope-resolver.js +192 -0
  416. package/dist/core/code/engine/core/ingestion/languages/swift/sibling-type-bindings.js +68 -0
  417. package/dist/core/code/engine/core/ingestion/languages/swift/signature-bindings.js +69 -0
  418. package/dist/core/code/engine/core/ingestion/languages/swift/simple-hooks.js +65 -0
  419. package/dist/core/code/engine/core/ingestion/languages/swift/target-grouping.js +97 -0
  420. package/dist/core/code/engine/core/ingestion/languages/swift/target-siblings.js +74 -0
  421. package/dist/core/code/engine/core/ingestion/languages/swift.js +246 -0
  422. package/dist/core/code/engine/core/ingestion/languages/typescript/arity-metadata.js +106 -0
  423. package/dist/core/code/engine/core/ingestion/languages/typescript/arity.js +57 -0
  424. package/dist/core/code/engine/core/ingestion/languages/typescript/array-callback.js +58 -0
  425. package/dist/core/code/engine/core/ingestion/languages/typescript/cache-stats.js +34 -0
  426. package/dist/core/code/engine/core/ingestion/languages/typescript/captures.js +956 -0
  427. package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-export-assignment.js +535 -0
  428. package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-module-exports.js +196 -0
  429. package/dist/core/code/engine/core/ingestion/languages/typescript/import-decomposer.js +374 -0
  430. package/dist/core/code/engine/core/ingestion/languages/typescript/import-target.js +65 -0
  431. package/dist/core/code/engine/core/ingestion/languages/typescript/index.js +108 -0
  432. package/dist/core/code/engine/core/ingestion/languages/typescript/interpret.js +344 -0
  433. package/dist/core/code/engine/core/ingestion/languages/typescript/merge-bindings.js +161 -0
  434. package/dist/core/code/engine/core/ingestion/languages/typescript/nuxt-auto-imports.js +325 -0
  435. package/dist/core/code/engine/core/ingestion/languages/typescript/query.js +1328 -0
  436. package/dist/core/code/engine/core/ingestion/languages/typescript/receiver-binding.js +201 -0
  437. package/dist/core/code/engine/core/ingestion/languages/typescript/scope-resolver.js +293 -0
  438. package/dist/core/code/engine/core/ingestion/languages/typescript/simple-hooks.js +139 -0
  439. package/dist/core/code/engine/core/ingestion/languages/typescript.js +455 -0
  440. package/dist/core/code/engine/core/ingestion/languages/vue/captures.js +70 -0
  441. package/dist/core/code/engine/core/ingestion/languages/vue/import-target.js +61 -0
  442. package/dist/core/code/engine/core/ingestion/languages/vue/index.js +55 -0
  443. package/dist/core/code/engine/core/ingestion/languages/vue/scope-resolver.js +295 -0
  444. package/dist/core/code/engine/core/ingestion/languages/vue.js +96 -0
  445. package/dist/core/code/engine/core/ingestion/local-symbol-pruner.js +68 -0
  446. package/dist/core/code/engine/core/ingestion/method-extractors/configs/c-cpp.js +387 -0
  447. package/dist/core/code/engine/core/ingestion/method-extractors/configs/csharp.js +290 -0
  448. package/dist/core/code/engine/core/ingestion/method-extractors/configs/dart.js +392 -0
  449. package/dist/core/code/engine/core/ingestion/method-extractors/configs/go.js +179 -0
  450. package/dist/core/code/engine/core/ingestion/method-extractors/configs/jvm.js +350 -0
  451. package/dist/core/code/engine/core/ingestion/method-extractors/configs/php.js +306 -0
  452. package/dist/core/code/engine/core/ingestion/method-extractors/configs/python.js +312 -0
  453. package/dist/core/code/engine/core/ingestion/method-extractors/configs/ruby.js +289 -0
  454. package/dist/core/code/engine/core/ingestion/method-extractors/configs/rust.js +198 -0
  455. package/dist/core/code/engine/core/ingestion/method-extractors/configs/swift.js +286 -0
  456. package/dist/core/code/engine/core/ingestion/method-extractors/configs/typescript-javascript.js +341 -0
  457. package/dist/core/code/engine/core/ingestion/method-extractors/generic.js +209 -0
  458. package/dist/core/code/engine/core/ingestion/method-types.js +3 -0
  459. package/dist/core/code/engine/core/ingestion/model/field-registry.js +41 -0
  460. package/dist/core/code/engine/core/ingestion/model/index.js +52 -0
  461. package/dist/core/code/engine/core/ingestion/model/method-registry.js +138 -0
  462. package/dist/core/code/engine/core/ingestion/model/owned-members-lookup.js +46 -0
  463. package/dist/core/code/engine/core/ingestion/model/registration-table.js +234 -0
  464. package/dist/core/code/engine/core/ingestion/model/resolve.js +183 -0
  465. package/dist/core/code/engine/core/ingestion/model/scope-resolution-indexes.js +43 -0
  466. package/dist/core/code/engine/core/ingestion/model/semantic-model.js +179 -0
  467. package/dist/core/code/engine/core/ingestion/model/symbol-table.js +216 -0
  468. package/dist/core/code/engine/core/ingestion/model/type-registry.js +84 -0
  469. package/dist/core/code/engine/core/ingestion/mro-processor.js +709 -0
  470. package/dist/core/code/engine/core/ingestion/parsing-processor.js +312 -0
  471. package/dist/core/code/engine/core/ingestion/pipeline-phases/communities.js +69 -0
  472. package/dist/core/code/engine/core/ingestion/pipeline-phases/cross-file.js +71 -0
  473. package/dist/core/code/engine/core/ingestion/pipeline-phases/di.js +338 -0
  474. package/dist/core/code/engine/core/ingestion/pipeline-phases/http-api-calls.js +312 -0
  475. package/dist/core/code/engine/core/ingestion/pipeline-phases/index.js +54 -0
  476. package/dist/core/code/engine/core/ingestion/pipeline-phases/mro.js +40 -0
  477. package/dist/core/code/engine/core/ingestion/pipeline-phases/orm.js +78 -0
  478. package/dist/core/code/engine/core/ingestion/pipeline-phases/parse-impl.js +1286 -0
  479. package/dist/core/code/engine/core/ingestion/pipeline-phases/parse.js +41 -0
  480. package/dist/core/code/engine/core/ingestion/pipeline-phases/processes.js +193 -0
  481. package/dist/core/code/engine/core/ingestion/pipeline-phases/prune-local-symbols.js +29 -0
  482. package/dist/core/code/engine/core/ingestion/pipeline-phases/registry.js +52 -0
  483. package/dist/core/code/engine/core/ingestion/pipeline-phases/routes.js +409 -0
  484. package/dist/core/code/engine/core/ingestion/pipeline-phases/rpc-edges.js +301 -0
  485. package/dist/core/code/engine/core/ingestion/pipeline-phases/runner.js +207 -0
  486. package/dist/core/code/engine/core/ingestion/pipeline-phases/scan.js +49 -0
  487. package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-aop.js +442 -0
  488. package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-auto-configuration.js +264 -0
  489. package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-config.js +440 -0
  490. package/dist/core/code/engine/core/ingestion/pipeline-phases/structure.js +38 -0
  491. package/dist/core/code/engine/core/ingestion/pipeline-phases/tools.js +89 -0
  492. package/dist/core/code/engine/core/ingestion/pipeline-phases/types.js +40 -0
  493. package/dist/core/code/engine/core/ingestion/pipeline.js +152 -0
  494. package/dist/core/code/engine/core/ingestion/process-processor.js +325 -0
  495. package/dist/core/code/engine/core/ingestion/resolve-references.js +205 -0
  496. package/dist/core/code/engine/core/ingestion/route-extractors/constant-resolver.js +135 -0
  497. package/dist/core/code/engine/core/ingestion/route-extractors/django-root-discovery.js +221 -0
  498. package/dist/core/code/engine/core/ingestion/route-extractors/django.js +428 -0
  499. package/dist/core/code/engine/core/ingestion/route-extractors/expo.js +39 -0
  500. package/dist/core/code/engine/core/ingestion/route-extractors/fastapi-router-bindings.js +264 -0
  501. package/dist/core/code/engine/core/ingestion/route-extractors/laravel.js +501 -0
  502. package/dist/core/code/engine/core/ingestion/route-extractors/middleware.js +175 -0
  503. package/dist/core/code/engine/core/ingestion/route-extractors/nextjs.js +81 -0
  504. package/dist/core/code/engine/core/ingestion/route-extractors/php.js +25 -0
  505. package/dist/core/code/engine/core/ingestion/route-extractors/python-const-resolver.js +307 -0
  506. package/dist/core/code/engine/core/ingestion/route-extractors/response-shapes.js +299 -0
  507. package/dist/core/code/engine/core/ingestion/route-extractors/route-path.js +71 -0
  508. package/dist/core/code/engine/core/ingestion/route-extractors/spring-shared.js +310 -0
  509. package/dist/core/code/engine/core/ingestion/route-extractors/spring.js +441 -0
  510. package/dist/core/code/engine/core/ingestion/scope-extractor-bridge.js +60 -0
  511. package/dist/core/code/engine/core/ingestion/scope-extractor.js +1373 -0
  512. package/dist/core/code/engine/core/ingestion/scope-resolution/contract/scope-resolver.js +282 -0
  513. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.js +72 -0
  514. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/edges.js +194 -0
  515. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/ids.js +472 -0
  516. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +49 -0
  517. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/method-dispatch.js +43 -0
  518. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +274 -0
  519. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +93 -0
  520. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/callable-value-flow.js +1240 -0
  521. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/compound-receiver.js +1174 -0
  522. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/free-call-fallback.js +873 -0
  523. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/imported-return-types.js +226 -0
  524. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/mro.js +107 -0
  525. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/overload-narrowing.js +441 -0
  526. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/property-dispatch.js +122 -0
  527. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +1720 -0
  528. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/phase.js +395 -0
  529. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/reconcile-ownership.js +208 -0
  530. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/registry.js +49 -0
  531. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/run.js +632 -0
  532. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/validate-bindings-immutability.js +112 -0
  533. package/dist/core/code/engine/core/ingestion/scope-resolution/resolution-outcome.js +41 -0
  534. package/dist/core/code/engine/core/ingestion/scope-resolution/scope/namespace-targets.js +81 -0
  535. package/dist/core/code/engine/core/ingestion/scope-resolution/scope/walkers.js +1835 -0
  536. package/dist/core/code/engine/core/ingestion/scope-resolution/unresolved-receivers.js +242 -0
  537. package/dist/core/code/engine/core/ingestion/scope-resolution/utils/definition-id.js +22 -0
  538. package/dist/core/code/engine/core/ingestion/scope-resolution/workspace-index.js +151 -0
  539. package/dist/core/code/engine/core/ingestion/structure-processor.js +40 -0
  540. package/dist/core/code/engine/core/ingestion/tree-sitter-queries.js +2244 -0
  541. package/dist/core/code/engine/core/ingestion/ts-js-hoc-utils.js +115 -0
  542. package/dist/core/code/engine/core/ingestion/type-env.js +1136 -0
  543. package/dist/core/code/engine/core/ingestion/type-extractors/c-cpp.js +555 -0
  544. package/dist/core/code/engine/core/ingestion/type-extractors/csharp.js +570 -0
  545. package/dist/core/code/engine/core/ingestion/type-extractors/dart.js +372 -0
  546. package/dist/core/code/engine/core/ingestion/type-extractors/go.js +508 -0
  547. package/dist/core/code/engine/core/ingestion/type-extractors/jvm.js +875 -0
  548. package/dist/core/code/engine/core/ingestion/type-extractors/php.js +537 -0
  549. package/dist/core/code/engine/core/ingestion/type-extractors/python.js +477 -0
  550. package/dist/core/code/engine/core/ingestion/type-extractors/ruby.js +380 -0
  551. package/dist/core/code/engine/core/ingestion/type-extractors/rust.js +502 -0
  552. package/dist/core/code/engine/core/ingestion/type-extractors/shared.js +843 -0
  553. package/dist/core/code/engine/core/ingestion/type-extractors/swift.js +490 -0
  554. package/dist/core/code/engine/core/ingestion/type-extractors/types.js +2 -0
  555. package/dist/core/code/engine/core/ingestion/type-extractors/typescript.js +690 -0
  556. package/dist/core/code/engine/core/ingestion/utils/ast-helpers.js +1693 -0
  557. package/dist/core/code/engine/core/ingestion/utils/call-analysis.js +779 -0
  558. package/dist/core/code/engine/core/ingestion/utils/callable-flow-captures.js +932 -0
  559. package/dist/core/code/engine/core/ingestion/utils/callable-labels.js +49 -0
  560. package/dist/core/code/engine/core/ingestion/utils/deferred-resolution-profile.js +151 -0
  561. package/dist/core/code/engine/core/ingestion/utils/effective-ram.js +67 -0
  562. package/dist/core/code/engine/core/ingestion/utils/env.js +60 -0
  563. package/dist/core/code/engine/core/ingestion/utils/event-loop.js +9 -0
  564. package/dist/core/code/engine/core/ingestion/utils/graph-sort.js +103 -0
  565. package/dist/core/code/engine/core/ingestion/utils/heap-probe.js +45 -0
  566. package/dist/core/code/engine/core/ingestion/utils/heritage-marker.js +47 -0
  567. package/dist/core/code/engine/core/ingestion/utils/line-base.js +24 -0
  568. package/dist/core/code/engine/core/ingestion/utils/max-file-size.js +59 -0
  569. package/dist/core/code/engine/core/ingestion/utils/method-props.js +198 -0
  570. package/dist/core/code/engine/core/ingestion/utils/qualified-name.js +73 -0
  571. package/dist/core/code/engine/core/ingestion/utils/receiver-chain-captures.js +60 -0
  572. package/dist/core/code/engine/core/ingestion/utils/receiver-chain-codec.js +188 -0
  573. package/dist/core/code/engine/core/ingestion/utils/scope-tree-walk.js +36 -0
  574. package/dist/core/code/engine/core/ingestion/utils/symbol-labels.js +48 -0
  575. package/dist/core/code/engine/core/ingestion/utils/template-arguments.js +187 -0
  576. package/dist/core/code/engine/core/ingestion/utils/type-parameters.js +209 -0
  577. package/dist/core/code/engine/core/ingestion/utils/verbose.js +6 -0
  578. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/c-cpp.js +133 -0
  579. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/csharp.js +66 -0
  580. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/dart.js +111 -0
  581. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/go.js +153 -0
  582. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/jvm.js +145 -0
  583. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/php.js +61 -0
  584. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/python.js +104 -0
  585. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/ruby.js +55 -0
  586. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/rust.js +79 -0
  587. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/swift.js +91 -0
  588. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/typescript-javascript.js +86 -0
  589. package/dist/core/code/engine/core/ingestion/variable-extractors/generic.js +111 -0
  590. package/dist/core/code/engine/core/ingestion/variable-types.js +3 -0
  591. package/dist/core/code/engine/core/ingestion/vue-sfc-extractor.js +544 -0
  592. package/dist/core/code/engine/core/ingestion/workers/callable-id.js +122 -0
  593. package/dist/core/code/engine/core/ingestion/workers/clone-safety.js +470 -0
  594. package/dist/core/code/engine/core/ingestion/workers/parse-worker.js +2456 -0
  595. package/dist/core/code/engine/core/ingestion/workers/post-result.js +90 -0
  596. package/dist/core/code/engine/core/ingestion/workers/quarantine.js +41 -0
  597. package/dist/core/code/engine/core/ingestion/workers/result-merge.js +59 -0
  598. package/dist/core/code/engine/core/ingestion/workers/worker-pool.js +1725 -0
  599. package/dist/core/code/engine/core/ingestion/workspace-config.js +139 -0
  600. package/dist/core/code/engine/core/lbug/conn-lock.js +72 -0
  601. package/dist/core/code/engine/core/lbug/csv-generator.js +710 -0
  602. package/dist/core/code/engine/core/lbug/cypher-escape.js +24 -0
  603. package/dist/core/code/engine/core/lbug/extension-load-error.js +339 -0
  604. package/dist/core/code/engine/core/lbug/extension-loader.js +261 -0
  605. package/dist/core/code/engine/core/lbug/graph-emit-sink.js +584 -0
  606. package/dist/core/code/engine/core/lbug/lbug-adapter.js +2703 -0
  607. package/dist/core/code/engine/core/lbug/lbug-config.js +1029 -0
  608. package/dist/core/code/engine/core/lbug/native-check.js +435 -0
  609. package/dist/core/code/engine/core/lbug/pool-adapter.js +973 -0
  610. package/dist/core/code/engine/core/lbug/query-params.js +25 -0
  611. package/dist/core/code/engine/core/lbug/query-result-utils.js +31 -0
  612. package/dist/core/code/engine/core/lbug/rel-pair-routing.js +373 -0
  613. package/dist/core/code/engine/core/lbug/schema.js +771 -0
  614. package/dist/core/code/engine/core/lbug/shutdown-helpers.js +40 -0
  615. package/dist/core/code/engine/core/lbug/sidecar-recovery.js +716 -0
  616. package/dist/core/code/engine/core/lbug/stdio-capture.js +49 -0
  617. package/dist/core/code/engine/core/lbug/sync-csv-writer.js +115 -0
  618. package/dist/core/code/engine/core/lbug/wal-checkpoint-driver.js +215 -0
  619. package/dist/core/code/engine/core/lbug/wal-driver-state.js +28 -0
  620. package/dist/core/code/engine/core/logger.js +339 -0
  621. package/dist/core/code/engine/core/platform/capabilities.js +91 -0
  622. package/dist/core/code/engine/core/run-analyze.js +1098 -0
  623. package/dist/core/code/engine/core/tree-sitter/parser-loader.js +281 -0
  624. package/dist/core/code/engine/core/tree-sitter/safe-parse.js +258 -0
  625. package/dist/core/code/engine/core/tree-sitter/vendored-grammars.js +64 -0
  626. package/dist/core/code/engine/lib/utils.js +121 -0
  627. package/dist/core/code/engine/mcp/core/lbug-adapter.js +27 -0
  628. package/dist/core/code/engine/mcp/local/aop-metadata.js +230 -0
  629. package/dist/core/code/engine/mcp/local/bean-metadata.js +49 -0
  630. package/dist/core/code/engine/mcp/local/limits.js +15 -0
  631. package/dist/core/code/engine/mcp/local/line-display.js +6 -0
  632. package/dist/core/code/engine/mcp/local/local-backend.js +4142 -0
  633. package/dist/core/code/engine/storage/branch-index.js +72 -0
  634. package/dist/core/code/engine/storage/file-hash.js +95 -0
  635. package/dist/core/code/engine/storage/fs-atomic.js +34 -0
  636. package/dist/core/code/engine/storage/git.js +555 -0
  637. package/dist/core/code/engine/storage/index-lock.js +664 -0
  638. package/dist/core/code/engine/storage/parse-cache.js +650 -0
  639. package/dist/core/code/engine/storage/parsedfile-store.js +620 -0
  640. package/dist/core/code/engine/storage/repo-manager.js +1061 -0
  641. package/dist/core/code/engine/storage/scope-index-store.js +247 -0
  642. package/dist/core/code/engine/types/pipeline.js +2 -0
  643. package/dist/core/code/scripts/install-duckdb-extension.mjs +125 -0
  644. package/dist/core/code/scripts/resolve-analyze-cmd.cjs +346 -0
  645. package/dist/core/code/shared/graph/types.js +8 -0
  646. package/dist/core/code/shared/index.js +105 -0
  647. package/dist/core/code/shared/integrations/circuit-breaker.js +242 -0
  648. package/dist/core/code/shared/integrations/resilient-fetch.js +224 -0
  649. package/dist/core/code/shared/integrations/retry.js +70 -0
  650. package/dist/core/code/shared/integrations/understand-quickly.js +145 -0
  651. package/dist/core/code/shared/language-detection.js +162 -0
  652. package/dist/core/code/shared/languages.js +27 -0
  653. package/dist/core/code/shared/lbug/schema-constants.js +98 -0
  654. package/dist/core/code/shared/mro-strategy.js +2 -0
  655. package/dist/core/code/shared/pipeline.js +5 -0
  656. package/dist/core/code/shared/scope-resolution/callable-flow-site.js +11 -0
  657. package/dist/core/code/shared/scope-resolution/def-index.js +53 -0
  658. package/dist/core/code/shared/scope-resolution/evidence-weights.js +87 -0
  659. package/dist/core/code/shared/scope-resolution/finalize-algorithm.js +807 -0
  660. package/dist/core/code/shared/scope-resolution/language-classification.js +46 -0
  661. package/dist/core/code/shared/scope-resolution/method-dispatch-index.js +100 -0
  662. package/dist/core/code/shared/scope-resolution/module-scope-index.js +59 -0
  663. package/dist/core/code/shared/scope-resolution/origin-priority.js +23 -0
  664. package/dist/core/code/shared/scope-resolution/parsed-file.js +54 -0
  665. package/dist/core/code/shared/scope-resolution/position-index.js +136 -0
  666. package/dist/core/code/shared/scope-resolution/qualified-name-index.js +77 -0
  667. package/dist/core/code/shared/scope-resolution/reference-site.js +24 -0
  668. package/dist/core/code/shared/scope-resolution/registries/class-registry.js +32 -0
  669. package/dist/core/code/shared/scope-resolution/registries/context.js +52 -0
  670. package/dist/core/code/shared/scope-resolution/registries/evidence.js +152 -0
  671. package/dist/core/code/shared/scope-resolution/registries/field-registry.js +33 -0
  672. package/dist/core/code/shared/scope-resolution/registries/lookup-core.js +392 -0
  673. package/dist/core/code/shared/scope-resolution/registries/lookup-qualified.js +58 -0
  674. package/dist/core/code/shared/scope-resolution/registries/macro-registry.js +34 -0
  675. package/dist/core/code/shared/scope-resolution/registries/method-registry.js +34 -0
  676. package/dist/core/code/shared/scope-resolution/registries/tie-breaks.js +63 -0
  677. package/dist/core/code/shared/scope-resolution/resolve-type-ref.js +128 -0
  678. package/dist/core/code/shared/scope-resolution/scope-id.js +49 -0
  679. package/dist/core/code/shared/scope-resolution/scope-tree.js +225 -0
  680. package/dist/core/code/shared/scope-resolution/symbol-definition.js +12 -0
  681. package/dist/core/code/shared/scope-resolution/types.js +25 -0
  682. package/dist/core/code/shared/test-helpers.js +17 -0
  683. package/dist/core/code/vendor/leiden/index.cjs +355 -0
  684. package/dist/core/code/vendor/leiden/utils.cjs +419 -0
  685. package/dist/core/dbquery/cli.d.ts.map +1 -1
  686. package/dist/core/dbquery/cli.js +5 -4
  687. package/dist/core/dbquery/cli.js.map +1 -1
  688. package/dist/core/dbquery/config.d.ts.map +1 -1
  689. package/dist/core/dbquery/config.js +39 -3
  690. package/dist/core/dbquery/config.js.map +1 -1
  691. package/dist/core/dbquery/drivers/http.d.ts +23 -0
  692. package/dist/core/dbquery/drivers/http.d.ts.map +1 -0
  693. package/dist/core/dbquery/drivers/http.js +125 -0
  694. package/dist/core/dbquery/drivers/http.js.map +1 -0
  695. package/dist/core/dbquery/drivers/mysql.js +1 -1
  696. package/dist/core/dbquery/drivers/mysql.js.map +1 -1
  697. package/dist/core/dbquery/drivers/postgres.js +1 -1
  698. package/dist/core/dbquery/drivers/postgres.js.map +1 -1
  699. package/dist/core/dbquery/executor.d.ts.map +1 -1
  700. package/dist/core/dbquery/executor.js +46 -12
  701. package/dist/core/dbquery/executor.js.map +1 -1
  702. package/dist/core/dbquery/format.d.ts.map +1 -1
  703. package/dist/core/dbquery/format.js +2 -1
  704. package/dist/core/dbquery/format.js.map +1 -1
  705. package/dist/core/dbquery/init.d.ts.map +1 -1
  706. package/dist/core/dbquery/init.js +7 -0
  707. package/dist/core/dbquery/init.js.map +1 -1
  708. package/dist/core/dbquery/types.d.ts +55 -7
  709. package/dist/core/dbquery/types.d.ts.map +1 -1
  710. package/dist/core/directory.d.ts +17 -0
  711. package/dist/core/directory.d.ts.map +1 -1
  712. package/dist/core/directory.js +37 -0
  713. package/dist/core/directory.js.map +1 -1
  714. package/dist/core/features/cli.d.ts.map +1 -1
  715. package/dist/core/features/cli.js +3 -2
  716. package/dist/core/features/cli.js.map +1 -1
  717. package/dist/core/features/scanner.d.ts +1 -1
  718. package/dist/core/features/scanner.d.ts.map +1 -1
  719. package/dist/core/features/scanner.js +20 -4
  720. package/dist/core/features/scanner.js.map +1 -1
  721. package/dist/core/markdown/cli.d.ts.map +1 -1
  722. package/dist/core/markdown/cli.js +9 -8
  723. package/dist/core/markdown/cli.js.map +1 -1
  724. package/dist/core/timeline/cli.d.ts.map +1 -1
  725. package/dist/core/timeline/cli.js +13 -6
  726. package/dist/core/timeline/cli.js.map +1 -1
  727. package/dist/core/timeline/debris.d.ts +20 -0
  728. package/dist/core/timeline/debris.d.ts.map +1 -0
  729. package/dist/core/timeline/debris.js +124 -0
  730. package/dist/core/timeline/debris.js.map +1 -0
  731. package/dist/core/timeline/hook-runner.d.ts.map +1 -1
  732. package/dist/core/timeline/hook-runner.js +3 -1
  733. package/dist/core/timeline/hook-runner.js.map +1 -1
  734. package/dist/core/timeline/hooks.d.ts.map +1 -1
  735. package/dist/core/timeline/hooks.js +13 -5
  736. package/dist/core/timeline/hooks.js.map +1 -1
  737. package/dist/core/timeline/installer.d.ts +2 -0
  738. package/dist/core/timeline/installer.d.ts.map +1 -1
  739. package/dist/core/timeline/installer.js +12 -0
  740. package/dist/core/timeline/installer.js.map +1 -1
  741. package/dist/core/timeline/project-root.d.ts +21 -0
  742. package/dist/core/timeline/project-root.d.ts.map +1 -0
  743. package/dist/core/timeline/project-root.js +83 -0
  744. package/dist/core/timeline/project-root.js.map +1 -0
  745. package/dist/web/register.d.ts.map +1 -1
  746. package/dist/web/register.js +2 -1
  747. package/dist/web/register.js.map +1 -1
  748. package/package.json +1 -1
  749. package/dist/.claude-template/.cgraphx/timeline-current-turn.json +0 -1
  750. package/dist/.claude-template/skills/.cgraphx/timeline-current-turn.json +0 -1
  751. package/dist/.claude-template/skills/handdrawn-deck/.cgraphx/timeline-current-turn.json +0 -1
  752. package/dist/.claude-template/skills/handdrawn-deck/references/.cgraphx/timeline-current-turn.json +0 -1
  753. package/dist/.claude-template/skills/handdrawn-sketch-engine/.cgraphx/timeline-current-turn.json +0 -1
  754. /package/dist/.claude-template/skills/run-api-test/assets/{template-test-verify.jsonl → template-/346/216/245/345/217/243/346/265/213/350/257/225/351/252/214/350/257/201.jsonl"} +0 -0
@@ -0,0 +1,395 @@
1
+ "use strict";
2
+ /**
3
+ * Phase: scopeResolution
4
+ *
5
+ * Generic registry-primary resolution phase (RFC #909 Ring 3).
6
+ *
7
+ * For every language whose provider is registered in `SCOPE_RESOLVERS`:
8
+ * 1. Filter scanned files by language extension.
9
+ * 2. Read file contents.
10
+ * 3. Drive the scope-based pipeline end-to-end via the generic
11
+ * `runScopeResolution(input, provider)` orchestrator.
12
+ * 4. Emit IMPORTS / CALLS / ACCESSES / INHERITS / USES edges.
13
+ *
14
+ * This is the sole resolution path — RING4-1 (#942) deleted the legacy
15
+ * call-resolution DAG, so there is no longer a per-language flag gating
16
+ * registry-vs-legacy.
17
+ *
18
+ * Adding a language is one change: implement `ScopeResolver` in
19
+ * `languages/<lang>/scope-resolver.ts` and register it in
20
+ * `scope-resolution/pipeline/registry.ts`.
21
+ *
22
+ * @deps parse (needs Symbol nodes already in the graph so emit-references
23
+ * can attach edges to existing Function/Method/Class nodes)
24
+ * @reads scannedFiles
25
+ * @writes graph (IMPORTS, CALLS, ACCESSES, INHERITS, USES)
26
+ */
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.scopeResolutionPhase = void 0;
29
+ exports.selectScopeSourcePathsToRead = selectScopeSourcePathsToRead;
30
+ const types_js_1 = require("../../pipeline-phases/types.js");
31
+ const index_js_1 = require("../../../../../shared/index.js");
32
+ const filesystem_walker_js_1 = require("../../filesystem-walker.js");
33
+ const run_js_1 = require("./run.js");
34
+ const parser_loader_js_1 = require("../../../tree-sitter/parser-loader.js");
35
+ const node_lookup_js_1 = require("../graph-bridge/node-lookup.js");
36
+ const registry_js_1 = require("./registry.js");
37
+ const env_js_1 = require("../../utils/env.js");
38
+ const heap_probe_js_1 = require("../../utils/heap-probe.js");
39
+ const parsedfile_store_js_1 = require("../../../../storage/parsedfile-store.js");
40
+ const logger_js_1 = require("../../../logger.js");
41
+ const NOOP_OUTPUT = Object.freeze({
42
+ ran: false,
43
+ filesProcessed: 0,
44
+ importsEmitted: 0,
45
+ referenceEdgesEmitted: 0,
46
+ resolutionOutcomes: [],
47
+ perLanguage: new Map(),
48
+ });
49
+ /** Select source files that must be materialized for one resolver pass. */
50
+ function selectScopeSourcePathsToRead(provider, primaryFilePaths, preExtractedByPath) {
51
+ const hasPostExtractHooks = provider.populateWorkspaceOwners !== undefined ||
52
+ provider.populateNamespaceSiblings !== undefined ||
53
+ provider.populateRangeBindings !== undefined ||
54
+ provider.emitPostResolutionEdges !== undefined;
55
+ const needsAllSourceText = hasPostExtractHooks && provider.postExtractSourceTextPolicy !== 'uncached-files';
56
+ return needsAllSourceText
57
+ ? [...primaryFilePaths]
58
+ : primaryFilePaths.filter((filePath) => !preExtractedByPath.has(filePath));
59
+ }
60
+ exports.scopeResolutionPhase = {
61
+ name: 'scopeResolution',
62
+ // Depends on `parse` because emit-references attaches edges to
63
+ // already-existing Symbol nodes (Function/Method/Class) that the `parse`
64
+ // phase creates.
65
+ //
66
+ // The `crossFile` dep is retained for stable ordering but is no longer
67
+ // load-bearing: inheritance (EXTENDS/IMPLEMENTS) edges are now emitted by
68
+ // this phase's own `preEmitInheritanceEdges` before `buildMro` runs, and
69
+ // since RING4-1 (#942) `crossFile` only disposes the BindingAccumulator
70
+ // (the legacy cross-file re-resolution it used to run was deleted with the
71
+ // call-resolution DAG).
72
+ deps: ['parse', 'crossFile', 'structure'],
73
+ async execute(ctx, deps) {
74
+ (0, heap_probe_js_1.logHeapProbe)('scopeResolution-enter');
75
+ const { scannedFiles } = (0, types_js_1.getPhaseOutput)(deps, 'structure');
76
+ const parseOutput = (0, types_js_1.getPhaseOutput)(deps, 'parse');
77
+ const { model, parsedFiles: workerParsedFiles } = parseOutput;
78
+ // SemanticModel populated during `parse`: scope-resolution consumes
79
+ // TypeRegistry / MethodRegistry / SymbolTable lookups instead of
80
+ // rebuilding parallel indexes. See ARCHITECTURE.md § "Semantic-model
81
+ // source of truth".
82
+ // Build a per-file lookup of ParsedFile artifacts the workers (or
83
+ // sequential extracts) already produced. Threading this into
84
+ // `runScopeResolution` lets the per-language extract loop short-
85
+ // circuit `extractParsedFile` — the dominant cost on the warm-cache
86
+ // path, since workers can't return tree-sitter Trees across the
87
+ // MessageChannel and scope-resolution would otherwise re-parse
88
+ // every file from scratch on the main thread.
89
+ const preExtractedByPath = new Map();
90
+ for (const pf of workerParsedFiles) {
91
+ preExtractedByPath.set(pf.filePath, pf);
92
+ }
93
+ // Disk-backed ParsedFile store (#1983): on huge repos the parse phase
94
+ // flushes worker-produced ParsedFiles to disk (instead of `workerParsedFiles`
95
+ // heap) and we stream them back here per language. Reusing them means
96
+ // scope-resolution does ZERO tree-sitter parsing on the main thread, which
97
+ // is what eliminates the unbounded native re-parse leak that OOM'd large
98
+ // analyses. `undefined` when no storage path (tests / direct calls) — those
99
+ // runs use the in-heap `workerParsedFiles` above or fall back to a fresh
100
+ // extract per file inside runScopeResolution.
101
+ const parsedFileStorePath = ctx.options?.parsedFileStorePath;
102
+ // Standalone providers are re-extracted from source on the main thread;
103
+ // workers intentionally do not serialize ParsedFile artifacts for them.
104
+ // Drop any stale/cache-sourced entry defensively so provider-owned regex
105
+ // capture logic is always the source of truth for the current content.
106
+ for (const [path] of preExtractedByPath) {
107
+ const lang = (0, index_js_1.getLanguageFromFilename)(path);
108
+ if (lang === null)
109
+ continue;
110
+ const provider = registry_js_1.SCOPE_RESOLVERS.get(lang);
111
+ if (provider?.languageProvider.parseStrategy === 'standalone') {
112
+ preExtractedByPath.delete(path);
113
+ }
114
+ }
115
+ let totalFiles = 0;
116
+ let totalImports = 0;
117
+ let totalRefs = 0;
118
+ let anyRan = false;
119
+ const resolutionOutcomes = [];
120
+ const perLanguage = new Map();
121
+ // Pre-count files and languages for progress reporting. This avoids
122
+ // a frozen progress bar during long scope-resolution runs (#1741).
123
+ // Uses primary-language file counts only; languages that expand their
124
+ // context via collectScopeContextPaths may process more files than shown.
125
+ let totalScopeFiles = 0;
126
+ let totalScopeLangs = 0;
127
+ const allScannedPaths = new Set(scannedFiles.map((f) => f.path));
128
+ // Partition scanned files by language ONCE (O(F)). The previous code
129
+ // re-filtered all scannedFiles per language for the precount AND again in the
130
+ // per-language loop below — O(languages × files), ~2.3M getLanguageFromFilename
131
+ // calls on the Linux kernel. Bucketing once collapses that to O(F).
132
+ // Language-agnostic: keyed by the provider-supplied SupportedLanguages value.
133
+ const filesByLang = new Map();
134
+ for (const f of scannedFiles) {
135
+ const fileLang = (0, index_js_1.getLanguageFromFilename)(f.path);
136
+ if (fileLang === null)
137
+ continue;
138
+ // Tree-sitter providers require an available grammar. Standalone regex
139
+ // providers deliberately have none and re-extract on the main thread.
140
+ const resolver = registry_js_1.SCOPE_RESOLVERS.get(fileLang);
141
+ if (resolver?.languageProvider.parseStrategy !== 'standalone' &&
142
+ !(0, parser_loader_js_1.isLanguageAvailable)(fileLang)) {
143
+ continue;
144
+ }
145
+ let bucket = filesByLang.get(fileLang);
146
+ if (bucket === undefined) {
147
+ bucket = [];
148
+ filesByLang.set(fileLang, bucket);
149
+ }
150
+ bucket.push(f);
151
+ }
152
+ for (const [lang] of registry_js_1.SCOPE_RESOLVERS) {
153
+ const count = filesByLang.get(lang)?.length ?? 0;
154
+ if (count > 0) {
155
+ totalScopeLangs++;
156
+ totalScopeFiles += count;
157
+ }
158
+ }
159
+ const SCOPE_PCT_START = 90;
160
+ const SCOPE_PCT_RANGE = 8; // 90-98 internal → 54-59% display
161
+ let processedScopeFiles = 0;
162
+ let currentLangIdx = 0;
163
+ if (totalScopeFiles > 0) {
164
+ ctx.onProgress({
165
+ phase: 'scopeResolution',
166
+ percent: SCOPE_PCT_START,
167
+ message: 'Resolving types',
168
+ });
169
+ }
170
+ // Build the graph-node lookup ONCE and share it across every language pass.
171
+ // It scans the whole graph (~2 GB on the kernel) and is language-agnostic,
172
+ // so the previous per-language rebuild burned that CPU+heap N times and, on
173
+ // a huge repo, a tiny language's full-graph copy overlapped the next
174
+ // language's — a real contributor to the scope-resolution memory peak.
175
+ // Bracket the whole-graph node-lookup build with probes — scanning every
176
+ // graph node is the silent multi-minute step before the first per-language
177
+ // marker on huge repos, so make it observable.
178
+ (0, heap_probe_js_1.logHeapProbe)('scope-setup-nodeLookup-start', `langs=${totalScopeLangs} files=${totalScopeFiles}`);
179
+ const sharedNodeLookup = totalScopeFiles > 0 ? (0, node_lookup_js_1.buildGraphNodeLookup)(ctx.graph) : undefined;
180
+ (0, heap_probe_js_1.logHeapProbe)('scope-setup-nodeLookup-end', `langs=${totalScopeLangs}`);
181
+ // M4 (#2084 review P2-6): build the functionish-node index ONCE for the
182
+ // taint summary harvest, shared across every language pass (it is a whole-
183
+ // graph scan and language-agnostic). Only when pdg is on — off ⇒ undefined,
184
+ // no scan, byte-identical.
185
+ for (const [lang, provider] of registry_js_1.SCOPE_RESOLVERS) {
186
+ const primaryLangFiles = filesByLang.get(lang) ?? [];
187
+ if (primaryLangFiles.length === 0)
188
+ continue;
189
+ const primaryFilePaths = primaryLangFiles.map((f) => f.path);
190
+ // Load per-language import-resolution config (tsconfig paths,
191
+ // composer.json autoload, go.mod, ...). One I/O round trip per
192
+ // workspace pass — cached implicitly by the result handed to
193
+ // every `resolveImportTarget` call below.
194
+ const resolutionConfig = provider.loadResolutionConfig !== undefined
195
+ ? await provider.loadResolutionConfig(ctx.repoPath)
196
+ : undefined;
197
+ // Some languages (e.g. Vue) expand their file universe beyond the
198
+ // primary-language files via the `collectScopeContextPaths` hook.
199
+ // The hook receives raw source contents of the primary files so it
200
+ // can trace import closures without a second tree-sitter parse.
201
+ //
202
+ // To avoid reading primary files twice (once for the hook, once for
203
+ // the resolution pass), we read them upfront and merge with the
204
+ // extra context paths the hook may add.
205
+ // Stream this language's pre-built ParsedFiles in from the disk store
206
+ // FIRST (huge-repo path). Doing it before reading source lets us skip
207
+ // loading content for files the store already covers — for a provider
208
+ // with no content-consuming hook that source is pure dead weight once
209
+ // extraction is served from the store (~1.5 GB on the kernel's C pass).
210
+ // Merged into `preExtractedByPath`; the per-language release block below
211
+ // evicts these again before the next language, so only one language's
212
+ // ParsedFiles are resident at a time.
213
+ const loadStoreFor = async (paths) => {
214
+ if (!parsedFileStorePath)
215
+ return;
216
+ const fromDisk = await (0, parsedfile_store_js_1.loadParsedFilesForPaths)(parsedFileStorePath, paths);
217
+ for (const [fp, pf] of fromDisk)
218
+ preExtractedByPath.set(fp, pf);
219
+ };
220
+ let scopeFilePaths;
221
+ let contents;
222
+ if (provider.collectScopeContextPaths !== undefined) {
223
+ // Context-expanding providers (e.g. Vue) need every primary file's
224
+ // source up front for the closure hook, so load it all.
225
+ const entryFileContents = await (0, filesystem_walker_js_1.readFileContents)(ctx.repoPath, primaryFilePaths);
226
+ scopeFilePaths = provider.collectScopeContextPaths({
227
+ primaryFilePaths,
228
+ preExtractedByPath,
229
+ entryFileContents,
230
+ allScannedPaths,
231
+ resolutionConfig,
232
+ });
233
+ // Read only the extra context files (TS/JS etc.) not already loaded.
234
+ const extraPaths = [...scopeFilePaths].filter((p) => !entryFileContents.has(p));
235
+ const extraContents = await (0, filesystem_walker_js_1.readFileContents)(ctx.repoPath, extraPaths);
236
+ contents = new Map([...entryFileContents, ...extraContents]);
237
+ await loadStoreFor(scopeFilePaths);
238
+ }
239
+ else {
240
+ scopeFilePaths = new Set(primaryFilePaths);
241
+ await loadStoreFor(scopeFilePaths);
242
+ const pathsToRead = selectScopeSourcePathsToRead(provider, primaryFilePaths, preExtractedByPath);
243
+ contents = await (0, filesystem_walker_js_1.readFileContents)(ctx.repoPath, pathsToRead);
244
+ }
245
+ const filePaths = [...scopeFilePaths];
246
+ const files = [];
247
+ for (const fp of filePaths) {
248
+ const content = contents.get(fp);
249
+ if (content !== undefined) {
250
+ files.push({ path: fp, content });
251
+ }
252
+ else if (preExtractedByPath.has(fp)) {
253
+ // Store covers extraction for this file and we deliberately skipped
254
+ // reading its source; extraction uses the pre-extracted ParsedFile,
255
+ // and the provider's source-text policy guarantees its hooks can
256
+ // tolerate empty content for cached files.
257
+ files.push({ path: fp, content: '' });
258
+ }
259
+ // else: uncovered AND unreadable → skip (unchanged from prior behavior).
260
+ }
261
+ const langFileCount = files.length;
262
+ (0, heap_probe_js_1.logHeapProbe)('scope-lang-start', `lang=${lang} files=${langFileCount} contentsLoaded=${contents.size}`);
263
+ const langLabel = lang.charAt(0).toUpperCase() + lang.slice(1);
264
+ currentLangIdx++;
265
+ const langTag = totalScopeLangs > 1 ? `${langLabel} [${currentLangIdx}/${totalScopeLangs}]` : langLabel;
266
+ if (totalScopeFiles > 0) {
267
+ const pct = SCOPE_PCT_START + Math.round((processedScopeFiles / totalScopeFiles) * SCOPE_PCT_RANGE);
268
+ ctx.onProgress({
269
+ phase: 'scopeResolution',
270
+ percent: pct,
271
+ message: 'Resolving types',
272
+ detail: `${langTag}, ${langFileCount.toLocaleString()} files`,
273
+ });
274
+ }
275
+ const stats = (0, run_js_1.runScopeResolution)({
276
+ graph: ctx.graph,
277
+ model,
278
+ files,
279
+ resolutionConfig,
280
+ prebuiltNodeLookup: sharedNodeLookup,
281
+ preExtractedParsedFiles: preExtractedByPath,
282
+ scopeIndexStorePath: parsedFileStorePath,
283
+ recordResolutionOutcome: (outcome) => {
284
+ resolutionOutcomes.push(outcome);
285
+ },
286
+ onWarn: (msg) => {
287
+ if ((0, env_js_1.isSemanticModelValidatorEnabled)()) {
288
+ logger_js_1.logger.warn(`[scope-resolution:${lang}] ${msg}`);
289
+ }
290
+ },
291
+ onProgress: totalScopeFiles > 0
292
+ ? (subPhase, current, total) => {
293
+ let langRatio;
294
+ switch (subPhase) {
295
+ case 'extracting':
296
+ langRatio = total > 0 ? (current / total) * 0.5 : 0;
297
+ break;
298
+ case 'analyzing types':
299
+ langRatio = 0.5;
300
+ break;
301
+ case 'resolving references':
302
+ langRatio = 0.7;
303
+ break;
304
+ case 'linking symbols':
305
+ langRatio = 0.85;
306
+ break;
307
+ default: {
308
+ const _exhaustive = subPhase;
309
+ langRatio = 0.85;
310
+ }
311
+ }
312
+ const overallRatio = Math.min(1, (processedScopeFiles + langRatio * langFileCount) / totalScopeFiles);
313
+ const pct = SCOPE_PCT_START + Math.round(overallRatio * SCOPE_PCT_RANGE);
314
+ ctx.onProgress({
315
+ phase: 'scopeResolution',
316
+ percent: pct,
317
+ message: 'Resolving types',
318
+ detail: subPhase === 'extracting'
319
+ ? `${langTag} — extracting ${current.toLocaleString()}/${total.toLocaleString()} files`
320
+ : `${langTag} — ${subPhase}`,
321
+ });
322
+ }
323
+ : undefined,
324
+ }, provider);
325
+ // Release file contents and pre-extracted entries after each language
326
+ // to reduce memory pressure. For large codebases (16K+ PHP files),
327
+ // holding all source code simultaneously with scope trees causes OOM.
328
+ // See: https://github.com/abhigyanpatwari/GitNexus/issues/1741
329
+ //
330
+ // Use `filePaths` (not `primaryFilePaths`) so that any context files
331
+ // added by `collectScopeContextPaths` (e.g. TS/JS files pulled in for
332
+ // Vue cross-file resolution) are also evicted and not held until GC.
333
+ files.length = 0;
334
+ contents.clear();
335
+ for (const fp of filePaths) {
336
+ preExtractedByPath.delete(fp);
337
+ }
338
+ // This language's ParsedFiles are now unreachable (runScopeResolution has
339
+ // returned and the Map entries are deleted). Force a GC HERE so a heavy
340
+ // language's ~17-20GB set (e.g. C/C++ on the Linux kernel) is reclaimed
341
+ // BEFORE the next language's store-load — instead of leaving V8 to collect
342
+ // it lazily under the next pass's allocation pressure (which, at a cap >=
343
+ // RAM, degrades into swap-thrash). Collects only dead objects: the live
344
+ // cross-file index of the next pass is untouched. The pre/post probe
345
+ // confirms whether old-space fragmentation defeats the reclaim.
346
+ (0, heap_probe_js_1.logHeapProbe)('lang-release-pre-gc', `lang=${lang}`);
347
+ (0, parsedfile_store_js_1.forceGc)();
348
+ (0, heap_probe_js_1.logHeapProbe)('lang-release-post-gc', `lang=${lang}`);
349
+ (0, heap_probe_js_1.logHeapProbe)('scope-lang-end', `lang=${lang} filesProcessed=${stats.filesProcessed}`);
350
+ processedScopeFiles += langFileCount;
351
+ anyRan = true;
352
+ totalFiles += stats.filesProcessed;
353
+ totalImports += stats.importsEmitted;
354
+ totalRefs += stats.referenceEdgesEmitted;
355
+ perLanguage.set(lang, {
356
+ filesProcessed: stats.filesProcessed,
357
+ importsEmitted: stats.importsEmitted,
358
+ referenceEdgesEmitted: stats.referenceEdgesEmitted,
359
+ });
360
+ if (env_js_1.isDev) {
361
+ logger_js_1.logger.info(`[scope-resolution:${lang}] ${stats.filesProcessed} files → ${stats.importsEmitted} IMPORTS + ${stats.referenceEdgesEmitted} reference edges (${stats.resolve.unresolved} unresolved sites, ${stats.referenceSkipped} skipped)`);
362
+ }
363
+ }
364
+ if (totalScopeFiles > 0 && anyRan) {
365
+ ctx.onProgress({
366
+ phase: 'scopeResolution',
367
+ percent: SCOPE_PCT_START + SCOPE_PCT_RANGE,
368
+ message: 'Resolving types',
369
+ detail: 'complete',
370
+ });
371
+ }
372
+ // Scope-resolution is the sole consumer of the disk-backed ParsedFile
373
+ // store; remove its shards now (can be many GB on a huge repo) so they
374
+ // don't linger in `.cgraphx/code`. Best-effort — never fail the phase on a
375
+ // cleanup error.
376
+ if (parsedFileStorePath) {
377
+ try {
378
+ await (0, parsedfile_store_js_1.clearParsedFileStore)(parsedFileStorePath);
379
+ }
380
+ catch {
381
+ /* best-effort cleanup */
382
+ }
383
+ }
384
+ if (!anyRan)
385
+ return NOOP_OUTPUT;
386
+ return {
387
+ ran: true,
388
+ filesProcessed: totalFiles,
389
+ importsEmitted: totalImports,
390
+ referenceEdgesEmitted: totalRefs,
391
+ resolutionOutcomes,
392
+ perLanguage,
393
+ };
394
+ },
395
+ };
@@ -0,0 +1,208 @@
1
+ "use strict";
2
+ /**
3
+ * Reconcile scope-resolution's ownership view into the SemanticModel.
4
+ *
5
+ * For migrated languages (Python in particular) the legacy `parse` phase
6
+ * emits class-body callables without `ownerId` because
7
+ * `parsing-processor`'s `resolveEnclosingOwner` is language-dependent and
8
+ * not every extractor carries the enclosing-class info at parse time.
9
+ * Scope-resolution later calls `provider.populateOwners(parsed)`, which
10
+ * stamps the correct `ownerId` onto `parsed.localDefs[i]`. This pass
11
+ * mirrors those corrections into `model.methods` and `model.fields` so
12
+ * downstream passes can consult `SemanticModel` as the single
13
+ * authoritative owner-keyed index — no parallel scope-resolution
14
+ * registry is needed.
15
+ *
16
+ * ## Single-source-of-truth invariant (I9)
17
+ *
18
+ * After this pass runs, every `def in parsed.localDefs` with a non-
19
+ * undefined `ownerId` is reachable via either:
20
+ * - `model.methods.lookupAllByOwner(ownerId, simpleName)` — if the
21
+ * def is a Method / Function / Constructor, OR
22
+ * - `model.fields.lookupAllByOwner(ownerId, simpleName)` — if the
23
+ * def is a Property / Variable / Const / Static.
24
+ *
25
+ * This invariant is the foundation of Contract Invariant I9
26
+ * (`contract/scope-resolver.ts`): scope-resolution passes MUST read
27
+ * symbol-keyed lookups exclusively from `SemanticModel`.
28
+ *
29
+ * ## Idempotency
30
+ *
31
+ * The pass skips registration when `(ownerId, simpleName)` already
32
+ * contains a def with matching `nodeId`. Safe to call multiple times
33
+ * or after a language whose legacy extractor does populate `ownerId`
34
+ * (C#) — no duplicates are introduced.
35
+ *
36
+ * ## Transitional shim
37
+ *
38
+ * This reconciliation pass is an explicit shim. The architectural end
39
+ * state is for the legacy extractor to emit the correct `ownerId` for
40
+ * every language at parse time, removing the need for a second pass.
41
+ * See ARCHITECTURE.md § "Semantic-model source of truth" for the
42
+ * follow-up plan.
43
+ */
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.reconcileOwnership = reconcileOwnership;
46
+ exports.validateOwnershipParity = validateOwnershipParity;
47
+ const ids_js_1 = require("../graph-bridge/ids.js");
48
+ const NESTED_TYPE_KINDS = new Set([
49
+ 'Class',
50
+ 'Interface',
51
+ 'Enum',
52
+ 'Struct',
53
+ 'Union',
54
+ 'Trait',
55
+ 'TypeAlias',
56
+ 'Typedef',
57
+ 'Record',
58
+ 'Delegate',
59
+ 'Annotation',
60
+ 'Template',
61
+ 'Namespace',
62
+ ]);
63
+ function reconcileOwnership(parsedFiles, model) {
64
+ let methodsRegistered = 0;
65
+ let fieldsRegistered = 0;
66
+ let nestedTypesRegistered = 0;
67
+ let skippedAlreadyPresent = 0;
68
+ for (const parsed of parsedFiles) {
69
+ for (const def of parsed.localDefs) {
70
+ const ownerId = def.ownerId;
71
+ const simple = (0, ids_js_1.simpleQualifiedName)(def);
72
+ if (simple === undefined)
73
+ continue;
74
+ if (def.type === 'Method' || def.type === 'Function' || def.type === 'Constructor') {
75
+ if (ownerId === undefined) {
76
+ if (def.isDeleted !== true)
77
+ continue;
78
+ const existingDef = model.symbols
79
+ .lookupExactAll(def.filePath, simple)
80
+ .find((candidate) => callableSignatureMatches(candidate, def));
81
+ if (existingDef !== undefined) {
82
+ existingDef.isDeleted = true;
83
+ skippedAlreadyPresent++;
84
+ continue;
85
+ }
86
+ model.symbols.add(def.filePath, simple, def.nodeId, def.type, {
87
+ parameterCount: def.parameterCount,
88
+ requiredParameterCount: def.requiredParameterCount,
89
+ parameterTypes: def.parameterTypes,
90
+ parameterTypeClasses: def.parameterTypeClasses,
91
+ returnType: def.returnType,
92
+ qualifiedName: def.qualifiedName,
93
+ isDeleted: true,
94
+ });
95
+ continue;
96
+ }
97
+ const existing = model.methods.lookupAllByOwner(ownerId, simple);
98
+ const existingDef = existing.find((candidate) => candidate.nodeId === def.nodeId ||
99
+ (def.isDeleted === true && callableSignatureMatches(candidate, def)));
100
+ if (existingDef !== undefined) {
101
+ if (def.isDeleted === true) {
102
+ existingDef.isDeleted = true;
103
+ }
104
+ skippedAlreadyPresent++;
105
+ continue;
106
+ }
107
+ model.methods.register(ownerId, simple, def);
108
+ methodsRegistered++;
109
+ }
110
+ else if (def.type === 'Property' ||
111
+ def.type === 'Variable' ||
112
+ def.type === 'Const' ||
113
+ def.type === 'Static') {
114
+ const existing = model.fields.lookupAllByOwner(ownerId, simple);
115
+ if (existing.some((e) => e.nodeId === def.nodeId)) {
116
+ skippedAlreadyPresent++;
117
+ continue;
118
+ }
119
+ model.fields.register(ownerId, simple, def);
120
+ fieldsRegistered++;
121
+ }
122
+ else if (NESTED_TYPE_KINDS.has(def.type)) {
123
+ const existing = model.types.lookupAllByOwner(ownerId, simple);
124
+ if (existing.some((e) => e.nodeId === def.nodeId)) {
125
+ skippedAlreadyPresent++;
126
+ continue;
127
+ }
128
+ model.types.registerByOwner(ownerId, simple, def);
129
+ nestedTypesRegistered++;
130
+ }
131
+ }
132
+ }
133
+ return { methodsRegistered, fieldsRegistered, nestedTypesRegistered, skippedAlreadyPresent };
134
+ }
135
+ function callableSignatureMatches(left, right) {
136
+ if (left.filePath !== right.filePath)
137
+ return false;
138
+ if (left.parameterCount !== right.parameterCount)
139
+ return false;
140
+ if (left.requiredParameterCount !== right.requiredParameterCount)
141
+ return false;
142
+ const leftTypes = left.parameterTypes;
143
+ const rightTypes = right.parameterTypes;
144
+ if (leftTypes === undefined || rightTypes === undefined) {
145
+ return leftTypes === rightTypes;
146
+ }
147
+ return (leftTypes.length === rightTypes.length &&
148
+ leftTypes.every((parameterType, index) => parameterType === rightTypes[index]));
149
+ }
150
+ /**
151
+ * Debug-mode parity validator. Runs only when
152
+ * `VALIDATE_SEMANTIC_MODEL !== '0'` AND `NODE_ENV !== 'production'`.
153
+ *
154
+ * Iterates every def in `parsedFiles[i].localDefs` with an `ownerId`
155
+ * and asserts it is reachable via `model.methods.lookupAllByOwner` or
156
+ * `model.fields.lookupFieldByOwner`. On mismatch: emits a warning via
157
+ * `onWarn` — never throws, mirroring the pipeline's soft-fail posture.
158
+ *
159
+ * This is the enforcement of Contract Invariant I9 at runtime. In
160
+ * production it is a no-op; in development it surfaces drift between
161
+ * `parsed.localDefs` and `SemanticModel` that would otherwise silently
162
+ * produce wrong edges.
163
+ */
164
+ function validateOwnershipParity(parsedFiles, model, onWarn) {
165
+ if (process.env.NODE_ENV === 'production')
166
+ return 0;
167
+ if (process.env.VALIDATE_SEMANTIC_MODEL === '0')
168
+ return 0;
169
+ let mismatches = 0;
170
+ for (const parsed of parsedFiles) {
171
+ for (const def of parsed.localDefs) {
172
+ const ownerId = def.ownerId;
173
+ if (ownerId === undefined)
174
+ continue;
175
+ const simple = (0, ids_js_1.simpleQualifiedName)(def);
176
+ if (simple === undefined)
177
+ continue;
178
+ if (def.type === 'Method' || def.type === 'Function' || def.type === 'Constructor') {
179
+ const found = model.methods.lookupAllByOwner(ownerId, simple);
180
+ if (!found.some((d) => d.nodeId === def.nodeId)) {
181
+ onWarn(`semantic-model parity: ${def.type} ${def.nodeId} (${parsed.filePath}) ` +
182
+ `owned by ${ownerId} as "${simple}" not in MethodRegistry`);
183
+ mismatches++;
184
+ }
185
+ }
186
+ else if (def.type === 'Property' ||
187
+ def.type === 'Variable' ||
188
+ def.type === 'Const' ||
189
+ def.type === 'Static') {
190
+ const found = model.fields.lookupAllByOwner(ownerId, simple);
191
+ if (!found.some((d) => d.nodeId === def.nodeId)) {
192
+ onWarn(`semantic-model parity: ${def.type} ${def.nodeId} (${parsed.filePath}) ` +
193
+ `owned by ${ownerId} as "${simple}" not in FieldRegistry`);
194
+ mismatches++;
195
+ }
196
+ }
197
+ else if (NESTED_TYPE_KINDS.has(def.type)) {
198
+ const found = model.types.lookupAllByOwner(ownerId, simple);
199
+ if (!found.some((d) => d.nodeId === def.nodeId)) {
200
+ onWarn(`semantic-model parity: ${def.type} ${def.nodeId} (${parsed.filePath}) ` +
201
+ `owned by ${ownerId} as "${simple}" not in TypeRegistry owner index`);
202
+ mismatches++;
203
+ }
204
+ }
205
+ }
206
+ }
207
+ return mismatches;
208
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ /**
3
+ * Per-language `ScopeResolver` registry — the lookup the generic
4
+ * `scopeResolutionPhase` uses to pick the right resolver for each
5
+ * migrated language.
6
+ *
7
+ * Adding a language is two lines: implement a `ScopeResolver` in
8
+ * `languages/<lang>/scope-resolver.ts` and register it here. The
9
+ * phase picks it up automatically — no workflow changes, no
10
+ * per-language pipeline phase file.
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.SCOPE_RESOLVERS = void 0;
14
+ const index_js_1 = require("../../../../../shared/index.js");
15
+ const scope_resolver_js_1 = require("../../languages/python/scope-resolver.js");
16
+ const scope_resolver_js_2 = require("../../languages/csharp/scope-resolver.js");
17
+ const scope_resolver_js_3 = require("../../languages/typescript/scope-resolver.js");
18
+ const scope_resolver_js_4 = require("../../languages/go/scope-resolver.js");
19
+ const scope_resolver_js_5 = require("../../languages/java/scope-resolver.js");
20
+ const scope_resolver_js_6 = require("../../languages/c/scope-resolver.js");
21
+ const scope_resolver_js_7 = require("../../languages/cpp/scope-resolver.js");
22
+ const scope_resolver_js_8 = require("../../languages/php/scope-resolver.js");
23
+ const scope_resolver_js_9 = require("../../languages/rust/scope-resolver.js");
24
+ const scope_resolver_js_10 = require("../../languages/javascript/scope-resolver.js");
25
+ const scope_resolver_js_11 = require("../../languages/kotlin/scope-resolver.js");
26
+ const scope_resolver_js_12 = require("../../languages/ruby/scope-resolver.js");
27
+ const scope_resolver_js_13 = require("../../languages/swift/scope-resolver.js");
28
+ const scope_resolver_js_14 = require("../../languages/dart/scope-resolver.js");
29
+ const scope_resolver_js_15 = require("../../languages/vue/scope-resolver.js");
30
+ /** Map of `SupportedLanguages` → `ScopeResolver`. The scope-resolution phase
31
+ * iterates this map directly — every registered resolver runs. This is the
32
+ * single source of truth for which languages resolve via scope-resolution. */
33
+ exports.SCOPE_RESOLVERS = new Map([
34
+ [index_js_1.SupportedLanguages.Python, scope_resolver_js_1.pythonScopeResolver],
35
+ [index_js_1.SupportedLanguages.CSharp, scope_resolver_js_2.csharpScopeResolver],
36
+ [index_js_1.SupportedLanguages.TypeScript, scope_resolver_js_3.typescriptScopeResolver],
37
+ [index_js_1.SupportedLanguages.Go, scope_resolver_js_4.goScopeResolver],
38
+ [index_js_1.SupportedLanguages.Java, scope_resolver_js_5.javaScopeResolver],
39
+ [index_js_1.SupportedLanguages.C, scope_resolver_js_6.cScopeResolver],
40
+ [index_js_1.SupportedLanguages.CPlusPlus, scope_resolver_js_7.cppScopeResolver],
41
+ [index_js_1.SupportedLanguages.PHP, scope_resolver_js_8.phpScopeResolver],
42
+ [index_js_1.SupportedLanguages.Rust, scope_resolver_js_9.rustScopeResolver],
43
+ [index_js_1.SupportedLanguages.JavaScript, scope_resolver_js_10.javascriptScopeResolver],
44
+ [index_js_1.SupportedLanguages.Kotlin, scope_resolver_js_11.kotlinScopeResolver],
45
+ [index_js_1.SupportedLanguages.Ruby, scope_resolver_js_12.rubyScopeResolver],
46
+ [index_js_1.SupportedLanguages.Swift, scope_resolver_js_13.swiftScopeResolver],
47
+ [index_js_1.SupportedLanguages.Dart, scope_resolver_js_14.dartScopeResolver],
48
+ [index_js_1.SupportedLanguages.Vue, scope_resolver_js_15.vueScopeResolver],
49
+ ]);