gitnexus 1.6.5-rc.2 → 1.6.5-rc.20

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 (285) hide show
  1. package/README.md +1 -1
  2. package/dist/_shared/scope-resolution/method-dispatch-index.d.ts +26 -0
  3. package/dist/_shared/scope-resolution/method-dispatch-index.d.ts.map +1 -1
  4. package/dist/_shared/scope-resolution/method-dispatch-index.js +22 -3
  5. package/dist/_shared/scope-resolution/method-dispatch-index.js.map +1 -1
  6. package/dist/_shared/scope-resolution/registries/lookup-core.js +18 -1
  7. package/dist/_shared/scope-resolution/registries/lookup-core.js.map +1 -1
  8. package/dist/cli/ai-context.d.ts +1 -0
  9. package/dist/cli/ai-context.js +30 -12
  10. package/dist/cli/analyze.d.ts +18 -0
  11. package/dist/cli/analyze.js +33 -4
  12. package/dist/cli/augment.d.ts +1 -1
  13. package/dist/cli/augment.js +1 -1
  14. package/dist/cli/index.js +6 -1
  15. package/dist/core/augmentation/engine.d.ts +2 -2
  16. package/dist/core/augmentation/engine.js +26 -6
  17. package/dist/core/embeddings/ast-utils.js +2 -1
  18. package/dist/core/embeddings/http-client.js +22 -6
  19. package/dist/core/group/extractors/grpc-extractor.js +2 -1
  20. package/dist/core/group/extractors/http-patterns/python.js +175 -0
  21. package/dist/core/group/extractors/http-route-extractor.js +2 -1
  22. package/dist/core/group/extractors/include-extractor.js +2 -1
  23. package/dist/core/group/extractors/thrift-extractor.js +2 -1
  24. package/dist/core/group/extractors/tree-sitter-scanner.js +2 -1
  25. package/dist/core/incremental/shadow-candidates.d.ts +44 -0
  26. package/dist/core/incremental/shadow-candidates.js +74 -0
  27. package/dist/core/incremental/subgraph-extract.d.ts +64 -0
  28. package/dist/core/incremental/subgraph-extract.js +111 -0
  29. package/dist/core/ingestion/call-processor.js +166 -47
  30. package/dist/core/ingestion/community-processor.js +18 -0
  31. package/dist/core/ingestion/heritage-processor.js +3 -2
  32. package/dist/core/ingestion/import-processor.js +2 -1
  33. package/dist/core/ingestion/import-resolvers/standard.d.ts +5 -0
  34. package/dist/core/ingestion/import-resolvers/standard.js +27 -1
  35. package/dist/core/ingestion/import-resolvers/utils.js +4 -0
  36. package/dist/core/ingestion/languages/c/arity-metadata.d.ts +14 -0
  37. package/dist/core/ingestion/languages/c/arity-metadata.js +94 -0
  38. package/dist/core/ingestion/languages/c/arity.d.ts +6 -0
  39. package/dist/core/ingestion/languages/c/arity.js +18 -0
  40. package/dist/core/ingestion/languages/c/captures.d.ts +2 -0
  41. package/dist/core/ingestion/languages/c/captures.js +105 -0
  42. package/dist/core/ingestion/languages/c/header-scan.d.ts +7 -0
  43. package/dist/core/ingestion/languages/c/header-scan.js +55 -0
  44. package/dist/core/ingestion/languages/c/import-decomposer.d.ts +8 -0
  45. package/dist/core/ingestion/languages/c/import-decomposer.js +50 -0
  46. package/dist/core/ingestion/languages/c/import-target.d.ts +14 -0
  47. package/dist/core/ingestion/languages/c/import-target.js +57 -0
  48. package/dist/core/ingestion/languages/c/index.d.ts +11 -0
  49. package/dist/core/ingestion/languages/c/index.js +11 -0
  50. package/dist/core/ingestion/languages/c/interpret.d.ts +14 -0
  51. package/dist/core/ingestion/languages/c/interpret.js +48 -0
  52. package/dist/core/ingestion/languages/c/merge-bindings.d.ts +7 -0
  53. package/dist/core/ingestion/languages/c/merge-bindings.js +23 -0
  54. package/dist/core/ingestion/languages/c/query.d.ts +3 -0
  55. package/dist/core/ingestion/languages/c/query.js +161 -0
  56. package/dist/core/ingestion/languages/c/scope-resolver.d.ts +13 -0
  57. package/dist/core/ingestion/languages/c/scope-resolver.js +60 -0
  58. package/dist/core/ingestion/languages/c/simple-hooks.d.ts +14 -0
  59. package/dist/core/ingestion/languages/c/simple-hooks.js +19 -0
  60. package/dist/core/ingestion/languages/c/static-linkage.d.ts +13 -0
  61. package/dist/core/ingestion/languages/c/static-linkage.js +57 -0
  62. package/dist/core/ingestion/languages/c-cpp.js +10 -0
  63. package/dist/core/ingestion/languages/csharp/captures.js +2 -1
  64. package/dist/core/ingestion/languages/csharp/namespace-siblings.js +3 -2
  65. package/dist/core/ingestion/languages/go/captures.js +2 -1
  66. package/dist/core/ingestion/languages/go/range-binding.js +2 -1
  67. package/dist/core/ingestion/languages/java/arity-metadata.d.ts +18 -0
  68. package/dist/core/ingestion/languages/java/arity-metadata.js +40 -0
  69. package/dist/core/ingestion/languages/java/arity.d.ts +10 -0
  70. package/dist/core/ingestion/languages/java/arity.js +24 -0
  71. package/dist/core/ingestion/languages/java/cache-stats.d.ts +15 -0
  72. package/dist/core/ingestion/languages/java/cache-stats.js +26 -0
  73. package/dist/core/ingestion/languages/java/captures.d.ts +17 -0
  74. package/dist/core/ingestion/languages/java/captures.js +187 -0
  75. package/dist/core/ingestion/languages/java/import-decomposer.d.ts +18 -0
  76. package/dist/core/ingestion/languages/java/import-decomposer.js +85 -0
  77. package/dist/core/ingestion/languages/java/import-target.d.ts +17 -0
  78. package/dist/core/ingestion/languages/java/import-target.js +100 -0
  79. package/dist/core/ingestion/languages/java/index.d.ts +29 -0
  80. package/dist/core/ingestion/languages/java/index.js +29 -0
  81. package/dist/core/ingestion/languages/java/interpret.d.ts +13 -0
  82. package/dist/core/ingestion/languages/java/interpret.js +131 -0
  83. package/dist/core/ingestion/languages/java/merge-bindings.d.ts +12 -0
  84. package/dist/core/ingestion/languages/java/merge-bindings.js +40 -0
  85. package/dist/core/ingestion/languages/java/query.d.ts +30 -0
  86. package/dist/core/ingestion/languages/java/query.js +192 -0
  87. package/dist/core/ingestion/languages/java/receiver-binding.d.ts +11 -0
  88. package/dist/core/ingestion/languages/java/receiver-binding.js +95 -0
  89. package/dist/core/ingestion/languages/java/scope-resolver.d.ts +50 -0
  90. package/dist/core/ingestion/languages/java/scope-resolver.js +74 -0
  91. package/dist/core/ingestion/languages/java/simple-hooks.d.ts +13 -0
  92. package/dist/core/ingestion/languages/java/simple-hooks.js +34 -0
  93. package/dist/core/ingestion/languages/java.js +11 -0
  94. package/dist/core/ingestion/languages/php/arity-metadata.d.ts +28 -0
  95. package/dist/core/ingestion/languages/php/arity-metadata.js +63 -0
  96. package/dist/core/ingestion/languages/php/arity.d.ts +25 -0
  97. package/dist/core/ingestion/languages/php/arity.js +40 -0
  98. package/dist/core/ingestion/languages/php/cache-stats.d.ts +15 -0
  99. package/dist/core/ingestion/languages/php/cache-stats.js +26 -0
  100. package/dist/core/ingestion/languages/php/captures.d.ts +34 -0
  101. package/dist/core/ingestion/languages/php/captures.js +739 -0
  102. package/dist/core/ingestion/languages/php/import-decomposer.d.ts +28 -0
  103. package/dist/core/ingestion/languages/php/import-decomposer.js +265 -0
  104. package/dist/core/ingestion/languages/php/import-target.d.ts +47 -0
  105. package/dist/core/ingestion/languages/php/import-target.js +100 -0
  106. package/dist/core/ingestion/languages/php/index.d.ts +68 -0
  107. package/dist/core/ingestion/languages/php/index.js +72 -0
  108. package/dist/core/ingestion/languages/php/interpret.d.ts +36 -0
  109. package/dist/core/ingestion/languages/php/interpret.js +241 -0
  110. package/dist/core/ingestion/languages/php/merge-bindings.d.ts +19 -0
  111. package/dist/core/ingestion/languages/php/merge-bindings.js +47 -0
  112. package/dist/core/ingestion/languages/php/namespace-siblings.d.ts +51 -0
  113. package/dist/core/ingestion/languages/php/namespace-siblings.js +288 -0
  114. package/dist/core/ingestion/languages/php/query.d.ts +32 -0
  115. package/dist/core/ingestion/languages/php/query.js +326 -0
  116. package/dist/core/ingestion/languages/php/receiver-binding.d.ts +36 -0
  117. package/dist/core/ingestion/languages/php/receiver-binding.js +128 -0
  118. package/dist/core/ingestion/languages/php/scope-resolver.d.ts +23 -0
  119. package/dist/core/ingestion/languages/php/scope-resolver.js +358 -0
  120. package/dist/core/ingestion/languages/php/simple-hooks.d.ts +42 -0
  121. package/dist/core/ingestion/languages/php/simple-hooks.js +111 -0
  122. package/dist/core/ingestion/languages/php.d.ts +0 -7
  123. package/dist/core/ingestion/languages/php.js +15 -0
  124. package/dist/core/ingestion/languages/python/captures.js +2 -1
  125. package/dist/core/ingestion/languages/typescript/captures.js +2 -1
  126. package/dist/core/ingestion/parsing-processor.d.ts +22 -2
  127. package/dist/core/ingestion/parsing-processor.js +85 -50
  128. package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +5 -0
  129. package/dist/core/ingestion/pipeline-phases/parse-impl.js +119 -11
  130. package/dist/core/ingestion/pipeline-phases/parse.d.ts +14 -0
  131. package/dist/core/ingestion/pipeline.d.ts +13 -0
  132. package/dist/core/ingestion/registry-primary-flag.js +2 -0
  133. package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +65 -0
  134. package/dist/core/ingestion/scope-resolution/graph-bridge/method-dispatch.d.ts +1 -1
  135. package/dist/core/ingestion/scope-resolution/graph-bridge/method-dispatch.js +12 -2
  136. package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +5 -0
  137. package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +25 -1
  138. package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +79 -7
  139. package/dist/core/ingestion/scope-resolution/passes/overload-narrowing.d.ts +7 -3
  140. package/dist/core/ingestion/scope-resolution/passes/overload-narrowing.js +24 -4
  141. package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +21 -2
  142. package/dist/core/ingestion/scope-resolution/pipeline/phase.js +13 -1
  143. package/dist/core/ingestion/scope-resolution/pipeline/registry.js +6 -0
  144. package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +17 -0
  145. package/dist/core/ingestion/scope-resolution/pipeline/run.js +31 -7
  146. package/dist/core/ingestion/tree-sitter-queries.d.ts +1 -1
  147. package/dist/core/ingestion/tree-sitter-queries.js +10 -0
  148. package/dist/core/ingestion/workers/parse-worker.js +2 -1
  149. package/dist/core/lbug/lbug-adapter.d.ts +26 -0
  150. package/dist/core/lbug/lbug-adapter.js +174 -40
  151. package/dist/core/lbug/pool-adapter.js +19 -2
  152. package/dist/core/run-analyze.d.ts +2 -0
  153. package/dist/core/run-analyze.js +323 -29
  154. package/dist/core/tree-sitter/safe-parse.d.ts +6 -0
  155. package/dist/core/tree-sitter/safe-parse.js +32 -0
  156. package/dist/server/git-clone.js +10 -13
  157. package/dist/storage/file-hash.d.ts +47 -0
  158. package/dist/storage/file-hash.js +86 -0
  159. package/dist/storage/git.d.ts +17 -6
  160. package/dist/storage/git.js +46 -12
  161. package/dist/storage/parse-cache.d.ts +67 -0
  162. package/dist/storage/parse-cache.js +182 -0
  163. package/dist/storage/repo-manager.d.ts +41 -1
  164. package/dist/storage/repo-manager.js +17 -2
  165. package/package.json +1 -1
  166. package/web/assets/{agent-BpHQleHE.js → agent-BG6RCOzz.js} +1 -1
  167. package/web/assets/architecture-7EHR7CIX-6QZW5X65-F-tujre-.js +1 -0
  168. package/web/assets/architectureDiagram-UL44E2DR-2GL7nOvO.js +36 -0
  169. package/web/assets/blockDiagram-7IZFK4PR-5AjX0pPU.js +132 -0
  170. package/web/assets/{c4Diagram-DFAF54RM-DeJV1rCn.js → c4Diagram-Y2BXMSZH-hLOeq7xC.js} +2 -2
  171. package/web/assets/chunk-2T2R6R2M-B_pq_2nf.js +4 -0
  172. package/web/assets/chunk-2UTLFMKG-CpoohCFN.js +1 -0
  173. package/web/assets/{chunk-7RZVMHOQ-BdIU-RGO.js → chunk-3SSMPTDK-CfqpR3Nr.js} +1 -1
  174. package/web/assets/chunk-4R4BOZG6-D3gm7tYj.js +159 -0
  175. package/web/assets/chunk-6764PJDD-WcI965eO.js +1 -0
  176. package/web/assets/chunk-AQ6EADP3-BpMj3rQl.js +1 -0
  177. package/web/assets/{chunk-KSICW3F5-C2tZmXwv.js → chunk-AZZRMDJM-DSoCJlUA.js} +1 -1
  178. package/web/assets/chunk-C62D2QBJ-CvFF2PnB.js +1 -0
  179. package/web/assets/chunk-CEXFNPSA-DdNtJtrF.js +1 -0
  180. package/web/assets/chunk-J5EP6P6S-DtcVaAJI.js +1 -0
  181. package/web/assets/{chunk-AEOMTBSW-D7qjBMHW.js → chunk-JQRUD6KW-DElaNjc0.js} +1 -1
  182. package/web/assets/chunk-KGYTTC2M-D0K5or7e.js +1 -0
  183. package/web/assets/chunk-KRXBNO2N-DpR8iDt8.js +1 -0
  184. package/web/assets/chunk-LCXTWHL2-DdMObOEk.js +231 -0
  185. package/web/assets/chunk-LII3EMHJ-I78zXtzi.js +1 -0
  186. package/web/assets/chunk-RERM46MO-Betu1cSy.js +1 -0
  187. package/web/assets/chunk-RG4AUYOV-BUCJ2JP5.js +206 -0
  188. package/web/assets/chunk-RKZBBQEN-Cutpza0t.js +1 -0
  189. package/web/assets/chunk-RLI5ZMPA-BFUxCvX2.js +1 -0
  190. package/web/assets/chunk-T5OCTHI4-DKwlkuvB.js +1 -0
  191. package/web/assets/chunk-UP6H54XL-0YWa0NDg.js +1 -0
  192. package/web/assets/chunk-UXSXWOXI-CSz0OXpz.js +1 -0
  193. package/web/assets/chunk-W44A43WB-AOmgoT-X.js +1 -0
  194. package/web/assets/{chunk-RWUO3TPN-DTWzAhQ1.js → chunk-ZXARS5L4-DIzgxjMw.js} +1 -1
  195. package/web/assets/classDiagram-KGZ6W3CR-BT-rn7LF.js +1 -0
  196. package/web/assets/classDiagram-v2-72OJOZXJ-uR3nDadY.js +1 -0
  197. package/web/assets/{cose-bilkent-PNC4W37J-DdZq7Qz_.js → cose-bilkent-UX7MHV2Q-DCSCD1TK.js} +1 -1
  198. package/web/assets/dagre-ND4H6XIP-CsciHSij.js +4 -0
  199. package/web/assets/diagram-3NCE3AQN-BKUT5Rpc.js +43 -0
  200. package/web/assets/diagram-GF46GFSD-Dxb4hZSo.js +24 -0
  201. package/web/assets/diagram-HNR7UZ2L-D3qus9Cn.js +3 -0
  202. package/web/assets/diagram-QXG6HAR7-r9BMLGGP.js +24 -0
  203. package/web/assets/diagram-WEQXMOUZ-BGXqs7-m.js +10 -0
  204. package/web/assets/{erDiagram-GCSMX5X6-DfdN6iqF.js → erDiagram-L5TCEMPS-LgSWVrkZ.js} +2 -2
  205. package/web/assets/eventmodeling-FCH6USID-MREXMVOE-By7r3bla.js +1 -0
  206. package/web/assets/flowDiagram-H6V6AXG4-Bj_vV5ky.js +162 -0
  207. package/web/assets/ganttDiagram-JCBTUEKG-B1eVITSh.js +292 -0
  208. package/web/assets/gitGraph-WXDBUCRP-R675I2BI-ClEP6RdE.js +1 -0
  209. package/web/assets/gitGraphDiagram-S2ZK5IYY-BP0R-_FD.js +106 -0
  210. package/web/assets/{index-3NUCUW2s.js → index-oL-ZNYwb.js} +80 -81
  211. package/web/assets/info-J43DQDTF-KCYPFFUO-bBJRjmP5.js +1 -0
  212. package/web/assets/infoDiagram-3YFTVSEB-Dmj4OEO3.js +2 -0
  213. package/web/assets/{ishikawaDiagram-YMYX4NHK-BF8AtDaj.js → ishikawaDiagram-BNXS4ZKH-B3NgQ4lJ.js} +2 -2
  214. package/web/assets/{journeyDiagram-SO5T7YLQ-BW8oKa3N.js → journeyDiagram-M6C3CM3L-DALmL4_N.js} +3 -3
  215. package/web/assets/{kanban-definition-LJHFXRCJ-DzbOsR-2.js → kanban-definition-75IXJCU3-AvVbHpnN.js} +4 -4
  216. package/web/assets/{katex-GD7MH7QM-CJiOjBBJ.js → katex-K3KEBU37-CqF6_ZN-.js} +1 -1
  217. package/web/assets/{mindmap-definition-2EUWGEK5-BIXGQALq.js → mindmap-definition-2TDM6QVE-B5c9VOzs.js} +28 -28
  218. package/web/assets/packet-YPE3B663-LP52Z2RK-1ZCldnu3.js +1 -0
  219. package/web/assets/pie-LRSECV5Y-TCRJHUBD-EhjHC5EE.js +1 -0
  220. package/web/assets/pieDiagram-CU6KROY3-Po2HSSR4.js +30 -0
  221. package/web/assets/quadrantDiagram-VICAPDV7-C47UxSZD.js +7 -0
  222. package/web/assets/radar-GUYGQ44K-RDLRG3WG-CvXjgxlW.js +1 -0
  223. package/web/assets/{requirementDiagram-M5DCFWZL-CzUUrhQD.js → requirementDiagram-JXO7QTGE-CpECN_Hq.js} +6 -6
  224. package/web/assets/sankeyDiagram-URQDO5SZ-B3b7cLrS.js +40 -0
  225. package/web/assets/sequenceDiagram-VS2MUI6T-CRJ95oVP.js +162 -0
  226. package/web/assets/stateDiagram-7D4R322I-C7U9b3ks.js +1 -0
  227. package/web/assets/stateDiagram-v2-36443NZ5-BQajbtov.js +1 -0
  228. package/web/assets/{timeline-definition-5SPVSISX-DkMiGj4Z.js → timeline-definition-O6YCAMPW-rtbk6BBo.js} +4 -4
  229. package/web/assets/treeView-BLDUP644-QA4HXRO3-R2o5gwfP.js +1 -0
  230. package/web/assets/treemap-LRROVOQU-LLAWBHMP-Cesmac_u.js +1 -0
  231. package/web/assets/{vennDiagram-IE5QUKF5-BCxMmf9q.js → vennDiagram-MWXL3ELB-W8Yoaayh.js} +3 -3
  232. package/web/assets/wardley-L42UT6IY-5TKZOOLJ-B9HYoRgA.js +1 -0
  233. package/web/assets/wardleyDiagram-CUQ6CDDI-DIZw5Abj.js +78 -0
  234. package/web/assets/{xychartDiagram-ZHJ5623Y-DZ7fP1_3.js → xychartDiagram-N2JHSOCM-DGRtrj4P.js} +3 -3
  235. package/web/index.html +2 -2
  236. package/web/assets/architecture-YZFGNWBL-S5CXDPWN-BUzkWgDl.js +0 -1
  237. package/web/assets/architectureDiagram-EMZXCZ2Q-CXbzok1G.js +0 -36
  238. package/web/assets/blockDiagram-IGV67L2C-DA1QJ4ZB.js +0 -132
  239. package/web/assets/chunk-3GS5O3IE-B8hpnia8.js +0 -231
  240. package/web/assets/chunk-3YCYZ6SJ-B-BVu21C.js +0 -1
  241. package/web/assets/chunk-6NTNNK5N-DW-jYSDr.js +0 -1
  242. package/web/assets/chunk-A34GCYZU-BbZl-IKy.js +0 -1
  243. package/web/assets/chunk-DJ7UZH7F-B5tMfF87.js +0 -1
  244. package/web/assets/chunk-DKKBVRCY-Djm-6K_e.js +0 -4
  245. package/web/assets/chunk-DU5LTGQ6-QPoynYcp.js +0 -1
  246. package/web/assets/chunk-FXACKDTF-jieSmbe2.js +0 -159
  247. package/web/assets/chunk-H3VCZNTA-8EMHZ3SV.js +0 -1
  248. package/web/assets/chunk-HN6EAY2L-CgE_agsD.js +0 -1
  249. package/web/assets/chunk-O5ABG6QK-DEZV1O19.js +0 -1
  250. package/web/assets/chunk-PK6DOVAG-BXv0JnsJ.js +0 -206
  251. package/web/assets/chunk-RNJOYNJ4-BiBkF9dN.js +0 -1
  252. package/web/assets/chunk-TBF5ZNIQ-BSl6s9lT.js +0 -1
  253. package/web/assets/chunk-TU3PZOEN-DE5Qhc0N.js +0 -1
  254. package/web/assets/chunk-TYMNRAUI-D1NDLIMG.js +0 -1
  255. package/web/assets/chunk-VELTKBKT-C9dVN39o.js +0 -1
  256. package/web/assets/chunk-W7ZLLLMY-Bu-cdLzs.js +0 -1
  257. package/web/assets/chunk-WSB5WSVC-Dor71SOz.js +0 -1
  258. package/web/assets/chunk-XGPFEOL4-CUonLRle.js +0 -1
  259. package/web/assets/classDiagram-PPOCWD7C-Cdd6UdVv.js +0 -1
  260. package/web/assets/classDiagram-v2-23LJLIIU-DNhxY2Ib.js +0 -1
  261. package/web/assets/dagre-E77IOHMT-Cfj_6e17.js +0 -4
  262. package/web/assets/diagram-H7BISOXX-BNvpsrBv.js +0 -43
  263. package/web/assets/diagram-JC5VWROH-Cn0rtDbJ.js +0 -24
  264. package/web/assets/diagram-LXUTUG65-CHfoVKNm.js +0 -10
  265. package/web/assets/diagram-WEHSV5V5-BLxHksnu.js +0 -24
  266. package/web/assets/flowDiagram-OTCZ4VVT-aAZw4c_M.js +0 -162
  267. package/web/assets/ganttDiagram-MUNLMDZQ-BEfC_7Or.js +0 -292
  268. package/web/assets/gitGraph-7Q5UKJZL-54BCDZD5-B6ZeRLP0.js +0 -1
  269. package/web/assets/gitGraphDiagram-3HKGZ4G3-CG0kC8Q5.js +0 -106
  270. package/web/assets/info-OMHHGYJF-BF2H5H6G-BIOsZy0W.js +0 -1
  271. package/web/assets/infoDiagram-MN7RKWGX-DUoMH-pq.js +0 -2
  272. package/web/assets/packet-4T2RLAQJ-EV4IVRXR-Bs7ysNMU.js +0 -1
  273. package/web/assets/pie-ZZUOXDRM-N23DN5KN-Csi8nnbH.js +0 -1
  274. package/web/assets/pieDiagram-3IATQBI2-QY-u7P6a.js +0 -30
  275. package/web/assets/quadrantDiagram-E256RVCF-Di4aNiU8.js +0 -7
  276. package/web/assets/radar-PYXPWWZC-P6TP7ZYP-DJlyXh2-.js +0 -1
  277. package/web/assets/sankeyDiagram-L3NBLAOT-D2fbMiIU.js +0 -10
  278. package/web/assets/sequenceDiagram-ZOUHS735-BNdkqguh.js +0 -157
  279. package/web/assets/stateDiagram-MLPALWAM-51_Q2w2L.js +0 -1
  280. package/web/assets/stateDiagram-v2-B5LQ5ZB2-8nHs2aNE.js +0 -1
  281. package/web/assets/treeView-SZITEDCU-5DXDK3XO-Cy6P0_CZ.js +0 -1
  282. package/web/assets/treemap-W4RFUUIX-WYLRDWKO-C_pp1R7A.js +0 -1
  283. package/web/assets/wardley-RL74JXVD-BCRCBASE-CMStJhpn.js +0 -1
  284. package/web/assets/wardleyDiagram-XU3VSMPF-ijlLF77s.js +0 -20
  285. /package/web/assets/{context-builder-CqQNhRj1.js → context-builder-CG-ydtp4.js} +0 -0
package/README.md CHANGED
@@ -33,7 +33,7 @@ To configure MCP for your editor, run `npx gitnexus setup` once — or set it up
33
33
  | Editor | MCP | Skills | Hooks (auto-augment) | Support |
34
34
  |--------|-----|--------|---------------------|---------|
35
35
  | **Claude Code** | Yes | Yes | Yes (PreToolUse) | **Full** |
36
- | **Cursor** | Yes | Yes | | MCP + Skills |
36
+ | **Cursor** | Yes | Yes | Yes (postToolUse, [manual install](../gitnexus-cursor-integration/README.md#hook-install)) | **Full** |
37
37
  | **Codex** | Yes | Yes | — | MCP + Skills |
38
38
  | **Windsurf** | Yes | — | — | MCP |
39
39
  | **OpenCode** | Yes | Yes | — | MCP + Skills |
@@ -36,10 +36,26 @@ export interface MethodDispatchIndex {
36
36
  readonly mroByOwnerDefId: ReadonlyMap<DefId, readonly DefId[]>;
37
37
  /** Interfaces / traits → classes that implement them. */
38
38
  readonly implsByInterfaceDefId: ReadonlyMap<DefId, readonly DefId[]>;
39
+ /**
40
+ * Optional parallel MRO view that EXCLUDES mixin-like augmentation
41
+ * (e.g., PHP traits). Populated only when the input supplies
42
+ * `computeExtendsOnlyMro`. Used by the super-branch dispatch in
43
+ * `receiver-bound-calls` so that `parent::method()` walks the
44
+ * inheritance chain only, not the trait-augmented one. Undefined for
45
+ * languages without mixin-like semantics — callers should fall back
46
+ * to `mroFor` when this is missing.
47
+ */
48
+ readonly extendsOnlyMroByOwnerDefId?: ReadonlyMap<DefId, readonly DefId[]>;
39
49
  /** `mroByOwnerDefId.get`, with an empty frozen array on miss. */
40
50
  mroFor(ownerDefId: DefId): readonly DefId[];
41
51
  /** `implsByInterfaceDefId.get`, with an empty frozen array on miss. */
42
52
  implementorsOf(interfaceDefId: DefId): readonly DefId[];
53
+ /**
54
+ * `extendsOnlyMroByOwnerDefId.get`, with an empty frozen array on miss.
55
+ * Undefined when `extendsOnlyMroByOwnerDefId` was not populated; callers
56
+ * should treat this as equivalent to `mroFor` for non-mixin languages.
57
+ */
58
+ readonly extendsOnlyMroFor?: (ownerDefId: DefId) => readonly DefId[];
43
59
  }
44
60
  export interface MethodDispatchInput {
45
61
  /**
@@ -75,6 +91,16 @@ export interface MethodDispatchInput {
75
91
  * write-wins policy and fires at most once per unique owner.
76
92
  */
77
93
  readonly implementsOf: (ownerDefId: DefId) => readonly DefId[];
94
+ /**
95
+ * Optional: return the EXTENDS-only ancestor chain for `ownerDefId`,
96
+ * excluding the owner itself AND any mixin-like augmentation (e.g.,
97
+ * PHP traits). Languages without mixin semantics leave this undefined
98
+ * and the index's `extendsOnlyMroByOwnerDefId` stays unpopulated.
99
+ *
100
+ * Same contract as `computeMro`: pure, deterministic, `[]` on no parents.
101
+ * Called at most once per unique owner (first-write-wins).
102
+ */
103
+ readonly computeExtendsOnlyMro?: (ownerDefId: DefId) => readonly DefId[];
78
104
  }
79
105
  export declare function buildMethodDispatchIndex(input: MethodDispatchInput): MethodDispatchIndex;
80
106
  //# sourceMappingURL=method-dispatch-index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"method-dispatch-index.d.ts","sourceRoot":"","sources":["../../src/scope-resolution/method-dispatch-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAIxC,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC;IAC/D,yDAAyD;IACzD,QAAQ,CAAC,qBAAqB,EAAE,WAAW,CAAC,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC;IAErE,iEAAiE;IACjE,MAAM,CAAC,UAAU,EAAE,KAAK,GAAG,SAAS,KAAK,EAAE,CAAC;IAC5C,uEAAuE;IACvE,cAAc,CAAC,cAAc,EAAE,KAAK,GAAG,SAAS,KAAK,EAAE,CAAC;CACzD;AAED,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IAClC;;;;;;;;;OASG;IACH,QAAQ,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,KAAK,KAAK,SAAS,KAAK,EAAE,CAAC;IAC7D;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,KAAK,KAAK,SAAS,KAAK,EAAE,CAAC;CAChE;AAID,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,mBAAmB,GAAG,mBAAmB,CAqCxF"}
1
+ {"version":3,"file":"method-dispatch-index.d.ts","sourceRoot":"","sources":["../../src/scope-resolution/method-dispatch-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAIxC,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC;IAC/D,yDAAyD;IACzD,QAAQ,CAAC,qBAAqB,EAAE,WAAW,CAAC,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC;IACrE;;;;;;;;OAQG;IACH,QAAQ,CAAC,0BAA0B,CAAC,EAAE,WAAW,CAAC,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC;IAE3E,iEAAiE;IACjE,MAAM,CAAC,UAAU,EAAE,KAAK,GAAG,SAAS,KAAK,EAAE,CAAC;IAC5C,uEAAuE;IACvE,cAAc,CAAC,cAAc,EAAE,KAAK,GAAG,SAAS,KAAK,EAAE,CAAC;IACxD;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,KAAK,SAAS,KAAK,EAAE,CAAC;CACtE;AAED,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IAClC;;;;;;;;;OASG;IACH,QAAQ,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,KAAK,KAAK,SAAS,KAAK,EAAE,CAAC;IAC7D;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,KAAK,KAAK,SAAS,KAAK,EAAE,CAAC;IAC/D;;;;;;;;OAQG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,KAAK,SAAS,KAAK,EAAE,CAAC;CAC1E;AAID,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,mBAAmB,GAAG,mBAAmB,CAgDxF"}
@@ -30,6 +30,9 @@
30
30
  // ─── Builder ────────────────────────────────────────────────────────────────
31
31
  export function buildMethodDispatchIndex(input) {
32
32
  const mroByOwnerDefId = new Map();
33
+ const extendsOnlyByOwnerDefId = input.computeExtendsOnlyMro
34
+ ? new Map()
35
+ : undefined;
33
36
  const implsBuilding = new Map();
34
37
  const implsSeen = new Map();
35
38
  for (const ownerId of input.owners) {
@@ -39,6 +42,12 @@ export function buildMethodDispatchIndex(input) {
39
42
  const chain = input.computeMro(ownerId);
40
43
  mroByOwnerDefId.set(ownerId, Object.freeze(chain.slice()));
41
44
  }
45
+ if (input.computeExtendsOnlyMro !== undefined &&
46
+ extendsOnlyByOwnerDefId !== undefined &&
47
+ !extendsOnlyByOwnerDefId.has(ownerId)) {
48
+ const extOnly = input.computeExtendsOnlyMro(ownerId);
49
+ extendsOnlyByOwnerDefId.set(ownerId, Object.freeze(extOnly.slice()));
50
+ }
42
51
  for (const ifaceId of input.implementsOf(ownerId)) {
43
52
  let seen = implsSeen.get(ifaceId);
44
53
  if (seen === undefined) {
@@ -60,12 +69,12 @@ export function buildMethodDispatchIndex(input) {
60
69
  for (const [ifaceId, owners] of implsBuilding) {
61
70
  implsByInterfaceDefId.set(ifaceId, Object.freeze(owners.slice()));
62
71
  }
63
- return wrapIndex(mroByOwnerDefId, implsByInterfaceDefId);
72
+ return wrapIndex(mroByOwnerDefId, implsByInterfaceDefId, extendsOnlyByOwnerDefId);
64
73
  }
65
74
  // ─── Internal ───────────────────────────────────────────────────────────────
66
75
  const EMPTY = Object.freeze([]);
67
- function wrapIndex(mroByOwnerDefId, implsByInterfaceDefId) {
68
- return {
76
+ function wrapIndex(mroByOwnerDefId, implsByInterfaceDefId, extendsOnlyMroByOwnerDefId) {
77
+ const base = {
69
78
  mroByOwnerDefId,
70
79
  implsByInterfaceDefId,
71
80
  mroFor(ownerDefId) {
@@ -75,5 +84,15 @@ function wrapIndex(mroByOwnerDefId, implsByInterfaceDefId) {
75
84
  return implsByInterfaceDefId.get(interfaceDefId) ?? EMPTY;
76
85
  },
77
86
  };
87
+ if (extendsOnlyMroByOwnerDefId !== undefined) {
88
+ return {
89
+ ...base,
90
+ extendsOnlyMroByOwnerDefId,
91
+ extendsOnlyMroFor(ownerDefId) {
92
+ return extendsOnlyMroByOwnerDefId.get(ownerDefId) ?? EMPTY;
93
+ },
94
+ };
95
+ }
96
+ return base;
78
97
  }
79
98
  //# sourceMappingURL=method-dispatch-index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"method-dispatch-index.js","sourceRoot":"","sources":["../../src/scope-resolution/method-dispatch-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAyDH,+EAA+E;AAE/E,MAAM,UAAU,wBAAwB,CAAC,KAA0B;IACjE,MAAM,eAAe,GAAG,IAAI,GAAG,EAA2B,CAAC;IAC3D,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAChD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAqB,CAAC;IAE/C,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACnC,sEAAsE;QACtE,2DAA2D;QAC3D,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACxC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YAClD,IAAI,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,IAAI,GAAG,IAAI,GAAG,EAAS,CAAC;gBACxB,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC/B,CAAC;YACD,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;gBAAE,SAAS;YAChC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAElB,IAAI,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,GAAG,EAAE,CAAC;gBACZ,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACrC,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAA2B,CAAC;IACjE,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC9C,qBAAqB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,SAAS,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC;AAC3D,CAAC;AAED,+EAA+E;AAE/E,MAAM,KAAK,GAAqB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAElD,SAAS,SAAS,CAChB,eAA6C,EAC7C,qBAAmD;IAEnD,OAAO;QACL,eAAe;QACf,qBAAqB;QACrB,MAAM,CAAC,UAAiB;YACtB,OAAO,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC;QAClD,CAAC;QACD,cAAc,CAAC,cAAqB;YAClC,OAAO,qBAAqB,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC;QAC5D,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"method-dispatch-index.js","sourceRoot":"","sources":["../../src/scope-resolution/method-dispatch-index.ts"],"names":[],"mappings":"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"}
@@ -299,14 +299,31 @@ function applyArityFilter(callsite, perCandidate, ctx) {
299
299
  return;
300
300
  }
301
301
  let anyCompatible = false;
302
+ let anyUnknown = false;
302
303
  for (const state of perCandidate.values()) {
303
304
  const verdict = arityFn(callsite, state.def);
304
305
  state.signals.arityVerdict = verdict;
305
306
  if (verdict === 'compatible')
306
307
  anyCompatible = true;
308
+ else if (verdict === 'unknown')
309
+ anyUnknown = true;
307
310
  }
308
- if (!anyCompatible)
311
+ // When ALL candidates are 'incompatible' (none compatible, none unknown),
312
+ // the call is genuinely arity-broken — drop every candidate so the
313
+ // registry returns no resolution. This matches the PHP variadic case
314
+ // f(int $req, ...$rest) called with zero args: every candidate definitively
315
+ // rejects, and emitting an edge to a definitively-rejected callable is
316
+ // a false positive. When some candidates are 'unknown' (missing metadata),
317
+ // keep the set so downstream evidence can break the tie — that's the
318
+ // original safety-fallback behavior.
319
+ if (!anyCompatible) {
320
+ if (!anyUnknown) {
321
+ for (const defId of perCandidate.keys()) {
322
+ perCandidate.delete(defId);
323
+ }
324
+ }
309
325
  return;
326
+ }
310
327
  // Filter: when at least one compatible candidate exists, drop incompatibles.
311
328
  for (const [defId, state] of perCandidate) {
312
329
  if (state.signals.arityVerdict === 'incompatible') {
@@ -1 +1 @@
1
- {"version":3,"file":"lookup-core.js","sourceRoot":"","sources":["../../../src/scope-resolution/registries/lookup-core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiEG;AAcH,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAmB,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,gCAAgC,EAAoB,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAYxD;;;;GAIG;AACH,MAAM,UAAU,UAAU,CACxB,IAAY,EACZ,UAAmB,EACnB,MAAwB,EACxB,GAAoB;IAEpB,MAAM,aAAa,GAAG,IAAI,GAAG,CAAY,MAAM,CAAC,aAAa,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,IAAI,GAAG,EAAyB,CAAC;IAEtD,yEAAyE;IACzE,MAAM,eAAe,GAAG,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;IAE7F,yEAAyE;IACzE,IAAI,MAAM,CAAC,sBAAsB,IAAI,GAAG,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACtE,uBAAuB,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;IACtF,CAAC;IAED,yEAAyE;IACzE,IAAI,MAAM,CAAC,sBAAsB,KAAK,IAAI,EAAE,CAAC;QAC3C,8BAA8B,CAC5B,IAAI,EACJ,MAAM,CAAC,sBAAsB,EAC7B,aAAa,EACb,YAAY,CACb,CAAC;IACJ,CAAC;IAED,0EAA0E;IAC1E,oCAAoC;IAEpC,yEAAyE;IACzE,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;IACvD,CAAC;IAED,uEAAuE;IACvE,IAAI,YAAY,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACtE,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,EAAE,GAAG,CAAC,CAAC;QACpF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,OAAO,CAAC;IACzC,CAAC;IAED,IAAI,YAAY,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAE1C,wEAAwE;IACxE,OAAO,cAAc,CAAC,YAAY,CAAC,CAAC;AACtC,CAAC;AA2BD,SAAS,eAAe,CACtB,YAAwC,EACxC,GAAqB;IAErB,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC5C,MAAM,KAAK,GAAmB;QAC5B,GAAG;QACH,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;QAC5B,WAAW,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE;KAC7D,CAAC;IACF,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACpC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAE9E;;;;GAIG;AACH,SAAS,gBAAgB,CACvB,IAAY,EACZ,UAAmB,EACnB,aAAqC,EACrC,GAAoB,EACpB,YAAwC;IAExC,IAAI,SAAS,GAAmB,UAAU,CAAC;IAC3C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,OAAO,GAAG,IAAI,GAAG,EAAW,CAAC;IAEnC,OAAO,SAAS,KAAK,IAAI,EAAE,CAAC;QAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEvB,MAAM,KAAK,GAAsB,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAChE,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAEtC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,SAAS;gBACnD,gBAAgB,CAAC,YAAY,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YACjD,CAAC;YACD,OAAO,IAAI,CAAC,CAAC,qDAAqD;QACpE,CAAC;QAED,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;QACzB,KAAK,EAAE,CAAC;IACV,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CACvB,YAAwC,EACxC,OAAmB,EACnB,eAAuB;IAEvB,MAAM,KAAK,GAAG,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACzD,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACtC,KAAK,CAAC,OAAO,CAAC,eAAe,GAAG,eAAe,CAAC;IAChD,IAAI,OAAO,CAAC,GAAG,EAAE,UAAU,KAAK,YAAY,EAAE,CAAC;QAC7C,KAAK,CAAC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IACzC,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,KAAK,oBAAoB,EAAE,CAAC;QAC/C,KAAK,CAAC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IACzC,CAAC;IACD,KAAK,CAAC,WAAW,CAAC,UAAU,GAAG,eAAe,CAAC;IAC/C,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC,MAA2B,CAAC;AACjE,CAAC;AAED,8EAA8E;AAE9E,SAAS,uBAAuB,CAC9B,IAAY,EACZ,UAAmB,EACnB,aAAqC,EACrC,MAAwB,EACxB,GAAoB,EACpB,YAAwC;IAExC,MAAM,UAAU,GAAG,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IACjE,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO;IAErC,IAAI,GAAG,CAAC,cAAc,KAAK,SAAS;QAAE,OAAO;IAE7C,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC1C,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO;IAEnC,wDAAwD;IACxD,MAAM,IAAI,GAAY,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAE7E,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;QAC1D,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAE,CAAC;QACvC,MAAM,OAAO,GAAG,mBAAmB,CAAC,cAAc,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC/D,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAS;YAC3C,oBAAoB,CAAC,YAAY,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAC3B,UAAmB,EACnB,MAAwB,EACxB,GAAoB;IAEpB,uEAAuE;IACvE,uEAAuE;IACvE,sEAAsE;IACtE,6DAA6D;IAC7D,IAAI,MAAM,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,kBAAkB,CAAC,UAAU,EAAE,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC3E,CAAC;IAED,uEAAuE;IACvE,KAAK,MAAM,YAAY,IAAI,kBAAkB,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,kBAAkB,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;QAChE,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;IACxC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,kBAAkB,GAAsB,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE9E,SAAS,kBAAkB,CACzB,UAAmB,EACnB,YAAoB,EACpB,GAAoB;IAEpB,IAAI,SAAS,GAAmB,UAAU,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAW,CAAC;IACnC,OAAO,SAAS,KAAK,IAAI,EAAE,CAAC;QAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEvB,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAE1C,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACrD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,sEAAsE;YACtE,2DAA2D;YAC3D,gEAAgE;YAChE,yDAAyD;YACzD,MAAM,YAAY,GAAG,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC7D,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;YACtD,+DAA+D;YAC/D,gEAAgE;YAChE,iEAAiE;YACjE,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,mBAAmB,CAC1B,UAAiB,EACjB,UAAkB,EAClB,GAAoB;IAEpB,uEAAuE;IACvE,sEAAsE;IACtE,uEAAuE;IACvE,8DAA8D;IAC9D,MAAM,GAAG,GAAuB,EAAE,CAAC;IACnC,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QACzC,IAAI,GAAG,CAAC,OAAO,KAAK,UAAU;YAAE,SAAS;QACzC,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,UAAU;YAAE,SAAS;QAC/C,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,YAAY,CAAC,GAAqB;IACzC,IAAI,GAAG,CAAC,aAAa,KAAK,SAAS,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACxF,MAAM,GAAG,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/C,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,oBAAoB,CAC3B,YAAwC,EACxC,GAAqB,EACrB,QAAgB,EAChB,aAAoB;IAEpB,MAAM,KAAK,GAAG,eAAe,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACjD,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC;IAC3D,MAAM,QAAQ,GAAG,gBAAgB,KAAK,SAAS,CAAC;IAChD,uEAAuE;IACvE,kEAAkE;IAClE,uBAAuB;IACvB,IAAI,QAAQ,IAAI,QAAQ,GAAG,gBAAgB,EAAE,CAAC;QAC5C,KAAK,CAAC,OAAO,CAAC,mBAAmB,GAAG,QAAQ,CAAC;QAC7C,KAAK,CAAC,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACxC,CAAC;IACD,IAAI,GAAG,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;QAClC,KAAK,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAClC,CAAC;IACD,yEAAyE;IACzE,yEAAyE;IACzE,yEAAyE;IACzE,wEAAwE;IACxE,uEAAuE;IACvE,uEAAuE;IACvE,2EAA2E;IAC3E,oEAAoE;IACpE,mEAAmE;IACnE,IAAI,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACnD,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,QAAQ,CAAC;IACtC,CAAC;AACH,CAAC;AAED,8EAA8E;AAE9E,SAAS,8BAA8B,CACrC,IAAY,EACZ,WAAmC,EACnC,aAAqC,EACrC,YAAwC;IAExC,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QAC3C,MAAM,KAAK,GAAG,eAAe,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QACjD,mEAAmE;QACnE,gDAAgD;QAChD,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;QAC/B,KAAK,CAAC,OAAO,CAAC,eAAe,GAAG,CAAC,CAAC;QAClC,KAAK,CAAC,OAAO,CAAC,UAAU,GAAG,GAAG,CAAC,OAAO,KAAK,WAAW,CAAC,UAAU,CAAC;QAClE,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC;IACrC,CAAC;AACH,CAAC;AAED,8EAA8E;AAE9E,SAAS,gBAAgB,CACvB,QAAkB,EAClB,YAAwC,EACxC,GAAoB;IAEpB,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC;IACjD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,mEAAmE;QACnE,qCAAqC;QACrC,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;QACzC,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7C,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC;QACrC,IAAI,OAAO,KAAK,YAAY;YAAE,aAAa,GAAG,IAAI,CAAC;IACrD,CAAC;IAED,IAAI,CAAC,aAAa;QAAE,OAAO;IAE3B,6EAA6E;IAC7E,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,YAAY,EAAE,CAAC;QAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,KAAK,cAAc,EAAE,CAAC;YAClD,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;AACH,CAAC;AAED,8EAA8E;AAE9E,SAAS,cAAc,CAAC,YAAwC;IAC9D,MAAM,WAAW,GAAiB,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;IAE/C,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,OAAqB,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QACpD,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,gCAAgC,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5E,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACpC,CAAC;AAED,+EAA+E;AAE/E,MAAM,KAAK,GAA0B,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"lookup-core.js","sourceRoot":"","sources":["../../../src/scope-resolution/registries/lookup-core.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@ interface RepoStats {
17
17
  export interface AIContextOptions {
18
18
  skipAgentsMd?: boolean;
19
19
  noStats?: boolean;
20
+ skipSkills?: boolean;
20
21
  }
21
22
  /**
22
23
  * Generate AI context files after indexing
@@ -68,20 +68,31 @@ async function findGroupsContainingRegistryName(registryName) {
68
68
  }
69
69
  return hits;
70
70
  }
71
- function generateGitNexusContent(projectName, stats, generatedSkills, groupNames, noStats) {
71
+ function generateGitNexusContent(projectName, stats, generatedSkills, groupNames, noStats, skipSkills) {
72
72
  const generatedRows = generatedSkills && generatedSkills.length > 0
73
73
  ? generatedSkills
74
74
  .map((s) => `| Work in the ${s.label} area (${s.symbolCount} symbols) | \`.claude/skills/generated/${s.name}/SKILL.md\` |`)
75
75
  .join('\n')
76
76
  : '';
77
- const skillsTable = `| Task | Read this skill file |
78
- |------|---------------------|
79
- | Understand architecture / "How does X work?" | \`.claude/skills/gitnexus/gitnexus-exploring/SKILL.md\` |
77
+ // Standard skill rows reference files installed by installSkills(). When
78
+ // --skip-skills suppresses that install, these rows must be omitted — else
79
+ // AGENTS.md/CLAUDE.md would direct agents to read files that don't exist.
80
+ // Community skills (generatedRows) live in .claude/skills/generated/ and
81
+ // are independent of --skip-skills, so they remain when present.
82
+ const standardSkillsRows = skipSkills
83
+ ? ''
84
+ : `| Understand architecture / "How does X work?" | \`.claude/skills/gitnexus/gitnexus-exploring/SKILL.md\` |
80
85
  | Blast radius / "What breaks if I change X?" | \`.claude/skills/gitnexus/gitnexus-impact-analysis/SKILL.md\` |
81
86
  | Trace bugs / "Why is X failing?" | \`.claude/skills/gitnexus/gitnexus-debugging/SKILL.md\` |
82
87
  | Rename / extract / split / refactor | \`.claude/skills/gitnexus/gitnexus-refactoring/SKILL.md\` |
83
88
  | Tools, resources, schema reference | \`.claude/skills/gitnexus/gitnexus-guide/SKILL.md\` |
84
- | Index, status, clean, wiki CLI commands | \`.claude/skills/gitnexus/gitnexus-cli/SKILL.md\` |${generatedRows ? '\n' + generatedRows : ''}`;
89
+ | Index, status, clean, wiki CLI commands | \`.claude/skills/gitnexus/gitnexus-cli/SKILL.md\` |`;
90
+ const tableBody = [standardSkillsRows, generatedRows].filter(Boolean).join('\n');
91
+ const skillsTable = tableBody
92
+ ? `| Task | Read this skill file |
93
+ |------|---------------------|
94
+ ${tableBody}`
95
+ : '';
85
96
  return `${GITNEXUS_START_MARKER}
86
97
  # GitNexus — Code Intelligence
87
98
 
@@ -119,11 +130,13 @@ ${groupNames && groupNames.length > 0
119
130
  This repository is listed under GitNexus **group(s): ${groupNames.join(', ')}** (see \`~/.gitnexus/groups/\`). For cross-repo analysis, use MCP tools \`impact\`, \`query\`, and \`context\` with \`repo\` set to \`@<groupName>\` or \`@<groupName>/<memberPath>\` (paths match keys in that group’s \`group.yaml\`). Use \`group_list\` / \`group_sync\` for membership and sync. From the terminal: \`npx gitnexus group list\`, \`npx gitnexus group sync <name>\`, \`npx gitnexus group impact <name> --target <symbol> --repo <group-path>\`.
120
131
 
121
132
  `
122
- : ''}## CLI
133
+ : ''}${skillsTable
134
+ ? `## CLI
123
135
 
124
136
  ${skillsTable}
125
137
 
126
- ${GITNEXUS_END_MARKER}`;
138
+ `
139
+ : ''}${GITNEXUS_END_MARKER}`;
127
140
  }
128
141
  /**
129
142
  * Check if a file exists
@@ -246,7 +259,7 @@ Use GitNexus tools to accomplish this task.
246
259
  */
247
260
  export async function generateAIContextFiles(repoPath, _storagePath, projectName, stats, generatedSkills, options) {
248
261
  const groupNames = await findGroupsContainingRegistryName(projectName);
249
- const content = generateGitNexusContent(projectName, stats, generatedSkills, groupNames, options?.noStats);
262
+ const content = generateGitNexusContent(projectName, stats, generatedSkills, groupNames, options?.noStats, options?.skipSkills);
250
263
  const createdFiles = [];
251
264
  if (!options?.skipAgentsMd) {
252
265
  // Create AGENTS.md (standard for Cursor, Windsurf, OpenCode, Cline, etc.)
@@ -262,10 +275,15 @@ export async function generateAIContextFiles(repoPath, _storagePath, projectName
262
275
  createdFiles.push('AGENTS.md (skipped via --skip-agents-md)');
263
276
  createdFiles.push('CLAUDE.md (skipped via --skip-agents-md)');
264
277
  }
265
- // Install skills to .claude/skills/gitnexus/
266
- const installedSkills = await installSkills(repoPath);
267
- if (installedSkills.length > 0) {
268
- createdFiles.push(`.claude/skills/gitnexus/ (${installedSkills.length} skills)`);
278
+ // Install skills to .claude/skills/gitnexus/ (unless --skip-skills)
279
+ if (!options?.skipSkills) {
280
+ const installedSkills = await installSkills(repoPath);
281
+ if (installedSkills.length > 0) {
282
+ createdFiles.push(`.claude/skills/gitnexus/ (${installedSkills.length} skills)`);
283
+ }
284
+ }
285
+ else {
286
+ createdFiles.push('.claude/skills/gitnexus/ (skipped via --skip-skills)');
269
287
  }
270
288
  return { files: createdFiles };
271
289
  }
@@ -29,6 +29,10 @@ export interface AnalyzeOptions {
29
29
  skipAgentsMd?: boolean;
30
30
  /** Omit volatile symbol/relationship counts from AGENTS.md and CLAUDE.md. */
31
31
  noStats?: boolean;
32
+ /** Skip installing standard GitNexus skill files to .claude/skills/gitnexus/. */
33
+ skipSkills?: boolean;
34
+ /** Pure index mode: skip all file injection (AGENTS.md, CLAUDE.md, skills). */
35
+ indexOnly?: boolean;
32
36
  /** Index the folder even when no .git directory is present. */
33
37
  skipGit?: boolean;
34
38
  /**
@@ -59,4 +63,18 @@ export interface AnalyzeOptions {
59
63
  embeddingSubBatchSize?: string;
60
64
  embeddingDevice?: string;
61
65
  }
66
+ /**
67
+ * Whether the post-index skill step should run.
68
+ *
69
+ * The gated block does two things in sequence: (1) generates the community
70
+ * skill files from `--skills`, and (2) re-runs `generateAIContextFiles` so
71
+ * AGENTS.md/CLAUDE.md can reference the freshly written skills. Both are
72
+ * suppressed together — `--index-only` drops the entire step, not just the
73
+ * community-skill write. Name retained for the test contract; see call site
74
+ * in `analyzeCommand` for the AGENTS.md/CLAUDE.md re-generation it also gates.
75
+ *
76
+ * Kept as a pure helper so the `--index-only --skills` contract is unit-tested
77
+ * without booting the full analyze pipeline (#742 review).
78
+ */
79
+ export declare const shouldGenerateCommunitySkillFiles: (options: Pick<AnalyzeOptions, "skills" | "indexOnly"> | undefined, pipelineResult: unknown) => boolean;
62
80
  export declare const analyzeCommand: (inputPath?: string, options?: AnalyzeOptions) => Promise<void>;
@@ -86,6 +86,20 @@ function ensureHeap() {
86
86
  }
87
87
  return true;
88
88
  }
89
+ /**
90
+ * Whether the post-index skill step should run.
91
+ *
92
+ * The gated block does two things in sequence: (1) generates the community
93
+ * skill files from `--skills`, and (2) re-runs `generateAIContextFiles` so
94
+ * AGENTS.md/CLAUDE.md can reference the freshly written skills. Both are
95
+ * suppressed together — `--index-only` drops the entire step, not just the
96
+ * community-skill write. Name retained for the test contract; see call site
97
+ * in `analyzeCommand` for the AGENTS.md/CLAUDE.md re-generation it also gates.
98
+ *
99
+ * Kept as a pure helper so the `--index-only --skills` contract is unit-tested
100
+ * without booting the full analyze pipeline (#742 review).
101
+ */
102
+ export const shouldGenerateCommunitySkillFiles = (options, pipelineResult) => Boolean(options?.skills && pipelineResult && !options?.indexOnly);
89
103
  export const analyzeCommand = async (inputPath, options) => {
90
104
  if (ensureHeap())
91
105
  return;
@@ -151,6 +165,15 @@ export const analyzeCommand = async (inputPath, options) => {
151
165
  process.env.GITNEXUS_EMBEDDING_DEVICE = options.embeddingDevice;
152
166
  }
153
167
  console.log('\n GitNexus Analyzer\n');
168
+ // `--index-only` is the stronger contract — it suppresses every form of file
169
+ // injection, including community skill writes that `--skills` would normally
170
+ // produce. Surface the override explicitly so users don't wonder why a
171
+ // pipeline re-index ran but no skill files appeared. The pipeline still
172
+ // re-runs (see `force: options?.force || options?.skills` below); the warning
173
+ // is purely about the dropped post-index write step.
174
+ if (options?.indexOnly && options?.skills) {
175
+ console.log(' Note: --index-only overrides --skills; community skill files will not be written.\n');
176
+ }
154
177
  let repoPath;
155
178
  if (inputPath) {
156
179
  repoPath = path.resolve(inputPath);
@@ -285,6 +308,9 @@ export const analyzeCommand = async (inputPath, options) => {
285
308
  const t0 = Date.now();
286
309
  // ── Run shared analysis orchestrator ───────────────────────────────
287
310
  try {
311
+ const skipAll = options?.indexOnly;
312
+ const skipAgentsMd = skipAll || options?.skipAgentsMd;
313
+ const skipSkills = skipAll || options?.skipSkills;
288
314
  const result = await runFullAnalysis(repoPath, {
289
315
  // Pipeline re-index — OR'd with --skills because skill generation
290
316
  // needs a fresh pipelineResult. Has no bearing on the registry
@@ -294,7 +320,8 @@ export const analyzeCommand = async (inputPath, options) => {
294
320
  embeddingsNodeLimit,
295
321
  dropEmbeddings: options?.dropEmbeddings,
296
322
  skipGit: options?.skipGit,
297
- skipAgentsMd: options?.skipAgentsMd,
323
+ skipAgentsMd,
324
+ skipSkills,
298
325
  noStats: options?.noStats,
299
326
  registryName: options?.name,
300
327
  // Registry-collision bypass — its own CLI flag, intentionally NOT
@@ -335,8 +362,10 @@ export const analyzeCommand = async (inputPath, options) => {
335
362
  // exit code and an actionable error instead of being mistaken for
336
363
  // a healthy index.
337
364
  await assertAnalysisFinalized(repoPath);
338
- // Skill generation (CLI-only, uses pipeline result from analysis)
339
- if (options?.skills && result.pipelineResult) {
365
+ // Skill generation (CLI-only, uses pipeline result from analysis).
366
+ // Gated so `--index-only --skills` skips community skill writes too
367
+ // (`shouldGenerateCommunitySkillFiles` — see unit test).
368
+ if (shouldGenerateCommunitySkillFiles(options, result.pipelineResult)) {
340
369
  updateBar(99, 'Generating skill files...');
341
370
  try {
342
371
  const { generateSkillFiles } = await import('./skill-gen.js');
@@ -364,7 +393,7 @@ export const analyzeCommand = async (inputPath, options) => {
364
393
  communities: s.communities,
365
394
  clusters: aggregatedClusterCount,
366
395
  processes: s.processes,
367
- }, skillResult.skills, { skipAgentsMd: options?.skipAgentsMd, noStats: options?.noStats });
396
+ }, skillResult.skills, { skipAgentsMd, skipSkills, noStats: options?.noStats });
368
397
  }
369
398
  }
370
399
  catch {
@@ -2,7 +2,7 @@
2
2
  * Augment CLI Command
3
3
  *
4
4
  * Fast-path command for platform hooks.
5
- * Shells out from Claude Code PreToolUse / Cursor beforeShellExecution hooks.
5
+ * Shells out from Claude Code PreToolUse / Cursor postToolUse hooks.
6
6
  *
7
7
  * Usage: gitnexus augment <pattern>
8
8
  * Returns enriched text to stdout.
@@ -2,7 +2,7 @@
2
2
  * Augment CLI Command
3
3
  *
4
4
  * Fast-path command for platform hooks.
5
- * Shells out from Claude Code PreToolUse / Cursor beforeShellExecution hooks.
5
+ * Shells out from Claude Code PreToolUse / Cursor postToolUse hooks.
6
6
  *
7
7
  * Usage: gitnexus augment <pattern>
8
8
  * Returns enriched text to stdout.
package/dist/cli/index.js CHANGED
@@ -21,9 +21,14 @@ program
21
21
  'Optional [limit] overrides the 50,000-node safety cap; pass 0 to disable the cap entirely.')
22
22
  .option('--drop-embeddings', 'Drop existing embeddings on rebuild. By default, an `analyze` without `--embeddings` ' +
23
23
  'preserves any embeddings already present in the index.')
24
- .option('--skills', 'Generate repo-specific skill files from detected communities')
24
+ .option('--skills', 'Generate repo-specific skill files from detected communities ' +
25
+ '(no-op when --index-only is also set).')
25
26
  .option('--skip-agents-md', 'Skip updating the gitnexus section in AGENTS.md and CLAUDE.md')
26
27
  .option('--no-stats', 'Omit volatile file/symbol counts from AGENTS.md and CLAUDE.md')
28
+ .option('--skip-skills', 'Skip installing standard GitNexus skill files under .claude/skills/gitnexus/. ' +
29
+ 'Does not suppress community skills from --skills (those use .claude/skills/generated/). ' +
30
+ 'Use --index-only to skip all AI-context file injection.')
31
+ .option('--index-only', 'Pure index mode: skip all file injection (AGENTS.md, CLAUDE.md, skills)')
27
32
  .option('--skip-git', 'Treat the provided path/cwd as the index root and skip parent git-root discovery')
28
33
  .option('--name <alias>', 'Register this repo under a custom name in ~/.gitnexus/registry.json ' +
29
34
  '(disambiguates repos whose paths share a basename, e.g. two different .../app folders)')
@@ -2,8 +2,8 @@
2
2
  * Augmentation Engine
3
3
  *
4
4
  * Lightweight, fast-path enrichment of search patterns with knowledge graph context.
5
- * Designed to be called from platform hooks (Claude Code PreToolUse, Cursor beforeShellExecution)
6
- * when an agent runs grep/glob/search.
5
+ * Designed to be called from platform hooks (Claude Code PreToolUse, Cursor postToolUse)
6
+ * when an agent runs grep/glob/read/search.
7
7
  *
8
8
  * Performance target: <500ms cold start, <200ms warm.
9
9
  *
@@ -2,8 +2,8 @@
2
2
  * Augmentation Engine
3
3
  *
4
4
  * Lightweight, fast-path enrichment of search patterns with knowledge graph context.
5
- * Designed to be called from platform hooks (Claude Code PreToolUse, Cursor beforeShellExecution)
6
- * when an agent runs grep/glob/search.
5
+ * Designed to be called from platform hooks (Claude Code PreToolUse, Cursor postToolUse)
6
+ * when an agent runs grep/glob/read/search.
7
7
  *
8
8
  * Performance target: <500ms cold start, <200ms warm.
9
9
  *
@@ -76,6 +76,9 @@ async function findRepoForCwd(cwd) {
76
76
  export async function augment(pattern, cwd) {
77
77
  if (!pattern || pattern.length < 3)
78
78
  return '';
79
+ const patternFirstWord = pattern.trim().replace(/'/g, "''").split(/\s+/)[0];
80
+ if (!patternFirstWord || patternFirstWord.length < 2)
81
+ return '';
79
82
  const workDir = cwd || process.cwd();
80
83
  try {
81
84
  const repo = await findRepoForCwd(workDir);
@@ -90,9 +93,7 @@ export async function augment(pattern, cwd) {
90
93
  await initLbug(repoId, repo.lbugPath);
91
94
  }
92
95
  // Step 1: BM25 search (fast, no embeddings)
93
- const { results: bm25Results } = await searchFTSFromLbug(pattern, 10, repoId);
94
- if (bm25Results.length === 0)
95
- return '';
96
+ const { results: bm25Results, ftsAvailable } = await searchFTSFromLbug(pattern, 10, repoId);
96
97
  // Step 2: Map BM25 file results to symbols
97
98
  const symbolMatches = [];
98
99
  for (const result of bm25Results.slice(0, 5)) {
@@ -100,7 +101,7 @@ export async function augment(pattern, cwd) {
100
101
  try {
101
102
  const symbols = await executeQuery(repoId, `
102
103
  MATCH (n) WHERE n.filePath = '${escaped}'
103
- AND n.name CONTAINS '${pattern.replace(/'/g, "''").split(/\s+/)[0]}'
104
+ AND n.name CONTAINS '${patternFirstWord}'
104
105
  RETURN n.id AS id, n.name AS name, labels(n)[0] AS type, n.filePath AS filePath
105
106
  LIMIT 3
106
107
  `);
@@ -118,6 +119,25 @@ export async function augment(pattern, cwd) {
118
119
  /* skip */
119
120
  }
120
121
  }
122
+ // When FTS indexes are unavailable (read-only DB, first run before indexes are built),
123
+ // fall back to a direct name CONTAINS query so enrichment still works.
124
+ if (symbolMatches.length === 0 && !ftsAvailable) {
125
+ const fallbackRows = await executeQuery(repoId, `
126
+ MATCH (n)
127
+ WHERE n.name CONTAINS '${patternFirstWord}'
128
+ RETURN n.id AS id, n.name AS name, labels(n)[0] AS type, n.filePath AS filePath
129
+ LIMIT 5
130
+ `).catch(() => []);
131
+ for (const sym of fallbackRows) {
132
+ symbolMatches.push({
133
+ nodeId: sym.id || sym[0],
134
+ name: sym.name || sym[1],
135
+ type: sym.type || sym[2],
136
+ filePath: sym.filePath || sym[3],
137
+ score: 1.0,
138
+ });
139
+ }
140
+ }
121
141
  if (symbolMatches.length === 0)
122
142
  return '';
123
143
  // Step 3: Batch-fetch callers/callees/processes/cohesion for top matches
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import { getLanguageFromFilename } from '../../_shared/index.js';
7
7
  import { createParserForLanguage, isLanguageAvailable, resolveLanguageKey, } from '../tree-sitter/parser-loader.js';
8
+ import { parseSourceSafe } from '../tree-sitter/safe-parse.js';
8
9
  const parserCache = new Map();
9
10
  /**
10
11
  * Ensure parser is initialized and language is loaded, then parse content.
@@ -22,7 +23,7 @@ export const ensureAndParse = async (content, filePath) => {
22
23
  parserInstance = await createParserForLanguage(language, filePath);
23
24
  parserCache.set(parserKey, parserInstance);
24
25
  }
25
- return parserInstance.parse(content);
26
+ return parseSourceSafe(parserInstance, content);
26
27
  };
27
28
  const FUNCTION_LIKE_TYPES = new Set([
28
29
  'function_declaration',
@@ -30,8 +30,11 @@ const readConfig = () => {
30
30
  const rawDims = process.env.GITNEXUS_EMBEDDING_DIMS;
31
31
  let dimensions;
32
32
  if (rawDims !== undefined) {
33
+ if (!/^\d+$/.test(rawDims)) {
34
+ throw new Error(`GITNEXUS_EMBEDDING_DIMS must be a positive integer, got "${rawDims}"`);
35
+ }
33
36
  const parsed = parseInt(rawDims, 10);
34
- if (Number.isNaN(parsed) || parsed <= 0) {
37
+ if (parsed <= 0) {
35
38
  throw new Error(`GITNEXUS_EMBEDDING_DIMS must be a positive integer, got "${rawDims}"`);
36
39
  }
37
40
  dimensions = parsed;
@@ -73,9 +76,22 @@ const safeUrl = (url) => {
73
76
  * @param model - Model name for the request body
74
77
  * @param apiKey - Bearer token (only used in Authorization header)
75
78
  * @param batchIndex - Logical batch number (for error context)
76
- * @param attempt - Current retry attempt (internal)
79
+ * @param dimensions - Optional output-vector size. When provided, sent as
80
+ * the `dimensions` field in the request body. Endpoints that implement
81
+ * Matryoshka truncation (OpenAI text-embedding-3-*, Cohere embed-v3,
82
+ * Voyage) return a truncated vector at that size; endpoints that do not
83
+ * recognise the field may ignore it or return 400. Leave
84
+ * `GITNEXUS_EMBEDDING_DIMS` unset for strict backends that reject
85
+ * unknown fields.
77
86
  */
78
- const httpEmbedBatch = async (url, batch, model, apiKey, batchIndex = 0) => {
87
+ const httpEmbedBatch = async (url, batch, model, apiKey, batchIndex = 0, dimensions) => {
88
+ const requestBody = {
89
+ input: batch,
90
+ model,
91
+ };
92
+ if (dimensions !== undefined) {
93
+ requestBody.dimensions = dimensions;
94
+ }
79
95
  let resp;
80
96
  try {
81
97
  resp = await resilientFetch(url, {
@@ -85,7 +101,7 @@ const httpEmbedBatch = async (url, batch, model, apiKey, batchIndex = 0) => {
85
101
  'Content-Type': 'application/json',
86
102
  Authorization: `Bearer ${apiKey}`,
87
103
  },
88
- body: JSON.stringify({ input: batch, model }),
104
+ body: JSON.stringify(requestBody),
89
105
  }, {
90
106
  breakerKey: HTTP_BREAKER_KEY,
91
107
  retry: { maxAttempts: HTTP_MAX_RETRIES + 1, baseDelayMs: HTTP_RETRY_BACKOFF_MS },
@@ -130,7 +146,7 @@ export const httpEmbed = async (texts) => {
130
146
  for (let i = 0; i < texts.length; i += HTTP_BATCH_SIZE) {
131
147
  const batch = texts.slice(i, i + HTTP_BATCH_SIZE);
132
148
  const batchIndex = Math.floor(i / HTTP_BATCH_SIZE);
133
- const items = await httpEmbedBatch(url, batch, config.model, config.apiKey, batchIndex);
149
+ const items = await httpEmbedBatch(url, batch, config.model, config.apiKey, batchIndex, config.dimensions);
134
150
  if (items.length !== batch.length) {
135
151
  throw new Error(`Embedding endpoint returned ${items.length} vectors for ${batch.length} texts ` +
136
152
  `(${safeUrl(url)}, batch ${batchIndex})`);
@@ -164,7 +180,7 @@ export const httpEmbedQuery = async (text) => {
164
180
  if (!config)
165
181
  throw new Error('HTTP embedding not configured');
166
182
  const url = `${config.baseUrl}/embeddings`;
167
- const items = await httpEmbedBatch(url, [text], config.model, config.apiKey);
183
+ const items = await httpEmbedBatch(url, [text], config.model, config.apiKey, 0, config.dimensions);
168
184
  if (!items.length) {
169
185
  throw new Error(`Embedding endpoint returned empty response (${safeUrl(url)})`);
170
186
  }
@@ -3,6 +3,7 @@ import { glob } from 'glob';
3
3
  import Parser from 'tree-sitter';
4
4
  import { createIgnoreFilter } from '../../../config/ignore-service.js';
5
5
  import { readSafe } from './fs-utils.js';
6
+ import { parseSourceSafe } from '../../tree-sitter/safe-parse.js';
6
7
  import { logger } from '../../logger.js';
7
8
  import { GRPC_SCAN_GLOB, getPluginForFile, hasProtoPlugin, } from './grpc-patterns/index.js';
8
9
  /**
@@ -352,7 +353,7 @@ export class GrpcExtractor {
352
353
  let detections = [];
353
354
  try {
354
355
  parser.setLanguage(plugin.language);
355
- const tree = parser.parse(content);
356
+ const tree = parseSourceSafe(parser, content);
356
357
  detections = plugin.scan(tree);
357
358
  }
358
359
  catch {