gitnexus 1.6.10-rc.21 → 1.6.10-rc.211

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 (870) hide show
  1. package/README.md +212 -22
  2. package/dist/_shared/graph/types.d.ts +27 -8
  3. package/dist/_shared/graph/types.d.ts.map +1 -1
  4. package/dist/_shared/index.d.ts +4 -3
  5. package/dist/_shared/index.d.ts.map +1 -1
  6. package/dist/_shared/index.js +1 -1
  7. package/dist/_shared/index.js.map +1 -1
  8. package/dist/_shared/integrations/circuit-breaker.d.ts.map +1 -1
  9. package/dist/_shared/integrations/circuit-breaker.js.map +1 -1
  10. package/dist/_shared/integrations/resilient-fetch.d.ts +19 -1
  11. package/dist/_shared/integrations/resilient-fetch.d.ts.map +1 -1
  12. package/dist/_shared/integrations/resilient-fetch.js +23 -10
  13. package/dist/_shared/integrations/resilient-fetch.js.map +1 -1
  14. package/dist/_shared/language-detection.d.ts.map +1 -1
  15. package/dist/_shared/lbug/schema-constants.d.ts +2 -2
  16. package/dist/_shared/lbug/schema-constants.d.ts.map +1 -1
  17. package/dist/_shared/lbug/schema-constants.js +3 -0
  18. package/dist/_shared/lbug/schema-constants.js.map +1 -1
  19. package/dist/_shared/scope-resolution/callable-flow-site.d.ts +110 -0
  20. package/dist/_shared/scope-resolution/callable-flow-site.d.ts.map +1 -0
  21. package/dist/_shared/scope-resolution/callable-flow-site.js +11 -0
  22. package/dist/_shared/scope-resolution/callable-flow-site.js.map +1 -0
  23. package/dist/_shared/scope-resolution/evidence-weights.d.ts.map +1 -1
  24. package/dist/_shared/scope-resolution/finalize-algorithm.d.ts +6 -1
  25. package/dist/_shared/scope-resolution/finalize-algorithm.d.ts.map +1 -1
  26. package/dist/_shared/scope-resolution/finalize-algorithm.js +316 -37
  27. package/dist/_shared/scope-resolution/finalize-algorithm.js.map +1 -1
  28. package/dist/_shared/scope-resolution/parsed-file.d.ts +7 -0
  29. package/dist/_shared/scope-resolution/parsed-file.d.ts.map +1 -1
  30. package/dist/_shared/scope-resolution/reference-site.d.ts +124 -1
  31. package/dist/_shared/scope-resolution/reference-site.d.ts.map +1 -1
  32. package/dist/_shared/scope-resolution/registries/field-registry.js.map +1 -1
  33. package/dist/_shared/scope-resolution/registries/lookup-core.d.ts.map +1 -1
  34. package/dist/_shared/scope-resolution/registries/lookup-core.js +58 -2
  35. package/dist/_shared/scope-resolution/registries/lookup-core.js.map +1 -1
  36. package/dist/_shared/scope-resolution/registries/method-registry.js.map +1 -1
  37. package/dist/_shared/scope-resolution/scope-tree.d.ts.map +1 -1
  38. package/dist/_shared/scope-resolution/scope-tree.js.map +1 -1
  39. package/dist/_shared/scope-resolution/symbol-definition.d.ts +47 -0
  40. package/dist/_shared/scope-resolution/symbol-definition.d.ts.map +1 -1
  41. package/dist/_shared/scope-resolution/types.d.ts +297 -5
  42. package/dist/_shared/scope-resolution/types.d.ts.map +1 -1
  43. package/dist/cli/ai-context.d.ts +10 -2
  44. package/dist/cli/ai-context.js +128 -61
  45. package/dist/cli/analyze-config.d.ts +1 -1
  46. package/dist/cli/analyze-options.d.ts +131 -0
  47. package/dist/cli/analyze-options.js +1 -0
  48. package/dist/cli/analyze.d.ts +25 -114
  49. package/dist/cli/analyze.js +194 -36
  50. package/dist/cli/cli-message.d.ts +1 -1
  51. package/dist/cli/detect-changes-format.js +19 -2
  52. package/dist/cli/doctor.d.ts +23 -0
  53. package/dist/cli/doctor.js +72 -9
  54. package/dist/cli/editor-targets.js +6 -0
  55. package/dist/cli/eval-server.d.ts +23 -1
  56. package/dist/cli/eval-server.js +128 -9
  57. package/dist/cli/format-symbol.d.ts +15 -0
  58. package/dist/cli/format-symbol.js +17 -0
  59. package/dist/cli/generated-skill.d.ts +17 -0
  60. package/dist/cli/generated-skill.js +1 -0
  61. package/dist/cli/group.js +23 -2
  62. package/dist/cli/help-i18n.js +3 -0
  63. package/dist/cli/i18n/en.d.ts +17 -8
  64. package/dist/cli/i18n/en.js +19 -8
  65. package/dist/cli/i18n/resources.d.ts +26 -8
  66. package/dist/cli/i18n/zh-CN.d.ts +9 -0
  67. package/dist/cli/i18n/zh-CN.js +17 -8
  68. package/dist/cli/index.js +16 -9
  69. package/dist/cli/lazy-action.d.ts +7 -0
  70. package/dist/cli/lazy-action.js +27 -0
  71. package/dist/cli/mcp.js +6 -3
  72. package/dist/cli/resolve-invocation.d.ts +7 -3
  73. package/dist/cli/resolve-invocation.js +7 -3
  74. package/dist/cli/setup.d.ts +8 -0
  75. package/dist/cli/setup.js +30 -7
  76. package/dist/cli/skill-gen.d.ts +1 -6
  77. package/dist/cli/skill-gen.js +88 -18
  78. package/dist/cli/standard-skills.d.ts +76 -0
  79. package/dist/cli/standard-skills.js +45 -0
  80. package/dist/cli/status.d.ts +4 -1
  81. package/dist/cli/status.js +57 -4
  82. package/dist/cli/tool.d.ts +1 -0
  83. package/dist/cli/tool.js +75 -7
  84. package/dist/cli/uninstall.js +7 -2
  85. package/dist/cli/wiki.d.ts +1 -0
  86. package/dist/cli/wiki.js +59 -10
  87. package/dist/config/ignore-service.d.ts +2 -0
  88. package/dist/config/ignore-service.js +31 -4
  89. package/dist/core/analysis-features.d.ts +21 -0
  90. package/dist/core/analysis-features.js +59 -0
  91. package/dist/core/analyzer-identity.d.ts +154 -0
  92. package/dist/core/analyzer-identity.js +2158 -0
  93. package/dist/core/augmentation/engine.js +95 -76
  94. package/dist/core/embedding-checkpoint.d.ts +143 -0
  95. package/dist/core/embedding-checkpoint.js +221 -0
  96. package/dist/core/embedding-count.d.ts +61 -0
  97. package/dist/core/embedding-count.js +69 -0
  98. package/dist/core/embeddings/ast-utils.js +9 -1
  99. package/dist/core/embeddings/embedder.d.ts +3 -2
  100. package/dist/core/embeddings/embedder.js +8 -5
  101. package/dist/core/embeddings/embedding-identity.d.ts +11 -0
  102. package/dist/core/embeddings/embedding-identity.js +24 -0
  103. package/dist/core/embeddings/embedding-pipeline.d.ts +24 -1
  104. package/dist/core/embeddings/embedding-pipeline.js +341 -19
  105. package/dist/core/embeddings/http-client.d.ts +10 -2
  106. package/dist/core/embeddings/http-client.js +282 -47
  107. package/dist/core/embeddings/node-module-compat.d.ts +4 -2
  108. package/dist/core/embeddings/node-module-compat.js +4 -2
  109. package/dist/core/embeddings/onnxruntime-common-resolver.js +5 -5
  110. package/dist/core/embeddings/onnxruntime-node-resolver.js +2 -2
  111. package/dist/core/embeddings/runtime-install.js +1 -1
  112. package/dist/core/git-staleness.js +1 -1
  113. package/dist/core/graph/graph.js +3 -0
  114. package/dist/core/graph/import-cycles.d.ts +194 -3
  115. package/dist/core/graph/import-cycles.js +522 -73
  116. package/dist/core/graph/types.d.ts +18 -0
  117. package/dist/core/group/bridge-db.js +5 -27
  118. package/dist/core/group/cross-impact.d.ts +21 -0
  119. package/dist/core/group/cross-impact.js +128 -15
  120. package/dist/core/group/cross-trace.js +27 -16
  121. package/dist/core/group/extractors/http-patterns/java.js +91 -14
  122. package/dist/core/group/extractors/http-patterns/node.js +19 -0
  123. package/dist/core/group/extractors/http-patterns/types.d.ts +8 -0
  124. package/dist/core/group/extractors/http-route-extractor.d.ts +1 -0
  125. package/dist/core/group/extractors/http-route-extractor.js +122 -48
  126. package/dist/core/group/extractors/include-extractor.js +20 -2
  127. package/dist/core/group/extractors/manifest-extractor.d.ts +1 -1
  128. package/dist/core/group/extractors/manifest-extractor.js +7 -7
  129. package/dist/core/group/service.js +10 -1
  130. package/dist/core/group/storage.js +2 -33
  131. package/dist/core/group/types.d.ts +18 -0
  132. package/dist/core/incremental/subgraph-extract.d.ts +9 -6
  133. package/dist/core/incremental/subgraph-extract.js +33 -10
  134. package/dist/core/index-freshness.d.ts +80 -0
  135. package/dist/core/index-freshness.js +120 -0
  136. package/dist/core/ingestion/call-processor.d.ts +13 -1
  137. package/dist/core/ingestion/call-processor.js +110 -3
  138. package/dist/core/ingestion/cfg/callee-cell-format.d.ts +42 -0
  139. package/dist/core/ingestion/cfg/callee-cell-format.js +42 -0
  140. package/dist/core/ingestion/cfg/emit.d.ts +8 -23
  141. package/dist/core/ingestion/cfg/emit.js +9 -23
  142. package/dist/core/ingestion/class-extractors/configs/go.js +10 -5
  143. package/dist/core/ingestion/class-extractors/configs/jvm.js +29 -0
  144. package/dist/core/ingestion/cluster-enricher.js +8 -4
  145. package/dist/core/ingestion/cobol/cobol-preprocessor.js +1 -1
  146. package/dist/core/ingestion/community-processor.d.ts +21 -3
  147. package/dist/core/ingestion/community-processor.js +88 -83
  148. package/dist/core/ingestion/di-extractors/index.d.ts +22 -34
  149. package/dist/core/ingestion/di-extractors/index.js +17 -18
  150. package/dist/core/ingestion/di-extractors/spring.d.ts +27 -5
  151. package/dist/core/ingestion/di-extractors/spring.js +87 -3
  152. package/dist/core/ingestion/di-extractors/types.d.ts +60 -0
  153. package/dist/core/ingestion/di-extractors/types.js +15 -0
  154. package/dist/core/ingestion/emit-references.js +4 -0
  155. package/dist/core/ingestion/filesystem-walker.js +16 -12
  156. package/dist/core/ingestion/finalize-orchestrator.js +1 -0
  157. package/dist/core/ingestion/frameworks/spring/analysis-features.d.ts +9 -0
  158. package/dist/core/ingestion/frameworks/spring/analysis-features.js +41 -0
  159. package/dist/core/ingestion/frameworks/spring/annotation-arguments.d.ts +13 -0
  160. package/dist/core/ingestion/frameworks/spring/annotation-arguments.js +227 -0
  161. package/dist/core/ingestion/frameworks/spring/aop-candidates.d.ts +15 -0
  162. package/dist/core/ingestion/frameworks/spring/aop-candidates.js +85 -0
  163. package/dist/core/ingestion/frameworks/spring/aop.d.ts +118 -0
  164. package/dist/core/ingestion/frameworks/spring/aop.js +476 -0
  165. package/dist/core/ingestion/frameworks/spring/auto-configuration.d.ts +8 -0
  166. package/dist/core/ingestion/frameworks/spring/auto-configuration.js +16 -0
  167. package/dist/core/ingestion/frameworks/spring/bean-candidates.d.ts +30 -0
  168. package/dist/core/ingestion/frameworks/spring/bean-candidates.js +182 -0
  169. package/dist/core/ingestion/frameworks/spring/bean-catalog.d.ts +12 -0
  170. package/dist/core/ingestion/frameworks/spring/bean-catalog.js +27 -0
  171. package/dist/core/ingestion/frameworks/spring/bean-factories.d.ts +33 -0
  172. package/dist/core/ingestion/frameworks/spring/bean-factories.js +65 -0
  173. package/dist/core/ingestion/frameworks/spring/conditionals.d.ts +25 -0
  174. package/dist/core/ingestion/frameworks/spring/conditionals.js +319 -0
  175. package/dist/core/ingestion/frameworks/spring/config-bindings.d.ts +24 -0
  176. package/dist/core/ingestion/frameworks/spring/config-bindings.js +115 -0
  177. package/dist/core/ingestion/frameworks/spring/di-metadata.d.ts +48 -0
  178. package/dist/core/ingestion/frameworks/spring/di-metadata.js +379 -0
  179. package/dist/core/ingestion/frameworks/spring/non-http-handlers.d.ts +28 -0
  180. package/dist/core/ingestion/frameworks/spring/non-http-handlers.js +152 -0
  181. package/dist/core/ingestion/frameworks/spring/resource-injection.d.ts +5 -0
  182. package/dist/core/ingestion/frameworks/spring/resource-injection.js +91 -0
  183. package/dist/core/ingestion/import-resolvers/configs/csharp.js +5 -1
  184. package/dist/core/ingestion/import-resolvers/configs/swift.js +13 -0
  185. package/dist/core/ingestion/import-resolvers/csharp.d.ts +9 -1
  186. package/dist/core/ingestion/import-resolvers/csharp.js +234 -27
  187. package/dist/core/ingestion/import-resolvers/go.d.ts +11 -1
  188. package/dist/core/ingestion/import-resolvers/go.js +44 -17
  189. package/dist/core/ingestion/import-resolvers/jvm.d.ts +2 -2
  190. package/dist/core/ingestion/import-resolvers/node-workspace-packages.d.ts +90 -0
  191. package/dist/core/ingestion/import-resolvers/node-workspace-packages.js +428 -0
  192. package/dist/core/ingestion/import-resolvers/package-dir-index.d.ts +124 -0
  193. package/dist/core/ingestion/import-resolvers/package-dir-index.js +223 -0
  194. package/dist/core/ingestion/import-resolvers/pass-cache.d.ts +50 -0
  195. package/dist/core/ingestion/import-resolvers/pass-cache.js +60 -0
  196. package/dist/core/ingestion/import-resolvers/per-file-set.d.ts +71 -0
  197. package/dist/core/ingestion/import-resolvers/per-file-set.js +11 -0
  198. package/dist/core/ingestion/import-resolvers/php.d.ts +1 -1
  199. package/dist/core/ingestion/import-resolvers/php.js +27 -8
  200. package/dist/core/ingestion/import-resolvers/python-file-index.d.ts +201 -0
  201. package/dist/core/ingestion/import-resolvers/python-file-index.js +302 -0
  202. package/dist/core/ingestion/import-resolvers/python.js +25 -6
  203. package/dist/core/ingestion/import-resolvers/ruby.d.ts +1 -1
  204. package/dist/core/ingestion/import-resolvers/rust.d.ts +2 -2
  205. package/dist/core/ingestion/import-resolvers/standard.d.ts +1 -1
  206. package/dist/core/ingestion/import-resolvers/types.d.ts +1 -12
  207. package/dist/core/ingestion/import-resolvers/utils.d.ts +65 -6
  208. package/dist/core/ingestion/import-resolvers/utils.js +215 -36
  209. package/dist/core/ingestion/import-resolvers/workspace-file-index.d.ts +72 -0
  210. package/dist/core/ingestion/import-resolvers/workspace-file-index.js +58 -0
  211. package/dist/core/ingestion/language-config.d.ts +20 -1
  212. package/dist/core/ingestion/language-config.js +18 -23
  213. package/dist/core/ingestion/language-provider.d.ts +133 -7
  214. package/dist/core/ingestion/languages/c/captures.js +63 -0
  215. package/dist/core/ingestion/languages/c/import-target.js +12 -16
  216. package/dist/core/ingestion/languages/c/query.js +17 -0
  217. package/dist/core/ingestion/languages/c/scope-resolver.js +26 -19
  218. package/dist/core/ingestion/languages/c/static-linkage.js +12 -16
  219. package/dist/core/ingestion/languages/c-cpp.js +13 -0
  220. package/dist/core/ingestion/languages/cobol/captures.js +93 -0
  221. package/dist/core/ingestion/languages/cobol/scope-resolver.js +34 -20
  222. package/dist/core/ingestion/languages/cobol.js +13 -0
  223. package/dist/core/ingestion/languages/cpp/adl.d.ts +2 -2
  224. package/dist/core/ingestion/languages/cpp/adl.js +67 -44
  225. package/dist/core/ingestion/languages/cpp/captures.js +222 -3
  226. package/dist/core/ingestion/languages/cpp/file-local-linkage.js +11 -15
  227. package/dist/core/ingestion/languages/cpp/inline-namespaces.d.ts +28 -8
  228. package/dist/core/ingestion/languages/cpp/inline-namespaces.js +242 -68
  229. package/dist/core/ingestion/languages/cpp/interpret.d.ts +2 -0
  230. package/dist/core/ingestion/languages/cpp/interpret.js +126 -6
  231. package/dist/core/ingestion/languages/cpp/query.js +106 -0
  232. package/dist/core/ingestion/languages/cpp/scope-resolver.js +62 -20
  233. package/dist/core/ingestion/languages/csharp/accessor-unwrap.d.ts +2 -15
  234. package/dist/core/ingestion/languages/csharp/accessor-unwrap.js +18 -10
  235. package/dist/core/ingestion/languages/csharp/captures.js +44 -0
  236. package/dist/core/ingestion/languages/csharp/import-target.js +46 -72
  237. package/dist/core/ingestion/languages/csharp/namespace-siblings.js +5 -1
  238. package/dist/core/ingestion/languages/csharp/query.js +25 -5
  239. package/dist/core/ingestion/languages/csharp/scope-resolver.js +75 -2
  240. package/dist/core/ingestion/languages/dart/captures.d.ts +10 -0
  241. package/dist/core/ingestion/languages/dart/captures.js +686 -16
  242. package/dist/core/ingestion/languages/dart/extension-type-preprocess.d.ts +7 -0
  243. package/dist/core/ingestion/languages/dart/extension-type-preprocess.js +30 -0
  244. package/dist/core/ingestion/languages/dart/import-target.js +32 -9
  245. package/dist/core/ingestion/languages/dart/index.d.ts +1 -1
  246. package/dist/core/ingestion/languages/dart/index.js +1 -1
  247. package/dist/core/ingestion/languages/dart/query.js +98 -1
  248. package/dist/core/ingestion/languages/dart/scope-resolver.js +14 -3
  249. package/dist/core/ingestion/languages/dart/simple-hooks.js +9 -0
  250. package/dist/core/ingestion/languages/dart.js +8 -1
  251. package/dist/core/ingestion/languages/go/captures.js +142 -3
  252. package/dist/core/ingestion/languages/go/generic-type-parameters.d.ts +31 -0
  253. package/dist/core/ingestion/languages/go/generic-type-parameters.js +140 -0
  254. package/dist/core/ingestion/languages/go/import-target.d.ts +3 -10
  255. package/dist/core/ingestion/languages/go/import-target.js +34 -30
  256. package/dist/core/ingestion/languages/go/index.d.ts +1 -1
  257. package/dist/core/ingestion/languages/go/interface-impls.d.ts +9 -1
  258. package/dist/core/ingestion/languages/go/interface-impls.js +693 -87
  259. package/dist/core/ingestion/languages/go/interpret.d.ts +2 -0
  260. package/dist/core/ingestion/languages/go/interpret.js +22 -8
  261. package/dist/core/ingestion/languages/go/method-owners.js +31 -12
  262. package/dist/core/ingestion/languages/go/package-clause.d.ts +46 -0
  263. package/dist/core/ingestion/languages/go/package-clause.js +75 -0
  264. package/dist/core/ingestion/languages/go/package-siblings.js +7 -11
  265. package/dist/core/ingestion/languages/go/query.js +56 -3
  266. package/dist/core/ingestion/languages/go/scope-resolver.js +39 -0
  267. package/dist/core/ingestion/languages/go.js +9 -0
  268. package/dist/core/ingestion/languages/java/analysis-features.d.ts +7 -0
  269. package/dist/core/ingestion/languages/java/analysis-features.js +25 -0
  270. package/dist/core/ingestion/languages/java/capture-side-channel.d.ts +38 -0
  271. package/dist/core/ingestion/languages/java/capture-side-channel.js +124 -0
  272. package/dist/core/ingestion/languages/java/captures.d.ts +4 -3
  273. package/dist/core/ingestion/languages/java/captures.js +321 -49
  274. package/dist/core/ingestion/languages/java/import-target.d.ts +49 -9
  275. package/dist/core/ingestion/languages/java/import-target.js +68 -88
  276. package/dist/core/ingestion/languages/java/interpret.js +3 -2
  277. package/dist/core/ingestion/languages/java/module-resolution.d.ts +62 -0
  278. package/dist/core/ingestion/languages/java/module-resolution.js +142 -0
  279. package/dist/core/ingestion/languages/java/package-facts.d.ts +5 -0
  280. package/dist/core/ingestion/languages/java/package-facts.js +9 -0
  281. package/dist/core/ingestion/languages/java/package-siblings.d.ts +3 -16
  282. package/dist/core/ingestion/languages/java/package-siblings.js +8 -147
  283. package/dist/core/ingestion/languages/java/query.js +39 -3
  284. package/dist/core/ingestion/languages/java/record-components.d.ts +14 -0
  285. package/dist/core/ingestion/languages/java/record-components.js +185 -0
  286. package/dist/core/ingestion/languages/java/scope-resolver.js +35 -2
  287. package/dist/core/ingestion/languages/java/spring-aop.d.ts +12 -0
  288. package/dist/core/ingestion/languages/java/spring-aop.js +49 -0
  289. package/dist/core/ingestion/languages/java/spring-bean-metadata.d.ts +2 -0
  290. package/dist/core/ingestion/languages/java/spring-bean-metadata.js +8 -0
  291. package/dist/core/ingestion/languages/java/spring-conditionals.d.ts +11 -0
  292. package/dist/core/ingestion/languages/java/spring-conditionals.js +48 -0
  293. package/dist/core/ingestion/languages/java/spring-config-bindings.d.ts +23 -0
  294. package/dist/core/ingestion/languages/java/spring-config-bindings.js +215 -0
  295. package/dist/core/ingestion/languages/java/spring-di.d.ts +20 -0
  296. package/dist/core/ingestion/languages/java/spring-di.js +160 -0
  297. package/dist/core/ingestion/languages/java/spring-non-http-handlers.d.ts +7 -0
  298. package/dist/core/ingestion/languages/java/spring-non-http-handlers.js +32 -0
  299. package/dist/core/ingestion/languages/java.js +76 -3
  300. package/dist/core/ingestion/languages/javascript/captures.d.ts +6 -1
  301. package/dist/core/ingestion/languages/javascript/captures.js +278 -4
  302. package/dist/core/ingestion/languages/javascript/import-target.d.ts +17 -21
  303. package/dist/core/ingestion/languages/javascript/import-target.js +24 -41
  304. package/dist/core/ingestion/languages/javascript/index.d.ts +54 -5
  305. package/dist/core/ingestion/languages/javascript/index.js +54 -5
  306. package/dist/core/ingestion/languages/javascript/query.d.ts +1 -0
  307. package/dist/core/ingestion/languages/javascript/query.js +232 -5
  308. package/dist/core/ingestion/languages/javascript/scope-resolver.js +12 -0
  309. package/dist/core/ingestion/languages/javascript/simple-hooks.js +2 -1
  310. package/dist/core/ingestion/languages/jvm/package-facts.d.ts +35 -0
  311. package/dist/core/ingestion/languages/jvm/package-facts.js +40 -0
  312. package/dist/core/ingestion/languages/jvm/package-siblings.d.ts +14 -0
  313. package/dist/core/ingestion/languages/jvm/package-siblings.js +197 -0
  314. package/dist/core/ingestion/languages/kotlin/capture-side-channel.d.ts +40 -3
  315. package/dist/core/ingestion/languages/kotlin/capture-side-channel.js +111 -8
  316. package/dist/core/ingestion/languages/kotlin/captures.js +112 -0
  317. package/dist/core/ingestion/languages/kotlin/import-target.d.ts +8 -1
  318. package/dist/core/ingestion/languages/kotlin/import-target.js +20 -123
  319. package/dist/core/ingestion/languages/kotlin/index.d.ts +1 -0
  320. package/dist/core/ingestion/languages/kotlin/index.js +1 -0
  321. package/dist/core/ingestion/languages/kotlin/module-resolution.d.ts +22 -0
  322. package/dist/core/ingestion/languages/kotlin/module-resolution.js +108 -0
  323. package/dist/core/ingestion/languages/kotlin/package-facts.d.ts +5 -0
  324. package/dist/core/ingestion/languages/kotlin/package-facts.js +9 -0
  325. package/dist/core/ingestion/languages/kotlin/package-siblings.d.ts +4 -0
  326. package/dist/core/ingestion/languages/kotlin/package-siblings.js +8 -0
  327. package/dist/core/ingestion/languages/kotlin/query.js +47 -2
  328. package/dist/core/ingestion/languages/kotlin/scope-resolver.js +36 -3
  329. package/dist/core/ingestion/languages/kotlin/spring-aop.d.ts +12 -0
  330. package/dist/core/ingestion/languages/kotlin/spring-aop.js +64 -0
  331. package/dist/core/ingestion/languages/kotlin/spring-bean-metadata.d.ts +2 -0
  332. package/dist/core/ingestion/languages/kotlin/spring-bean-metadata.js +8 -0
  333. package/dist/core/ingestion/languages/kotlin/spring-conditionals.d.ts +12 -0
  334. package/dist/core/ingestion/languages/kotlin/spring-conditionals.js +49 -0
  335. package/dist/core/ingestion/languages/kotlin/spring-di.d.ts +20 -0
  336. package/dist/core/ingestion/languages/kotlin/spring-di.js +299 -0
  337. package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.d.ts +10 -0
  338. package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.js +41 -0
  339. package/dist/core/ingestion/languages/kotlin.js +5 -6
  340. package/dist/core/ingestion/languages/php/captures.d.ts +5 -0
  341. package/dist/core/ingestion/languages/php/captures.js +359 -51
  342. package/dist/core/ingestion/languages/php/import-decomposer.js +12 -0
  343. package/dist/core/ingestion/languages/php/import-target.d.ts +2 -1
  344. package/dist/core/ingestion/languages/php/import-target.js +229 -7
  345. package/dist/core/ingestion/languages/php/interpret.js +10 -0
  346. package/dist/core/ingestion/languages/php/query.js +31 -0
  347. package/dist/core/ingestion/languages/php/scope-resolver.js +1 -1
  348. package/dist/core/ingestion/languages/python/arity-metadata.d.ts +1 -0
  349. package/dist/core/ingestion/languages/python/arity-metadata.js +1 -0
  350. package/dist/core/ingestion/languages/python/captures.d.ts +3 -4
  351. package/dist/core/ingestion/languages/python/captures.js +53 -5
  352. package/dist/core/ingestion/languages/python/import-decomposer.js +22 -1
  353. package/dist/core/ingestion/languages/python/import-target.d.ts +42 -1
  354. package/dist/core/ingestion/languages/python/import-target.js +277 -91
  355. package/dist/core/ingestion/languages/python/index.d.ts +1 -1
  356. package/dist/core/ingestion/languages/python/index.js +1 -1
  357. package/dist/core/ingestion/languages/python/interpret.d.ts +52 -0
  358. package/dist/core/ingestion/languages/python/interpret.js +249 -3
  359. package/dist/core/ingestion/languages/python/query.js +9 -0
  360. package/dist/core/ingestion/languages/python/receiver-binding.d.ts +17 -2
  361. package/dist/core/ingestion/languages/python/receiver-binding.js +192 -2
  362. package/dist/core/ingestion/languages/python/scope-resolver.js +27 -4
  363. package/dist/core/ingestion/languages/python/simple-hooks.d.ts +5 -5
  364. package/dist/core/ingestion/languages/python/simple-hooks.js +9 -5
  365. package/dist/core/ingestion/languages/ruby/captures.js +200 -0
  366. package/dist/core/ingestion/languages/ruby/import-target.js +7 -5
  367. package/dist/core/ingestion/languages/ruby/query.js +93 -0
  368. package/dist/core/ingestion/languages/ruby/scope-resolver.js +2 -0
  369. package/dist/core/ingestion/languages/ruby/simple-hooks.d.ts +1 -1
  370. package/dist/core/ingestion/languages/ruby/simple-hooks.js +22 -1
  371. package/dist/core/ingestion/languages/rust/captures.js +52 -1
  372. package/dist/core/ingestion/languages/rust/interpret.js +18 -0
  373. package/dist/core/ingestion/languages/rust/method-owners.js +11 -1
  374. package/dist/core/ingestion/languages/rust/module-path.d.ts +126 -0
  375. package/dist/core/ingestion/languages/rust/module-path.js +214 -0
  376. package/dist/core/ingestion/languages/rust/qualified-call.d.ts +41 -0
  377. package/dist/core/ingestion/languages/rust/qualified-call.js +481 -0
  378. package/dist/core/ingestion/languages/rust/query.js +48 -6
  379. package/dist/core/ingestion/languages/rust/range-binding.d.ts +1 -11
  380. package/dist/core/ingestion/languages/rust/range-binding.js +149 -63
  381. package/dist/core/ingestion/languages/rust/scope-resolver.js +21 -2
  382. package/dist/core/ingestion/languages/rust.js +17 -0
  383. package/dist/core/ingestion/languages/swift/captures.js +99 -3
  384. package/dist/core/ingestion/languages/swift/conditional-directive-preprocess.d.ts +48 -0
  385. package/dist/core/ingestion/languages/swift/conditional-directive-preprocess.js +253 -0
  386. package/dist/core/ingestion/languages/swift/import-target.js +4 -9
  387. package/dist/core/ingestion/languages/swift/query.js +17 -0
  388. package/dist/core/ingestion/languages/swift/receiver-binding.d.ts +8 -0
  389. package/dist/core/ingestion/languages/swift/receiver-binding.js +6 -2
  390. package/dist/core/ingestion/languages/swift.js +2 -0
  391. package/dist/core/ingestion/languages/typescript/captures.d.ts +90 -1
  392. package/dist/core/ingestion/languages/typescript/captures.js +288 -5
  393. package/dist/core/ingestion/languages/typescript/cjs-export-assignment.d.ts +134 -0
  394. package/dist/core/ingestion/languages/typescript/cjs-export-assignment.js +523 -0
  395. package/dist/core/ingestion/languages/typescript/cjs-module-exports.d.ts +54 -0
  396. package/dist/core/ingestion/languages/typescript/cjs-module-exports.js +191 -0
  397. package/dist/core/ingestion/languages/typescript/file-candidates.d.ts +29 -0
  398. package/dist/core/ingestion/languages/typescript/file-candidates.js +70 -0
  399. package/dist/core/ingestion/languages/typescript/import-decomposer.d.ts +28 -1
  400. package/dist/core/ingestion/languages/typescript/import-decomposer.js +125 -10
  401. package/dist/core/ingestion/languages/typescript/import-target.d.ts +25 -37
  402. package/dist/core/ingestion/languages/typescript/import-target.js +24 -26
  403. package/dist/core/ingestion/languages/typescript/interpret.d.ts +21 -1
  404. package/dist/core/ingestion/languages/typescript/interpret.js +45 -5
  405. package/dist/core/ingestion/languages/typescript/module-resolution.d.ts +48 -0
  406. package/dist/core/ingestion/languages/typescript/module-resolution.js +171 -0
  407. package/dist/core/ingestion/languages/typescript/nuxt-auto-imports.js +2 -1
  408. package/dist/core/ingestion/languages/typescript/query.d.ts +1 -0
  409. package/dist/core/ingestion/languages/typescript/query.js +340 -14
  410. package/dist/core/ingestion/languages/typescript/receiver-binding.d.ts +17 -0
  411. package/dist/core/ingestion/languages/typescript/receiver-binding.js +27 -0
  412. package/dist/core/ingestion/languages/typescript/scope-resolver.js +27 -40
  413. package/dist/core/ingestion/languages/typescript/simple-hooks.d.ts +0 -10
  414. package/dist/core/ingestion/languages/typescript/simple-hooks.js +22 -22
  415. package/dist/core/ingestion/languages/typescript/tsconfig.d.ts +59 -0
  416. package/dist/core/ingestion/languages/typescript/tsconfig.js +291 -0
  417. package/dist/core/ingestion/languages/typescript.js +87 -1
  418. package/dist/core/ingestion/languages/vue/import-target.d.ts +6 -22
  419. package/dist/core/ingestion/languages/vue/import-target.js +11 -47
  420. package/dist/core/ingestion/languages/vue/scope-resolver.js +4 -2
  421. package/dist/core/ingestion/local-symbol-pruner.js +11 -11
  422. package/dist/core/ingestion/method-extractors/configs/csharp.js +1 -0
  423. package/dist/core/ingestion/method-extractors/generic.js +1 -0
  424. package/dist/core/ingestion/method-types.d.ts +16 -0
  425. package/dist/core/ingestion/parsing-processor.js +32 -1
  426. package/dist/core/ingestion/pipeline-phases/di.d.ts +8 -33
  427. package/dist/core/ingestion/pipeline-phases/di.js +275 -157
  428. package/dist/core/ingestion/pipeline-phases/index.d.ts +3 -0
  429. package/dist/core/ingestion/pipeline-phases/index.js +3 -0
  430. package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +15 -0
  431. package/dist/core/ingestion/pipeline-phases/parse-impl.js +158 -3
  432. package/dist/core/ingestion/pipeline-phases/parse.js +5 -0
  433. package/dist/core/ingestion/pipeline-phases/processes.d.ts +11 -2
  434. package/dist/core/ingestion/pipeline-phases/processes.js +102 -7
  435. package/dist/core/ingestion/pipeline-phases/routes.js +56 -10
  436. package/dist/core/ingestion/pipeline-phases/spring-aop.d.ts +34 -0
  437. package/dist/core/ingestion/pipeline-phases/spring-aop.js +439 -0
  438. package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.d.ts +34 -0
  439. package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.js +255 -0
  440. package/dist/core/ingestion/pipeline-phases/spring-config.d.ts +37 -0
  441. package/dist/core/ingestion/pipeline-phases/spring-config.js +433 -0
  442. package/dist/core/ingestion/pipeline-phases/types.d.ts +7 -0
  443. package/dist/core/ingestion/pipeline.d.ts +27 -3
  444. package/dist/core/ingestion/pipeline.js +62 -12
  445. package/dist/core/ingestion/process-processor.d.ts +109 -2
  446. package/dist/core/ingestion/process-processor.js +464 -52
  447. package/dist/core/ingestion/resolve-references.d.ts +6 -1
  448. package/dist/core/ingestion/resolve-references.js +78 -6
  449. package/dist/core/ingestion/route-extractors/data-route-table.d.ts +25 -0
  450. package/dist/core/ingestion/route-extractors/data-route-table.js +864 -0
  451. package/dist/core/ingestion/route-extractors/dispatch-guard.d.ts +96 -0
  452. package/dist/core/ingestion/route-extractors/dispatch-guard.js +1184 -0
  453. package/dist/core/ingestion/route-extractors/spring-shared.d.ts +11 -0
  454. package/dist/core/ingestion/route-extractors/spring-shared.js +89 -0
  455. package/dist/core/ingestion/route-extractors/spring.js +109 -24
  456. package/dist/core/ingestion/scope-extractor-bridge.js +9 -1
  457. package/dist/core/ingestion/scope-extractor.d.ts +22 -7
  458. package/dist/core/ingestion/scope-extractor.js +617 -59
  459. package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +381 -22
  460. package/dist/core/ingestion/scope-resolution/contract/scope-resolver.js +16 -5
  461. package/dist/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.d.ts +7 -7
  462. package/dist/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.js +8 -7
  463. package/dist/core/ingestion/scope-resolution/graph-bridge/edges.d.ts +15 -1
  464. package/dist/core/ingestion/scope-resolution/graph-bridge/edges.js +53 -0
  465. package/dist/core/ingestion/scope-resolution/graph-bridge/ids.d.ts +20 -15
  466. package/dist/core/ingestion/scope-resolution/graph-bridge/ids.js +275 -41
  467. package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.d.ts +123 -0
  468. package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +171 -17
  469. package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.d.ts +56 -1
  470. package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +130 -32
  471. package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.d.ts +30 -1
  472. package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +46 -3
  473. package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.d.ts +64 -0
  474. package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.js +1233 -0
  475. package/dist/core/ingestion/scope-resolution/passes/compound-receiver.d.ts +107 -5
  476. package/dist/core/ingestion/scope-resolution/passes/compound-receiver.js +590 -33
  477. package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +19 -4
  478. package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +160 -4
  479. package/dist/core/ingestion/scope-resolution/passes/imported-value-refs.d.ts +34 -0
  480. package/dist/core/ingestion/scope-resolution/passes/imported-value-refs.js +62 -0
  481. package/dist/core/ingestion/scope-resolution/passes/property-dispatch.d.ts +64 -0
  482. package/dist/core/ingestion/scope-resolution/passes/property-dispatch.js +118 -0
  483. package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.d.ts +109 -8
  484. package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +931 -92
  485. package/dist/core/ingestion/scope-resolution/passes/return-shape-members.d.ts +58 -0
  486. package/dist/core/ingestion/scope-resolution/passes/return-shape-members.js +458 -0
  487. package/dist/core/ingestion/scope-resolution/passes/unique-name-properties.d.ts +180 -0
  488. package/dist/core/ingestion/scope-resolution/passes/unique-name-properties.js +418 -0
  489. package/dist/core/ingestion/scope-resolution/pipeline/phase.d.ts +34 -0
  490. package/dist/core/ingestion/scope-resolution/pipeline/phase.js +82 -38
  491. package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +61 -1
  492. package/dist/core/ingestion/scope-resolution/pipeline/run.js +384 -48
  493. package/dist/core/ingestion/scope-resolution/resolution-outcome.d.ts +112 -2
  494. package/dist/core/ingestion/scope-resolution/resolution-outcome.js +38 -1
  495. package/dist/core/ingestion/scope-resolution/scope/namespace-targets.d.ts +25 -3
  496. package/dist/core/ingestion/scope-resolution/scope/namespace-targets.js +36 -16
  497. package/dist/core/ingestion/scope-resolution/scope/walkers.d.ts +210 -9
  498. package/dist/core/ingestion/scope-resolution/scope/walkers.js +968 -56
  499. package/dist/core/ingestion/scope-resolution/summary-maps.d.ts +28 -0
  500. package/dist/core/ingestion/scope-resolution/summary-maps.js +50 -0
  501. package/dist/core/ingestion/scope-resolution/undecided-satisfaction.d.ts +55 -0
  502. package/dist/core/ingestion/scope-resolution/undecided-satisfaction.js +37 -0
  503. package/dist/core/ingestion/scope-resolution/unresolved-receivers.d.ts +109 -0
  504. package/dist/core/ingestion/scope-resolution/unresolved-receivers.js +204 -0
  505. package/dist/core/ingestion/scope-resolution/utils/definition-id.d.ts +13 -0
  506. package/dist/core/ingestion/scope-resolution/utils/definition-id.js +19 -0
  507. package/dist/core/ingestion/scope-resolution/utils/generic-instantiation.d.ts +171 -0
  508. package/dist/core/ingestion/scope-resolution/utils/generic-instantiation.js +218 -0
  509. package/dist/core/ingestion/scope-resolution/workspace-index-types.d.ts +34 -0
  510. package/dist/core/ingestion/scope-resolution/workspace-index-types.js +15 -0
  511. package/dist/core/ingestion/scope-resolution/workspace-index.d.ts +7 -20
  512. package/dist/core/ingestion/taint/typescript-model.js +34 -2
  513. package/dist/core/ingestion/tree-sitter-queries.d.ts +11 -11
  514. package/dist/core/ingestion/tree-sitter-queries.js +688 -5
  515. package/dist/core/ingestion/type-env.js +11 -7
  516. package/dist/core/ingestion/type-extractors/jvm.js +17 -2
  517. package/dist/core/ingestion/type-extractors/shared.d.ts +17 -0
  518. package/dist/core/ingestion/type-extractors/shared.js +16 -0
  519. package/dist/core/ingestion/type-extractors/types.d.ts +12 -0
  520. package/dist/core/ingestion/type-extractors/typescript.d.ts +20 -0
  521. package/dist/core/ingestion/type-extractors/typescript.js +26 -0
  522. package/dist/core/ingestion/utils/ast-helpers.d.ts +311 -14
  523. package/dist/core/ingestion/utils/ast-helpers.js +745 -48
  524. package/dist/core/ingestion/utils/call-analysis.d.ts +27 -22
  525. package/dist/core/ingestion/utils/call-analysis.js +202 -7
  526. package/dist/core/ingestion/utils/callable-flow-captures.d.ts +153 -0
  527. package/dist/core/ingestion/utils/callable-flow-captures.js +928 -0
  528. package/dist/core/ingestion/utils/callable-labels.d.ts +25 -0
  529. package/dist/core/ingestion/utils/callable-labels.js +31 -0
  530. package/dist/core/ingestion/utils/effective-ram.d.ts +40 -0
  531. package/dist/core/ingestion/utils/effective-ram.js +58 -0
  532. package/dist/core/ingestion/utils/line-base.d.ts +14 -0
  533. package/dist/core/ingestion/utils/line-base.js +14 -0
  534. package/dist/core/ingestion/utils/method-props.d.ts +27 -4
  535. package/dist/core/ingestion/utils/method-props.js +29 -4
  536. package/dist/core/ingestion/utils/receiver-chain-captures.d.ts +31 -0
  537. package/dist/core/ingestion/utils/receiver-chain-captures.js +57 -0
  538. package/dist/core/ingestion/utils/receiver-chain-codec.d.ts +89 -0
  539. package/dist/core/ingestion/utils/receiver-chain-codec.js +182 -0
  540. package/dist/core/ingestion/utils/scope-tree-walk.d.ts +22 -0
  541. package/dist/core/ingestion/utils/scope-tree-walk.js +33 -0
  542. package/dist/core/ingestion/utils/template-arguments.d.ts +96 -0
  543. package/dist/core/ingestion/utils/template-arguments.js +196 -0
  544. package/dist/core/ingestion/utils/type-parameters.d.ts +49 -0
  545. package/dist/core/ingestion/utils/type-parameters.js +206 -0
  546. package/dist/core/ingestion/workers/callable-id.d.ts +72 -0
  547. package/dist/core/ingestion/workers/callable-id.js +116 -0
  548. package/dist/core/ingestion/workers/parse-worker.d.ts +14 -1
  549. package/dist/core/ingestion/workers/parse-worker.js +409 -39
  550. package/dist/core/ingestion/workers/worker-pool.d.ts +34 -27
  551. package/dist/core/ingestion/workers/worker-pool.js +133 -25
  552. package/dist/core/lbug/csv-generator.d.ts +27 -0
  553. package/dist/core/lbug/csv-generator.js +80 -17
  554. package/dist/core/lbug/extension-load-error.d.ts +2 -2
  555. package/dist/core/lbug/extension-load-error.js +44 -27
  556. package/dist/core/lbug/extension-loader.d.ts +29 -0
  557. package/dist/core/lbug/extension-loader.js +32 -7
  558. package/dist/core/lbug/graph-emit-sink.d.ts +264 -0
  559. package/dist/core/lbug/graph-emit-sink.js +581 -0
  560. package/dist/core/lbug/lbug-adapter.d.ts +337 -3
  561. package/dist/core/lbug/lbug-adapter.js +772 -67
  562. package/dist/core/lbug/lbug-config.d.ts +93 -6
  563. package/dist/core/lbug/lbug-config.js +269 -9
  564. package/dist/core/lbug/native-check.d.ts +39 -0
  565. package/dist/core/lbug/native-check.js +323 -46
  566. package/dist/core/lbug/pdg-emit-sink.d.ts +13 -4
  567. package/dist/core/lbug/pdg-emit-sink.js +21 -111
  568. package/dist/core/lbug/pool-adapter.d.ts +23 -1
  569. package/dist/core/lbug/pool-adapter.js +115 -7
  570. package/dist/core/lbug/query-batch.d.ts +75 -0
  571. package/dist/core/lbug/query-batch.js +102 -0
  572. package/dist/core/lbug/rel-pair-routing.d.ts +160 -2
  573. package/dist/core/lbug/rel-pair-routing.js +228 -10
  574. package/dist/core/lbug/schema.d.ts +162 -3
  575. package/dist/core/lbug/schema.js +392 -157
  576. package/dist/core/lbug/sidecar-recovery.d.ts +1 -0
  577. package/dist/core/lbug/sidecar-recovery.js +1 -1
  578. package/dist/core/lbug/sync-csv-writer.d.ts +47 -0
  579. package/dist/core/lbug/sync-csv-writer.js +108 -0
  580. package/dist/core/lbug/wal-checkpoint-driver.js +3 -0
  581. package/dist/core/platform/capabilities.d.ts +0 -1
  582. package/dist/core/platform/capabilities.js +12 -7
  583. package/dist/core/run-analyze.d.ts +150 -3
  584. package/dist/core/run-analyze.js +1562 -151
  585. package/dist/core/search/bm25-index.d.ts +11 -0
  586. package/dist/core/search/bm25-index.js +60 -26
  587. package/dist/core/search/fts-indexes.d.ts +167 -2
  588. package/dist/core/search/fts-indexes.js +264 -10
  589. package/dist/core/wiki/graph-queries.js +145 -112
  590. package/dist/core/wiki/llm-client.d.ts +37 -5
  591. package/dist/core/wiki/llm-client.js +88 -17
  592. package/dist/core/wiki/prompts.d.ts +19 -0
  593. package/dist/core/wiki/prompts.js +20 -1
  594. package/dist/lib/utils.d.ts +113 -0
  595. package/dist/lib/utils.js +185 -0
  596. package/dist/mcp/http-transport.d.ts +5 -0
  597. package/dist/mcp/http-transport.js +19 -5
  598. package/dist/mcp/local/aop-metadata.d.ts +77 -0
  599. package/dist/mcp/local/aop-metadata.js +227 -0
  600. package/dist/mcp/local/bean-metadata.d.ts +3 -0
  601. package/dist/mcp/local/bean-metadata.js +46 -0
  602. package/dist/mcp/local/local-backend.d.ts +167 -6
  603. package/dist/mcp/local/local-backend.js +1756 -405
  604. package/dist/mcp/local/path-predicate.d.ts +19 -0
  605. package/dist/mcp/local/path-predicate.js +21 -0
  606. package/dist/mcp/local/pdg-impact.d.ts +132 -10
  607. package/dist/mcp/local/pdg-impact.js +391 -98
  608. package/dist/mcp/output-budget.d.ts +5 -0
  609. package/dist/mcp/output-budget.js +52 -0
  610. package/dist/mcp/read-only-policy.d.ts +12 -0
  611. package/dist/mcp/read-only-policy.js +102 -0
  612. package/dist/mcp/repository-policy.d.ts +35 -0
  613. package/dist/mcp/repository-policy.js +333 -0
  614. package/dist/mcp/resources.js +34 -7
  615. package/dist/mcp/server.d.ts +5 -2
  616. package/dist/mcp/server.js +48 -18
  617. package/dist/mcp/tools.d.ts +8 -8
  618. package/dist/mcp/tools.js +91 -20
  619. package/dist/server/analyze-job.d.ts +40 -2
  620. package/dist/server/analyze-job.js +30 -2
  621. package/dist/server/analyze-launch.d.ts +1 -1
  622. package/dist/server/analyze-launch.js +79 -10
  623. package/dist/server/analyze-worker-core.d.ts +3 -2
  624. package/dist/server/analyze-worker-core.js +15 -3
  625. package/dist/server/analyze-worker-ipc.d.ts +1 -1
  626. package/dist/server/analyze-worker-ipc.js +4 -0
  627. package/dist/server/analyze-worker-protocol.d.ts +59 -0
  628. package/dist/server/analyze-worker-protocol.js +1 -0
  629. package/dist/server/analyze-worker.d.ts +1 -17
  630. package/dist/server/analyze-worker.js +29 -6
  631. package/dist/server/api.d.ts +2 -11
  632. package/dist/server/api.js +200 -155
  633. package/dist/server/embed-run-outcome.d.ts +89 -0
  634. package/dist/server/embed-run-outcome.js +88 -0
  635. package/dist/server/git-clone.js +6 -2
  636. package/dist/server/mcp-http.d.ts +1 -1
  637. package/dist/server/mcp-http.js +4 -2
  638. package/dist/server/middleware.d.ts +116 -9
  639. package/dist/server/middleware.js +291 -22
  640. package/dist/server/sse-progress.d.ts +41 -0
  641. package/dist/server/sse-progress.js +125 -0
  642. package/dist/server/upload-ingest.js +2 -1
  643. package/dist/server/validation.js +2 -1
  644. package/dist/storage/branch-index.d.ts +11 -6
  645. package/dist/storage/branch-index.js +15 -7
  646. package/dist/storage/file-hash.js +2 -2
  647. package/dist/storage/fs-atomic.d.ts +25 -0
  648. package/dist/storage/fs-atomic.js +42 -0
  649. package/dist/storage/git.d.ts +165 -0
  650. package/dist/storage/git.js +352 -3
  651. package/dist/storage/index-lock.d.ts +83 -0
  652. package/dist/storage/index-lock.js +654 -0
  653. package/dist/storage/parse-cache.js +482 -1
  654. package/dist/storage/parsedfile-store.d.ts +8 -0
  655. package/dist/storage/parsedfile-store.js +235 -1
  656. package/dist/storage/repo-manager.d.ts +29 -309
  657. package/dist/storage/repo-manager.js +187 -165
  658. package/dist/storage/repo-meta.d.ts +530 -0
  659. package/dist/storage/repo-meta.js +100 -0
  660. package/dist/types/pipeline.d.ts +37 -0
  661. package/hooks/antigravity/gitnexus-antigravity-hook.cjs +1 -1
  662. package/hooks/claude/gitnexus-hook.cjs +1 -1
  663. package/hooks/claude/resolve-analyze-cmd.cjs +80 -13
  664. package/package.json +20 -12
  665. package/scripts/cross-platform-shard.ts +143 -0
  666. package/scripts/cross-platform-tests.ts +94 -0
  667. package/scripts/ensure-fts.ts +14 -3
  668. package/scripts/run-cross-platform.ts +36 -10
  669. package/scripts/sync-plugin-manifests.mjs +192 -0
  670. package/skills/gitnexus-cli.md +3 -3
  671. package/skills/gitnexus-debugging.md +37 -7
  672. package/skills/gitnexus-exploring.md +26 -4
  673. package/skills/gitnexus-impact-analysis.md +71 -10
  674. package/skills/gitnexus-lfg/README.md +55 -0
  675. package/skills/gitnexus-lfg/SKILL.md +86 -0
  676. package/skills/gitnexus-plan/README.md +147 -0
  677. package/skills/gitnexus-plan/SKILL.md +348 -0
  678. package/skills/gitnexus-plan/references/context-ledger.md +137 -0
  679. package/skills/gitnexus-plan/references/context-pack.md +126 -0
  680. package/skills/gitnexus-plan/references/evidence-provenance.md +309 -0
  681. package/skills/gitnexus-plan/references/pdg-slice.md +109 -0
  682. package/skills/gitnexus-plan/references/plan-template.md +201 -0
  683. package/skills/gitnexus-plan/scripts/evidence-provenance.mjs +2366 -0
  684. package/skills/gitnexus-refactoring.md +48 -5
  685. package/skills/gitnexus-review/SKILL.md +279 -0
  686. package/skills/gitnexus-review/ci-personas/ci-adversarial-lens.md +42 -0
  687. package/skills/gitnexus-review/ci-personas/ci-blast-radius-lens.md +39 -0
  688. package/skills/gitnexus-review/ci-personas/ci-correctness-lens.md +37 -0
  689. package/skills/gitnexus-review/ci-personas/ci-coverage-lens.md +40 -0
  690. package/skills/gitnexus-review/ci-personas/ci-critic-lens.md +42 -0
  691. package/skills/gitnexus-review/ci-personas/ci-security-lens.md +39 -0
  692. package/skills/gitnexus-taint-analysis.md +13 -7
  693. package/skills/gitnexus-work/README.md +71 -0
  694. package/skills/gitnexus-work/SKILL.md +272 -0
  695. package/skills/gitnexus-work/references/evidence-provenance.md +309 -0
  696. package/skills/gitnexus-work/scripts/evidence-provenance.mjs +2366 -0
  697. package/vendor/leiden/utils.cjs +28 -1
  698. package/web/assets/ProcessFlowModal-Badh2Pbg.js +24 -0
  699. package/web/assets/__vite-browser-external-bMKyYQkO.js +1 -0
  700. package/web/assets/abnfDiagram-QNN2D4NM-Cq2djWWe.js +1 -0
  701. package/web/assets/agent-DIzEQ1JJ.js +626 -0
  702. package/web/assets/architecture-TIHT7OUA-V6N4J3SY-fTePvLoe.js +1 -0
  703. package/web/assets/architectureDiagram-OT7VKSJ7-mKEXxkeF.js +36 -0
  704. package/web/assets/blockDiagram-54WLDVWM-Dg_hrRWE.js +132 -0
  705. package/web/assets/{c4Diagram-Y2BXMSZH-DOXVs7-C.js → c4Diagram-X2LASM7V-CnhoT4aV.js} +6 -6
  706. package/web/assets/chunk-224SPVON-B8gxtXpy.js +1 -0
  707. package/web/assets/chunk-2AEHWXPW-CV4r6-1I.js +127 -0
  708. package/web/assets/chunk-2SREHG4O-Dip42xOq.js +1 -0
  709. package/web/assets/chunk-4RFN2BYJ-DHHWuC-n.js +1 -0
  710. package/web/assets/chunk-66DQ2XMT-CM0xjFAN.js +1 -0
  711. package/web/assets/chunk-6BELYETK-ChsYtfHW.js +1 -0
  712. package/web/assets/chunk-6L755F7B-CMhLBxi2.js +1 -0
  713. package/web/assets/chunk-7CWYLC5S-DRgGkkpF.js +2 -0
  714. package/web/assets/chunk-A7VWPJGB-B4O3oQdQ.js +1 -0
  715. package/web/assets/chunk-BI6VK774-D0oaWk8V.js +1 -0
  716. package/web/assets/chunk-D6VWDJW2-BxcBdZ9c.js +2 -0
  717. package/web/assets/chunk-DMV4VAQV-Bn6WXDSX.js +4 -0
  718. package/web/assets/chunk-E5QJAATJ-dh-5CtIV.js +2 -0
  719. package/web/assets/chunk-EQFTRU2I-1ix7TzW9.js +2 -0
  720. package/web/assets/chunk-FWYVLQTC-BgDItRzJ.js +1 -0
  721. package/web/assets/chunk-HNC4WDU7-DoU3KnA7.js +1 -0
  722. package/web/assets/chunk-L5GCOVLC-CE2w8Nm_.js +161 -0
  723. package/web/assets/chunk-LAHSG3N2-Bz4hcn0N.js +321 -0
  724. package/web/assets/chunk-LORZLZWG-B57uGw2N.js +88 -0
  725. package/web/assets/chunk-NLANEA3F-XpH_NPA5.js +62 -0
  726. package/web/assets/chunk-NV3KIAZN-5yvcpMiu.js +1 -0
  727. package/web/assets/chunk-OIYT25JQ-CQ6KOZGX.js +1 -0
  728. package/web/assets/chunk-PE7DX7ZZ-CCvRVj43.js +10 -0
  729. package/web/assets/chunk-Q67WD55A-BWCH2SVz.js +156 -0
  730. package/web/assets/chunk-RRFMTAIC-CMN0wcYA.js +1 -0
  731. package/web/assets/{chunk-RLI5ZMPA-CkXZ0y0U.js → chunk-SATU7PGQ-B1zhgOvc.js} +1 -1
  732. package/web/assets/chunk-STOV2HOB-GnExfzIX.js +1 -0
  733. package/web/assets/chunk-SZD42YQK-ijyKKVr1.js +70 -0
  734. package/web/assets/chunk-TFPGFQPA-Dj6a-0pC.js +231 -0
  735. package/web/assets/chunk-TGVD4F4B-BMc31Gj2.js +2 -0
  736. package/web/assets/chunk-TZUXEDM2-B7p9AcTw.js +1 -0
  737. package/web/assets/chunk-UAT7B5JY-DW-A_fpI.js +1 -0
  738. package/web/assets/{chunk-6764PJDD-C7xxk063.js → chunk-VE5CLXGZ-C1vB7wpY.js} +1 -1
  739. package/web/assets/chunk-VJFVEZTB-CX66F2ep.js +206 -0
  740. package/web/assets/chunk-VY5UBI4V-yxPQAWxw.js +1 -0
  741. package/web/assets/chunk-WJBAP47W-BckNkuEN.js +1 -0
  742. package/web/assets/chunk-XNMVGMAZ-Cg_LnPtj.js +1 -0
  743. package/web/assets/classDiagram-VPOSVPXH-BjOiXA_C.js +1 -0
  744. package/web/assets/classDiagram-v2-5VFNUXQA-BjOiXA_C.js +1 -0
  745. package/web/assets/{cose-bilkent-UX7MHV2Q-BmnZ7Mvj.js → cose-bilkent-RZA4XIPR-BHpK4Crp.js} +1 -1
  746. package/web/assets/cynefin-VYW2F7L2-2VAHYKR6-DAsF6GZv.js +1 -0
  747. package/web/assets/cynefinDiagram-TR7LZUCG-C3Iar9lZ.js +62 -0
  748. package/web/assets/dagre-K64A6Z3X-CUwi79mA.js +4 -0
  749. package/web/assets/diagram-2TLGJV2N-C2F5Nfym.js +30 -0
  750. package/web/assets/diagram-JCD7PQ7C-DC5-9FRr.js +24 -0
  751. package/web/assets/diagram-KFBZAVDW-Dfmf_4ti.js +3 -0
  752. package/web/assets/diagram-L7DVE3PN-GIRyVUtt.js +41 -0
  753. package/web/assets/diagram-YP3FGXHI-CyNFYtkd.js +24 -0
  754. package/web/assets/ebnfDiagram-DRHRQJWO-D8_CI4ZF.js +1 -0
  755. package/web/assets/erDiagram-SZLJLQMB-CohQjznC.js +85 -0
  756. package/web/assets/eventmodeling-45OFAUF4-AOUJWSLX-BvTc6iQi.js +1 -0
  757. package/web/assets/flowDiagram-BWE6NHOH-B6RnEvD9.js +1 -0
  758. package/web/assets/ganttDiagram-2QTCJSNI-Cks_mEcF.js +292 -0
  759. package/web/assets/gitGraph-TEB2WS4Q-U5VWYIBC-Dy7CCSZ5.js +1 -0
  760. package/web/assets/gitGraphDiagram-VVZAVV5G-CG41cIVc.js +106 -0
  761. package/web/assets/{index-B4eB4dNZ.js → index-BBNl0qfX.js} +51 -51
  762. package/web/assets/index-CJDpyH-n.css +2 -0
  763. package/web/assets/info-DKCQHKI2-DX6KST54-BLJg1ikX.js +1 -0
  764. package/web/assets/infoDiagram-FY4PZKRE-BJ3vPVwW.js +2 -0
  765. package/web/assets/{ishikawaDiagram-BNXS4ZKH-BLjivjXL.js → ishikawaDiagram-4JDSWWDM-DmqWtjkl.js} +6 -6
  766. package/web/assets/{journeyDiagram-M6C3CM3L-Cetgs3NH.js → journeyDiagram-QUS3FAKT-XAzVzrQW.js} +6 -6
  767. package/web/assets/{kanban-definition-75IXJCU3-DMlCaIpf.js → kanban-definition-D4L7SQKK-YurRnmYn.js} +27 -27
  768. package/web/assets/katex-C5OPUE3Q-Bnbavtmu.js +257 -0
  769. package/web/assets/{mindmap-definition-2TDM6QVE-B4GbXQBc.js → mindmap-definition-66QP5TD6-ChrWWnil.js} +29 -29
  770. package/web/assets/node-Ct_zna8U.js +8 -0
  771. package/web/assets/packet-7NZHBO7P-5WG45QPS-KUxcuvaA.js +1 -0
  772. package/web/assets/pegDiagram-YKIO5C6U-QGeQLEq2.js +1 -0
  773. package/web/assets/pie-RZYD4A2V-2OCZ2VTD-DPs08kJY.js +1 -0
  774. package/web/assets/pieDiagram-YPY3TKG5-BuT3MYzm.js +39 -0
  775. package/web/assets/preload-helper-Czpn1I53.js +1 -0
  776. package/web/assets/{quadrantDiagram-VICAPDV7-B1TQnlm0.js → quadrantDiagram-VO5QLCXA-B7098wSc.js} +6 -6
  777. package/web/assets/radar-I7S5WNFK-EPLSA35B-w5F0K3a7.js +1 -0
  778. package/web/assets/railroad-3IZDKUUU-PWFQV6Y6-Bu668yqY.js +1 -0
  779. package/web/assets/railroad-abnf-AHOZXSZD-JYYJX3BS-B6ghpETS.js +1 -0
  780. package/web/assets/railroad-ebnf-EBAXGLYW-RBZ4ONAP-D-XmHh3M.js +1 -0
  781. package/web/assets/railroad-peg-LSFZ7HO6-KHNPXGPG-mhkrhzEn.js +1 -0
  782. package/web/assets/railroadDiagram-M77LTMSB-AXu4vxk_.js +1 -0
  783. package/web/assets/requirementDiagram-RASO5HTO-B-l8InpK.js +84 -0
  784. package/web/assets/sankeyDiagram-F32LOJ6L-Kd7zjJgX.js +40 -0
  785. package/web/assets/sdk-CzHHH8tD.js +37 -0
  786. package/web/assets/sequenceDiagram-URATNSBD-BlcdY9DS.js +162 -0
  787. package/web/assets/sizeCapture-5GORAGP4-BEqQzsxs.js +1 -0
  788. package/web/assets/src-C5sx_gMp.js +1 -0
  789. package/web/assets/stateDiagram-DODFXNG5-DTdHc-fF.js +1 -0
  790. package/web/assets/stateDiagram-v2-JNMM5JRA-DioNLDDo.js +1 -0
  791. package/web/assets/swimlanes-OSWOYLSK-CA0ofdwY.js +2 -0
  792. package/web/assets/swimlanesDiagram-RHGX2RDE-PkwUdckC.js +8 -0
  793. package/web/assets/timeline-definition-WJXWRH4I-DUfp1R3E.js +120 -0
  794. package/web/assets/treeView-QDETBFTQ-EHYTSQNO-C5lpBgPm.js +1 -0
  795. package/web/assets/treemap-6X3UGDF4-CCWCF7EK-BB0ZyO-B.js +1 -0
  796. package/web/assets/vennDiagram-K3VCMQLI-Bj-FN-XS.js +34 -0
  797. package/web/assets/wardley-OPB4EBWU-6OWERDVT-CEA3Nq0j.js +1 -0
  798. package/web/assets/wardleyDiagram-XK6FUAWV-CVV0dHFr.js +78 -0
  799. package/web/assets/xychartDiagram-5VRUVLCW-CK_rbSWE.js +7 -0
  800. package/web/index.html +17 -15
  801. package/dist/core/ingestion/languages/python/index-stats.d.ts +0 -18
  802. package/dist/core/ingestion/languages/python/index-stats.js +0 -25
  803. package/skills/gitnexus-pr-review.md +0 -163
  804. package/web/assets/ProcessFlowModal-Dna7GkwO.js +0 -22
  805. package/web/assets/agent-DNYDy-KA.js +0 -660
  806. package/web/assets/architecture-7EHR7CIX-6QZW5X65-BVWFvYz2.js +0 -1
  807. package/web/assets/architectureDiagram-UL44E2DR-BU5ZRITg.js +0 -36
  808. package/web/assets/blockDiagram-7IZFK4PR-Dut1BpTV.js +0 -132
  809. package/web/assets/chunk-2T2R6R2M-pkw2oXHH.js +0 -4
  810. package/web/assets/chunk-2UTLFMKG-CXlhF3Pt.js +0 -1
  811. package/web/assets/chunk-3SSMPTDK-rPsRM1x0.js +0 -321
  812. package/web/assets/chunk-4R4BOZG6-Be_F0JoX.js +0 -159
  813. package/web/assets/chunk-67TQ5CYL-zxhDWgyF.js +0 -124
  814. package/web/assets/chunk-7J6CGLKN-AmkN8jJN.js +0 -10
  815. package/web/assets/chunk-C62D2QBJ-3gdL8EKc.js +0 -1
  816. package/web/assets/chunk-CEXFNPSA-CjwtMDkc.js +0 -1
  817. package/web/assets/chunk-INKRHTLW-D9BM9HWZ.js +0 -70
  818. package/web/assets/chunk-J5EP6P6S-L19oz55R.js +0 -1
  819. package/web/assets/chunk-KGFNY3KK-tD2F6wxK.js +0 -62
  820. package/web/assets/chunk-KGYTTC2M-zm6n242I.js +0 -1
  821. package/web/assets/chunk-KNLZD3CH-BGlP6X9R.js +0 -1
  822. package/web/assets/chunk-LCXTWHL2-Ba9JK-6F.js +0 -231
  823. package/web/assets/chunk-LII3EMHJ-EGx-eBIu.js +0 -1
  824. package/web/assets/chunk-LRIF4GLE-C3_PqUBq.js +0 -1
  825. package/web/assets/chunk-QA3QBVWF-D4cSJBf6.js +0 -2
  826. package/web/assets/chunk-RERM46MO-B5dAdWpP.js +0 -1
  827. package/web/assets/chunk-RG4AUYOV-OqBBMwuQ.js +0 -206
  828. package/web/assets/chunk-RKZBBQEN-MyIQbGgD.js +0 -1
  829. package/web/assets/chunk-T2UQINTJ-BJusEiGe.js +0 -1
  830. package/web/assets/chunk-UP6H54XL-BG-n7qDp.js +0 -1
  831. package/web/assets/chunk-UXSXWOXI-CW1_r5cS.js +0 -1
  832. package/web/assets/chunk-UY5QBCOK-BCpUlARQ.js +0 -1
  833. package/web/assets/chunk-VU6ZFW4Y-BeXVk45_.js +0 -2
  834. package/web/assets/chunk-ZXARS5L4-BI_qR2Nm.js +0 -1
  835. package/web/assets/classDiagram-KGZ6W3CR-D9zSIg0x.js +0 -1
  836. package/web/assets/classDiagram-v2-72OJOZXJ-D9zSIg0x.js +0 -1
  837. package/web/assets/dagre-ND4H6XIP-CpcV5kbl.js +0 -4
  838. package/web/assets/diagram-3NCE3AQN-6SMxBRpj.js +0 -43
  839. package/web/assets/diagram-GF46GFSD-BZEdNcRZ.js +0 -24
  840. package/web/assets/diagram-HNR7UZ2L-DxKW2a2Y.js +0 -3
  841. package/web/assets/diagram-QXG6HAR7-HfTHcXX_.js +0 -24
  842. package/web/assets/diagram-WEQXMOUZ-CyijUS8r.js +0 -10
  843. package/web/assets/erDiagram-L5TCEMPS-D0fvpWEX.js +0 -85
  844. package/web/assets/eventmodeling-FCH6USID-MREXMVOE-CgFBM7e-.js +0 -1
  845. package/web/assets/flowDiagram-H6V6AXG4-Bvr9bbhk.js +0 -162
  846. package/web/assets/ganttDiagram-JCBTUEKG-TzODrLzv.js +0 -292
  847. package/web/assets/gitGraph-WXDBUCRP-R675I2BI-DCJv7SII.js +0 -1
  848. package/web/assets/gitGraphDiagram-S2ZK5IYY-ONQSwJIY.js +0 -106
  849. package/web/assets/index-CX_fADmQ.css +0 -2
  850. package/web/assets/info-J43DQDTF-KCYPFFUO-BfNy-9Nd.js +0 -1
  851. package/web/assets/infoDiagram-3YFTVSEB-DIPVUIQ6.js +0 -2
  852. package/web/assets/katex-K3KEBU37-qRQBy-EZ.js +0 -261
  853. package/web/assets/packet-YPE3B663-LP52Z2RK-D4qkeG9k.js +0 -1
  854. package/web/assets/pie-LRSECV5Y-TCRJHUBD-B_yMKyQa.js +0 -1
  855. package/web/assets/pieDiagram-CU6KROY3-D3YC_xyg.js +0 -30
  856. package/web/assets/radar-GUYGQ44K-RDLRG3WG-DeD6yN_0.js +0 -1
  857. package/web/assets/requirementDiagram-JXO7QTGE-f8wczLQf.js +0 -84
  858. package/web/assets/sankeyDiagram-URQDO5SZ-BTxzG5j0.js +0 -40
  859. package/web/assets/sequenceDiagram-VS2MUI6T-DuamM-IR.js +0 -162
  860. package/web/assets/src-BNCXICdA.js +0 -1
  861. package/web/assets/stateDiagram-7D4R322I-Ch2pEUcw.js +0 -1
  862. package/web/assets/stateDiagram-v2-36443NZ5-7ANuoZLL.js +0 -1
  863. package/web/assets/timeline-definition-O6YCAMPW-07BR8R8G.js +0 -120
  864. package/web/assets/treeView-BLDUP644-QA4HXRO3-CDuSYnd4.js +0 -1
  865. package/web/assets/treemap-LRROVOQU-LLAWBHMP-imazucyJ.js +0 -1
  866. package/web/assets/vennDiagram-MWXL3ELB-BQX2ossk.js +0 -34
  867. package/web/assets/wardley-L42UT6IY-5TKZOOLJ-DqrT9tB8.js +0 -1
  868. package/web/assets/wardleyDiagram-CUQ6CDDI-CGIJBBiK.js +0 -78
  869. package/web/assets/xychartDiagram-N2JHSOCM-B3HNMuWp.js +0 -7
  870. /package/web/assets/{chunk-7W6UQGC5-pyKGssV3.js → chunk-LIEV3EAG-pyKGssV3.js} +0 -0
@@ -4,6 +4,7 @@
4
4
  * the provider's choice explicit rather than relying on "absence ==
5
5
  * default" so reviewers don't have to re-derive the analysis.
6
6
  */
7
+ import { walkToScope } from '../../utils/scope-tree-walk.js';
7
8
  // ─── bindingScopeFor ──────────────────────────────────────────────────────
8
9
  /**
9
10
  * TypeScript/JavaScript has block-scoped `let`/`const` (the innermost
@@ -38,6 +39,27 @@ export function tsBindingScopeFor(decl, innermost, tree) {
38
39
  if (decl['@type-binding.parameter-property'] !== undefined) {
39
40
  return walkToScope(innermost, tree, 'Class');
40
41
  }
42
+ // `this.p = new Outer()` binds the FIELD, not a method-local, so the binding
43
+ // belongs on the class the way an annotated field's does — that is the only
44
+ // place `typeOfMemberOnClass` reads. Left on the innermost scope it would sit
45
+ // on the method's own Function scope and never be found (#2807). Same shape
46
+ // as the parameter-property branch above.
47
+ //
48
+ // Gated on the marker the `this.<field> = new …` pattern emits, never on
49
+ // `@type-binding.constructor` at large: that capture also fires for
50
+ // `const o = new Outer()` inside a method, and hoisting THOSE to the class
51
+ // would take method locals out of their own scope and mistype them.
52
+ //
53
+ // This walk is UNCONDITIONAL by design, and stays correct only because the
54
+ // marker's producers are bounded: the query nests the pattern under
55
+ // `class_body → method_definition → statement_block`, and `emitTsScopeCaptures`
56
+ // drops the static-method case. So `this` here provably IS an instance of the
57
+ // class this lands on, and a Class ancestor always exists — no `walkToScope`
58
+ // null-fallback onto some unrelated innermost scope. Anything that widens the
59
+ // marker's producers has to re-establish both, or restore the guard here.
60
+ if (decl['@type-binding.this-field'] !== undefined) {
61
+ return walkToScope(innermost, tree, 'Class');
62
+ }
41
63
  // `var` declarations: hoist to nearest enclosing Function or Module.
42
64
  const variable = decl['@declaration.variable'];
43
65
  if (variable !== undefined && isVarDeclaration(variable.text)) {
@@ -51,28 +73,6 @@ export function tsBindingScopeFor(decl, innermost, tree) {
51
73
  // needed.
52
74
  return null;
53
75
  }
54
- /**
55
- * Walk up the scope chain to find the first scope whose `kind` matches
56
- * any of `kinds`. Returns the matching scope's id or `null` when no
57
- * ancestor matches (e.g., a return type binding emitted outside any
58
- * Module scope — shouldn't happen in well-formed input).
59
- *
60
- * Exported so language-specific hook wrappers (e.g. `jsBindingScopeFor`)
61
- * can reuse it without duplicating the traversal logic.
62
- */
63
- export function walkToScope(from, tree, ...kinds) {
64
- let cur = from;
65
- const kindSet = new Set(kinds);
66
- while (cur !== undefined) {
67
- if (kindSet.has(cur.kind))
68
- return cur.id;
69
- const parentId = cur.parent ?? null;
70
- if (parentId === null)
71
- break;
72
- cur = tree.getScope(parentId);
73
- }
74
- return null;
75
- }
76
76
  /** `var x = 1;` vs `let x = 1;` / `const x = 1;`. The capture's text
77
77
  * starts at the outer declaration's `startIndex` in source, which is
78
78
  * the keyword's first character — no leading whitespace possible. */
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Real `tsconfig.json` loading for module resolution (#2953).
3
+ *
4
+ * The previous loader (`language-config.ts:loadTsconfigPaths`) was built to feed
5
+ * a heuristic, and it shows: it reads three filenames at the repo ROOT only,
6
+ * gives up unless `compilerOptions.paths` exists, keeps only `targets[0]` of
7
+ * each mapping, and treats a pattern as a plain prefix. That is enough to make
8
+ * a guess look plausible and not enough to resolve anything correctly:
9
+ *
10
+ * - a monorepo has one tsconfig PER PACKAGE, and `apps/web/tsconfig.json` is
11
+ * what governs `apps/web/src/main.ts` — the root config governs nothing;
12
+ * - `extends` is how essentially every real config is written, and the
13
+ * `baseUrl` / `paths` almost always live in the extended base;
14
+ * - `baseUrl` alone (no `paths`) is a complete resolution rule on its own, and
15
+ * it is exactly the rule that makes `import 'src/utils/foo'` legal — the
16
+ * case the old suffix matcher was really standing in for;
17
+ * - `paths` maps a pattern to an ORDERED LIST of targets, tried in order.
18
+ *
19
+ * So this module answers the question TypeScript actually asks: for THIS file,
20
+ * what are `baseUrl` and `paths`?
21
+ */
22
+ /** One `paths` entry, pattern and targets kept in declaration order. */
23
+ export interface TsPathMapping {
24
+ /** The pattern as written, e.g. `@/*`, `@app/*`, `exact`. */
25
+ readonly pattern: string;
26
+ /** Targets as written, relative to `baseUrl`. Tried in order. */
27
+ readonly targets: readonly string[];
28
+ }
29
+ /** The resolution-relevant part of one resolved tsconfig. */
30
+ export interface TsconfigScope {
31
+ /** Repo-relative directory the config governs (the tsconfig's own directory). */
32
+ readonly dir: string;
33
+ /**
34
+ * Repo-relative `baseUrl`, or `null` when the config declares none.
35
+ *
36
+ * `null` is not the same as `'.'`: without `baseUrl`, TypeScript does NOT
37
+ * resolve non-relative specifiers against the project at all (they are
38
+ * package lookups), and `paths` targets are resolved against the tsconfig's
39
+ * own directory instead.
40
+ */
41
+ readonly baseUrl: string | null;
42
+ readonly paths: readonly TsPathMapping[];
43
+ }
44
+ /** Every tsconfig in the repo, indexed so the nearest one to a file wins. */
45
+ export interface TsconfigIndex {
46
+ /** Deepest-first, so the first `dir` that prefixes a file path governs it. */
47
+ readonly scopes: readonly TsconfigScope[];
48
+ }
49
+ /**
50
+ * The config governing `filePath` — the nearest tsconfig at or above it.
51
+ *
52
+ * TypeScript resolves a file against the project that includes it; the nearest
53
+ * enclosing tsconfig is the faithful approximation of that without evaluating
54
+ * `include`/`exclude` globs, and it is what makes a monorepo's per-package
55
+ * `baseUrl` apply to that package's files instead of the root's.
56
+ */
57
+ export declare function tsconfigFor(index: TsconfigIndex | null, filePath: string): TsconfigScope | null;
58
+ /** Load every tsconfig in the repo, resolving `extends` chains. */
59
+ export declare function loadTsconfigIndex(repoRoot: string): Promise<TsconfigIndex | null>;
@@ -0,0 +1,291 @@
1
+ /**
2
+ * Real `tsconfig.json` loading for module resolution (#2953).
3
+ *
4
+ * The previous loader (`language-config.ts:loadTsconfigPaths`) was built to feed
5
+ * a heuristic, and it shows: it reads three filenames at the repo ROOT only,
6
+ * gives up unless `compilerOptions.paths` exists, keeps only `targets[0]` of
7
+ * each mapping, and treats a pattern as a plain prefix. That is enough to make
8
+ * a guess look plausible and not enough to resolve anything correctly:
9
+ *
10
+ * - a monorepo has one tsconfig PER PACKAGE, and `apps/web/tsconfig.json` is
11
+ * what governs `apps/web/src/main.ts` — the root config governs nothing;
12
+ * - `extends` is how essentially every real config is written, and the
13
+ * `baseUrl` / `paths` almost always live in the extended base;
14
+ * - `baseUrl` alone (no `paths`) is a complete resolution rule on its own, and
15
+ * it is exactly the rule that makes `import 'src/utils/foo'` legal — the
16
+ * case the old suffix matcher was really standing in for;
17
+ * - `paths` maps a pattern to an ORDERED LIST of targets, tried in order.
18
+ *
19
+ * So this module answers the question TypeScript actually asks: for THIS file,
20
+ * what are `baseUrl` and `paths`?
21
+ */
22
+ import fs from 'fs/promises';
23
+ import path from 'path';
24
+ import { isHardcodedIgnoredDirectory } from '../../../../config/ignore-service.js';
25
+ import { logger } from '../../../logger.js';
26
+ const SCAN_MAX_DIRS = 20_000;
27
+ const SCAN_MAX_DEPTH = 24;
28
+ /** Guard against an `extends` cycle or a pathological chain. */
29
+ const MAX_EXTENDS_DEPTH = 16;
30
+ /**
31
+ * The config governing `filePath` — the nearest tsconfig at or above it.
32
+ *
33
+ * TypeScript resolves a file against the project that includes it; the nearest
34
+ * enclosing tsconfig is the faithful approximation of that without evaluating
35
+ * `include`/`exclude` globs, and it is what makes a monorepo's per-package
36
+ * `baseUrl` apply to that package's files instead of the root's.
37
+ */
38
+ export function tsconfigFor(index, filePath) {
39
+ if (index === null)
40
+ return null;
41
+ for (const scope of index.scopes) {
42
+ if (scope.dir === '')
43
+ return scope;
44
+ if (filePath.startsWith(`${scope.dir}/`))
45
+ return scope;
46
+ }
47
+ return null;
48
+ }
49
+ /** Load every tsconfig in the repo, resolving `extends` chains. */
50
+ export async function loadTsconfigIndex(repoRoot) {
51
+ const files = await findTsconfigFiles(repoRoot);
52
+ if (files.length === 0)
53
+ return null;
54
+ const ranked = [];
55
+ for (const absPath of files) {
56
+ const options = await readCompilerOptions(absPath, 0);
57
+ if (options === null)
58
+ continue;
59
+ // `readCompilerOptions` resolves both to ABSOLUTE paths against whichever
60
+ // config in the `extends` chain declared them, which is the only way the
61
+ // chain stays unambiguous. Rebasing to repo-relative happens once, here.
62
+ const baseUrl = options.baseUrl === undefined ? null : repoRelative(repoRoot, options.baseUrl);
63
+ const paths = (options.paths ?? []).map((mapping) => ({
64
+ pattern: mapping.pattern,
65
+ targets: mapping.targets.map((t) => rebaseTarget(repoRoot, t)),
66
+ }));
67
+ // A config declaring NEITHER is kept, not skipped. Dropping it let
68
+ // `tsconfigFor` fall through to an enclosing config, so a package whose own
69
+ // tsconfig declares no `baseUrl` — meaning its non-relative specifiers are
70
+ // package lookups — silently inherited the repo root's aliases instead.
71
+ // An empty scope is the accurate answer for such a file, and only a scope
72
+ // can express it.
73
+ ranked.push({
74
+ scope: { dir: repoRelative(repoRoot, path.dirname(absPath)), baseUrl, paths },
75
+ rank: configRank(path.basename(absPath)),
76
+ });
77
+ }
78
+ if (ranked.length === 0)
79
+ return null;
80
+ // Deepest first, because `tsconfigFor` takes the first match and it must be
81
+ // the most specific config rather than whichever the walk reached first.
82
+ //
83
+ // Then by filename rank WITHIN a directory, which is the half that is easy to
84
+ // miss: `tsconfig.json` and `tsconfig.base.json` routinely sit side by side,
85
+ // and the base exists to be extended, not to govern. Reading whichever the
86
+ // directory listing returned first made a config's own `paths` invisible
87
+ // whenever its base happened to be listed earlier.
88
+ ranked.sort((a, b) => b.scope.dir.length - a.scope.dir.length || a.rank - b.rank);
89
+ return { scopes: ranked.map((entry) => entry.scope) };
90
+ }
91
+ /**
92
+ * Precedence among configs sharing a directory: the project config governs, and
93
+ * everything else is a base or a variant that exists to be extended.
94
+ */
95
+ function configRank(fileName) {
96
+ if (fileName === 'tsconfig.json')
97
+ return 0;
98
+ if (fileName === 'jsconfig.json')
99
+ return 1;
100
+ return 2;
101
+ }
102
+ /**
103
+ * Read one tsconfig and merge in whatever it `extends`.
104
+ *
105
+ * Rebasing happens per FILE, before merging, because `extends` does not rebase
106
+ * `baseUrl`: a base config at `configs/tsconfig.base.json` declaring
107
+ * `"baseUrl": "."` means `configs/`, even when extended from `apps/web`. Doing
108
+ * the rebase at read time is what keeps that true through the chain.
109
+ */
110
+ async function readCompilerOptions(absPath, depth, repoRootHint) {
111
+ if (depth > MAX_EXTENDS_DEPTH) {
112
+ logger.warn(`[typescript] tsconfig extends chain too deep at ${absPath}; ignoring the rest`);
113
+ return null;
114
+ }
115
+ let parsed;
116
+ try {
117
+ parsed = parseJsonc(await fs.readFile(absPath, 'utf-8'));
118
+ }
119
+ catch {
120
+ return null;
121
+ }
122
+ const dir = path.dirname(absPath);
123
+ // Read what this config extends FIRST: `paths` targets resolve against the
124
+ // EFFECTIVE `baseUrl`, which a config declaring `paths` alone inherits from
125
+ // its base. Resolving them against this config's own directory instead would
126
+ // load the right alias pattern and point every target at the wrong place.
127
+ const inherited = await readExtended(parsed.extends, dir, depth, repoRootHint);
128
+ const own = {};
129
+ const compilerOptions = parsed.compilerOptions;
130
+ if (compilerOptions !== null && typeof compilerOptions === 'object') {
131
+ const opts = compilerOptions;
132
+ if (typeof opts.baseUrl === 'string') {
133
+ own.baseUrl = path.resolve(dir, opts.baseUrl);
134
+ }
135
+ if (opts.paths !== null && typeof opts.paths === 'object' && !Array.isArray(opts.paths)) {
136
+ // tsc resolves `paths` targets against the effective `baseUrl` — this
137
+ // config's own if it declares one, otherwise the inherited one — and
138
+ // against the config's own directory only when neither exists. Doing it
139
+ // here, per file, is what keeps an `extends` chain unambiguous: by the
140
+ // time these merge, every target is already absolute.
141
+ const pathsBase = own.baseUrl ?? inherited?.baseUrl ?? dir;
142
+ own.paths = [];
143
+ for (const [pattern, targets] of Object.entries(opts.paths)) {
144
+ if (!Array.isArray(targets))
145
+ continue;
146
+ const asStrings = targets
147
+ .filter((t) => typeof t === 'string')
148
+ .map((t) => path.resolve(pathsBase, t));
149
+ if (asStrings.length > 0)
150
+ own.paths.push({ pattern, targets: asStrings });
151
+ }
152
+ }
153
+ }
154
+ // Own options win over inherited ones — that is what `extends` means. `paths`
155
+ // is replaced wholesale rather than merged, matching tsc.
156
+ return {
157
+ ...(inherited ?? {}),
158
+ ...own,
159
+ };
160
+ }
161
+ /** Follow `extends`, which may be a string or (TS 5+) an array, base-first. */
162
+ async function readExtended(value, fromDir, depth, repoRootHint) {
163
+ const specs = typeof value === 'string' ? [value] : Array.isArray(value) ? value : [];
164
+ let merged = null;
165
+ for (const spec of specs) {
166
+ if (typeof spec !== 'string')
167
+ continue;
168
+ const resolved = await resolveExtendsTarget(spec, fromDir);
169
+ if (resolved === null)
170
+ continue;
171
+ const options = await readCompilerOptions(resolved, depth + 1, repoRootHint);
172
+ if (options === null)
173
+ continue;
174
+ // Later entries win over earlier ones, per tsc's array semantics.
175
+ merged = { ...(merged ?? {}), ...options };
176
+ }
177
+ return merged;
178
+ }
179
+ /**
180
+ * An `extends` value is either a path or a package name.
181
+ *
182
+ * The package form (`"extends": "@tsconfig/node20/tsconfig.json"`,
183
+ * `"@acme/tsconfig"`) lives in `node_modules`, which this tool deliberately
184
+ * does NOT index — it is dependency code, not the repository's own. But not
185
+ * indexing it is different from not READING it, and the distinction matters
186
+ * here: a shared internal base config is exactly where a monorepo puts the
187
+ * `paths` its packages import through, so refusing to open it loses aliases
188
+ * that the repository genuinely declares.
189
+ *
190
+ * So the file is read from disk when it is there, walking `node_modules` up
191
+ * from the extending config the way Node does. When it is absent — an
192
+ * un-installed checkout, which is a shape a static analyser must expect and a
193
+ * compiler may refuse — the answer is `null`, and the caller keeps whatever the
194
+ * extending config declared itself. That degrades to fewer resolutions, never
195
+ * to invented ones.
196
+ */
197
+ async function resolveExtendsTarget(spec, fromDir) {
198
+ if (spec.startsWith('.') || path.isAbsolute(spec)) {
199
+ return firstReadableConfig(path.resolve(fromDir, spec));
200
+ }
201
+ for (const modulesDir of nodeModulesChain(fromDir)) {
202
+ const found = await firstReadableConfig(path.join(modulesDir, spec));
203
+ if (found !== null)
204
+ return found;
205
+ }
206
+ return null;
207
+ }
208
+ /** `<dir>/node_modules`, then each ancestor's, the way Node resolves. */
209
+ function* nodeModulesChain(fromDir) {
210
+ let dir = fromDir;
211
+ for (;;) {
212
+ if (path.basename(dir) !== 'node_modules')
213
+ yield path.join(dir, 'node_modules');
214
+ const parent = path.dirname(dir);
215
+ if (parent === dir)
216
+ return;
217
+ dir = parent;
218
+ }
219
+ }
220
+ /** The first spelling of `base` that is a readable file. */
221
+ async function firstReadableConfig(base) {
222
+ for (const candidate of [base, `${base}.json`, path.join(base, 'tsconfig.json')]) {
223
+ try {
224
+ const stat = await fs.stat(candidate);
225
+ if (stat.isFile())
226
+ return candidate;
227
+ }
228
+ catch {
229
+ // try the next spelling
230
+ }
231
+ }
232
+ return null;
233
+ }
234
+ async function findTsconfigFiles(repoRoot) {
235
+ const found = [];
236
+ const queue = [{ dir: repoRoot, depth: 0 }];
237
+ let dirsScanned = 0;
238
+ while (queue.length > 0 && dirsScanned < SCAN_MAX_DIRS) {
239
+ const { dir, depth } = queue.shift();
240
+ dirsScanned++;
241
+ let entries;
242
+ try {
243
+ entries = await fs.readdir(dir, { withFileTypes: true });
244
+ }
245
+ catch {
246
+ continue;
247
+ }
248
+ for (const entry of entries) {
249
+ if (entry.isDirectory()) {
250
+ if (isHardcodedIgnoredDirectory(entry.name))
251
+ continue;
252
+ if (depth < SCAN_MAX_DEPTH)
253
+ queue.push({ dir: path.join(dir, entry.name), depth: depth + 1 });
254
+ continue;
255
+ }
256
+ if (!entry.isFile())
257
+ continue;
258
+ // `tsconfig.json`, `tsconfig.app.json`, `jsconfig.json`, … — any of them
259
+ // can carry the `baseUrl`/`paths` that governs its directory.
260
+ if (/^(ts|js)config(\..+)?\.json$/.test(entry.name)) {
261
+ found.push(path.join(dir, entry.name));
262
+ }
263
+ }
264
+ }
265
+ return found;
266
+ }
267
+ /** Strip comments and trailing commas — tsconfig is JSONC, not JSON. */
268
+ function parseJsonc(raw) {
269
+ const withoutComments = raw
270
+ .replace(/\\"|"(?:\\"|[^"])*"|(\/\/.*$)|(\/\*[\s\S]*?\*\/)/gm, (match, line, block) => line !== undefined || block !== undefined ? '' : match)
271
+ .replace(/,(\s*[}\]])/g, '$1');
272
+ return JSON.parse(withoutComments);
273
+ }
274
+ function repoRelative(repoRoot, absDir) {
275
+ const rel = path.relative(repoRoot, absDir).split(path.sep).join('/');
276
+ return rel === '.' || rel === '' ? '' : rel;
277
+ }
278
+ /**
279
+ * A `paths` target rebased to repo-relative, keeping any trailing `*`.
280
+ *
281
+ * `path.resolve` swallows the wildcard into a path segment, so it is stripped
282
+ * before resolving and re-appended after — the `*` is a substitution marker,
283
+ * not a directory named `*`.
284
+ */
285
+ function rebaseTarget(repoRoot, absTarget) {
286
+ // `/repo/src/*` must come back as `src/*`, not `src*`: stripping only the
287
+ // star leaves a trailing slash that `path.relative` then eats.
288
+ const suffix = absTarget.endsWith('/*') ? '/*' : absTarget.endsWith('*') ? '*' : '';
289
+ const base = suffix === '' ? absTarget : absTarget.slice(0, -suffix.length);
290
+ return `${repoRelative(repoRoot, base)}${suffix}`;
291
+ }
@@ -9,7 +9,51 @@ import { SupportedLanguages } from '../../../_shared/index.js';
9
9
  import { defineLanguage } from '../language-provider.js';
10
10
  import { createClassExtractor } from '../class-extractors/generic.js';
11
11
  import { typescriptClassConfig, javascriptClassConfig, } from '../class-extractors/configs/typescript-javascript.js';
12
- import { createLeadingDocDescriptionExtractor } from '../utils/ast-helpers.js';
12
+ import { createLeadingDocDescriptionExtractor, isCjsDefaultExportAssignment, isPrototypeMemberAssignmentNode, } from '../utils/ast-helpers.js';
13
+ import { cjsExportedNameFor, isModuleLevelThisAssignment, isModuleLevelThisExport, isShadowedCjsExportAssignmentNode, } from './typescript/cjs-export-assignment.js';
14
+ const rootOf = (node) => node.tree?.rootNode;
15
+ /** `exports.X = fn` where the module already declares `X` — see #2723. */
16
+ const isShadowedCjsExportNode = (node) => {
17
+ const root = rootOf(node);
18
+ return root !== undefined && isShadowedCjsExportAssignmentNode(node, root);
19
+ };
20
+ /**
21
+ * Label for a `<receiver>.<member> = <function>` capture (#2723 follow-up).
22
+ *
23
+ * The member-assignment queries match ANY identifier receiver, because an
24
+ * `exports` alias (`const e = exports; e.foo = fn`) cannot be pinned in the
25
+ * query. Everything that is not a recognised shape is dropped HERE — without
26
+ * that, every `obj.handler = function () {}` in every JS/TS file would emit a
27
+ * spurious top-level `Function` named `handler`.
28
+ *
29
+ * Recognised: a CJS export (direct, `module.exports`, or via a module-scope
30
+ * alias) stays a Function; a prototype or `this` member becomes a Method; a
31
+ * CJS export shadowing a name the module already declares emits nothing.
32
+ */
33
+ const memberAssignmentLabel = (node) => {
34
+ const root = rootOf(node);
35
+ // Module-level `this.X = fn` in CommonJS IS `module.exports.X = fn`, so it
36
+ // is an exported Function, not an instance member. Checked before the
37
+ // Method branch, which would otherwise claim every `this` receiver.
38
+ if (root !== undefined && isModuleLevelThisExport(node, root))
39
+ return 'Function';
40
+ // `module.exports = fn` — the module itself is the callable.
41
+ if (isCjsDefaultExportAssignment(node))
42
+ return 'Function';
43
+ // A module-level `this` member in ESM or a no-signal file is neither an
44
+ // export (top-level `this` is undefined) nor an instance member. Emitting a
45
+ // Method there minted an ownerless node (#2729 review F13).
46
+ if (isModuleLevelThisAssignment(node))
47
+ return null;
48
+ if (isPrototypeMemberAssignmentNode(node))
49
+ return 'Method';
50
+ if (isShadowedCjsExportNode(node))
51
+ return null;
52
+ const value = node.childForFieldName('right');
53
+ if (root === undefined || value === null)
54
+ return null;
55
+ return cjsExportedNameFor(value, root) !== null ? 'Function' : null;
56
+ };
13
57
  import { createTypeScriptCfgVisitor } from '../cfg/visitors/typescript.js';
14
58
  import { typeConfig as typescriptConfig } from '../type-extractors/typescript.js';
15
59
  import { tsExportChecker } from '../export-detection.js';
@@ -28,6 +72,12 @@ import { typescriptCallConfig, javascriptCallConfig, } from '../call-extractors/
28
72
  import { ARRAY_METHOD_HOC_BLOCKLIST_SET, DEFAULT_EXPORT_IDENTIFIER_BLOCKLIST_SET, deriveDefaultExportHocName, } from '../ts-js-hoc-utils.js';
29
73
  import { emitTsScopeCaptures, interpretTsImport, interpretTsTypeBinding, tsBindingScopeFor, tsImportOwningScope, tsReceiverBinding, typescriptMergeBindings, typescriptArityCompatibility, resolveTsImportTarget, } from './typescript/index.js';
30
74
  import { emitJsScopeCaptures, interpretJsImport, interpretJsTypeBinding, jsBindingScopeFor, jsImportOwningScope, jsReceiverBinding, jsMergeBindings, jsArityCompatibility, } from './javascript/index.js';
75
+ import { extractDispatchGuardRoutes } from '../route-extractors/dispatch-guard.js';
76
+ import { extractDataRouteTableRoutes } from '../route-extractors/data-route-table.js';
77
+ const extractJsTsRoutes = (...args) => [
78
+ ...extractDispatchGuardRoutes(...args),
79
+ ...extractDataRouteTableRoutes(...args),
80
+ ];
31
81
  /**
32
82
  * TypeScript/JavaScript: arrow_function and function_expression are
33
83
  * anonymous AST nodes — they take their name from the surrounding
@@ -250,6 +300,15 @@ export const BUILT_INS = new Set([
250
300
  'toString',
251
301
  'valueOf',
252
302
  ]);
303
+ /**
304
+ * `this` is the only receiver keyword JavaScript and TypeScript bind, and it
305
+ * is bound by every function form except an arrow (#2701). The query files
306
+ * tag those forms with `@receiver-owner.this`; this hook just reads the tag,
307
+ * so the node-type list stays in the one place that already names grammar
308
+ * nodes. See `Scope.ownsReceivers` for what the marker does to the walk.
309
+ */
310
+ const TS_OWNED_RECEIVERS = new Set(['this']);
311
+ const tsScopeOwnsReceivers = (match) => match['@receiver-owner.this'] === undefined ? undefined : TS_OWNED_RECEIVERS;
253
312
  export const typescriptProvider = defineLanguage({
254
313
  id: SupportedLanguages.TypeScript,
255
314
  extensions: ['.ts', '.tsx'],
@@ -278,6 +337,7 @@ export const typescriptProvider = defineLanguage({
278
337
  ],
279
338
  treeSitterQueries: TYPESCRIPT_QUERIES,
280
339
  typeConfig: typescriptConfig,
340
+ scopeOwnsReceivers: tsScopeOwnsReceivers,
281
341
  exportChecker: tsExportChecker,
282
342
  importResolver: createImportResolver(typescriptImportConfig),
283
343
  callExtractor: createCallExtractor(typescriptCallConfig),
@@ -294,6 +354,19 @@ export const typescriptProvider = defineLanguage({
294
354
  wrapperNodeTypes: ['export_statement'],
295
355
  }),
296
356
  builtInNames: BUILT_INS,
357
+ // Member-assignment shapes are not free functions (#2723 follow-up). The
358
+ // capture arrives anchored on the assignment, so the shape is decided from
359
+ // the left-hand side:
360
+ // - `Foo.prototype.bar = fn` / `this.bar = fn` -> a Method
361
+ // - a CJS export shadowing a name the module already declares -> no node
362
+ // at all, since the scope declaration that would reach it is suppressed
363
+ // too (an orphan `Function` twin beside `class Dup {}` otherwise).
364
+ // Every other `definition.function` capture keeps its default label.
365
+ labelOverride: (functionNode, defaultLabel) => defaultLabel !== 'Function'
366
+ ? defaultLabel
367
+ : functionNode.type === 'assignment_expression'
368
+ ? memberAssignmentLabel(functionNode)
369
+ : defaultLabel,
297
370
  // ── RFC #909 Ring 3: scope-based resolution hooks (RFC §5) ──────────
298
371
  // TypeScript is the third migration after Python and C#. See
299
372
  // ./typescript/index.ts for the full per-hook rationale and the
@@ -314,6 +387,10 @@ export const typescriptProvider = defineLanguage({
314
387
  receiverBinding: tsReceiverBinding,
315
388
  arityCompatibility: typescriptArityCompatibility,
316
389
  resolveImportTarget: resolveTsImportTarget,
390
+ // A raw `node:http` server declares its routes by comparing the request path
391
+ // to a literal; nothing else in this pipeline can see that shape. TS and JS
392
+ // share the grammar, so they share the extractor.
393
+ extractDecoratorRoutes: extractJsTsRoutes,
317
394
  });
318
395
  export const javascriptProvider = defineLanguage({
319
396
  id: SupportedLanguages.JavaScript,
@@ -343,6 +420,7 @@ export const javascriptProvider = defineLanguage({
343
420
  ],
344
421
  treeSitterQueries: JAVASCRIPT_QUERIES,
345
422
  typeConfig: typescriptConfig,
423
+ scopeOwnsReceivers: tsScopeOwnsReceivers,
346
424
  exportChecker: tsExportChecker,
347
425
  importResolver: createImportResolver(javascriptImportConfig),
348
426
  callExtractor: createCallExtractor(javascriptCallConfig),
@@ -359,6 +437,12 @@ export const javascriptProvider = defineLanguage({
359
437
  wrapperNodeTypes: ['export_statement'],
360
438
  }),
361
439
  builtInNames: BUILT_INS,
440
+ // Member-assignment shapes — see the TypeScript provider above.
441
+ labelOverride: (functionNode, defaultLabel) => defaultLabel !== 'Function'
442
+ ? defaultLabel
443
+ : functionNode.type === 'assignment_expression'
444
+ ? memberAssignmentLabel(functionNode)
445
+ : defaultLabel,
362
446
  // ── RFC #909 Ring 3: scope-based resolution hooks (RFC §5) ──────────
363
447
  // JavaScript is the fourth migration after Python, C#, and TypeScript.
364
448
  // Hooks are thin wrappers over the TypeScript implementations where
@@ -375,4 +459,6 @@ export const javascriptProvider = defineLanguage({
375
459
  mergeBindings: (_scope, bindings) => jsMergeBindings(bindings),
376
460
  receiverBinding: jsReceiverBinding,
377
461
  arityCompatibility: jsArityCompatibility,
462
+ // See the TypeScript provider above.
463
+ extractDecoratorRoutes: extractJsTsRoutes,
378
464
  });
@@ -1,27 +1,11 @@
1
1
  /**
2
2
  * Import-target resolver for Vue SFCs (RFC #909 Ring 3, issue #940).
3
3
  *
4
- * Vue `<script>` / `<script setup>` blocks are TypeScript (or plain
5
- * JavaScript), so the resolver delegates to `resolveTsTarget` with
6
- * `language: SupportedLanguages.TypeScript` to get:
7
- *
8
- * - tsconfig path-alias rewriting (Vue projects universally use TS)
9
- * - `.ts` / `.tsx` / `.js` / `.jsx` extension-suffix fallback
10
- *
11
- * `.vue` imports are written with explicit extensions (`'./Button.vue'`),
12
- * so no Vue-specific suffix guessing is required: the standard
13
- * resolver finds them via the exact-path branch before any extension
14
- * logic fires.
15
- *
16
- * Memoization mirrors the TypeScript adapter: workspace file-list
17
- * arrays, the suffix index, and the per-pass resolve cache are rebuilt
18
- * lazily when `allFilePaths` reference changes (once per workspace pass).
19
- */
20
- /**
21
- * Build a memoized `resolveImportTarget` adapter for Vue SFCs.
22
- *
23
- * Uses `SupportedLanguages.TypeScript` so tsconfig path-alias resolution
24
- * and `.ts`/`.tsx` extension guessing fire for relative and bare-specifier
25
- * imports inside `<script>` blocks.
4
+ * `<script>` / `<script setup>` blocks are TypeScript or plain JavaScript, so
5
+ * resolution is TypeScript's: the same tsconfig `paths`/`baseUrl` rules and the
6
+ * same `package.json` manifests. `.vue` imports are written with an explicit
7
+ * extension (`'./Button.vue'`) and `.vue` is in the candidate list, so no
8
+ * Vue-specific guessing is required — the exact-path branch finds them first.
26
9
  */
10
+ /** Build the Vue `resolveImportTarget` adapter. */
27
11
  export declare function makeVueResolveImportTarget(): (targetRaw: string, fromFile: string, allFilePaths: ReadonlySet<string>, resolutionConfig?: unknown) => string | readonly string[] | null;
@@ -1,58 +1,22 @@
1
1
  /**
2
2
  * Import-target resolver for Vue SFCs (RFC #909 Ring 3, issue #940).
3
3
  *
4
- * Vue `<script>` / `<script setup>` blocks are TypeScript (or plain
5
- * JavaScript), so the resolver delegates to `resolveTsTarget` with
6
- * `language: SupportedLanguages.TypeScript` to get:
7
- *
8
- * - tsconfig path-alias rewriting (Vue projects universally use TS)
9
- * - `.ts` / `.tsx` / `.js` / `.jsx` extension-suffix fallback
10
- *
11
- * `.vue` imports are written with explicit extensions (`'./Button.vue'`),
12
- * so no Vue-specific suffix guessing is required: the standard
13
- * resolver finds them via the exact-path branch before any extension
14
- * logic fires.
15
- *
16
- * Memoization mirrors the TypeScript adapter: workspace file-list
17
- * arrays, the suffix index, and the per-pass resolve cache are rebuilt
18
- * lazily when `allFilePaths` reference changes (once per workspace pass).
4
+ * `<script>` / `<script setup>` blocks are TypeScript or plain JavaScript, so
5
+ * resolution is TypeScript's: the same tsconfig `paths`/`baseUrl` rules and the
6
+ * same `package.json` manifests. `.vue` imports are written with an explicit
7
+ * extension (`'./Button.vue'`) and `.vue` is in the candidate list, so no
8
+ * Vue-specific guessing is required — the exact-path branch finds them first.
19
9
  */
20
- import { SupportedLanguages } from '../../../../_shared/index.js';
21
10
  import { resolveTsTarget } from '../typescript/import-target.js';
22
- import { buildSuffixIndex } from '../../import-resolvers/utils.js';
23
- /**
24
- * Build a memoized `resolveImportTarget` adapter for Vue SFCs.
25
- *
26
- * Uses `SupportedLanguages.TypeScript` so tsconfig path-alias resolution
27
- * and `.ts`/`.tsx` extension guessing fire for relative and bare-specifier
28
- * imports inside `<script>` blocks.
29
- */
11
+ /** Build the Vue `resolveImportTarget` adapter. */
30
12
  export function makeVueResolveImportTarget() {
31
- let cached = null;
32
13
  return (targetRaw, fromFile, allFilePaths, resolutionConfig) => {
33
- if (cached === null || cached.key !== allFilePaths) {
34
- const allFileList = Array.from(allFilePaths);
35
- const normalizedFileList = allFileList.map((f) => f.toLowerCase());
36
- cached = {
37
- key: allFilePaths,
38
- allFilePaths: new Set(allFilePaths),
39
- allFileList,
40
- normalizedFileList,
41
- index: buildSuffixIndex(normalizedFileList, allFileList),
42
- resolveCache: new Map(),
43
- };
44
- }
45
14
  const cfg = resolutionConfig;
46
- const ws = {
15
+ return resolveTsTarget(targetRaw, {
47
16
  fromFile,
48
- language: SupportedLanguages.TypeScript,
49
- allFilePaths: cached.allFilePaths,
50
- allFileList: cached.allFileList,
51
- normalizedFileList: cached.normalizedFileList,
52
- index: cached.index,
53
- resolveCache: cached.resolveCache,
54
- tsconfigPaths: cfg?.tsconfigPaths ?? null,
55
- };
56
- return resolveTsTarget(targetRaw, ws);
17
+ allFilePaths,
18
+ tsconfigs: cfg?.tsconfigs ?? null,
19
+ nodeWorkspacePackages: cfg?.nodeWorkspacePackages ?? null,
20
+ });
57
21
  };
58
22
  }