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,88 @@
1
+ "use strict";
2
+ /**
3
+ * Resolve a Ruby require/require_relative import path to a repo-relative file.
4
+ *
5
+ * Ruby import resolution rules:
6
+ * - `require_relative './foo'` → resolve relative to the importing file's dir
7
+ * - `require 'foo'` → suffix-match via the existing Ruby import resolver
8
+ * - External gems → null (unresolvable within the repo)
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.resolveRubyImportTarget = resolveRubyImportTarget;
12
+ const ruby_js_1 = require("../../import-resolvers/ruby.js");
13
+ const utils_js_1 = require("../../import-resolvers/utils.js");
14
+ const heritage_marker_js_1 = require("../../utils/heritage-marker.js");
15
+ // ─── resolveRubyImportTarget ──────────────────────────────────────────────
16
+ /**
17
+ * ScopeResolver-shaped adapter:
18
+ * `(targetRaw, fromFile, allFilePaths, resolutionConfig?) → string | string[] | null`
19
+ *
20
+ * For relative paths (`./` or `../` — require_relative semantics), resolves
21
+ * against the importing file's directory, trying `.rb` and `/index.rb`
22
+ * suffixes.
23
+ *
24
+ * For bare requires (gem-style like `'json'`, `'serializable'`), delegates
25
+ * to the existing `resolveRubyImportInternal` which uses suffix matching.
26
+ *
27
+ * Returns `null` for external gems that have no matching file in the repo.
28
+ */
29
+ function resolveRubyImportTarget(targetRaw, fromFile, allFilePaths, _resolutionConfig) {
30
+ if (!targetRaw)
31
+ return null;
32
+ if ((0, heritage_marker_js_1.isHeritageMarker)(targetRaw))
33
+ return null;
34
+ const fromNormalized = fromFile.replace(/\\/g, '/');
35
+ const fromDir = fromNormalized.includes('/')
36
+ ? fromNormalized.slice(0, fromNormalized.lastIndexOf('/'))
37
+ : '';
38
+ // ── require_relative: relative path resolution ──────────────────────
39
+ if (targetRaw.startsWith('./') || targetRaw.startsWith('../')) {
40
+ const resolved = resolveRelative(targetRaw, fromDir, allFilePaths);
41
+ return resolved;
42
+ }
43
+ // ── require: bare/gem-style suffix matching ─────────────────────────
44
+ return resolveBare(targetRaw, allFilePaths);
45
+ }
46
+ // ─── internal helpers ─────────────────────────────────────────────────────
47
+ /**
48
+ * Resolve a relative require path (`./foo`, `../bar`) against `fromDir`.
49
+ * Tries `${resolved}.rb` then `${resolved}/index.rb`.
50
+ */
51
+ function resolveRelative(targetRaw, fromDir, allFilePaths) {
52
+ // Resolve `./` and `../` segments manually against fromDir
53
+ const segments = (fromDir ? fromDir + '/' + targetRaw : targetRaw).split('/');
54
+ const resolved = [];
55
+ for (const seg of segments) {
56
+ if (seg === '' || seg === '.')
57
+ continue;
58
+ if (seg === '..') {
59
+ resolved.pop();
60
+ }
61
+ else {
62
+ resolved.push(seg);
63
+ }
64
+ }
65
+ const resolvedPath = resolved.join('/');
66
+ // Try direct .rb file
67
+ const rbFile = `${resolvedPath}.rb`;
68
+ if (allFilePaths.has(rbFile))
69
+ return rbFile;
70
+ // Try index.rb inside directory
71
+ const indexFile = `${resolvedPath}/index.rb`;
72
+ if (allFilePaths.has(indexFile))
73
+ return indexFile;
74
+ // The path might already include .rb extension
75
+ if (resolvedPath.endsWith('.rb') && allFilePaths.has(resolvedPath))
76
+ return resolvedPath;
77
+ return null;
78
+ }
79
+ /**
80
+ * Resolve a bare require path (`'serializable'`, `'json'`, `'net/http'`)
81
+ * via suffix matching using the existing Ruby import resolver.
82
+ */
83
+ function resolveBare(targetRaw, allFilePaths) {
84
+ const normalizedFileList = [...allFilePaths].map((f) => f.replace(/\\/g, '/'));
85
+ const allFileList = [...allFilePaths];
86
+ const index = (0, utils_js_1.buildSuffixIndex)(normalizedFileList, allFileList);
87
+ return (0, ruby_js_1.resolveRubyImportInternal)(targetRaw, normalizedFileList, allFileList, index);
88
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveRubyImportTarget = exports.rubyFunctionDefinitionLabel = exports.rubyReceiverBinding = exports.rubyImportOwningScope = exports.rubyBindingScopeFor = exports.findEnclosingClassOrModule = exports.synthesizeRubyReceiverBinding = exports.rubyMergeBindings = exports.rubyArityCompatibility = exports.normalizeRubyTypeName = exports.interpretRubyTypeBinding = exports.interpretRubyImport = exports.resetRubyCaptureCacheStats = exports.getRubyCaptureCacheStats = exports.emitRubyScopeCaptures = void 0;
4
+ /**
5
+ * Ruby scope-resolution hooks (RFC #909 Ring 3).
6
+ */
7
+ var captures_js_1 = require("./captures.js");
8
+ Object.defineProperty(exports, "emitRubyScopeCaptures", { enumerable: true, get: function () { return captures_js_1.emitRubyScopeCaptures; } });
9
+ var cache_stats_js_1 = require("./cache-stats.js");
10
+ Object.defineProperty(exports, "getRubyCaptureCacheStats", { enumerable: true, get: function () { return cache_stats_js_1.getRubyCaptureCacheStats; } });
11
+ Object.defineProperty(exports, "resetRubyCaptureCacheStats", { enumerable: true, get: function () { return cache_stats_js_1.resetRubyCaptureCacheStats; } });
12
+ var interpret_js_1 = require("./interpret.js");
13
+ Object.defineProperty(exports, "interpretRubyImport", { enumerable: true, get: function () { return interpret_js_1.interpretRubyImport; } });
14
+ Object.defineProperty(exports, "interpretRubyTypeBinding", { enumerable: true, get: function () { return interpret_js_1.interpretRubyTypeBinding; } });
15
+ Object.defineProperty(exports, "normalizeRubyTypeName", { enumerable: true, get: function () { return interpret_js_1.normalizeRubyTypeName; } });
16
+ var arity_js_1 = require("./arity.js");
17
+ Object.defineProperty(exports, "rubyArityCompatibility", { enumerable: true, get: function () { return arity_js_1.rubyArityCompatibility; } });
18
+ var merge_bindings_js_1 = require("./merge-bindings.js");
19
+ Object.defineProperty(exports, "rubyMergeBindings", { enumerable: true, get: function () { return merge_bindings_js_1.rubyMergeBindings; } });
20
+ var receiver_binding_js_1 = require("./receiver-binding.js");
21
+ Object.defineProperty(exports, "synthesizeRubyReceiverBinding", { enumerable: true, get: function () { return receiver_binding_js_1.synthesizeRubyReceiverBinding; } });
22
+ Object.defineProperty(exports, "findEnclosingClassOrModule", { enumerable: true, get: function () { return receiver_binding_js_1.findEnclosingClassOrModule; } });
23
+ var simple_hooks_js_1 = require("./simple-hooks.js");
24
+ Object.defineProperty(exports, "rubyBindingScopeFor", { enumerable: true, get: function () { return simple_hooks_js_1.rubyBindingScopeFor; } });
25
+ Object.defineProperty(exports, "rubyImportOwningScope", { enumerable: true, get: function () { return simple_hooks_js_1.rubyImportOwningScope; } });
26
+ Object.defineProperty(exports, "rubyReceiverBinding", { enumerable: true, get: function () { return simple_hooks_js_1.rubyReceiverBinding; } });
27
+ Object.defineProperty(exports, "rubyFunctionDefinitionLabel", { enumerable: true, get: function () { return simple_hooks_js_1.rubyFunctionDefinitionLabel; } });
28
+ var import_target_js_1 = require("./import-target.js");
29
+ Object.defineProperty(exports, "resolveRubyImportTarget", { enumerable: true, get: function () { return import_target_js_1.resolveRubyImportTarget; } });
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.interpretRubyImport = interpretRubyImport;
4
+ exports.interpretRubyTypeBinding = interpretRubyTypeBinding;
5
+ exports.normalizeRubyTypeName = normalizeRubyTypeName;
6
+ const heritage_marker_js_1 = require("../../utils/heritage-marker.js");
7
+ // ─── interpretImport ──────────────────────────────────────────────────────
8
+ /**
9
+ * Interpret a pre-decomposed Ruby import capture into a `ParsedImport`.
10
+ *
11
+ * Ruby `require` / `require_relative` / `load` bring everything from the
12
+ * target file into scope (wildcard semantics). The captures layer (U5)
13
+ * pre-decomposes the raw tree-sitter match so that this function receives:
14
+ * - `@import.kind` — always `'wildcard'` for Ruby
15
+ * - `@import.source` — the string argument (e.g. `'./user'`, `'serializable'`)
16
+ * - `@import.name` — derived module name (informational)
17
+ */
18
+ function interpretRubyImport(captures) {
19
+ const kind = captures['@import.kind']?.text;
20
+ if (kind === undefined)
21
+ return null;
22
+ const source = captures['@import.source']?.text;
23
+ if (source === undefined)
24
+ return null;
25
+ // Heritage-encoded imports (__heritage__:include:Serializable:User)
26
+ // are stored as namespace imports so emitHeritageEdges can read them.
27
+ if ((0, heritage_marker_js_1.isHeritageMarker)(source)) {
28
+ const name = captures['@import.name']?.text ?? source;
29
+ return { kind: 'namespace', localName: name, importedName: name, targetRaw: source };
30
+ }
31
+ // Ruby imports are always wildcard — everything in the required file
32
+ // becomes visible in the importing scope.
33
+ return { kind: 'wildcard', targetRaw: source };
34
+ }
35
+ // ─── interpretTypeBinding ─────────────────────────────────────────────────
36
+ /**
37
+ * Interpret a Ruby type-binding capture into a `ParsedTypeBinding`.
38
+ *
39
+ * Type information in Ruby comes from YARD/RBS annotations, `.new` calls,
40
+ * and assignment inference. The captures layer tags each match with one of
41
+ * several sub-captures (`@type-binding.self`, `@type-binding.constructor`,
42
+ * etc.) so this function can determine the `source`.
43
+ */
44
+ function interpretRubyTypeBinding(captures) {
45
+ const name = captures['@type-binding.name']?.text;
46
+ const type = captures['@type-binding.type']?.text;
47
+ if (name === undefined || type === undefined)
48
+ return null;
49
+ let source;
50
+ let normalizedType;
51
+ if (captures['@type-binding.self'] !== undefined) {
52
+ source = 'self';
53
+ normalizedType = normalizeRubyTypeName(type);
54
+ }
55
+ else if (captures['@type-binding.constructor'] !== undefined) {
56
+ source = 'constructor-inferred';
57
+ normalizedType = normalizeRubyConstructorType(type);
58
+ }
59
+ else if (captures['@type-binding.call-return'] !== undefined) {
60
+ source = 'constructor-inferred';
61
+ normalizedType = normalizeRubyTypeName(type);
62
+ }
63
+ else if (captures['@type-binding.return'] !== undefined) {
64
+ source = 'return-annotation';
65
+ normalizedType = normalizeRubyTypeName(type);
66
+ }
67
+ else if (captures['@type-binding.parameter'] !== undefined) {
68
+ source = 'parameter-annotation';
69
+ normalizedType = normalizeRubyTypeName(type);
70
+ }
71
+ else if (captures['@type-binding.alias'] !== undefined) {
72
+ source = 'assignment-inferred';
73
+ normalizedType = normalizeRubyTypeName(type);
74
+ }
75
+ else {
76
+ source = 'annotation';
77
+ normalizedType = normalizeRubyTypeName(type);
78
+ }
79
+ return { boundName: name, rawTypeName: normalizedType, source };
80
+ }
81
+ // ─── normalizeRubyTypeName ────────────────────────────────────────────────
82
+ /**
83
+ * Normalize a Ruby type name to its simple form:
84
+ * 1. Strip leading `::` (root-qualified)
85
+ * 2. Take last segment of qualified paths (`Foo::Bar::Baz` → `Baz`)
86
+ * 3. Strip generic angle brackets for consistency (`Array<User>` → `Array`)
87
+ * 4. Trim whitespace
88
+ */
89
+ function normalizeRubyTypeName(text) {
90
+ let t = text.trim();
91
+ // Strip leading root-qualifier
92
+ if (t.startsWith('::'))
93
+ t = t.slice(2);
94
+ // Strip generic angle brackets (e.g. `Array<User>` → `Array`)
95
+ const angleBracket = t.indexOf('<');
96
+ if (angleBracket !== -1)
97
+ t = t.slice(0, angleBracket);
98
+ // Take last segment of qualified paths (Foo::Bar::Baz → Baz)
99
+ const lastColon = t.lastIndexOf('::');
100
+ if (lastColon !== -1)
101
+ t = t.slice(lastColon + 2);
102
+ return t.trim();
103
+ }
104
+ // ─── internal helpers ─────────────────────────────────────────────────────
105
+ /**
106
+ * Normalize a constructor-inferred type from a `.new` call.
107
+ * Handles `Foo::Bar.new` → `Bar` and plain `Foo.new` → `Foo`.
108
+ */
109
+ function normalizeRubyConstructorType(text) {
110
+ let t = text.trim();
111
+ // Strip `.new` suffix if present (e.g. `Foo::Bar.new` → `Foo::Bar`)
112
+ if (t.endsWith('.new'))
113
+ t = t.slice(0, -4);
114
+ return normalizeRubyTypeName(t);
115
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.rubyMergeBindings = rubyMergeBindings;
4
+ const TIER = {
5
+ local: 0,
6
+ namespace: 1,
7
+ import: 2,
8
+ reexport: 3,
9
+ wildcard: 4,
10
+ };
11
+ function rubyMergeBindings(existing, incoming, _scopeId) {
12
+ const seen = new Set();
13
+ return [...existing, ...incoming]
14
+ .sort((a, b) => (TIER[a.origin] ?? 99) - (TIER[b.origin] ?? 99) || a.def.nodeId.localeCompare(b.def.nodeId))
15
+ .filter((binding) => {
16
+ if (seen.has(binding.def.nodeId))
17
+ return false;
18
+ seen.add(binding.def.nodeId);
19
+ return true;
20
+ });
21
+ }
@@ -0,0 +1,349 @@
1
+ "use strict";
2
+ /**
3
+ * Tree-sitter query for Ruby scope captures (U1 scope-resolution migration).
4
+ *
5
+ * Captures the structural skeleton the generic scope-resolution pipeline
6
+ * consumes: scopes (program/class/module/method/block), declarations
7
+ * (class, module, method, singleton_method, variable), imports
8
+ * (require/require_relative/load), type bindings (constructor-inferred
9
+ * locals via `.new`), and references (free calls, member calls).
10
+ *
11
+ * Ruby specifics that shape this query:
12
+ *
13
+ * - Ruby modules are class-like scopes (they hold methods and can be
14
+ * mixed in via include/extend/prepend).
15
+ *
16
+ * - `singleton_method` (`def self.foo`) is a class-level method
17
+ * declaration, captured as @scope.function + @declaration.function.
18
+ *
19
+ * - Ruby has no static type annotations. Constructor inference via
20
+ * `x = User.new` is handled here; YARD `@param`/`@return` comments
21
+ * are handled programmatically in captures.ts.
22
+ *
23
+ * - In Ruby, field access IS a method call (attr_reader generates
24
+ * methods). Member calls cover both method calls and field reads.
25
+ *
26
+ * - `require`, `require_relative`, and `load` are plain method calls
27
+ * in the grammar — matched by name via `#match?`.
28
+ *
29
+ * - `do_block` and `block` (`{ }`) are both block scopes that can
30
+ * introduce closures.
31
+ *
32
+ * Exposes lazy `Parser` and `Query` singletons so callers don't pay
33
+ * tree-sitter init cost per file.
34
+ */
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.getRubyParser = getRubyParser;
40
+ exports.getRubyScopeQuery = getRubyScopeQuery;
41
+ const tree_sitter_1 = __importDefault(require("tree-sitter"));
42
+ const node_module_1 = require("node:module");
43
+ // 懒加载(spec §7/§13):tree-sitter-ruby 移至 devDependencies,生产 --omit=dev 不装。
44
+ // 首次用到时按需 require + 缓存;失败 → null,该语言降级为结构层收录,不阻断 analyze。
45
+ const _require = (0, node_module_1.createRequire)(__filename);
46
+ let _rubyGrammar;
47
+ const loadRubyGrammar = () => {
48
+ if (_rubyGrammar !== undefined)
49
+ return _rubyGrammar;
50
+ try {
51
+ _rubyGrammar = _require('tree-sitter-ruby');
52
+ }
53
+ catch {
54
+ _rubyGrammar = null;
55
+ }
56
+ return _rubyGrammar;
57
+ };
58
+ const RUBY_SCOPE_QUERY = `
59
+ ;; ── Scopes ───────────────────────────────────────────────────────────────
60
+
61
+ (program) @scope.module
62
+
63
+ (class) @scope.class
64
+ (module) @scope.class
65
+
66
+ (method) @scope.function
67
+ (singleton_method) @scope.function
68
+
69
+ (do_block) @scope.block
70
+ (block) @scope.block
71
+
72
+ ;; ── Declarations — class ─────────────────────────────────────────────────
73
+
74
+ (class
75
+ name: (constant) @declaration.name) @declaration.class
76
+
77
+ ;; class Foo::Bar — namespaced class definition
78
+ (class
79
+ name: (scope_resolution
80
+ name: (constant) @declaration.name)) @declaration.class
81
+
82
+ ;; ── Declarations — module (labeled Trait for class-like registry lookup) ─
83
+
84
+ (module
85
+ name: (constant) @declaration.name) @declaration.trait
86
+
87
+ ;; module Baz::Qux — namespaced module definition
88
+ (module
89
+ name: (scope_resolution
90
+ name: (constant) @declaration.name)) @declaration.trait
91
+
92
+ ;; ── Declarations — method (instance) ─────────────────────────────────────
93
+
94
+ (method
95
+ name: (identifier) @declaration.name) @declaration.function
96
+
97
+ ;; ── Declarations — singleton method (class-level: def self.foo) ──────────
98
+
99
+ (singleton_method
100
+ name: (identifier) @declaration.name) @declaration.function
101
+
102
+ ;; ── Declarations — closure bound to a local ──────────────────────────────
103
+ ;;
104
+ ;; handler = ->(x) { target(x) } / lambda { |x| ... } / proc { |x| ... }
105
+ ;;
106
+ ;; Anchor discipline (same contract as javascript/query.ts): @declaration.function
107
+ ;; sits on the INNER (block), NOT on the assignment wrapper and NOT on the
108
+ ;; (lambda) node — the block is what carries @scope.block above, so anchoring
109
+ ;; there aligns anchor.range with the scope range. That alignment is what lets
110
+ ;; pickCallerCallableDef accept a Block-kind scope as a callable boundary.
111
+ ;; do_block/block stay @scope.block deliberately — do NOT re-kind them.
112
+ ;;
113
+ ;; The call forms are restricted to lambda/proc by name. An unrestricted
114
+ ;; (call block: (block)) would match ANY method call with a block, so
115
+ ;; mapped = items.map { |i| ... } would wrongly declare mapped a callable.
116
+ ;; Separate #eq? patterns rather than one #match? alternation: alternation
117
+ ;; predicates are a known hazard on this tree-sitter line.
118
+ ;; BOTH block forms in every pattern. do...end produces (do_block), braces
119
+ ;; produce (block), and do/end is the dominant MULTI-LINE style — covering only
120
+ ;; braces left lambda-do-end with a Block scope owning nothing, so its
121
+ ;; calls fell through to the enclosing method. @scope.block above already covers
122
+ ;; both, so the two channels now agree.
123
+ ;;
124
+ ;; The !receiver constraint is load-bearing: without it #eq? tests the method
125
+ ;; NAME only, so MyMod.lambda {...} / obj.proc {...} would be captured as
126
+ ;; closure bindings. Verified against the grammar: with !receiver those are
127
+ ;; rejected while bare lambda/proc still match.
128
+ (assignment
129
+ left: (identifier) @declaration.name
130
+ right: (lambda body: [(block) (do_block)] @declaration.function))
131
+
132
+ (assignment
133
+ left: (identifier) @declaration.name
134
+ right: (call
135
+ !receiver
136
+ method: (identifier) @_lambda-kw
137
+ block: [(block) (do_block)] @declaration.function)
138
+ (#eq? @_lambda-kw "lambda"))
139
+
140
+ (assignment
141
+ left: (identifier) @declaration.name
142
+ right: (call
143
+ !receiver
144
+ method: (identifier) @_proc-kw
145
+ block: [(block) (do_block)] @declaration.function)
146
+ (#eq? @_proc-kw "proc"))
147
+
148
+ ;; Proc.new { ... } / Proc.new do ... end — the explicit constructor form.
149
+ ;; Receiver IS required here and must be the Proc constant, so this cannot
150
+ ;; collide with the bare-call patterns above.
151
+ (assignment
152
+ left: (identifier) @declaration.name
153
+ right: (call
154
+ receiver: (constant) @_proc-const
155
+ method: (identifier) @_new-kw
156
+ block: [(block) (do_block)] @declaration.function)
157
+ (#eq? @_proc-const "Proc")
158
+ (#eq? @_new-kw "new"))
159
+
160
+ ;; ── Declarations — variable assignment ───────────────────────────────────
161
+
162
+ (assignment
163
+ left: (identifier) @declaration.name) @declaration.variable
164
+
165
+ ;; ── Imports — require / require_relative / load ──────────────────────────
166
+ ;;
167
+ ;; All three are plain \`call\` nodes in tree-sitter-ruby with no receiver.
168
+ ;; The import-decomposer in captures.ts fans out the argument to a path.
169
+
170
+ (call
171
+ method: (identifier) @_method
172
+ (#match? @_method "^(require|require_relative|load)$")) @import.statement
173
+
174
+ ;; ── Type bindings — constructor inference: x = User.new ──────────────────
175
+ ;;
176
+ ;; tree-sitter-ruby parses \`x = User.new\` as:
177
+ ;; (assignment
178
+ ;; left: (identifier) ;; "x"
179
+ ;; right: (call
180
+ ;; receiver: (constant) ;; "User"
181
+ ;; method: (identifier))) ;; "new"
182
+ ;;
183
+ ;; Captures the receiver constant as the type.
184
+
185
+ (assignment
186
+ left: (identifier) @type-binding.name
187
+ right: (call
188
+ receiver: (constant) @type-binding.type
189
+ method: (identifier) @_new_method
190
+ (#eq? @_new_method "new"))) @type-binding.constructor
191
+
192
+ ;; Qualified constructor: x = Foo::Bar.new (scope_resolution receiver)
193
+
194
+ (assignment
195
+ left: (identifier) @type-binding.name
196
+ right: (call
197
+ receiver: (scope_resolution) @type-binding.type
198
+ method: (identifier) @_new_method2
199
+ (#eq? @_new_method2 "new"))) @type-binding.constructor
200
+
201
+ ;; Instance-variable constructor: \`@service = UserService.new\` (#2807).
202
+ ;; The patterns above bind locals and constants; an instance variable — the
203
+ ;; only way a Ruby object gets a field at all — bound nothing, so \`@service.run\`
204
+ ;; had no receiver type and the fold declined the whole chain.
205
+ ;;
206
+ ;; \`@type-binding.name\` is captured on the \`instance_variable\` node, so the
207
+ ;; bound name keeps its \`@\` sigil and matches the receiver text at the call
208
+ ;; site verbatim. The narrow \`@type-binding.ivar-field\` marker rides the same
209
+ ;; node for \`rubyBindingScopeFor\` to hoist on; anchorCaptureFor takes the
210
+ ;; broadest range, so the assignment stays the anchor and the source stays
211
+ ;; \`constructor-inferred\`.
212
+ ;;
213
+ ;; These patterns match unconditionally HERE; captures.ts then discards the
214
+ ;; whole binding via \`isRubyInstanceIvarWrite\` unless \`self\` at the write is
215
+ ;; provably an instance of the enclosing lexical class — which rules out
216
+ ;; \`def self.x\`, \`class << self\`, the class body itself, and any write reached
217
+ ;; through a block, whose \`self\` its receiver chooses (\`class_eval\`,
218
+ ;; \`Class.new\`, \`instance_eval\`, \`define_method\`, …). A tree-sitter pattern
219
+ ;; cannot state "and no singleton or block ancestor", so the ownership test has
220
+ ;; to be a walk.
221
+
222
+ (assignment
223
+ left: (instance_variable) @type-binding.name @type-binding.ivar-field
224
+ right: (call
225
+ receiver: (constant) @type-binding.type
226
+ method: (identifier) @_new_ivar
227
+ (#eq? @_new_ivar "new"))) @type-binding.constructor
228
+
229
+ (assignment
230
+ left: (instance_variable) @type-binding.name @type-binding.ivar-field
231
+ right: (call
232
+ receiver: (scope_resolution) @type-binding.type
233
+ method: (identifier) @_new_ivar_q
234
+ (#eq? @_new_ivar_q "new"))) @type-binding.constructor
235
+
236
+ ;; Constant constructor: SERVICE = UserService.new (left is constant, not identifier)
237
+
238
+ (assignment
239
+ left: (constant) @type-binding.name
240
+ right: (call
241
+ receiver: (constant) @type-binding.type
242
+ method: (identifier) @_new_method3
243
+ (#eq? @_new_method3 "new"))) @type-binding.constructor
244
+
245
+ (assignment
246
+ left: (constant) @type-binding.name
247
+ right: (call
248
+ receiver: (scope_resolution) @type-binding.type
249
+ method: (identifier) @_new_method4
250
+ (#eq? @_new_method4 "new"))) @type-binding.constructor
251
+
252
+ ;; Call-return inference: x = build_service() (factory pattern)
253
+
254
+ (assignment
255
+ left: (identifier) @type-binding.name
256
+ right: (call
257
+ !receiver
258
+ method: (identifier) @type-binding.type)) @type-binding.call-return
259
+
260
+ ;; Constant call-return: SERVICE = build_service()
261
+
262
+ (assignment
263
+ left: (constant) @type-binding.name
264
+ right: (call
265
+ !receiver
266
+ method: (identifier) @type-binding.type)) @type-binding.call-return
267
+
268
+ ;; ── Type bindings — for-in loop: for x in collection ─────────────────────
269
+ ;;
270
+ ;; The loop variable \`x\` gets the element type of the collection.
271
+ ;; We bind \`x → collection\` as an alias; the chain-follow pass
272
+ ;; resolves \`collection → ElementType\` via YARD \`@param\` annotations.
273
+ ;; tree-sitter-ruby wraps the collection in an \`in\` node:
274
+ ;; (for pattern: (identifier) value: (in (identifier)))
275
+
276
+ (for
277
+ pattern: (identifier) @type-binding.name
278
+ value: (in
279
+ (identifier) @type-binding.type)) @type-binding.alias
280
+
281
+ ;; ── Type bindings — variable alias: x = y ────────────────────────────────
282
+
283
+ (assignment
284
+ left: (identifier) @type-binding.name
285
+ right: (identifier) @type-binding.type) @type-binding.alias
286
+
287
+ ;; ── References — free calls (no receiver) ────────────────────────────────
288
+
289
+ (call
290
+ !receiver
291
+ method: (identifier) @reference.name) @reference.call.free
292
+
293
+ ;; ── References — bare calls (zero-arity calls without parentheses) ──────
294
+ ;;
295
+ ;; Ruby allows calling methods without parentheses. When no arguments are
296
+ ;; passed, tree-sitter-ruby parses them as plain \`identifier\` nodes inside
297
+ ;; \`body_statement\`. This mirrors the legacy query pattern. The scope-
298
+ ;; resolution pipeline filters false positives via builtInNames and
299
+ ;; arity-based overload narrowing.
300
+
301
+ (body_statement
302
+ (identifier) @reference.name) @reference.call.free
303
+
304
+ ;; ── References — member calls (with receiver): obj.method() ──────────────
305
+
306
+ (call
307
+ receiver: (_) @reference.receiver
308
+ method: (identifier) @reference.name) @reference.call.member
309
+
310
+ ;; ── References — field writes: obj.field = value ─────────────────────────
311
+ ;;
312
+ ;; Ruby setter syntax: \`obj.name = x\` is an assignment whose left-hand
313
+ ;; side is a \`call\` node with a receiver.
314
+
315
+ (assignment
316
+ left: (call
317
+ receiver: (_) @reference.receiver
318
+ method: (identifier) @reference.name)) @reference.write
319
+
320
+ ;; ── References — field writes (compound assignment: obj.field += value) ──
321
+
322
+ (operator_assignment
323
+ left: (call
324
+ receiver: (_) @reference.receiver
325
+ method: (identifier) @reference.name)) @reference.write
326
+ `;
327
+ let _parser = null;
328
+ let _query = null;
329
+ function getRubyParser() {
330
+ if (_parser === null) {
331
+ const grammar = loadRubyGrammar();
332
+ if (grammar === null) {
333
+ throw new Error('tree-sitter-ruby grammar unavailable — install it (devDependency) or the language degrades to structure-layer capture.');
334
+ }
335
+ _parser = new tree_sitter_1.default();
336
+ _parser.setLanguage(grammar);
337
+ }
338
+ return _parser;
339
+ }
340
+ function getRubyScopeQuery() {
341
+ if (_query === null) {
342
+ const grammar = loadRubyGrammar();
343
+ if (grammar === null) {
344
+ throw new Error('tree-sitter-ruby grammar unavailable — install it (devDependency) or the language degrades to structure-layer capture.');
345
+ }
346
+ _query = new tree_sitter_1.default.Query(grammar, RUBY_SCOPE_QUERY);
347
+ }
348
+ return _query;
349
+ }
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ /**
3
+ * Synthesize `@type-binding.self` captures for Ruby methods.
4
+ *
5
+ * Every instance method and singleton method inside a class or module body
6
+ * gets `self` bound to the enclosing class/module name. Ruby has no
7
+ * `@staticmethod` concept — even `def self.foo` dispatches on the class.
8
+ *
9
+ * For `class << self` (singleton_class) blocks, we walk past the
10
+ * singleton_class to the real owning class/module, matching the
11
+ * `rubyResolveEnclosingOwner` logic from the legacy provider.
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.findEnclosingClassOrModule = findEnclosingClassOrModule;
15
+ exports.synthesizeRubyReceiverBinding = synthesizeRubyReceiverBinding;
16
+ const ast_helpers_js_1 = require("../../utils/ast-helpers.js");
17
+ /**
18
+ * Walk up the parent chain from `node` to find the first enclosing
19
+ * `class` or `module` ancestor.
20
+ *
21
+ * - `singleton_class` (`class << self`) is not itself a real type, so we
22
+ * skip past it and continue walking to find the true owner.
23
+ * - Stops at `program` (never walks past the file root).
24
+ * - Returns `null` when no enclosing class/module is found.
25
+ */
26
+ function findEnclosingClassOrModule(node) {
27
+ let cur = node.parent;
28
+ while (cur !== null) {
29
+ if (cur.type === 'program')
30
+ return null;
31
+ if (cur.type === 'class' || cur.type === 'module')
32
+ return cur;
33
+ // singleton_class (`class << self`) is not the real owner —
34
+ // keep walking to find the enclosing class/module.
35
+ cur = cur.parent;
36
+ }
37
+ return null;
38
+ }
39
+ /**
40
+ * Extract the class/module name from the `name` field of a `class` or
41
+ * `module` node. The field holds a `constant` node whose text is the
42
+ * simple name (e.g. "MyClass").
43
+ */
44
+ function extractClassName(classOrModuleNode) {
45
+ const nameNode = classOrModuleNode.childForFieldName('name');
46
+ if (nameNode === null)
47
+ return null;
48
+ return nameNode.text;
49
+ }
50
+ /**
51
+ * Given a method node (`method` or `singleton_method`) and its enclosing
52
+ * `class`/`module` node (or null for top-level defs), synthesize a
53
+ * `@type-binding.self` capture that binds `self` to the class/module name.
54
+ *
55
+ * Returns `null` when:
56
+ * - `enclosingNode` is null (top-level def has no implicit receiver)
57
+ * - the enclosing node's name cannot be extracted
58
+ */
59
+ function synthesizeRubyReceiverBinding(fnNode, enclosingNode) {
60
+ if (enclosingNode === null)
61
+ return null;
62
+ const className = extractClassName(enclosingNode);
63
+ if (className === null)
64
+ return null;
65
+ return {
66
+ '@type-binding.self': (0, ast_helpers_js_1.syntheticCapture)('@type-binding.self', fnNode, 'self'),
67
+ '@type-binding.name': (0, ast_helpers_js_1.syntheticCapture)('@type-binding.name', fnNode, 'self'),
68
+ '@type-binding.type': (0, ast_helpers_js_1.syntheticCapture)('@type-binding.type', fnNode, className),
69
+ };
70
+ }