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
@@ -0,0 +1,124 @@
1
+ /**
2
+ * "Which files live DIRECTLY inside a directory whose path ends with
3
+ * `<pkgPath>`?" — the query Go's package resolution and C#'s namespace-directory
4
+ * fallback both answered with a full `allFilePaths` scan per import.
5
+ *
6
+ * Both scans ran the same predicate: normalize to forward slashes, apply the
7
+ * language's extension filter, find the FIRST `'/' + pkgPath + '/'` occurrence,
8
+ * and keep the file only if nothing after that occurrence contains a slash.
9
+ *
10
+ * That predicate depends only on the file's DIRECTORY, so it can be answered
11
+ * from an index built once per file set:
12
+ *
13
+ * let D = '/' + <normalized dir of the file> + '/'
14
+ * let P = '/' + pkgPath + '/'
15
+ * match ⟺ D.endsWith(P)
16
+ *
17
+ * It used to say one more thing, and #2881 removed it:
18
+ *
19
+ * match ⟺ D.length >= P.length && D.indexOf(P) === D.length - P.length
20
+ *
21
+ * — i.e. `D` ends with `P` AND that trailing occurrence is the FIRST one, so
22
+ * `a/pkg/b/pkg/x.go` did NOT answer `pkg`. The second half was never a rule
23
+ * anyone chose. It is what the pre-index per-import scan happened to compute
24
+ * (it called `indexOf`, then checked that nothing after the match contained a
25
+ * slash), and the index was built to reproduce that scan byte for byte. It
26
+ * dropped exactly the repositories that nest a directory name inside itself:
27
+ * `internal/…/internal`, `Models/…/Models`, and the reported shape
28
+ * `data/src/main/kotlin/com/example/data/Repo.kt`, where `import data.helper`
29
+ * resolved to null. Kotlin was fixed first, in its own `dirChildren`
30
+ * (`languages/kotlin/import-target.ts`); this index, the C# csproj index and
31
+ * the legacy `go.ts` scan followed.
32
+ *
33
+ * The strongest evidence that the rule was accidental is that a sixth
34
+ * implementation of the same question never had it. `import-resolvers/jvm.ts`
35
+ * answers "files directly inside a directory ending with <packagePath>" for
36
+ * Java and Kotlin wildcard imports, and has used `lastIndexOf` since #488.
37
+ *
38
+ * That is evidence about how the predicate was WRITTEN, not about live
39
+ * behaviour, and the distinction matters enough to spell out. `jvm.ts` is
40
+ * reached only through `provider.importResolver`, which `languages/java.ts` and
41
+ * `languages/kotlin.ts` do wire — but that field currently has no production
42
+ * READER. Its only reader anywhere is `import-target-adapter.ts`, whose own
43
+ * docblock says it is "threaded through `finalizeScopeModel`"; nothing threads
44
+ * it, and neither that module nor its two exports
45
+ * (`buildImportTargetWorkspace`, `resolveImportTargetAcrossLanguages`) is
46
+ * referenced outside its own unit test. So `jvm.ts`'s `resolveJvmWildcard` and
47
+ * `import-resolvers/go.ts`'s `resolveGoPackage` are dormant, while THIS index,
48
+ * `csharp.ts`'s `resolveCSharpImportInternal` and Kotlin's `dirChildren` are
49
+ * the ones that run. Whether those two dormant resolvers should be deleted or
50
+ * actually wired up is an open question and wants its own issue; it is not
51
+ * settled here.
52
+ *
53
+ * The argument survives that correction intact, because it never needed the
54
+ * resolvers to be live: an independent implementation of the same question,
55
+ * written without reference to the pre-index scan, reached for `lastIndexOf`.
56
+ * The extra clause was never a rule anyone chose. All six spellings now agree.
57
+ *
58
+ * The length guard the `indexOf` form needed is gone with it: `endsWith` is
59
+ * false for a shorter `D` instead of comparing -1 to -1.
60
+ *
61
+ * Candidates are narrowed by the directory's LAST segment rather than by
62
+ * indexing every directory suffix: a suffix map costs O(files × depth) entries,
63
+ * which is exactly the memory this codebase runs out of at kernel scale
64
+ * (#2649), while the last-segment bucket is O(directories) and is a superset of
65
+ * the matches (`D` ends with `P` ⟹ the dir's last segment is `pkgPath`'s last
66
+ * segment).
67
+ *
68
+ * Results keep Set-iteration order via the recorded `ord`, because the callers'
69
+ * scans emitted in that order and Go returns the whole list as the import
70
+ * target (one `ImportEdge` per file).
71
+ *
72
+ * Each language owns its own `WeakMap` memo and `accept` predicate, so the
73
+ * STORED index holds only that language's files — the build pass itself still
74
+ * walks every path it is handed once per language. That is not a polyglot tax
75
+ * in practice: `scope-resolution/pipeline/run.ts:673` rebuilds `allFilePaths`
76
+ * from the provider's own `parsedFiles`, so the set already contains only that
77
+ * language's files.
78
+ */
79
+ interface IndexedFile {
80
+ readonly raw: string;
81
+ /**
82
+ * Position in `allFilePaths` iteration order. Still load-bearing:
83
+ * `filesDirectlyInPkgDir` sorts on it to interleave several directories back
84
+ * into the order the original single-pass scan emitted.
85
+ */
86
+ readonly ord: number;
87
+ }
88
+ /**
89
+ * Deeply read-only on purpose. The memo hoist turned what used to be per-call
90
+ * scratch into state shared by every import in a run, and `readonly` on the
91
+ * PROPERTY still lets a caller do `idx.rootFiles.sort()` in place. Typing the
92
+ * containers as read-only makes the copy-before-mutating rule compile-enforced
93
+ * instead of comment-enforced — but `readonly` is erased at runtime and is not
94
+ * hard to widen back (the sibling Kotlin index documents `Array.isArray`'s
95
+ * `arg is any[]` predicate doing exactly that), so the one container callers
96
+ * read directly is handed out through `sortedRootFiles` rather than raw.
97
+ */
98
+ export interface PackageDirIndex {
99
+ /** Last path segment of a directory → every normalized directory ending in it. */
100
+ readonly dirsByLastSegment: ReadonlyMap<string, readonly string[]>;
101
+ /** Normalized directory → the accepted files directly inside it, in Set order. */
102
+ readonly filesByDir: ReadonlyMap<string, readonly IndexedFile[]>;
103
+ /** Accepted files with no directory at all, in Set order. */
104
+ readonly rootFiles: readonly string[];
105
+ }
106
+ /**
107
+ * @param accept Runs on the normalized (forward-slash) path; return `false` to
108
+ * leave the file out of the index entirely.
109
+ */
110
+ export declare function buildPackageDirIndex(allFilePaths: ReadonlySet<string>, accept: (normalized: string) => boolean): PackageDirIndex;
111
+ /**
112
+ * Every accepted file directly inside a directory ending with `pkgPath`, in
113
+ * `allFilePaths` iteration order.
114
+ */
115
+ export declare function filesDirectlyInPkgDir(index: PackageDirIndex, pkgPath: string): string[];
116
+ /** Root-package files in sorted order. Copies: the index array is shared by
117
+ * every import in the run and the result leaves as an edge target list. */
118
+ export declare function sortedRootFiles(index: PackageDirIndex): string[];
119
+ /**
120
+ * The FIRST accepted file (in `allFilePaths` iteration order) directly inside a
121
+ * directory ending with `pkgPath`, or `null`.
122
+ */
123
+ export declare function firstFileDirectlyInPkgDir(index: PackageDirIndex, pkgPath: string): string | null;
124
+ export {};
@@ -0,0 +1,223 @@
1
+ /**
2
+ * "Which files live DIRECTLY inside a directory whose path ends with
3
+ * `<pkgPath>`?" — the query Go's package resolution and C#'s namespace-directory
4
+ * fallback both answered with a full `allFilePaths` scan per import.
5
+ *
6
+ * Both scans ran the same predicate: normalize to forward slashes, apply the
7
+ * language's extension filter, find the FIRST `'/' + pkgPath + '/'` occurrence,
8
+ * and keep the file only if nothing after that occurrence contains a slash.
9
+ *
10
+ * That predicate depends only on the file's DIRECTORY, so it can be answered
11
+ * from an index built once per file set:
12
+ *
13
+ * let D = '/' + <normalized dir of the file> + '/'
14
+ * let P = '/' + pkgPath + '/'
15
+ * match ⟺ D.endsWith(P)
16
+ *
17
+ * It used to say one more thing, and #2881 removed it:
18
+ *
19
+ * match ⟺ D.length >= P.length && D.indexOf(P) === D.length - P.length
20
+ *
21
+ * — i.e. `D` ends with `P` AND that trailing occurrence is the FIRST one, so
22
+ * `a/pkg/b/pkg/x.go` did NOT answer `pkg`. The second half was never a rule
23
+ * anyone chose. It is what the pre-index per-import scan happened to compute
24
+ * (it called `indexOf`, then checked that nothing after the match contained a
25
+ * slash), and the index was built to reproduce that scan byte for byte. It
26
+ * dropped exactly the repositories that nest a directory name inside itself:
27
+ * `internal/…/internal`, `Models/…/Models`, and the reported shape
28
+ * `data/src/main/kotlin/com/example/data/Repo.kt`, where `import data.helper`
29
+ * resolved to null. Kotlin was fixed first, in its own `dirChildren`
30
+ * (`languages/kotlin/import-target.ts`); this index, the C# csproj index and
31
+ * the legacy `go.ts` scan followed.
32
+ *
33
+ * The strongest evidence that the rule was accidental is that a sixth
34
+ * implementation of the same question never had it. `import-resolvers/jvm.ts`
35
+ * answers "files directly inside a directory ending with <packagePath>" for
36
+ * Java and Kotlin wildcard imports, and has used `lastIndexOf` since #488.
37
+ *
38
+ * That is evidence about how the predicate was WRITTEN, not about live
39
+ * behaviour, and the distinction matters enough to spell out. `jvm.ts` is
40
+ * reached only through `provider.importResolver`, which `languages/java.ts` and
41
+ * `languages/kotlin.ts` do wire — but that field currently has no production
42
+ * READER. Its only reader anywhere is `import-target-adapter.ts`, whose own
43
+ * docblock says it is "threaded through `finalizeScopeModel`"; nothing threads
44
+ * it, and neither that module nor its two exports
45
+ * (`buildImportTargetWorkspace`, `resolveImportTargetAcrossLanguages`) is
46
+ * referenced outside its own unit test. So `jvm.ts`'s `resolveJvmWildcard` and
47
+ * `import-resolvers/go.ts`'s `resolveGoPackage` are dormant, while THIS index,
48
+ * `csharp.ts`'s `resolveCSharpImportInternal` and Kotlin's `dirChildren` are
49
+ * the ones that run. Whether those two dormant resolvers should be deleted or
50
+ * actually wired up is an open question and wants its own issue; it is not
51
+ * settled here.
52
+ *
53
+ * The argument survives that correction intact, because it never needed the
54
+ * resolvers to be live: an independent implementation of the same question,
55
+ * written without reference to the pre-index scan, reached for `lastIndexOf`.
56
+ * The extra clause was never a rule anyone chose. All six spellings now agree.
57
+ *
58
+ * The length guard the `indexOf` form needed is gone with it: `endsWith` is
59
+ * false for a shorter `D` instead of comparing -1 to -1.
60
+ *
61
+ * Candidates are narrowed by the directory's LAST segment rather than by
62
+ * indexing every directory suffix: a suffix map costs O(files × depth) entries,
63
+ * which is exactly the memory this codebase runs out of at kernel scale
64
+ * (#2649), while the last-segment bucket is O(directories) and is a superset of
65
+ * the matches (`D` ends with `P` ⟹ the dir's last segment is `pkgPath`'s last
66
+ * segment).
67
+ *
68
+ * Results keep Set-iteration order via the recorded `ord`, because the callers'
69
+ * scans emitted in that order and Go returns the whole list as the import
70
+ * target (one `ImportEdge` per file).
71
+ *
72
+ * Each language owns its own `WeakMap` memo and `accept` predicate, so the
73
+ * STORED index holds only that language's files — the build pass itself still
74
+ * walks every path it is handed once per language. That is not a polyglot tax
75
+ * in practice: `scope-resolution/pipeline/run.ts:673` rebuilds `allFilePaths`
76
+ * from the provider's own `parsedFiles`, so the set already contains only that
77
+ * language's files.
78
+ */
79
+ /**
80
+ * @param accept Runs on the normalized (forward-slash) path; return `false` to
81
+ * leave the file out of the index entirely.
82
+ */
83
+ export function buildPackageDirIndex(allFilePaths, accept) {
84
+ const dirsByLastSegment = new Map();
85
+ const filesByDir = new Map();
86
+ const rootFiles = [];
87
+ let ord = 0;
88
+ for (const raw of allFilePaths) {
89
+ const ownOrd = ord++;
90
+ const normalized = raw.replace(/\\/g, '/');
91
+ if (!accept(normalized))
92
+ continue;
93
+ const lastSlash = normalized.lastIndexOf('/');
94
+ if (lastSlash < 0) {
95
+ // No directory: `'/x.go'.indexOf('/pkg/')` can never hit, so a root file
96
+ // answers no `pkgPath` query. Kept separately for Go's root-package leg.
97
+ rootFiles.push(raw);
98
+ continue;
99
+ }
100
+ const dir = normalized.slice(0, lastSlash);
101
+ let files = filesByDir.get(dir);
102
+ if (files === undefined) {
103
+ files = [];
104
+ filesByDir.set(dir, files);
105
+ const lastSegment = dir.slice(dir.lastIndexOf('/') + 1);
106
+ let dirs = dirsByLastSegment.get(lastSegment);
107
+ if (dirs === undefined) {
108
+ dirs = [];
109
+ dirsByLastSegment.set(lastSegment, dirs);
110
+ }
111
+ dirs.push(dir);
112
+ }
113
+ files.push({ raw, ord: ownOrd });
114
+ }
115
+ return { dirsByLastSegment, filesByDir, rootFiles };
116
+ }
117
+ /** Every indexed directory matching `pkgPath`, in first-seen order. */
118
+ function* matchingDirs(index, pkgPath) {
119
+ const lastSegment = pkgPath.slice(pkgPath.lastIndexOf('/') + 1);
120
+ const dirs = index.dirsByLastSegment.get(lastSegment);
121
+ if (dirs === undefined)
122
+ return;
123
+ // `('/' + D + '/').endsWith('/' + P + '/')` ⟺ `D === P || D.endsWith('/' + P)`,
124
+ // which is the same predicate without the two strings per candidate the
125
+ // wrapped form built: 32.58 ns → 8.22 ns per candidate, 3.96x, over 2001
126
+ // directories of which 668 match (Node 22.18.0, best-of-80 after 300 warmup
127
+ // passes). Verified exhaustively rather than argued, over every pair of
128
+ // strings up to length 5 over `{a, b, /}` including the empty string —
129
+ // 132 496 pairs, 911 of them matching: 0 divergences. The match count is
130
+ // reported beside the timing on purpose: two predicates that agree on `false`
131
+ // everywhere also show 0 divergences.
132
+ //
133
+ // Worth the care because this loop is genuinely hot: Go's GOPATH fallback
134
+ // calls `matchingDirs` once per import-path segment over the bucket holding
135
+ // EVERY directory that shares the queried last segment (every service's
136
+ // `internal`). At 1000 services × 100 000 unresolved imports × 4 segments
137
+ // that is ~34.6 s against ~14.0 s, and ~0.5 GB of transient garbage not
138
+ // allocated.
139
+ //
140
+ // There is nothing further to win by reaching for the two-argument
141
+ // `endsWith(search, endPosition)` or for `startsWith(needle, pos)`: on the
142
+ // same data all three land together — 8.15 ns one-argument, 8.55 ns
143
+ // two-argument, 8.54 ns `startsWith` — and against the unwrapped string the
144
+ // two-argument form is character-for-character the same test. A "the 2-arg
145
+ // overload leaves V8's fast path, 20x" claim was measured during review and
146
+ // did NOT reproduce here or in two independent re-runs; its 1.87 ns baseline
147
+ // was a one-argument call whose needle failed the length/last-char precheck
148
+ // and early-exited without comparing. Recorded because the retraction is the
149
+ // useful part: compare forms that do the same work and report the hit count.
150
+ //
151
+ // The equality arm also carries the length guard the `indexOf` form needed: a
152
+ // shorter `dir` is simply false, where `indexOf` returned -1 and
153
+ // `haystack.length - needle.length` could also be -1 and report a bogus match.
154
+ const suffix = `/${pkgPath}`;
155
+ for (const dir of dirs) {
156
+ if (dir !== pkgPath && !dir.endsWith(suffix))
157
+ continue;
158
+ const files = index.filesByDir.get(dir);
159
+ if (files !== undefined)
160
+ yield files;
161
+ }
162
+ }
163
+ /**
164
+ * Every accepted file directly inside a directory ending with `pkgPath`, in
165
+ * `allFilePaths` iteration order.
166
+ */
167
+ export function filesDirectlyInPkgDir(index, pkgPath) {
168
+ // The first bucket is held by reference, not copied into an accumulator: one
169
+ // matching directory is the overwhelmingly common case (every unique-leaf
170
+ // call, and any query whose package path has more than one segment), and it
171
+ // then reaches the `map` with zero intermediate copies.
172
+ //
173
+ // A second directory promotes that reference to a real accumulator, which is
174
+ // appended to once per file from then on — never re-spread per directory,
175
+ // because that costs O(files × dirs²) copies, which a monorepo carrying the
176
+ // same package directory under many services (`svcN/internal/models`, queried
177
+ // by Go's two-segment GOPATH tail) would pay on every import.
178
+ let first = null;
179
+ let merged = null;
180
+ for (const files of matchingDirs(index, pkgPath)) {
181
+ if (first === null) {
182
+ first = files;
183
+ continue;
184
+ }
185
+ if (merged === null)
186
+ merged = [...first];
187
+ for (const f of files)
188
+ merged.push(f);
189
+ }
190
+ if (first === null)
191
+ return [];
192
+ // One directory is already in Set order; several interleave and need merging
193
+ // back onto the order the original single-pass scan emitted.
194
+ if (merged === null)
195
+ return first.map((f) => f.raw);
196
+ merged.sort((a, b) => a.ord - b.ord);
197
+ return merged.map((f) => f.raw);
198
+ }
199
+ /** Root-package files in sorted order. Copies: the index array is shared by
200
+ * every import in the run and the result leaves as an edge target list. */
201
+ export function sortedRootFiles(index) {
202
+ return [...index.rootFiles].sort();
203
+ }
204
+ /**
205
+ * The FIRST accepted file (in `allFilePaths` iteration order) directly inside a
206
+ * directory ending with `pkgPath`, or `null`.
207
+ */
208
+ export function firstFileDirectlyInPkgDir(index, pkgPath) {
209
+ // Returning the FIRST match is already the minimum-`ord` answer, and it is
210
+ // the build loop that makes it so: `buildPackageDirIndex` appends a directory
211
+ // to its last-segment bucket at the moment it accepts that directory's first
212
+ // file, so bucket order IS ascending first-file-`ord` order. Comparing `ord`
213
+ // across the remaining directories can never improve on the first hit
214
+ // (differentially verified: 0 divergences). Change that append point — buffer
215
+ // the directories, sort them, populate `filesByDir` before `dirsByLastSegment`
216
+ // — and this early return silently starts answering with the wrong file.
217
+ for (const files of matchingDirs(index, pkgPath)) {
218
+ const first = files[0];
219
+ if (first !== undefined)
220
+ return first.raw;
221
+ }
222
+ return null;
223
+ }
@@ -0,0 +1,50 @@
1
+ import { type SuffixIndex } from './utils.js';
2
+ /**
3
+ * Everything the standard `resolveTsTarget` path derives from one workspace
4
+ * file set: the file list, the lower-cased file list, the suffix index and the
5
+ * per-pass `resolveCache`.
6
+ *
7
+ * Without this memoization the resolver re-derived `allFileList` and
8
+ * `normalizedFileList` (both O(N_files)), rebuilt the index and threw away the
9
+ * `resolveCache` on every import — O(N_files × N_imports) total work for what
10
+ * should be O(N_files + N_imports).
11
+ */
12
+ export interface ImportPassCache {
13
+ readonly allFilePaths: Set<string>;
14
+ readonly allFileList: readonly string[];
15
+ readonly normalizedFileList: readonly string[];
16
+ readonly index: SuffixIndex;
17
+ readonly resolveCache: Map<string, string | null>;
18
+ }
19
+ /**
20
+ * Build that state. Shared by every adapter whose resolution runs through
21
+ * `resolveTsTarget`.
22
+ *
23
+ * Not a dedup of identical copies, and the difference is the point. At
24
+ * 49c5b7d81 each of those adapters carried this record inline and they did NOT
25
+ * agree: `languages/typescript/scope-resolver.ts` and
26
+ * `languages/vue/import-target.ts` held six byte-identical fields built around
27
+ * `index: buildSuffixIndex(normalizedFileList, allFileList)`, while
28
+ * `languages/javascript/import-target.ts` held five and never called
29
+ * `buildSuffixIndex` at all. That one missing field IS the O(imports × files)
30
+ * defect PR #2911 fixed — `resolveTsTarget` fell back to `suffixResolve`'s
31
+ * linear scan for every JavaScript import — and the header of
32
+ * `languages/javascript/import-target.ts` carries the measurements. Hoisting
33
+ * the builder is what makes a fourth adapter unable to omit it again: `index`
34
+ * is not optional on `ImportPassCache`.
35
+ *
36
+ * The BUILDER is shared; the MEMO deliberately is not. Each adapter wraps this
37
+ * in its own `perFileSet(...)`, so each gets its own `WeakMap`, its own index
38
+ * instance and — the one that would be a behaviour change — its own
39
+ * `resolveCache`. The languages disagree about what a specifier resolves to
40
+ * (`tsconfigPaths` is read from config for TypeScript and Vue, pinned to `null`
41
+ * for JavaScript, and the tried extension list differs), so one shared resolve
42
+ * cache across them would hand a language another language's answers.
43
+ *
44
+ * Sharing the builder is a code dedup and nothing more: it buys no runtime
45
+ * reuse, because there is none to buy. Each provider pass builds its own
46
+ * `allFilePaths` Set (`scope-resolution/pipeline/run.ts`, per provider), so
47
+ * TypeScript's set and JavaScript's set are different objects and therefore
48
+ * different `WeakMap` keys even where the two memos are the same code.
49
+ */
50
+ export declare function buildImportPassCache(allFilePaths: ReadonlySet<string>): ImportPassCache;
@@ -0,0 +1,60 @@
1
+ import { buildSuffixIndex } from './utils.js';
2
+ /**
3
+ * Build that state. Shared by every adapter whose resolution runs through
4
+ * `resolveTsTarget`.
5
+ *
6
+ * Not a dedup of identical copies, and the difference is the point. At
7
+ * 49c5b7d81 each of those adapters carried this record inline and they did NOT
8
+ * agree: `languages/typescript/scope-resolver.ts` and
9
+ * `languages/vue/import-target.ts` held six byte-identical fields built around
10
+ * `index: buildSuffixIndex(normalizedFileList, allFileList)`, while
11
+ * `languages/javascript/import-target.ts` held five and never called
12
+ * `buildSuffixIndex` at all. That one missing field IS the O(imports × files)
13
+ * defect PR #2911 fixed — `resolveTsTarget` fell back to `suffixResolve`'s
14
+ * linear scan for every JavaScript import — and the header of
15
+ * `languages/javascript/import-target.ts` carries the measurements. Hoisting
16
+ * the builder is what makes a fourth adapter unable to omit it again: `index`
17
+ * is not optional on `ImportPassCache`.
18
+ *
19
+ * The BUILDER is shared; the MEMO deliberately is not. Each adapter wraps this
20
+ * in its own `perFileSet(...)`, so each gets its own `WeakMap`, its own index
21
+ * instance and — the one that would be a behaviour change — its own
22
+ * `resolveCache`. The languages disagree about what a specifier resolves to
23
+ * (`tsconfigPaths` is read from config for TypeScript and Vue, pinned to `null`
24
+ * for JavaScript, and the tried extension list differs), so one shared resolve
25
+ * cache across them would hand a language another language's answers.
26
+ *
27
+ * Sharing the builder is a code dedup and nothing more: it buys no runtime
28
+ * reuse, because there is none to buy. Each provider pass builds its own
29
+ * `allFilePaths` Set (`scope-resolution/pipeline/run.ts`, per provider), so
30
+ * TypeScript's set and JavaScript's set are different objects and therefore
31
+ * different `WeakMap` keys even where the two memos are the same code.
32
+ */
33
+ export function buildImportPassCache(allFilePaths) {
34
+ const allFileList = Array.from(allFilePaths);
35
+ // LOWERCASED, not slash-normalized — unlike every other caller of
36
+ // `buildSuffixIndex`. That is what `alreadyLowercased` below records.
37
+ const normalizedFileList = allFileList.map((f) => f.toLowerCase());
38
+ return {
39
+ // Copied ONCE per file set, not once per import: `TsResolveContext` wants a
40
+ // mutable `Set` and the orchestrator hands us a `ReadonlySet`. The copy is
41
+ // not the #1918 hazard because the cache KEY is the caller's original Set.
42
+ allFilePaths: new Set(allFilePaths),
43
+ allFileList,
44
+ normalizedFileList,
45
+ // Every suffix of an all-lowercase path is itself lowercase, so the index's
46
+ // case-folded map came out a byte-for-byte copy of its exact map — same
47
+ // keys, same values, same insertion order — one per `ImportPassCache`, so
48
+ // once per adapter per pass. Measured 14.00 MiB at 32 000 paths, 29.8% of
49
+ // the retained `ImportPassCache`. The flag drops the copy; it does not change
50
+ // what `getInsensitive` answers, because the copy was the identity (see
51
+ // `SuffixIndexOptions`). Checked, not assumed: over 474 524 probes on four
52
+ // mixed-case corpora — Vue PascalCase plus alias specifiers, case-colliding
53
+ // twins, a 600-file deep monorepo, and Unicode paths carrying final sigma,
54
+ // dotted-I and sharp-S — the two maps came out byte-identical, the exact
55
+ // map was the sole answerer 0 times, and `get(s) || getInsensitive(s)`
56
+ // returned the same file 474 524 times out of 474 524.
57
+ index: buildSuffixIndex(normalizedFileList, allFileList, { alreadyLowercased: true }),
58
+ resolveCache: new Map(),
59
+ };
60
+ }
@@ -0,0 +1,71 @@
1
+ /**
2
+ * The one memo every per-file-set index in this pipeline is built on.
3
+ *
4
+ * The scope-resolution orchestrator builds ONE file-set object per provider
5
+ * pass and threads that same object through every `resolveImportTarget` call in
6
+ * the pass, so anything derived from it — a suffix index, a package-directory
7
+ * map, a basename bucket — can be built once and read by every import instead
8
+ * of rebuilt per import. Keying on the object's IDENTITY is what makes that
9
+ * work, and it is equally the contract callers must keep: the set is passed
10
+ * THROUGH, never copied. A defensive `new Set(allFilePaths)` at an adapter
11
+ * boundary hands a fresh key per import and silently restores
12
+ * O(imports × files) — the bug PR #1918 shipped and had to fix in review (P1).
13
+ * The guards are `test/integration/<lang>-import-index-reuse.test.ts` and, for
14
+ * every registered language at once,
15
+ * `test/unit/scope-resolution/import-target-index-reuse.contract.test.ts`,
16
+ * whose inventory arm fails when an entry of `SCOPE_RESOLVERS` has no fixture.
17
+ * That arm is why no language is named here: the registry is the census, and a
18
+ * hand-copied list of languages goes stale the release after it is written.
19
+ *
20
+ * A `WeakMap` rather than a `Map`: the entry is reclaimed with the file set it
21
+ * was derived from, so a pass can never read a previous pass's index and memory
22
+ * does not grow across runs. There is no invalidation rule to get wrong because
23
+ * there is nothing to invalidate — a new file set is a new key.
24
+ *
25
+ * The KEY TYPE is constrained rather than described, because which object is
26
+ * the key decides whether the guards above can see the memo fail, and a prose
27
+ * list of call sites is the thing this file elsewhere tells you not to write.
28
+ * `K` admits exactly the two shapes the orchestrator keeps stable for a pass:
29
+ *
30
+ * - `ReadonlySet<string>`, the pass's file set — every index derived from it,
31
+ * including the derived header-closure sets that `languages/{c,cpp}/
32
+ * scope-resolver.ts` memoize inside an outer per-file-set memo. Defeating
33
+ * one of these means copying the SET, which re-traverses it, which the
34
+ * `CountingSet` instrument (`test/helpers/counting-file-set.ts`) reads as a
35
+ * scan count rising with the import count.
36
+ * - `readonly ParsedFile[]`, the pass's parsed-file array. Not derived from
37
+ * the file set at all, so the file-set guards do not reach them; these key
38
+ * on the array the orchestrator already threads through the pass, and their
39
+ * contract is that same pass-through discipline. The instrument that CAN see
40
+ * them counts element reads on that array — `countedParsedFiles`, beside
41
+ * `CountingSet`, driven by the contract test's `minimumParsedFileReads`.
42
+ *
43
+ * A THIRD shape — an array materialized from the file set — is what the type
44
+ * exists to reject. `import-resolvers/csharp.ts` used one until #2911, and it
45
+ * is worth a compile error rather than a rule: copying an array mints a fresh
46
+ * `WeakMap` key while traversing the Set zero extra times, so every
47
+ * scan-counting guard stays green at its correct value while the index rebuilds
48
+ * once per import. That failure is invisible to the whole instrument family
49
+ * above and was caught only by a timing ratio in `bench/import-target/`. Derive
50
+ * the array inside the builder from `getWorkspaceFileIndex(allFilePaths)`
51
+ * instead. `string[]` is not assignable to `K`, so the shape cannot come back
52
+ * silently — `configs/swift.ts` keeps the one hand-rolled `WeakMap` on
53
+ * `ctx.allFileList` in the tree, deliberately and with its reasons written
54
+ * down, and it is deliberately NOT on this primitive.
55
+ *
56
+ * `T extends object` is deliberate, chosen over probing `has` before `get`.
57
+ * `WeakMap.get` returning `undefined` cannot distinguish "not built yet" from
58
+ * "built, and the value is `undefined`"; constraining the value to an object
59
+ * makes the second case unrepresentable rather than paying a second lookup on
60
+ * every import, and it needs no cast to type-check. Every index memoized here
61
+ * is a record, `Map` or `Set`, so the constraint costs nothing today — and a
62
+ * later caller wanting to memoize a `string | null` gets a compile error
63
+ * pointing at this line instead of a memo that silently rebuilds on every miss.
64
+ *
65
+ * A `build` that THROWS stores nothing, so the next call for that key runs it
66
+ * again: failures are not memoized, and a half-filled index is never published.
67
+ * Inert for the builders here — each is a pure, total pass over the file set —
68
+ * and the safer of the two behaviours if that ever stops being true.
69
+ */
70
+ import type { ParsedFile } from '../../../_shared/index.js';
71
+ export declare function perFileSet<K extends ReadonlySet<string> | readonly ParsedFile[], T extends object>(build: (key: K) => T): (key: K) => T;
@@ -0,0 +1,11 @@
1
+ export function perFileSet(build) {
2
+ const cache = new WeakMap();
3
+ return (key) => {
4
+ const cached = cache.get(key);
5
+ if (cached !== undefined)
6
+ return cached;
7
+ const built = build(key);
8
+ cache.set(key, built);
9
+ return built;
10
+ };
11
+ }
@@ -21,4 +21,4 @@ import type { ComposerConfig } from '../language-config.js';
21
21
  * a known limitation — PHP function imports cannot be resolved to a specific file
22
22
  * without parsing all candidate files.
23
23
  */
24
- export declare function resolvePhpImportInternal(importPath: string, composerConfig: ComposerConfig | null, allFiles: Set<string>, normalizedFileList: string[], allFileList: string[], index?: SuffixIndex): string | null;
24
+ export declare function resolvePhpImportInternal(importPath: string, composerConfig: ComposerConfig | null, allFiles: Set<string>, normalizedFileList: readonly string[], allFileList: readonly string[], index?: SuffixIndex): string | null;