cgraphx 2.0.1 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (701) hide show
  1. package/dist/.claude-template/FLOW-MAP.md +7 -5
  2. package/dist/.claude-template/commands/end.md +1 -1
  3. package/dist/.claude-template/skills/cgraphx-guide/SKILL.md +2 -1
  4. package/dist/.claude-template/skills/cgraphx-guide/how-to-use.html +4 -2
  5. package/dist/.claude-template/skills/cgraphx-guide/how-to-use.md +5 -2
  6. package/dist/.claude-template/skills/iboc-check/SKILL.md +116 -0
  7. package/dist/.claude-template/skills/iboc-check/filler-prompt.md +75 -0
  8. package/dist/.claude-template/skills/implementation/SKILL.md +7 -0
  9. package/dist/.claude-template/skills/init-project-guides/SKILL.md +1 -1
  10. package/dist/.claude-template/skills/run-api-test/references/db-verification.md +2 -2
  11. package/dist/.claude-template/skills/subagent-implement/SKILL.md +3 -2
  12. package/dist/.claude-template/skills/write-api/assets/template-request.bru +3 -3
  13. package/dist/.claude-template/skills/write-api/references/bru-format.md +6 -6
  14. package/dist/.claude-template/skills/write-delivery-guide/SKILL.md +97 -0
  15. package/dist/.claude-template/skills/write-delivery-guide/template-change-type.md +120 -0
  16. package/dist/.claude-template/skills/write-delivery-guide/template-multi-role-flow.md +148 -0
  17. package/dist/.claude-template/skills/write-unit-test-code/SKILL.md +23 -6
  18. package/dist/core/code/engine/cli/analyze-config.js +320 -0
  19. package/dist/core/code/engine/cli/analyze.js +1086 -0
  20. package/dist/core/code/engine/cli/cli-message.js +83 -0
  21. package/dist/core/code/engine/cli/detect-changes-format.js +58 -0
  22. package/dist/core/code/engine/cli/embedding-dims.js +43 -0
  23. package/dist/core/code/engine/cli/format-elapsed.js +12 -0
  24. package/dist/core/code/engine/cli/help-i18n.js +144 -0
  25. package/dist/core/code/engine/cli/i18n/en.js +110 -0
  26. package/dist/core/code/engine/cli/i18n/index.js +47 -0
  27. package/dist/core/code/engine/cli/i18n/resources.js +9 -0
  28. package/dist/core/code/engine/cli/i18n/zh-CN.js +110 -0
  29. package/dist/core/code/engine/cli/lazy-action.js +67 -0
  30. package/dist/core/code/engine/cli/optional-grammars.js +136 -0
  31. package/dist/core/code/engine/cli/resolve-invocation.js +76 -0
  32. package/dist/core/code/engine/cli/status.js +156 -0
  33. package/dist/core/code/engine/cli/tool.js +384 -0
  34. package/dist/core/code/engine/config/ignore-service.js +511 -0
  35. package/dist/core/code/engine/config/supported-languages.js +17 -0
  36. package/dist/core/code/engine/core/analysis-features.js +64 -0
  37. package/dist/core/code/engine/core/analyzer-identity.js +2171 -0
  38. package/dist/core/code/engine/core/git-staleness.js +180 -0
  39. package/dist/core/code/engine/core/graph/graph.js +180 -0
  40. package/dist/core/code/engine/core/graph/import-cycles.js +106 -0
  41. package/dist/core/code/engine/core/graph/types.js +2 -0
  42. package/dist/core/code/engine/core/index-freshness.js +12 -0
  43. package/dist/core/code/engine/core/ingestion/binding-accumulator.js +341 -0
  44. package/dist/core/code/engine/core/ingestion/call-extractors/configs/c-cpp.js +168 -0
  45. package/dist/core/code/engine/core/ingestion/call-extractors/configs/csharp.js +9 -0
  46. package/dist/core/code/engine/core/ingestion/call-extractors/configs/dart.js +8 -0
  47. package/dist/core/code/engine/core/ingestion/call-extractors/configs/go.js +8 -0
  48. package/dist/core/code/engine/core/ingestion/call-extractors/configs/jvm.js +54 -0
  49. package/dist/core/code/engine/core/ingestion/call-extractors/configs/php.js +8 -0
  50. package/dist/core/code/engine/core/ingestion/call-extractors/configs/python.js +8 -0
  51. package/dist/core/code/engine/core/ingestion/call-extractors/configs/ruby.js +8 -0
  52. package/dist/core/code/engine/core/ingestion/call-extractors/configs/rust.js +8 -0
  53. package/dist/core/code/engine/core/ingestion/call-extractors/configs/swift.js +8 -0
  54. package/dist/core/code/engine/core/ingestion/call-extractors/configs/typescript-javascript.js +11 -0
  55. package/dist/core/code/engine/core/ingestion/call-extractors/generic.js +62 -0
  56. package/dist/core/code/engine/core/ingestion/call-processor.js +503 -0
  57. package/dist/core/code/engine/core/ingestion/call-routing.js +98 -0
  58. package/dist/core/code/engine/core/ingestion/call-types.js +3 -0
  59. package/dist/core/code/engine/core/ingestion/cfg/callee-cell-format.js +45 -0
  60. package/dist/core/code/engine/core/ingestion/cfg/cfg-builder.js +202 -0
  61. package/dist/core/code/engine/core/ingestion/cfg/collect.js +81 -0
  62. package/dist/core/code/engine/core/ingestion/cfg/control-dependence.js +185 -0
  63. package/dist/core/code/engine/core/ingestion/cfg/control-flow-context.js +130 -0
  64. package/dist/core/code/engine/core/ingestion/cfg/emit.js +646 -0
  65. package/dist/core/code/engine/core/ingestion/cfg/post-dominators.js +182 -0
  66. package/dist/core/code/engine/core/ingestion/cfg/reaching-def-reason-codec.js +139 -0
  67. package/dist/core/code/engine/core/ingestion/cfg/reaching-defs-graph.js +322 -0
  68. package/dist/core/code/engine/core/ingestion/cfg/reaching-defs.js +792 -0
  69. package/dist/core/code/engine/core/ingestion/cfg/synthetic-escape.js +305 -0
  70. package/dist/core/code/engine/core/ingestion/cfg/traversal-result.js +6 -0
  71. package/dist/core/code/engine/core/ingestion/cfg/types.js +14 -0
  72. package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp-harvest.js +545 -0
  73. package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp.js +590 -0
  74. package/dist/core/code/engine/core/ingestion/cfg/visitors/call-site-harvest.js +356 -0
  75. package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp-harvest.js +593 -0
  76. package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp.js +871 -0
  77. package/dist/core/code/engine/core/ingestion/cfg/visitors/dart-harvest.js +874 -0
  78. package/dist/core/code/engine/core/ingestion/cfg/visitors/dart.js +840 -0
  79. package/dist/core/code/engine/core/ingestion/cfg/visitors/go-harvest.js +625 -0
  80. package/dist/core/code/engine/core/ingestion/cfg/visitors/go.js +642 -0
  81. package/dist/core/code/engine/core/ingestion/cfg/visitors/java-harvest.js +517 -0
  82. package/dist/core/code/engine/core/ingestion/cfg/visitors/java.js +816 -0
  83. package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin-harvest.js +723 -0
  84. package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin.js +813 -0
  85. package/dist/core/code/engine/core/ingestion/cfg/visitors/php-harvest.js +630 -0
  86. package/dist/core/code/engine/core/ingestion/cfg/visitors/php.js +725 -0
  87. package/dist/core/code/engine/core/ingestion/cfg/visitors/python-harvest.js +776 -0
  88. package/dist/core/code/engine/core/ingestion/cfg/visitors/python.js +562 -0
  89. package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby-harvest.js +591 -0
  90. package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby.js +760 -0
  91. package/dist/core/code/engine/core/ingestion/cfg/visitors/rust-harvest.js +877 -0
  92. package/dist/core/code/engine/core/ingestion/cfg/visitors/rust.js +562 -0
  93. package/dist/core/code/engine/core/ingestion/cfg/visitors/scope-tree-harvest.js +120 -0
  94. package/dist/core/code/engine/core/ingestion/cfg/visitors/swift-harvest.js +683 -0
  95. package/dist/core/code/engine/core/ingestion/cfg/visitors/swift.js +791 -0
  96. package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript-harvest.js +1060 -0
  97. package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript.js +587 -0
  98. package/dist/core/code/engine/core/ingestion/class-extractors/configs/c-cpp.js +77 -0
  99. package/dist/core/code/engine/core/ingestion/class-extractors/configs/csharp.js +24 -0
  100. package/dist/core/code/engine/core/ingestion/class-extractors/configs/dart.js +10 -0
  101. package/dist/core/code/engine/core/ingestion/class-extractors/configs/go.js +28 -0
  102. package/dist/core/code/engine/core/ingestion/class-extractors/configs/jvm.js +67 -0
  103. package/dist/core/code/engine/core/ingestion/class-extractors/configs/php.js +10 -0
  104. package/dist/core/code/engine/core/ingestion/class-extractors/configs/python.js +10 -0
  105. package/dist/core/code/engine/core/ingestion/class-extractors/configs/ruby.js +13 -0
  106. package/dist/core/code/engine/core/ingestion/class-extractors/configs/rust.js +10 -0
  107. package/dist/core/code/engine/core/ingestion/class-extractors/configs/swift.js +21 -0
  108. package/dist/core/code/engine/core/ingestion/class-extractors/configs/typescript-javascript.js +31 -0
  109. package/dist/core/code/engine/core/ingestion/class-extractors/generic.js +144 -0
  110. package/dist/core/code/engine/core/ingestion/class-types.js +2 -0
  111. package/dist/core/code/engine/core/ingestion/cluster-enricher.js +174 -0
  112. package/dist/core/code/engine/core/ingestion/community-processor.js +604 -0
  113. package/dist/core/code/engine/core/ingestion/constants.js +26 -0
  114. package/dist/core/code/engine/core/ingestion/cpp-ue-preprocessor.js +263 -0
  115. package/dist/core/code/engine/core/ingestion/csharp-namespace-gate.js +133 -0
  116. package/dist/core/code/engine/core/ingestion/di-extractors/index.js +38 -0
  117. package/dist/core/code/engine/core/ingestion/di-extractors/spring.js +310 -0
  118. package/dist/core/code/engine/core/ingestion/emit-references.js +244 -0
  119. package/dist/core/code/engine/core/ingestion/entry-point-scoring.js +201 -0
  120. package/dist/core/code/engine/core/ingestion/export-detection.js +244 -0
  121. package/dist/core/code/engine/core/ingestion/field-extractor.js +29 -0
  122. package/dist/core/code/engine/core/ingestion/field-extractors/configs/c-cpp.js +107 -0
  123. package/dist/core/code/engine/core/ingestion/field-extractors/configs/csharp.js +124 -0
  124. package/dist/core/code/engine/core/ingestion/field-extractors/configs/dart.js +99 -0
  125. package/dist/core/code/engine/core/ingestion/field-extractors/configs/go.js +102 -0
  126. package/dist/core/code/engine/core/ingestion/field-extractors/configs/helpers.js +198 -0
  127. package/dist/core/code/engine/core/ingestion/field-extractors/configs/jvm.js +172 -0
  128. package/dist/core/code/engine/core/ingestion/field-extractors/configs/php.js +67 -0
  129. package/dist/core/code/engine/core/ingestion/field-extractors/configs/python.js +94 -0
  130. package/dist/core/code/engine/core/ingestion/field-extractors/configs/ruby.js +79 -0
  131. package/dist/core/code/engine/core/ingestion/field-extractors/configs/rust.js +55 -0
  132. package/dist/core/code/engine/core/ingestion/field-extractors/configs/swift.js +93 -0
  133. package/dist/core/code/engine/core/ingestion/field-extractors/configs/typescript-javascript.js +59 -0
  134. package/dist/core/code/engine/core/ingestion/field-extractors/generic.js +147 -0
  135. package/dist/core/code/engine/core/ingestion/field-extractors/typescript.js +266 -0
  136. package/dist/core/code/engine/core/ingestion/field-types.js +3 -0
  137. package/dist/core/code/engine/core/ingestion/filesystem-walker.js +136 -0
  138. package/dist/core/code/engine/core/ingestion/finalize-orchestrator.js +159 -0
  139. package/dist/core/code/engine/core/ingestion/framework-detection.js +432 -0
  140. package/dist/core/code/engine/core/ingestion/frameworks/spring/analysis-features.js +38 -0
  141. package/dist/core/code/engine/core/ingestion/frameworks/spring/annotation-arguments.js +234 -0
  142. package/dist/core/code/engine/core/ingestion/frameworks/spring/aop-candidates.js +88 -0
  143. package/dist/core/code/engine/core/ingestion/frameworks/spring/aop.js +487 -0
  144. package/dist/core/code/engine/core/ingestion/frameworks/spring/auto-configuration.js +21 -0
  145. package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-candidates.js +189 -0
  146. package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-catalog.js +32 -0
  147. package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-factories.js +73 -0
  148. package/dist/core/code/engine/core/ingestion/frameworks/spring/conditionals.js +323 -0
  149. package/dist/core/code/engine/core/ingestion/frameworks/spring/config-bindings.js +119 -0
  150. package/dist/core/code/engine/core/ingestion/frameworks/spring/di-metadata.js +385 -0
  151. package/dist/core/code/engine/core/ingestion/frameworks/spring/resource-injection.js +96 -0
  152. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/c-cpp.js +17 -0
  153. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/csharp.js +46 -0
  154. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/dart.js +59 -0
  155. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/go.js +30 -0
  156. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/jvm.js +73 -0
  157. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/php.js +19 -0
  158. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/python.js +45 -0
  159. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/ruby.js +20 -0
  160. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/rust.js +58 -0
  161. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/swift.js +94 -0
  162. package/dist/core/code/engine/core/ingestion/import-resolvers/configs/typescript-javascript.js +26 -0
  163. package/dist/core/code/engine/core/ingestion/import-resolvers/csharp.js +128 -0
  164. package/dist/core/code/engine/core/ingestion/import-resolvers/go.js +50 -0
  165. package/dist/core/code/engine/core/ingestion/import-resolvers/jvm.js +112 -0
  166. package/dist/core/code/engine/core/ingestion/import-resolvers/php.js +80 -0
  167. package/dist/core/code/engine/core/ingestion/import-resolvers/python.js +75 -0
  168. package/dist/core/code/engine/core/ingestion/import-resolvers/resolver-factory.js +36 -0
  169. package/dist/core/code/engine/core/ingestion/import-resolvers/ruby.js +20 -0
  170. package/dist/core/code/engine/core/ingestion/import-resolvers/rust.js +79 -0
  171. package/dist/core/code/engine/core/ingestion/import-resolvers/standard.js +180 -0
  172. package/dist/core/code/engine/core/ingestion/import-resolvers/types.js +7 -0
  173. package/dist/core/code/engine/core/ingestion/import-resolvers/utils.js +153 -0
  174. package/dist/core/code/engine/core/ingestion/import-target-adapter.js +99 -0
  175. package/dist/core/code/engine/core/ingestion/language-config.js +391 -0
  176. package/dist/core/code/engine/core/ingestion/language-provider.js +25 -0
  177. package/dist/core/code/engine/core/ingestion/languages/c/arity-metadata.js +98 -0
  178. package/dist/core/code/engine/core/ingestion/languages/c/arity.js +21 -0
  179. package/dist/core/code/engine/core/ingestion/languages/c/capture-side-channel.js +69 -0
  180. package/dist/core/code/engine/core/ingestion/languages/c/captures.js +189 -0
  181. package/dist/core/code/engine/core/ingestion/languages/c/header-scan.js +58 -0
  182. package/dist/core/code/engine/core/ingestion/languages/c/import-decomposer.js +68 -0
  183. package/dist/core/code/engine/core/ingestion/languages/c/import-target.js +103 -0
  184. package/dist/core/code/engine/core/ingestion/languages/c/index.js +33 -0
  185. package/dist/core/code/engine/core/ingestion/languages/c/interpret.js +53 -0
  186. package/dist/core/code/engine/core/ingestion/languages/c/merge-bindings.js +26 -0
  187. package/dist/core/code/engine/core/ingestion/languages/c/query.js +210 -0
  188. package/dist/core/code/engine/core/ingestion/languages/c/scope-resolver.js +112 -0
  189. package/dist/core/code/engine/core/ingestion/languages/c/simple-hooks.js +24 -0
  190. package/dist/core/code/engine/core/ingestion/languages/c/static-linkage.js +109 -0
  191. package/dist/core/code/engine/core/ingestion/languages/c-cpp.js +506 -0
  192. package/dist/core/code/engine/core/ingestion/languages/cpp/adl.js +804 -0
  193. package/dist/core/code/engine/core/ingestion/languages/cpp/arity-metadata.js +258 -0
  194. package/dist/core/code/engine/core/ingestion/languages/cpp/arity.js +37 -0
  195. package/dist/core/code/engine/core/ingestion/languages/cpp/capture-side-channel.js +89 -0
  196. package/dist/core/code/engine/core/ingestion/languages/cpp/captures.js +1975 -0
  197. package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-extractor.js +311 -0
  198. package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-filter.js +210 -0
  199. package/dist/core/code/engine/core/ingestion/languages/cpp/conversion-rank.js +163 -0
  200. package/dist/core/code/engine/core/ingestion/languages/cpp/file-local-linkage.js +327 -0
  201. package/dist/core/code/engine/core/ingestion/languages/cpp/header-scan.js +53 -0
  202. package/dist/core/code/engine/core/ingestion/languages/cpp/import-decomposer.js +134 -0
  203. package/dist/core/code/engine/core/ingestion/languages/cpp/import-target.js +16 -0
  204. package/dist/core/code/engine/core/ingestion/languages/cpp/index.js +33 -0
  205. package/dist/core/code/engine/core/ingestion/languages/cpp/inline-namespaces.js +379 -0
  206. package/dist/core/code/engine/core/ingestion/languages/cpp/interpret.js +239 -0
  207. package/dist/core/code/engine/core/ingestion/languages/cpp/member-lookup.js +470 -0
  208. package/dist/core/code/engine/core/ingestion/languages/cpp/merge-bindings.js +32 -0
  209. package/dist/core/code/engine/core/ingestion/languages/cpp/query.js +763 -0
  210. package/dist/core/code/engine/core/ingestion/languages/cpp/range-bindings.js +230 -0
  211. package/dist/core/code/engine/core/ingestion/languages/cpp/scope-resolver.js +354 -0
  212. package/dist/core/code/engine/core/ingestion/languages/cpp/simple-hooks.js +67 -0
  213. package/dist/core/code/engine/core/ingestion/languages/cpp/two-phase-lookup.js +348 -0
  214. package/dist/core/code/engine/core/ingestion/languages/cpp/type-classifier.js +56 -0
  215. package/dist/core/code/engine/core/ingestion/languages/cpp/user-defined-conversions.js +128 -0
  216. package/dist/core/code/engine/core/ingestion/languages/csharp/accessor-unwrap.js +67 -0
  217. package/dist/core/code/engine/core/ingestion/languages/csharp/arity-metadata.js +49 -0
  218. package/dist/core/code/engine/core/ingestion/languages/csharp/arity.js +40 -0
  219. package/dist/core/code/engine/core/ingestion/languages/csharp/cache-stats.js +32 -0
  220. package/dist/core/code/engine/core/ingestion/languages/csharp/captures.js +557 -0
  221. package/dist/core/code/engine/core/ingestion/languages/csharp/import-decomposer.js +96 -0
  222. package/dist/core/code/engine/core/ingestion/languages/csharp/import-target.js +176 -0
  223. package/dist/core/code/engine/core/ingestion/languages/csharp/index.js +95 -0
  224. package/dist/core/code/engine/core/ingestion/languages/csharp/interpret.js +150 -0
  225. package/dist/core/code/engine/core/ingestion/languages/csharp/merge-bindings.js +58 -0
  226. package/dist/core/code/engine/core/ingestion/languages/csharp/namespace-siblings.js +708 -0
  227. package/dist/core/code/engine/core/ingestion/languages/csharp/qualified-type-names.js +62 -0
  228. package/dist/core/code/engine/core/ingestion/languages/csharp/query.js +578 -0
  229. package/dist/core/code/engine/core/ingestion/languages/csharp/receiver-binding.js +142 -0
  230. package/dist/core/code/engine/core/ingestion/languages/csharp/resolution-config.js +18 -0
  231. package/dist/core/code/engine/core/ingestion/languages/csharp/scope-resolver.js +84 -0
  232. package/dist/core/code/engine/core/ingestion/languages/csharp/simple-hooks.js +81 -0
  233. package/dist/core/code/engine/core/ingestion/languages/csharp.js +204 -0
  234. package/dist/core/code/engine/core/ingestion/languages/dart/arity-metadata.js +38 -0
  235. package/dist/core/code/engine/core/ingestion/languages/dart/arity.js +34 -0
  236. package/dist/core/code/engine/core/ingestion/languages/dart/built-ins.js +37 -0
  237. package/dist/core/code/engine/core/ingestion/languages/dart/cache-stats.js +30 -0
  238. package/dist/core/code/engine/core/ingestion/languages/dart/captures.js +1096 -0
  239. package/dist/core/code/engine/core/ingestion/languages/dart/expand-wildcards.js +34 -0
  240. package/dist/core/code/engine/core/ingestion/languages/dart/extension-type-preprocess.js +33 -0
  241. package/dist/core/code/engine/core/ingestion/languages/dart/import-target.js +68 -0
  242. package/dist/core/code/engine/core/ingestion/languages/dart/index.js +45 -0
  243. package/dist/core/code/engine/core/ingestion/languages/dart/interpret.js +101 -0
  244. package/dist/core/code/engine/core/ingestion/languages/dart/merge-bindings.js +42 -0
  245. package/dist/core/code/engine/core/ingestion/languages/dart/query.js +246 -0
  246. package/dist/core/code/engine/core/ingestion/languages/dart/receiver-binding.js +90 -0
  247. package/dist/core/code/engine/core/ingestion/languages/dart/scope-resolver.js +197 -0
  248. package/dist/core/code/engine/core/ingestion/languages/dart/signature-bindings.js +54 -0
  249. package/dist/core/code/engine/core/ingestion/languages/dart/simple-hooks.js +61 -0
  250. package/dist/core/code/engine/core/ingestion/languages/dart.js +138 -0
  251. package/dist/core/code/engine/core/ingestion/languages/go/arity-metadata.js +71 -0
  252. package/dist/core/code/engine/core/ingestion/languages/go/arity.js +17 -0
  253. package/dist/core/code/engine/core/ingestion/languages/go/cache-stats.js +21 -0
  254. package/dist/core/code/engine/core/ingestion/languages/go/captures.js +492 -0
  255. package/dist/core/code/engine/core/ingestion/languages/go/expand-wildcards.js +97 -0
  256. package/dist/core/code/engine/core/ingestion/languages/go/generic-type-parameters.js +146 -0
  257. package/dist/core/code/engine/core/ingestion/languages/go/import-decomposer.js +47 -0
  258. package/dist/core/code/engine/core/ingestion/languages/go/import-target.js +70 -0
  259. package/dist/core/code/engine/core/ingestion/languages/go/index.js +39 -0
  260. package/dist/core/code/engine/core/ingestion/languages/go/interface-impls.js +955 -0
  261. package/dist/core/code/engine/core/ingestion/languages/go/interpret.js +177 -0
  262. package/dist/core/code/engine/core/ingestion/languages/go/merge-bindings.js +21 -0
  263. package/dist/core/code/engine/core/ingestion/languages/go/method-owners.js +131 -0
  264. package/dist/core/code/engine/core/ingestion/languages/go/namespace-mirror.js +56 -0
  265. package/dist/core/code/engine/core/ingestion/languages/go/package-clause.js +79 -0
  266. package/dist/core/code/engine/core/ingestion/languages/go/package-siblings.js +83 -0
  267. package/dist/core/code/engine/core/ingestion/languages/go/query.js +298 -0
  268. package/dist/core/code/engine/core/ingestion/languages/go/range-binding.js +127 -0
  269. package/dist/core/code/engine/core/ingestion/languages/go/receiver-binding.js +24 -0
  270. package/dist/core/code/engine/core/ingestion/languages/go/scope-resolver.js +75 -0
  271. package/dist/core/code/engine/core/ingestion/languages/go/simple-hooks.js +31 -0
  272. package/dist/core/code/engine/core/ingestion/languages/go/type-binding.js +279 -0
  273. package/dist/core/code/engine/core/ingestion/languages/go.js +160 -0
  274. package/dist/core/code/engine/core/ingestion/languages/index.js +66 -0
  275. package/dist/core/code/engine/core/ingestion/languages/java/analysis-features.js +16 -0
  276. package/dist/core/code/engine/core/ingestion/languages/java/arity-metadata.js +43 -0
  277. package/dist/core/code/engine/core/ingestion/languages/java/arity.js +27 -0
  278. package/dist/core/code/engine/core/ingestion/languages/java/cache-stats.js +32 -0
  279. package/dist/core/code/engine/core/ingestion/languages/java/capture-side-channel.js +123 -0
  280. package/dist/core/code/engine/core/ingestion/languages/java/captures.js +791 -0
  281. package/dist/core/code/engine/core/ingestion/languages/java/import-decomposer.js +88 -0
  282. package/dist/core/code/engine/core/ingestion/languages/java/import-target.js +103 -0
  283. package/dist/core/code/engine/core/ingestion/languages/java/index.js +43 -0
  284. package/dist/core/code/engine/core/ingestion/languages/java/interpret.js +146 -0
  285. package/dist/core/code/engine/core/ingestion/languages/java/merge-bindings.js +43 -0
  286. package/dist/core/code/engine/core/ingestion/languages/java/package-facts.js +16 -0
  287. package/dist/core/code/engine/core/ingestion/languages/java/package-siblings.js +11 -0
  288. package/dist/core/code/engine/core/ingestion/languages/java/query.js +319 -0
  289. package/dist/core/code/engine/core/ingestion/languages/java/receiver-binding.js +98 -0
  290. package/dist/core/code/engine/core/ingestion/languages/java/scope-resolver.js +213 -0
  291. package/dist/core/code/engine/core/ingestion/languages/java/simple-hooks.js +39 -0
  292. package/dist/core/code/engine/core/ingestion/languages/java/spring-aop.js +53 -0
  293. package/dist/core/code/engine/core/ingestion/languages/java/spring-bean-metadata.js +11 -0
  294. package/dist/core/code/engine/core/ingestion/languages/java/spring-conditionals.js +52 -0
  295. package/dist/core/code/engine/core/ingestion/languages/java/spring-config-bindings.js +222 -0
  296. package/dist/core/code/engine/core/ingestion/languages/java/spring-di.js +165 -0
  297. package/dist/core/code/engine/core/ingestion/languages/java.js +192 -0
  298. package/dist/core/code/engine/core/ingestion/languages/javascript/arity.js +15 -0
  299. package/dist/core/code/engine/core/ingestion/languages/javascript/captures.js +1122 -0
  300. package/dist/core/code/engine/core/ingestion/languages/javascript/import-target.js +56 -0
  301. package/dist/core/code/engine/core/ingestion/languages/javascript/index.js +109 -0
  302. package/dist/core/code/engine/core/ingestion/languages/javascript/interpret.js +45 -0
  303. package/dist/core/code/engine/core/ingestion/languages/javascript/merge-bindings.js +21 -0
  304. package/dist/core/code/engine/core/ingestion/languages/javascript/query.js +659 -0
  305. package/dist/core/code/engine/core/ingestion/languages/javascript/scope-resolver.js +78 -0
  306. package/dist/core/code/engine/core/ingestion/languages/javascript/simple-hooks.js +44 -0
  307. package/dist/core/code/engine/core/ingestion/languages/jvm/package-facts.js +46 -0
  308. package/dist/core/code/engine/core/ingestion/languages/jvm/package-siblings.js +200 -0
  309. package/dist/core/code/engine/core/ingestion/languages/kotlin/arity-metadata.js +23 -0
  310. package/dist/core/code/engine/core/ingestion/languages/kotlin/arity.js +18 -0
  311. package/dist/core/code/engine/core/ingestion/languages/kotlin/cache-stats.js +21 -0
  312. package/dist/core/code/engine/core/ingestion/languages/kotlin/capture-side-channel.js +160 -0
  313. package/dist/core/code/engine/core/ingestion/languages/kotlin/captures.js +1262 -0
  314. package/dist/core/code/engine/core/ingestion/languages/kotlin/companion-scopes.js +72 -0
  315. package/dist/core/code/engine/core/ingestion/languages/kotlin/import-decomposer.js +40 -0
  316. package/dist/core/code/engine/core/ingestion/languages/kotlin/import-target.js +135 -0
  317. package/dist/core/code/engine/core/ingestion/languages/kotlin/index.js +26 -0
  318. package/dist/core/code/engine/core/ingestion/languages/kotlin/interpret.js +75 -0
  319. package/dist/core/code/engine/core/ingestion/languages/kotlin/merge-bindings.js +28 -0
  320. package/dist/core/code/engine/core/ingestion/languages/kotlin/owners.js +134 -0
  321. package/dist/core/code/engine/core/ingestion/languages/kotlin/package-facts.js +16 -0
  322. package/dist/core/code/engine/core/ingestion/languages/kotlin/package-siblings.js +11 -0
  323. package/dist/core/code/engine/core/ingestion/languages/kotlin/query.js +243 -0
  324. package/dist/core/code/engine/core/ingestion/languages/kotlin/receiver-binding.js +103 -0
  325. package/dist/core/code/engine/core/ingestion/languages/kotlin/scope-resolver.js +207 -0
  326. package/dist/core/code/engine/core/ingestion/languages/kotlin/simple-hooks.js +42 -0
  327. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-aop.js +68 -0
  328. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-bean-metadata.js +11 -0
  329. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-conditionals.js +53 -0
  330. package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-di.js +304 -0
  331. package/dist/core/code/engine/core/ingestion/languages/kotlin.js +189 -0
  332. package/dist/core/code/engine/core/ingestion/languages/php/arity-metadata.js +66 -0
  333. package/dist/core/code/engine/core/ingestion/languages/php/arity.js +43 -0
  334. package/dist/core/code/engine/core/ingestion/languages/php/cache-stats.js +32 -0
  335. package/dist/core/code/engine/core/ingestion/languages/php/captures.js +1166 -0
  336. package/dist/core/code/engine/core/ingestion/languages/php/import-decomposer.js +238 -0
  337. package/dist/core/code/engine/core/ingestion/languages/php/import-target.js +213 -0
  338. package/dist/core/code/engine/core/ingestion/languages/php/index.js +85 -0
  339. package/dist/core/code/engine/core/ingestion/languages/php/interpret.js +256 -0
  340. package/dist/core/code/engine/core/ingestion/languages/php/merge-bindings.js +50 -0
  341. package/dist/core/code/engine/core/ingestion/languages/php/namespace-siblings.js +353 -0
  342. package/dist/core/code/engine/core/ingestion/languages/php/query.js +391 -0
  343. package/dist/core/code/engine/core/ingestion/languages/php/receiver-binding.js +135 -0
  344. package/dist/core/code/engine/core/ingestion/languages/php/scope-resolver.js +361 -0
  345. package/dist/core/code/engine/core/ingestion/languages/php/simple-hooks.js +116 -0
  346. package/dist/core/code/engine/core/ingestion/languages/php.js +302 -0
  347. package/dist/core/code/engine/core/ingestion/languages/python/arity-metadata.js +49 -0
  348. package/dist/core/code/engine/core/ingestion/languages/python/arity.js +41 -0
  349. package/dist/core/code/engine/core/ingestion/languages/python/cache-stats.js +34 -0
  350. package/dist/core/code/engine/core/ingestion/languages/python/captures.js +299 -0
  351. package/dist/core/code/engine/core/ingestion/languages/python/depends-references.js +68 -0
  352. package/dist/core/code/engine/core/ingestion/languages/python/import-decomposer.js +115 -0
  353. package/dist/core/code/engine/core/ingestion/languages/python/import-target.js +440 -0
  354. package/dist/core/code/engine/core/ingestion/languages/python/index-stats.js +30 -0
  355. package/dist/core/code/engine/core/ingestion/languages/python/index.js +96 -0
  356. package/dist/core/code/engine/core/ingestion/languages/python/interpret.js +430 -0
  357. package/dist/core/code/engine/core/ingestion/languages/python/merge-bindings.js +47 -0
  358. package/dist/core/code/engine/core/ingestion/languages/python/query.js +323 -0
  359. package/dist/core/code/engine/core/ingestion/languages/python/receiver-binding.js +310 -0
  360. package/dist/core/code/engine/core/ingestion/languages/python/scope-resolver.js +80 -0
  361. package/dist/core/code/engine/core/ingestion/languages/python/simple-hooks.js +53 -0
  362. package/dist/core/code/engine/core/ingestion/languages/python.js +140 -0
  363. package/dist/core/code/engine/core/ingestion/languages/ruby/arity.js +41 -0
  364. package/dist/core/code/engine/core/ingestion/languages/ruby/cache-stats.js +21 -0
  365. package/dist/core/code/engine/core/ingestion/languages/ruby/captures.js +864 -0
  366. package/dist/core/code/engine/core/ingestion/languages/ruby/import-target.js +88 -0
  367. package/dist/core/code/engine/core/ingestion/languages/ruby/index.js +29 -0
  368. package/dist/core/code/engine/core/ingestion/languages/ruby/interpret.js +115 -0
  369. package/dist/core/code/engine/core/ingestion/languages/ruby/merge-bindings.js +21 -0
  370. package/dist/core/code/engine/core/ingestion/languages/ruby/query.js +349 -0
  371. package/dist/core/code/engine/core/ingestion/languages/ruby/receiver-binding.js +70 -0
  372. package/dist/core/code/engine/core/ingestion/languages/ruby/scope-resolver.js +263 -0
  373. package/dist/core/code/engine/core/ingestion/languages/ruby/simple-hooks.js +68 -0
  374. package/dist/core/code/engine/core/ingestion/languages/ruby.js +215 -0
  375. package/dist/core/code/engine/core/ingestion/languages/rust/arity.js +16 -0
  376. package/dist/core/code/engine/core/ingestion/languages/rust/cache-stats.js +21 -0
  377. package/dist/core/code/engine/core/ingestion/languages/rust/captures.js +304 -0
  378. package/dist/core/code/engine/core/ingestion/languages/rust/import-decomposer.js +167 -0
  379. package/dist/core/code/engine/core/ingestion/languages/rust/import-target.js +108 -0
  380. package/dist/core/code/engine/core/ingestion/languages/rust/index.js +29 -0
  381. package/dist/core/code/engine/core/ingestion/languages/rust/interpret.js +201 -0
  382. package/dist/core/code/engine/core/ingestion/languages/rust/merge-bindings.js +21 -0
  383. package/dist/core/code/engine/core/ingestion/languages/rust/method-owners.js +76 -0
  384. package/dist/core/code/engine/core/ingestion/languages/rust/module-path.js +222 -0
  385. package/dist/core/code/engine/core/ingestion/languages/rust/qualified-call.js +482 -0
  386. package/dist/core/code/engine/core/ingestion/languages/rust/query.js +280 -0
  387. package/dist/core/code/engine/core/ingestion/languages/rust/range-binding.js +687 -0
  388. package/dist/core/code/engine/core/ingestion/languages/rust/receiver-binding.js +148 -0
  389. package/dist/core/code/engine/core/ingestion/languages/rust/scope-resolver.js +151 -0
  390. package/dist/core/code/engine/core/ingestion/languages/rust/simple-hooks.js +32 -0
  391. package/dist/core/code/engine/core/ingestion/languages/rust.js +183 -0
  392. package/dist/core/code/engine/core/ingestion/languages/swift/arity-metadata.js +44 -0
  393. package/dist/core/code/engine/core/ingestion/languages/swift/arity.js +45 -0
  394. package/dist/core/code/engine/core/ingestion/languages/swift/base-type.js +30 -0
  395. package/dist/core/code/engine/core/ingestion/languages/swift/cache-stats.js +32 -0
  396. package/dist/core/code/engine/core/ingestion/languages/swift/captures.js +594 -0
  397. package/dist/core/code/engine/core/ingestion/languages/swift/conditional-directive-preprocess.js +256 -0
  398. package/dist/core/code/engine/core/ingestion/languages/swift/implicit-imports.js +60 -0
  399. package/dist/core/code/engine/core/ingestion/languages/swift/import-decomposer.js +87 -0
  400. package/dist/core/code/engine/core/ingestion/languages/swift/import-target.js +84 -0
  401. package/dist/core/code/engine/core/ingestion/languages/swift/index.js +56 -0
  402. package/dist/core/code/engine/core/ingestion/languages/swift/interpret.js +93 -0
  403. package/dist/core/code/engine/core/ingestion/languages/swift/merge-bindings.js +51 -0
  404. package/dist/core/code/engine/core/ingestion/languages/swift/query.js +226 -0
  405. package/dist/core/code/engine/core/ingestion/languages/swift/receiver-binding.js +169 -0
  406. package/dist/core/code/engine/core/ingestion/languages/swift/scope-resolver.js +192 -0
  407. package/dist/core/code/engine/core/ingestion/languages/swift/sibling-type-bindings.js +68 -0
  408. package/dist/core/code/engine/core/ingestion/languages/swift/signature-bindings.js +69 -0
  409. package/dist/core/code/engine/core/ingestion/languages/swift/simple-hooks.js +65 -0
  410. package/dist/core/code/engine/core/ingestion/languages/swift/target-grouping.js +97 -0
  411. package/dist/core/code/engine/core/ingestion/languages/swift/target-siblings.js +74 -0
  412. package/dist/core/code/engine/core/ingestion/languages/swift.js +246 -0
  413. package/dist/core/code/engine/core/ingestion/languages/typescript/arity-metadata.js +106 -0
  414. package/dist/core/code/engine/core/ingestion/languages/typescript/arity.js +57 -0
  415. package/dist/core/code/engine/core/ingestion/languages/typescript/array-callback.js +58 -0
  416. package/dist/core/code/engine/core/ingestion/languages/typescript/cache-stats.js +34 -0
  417. package/dist/core/code/engine/core/ingestion/languages/typescript/captures.js +956 -0
  418. package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-export-assignment.js +535 -0
  419. package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-module-exports.js +196 -0
  420. package/dist/core/code/engine/core/ingestion/languages/typescript/import-decomposer.js +374 -0
  421. package/dist/core/code/engine/core/ingestion/languages/typescript/import-target.js +65 -0
  422. package/dist/core/code/engine/core/ingestion/languages/typescript/index.js +108 -0
  423. package/dist/core/code/engine/core/ingestion/languages/typescript/interpret.js +344 -0
  424. package/dist/core/code/engine/core/ingestion/languages/typescript/merge-bindings.js +161 -0
  425. package/dist/core/code/engine/core/ingestion/languages/typescript/nuxt-auto-imports.js +325 -0
  426. package/dist/core/code/engine/core/ingestion/languages/typescript/query.js +1328 -0
  427. package/dist/core/code/engine/core/ingestion/languages/typescript/receiver-binding.js +201 -0
  428. package/dist/core/code/engine/core/ingestion/languages/typescript/scope-resolver.js +293 -0
  429. package/dist/core/code/engine/core/ingestion/languages/typescript/simple-hooks.js +139 -0
  430. package/dist/core/code/engine/core/ingestion/languages/typescript.js +455 -0
  431. package/dist/core/code/engine/core/ingestion/languages/vue/captures.js +70 -0
  432. package/dist/core/code/engine/core/ingestion/languages/vue/import-target.js +61 -0
  433. package/dist/core/code/engine/core/ingestion/languages/vue/index.js +55 -0
  434. package/dist/core/code/engine/core/ingestion/languages/vue/scope-resolver.js +295 -0
  435. package/dist/core/code/engine/core/ingestion/languages/vue.js +96 -0
  436. package/dist/core/code/engine/core/ingestion/local-symbol-pruner.js +68 -0
  437. package/dist/core/code/engine/core/ingestion/method-extractors/configs/c-cpp.js +387 -0
  438. package/dist/core/code/engine/core/ingestion/method-extractors/configs/csharp.js +290 -0
  439. package/dist/core/code/engine/core/ingestion/method-extractors/configs/dart.js +392 -0
  440. package/dist/core/code/engine/core/ingestion/method-extractors/configs/go.js +179 -0
  441. package/dist/core/code/engine/core/ingestion/method-extractors/configs/jvm.js +350 -0
  442. package/dist/core/code/engine/core/ingestion/method-extractors/configs/php.js +306 -0
  443. package/dist/core/code/engine/core/ingestion/method-extractors/configs/python.js +312 -0
  444. package/dist/core/code/engine/core/ingestion/method-extractors/configs/ruby.js +289 -0
  445. package/dist/core/code/engine/core/ingestion/method-extractors/configs/rust.js +198 -0
  446. package/dist/core/code/engine/core/ingestion/method-extractors/configs/swift.js +286 -0
  447. package/dist/core/code/engine/core/ingestion/method-extractors/configs/typescript-javascript.js +341 -0
  448. package/dist/core/code/engine/core/ingestion/method-extractors/generic.js +209 -0
  449. package/dist/core/code/engine/core/ingestion/method-types.js +3 -0
  450. package/dist/core/code/engine/core/ingestion/model/field-registry.js +41 -0
  451. package/dist/core/code/engine/core/ingestion/model/index.js +52 -0
  452. package/dist/core/code/engine/core/ingestion/model/method-registry.js +138 -0
  453. package/dist/core/code/engine/core/ingestion/model/owned-members-lookup.js +46 -0
  454. package/dist/core/code/engine/core/ingestion/model/registration-table.js +234 -0
  455. package/dist/core/code/engine/core/ingestion/model/resolve.js +183 -0
  456. package/dist/core/code/engine/core/ingestion/model/scope-resolution-indexes.js +43 -0
  457. package/dist/core/code/engine/core/ingestion/model/semantic-model.js +179 -0
  458. package/dist/core/code/engine/core/ingestion/model/symbol-table.js +216 -0
  459. package/dist/core/code/engine/core/ingestion/model/type-registry.js +84 -0
  460. package/dist/core/code/engine/core/ingestion/mro-processor.js +709 -0
  461. package/dist/core/code/engine/core/ingestion/parsing-processor.js +312 -0
  462. package/dist/core/code/engine/core/ingestion/pipeline-phases/communities.js +69 -0
  463. package/dist/core/code/engine/core/ingestion/pipeline-phases/cross-file.js +71 -0
  464. package/dist/core/code/engine/core/ingestion/pipeline-phases/di.js +338 -0
  465. package/dist/core/code/engine/core/ingestion/pipeline-phases/http-api-calls.js +312 -0
  466. package/dist/core/code/engine/core/ingestion/pipeline-phases/index.js +54 -0
  467. package/dist/core/code/engine/core/ingestion/pipeline-phases/mro.js +40 -0
  468. package/dist/core/code/engine/core/ingestion/pipeline-phases/orm.js +78 -0
  469. package/dist/core/code/engine/core/ingestion/pipeline-phases/parse-impl.js +1286 -0
  470. package/dist/core/code/engine/core/ingestion/pipeline-phases/parse.js +41 -0
  471. package/dist/core/code/engine/core/ingestion/pipeline-phases/processes.js +193 -0
  472. package/dist/core/code/engine/core/ingestion/pipeline-phases/prune-local-symbols.js +29 -0
  473. package/dist/core/code/engine/core/ingestion/pipeline-phases/registry.js +52 -0
  474. package/dist/core/code/engine/core/ingestion/pipeline-phases/routes.js +409 -0
  475. package/dist/core/code/engine/core/ingestion/pipeline-phases/rpc-edges.js +301 -0
  476. package/dist/core/code/engine/core/ingestion/pipeline-phases/runner.js +207 -0
  477. package/dist/core/code/engine/core/ingestion/pipeline-phases/scan.js +49 -0
  478. package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-aop.js +442 -0
  479. package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-auto-configuration.js +264 -0
  480. package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-config.js +440 -0
  481. package/dist/core/code/engine/core/ingestion/pipeline-phases/structure.js +38 -0
  482. package/dist/core/code/engine/core/ingestion/pipeline-phases/tools.js +89 -0
  483. package/dist/core/code/engine/core/ingestion/pipeline-phases/types.js +40 -0
  484. package/dist/core/code/engine/core/ingestion/pipeline.js +152 -0
  485. package/dist/core/code/engine/core/ingestion/process-processor.js +325 -0
  486. package/dist/core/code/engine/core/ingestion/resolve-references.js +205 -0
  487. package/dist/core/code/engine/core/ingestion/route-extractors/constant-resolver.js +135 -0
  488. package/dist/core/code/engine/core/ingestion/route-extractors/django-root-discovery.js +221 -0
  489. package/dist/core/code/engine/core/ingestion/route-extractors/django.js +428 -0
  490. package/dist/core/code/engine/core/ingestion/route-extractors/expo.js +39 -0
  491. package/dist/core/code/engine/core/ingestion/route-extractors/fastapi-router-bindings.js +264 -0
  492. package/dist/core/code/engine/core/ingestion/route-extractors/laravel.js +501 -0
  493. package/dist/core/code/engine/core/ingestion/route-extractors/middleware.js +175 -0
  494. package/dist/core/code/engine/core/ingestion/route-extractors/nextjs.js +81 -0
  495. package/dist/core/code/engine/core/ingestion/route-extractors/php.js +25 -0
  496. package/dist/core/code/engine/core/ingestion/route-extractors/python-const-resolver.js +307 -0
  497. package/dist/core/code/engine/core/ingestion/route-extractors/response-shapes.js +299 -0
  498. package/dist/core/code/engine/core/ingestion/route-extractors/route-path.js +71 -0
  499. package/dist/core/code/engine/core/ingestion/route-extractors/spring-shared.js +310 -0
  500. package/dist/core/code/engine/core/ingestion/route-extractors/spring.js +441 -0
  501. package/dist/core/code/engine/core/ingestion/scope-extractor-bridge.js +60 -0
  502. package/dist/core/code/engine/core/ingestion/scope-extractor.js +1373 -0
  503. package/dist/core/code/engine/core/ingestion/scope-resolution/contract/scope-resolver.js +282 -0
  504. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.js +72 -0
  505. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/edges.js +194 -0
  506. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/ids.js +472 -0
  507. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +49 -0
  508. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/method-dispatch.js +43 -0
  509. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +274 -0
  510. package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +93 -0
  511. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/callable-value-flow.js +1240 -0
  512. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/compound-receiver.js +1174 -0
  513. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/free-call-fallback.js +873 -0
  514. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/imported-return-types.js +226 -0
  515. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/mro.js +107 -0
  516. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/overload-narrowing.js +441 -0
  517. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/property-dispatch.js +122 -0
  518. package/dist/core/code/engine/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +1720 -0
  519. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/phase.js +395 -0
  520. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/reconcile-ownership.js +208 -0
  521. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/registry.js +49 -0
  522. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/run.js +632 -0
  523. package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/validate-bindings-immutability.js +112 -0
  524. package/dist/core/code/engine/core/ingestion/scope-resolution/resolution-outcome.js +41 -0
  525. package/dist/core/code/engine/core/ingestion/scope-resolution/scope/namespace-targets.js +81 -0
  526. package/dist/core/code/engine/core/ingestion/scope-resolution/scope/walkers.js +1835 -0
  527. package/dist/core/code/engine/core/ingestion/scope-resolution/unresolved-receivers.js +242 -0
  528. package/dist/core/code/engine/core/ingestion/scope-resolution/utils/definition-id.js +22 -0
  529. package/dist/core/code/engine/core/ingestion/scope-resolution/workspace-index.js +151 -0
  530. package/dist/core/code/engine/core/ingestion/structure-processor.js +40 -0
  531. package/dist/core/code/engine/core/ingestion/tree-sitter-queries.js +2244 -0
  532. package/dist/core/code/engine/core/ingestion/ts-js-hoc-utils.js +115 -0
  533. package/dist/core/code/engine/core/ingestion/type-env.js +1136 -0
  534. package/dist/core/code/engine/core/ingestion/type-extractors/c-cpp.js +555 -0
  535. package/dist/core/code/engine/core/ingestion/type-extractors/csharp.js +570 -0
  536. package/dist/core/code/engine/core/ingestion/type-extractors/dart.js +372 -0
  537. package/dist/core/code/engine/core/ingestion/type-extractors/go.js +508 -0
  538. package/dist/core/code/engine/core/ingestion/type-extractors/jvm.js +875 -0
  539. package/dist/core/code/engine/core/ingestion/type-extractors/php.js +537 -0
  540. package/dist/core/code/engine/core/ingestion/type-extractors/python.js +477 -0
  541. package/dist/core/code/engine/core/ingestion/type-extractors/ruby.js +380 -0
  542. package/dist/core/code/engine/core/ingestion/type-extractors/rust.js +502 -0
  543. package/dist/core/code/engine/core/ingestion/type-extractors/shared.js +843 -0
  544. package/dist/core/code/engine/core/ingestion/type-extractors/swift.js +490 -0
  545. package/dist/core/code/engine/core/ingestion/type-extractors/types.js +2 -0
  546. package/dist/core/code/engine/core/ingestion/type-extractors/typescript.js +690 -0
  547. package/dist/core/code/engine/core/ingestion/utils/ast-helpers.js +1693 -0
  548. package/dist/core/code/engine/core/ingestion/utils/call-analysis.js +779 -0
  549. package/dist/core/code/engine/core/ingestion/utils/callable-flow-captures.js +932 -0
  550. package/dist/core/code/engine/core/ingestion/utils/callable-labels.js +49 -0
  551. package/dist/core/code/engine/core/ingestion/utils/deferred-resolution-profile.js +151 -0
  552. package/dist/core/code/engine/core/ingestion/utils/effective-ram.js +67 -0
  553. package/dist/core/code/engine/core/ingestion/utils/env.js +60 -0
  554. package/dist/core/code/engine/core/ingestion/utils/event-loop.js +9 -0
  555. package/dist/core/code/engine/core/ingestion/utils/graph-sort.js +103 -0
  556. package/dist/core/code/engine/core/ingestion/utils/heap-probe.js +45 -0
  557. package/dist/core/code/engine/core/ingestion/utils/heritage-marker.js +47 -0
  558. package/dist/core/code/engine/core/ingestion/utils/line-base.js +24 -0
  559. package/dist/core/code/engine/core/ingestion/utils/max-file-size.js +59 -0
  560. package/dist/core/code/engine/core/ingestion/utils/method-props.js +198 -0
  561. package/dist/core/code/engine/core/ingestion/utils/qualified-name.js +73 -0
  562. package/dist/core/code/engine/core/ingestion/utils/receiver-chain-captures.js +60 -0
  563. package/dist/core/code/engine/core/ingestion/utils/receiver-chain-codec.js +188 -0
  564. package/dist/core/code/engine/core/ingestion/utils/scope-tree-walk.js +36 -0
  565. package/dist/core/code/engine/core/ingestion/utils/symbol-labels.js +48 -0
  566. package/dist/core/code/engine/core/ingestion/utils/template-arguments.js +187 -0
  567. package/dist/core/code/engine/core/ingestion/utils/type-parameters.js +209 -0
  568. package/dist/core/code/engine/core/ingestion/utils/verbose.js +6 -0
  569. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/c-cpp.js +133 -0
  570. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/csharp.js +66 -0
  571. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/dart.js +111 -0
  572. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/go.js +153 -0
  573. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/jvm.js +145 -0
  574. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/php.js +61 -0
  575. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/python.js +104 -0
  576. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/ruby.js +55 -0
  577. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/rust.js +79 -0
  578. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/swift.js +91 -0
  579. package/dist/core/code/engine/core/ingestion/variable-extractors/configs/typescript-javascript.js +86 -0
  580. package/dist/core/code/engine/core/ingestion/variable-extractors/generic.js +111 -0
  581. package/dist/core/code/engine/core/ingestion/variable-types.js +3 -0
  582. package/dist/core/code/engine/core/ingestion/vue-sfc-extractor.js +544 -0
  583. package/dist/core/code/engine/core/ingestion/workers/callable-id.js +122 -0
  584. package/dist/core/code/engine/core/ingestion/workers/clone-safety.js +470 -0
  585. package/dist/core/code/engine/core/ingestion/workers/parse-worker.js +2456 -0
  586. package/dist/core/code/engine/core/ingestion/workers/post-result.js +90 -0
  587. package/dist/core/code/engine/core/ingestion/workers/quarantine.js +41 -0
  588. package/dist/core/code/engine/core/ingestion/workers/result-merge.js +59 -0
  589. package/dist/core/code/engine/core/ingestion/workers/worker-pool.js +1725 -0
  590. package/dist/core/code/engine/core/ingestion/workspace-config.js +139 -0
  591. package/dist/core/code/engine/core/lbug/conn-lock.js +72 -0
  592. package/dist/core/code/engine/core/lbug/csv-generator.js +710 -0
  593. package/dist/core/code/engine/core/lbug/cypher-escape.js +24 -0
  594. package/dist/core/code/engine/core/lbug/extension-load-error.js +339 -0
  595. package/dist/core/code/engine/core/lbug/extension-loader.js +261 -0
  596. package/dist/core/code/engine/core/lbug/graph-emit-sink.js +584 -0
  597. package/dist/core/code/engine/core/lbug/lbug-adapter.js +2703 -0
  598. package/dist/core/code/engine/core/lbug/lbug-config.js +1029 -0
  599. package/dist/core/code/engine/core/lbug/native-check.js +435 -0
  600. package/dist/core/code/engine/core/lbug/pool-adapter.js +973 -0
  601. package/dist/core/code/engine/core/lbug/query-params.js +25 -0
  602. package/dist/core/code/engine/core/lbug/query-result-utils.js +31 -0
  603. package/dist/core/code/engine/core/lbug/rel-pair-routing.js +373 -0
  604. package/dist/core/code/engine/core/lbug/schema.js +771 -0
  605. package/dist/core/code/engine/core/lbug/shutdown-helpers.js +40 -0
  606. package/dist/core/code/engine/core/lbug/sidecar-recovery.js +716 -0
  607. package/dist/core/code/engine/core/lbug/stdio-capture.js +49 -0
  608. package/dist/core/code/engine/core/lbug/sync-csv-writer.js +115 -0
  609. package/dist/core/code/engine/core/lbug/wal-checkpoint-driver.js +215 -0
  610. package/dist/core/code/engine/core/lbug/wal-driver-state.js +28 -0
  611. package/dist/core/code/engine/core/logger.js +339 -0
  612. package/dist/core/code/engine/core/platform/capabilities.js +91 -0
  613. package/dist/core/code/engine/core/run-analyze.js +1098 -0
  614. package/dist/core/code/engine/core/tree-sitter/parser-loader.js +281 -0
  615. package/dist/core/code/engine/core/tree-sitter/safe-parse.js +258 -0
  616. package/dist/core/code/engine/core/tree-sitter/vendored-grammars.js +64 -0
  617. package/dist/core/code/engine/lib/utils.js +121 -0
  618. package/dist/core/code/engine/mcp/core/lbug-adapter.js +27 -0
  619. package/dist/core/code/engine/mcp/local/aop-metadata.js +230 -0
  620. package/dist/core/code/engine/mcp/local/bean-metadata.js +49 -0
  621. package/dist/core/code/engine/mcp/local/limits.js +15 -0
  622. package/dist/core/code/engine/mcp/local/line-display.js +6 -0
  623. package/dist/core/code/engine/mcp/local/local-backend.js +4142 -0
  624. package/dist/core/code/engine/storage/branch-index.js +72 -0
  625. package/dist/core/code/engine/storage/file-hash.js +95 -0
  626. package/dist/core/code/engine/storage/fs-atomic.js +34 -0
  627. package/dist/core/code/engine/storage/git.js +555 -0
  628. package/dist/core/code/engine/storage/index-lock.js +664 -0
  629. package/dist/core/code/engine/storage/parse-cache.js +650 -0
  630. package/dist/core/code/engine/storage/parsedfile-store.js +620 -0
  631. package/dist/core/code/engine/storage/repo-manager.js +1061 -0
  632. package/dist/core/code/engine/storage/scope-index-store.js +247 -0
  633. package/dist/core/code/engine/types/pipeline.js +2 -0
  634. package/dist/core/code/scripts/install-duckdb-extension.mjs +125 -0
  635. package/dist/core/code/scripts/resolve-analyze-cmd.cjs +346 -0
  636. package/dist/core/code/shared/graph/types.js +8 -0
  637. package/dist/core/code/shared/index.js +105 -0
  638. package/dist/core/code/shared/integrations/circuit-breaker.js +242 -0
  639. package/dist/core/code/shared/integrations/resilient-fetch.js +224 -0
  640. package/dist/core/code/shared/integrations/retry.js +70 -0
  641. package/dist/core/code/shared/integrations/understand-quickly.js +145 -0
  642. package/dist/core/code/shared/language-detection.js +162 -0
  643. package/dist/core/code/shared/languages.js +27 -0
  644. package/dist/core/code/shared/lbug/schema-constants.js +98 -0
  645. package/dist/core/code/shared/mro-strategy.js +2 -0
  646. package/dist/core/code/shared/pipeline.js +5 -0
  647. package/dist/core/code/shared/scope-resolution/callable-flow-site.js +11 -0
  648. package/dist/core/code/shared/scope-resolution/def-index.js +53 -0
  649. package/dist/core/code/shared/scope-resolution/evidence-weights.js +87 -0
  650. package/dist/core/code/shared/scope-resolution/finalize-algorithm.js +807 -0
  651. package/dist/core/code/shared/scope-resolution/language-classification.js +46 -0
  652. package/dist/core/code/shared/scope-resolution/method-dispatch-index.js +100 -0
  653. package/dist/core/code/shared/scope-resolution/module-scope-index.js +59 -0
  654. package/dist/core/code/shared/scope-resolution/origin-priority.js +23 -0
  655. package/dist/core/code/shared/scope-resolution/parsed-file.js +54 -0
  656. package/dist/core/code/shared/scope-resolution/position-index.js +136 -0
  657. package/dist/core/code/shared/scope-resolution/qualified-name-index.js +77 -0
  658. package/dist/core/code/shared/scope-resolution/reference-site.js +24 -0
  659. package/dist/core/code/shared/scope-resolution/registries/class-registry.js +32 -0
  660. package/dist/core/code/shared/scope-resolution/registries/context.js +52 -0
  661. package/dist/core/code/shared/scope-resolution/registries/evidence.js +152 -0
  662. package/dist/core/code/shared/scope-resolution/registries/field-registry.js +33 -0
  663. package/dist/core/code/shared/scope-resolution/registries/lookup-core.js +392 -0
  664. package/dist/core/code/shared/scope-resolution/registries/lookup-qualified.js +58 -0
  665. package/dist/core/code/shared/scope-resolution/registries/macro-registry.js +34 -0
  666. package/dist/core/code/shared/scope-resolution/registries/method-registry.js +34 -0
  667. package/dist/core/code/shared/scope-resolution/registries/tie-breaks.js +63 -0
  668. package/dist/core/code/shared/scope-resolution/resolve-type-ref.js +128 -0
  669. package/dist/core/code/shared/scope-resolution/scope-id.js +49 -0
  670. package/dist/core/code/shared/scope-resolution/scope-tree.js +225 -0
  671. package/dist/core/code/shared/scope-resolution/symbol-definition.js +12 -0
  672. package/dist/core/code/shared/scope-resolution/types.js +25 -0
  673. package/dist/core/code/shared/test-helpers.js +17 -0
  674. package/dist/core/code/vendor/leiden/index.cjs +355 -0
  675. package/dist/core/code/vendor/leiden/utils.cjs +419 -0
  676. package/dist/core/features/scanner.d.ts +2 -0
  677. package/dist/core/features/scanner.d.ts.map +1 -1
  678. package/dist/core/features/scanner.js +27 -6
  679. package/dist/core/features/scanner.js.map +1 -1
  680. package/dist/core/timeline/cli.d.ts.map +1 -1
  681. package/dist/core/timeline/cli.js +13 -6
  682. package/dist/core/timeline/cli.js.map +1 -1
  683. package/dist/core/timeline/debris.d.ts +20 -0
  684. package/dist/core/timeline/debris.d.ts.map +1 -0
  685. package/dist/core/timeline/debris.js +124 -0
  686. package/dist/core/timeline/debris.js.map +1 -0
  687. package/dist/core/timeline/hook-runner.d.ts.map +1 -1
  688. package/dist/core/timeline/hook-runner.js +3 -1
  689. package/dist/core/timeline/hook-runner.js.map +1 -1
  690. package/dist/core/timeline/hooks.d.ts.map +1 -1
  691. package/dist/core/timeline/hooks.js +13 -5
  692. package/dist/core/timeline/hooks.js.map +1 -1
  693. package/dist/core/timeline/installer.d.ts +2 -0
  694. package/dist/core/timeline/installer.d.ts.map +1 -1
  695. package/dist/core/timeline/installer.js +12 -0
  696. package/dist/core/timeline/installer.js.map +1 -1
  697. package/dist/core/timeline/project-root.d.ts +21 -0
  698. package/dist/core/timeline/project-root.d.ts.map +1 -0
  699. package/dist/core/timeline/project-root.js +83 -0
  700. package/dist/core/timeline/project-root.js.map +1 -0
  701. package/package.json +1 -1
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ /**
3
+ * `composeEvidence` — translate accumulated raw signals per candidate
4
+ * into a `ResolutionEvidence[]` using the authoritative `EvidenceWeights`
5
+ * map (RFC §4.3 + Appendix A; Ring 2 SHARED #917).
6
+ *
7
+ * Each `RawSignals` record describes what was observed about a candidate
8
+ * during the 7-step walk: where it was found, at what depth, whether
9
+ * anything corroborates it. This module turns those raw facts into the
10
+ * typed evidence list attached to the outgoing `Resolution`.
11
+ *
12
+ * **Every weight comes from `EvidenceWeights`.** No inline magic numbers.
13
+ * Extends issue #429 (centralize hardcoded confidence values).
14
+ *
15
+ * **Confidence compose rule.** Signals add; the sum is capped at 1.0 at
16
+ * the call site (inside `lookupCore`). This module only emits the list;
17
+ * it does NOT compute the capped sum so callers can inspect per-signal
18
+ * contributions for debugging.
19
+ */
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.composeEvidence = composeEvidence;
22
+ exports.confidenceFromEvidence = confidenceFromEvidence;
23
+ const evidence_weights_js_1 = require("../evidence-weights.js");
24
+ /**
25
+ * Compose the raw signals into a stable `ResolutionEvidence[]` list.
26
+ *
27
+ * Emission order mirrors the `EvidenceWeights` layout: where-found →
28
+ * type-binding → corroborators → arity → degraded. Stable order makes
29
+ * the per-signal contributions easy to reason about in tests.
30
+ */
31
+ function composeEvidence(signals) {
32
+ const out = [];
33
+ // ── Where-found visibility ─────────────────────────────────────────────
34
+ if (signals.origin !== undefined) {
35
+ const baseWeight = getOriginWeight(signals.origin);
36
+ const capped = signals.viaUnlinkedImport
37
+ ? baseWeight * evidence_weights_js_1.EvidenceWeights.unlinkedImportMultiplier
38
+ : baseWeight;
39
+ const evidenceKind = whereFoundEvidenceKind(signals.origin);
40
+ out.push({
41
+ kind: evidenceKind,
42
+ weight: capped,
43
+ ...(signals.viaUnlinkedImport
44
+ ? { note: `via unresolved import (${evidence_weights_js_1.EvidenceWeights.unlinkedImportMultiplier}× cap)` }
45
+ : {}),
46
+ });
47
+ }
48
+ // ── Scope-chain depth deduction (per-hop, only meaningful for lexical
49
+ // hits where scopeChainDepth ≥ 1). Depth 0 = no deduction; depth N ≥ 1
50
+ // emits a single `scope-chain` evidence with the accumulated penalty.
51
+ if (signals.scopeChainDepth !== undefined && signals.scopeChainDepth > 0) {
52
+ out.push({
53
+ kind: 'scope-chain',
54
+ weight: evidence_weights_js_1.EvidenceWeights.scopeChainPerDepth * signals.scopeChainDepth,
55
+ note: `depth=${signals.scopeChainDepth}`,
56
+ });
57
+ }
58
+ // ── Type-binding / MRO path ────────────────────────────────────────────
59
+ if (signals.typeBindingMroDepth !== undefined) {
60
+ out.push({
61
+ kind: 'type-binding',
62
+ weight: (0, evidence_weights_js_1.typeBindingWeightAtDepth)(signals.typeBindingMroDepth),
63
+ note: `mroDepth=${signals.typeBindingMroDepth}`,
64
+ });
65
+ }
66
+ // ── Owner match (explanatory for debug) ────────────────────────────────
67
+ if (signals.ownerMatch === true) {
68
+ out.push({
69
+ kind: 'owner-match',
70
+ weight: evidence_weights_js_1.EvidenceWeights.ownerMatch,
71
+ });
72
+ }
73
+ // ── Kind match (always present; weight 0; retained for debuggability) ──
74
+ out.push({
75
+ kind: 'kind-match',
76
+ weight: evidence_weights_js_1.EvidenceWeights.kindMatch,
77
+ });
78
+ // ── Arity ──────────────────────────────────────────────────────────────
79
+ if (signals.arityVerdict !== undefined) {
80
+ const weight = signals.arityVerdict === 'compatible'
81
+ ? evidence_weights_js_1.EvidenceWeights.arityMatchCompatible
82
+ : signals.arityVerdict === 'incompatible'
83
+ ? evidence_weights_js_1.EvidenceWeights.arityMatchIncompatible
84
+ : evidence_weights_js_1.EvidenceWeights.arityMatchUnknown;
85
+ out.push({
86
+ kind: 'arity-match',
87
+ weight,
88
+ note: signals.arityVerdict,
89
+ });
90
+ }
91
+ // ── Dynamic-unresolved (degraded signal) ───────────────────────────────
92
+ if (signals.dynamicUnresolved === true) {
93
+ out.push({
94
+ kind: 'dynamic-import-unresolved',
95
+ weight: evidence_weights_js_1.EvidenceWeights.dynamicImportUnresolved,
96
+ });
97
+ }
98
+ return out;
99
+ }
100
+ /**
101
+ * Sum evidence weights and clamp to `[0, 1]`. Separate from `composeEvidence`
102
+ * so tests can inspect the raw evidence list.
103
+ */
104
+ function confidenceFromEvidence(evidence) {
105
+ let sum = 0;
106
+ for (const e of evidence)
107
+ sum += e.weight;
108
+ if (sum < 0)
109
+ return 0;
110
+ if (sum > 1)
111
+ return 1;
112
+ return sum;
113
+ }
114
+ // ─── Internal ───────────────────────────────────────────────────────────────
115
+ function getOriginWeight(origin) {
116
+ switch (origin) {
117
+ case 'local':
118
+ return evidence_weights_js_1.EvidenceWeights.local;
119
+ case 'import':
120
+ return evidence_weights_js_1.EvidenceWeights.import;
121
+ case 'reexport':
122
+ return evidence_weights_js_1.EvidenceWeights.reexport;
123
+ case 'namespace':
124
+ return evidence_weights_js_1.EvidenceWeights.namespace;
125
+ case 'wildcard':
126
+ return evidence_weights_js_1.EvidenceWeights.wildcard;
127
+ case 'global-qualified':
128
+ return evidence_weights_js_1.EvidenceWeights.globalQualified;
129
+ case 'global-name':
130
+ // Reserved for Ring 3 byName global index. `lookupCore` today only
131
+ // emits `'global-qualified'` (via `lookupQualified`, dotted-name
132
+ // fallback); no code path constructs `origin: 'global-name'` yet.
133
+ // Kept here so the Appendix A weight stays live and `composeEvidence`
134
+ // remains exhaustive over the origin union.
135
+ return evidence_weights_js_1.EvidenceWeights.globalName;
136
+ }
137
+ }
138
+ function whereFoundEvidenceKind(origin) {
139
+ switch (origin) {
140
+ case 'local':
141
+ return 'local';
142
+ case 'import':
143
+ case 'reexport':
144
+ case 'namespace':
145
+ case 'wildcard':
146
+ return 'import';
147
+ case 'global-qualified':
148
+ return 'global-qualified';
149
+ case 'global-name':
150
+ return 'global-name';
151
+ }
152
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ /**
3
+ * `FieldRegistry` — scope-aware lookup for field / property / variable
4
+ * access (RFC §4.4; Ring 2 SHARED #917).
5
+ *
6
+ * Thin wrapper over `lookupCore`, specialized for data-member kinds:
7
+ *
8
+ * - `acceptedKinds` = Variable / Property / Const / Static.
9
+ * - `useReceiverTypeBinding` is **true** — fields are resolved against
10
+ * the receiver type's MRO first, then via the lexical chain for
11
+ * free variables.
12
+ * - `callsite` is not meaningful for field access (no arity), but the
13
+ * `explicitReceiver` and `ownerScopedContributor` knobs are.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.buildFieldRegistry = buildFieldRegistry;
17
+ const lookup_core_js_1 = require("./lookup-core.js");
18
+ const context_js_1 = require("./context.js");
19
+ function buildFieldRegistry(ctx) {
20
+ return {
21
+ lookup(name, scope, options = {}) {
22
+ const params = {
23
+ acceptedKinds: context_js_1.FIELD_KINDS,
24
+ useReceiverTypeBinding: true,
25
+ ownerScopedContributor: options.ownerScopedContributor ?? null,
26
+ ...(options.explicitReceiver !== undefined
27
+ ? { explicitReceiver: options.explicitReceiver }
28
+ : {}),
29
+ };
30
+ return (0, lookup_core_js_1.lookupCore)(name, scope, params, ctx);
31
+ },
32
+ };
33
+ }
@@ -0,0 +1,392 @@
1
+ "use strict";
2
+ /**
3
+ * `lookupCore` — the shared 7-step canonical resolution algorithm
4
+ * (RFC §4.2; Ring 2 SHARED #917).
5
+ *
6
+ * Pure function. Given a name, a starting scope, and per-kind parameters,
7
+ * walks lexical scopes + optional type-binding MRO + optional owner
8
+ * contributor + global qualified-name fallback, and returns a ranked
9
+ * `Resolution[]` with per-candidate evidence.
10
+ *
11
+ * All three public registries (`ClassRegistry` / `MethodRegistry` /
12
+ * `FieldRegistry`) dispatch into this function, differing only in the
13
+ * parameters they pass. The CHOICE of which steps fire is expressed
14
+ * through `LookupParams`, not through different algorithms per kind.
15
+ *
16
+ * ## Algorithm (RFC §4.2, verbatim names)
17
+ *
18
+ * **Step 1 — Lexical scope-chain walk.** From `startScope`, walk
19
+ * parent-ward. At each scope, consult `scope.bindings.get(name)`:
20
+ * - Filter candidates whose `def.type ∈ acceptedKinds`.
21
+ * - For each surviving candidate, record a raw signal with the
22
+ * binding's origin + the current scope-chain depth.
23
+ * - **Hard shadow.** If `bindings.get(name)` is non-empty (including
24
+ * non-kind-matching candidates), stop walking. The name is
25
+ * lexically bound here; outer scopes are not consulted.
26
+ *
27
+ * **Step 2 — Type-binding resolution.** When `useReceiverTypeBinding`
28
+ * is true, resolve the receiver's type at `startScope` (from
29
+ * `scope.typeBindings`), then walk the MRO via
30
+ * `MethodDispatchIndex.mroFor(ownerDefId)`. Membership per owner comes
31
+ * through an optional `RegistryContext.ownedMembersByOwner` hook when
32
+ * supplied (`undefined` → fall back to `defs.byId`; `[]` → indexed
33
+ * miss), otherwise via the compatibility fallback scan over
34
+ * `defs.byId`; each hit records a raw signal with the owner's
35
+ * MRO depth.
36
+ *
37
+ * **Step 3 — Owner-scoped contributor.** When
38
+ * `params.ownerScopedContributor` is present, merge its `byName(name)`
39
+ * hits with `origin: 'local'` (they are declared directly on the
40
+ * receiver). Distinct from Step 2 — Step 2 walks the MRO; Step 3 only
41
+ * looks at the directly-declared owner members.
42
+ *
43
+ * **Step 4 — Kind filter (emit `kind-match` evidence).** Already
44
+ * applied during Steps 1-3; this step just adds a `kind-match` signal
45
+ * at weight 0 to every candidate for debuggability (so the evidence
46
+ * array is self-describing).
47
+ *
48
+ * **Step 5 — Arity filter.** Call `providers.arityCompatibility(callsite,
49
+ * def)` per surviving candidate. Verdicts: `compatible` / `unknown` /
50
+ * `incompatible`. If at least one candidate is `compatible`, drop
51
+ * `incompatible` ones. Otherwise keep all (the penalty weight alone
52
+ * will rank them lower but they remain in the result).
53
+ *
54
+ * **Step 6 — Global fallback.** When Steps 1-3 produced **no**
55
+ * candidates and the name contains a `.`, consult the
56
+ * `QualifiedNameIndex` via `lookupQualified` — see §4.5. The `scope`
57
+ * argument is NOT passed here because global lookup is scope-agnostic.
58
+ *
59
+ * **Step 7 — Rank + tie-break.** Compose evidence, compute confidence
60
+ * (sum capped at 1.0), sort by the RFC Appendix B cascade.
61
+ *
62
+ * ## What this module does NOT do
63
+ *
64
+ * - No AST reads (pure data in, pure data out).
65
+ * - No `cgraph/` imports.
66
+ * - No language switches. Language-specific behavior flows exclusively
67
+ * through `providers.*` and the `params` object.
68
+ * - No caching. Callers that want memoization can wrap this function.
69
+ */
70
+ Object.defineProperty(exports, "__esModule", { value: true });
71
+ exports.lookupCore = lookupCore;
72
+ const evidence_js_1 = require("./evidence.js");
73
+ const tie_breaks_js_1 = require("./tie-breaks.js");
74
+ const lookup_qualified_js_1 = require("./lookup-qualified.js");
75
+ /**
76
+ * Run the 7-step lookup. Returns a non-empty `Resolution[]` when any
77
+ * candidate was found; an empty array otherwise. Callers consume `[0]`
78
+ * for the best answer and optionally inspect the rest for alternates.
79
+ */
80
+ function lookupCore(name, startScope, params, ctx) {
81
+ const acceptedKinds = new Set(params.acceptedKinds);
82
+ const perCandidate = new Map();
83
+ // ── Step 1: lexical scope-chain walk ──────────────────────────────────
84
+ //
85
+ // SKIPPED for a NAMED explicit receiver. `recv.name` names a MEMBER of
86
+ // whatever `recv` denotes; it is not a lexical reference to `name`, so a
87
+ // binding of the bare tail name in an enclosing scope is never the right
88
+ // answer. Steps 2 and 3 (receiver type / owner members) are the routes.
89
+ //
90
+ // Without this, `options.baseUrl` bound to an unrelated function-local
91
+ // `const baseUrl` in the same file. This is the residual half of the defect
92
+ // JS/TS block scopes narrowed in #2699 — blocks moved nested-block locals
93
+ // off the chain, but a local declared directly in the function body stayed
94
+ // on it, and no amount of extra scopes reaches that case.
95
+ //
96
+ // `this` / `self` are deliberately EXEMPT. For a self-receiver the members
97
+ // and the lexical chain legitimately overlap — a class body is itself a
98
+ // scope that binds its members — so Step 1 is a real resolution route
99
+ // there, not a coincidence. Measured on a 762-file corpus: skipping Step 1
100
+ // for every explicit receiver dropped 711 edges, of which 43 were
101
+ // `this.member` reads reaching their own owner. Exempting the self names
102
+ // keeps those and still removes the 668 named-receiver false positives.
103
+ const skipLexical = params.explicitReceiver !== undefined &&
104
+ !IMPLICIT_RECEIVERS.includes(params.explicitReceiver.name);
105
+ const lexicalShadowed = skipLexical
106
+ ? false
107
+ : walkLexicalChain(name, startScope, acceptedKinds, ctx, perCandidate);
108
+ // ── Step 2: type-binding / MRO walk (methods/fields) ──────────────────
109
+ if (params.useReceiverTypeBinding && ctx.methodDispatch !== undefined) {
110
+ walkReceiverTypeBinding(name, startScope, acceptedKinds, params, ctx, perCandidate);
111
+ }
112
+ // ── Step 3: owner-scoped contributor ──────────────────────────────────
113
+ if (params.ownerScopedContributor !== null) {
114
+ seedFromOwnerScopedContributor(name, params.ownerScopedContributor, acceptedKinds, perCandidate);
115
+ }
116
+ // ── Step 4: kind-match evidence (emitted by composeEvidence directly) ──
117
+ // Handled inside `composeEvidence`.
118
+ // ── Step 5: arity filter ──────────────────────────────────────────────
119
+ if (params.callsite !== undefined) {
120
+ applyArityFilter(params.callsite, perCandidate, ctx);
121
+ }
122
+ // ── Step 6: global fallback (only when Steps 1-3 produced nothing) ──
123
+ if (perCandidate.size === 0 && !lexicalShadowed && name.includes('.')) {
124
+ const globals = (0, lookup_qualified_js_1.lookupQualified)(name, { acceptedKinds: params.acceptedKinds }, ctx);
125
+ if (globals.length > 0)
126
+ return globals;
127
+ }
128
+ if (perCandidate.size === 0)
129
+ return EMPTY;
130
+ // ── Step 7: compose evidence + rank ──────────────────────────────────
131
+ return rankCandidates(perCandidate);
132
+ }
133
+ function ensureCandidate(perCandidate, def) {
134
+ const existing = perCandidate.get(def.nodeId);
135
+ if (existing !== undefined)
136
+ return existing;
137
+ const fresh = {
138
+ def,
139
+ signals: { kindMatch: true },
140
+ tieBreakKey: { scopeDepth: 0, mroDepth: 0, origin: 'local' },
141
+ };
142
+ perCandidate.set(def.nodeId, fresh);
143
+ return fresh;
144
+ }
145
+ // ─── Step 1 implementation ─────────────────────────────────────────────────
146
+ /**
147
+ * Walk the lexical scope chain from `startScope` upward. Returns `true`
148
+ * iff a scope with any `bindings.get(name)` entries was found — the
149
+ * caller uses this to decide whether to run the global fallback.
150
+ */
151
+ function walkLexicalChain(name, startScope, acceptedKinds, ctx, perCandidate) {
152
+ let currentId = startScope;
153
+ let depth = 0;
154
+ const visited = new Set();
155
+ while (currentId !== null) {
156
+ if (visited.has(currentId))
157
+ return false;
158
+ visited.add(currentId);
159
+ const scope = ctx.scopes.getScope(currentId);
160
+ if (scope === undefined)
161
+ return false;
162
+ const bindings = scope.bindings.get(name);
163
+ if (bindings !== undefined && bindings.length > 0) {
164
+ for (const binding of bindings) {
165
+ if (!acceptedKinds.has(binding.def.type))
166
+ continue;
167
+ recordLexicalHit(perCandidate, binding, depth);
168
+ }
169
+ return true; // hard shadow regardless of kind-filter survivorship
170
+ }
171
+ currentId = scope.parent;
172
+ depth++;
173
+ }
174
+ return false;
175
+ }
176
+ function recordLexicalHit(perCandidate, binding, scopeChainDepth) {
177
+ const state = ensureCandidate(perCandidate, binding.def);
178
+ state.signals.origin = binding.origin;
179
+ state.signals.scopeChainDepth = scopeChainDepth;
180
+ if (binding.via?.linkStatus === 'unresolved') {
181
+ state.signals.viaUnlinkedImport = true;
182
+ }
183
+ if (binding.via?.kind === 'dynamic-unresolved') {
184
+ state.signals.dynamicUnresolved = true;
185
+ }
186
+ state.tieBreakKey.scopeDepth = scopeChainDepth;
187
+ state.tieBreakKey.origin = binding.origin;
188
+ }
189
+ // ─── Step 2 implementation ─────────────────────────────────────────────────
190
+ function walkReceiverTypeBinding(name, startScope, acceptedKinds, params, ctx, perCandidate) {
191
+ const ownerDefId = resolveReceiverOwner(startScope, params, ctx);
192
+ if (ownerDefId === undefined)
193
+ return;
194
+ if (ctx.methodDispatch === undefined)
195
+ return;
196
+ const ownerDef = ctx.defs.get(ownerDefId);
197
+ if (ownerDef === undefined)
198
+ return;
199
+ // Walk the owner itself at depth 0, then its MRO chain.
200
+ const walk = [ownerDefId, ...ctx.methodDispatch.mroFor(ownerDefId)];
201
+ let mroDepth = 0;
202
+ for (const currentOwnerId of walk) {
203
+ const members = collectOwnedMembers(currentOwnerId, name, ctx);
204
+ for (const def of members) {
205
+ if (!acceptedKinds.has(def.type))
206
+ continue;
207
+ recordTypeBindingHit(perCandidate, def, mroDepth, ownerDefId);
208
+ }
209
+ mroDepth++;
210
+ }
211
+ }
212
+ function resolveReceiverOwner(startScope, params, ctx) {
213
+ // Explicit receiver: consult the callsite scope's typeBindings for the
214
+ // named receiver; the attached TypeRef identifies the owner. Without a
215
+ // ready resolveTypeRef call (that module is separate), we do a direct
216
+ // lookup and trust the caller to have populated the binding.
217
+ if (params.explicitReceiver !== undefined) {
218
+ return lookupReceiverType(startScope, params.explicitReceiver.name, ctx);
219
+ }
220
+ // Implicit `self` / `this` — the scope's typeBindings should carry it.
221
+ for (const implicitName of IMPLICIT_RECEIVERS) {
222
+ const owner = lookupReceiverType(startScope, implicitName, ctx);
223
+ if (owner !== undefined)
224
+ return owner;
225
+ }
226
+ return undefined;
227
+ }
228
+ /**
229
+ * Names that denote the enclosing instance rather than an arbitrary object.
230
+ *
231
+ * Two consumers, and both want the same set: `resolveReceiverOwner` above
232
+ * tries them when no explicit receiver is present, and the Step-1 skip in
233
+ * `lookupCore` exempts them because for a SELF receiver the members and the
234
+ * lexical chain legitimately overlap — a class body is itself a scope that
235
+ * binds its members — whereas for a named receiver they never do.
236
+ *
237
+ * `$this` is matched because the receiver name arrives as the reference node's
238
+ * RAW SOURCE TEXT (`extractExplicitReceiver` returns `cap.text` verbatim), so
239
+ * PHP's `$this->x` presents as `"$this"`, sigil included. Listing the spelling
240
+ * keeps this a data table rather than a language switch — this module resolves
241
+ * language behaviour through `providers.*` and `params` only (see the header)
242
+ * — and it follows the ingestion-side twin, `THIS_RECEIVERS` in
243
+ * `cgraph/src/core/ingestion/type-env.ts`, which has always listed the
244
+ * sigil'd spelling rather than stripping it. Stripping would carry the same
245
+ * false-positive surface anyway (a JS variable literally named `$this`).
246
+ *
247
+ * That twin also lists `Me`, deliberately NOT mirrored here: no entry in
248
+ * `SupportedLanguages` uses it, so it can only ever exempt a variable that
249
+ * happens to be called `Me`. The two lists are otherwise the same set, and
250
+ * that equality — plus the `Me` exemption in both directions — is now ENFORCED
251
+ * by `cgraph/test/unit/receiver-twin-list-drift.test.ts`. Editing either list
252
+ * without the other fails there.
253
+ */
254
+ const IMPLICIT_RECEIVERS = Object.freeze(['self', 'this', '$this']);
255
+ function lookupReceiverType(startScope, receiverName, ctx) {
256
+ let currentId = startScope;
257
+ const visited = new Set();
258
+ while (currentId !== null) {
259
+ if (visited.has(currentId))
260
+ return undefined;
261
+ visited.add(currentId);
262
+ const scope = ctx.scopes.getScope(currentId);
263
+ if (scope === undefined)
264
+ return undefined;
265
+ const typeRef = scope.typeBindings.get(receiverName);
266
+ if (typeRef !== undefined) {
267
+ // rawName must resolve to a def via qualifiedNames; if it doesn't, we
268
+ // can't claim the receiver type. No fallback — that's what
269
+ // `resolveTypeRef` would do, but we keep this path lean and let
270
+ // callers pre-resolve if they want the richer semantics.
271
+ const candidateIds = ctx.qualifiedNames.get(typeRef.rawName);
272
+ if (candidateIds.length === 1)
273
+ return candidateIds[0];
274
+ // Ambiguous (≥ 2) or missing (0) — caller must pre-resolve via
275
+ // `resolveTypeRef` (#916) if they want the richer semantics. We
276
+ // intentionally do NOT re-implement a simple-name fallback here.
277
+ return undefined;
278
+ }
279
+ // The scope binds this receiver itself but carries no type for it — a
280
+ // JS/TS ordinary `function` whose `this` is bound at call time, not the
281
+ // enclosing instance (#2701). Stop rather than borrowing an enclosing
282
+ // scope's binding; see `Scope.ownsReceivers`. Mirrors the same gate in
283
+ // the ingestion-side twin of this walk, `findReceiverTypeBinding`.
284
+ if (scope.ownsReceivers?.has(receiverName) === true)
285
+ return undefined;
286
+ currentId = scope.parent;
287
+ }
288
+ return undefined;
289
+ }
290
+ function collectOwnedMembers(ownerDefId, memberName, ctx) {
291
+ return ctx.ownedMembersByOwner(ownerDefId, memberName);
292
+ }
293
+ function recordTypeBindingHit(perCandidate, def, mroDepth, receiverOwner) {
294
+ const state = ensureCandidate(perCandidate, def);
295
+ const existingMroDepth = state.signals.typeBindingMroDepth;
296
+ const firstHit = existingMroDepth === undefined;
297
+ // Only replace if this hit is shallower (smaller MRO depth). The local
298
+ // const lets TS narrow to `number` in the `else` branch so no `!`
299
+ // assertion is needed.
300
+ if (firstHit || mroDepth < existingMroDepth) {
301
+ state.signals.typeBindingMroDepth = mroDepth;
302
+ state.tieBreakKey.mroDepth = mroDepth;
303
+ }
304
+ if (def.ownerId === receiverOwner) {
305
+ state.signals.ownerMatch = true;
306
+ }
307
+ // Pure type-binding candidates (no lexical hit) would otherwise keep the
308
+ // `ensureCandidate` default `tieBreakKey.origin === 'local'`, making the
309
+ // Appendix B cascade lump them with local-origin candidates. Demote them
310
+ // to `'import'` — the strongest non-local origin — only when no earlier
311
+ // phase set an origin for this candidate. Lexical hits from Step 1 set
312
+ // `signals.origin` before Step 2 runs, so the guard skips them; Step 3
313
+ // (`seedFromOwnerScopedContributor`) runs AFTER Step 2 and unconditionally
314
+ // overrides `tieBreakKey.origin` back to `'local'` for direct-owner
315
+ // members, so any same-def overlap still ends up ranked correctly.
316
+ if (firstHit && state.signals.origin === undefined) {
317
+ state.tieBreakKey.origin = 'import';
318
+ }
319
+ }
320
+ // ─── Step 3 implementation ─────────────────────────────────────────────────
321
+ function seedFromOwnerScopedContributor(name, contributor, acceptedKinds, perCandidate) {
322
+ for (const def of contributor.byName(name)) {
323
+ if (!acceptedKinds.has(def.type))
324
+ continue;
325
+ const state = ensureCandidate(perCandidate, def);
326
+ // Treat the contributor's direct membership as `origin: 'local'` —
327
+ // strongest visibility, no scope-chain penalty.
328
+ state.signals.origin = 'local';
329
+ state.signals.scopeChainDepth = 0;
330
+ state.signals.ownerMatch = def.ownerId === contributor.ownerDefId;
331
+ state.tieBreakKey.origin = 'local';
332
+ }
333
+ }
334
+ // ─── Step 5 implementation ─────────────────────────────────────────────────
335
+ function applyArityFilter(callsite, perCandidate, ctx) {
336
+ const arityFn = ctx.providers.arityCompatibility;
337
+ if (arityFn === undefined) {
338
+ // No provider → record 'unknown' for every candidate; keeps signal
339
+ // shape uniform for composeEvidence.
340
+ for (const state of perCandidate.values()) {
341
+ state.signals.arityVerdict = 'unknown';
342
+ }
343
+ return;
344
+ }
345
+ let anyCompatible = false;
346
+ let anyUnknown = false;
347
+ for (const state of perCandidate.values()) {
348
+ const verdict = arityFn(callsite, state.def);
349
+ state.signals.arityVerdict = verdict;
350
+ if (verdict === 'compatible')
351
+ anyCompatible = true;
352
+ else if (verdict === 'unknown')
353
+ anyUnknown = true;
354
+ }
355
+ // When ALL candidates are 'incompatible' (none compatible, none unknown),
356
+ // the call is genuinely arity-broken — drop every candidate so the
357
+ // registry returns no resolution. This matches the PHP variadic case
358
+ // f(int $req, ...$rest) called with zero args: every candidate definitively
359
+ // rejects, and emitting an edge to a definitively-rejected callable is
360
+ // a false positive. When some candidates are 'unknown' (missing metadata),
361
+ // keep the set so downstream evidence can break the tie — that's the
362
+ // original safety-fallback behavior.
363
+ if (!anyCompatible) {
364
+ if (!anyUnknown) {
365
+ for (const defId of perCandidate.keys()) {
366
+ perCandidate.delete(defId);
367
+ }
368
+ }
369
+ return;
370
+ }
371
+ // Filter: when at least one compatible candidate exists, drop incompatibles.
372
+ for (const [defId, state] of perCandidate) {
373
+ if (state.signals.arityVerdict === 'incompatible') {
374
+ perCandidate.delete(defId);
375
+ }
376
+ }
377
+ }
378
+ // ─── Step 7 implementation ─────────────────────────────────────────────────
379
+ function rankCandidates(perCandidate) {
380
+ const resolutions = [];
381
+ const tieKeys = new Map();
382
+ for (const state of perCandidate.values()) {
383
+ const evidence = (0, evidence_js_1.composeEvidence)(state.signals);
384
+ const confidence = (0, evidence_js_1.confidenceFromEvidence)(evidence);
385
+ resolutions.push({ def: state.def, confidence, evidence });
386
+ tieKeys.set(state.def.nodeId, { ...state.tieBreakKey });
387
+ }
388
+ resolutions.sort((a, b) => (0, tie_breaks_js_1.compareByConfidenceWithTiebreaks)(a, b, tieKeys));
389
+ return Object.freeze(resolutions);
390
+ }
391
+ // ─── Constants ──────────────────────────────────────────────────────────────
392
+ const EMPTY = Object.freeze([]);
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ /**
3
+ * `lookupQualified` — qualified-name fast path (RFC §4.5; Ring 2 SHARED #917).
4
+ *
5
+ * Consults `QualifiedNameIndex` directly, filters by `acceptedKinds`, and
6
+ * returns `Resolution[]` with `origin: 'global-qualified'` evidence. Used by:
7
+ *
8
+ * - `resolveTypeRef` dotted fallback (#916)
9
+ * - `Registry.lookup` Step 6 when no lexical candidate survived
10
+ * - Explicit dotted identifiers in Cypher / MCP tools where the caller
11
+ * knows the target's canonical qualified name
12
+ *
13
+ * **Strict + deterministic.** No receiver-type resolution, no scope walk.
14
+ * Every surviving candidate gets the same base confidence (from
15
+ * `EvidenceWeights.globalQualified`), then the tie-break cascade
16
+ * disambiguates.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.lookupQualified = lookupQualified;
20
+ const evidence_js_1 = require("./evidence.js");
21
+ const tie_breaks_js_1 = require("./tie-breaks.js");
22
+ /**
23
+ * Look up a canonical qualified name (e.g., `app.models.User`) across all
24
+ * defs, filtered by `acceptedKinds`. Returns an empty array when the name
25
+ * is not indexed or no candidate matches the kind filter.
26
+ *
27
+ * Callers consume `[0]` for the strict single-return answer; the remainder
28
+ * carries alternate candidates (partial classes, overloads, accidental
29
+ * cross-kind hits) ordered by the tie-break cascade.
30
+ */
31
+ function lookupQualified(qualifiedName, params, ctx) {
32
+ const defIds = ctx.qualifiedNames.get(qualifiedName);
33
+ if (defIds.length === 0)
34
+ return EMPTY;
35
+ const acceptedKinds = new Set(params.acceptedKinds);
36
+ const resolutions = [];
37
+ const tieKeys = new Map();
38
+ for (const defId of defIds) {
39
+ const def = ctx.defs.get(defId);
40
+ if (def === undefined)
41
+ continue;
42
+ if (!acceptedKinds.has(def.type))
43
+ continue;
44
+ const evidence = (0, evidence_js_1.composeEvidence)({ origin: 'global-qualified', kindMatch: true });
45
+ const confidence = (0, evidence_js_1.confidenceFromEvidence)(evidence);
46
+ resolutions.push({ def, confidence, evidence });
47
+ tieKeys.set(def.nodeId, {
48
+ scopeDepth: 0,
49
+ mroDepth: 0,
50
+ origin: 'global-qualified',
51
+ });
52
+ }
53
+ if (resolutions.length === 0)
54
+ return EMPTY;
55
+ resolutions.sort((a, b) => (0, tie_breaks_js_1.compareByConfidenceWithTiebreaks)(a, b, tieKeys));
56
+ return Object.freeze(resolutions);
57
+ }
58
+ const EMPTY = Object.freeze([]);
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ /**
3
+ * `MacroRegistry` — scope-aware lookup for macro definitions
4
+ * (`macro_rules!` in Rust; `#define` in C/C++) referenced from a macro
5
+ * invocation site.
6
+ *
7
+ * Thin wrapper over `lookupCore`, specialized for the macro namespace:
8
+ *
9
+ * - `acceptedKinds` = `MACRO_KINDS` (`['Macro']` only). Crucially this
10
+ * does NOT include `Function`/`Method`, so a `log!(…)` invocation can
11
+ * never resolve to a same-named free function `fn log` — macros and
12
+ * functions are disjoint namespaces (the false-`CALLS`-edge class the
13
+ * #1934 review flagged).
14
+ * - `useReceiverTypeBinding` is **false** — a macro invocation has no
15
+ * receiver; resolution is name-through-the-lexical-chain + the global
16
+ * qualified fallback, exactly like `ClassRegistry`.
17
+ * - Arity is not applied — macros are variadic by nature.
18
+ */
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.buildMacroRegistry = buildMacroRegistry;
21
+ const lookup_core_js_1 = require("./lookup-core.js");
22
+ const context_js_1 = require("./context.js");
23
+ function buildMacroRegistry(ctx) {
24
+ const params = {
25
+ acceptedKinds: context_js_1.MACRO_KINDS,
26
+ useReceiverTypeBinding: false,
27
+ ownerScopedContributor: null,
28
+ };
29
+ return {
30
+ lookup(name, scope) {
31
+ return (0, lookup_core_js_1.lookupCore)(name, scope, params, ctx);
32
+ },
33
+ };
34
+ }