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
@@ -1,4 +1,5 @@
1
1
  import { type EmbeddingRuntimeResolution } from '../core/embeddings/runtime-install.js';
2
+ import { type NativeCheckResult } from '../core/lbug/native-check.js';
2
3
  export declare function displayWidth(value: string): number;
3
4
  export declare function padDisplayEnd(value: string, columns: number): string;
4
5
  /**
@@ -47,4 +48,15 @@ export declare function pageSizeDoctorLines(pageSize: number | undefined, ladybu
47
48
  * value is absolute, so a "×N" note would misdescribe both.
48
49
  */
49
50
  export declare function poolSizeDoctorLine(pool: number, envRaw: string | undefined): string;
51
+ /**
52
+ * The `native` status line. Literal label like the page-size and pool-size lines
53
+ * above (no i18n key).
54
+ *
55
+ * A failed check is not automatically a MISSING binary, and saying so is the
56
+ * same misdiagnosis #2672 fixed one layer down: on a host whose glibc is too
57
+ * old, `lbugjs.node` is present and merely unloadable, so "missing" sent users
58
+ * to reinstall a file that was already there — while the detail written to
59
+ * stderr right below said the opposite. Render what the check actually found.
60
+ */
61
+ export declare function nativeStatusLine(check: NativeCheckResult): string;
50
62
  export declare const doctorCommand: () => Promise<void>;
@@ -130,6 +130,36 @@ export function poolSizeDoctorLine(pool, envRaw) {
130
130
  const envNote = envRaw !== undefined && envRaw.trim().length > 0 ? ' (env override)' : '';
131
131
  return ` ${padDisplayEnd('pool size', 10)}${value}${envNote}`;
132
132
  }
133
+ /**
134
+ * The `native` status line. Literal label like the page-size and pool-size lines
135
+ * above (no i18n key).
136
+ *
137
+ * A failed check is not automatically a MISSING binary, and saying so is the
138
+ * same misdiagnosis #2672 fixed one layer down: on a host whose glibc is too
139
+ * old, `lbugjs.node` is present and merely unloadable, so "missing" sent users
140
+ * to reinstall a file that was already there — while the detail written to
141
+ * stderr right below said the opposite. Render what the check actually found.
142
+ */
143
+ export function nativeStatusLine(check) {
144
+ return ` ${padDisplayEnd('native', 10)}${nativeStatusText(check)}`;
145
+ }
146
+ function nativeStatusText(check) {
147
+ if (check.ok)
148
+ return '✓ lbugjs.node loaded';
149
+ switch (check.kind) {
150
+ case 'package_missing':
151
+ return '✗ @ladybugdb/core not installed';
152
+ case 'load_failed':
153
+ return '✗ lbugjs.node present but failed to load';
154
+ case 'binary_unwritable':
155
+ // The prebuilt exists; only the copy into node_modules was refused. Saying
156
+ // "missing" here would contradict the detail printed underneath (#2672).
157
+ return '✗ lbugjs.node not installed (node_modules not writable)';
158
+ default:
159
+ // 'binary_missing', and any future kind: the conservative claim.
160
+ return '✗ lbugjs.node missing';
161
+ }
162
+ }
133
163
  export const doctorCommand = async () => {
134
164
  const fingerprint = getRuntimeFingerprint();
135
165
  const capabilities = getRuntimeCapabilities();
@@ -151,11 +181,8 @@ export const doctorCommand = async () => {
151
181
  // the page size line above (no i18n key).
152
182
  console.log(poolSizeDoctorLine(getEffectiveBufferPoolSize(), process.env.GITNEXUS_LBUG_BUFFER_POOL_SIZE));
153
183
  const nativeCheck = checkLbugNative();
154
- if (nativeCheck.ok) {
155
- console.log(` ${padDisplayEnd('native', 10)}✓ lbugjs.node loaded`);
156
- }
157
- else {
158
- console.log(` ${padDisplayEnd('native', 10)}✗ lbugjs.node missing`);
184
+ console.log(nativeStatusLine(nativeCheck));
185
+ if (!nativeCheck.ok) {
159
186
  process.stderr.write(`\n${nativeCheck.message?.replace(/^/gm, ' ')}\n\n`);
160
187
  }
161
188
  console.log(` ${label('doctor.labels.onnx', 10)}${fingerprint.onnxruntime ?? 'unknown'}`);
@@ -47,6 +47,12 @@ export function getEditorTargets(home = os.homedir()) {
47
47
  id: 'opencode',
48
48
  label: 'OpenCode',
49
49
  file: path.join(home, '.config', 'opencode', 'opencode.json'),
50
+ // OpenCode merges config.json -> opencode.json -> opencode.jsonc; setup
51
+ // writes an existing readable config to avoid creating a shadow file.
52
+ legacyFiles: [
53
+ path.join(home, '.config', 'opencode', 'opencode.jsonc'),
54
+ path.join(home, '.config', 'opencode', 'config.json'),
55
+ ],
50
56
  // OpenCode nests servers under `mcp`, not `mcpServers`.
51
57
  keyPath: ['mcp', 'gitnexus'],
52
58
  },
@@ -40,6 +40,7 @@ import { LocalBackend, } from '../mcp/local/local-backend.js';
40
40
  import { logger } from '../core/logger.js';
41
41
  import { cliInfo, cliWarn, cliError } from './cli-message.js';
42
42
  import { formatDetectChangesResult } from './detect-changes-format.js';
43
+ import { formatSymbolLine } from './format-symbol.js';
43
44
  export { formatDetectChangesResult } from './detect-changes-format.js';
44
45
  /**
45
46
  * Validate the --host value. Accepts IPv4, IPv6, or "localhost".
@@ -165,7 +166,7 @@ export function formatQueryResult(result) {
165
166
  if (defs.length > 0) {
166
167
  lines.push(`Standalone definitions:`);
167
168
  for (const d of defs.slice(0, 8)) {
168
- lines.push(` ${d.type || 'Symbol'} ${d.name} → ${d.filePath || '?'}`);
169
+ lines.push(formatSymbolLine(d.type, d.name, d.filePath));
169
170
  }
170
171
  if (defs.length > 8)
171
172
  lines.push(` ... and ${defs.length - 8} more`);
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Symbol listing line — the one rendering of `Type name → path` shared by every
3
+ * formatter that lists symbols. Kept in its own tool-neutral module so a new
4
+ * consumer does not have to import it from another tool's formatter.
5
+ */
6
+ /**
7
+ * One indented `Type name → path` listing line for a symbol. Shared by the
8
+ * `detect_changes` CLI formatter and the eval-server `query` formatter so the
9
+ * two renderings cannot drift apart.
10
+ *
11
+ * `||`, not `??`: a node whose label came back as an EMPTY STRING (several node
12
+ * types do — see enrichCandidateLabels) still needs the placeholder, and `??`
13
+ * would print the empty string instead.
14
+ */
15
+ export declare function formatSymbolLine(type: string | undefined, name: string | undefined, filePath: string | undefined): string;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Symbol listing line — the one rendering of `Type name → path` shared by every
3
+ * formatter that lists symbols. Kept in its own tool-neutral module so a new
4
+ * consumer does not have to import it from another tool's formatter.
5
+ */
6
+ /**
7
+ * One indented `Type name → path` listing line for a symbol. Shared by the
8
+ * `detect_changes` CLI formatter and the eval-server `query` formatter so the
9
+ * two renderings cannot drift apart.
10
+ *
11
+ * `||`, not `??`: a node whose label came back as an EMPTY STRING (several node
12
+ * types do — see enrichCandidateLabels) still needs the placeholder, and `??`
13
+ * would print the empty string instead.
14
+ */
15
+ export function formatSymbolLine(type, name, filePath) {
16
+ return ` ${type || 'Symbol'} ${name || '?'} → ${filePath || '?'}`;
17
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Metadata for one repo-specific skill file generated from a detected
3
+ * community.
4
+ *
5
+ * Produced by `skill-gen`'s `generateSkillFiles` and consumed by `ai-context`
6
+ * when it lists the generated skills in AGENTS.md / CLAUDE.md. It lives in this
7
+ * leaf module rather than in either of those so the consumer does not have to
8
+ * import the producer for a type — `ai-context` already supplies the
9
+ * `.agents/` mirror check that `skill-gen` calls, and the two directions
10
+ * together made an import cycle.
11
+ */
12
+ export interface GeneratedSkillInfo {
13
+ name: string;
14
+ label: string;
15
+ symbolCount: number;
16
+ fileCount: number;
17
+ }
@@ -0,0 +1 @@
1
+ export {};
package/dist/cli/group.js CHANGED
@@ -100,7 +100,24 @@ export function registerGroupCommands(program) {
100
100
  console.log(' Repo index / contracts staleness:');
101
101
  for (const [repoPath, row] of Object.entries(st.repos || {})) {
102
102
  if (row.missing) {
103
- console.log(` ${repoPath.padEnd(25)} MISSING (not in registry or unreadable)`);
103
+ // Two different facts with two different remedies: a repo the
104
+ // registry never heard of is fixed by indexing it, while an entry
105
+ // the resolver choked on is fixed by repairing the registry.
106
+ // Printing "no entry in the registry" for the second one states a
107
+ // cause that was never measured, and points at the wrong repair.
108
+ if (row.unresolvable) {
109
+ // The reason can be multi-line — an ambiguous registry names
110
+ // every colliding clone. Fold it onto this row's line rather
111
+ // than truncating it: those paths are what the operator acts on,
112
+ // and a table row that swallows half its own explanation is the
113
+ // failure this label exists to stop.
114
+ const why = (row.unresolvableReason ?? 'the registry entry could not be resolved')
115
+ .replace(/\s+/g, ' ')
116
+ .trim();
117
+ console.log(` ${repoPath.padEnd(25)} UNRESOLVABLE (${why})`);
118
+ continue;
119
+ }
120
+ console.log(` ${repoPath.padEnd(25)} MISSING (no entry in the registry)`);
104
121
  continue;
105
122
  }
106
123
  const idx = row.indexStale
@@ -109,9 +126,38 @@ export function registerGroupCommands(program) {
109
126
  const ctr = row.contractsStale ? ' CONTRACTS_STALE' : '';
110
127
  console.log(` ${repoPath.padEnd(25)} ${idx}${ctr}`);
111
128
  }
129
+ // `undefined` and `[]` are different answers here: a registry written
130
+ // before this was tracked has no opinion, while an empty array is a
131
+ // measurement. Printing nothing for both would let an unmeasured sync
132
+ // read as evidence that every index opened cleanly.
133
+ //
134
+ // `undefined` covers two ways of not knowing — the field is absent, or
135
+ // it held something that was not a list of repo paths and `getStatus`
136
+ // declined to guess. Naming only the first would make a corrupt
137
+ // registry read as a merely old one, which is the same shape of wrong
138
+ // answer this command exists to stop giving.
139
+ const unreadable = st.unreadableRepos;
140
+ if (unreadable === undefined) {
141
+ console.log(`\n Last sync unreadable repos: not recorded` +
142
+ `\n (the registry predates this field, or its value could not be read)` +
143
+ `\n Re-run \`gitnexus group sync\` to record it.`);
144
+ }
145
+ else if (unreadable.length > 0) {
146
+ console.log(`\n Last sync unreadable repos: ${unreadable.join(', ')}`);
147
+ }
112
148
  if ((st.missingRepos || []).length > 0) {
113
149
  console.log(`\n Last sync missing repos: ${st.missingRepos.join(', ')}`);
114
150
  }
151
+ // Only the populated case prints. Absent means a registry that predates
152
+ // the field, and empty is the ordinary clean sync — neither is worth a
153
+ // line, whereas a narrowed registry changes how every later answer
154
+ // should be read.
155
+ const skippedStages = st.suppressedMatchStages ?? [];
156
+ if (skippedStages.length > 0) {
157
+ console.log(`\n Last sync skipped matching stages: ${skippedStages.join(', ')}` +
158
+ `\n Cross-links those stages would have found are absent by request.` +
159
+ `\n Re-run \`gitnexus group sync\` without --exact-only for the complete set.`);
160
+ }
115
161
  }
116
162
  finally {
117
163
  await backend.dispose().catch(() => { });
@@ -120,34 +166,121 @@ export function registerGroupCommands(program) {
120
166
  group
121
167
  .command('sync <name>')
122
168
  .description('Sync Contract Registry — extract contracts and build cross-links')
123
- .option('--skip-embeddings', 'Exact + BM25 only (no embedding fallback)')
124
- .option('--exact-only', 'Exact match only')
125
- .option('--allow-stale', 'Skip stale index warnings')
126
- .option('--verbose', 'Show each cross-link detail')
169
+ .option('--exact-only', 'Skip wildcard service matching; cross-link on exact contract-id match only (manifest links still apply)')
170
+ .option('--verbose', 'Show additional sync diagnostics')
127
171
  .option('--json', 'JSON output')
128
172
  .action(async (name, opts) => {
129
173
  const { getGroupDir, getDefaultGitnexusDir } = await import('../core/group/storage.js');
130
174
  const { loadGroupConfig } = await import('../core/group/config-parser.js');
131
175
  const { syncGroup } = await import('../core/group/sync.js');
176
+ const { GroupSyncLockError } = await import('../core/group/group-lock.js');
132
177
  const groupDir = getGroupDir(getDefaultGitnexusDir(), name);
133
178
  const config = await loadGroupConfig(groupDir);
134
179
  console.log(`Syncing group "${name}" (${Object.keys(config.repos).length} repos)...\n`);
135
- const result = await syncGroup(config, {
136
- groupDir,
137
- allowStale: Boolean(opts.allowStale),
138
- verbose: Boolean(opts.verbose),
139
- skipEmbeddings: Boolean(opts.skipEmbeddings),
140
- exactOnly: Boolean(opts.exactOnly),
141
- });
180
+ let result;
181
+ try {
182
+ result = await syncGroup(config, {
183
+ groupDir,
184
+ verbose: Boolean(opts.verbose),
185
+ exactOnly: Boolean(opts.exactOnly),
186
+ });
187
+ }
188
+ catch (err) {
189
+ // A sync that could not take the group's lock did NOT run and wrote
190
+ // nothing (R9 fails closed). That is an operator-actionable outcome, not
191
+ // a crash, so report it as a failed command rather than letting it
192
+ // surface as an unhandled rejection with a stack trace — commander's
193
+ // async actions have no error handler, so an uncaught throw here would
194
+ // print exactly that.
195
+ if (!(err instanceof GroupSyncLockError))
196
+ throw err;
197
+ logger.error(`⚠️ Did not sync group "${name}": ${err.message}`);
198
+ process.exitCode = 1;
199
+ return;
200
+ }
142
201
  if (opts.json) {
143
202
  console.log(JSON.stringify(result, null, 2));
144
203
  }
145
204
  else {
146
- console.log(`\nMatching cascade:`);
147
- const exactLinks = result.crossLinks.filter((l) => l.matchType === 'exact');
148
- console.log(` exact: ${exactLinks.length} cross-links (confidence 1.0)`);
149
- console.log(` unmatched: ${result.unmatched.length} contracts`);
150
- console.log(`\nWrote contracts.json (${result.contracts.length} contracts, ${result.crossLinks.length} cross-links)`);
205
+ // Repos we could not read are the most likely explanation for a small
206
+ // or empty contract count, so they are reported before the counts —
207
+ // otherwise a run that read nothing looks exactly like a clean run.
208
+ if (result.unreadableRepos.length > 0) {
209
+ // No "re-run with GITNEXUS_LOG_LEVEL=warn" hint: the default level is
210
+ // `info`, and pino emits `warn` (40) at `info` (30), so the reason was
211
+ // already printed by this same run — raising the level to `warn` would
212
+ // only suppress the surrounding `info` output.
213
+ console.log(`\n ⚠️ Could not extract contracts from: ${result.unreadableRepos.join(', ')}` +
214
+ `\n None of their contracts are included in this sync (the warning above says why),` +
215
+ `\n or check \`gitnexus doctor\` in the affected repo.`);
216
+ }
217
+ if (result.missingRepos.length > 0) {
218
+ console.log(`\n ⚠️ Not found in the registry: ${result.missingRepos.join(', ')}` +
219
+ `\n Index them with \`gitnexus analyze\`, or remove them from group.yaml.`);
220
+ }
221
+ // Every stage that produced a link, not just `exact`. This used to print
222
+ // `Matching cascade:` and then count `exact` alone, while the `Wrote
223
+ // contracts.json (…)` line below reports `result.crossLinks.length` —
224
+ // which also includes `manifest` and `wildcard` links. For any group with
225
+ // those, the two numbers disagreed with nothing on screen explaining why.
226
+ // Summing the stages here makes them reconcile by construction.
227
+ console.log(`\nMatching:`);
228
+ // Exhaustive by construction, same idiom as OUTCOME_LINE below: adding a
229
+ // MatchType fails the build here instead of silently going uncounted and
230
+ // reopening the very mismatch this replaced. Every stage prints even at
231
+ // zero — a stage that is absent reads as "did not apply", not "found none".
232
+ const STAGE_COUNTS = {
233
+ exact: 0,
234
+ manifest: 0,
235
+ wildcard: 0,
236
+ };
237
+ for (const link of result.crossLinks)
238
+ STAGE_COUNTS[link.matchType] += 1;
239
+ // A stage the sync was told to skip is reported as skipped, not as a
240
+ // zero count. The two are different facts — "ran, matched nothing" and
241
+ // "never ran" — and printing both as `0` is the same conflation this
242
+ // block replaced. Driven by what the sync did (`suppressedMatchStages`)
243
+ // rather than by what the caller asked for, so it stays correct on the
244
+ // outcomes where the run ended without writing a registry.
245
+ for (const stage of Object.keys(STAGE_COUNTS)) {
246
+ const count = STAGE_COUNTS[stage];
247
+ const label = `${stage}:`.padEnd(10);
248
+ if (result.suppressedMatchStages.includes(stage)) {
249
+ console.log(` ${label} skipped (--exact-only)`);
250
+ continue;
251
+ }
252
+ const confidence = stage === 'exact' ? ' (confidence 1.0)' : '';
253
+ console.log(` ${label} ${count} cross-links${confidence}`);
254
+ }
255
+ console.log(` ${'unmatched:'.padEnd(10)} ${result.unmatched.length} contracts`);
256
+ // Driven by what actually happened to the file. This line used to be
257
+ // unconditional, so a run that deliberately preserved the previous
258
+ // registry still announced `Wrote contracts.json (0 contracts, 0
259
+ // cross-links)` — a confident false statement about persisted state, on
260
+ // the exact path this command exists to make legible.
261
+ // Exhaustive by construction: a `Record` keyed on the union means a
262
+ // new outcome fails the build here instead of printing nothing, which
263
+ // is what previously pushed a distinct state into `preserved` and made
264
+ // this summary false on one of the two branches it then covered.
265
+ const OUTCOME_LINE = {
266
+ written: `\nWrote contracts.json (${result.contracts.length} contracts, ` +
267
+ `${result.crossLinks.length} cross-links)`,
268
+ preserved: `\nKept the previous contracts.json — no repo in this group could be read.` +
269
+ `\n Its contracts and cross-links are unchanged; only the unreadable/missing` +
270
+ `\n repo lists were refreshed to describe THIS run. Fix the repos above and re-run.`,
271
+ superseded: `\nDid NOT touch contracts.json — no repo in this group could be read, and another` +
272
+ `\n sync replaced the file while this one waited for the group lock. That sync's` +
273
+ `\n result stands and this run's repo lists were NOT recorded: they describe a` +
274
+ `\n group state older than what is on disk. Fix the repos above and re-run.`,
275
+ 'no-prior-registry': `\nDid NOT write contracts.json — no repo in this group could be read,` +
276
+ `\n and there is no previous contracts.json to fall back on. Fix the repos` +
277
+ `\n above and re-run.`,
278
+ // Nothing to say: the caller asked for no write.
279
+ 'not-attempted': null,
280
+ };
281
+ const line = OUTCOME_LINE[result.registryOutcome];
282
+ if (line)
283
+ console.log(line);
151
284
  }
152
285
  });
153
286
  group
@@ -213,9 +346,49 @@ export function registerGroupCommands(program) {
213
346
  else {
214
347
  const summary = raw?.summary;
215
348
  const risk = raw?.risk;
216
- console.log(`Group impact for "${name}" (${String(opts.repo)}): risk=${risk ?? '?'}`);
349
+ // A truncated fan-out under-reports risk (mergeRisk only grows with
350
+ // traversed crossings), and the default human output used to print a
351
+ // bare `risk=` indistinguishable from a complete run — the JSON
352
+ // already carried `truncated`, but nobody reading the terminal saw it.
353
+ const riskFloor = raw?.riskEpistemic === 'lower-bound' ? '+' : '';
354
+ const boundaryOnly = raw?.cross?.filter((entry) => entry.fanout_status === 'not_attempted').length ?? 0;
355
+ console.log(`Group impact for "${name}" (${String(opts.repo)}): risk=${risk ?? '?'}${riskFloor}`);
217
356
  if (summary) {
218
- console.log(` direct=${summary.direct ?? 0} processes=${summary.processes_affected ?? 0} cross=${summary.cross_repo_hits ?? 0}`);
357
+ const boundaryNote = boundaryOnly > 0 ? ` (${boundaryOnly} boundary-only)` : '';
358
+ console.log(` direct=${summary.direct ?? 0} processes=${summary.processes_affected ?? 0} cross=${summary.cross_repo_hits ?? 0}${boundaryNote}`);
359
+ }
360
+ if (riskFloor) {
361
+ // `truncated` has two independent causes that point at different
362
+ // subsystems, so the note must name the one that actually fired:
363
+ // dropped crossings, or a local walk that never finished (most
364
+ // often the impact chunk cap, which any symbol with more than a
365
+ // thousand locally-impacted nodes hits on every run). `dropped` is
366
+ // deduped to distinct repos before it reaches here, so it counts
367
+ // repos — reporting it as crossings understates a fan-out cap the
368
+ // same way #2787's totals did.
369
+ const dropped = raw?.truncatedRepos ?? [];
370
+ const reason = raw?.truncationReason;
371
+ // Keyed on the REASON, not on which incidental fact happens to be
372
+ // non-empty. `truncatedRepos` is populated for a structural gap too
373
+ // — the bridge's incomplete repos are unioned into it even when ZERO
374
+ // crossings were attempted — so branching on its length first
375
+ // reported "fan-out stopped early" for a run where nothing stopped
376
+ // early, and omitted the only remedy that works. Same false-cause
377
+ // shape the contract listing was just re-gated for, one command over.
378
+ const floorReason = () => {
379
+ if (reason === 'suppressed-stage') {
380
+ return 'the last sync skipped a matching stage (--exact-only); re-run `gitnexus group sync` without it for the complete graph';
381
+ }
382
+ if (reason === 'incomplete-sync') {
383
+ return dropped.length > 0
384
+ ? `the last sync could not account for ${dropped.join(', ')}; their contracts are absent from every query against this bridge — re-run \`gitnexus group sync\``
385
+ : 'the last sync could not say which repos it read — re-run `gitnexus group sync`';
386
+ }
387
+ return dropped.length > 0
388
+ ? `fan-out stopped early; crossings to ${dropped.length} repo(s) not traversed: ${dropped.join(', ')}`
389
+ : 'the local impact walk did not complete (every bridge crossing was traversed)';
390
+ };
391
+ console.log(` risk is a LOWER BOUND — ${floorReason()}`);
219
392
  }
220
393
  }
221
394
  }
@@ -285,9 +458,15 @@ export function registerGroupCommands(program) {
285
458
  process.exitCode = 1;
286
459
  return;
287
460
  }
288
- const { contracts, crossLinks } = raw;
461
+ const { contracts, crossLinks, truncated, unreadableRepos, missingRepos, suppressedMatchStages, truncationReason, } = raw;
289
462
  if (opts.json) {
290
- console.log(JSON.stringify({ contracts, crossLinks }, null, 2));
463
+ // The whole payload, not a re-serialized subset. Destructuring the two
464
+ // fields this command happens to print and rebuilding an object from
465
+ // them dropped everything else the service returned — which is how the
466
+ // completeness fields were invisible here while the MCP tool carried
467
+ // them. Printing `raw` means a field added to the service reaches
468
+ // `--json` without a matching edit in this file.
469
+ console.log(JSON.stringify(raw, null, 2));
291
470
  }
292
471
  else {
293
472
  console.log(`Contracts (${contracts.length}):`);
@@ -298,6 +477,35 @@ export function registerGroupCommands(program) {
298
477
  for (const l of crossLinks) {
299
478
  console.log(` ${l.from.repo} -> ${l.to.repo} [${l.matchType}, conf=${l.confidence}] ${l.contractId}`);
300
479
  }
480
+ // Separate from `truncated` below, and deliberately so: that one means
481
+ // the sync could not read something and the remedy is to fix the repo.
482
+ // This one means the sync was ASKED to skip a stage, and the remedy is
483
+ // to re-run without the flag. A listing narrowed on purpose is still
484
+ // narrowed, and without this the human view showed nothing at all.
485
+ if (suppressedMatchStages && suppressedMatchStages.length > 0) {
486
+ console.log(`\n⚠️ This listing is a lower bound: the last sync skipped ${suppressedMatchStages.join(', ')} matching` +
487
+ `\n (--exact-only), so cross-links that stage would have found are absent.` +
488
+ `\n Re-run \`gitnexus group sync\` without --exact-only for the complete set.`);
489
+ }
490
+ // Gated on the REASON, not just the flag. A suppressed stage sets
491
+ // `truncated` with both repo lists empty, which sent this block down
492
+ // its else-branch and printed "the last sync did not record which
493
+ // repos it could read" — a false statement, with the wrong remedy,
494
+ // about a sync that recorded them fine. The suppressed-stage warning
495
+ // above already said the true thing. When a repo gap co-occurs the
496
+ // reason is 'incomplete-sync' (the repo side takes precedence in
497
+ // `crossRepoCompleteness`), so this block still runs for it.
498
+ if (truncated && truncationReason !== 'suppressed-stage') {
499
+ // Counts above are a floor, not a census. Name the repos when the
500
+ // registry recorded them, and say so plainly when it did not — a
501
+ // listing that cannot say what it is missing is still incomplete.
502
+ const absent = [...(unreadableRepos ?? []), ...(missingRepos ?? [])];
503
+ console.log(absent.length > 0
504
+ ? `\n⚠️ This listing is incomplete: the last sync could not account for ${absent.join(', ')}.` +
505
+ `\n Contracts from those repos are absent, so the counts above are a lower bound.`
506
+ : `\n⚠️ This listing is incomplete: the last sync did not record which repos it could` +
507
+ `\n read, so the counts above are a lower bound. Re-run group sync.`);
508
+ }
301
509
  }
302
510
  }
303
511
  finally {
@@ -53,6 +53,7 @@ const OPTION_DESCRIPTION_KEYS = {
53
53
  'analyze|--skills': 'help.option.analyze.skills',
54
54
  'analyze|--skip-agents-md': 'help.option.analyze.skipAgentsMd',
55
55
  'analyze|--no-stats': 'help.option.analyze.noStats',
56
+ 'analyze|--self-commit': 'help.option.analyze.selfCommit',
56
57
  'analyze|--skip-skills': 'help.option.analyze.skipSkills',
57
58
  'analyze|--index-only': 'help.option.analyze.indexOnly',
58
59
  'analyze|--skip-git': 'help.option.skipGit',
@@ -150,9 +151,7 @@ const OPTION_DESCRIPTION_KEYS = {
150
151
  'embeddings install|--cuda': 'help.option.embeddings.install.cuda',
151
152
  'embeddings install|--force': 'help.option.embeddings.install.force',
152
153
  'group create|--force': 'help.option.group.create.force',
153
- 'group sync|--skip-embeddings': 'help.option.group.sync.skipEmbeddings',
154
154
  'group sync|--exact-only': 'help.option.group.sync.exactOnly',
155
- 'group sync|--allow-stale': 'help.option.group.sync.allowStale',
156
155
  'group sync|--verbose': 'help.option.group.sync.verbose',
157
156
  'group sync|--json': 'help.option.json',
158
157
  'group impact|--target <symbol>': 'help.option.group.impact.target',
@@ -54,10 +54,13 @@ export declare const en: {
54
54
  readonly 'tool.usage.query': "Usage: gitnexus query [search_query] or gitnexus query --query <text>";
55
55
  readonly 'tool.usage.context': "Usage: gitnexus context <symbol_name> [--uid <uid>] [--file <path>]";
56
56
  readonly 'tool.usage.impact': "Usage: gitnexus impact <symbol_name> [--uid <uid>] [--file <path>] [--kind <kind>] [--direction upstream|downstream]";
57
- readonly 'tool.usage.trace': "Usage: gitnexus trace <from> <to> [--from-uid <uid>] [--to-uid <uid>] [--depth <n>]";
57
+ readonly 'tool.usage.trace': "Usage: gitnexus trace <from> <to> [-f|--file <path>] [--from-file <path>] [--to-file <path>] [--from-uid <uid>] [--to-uid <uid>] [--depth <n>]";
58
58
  readonly 'tool.usage.cypher': "Usage: gitnexus cypher <cypher_query>";
59
59
  readonly 'tool.warn.unknownKind': "--kind '{{kind}}' is not a known symbol kind (e.g. Function, Class, Method); it will not narrow the result.";
60
60
  readonly 'tool.detectChanges.noChanges': "No changes detected.";
61
+ readonly 'tool.detectChanges.partial': "PARTIAL RESULT: a graph query failed, so changed symbols may be missing. Do not read this as a clean pre-commit check.";
62
+ readonly 'tool.detectChanges.truncated': "LISTING CAPPED: the changed-symbol list was capped, so it does not name every changed symbol. The counts and risk level still cover all of them.";
63
+ readonly 'tool.detectChanges.truncatedDegraded': "LISTING CAPPED: the changed-symbol list was capped. The run also degraded, so the counts are a lower bound, not a total.";
61
64
  readonly 'tool.detectChanges.changesSummary': "Changes: {{files}} files, {{symbols}} symbols";
62
65
  readonly 'tool.detectChanges.affectedProcesses': "Affected processes: {{count}}";
63
66
  readonly 'tool.detectChanges.riskLevel': "Risk level: {{risk}}";
@@ -153,6 +156,7 @@ export declare const en: {
153
156
  readonly 'help.option.analyze.skills': "Generate repo-specific skill files from detected communities (no-op when --index-only is also set).";
154
157
  readonly 'help.option.analyze.skipAgentsMd': "Skip updating the gitnexus section in AGENTS.md and CLAUDE.md";
155
158
  readonly 'help.option.analyze.noStats': "Omit volatile file/symbol counts from AGENTS.md and CLAUDE.md";
159
+ readonly 'help.option.analyze.selfCommit': "Auto-commit AGENTS.md/CLAUDE.md changes after analyze (opt-in, off by default). Scoped to only those two files (never `git add -A`); no-ops if neither exists, neither changed, or the repo has no git identity configured.";
156
160
  readonly 'help.option.analyze.skipSkills': "Skip installing standard GitNexus skill files directly under .claude/skills/ and .agents/skills/. Does not suppress community skills from --skills (those use .claude/skills/gitnexus-area-*). Use --index-only to skip all AI-context file injection.";
157
161
  readonly 'help.option.analyze.indexOnly': "Pure index mode: skip all file injection (AGENTS.md, CLAUDE.md, skills)";
158
162
  readonly 'help.option.skipGit': "Treat the provided path/cwd as the index root and skip parent git-root discovery";
@@ -180,13 +184,13 @@ export declare const en: {
180
184
  readonly 'help.option.clean.branch': "Delete only the named branch index (not the workspace index)";
181
185
  readonly 'help.option.clean.lbugSidecars': "Clean parked LadybugDB recovery sidecars (missing-shadow WAL quarantines and dirty-recovery parks)";
182
186
  readonly 'help.option.wiki.force': "Force full regeneration even if up to date";
183
- readonly 'help.option.wiki.provider': "LLM provider: openai, openrouter, azure, custom, cursor, claude, codex, or opencode (default: openai)";
184
- readonly 'help.option.wiki.model': "LLM model or Azure deployment name (default: minimax/minimax-m2.5)";
187
+ readonly 'help.option.wiki.provider': "LLM provider: minimax, openai, openrouter, azure, custom, cursor, claude, codex, or opencode (default: minimax)";
188
+ readonly 'help.option.wiki.model': "LLM model or deployment name (default: MiniMax-M3)";
185
189
  readonly 'help.option.wiki.baseUrl': "LLM API base URL. Azure v1: https://{resource}.openai.azure.com/openai/v1";
186
190
  readonly 'help.option.wiki.apiKey': "LLM API key or Azure api-key (saved to ~/.gitnexus/config.json)";
187
191
  readonly 'help.option.wiki.apiVersion': "Azure api-version query param, e.g. 2024-10-21 (legacy Azure API only)";
188
- readonly 'help.option.wiki.reasoningModel': "Mark deployment as reasoning model (o1/o3/o4-mini) — strips temperature, uses max_completion_tokens";
189
- readonly 'help.option.wiki.noReasoningModel': "Disable reasoning model mode (overrides saved config)";
192
+ readonly 'help.option.wiki.reasoningModel': "Enable reasoning mode; MiniMax-M3 uses adaptive thinking";
193
+ readonly 'help.option.wiki.noReasoningModel': "Disable reasoning mode; MiniMax-M3 disables thinking";
190
194
  readonly 'help.option.wiki.concurrency': "Parallel LLM calls (default: 3)";
191
195
  readonly 'help.option.wiki.timeout': "LLM request timeout in seconds (default: disabled)";
192
196
  readonly 'help.option.wiki.retries': "Max LLM retry attempts per request (default: 3)";
@@ -229,10 +233,8 @@ export declare const en: {
229
233
  readonly 'help.option.embeddings.install.cuda': "Also download the CUDA GPU binaries (runs onnxruntime-node's NuGet postinstall; set GLOBAL_AGENT_HTTPS_PROXY behind a proxy)";
230
234
  readonly 'help.option.embeddings.install.force': "Install into the runtime prefix even when the stack already resolves";
231
235
  readonly 'help.option.group.create.force': "Overwrite existing group";
232
- readonly 'help.option.group.sync.skipEmbeddings': "Exact + BM25 only (no embedding fallback)";
233
- readonly 'help.option.group.sync.exactOnly': "Exact match only";
234
- readonly 'help.option.group.sync.allowStale': "Skip stale index warnings";
235
- readonly 'help.option.group.sync.verbose': "Show each cross-link detail";
236
+ readonly 'help.option.group.sync.exactOnly': "Skip wildcard service matching; cross-link on exact contract-id match only (manifest links still apply)";
237
+ readonly 'help.option.group.sync.verbose': "Show additional sync diagnostics";
236
238
  readonly 'help.option.status.json': "Emit machine-readable index and analyzer provenance";
237
239
  readonly 'help.option.json': "JSON output";
238
240
  readonly 'help.option.group.impact.target': "Symbol or file name to analyze";
@@ -54,10 +54,15 @@ export const en = {
54
54
  'tool.usage.query': 'Usage: gitnexus query [search_query] or gitnexus query --query <text>',
55
55
  'tool.usage.context': 'Usage: gitnexus context <symbol_name> [--uid <uid>] [--file <path>]',
56
56
  'tool.usage.impact': 'Usage: gitnexus impact <symbol_name> [--uid <uid>] [--file <path>] [--kind <kind>] [--direction upstream|downstream]',
57
- 'tool.usage.trace': 'Usage: gitnexus trace <from> <to> [--from-uid <uid>] [--to-uid <uid>] [--depth <n>]',
57
+ 'tool.usage.trace': 'Usage: gitnexus trace <from> <to> [-f|--file <path>] [--from-file <path>] [--to-file <path>] [--from-uid <uid>] [--to-uid <uid>] [--depth <n>]',
58
58
  'tool.usage.cypher': 'Usage: gitnexus cypher <cypher_query>',
59
59
  'tool.warn.unknownKind': "--kind '{{kind}}' is not a known symbol kind (e.g. Function, Class, Method); it will not narrow the result.",
60
60
  'tool.detectChanges.noChanges': 'No changes detected.',
61
+ 'tool.detectChanges.partial': 'PARTIAL RESULT: a graph query failed, so changed symbols may be missing. Do not read this as a clean pre-commit check.',
62
+ 'tool.detectChanges.truncated': 'LISTING CAPPED: the changed-symbol list was capped, so it does not name every changed symbol. The counts and risk level still cover all of them.',
63
+ // The reassurance above is only true on its own. When the run also degraded,
64
+ // `changed_count` was summed from the batches that SUCCEEDED, so it is a floor.
65
+ 'tool.detectChanges.truncatedDegraded': 'LISTING CAPPED: the changed-symbol list was capped. The run also degraded, so the counts are a lower bound, not a total.',
61
66
  'tool.detectChanges.changesSummary': 'Changes: {{files}} files, {{symbols}} symbols',
62
67
  'tool.detectChanges.affectedProcesses': 'Affected processes: {{count}}',
63
68
  'tool.detectChanges.riskLevel': 'Risk level: {{risk}}',
@@ -153,6 +158,7 @@ export const en = {
153
158
  'help.option.analyze.skills': 'Generate repo-specific skill files from detected communities (no-op when --index-only is also set).',
154
159
  'help.option.analyze.skipAgentsMd': 'Skip updating the gitnexus section in AGENTS.md and CLAUDE.md',
155
160
  'help.option.analyze.noStats': 'Omit volatile file/symbol counts from AGENTS.md and CLAUDE.md',
161
+ 'help.option.analyze.selfCommit': 'Auto-commit AGENTS.md/CLAUDE.md changes after analyze (opt-in, off by default). Scoped to only those two files (never `git add -A`); no-ops if neither exists, neither changed, or the repo has no git identity configured.',
156
162
  'help.option.analyze.skipSkills': 'Skip installing standard GitNexus skill files directly under .claude/skills/ and .agents/skills/. Does not suppress community skills from --skills (those use .claude/skills/gitnexus-area-*). Use --index-only to skip all AI-context file injection.',
157
163
  'help.option.analyze.indexOnly': 'Pure index mode: skip all file injection (AGENTS.md, CLAUDE.md, skills)',
158
164
  'help.option.skipGit': 'Treat the provided path/cwd as the index root and skip parent git-root discovery',
@@ -180,13 +186,13 @@ export const en = {
180
186
  'help.option.clean.branch': 'Delete only the named branch index (not the workspace index)',
181
187
  'help.option.clean.lbugSidecars': 'Clean parked LadybugDB recovery sidecars (missing-shadow WAL quarantines and dirty-recovery parks)',
182
188
  'help.option.wiki.force': 'Force full regeneration even if up to date',
183
- 'help.option.wiki.provider': 'LLM provider: openai, openrouter, azure, custom, cursor, claude, codex, or opencode (default: openai)',
184
- 'help.option.wiki.model': 'LLM model or Azure deployment name (default: minimax/minimax-m2.5)',
189
+ 'help.option.wiki.provider': 'LLM provider: minimax, openai, openrouter, azure, custom, cursor, claude, codex, or opencode (default: minimax)',
190
+ 'help.option.wiki.model': 'LLM model or deployment name (default: MiniMax-M3)',
185
191
  'help.option.wiki.baseUrl': 'LLM API base URL. Azure v1: https://{resource}.openai.azure.com/openai/v1',
186
192
  'help.option.wiki.apiKey': 'LLM API key or Azure api-key (saved to ~/.gitnexus/config.json)',
187
193
  'help.option.wiki.apiVersion': 'Azure api-version query param, e.g. 2024-10-21 (legacy Azure API only)',
188
- 'help.option.wiki.reasoningModel': 'Mark deployment as reasoning model (o1/o3/o4-mini) — strips temperature, uses max_completion_tokens',
189
- 'help.option.wiki.noReasoningModel': 'Disable reasoning model mode (overrides saved config)',
194
+ 'help.option.wiki.reasoningModel': 'Enable reasoning mode; MiniMax-M3 uses adaptive thinking',
195
+ 'help.option.wiki.noReasoningModel': 'Disable reasoning mode; MiniMax-M3 disables thinking',
190
196
  'help.option.wiki.concurrency': 'Parallel LLM calls (default: 3)',
191
197
  'help.option.wiki.timeout': 'LLM request timeout in seconds (default: disabled)',
192
198
  'help.option.wiki.retries': 'Max LLM retry attempts per request (default: 3)',
@@ -229,10 +235,8 @@ export const en = {
229
235
  'help.option.embeddings.install.cuda': "Also download the CUDA GPU binaries (runs onnxruntime-node's NuGet postinstall; set GLOBAL_AGENT_HTTPS_PROXY behind a proxy)",
230
236
  'help.option.embeddings.install.force': 'Install into the runtime prefix even when the stack already resolves',
231
237
  'help.option.group.create.force': 'Overwrite existing group',
232
- 'help.option.group.sync.skipEmbeddings': 'Exact + BM25 only (no embedding fallback)',
233
- 'help.option.group.sync.exactOnly': 'Exact match only',
234
- 'help.option.group.sync.allowStale': 'Skip stale index warnings',
235
- 'help.option.group.sync.verbose': 'Show each cross-link detail',
238
+ 'help.option.group.sync.exactOnly': 'Skip wildcard service matching; cross-link on exact contract-id match only (manifest links still apply)',
239
+ 'help.option.group.sync.verbose': 'Show additional sync diagnostics',
236
240
  'help.option.status.json': 'Emit machine-readable index and analyzer provenance',
237
241
  'help.option.json': 'JSON output',
238
242
  'help.option.group.impact.target': 'Symbol or file name to analyze',