gitnexus 1.6.10-rc.99 → 1.6.10

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 (775) hide show
  1. package/README.md +177 -18
  2. package/dist/_shared/graph/types.d.ts +21 -2
  3. package/dist/_shared/graph/types.d.ts.map +1 -1
  4. package/dist/_shared/index.d.ts +3 -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 +16 -0
  11. package/dist/_shared/integrations/resilient-fetch.d.ts.map +1 -1
  12. package/dist/_shared/integrations/resilient-fetch.js +19 -7
  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/evidence-weights.d.ts.map +1 -1
  20. package/dist/_shared/scope-resolution/finalize-algorithm.d.ts +5 -0
  21. package/dist/_shared/scope-resolution/finalize-algorithm.d.ts.map +1 -1
  22. package/dist/_shared/scope-resolution/finalize-algorithm.js +315 -36
  23. package/dist/_shared/scope-resolution/finalize-algorithm.js.map +1 -1
  24. package/dist/_shared/scope-resolution/reference-site.d.ts +115 -0
  25. package/dist/_shared/scope-resolution/reference-site.d.ts.map +1 -1
  26. package/dist/_shared/scope-resolution/registries/field-registry.js.map +1 -1
  27. package/dist/_shared/scope-resolution/registries/lookup-core.d.ts.map +1 -1
  28. package/dist/_shared/scope-resolution/registries/lookup-core.js +58 -2
  29. package/dist/_shared/scope-resolution/registries/lookup-core.js.map +1 -1
  30. package/dist/_shared/scope-resolution/registries/method-registry.js.map +1 -1
  31. package/dist/_shared/scope-resolution/scope-tree.d.ts.map +1 -1
  32. package/dist/_shared/scope-resolution/scope-tree.js.map +1 -1
  33. package/dist/_shared/scope-resolution/symbol-definition.d.ts +47 -0
  34. package/dist/_shared/scope-resolution/symbol-definition.d.ts.map +1 -1
  35. package/dist/_shared/scope-resolution/types.d.ts +278 -3
  36. package/dist/_shared/scope-resolution/types.d.ts.map +1 -1
  37. package/dist/cli/ai-context.d.ts +3 -2
  38. package/dist/cli/ai-context.js +71 -16
  39. package/dist/cli/analyze-config.d.ts +1 -1
  40. package/dist/cli/analyze-options.d.ts +131 -0
  41. package/dist/cli/analyze-options.js +1 -0
  42. package/dist/cli/analyze.d.ts +21 -113
  43. package/dist/cli/analyze.js +172 -29
  44. package/dist/cli/cli-message.d.ts +1 -1
  45. package/dist/cli/detect-changes-format.js +19 -2
  46. package/dist/cli/doctor.d.ts +12 -0
  47. package/dist/cli/doctor.js +32 -5
  48. package/dist/cli/editor-targets.js +6 -0
  49. package/dist/cli/eval-server.js +2 -1
  50. package/dist/cli/format-symbol.d.ts +15 -0
  51. package/dist/cli/format-symbol.js +17 -0
  52. package/dist/cli/generated-skill.d.ts +17 -0
  53. package/dist/cli/generated-skill.js +1 -0
  54. package/dist/cli/group.js +229 -21
  55. package/dist/cli/help-i18n.js +1 -2
  56. package/dist/cli/i18n/en.d.ts +11 -9
  57. package/dist/cli/i18n/en.js +13 -9
  58. package/dist/cli/i18n/resources.d.ts +15 -11
  59. package/dist/cli/i18n/zh-CN.d.ts +4 -2
  60. package/dist/cli/i18n/zh-CN.js +11 -9
  61. package/dist/cli/index.js +8 -4
  62. package/dist/cli/resolve-invocation.d.ts +7 -3
  63. package/dist/cli/resolve-invocation.js +7 -3
  64. package/dist/cli/setup.js +4 -3
  65. package/dist/cli/skill-gen.d.ts +1 -6
  66. package/dist/cli/tool.d.ts +1 -0
  67. package/dist/cli/tool.js +74 -17
  68. package/dist/cli/wiki.js +53 -10
  69. package/dist/config/ignore-service.d.ts +2 -0
  70. package/dist/config/ignore-service.js +54 -13
  71. package/dist/core/analyzer-identity.d.ts +80 -0
  72. package/dist/core/analyzer-identity.js +364 -26
  73. package/dist/core/augmentation/engine.js +86 -71
  74. package/dist/core/embedding-checkpoint.d.ts +143 -0
  75. package/dist/core/embedding-checkpoint.js +221 -0
  76. package/dist/core/embedding-count.d.ts +61 -0
  77. package/dist/core/embedding-count.js +69 -0
  78. package/dist/core/embeddings/ast-utils.js +9 -1
  79. package/dist/core/embeddings/embedding-pipeline.d.ts +8 -0
  80. package/dist/core/embeddings/embedding-pipeline.js +253 -14
  81. package/dist/core/embeddings/http-client.d.ts +5 -0
  82. package/dist/core/embeddings/http-client.js +142 -27
  83. package/dist/core/graph/graph.js +3 -0
  84. package/dist/core/graph/import-cycles.d.ts +194 -3
  85. package/dist/core/graph/import-cycles.js +522 -73
  86. package/dist/core/graph/types.d.ts +18 -0
  87. package/dist/core/group/bridge-db.d.ts +204 -1
  88. package/dist/core/group/bridge-db.js +401 -28
  89. package/dist/core/group/completeness.d.ts +130 -0
  90. package/dist/core/group/completeness.js +83 -0
  91. package/dist/core/group/config-parser.js +0 -5
  92. package/dist/core/group/cross-impact.d.ts +46 -1
  93. package/dist/core/group/cross-impact.js +220 -19
  94. package/dist/core/group/cross-trace.d.ts +32 -11
  95. package/dist/core/group/cross-trace.js +114 -20
  96. package/dist/core/group/extractors/http-patterns/java.js +278 -22
  97. package/dist/core/group/extractors/http-patterns/node.js +332 -216
  98. package/dist/core/group/extractors/http-patterns/types.d.ts +8 -0
  99. package/dist/core/group/extractors/http-route-extractor.d.ts +1 -0
  100. package/dist/core/group/extractors/http-route-extractor.js +122 -48
  101. package/dist/core/group/extractors/include-extractor.js +20 -2
  102. package/dist/core/group/extractors/manifest-extractor.d.ts +1 -1
  103. package/dist/core/group/extractors/manifest-extractor.js +7 -7
  104. package/dist/core/group/extractors/python-workspace-extractor.js +5 -2
  105. package/dist/core/group/group-lock.d.ts +31 -0
  106. package/dist/core/group/group-lock.js +166 -0
  107. package/dist/core/group/service.js +297 -16
  108. package/dist/core/group/storage.d.ts +3 -0
  109. package/dist/core/group/storage.js +7 -39
  110. package/dist/core/group/sync.d.ts +49 -3
  111. package/dist/core/group/sync.js +0 -0
  112. package/dist/core/group/types.d.ts +183 -8
  113. package/dist/core/group/types.js +28 -1
  114. package/dist/core/incremental/subgraph-extract.d.ts +9 -6
  115. package/dist/core/incremental/subgraph-extract.js +33 -10
  116. package/dist/core/index-freshness.d.ts +77 -2
  117. package/dist/core/index-freshness.js +109 -2
  118. package/dist/core/ingestion/call-processor.d.ts +13 -1
  119. package/dist/core/ingestion/call-processor.js +110 -3
  120. package/dist/core/ingestion/cfg/callee-cell-format.d.ts +42 -0
  121. package/dist/core/ingestion/cfg/callee-cell-format.js +42 -0
  122. package/dist/core/ingestion/cfg/emit.d.ts +8 -23
  123. package/dist/core/ingestion/cfg/emit.js +9 -23
  124. package/dist/core/ingestion/class-extractors/configs/go.js +10 -5
  125. package/dist/core/ingestion/cluster-enricher.js +8 -4
  126. package/dist/core/ingestion/community-processor.d.ts +21 -3
  127. package/dist/core/ingestion/community-processor.js +81 -82
  128. package/dist/core/ingestion/di-extractors/index.d.ts +9 -33
  129. package/dist/core/ingestion/di-extractors/spring.d.ts +1 -1
  130. package/dist/core/ingestion/di-extractors/spring.js +8 -1
  131. package/dist/core/ingestion/di-extractors/types.d.ts +60 -0
  132. package/dist/core/ingestion/di-extractors/types.js +15 -0
  133. package/dist/core/ingestion/filesystem-walker.js +30 -14
  134. package/dist/core/ingestion/finalize-orchestrator.js +1 -0
  135. package/dist/core/ingestion/frameworks/spring/analysis-features.d.ts +6 -0
  136. package/dist/core/ingestion/frameworks/spring/analysis-features.js +35 -1
  137. package/dist/core/ingestion/frameworks/spring/annotation-arguments.d.ts +13 -0
  138. package/dist/core/ingestion/frameworks/spring/annotation-arguments.js +227 -0
  139. package/dist/core/ingestion/frameworks/spring/aop-candidates.d.ts +15 -0
  140. package/dist/core/ingestion/frameworks/spring/aop-candidates.js +85 -0
  141. package/dist/core/ingestion/frameworks/spring/aop.d.ts +118 -0
  142. package/dist/core/ingestion/frameworks/spring/aop.js +476 -0
  143. package/dist/core/ingestion/frameworks/spring/auto-configuration.d.ts +8 -0
  144. package/dist/core/ingestion/frameworks/spring/auto-configuration.js +16 -0
  145. package/dist/core/ingestion/frameworks/spring/bean-catalog.js +1 -0
  146. package/dist/core/ingestion/frameworks/spring/bean-factories.d.ts +33 -0
  147. package/dist/core/ingestion/frameworks/spring/bean-factories.js +65 -0
  148. package/dist/core/ingestion/frameworks/spring/conditionals.d.ts +25 -0
  149. package/dist/core/ingestion/frameworks/spring/conditionals.js +319 -0
  150. package/dist/core/ingestion/frameworks/spring/di-metadata.d.ts +3 -0
  151. package/dist/core/ingestion/frameworks/spring/di-metadata.js +162 -13
  152. package/dist/core/ingestion/frameworks/spring/non-http-handlers.d.ts +28 -0
  153. package/dist/core/ingestion/frameworks/spring/non-http-handlers.js +152 -0
  154. package/dist/core/ingestion/frameworks/spring/resource-injection.d.ts +5 -0
  155. package/dist/core/ingestion/frameworks/spring/resource-injection.js +91 -0
  156. package/dist/core/ingestion/import-resolvers/configs/csharp.js +5 -1
  157. package/dist/core/ingestion/import-resolvers/configs/swift.js +13 -0
  158. package/dist/core/ingestion/import-resolvers/csharp.d.ts +9 -1
  159. package/dist/core/ingestion/import-resolvers/csharp.js +234 -27
  160. package/dist/core/ingestion/import-resolvers/go.d.ts +11 -1
  161. package/dist/core/ingestion/import-resolvers/go.js +44 -17
  162. package/dist/core/ingestion/import-resolvers/jvm.d.ts +2 -2
  163. package/dist/core/ingestion/import-resolvers/node-workspace-packages.d.ts +90 -0
  164. package/dist/core/ingestion/import-resolvers/node-workspace-packages.js +429 -0
  165. package/dist/core/ingestion/import-resolvers/package-dir-index.d.ts +124 -0
  166. package/dist/core/ingestion/import-resolvers/package-dir-index.js +223 -0
  167. package/dist/core/ingestion/import-resolvers/pass-cache.d.ts +50 -0
  168. package/dist/core/ingestion/import-resolvers/pass-cache.js +60 -0
  169. package/dist/core/ingestion/import-resolvers/per-file-set.d.ts +71 -0
  170. package/dist/core/ingestion/import-resolvers/per-file-set.js +11 -0
  171. package/dist/core/ingestion/import-resolvers/php.d.ts +1 -1
  172. package/dist/core/ingestion/import-resolvers/php.js +65 -19
  173. package/dist/core/ingestion/import-resolvers/python-file-index.d.ts +201 -0
  174. package/dist/core/ingestion/import-resolvers/python-file-index.js +302 -0
  175. package/dist/core/ingestion/import-resolvers/python.js +25 -6
  176. package/dist/core/ingestion/import-resolvers/ruby.d.ts +1 -1
  177. package/dist/core/ingestion/import-resolvers/rust.d.ts +2 -2
  178. package/dist/core/ingestion/import-resolvers/standard.d.ts +1 -1
  179. package/dist/core/ingestion/import-resolvers/types.d.ts +1 -12
  180. package/dist/core/ingestion/import-resolvers/utils.d.ts +65 -6
  181. package/dist/core/ingestion/import-resolvers/utils.js +215 -36
  182. package/dist/core/ingestion/import-resolvers/workspace-file-index.d.ts +72 -0
  183. package/dist/core/ingestion/import-resolvers/workspace-file-index.js +58 -0
  184. package/dist/core/ingestion/language-config.d.ts +29 -1
  185. package/dist/core/ingestion/language-config.js +110 -35
  186. package/dist/core/ingestion/language-provider.d.ts +209 -7
  187. package/dist/core/ingestion/language-provider.js +37 -0
  188. package/dist/core/ingestion/languages/c/captures.js +7 -0
  189. package/dist/core/ingestion/languages/c/import-target.js +12 -16
  190. package/dist/core/ingestion/languages/c/scope-resolver.js +20 -19
  191. package/dist/core/ingestion/languages/c/static-linkage.js +12 -16
  192. package/dist/core/ingestion/languages/c-cpp.js +13 -0
  193. package/dist/core/ingestion/languages/cobol/scope-resolver.js +27 -20
  194. package/dist/core/ingestion/languages/cobol.js +13 -0
  195. package/dist/core/ingestion/languages/cpp/adl.d.ts +2 -2
  196. package/dist/core/ingestion/languages/cpp/adl.js +67 -44
  197. package/dist/core/ingestion/languages/cpp/captures.js +14 -2
  198. package/dist/core/ingestion/languages/cpp/file-local-linkage.js +11 -15
  199. package/dist/core/ingestion/languages/cpp/inline-namespaces.d.ts +28 -8
  200. package/dist/core/ingestion/languages/cpp/inline-namespaces.js +242 -68
  201. package/dist/core/ingestion/languages/cpp/interpret.d.ts +2 -0
  202. package/dist/core/ingestion/languages/cpp/interpret.js +126 -6
  203. package/dist/core/ingestion/languages/cpp/query.js +106 -0
  204. package/dist/core/ingestion/languages/cpp/scope-resolver.js +48 -20
  205. package/dist/core/ingestion/languages/csharp/accessor-unwrap.d.ts +2 -15
  206. package/dist/core/ingestion/languages/csharp/accessor-unwrap.js +18 -10
  207. package/dist/core/ingestion/languages/csharp/captures.js +19 -0
  208. package/dist/core/ingestion/languages/csharp/import-target.js +46 -72
  209. package/dist/core/ingestion/languages/csharp/namespace-siblings.js +5 -1
  210. package/dist/core/ingestion/languages/csharp/query.js +25 -5
  211. package/dist/core/ingestion/languages/csharp/scope-resolver.js +75 -2
  212. package/dist/core/ingestion/languages/dart/captures.d.ts +10 -0
  213. package/dist/core/ingestion/languages/dart/captures.js +598 -16
  214. package/dist/core/ingestion/languages/dart/import-target.js +32 -9
  215. package/dist/core/ingestion/languages/dart/index.d.ts +1 -1
  216. package/dist/core/ingestion/languages/dart/index.js +1 -1
  217. package/dist/core/ingestion/languages/dart/query.js +98 -1
  218. package/dist/core/ingestion/languages/dart/scope-resolver.js +14 -3
  219. package/dist/core/ingestion/languages/dart/simple-hooks.js +9 -0
  220. package/dist/core/ingestion/languages/dart.js +6 -1
  221. package/dist/core/ingestion/languages/go/captures.js +108 -3
  222. package/dist/core/ingestion/languages/go/generic-type-parameters.d.ts +31 -0
  223. package/dist/core/ingestion/languages/go/generic-type-parameters.js +140 -0
  224. package/dist/core/ingestion/languages/go/import-target.d.ts +3 -10
  225. package/dist/core/ingestion/languages/go/import-target.js +34 -30
  226. package/dist/core/ingestion/languages/go/index.d.ts +1 -1
  227. package/dist/core/ingestion/languages/go/interface-impls.d.ts +9 -1
  228. package/dist/core/ingestion/languages/go/interface-impls.js +693 -87
  229. package/dist/core/ingestion/languages/go/interpret.d.ts +2 -0
  230. package/dist/core/ingestion/languages/go/interpret.js +22 -8
  231. package/dist/core/ingestion/languages/go/method-owners.js +31 -12
  232. package/dist/core/ingestion/languages/go/package-clause.d.ts +46 -0
  233. package/dist/core/ingestion/languages/go/package-clause.js +75 -0
  234. package/dist/core/ingestion/languages/go/package-siblings.js +7 -11
  235. package/dist/core/ingestion/languages/go/query.js +56 -3
  236. package/dist/core/ingestion/languages/go/scope-resolver.js +39 -0
  237. package/dist/core/ingestion/languages/go.js +9 -0
  238. package/dist/core/ingestion/languages/java/analysis-features.d.ts +4 -0
  239. package/dist/core/ingestion/languages/java/analysis-features.js +12 -0
  240. package/dist/core/ingestion/languages/java/capture-side-channel.d.ts +12 -0
  241. package/dist/core/ingestion/languages/java/capture-side-channel.js +48 -0
  242. package/dist/core/ingestion/languages/java/captures.js +77 -32
  243. package/dist/core/ingestion/languages/java/import-target.d.ts +49 -9
  244. package/dist/core/ingestion/languages/java/import-target.js +68 -88
  245. package/dist/core/ingestion/languages/java/interpret.js +3 -2
  246. package/dist/core/ingestion/languages/java/module-resolution.d.ts +62 -0
  247. package/dist/core/ingestion/languages/java/module-resolution.js +142 -0
  248. package/dist/core/ingestion/languages/java/query.js +15 -3
  249. package/dist/core/ingestion/languages/java/record-components.d.ts +14 -0
  250. package/dist/core/ingestion/languages/java/record-components.js +185 -0
  251. package/dist/core/ingestion/languages/java/scope-resolver.js +10 -2
  252. package/dist/core/ingestion/languages/java/spring-aop.d.ts +12 -0
  253. package/dist/core/ingestion/languages/java/spring-aop.js +49 -0
  254. package/dist/core/ingestion/languages/java/spring-conditionals.d.ts +11 -0
  255. package/dist/core/ingestion/languages/java/spring-conditionals.js +48 -0
  256. package/dist/core/ingestion/languages/java/spring-di.d.ts +4 -1
  257. package/dist/core/ingestion/languages/java/spring-di.js +41 -9
  258. package/dist/core/ingestion/languages/java/spring-non-http-handlers.d.ts +7 -0
  259. package/dist/core/ingestion/languages/java/spring-non-http-handlers.js +32 -0
  260. package/dist/core/ingestion/languages/java.js +94 -3
  261. package/dist/core/ingestion/languages/javascript/captures.d.ts +6 -1
  262. package/dist/core/ingestion/languages/javascript/captures.js +262 -4
  263. package/dist/core/ingestion/languages/javascript/import-target.d.ts +17 -21
  264. package/dist/core/ingestion/languages/javascript/import-target.js +24 -41
  265. package/dist/core/ingestion/languages/javascript/index.d.ts +54 -5
  266. package/dist/core/ingestion/languages/javascript/index.js +54 -5
  267. package/dist/core/ingestion/languages/javascript/query.d.ts +1 -0
  268. package/dist/core/ingestion/languages/javascript/query.js +211 -5
  269. package/dist/core/ingestion/languages/javascript/scope-resolver.js +12 -0
  270. package/dist/core/ingestion/languages/javascript/simple-hooks.js +2 -1
  271. package/dist/core/ingestion/languages/jvm/package-siblings.js +77 -9
  272. package/dist/core/ingestion/languages/kotlin/capture-side-channel.d.ts +15 -0
  273. package/dist/core/ingestion/languages/kotlin/capture-side-channel.js +48 -0
  274. package/dist/core/ingestion/languages/kotlin/captures.js +43 -1
  275. package/dist/core/ingestion/languages/kotlin/import-target.d.ts +8 -1
  276. package/dist/core/ingestion/languages/kotlin/import-target.js +20 -123
  277. package/dist/core/ingestion/languages/kotlin/index.d.ts +1 -0
  278. package/dist/core/ingestion/languages/kotlin/index.js +1 -0
  279. package/dist/core/ingestion/languages/kotlin/module-resolution.d.ts +22 -0
  280. package/dist/core/ingestion/languages/kotlin/module-resolution.js +108 -0
  281. package/dist/core/ingestion/languages/kotlin/query.js +28 -2
  282. package/dist/core/ingestion/languages/kotlin/scope-resolver.js +23 -2
  283. package/dist/core/ingestion/languages/kotlin/spring-aop.d.ts +12 -0
  284. package/dist/core/ingestion/languages/kotlin/spring-aop.js +64 -0
  285. package/dist/core/ingestion/languages/kotlin/spring-conditionals.d.ts +12 -0
  286. package/dist/core/ingestion/languages/kotlin/spring-conditionals.js +49 -0
  287. package/dist/core/ingestion/languages/kotlin/spring-di.d.ts +2 -0
  288. package/dist/core/ingestion/languages/kotlin/spring-di.js +60 -11
  289. package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.d.ts +10 -0
  290. package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.js +41 -0
  291. package/dist/core/ingestion/languages/php/captures.d.ts +5 -0
  292. package/dist/core/ingestion/languages/php/captures.js +319 -51
  293. package/dist/core/ingestion/languages/php/import-target.d.ts +3 -4
  294. package/dist/core/ingestion/languages/php/import-target.js +192 -62
  295. package/dist/core/ingestion/languages/php/query.js +31 -0
  296. package/dist/core/ingestion/languages/python/arity-metadata.d.ts +1 -0
  297. package/dist/core/ingestion/languages/python/arity-metadata.js +1 -0
  298. package/dist/core/ingestion/languages/python/captures.js +29 -0
  299. package/dist/core/ingestion/languages/python/import-decomposer.js +22 -1
  300. package/dist/core/ingestion/languages/python/import-target.d.ts +42 -1
  301. package/dist/core/ingestion/languages/python/import-target.js +277 -91
  302. package/dist/core/ingestion/languages/python/index.d.ts +1 -1
  303. package/dist/core/ingestion/languages/python/index.js +1 -1
  304. package/dist/core/ingestion/languages/python/interpret.d.ts +52 -0
  305. package/dist/core/ingestion/languages/python/interpret.js +249 -7
  306. package/dist/core/ingestion/languages/python/query.js +9 -0
  307. package/dist/core/ingestion/languages/python/receiver-binding.d.ts +8 -6
  308. package/dist/core/ingestion/languages/python/receiver-binding.js +108 -12
  309. package/dist/core/ingestion/languages/python/scope-resolver.js +27 -4
  310. package/dist/core/ingestion/languages/python/simple-hooks.js +2 -8
  311. package/dist/core/ingestion/languages/python.js +13 -0
  312. package/dist/core/ingestion/languages/ruby/captures.js +158 -0
  313. package/dist/core/ingestion/languages/ruby/import-target.js +7 -5
  314. package/dist/core/ingestion/languages/ruby/query.js +93 -0
  315. package/dist/core/ingestion/languages/ruby/scope-resolver.js +2 -0
  316. package/dist/core/ingestion/languages/ruby/simple-hooks.d.ts +1 -1
  317. package/dist/core/ingestion/languages/ruby/simple-hooks.js +22 -1
  318. package/dist/core/ingestion/languages/rust/captures.js +39 -1
  319. package/dist/core/ingestion/languages/rust/method-owners.js +11 -1
  320. package/dist/core/ingestion/languages/rust/module-path.d.ts +126 -0
  321. package/dist/core/ingestion/languages/rust/module-path.js +214 -0
  322. package/dist/core/ingestion/languages/rust/qualified-call.d.ts +41 -0
  323. package/dist/core/ingestion/languages/rust/qualified-call.js +481 -0
  324. package/dist/core/ingestion/languages/rust/query.js +39 -6
  325. package/dist/core/ingestion/languages/rust/scope-resolver.js +21 -2
  326. package/dist/core/ingestion/languages/rust.js +17 -0
  327. package/dist/core/ingestion/languages/swift/captures.js +87 -3
  328. package/dist/core/ingestion/languages/swift/conditional-directive-preprocess.d.ts +48 -0
  329. package/dist/core/ingestion/languages/swift/conditional-directive-preprocess.js +253 -0
  330. package/dist/core/ingestion/languages/swift/import-target.js +4 -9
  331. package/dist/core/ingestion/languages/swift/query.js +17 -0
  332. package/dist/core/ingestion/languages/swift/receiver-binding.d.ts +8 -0
  333. package/dist/core/ingestion/languages/swift/receiver-binding.js +6 -2
  334. package/dist/core/ingestion/languages/swift.js +2 -0
  335. package/dist/core/ingestion/languages/typescript/captures.d.ts +90 -1
  336. package/dist/core/ingestion/languages/typescript/captures.js +267 -5
  337. package/dist/core/ingestion/languages/typescript/cjs-export-assignment.d.ts +134 -0
  338. package/dist/core/ingestion/languages/typescript/cjs-export-assignment.js +523 -0
  339. package/dist/core/ingestion/languages/typescript/cjs-module-exports.d.ts +54 -0
  340. package/dist/core/ingestion/languages/typescript/cjs-module-exports.js +191 -0
  341. package/dist/core/ingestion/languages/typescript/convex-endpoint-metadata.d.ts +7 -0
  342. package/dist/core/ingestion/languages/typescript/convex-endpoint-metadata.js +92 -0
  343. package/dist/core/ingestion/languages/typescript/file-candidates.d.ts +29 -0
  344. package/dist/core/ingestion/languages/typescript/file-candidates.js +70 -0
  345. package/dist/core/ingestion/languages/typescript/import-decomposer.d.ts +28 -1
  346. package/dist/core/ingestion/languages/typescript/import-decomposer.js +125 -10
  347. package/dist/core/ingestion/languages/typescript/import-target.d.ts +25 -37
  348. package/dist/core/ingestion/languages/typescript/import-target.js +24 -26
  349. package/dist/core/ingestion/languages/typescript/interpret.d.ts +21 -1
  350. package/dist/core/ingestion/languages/typescript/interpret.js +45 -5
  351. package/dist/core/ingestion/languages/typescript/module-resolution.d.ts +48 -0
  352. package/dist/core/ingestion/languages/typescript/module-resolution.js +171 -0
  353. package/dist/core/ingestion/languages/typescript/query.d.ts +1 -0
  354. package/dist/core/ingestion/languages/typescript/query.js +303 -14
  355. package/dist/core/ingestion/languages/typescript/receiver-binding.d.ts +17 -0
  356. package/dist/core/ingestion/languages/typescript/receiver-binding.js +27 -0
  357. package/dist/core/ingestion/languages/typescript/scope-resolver.js +27 -40
  358. package/dist/core/ingestion/languages/typescript/simple-hooks.d.ts +0 -10
  359. package/dist/core/ingestion/languages/typescript/simple-hooks.js +22 -22
  360. package/dist/core/ingestion/languages/typescript/tsconfig.d.ts +59 -0
  361. package/dist/core/ingestion/languages/typescript/tsconfig.js +292 -0
  362. package/dist/core/ingestion/languages/typescript.js +93 -2
  363. package/dist/core/ingestion/languages/vue/import-target.d.ts +6 -22
  364. package/dist/core/ingestion/languages/vue/import-target.js +11 -47
  365. package/dist/core/ingestion/languages/vue/scope-resolver.js +4 -2
  366. package/dist/core/ingestion/local-symbol-pruner.js +11 -11
  367. package/dist/core/ingestion/method-extractors/configs/csharp.js +1 -0
  368. package/dist/core/ingestion/method-extractors/generic.js +1 -0
  369. package/dist/core/ingestion/method-types.d.ts +16 -0
  370. package/dist/core/ingestion/pipeline-phases/di.d.ts +1 -1
  371. package/dist/core/ingestion/pipeline-phases/di.js +136 -21
  372. package/dist/core/ingestion/pipeline-phases/index.d.ts +2 -0
  373. package/dist/core/ingestion/pipeline-phases/index.js +2 -0
  374. package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +15 -0
  375. package/dist/core/ingestion/pipeline-phases/parse-impl.js +154 -4
  376. package/dist/core/ingestion/pipeline-phases/parse.js +5 -0
  377. package/dist/core/ingestion/pipeline-phases/processes.d.ts +3 -2
  378. package/dist/core/ingestion/pipeline-phases/processes.js +91 -6
  379. package/dist/core/ingestion/pipeline-phases/routes.js +116 -25
  380. package/dist/core/ingestion/pipeline-phases/spring-aop.d.ts +34 -0
  381. package/dist/core/ingestion/pipeline-phases/spring-aop.js +439 -0
  382. package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.d.ts +34 -0
  383. package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.js +255 -0
  384. package/dist/core/ingestion/pipeline-phases/types.d.ts +7 -0
  385. package/dist/core/ingestion/pipeline.d.ts +26 -2
  386. package/dist/core/ingestion/pipeline.js +60 -11
  387. package/dist/core/ingestion/process-processor.d.ts +109 -2
  388. package/dist/core/ingestion/process-processor.js +464 -52
  389. package/dist/core/ingestion/resolve-references.d.ts +6 -1
  390. package/dist/core/ingestion/resolve-references.js +66 -6
  391. package/dist/core/ingestion/route-extractors/constant-resolver.d.ts +8 -2
  392. package/dist/core/ingestion/route-extractors/constant-resolver.js +11 -7
  393. package/dist/core/ingestion/route-extractors/data-route-table.d.ts +40 -0
  394. package/dist/core/ingestion/route-extractors/data-route-table.js +876 -0
  395. package/dist/core/ingestion/route-extractors/dispatch-guard.d.ts +96 -0
  396. package/dist/core/ingestion/route-extractors/dispatch-guard.js +1184 -0
  397. package/dist/core/ingestion/route-extractors/java-const-resolver.d.ts +114 -0
  398. package/dist/core/ingestion/route-extractors/java-const-resolver.js +569 -0
  399. package/dist/core/ingestion/route-extractors/js-const-resolver.d.ts +192 -0
  400. package/dist/core/ingestion/route-extractors/js-const-resolver.js +1033 -0
  401. package/dist/core/ingestion/route-extractors/nest.d.ts +53 -0
  402. package/dist/core/ingestion/route-extractors/nest.js +523 -0
  403. package/dist/core/ingestion/route-extractors/spring-shared.d.ts +11 -0
  404. package/dist/core/ingestion/route-extractors/spring-shared.js +89 -0
  405. package/dist/core/ingestion/route-extractors/spring.js +214 -29
  406. package/dist/core/ingestion/scope-extractor-bridge.js +9 -1
  407. package/dist/core/ingestion/scope-extractor.d.ts +22 -7
  408. package/dist/core/ingestion/scope-extractor.js +309 -15
  409. package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +311 -21
  410. package/dist/core/ingestion/scope-resolution/contract/scope-resolver.js +16 -5
  411. package/dist/core/ingestion/scope-resolution/graph-bridge/edges.d.ts +12 -0
  412. package/dist/core/ingestion/scope-resolution/graph-bridge/edges.js +47 -0
  413. package/dist/core/ingestion/scope-resolution/graph-bridge/ids.d.ts +20 -15
  414. package/dist/core/ingestion/scope-resolution/graph-bridge/ids.js +280 -42
  415. package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.d.ts +123 -0
  416. package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +171 -17
  417. package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.d.ts +58 -1
  418. package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +137 -34
  419. package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.d.ts +30 -1
  420. package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +39 -1
  421. package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.d.ts +18 -1
  422. package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.js +113 -18
  423. package/dist/core/ingestion/scope-resolution/passes/compound-receiver.d.ts +107 -5
  424. package/dist/core/ingestion/scope-resolution/passes/compound-receiver.js +590 -33
  425. package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +3 -0
  426. package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +101 -41
  427. package/dist/core/ingestion/scope-resolution/passes/imported-value-refs.d.ts +34 -0
  428. package/dist/core/ingestion/scope-resolution/passes/imported-value-refs.js +62 -0
  429. package/dist/core/ingestion/scope-resolution/passes/property-dispatch.d.ts +5 -1
  430. package/dist/core/ingestion/scope-resolution/passes/property-dispatch.js +8 -1
  431. package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.d.ts +105 -5
  432. package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +931 -92
  433. package/dist/core/ingestion/scope-resolution/passes/return-shape-members.d.ts +58 -0
  434. package/dist/core/ingestion/scope-resolution/passes/return-shape-members.js +458 -0
  435. package/dist/core/ingestion/scope-resolution/passes/unique-name-properties.d.ts +180 -0
  436. package/dist/core/ingestion/scope-resolution/passes/unique-name-properties.js +418 -0
  437. package/dist/core/ingestion/scope-resolution/pipeline/phase.d.ts +29 -0
  438. package/dist/core/ingestion/scope-resolution/pipeline/phase.js +57 -0
  439. package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +55 -1
  440. package/dist/core/ingestion/scope-resolution/pipeline/run.js +241 -19
  441. package/dist/core/ingestion/scope-resolution/resolution-outcome.d.ts +112 -2
  442. package/dist/core/ingestion/scope-resolution/resolution-outcome.js +38 -1
  443. package/dist/core/ingestion/scope-resolution/scope/namespace-targets.d.ts +25 -3
  444. package/dist/core/ingestion/scope-resolution/scope/namespace-targets.js +36 -16
  445. package/dist/core/ingestion/scope-resolution/scope/walkers.d.ts +210 -9
  446. package/dist/core/ingestion/scope-resolution/scope/walkers.js +905 -22
  447. package/dist/core/ingestion/scope-resolution/summary-maps.d.ts +28 -0
  448. package/dist/core/ingestion/scope-resolution/summary-maps.js +50 -0
  449. package/dist/core/ingestion/scope-resolution/undecided-satisfaction.d.ts +55 -0
  450. package/dist/core/ingestion/scope-resolution/undecided-satisfaction.js +37 -0
  451. package/dist/core/ingestion/scope-resolution/unresolved-receivers.d.ts +109 -0
  452. package/dist/core/ingestion/scope-resolution/unresolved-receivers.js +204 -0
  453. package/dist/core/ingestion/scope-resolution/utils/definition-id.d.ts +13 -0
  454. package/dist/core/ingestion/scope-resolution/utils/definition-id.js +19 -0
  455. package/dist/core/ingestion/scope-resolution/utils/generic-instantiation.d.ts +171 -0
  456. package/dist/core/ingestion/scope-resolution/utils/generic-instantiation.js +218 -0
  457. package/dist/core/ingestion/scope-resolution/workspace-index-types.d.ts +34 -0
  458. package/dist/core/ingestion/scope-resolution/workspace-index-types.js +15 -0
  459. package/dist/core/ingestion/scope-resolution/workspace-index.d.ts +7 -20
  460. package/dist/core/ingestion/tree-sitter-queries.d.ts +11 -11
  461. package/dist/core/ingestion/tree-sitter-queries.js +678 -4
  462. package/dist/core/ingestion/type-env.js +11 -7
  463. package/dist/core/ingestion/type-extractors/shared.d.ts +17 -0
  464. package/dist/core/ingestion/type-extractors/shared.js +16 -0
  465. package/dist/core/ingestion/type-extractors/types.d.ts +12 -0
  466. package/dist/core/ingestion/type-extractors/typescript.d.ts +20 -0
  467. package/dist/core/ingestion/type-extractors/typescript.js +26 -0
  468. package/dist/core/ingestion/utils/ast-helpers.d.ts +297 -15
  469. package/dist/core/ingestion/utils/ast-helpers.js +578 -46
  470. package/dist/core/ingestion/utils/call-analysis.d.ts +27 -22
  471. package/dist/core/ingestion/utils/call-analysis.js +202 -7
  472. package/dist/core/ingestion/utils/callable-flow-captures.d.ts +59 -0
  473. package/dist/core/ingestion/utils/callable-flow-captures.js +51 -1
  474. package/dist/core/ingestion/utils/callable-labels.d.ts +25 -0
  475. package/dist/core/ingestion/utils/callable-labels.js +31 -0
  476. package/dist/core/ingestion/utils/effective-ram.d.ts +40 -0
  477. package/dist/core/ingestion/utils/effective-ram.js +58 -0
  478. package/dist/core/ingestion/utils/line-base.d.ts +14 -0
  479. package/dist/core/ingestion/utils/line-base.js +14 -0
  480. package/dist/core/ingestion/utils/method-props.d.ts +27 -4
  481. package/dist/core/ingestion/utils/method-props.js +29 -4
  482. package/dist/core/ingestion/utils/receiver-chain-captures.d.ts +31 -0
  483. package/dist/core/ingestion/utils/receiver-chain-captures.js +57 -0
  484. package/dist/core/ingestion/utils/receiver-chain-codec.d.ts +89 -0
  485. package/dist/core/ingestion/utils/receiver-chain-codec.js +182 -0
  486. package/dist/core/ingestion/utils/scope-tree-walk.d.ts +22 -0
  487. package/dist/core/ingestion/utils/scope-tree-walk.js +33 -0
  488. package/dist/core/ingestion/utils/template-arguments.d.ts +96 -0
  489. package/dist/core/ingestion/utils/template-arguments.js +196 -0
  490. package/dist/core/ingestion/utils/type-parameters.d.ts +49 -0
  491. package/dist/core/ingestion/utils/type-parameters.js +206 -0
  492. package/dist/core/ingestion/workers/callable-id.d.ts +80 -0
  493. package/dist/core/ingestion/workers/callable-id.js +125 -0
  494. package/dist/core/ingestion/workers/parse-worker.d.ts +14 -1
  495. package/dist/core/ingestion/workers/parse-worker.js +493 -54
  496. package/dist/core/ingestion/workers/worker-pool.d.ts +20 -27
  497. package/dist/core/ingestion/workers/worker-pool.js +91 -3
  498. package/dist/core/lbug/csv-generator.d.ts +27 -0
  499. package/dist/core/lbug/csv-generator.js +72 -17
  500. package/dist/core/lbug/extension-load-error.js +13 -2
  501. package/dist/core/lbug/extension-loader.d.ts +29 -0
  502. package/dist/core/lbug/extension-loader.js +31 -6
  503. package/dist/core/lbug/graph-emit-sink.d.ts +264 -0
  504. package/dist/core/lbug/graph-emit-sink.js +581 -0
  505. package/dist/core/lbug/lbug-adapter.d.ts +290 -11
  506. package/dist/core/lbug/lbug-adapter.js +652 -69
  507. package/dist/core/lbug/native-check.d.ts +21 -0
  508. package/dist/core/lbug/native-check.js +248 -32
  509. package/dist/core/lbug/pdg-emit-sink.d.ts +13 -4
  510. package/dist/core/lbug/pdg-emit-sink.js +21 -111
  511. package/dist/core/lbug/pool-adapter.d.ts +9 -0
  512. package/dist/core/lbug/pool-adapter.js +164 -14
  513. package/dist/core/lbug/query-batch.d.ts +75 -0
  514. package/dist/core/lbug/query-batch.js +102 -0
  515. package/dist/core/lbug/rel-pair-routing.d.ts +160 -2
  516. package/dist/core/lbug/rel-pair-routing.js +228 -10
  517. package/dist/core/lbug/schema.d.ts +163 -4
  518. package/dist/core/lbug/schema.js +404 -159
  519. package/dist/core/lbug/sync-csv-writer.d.ts +47 -0
  520. package/dist/core/lbug/sync-csv-writer.js +108 -0
  521. package/dist/core/run-analyze.d.ts +147 -0
  522. package/dist/core/run-analyze.js +1215 -179
  523. package/dist/core/search/bm25-index.d.ts +11 -0
  524. package/dist/core/search/bm25-index.js +60 -26
  525. package/dist/core/search/fts-indexes.d.ts +150 -9
  526. package/dist/core/search/fts-indexes.js +241 -23
  527. package/dist/core/wiki/graph-queries.js +145 -112
  528. package/dist/core/wiki/llm-client.d.ts +29 -3
  529. package/dist/core/wiki/llm-client.js +47 -12
  530. package/dist/core/wiki/prompts.d.ts +19 -0
  531. package/dist/core/wiki/prompts.js +20 -1
  532. package/dist/lib/utils.d.ts +113 -0
  533. package/dist/lib/utils.js +185 -0
  534. package/dist/mcp/local/aop-metadata.d.ts +77 -0
  535. package/dist/mcp/local/aop-metadata.js +227 -0
  536. package/dist/mcp/local/bean-metadata.d.ts +2 -1
  537. package/dist/mcp/local/bean-metadata.js +22 -1
  538. package/dist/mcp/local/convex-metadata.d.ts +8 -0
  539. package/dist/mcp/local/convex-metadata.js +45 -0
  540. package/dist/mcp/local/local-backend.d.ts +174 -11
  541. package/dist/mcp/local/local-backend.js +1678 -331
  542. package/dist/mcp/local/path-predicate.d.ts +19 -0
  543. package/dist/mcp/local/path-predicate.js +21 -0
  544. package/dist/mcp/local/pdg-impact.d.ts +132 -10
  545. package/dist/mcp/local/pdg-impact.js +391 -98
  546. package/dist/mcp/repository-policy.d.ts +1 -0
  547. package/dist/mcp/repository-policy.js +5 -0
  548. package/dist/mcp/resources.js +26 -4
  549. package/dist/mcp/server.js +23 -13
  550. package/dist/mcp/tools.d.ts +8 -0
  551. package/dist/mcp/tools.js +76 -23
  552. package/dist/server/analyze-job.d.ts +37 -2
  553. package/dist/server/analyze-job.js +13 -2
  554. package/dist/server/analyze-launch.d.ts +1 -1
  555. package/dist/server/analyze-launch.js +79 -10
  556. package/dist/server/analyze-worker-core.d.ts +1 -1
  557. package/dist/server/analyze-worker-core.js +10 -1
  558. package/dist/server/analyze-worker-ipc.d.ts +1 -1
  559. package/dist/server/analyze-worker-ipc.js +4 -0
  560. package/dist/server/analyze-worker-protocol.d.ts +59 -0
  561. package/dist/server/analyze-worker-protocol.js +1 -0
  562. package/dist/server/analyze-worker.d.ts +1 -17
  563. package/dist/server/api.d.ts +2 -11
  564. package/dist/server/api.js +164 -163
  565. package/dist/server/embed-run-outcome.d.ts +89 -0
  566. package/dist/server/embed-run-outcome.js +88 -0
  567. package/dist/server/git-clone.js +6 -2
  568. package/dist/server/middleware.d.ts +116 -9
  569. package/dist/server/middleware.js +291 -22
  570. package/dist/server/sse-progress.d.ts +41 -0
  571. package/dist/server/sse-progress.js +125 -0
  572. package/dist/storage/branch-index.d.ts +11 -6
  573. package/dist/storage/branch-index.js +15 -7
  574. package/dist/storage/file-hash.js +2 -2
  575. package/dist/storage/fs-atomic.d.ts +25 -0
  576. package/dist/storage/fs-atomic.js +42 -0
  577. package/dist/storage/git.d.ts +131 -0
  578. package/dist/storage/git.js +236 -2
  579. package/dist/storage/index-lock.d.ts +102 -0
  580. package/dist/storage/index-lock.js +660 -0
  581. package/dist/storage/parse-cache.js +588 -6
  582. package/dist/storage/parsedfile-store.js +76 -6
  583. package/dist/storage/repo-manager.d.ts +54 -441
  584. package/dist/storage/repo-manager.js +312 -221
  585. package/dist/storage/repo-meta.d.ts +530 -0
  586. package/dist/storage/repo-meta.js +100 -0
  587. package/dist/types/pipeline.d.ts +37 -0
  588. package/hooks/antigravity/gitnexus-antigravity-hook.cjs +1 -1
  589. package/hooks/claude/gitnexus-hook.cjs +1 -1
  590. package/hooks/claude/resolve-analyze-cmd.cjs +80 -13
  591. package/package.json +11 -2
  592. package/scripts/cross-platform-shard.ts +153 -0
  593. package/scripts/cross-platform-tests.ts +122 -0
  594. package/scripts/run-cross-platform.ts +16 -5
  595. package/skills/gitnexus-cli.md +3 -3
  596. package/skills/gitnexus-debugging.md +37 -7
  597. package/skills/gitnexus-exploring.md +26 -4
  598. package/skills/gitnexus-impact-analysis.md +71 -10
  599. package/skills/gitnexus-plan/README.md +11 -6
  600. package/skills/gitnexus-plan/references/evidence-provenance.md +49 -12
  601. package/skills/gitnexus-plan/scripts/evidence-provenance.mjs +654 -372
  602. package/skills/gitnexus-refactoring.md +48 -5
  603. package/skills/gitnexus-review/SKILL.md +12 -6
  604. package/skills/gitnexus-review/ci-personas/ci-adversarial-lens.md +1 -1
  605. package/skills/gitnexus-review/ci-personas/ci-blast-radius-lens.md +1 -1
  606. package/skills/gitnexus-review/ci-personas/ci-correctness-lens.md +1 -1
  607. package/skills/gitnexus-review/ci-personas/ci-coverage-lens.md +1 -1
  608. package/skills/gitnexus-review/ci-personas/ci-critic-lens.md +1 -1
  609. package/skills/gitnexus-review/ci-personas/ci-security-lens.md +1 -1
  610. package/skills/gitnexus-taint-analysis.md +13 -7
  611. package/skills/gitnexus-work/SKILL.md +4 -1
  612. package/skills/gitnexus-work/references/evidence-provenance.md +49 -12
  613. package/skills/gitnexus-work/scripts/evidence-provenance.mjs +654 -372
  614. package/vendor/leiden/utils.cjs +28 -1
  615. package/web/assets/ProcessFlowModal-Badh2Pbg.js +24 -0
  616. package/web/assets/{__vite-browser-external-bMKyYQkO.js → __vite-browser-external-COxE8F0G.js} +1 -1
  617. package/web/assets/abnfDiagram-QNN2D4NM-Cq2djWWe.js +1 -0
  618. package/web/assets/agent-Dr4l5EOp.js +662 -0
  619. package/web/assets/architecture-TIHT7OUA-V6N4J3SY-fTePvLoe.js +1 -0
  620. package/web/assets/architectureDiagram-OT7VKSJ7-mKEXxkeF.js +36 -0
  621. package/web/assets/{blockDiagram-7IZFK4PR-DBefcjof.js → blockDiagram-54WLDVWM-Dg_hrRWE.js} +4 -4
  622. package/web/assets/{c4Diagram-Y2BXMSZH-EjWnjEJl.js → c4Diagram-X2LASM7V-CnhoT4aV.js} +2 -2
  623. package/web/assets/chunk-224SPVON-B8gxtXpy.js +1 -0
  624. package/web/assets/chunk-2AEHWXPW-CV4r6-1I.js +127 -0
  625. package/web/assets/chunk-2SREHG4O-Dip42xOq.js +1 -0
  626. package/web/assets/chunk-4RFN2BYJ-DHHWuC-n.js +1 -0
  627. package/web/assets/chunk-66DQ2XMT-CM0xjFAN.js +1 -0
  628. package/web/assets/chunk-6BELYETK-ChsYtfHW.js +1 -0
  629. package/web/assets/{chunk-LII3EMHJ-BL6lKJ_P.js → chunk-6L755F7B-CMhLBxi2.js} +1 -1
  630. package/web/assets/{chunk-QA3QBVWF-DVXPOIxe.js → chunk-7CWYLC5S-DRgGkkpF.js} +1 -1
  631. package/web/assets/{chunk-ZXARS5L4-C3v-4Fsw.js → chunk-A7VWPJGB-B4O3oQdQ.js} +1 -1
  632. package/web/assets/chunk-BI6VK774-D0oaWk8V.js +1 -0
  633. package/web/assets/chunk-D6VWDJW2-BxcBdZ9c.js +2 -0
  634. package/web/assets/chunk-DMV4VAQV-Bn6WXDSX.js +4 -0
  635. package/web/assets/chunk-E5QJAATJ-dh-5CtIV.js +2 -0
  636. package/web/assets/chunk-EQFTRU2I-1ix7TzW9.js +2 -0
  637. package/web/assets/chunk-FWYVLQTC-BgDItRzJ.js +1 -0
  638. package/web/assets/chunk-HNC4WDU7-DoU3KnA7.js +1 -0
  639. package/web/assets/chunk-L5GCOVLC-CE2w8Nm_.js +161 -0
  640. package/web/assets/chunk-LAHSG3N2-Bz4hcn0N.js +321 -0
  641. package/web/assets/chunk-LORZLZWG-B57uGw2N.js +88 -0
  642. package/web/assets/chunk-NLANEA3F-XpH_NPA5.js +62 -0
  643. package/web/assets/chunk-NV3KIAZN-5yvcpMiu.js +1 -0
  644. package/web/assets/chunk-OIYT25JQ-CQ6KOZGX.js +1 -0
  645. package/web/assets/chunk-PE7DX7ZZ-CCvRVj43.js +10 -0
  646. package/web/assets/chunk-Q67WD55A-BWCH2SVz.js +156 -0
  647. package/web/assets/chunk-RRFMTAIC-CMN0wcYA.js +1 -0
  648. package/web/assets/{chunk-RLI5ZMPA-CkXZ0y0U.js → chunk-SATU7PGQ-B1zhgOvc.js} +1 -1
  649. package/web/assets/chunk-STOV2HOB-GnExfzIX.js +1 -0
  650. package/web/assets/{chunk-INKRHTLW-Ckl3_KkO.js → chunk-SZD42YQK-ijyKKVr1.js} +21 -21
  651. package/web/assets/{chunk-LCXTWHL2-C162wE5z.js → chunk-TFPGFQPA-Dj6a-0pC.js} +3 -3
  652. package/web/assets/chunk-TGVD4F4B-BMc31Gj2.js +2 -0
  653. package/web/assets/chunk-TZUXEDM2-B7p9AcTw.js +1 -0
  654. package/web/assets/chunk-UAT7B5JY-DW-A_fpI.js +1 -0
  655. package/web/assets/{chunk-6764PJDD-C7xxk063.js → chunk-VE5CLXGZ-C1vB7wpY.js} +1 -1
  656. package/web/assets/{chunk-RG4AUYOV-ZNgyLFq6.js → chunk-VJFVEZTB-CX66F2ep.js} +3 -3
  657. package/web/assets/chunk-VY5UBI4V-yxPQAWxw.js +1 -0
  658. package/web/assets/chunk-WJBAP47W-BckNkuEN.js +1 -0
  659. package/web/assets/chunk-XNMVGMAZ-Cg_LnPtj.js +1 -0
  660. package/web/assets/classDiagram-VPOSVPXH-BjOiXA_C.js +1 -0
  661. package/web/assets/classDiagram-v2-5VFNUXQA-BjOiXA_C.js +1 -0
  662. package/web/assets/{cose-bilkent-UX7MHV2Q-BmnZ7Mvj.js → cose-bilkent-RZA4XIPR-BHpK4Crp.js} +1 -1
  663. package/web/assets/cynefin-VYW2F7L2-2VAHYKR6-DAsF6GZv.js +1 -0
  664. package/web/assets/cynefinDiagram-TR7LZUCG-C3Iar9lZ.js +62 -0
  665. package/web/assets/dagre-K64A6Z3X-CUwi79mA.js +4 -0
  666. package/web/assets/diagram-2TLGJV2N-C2F5Nfym.js +30 -0
  667. package/web/assets/diagram-JCD7PQ7C-DC5-9FRr.js +24 -0
  668. package/web/assets/{diagram-HNR7UZ2L-DVRltWbL.js → diagram-KFBZAVDW-Dfmf_4ti.js} +3 -3
  669. package/web/assets/diagram-L7DVE3PN-GIRyVUtt.js +41 -0
  670. package/web/assets/diagram-YP3FGXHI-CyNFYtkd.js +24 -0
  671. package/web/assets/ebnfDiagram-DRHRQJWO-D8_CI4ZF.js +1 -0
  672. package/web/assets/erDiagram-SZLJLQMB-CohQjznC.js +85 -0
  673. package/web/assets/error-D9MtuG9s.js +1 -0
  674. package/web/assets/eventmodeling-45OFAUF4-AOUJWSLX-BvTc6iQi.js +1 -0
  675. package/web/assets/flowDiagram-BWE6NHOH-B6RnEvD9.js +1 -0
  676. package/web/assets/ganttDiagram-2QTCJSNI-Cks_mEcF.js +292 -0
  677. package/web/assets/gitGraph-TEB2WS4Q-U5VWYIBC-Dy7CCSZ5.js +1 -0
  678. package/web/assets/gitGraphDiagram-VVZAVV5G-CG41cIVc.js +106 -0
  679. package/web/assets/{index-D7mTFcvQ.js → index-2zdvEdzg.js} +51 -51
  680. package/web/assets/index-CJDpyH-n.css +2 -0
  681. package/web/assets/info-DKCQHKI2-DX6KST54-BLJg1ikX.js +1 -0
  682. package/web/assets/infoDiagram-FY4PZKRE-BJ3vPVwW.js +2 -0
  683. package/web/assets/{ishikawaDiagram-BNXS4ZKH-XpjJRU9h.js → ishikawaDiagram-4JDSWWDM-DmqWtjkl.js} +2 -2
  684. package/web/assets/{journeyDiagram-M6C3CM3L-C6wjooas.js → journeyDiagram-QUS3FAKT-XAzVzrQW.js} +3 -3
  685. package/web/assets/{kanban-definition-75IXJCU3-5_UVY79g.js → kanban-definition-D4L7SQKK-YurRnmYn.js} +6 -6
  686. package/web/assets/katex-C5OPUE3Q-Bnbavtmu.js +257 -0
  687. package/web/assets/{mindmap-definition-2TDM6QVE-8xDLzk2e.js → mindmap-definition-66QP5TD6-ChrWWnil.js} +5 -5
  688. package/web/assets/node.browser-U-KyT5AW.js +1 -0
  689. package/web/assets/packet-7NZHBO7P-5WG45QPS-KUxcuvaA.js +1 -0
  690. package/web/assets/pegDiagram-YKIO5C6U-QGeQLEq2.js +1 -0
  691. package/web/assets/pie-RZYD4A2V-2OCZ2VTD-DPs08kJY.js +1 -0
  692. package/web/assets/pieDiagram-YPY3TKG5-BuT3MYzm.js +39 -0
  693. package/web/assets/{quadrantDiagram-VICAPDV7-DR54jOeR.js → quadrantDiagram-VO5QLCXA-B7098wSc.js} +3 -3
  694. package/web/assets/radar-I7S5WNFK-EPLSA35B-w5F0K3a7.js +1 -0
  695. package/web/assets/railroad-3IZDKUUU-PWFQV6Y6-Bu668yqY.js +1 -0
  696. package/web/assets/railroad-abnf-AHOZXSZD-JYYJX3BS-B6ghpETS.js +1 -0
  697. package/web/assets/railroad-ebnf-EBAXGLYW-RBZ4ONAP-D-XmHh3M.js +1 -0
  698. package/web/assets/railroad-peg-LSFZ7HO6-KHNPXGPG-mhkrhzEn.js +1 -0
  699. package/web/assets/railroadDiagram-M77LTMSB-AXu4vxk_.js +1 -0
  700. package/web/assets/{requirementDiagram-JXO7QTGE-PEkg7sKC.js → requirementDiagram-RASO5HTO-B-l8InpK.js} +4 -4
  701. package/web/assets/{sankeyDiagram-URQDO5SZ-DDWEtjcs.js → sankeyDiagram-F32LOJ6L-Kd7zjJgX.js} +3 -3
  702. package/web/assets/{sequenceDiagram-VS2MUI6T-Bv-uwANx.js → sequenceDiagram-URATNSBD-BlcdY9DS.js} +7 -7
  703. package/web/assets/sizeCapture-5GORAGP4-BEqQzsxs.js +1 -0
  704. package/web/assets/src-C5sx_gMp.js +1 -0
  705. package/web/assets/stateDiagram-DODFXNG5-DTdHc-fF.js +1 -0
  706. package/web/assets/stateDiagram-v2-JNMM5JRA-DioNLDDo.js +1 -0
  707. package/web/assets/swimlanes-OSWOYLSK-CA0ofdwY.js +2 -0
  708. package/web/assets/swimlanesDiagram-RHGX2RDE-PkwUdckC.js +8 -0
  709. package/web/assets/{timeline-definition-O6YCAMPW-Qmsuo7qS.js → timeline-definition-WJXWRH4I-DUfp1R3E.js} +3 -3
  710. package/web/assets/treeView-QDETBFTQ-EHYTSQNO-C5lpBgPm.js +1 -0
  711. package/web/assets/treemap-6X3UGDF4-CCWCF7EK-BB0ZyO-B.js +1 -0
  712. package/web/assets/vennDiagram-K3VCMQLI-Bj-FN-XS.js +34 -0
  713. package/web/assets/wardley-OPB4EBWU-6OWERDVT-CEA3Nq0j.js +1 -0
  714. package/web/assets/wardleyDiagram-XK6FUAWV-CVV0dHFr.js +78 -0
  715. package/web/assets/xychartDiagram-5VRUVLCW-CK_rbSWE.js +7 -0
  716. package/web/index.html +16 -15
  717. package/dist/core/ingestion/languages/python/index-stats.d.ts +0 -18
  718. package/dist/core/ingestion/languages/python/index-stats.js +0 -25
  719. package/web/assets/ProcessFlowModal-CwkpVkv-.js +0 -22
  720. package/web/assets/agent-Ds-lkZjX.js +0 -626
  721. package/web/assets/architecture-7EHR7CIX-6QZW5X65-BVWFvYz2.js +0 -1
  722. package/web/assets/architectureDiagram-UL44E2DR-CmG3uPWf.js +0 -36
  723. package/web/assets/chunk-2T2R6R2M-Bb6Sy3_j.js +0 -4
  724. package/web/assets/chunk-2UTLFMKG-CXlhF3Pt.js +0 -1
  725. package/web/assets/chunk-3SSMPTDK-rPsRM1x0.js +0 -321
  726. package/web/assets/chunk-4R4BOZG6-Be_F0JoX.js +0 -159
  727. package/web/assets/chunk-67TQ5CYL-CA7OhIEf.js +0 -124
  728. package/web/assets/chunk-7J6CGLKN-BlKwgXKs.js +0 -10
  729. package/web/assets/chunk-C62D2QBJ-3gdL8EKc.js +0 -1
  730. package/web/assets/chunk-CEXFNPSA-CjwtMDkc.js +0 -1
  731. package/web/assets/chunk-J5EP6P6S-L19oz55R.js +0 -1
  732. package/web/assets/chunk-KGFNY3KK-BZeP-55u.js +0 -62
  733. package/web/assets/chunk-KGYTTC2M-zm6n242I.js +0 -1
  734. package/web/assets/chunk-KNLZD3CH-BGlP6X9R.js +0 -1
  735. package/web/assets/chunk-LRIF4GLE-n59lhprL.js +0 -1
  736. package/web/assets/chunk-RERM46MO-B5dAdWpP.js +0 -1
  737. package/web/assets/chunk-RKZBBQEN-MyIQbGgD.js +0 -1
  738. package/web/assets/chunk-T2UQINTJ-BEyXhZWe.js +0 -1
  739. package/web/assets/chunk-UP6H54XL-BG-n7qDp.js +0 -1
  740. package/web/assets/chunk-UXSXWOXI-CW1_r5cS.js +0 -1
  741. package/web/assets/chunk-UY5QBCOK-ByqTVLvh.js +0 -1
  742. package/web/assets/chunk-VU6ZFW4Y-BLeasdkU.js +0 -2
  743. package/web/assets/classDiagram-KGZ6W3CR-olpO3fMe.js +0 -1
  744. package/web/assets/classDiagram-v2-72OJOZXJ-olpO3fMe.js +0 -1
  745. package/web/assets/dagre-ND4H6XIP-CY4iIF7v.js +0 -4
  746. package/web/assets/diagram-3NCE3AQN-CO6QpzEE.js +0 -43
  747. package/web/assets/diagram-GF46GFSD-B2atbzmU.js +0 -24
  748. package/web/assets/diagram-QXG6HAR7-DR6AHD2h.js +0 -24
  749. package/web/assets/diagram-WEQXMOUZ-DkpoMwTL.js +0 -10
  750. package/web/assets/erDiagram-L5TCEMPS-n8g_90bc.js +0 -85
  751. package/web/assets/eventmodeling-FCH6USID-MREXMVOE-CgFBM7e-.js +0 -1
  752. package/web/assets/flowDiagram-H6V6AXG4-SGMDiCkB.js +0 -162
  753. package/web/assets/ganttDiagram-JCBTUEKG-Cb3UBqRS.js +0 -292
  754. package/web/assets/gitGraph-WXDBUCRP-R675I2BI-DCJv7SII.js +0 -1
  755. package/web/assets/gitGraphDiagram-S2ZK5IYY-Bs9CR7tq.js +0 -106
  756. package/web/assets/index-CX_fADmQ.css +0 -2
  757. package/web/assets/info-J43DQDTF-KCYPFFUO-BfNy-9Nd.js +0 -1
  758. package/web/assets/infoDiagram-3YFTVSEB-T368on4D.js +0 -2
  759. package/web/assets/katex-K3KEBU37-qRQBy-EZ.js +0 -261
  760. package/web/assets/node-Ct_zna8U.js +0 -8
  761. package/web/assets/packet-YPE3B663-LP52Z2RK-D4qkeG9k.js +0 -1
  762. package/web/assets/pie-LRSECV5Y-TCRJHUBD-B_yMKyQa.js +0 -1
  763. package/web/assets/pieDiagram-CU6KROY3-Bv4LpAbr.js +0 -30
  764. package/web/assets/radar-GUYGQ44K-RDLRG3WG-DeD6yN_0.js +0 -1
  765. package/web/assets/sdk-CzHHH8tD.js +0 -37
  766. package/web/assets/src-Cv1eWg0o.js +0 -1
  767. package/web/assets/stateDiagram-7D4R322I-DVNjmkEq.js +0 -1
  768. package/web/assets/stateDiagram-v2-36443NZ5-CyN4Fh7_.js +0 -1
  769. package/web/assets/treeView-BLDUP644-QA4HXRO3-CDuSYnd4.js +0 -1
  770. package/web/assets/treemap-LRROVOQU-LLAWBHMP-imazucyJ.js +0 -1
  771. package/web/assets/vennDiagram-MWXL3ELB-BD1iK1SX.js +0 -34
  772. package/web/assets/wardley-L42UT6IY-5TKZOOLJ-DqrT9tB8.js +0 -1
  773. package/web/assets/wardleyDiagram-CUQ6CDDI-D6TzLVob.js +0 -78
  774. package/web/assets/xychartDiagram-N2JHSOCM-CoZ_Tits.js +0 -7
  775. /package/web/assets/{chunk-7W6UQGC5-pyKGssV3.js → chunk-LIEV3EAG-pyKGssV3.js} +0 -0
@@ -67,10 +67,10 @@ const fastStripNullable = (typeName) => {
67
67
  : stripNullable(typeName);
68
68
  };
69
69
  /** Implementation of the lookup logic backing TypeEnvironment.lookup. */
70
- const lookupInEnv = (env, varName, callNode, patternOverrides, enclosingFunctionFinder, extractFunctionNameHook, filePath) => {
70
+ const lookupInEnv = (env, varName, callNode, patternOverrides, enclosingFunctionFinder, extractFunctionNameHook, filePath, thisBoundaryNodeTypes) => {
71
71
  // Self/this receiver: resolve to enclosing class name via AST walk
72
72
  if (varName === 'self' || varName === 'this' || varName === '$this') {
73
- return findEnclosingClassName(callNode);
73
+ return findEnclosingClassName(callNode, thisBoundaryNodeTypes);
74
74
  }
75
75
  // Super/base/parent receiver: resolve to the parent class name via AST walk.
76
76
  // Walks up to the enclosing class, then extracts the superclass from its heritage node.
@@ -115,11 +115,15 @@ const enclosingParentClassNameCache = new Map();
115
115
  * Used to resolve `self`/`this` receivers to their containing type.
116
116
  * Memoized per-file: cache is cleared at buildTypeEnv entry.
117
117
  */
118
- const findEnclosingClassName = (node) => {
118
+ const findEnclosingClassName = (node, thisBoundaryNodeTypes) => {
119
119
  if (enclosingClassNameCache.has(node))
120
120
  return enclosingClassNameCache.get(node);
121
121
  let current = node.parent;
122
122
  while (current) {
123
+ if (thisBoundaryNodeTypes?.has(current.type) === true) {
124
+ enclosingClassNameCache.set(node, undefined);
125
+ return undefined;
126
+ }
123
127
  if (CLASS_CONTAINER_TYPES.has(current.type)) {
124
128
  const nameNode = current.childForFieldName('name') ?? findTypeIdentifierChild(current);
125
129
  if (nameNode) {
@@ -140,12 +144,12 @@ const THIS_RECEIVERS = new Set(['this', 'self', '$this', 'Me']);
140
144
  * or when the receiver is not a this-keyword. Properties are readonly in the
141
145
  * discriminated union, so a new object is returned when substitution occurs.
142
146
  */
143
- const substituteThisReceiver = (item, node) => {
147
+ const substituteThisReceiver = (item, node, thisBoundaryNodeTypes) => {
144
148
  if (item.kind !== 'fieldAccess' && item.kind !== 'methodCallResult')
145
149
  return item;
146
150
  if (!THIS_RECEIVERS.has(item.receiver))
147
151
  return item;
148
- const className = findEnclosingClassName(node);
152
+ const className = findEnclosingClassName(node, thisBoundaryNodeTypes);
149
153
  if (!className)
150
154
  return item;
151
155
  return { ...item, receiver: className };
@@ -1016,7 +1020,7 @@ export const buildTypeEnv = (tree, language, options) => {
1016
1020
  const items = Array.isArray(pending) ? pending : [pending];
1017
1021
  for (const item of items) {
1018
1022
  // Substitute this/self/$this/Me receivers with enclosing class name
1019
- const resolved = substituteThisReceiver(item, node);
1023
+ const resolved = substituteThisReceiver(item, node, config.thisBoundaryNodeTypes);
1020
1024
  pendingItems.push({ scope, ...resolved });
1021
1025
  }
1022
1026
  }
@@ -1082,7 +1086,7 @@ export const buildTypeEnv = (tree, language, options) => {
1082
1086
  }
1083
1087
  }
1084
1088
  return {
1085
- lookup: (varName, callNode) => lookupInEnv(env, varName, callNode, patternOverrides, options?.enclosingFunctionFinder, extractFuncNameHook, options?.filePath),
1089
+ lookup: (varName, callNode) => lookupInEnv(env, varName, callNode, patternOverrides, options?.enclosingFunctionFinder, extractFuncNameHook, options?.filePath, config.thisBoundaryNodeTypes),
1086
1090
  constructorBindings: bindings,
1087
1091
  fileScope: () => env.get(FILE_SCOPE) ?? emptyFileScope(),
1088
1092
  allScopes: () => env,
@@ -1,3 +1,4 @@
1
+ import type { ElementAccessRoute } from '../scope-resolution/contract/scope-resolver.js';
1
2
  import type { SyntaxNode } from '../utils/ast-helpers.js';
2
3
  /** Which type argument to extract from a multi-arg generic container.
3
4
  * - 'first': key type (e.g., K from Map<K,V>) — used for .keys(), .keySet()
@@ -127,5 +128,21 @@ export declare const extractCalleeName: (callNode: SyntaxNode) => string | undef
127
128
  * Returns undefined when the extracted type is not a simple word.
128
129
  */
129
130
  export declare function extractElementTypeFromString(typeStr: string, pos?: TypeArgPosition): string | undefined;
131
+ /**
132
+ * `elementTypeOf` for a language with no property-style collection view:
133
+ * answer the subscript route from the written spelling, decline the accessor
134
+ * route.
135
+ *
136
+ * Languages whose collection views are spelled as method calls (`.values()`,
137
+ * `.iter()`) never reach the accessor route — the compound resolver's
138
+ * call-expression branch handles those — so the whole hook is this one
139
+ * decision. Declining (returning `undefined`) is the answer "this spelling is
140
+ * not a container", which is what stops an index-overloading class from
141
+ * folding `x[k].m()` onto its own members.
142
+ *
143
+ * Languages that DO expose a collection view as a property (C#'s `.Values`)
144
+ * need a bespoke body instead.
145
+ */
146
+ export declare const indexOnlyElementType: (containerType: string, via: ElementAccessRoute) => string | undefined;
130
147
  export declare const extractReturnTypeName: (raw: string, depth?: number) => string | undefined;
131
148
  export {};
@@ -631,6 +631,22 @@ export function extractElementTypeFromString(typeStr, pos = 'last') {
631
631
  }
632
632
  return undefined;
633
633
  }
634
+ /**
635
+ * `elementTypeOf` for a language with no property-style collection view:
636
+ * answer the subscript route from the written spelling, decline the accessor
637
+ * route.
638
+ *
639
+ * Languages whose collection views are spelled as method calls (`.values()`,
640
+ * `.iter()`) never reach the accessor route — the compound resolver's
641
+ * call-expression branch handles those — so the whole hook is this one
642
+ * decision. Declining (returning `undefined`) is the answer "this spelling is
643
+ * not a container", which is what stops an index-overloading class from
644
+ * folding `x[k].m()` onto its own members.
645
+ *
646
+ * Languages that DO expose a collection view as a property (C#'s `.Values`)
647
+ * need a bespoke body instead.
648
+ */
649
+ export const indexOnlyElementType = (containerType, via) => via.kind === 'index' ? extractElementTypeFromString(containerType) : undefined;
634
650
  // ── Return type text helpers ─────────────────────────────────────────────
635
651
  // extractReturnTypeName works on raw return-type text already stored in
636
652
  // SymbolDefinition (e.g. "User", "Promise<User>", "User | null", "*User").
@@ -130,6 +130,18 @@ export interface LanguageTypeConfig {
130
130
  readonly allowPatternBindingOverwrite?: boolean;
131
131
  /** Node types that represent typed declarations for this language */
132
132
  declarationNodeTypes: ReadonlySet<string>;
133
+ /** Function node types that OWN their `this` receiver, terminating the
134
+ * upward AST walk that resolves `this`/`self`/`$this` to an enclosing
135
+ * class. The type-env twin of `Scope.ownsReceivers` (#2701): the scope
136
+ * layer gates receiver-type LOOKUP, this gates receiver-type INFERENCE
137
+ * during capture, and a call is only suppressed when both agree.
138
+ *
139
+ * Most languages leave it unset — their closures capture the enclosing
140
+ * `this` lexically (Kotlin lambdas, Go func literals, C# lambdas, Dart
141
+ * function expressions, PHP closures auto-bound since 5.4, Python's
142
+ * `self` closed over by a nested `def`) — so the walk is unchanged
143
+ * there. JavaScript/TypeScript are the exception. */
144
+ thisBoundaryNodeTypes?: ReadonlySet<string>;
133
145
  /** Optional: language-specific way to find a declaration's type-annotation node.
134
146
  * Prefer providing this for grammars where the type is wrapped (e.g., C#, Kotlin, Swift). */
135
147
  getDeclarationTypeNode?: DeclarationTypeNodeLocator;
@@ -1,2 +1,22 @@
1
1
  import type { LanguageTypeConfig } from './types.js';
2
+ /**
3
+ * Ordinary functions own their `this`; arrows do not (#2701).
4
+ *
5
+ * ECMA-262 gives an arrow `[[ThisMode]] = lexical` — it has no `this` binding
6
+ * in its environment record, so the lookup passes through to the enclosing
7
+ * environment. Every other function form binds `this` at call time, so
8
+ * `this.m()` inside one does NOT reach the enclosing class. That is exactly
9
+ * the distinction `tsc` draws by resolving `this` through `getThisContainer`
10
+ * with `includeArrowFunctions = false`.
11
+ *
12
+ * `method_definition` is deliberately absent: it is the construct that binds
13
+ * `this` TO the enclosing class, so the walk must pass through it and stop at
14
+ * the class. (Unlike the scope-layer marker in `typescript/query.ts`, which
15
+ * can list it because a method's own `this` typeBinding is consulted first.)
16
+ *
17
+ * Kept in sync with `@receiver-owner.this` in `languages/typescript/query.ts`
18
+ * and `languages/javascript/query.ts` — the two layers must agree or a call
19
+ * suppressed by one is re-introduced by the other.
20
+ */
21
+ export declare const THIS_BOUNDARY_NODE_TYPES: ReadonlySet<string>;
2
22
  export declare const typeConfig: LanguageTypeConfig;
@@ -646,9 +646,35 @@ const inferTsLiteralType = (node) => {
646
646
  return undefined;
647
647
  }
648
648
  };
649
+ /**
650
+ * Ordinary functions own their `this`; arrows do not (#2701).
651
+ *
652
+ * ECMA-262 gives an arrow `[[ThisMode]] = lexical` — it has no `this` binding
653
+ * in its environment record, so the lookup passes through to the enclosing
654
+ * environment. Every other function form binds `this` at call time, so
655
+ * `this.m()` inside one does NOT reach the enclosing class. That is exactly
656
+ * the distinction `tsc` draws by resolving `this` through `getThisContainer`
657
+ * with `includeArrowFunctions = false`.
658
+ *
659
+ * `method_definition` is deliberately absent: it is the construct that binds
660
+ * `this` TO the enclosing class, so the walk must pass through it and stop at
661
+ * the class. (Unlike the scope-layer marker in `typescript/query.ts`, which
662
+ * can list it because a method's own `this` typeBinding is consulted first.)
663
+ *
664
+ * Kept in sync with `@receiver-owner.this` in `languages/typescript/query.ts`
665
+ * and `languages/javascript/query.ts` — the two layers must agree or a call
666
+ * suppressed by one is re-introduced by the other.
667
+ */
668
+ export const THIS_BOUNDARY_NODE_TYPES = new Set([
669
+ 'function_declaration',
670
+ 'function_expression',
671
+ 'generator_function',
672
+ 'generator_function_declaration',
673
+ ]);
649
674
  export const typeConfig = {
650
675
  declarationNodeTypes: DECLARATION_NODE_TYPES,
651
676
  forLoopNodeTypes: FOR_LOOP_NODE_TYPES,
677
+ thisBoundaryNodeTypes: THIS_BOUNDARY_NODE_TYPES,
652
678
  patternBindingNodeTypes: new Set(['binary_expression']),
653
679
  extractDeclaration,
654
680
  extractParameter,
@@ -4,19 +4,39 @@ import type { LanguageProvider } from '../language-provider.js';
4
4
  /** Tree-sitter AST node. Re-exported for use across ingestion modules. */
5
5
  export type SyntaxNode = Parser.SyntaxNode;
6
6
  /**
7
- * Qualify a Rust inherent-impl target (`impl Inner { ... }`) by its enclosing
8
- * `mod_item` scope, so a bare same-tail target nested under different modules
9
- * resolves to a DISTINCT path (`outer.Inner` vs `other.Inner`) — the #1982
10
- * follow-up to #1975. Walks `mod_item` ancestors (outermost → innermost) and
11
- * joins them with the normalized raw target via the shared `splitQualifiedName`.
12
- * A top-level `impl Inner` (no enclosing mod) returns the bare target unchanged.
13
- * Keyed purely on tree-sitter node types (no language name), matching the
14
- * inherent-impl branch in `findEnclosingClassInfo`; the caller restricts this to
15
- * UNSCOPED targets (`type_identifier`) so a SCOPED `impl a::Inner` keeps its full
16
- * raw text (#1975). The Impl-node materialization in parsing-processor /
17
- * parse-worker mirrors this so the owner edge and node id agree byte-for-byte.
18
- */
19
- export declare const qualifyRustImplTargetByModScope: (implNode: SyntaxNode, rawTargetText: string) => string;
7
+ * Qualify a name by its enclosing `mod_item` scope, so two same-tail items nested
8
+ * under different modules get DISTINCT paths (`outer.Inner` vs `other.Inner`).
9
+ * Walks `mod_item` ancestors (outermost → innermost) and joins them with the
10
+ * normalized raw text via the shared `splitQualifiedName`. Keyed purely on
11
+ * tree-sitter node types (no language name), so it is a no-op for every grammar
12
+ * without such a node.
13
+ *
14
+ * TWO callers, with different contracts — read both before widening either:
15
+ *
16
+ * 1. The inherent-impl target (`impl Inner { … }`) — the #1982 follow-up to
17
+ * #1975, reachable through the {@link qualifyRustImplTargetByModScope} alias
18
+ * and mirrored by the inherent-impl branch in `findEnclosingClassInfo` so the
19
+ * owner edge and the node id agree byte-for-byte. That caller gates on an
20
+ * UNSCOPED `type_identifier`, which is what keeps a SCOPED `impl a::Inner` on
21
+ * its full raw text.
22
+ *
23
+ * 2. Free items, for module node identity (#2742). That caller gates on the node
24
+ * being on neither side of an owner edge (`MEMBER_OWNER_NODE_TYPES`,
25
+ * `enclosingClassInfo`) and not inside a callable, because only the id moves
26
+ * here — every owner-edge anchor is minted separately and does not follow.
27
+ *
28
+ * A name with NO enclosing `mod` is returned verbatim, never normalized: rewriting
29
+ * a scoped target's separator (`a::Inner` → `a.Inner`) would move its node id away
30
+ * from the id its owner edge emits, which is how caller 2 first broke caller 1's
31
+ * #1975 contract. Splitting an unscoped name has always been the identity, so
32
+ * caller 1 is unaffected either way.
33
+ */
34
+ export declare const qualifyByEnclosingModScope: (node: SyntaxNode, rawText: string) => string;
35
+ /**
36
+ * Impl-target alias of {@link qualifyByEnclosingModScope}, kept as its own name
37
+ * because the caller gates it on UNSCOPED targets (see the contract above).
38
+ */
39
+ export declare const qualifyRustImplTargetByModScope: (node: SyntaxNode, rawText: string) => string;
20
40
  /**
21
41
  * #1991: scope-label predicate that single-sources the `nodeLabel === 'Trait'`
22
42
  * checks in parsing-processor.ts / parse-worker.ts. A Ruby `module` maps to the
@@ -41,8 +61,72 @@ type QueryMatchLike = {
41
61
  node: SyntaxNode;
42
62
  }>;
43
63
  };
44
- export declare const buildConcreteTypedefDefinitionRanges: (matches: readonly QueryMatchLike[]) => Set<string>;
45
64
  export declare const isSuppressedConcreteTypedefDuplicate: (captureMap: Record<string, SyntaxNode>, concreteTypedefRanges: ReadonlySet<string>) => boolean;
65
+ /** True when `label` is the kind of node a value capture emits. */
66
+ export declare const isValueDefinitionLabel: (label: NodeLabel) => boolean;
67
+ /**
68
+ * One pass over a file's matches: definition-name claims by rank, plus the
69
+ * concrete-typedef ranges the loop's separate typedef guard consumes.
70
+ */
71
+ export interface DefinitionPreScan {
72
+ /**
73
+ * Keys claimed by any non-value capture — consulted by `Const`/`Static`/
74
+ * `Variable`. Includes `Property`, so an annotated Python attribute still
75
+ * beats the bare-assignment `Variable` capture on the same statement.
76
+ */
77
+ readonly nonValue: ReadonlySet<string>;
78
+ /**
79
+ * Keys claimed by a *callable* capture (`Function`/`Method`/`Constructor`) —
80
+ * consulted by `Property`. Narrower than `nonValue` on purpose: a `Property`
81
+ * must be collapsible by a callable (Kotlin `val f = { … }`, Swift
82
+ * `let f = { … }`) without being collapsible by its own claim.
83
+ */
84
+ readonly callable: ReadonlySet<string>;
85
+ /** Ranges of `type_definition` nodes that already emit a concrete struct/enum. */
86
+ readonly concreteTypedefRanges: ReadonlySet<string>;
87
+ }
88
+ /**
89
+ * Pre-scan `matches` for the `${definitionNode.startIndex}:${name}` keys already
90
+ * claimed by a higher-ranked definition capture, so the parse-worker's duplicate
91
+ * suppression is order-independent.
92
+ *
93
+ * Rank, highest first: callable (`Function`/`Method`/`Constructor`) → `Property`
94
+ * → value (`Const`/`Static`/`Variable`). A capture is dropped only when a
95
+ * STRICTLY higher rank claimed the same declaration node and name, so no capture
96
+ * can suppress itself and no rank can suppress a peer.
97
+ *
98
+ * ## Why this exists (#2687)
99
+ *
100
+ * `const X = () => {}` matches BOTH `@definition.function` and
101
+ * `@definition.const` on the same `lexical_declaration`. Only one graph node
102
+ * should survive — the `Function`, because that is what `CALLS` edges target.
103
+ * The parse-worker's in-loop dedup intends exactly that, but only the value
104
+ * branch consults its `processedDefinitionNodes` set, so suppression worked only
105
+ * if the function match happened to be processed first. It is not: tree-sitter
106
+ * completes the const pattern at `@name`, while the function pattern must also
107
+ * match the trailing `(arrow_function)` / `(function_expression)` value, so the
108
+ * const match is yielded FIRST and the edgeless `Const:` twin escaped.
109
+ *
110
+ * Consulting this set makes the outcome independent of match order.
111
+ *
112
+ * ## Keying
113
+ *
114
+ * Keys are `startIndex:name`, never `startIndex` alone — a multi-name
115
+ * declaration (`const a = 1, b = () => {}`) shares ONE definition node, and a
116
+ * bare-index key would wrongly suppress `a`'s legitimate `Const` node.
117
+ *
118
+ * Labels come from {@link getLabelFromCaptures}, the same function the main loop
119
+ * uses, so the pre-scan and the loop can never disagree about what counts as a
120
+ * value capture — including when a provider's `labelOverride` reclassifies one.
121
+ * A match that resolves to a value label registers nothing, so a match can never
122
+ * suppress itself.
123
+ *
124
+ * Language-agnostic: keyed off capture names and labels only.
125
+ *
126
+ * Also collects the concrete-typedef ranges that suppress the analogous
127
+ * typedef/struct duplicate, so both suppression sets come from one traversal.
128
+ */
129
+ export declare const buildDefinitionPreScan: (matches: readonly QueryMatchLike[], provider: LanguageProvider) => DefinitionPreScan;
46
130
  /**
47
131
  * Node types that represent function/method definitions across languages.
48
132
  * Used by parent-walk in call-processor, parse-worker, and type-env to detect
@@ -63,6 +147,26 @@ export declare const FUNCTION_NODE_TYPES: Set<string>;
63
147
  * orphaned HAS_METHOD edges or incorrect labels.
64
148
  */
65
149
  export declare const CLASS_CONTAINER_TYPES: Set<string>;
150
+ /**
151
+ * Node types whose OWN node id must not be re-keyed by an enclosing-scope
152
+ * qualifier (see {@link qualifyByEnclosingModScope}) unless the owner-edge
153
+ * anchor moves in the same change.
154
+ *
155
+ * These are the containers a member can be declared inside. Their members'
156
+ * `HAS_METHOD` / `HAS_PROPERTY` edges anchor on `findEnclosingClassInfo().classId`,
157
+ * which is minted from the container's bare `nameNode.text` further down this
158
+ * file and only follows a qualified shape when the provider opts in via
159
+ * `classExtractor.qualifiedNodeId`. So qualifying a container's id alone points
160
+ * every one of its member edges at a node that does not exist — the edges are
161
+ * dropped at COPY time and the container silently loses all its members.
162
+ *
163
+ * Derived from `CLASS_CONTAINER_TYPES` on purpose: that set is already the
164
+ * single source of "this node type owns member edges", carries the INVARIANT
165
+ * note above binding it to `CONTAINER_TYPE_TO_LABEL`, and so a language adding
166
+ * a container cannot gain a mismatched id shape here without also failing that
167
+ * invariant. Keyed purely on tree-sitter node types — no language names.
168
+ */
169
+ export declare const MEMBER_OWNER_NODE_TYPES: ReadonlySet<string>;
66
170
  export declare const CONTAINER_TYPE_TO_LABEL: Record<string, string>;
67
171
  /**
68
172
  * Pre-order walk over a node and all its named descendants, invoking `cb` on
@@ -81,6 +185,38 @@ export declare const CONTAINER_TYPE_TO_LABEL: Record<string, string>;
81
185
  export declare function walkNamedTree(node: SyntaxNode, cb: (node: SyntaxNode) => void): void;
82
186
  /** Return the first matching ancestor unless a boundary ancestor is reached first. */
83
187
  export declare function findAncestorBeforeBoundary(node: SyntaxNode, targetTypes: ReadonlySet<string>, boundaryTypes: ReadonlySet<string>): SyntaxNode | null;
188
+ /**
189
+ * Enclosing callable for grammars that split a callable into a SIGNATURE node
190
+ * and a SIBLING body, where the callable is therefore never an ancestor of the
191
+ * code inside it.
192
+ *
193
+ * Dart is the case that forced this: `int outer() { … }` parses as
194
+ * `function_signature` followed by `function_body` as SIBLINGS, so an ancestor
195
+ * walk from a closure inside the body can never reach `outer`. No membership
196
+ * set fixes that — the walk is looking in the wrong direction (#2699).
197
+ *
198
+ * Deliberately a FALLBACK, used only when the ancestor walk found nothing.
199
+ *
200
+ * The sibling must be a BARE SIGNATURE, and that restriction is load-bearing —
201
+ * "any preceding callable sibling" is WRONG and was caught regressing PHP. In
202
+ * `<?php function target($x) {…} $handler = function ($x) {…};` the closure is
203
+ * at FILE level, so the primary ancestor walk correctly finds nothing and this
204
+ * fallback runs; an unrestricted version then grabs the preceding
205
+ * `function_definition` and mis-qualifies the file-level `$handler` as
206
+ * `target.$handler`. A preceding sibling is only an ENCLOSING callable when it
207
+ * cannot hold its own body — i.e. when the grammar split the body off.
208
+ *
209
+ * `SPLIT_SIGNATURE_NODE_TYPES` is exactly that set, and it is derived rather
210
+ * than listed: `LOCAL_SCOPE_BODY_NODE_TYPES` already filters the bare-signature
211
+ * types out of `FUNCTION_NODE_TYPES`, so the difference between them IS the
212
+ * split-signature set. PHP's `function_definition` carries a body and is in
213
+ * both, so it is excluded; Dart's `function_signature` is in only the former,
214
+ * so it qualifies.
215
+ *
216
+ * Language-neutral by construction — it names no grammar, and any future
217
+ * signature/body-split language is covered for free.
218
+ */
219
+ export declare function findSplitBodyCallableAncestor(node: SyntaxNode, signatureOnlyTypes: ReadonlySet<string>, boundaryTypes: ReadonlySet<string>): SyntaxNode | null;
84
220
  /**
85
221
  * Determine the graph node label from a tree-sitter capture map.
86
222
  * Handles language-specific reclassification via the provider's labelOverride hook
@@ -141,7 +277,33 @@ getQualifiedOwnerName?: (node: SyntaxNode, simpleName: string) => string | null)
141
277
  /** Object literal binding info for TS/JS shorthand methods. */
142
278
  export interface ObjectLiteralBindingInfo {
143
279
  ownerId: string;
280
+ /**
281
+ * Owner name, when the owner is also the member's qualifier.
282
+ *
283
+ * Set by {@link findMemberAssignmentOwnerInfo} so a prototype method keys as
284
+ * `Foo.bar` — without it two constructors in one file that each define
285
+ * `bar` collapse onto a single `Method:<file>:bar` id.
286
+ *
287
+ * {@link findObjectLiteralBindingInfo} sets it ONLY when the caller opts in
288
+ * via `includeOwnerName`. Its `Method` ids must stay exactly as they were —
289
+ * qualifying them would rewrite every object-literal method id in every
290
+ * indexed repo — but object-literal KEYS (indexed since A1/A5) genuinely
291
+ * need it: two config objects in one file sharing a key name otherwise
292
+ * collapse onto a single `Property:<file>:<key>` id, merging two distinct
293
+ * settings into one symbol.
294
+ */
295
+ ownerName?: string;
144
296
  }
297
+ /**
298
+ * True when an object-literal member is contained by an array before reaching
299
+ * another callable or class boundary.
300
+ *
301
+ * An array does not provide a stable named owner for its elements, so members
302
+ * below one cannot use `<binding>.<member>` identity or ownership. They still
303
+ * need distinct graph identities, however; callers use this predicate to opt
304
+ * into source-position qualification while keeping ownership suppressed.
305
+ */
306
+ export declare const isArrayContainedObjectLiteralMember: (node: SyntaxNode) => boolean;
145
307
  /**
146
308
  * Find the file-scope variable that owns an object literal method definition.
147
309
  *
@@ -167,7 +329,109 @@ export interface ObjectLiteralBindingInfo {
167
329
  * ancestor also returns null (catches block-scoped declarations inside
168
330
  * top-level `if`/`for`/`try`/etc., which cannot be imported).
169
331
  */
170
- export declare const findObjectLiteralBindingInfo: (node: SyntaxNode, filePath: string) => ObjectLiteralBindingInfo | null;
332
+ /**
333
+ * Owner for the keys of an ANONYMOUS object literal in return position (R3-4).
334
+ *
335
+ * `return { symbol, score, wickRatio, … }` binds to nothing, so its keys had no
336
+ * anchor and could not be qualified — which on the reporting repo left the
337
+ * central payload of the signal pipeline, ~25 fields, entirely unqueryable.
338
+ * There are 437 such sites in one backend directory, so this is the dominant
339
+ * shape, not an edge case.
340
+ *
341
+ * The enclosing FUNCTION is the honest owner: the literal is that function's
342
+ * return shape, which is a contract its callers consume. Qualifying by it keeps
343
+ * two functions returning the same key name as two distinct nodes, exactly as
344
+ * `ownerName` does for variable-bound literals.
345
+ *
346
+ * Returns null when the literal is not DIRECTLY returned (a nested literal, or
347
+ * one inside a callback several frames down), because then the enclosing
348
+ * function is not what the object describes.
349
+ */
350
+ /**
351
+ * True when this definition node is a key of a literal in RETURN position.
352
+ *
353
+ * Deliberately independent of whether an OWNER NAME could be derived. The two
354
+ * are different questions, and conflating them mislabels the anonymous case:
355
+ * `[function (row) { return { k: row.x }; }]` yields no name to qualify by, so
356
+ * the owner lookup returns null — but the key is still a return shape, and
357
+ * flagging it by owner-presence would leave it looking like a DECLARED anchor
358
+ * and let it outrank a real declaration during narrowing.
359
+ */
360
+ export declare const isReturnShapeProperty: (node: SyntaxNode) => boolean;
361
+ export declare const findReturnShapeOwnerInfo: (node: SyntaxNode, filePath: string) => {
362
+ readonly ownerId?: string;
363
+ readonly ownerName: string;
364
+ } | null;
365
+ export declare const findObjectLiteralBindingInfo: (node: SyntaxNode, filePath: string, options?: {
366
+ /**
367
+ * Also return `ownerName` so the member qualifies as `<owner>.<member>`.
368
+ * Opt-in because turning it on for `Method` would rewrite existing ids.
369
+ */
370
+ readonly includeOwnerName?: boolean;
371
+ }) => ObjectLiteralBindingInfo | null;
372
+ /**
373
+ * Find the owner of a member assigned by `<Owner>.prototype.<member> = fn`
374
+ * (#2723 follow-up).
375
+ *
376
+ * Sibling of {@link findObjectLiteralBindingInfo}: same seam, same return
377
+ * shape, different syntax. There the owner is the variable the literal is
378
+ * bound to; here it is the identifier to the left of `.prototype`.
379
+ *
380
+ * The owner label is read from the file's own module-scope declaration, so the
381
+ * edge points at the node that actually exists — `function Foo() {}` is a
382
+ * `Function` node, `class Foo {}` is a `Class` node. When the file declares no
383
+ * such name (the constructor lives in another module) no owner is claimed:
384
+ * a HAS_METHOD edge to a fabricated node is worse than a top-level Method.
385
+ */
386
+ export declare const findMemberAssignmentOwnerInfo: (node: SyntaxNode, filePath: string) => ObjectLiteralBindingInfo | null;
387
+ /**
388
+ * The receiver name of a `<Owner>.prototype.<member> = <function>` assignment,
389
+ * or null when `assignment` is not that shape.
390
+ *
391
+ * Only a bare identifier owner is accepted. `a.b.prototype.c = …` and
392
+ * `getClass().prototype.c = …` name an owner this layer cannot resolve to a
393
+ * definition, so they are left alone rather than attributed to a guess.
394
+ */
395
+ export declare const prototypeAssignmentOwnerName: (assignment: SyntaxNode) => string | null;
396
+ /**
397
+ * The constructor function that owns a `this.member = <function>` assignment,
398
+ * or null when there is none (module top level, or an owner this layer cannot
399
+ * name).
400
+ *
401
+ * Only a `function_declaration` counts. An `arrow_function` does NOT bind its
402
+ * own `this` (ECMA-262 gives it `[[ThisMode]] = lexical`), so the walk passes
403
+ * through arrows to the function that actually binds the receiver — the same
404
+ * rule `@receiver-owner.this` encodes in the scope queries (#2701). A class
405
+ * method never reaches here: parse-worker resolves its owner from the
406
+ * enclosing class container first.
407
+ */
408
+ export declare const thisAssignmentOwnerName: (assignment: SyntaxNode) => string | null;
409
+ /**
410
+ * True when `node` is a `X.prototype.Y = <function>` or `this.Y = <function>`
411
+ * assignment — i.e. a callable MEMBER rather than a free function.
412
+ *
413
+ * Takes the ASSIGNMENT node, because that is what the `@definition.function`
414
+ * capture is anchored on and therefore what `provider.labelOverride` receives.
415
+ */
416
+ export declare const isPrototypeMemberAssignmentNode: (node: SyntaxNode) => boolean;
417
+ /**
418
+ * True when `node` is `module.exports = <anonymous function>` (#2723).
419
+ *
420
+ * The whole module IS the callable, so there is no property to take a name
421
+ * from and the caller supplies a file-derived one. A NAMED function expression
422
+ * is excluded — its own name is captured directly and is more informative.
423
+ */
424
+ /**
425
+ * True when `node` is `module.exports = <function>`, named or anonymous — the
426
+ * CommonJS default export, where the whole module IS the callable.
427
+ *
428
+ * `exports = fn` is deliberately NOT this shape: reassigning the `exports`
429
+ * binding does not export anything in CommonJS, it only breaks the alias to
430
+ * `module.exports`.
431
+ */
432
+ export declare const isCjsDefaultExportAssignment: (node: SyntaxNode) => boolean;
433
+ /** True when `node` is a `this.Y = <function>` assignment, at any nesting. */
434
+ export declare const isThisMemberAssignmentNode: (node: SyntaxNode) => boolean;
171
435
  /** Convenience wrapper: returns just the class ID string (backward compat). */
172
436
  export declare const findEnclosingClassId: (node: SyntaxNode, filePath: string) => string | null;
173
437
  /**
@@ -234,12 +498,30 @@ export declare const PARAMETER_LIST_NODE_TYPES: Set<string>;
234
498
  * and accessor bodies must not.
235
499
  */
236
500
  export declare const LOCAL_SCOPE_BODY_NODE_TYPES: ReadonlySet<string>;
501
+ /**
502
+ * Callable node types whose grammar splits the body off into a SIBLING node, so
503
+ * the callable is never an ancestor of the code inside it (Dart
504
+ * `function_signature` / `method_signature`).
505
+ *
506
+ * Derived, not listed, so it cannot drift from the two sets that define it:
507
+ * `LOCAL_SCOPE_BODY_NODE_TYPES` is `FUNCTION_NODE_TYPES` minus exactly the bare
508
+ * signature types, so the difference IS the split-signature set.
509
+ *
510
+ * Must stay BELOW `LOCAL_SCOPE_BODY_NODE_TYPES` — reading it earlier hits the
511
+ * temporal dead zone and throws at module load.
512
+ */
513
+ export declare const SPLIT_SIGNATURE_NODE_TYPES: ReadonlySet<string>;
237
514
  /** Walk an AST node depth-first, returning the first descendant with the given type. */
238
515
  export declare function findDescendant(root: SyntaxNode, type: string): SyntaxNode | null;
239
516
  /** Extract the text content from a string or encapsed_string AST node. */
240
517
  export declare function extractStringContent(node: SyntaxNode | null | undefined): string | null;
241
518
  /** Find the first direct named child of a tree-sitter node matching the given type. */
242
519
  export declare function findChild(node: SyntaxNode, type: string): SyntaxNode | null;
520
+ /** Remove bidi-override and zero-width control characters from attacker-
521
+ * influenced repository text before it is exposed through graph descriptions
522
+ * or MCP output (#2286). Global `sanitizeUTF8` intentionally remains focused
523
+ * on encoding/control-character validity. */
524
+ export declare const stripBidiAndZeroWidth: (text: string) => string;
243
525
  /**
244
526
  * Extract the normalized text of a leading doc comment immediately preceding a
245
527
  * definition node — covering both block doc comments (Javadoc / KDoc / JSDoc /