gitnexus 1.6.10-rc.98 → 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 (777) 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/class-extractors/configs/jvm.js +6 -6
  126. package/dist/core/ingestion/cluster-enricher.js +8 -4
  127. package/dist/core/ingestion/community-processor.d.ts +21 -3
  128. package/dist/core/ingestion/community-processor.js +81 -82
  129. package/dist/core/ingestion/di-extractors/index.d.ts +9 -33
  130. package/dist/core/ingestion/di-extractors/spring.d.ts +1 -1
  131. package/dist/core/ingestion/di-extractors/spring.js +8 -1
  132. package/dist/core/ingestion/di-extractors/types.d.ts +60 -0
  133. package/dist/core/ingestion/di-extractors/types.js +15 -0
  134. package/dist/core/ingestion/filesystem-walker.js +30 -14
  135. package/dist/core/ingestion/finalize-orchestrator.js +1 -0
  136. package/dist/core/ingestion/frameworks/spring/analysis-features.d.ts +6 -0
  137. package/dist/core/ingestion/frameworks/spring/analysis-features.js +35 -1
  138. package/dist/core/ingestion/frameworks/spring/annotation-arguments.d.ts +13 -0
  139. package/dist/core/ingestion/frameworks/spring/annotation-arguments.js +227 -0
  140. package/dist/core/ingestion/frameworks/spring/aop-candidates.d.ts +15 -0
  141. package/dist/core/ingestion/frameworks/spring/aop-candidates.js +85 -0
  142. package/dist/core/ingestion/frameworks/spring/aop.d.ts +118 -0
  143. package/dist/core/ingestion/frameworks/spring/aop.js +476 -0
  144. package/dist/core/ingestion/frameworks/spring/auto-configuration.d.ts +8 -0
  145. package/dist/core/ingestion/frameworks/spring/auto-configuration.js +16 -0
  146. package/dist/core/ingestion/frameworks/spring/bean-catalog.js +1 -0
  147. package/dist/core/ingestion/frameworks/spring/bean-factories.d.ts +33 -0
  148. package/dist/core/ingestion/frameworks/spring/bean-factories.js +65 -0
  149. package/dist/core/ingestion/frameworks/spring/conditionals.d.ts +25 -0
  150. package/dist/core/ingestion/frameworks/spring/conditionals.js +319 -0
  151. package/dist/core/ingestion/frameworks/spring/di-metadata.d.ts +3 -0
  152. package/dist/core/ingestion/frameworks/spring/di-metadata.js +162 -13
  153. package/dist/core/ingestion/frameworks/spring/non-http-handlers.d.ts +28 -0
  154. package/dist/core/ingestion/frameworks/spring/non-http-handlers.js +152 -0
  155. package/dist/core/ingestion/frameworks/spring/resource-injection.d.ts +5 -0
  156. package/dist/core/ingestion/frameworks/spring/resource-injection.js +91 -0
  157. package/dist/core/ingestion/import-resolvers/configs/csharp.js +5 -1
  158. package/dist/core/ingestion/import-resolvers/configs/swift.js +13 -0
  159. package/dist/core/ingestion/import-resolvers/csharp.d.ts +9 -1
  160. package/dist/core/ingestion/import-resolvers/csharp.js +234 -27
  161. package/dist/core/ingestion/import-resolvers/go.d.ts +11 -1
  162. package/dist/core/ingestion/import-resolvers/go.js +44 -17
  163. package/dist/core/ingestion/import-resolvers/jvm.d.ts +2 -2
  164. package/dist/core/ingestion/import-resolvers/node-workspace-packages.d.ts +90 -0
  165. package/dist/core/ingestion/import-resolvers/node-workspace-packages.js +429 -0
  166. package/dist/core/ingestion/import-resolvers/package-dir-index.d.ts +124 -0
  167. package/dist/core/ingestion/import-resolvers/package-dir-index.js +223 -0
  168. package/dist/core/ingestion/import-resolvers/pass-cache.d.ts +50 -0
  169. package/dist/core/ingestion/import-resolvers/pass-cache.js +60 -0
  170. package/dist/core/ingestion/import-resolvers/per-file-set.d.ts +71 -0
  171. package/dist/core/ingestion/import-resolvers/per-file-set.js +11 -0
  172. package/dist/core/ingestion/import-resolvers/php.d.ts +1 -1
  173. package/dist/core/ingestion/import-resolvers/php.js +65 -19
  174. package/dist/core/ingestion/import-resolvers/python-file-index.d.ts +201 -0
  175. package/dist/core/ingestion/import-resolvers/python-file-index.js +302 -0
  176. package/dist/core/ingestion/import-resolvers/python.js +25 -6
  177. package/dist/core/ingestion/import-resolvers/ruby.d.ts +1 -1
  178. package/dist/core/ingestion/import-resolvers/rust.d.ts +2 -2
  179. package/dist/core/ingestion/import-resolvers/standard.d.ts +1 -1
  180. package/dist/core/ingestion/import-resolvers/types.d.ts +1 -12
  181. package/dist/core/ingestion/import-resolvers/utils.d.ts +65 -6
  182. package/dist/core/ingestion/import-resolvers/utils.js +215 -36
  183. package/dist/core/ingestion/import-resolvers/workspace-file-index.d.ts +72 -0
  184. package/dist/core/ingestion/import-resolvers/workspace-file-index.js +58 -0
  185. package/dist/core/ingestion/language-config.d.ts +29 -1
  186. package/dist/core/ingestion/language-config.js +110 -35
  187. package/dist/core/ingestion/language-provider.d.ts +209 -7
  188. package/dist/core/ingestion/language-provider.js +37 -0
  189. package/dist/core/ingestion/languages/c/captures.js +7 -0
  190. package/dist/core/ingestion/languages/c/import-target.js +12 -16
  191. package/dist/core/ingestion/languages/c/scope-resolver.js +20 -19
  192. package/dist/core/ingestion/languages/c/static-linkage.js +12 -16
  193. package/dist/core/ingestion/languages/c-cpp.js +13 -0
  194. package/dist/core/ingestion/languages/cobol/scope-resolver.js +27 -20
  195. package/dist/core/ingestion/languages/cobol.js +13 -0
  196. package/dist/core/ingestion/languages/cpp/adl.d.ts +2 -2
  197. package/dist/core/ingestion/languages/cpp/adl.js +67 -44
  198. package/dist/core/ingestion/languages/cpp/captures.js +14 -2
  199. package/dist/core/ingestion/languages/cpp/file-local-linkage.js +11 -15
  200. package/dist/core/ingestion/languages/cpp/inline-namespaces.d.ts +28 -8
  201. package/dist/core/ingestion/languages/cpp/inline-namespaces.js +242 -68
  202. package/dist/core/ingestion/languages/cpp/interpret.d.ts +2 -0
  203. package/dist/core/ingestion/languages/cpp/interpret.js +126 -6
  204. package/dist/core/ingestion/languages/cpp/query.js +106 -0
  205. package/dist/core/ingestion/languages/cpp/scope-resolver.js +48 -20
  206. package/dist/core/ingestion/languages/csharp/accessor-unwrap.d.ts +2 -15
  207. package/dist/core/ingestion/languages/csharp/accessor-unwrap.js +18 -10
  208. package/dist/core/ingestion/languages/csharp/captures.js +19 -0
  209. package/dist/core/ingestion/languages/csharp/import-target.js +46 -72
  210. package/dist/core/ingestion/languages/csharp/namespace-siblings.js +5 -1
  211. package/dist/core/ingestion/languages/csharp/query.js +25 -5
  212. package/dist/core/ingestion/languages/csharp/scope-resolver.js +75 -2
  213. package/dist/core/ingestion/languages/dart/captures.d.ts +10 -0
  214. package/dist/core/ingestion/languages/dart/captures.js +598 -16
  215. package/dist/core/ingestion/languages/dart/import-target.js +32 -9
  216. package/dist/core/ingestion/languages/dart/index.d.ts +1 -1
  217. package/dist/core/ingestion/languages/dart/index.js +1 -1
  218. package/dist/core/ingestion/languages/dart/query.js +98 -1
  219. package/dist/core/ingestion/languages/dart/scope-resolver.js +14 -3
  220. package/dist/core/ingestion/languages/dart/simple-hooks.js +9 -0
  221. package/dist/core/ingestion/languages/dart.js +6 -1
  222. package/dist/core/ingestion/languages/go/captures.js +108 -3
  223. package/dist/core/ingestion/languages/go/generic-type-parameters.d.ts +31 -0
  224. package/dist/core/ingestion/languages/go/generic-type-parameters.js +140 -0
  225. package/dist/core/ingestion/languages/go/import-target.d.ts +3 -10
  226. package/dist/core/ingestion/languages/go/import-target.js +34 -30
  227. package/dist/core/ingestion/languages/go/index.d.ts +1 -1
  228. package/dist/core/ingestion/languages/go/interface-impls.d.ts +9 -1
  229. package/dist/core/ingestion/languages/go/interface-impls.js +693 -87
  230. package/dist/core/ingestion/languages/go/interpret.d.ts +2 -0
  231. package/dist/core/ingestion/languages/go/interpret.js +22 -8
  232. package/dist/core/ingestion/languages/go/method-owners.js +31 -12
  233. package/dist/core/ingestion/languages/go/package-clause.d.ts +46 -0
  234. package/dist/core/ingestion/languages/go/package-clause.js +75 -0
  235. package/dist/core/ingestion/languages/go/package-siblings.js +7 -11
  236. package/dist/core/ingestion/languages/go/query.js +56 -3
  237. package/dist/core/ingestion/languages/go/scope-resolver.js +39 -0
  238. package/dist/core/ingestion/languages/go.js +9 -0
  239. package/dist/core/ingestion/languages/java/analysis-features.d.ts +4 -0
  240. package/dist/core/ingestion/languages/java/analysis-features.js +12 -0
  241. package/dist/core/ingestion/languages/java/capture-side-channel.d.ts +12 -0
  242. package/dist/core/ingestion/languages/java/capture-side-channel.js +48 -0
  243. package/dist/core/ingestion/languages/java/captures.js +129 -44
  244. package/dist/core/ingestion/languages/java/import-target.d.ts +49 -9
  245. package/dist/core/ingestion/languages/java/import-target.js +68 -88
  246. package/dist/core/ingestion/languages/java/interpret.js +3 -2
  247. package/dist/core/ingestion/languages/java/module-resolution.d.ts +62 -0
  248. package/dist/core/ingestion/languages/java/module-resolution.js +142 -0
  249. package/dist/core/ingestion/languages/java/query.js +16 -3
  250. package/dist/core/ingestion/languages/java/record-components.d.ts +14 -0
  251. package/dist/core/ingestion/languages/java/record-components.js +185 -0
  252. package/dist/core/ingestion/languages/java/scope-resolver.js +10 -2
  253. package/dist/core/ingestion/languages/java/spring-aop.d.ts +12 -0
  254. package/dist/core/ingestion/languages/java/spring-aop.js +49 -0
  255. package/dist/core/ingestion/languages/java/spring-conditionals.d.ts +11 -0
  256. package/dist/core/ingestion/languages/java/spring-conditionals.js +48 -0
  257. package/dist/core/ingestion/languages/java/spring-di.d.ts +4 -1
  258. package/dist/core/ingestion/languages/java/spring-di.js +41 -9
  259. package/dist/core/ingestion/languages/java/spring-non-http-handlers.d.ts +7 -0
  260. package/dist/core/ingestion/languages/java/spring-non-http-handlers.js +32 -0
  261. package/dist/core/ingestion/languages/java.js +94 -3
  262. package/dist/core/ingestion/languages/javascript/captures.d.ts +6 -1
  263. package/dist/core/ingestion/languages/javascript/captures.js +262 -4
  264. package/dist/core/ingestion/languages/javascript/import-target.d.ts +17 -21
  265. package/dist/core/ingestion/languages/javascript/import-target.js +24 -41
  266. package/dist/core/ingestion/languages/javascript/index.d.ts +54 -5
  267. package/dist/core/ingestion/languages/javascript/index.js +54 -5
  268. package/dist/core/ingestion/languages/javascript/query.d.ts +1 -0
  269. package/dist/core/ingestion/languages/javascript/query.js +211 -5
  270. package/dist/core/ingestion/languages/javascript/scope-resolver.js +12 -0
  271. package/dist/core/ingestion/languages/javascript/simple-hooks.js +2 -1
  272. package/dist/core/ingestion/languages/jvm/package-siblings.js +77 -9
  273. package/dist/core/ingestion/languages/kotlin/capture-side-channel.d.ts +15 -0
  274. package/dist/core/ingestion/languages/kotlin/capture-side-channel.js +48 -0
  275. package/dist/core/ingestion/languages/kotlin/captures.js +43 -1
  276. package/dist/core/ingestion/languages/kotlin/import-target.d.ts +8 -1
  277. package/dist/core/ingestion/languages/kotlin/import-target.js +20 -123
  278. package/dist/core/ingestion/languages/kotlin/index.d.ts +1 -0
  279. package/dist/core/ingestion/languages/kotlin/index.js +1 -0
  280. package/dist/core/ingestion/languages/kotlin/module-resolution.d.ts +22 -0
  281. package/dist/core/ingestion/languages/kotlin/module-resolution.js +108 -0
  282. package/dist/core/ingestion/languages/kotlin/query.js +28 -2
  283. package/dist/core/ingestion/languages/kotlin/scope-resolver.js +23 -2
  284. package/dist/core/ingestion/languages/kotlin/spring-aop.d.ts +12 -0
  285. package/dist/core/ingestion/languages/kotlin/spring-aop.js +64 -0
  286. package/dist/core/ingestion/languages/kotlin/spring-conditionals.d.ts +12 -0
  287. package/dist/core/ingestion/languages/kotlin/spring-conditionals.js +49 -0
  288. package/dist/core/ingestion/languages/kotlin/spring-di.d.ts +2 -0
  289. package/dist/core/ingestion/languages/kotlin/spring-di.js +60 -11
  290. package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.d.ts +10 -0
  291. package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.js +41 -0
  292. package/dist/core/ingestion/languages/php/captures.d.ts +5 -0
  293. package/dist/core/ingestion/languages/php/captures.js +319 -51
  294. package/dist/core/ingestion/languages/php/import-target.d.ts +3 -4
  295. package/dist/core/ingestion/languages/php/import-target.js +192 -62
  296. package/dist/core/ingestion/languages/php/query.js +31 -0
  297. package/dist/core/ingestion/languages/python/arity-metadata.d.ts +1 -0
  298. package/dist/core/ingestion/languages/python/arity-metadata.js +1 -0
  299. package/dist/core/ingestion/languages/python/captures.js +29 -0
  300. package/dist/core/ingestion/languages/python/import-decomposer.js +22 -1
  301. package/dist/core/ingestion/languages/python/import-target.d.ts +42 -1
  302. package/dist/core/ingestion/languages/python/import-target.js +277 -91
  303. package/dist/core/ingestion/languages/python/index.d.ts +1 -1
  304. package/dist/core/ingestion/languages/python/index.js +1 -1
  305. package/dist/core/ingestion/languages/python/interpret.d.ts +52 -0
  306. package/dist/core/ingestion/languages/python/interpret.js +249 -7
  307. package/dist/core/ingestion/languages/python/query.js +9 -0
  308. package/dist/core/ingestion/languages/python/receiver-binding.d.ts +8 -6
  309. package/dist/core/ingestion/languages/python/receiver-binding.js +108 -12
  310. package/dist/core/ingestion/languages/python/scope-resolver.js +27 -4
  311. package/dist/core/ingestion/languages/python/simple-hooks.js +2 -8
  312. package/dist/core/ingestion/languages/python.js +13 -0
  313. package/dist/core/ingestion/languages/ruby/captures.js +158 -0
  314. package/dist/core/ingestion/languages/ruby/import-target.js +7 -5
  315. package/dist/core/ingestion/languages/ruby/query.js +93 -0
  316. package/dist/core/ingestion/languages/ruby/scope-resolver.js +2 -0
  317. package/dist/core/ingestion/languages/ruby/simple-hooks.d.ts +1 -1
  318. package/dist/core/ingestion/languages/ruby/simple-hooks.js +22 -1
  319. package/dist/core/ingestion/languages/rust/captures.js +39 -1
  320. package/dist/core/ingestion/languages/rust/method-owners.js +11 -1
  321. package/dist/core/ingestion/languages/rust/module-path.d.ts +126 -0
  322. package/dist/core/ingestion/languages/rust/module-path.js +214 -0
  323. package/dist/core/ingestion/languages/rust/qualified-call.d.ts +41 -0
  324. package/dist/core/ingestion/languages/rust/qualified-call.js +481 -0
  325. package/dist/core/ingestion/languages/rust/query.js +39 -6
  326. package/dist/core/ingestion/languages/rust/scope-resolver.js +21 -2
  327. package/dist/core/ingestion/languages/rust.js +17 -0
  328. package/dist/core/ingestion/languages/swift/captures.js +87 -3
  329. package/dist/core/ingestion/languages/swift/conditional-directive-preprocess.d.ts +48 -0
  330. package/dist/core/ingestion/languages/swift/conditional-directive-preprocess.js +253 -0
  331. package/dist/core/ingestion/languages/swift/import-target.js +4 -9
  332. package/dist/core/ingestion/languages/swift/query.js +17 -0
  333. package/dist/core/ingestion/languages/swift/receiver-binding.d.ts +8 -0
  334. package/dist/core/ingestion/languages/swift/receiver-binding.js +6 -2
  335. package/dist/core/ingestion/languages/swift.js +2 -0
  336. package/dist/core/ingestion/languages/typescript/captures.d.ts +90 -1
  337. package/dist/core/ingestion/languages/typescript/captures.js +267 -5
  338. package/dist/core/ingestion/languages/typescript/cjs-export-assignment.d.ts +134 -0
  339. package/dist/core/ingestion/languages/typescript/cjs-export-assignment.js +523 -0
  340. package/dist/core/ingestion/languages/typescript/cjs-module-exports.d.ts +54 -0
  341. package/dist/core/ingestion/languages/typescript/cjs-module-exports.js +191 -0
  342. package/dist/core/ingestion/languages/typescript/convex-endpoint-metadata.d.ts +7 -0
  343. package/dist/core/ingestion/languages/typescript/convex-endpoint-metadata.js +92 -0
  344. package/dist/core/ingestion/languages/typescript/file-candidates.d.ts +29 -0
  345. package/dist/core/ingestion/languages/typescript/file-candidates.js +70 -0
  346. package/dist/core/ingestion/languages/typescript/import-decomposer.d.ts +28 -1
  347. package/dist/core/ingestion/languages/typescript/import-decomposer.js +125 -10
  348. package/dist/core/ingestion/languages/typescript/import-target.d.ts +25 -37
  349. package/dist/core/ingestion/languages/typescript/import-target.js +24 -26
  350. package/dist/core/ingestion/languages/typescript/interpret.d.ts +21 -1
  351. package/dist/core/ingestion/languages/typescript/interpret.js +45 -5
  352. package/dist/core/ingestion/languages/typescript/module-resolution.d.ts +48 -0
  353. package/dist/core/ingestion/languages/typescript/module-resolution.js +171 -0
  354. package/dist/core/ingestion/languages/typescript/query.d.ts +1 -0
  355. package/dist/core/ingestion/languages/typescript/query.js +303 -14
  356. package/dist/core/ingestion/languages/typescript/receiver-binding.d.ts +17 -0
  357. package/dist/core/ingestion/languages/typescript/receiver-binding.js +27 -0
  358. package/dist/core/ingestion/languages/typescript/scope-resolver.js +27 -40
  359. package/dist/core/ingestion/languages/typescript/simple-hooks.d.ts +0 -10
  360. package/dist/core/ingestion/languages/typescript/simple-hooks.js +22 -22
  361. package/dist/core/ingestion/languages/typescript/tsconfig.d.ts +59 -0
  362. package/dist/core/ingestion/languages/typescript/tsconfig.js +292 -0
  363. package/dist/core/ingestion/languages/typescript.js +93 -2
  364. package/dist/core/ingestion/languages/vue/import-target.d.ts +6 -22
  365. package/dist/core/ingestion/languages/vue/import-target.js +11 -47
  366. package/dist/core/ingestion/languages/vue/scope-resolver.js +4 -2
  367. package/dist/core/ingestion/local-symbol-pruner.js +11 -11
  368. package/dist/core/ingestion/method-extractors/configs/csharp.js +1 -0
  369. package/dist/core/ingestion/method-extractors/generic.js +1 -0
  370. package/dist/core/ingestion/method-types.d.ts +16 -0
  371. package/dist/core/ingestion/pipeline-phases/di.d.ts +1 -1
  372. package/dist/core/ingestion/pipeline-phases/di.js +136 -21
  373. package/dist/core/ingestion/pipeline-phases/index.d.ts +2 -0
  374. package/dist/core/ingestion/pipeline-phases/index.js +2 -0
  375. package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +15 -0
  376. package/dist/core/ingestion/pipeline-phases/parse-impl.js +154 -4
  377. package/dist/core/ingestion/pipeline-phases/parse.js +5 -0
  378. package/dist/core/ingestion/pipeline-phases/processes.d.ts +3 -2
  379. package/dist/core/ingestion/pipeline-phases/processes.js +91 -6
  380. package/dist/core/ingestion/pipeline-phases/routes.js +116 -25
  381. package/dist/core/ingestion/pipeline-phases/spring-aop.d.ts +34 -0
  382. package/dist/core/ingestion/pipeline-phases/spring-aop.js +439 -0
  383. package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.d.ts +34 -0
  384. package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.js +255 -0
  385. package/dist/core/ingestion/pipeline-phases/types.d.ts +7 -0
  386. package/dist/core/ingestion/pipeline.d.ts +26 -2
  387. package/dist/core/ingestion/pipeline.js +60 -11
  388. package/dist/core/ingestion/process-processor.d.ts +109 -2
  389. package/dist/core/ingestion/process-processor.js +464 -52
  390. package/dist/core/ingestion/resolve-references.d.ts +6 -1
  391. package/dist/core/ingestion/resolve-references.js +66 -6
  392. package/dist/core/ingestion/route-extractors/constant-resolver.d.ts +8 -2
  393. package/dist/core/ingestion/route-extractors/constant-resolver.js +11 -7
  394. package/dist/core/ingestion/route-extractors/data-route-table.d.ts +40 -0
  395. package/dist/core/ingestion/route-extractors/data-route-table.js +876 -0
  396. package/dist/core/ingestion/route-extractors/dispatch-guard.d.ts +96 -0
  397. package/dist/core/ingestion/route-extractors/dispatch-guard.js +1184 -0
  398. package/dist/core/ingestion/route-extractors/java-const-resolver.d.ts +114 -0
  399. package/dist/core/ingestion/route-extractors/java-const-resolver.js +569 -0
  400. package/dist/core/ingestion/route-extractors/js-const-resolver.d.ts +192 -0
  401. package/dist/core/ingestion/route-extractors/js-const-resolver.js +1033 -0
  402. package/dist/core/ingestion/route-extractors/nest.d.ts +53 -0
  403. package/dist/core/ingestion/route-extractors/nest.js +523 -0
  404. package/dist/core/ingestion/route-extractors/spring-shared.d.ts +11 -0
  405. package/dist/core/ingestion/route-extractors/spring-shared.js +89 -0
  406. package/dist/core/ingestion/route-extractors/spring.js +214 -29
  407. package/dist/core/ingestion/scope-extractor-bridge.js +9 -1
  408. package/dist/core/ingestion/scope-extractor.d.ts +22 -7
  409. package/dist/core/ingestion/scope-extractor.js +311 -16
  410. package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +311 -21
  411. package/dist/core/ingestion/scope-resolution/contract/scope-resolver.js +16 -5
  412. package/dist/core/ingestion/scope-resolution/graph-bridge/edges.d.ts +12 -0
  413. package/dist/core/ingestion/scope-resolution/graph-bridge/edges.js +47 -0
  414. package/dist/core/ingestion/scope-resolution/graph-bridge/ids.d.ts +20 -15
  415. package/dist/core/ingestion/scope-resolution/graph-bridge/ids.js +280 -42
  416. package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.d.ts +123 -0
  417. package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +171 -17
  418. package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.d.ts +58 -1
  419. package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +137 -34
  420. package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.d.ts +30 -1
  421. package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +39 -1
  422. package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.d.ts +18 -1
  423. package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.js +113 -18
  424. package/dist/core/ingestion/scope-resolution/passes/compound-receiver.d.ts +107 -5
  425. package/dist/core/ingestion/scope-resolution/passes/compound-receiver.js +590 -33
  426. package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +3 -0
  427. package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +101 -41
  428. package/dist/core/ingestion/scope-resolution/passes/imported-value-refs.d.ts +34 -0
  429. package/dist/core/ingestion/scope-resolution/passes/imported-value-refs.js +62 -0
  430. package/dist/core/ingestion/scope-resolution/passes/property-dispatch.d.ts +5 -1
  431. package/dist/core/ingestion/scope-resolution/passes/property-dispatch.js +8 -1
  432. package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.d.ts +105 -5
  433. package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +931 -92
  434. package/dist/core/ingestion/scope-resolution/passes/return-shape-members.d.ts +58 -0
  435. package/dist/core/ingestion/scope-resolution/passes/return-shape-members.js +458 -0
  436. package/dist/core/ingestion/scope-resolution/passes/unique-name-properties.d.ts +180 -0
  437. package/dist/core/ingestion/scope-resolution/passes/unique-name-properties.js +418 -0
  438. package/dist/core/ingestion/scope-resolution/pipeline/phase.d.ts +29 -0
  439. package/dist/core/ingestion/scope-resolution/pipeline/phase.js +57 -0
  440. package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +55 -1
  441. package/dist/core/ingestion/scope-resolution/pipeline/run.js +241 -19
  442. package/dist/core/ingestion/scope-resolution/resolution-outcome.d.ts +112 -2
  443. package/dist/core/ingestion/scope-resolution/resolution-outcome.js +38 -1
  444. package/dist/core/ingestion/scope-resolution/scope/namespace-targets.d.ts +25 -3
  445. package/dist/core/ingestion/scope-resolution/scope/namespace-targets.js +36 -16
  446. package/dist/core/ingestion/scope-resolution/scope/walkers.d.ts +210 -9
  447. package/dist/core/ingestion/scope-resolution/scope/walkers.js +905 -22
  448. package/dist/core/ingestion/scope-resolution/summary-maps.d.ts +28 -0
  449. package/dist/core/ingestion/scope-resolution/summary-maps.js +50 -0
  450. package/dist/core/ingestion/scope-resolution/undecided-satisfaction.d.ts +55 -0
  451. package/dist/core/ingestion/scope-resolution/undecided-satisfaction.js +37 -0
  452. package/dist/core/ingestion/scope-resolution/unresolved-receivers.d.ts +109 -0
  453. package/dist/core/ingestion/scope-resolution/unresolved-receivers.js +204 -0
  454. package/dist/core/ingestion/scope-resolution/utils/definition-id.d.ts +13 -0
  455. package/dist/core/ingestion/scope-resolution/utils/definition-id.js +19 -0
  456. package/dist/core/ingestion/scope-resolution/utils/generic-instantiation.d.ts +171 -0
  457. package/dist/core/ingestion/scope-resolution/utils/generic-instantiation.js +218 -0
  458. package/dist/core/ingestion/scope-resolution/workspace-index-types.d.ts +34 -0
  459. package/dist/core/ingestion/scope-resolution/workspace-index-types.js +15 -0
  460. package/dist/core/ingestion/scope-resolution/workspace-index.d.ts +7 -20
  461. package/dist/core/ingestion/tree-sitter-queries.d.ts +11 -11
  462. package/dist/core/ingestion/tree-sitter-queries.js +678 -4
  463. package/dist/core/ingestion/type-env.js +11 -7
  464. package/dist/core/ingestion/type-extractors/jvm.js +2 -2
  465. package/dist/core/ingestion/type-extractors/shared.d.ts +17 -0
  466. package/dist/core/ingestion/type-extractors/shared.js +16 -0
  467. package/dist/core/ingestion/type-extractors/types.d.ts +12 -0
  468. package/dist/core/ingestion/type-extractors/typescript.d.ts +20 -0
  469. package/dist/core/ingestion/type-extractors/typescript.js +26 -0
  470. package/dist/core/ingestion/utils/ast-helpers.d.ts +322 -16
  471. package/dist/core/ingestion/utils/ast-helpers.js +727 -150
  472. package/dist/core/ingestion/utils/call-analysis.d.ts +27 -22
  473. package/dist/core/ingestion/utils/call-analysis.js +202 -7
  474. package/dist/core/ingestion/utils/callable-flow-captures.d.ts +59 -0
  475. package/dist/core/ingestion/utils/callable-flow-captures.js +51 -1
  476. package/dist/core/ingestion/utils/callable-labels.d.ts +25 -0
  477. package/dist/core/ingestion/utils/callable-labels.js +31 -0
  478. package/dist/core/ingestion/utils/effective-ram.d.ts +40 -0
  479. package/dist/core/ingestion/utils/effective-ram.js +58 -0
  480. package/dist/core/ingestion/utils/line-base.d.ts +14 -0
  481. package/dist/core/ingestion/utils/line-base.js +14 -0
  482. package/dist/core/ingestion/utils/method-props.d.ts +27 -4
  483. package/dist/core/ingestion/utils/method-props.js +29 -4
  484. package/dist/core/ingestion/utils/receiver-chain-captures.d.ts +31 -0
  485. package/dist/core/ingestion/utils/receiver-chain-captures.js +57 -0
  486. package/dist/core/ingestion/utils/receiver-chain-codec.d.ts +89 -0
  487. package/dist/core/ingestion/utils/receiver-chain-codec.js +182 -0
  488. package/dist/core/ingestion/utils/scope-tree-walk.d.ts +22 -0
  489. package/dist/core/ingestion/utils/scope-tree-walk.js +33 -0
  490. package/dist/core/ingestion/utils/template-arguments.d.ts +96 -0
  491. package/dist/core/ingestion/utils/template-arguments.js +196 -0
  492. package/dist/core/ingestion/utils/type-parameters.d.ts +49 -0
  493. package/dist/core/ingestion/utils/type-parameters.js +206 -0
  494. package/dist/core/ingestion/workers/callable-id.d.ts +80 -0
  495. package/dist/core/ingestion/workers/callable-id.js +125 -0
  496. package/dist/core/ingestion/workers/parse-worker.d.ts +14 -1
  497. package/dist/core/ingestion/workers/parse-worker.js +493 -54
  498. package/dist/core/ingestion/workers/worker-pool.d.ts +20 -27
  499. package/dist/core/ingestion/workers/worker-pool.js +91 -3
  500. package/dist/core/lbug/csv-generator.d.ts +27 -0
  501. package/dist/core/lbug/csv-generator.js +72 -17
  502. package/dist/core/lbug/extension-load-error.js +13 -2
  503. package/dist/core/lbug/extension-loader.d.ts +29 -0
  504. package/dist/core/lbug/extension-loader.js +31 -6
  505. package/dist/core/lbug/graph-emit-sink.d.ts +264 -0
  506. package/dist/core/lbug/graph-emit-sink.js +581 -0
  507. package/dist/core/lbug/lbug-adapter.d.ts +290 -11
  508. package/dist/core/lbug/lbug-adapter.js +652 -69
  509. package/dist/core/lbug/native-check.d.ts +21 -0
  510. package/dist/core/lbug/native-check.js +248 -32
  511. package/dist/core/lbug/pdg-emit-sink.d.ts +13 -4
  512. package/dist/core/lbug/pdg-emit-sink.js +21 -111
  513. package/dist/core/lbug/pool-adapter.d.ts +9 -0
  514. package/dist/core/lbug/pool-adapter.js +164 -14
  515. package/dist/core/lbug/query-batch.d.ts +75 -0
  516. package/dist/core/lbug/query-batch.js +102 -0
  517. package/dist/core/lbug/rel-pair-routing.d.ts +160 -2
  518. package/dist/core/lbug/rel-pair-routing.js +228 -10
  519. package/dist/core/lbug/schema.d.ts +163 -4
  520. package/dist/core/lbug/schema.js +404 -159
  521. package/dist/core/lbug/sync-csv-writer.d.ts +47 -0
  522. package/dist/core/lbug/sync-csv-writer.js +108 -0
  523. package/dist/core/run-analyze.d.ts +147 -0
  524. package/dist/core/run-analyze.js +1215 -179
  525. package/dist/core/search/bm25-index.d.ts +11 -0
  526. package/dist/core/search/bm25-index.js +60 -26
  527. package/dist/core/search/fts-indexes.d.ts +150 -9
  528. package/dist/core/search/fts-indexes.js +241 -23
  529. package/dist/core/wiki/graph-queries.js +145 -112
  530. package/dist/core/wiki/llm-client.d.ts +29 -3
  531. package/dist/core/wiki/llm-client.js +47 -12
  532. package/dist/core/wiki/prompts.d.ts +19 -0
  533. package/dist/core/wiki/prompts.js +20 -1
  534. package/dist/lib/utils.d.ts +113 -0
  535. package/dist/lib/utils.js +185 -0
  536. package/dist/mcp/local/aop-metadata.d.ts +77 -0
  537. package/dist/mcp/local/aop-metadata.js +227 -0
  538. package/dist/mcp/local/bean-metadata.d.ts +2 -1
  539. package/dist/mcp/local/bean-metadata.js +22 -1
  540. package/dist/mcp/local/convex-metadata.d.ts +8 -0
  541. package/dist/mcp/local/convex-metadata.js +45 -0
  542. package/dist/mcp/local/local-backend.d.ts +174 -11
  543. package/dist/mcp/local/local-backend.js +1678 -331
  544. package/dist/mcp/local/path-predicate.d.ts +19 -0
  545. package/dist/mcp/local/path-predicate.js +21 -0
  546. package/dist/mcp/local/pdg-impact.d.ts +132 -10
  547. package/dist/mcp/local/pdg-impact.js +391 -98
  548. package/dist/mcp/repository-policy.d.ts +1 -0
  549. package/dist/mcp/repository-policy.js +5 -0
  550. package/dist/mcp/resources.js +26 -4
  551. package/dist/mcp/server.js +23 -13
  552. package/dist/mcp/tools.d.ts +8 -0
  553. package/dist/mcp/tools.js +76 -23
  554. package/dist/server/analyze-job.d.ts +37 -2
  555. package/dist/server/analyze-job.js +13 -2
  556. package/dist/server/analyze-launch.d.ts +1 -1
  557. package/dist/server/analyze-launch.js +79 -10
  558. package/dist/server/analyze-worker-core.d.ts +1 -1
  559. package/dist/server/analyze-worker-core.js +10 -1
  560. package/dist/server/analyze-worker-ipc.d.ts +1 -1
  561. package/dist/server/analyze-worker-ipc.js +4 -0
  562. package/dist/server/analyze-worker-protocol.d.ts +59 -0
  563. package/dist/server/analyze-worker-protocol.js +1 -0
  564. package/dist/server/analyze-worker.d.ts +1 -17
  565. package/dist/server/api.d.ts +2 -11
  566. package/dist/server/api.js +164 -163
  567. package/dist/server/embed-run-outcome.d.ts +89 -0
  568. package/dist/server/embed-run-outcome.js +88 -0
  569. package/dist/server/git-clone.js +6 -2
  570. package/dist/server/middleware.d.ts +116 -9
  571. package/dist/server/middleware.js +291 -22
  572. package/dist/server/sse-progress.d.ts +41 -0
  573. package/dist/server/sse-progress.js +125 -0
  574. package/dist/storage/branch-index.d.ts +11 -6
  575. package/dist/storage/branch-index.js +15 -7
  576. package/dist/storage/file-hash.js +2 -2
  577. package/dist/storage/fs-atomic.d.ts +25 -0
  578. package/dist/storage/fs-atomic.js +42 -0
  579. package/dist/storage/git.d.ts +131 -0
  580. package/dist/storage/git.js +236 -2
  581. package/dist/storage/index-lock.d.ts +102 -0
  582. package/dist/storage/index-lock.js +660 -0
  583. package/dist/storage/parse-cache.js +588 -3
  584. package/dist/storage/parsedfile-store.js +76 -6
  585. package/dist/storage/repo-manager.d.ts +54 -435
  586. package/dist/storage/repo-manager.js +312 -215
  587. package/dist/storage/repo-meta.d.ts +530 -0
  588. package/dist/storage/repo-meta.js +100 -0
  589. package/dist/types/pipeline.d.ts +37 -0
  590. package/hooks/antigravity/gitnexus-antigravity-hook.cjs +1 -1
  591. package/hooks/claude/gitnexus-hook.cjs +1 -1
  592. package/hooks/claude/resolve-analyze-cmd.cjs +80 -13
  593. package/package.json +11 -2
  594. package/scripts/cross-platform-shard.ts +153 -0
  595. package/scripts/cross-platform-tests.ts +122 -0
  596. package/scripts/run-cross-platform.ts +16 -5
  597. package/skills/gitnexus-cli.md +3 -3
  598. package/skills/gitnexus-debugging.md +37 -7
  599. package/skills/gitnexus-exploring.md +26 -4
  600. package/skills/gitnexus-impact-analysis.md +71 -10
  601. package/skills/gitnexus-plan/README.md +11 -6
  602. package/skills/gitnexus-plan/references/evidence-provenance.md +49 -12
  603. package/skills/gitnexus-plan/scripts/evidence-provenance.mjs +654 -372
  604. package/skills/gitnexus-refactoring.md +48 -5
  605. package/skills/gitnexus-review/SKILL.md +12 -6
  606. package/skills/gitnexus-review/ci-personas/ci-adversarial-lens.md +1 -1
  607. package/skills/gitnexus-review/ci-personas/ci-blast-radius-lens.md +1 -1
  608. package/skills/gitnexus-review/ci-personas/ci-correctness-lens.md +1 -1
  609. package/skills/gitnexus-review/ci-personas/ci-coverage-lens.md +1 -1
  610. package/skills/gitnexus-review/ci-personas/ci-critic-lens.md +1 -1
  611. package/skills/gitnexus-review/ci-personas/ci-security-lens.md +1 -1
  612. package/skills/gitnexus-taint-analysis.md +13 -7
  613. package/skills/gitnexus-work/SKILL.md +4 -1
  614. package/skills/gitnexus-work/references/evidence-provenance.md +49 -12
  615. package/skills/gitnexus-work/scripts/evidence-provenance.mjs +654 -372
  616. package/vendor/leiden/utils.cjs +28 -1
  617. package/web/assets/ProcessFlowModal-Badh2Pbg.js +24 -0
  618. package/web/assets/{__vite-browser-external-bMKyYQkO.js → __vite-browser-external-COxE8F0G.js} +1 -1
  619. package/web/assets/abnfDiagram-QNN2D4NM-Cq2djWWe.js +1 -0
  620. package/web/assets/agent-Dr4l5EOp.js +662 -0
  621. package/web/assets/architecture-TIHT7OUA-V6N4J3SY-fTePvLoe.js +1 -0
  622. package/web/assets/architectureDiagram-OT7VKSJ7-mKEXxkeF.js +36 -0
  623. package/web/assets/{blockDiagram-7IZFK4PR-DBefcjof.js → blockDiagram-54WLDVWM-Dg_hrRWE.js} +4 -4
  624. package/web/assets/{c4Diagram-Y2BXMSZH-EjWnjEJl.js → c4Diagram-X2LASM7V-CnhoT4aV.js} +2 -2
  625. package/web/assets/chunk-224SPVON-B8gxtXpy.js +1 -0
  626. package/web/assets/chunk-2AEHWXPW-CV4r6-1I.js +127 -0
  627. package/web/assets/chunk-2SREHG4O-Dip42xOq.js +1 -0
  628. package/web/assets/chunk-4RFN2BYJ-DHHWuC-n.js +1 -0
  629. package/web/assets/chunk-66DQ2XMT-CM0xjFAN.js +1 -0
  630. package/web/assets/chunk-6BELYETK-ChsYtfHW.js +1 -0
  631. package/web/assets/{chunk-LII3EMHJ-BL6lKJ_P.js → chunk-6L755F7B-CMhLBxi2.js} +1 -1
  632. package/web/assets/{chunk-QA3QBVWF-DVXPOIxe.js → chunk-7CWYLC5S-DRgGkkpF.js} +1 -1
  633. package/web/assets/{chunk-ZXARS5L4-C3v-4Fsw.js → chunk-A7VWPJGB-B4O3oQdQ.js} +1 -1
  634. package/web/assets/chunk-BI6VK774-D0oaWk8V.js +1 -0
  635. package/web/assets/chunk-D6VWDJW2-BxcBdZ9c.js +2 -0
  636. package/web/assets/chunk-DMV4VAQV-Bn6WXDSX.js +4 -0
  637. package/web/assets/chunk-E5QJAATJ-dh-5CtIV.js +2 -0
  638. package/web/assets/chunk-EQFTRU2I-1ix7TzW9.js +2 -0
  639. package/web/assets/chunk-FWYVLQTC-BgDItRzJ.js +1 -0
  640. package/web/assets/chunk-HNC4WDU7-DoU3KnA7.js +1 -0
  641. package/web/assets/chunk-L5GCOVLC-CE2w8Nm_.js +161 -0
  642. package/web/assets/chunk-LAHSG3N2-Bz4hcn0N.js +321 -0
  643. package/web/assets/chunk-LORZLZWG-B57uGw2N.js +88 -0
  644. package/web/assets/chunk-NLANEA3F-XpH_NPA5.js +62 -0
  645. package/web/assets/chunk-NV3KIAZN-5yvcpMiu.js +1 -0
  646. package/web/assets/chunk-OIYT25JQ-CQ6KOZGX.js +1 -0
  647. package/web/assets/chunk-PE7DX7ZZ-CCvRVj43.js +10 -0
  648. package/web/assets/chunk-Q67WD55A-BWCH2SVz.js +156 -0
  649. package/web/assets/chunk-RRFMTAIC-CMN0wcYA.js +1 -0
  650. package/web/assets/{chunk-RLI5ZMPA-CkXZ0y0U.js → chunk-SATU7PGQ-B1zhgOvc.js} +1 -1
  651. package/web/assets/chunk-STOV2HOB-GnExfzIX.js +1 -0
  652. package/web/assets/{chunk-INKRHTLW-Ckl3_KkO.js → chunk-SZD42YQK-ijyKKVr1.js} +21 -21
  653. package/web/assets/{chunk-LCXTWHL2-C162wE5z.js → chunk-TFPGFQPA-Dj6a-0pC.js} +3 -3
  654. package/web/assets/chunk-TGVD4F4B-BMc31Gj2.js +2 -0
  655. package/web/assets/chunk-TZUXEDM2-B7p9AcTw.js +1 -0
  656. package/web/assets/chunk-UAT7B5JY-DW-A_fpI.js +1 -0
  657. package/web/assets/{chunk-6764PJDD-C7xxk063.js → chunk-VE5CLXGZ-C1vB7wpY.js} +1 -1
  658. package/web/assets/{chunk-RG4AUYOV-ZNgyLFq6.js → chunk-VJFVEZTB-CX66F2ep.js} +3 -3
  659. package/web/assets/chunk-VY5UBI4V-yxPQAWxw.js +1 -0
  660. package/web/assets/chunk-WJBAP47W-BckNkuEN.js +1 -0
  661. package/web/assets/chunk-XNMVGMAZ-Cg_LnPtj.js +1 -0
  662. package/web/assets/classDiagram-VPOSVPXH-BjOiXA_C.js +1 -0
  663. package/web/assets/classDiagram-v2-5VFNUXQA-BjOiXA_C.js +1 -0
  664. package/web/assets/{cose-bilkent-UX7MHV2Q-BmnZ7Mvj.js → cose-bilkent-RZA4XIPR-BHpK4Crp.js} +1 -1
  665. package/web/assets/cynefin-VYW2F7L2-2VAHYKR6-DAsF6GZv.js +1 -0
  666. package/web/assets/cynefinDiagram-TR7LZUCG-C3Iar9lZ.js +62 -0
  667. package/web/assets/dagre-K64A6Z3X-CUwi79mA.js +4 -0
  668. package/web/assets/diagram-2TLGJV2N-C2F5Nfym.js +30 -0
  669. package/web/assets/diagram-JCD7PQ7C-DC5-9FRr.js +24 -0
  670. package/web/assets/{diagram-HNR7UZ2L-DVRltWbL.js → diagram-KFBZAVDW-Dfmf_4ti.js} +3 -3
  671. package/web/assets/diagram-L7DVE3PN-GIRyVUtt.js +41 -0
  672. package/web/assets/diagram-YP3FGXHI-CyNFYtkd.js +24 -0
  673. package/web/assets/ebnfDiagram-DRHRQJWO-D8_CI4ZF.js +1 -0
  674. package/web/assets/erDiagram-SZLJLQMB-CohQjznC.js +85 -0
  675. package/web/assets/error-D9MtuG9s.js +1 -0
  676. package/web/assets/eventmodeling-45OFAUF4-AOUJWSLX-BvTc6iQi.js +1 -0
  677. package/web/assets/flowDiagram-BWE6NHOH-B6RnEvD9.js +1 -0
  678. package/web/assets/ganttDiagram-2QTCJSNI-Cks_mEcF.js +292 -0
  679. package/web/assets/gitGraph-TEB2WS4Q-U5VWYIBC-Dy7CCSZ5.js +1 -0
  680. package/web/assets/gitGraphDiagram-VVZAVV5G-CG41cIVc.js +106 -0
  681. package/web/assets/{index-D7mTFcvQ.js → index-2zdvEdzg.js} +51 -51
  682. package/web/assets/index-CJDpyH-n.css +2 -0
  683. package/web/assets/info-DKCQHKI2-DX6KST54-BLJg1ikX.js +1 -0
  684. package/web/assets/infoDiagram-FY4PZKRE-BJ3vPVwW.js +2 -0
  685. package/web/assets/{ishikawaDiagram-BNXS4ZKH-XpjJRU9h.js → ishikawaDiagram-4JDSWWDM-DmqWtjkl.js} +2 -2
  686. package/web/assets/{journeyDiagram-M6C3CM3L-C6wjooas.js → journeyDiagram-QUS3FAKT-XAzVzrQW.js} +3 -3
  687. package/web/assets/{kanban-definition-75IXJCU3-5_UVY79g.js → kanban-definition-D4L7SQKK-YurRnmYn.js} +6 -6
  688. package/web/assets/katex-C5OPUE3Q-Bnbavtmu.js +257 -0
  689. package/web/assets/{mindmap-definition-2TDM6QVE-8xDLzk2e.js → mindmap-definition-66QP5TD6-ChrWWnil.js} +5 -5
  690. package/web/assets/node.browser-U-KyT5AW.js +1 -0
  691. package/web/assets/packet-7NZHBO7P-5WG45QPS-KUxcuvaA.js +1 -0
  692. package/web/assets/pegDiagram-YKIO5C6U-QGeQLEq2.js +1 -0
  693. package/web/assets/pie-RZYD4A2V-2OCZ2VTD-DPs08kJY.js +1 -0
  694. package/web/assets/pieDiagram-YPY3TKG5-BuT3MYzm.js +39 -0
  695. package/web/assets/{quadrantDiagram-VICAPDV7-DR54jOeR.js → quadrantDiagram-VO5QLCXA-B7098wSc.js} +3 -3
  696. package/web/assets/radar-I7S5WNFK-EPLSA35B-w5F0K3a7.js +1 -0
  697. package/web/assets/railroad-3IZDKUUU-PWFQV6Y6-Bu668yqY.js +1 -0
  698. package/web/assets/railroad-abnf-AHOZXSZD-JYYJX3BS-B6ghpETS.js +1 -0
  699. package/web/assets/railroad-ebnf-EBAXGLYW-RBZ4ONAP-D-XmHh3M.js +1 -0
  700. package/web/assets/railroad-peg-LSFZ7HO6-KHNPXGPG-mhkrhzEn.js +1 -0
  701. package/web/assets/railroadDiagram-M77LTMSB-AXu4vxk_.js +1 -0
  702. package/web/assets/{requirementDiagram-JXO7QTGE-PEkg7sKC.js → requirementDiagram-RASO5HTO-B-l8InpK.js} +4 -4
  703. package/web/assets/{sankeyDiagram-URQDO5SZ-DDWEtjcs.js → sankeyDiagram-F32LOJ6L-Kd7zjJgX.js} +3 -3
  704. package/web/assets/{sequenceDiagram-VS2MUI6T-Bv-uwANx.js → sequenceDiagram-URATNSBD-BlcdY9DS.js} +7 -7
  705. package/web/assets/sizeCapture-5GORAGP4-BEqQzsxs.js +1 -0
  706. package/web/assets/src-C5sx_gMp.js +1 -0
  707. package/web/assets/stateDiagram-DODFXNG5-DTdHc-fF.js +1 -0
  708. package/web/assets/stateDiagram-v2-JNMM5JRA-DioNLDDo.js +1 -0
  709. package/web/assets/swimlanes-OSWOYLSK-CA0ofdwY.js +2 -0
  710. package/web/assets/swimlanesDiagram-RHGX2RDE-PkwUdckC.js +8 -0
  711. package/web/assets/{timeline-definition-O6YCAMPW-Qmsuo7qS.js → timeline-definition-WJXWRH4I-DUfp1R3E.js} +3 -3
  712. package/web/assets/treeView-QDETBFTQ-EHYTSQNO-C5lpBgPm.js +1 -0
  713. package/web/assets/treemap-6X3UGDF4-CCWCF7EK-BB0ZyO-B.js +1 -0
  714. package/web/assets/vennDiagram-K3VCMQLI-Bj-FN-XS.js +34 -0
  715. package/web/assets/wardley-OPB4EBWU-6OWERDVT-CEA3Nq0j.js +1 -0
  716. package/web/assets/wardleyDiagram-XK6FUAWV-CVV0dHFr.js +78 -0
  717. package/web/assets/xychartDiagram-5VRUVLCW-CK_rbSWE.js +7 -0
  718. package/web/index.html +16 -15
  719. package/dist/core/ingestion/languages/python/index-stats.d.ts +0 -18
  720. package/dist/core/ingestion/languages/python/index-stats.js +0 -25
  721. package/web/assets/ProcessFlowModal-CwkpVkv-.js +0 -22
  722. package/web/assets/agent-Ds-lkZjX.js +0 -626
  723. package/web/assets/architecture-7EHR7CIX-6QZW5X65-BVWFvYz2.js +0 -1
  724. package/web/assets/architectureDiagram-UL44E2DR-CmG3uPWf.js +0 -36
  725. package/web/assets/chunk-2T2R6R2M-Bb6Sy3_j.js +0 -4
  726. package/web/assets/chunk-2UTLFMKG-CXlhF3Pt.js +0 -1
  727. package/web/assets/chunk-3SSMPTDK-rPsRM1x0.js +0 -321
  728. package/web/assets/chunk-4R4BOZG6-Be_F0JoX.js +0 -159
  729. package/web/assets/chunk-67TQ5CYL-CA7OhIEf.js +0 -124
  730. package/web/assets/chunk-7J6CGLKN-BlKwgXKs.js +0 -10
  731. package/web/assets/chunk-C62D2QBJ-3gdL8EKc.js +0 -1
  732. package/web/assets/chunk-CEXFNPSA-CjwtMDkc.js +0 -1
  733. package/web/assets/chunk-J5EP6P6S-L19oz55R.js +0 -1
  734. package/web/assets/chunk-KGFNY3KK-BZeP-55u.js +0 -62
  735. package/web/assets/chunk-KGYTTC2M-zm6n242I.js +0 -1
  736. package/web/assets/chunk-KNLZD3CH-BGlP6X9R.js +0 -1
  737. package/web/assets/chunk-LRIF4GLE-n59lhprL.js +0 -1
  738. package/web/assets/chunk-RERM46MO-B5dAdWpP.js +0 -1
  739. package/web/assets/chunk-RKZBBQEN-MyIQbGgD.js +0 -1
  740. package/web/assets/chunk-T2UQINTJ-BEyXhZWe.js +0 -1
  741. package/web/assets/chunk-UP6H54XL-BG-n7qDp.js +0 -1
  742. package/web/assets/chunk-UXSXWOXI-CW1_r5cS.js +0 -1
  743. package/web/assets/chunk-UY5QBCOK-ByqTVLvh.js +0 -1
  744. package/web/assets/chunk-VU6ZFW4Y-BLeasdkU.js +0 -2
  745. package/web/assets/classDiagram-KGZ6W3CR-olpO3fMe.js +0 -1
  746. package/web/assets/classDiagram-v2-72OJOZXJ-olpO3fMe.js +0 -1
  747. package/web/assets/dagre-ND4H6XIP-CY4iIF7v.js +0 -4
  748. package/web/assets/diagram-3NCE3AQN-CO6QpzEE.js +0 -43
  749. package/web/assets/diagram-GF46GFSD-B2atbzmU.js +0 -24
  750. package/web/assets/diagram-QXG6HAR7-DR6AHD2h.js +0 -24
  751. package/web/assets/diagram-WEQXMOUZ-DkpoMwTL.js +0 -10
  752. package/web/assets/erDiagram-L5TCEMPS-n8g_90bc.js +0 -85
  753. package/web/assets/eventmodeling-FCH6USID-MREXMVOE-CgFBM7e-.js +0 -1
  754. package/web/assets/flowDiagram-H6V6AXG4-SGMDiCkB.js +0 -162
  755. package/web/assets/ganttDiagram-JCBTUEKG-Cb3UBqRS.js +0 -292
  756. package/web/assets/gitGraph-WXDBUCRP-R675I2BI-DCJv7SII.js +0 -1
  757. package/web/assets/gitGraphDiagram-S2ZK5IYY-Bs9CR7tq.js +0 -106
  758. package/web/assets/index-CX_fADmQ.css +0 -2
  759. package/web/assets/info-J43DQDTF-KCYPFFUO-BfNy-9Nd.js +0 -1
  760. package/web/assets/infoDiagram-3YFTVSEB-T368on4D.js +0 -2
  761. package/web/assets/katex-K3KEBU37-qRQBy-EZ.js +0 -261
  762. package/web/assets/node-Ct_zna8U.js +0 -8
  763. package/web/assets/packet-YPE3B663-LP52Z2RK-D4qkeG9k.js +0 -1
  764. package/web/assets/pie-LRSECV5Y-TCRJHUBD-B_yMKyQa.js +0 -1
  765. package/web/assets/pieDiagram-CU6KROY3-Bv4LpAbr.js +0 -30
  766. package/web/assets/radar-GUYGQ44K-RDLRG3WG-DeD6yN_0.js +0 -1
  767. package/web/assets/sdk-CzHHH8tD.js +0 -37
  768. package/web/assets/src-Cv1eWg0o.js +0 -1
  769. package/web/assets/stateDiagram-7D4R322I-DVNjmkEq.js +0 -1
  770. package/web/assets/stateDiagram-v2-36443NZ5-CyN4Fh7_.js +0 -1
  771. package/web/assets/treeView-BLDUP644-QA4HXRO3-CDuSYnd4.js +0 -1
  772. package/web/assets/treemap-LRROVOQU-LLAWBHMP-imazucyJ.js +0 -1
  773. package/web/assets/vennDiagram-MWXL3ELB-BD1iK1SX.js +0 -34
  774. package/web/assets/wardley-L42UT6IY-5TKZOOLJ-DqrT9tB8.js +0 -1
  775. package/web/assets/wardleyDiagram-CUQ6CDDI-D6TzLVob.js +0 -78
  776. package/web/assets/xychartDiagram-N2JHSOCM-CoZ_Tits.js +0 -7
  777. /package/web/assets/{chunk-7W6UQGC5-pyKGssV3.js → chunk-LIEV3EAG-pyKGssV3.js} +0 -0
@@ -4,8 +4,15 @@
4
4
  * Encapsulated Cypher queries against the GitNexus knowledge graph.
5
5
  * Uses the MCP-style pooled lbug-adapter for connection management.
6
6
  */
7
- import { initLbug, executeQuery, closeLbug, touchRepo, pinRepo } from '../lbug/pool-adapter.js';
8
- import { escapeCypherString } from '../lbug/cypher-escape.js';
7
+ import { initLbug, executeQuery, executeParameterized, closeLbug, touchRepo, pinRepo, } from '../lbug/pool-adapter.js';
8
+ /**
9
+ * Rows kept by each call-edge query. Owned by prompts.ts, where the reason for
10
+ * a limit lives: every one of these lists reaches the LLM through
11
+ * `formatCallEdges`, which slices to the same value. Fetching rows that slice
12
+ * would discard is waste, so the cut happens here too — but as the same number,
13
+ * not a second one, because a second one could only ever drift from it.
14
+ */
15
+ import { CALL_EDGE_LIMIT } from './prompts.js';
9
16
  const REPO_ID = '__wiki__';
10
17
  /**
11
18
  * Touch the wiki DB connection to prevent idle timeout during long LLM calls.
@@ -21,6 +28,74 @@ export function touchWikiDb() {
21
28
  export function pinWikiDb() {
22
29
  return pinRepo(REPO_ID);
23
30
  }
31
+ function toCallEdge(row) {
32
+ return {
33
+ fromFile: row.fromFile,
34
+ fromName: row.fromName,
35
+ toFile: row.toFile,
36
+ toName: row.toName,
37
+ };
38
+ }
39
+ // The defaults below use `??`, not `||`: only an absent property falls back, so
40
+ // a process genuinely labelled '' or a step numbered 0 keeps its own value.
41
+ function toProcessHeader(row) {
42
+ const id = row.id;
43
+ return {
44
+ id,
45
+ label: row.label ?? id,
46
+ type: row.type ?? 'unknown',
47
+ stepCount: row.stepCount ?? 0,
48
+ };
49
+ }
50
+ function toProcessStep(row) {
51
+ return {
52
+ step: row.step ?? 0,
53
+ name: row.name,
54
+ filePath: row.filePath,
55
+ type: row.type,
56
+ };
57
+ }
58
+ /**
59
+ * Attach each header's full step trace, in one query for the whole set.
60
+ *
61
+ * One query per process cost 105ms for 20 processes against this repo's index;
62
+ * grouping them on `p.id IN $ids` costs 13ms. `stepsById` below does the
63
+ * grouping, so the rows need not arrive grouped — only in step order.
64
+ *
65
+ * `ORDER BY step`, and deliberately not `ORDER BY pid, step`: leading the sort
66
+ * with the same property the `IN` list matches on makes the engine stop after
67
+ * that key, and the trace comes back in insertion order (2,7,1,3,4,5,6 for
68
+ * `proc_1_incrementalupdate` on this repo's index). The identical query with
69
+ * `p.id = '…'` sorts fine, as does this one — a global sort by `step` keeps
70
+ * each process's own rows ascending, which is all the grouping needs.
71
+ *
72
+ * `labels(s)`, not `labels(s)[0]`: the engine returns a node's label as a
73
+ * scalar string, and subscripting a string is 1-based over its characters, so
74
+ * `[0]` was always '' and `[1]` would have been 'F'. Verified against this
75
+ * repo's index — `labels(s)` yields 'Function'.
76
+ */
77
+ async function withSteps(headers) {
78
+ if (headers.length === 0)
79
+ return [];
80
+ const stepRows = await executeParameterized(REPO_ID, `
81
+ MATCH (s)-[r:CodeRelation {type: 'STEP_IN_PROCESS'}]->(p:Process)
82
+ WHERE p.id IN $ids
83
+ RETURN p.id AS pid, s.name AS name, s.filePath AS filePath,
84
+ labels(s) AS type, r.step AS step
85
+ ORDER BY step
86
+ `, { ids: headers.map((header) => header.id) });
87
+ const stepsById = new Map();
88
+ for (const row of stepRows) {
89
+ const pid = String(row.pid);
90
+ let steps = stepsById.get(pid);
91
+ if (!steps) {
92
+ steps = [];
93
+ stepsById.set(pid, steps);
94
+ }
95
+ steps.push(toProcessStep(row));
96
+ }
97
+ return headers.map((header) => ({ ...header, steps: stepsById.get(header.id) ?? [] }));
98
+ }
24
99
  /**
25
100
  * Initialize the LadybugDB connection for wiki generation.
26
101
  */
@@ -40,28 +115,28 @@ export async function closeWikiDb() {
40
115
  * longer have a direct File→DEFINES edge.
41
116
  */
42
117
  export async function getFilesWithExports() {
118
+ // `labels(n)`, not `labels(n)[0]` — see withSteps. `prompts.ts` renders this
119
+ // type as `name (type)`, so the subscript printed every symbol as `name ()`.
43
120
  const rows = await executeQuery(REPO_ID, `
44
121
  MATCH (f:File)-[:CodeRelation {type: 'DEFINES'}]->(n)
45
122
  WHERE n.isExported = true
46
- RETURN f.filePath AS filePath, n.name AS name, labels(n)[0] AS type
123
+ RETURN f.filePath AS filePath, n.name AS name, labels(n) AS type
47
124
  UNION
48
125
  MATCH (f:File)-[:CodeRelation {type: 'DEFINES'}]->(c)
49
126
  -[mr:CodeRelation]->(n)
50
127
  WHERE mr.type IN ['HAS_METHOD', 'HAS_PROPERTY'] AND n.isExported = true
51
- RETURN f.filePath AS filePath, n.name AS name, labels(n)[0] AS type
128
+ RETURN f.filePath AS filePath, n.name AS name, labels(n) AS type
52
129
  ORDER BY filePath
53
130
  `);
54
131
  const fileMap = new Map();
55
132
  for (const row of rows) {
56
- const fp = row.filePath || row[0];
57
- const name = row.name || row[1];
58
- const type = row.type || row[2];
59
- let entry = fileMap.get(fp);
133
+ const filePath = row.filePath;
134
+ let entry = fileMap.get(filePath);
60
135
  if (!entry) {
61
- entry = { filePath: fp, symbols: [] };
62
- fileMap.set(fp, entry);
136
+ entry = { filePath, symbols: [] };
137
+ fileMap.set(filePath, entry);
63
138
  }
64
- entry.symbols.push({ name, type });
139
+ entry.symbols.push({ name: row.name, type: row.type });
65
140
  }
66
141
  return Array.from(fileMap.values());
67
142
  }
@@ -74,7 +149,7 @@ export async function getAllFiles() {
74
149
  RETURN f.filePath AS filePath
75
150
  ORDER BY f.filePath
76
151
  `);
77
- return rows.map((r) => r.filePath || r[0]);
152
+ return rows.map((row) => row.filePath);
78
153
  }
79
154
  /**
80
155
  * Get inter-file call edges (calls between different files).
@@ -86,12 +161,7 @@ export async function getInterFileCallEdges() {
86
161
  RETURN DISTINCT a.filePath AS fromFile, a.name AS fromName,
87
162
  b.filePath AS toFile, b.name AS toName
88
163
  `);
89
- return rows.map((r) => ({
90
- fromFile: r.fromFile || r[0],
91
- fromName: r.fromName || r[1],
92
- toFile: r.toFile || r[2],
93
- toName: r.toName || r[3],
94
- }));
164
+ return rows.map(toCallEdge);
95
165
  }
96
166
  /**
97
167
  * Get call edges between files within a specific set (intra-module).
@@ -99,19 +169,32 @@ export async function getInterFileCallEdges() {
99
169
  export async function getIntraModuleCallEdges(filePaths) {
100
170
  if (filePaths.length === 0)
101
171
  return [];
102
- const fileList = filePaths.map((f) => `'${escapeCypherString(f)}'`).join(', ');
103
- const rows = await executeQuery(REPO_ID, `
172
+ // The file list is BOUND, not spliced into the query text. A module can hold
173
+ // every file under a parent, so an `IN [...]` literal would grow the query
174
+ // with the repo — the shape that crashed the engine in #2915 (see
175
+ // `coalesceHunks` in src/storage/git.ts). As a parameter the text is constant
176
+ // at any list length, and measured ~3x faster than the equivalent literal, so
177
+ // both arms of the predicate can stay in Cypher where the engine can use them.
178
+ // Ordered and cut in Cypher, like getInterModuleCallEdges below and for the
179
+ // same two reasons. Determinism: the original had no ORDER BY, so the engine's
180
+ // arbitrary order decided which 30 `formatCallEdges` (prompts.ts) kept, and
181
+ // the cut landed on a different subset per machine (#2787). Volume: a root
182
+ // parent page passes every file under it, i.e. the whole repo — over 2298
183
+ // paths this query returned 18299 rows in 1064ms to use 30 of them, against
184
+ // 30 rows in 97ms with the LIMIT below, same leading rows.
185
+ //
186
+ // The engine orders by UTF-8 bytes where the JS sort this replaces compared
187
+ // UTF-16 code units — identical for ASCII identifiers, divergent only above
188
+ // the BMP, and the sibling already relies on the engine, so the two agree.
189
+ const rows = await executeParameterized(REPO_ID, `
104
190
  MATCH (a)-[:CodeRelation {type: 'CALLS'}]->(b)
105
- WHERE a.filePath IN [${fileList}] AND b.filePath IN [${fileList}]
191
+ WHERE a.filePath IN $paths AND b.filePath IN $paths
106
192
  RETURN DISTINCT a.filePath AS fromFile, a.name AS fromName,
107
193
  b.filePath AS toFile, b.name AS toName
108
- `);
109
- return rows.map((r) => ({
110
- fromFile: r.fromFile || r[0],
111
- fromName: r.fromName || r[1],
112
- toFile: r.toFile || r[2],
113
- toName: r.toName || r[3],
114
- }));
194
+ ORDER BY fromName, toName, fromFile, toFile
195
+ LIMIT ${CALL_EDGE_LIMIT}
196
+ `, { paths: filePaths });
197
+ return rows.map(toCallEdge);
115
198
  }
116
199
  /**
117
200
  * Get call edges crossing module boundaries (external calls from/to module files).
@@ -119,35 +202,34 @@ export async function getIntraModuleCallEdges(filePaths) {
119
202
  export async function getInterModuleCallEdges(filePaths) {
120
203
  if (filePaths.length === 0)
121
204
  return { outgoing: [], incoming: [] };
122
- const fileList = filePaths.map((f) => `'${escapeCypherString(f)}'`).join(', ');
123
- const outRows = await executeQuery(REPO_ID, `
124
- MATCH (a)-[:CodeRelation {type: 'CALLS'}]->(b)
125
- WHERE a.filePath IN [${fileList}] AND NOT b.filePath IN [${fileList}]
126
- RETURN DISTINCT a.filePath AS fromFile, a.name AS fromName,
127
- b.filePath AS toFile, b.name AS toName
128
- LIMIT 30
129
- `);
130
- const inRows = await executeQuery(REPO_ID, `
205
+ // Bound list, as in getIntraModuleCallEdges — which also keeps the `NOT ...
206
+ // IN` arm honest: `NOT null IN [...]` is null, so a callee with no filePath
207
+ // is dropped by the engine, where a JS membership test would admit it.
208
+ //
209
+ // The sort leads with the symbol names, not the file paths. Ordering by
210
+ // `fromFile` first makes the LIMIT a single-file prefix — on this repo's own
211
+ // index the 30 outgoing edges of `core/wiki` all came from 1 of its 7 files,
212
+ // so the module page described one file's external surface as the module's.
213
+ // The four columns are the whole DISTINCT tuple, so any permutation is a
214
+ // total order and equally deterministic (#2787); leading with the names just
215
+ // spreads the window across files (1 → 7 of 7 here).
216
+ const edgeQuery = (membership) => `
131
217
  MATCH (a)-[:CodeRelation {type: 'CALLS'}]->(b)
132
- WHERE NOT a.filePath IN [${fileList}] AND b.filePath IN [${fileList}]
218
+ WHERE ${membership}
133
219
  RETURN DISTINCT a.filePath AS fromFile, a.name AS fromName,
134
220
  b.filePath AS toFile, b.name AS toName
135
- LIMIT 30
136
- `);
137
- return {
138
- outgoing: outRows.map((r) => ({
139
- fromFile: r.fromFile || r[0],
140
- fromName: r.fromName || r[1],
141
- toFile: r.toFile || r[2],
142
- toName: r.toName || r[3],
143
- })),
144
- incoming: inRows.map((r) => ({
145
- fromFile: r.fromFile || r[0],
146
- fromName: r.fromName || r[1],
147
- toFile: r.toFile || r[2],
148
- toName: r.toName || r[3],
149
- })),
150
- };
221
+ ORDER BY fromName, toName, fromFile, toFile
222
+ LIMIT ${CALL_EDGE_LIMIT}
223
+ `;
224
+ const [outRows, inRows] = await Promise.all([
225
+ executeParameterized(REPO_ID, edgeQuery('a.filePath IN $paths AND NOT b.filePath IN $paths'), {
226
+ paths: filePaths,
227
+ }),
228
+ executeParameterized(REPO_ID, edgeQuery('NOT a.filePath IN $paths AND b.filePath IN $paths'), {
229
+ paths: filePaths,
230
+ }),
231
+ ]);
232
+ return { outgoing: outRows.map(toCallEdge), incoming: inRows.map(toCallEdge) };
151
233
  }
152
234
  /**
153
235
  * Get processes (execution flows) that pass through a set of files.
@@ -156,42 +238,17 @@ export async function getInterModuleCallEdges(filePaths) {
156
238
  export async function getProcessesForFiles(filePaths, limit = 5) {
157
239
  if (filePaths.length === 0)
158
240
  return [];
159
- const fileList = filePaths.map((f) => `'${escapeCypherString(f)}'`).join(', ');
160
- // Find processes that have steps in the given files
161
- const procRows = await executeQuery(REPO_ID, `
241
+ // Bound list, as in getIntraModuleCallEdges, so `LIMIT` can stay in Cypher
242
+ // over the whole set instead of being applied per batch and re-merged.
243
+ const procRows = await executeParameterized(REPO_ID, `
162
244
  MATCH (s)-[r:CodeRelation {type: 'STEP_IN_PROCESS'}]->(p:Process)
163
- WHERE s.filePath IN [${fileList}]
245
+ WHERE s.filePath IN $paths
164
246
  RETURN DISTINCT p.id AS id, p.heuristicLabel AS label,
165
247
  p.processType AS type, p.stepCount AS stepCount
166
- ORDER BY stepCount DESC
248
+ ORDER BY stepCount DESC, id
167
249
  LIMIT ${limit}
168
- `);
169
- const processes = [];
170
- for (const row of procRows) {
171
- const procId = row.id || row[0];
172
- const label = row.label || row[1] || procId;
173
- const type = row.type || row[2] || 'unknown';
174
- const stepCount = row.stepCount || row[3] || 0;
175
- // Get the full step trace for this process
176
- const stepRows = await executeQuery(REPO_ID, `
177
- MATCH (s)-[r:CodeRelation {type: 'STEP_IN_PROCESS'}]->(p:Process {id: '${escapeCypherString(procId)}'})
178
- RETURN s.name AS name, s.filePath AS filePath, labels(s)[0] AS type, r.step AS step
179
- ORDER BY r.step
180
- `);
181
- processes.push({
182
- id: procId,
183
- label,
184
- type,
185
- stepCount,
186
- steps: stepRows.map((s) => ({
187
- step: s.step || s[3] || 0,
188
- name: s.name || s[0],
189
- filePath: s.filePath || s[1],
190
- type: s.type || s[2],
191
- })),
192
- });
193
- }
194
- return processes;
250
+ `, { paths: filePaths });
251
+ return withSteps(procRows.map(toProcessHeader));
195
252
  }
196
253
  /**
197
254
  * Get all processes in the graph (for overview page).
@@ -201,34 +258,10 @@ export async function getAllProcesses(limit = 20) {
201
258
  MATCH (p:Process)
202
259
  RETURN p.id AS id, p.heuristicLabel AS label,
203
260
  p.processType AS type, p.stepCount AS stepCount
204
- ORDER BY stepCount DESC
261
+ ORDER BY stepCount DESC, id
205
262
  LIMIT ${limit}
206
263
  `);
207
- const processes = [];
208
- for (const row of procRows) {
209
- const procId = row.id || row[0];
210
- const label = row.label || row[1] || procId;
211
- const type = row.type || row[2] || 'unknown';
212
- const stepCount = row.stepCount || row[3] || 0;
213
- const stepRows = await executeQuery(REPO_ID, `
214
- MATCH (s)-[r:CodeRelation {type: 'STEP_IN_PROCESS'}]->(p:Process {id: '${escapeCypherString(procId)}'})
215
- RETURN s.name AS name, s.filePath AS filePath, labels(s)[0] AS type, r.step AS step
216
- ORDER BY r.step
217
- `);
218
- processes.push({
219
- id: procId,
220
- label,
221
- type,
222
- stepCount,
223
- steps: stepRows.map((s) => ({
224
- step: s.step || s[3] || 0,
225
- name: s.name || s[0],
226
- filePath: s.filePath || s[1],
227
- type: s.type || s[2],
228
- })),
229
- });
230
- }
231
- return processes;
264
+ return withSteps(procRows.map(toProcessHeader));
232
265
  }
233
266
  /**
234
267
  * Get inter-module edges for overview architecture diagram.
@@ -2,11 +2,36 @@
2
2
  * LLM Client for Wiki Generation
3
3
  *
4
4
  * OpenAI-compatible API client using native fetch.
5
- * Supports OpenAI, Azure, LiteLLM, Ollama, and any OpenAI-compatible endpoint.
5
+ * Supports MiniMax and other OpenAI-compatible endpoints.
6
6
  *
7
7
  * Config priority: CLI flags > env vars > defaults
8
8
  */
9
- export type LLMProvider = 'openai' | 'openrouter' | 'azure' | 'custom' | 'cursor' | 'claude' | 'codex' | 'opencode';
9
+ export type LLMProvider = 'openai' | 'openrouter' | 'azure' | 'custom' | 'cursor' | 'claude' | 'codex' | 'opencode' | 'minimax';
10
+ export declare const MINIMAX_OPENAI_BASE_URLS: {
11
+ readonly global_en: "https://api.minimax.io/v1";
12
+ readonly cn_zh: "https://api.minimaxi.com/v1";
13
+ };
14
+ export declare const MINIMAX_MODEL_IDS: readonly ["MiniMax-M3", "MiniMax-M2.7"];
15
+ export type MiniMaxThinkingMode = 'adaptive' | 'disabled' | 'always_on';
16
+ export type LLMUserContent = string | Array<{
17
+ type: 'text';
18
+ text: string;
19
+ } | {
20
+ type: 'image_url';
21
+ image_url: {
22
+ url: string;
23
+ detail?: 'low' | 'default' | 'high';
24
+ max_long_side_pixel?: number;
25
+ };
26
+ } | {
27
+ type: 'video_url';
28
+ video_url: {
29
+ url: string;
30
+ detail?: 'low' | 'default' | 'high';
31
+ fps?: number;
32
+ max_long_side_pixel?: number;
33
+ };
34
+ }>;
10
35
  export interface LLMConfig {
11
36
  apiKey: string;
12
37
  baseUrl: string;
@@ -31,6 +56,7 @@ export interface LLMResponse {
31
56
  promptTokens?: number;
32
57
  completionTokens?: number;
33
58
  }
59
+ export declare function resolveMiniMaxThinkingMode(model: string, reasoningOverride?: boolean): MiniMaxThinkingMode | undefined;
34
60
  /**
35
61
  * Resolve LLM configuration from env vars, saved config, and optional overrides.
36
62
  * Priority: overrides (CLI flags) > env vars > ~/.gitnexus/config.json > error
@@ -86,4 +112,4 @@ export interface CallLLMOptions {
86
112
  * Uses streaming when onChunk callback is provided for real-time progress.
87
113
  * Retries up to 3 times on transient failures (429, 5xx, network errors).
88
114
  */
89
- export declare function callLLM(prompt: string, config: LLMConfig, systemPrompt?: string, options?: CallLLMOptions): Promise<LLMResponse>;
115
+ export declare function callLLM(prompt: LLMUserContent, config: LLMConfig, systemPrompt?: string, options?: CallLLMOptions): Promise<LLMResponse>;
@@ -1,5 +1,18 @@
1
1
  import { logger } from '../logger.js';
2
2
  import { CircuitOpenError, ResilientFetchExhaustedError, resilientFetch } from '../../_shared/index.js';
3
+ export const MINIMAX_OPENAI_BASE_URLS = {
4
+ global_en: 'https://api.minimax.io/v1',
5
+ cn_zh: 'https://api.minimaxi.com/v1',
6
+ };
7
+ export const MINIMAX_MODEL_IDS = ['MiniMax-M3', 'MiniMax-M2.7'];
8
+ export function resolveMiniMaxThinkingMode(model, reasoningOverride) {
9
+ if (model === MINIMAX_MODEL_IDS[1])
10
+ return 'always_on';
11
+ if (model === MINIMAX_MODEL_IDS[0]) {
12
+ return reasoningOverride === false ? 'disabled' : 'adaptive';
13
+ }
14
+ return undefined;
15
+ }
3
16
  /**
4
17
  * Resolve LLM configuration from env vars, saved config, and optional overrides.
5
18
  * Priority: overrides (CLI flags) > env vars > ~/.gitnexus/config.json > error
@@ -9,7 +22,9 @@ import { CircuitOpenError, ResilientFetchExhaustedError, resilientFetch } from '
9
22
  export async function resolveLLMConfig(overrides) {
10
23
  const { loadCLIConfig } = await import('../../storage/repo-manager.js');
11
24
  const savedConfig = await loadCLIConfig();
12
- const savedProvider = overrides?.provider ?? savedConfig.provider;
25
+ const hasLegacyHttpConfig = !savedConfig.provider && !!(savedConfig.model || savedConfig.baseUrl);
26
+ const savedProvider = overrides?.provider ?? savedConfig.provider ?? (hasLegacyHttpConfig ? 'openai' : 'minimax');
27
+ const reuseSavedHttpConfig = savedConfig.provider === savedProvider || (hasLegacyHttpConfig && savedProvider === 'openai');
13
28
  const savedLocalModel = savedProvider === 'cursor'
14
29
  ? savedConfig.cursorModel
15
30
  : savedProvider === 'claude'
@@ -24,25 +39,34 @@ export async function resolveLLMConfig(overrides) {
24
39
  savedProvider === 'codex' ||
25
40
  savedProvider === 'opencode';
26
41
  const apiKey = overrides?.apiKey ||
27
- process.env.GITNEXUS_API_KEY ||
28
- process.env.OPENAI_API_KEY ||
29
- savedConfig.apiKey ||
42
+ (savedProvider === 'minimax' ? process.env.MINIMAX_API_KEY : undefined) ||
43
+ (savedProvider !== 'minimax' ? process.env.GITNEXUS_API_KEY : undefined) ||
44
+ (savedProvider !== 'minimax' ? process.env.OPENAI_API_KEY : undefined) ||
45
+ (reuseSavedHttpConfig ? savedConfig.apiKey : undefined) ||
30
46
  '';
31
47
  return {
32
48
  apiKey,
33
49
  baseUrl: overrides?.baseUrl ||
34
50
  process.env.GITNEXUS_LLM_BASE_URL ||
35
- savedConfig.baseUrl ||
36
- 'https://openrouter.ai/api/v1',
51
+ (reuseSavedHttpConfig ? savedConfig.baseUrl : undefined) ||
52
+ (savedProvider === 'minimax'
53
+ ? MINIMAX_OPENAI_BASE_URLS.global_en
54
+ : 'https://openrouter.ai/api/v1'),
37
55
  model: overrides?.model ||
38
56
  (localProvider ? undefined : process.env.GITNEXUS_MODEL) ||
39
57
  savedLocalModel ||
40
- (localProvider ? '' : savedConfig.model || 'minimax/minimax-m2.5'),
58
+ (localProvider
59
+ ? ''
60
+ : (reuseSavedHttpConfig ? savedConfig.model : undefined) ||
61
+ (savedProvider === 'minimax' ? MINIMAX_MODEL_IDS[0] : '')),
41
62
  maxTokens: overrides?.maxTokens ?? 16_384,
42
63
  temperature: overrides?.temperature ?? 0,
43
- provider: savedProvider ?? 'openai',
44
- apiVersion: overrides?.apiVersion || process.env.GITNEXUS_AZURE_API_VERSION || savedConfig.apiVersion,
45
- isReasoningModel: overrides?.isReasoningModel ?? savedConfig.isReasoningModel,
64
+ provider: savedProvider,
65
+ apiVersion: overrides?.apiVersion ||
66
+ (savedProvider === 'azure' ? process.env.GITNEXUS_AZURE_API_VERSION : undefined) ||
67
+ (reuseSavedHttpConfig ? savedConfig.apiVersion : undefined),
68
+ isReasoningModel: overrides?.isReasoningModel ??
69
+ (reuseSavedHttpConfig ? savedConfig.isReasoningModel : undefined),
46
70
  allowedInsecureHttpHosts: overrides?.allowedInsecureHttpHosts ??
47
71
  parseLLMAllowedInsecureHttpHosts(process.env[LLM_ALLOW_INSECURE_CONNECTION_ENV]),
48
72
  };
@@ -193,8 +217,13 @@ export async function callLLM(prompt, config, systemPrompt, options) {
193
217
  if (azure && !config.apiVersion && config.baseUrl.includes('/deployments/')) {
194
218
  logger.warn('[gitnexus] Warning: Azure legacy deployment URL detected but no api-version set. Add --api-version 2024-10-21 or use the v1 API format.');
195
219
  }
196
- // Detect reasoning model (o1, o3, o4-mini etc.) or explicit override
197
- const reasoning = isReasoningModel(config.model, config.isReasoningModel);
220
+ const miniMaxThinkingMode = config.provider === 'minimax'
221
+ ? resolveMiniMaxThinkingMode(config.model, config.isReasoningModel)
222
+ : undefined;
223
+ // Detect reasoning models or explicit provider-specific thinking configuration.
224
+ const reasoning = miniMaxThinkingMode
225
+ ? miniMaxThinkingMode !== 'disabled'
226
+ : isReasoningModel(config.model, config.isReasoningModel);
198
227
  const url = buildRequestUrl(config.baseUrl, azure ? config.apiVersion : undefined);
199
228
  const useStream = !!options?.onChunk;
200
229
  // Build request body — reasoning models reject temperature and use max_completion_tokens
@@ -202,6 +231,12 @@ export async function callLLM(prompt, config, systemPrompt, options) {
202
231
  model: config.model,
203
232
  messages,
204
233
  };
234
+ if (miniMaxThinkingMode === 'adaptive' || miniMaxThinkingMode === 'disabled') {
235
+ body.thinking = { type: miniMaxThinkingMode };
236
+ }
237
+ if (config.provider === 'minimax') {
238
+ body.reasoning_split = true;
239
+ }
205
240
  // max_tokens is deprecated; use max_completion_tokens for all models
206
241
  body.max_completion_tokens = config.maxTokens;
207
242
  // Only send temperature for non-Azure providers — some Azure models reject non-default values
@@ -30,6 +30,25 @@ export declare function formatFileListForGrouping(files: Array<{
30
30
  * Build a directory tree string from file paths.
31
31
  */
32
32
  export declare function formatDirectoryTree(filePaths: string[]): string;
33
+ /**
34
+ * Call edges kept on a page. Declared here because this is where the
35
+ * requirement is: a limit exists at all only because `formatCallEdges` renders
36
+ * these lists into a prompt, and every such list reaches the LLM through it.
37
+ *
38
+ * The call-edge queries in `graph-queries.ts` import this value for their
39
+ * Cypher `LIMIT`s rather than restate it. That is the same cut moved earlier —
40
+ * fetching rows the slice below would discard is pure waste, and at module
41
+ * scale it is most of the query (#2787) — so fetch and display must agree, and
42
+ * a second number could only ever drift from this one.
43
+ *
44
+ * The import runs that way and not the other because this module has no
45
+ * imports of its own. `graph-queries.ts` may read this; sending it back the
46
+ * other way would give a pure template module a transitive dependency on the
47
+ * LadybugDB pool adapter, and would make the cap vanish under the tests that
48
+ * `vi.mock` `graph-queries.js` — a mock factory omitting the constant leaves
49
+ * `slice(0, undefined)`, which keeps every edge.
50
+ */
51
+ export declare const CALL_EDGE_LIMIT = 30;
33
52
  /**
34
53
  * Format call edges as readable text.
35
54
  */
@@ -146,6 +146,25 @@ export function formatDirectoryTree(filePaths) {
146
146
  return (sorted.slice(0, 50).join('\n') +
147
147
  (sorted.length > 50 ? `\n... and ${sorted.length - 50} more directories` : ''));
148
148
  }
149
+ /**
150
+ * Call edges kept on a page. Declared here because this is where the
151
+ * requirement is: a limit exists at all only because `formatCallEdges` renders
152
+ * these lists into a prompt, and every such list reaches the LLM through it.
153
+ *
154
+ * The call-edge queries in `graph-queries.ts` import this value for their
155
+ * Cypher `LIMIT`s rather than restate it. That is the same cut moved earlier —
156
+ * fetching rows the slice below would discard is pure waste, and at module
157
+ * scale it is most of the query (#2787) — so fetch and display must agree, and
158
+ * a second number could only ever drift from this one.
159
+ *
160
+ * The import runs that way and not the other because this module has no
161
+ * imports of its own. `graph-queries.ts` may read this; sending it back the
162
+ * other way would give a pure template module a transitive dependency on the
163
+ * LadybugDB pool adapter, and would make the cap vanish under the tests that
164
+ * `vi.mock` `graph-queries.js` — a mock factory omitting the constant leaves
165
+ * `slice(0, undefined)`, which keeps every edge.
166
+ */
167
+ export const CALL_EDGE_LIMIT = 30;
149
168
  /**
150
169
  * Format call edges as readable text.
151
170
  */
@@ -153,7 +172,7 @@ export function formatCallEdges(edges) {
153
172
  if (edges.length === 0)
154
173
  return 'None';
155
174
  return edges
156
- .slice(0, 30)
175
+ .slice(0, CALL_EDGE_LIMIT)
157
176
  .map((e) => `${e.fromName} (${shortPath(e.fromFile)}) → ${e.toName} (${shortPath(e.toFile)})`)
158
177
  .join('\n');
159
178
  }