gitnexus 1.6.9 → 1.6.10-aptos.0

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 (539) hide show
  1. package/README.md +211 -53
  2. package/dist/_shared/graph/types.d.ts +67 -3
  3. package/dist/_shared/graph/types.d.ts.map +1 -1
  4. package/dist/_shared/index.d.ts +1 -0
  5. package/dist/_shared/index.d.ts.map +1 -1
  6. package/dist/_shared/index.js.map +1 -1
  7. package/dist/_shared/integrations/resilient-fetch.d.ts +3 -1
  8. package/dist/_shared/integrations/resilient-fetch.d.ts.map +1 -1
  9. package/dist/_shared/integrations/resilient-fetch.js +4 -3
  10. package/dist/_shared/integrations/resilient-fetch.js.map +1 -1
  11. package/dist/_shared/language-detection.d.ts.map +1 -1
  12. package/dist/_shared/language-detection.js +2 -0
  13. package/dist/_shared/language-detection.js.map +1 -1
  14. package/dist/_shared/languages.d.ts +2 -0
  15. package/dist/_shared/languages.d.ts.map +1 -1
  16. package/dist/_shared/languages.js +2 -0
  17. package/dist/_shared/languages.js.map +1 -1
  18. package/dist/_shared/lbug/schema-constants.d.ts +2 -2
  19. package/dist/_shared/lbug/schema-constants.d.ts.map +1 -1
  20. package/dist/_shared/lbug/schema-constants.js +8 -0
  21. package/dist/_shared/lbug/schema-constants.js.map +1 -1
  22. package/dist/_shared/pipeline.d.ts +1 -1
  23. package/dist/_shared/pipeline.d.ts.map +1 -1
  24. package/dist/_shared/scope-resolution/callable-flow-site.d.ts +110 -0
  25. package/dist/_shared/scope-resolution/callable-flow-site.d.ts.map +1 -0
  26. package/dist/_shared/scope-resolution/callable-flow-site.js +11 -0
  27. package/dist/_shared/scope-resolution/callable-flow-site.js.map +1 -0
  28. package/dist/_shared/scope-resolution/finalize-algorithm.d.ts +1 -1
  29. package/dist/_shared/scope-resolution/finalize-algorithm.d.ts.map +1 -1
  30. package/dist/_shared/scope-resolution/finalize-algorithm.js +1 -1
  31. package/dist/_shared/scope-resolution/finalize-algorithm.js.map +1 -1
  32. package/dist/_shared/scope-resolution/language-classification.d.ts.map +1 -1
  33. package/dist/_shared/scope-resolution/language-classification.js +1 -0
  34. package/dist/_shared/scope-resolution/language-classification.js.map +1 -1
  35. package/dist/_shared/scope-resolution/parsed-file.d.ts +7 -0
  36. package/dist/_shared/scope-resolution/parsed-file.d.ts.map +1 -1
  37. package/dist/_shared/scope-resolution/reference-site.d.ts +9 -1
  38. package/dist/_shared/scope-resolution/reference-site.d.ts.map +1 -1
  39. package/dist/_shared/scope-resolution/types.d.ts +20 -3
  40. package/dist/_shared/scope-resolution/types.d.ts.map +1 -1
  41. package/dist/cli/ai-context.d.ts +1 -1
  42. package/dist/cli/ai-context.js +25 -44
  43. package/dist/cli/analyze.d.ts +5 -2
  44. package/dist/cli/analyze.js +197 -11
  45. package/dist/cli/clean.js +17 -3
  46. package/dist/cli/cli-message.d.ts +1 -1
  47. package/dist/cli/doctor.d.ts +18 -0
  48. package/dist/cli/doctor.js +96 -5
  49. package/dist/cli/editor-targets.d.ts +17 -2
  50. package/dist/cli/editor-targets.js +44 -0
  51. package/dist/cli/embeddings.d.ts +12 -0
  52. package/dist/cli/embeddings.js +49 -0
  53. package/dist/cli/eval-server.d.ts +23 -1
  54. package/dist/cli/eval-server.js +126 -8
  55. package/dist/cli/help-i18n.js +6 -0
  56. package/dist/cli/i18n/en.d.ts +18 -8
  57. package/dist/cli/i18n/en.js +18 -8
  58. package/dist/cli/i18n/resources.d.ts +28 -8
  59. package/dist/cli/i18n/zh-CN.d.ts +10 -0
  60. package/dist/cli/i18n/zh-CN.js +18 -8
  61. package/dist/cli/index.js +21 -7
  62. package/dist/cli/lazy-action.d.ts +7 -0
  63. package/dist/cli/lazy-action.js +27 -0
  64. package/dist/cli/mcp.js +6 -3
  65. package/dist/cli/move-availability.d.ts +5 -0
  66. package/dist/cli/move-availability.js +11 -0
  67. package/dist/cli/setup.d.ts +8 -0
  68. package/dist/cli/setup.js +230 -32
  69. package/dist/cli/skill-gen.js +38 -18
  70. package/dist/cli/standard-skills.d.ts +76 -0
  71. package/dist/cli/standard-skills.js +45 -0
  72. package/dist/cli/status.d.ts +4 -1
  73. package/dist/cli/status.js +57 -4
  74. package/dist/cli/tool.js +11 -0
  75. package/dist/cli/uninstall.js +77 -18
  76. package/dist/cli/wiki.d.ts +1 -0
  77. package/dist/cli/wiki.js +7 -1
  78. package/dist/config/ignore-service.d.ts +2 -0
  79. package/dist/config/ignore-service.js +27 -0
  80. package/dist/core/analysis-features.d.ts +21 -0
  81. package/dist/core/analysis-features.js +59 -0
  82. package/dist/core/analyzer-identity.d.ts +74 -0
  83. package/dist/core/analyzer-identity.js +1820 -0
  84. package/dist/core/augmentation/engine.js +13 -8
  85. package/dist/core/embeddings/embedder.d.ts +3 -2
  86. package/dist/core/embeddings/embedder.js +24 -7
  87. package/dist/core/embeddings/embedding-identity.d.ts +11 -0
  88. package/dist/core/embeddings/embedding-identity.js +24 -0
  89. package/dist/core/embeddings/embedding-pipeline.d.ts +36 -1
  90. package/dist/core/embeddings/embedding-pipeline.js +100 -9
  91. package/dist/core/embeddings/http-client.d.ts +33 -3
  92. package/dist/core/embeddings/http-client.js +237 -25
  93. package/dist/core/embeddings/node-module-compat.d.ts +25 -0
  94. package/dist/core/embeddings/node-module-compat.js +25 -0
  95. package/dist/core/embeddings/onnxruntime-common-resolver.js +8 -5
  96. package/dist/core/embeddings/onnxruntime-node-resolver.js +33 -7
  97. package/dist/core/embeddings/runtime-install.d.ts +119 -0
  98. package/dist/core/embeddings/runtime-install.js +372 -0
  99. package/dist/core/embeddings/runtime-support.d.ts +48 -17
  100. package/dist/core/embeddings/runtime-support.js +96 -0
  101. package/dist/core/git-staleness.js +1 -1
  102. package/dist/core/group/bridge-db.js +2 -0
  103. package/dist/core/group/extractors/http-patterns/python.js +246 -108
  104. package/dist/core/group/extractors/manifest-extractor.js +4 -0
  105. package/dist/core/incremental/escalation-gate.d.ts +38 -0
  106. package/dist/core/incremental/escalation-gate.js +48 -0
  107. package/dist/core/incremental/shadow-candidates.d.ts +3 -3
  108. package/dist/core/incremental/shadow-candidates.js +3 -3
  109. package/dist/core/incremental/subgraph-extract.d.ts +2 -2
  110. package/dist/core/incremental/subgraph-extract.js +2 -2
  111. package/dist/core/index-freshness.d.ts +5 -0
  112. package/dist/core/index-freshness.js +13 -0
  113. package/dist/core/ingestion/class-extractors/configs/jvm.js +29 -0
  114. package/dist/core/ingestion/cobol/cobol-preprocessor.js +1 -1
  115. package/dist/core/ingestion/cobol/jcl-processor.js +9 -8
  116. package/dist/core/ingestion/cobol-processor.js +27 -26
  117. package/dist/core/ingestion/community-processor.d.ts +51 -1
  118. package/dist/core/ingestion/community-processor.js +323 -64
  119. package/dist/core/ingestion/emit-references.js +7 -2
  120. package/dist/core/ingestion/filesystem-walker.js +4 -0
  121. package/dist/core/ingestion/frameworks/spring/analysis-features.d.ts +3 -0
  122. package/dist/core/ingestion/frameworks/spring/analysis-features.js +7 -0
  123. package/dist/core/ingestion/frameworks/spring/bean-candidates.d.ts +30 -0
  124. package/dist/core/ingestion/frameworks/spring/bean-candidates.js +182 -0
  125. package/dist/core/ingestion/frameworks/spring/bean-catalog.d.ts +12 -0
  126. package/dist/core/ingestion/frameworks/spring/bean-catalog.js +26 -0
  127. package/dist/core/ingestion/frameworks/spring/config-bindings.d.ts +24 -0
  128. package/dist/core/ingestion/frameworks/spring/config-bindings.js +115 -0
  129. package/dist/core/ingestion/languages/c/captures.js +56 -0
  130. package/dist/core/ingestion/languages/c/query.js +17 -0
  131. package/dist/core/ingestion/languages/c/scope-resolver.js +6 -0
  132. package/dist/core/ingestion/languages/cobol/captures.js +93 -0
  133. package/dist/core/ingestion/languages/cobol/scope-resolver.js +7 -0
  134. package/dist/core/ingestion/languages/cpp/captures.js +365 -75
  135. package/dist/core/ingestion/languages/cpp/scope-resolver.js +14 -0
  136. package/dist/core/ingestion/languages/csharp/captures.js +25 -0
  137. package/dist/core/ingestion/languages/dart/captures.js +90 -2
  138. package/dist/core/ingestion/languages/dart/extension-type-preprocess.d.ts +7 -0
  139. package/dist/core/ingestion/languages/dart/extension-type-preprocess.js +30 -0
  140. package/dist/core/ingestion/languages/dart.js +2 -0
  141. package/dist/core/ingestion/languages/go/captures.js +34 -0
  142. package/dist/core/ingestion/languages/index.d.ts +1 -0
  143. package/dist/core/ingestion/languages/index.js +2 -0
  144. package/dist/core/ingestion/languages/java/analysis-features.d.ts +3 -0
  145. package/dist/core/ingestion/languages/java/analysis-features.js +13 -0
  146. package/dist/core/ingestion/languages/java/capture-side-channel.d.ts +22 -0
  147. package/dist/core/ingestion/languages/java/capture-side-channel.js +58 -0
  148. package/dist/core/ingestion/languages/java/captures.d.ts +4 -3
  149. package/dist/core/ingestion/languages/java/captures.js +193 -17
  150. package/dist/core/ingestion/languages/java/package-facts.d.ts +5 -0
  151. package/dist/core/ingestion/languages/java/package-facts.js +9 -0
  152. package/dist/core/ingestion/languages/java/package-siblings.d.ts +3 -16
  153. package/dist/core/ingestion/languages/java/package-siblings.js +8 -147
  154. package/dist/core/ingestion/languages/java/query.js +23 -0
  155. package/dist/core/ingestion/languages/java/scope-resolver.js +23 -0
  156. package/dist/core/ingestion/languages/java/spring-bean-metadata.d.ts +2 -0
  157. package/dist/core/ingestion/languages/java/spring-bean-metadata.js +8 -0
  158. package/dist/core/ingestion/languages/java/spring-config-bindings.d.ts +23 -0
  159. package/dist/core/ingestion/languages/java/spring-config-bindings.js +215 -0
  160. package/dist/core/ingestion/languages/java.js +3 -0
  161. package/dist/core/ingestion/languages/javascript/captures.js +16 -0
  162. package/dist/core/ingestion/languages/javascript/query.js +21 -0
  163. package/dist/core/ingestion/languages/jvm/package-facts.d.ts +35 -0
  164. package/dist/core/ingestion/languages/jvm/package-facts.js +40 -0
  165. package/dist/core/ingestion/languages/jvm/package-siblings.d.ts +14 -0
  166. package/dist/core/ingestion/languages/jvm/package-siblings.js +129 -0
  167. package/dist/core/ingestion/languages/kotlin/capture-side-channel.d.ts +17 -3
  168. package/dist/core/ingestion/languages/kotlin/capture-side-channel.js +42 -8
  169. package/dist/core/ingestion/languages/kotlin/captures.js +59 -0
  170. package/dist/core/ingestion/languages/kotlin/package-facts.d.ts +5 -0
  171. package/dist/core/ingestion/languages/kotlin/package-facts.js +9 -0
  172. package/dist/core/ingestion/languages/kotlin/package-siblings.d.ts +4 -0
  173. package/dist/core/ingestion/languages/kotlin/package-siblings.js +8 -0
  174. package/dist/core/ingestion/languages/kotlin/query.js +19 -0
  175. package/dist/core/ingestion/languages/kotlin/scope-resolver.js +9 -1
  176. package/dist/core/ingestion/languages/kotlin/spring-bean-metadata.d.ts +2 -0
  177. package/dist/core/ingestion/languages/kotlin/spring-bean-metadata.js +8 -0
  178. package/dist/core/ingestion/languages/kotlin.js +5 -6
  179. package/dist/core/ingestion/languages/move.d.ts +1 -0
  180. package/dist/core/ingestion/languages/move.js +27 -0
  181. package/dist/core/ingestion/languages/php/captures.js +40 -0
  182. package/dist/core/ingestion/languages/php/import-decomposer.js +12 -0
  183. package/dist/core/ingestion/languages/php/import-target.d.ts +2 -1
  184. package/dist/core/ingestion/languages/php/import-target.js +110 -2
  185. package/dist/core/ingestion/languages/php/interpret.js +10 -0
  186. package/dist/core/ingestion/languages/php/scope-resolver.js +1 -1
  187. package/dist/core/ingestion/languages/python/captures.d.ts +3 -4
  188. package/dist/core/ingestion/languages/python/captures.js +24 -5
  189. package/dist/core/ingestion/languages/python/interpret.js +4 -0
  190. package/dist/core/ingestion/languages/python/receiver-binding.d.ts +15 -2
  191. package/dist/core/ingestion/languages/python/receiver-binding.js +96 -2
  192. package/dist/core/ingestion/languages/python/simple-hooks.d.ts +5 -5
  193. package/dist/core/ingestion/languages/python/simple-hooks.js +15 -5
  194. package/dist/core/ingestion/languages/ruby/captures.js +42 -0
  195. package/dist/core/ingestion/languages/rust/captures.js +13 -0
  196. package/dist/core/ingestion/languages/rust/interpret.js +18 -0
  197. package/dist/core/ingestion/languages/rust/query.js +9 -0
  198. package/dist/core/ingestion/languages/rust/range-binding.js +6 -2
  199. package/dist/core/ingestion/languages/swift/captures.js +12 -0
  200. package/dist/core/ingestion/languages/typescript/captures.js +21 -0
  201. package/dist/core/ingestion/languages/typescript/nuxt-auto-imports.js +2 -1
  202. package/dist/core/ingestion/languages/typescript/query.js +37 -0
  203. package/dist/core/ingestion/markdown-processor.js +3 -2
  204. package/dist/core/ingestion/model/registration-table.js +1 -0
  205. package/dist/core/ingestion/parsing-processor.d.ts +3 -1
  206. package/dist/core/ingestion/parsing-processor.js +36 -1
  207. package/dist/core/ingestion/pipeline-phases/index.d.ts +2 -0
  208. package/dist/core/ingestion/pipeline-phases/index.js +2 -0
  209. package/dist/core/ingestion/pipeline-phases/parse-impl.js +56 -2
  210. package/dist/core/ingestion/pipeline-phases/parse.d.ts +0 -2
  211. package/dist/core/ingestion/pipeline-phases/parse.js +12 -3
  212. package/dist/core/ingestion/pipeline-phases/processes.d.ts +8 -0
  213. package/dist/core/ingestion/pipeline-phases/processes.js +11 -1
  214. package/dist/core/ingestion/pipeline-phases/spring-config.d.ts +37 -0
  215. package/dist/core/ingestion/pipeline-phases/spring-config.js +433 -0
  216. package/dist/core/ingestion/pipeline-phases/standalone-ingest.d.ts +10 -0
  217. package/dist/core/ingestion/pipeline-phases/standalone-ingest.js +6 -0
  218. package/dist/core/ingestion/pipeline.d.ts +4 -2
  219. package/dist/core/ingestion/pipeline.js +5 -2
  220. package/dist/core/ingestion/resolve-references.js +12 -0
  221. package/dist/core/ingestion/route-extractors/constant-resolver.d.ts +83 -0
  222. package/dist/core/ingestion/route-extractors/constant-resolver.js +131 -0
  223. package/dist/core/ingestion/route-extractors/python-const-resolver.d.ts +75 -0
  224. package/dist/core/ingestion/route-extractors/python-const-resolver.js +299 -0
  225. package/dist/core/ingestion/scope-extractor.js +306 -43
  226. package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +71 -2
  227. package/dist/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.d.ts +7 -7
  228. package/dist/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.js +8 -7
  229. package/dist/core/ingestion/scope-resolution/graph-bridge/edges.d.ts +3 -1
  230. package/dist/core/ingestion/scope-resolution/graph-bridge/edges.js +6 -0
  231. package/dist/core/ingestion/scope-resolution/graph-bridge/ids.js +1 -0
  232. package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +4 -1
  233. package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +7 -2
  234. package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.d.ts +47 -0
  235. package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.js +1138 -0
  236. package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +16 -4
  237. package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +97 -1
  238. package/dist/core/ingestion/scope-resolution/passes/property-dispatch.d.ts +60 -0
  239. package/dist/core/ingestion/scope-resolution/passes/property-dispatch.js +111 -0
  240. package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.d.ts +4 -3
  241. package/dist/core/ingestion/scope-resolution/pipeline/phase.d.ts +5 -0
  242. package/dist/core/ingestion/scope-resolution/pipeline/phase.js +25 -38
  243. package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +6 -0
  244. package/dist/core/ingestion/scope-resolution/pipeline/run.js +147 -35
  245. package/dist/core/ingestion/scope-resolution/resolution-outcome.d.ts +1 -1
  246. package/dist/core/ingestion/scope-resolution/scope/walkers.js +73 -44
  247. package/dist/core/ingestion/taint/typescript-model.js +34 -2
  248. package/dist/core/ingestion/tree-sitter-queries.d.ts +2 -2
  249. package/dist/core/ingestion/tree-sitter-queries.js +23 -2
  250. package/dist/core/ingestion/type-extractors/jvm.js +17 -2
  251. package/dist/core/ingestion/utils/ast-helpers.d.ts +1 -0
  252. package/dist/core/ingestion/utils/ast-helpers.js +153 -2
  253. package/dist/core/ingestion/utils/callable-flow-captures.d.ts +94 -0
  254. package/dist/core/ingestion/utils/callable-flow-captures.js +878 -0
  255. package/dist/core/ingestion/utils/line-base.d.ts +20 -0
  256. package/dist/core/ingestion/utils/line-base.js +20 -0
  257. package/dist/core/ingestion/utils/symbol-labels.d.ts +21 -0
  258. package/dist/core/ingestion/utils/symbol-labels.js +45 -0
  259. package/dist/core/ingestion/workers/parse-worker.d.ts +34 -0
  260. package/dist/core/ingestion/workers/parse-worker.js +40 -5
  261. package/dist/core/ingestion/workers/result-merge.js +4 -0
  262. package/dist/core/ingestion/workers/worker-pool.d.ts +28 -0
  263. package/dist/core/ingestion/workers/worker-pool.js +128 -28
  264. package/dist/core/lbug/csv-generator.d.ts +15 -0
  265. package/dist/core/lbug/csv-generator.js +124 -27
  266. package/dist/core/lbug/cypher-escape.d.ts +20 -0
  267. package/dist/core/lbug/cypher-escape.js +20 -0
  268. package/dist/core/lbug/extension-load-error.d.ts +67 -0
  269. package/dist/core/lbug/extension-load-error.js +326 -0
  270. package/dist/core/lbug/extension-loader.d.ts +17 -2
  271. package/dist/core/lbug/extension-loader.js +38 -13
  272. package/dist/core/lbug/lbug-adapter.d.ts +203 -2
  273. package/dist/core/lbug/lbug-adapter.js +527 -86
  274. package/dist/core/lbug/lbug-config.d.ts +56 -2
  275. package/dist/core/lbug/lbug-config.js +267 -7
  276. package/dist/core/lbug/move-columns.d.ts +7 -0
  277. package/dist/core/lbug/move-columns.js +86 -0
  278. package/dist/core/lbug/native-check.d.ts +40 -0
  279. package/dist/core/lbug/native-check.js +90 -0
  280. package/dist/core/lbug/node-table-layout.d.ts +29 -0
  281. package/dist/core/lbug/node-table-layout.js +119 -0
  282. package/dist/core/lbug/pool-adapter.d.ts +23 -1
  283. package/dist/core/lbug/pool-adapter.js +115 -8
  284. package/dist/core/lbug/schema.d.ts +4 -3
  285. package/dist/core/lbug/schema.js +16 -16
  286. package/dist/core/lbug/sidecar-recovery.d.ts +172 -0
  287. package/dist/core/lbug/sidecar-recovery.js +418 -16
  288. package/dist/core/lbug/wal-checkpoint-driver.js +3 -0
  289. package/dist/core/move/artifact-download.d.ts +19 -0
  290. package/dist/core/move/artifact-download.js +179 -0
  291. package/dist/core/move/compiler-facts.d.ts +120 -0
  292. package/dist/core/move/compiler-facts.js +9 -0
  293. package/dist/core/move/consistency.d.ts +28 -0
  294. package/dist/core/move/consistency.js +98 -0
  295. package/dist/core/move/constants.d.ts +98 -0
  296. package/dist/core/move/constants.js +136 -0
  297. package/dist/core/move/discovery.d.ts +10 -0
  298. package/dist/core/move/discovery.js +22 -0
  299. package/dist/core/move/entry-points.d.ts +14 -0
  300. package/dist/core/move/entry-points.js +40 -0
  301. package/dist/core/move/facts-mapper.d.ts +75 -0
  302. package/dist/core/move/facts-mapper.js +534 -0
  303. package/dist/core/move/install-lock.d.ts +14 -0
  304. package/dist/core/move/install-lock.js +102 -0
  305. package/dist/core/move/install.d.ts +39 -0
  306. package/dist/core/move/install.js +391 -0
  307. package/dist/core/move/mcp-client.d.ts +115 -0
  308. package/dist/core/move/mcp-client.js +436 -0
  309. package/dist/core/move/move-ingest.d.ts +49 -0
  310. package/dist/core/move/move-ingest.js +320 -0
  311. package/dist/core/move/provision.d.ts +19 -0
  312. package/dist/core/move/provision.js +91 -0
  313. package/dist/core/move/release.d.ts +6 -0
  314. package/dist/core/move/release.js +10 -0
  315. package/dist/core/move/symbol-id.d.ts +35 -0
  316. package/dist/core/move/symbol-id.js +65 -0
  317. package/dist/core/move/type-parser.d.ts +11 -0
  318. package/dist/core/move/type-parser.js +38 -0
  319. package/dist/core/platform/capabilities.d.ts +0 -1
  320. package/dist/core/platform/capabilities.js +39 -8
  321. package/dist/core/run-analyze.d.ts +3 -3
  322. package/dist/core/run-analyze.js +1001 -184
  323. package/dist/core/search/fts-indexes.d.ts +31 -0
  324. package/dist/core/search/fts-indexes.js +73 -0
  325. package/dist/core/search/fts-schema.js +2 -0
  326. package/dist/core/tree-sitter/safe-parse.d.ts +8 -3
  327. package/dist/core/tree-sitter/safe-parse.js +21 -7
  328. package/dist/core/wiki/graph-queries.js +6 -5
  329. package/dist/core/wiki/llm-client.d.ts +8 -2
  330. package/dist/core/wiki/llm-client.js +41 -5
  331. package/dist/mcp/core/embedder.js +16 -2
  332. package/dist/mcp/http-transport.d.ts +5 -0
  333. package/dist/mcp/http-transport.js +19 -5
  334. package/dist/mcp/local/bean-metadata.d.ts +2 -0
  335. package/dist/mcp/local/bean-metadata.js +25 -0
  336. package/dist/mcp/local/line-display.d.ts +22 -0
  337. package/dist/mcp/local/line-display.js +3 -0
  338. package/dist/mcp/local/local-backend.d.ts +19 -1
  339. package/dist/mcp/local/local-backend.js +402 -155
  340. package/dist/mcp/local/pdg-impact.d.ts +5 -3
  341. package/dist/mcp/local/pdg-impact.js +5 -2
  342. package/dist/mcp/output-budget.d.ts +5 -0
  343. package/dist/mcp/output-budget.js +52 -0
  344. package/dist/mcp/read-only-policy.d.ts +12 -0
  345. package/dist/mcp/read-only-policy.js +102 -0
  346. package/dist/mcp/repository-policy.d.ts +34 -0
  347. package/dist/mcp/repository-policy.js +328 -0
  348. package/dist/mcp/resources.js +32 -5
  349. package/dist/mcp/server.d.ts +5 -2
  350. package/dist/mcp/server.js +29 -9
  351. package/dist/mcp/tools.d.ts +0 -8
  352. package/dist/mcp/tools.js +102 -5
  353. package/dist/server/analyze-job.d.ts +3 -0
  354. package/dist/server/analyze-job.js +17 -0
  355. package/dist/server/analyze-launch.d.ts +6 -0
  356. package/dist/server/analyze-launch.js +82 -6
  357. package/dist/server/analyze-worker-core.d.ts +2 -1
  358. package/dist/server/analyze-worker-core.js +5 -2
  359. package/dist/server/analyze-worker.js +29 -6
  360. package/dist/server/api.d.ts +30 -0
  361. package/dist/server/api.js +120 -34
  362. package/dist/server/mcp-http.d.ts +1 -1
  363. package/dist/server/mcp-http.js +4 -2
  364. package/dist/server/upload-ingest.js +2 -1
  365. package/dist/server/validation.js +2 -1
  366. package/dist/storage/git.d.ts +31 -0
  367. package/dist/storage/git.js +111 -1
  368. package/dist/storage/parse-cache.js +7 -1
  369. package/dist/storage/parsedfile-store.d.ts +8 -0
  370. package/dist/storage/parsedfile-store.js +165 -1
  371. package/dist/storage/repo-manager.d.ts +194 -2
  372. package/dist/storage/repo-manager.js +56 -1
  373. package/hooks/antigravity/gitnexus-antigravity-hook.cjs +50 -3
  374. package/hooks/claude/gitnexus-hook.cjs +59 -9
  375. package/hooks/claude/pre-tool-use.sh +0 -0
  376. package/hooks/claude/session-start.sh +0 -0
  377. package/package.json +21 -15
  378. package/scripts/cross-platform-tests.ts +56 -0
  379. package/scripts/ensure-fts.ts +43 -0
  380. package/scripts/install-duckdb-extension.mjs +85 -24
  381. package/scripts/run-cross-platform.ts +61 -6
  382. package/scripts/shard-arg.ts +30 -0
  383. package/scripts/sync-plugin-manifests.mjs +192 -0
  384. package/skills/gitnexus-lfg/README.md +55 -0
  385. package/skills/gitnexus-lfg/SKILL.md +86 -0
  386. package/skills/gitnexus-plan/README.md +142 -0
  387. package/skills/gitnexus-plan/SKILL.md +348 -0
  388. package/skills/gitnexus-plan/references/context-ledger.md +137 -0
  389. package/skills/gitnexus-plan/references/context-pack.md +126 -0
  390. package/skills/gitnexus-plan/references/evidence-provenance.md +272 -0
  391. package/skills/gitnexus-plan/references/pdg-slice.md +109 -0
  392. package/skills/gitnexus-plan/references/plan-template.md +201 -0
  393. package/skills/gitnexus-plan/scripts/evidence-provenance.mjs +2084 -0
  394. package/skills/gitnexus-review/SKILL.md +273 -0
  395. package/skills/gitnexus-review/ci-personas/ci-adversarial-lens.md +42 -0
  396. package/skills/gitnexus-review/ci-personas/ci-blast-radius-lens.md +39 -0
  397. package/skills/gitnexus-review/ci-personas/ci-correctness-lens.md +37 -0
  398. package/skills/gitnexus-review/ci-personas/ci-coverage-lens.md +40 -0
  399. package/skills/gitnexus-review/ci-personas/ci-critic-lens.md +42 -0
  400. package/skills/gitnexus-review/ci-personas/ci-security-lens.md +39 -0
  401. package/skills/gitnexus-work/README.md +71 -0
  402. package/skills/gitnexus-work/SKILL.md +269 -0
  403. package/skills/gitnexus-work/references/evidence-provenance.md +272 -0
  404. package/skills/gitnexus-work/scripts/evidence-provenance.mjs +2084 -0
  405. package/web/assets/ProcessFlowModal-B_bfBySy.js +22 -0
  406. package/web/assets/__vite-browser-external-bMKyYQkO.js +1 -0
  407. package/web/assets/agent-Bqxn-abU.js +626 -0
  408. package/web/assets/architecture-7EHR7CIX-6QZW5X65-BVWFvYz2.js +1 -0
  409. package/web/assets/architectureDiagram-UL44E2DR-CmG3uPWf.js +36 -0
  410. package/web/assets/{blockDiagram-7IZFK4PR-BkWhpzWB.js → blockDiagram-7IZFK4PR-DBefcjof.js} +7 -7
  411. package/web/assets/{c4Diagram-Y2BXMSZH-DtBvpzWD.js → c4Diagram-Y2BXMSZH-EjWnjEJl.js} +6 -6
  412. package/web/assets/chunk-2T2R6R2M-Bb6Sy3_j.js +4 -0
  413. package/web/assets/chunk-2UTLFMKG-CXlhF3Pt.js +1 -0
  414. package/web/assets/chunk-3SSMPTDK-rPsRM1x0.js +321 -0
  415. package/web/assets/chunk-4R4BOZG6-Be_F0JoX.js +159 -0
  416. package/web/assets/{chunk-6764PJDD-DpIS7hxD.js → chunk-6764PJDD-C7xxk063.js} +1 -1
  417. package/web/assets/chunk-67TQ5CYL-CA7OhIEf.js +124 -0
  418. package/web/assets/chunk-7FYTHRHK-CsmYIswB.js +32 -0
  419. package/web/assets/chunk-7J6CGLKN-BlKwgXKs.js +10 -0
  420. package/web/assets/chunk-7W6UQGC5-pyKGssV3.js +1 -0
  421. package/web/assets/chunk-C62D2QBJ-3gdL8EKc.js +1 -0
  422. package/web/assets/chunk-CEXFNPSA-CjwtMDkc.js +1 -0
  423. package/web/assets/{chunk-INKRHTLW-Nu4ri9P-.js → chunk-INKRHTLW-Ckl3_KkO.js} +13 -13
  424. package/web/assets/chunk-J5EP6P6S-L19oz55R.js +1 -0
  425. package/web/assets/{chunk-KGFNY3KK-JGMJvKCK.js → chunk-KGFNY3KK-BZeP-55u.js} +17 -17
  426. package/web/assets/chunk-KGYTTC2M-zm6n242I.js +1 -0
  427. package/web/assets/{chunk-KRXBNO2N-BW5o0KUN.js → chunk-KRXBNO2N-C-UNuKKf.js} +1 -1
  428. package/web/assets/{chunk-LCXTWHL2-CfLLCywY.js → chunk-LCXTWHL2-C162wE5z.js} +5 -5
  429. package/web/assets/chunk-LII3EMHJ-BL6lKJ_P.js +1 -0
  430. package/web/assets/chunk-LRIF4GLE-n59lhprL.js +1 -0
  431. package/web/assets/chunk-QA3QBVWF-DVXPOIxe.js +2 -0
  432. package/web/assets/chunk-RERM46MO-B5dAdWpP.js +1 -0
  433. package/web/assets/chunk-RG4AUYOV-ZNgyLFq6.js +206 -0
  434. package/web/assets/chunk-RKZBBQEN-MyIQbGgD.js +1 -0
  435. package/web/assets/chunk-RLI5ZMPA-CkXZ0y0U.js +1 -0
  436. package/web/assets/chunk-T2UQINTJ-BEyXhZWe.js +1 -0
  437. package/web/assets/chunk-UP6H54XL-BG-n7qDp.js +1 -0
  438. package/web/assets/chunk-UXSXWOXI-CW1_r5cS.js +1 -0
  439. package/web/assets/chunk-UY5QBCOK-ByqTVLvh.js +1 -0
  440. package/web/assets/chunk-VU6ZFW4Y-BLeasdkU.js +2 -0
  441. package/web/assets/{chunk-W44A43WB-JqMLIpR0.js → chunk-W44A43WB-BN8EQc_u.js} +1 -1
  442. package/web/assets/chunk-ZXARS5L4-C3v-4Fsw.js +1 -0
  443. package/web/assets/classDiagram-KGZ6W3CR-olpO3fMe.js +1 -0
  444. package/web/assets/classDiagram-v2-72OJOZXJ-olpO3fMe.js +1 -0
  445. package/web/assets/cose-bilkent-UX7MHV2Q-BmnZ7Mvj.js +1 -0
  446. package/web/assets/dagre-ND4H6XIP-CY4iIF7v.js +4 -0
  447. package/web/assets/diagram-3NCE3AQN-CO6QpzEE.js +43 -0
  448. package/web/assets/diagram-GF46GFSD-B2atbzmU.js +24 -0
  449. package/web/assets/diagram-HNR7UZ2L-DVRltWbL.js +3 -0
  450. package/web/assets/diagram-QXG6HAR7-DR6AHD2h.js +24 -0
  451. package/web/assets/diagram-WEQXMOUZ-DkpoMwTL.js +10 -0
  452. package/web/assets/erDiagram-L5TCEMPS-n8g_90bc.js +85 -0
  453. package/web/assets/eventmodeling-FCH6USID-MREXMVOE-CgFBM7e-.js +1 -0
  454. package/web/assets/flowDiagram-H6V6AXG4-SGMDiCkB.js +162 -0
  455. package/web/assets/ganttDiagram-JCBTUEKG-Cb3UBqRS.js +292 -0
  456. package/web/assets/gitGraph-WXDBUCRP-R675I2BI-DCJv7SII.js +1 -0
  457. package/web/assets/gitGraphDiagram-S2ZK5IYY-Bs9CR7tq.js +106 -0
  458. package/web/assets/index-CX_fADmQ.css +2 -0
  459. package/web/assets/index-D1Z3dGGz.js +575 -0
  460. package/web/assets/info-J43DQDTF-KCYPFFUO-BfNy-9Nd.js +1 -0
  461. package/web/assets/infoDiagram-3YFTVSEB-T368on4D.js +2 -0
  462. package/web/assets/{ishikawaDiagram-BNXS4ZKH-DfYpxnE5.js → ishikawaDiagram-BNXS4ZKH-XpjJRU9h.js} +6 -6
  463. package/web/assets/journeyDiagram-M6C3CM3L-C6wjooas.js +139 -0
  464. package/web/assets/kanban-definition-75IXJCU3-5_UVY79g.js +89 -0
  465. package/web/assets/{katex-K3KEBU37-CTc5BslQ.js → katex-K3KEBU37-qRQBy-EZ.js} +2 -2
  466. package/web/assets/{mindmap-definition-2TDM6QVE-DypvbOMQ.js → mindmap-definition-2TDM6QVE-8xDLzk2e.js} +29 -29
  467. package/web/assets/node-Ct_zna8U.js +8 -0
  468. package/web/assets/packet-YPE3B663-LP52Z2RK-D4qkeG9k.js +1 -0
  469. package/web/assets/pie-LRSECV5Y-TCRJHUBD-B_yMKyQa.js +1 -0
  470. package/web/assets/pieDiagram-CU6KROY3-Bv4LpAbr.js +30 -0
  471. package/web/assets/preload-helper-Czpn1I53.js +1 -0
  472. package/web/assets/{quadrantDiagram-VICAPDV7-yXSZ2lLz.js → quadrantDiagram-VICAPDV7-DR54jOeR.js} +6 -6
  473. package/web/assets/radar-GUYGQ44K-RDLRG3WG-DeD6yN_0.js +1 -0
  474. package/web/assets/requirementDiagram-JXO7QTGE-PEkg7sKC.js +84 -0
  475. package/web/assets/rolldown-runtime-QTnfLwEv.js +1 -0
  476. package/web/assets/sankeyDiagram-URQDO5SZ-DDWEtjcs.js +40 -0
  477. package/web/assets/sdk-CzHHH8tD.js +37 -0
  478. package/web/assets/sequenceDiagram-VS2MUI6T-Bv-uwANx.js +162 -0
  479. package/web/assets/src-JV30wyV8.js +1 -0
  480. package/web/assets/stateDiagram-7D4R322I-DVNjmkEq.js +1 -0
  481. package/web/assets/stateDiagram-v2-36443NZ5-CyN4Fh7_.js +1 -0
  482. package/web/assets/timeline-definition-O6YCAMPW-Qmsuo7qS.js +120 -0
  483. package/web/assets/treeView-BLDUP644-QA4HXRO3-CDuSYnd4.js +1 -0
  484. package/web/assets/treemap-LRROVOQU-LLAWBHMP-imazucyJ.js +1 -0
  485. package/web/assets/vennDiagram-MWXL3ELB-BD1iK1SX.js +34 -0
  486. package/web/assets/wardley-L42UT6IY-5TKZOOLJ-DqrT9tB8.js +1 -0
  487. package/web/assets/wardleyDiagram-CUQ6CDDI-D6TzLVob.js +78 -0
  488. package/web/assets/{xychartDiagram-N2JHSOCM-BOLm0eNm.js → xychartDiagram-N2JHSOCM-CoZ_Tits.js} +6 -6
  489. package/web/index.html +18 -10
  490. package/skills/gitnexus-pr-review.md +0 -163
  491. package/web/assets/agent-Dli_x7bU.js +0 -660
  492. package/web/assets/architecture-7EHR7CIX-6QZW5X65-DxJw65fT.js +0 -1
  493. package/web/assets/architectureDiagram-UL44E2DR-dEkqUZN9.js +0 -36
  494. package/web/assets/chunk-3SSMPTDK-B4_etUhr.js +0 -321
  495. package/web/assets/chunk-67TQ5CYL-4sNPJU1q.js +0 -124
  496. package/web/assets/chunk-7W6UQGC5-KyEG0HQg.js +0 -1
  497. package/web/assets/chunk-KGYTTC2M-CWC_c3H9.js +0 -161
  498. package/web/assets/chunk-LII3EMHJ-D-jm-dLa.js +0 -1
  499. package/web/assets/chunk-QA3QBVWF-BgRW3SXd.js +0 -2
  500. package/web/assets/chunk-RG4AUYOV-CqWzWsV3.js +0 -206
  501. package/web/assets/chunk-T2UQINTJ-DSBqkzH7.js +0 -1
  502. package/web/assets/chunk-UY5QBCOK-DyF0vyGd.js +0 -1
  503. package/web/assets/chunk-ZXARS5L4-CxN8oiwI.js +0 -1
  504. package/web/assets/classDiagram-KGZ6W3CR-CMne4tG9.js +0 -1
  505. package/web/assets/classDiagram-v2-72OJOZXJ-CMne4tG9.js +0 -1
  506. package/web/assets/cose-bilkent-UX7MHV2Q-D71wNYRJ.js +0 -1
  507. package/web/assets/dagre-ND4H6XIP-Co5rRx9X.js +0 -4
  508. package/web/assets/diagram-3NCE3AQN-DBp4O00j.js +0 -43
  509. package/web/assets/diagram-GF46GFSD-6N_8yS0i.js +0 -24
  510. package/web/assets/diagram-HNR7UZ2L-DFCfd5LI.js +0 -3
  511. package/web/assets/diagram-QXG6HAR7-Di093rFg.js +0 -24
  512. package/web/assets/diagram-WEQXMOUZ-DZWi4SUN.js +0 -10
  513. package/web/assets/erDiagram-L5TCEMPS-8X1y6R4Y.js +0 -85
  514. package/web/assets/eventmodeling-FCH6USID-MREXMVOE-BQm9QzEa.js +0 -1
  515. package/web/assets/flowDiagram-H6V6AXG4-CMpY8Ufn.js +0 -162
  516. package/web/assets/ganttDiagram-JCBTUEKG-D3iL2Aet.js +0 -292
  517. package/web/assets/gitGraph-WXDBUCRP-R675I2BI-Cr_Bm2Nb.js +0 -1
  518. package/web/assets/gitGraphDiagram-S2ZK5IYY-CPIDgxGm.js +0 -106
  519. package/web/assets/index-KctnI3Vq.js +0 -635
  520. package/web/assets/index-_lgn7hs5.css +0 -2
  521. package/web/assets/info-J43DQDTF-KCYPFFUO-Cs4p2oyk.js +0 -1
  522. package/web/assets/infoDiagram-3YFTVSEB-BaLMZkUg.js +0 -2
  523. package/web/assets/journeyDiagram-M6C3CM3L-CvArszLo.js +0 -139
  524. package/web/assets/kanban-definition-75IXJCU3-CpfVLLf9.js +0 -89
  525. package/web/assets/packet-YPE3B663-LP52Z2RK-CKCrztD2.js +0 -1
  526. package/web/assets/pie-LRSECV5Y-TCRJHUBD-BB7pHqoD.js +0 -1
  527. package/web/assets/pieDiagram-CU6KROY3-s27EFWgP.js +0 -30
  528. package/web/assets/radar-GUYGQ44K-RDLRG3WG-DhoTOcuK.js +0 -1
  529. package/web/assets/requirementDiagram-JXO7QTGE-CWhqInuf.js +0 -84
  530. package/web/assets/sankeyDiagram-URQDO5SZ-1qEjlFIB.js +0 -40
  531. package/web/assets/sequenceDiagram-VS2MUI6T-RyTlZ5cR.js +0 -162
  532. package/web/assets/stateDiagram-7D4R322I-DTjVfX4A.js +0 -1
  533. package/web/assets/stateDiagram-v2-36443NZ5-xY9_k9_Q.js +0 -1
  534. package/web/assets/timeline-definition-O6YCAMPW-DrrqLYAf.js +0 -120
  535. package/web/assets/treeView-BLDUP644-QA4HXRO3-ODehyGKL.js +0 -1
  536. package/web/assets/treemap-LRROVOQU-LLAWBHMP-BfpgC-7o.js +0 -1
  537. package/web/assets/vennDiagram-MWXL3ELB-B0RkWAim.js +0 -34
  538. package/web/assets/wardley-L42UT6IY-5TKZOOLJ-CNeL6VHE.js +0 -1
  539. package/web/assets/wardleyDiagram-CUQ6CDDI-boUxiQ5F.js +0 -78
@@ -0,0 +1,192 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Fail-closed version sync for the plugin manifest surfaces (#2445).
4
+ *
5
+ * `publish.yml` bumps only `gitnexus/package.json` when it cuts an RC, so
6
+ * every RC tag through v1.6.10-rc.28 shipped manifests frozen at the last
7
+ * stable version and failed its own unit suite (the cli-commands version
8
+ * contract). This script pins every version-bearing plugin surface to the
9
+ * package version:
10
+ *
11
+ * - gitnexus-claude-plugin/.claude-plugin/plugin.json (top-level version)
12
+ * - .claude-plugin/marketplace.json (plugins[gitnexus])
13
+ * - gitnexus-claude-plugin/.codex-plugin/plugin.json (top-level version)
14
+ * - .agents/plugins/marketplace.json (plugins[gitnexus])
15
+ * - gitnexus-claude-plugin/skills/<skill>/mcp.json (gitnexus@<version> launch arg, x10)
16
+ *
17
+ * Modes:
18
+ * node scripts/sync-plugin-manifests.mjs rewrite stale surfaces
19
+ * node scripts/sync-plugin-manifests.mjs --check verify only, exit 1 on drift
20
+ *
21
+ * Fail-closed: a missing file, unparseable JSON, an absent version field, or
22
+ * anything other than exactly one `gitnexus` marketplace entry aborts with a
23
+ * non-zero exit rather than letting a release ship a partial sync.
24
+ */
25
+ import { readFileSync, writeFileSync } from 'node:fs';
26
+ import path from 'node:path';
27
+ import { fileURLToPath } from 'node:url';
28
+
29
+ // Plugin skill mcp.json are executable MCP definitions (they launch
30
+ // `npx -y gitnexus@<version> mcp` when a skill starts), not quickstart docs, so
31
+ // they must ship pinned to the released version and be auto-stamped here like
32
+ // the other surfaces — otherwise every skill invocation pulls whatever owns
33
+ // `gitnexus@latest`, independent of the reviewed plugin version. All ten are
34
+ // kept byte-identical (the shipped-skills-sync drift guard enforces it).
35
+ const PLUGIN_SKILL_MCP_DIRS = [
36
+ 'gitnexus-plan',
37
+ 'gitnexus-work',
38
+ 'gitnexus-review',
39
+ 'gitnexus-lfg',
40
+ 'gitnexus-guide',
41
+ 'gitnexus-cli',
42
+ 'gitnexus-debugging',
43
+ 'gitnexus-exploring',
44
+ 'gitnexus-impact-analysis',
45
+ 'gitnexus-refactoring',
46
+ ];
47
+
48
+ const MANIFEST_SURFACES = [
49
+ { file: 'gitnexus-claude-plugin/.claude-plugin/plugin.json', kind: 'plugin' },
50
+ { file: '.claude-plugin/marketplace.json', kind: 'marketplace' },
51
+ { file: 'gitnexus-claude-plugin/.codex-plugin/plugin.json', kind: 'plugin' },
52
+ { file: '.agents/plugins/marketplace.json', kind: 'marketplace' },
53
+ ...PLUGIN_SKILL_MCP_DIRS.map((name) => ({
54
+ file: `gitnexus-claude-plugin/skills/${name}/mcp.json`,
55
+ kind: 'mcp',
56
+ })),
57
+ ];
58
+
59
+ const PLUGIN_NAME = 'gitnexus';
60
+
61
+ function readJson(filePath) {
62
+ let raw;
63
+ try {
64
+ raw = readFileSync(filePath, 'utf8');
65
+ } catch (err) {
66
+ throw new Error(`Cannot read manifest surface ${filePath}: ${err.message}`);
67
+ }
68
+ try {
69
+ return { raw, parsed: JSON.parse(raw) };
70
+ } catch (err) {
71
+ throw new Error(`Manifest surface ${filePath} is not valid JSON: ${err.message}`);
72
+ }
73
+ }
74
+
75
+ function versionTarget(manifest, kind, filePath) {
76
+ if (kind === 'plugin') {
77
+ if (typeof manifest.version !== 'string' || manifest.version.length === 0) {
78
+ throw new Error(`Manifest surface ${filePath} has no version field to sync`);
79
+ }
80
+ return manifest;
81
+ }
82
+ const entries = (Array.isArray(manifest.plugins) ? manifest.plugins : []).filter(
83
+ (plugin) => plugin?.name === PLUGIN_NAME,
84
+ );
85
+ if (entries.length !== 1) {
86
+ throw new Error(
87
+ `Manifest surface ${filePath} must contain exactly one "${PLUGIN_NAME}" plugin entry, found ${entries.length}`,
88
+ );
89
+ }
90
+ if (typeof entries[0].version !== 'string' || entries[0].version.length === 0) {
91
+ throw new Error(`Manifest surface ${filePath} has no version field to sync`);
92
+ }
93
+ return entries[0];
94
+ }
95
+
96
+ /**
97
+ * Resolve the current pinned version and the textual needle for one surface.
98
+ * `plugin`/`marketplace` pin a JSON `"version"` field; `mcp` pins the version
99
+ * inside the `gitnexus@<version>` launch arg. Returns `{ from, needle }` where
100
+ * `needle(v)` renders the exact substring to match/replace for version `v`.
101
+ * Fail-closed on a missing/ambiguous target.
102
+ */
103
+ function versionInfo(manifest, kind, filePath) {
104
+ if (kind === 'mcp') {
105
+ const server = manifest?.mcpServers?.[PLUGIN_NAME];
106
+ const args = Array.isArray(server?.args) ? server.args : [];
107
+ const pins = args.filter((arg) => typeof arg === 'string' && arg.startsWith(`${PLUGIN_NAME}@`));
108
+ if (pins.length !== 1) {
109
+ throw new Error(
110
+ `Manifest surface ${filePath} must contain exactly one "${PLUGIN_NAME}@<version>" launch arg, found ${pins.length}`,
111
+ );
112
+ }
113
+ const from = pins[0].slice(`${PLUGIN_NAME}@`.length);
114
+ if (from.length === 0) {
115
+ throw new Error(`Manifest surface ${filePath} has an empty ${PLUGIN_NAME}@ version`);
116
+ }
117
+ return { from, needle: (value) => `${PLUGIN_NAME}@${value}` };
118
+ }
119
+ const target = versionTarget(manifest, kind, filePath);
120
+ return { from: target.version, needle: (value) => `"version": "${value}"` };
121
+ }
122
+
123
+ /**
124
+ * Sync (or with `check: true`, only inspect) every manifest surface under
125
+ * `rootDir`. Returns `{ version, synced, stale }` where `stale` lists the
126
+ * surfaces that did not match the package version when the run started.
127
+ */
128
+ export function syncPluginManifests(rootDir, { check = false } = {}) {
129
+ const pkgPath = path.join(rootDir, 'gitnexus', 'package.json');
130
+ const version = readJson(pkgPath).parsed.version;
131
+ if (typeof version !== 'string' || version.length === 0) {
132
+ throw new Error(`No version found in ${pkgPath}`);
133
+ }
134
+
135
+ const synced = [];
136
+ const stale = [];
137
+ for (const { file, kind } of MANIFEST_SURFACES) {
138
+ const manifestPath = path.join(rootDir, file);
139
+ const { raw, parsed } = readJson(manifestPath);
140
+ const { from, needle } = versionInfo(parsed, kind, manifestPath);
141
+ if (from === version) continue;
142
+
143
+ stale.push({ file, from });
144
+ if (check) continue;
145
+
146
+ // Textual surgery instead of re-serializing: JSON.stringify would refold
147
+ // arrays and fight prettier, turning a one-line version bump into
148
+ // formatting churn inside the release commit. The needle is built from
149
+ // the current pinned value, and anything other than exactly one
150
+ // occurrence aborts rather than guessing.
151
+ const currentNeedle = needle(from);
152
+ const occurrences = raw.split(currentNeedle).length - 1;
153
+ if (occurrences !== 1) {
154
+ throw new Error(
155
+ `Manifest surface ${manifestPath} has ${occurrences} occurrences of ${currentNeedle}; ` +
156
+ 'expected exactly one, refusing to sync',
157
+ );
158
+ }
159
+ writeFileSync(manifestPath, raw.replace(currentNeedle, needle(version)));
160
+ synced.push(file);
161
+ }
162
+
163
+ return { version, synced, stale };
164
+ }
165
+
166
+ const invokedDirectly =
167
+ process.argv[1] !== undefined && path.resolve(process.argv[1]) === fileURLToPath(import.meta.url);
168
+
169
+ if (invokedDirectly) {
170
+ const check = process.argv.includes('--check');
171
+ const rootDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..');
172
+ const result = syncPluginManifests(rootDir, { check });
173
+
174
+ if (check && result.stale.length > 0) {
175
+ for (const { file, from } of result.stale) {
176
+ console.error(
177
+ `::error::${file} is at ${from} but gitnexus/package.json is at ${result.version}. ` +
178
+ 'Run `node gitnexus/scripts/sync-plugin-manifests.mjs` and commit the result.',
179
+ );
180
+ }
181
+ process.exit(1);
182
+ }
183
+
184
+ for (const file of result.synced) {
185
+ console.log(`synced ${file} -> ${result.version}`);
186
+ }
187
+ console.log(
188
+ result.stale.length === 0 && result.synced.length === 0
189
+ ? `all plugin manifests already at ${result.version}`
190
+ : `plugin manifests now at ${result.version}`,
191
+ );
192
+ }
@@ -0,0 +1,55 @@
1
+ # gitnexus-lfg — plan → gate → work → review
2
+
3
+ Thin pipeline orchestrator over three existing skills: `gitnexus-plan`
4
+ produces the plan (asking up front how deep to go), the user chooses at a
5
+ blocking gate to proceed or stop (an explicit deepen request is still
6
+ honored), `gitnexus-work` executes it as verified atomic commits, and
7
+ `gitnexus-review` reviews the result (the open PR if one exists, else the
8
+ branch diff against the default branch). One bounded fix cycle for review
9
+ findings, then a final report. It never pushes or opens a PR on its own.
10
+
11
+ ## Invocation
12
+
13
+ | CLI | How to invoke |
14
+ |-----|---------------|
15
+ | **Claude Code** | `/gitnexus-lfg <task description>` or `/gitnexus-lfg docs/plans/<plan>.md` |
16
+ | **Codex CLI** | Ask: "run the gitnexus pipeline on <task>" (Codex reads `AGENTS.md`), or install the skill user-level (below) |
17
+
18
+ ### Codex (user-level install)
19
+
20
+ ```
21
+ cp -r .claude/skills/gitnexus-lfg ~/.agents/skills/gitnexus-lfg
22
+ ```
23
+
24
+ Optionally, for an explicit slash command, create
25
+ `~/.codex/prompts/gitnexus-lfg.md`:
26
+
27
+ ```markdown
28
+ ---
29
+ description: GitNexus pipeline — plan (depth asked up front), user gate, work, PR review
30
+ argument-hint: <task description or plan path>
31
+ ---
32
+ Use the gitnexus-lfg skill for: $ARGUMENTS
33
+
34
+ Read `~/.agents/skills/gitnexus-lfg/SKILL.md` (prefer the repo copy at
35
+ `.claude/skills/gitnexus-lfg/SKILL.md` when present) and follow its lanes in
36
+ order, invoking the real gitnexus-plan / gitnexus-work / gitnexus-review
37
+ skills for each lane. Stop at the plan gate for the user's choice.
38
+ ```
39
+
40
+ ## The three lanes
41
+
42
+ | Lane | Skill | Gate |
43
+ |------|-------|------|
44
+ | Plan | `gitnexus-plan` (`.claude/skills/gitnexus-plan/`) | Depth asked up front; blocking gate: proceed / stop |
45
+ | Work | `gitnexus-work` (`.claude/skills/gitnexus-work/`) | Structural drift routes back to the plan gate |
46
+ | Review | `gitnexus-review` (`.claude/skills/gitnexus-review/`) | One fix cycle max, then report |
47
+
48
+ ## Threshold governance (maintainers)
49
+
50
+ The Lane 1 planning boundary (~35 turns) is a promoted benchmark policy from
51
+ the GitNexus repository's `eval/workflow_bench/` paired candidate loop.
52
+ Re-evaluate it offline whenever the named model or tool harness changes, and
53
+ at least every 90 days; update the SKILL.md threshold only after the
54
+ deterministic promotion gate shows no quality regression. Reading agents
55
+ never self-edit it from a live task.
@@ -0,0 +1,86 @@
1
+ ---
2
+ name: gitnexus-lfg
3
+ description: "Use when the user wants the GitNexus engineering pipeline run end-to-end on a task: gitnexus-plan (plan depth chosen up front), a blocking gate to execute with gitnexus-work or stop, finishing with a gitnexus-review of the result. Examples: \"/gitnexus-lfg Add retry support to the ingestion pipeline\", \"run the gitnexus pipeline on this\", \"plan, build and review this feature\"."
4
+ ---
5
+
6
+ # gitnexus-lfg — plan → gate → work → review
7
+
8
+ Thin orchestrator over three existing skills. It adds no engineering logic of
9
+ its own — it sequences `gitnexus-plan`, `gitnexus-work`, and
10
+ `gitnexus-review`, with the user deciding at the plan gate. Run every lane
11
+ by actually invoking the named skill (read its SKILL.md and follow it);
12
+ never inline a summary of what the skill would have done.
13
+
14
+ ```
15
+ /gitnexus-lfg <task description>
16
+ /gitnexus-lfg docs/plans/<existing-plan>.md # skip lane 1, start at the gate
17
+ ```
18
+
19
+ ## Lane 1 — Plan
20
+
21
+ **Boundary triage first.** If the task is plainly below the planning
22
+ boundary — trivial or small-bounded work an agent finishes in well under ~35
23
+ turns (the measured regime where a planning pass costs more than it returns;
24
+ measured in the GitNexus repository's `eval/workflow_bench/`) — say so and
25
+ offer `gitnexus-work` direct mode as an alternative to the full pipeline
26
+ before spending the plan lane. Honor the user's choice.
27
+
28
+ The threshold is a promoted benchmark policy measured offline, not a
29
+ timeless heuristic — never self-edit it from a live task. Its re-evaluation
30
+ governance lives in this skill's README.
31
+
32
+ Otherwise invoke `gitnexus-plan` with the task (knob overrides pass through
33
+ verbatim; `gitnexus-plan` owns the up-front depth question — never ask it
34
+ again here). If the input is already a plan file path, skip to Lane 2. The
35
+ plan lands in `docs/plans/` — record its path; every later lane consumes it.
36
+
37
+ ## Lane 2 — The plan gate (user choice, blocking)
38
+
39
+ Present the plan's chat summary (objective, proposed changes, sequence, top
40
+ risks, open questions, plan path), then ask the user — as a blocking
41
+ question (`AskUserQuestion` in Claude Code; a numbered list in chat on CLIs
42
+ without a blocking tool):
43
+
44
+ 1. **Proceed to work** — continue to Lane 3.
45
+ 2. **Stop here** — the plan file is the deliverable; end the pipeline.
46
+
47
+ Depth was the user's up-front choice in Lane 1, so deepening is not offered
48
+ by default — but honor an explicit request for it at the gate: run
49
+ `gitnexus-plan` Deepen mode on the plan file and return here with the
50
+ strengthened plan, as many times as the user asks. Do not proceed past the
51
+ gate without an explicit choice — the gate is the pipeline's only checkpoint
52
+ and exists precisely because execution is expensive to unwind.
53
+
54
+ **Headless / non-interactive runs:** no one can answer the gate, so end the
55
+ pipeline after Lane 1 — the plan file is the deliverable (gate option 2) —
56
+ and say so in the final report. Never auto-proceed to execution.
57
+
58
+ ## Lane 3 — Work
59
+
60
+ Invoke `gitnexus-work` with the plan path. It re-anchors the plan at HEAD,
61
+ executes the Implementation Sequence as verified atomic commits, refreshes
62
+ the knowledge graph when done (its Phase 4), and reports deviations. If it routes back for re-planning (structural drift), run the
63
+ Deepen pass and return to the Lane 2 gate rather than pushing through.
64
+
65
+ ## Lane 4 — Review
66
+
67
+ Invoke `gitnexus-review` on the completed work. Pass an open PR URL/number
68
+ when one exists; otherwise pass the current branch. The review skill owns
69
+ target resolution, exact-SHA checkout/index alignment, and merge-base
70
+ selection. Do not duplicate that logic here. If work left local changes,
71
+ pass `local` as a second, separately labeled review surface.
72
+
73
+ Surface the review verdict and findings to the user. Findings the user
74
+ wants fixed: those within `gitnexus-work`'s direct-mode bounds (1–2 files,
75
+ no architectural decisions) → hand to `gitnexus-work` direct mode; anything
76
+ larger → offer the plan gate instead (Deepen the plan with the findings, or
77
+ stop). Then re-run this lane's review once. On that re-run, do not start
78
+ another fix cycle even if findings remain — report them and point the user
79
+ at `/gitnexus-work` (or the plan gate) to continue deliberately.
80
+
81
+ ## Final report
82
+
83
+ One message: plan path, deepen cycles run, commits produced, verification
84
+ status, review verdict with unresolved findings, and what (if anything) was
85
+ explicitly left undone. The pipeline does not push or open a PR on its own —
86
+ offer both as next steps.
@@ -0,0 +1,142 @@
1
+ # gitnexus-plan — implementation-ready engineering plans
2
+
3
+ Generates deep, implementation-ready engineering plans by combining GitNexus
4
+ repository intelligence, statement-level Program Dependence Graph analysis,
5
+ and the agent's native targeted source verification.
6
+
7
+ ## Invocation
8
+
9
+ | CLI | How to invoke | Adapter file |
10
+ | ----------------------------- | ------------------------------------------------------------------------------------------------------ | ---------------------------------------------- |
11
+ | **Claude Code** | `/gitnexus-plan <task>` | `.claude/skills/gitnexus-plan/SKILL.md` |
12
+ | **Codex CLI** | Ask: "run gitnexus-plan for <task>" (Codex reads `AGENTS.md`) — or install the user-level prompt below | `AGENTS.md` § Engineering planning & execution |
13
+ | **Any AGENTS.md-aware agent** | Ask it to "read `.claude/skills/gitnexus-plan/SKILL.md` and follow it for <task>" | `AGENTS.md` § Engineering planning & execution |
14
+
15
+ ```
16
+ /gitnexus-plan Add retry support to the ingestion pipeline
17
+ /gitnexus-plan Fix the stale warm-cache invalidation bug in exportedTypeMap
18
+ /gitnexus-plan depth:deep impact_depth:3 Migrate the emit phase to streaming COPY
19
+ ```
20
+
21
+ Output: `docs/plans/YYYY-MM-DD-gitnexus-plan-<slug>.md` — a 13-section plan whose
22
+ section 11 is a machine-readable **implementation context pack** that a
23
+ follow-up agent can consume without re-investigating the repository. Compact
24
+ and full packs both include versioned evidence provenance: a canonical global
25
+ dirty digest and a sorted, per-layer cited-path manifest. An npm-dependency-free,
26
+ versioned Node helper shared byte-for-byte with `gitnexus-work` is the only
27
+ supported serializer, so planner and executor hash identical bytes. The same
28
+ helper is the only supported existing-plan reader and plan writer. Its
29
+ descriptor-anchored `read-plan` receipt binds the canonical path, exact base64
30
+ bytes, and SHA-256 digest before Deepen or execution. The writer accepts a repo-relative
31
+ `docs/plans/<date>-gitnexus-plan-<slug>.md` destination, rejects symlink
32
+ traversal and accidental replacement, and publishes the verified UTF-8
33
+ document through a descriptor-anchored atomic no-replace move. Deepen first
34
+ requires the exact canonical path and digest from one read receipt, preserves
35
+ the prior plan in a verified Git-admin backup, and also publishes without replacement. A safe read/write
36
+ failure blocks the operation; there is no
37
+ external-output or read-only-checkout fallback.
38
+
39
+ ### Codex (user-level install)
40
+
41
+ Codex discovers SKILL.md skills from `~/.agents/skills/` (the same path the
42
+ other `gitnexus-*` skills install to). To make this skill auto-discoverable in
43
+ every Codex session:
44
+
45
+ ```
46
+ cp -r .claude/skills/gitnexus-plan ~/.agents/skills/gitnexus-plan
47
+ ```
48
+
49
+ Codex prompts are user-level only (not repo-shareable). Optionally, for an
50
+ explicit `/gitnexus-plan` slash command, also create
51
+ `~/.codex/prompts/gitnexus-plan.md`:
52
+
53
+ ```markdown
54
+ ---
55
+ description: Implementation-ready engineering plan via GitNexus + PDG + source verification
56
+ argument-hint: <task description>
57
+ ---
58
+
59
+ Use the gitnexus-plan skill for: $ARGUMENTS
60
+
61
+ Read `~/.agents/skills/gitnexus-plan/SKILL.md` (if this repo has its own copy at
62
+ `.claude/skills/gitnexus-plan/SKILL.md`, prefer that one) and follow its phases in
63
+ order, loading its `references/` files at the phases that call for them. Planning
64
+ only — never edit code; the only repo file you write is the plan document.
65
+ ```
66
+
67
+ ## Architecture note: how GitNexus and the agent interact
68
+
69
+ Three layers, strictly ordered:
70
+
71
+ 1. **GitNexus navigates** (`query` → `context` → `impact`/`trace` →
72
+ `cypher` last-resort). The graph answers _where to look_ and _what is
73
+ connected_: execution flows, callers/callees, blast radius, related tests.
74
+ Every call must answer a named planning question.
75
+ 2. **PDG constrains** (`pdg_query` controls/flows, `impact {mode:"pdg",
76
+ direction, line}` statement slices, `explain` for taint). The
77
+ statement-level layers
78
+ answer _what gates and feeds the behavior_ inside the few functions the
79
+ change centers on. Results are filtered into a bounded slice
80
+ (`references/pdg-slice.md`), never dumped.
81
+ 3. **The agent verifies** (targeted line-range reads). Current source is
82
+ authoritative; graph results are navigation hints until verified. On
83
+ disagreement: trust source, record the discrepancy, recommend re-indexing.
84
+
85
+ Token efficiency comes from the **context ledger**
86
+ (`references/context-ledger.md`): every query and read is recorded with the
87
+ question it answered, and nothing is re-fetched unless the source changed, a
88
+ contradiction surfaced, or one of the ledger's defined escalations applies
89
+ (summary→detail drill-down, ambiguity narrowing, a changed parameter answering
90
+ a new question). The ledger also enforces symbol budgets (5 primary /
91
+ 20 related by default), pins dirty working-tree evidence as well as HEAD, and
92
+ uses progressive disclosure to keep the big schemas out of context until the
93
+ phase that needs them.
94
+
95
+ ## Files
96
+
97
+ | File | Purpose |
98
+ | ----------------------------------- | ------------------------------------------------------------------------------------- |
99
+ | `SKILL.md` | The skill: phases 0–5, hard rules, config, fallback |
100
+ | `references/pdg-slice.md` | PDG slice construction: tools, inclusion criteria, schema, security/performance modes |
101
+ | `references/context-ledger.md` | Ledger schema + anti-reread rules |
102
+ | `references/plan-template.md` | The 13-section plan document template |
103
+ | `references/context-pack.md` | Implementation context pack schema + stability contract |
104
+ | `references/evidence-provenance.md` | Versioned byte contract for dirty-tree evidence |
105
+ | `scripts/evidence-provenance.mjs` | Snapshot serializer plus descriptor-anchored plan reader/writer |
106
+
107
+ ## Requirements and graceful degradation
108
+
109
+ - Requires a GitNexus index; statement-level sections additionally require the
110
+ `--pdg` layers.
111
+ - Freshness is a gate, priced by category: full-plan categories (refactor,
112
+ security, performance, concurrency, architecture) default to
113
+ `freshness: strict` — a stale index (or missing PDG layer) is refreshed once with
114
+ `analyze --index-only [--pdg]` — run via `node .gitnexus/run.cjs` when the
115
+ project has one, else the installed `gitnexus` CLI
116
+ (`npm install -g gitnexus`), else `npx gitnexus` — before the graph is relied
117
+ on, but only when that runner's provenance is known-current.
118
+ Compact-plan categories default to `accept` (source-weighted, refresh only
119
+ if a graph claim becomes load-bearing). `--index-only` touches only the
120
+ `.gitnexus` store, never repo files. Stale analyzer provenance is a
121
+ disclosed **source-weighted limitation**: planning does not rebuild analyzer
122
+ output, and it does not use that graph for load-bearing claims.
123
+ - PDG layer still unavailable after that → the plan says so and skips
124
+ statement-level claims (never reconstructs fake edges).
125
+ - No GitNexus at all → fallback mode: targeted grep/read exploration, findings
126
+ labelled **source-derived**, with a recommendation to index.
127
+ - Reading or publishing a plan requires Linux `/proc/self/fd`, `O_DIRECTORY`,
128
+ and `O_NOFOLLOW`; publication also requires a validated absolute Python 3
129
+ PATH candidate with libc `renameat2(RENAME_NOREPLACE)` support, a
130
+ writable target repository, and a shared filesystem for the plan and
131
+ Git-admin vault. The writer fails closed when those guarantees are
132
+ unavailable; it never redirects the plan elsewhere.
133
+
134
+ ## Limitations
135
+
136
+ - `pdg_query` is intra-procedural; cross-function flow comes from `explain`
137
+ (taint) or `impact {mode:"pdg"}` inter-procedural reach.
138
+ - The skill is planning-only by contract: the only repository file it writes
139
+ is the plan document, and the only other state it may touch is the
140
+ `.gitnexus` index store for a freshness refresh. It must not build
141
+ analyzer `dist/` output or mutate source, tests, configuration, benchmark,
142
+ or evaluation files. Instruction feedback is chat-only.