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,108 @@
1
+ "use strict";
2
+ /**
3
+ * TypeScript scope-resolution hooks (RFC #909 Ring 3, RFC §5).
4
+ *
5
+ * Public API barrel. Consumers should import from this file rather
6
+ * than the individual modules.
7
+ *
8
+ * Module layout (each file is a single concern):
9
+ *
10
+ * - `query.ts` — tree-sitter query + lazy parser/query singletons
11
+ * - `captures.ts` — `emitTsScopeCaptures` orchestrator
12
+ * - `import-decomposer.ts` — each import/re-export/dynamic-import →
13
+ * ParsedImport-shaped captures
14
+ * - `interpret.ts` — capture-match → `ParsedImport` /
15
+ * `ParsedTypeBinding`
16
+ * - `simple-hooks.ts` — `bindingScopeFor` (var hoisting + return-
17
+ * type hoisting), `importOwningScope`
18
+ * (module/namespace default), `receiverBinding`
19
+ * (`this` lookup on Function scope)
20
+ * - `receiver-binding.ts` — synthesize `this` type-bindings on
21
+ * instance-method entry (methods, interface
22
+ * signatures, class-field arrow functions)
23
+ * - `merge-bindings.ts` — TypeScript declaration merging
24
+ * (value / type / namespace spaces) + LEGB
25
+ * tier shadowing
26
+ * - `arity.ts` — TypeScript arity compatibility (rest,
27
+ * optional, default params)
28
+ * - `arity-metadata.ts` — synthesize arity metadata from
29
+ * declarations; includes generics + array-
30
+ * suffix stripping on parameter types
31
+ * - `import-target.ts` — `(ParsedImport, WorkspaceIndex) → file path`
32
+ * adapter delegating to the shared standard
33
+ * resolver (tsconfig paths, node_modules,
34
+ * relative/extension suffix matching)
35
+ * - `cache-stats.ts` — PROF_SCOPE_RESOLUTION cache hit/miss
36
+ * counters
37
+ *
38
+ * ## Known limitations
39
+ *
40
+ * The TypeScript registry-primary path intentionally does NOT resolve
41
+ * the following. Each is a conscious trade-off at migration time.
42
+ *
43
+ * 1. **Type-only import / export separation** — `import type { X }`
44
+ * and `import { X }` produce the same `ParsedImport` shape today;
45
+ * `def.type` on the resolved symbol is the only discriminator.
46
+ * Parity with the legacy path is preserved. Tracking in #927.
47
+ * 2. **Declaration merging for imports** — when `import { Foo }`
48
+ * brings in a symbol that is BOTH a class and a namespace in the
49
+ * source module, we currently surface a single binding per the
50
+ * target `def.type`. Downstream type/value-space lookups still
51
+ * work for the primary space; the other space's members resolve
52
+ * via the same target (class statics reachable via dotted access).
53
+ * 3. **Overload narrowing by argument type** — `@reference.parameter-
54
+ * types` carries static literal types inferred from the callsite
55
+ * (`string`, `number`, `Array`, etc.). Identifier / member-access
56
+ * arguments emit empty strings (unknown type); the registry's
57
+ * narrowing treats them as any-match. Full control-flow type
58
+ * narrowing is out of scope.
59
+ * 4. **Computed member access** — `obj[key]()` / `obj['method']()`
60
+ * is classified as an index-access call; member-call resolution
61
+ * falls back to the identifier-indexed branch and matches only
62
+ * when the key is a string literal.
63
+ * 5. **`this` for nested regular functions inside methods** — our
64
+ * scope-chain lookup returns the enclosing method's `this`, which
65
+ * is technically incorrect at runtime (a non-arrow nested function
66
+ * has its own `this` binding). Accepted false-positive; see
67
+ * `simple-hooks.ts` docstring.
68
+ * 6. **`class_expression` receiver types** — `const C = class { }`
69
+ * skips `this` synthesis when the expression is anonymous (no
70
+ * type name to propagate). `const C = class Named { }` works via
71
+ * the class's own `name` field.
72
+ * 7. **JSX element types** — JSX-specific constructs are ignored by
73
+ * the scope query; component references resolve via regular
74
+ * identifier / member-expression paths.
75
+ * 8. **Ambient module declarations** (`declare module '…'`) — parsed
76
+ * but not indexed at this layer; same as today's legacy path.
77
+ * 9. **Intersection types on parameters** (`(a: A & B)`) — treated
78
+ * as opaque (no strip); overload narrowing on intersections
79
+ * won't match.
80
+ * 10. **`instanceof` member-expression narrowing** — only bare
81
+ * identifiers are narrowed (`user instanceof User`). Member paths
82
+ * such as `user.address instanceof Address` remain unresolved.
83
+ *
84
+ * The `test/integration/resolvers/typescript.test.ts` resolver suite is
85
+ * the authoritative signal for which of these matter in practice; it runs
86
+ * in the standard CI test workflow, so a regression blocks the merge.
87
+ */
88
+ Object.defineProperty(exports, "__esModule", { value: true });
89
+ exports.tsReceiverBinding = exports.tsImportOwningScope = exports.tsBindingScopeFor = exports.resolveTsTarget = exports.resolveTsImportTarget = exports.typescriptArityCompatibility = exports.typescriptMergeBindings = exports.interpretTsTypeBinding = exports.interpretTsImport = exports.resetTypescriptCaptureCacheStats = exports.getTypescriptCaptureCacheStats = exports.emitTsScopeCaptures = void 0;
90
+ var captures_js_1 = require("./captures.js");
91
+ Object.defineProperty(exports, "emitTsScopeCaptures", { enumerable: true, get: function () { return captures_js_1.emitTsScopeCaptures; } });
92
+ var cache_stats_js_1 = require("./cache-stats.js");
93
+ Object.defineProperty(exports, "getTypescriptCaptureCacheStats", { enumerable: true, get: function () { return cache_stats_js_1.getTypescriptCaptureCacheStats; } });
94
+ Object.defineProperty(exports, "resetTypescriptCaptureCacheStats", { enumerable: true, get: function () { return cache_stats_js_1.resetTypescriptCaptureCacheStats; } });
95
+ var interpret_js_1 = require("./interpret.js");
96
+ Object.defineProperty(exports, "interpretTsImport", { enumerable: true, get: function () { return interpret_js_1.interpretTsImport; } });
97
+ Object.defineProperty(exports, "interpretTsTypeBinding", { enumerable: true, get: function () { return interpret_js_1.interpretTsTypeBinding; } });
98
+ var merge_bindings_js_1 = require("./merge-bindings.js");
99
+ Object.defineProperty(exports, "typescriptMergeBindings", { enumerable: true, get: function () { return merge_bindings_js_1.typescriptMergeBindings; } });
100
+ var arity_js_1 = require("./arity.js");
101
+ Object.defineProperty(exports, "typescriptArityCompatibility", { enumerable: true, get: function () { return arity_js_1.typescriptArityCompatibility; } });
102
+ var import_target_js_1 = require("./import-target.js");
103
+ Object.defineProperty(exports, "resolveTsImportTarget", { enumerable: true, get: function () { return import_target_js_1.resolveTsImportTarget; } });
104
+ Object.defineProperty(exports, "resolveTsTarget", { enumerable: true, get: function () { return import_target_js_1.resolveTsTarget; } });
105
+ var simple_hooks_js_1 = require("./simple-hooks.js");
106
+ Object.defineProperty(exports, "tsBindingScopeFor", { enumerable: true, get: function () { return simple_hooks_js_1.tsBindingScopeFor; } });
107
+ Object.defineProperty(exports, "tsImportOwningScope", { enumerable: true, get: function () { return simple_hooks_js_1.tsImportOwningScope; } });
108
+ Object.defineProperty(exports, "tsReceiverBinding", { enumerable: true, get: function () { return simple_hooks_js_1.tsReceiverBinding; } });
@@ -0,0 +1,344 @@
1
+ "use strict";
2
+ /**
3
+ * Capture-match → semantic-shape interpreters for TypeScript.
4
+ *
5
+ * Two pure functions, both consumed by the central scope extractor:
6
+ *
7
+ * - `interpretTsImport` → `ParsedImport`
8
+ * - `interpretTsTypeBinding` → `ParsedTypeBinding` (wired in Unit 6)
9
+ *
10
+ * The import matches arrive pre-decomposed by `emitTsScopeCaptures`
11
+ * (one imported name per match, with synthesized
12
+ * `@import.kind/source/name/alias` markers — see `import-decomposer.ts`).
13
+ * The type-binding matches arrive straight from the raw query captures —
14
+ * each `@type-binding.*` anchor carries `@type-binding.name` +
15
+ * `@type-binding.type`.
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.interpretTsImport = interpretTsImport;
19
+ exports.interpretTsTypeBinding = interpretTsTypeBinding;
20
+ exports.reducesToContainedType = reducesToContainedType;
21
+ // ─── interpretImport ──────────────────────────────────────────────────────
22
+ function interpretTsImport(captures) {
23
+ // Markers attached by `splitImportStatement` (import-decomposer.ts):
24
+ // @import.kind : one of the kinds documented there
25
+ // @import.name : imported name from the source module
26
+ // @import.alias : local alias name (for default / aliased / namespace forms)
27
+ // @import.source : module path (always present except dynamic-unresolved)
28
+ const kindCap = captures['@import.kind'];
29
+ const nameCap = captures['@import.name'];
30
+ const aliasCap = captures['@import.alias'];
31
+ const sourceCap = captures['@import.source'];
32
+ const kind = kindCap?.text;
33
+ if (kind === undefined)
34
+ return null;
35
+ switch (kind) {
36
+ case 'default': {
37
+ // `import D from './m'` — semantically "alias for the module's
38
+ // default export". We map to ParsedImport `alias` with
39
+ // importedName='default' so the finalize algorithm looks up the
40
+ // target module's `default` export for cross-file resolution.
41
+ if (sourceCap === undefined || aliasCap === undefined)
42
+ return null;
43
+ return {
44
+ kind: 'alias',
45
+ localName: aliasCap.text,
46
+ importedName: 'default',
47
+ alias: aliasCap.text,
48
+ targetRaw: sourceCap.text,
49
+ };
50
+ }
51
+ case 'named': {
52
+ // `import { X } from './m'` (plus type-only forms).
53
+ if (sourceCap === undefined || nameCap === undefined)
54
+ return null;
55
+ return {
56
+ kind: 'named',
57
+ localName: nameCap.text,
58
+ importedName: nameCap.text,
59
+ targetRaw: sourceCap.text,
60
+ };
61
+ }
62
+ case 'named-alias': {
63
+ // `import { X as Y } from './m'`.
64
+ if (sourceCap === undefined || nameCap === undefined || aliasCap === undefined) {
65
+ return null;
66
+ }
67
+ return {
68
+ kind: 'alias',
69
+ localName: aliasCap.text,
70
+ importedName: nameCap.text,
71
+ alias: aliasCap.text,
72
+ targetRaw: sourceCap.text,
73
+ };
74
+ }
75
+ case 'namespace': {
76
+ // `import * as N from './m'` — `N` binds the whole module.
77
+ if (sourceCap === undefined || aliasCap === undefined)
78
+ return null;
79
+ return {
80
+ kind: 'namespace',
81
+ localName: aliasCap.text,
82
+ importedName: sourceCap.text,
83
+ targetRaw: sourceCap.text,
84
+ };
85
+ }
86
+ case 'reexport': {
87
+ // `export { X } from './m'`.
88
+ if (sourceCap === undefined || nameCap === undefined)
89
+ return null;
90
+ return {
91
+ kind: 'reexport',
92
+ localName: nameCap.text,
93
+ importedName: nameCap.text,
94
+ targetRaw: sourceCap.text,
95
+ };
96
+ }
97
+ case 'reexport-alias': {
98
+ // `export { X as Y } from './m'`.
99
+ if (sourceCap === undefined || nameCap === undefined || aliasCap === undefined) {
100
+ return null;
101
+ }
102
+ return {
103
+ kind: 'reexport',
104
+ localName: aliasCap.text,
105
+ importedName: nameCap.text,
106
+ alias: aliasCap.text,
107
+ targetRaw: sourceCap.text,
108
+ };
109
+ }
110
+ case 'reexport-wildcard': {
111
+ // `export * from './m'` — no local name, just a blanket passthrough.
112
+ if (sourceCap === undefined)
113
+ return null;
114
+ return { kind: 'wildcard', targetRaw: sourceCap.text };
115
+ }
116
+ case 'reexport-namespace': {
117
+ // `export * as ns from './m'` — creates a local binding `ns`
118
+ // that exposes the whole module, while also re-exporting it.
119
+ // Closest ParsedImport fit is `namespace`; the re-export side
120
+ // of this edge is tracked by the export detector downstream.
121
+ if (sourceCap === undefined || aliasCap === undefined)
122
+ return null;
123
+ return {
124
+ kind: 'namespace',
125
+ localName: aliasCap.text,
126
+ importedName: sourceCap.text,
127
+ targetRaw: sourceCap.text,
128
+ };
129
+ }
130
+ case 'dynamic': {
131
+ // `import('./m')` / `import(x)`. The decomposer marks literal-
132
+ // string arguments with `@import.literal` so we can promote them
133
+ // to `dynamic-resolved` here — that lets the shared finalizer
134
+ // produce a file-level IMPORTS edge for lazy-loaded modules.
135
+ // Non-literal arguments stay `dynamic-unresolved` (target is
136
+ // runtime-computed and unreachable to the static finalizer).
137
+ const isLiteral = captures['@import.literal'] !== undefined;
138
+ if (isLiteral && sourceCap !== undefined) {
139
+ return { kind: 'dynamic-resolved', targetRaw: sourceCap.text };
140
+ }
141
+ return {
142
+ kind: 'dynamic-unresolved',
143
+ localName: '',
144
+ targetRaw: sourceCap?.text ?? null,
145
+ };
146
+ }
147
+ case 'side-effect': {
148
+ // `import './polyfill'` — bare-source, no local binding. The
149
+ // finalize layer resolves to a target file and emits a
150
+ // file-level IMPORTS edge; no `BindingRef` is materialized.
151
+ if (sourceCap === undefined)
152
+ return null;
153
+ return { kind: 'side-effect', targetRaw: sourceCap.text };
154
+ }
155
+ default:
156
+ return null;
157
+ }
158
+ }
159
+ // ─── interpretTypeBinding ─────────────────────────────────────────────────
160
+ /**
161
+ * Interpret a `@type-binding.*` capture-match into a `ParsedTypeBinding`.
162
+ *
163
+ * TypeScript-specific strips:
164
+ *
165
+ * - Trailing `?` on optional parameters: `(u?: User)` → `User`
166
+ * - `Promise<User>` / `Array<User>` / `ReadonlyArray<User>` / `Readonly<User>`
167
+ * → `User` (wrappers that are transparent to chain propagation)
168
+ * - Single-arg `List<User>` / `Iterable<User>` / `Iterator<User>` —
169
+ * mirrors Python/C#'s generic-collection strip for for-of loops
170
+ * - Trailing `[]` on array types: `User[]` → `User`
171
+ * - Nullable unions: `User | null` / `User | undefined` / `null | User`
172
+ * → `User`
173
+ * - Dotted qualifiers: `models.User` → `User` (unless the suffix is
174
+ * a known collection accessor we'd want to preserve — none apply
175
+ * to TS today, since TS uses `.values()` / `.keys()` call syntax)
176
+ */
177
+ function interpretTsTypeBinding(captures) {
178
+ const nameCap = captures['@type-binding.name'];
179
+ const typeCap = captures['@type-binding.type'];
180
+ if (nameCap === undefined || typeCap === undefined)
181
+ return null;
182
+ // Readonly/array/nullable wrappers can stack; apply passes until a
183
+ // fixed point (bounded by the text length since every strip monotonically
184
+ // shrinks the string).
185
+ let prev = '';
186
+ let rawType = typeCap.text.trim();
187
+ while (prev !== rawType) {
188
+ prev = rawType;
189
+ rawType = stripReadonly(rawType);
190
+ rawType = stripNullableUnion(rawType);
191
+ rawType = stripGeneric(rawType);
192
+ rawType = stripArraySuffix(rawType);
193
+ }
194
+ // Destructuring / member-alias / map-tuple / dotted-call-alias bindings
195
+ // carry receiver paths or sentinel strings that must survive verbatim.
196
+ // Also preserve dotted member-call callee text (`svc.getUser`) for
197
+ // `@type-binding.alias` — stripQualifier would reduce it to `getUser`,
198
+ // breaking compound-receiver's `obj.method()` split.
199
+ const isDestructured = captures['@type-binding.destructured'] !== undefined;
200
+ const isMemberAlias = captures['@type-binding.member-alias'] !== undefined;
201
+ const isMapTupleEntry = captures['@type-binding.map-tuple-entry'] !== undefined;
202
+ const isInstanceofNarrow = captures['@type-binding.instanceof-narrow'] !== undefined;
203
+ const isAlias = captures['@type-binding.alias'] !== undefined;
204
+ const preserveRawTypeName = isDestructured ||
205
+ isMemberAlias ||
206
+ isMapTupleEntry ||
207
+ isInstanceofNarrow ||
208
+ (isAlias && rawType.includes('.'));
209
+ if (!preserveRawTypeName) {
210
+ rawType = stripQualifier(rawType);
211
+ }
212
+ // Drop non-discriminating / wildcard types — `as any` / `as unknown`
213
+ // should not block a more-informative sibling binding (typically the
214
+ // constructor-inferred capture from the inner `new_expression`). By
215
+ // returning null here we let the scope-extractor's tie-break select
216
+ // the next-best binding for the same name.
217
+ if (UNINFORMATIVE_TYPES.has(rawType))
218
+ return null;
219
+ // Anchor captures distinguish the source of the binding. Order
220
+ // matters: more-specific anchors take precedence. `this` is a
221
+ // TypeScript-specific receiver synthesized in `receiver-binding.ts`
222
+ // (Unit 3); treat it as `self` for Registry.lookup parity with
223
+ // Python/C#.
224
+ let source = 'parameter-annotation';
225
+ if (captures['@type-binding.this'] !== undefined)
226
+ source = 'self';
227
+ else if (captures['@type-binding.constructor'] !== undefined)
228
+ source = 'constructor-inferred';
229
+ else if (captures['@type-binding.assertion'] !== undefined)
230
+ source = 'annotation';
231
+ else if (captures['@type-binding.annotation'] !== undefined)
232
+ source = 'annotation';
233
+ else if (captures['@type-binding.member-alias'] !== undefined)
234
+ source = 'assignment-inferred';
235
+ else if (captures['@type-binding.alias'] !== undefined)
236
+ source = 'assignment-inferred';
237
+ else if (captures['@type-binding.return'] !== undefined)
238
+ source = 'return-annotation';
239
+ else if (captures['@type-binding.parameter-property'] !== undefined)
240
+ source = 'annotation';
241
+ else if (captures['@type-binding.destructured'] !== undefined)
242
+ source = 'assignment-inferred';
243
+ else if (captures['@type-binding.map-tuple-entry'] !== undefined)
244
+ source = 'assignment-inferred';
245
+ else if (captures['@type-binding.instanceof-narrow'] !== undefined)
246
+ source = 'annotation';
247
+ return { boundName: nameCap.text, rawTypeName: rawType, source };
248
+ }
249
+ /** Types that carry no discriminating information for chain resolution.
250
+ * `any` / `unknown` / `object` / `never` / `void` match anything, so a
251
+ * sibling capture (e.g. a constructor-inferred type from `new X() as any`)
252
+ * is strictly preferable. Empty string emerges from malformed captures
253
+ * and is also useless. `null` / `undefined` shouldn't survive
254
+ * stripNullableUnion but are listed here for defense-in-depth. */
255
+ const UNINFORMATIVE_TYPES = new Set([
256
+ '',
257
+ 'any',
258
+ 'unknown',
259
+ 'object',
260
+ 'never',
261
+ 'void',
262
+ 'null',
263
+ 'undefined',
264
+ ]);
265
+ /** `readonly User[]` → `User[]`. Applied before stripArraySuffix so
266
+ * `readonly User[]` reduces through the same pipeline. */
267
+ function stripReadonly(text) {
268
+ if (text.startsWith('readonly '))
269
+ return text.slice('readonly '.length).trim();
270
+ return text;
271
+ }
272
+ /** `User | null` / `User | undefined` / `null | User | undefined` → `User`.
273
+ * Any number of `null` / `undefined` arms may appear; collapse to the
274
+ * single remaining discriminating arm. Preserves multi-arm unions
275
+ * of real types (`User | Admin`) since the concrete receiver type is
276
+ * ambiguous. */
277
+ function stripNullableUnion(text) {
278
+ const parts = text.split('|').map((p) => p.trim());
279
+ if (parts.length < 2)
280
+ return text;
281
+ const NULLS = new Set(['null', 'undefined']);
282
+ const nonNull = parts.filter((p) => !NULLS.has(p));
283
+ if (nonNull.length === 1)
284
+ return nonNull[0];
285
+ return text;
286
+ }
287
+ /** Single-arg generic wrappers transparent to receiver-type chain
288
+ * propagation: `Promise<X>`, `Array<X>`, `ReadonlyArray<X>`,
289
+ * `Readonly<X>`, `Iterable<X>`, `Iterator<X>`, `Set<X>`, `List<X>`,
290
+ * `Map<X>` (single-arg form rare but kept for completeness), etc.
291
+ * Multi-arg generics (`Map<K, V>`, `Record<K, V>`) are left alone —
292
+ * element semantics aren't unambiguous. */
293
+ function stripGeneric(text) {
294
+ const single = text.match(/^(?:[A-Za-z_][A-Za-z0-9_]*\.)?(?:Promise|Array|ReadonlyArray|Readonly|Iterable|Iterator|AsyncIterable|AsyncIterator|AsyncGenerator|Generator|Set|ReadonlySet|List|Awaited)<([^,<>]+)>$/);
295
+ if (single !== null)
296
+ return single[1].trim();
297
+ return text;
298
+ }
299
+ /** `User[]` / `(User)[]` → `User`. Chained `User[][]` unwraps one
300
+ * level at a time per resolve pass. */
301
+ function stripArraySuffix(text) {
302
+ if (text.endsWith('[]')) {
303
+ const inner = text.slice(0, -2).trim();
304
+ // Unwrap a single pair of parentheses introduced for precedence
305
+ // disambiguation: `(User | Admin)[]` — we leave the union intact
306
+ // but drop the parens.
307
+ if (inner.startsWith('(') && inner.endsWith(')')) {
308
+ return inner.slice(1, -1).trim();
309
+ }
310
+ return inner;
311
+ }
312
+ return text;
313
+ }
314
+ /** `models.User` → `User`. TS doesn't carry a qualified-suffix exception
315
+ * list today — `.values()` / `.keys()` use method-call syntax and are
316
+ * resolved via the member-call chain, not via a dotted type. */
317
+ function stripQualifier(text) {
318
+ const lastDot = text.lastIndexOf('.');
319
+ if (lastDot === -1)
320
+ return text;
321
+ return text.slice(lastDot + 1);
322
+ }
323
+ /**
324
+ * Would this interpreter reduce `text` to the type it CONTAINS rather than to
325
+ * the type it names? True for the array suffix (`Repo[]`) and for every
326
+ * transparent wrapper on {@link stripGeneric}'s list (`Array<Repo>`,
327
+ * `Promise<Repo>`, `Set<Repo>`, …).
328
+ *
329
+ * Exported for the ONE caller that must decline exactly what this returns true
330
+ * for: the JavaScript provider's JSDoc `@type` FIELD binding (#2833). Element
331
+ * reduction is right where it was built — a chain step, a `for…of` variable, an
332
+ * awaited value — and wrong for a field, whose declared type IS the container:
333
+ * a field annotated `{Repo[]}` reduced to `Repo` makes `this.repos.find(…)`,
334
+ * an Array method call, resolve to a repository class's own `find`. A wrong
335
+ * edge, which #2833 treats as strictly worse than a missing one.
336
+ *
337
+ * A predicate rather than a copied name list on purpose: the list lives in
338
+ * `stripGeneric` and a second copy would drift out of sync silently, exactly
339
+ * the failure mode `python/interpret.ts` records for its own reduction.
340
+ */
341
+ function reducesToContainedType(text) {
342
+ const trimmed = stripReadonly(text.trim());
343
+ return stripArraySuffix(trimmed) !== trimmed || stripGeneric(trimmed) !== trimmed;
344
+ }
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ /**
3
+ * TypeScript declaration-merging + LEGB precedence for the `mergeBindings`
4
+ * hook.
5
+ *
6
+ * TypeScript has a unique wrinkle that Python / C# don't: **declaration
7
+ * merging**. The same name can legally coexist in several "declaration
8
+ * spaces" simultaneously:
9
+ *
10
+ * - **value** space — `class X`, `function X`, `const X`, `var X`,
11
+ * `let X`, `enum X`, `namespace X` (adds runtime object)
12
+ * - **type** space — `interface X`, `type X`, `class X`, `enum X`
13
+ * - **namespace** space — `namespace X`, `class X` (static-accessed
14
+ * members are reachable via dotted name)
15
+ *
16
+ * Classes and enums are unique in that each declaration occupies both
17
+ * the value AND type spaces. This lets:
18
+ *
19
+ * class Foo {}
20
+ * interface Foo { bar: number; } // merges additional type members
21
+ * namespace Foo { export const X = 1; } // adds static-like value
22
+ *
23
+ * all coexist for the same name.
24
+ *
25
+ * ## Algorithm
26
+ *
27
+ * For each declaration space independently:
28
+ * 1. Tier bindings by origin (lower wins):
29
+ * 0 — `local`
30
+ * 1 — `import` / `namespace` / `reexport`
31
+ * 2 — `wildcard` (`export * from …`)
32
+ * 2. Keep only bindings at the best (lowest) tier in that space.
33
+ *
34
+ * Then union survivors across spaces and dedupe by `DefId`.
35
+ *
36
+ * ## Shadowing examples
37
+ *
38
+ * - `class Foo {}` + `function Foo() {}` in same scope → COMPILE ERROR
39
+ * in TS source, but if both reach us with distinct DefIds we keep
40
+ * both (value space has two locals at tier 0 — de-dup by nodeId
41
+ * preserves both). No worse than C#-style merge.
42
+ * - `class Foo {}` (local, value+type) + `import type { Foo } from './a'`
43
+ * (tier-1, type-only) → local wins in both type AND value spaces;
44
+ * the import is not kept.
45
+ * - `interface Foo {}` (local, type-only) + `import { Foo } from './a'`
46
+ * (tier-1, value+type) → local wins in type space; import wins in
47
+ * value space (local doesn't occupy it). Both kept.
48
+ * - `namespace Foo {}` (local, namespace+value) + `class Foo {}` (local,
49
+ * value+type) → both at tier 0 in their respective spaces, kept.
50
+ *
51
+ * ## Limitations
52
+ *
53
+ * - We classify imports by their `def.type` just like locals. Without
54
+ * a space-annotation on `ParsedImport`, `import type { Foo }` looks
55
+ * the same as `import { Foo }` at this layer — the parse phase
56
+ * decomposer marks type-only imports so the extractor CAN annotate
57
+ * `def.type = 'Type'` downstream if desired. Today it doesn't, so
58
+ * `import type` imports and value imports fall in the same bucket
59
+ * per their target def's NodeLabel. Parity with legacy behavior
60
+ * (which also doesn't track type-only separately) is preserved.
61
+ */
62
+ Object.defineProperty(exports, "__esModule", { value: true });
63
+ exports.typescriptMergeBindings = typescriptMergeBindings;
64
+ const TIER_LOCAL = 0;
65
+ const TIER_IMPORT = 1;
66
+ const TIER_WILDCARD = 2;
67
+ const TIER_UNKNOWN = 3;
68
+ function tierOf(b) {
69
+ switch (b.origin) {
70
+ case 'local':
71
+ return TIER_LOCAL;
72
+ case 'reexport':
73
+ case 'import':
74
+ case 'namespace':
75
+ return TIER_IMPORT;
76
+ case 'wildcard':
77
+ return TIER_WILDCARD;
78
+ default:
79
+ return TIER_UNKNOWN;
80
+ }
81
+ }
82
+ /**
83
+ * Map a `SymbolDefinition.type` (`NodeLabel`) to the set of TypeScript
84
+ * declaration spaces the binding occupies.
85
+ *
86
+ * Unknown / unused labels default to `['value']` — the permissive choice,
87
+ * matching legacy behavior where everything lives in a single flat bucket.
88
+ */
89
+ function spacesOf(type) {
90
+ switch (type) {
91
+ // value-only
92
+ case 'Function':
93
+ case 'Method':
94
+ case 'Variable':
95
+ case 'Const':
96
+ case 'Static':
97
+ case 'Property':
98
+ case 'Constructor':
99
+ case 'Macro':
100
+ return ['value'];
101
+ // type-only
102
+ case 'Interface':
103
+ case 'Type':
104
+ case 'TypeAlias':
105
+ case 'Typedef':
106
+ case 'Trait':
107
+ case 'Annotation':
108
+ case 'Decorator':
109
+ return ['type'];
110
+ // dual: value AND type
111
+ case 'Class':
112
+ case 'Enum':
113
+ case 'Struct':
114
+ case 'Record':
115
+ case 'Union':
116
+ return ['value', 'type'];
117
+ // namespace AND value (namespaces introduce a runtime object AND a
118
+ // named scope for static-style access)
119
+ case 'Namespace':
120
+ case 'Module':
121
+ return ['namespace', 'value'];
122
+ // catch-all — treat as value to match legacy permissive behavior
123
+ default:
124
+ return ['value'];
125
+ }
126
+ }
127
+ function typescriptMergeBindings(bindings) {
128
+ if (bindings.length === 0)
129
+ return bindings;
130
+ // Partition bindings by space. A single binding occupying two spaces
131
+ // (e.g. a class) is duplicated into both partitions; the final dedupe
132
+ // by nodeId collapses it back.
133
+ const perSpace = new Map();
134
+ for (const b of bindings) {
135
+ const spaces = spacesOf(b.def.type);
136
+ for (const s of spaces) {
137
+ const list = perSpace.get(s);
138
+ if (list === undefined)
139
+ perSpace.set(s, [b]);
140
+ else
141
+ list.push(b);
142
+ }
143
+ }
144
+ // Within each space, keep only the best-tier bindings.
145
+ const survivorsSet = new Set();
146
+ for (const list of perSpace.values()) {
147
+ let bestTier = Number.POSITIVE_INFINITY;
148
+ for (const b of list)
149
+ bestTier = Math.min(bestTier, tierOf(b));
150
+ for (const b of list) {
151
+ if (tierOf(b) === bestTier)
152
+ survivorsSet.add(b);
153
+ }
154
+ }
155
+ // Dedupe by def.nodeId. If the same binding survived in multiple
156
+ // spaces (e.g. a class in both value + type) we keep a single entry.
157
+ const seen = new Map();
158
+ for (const b of survivorsSet)
159
+ seen.set(b.def.nodeId, b);
160
+ return [...seen.values()];
161
+ }