@smartergpt/lexrunner 1.0.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 (1433) hide show
  1. package/.changes/ci-debug-added.txt +1 -0
  2. package/.changeset/tsconfig-solution-build.md +5 -0
  3. package/.editorconfig +9 -0
  4. package/.env.example +8 -0
  5. package/.github/COST_EFFICIENCY.md +60 -0
  6. package/.github/ISSUE_TEMPLATE/bug_report.md +28 -0
  7. package/.github/ISSUE_TEMPLATE/epic.yml +123 -0
  8. package/.github/ISSUE_TEMPLATE/feature_request.md +26 -0
  9. package/.github/ISSUE_TEMPLATE/issue-A1-gate-input-validation.md +380 -0
  10. package/.github/ISSUE_TEMPLATE/issue-B1-scope-validation.md +509 -0
  11. package/.github/ISSUE_TEMPLATE/issue-C1-command-whitelist.md +463 -0
  12. package/.github/ISSUE_TEMPLATE/subtask.yml +153 -0
  13. package/.github/PULL_REQUEST_TEMPLATE.md +9 -0
  14. package/.github/copilot-instructions-old.md +429 -0
  15. package/.github/copilot-instructions.md +33 -0
  16. package/.github/instructions/tests.instructions.md +10 -0
  17. package/.github/workflows/auto-delete-merged-branches.yml +103 -0
  18. package/.github/workflows/benchmarks.yml +72 -0
  19. package/.github/workflows/ci-debug.yml +33 -0
  20. package/.github/workflows/ci.yml +167 -0
  21. package/.github/workflows/cli-smoke-test.yml +345 -0
  22. package/.github/workflows/copilot-setup-steps.yml +20 -0
  23. package/.github/workflows/frame-emission-gate.yml +242 -0
  24. package/.github/workflows/project-auto.yml +24 -0
  25. package/.github/workflows/release.yml +260 -0
  26. package/.github/workflows/slow-cli-tests.yml +37 -0
  27. package/.github/workflows/tag-guard.yml +44 -0
  28. package/.husky/pre-commit +1 -0
  29. package/.nvmrc +2 -0
  30. package/.prettierignore +28 -0
  31. package/.prettierrc.json +10 -0
  32. package/.smartergpt/CONTROL_DECK_VISION.md +226 -0
  33. package/.smartergpt/allowed-commands.json +41 -0
  34. package/.smartergpt/allowed-commands.strict.json +56 -0
  35. package/.smartergpt/deliverables/.live.md +426 -0
  36. package/.smartergpt/deliverables/ISSUE_STATUS_2025-12-28.md +193 -0
  37. package/.smartergpt/deliverables/_research/snapshot-contract-feedback/ADR_DISCUSSION.md +379 -0
  38. package/.smartergpt/deliverables/_research/snapshot-contract-feedback/Answer_claude-haiku.md +109 -0
  39. package/.smartergpt/deliverables/_research/snapshot-contract-feedback/Answer_gemini-flash.md +42 -0
  40. package/.smartergpt/deliverables/_research/snapshot-contract-feedback/Answer_gpt-codex-mini.md +19 -0
  41. package/.smartergpt/deliverables/_research/snapshot-contract-feedback/Answer_raptor-mini.md +37 -0
  42. package/.smartergpt/deliverables/_research/snapshot-contract-feedback/Question.md +37 -0
  43. package/.smartergpt/deliverables/merge-weave-04469e41-24ba-4ed5-b0ff-13c7ea12858d.ndjson +2 -0
  44. package/.smartergpt/deps.yml +3 -0
  45. package/.smartergpt/docs/fanout-templates.md +213 -0
  46. package/.smartergpt/docs/merge-weave-interventions.md +261 -0
  47. package/.smartergpt/docs/test-fix-patterns.md +240 -0
  48. package/.smartergpt/fanout-templates.yml +263 -0
  49. package/.smartergpt/gates.yml +9 -0
  50. package/.smartergpt/intent.md +1 -0
  51. package/.smartergpt/issues/QOL-001-analysis-script-filtering.md +36 -0
  52. package/.smartergpt/issues/QOL-002-log-retention-policy.md +92 -0
  53. package/.smartergpt/issues/QOL-003-realtime-console-feedback.md +44 -0
  54. package/.smartergpt/issues/QOL-004-governance-report-cli.md +44 -0
  55. package/.smartergpt/issues/QOL-005-schema-versioning.md +46 -0
  56. package/.smartergpt/issues/QOL-006-debug-verbose-mode.md +45 -0
  57. package/.smartergpt/issues/QOL-COMPLETION-REPORT.md +359 -0
  58. package/.smartergpt/issues/QOL-REVIEW-SUMMARY.md +111 -0
  59. package/.smartergpt/issues/QOL-ROADMAP.md +71 -0
  60. package/.smartergpt/merge-policy.yml +41 -0
  61. package/.smartergpt/merge-weave-policy.yml +255 -0
  62. package/.smartergpt/o1.json +0 -0
  63. package/.smartergpt/o2.json +0 -0
  64. package/.smartergpt/personas/eager-pm.md +123 -0
  65. package/.smartergpt/personas/example.md +81 -0
  66. package/.smartergpt/personas/senior-dev.md +107 -0
  67. package/.smartergpt/profile.yml +2 -0
  68. package/.smartergpt/prompts/create-project.md +112 -0
  69. package/.smartergpt/prompts/idea.md +64 -0
  70. package/.smartergpt/pull-request-template.md +25 -0
  71. package/.smartergpt/schemas/behavior-rule.schema.d.ts +54 -0
  72. package/.smartergpt/schemas/behavior-rule.schema.js +56 -0
  73. package/.smartergpt/schemas/behavior-rule.schema.json +105 -0
  74. package/.smartergpt/schemas/behavior-rule.schema.ts +60 -0
  75. package/.smartergpt/schemas/execution-plan-v1.d.ts +47 -0
  76. package/.smartergpt/schemas/execution-plan-v1.js +22 -0
  77. package/.smartergpt/schemas/execution-plan-v1.json +113 -0
  78. package/.smartergpt/schemas/execution-plan-v1.ts +32 -0
  79. package/.smartergpt/schemas/execution-plan.schema.json +116 -0
  80. package/.smartergpt/schemas/feature-spec-v0.d.ts +13 -0
  81. package/.smartergpt/schemas/feature-spec-v0.js +12 -0
  82. package/.smartergpt/schemas/feature-spec-v0.json +58 -0
  83. package/.smartergpt/schemas/feature-spec-v0.ts +16 -0
  84. package/.smartergpt/schemas/feature-spec.schema.json +111 -0
  85. package/.smartergpt/schemas/gates.schema.d.ts +48 -0
  86. package/.smartergpt/schemas/gates.schema.js +20 -0
  87. package/.smartergpt/schemas/gates.schema.json +47 -0
  88. package/.smartergpt/schemas/gates.schema.ts +26 -0
  89. package/.smartergpt/schemas/idea.schema.json +81 -0
  90. package/.smartergpt/schemas/runner.scope.schema.d.ts +54 -0
  91. package/.smartergpt/schemas/runner.scope.schema.js +28 -0
  92. package/.smartergpt/schemas/runner.scope.schema.json +75 -0
  93. package/.smartergpt/schemas/runner.scope.schema.ts +36 -0
  94. package/.smartergpt/schemas/runner.stack.schema.d.ts +40 -0
  95. package/.smartergpt/schemas/runner.stack.schema.js +21 -0
  96. package/.smartergpt/schemas/runner.stack.schema.json +51 -0
  97. package/.smartergpt/schemas/runner.stack.schema.ts +27 -0
  98. package/.smartergpt/scope.yml +11 -0
  99. package/.smartergpt/stack.yml +16 -0
  100. package/.smartergpt/test-fix-patterns.yml +106 -0
  101. package/.tool-versions +13 -0
  102. package/AGENTS.md +402 -0
  103. package/CHANGELOG.md +256 -0
  104. package/CLAUDE.md +484 -0
  105. package/CONTRIBUTING.md +345 -0
  106. package/EAGER_PM_FANOUT_ANALYSIS.md +283 -0
  107. package/FAQ.md +292 -0
  108. package/FIXTURE_LIBRARY_SUMMARY.md +327 -0
  109. package/IMPLEMENTATION_SUMMARY.md +222 -0
  110. package/LICENSE +21 -0
  111. package/MANUAL_TEST_GUIDE.md +229 -0
  112. package/MCP-ALIGNMENT-SUMMARY.md +261 -0
  113. package/MCP-CONFIG.md +125 -0
  114. package/MERGE_WEAVE_QUICKSTART.md +450 -0
  115. package/MERGE_WEAVE_SUMMARY.md +259 -0
  116. package/MERGE_WEAVE_USAGE_GUIDE.md +368 -0
  117. package/NOTICE.md +43 -0
  118. package/README.mcp.md +770 -0
  119. package/README.md +1069 -0
  120. package/TEST_INFRASTRUCTURE_ASSESSMENT.md +225 -0
  121. package/bootstrap-lexrunner.sh +396 -0
  122. package/dist/api-7H7SJZIX.js +15 -0
  123. package/dist/api-U3X2WA6D.js +15 -0
  124. package/dist/audit-2TZ2LU72.js +60 -0
  125. package/dist/audit-5HH5BMKI.js +60 -0
  126. package/dist/audit-6K5K333I.js +60 -0
  127. package/dist/audit-DYQWS57J.js +60 -0
  128. package/dist/audit-JBWZ2GZ2.js +60 -0
  129. package/dist/audit-SJF3434D.js +60 -0
  130. package/dist/audit-TICGGVX5.js +60 -0
  131. package/dist/audit-YOBB27PY.js +60 -0
  132. package/dist/autopilot-3GAVXWWC.js +45 -0
  133. package/dist/autopilot-43NOYVQA.js +45 -0
  134. package/dist/autopilot-4UA3OWLU.js +45 -0
  135. package/dist/autopilot-54TK5CCG.js +45 -0
  136. package/dist/autopilot-5BHC2UQT.js +45 -0
  137. package/dist/autopilot-ABZUCVGY.js +45 -0
  138. package/dist/autopilot-ACJZP47Y.js +45 -0
  139. package/dist/autopilot-AL5F5AUS.js +46 -0
  140. package/dist/autopilot-BO67FWUC.js +45 -0
  141. package/dist/autopilot-BR6W4GEX.js +45 -0
  142. package/dist/autopilot-FOR2UKRY.js +45 -0
  143. package/dist/autopilot-GDTTXHEQ.js +45 -0
  144. package/dist/autopilot-GEAMFZBM.js +45 -0
  145. package/dist/autopilot-HDMBRZE6.js +45 -0
  146. package/dist/autopilot-IKI2Y6S4.js +44 -0
  147. package/dist/autopilot-ILTBWWOL.js +46 -0
  148. package/dist/autopilot-KI3MXIFI.js +44 -0
  149. package/dist/autopilot-LWNPZC3J.js +45 -0
  150. package/dist/autopilot-LXPJ4ZXF.js +45 -0
  151. package/dist/autopilot-MDIFIONK.js +46 -0
  152. package/dist/autopilot-NW3LDP6M.js +45 -0
  153. package/dist/autopilot-OKTSCG35.js +45 -0
  154. package/dist/autopilot-OR5PF5PD.js +45 -0
  155. package/dist/autopilot-PE65SBGN.js +45 -0
  156. package/dist/autopilot-PW7I4B6W.js +45 -0
  157. package/dist/autopilot-QMLBL5P6.js +45 -0
  158. package/dist/autopilot-QSN6ZU5O.js +45 -0
  159. package/dist/autopilot-R7EZJOGI.js +46 -0
  160. package/dist/autopilot-T544CPPD.js +44 -0
  161. package/dist/autopilot-TNQB6VGJ.js +44 -0
  162. package/dist/autopilot-UVIYCR6K.js +45 -0
  163. package/dist/autopilot-W3ZTTSH3.js +45 -0
  164. package/dist/autopilot-XPKWOFXO.js +44 -0
  165. package/dist/autopilot-XRX4QWRM.js +44 -0
  166. package/dist/autopilot-Y3BAGNI5.js +44 -0
  167. package/dist/autopilot-ZE64XW2K.js +44 -0
  168. package/dist/chunk-2ESYSVXG.js +48 -0
  169. package/dist/chunk-2VR554P7.js +668 -0
  170. package/dist/chunk-37DOWIVT.js +1084 -0
  171. package/dist/chunk-3DU2DWUP.js +400 -0
  172. package/dist/chunk-3DVXIZFM.js +11166 -0
  173. package/dist/chunk-3FABZF4V.js +811 -0
  174. package/dist/chunk-4FFGNTAV.js +515 -0
  175. package/dist/chunk-4GEC4HC3.js +11221 -0
  176. package/dist/chunk-4RVZNLD4.js +628 -0
  177. package/dist/chunk-55VWJYZY.js +39 -0
  178. package/dist/chunk-5CGWZH5X.js +340 -0
  179. package/dist/chunk-5QKWKK4M.js +11794 -0
  180. package/dist/chunk-5Z3XHND7.js +11755 -0
  181. package/dist/chunk-6A4IE3TI.js +302 -0
  182. package/dist/chunk-6KK5JFFE.js +106 -0
  183. package/dist/chunk-6YC2VSLE.js +11252 -0
  184. package/dist/chunk-7C4K2SHD.js +668 -0
  185. package/dist/chunk-ANXY4RGA.js +11091 -0
  186. package/dist/chunk-ASHKNUBR.js +11312 -0
  187. package/dist/chunk-B3OYDPOP.js +11793 -0
  188. package/dist/chunk-DBH7SQ2S.js +1084 -0
  189. package/dist/chunk-DEI7A5B4.js +11449 -0
  190. package/dist/chunk-DM4GHY3J.js +92 -0
  191. package/dist/chunk-EQKFCZLH.js +9823 -0
  192. package/dist/chunk-FAIJPBT5.js +40 -0
  193. package/dist/chunk-FDDKUDXR.js +11166 -0
  194. package/dist/chunk-FEAR6ETG.js +438 -0
  195. package/dist/chunk-FNBAHK5V.js +72 -0
  196. package/dist/chunk-FXL74C73.js +523 -0
  197. package/dist/chunk-GLJEDX4L.js +10247 -0
  198. package/dist/chunk-GTP4OHD7.js +1107 -0
  199. package/dist/chunk-HIHH7IVO.js +10557 -0
  200. package/dist/chunk-I3VXUVCB.js +10474 -0
  201. package/dist/chunk-I6BIFVWI.js +10519 -0
  202. package/dist/chunk-I72TRUTJ.js +1084 -0
  203. package/dist/chunk-J5B5KT2F.js +368 -0
  204. package/dist/chunk-JMTULZ66.js +11743 -0
  205. package/dist/chunk-JXIQ7HCK.js +11166 -0
  206. package/dist/chunk-K6HVPBDP.js +10692 -0
  207. package/dist/chunk-KBT5Y666.js +521 -0
  208. package/dist/chunk-LETPROKG.js +11092 -0
  209. package/dist/chunk-LLMY2BZF.js +1084 -0
  210. package/dist/chunk-NMNL4US2.js +1084 -0
  211. package/dist/chunk-O2XRP7JK.js +10247 -0
  212. package/dist/chunk-OGPWLFFO.js +11201 -0
  213. package/dist/chunk-OQJUWTZV.js +51 -0
  214. package/dist/chunk-PJRWPLQ6.js +669 -0
  215. package/dist/chunk-PYRVUCJR.js +370 -0
  216. package/dist/chunk-Q6Y524KH.js +669 -0
  217. package/dist/chunk-QF7DM5VW.js +106 -0
  218. package/dist/chunk-QGM4M3NI.js +37 -0
  219. package/dist/chunk-QIIELFTL.js +1107 -0
  220. package/dist/chunk-QUW6N7GR.js +10264 -0
  221. package/dist/chunk-QZASNLQX.js +11223 -0
  222. package/dist/chunk-RMN4IAWO.js +11808 -0
  223. package/dist/chunk-RN5NHU37.js +11465 -0
  224. package/dist/chunk-RNG3RILO.js +11755 -0
  225. package/dist/chunk-RSA6DEB4.js +9748 -0
  226. package/dist/chunk-RURYWSMX.js +10524 -0
  227. package/dist/chunk-SUEXK5U7.js +11201 -0
  228. package/dist/chunk-TVUF55OH.js +11807 -0
  229. package/dist/chunk-U5MMENCP.js +456 -0
  230. package/dist/chunk-U62I2R2D.js +434 -0
  231. package/dist/chunk-UHFMFO54.js +21 -0
  232. package/dist/chunk-UNZBDSEU.js +11166 -0
  233. package/dist/chunk-UOATTNQP.js +334 -0
  234. package/dist/chunk-UZFYNSMJ.js +334 -0
  235. package/dist/chunk-VP37GLU6.js +1084 -0
  236. package/dist/chunk-W6WDKBWO.js +11453 -0
  237. package/dist/chunk-XBKUFNVF.js +10745 -0
  238. package/dist/chunk-XOLVQTIE.js +670 -0
  239. package/dist/chunk-XVFTBVDS.js +257 -0
  240. package/dist/chunk-YABA7DB6.js +11091 -0
  241. package/dist/chunk-YWCJX5KL.js +10557 -0
  242. package/dist/chunk-Z5GP7FSR.js +309 -0
  243. package/dist/chunk-ZBT3DATZ.js +296 -0
  244. package/dist/chunk-ZDBAZXUQ.js +11201 -0
  245. package/dist/chunk-ZEMABYS4.js +92 -0
  246. package/dist/chunk-ZOA4HT7P.js +662 -0
  247. package/dist/cli.cjs +40431 -0
  248. package/dist/cli.d.cts +2709 -0
  249. package/dist/cli.d.ts +2709 -0
  250. package/dist/cli.js +21149 -0
  251. package/dist/commandValidator-42OUDFZ4.js +140 -0
  252. package/dist/commandValidator-7LQHTYL5.js +140 -0
  253. package/dist/commandValidator-AT5OYZFC.js +142 -0
  254. package/dist/commandValidator-DH3CX2OW.js +140 -0
  255. package/dist/commandValidator-GCQC7H4A.js +140 -0
  256. package/dist/commandValidator-K6VWB6O3.js +140 -0
  257. package/dist/commandValidator-L6WNDBYB.js +129 -0
  258. package/dist/commandValidator-O3KSNXD2.js +140 -0
  259. package/dist/commandValidator-ZHMUA5RQ.js +140 -0
  260. package/dist/constraints-M52FVL2X.js +11 -0
  261. package/dist/dist-CSOR2BL2.js +1144 -0
  262. package/dist/dist-PKOIS5NZ.js +1144 -0
  263. package/dist/fileAnalysis-3VMDDJ6I.js +9 -0
  264. package/dist/fileAnalysis-4QLHUT44.js +9 -0
  265. package/dist/fileAnalysis-H6M2Z7ZC.js +9 -0
  266. package/dist/fileAnalysis-HMI7IL6S.js +9 -0
  267. package/dist/fileAnalysis-JHABOPUQ.js +9 -0
  268. package/dist/gateMapping-E5MGNJH5.js +17 -0
  269. package/dist/jsonEnvelope-R4SWKX2N.js +62 -0
  270. package/dist/mergeTreeSimulator-ATOPJ3DU.js +11 -0
  271. package/dist/mergeTreeSimulator-AYUK4TZT.js +11 -0
  272. package/dist/mergeTreeSimulator-BBWJUQBK.js +11 -0
  273. package/dist/mergeTreeSimulator-DJJDRB5N.js +11 -0
  274. package/dist/mergeTreeSimulator-X4BA647P.js +11 -0
  275. package/dist/planDiff-37QHCPKO.js +109 -0
  276. package/dist/planDiff-BQHIUARB.js +109 -0
  277. package/dist/planDiff-QOK6KNB7.js +111 -0
  278. package/dist/planDiff-RXR4CWFS.js +109 -0
  279. package/dist/planDiff-W2BTH2MU.js +109 -0
  280. package/dist/planHistory-4J3Q6AJ3.js +126 -0
  281. package/dist/planHistory-DQRSB2Y7.js +118 -0
  282. package/dist/planHistory-GLCXP6AB.js +126 -0
  283. package/dist/planHistory-SMNRLEKG.js +126 -0
  284. package/dist/planHistory-UO4WZ6GO.js +126 -0
  285. package/dist/planReview-7BWVLABC.js +377 -0
  286. package/dist/planReview-7VB3OYKZ.js +385 -0
  287. package/dist/planReview-FAIBIAE6.js +377 -0
  288. package/dist/planReview-FXQBDNKJ.js +376 -0
  289. package/dist/planReview-HO4YYETA.js +377 -0
  290. package/dist/planReview-I26EKCUK.js +376 -0
  291. package/dist/planReview-JBOAJHSU.js +377 -0
  292. package/dist/planReview-SCNZWC6B.js +376 -0
  293. package/dist/planReview-TU7LMZIY.js +376 -0
  294. package/dist/planViewer-2YZCPVDM.js +155 -0
  295. package/dist/planViewer-72WZFUTU.js +154 -0
  296. package/dist/planViewer-G546TVHV.js +154 -0
  297. package/dist/planViewer-I7ZHNJQF.js +150 -0
  298. package/dist/planViewer-IRXHOY5U.js +155 -0
  299. package/dist/planViewer-IX2ICW45.js +154 -0
  300. package/dist/planViewer-PDWPUOP6.js +155 -0
  301. package/dist/planViewer-PEOADAGZ.js +155 -0
  302. package/dist/planViewer-PFYDEG6V.js +150 -0
  303. package/dist/planViewer-UIPOSRVW.js +151 -0
  304. package/dist/planViewer-V2JUKV7Q.js +154 -0
  305. package/dist/sarif-46TKOOJZ.js +9 -0
  306. package/dist/sarif-63JKTFFI.js +9 -0
  307. package/dist/sarif-CIYIWUNC.js +9 -0
  308. package/dist/sarif-OGAGDL6B.js +9 -0
  309. package/dist/sarif-XIREI5B5.js +9 -0
  310. package/dist/security-3V6FKJDA.js +423 -0
  311. package/dist/security-4JMEUM56.js +423 -0
  312. package/dist/security-QHPEWY5G.js +423 -0
  313. package/dist/security-V2LAL5TP.js +415 -0
  314. package/dist/security-WTASK6T6.js +423 -0
  315. package/dist/security-XE4GHVJD.js +423 -0
  316. package/dist/security-XLXM3UHT.js +423 -0
  317. package/dist/security-YDLHSMVY.js +441 -0
  318. package/dist/security-ZDAEZF7D.js +423 -0
  319. package/dist/signing-3EI734L4.js +14 -0
  320. package/dist/signing-5G7K6JXJ.js +14 -0
  321. package/dist/signing-7DK7SABM.js +14 -0
  322. package/dist/signing-JJJOUGCW.js +14 -0
  323. package/dist/signing-OAJ3MXGA.js +14 -0
  324. package/dist/verify-5F6PUXUQ.js +62 -0
  325. package/dist/verify-5ILURHV2.js +62 -0
  326. package/dist/verify-MRDZJUGO.js +62 -0
  327. package/dist/verify-SCUHB3SA.js +62 -0
  328. package/dist/verify-YZRHN2D3.js +62 -0
  329. package/docs/1.0.0-vertical-slice.md +214 -0
  330. package/docs/ADR-007-INTEGRATION-SUMMARY.md +232 -0
  331. package/docs/ALIASING_FOR_LEXRUNNER.md +709 -0
  332. package/docs/ALIASING_FOR_RUNNER.md +552 -0
  333. package/docs/AX.md +317 -0
  334. package/docs/CHECKPOINT_RESUME.md +208 -0
  335. package/docs/CLI_VERBS.md +219 -0
  336. package/docs/CONFLICT_DETECTION.md +198 -0
  337. package/docs/DISCIPLINED_FAILURE.md +224 -0
  338. package/docs/ENVIRONMENT_QUALITY.md +155 -0
  339. package/docs/ERROR_CODES.md +528 -0
  340. package/docs/EVENT_SCHEMA.md +659 -0
  341. package/docs/EXE-012-investigation-summary.md +300 -0
  342. package/docs/GATE_ATTESTATION_GUIDE.md +237 -0
  343. package/docs/JSON_OUTPUT_SCHEMAS.md +347 -0
  344. package/docs/LEXRUNNER_ALIASING.md +444 -0
  345. package/docs/LEX_INTEGRATION.md +83 -0
  346. package/docs/LEX_PUBLIC_API.md +306 -0
  347. package/docs/LICENSING.md +119 -0
  348. package/docs/MCP-CLI-PARITY.md +410 -0
  349. package/docs/MCP-MIGRATION.md +258 -0
  350. package/docs/MCP-PARITY.md +234 -0
  351. package/docs/MEMORY_TOOLS.md +278 -0
  352. package/docs/MERGE_WEAVE_SETUP.md +643 -0
  353. package/docs/MIGRATION_v0.1.md +760 -0
  354. package/docs/NAMING_CONVENTIONS.md +82 -0
  355. package/docs/PERSONA_FOUNDATION.md +124 -0
  356. package/docs/PHASE3_MEMORY_GUIDE.md +122 -0
  357. package/docs/PLAN_LOCK.md +114 -0
  358. package/docs/README.md +289 -0
  359. package/docs/RUNNER_LIFECYCLE.md +257 -0
  360. package/docs/SAFETY_MECHANISMS.md +325 -0
  361. package/docs/SECURITY_IMPLEMENTATION.md +535 -0
  362. package/docs/TERMS.md +34 -0
  363. package/docs/TOKEN_TRACKING.md +162 -0
  364. package/docs/WORKFLOW_GUIDANCE.md +277 -0
  365. package/docs/adr/ADR-000-product-naming-and-branding.md +115 -0
  366. package/docs/adr/ADR-001-plan-json-frozen-input.md +68 -0
  367. package/docs/adr/ADR-002-two-track-separation.md +84 -0
  368. package/docs/adr/ADR-003-gate-uniform-execution.md +69 -0
  369. package/docs/adr/ADR-004-runner-state-model.md +75 -0
  370. package/docs/adr/ADR-005-merge-pyramid-ordering.md +87 -0
  371. package/docs/adr/ADR-006-schema-versioning-semver.md +81 -0
  372. package/docs/adr/ADR-007-task-snapshot-contract.md +503 -0
  373. package/docs/adr/ADR-008-lex-packaging.md +243 -0
  374. package/docs/adr/ADR-009-ax-test-output-adapters.md +440 -0
  375. package/docs/adr/README.md +32 -0
  376. package/docs/advanced-cli.md +436 -0
  377. package/docs/agent-stall-detection.md +278 -0
  378. package/docs/architecture/executors.md +190 -0
  379. package/docs/architecture.md +316 -0
  380. package/docs/attestation/AX-SHARED-PLEDGE.md +83 -0
  381. package/docs/attestation/AX-SHARED-PLEDGE_v1.0.0.md +99 -0
  382. package/docs/attestation/AX-SHARED-PLEDGE_v1.0.0_VERIFICATION.md +115 -0
  383. package/docs/attestation/Lex_Guff_Version_Contract_Pact_v1.0.0.md +181 -0
  384. package/docs/attestation/README.md +87 -0
  385. package/docs/attestation/ax_pledge_2025-12-02.ots +0 -0
  386. package/docs/attestation/ax_pledge_timestamp_response.tsr +0 -0
  387. package/docs/attestation/copilot_summarization_2025-12-01.ots +0 -0
  388. package/docs/attestation/copilot_summarization_2025-12-01_VERIFICATION.md +100 -0
  389. package/docs/attestation/copilot_summarization_behavior_observation_2025-12-01.md +85 -0
  390. package/docs/attestation/copilot_summarization_screenshot_2025-12-01.png +0 -0
  391. package/docs/attestation/employment_separation_2025-11-26.ots +0 -0
  392. package/docs/attestation/employment_timestamp_response.tsr +0 -0
  393. package/docs/attestation/freetsa_cacert.pem +45 -0
  394. package/docs/attestation/freetsa_tsa.crt +45 -0
  395. package/docs/attestation/lex_employment_separation_2025-11-26.md +85 -0
  396. package/docs/attestation/lex_employment_separation_2025-11-26_VERIFICATION.md +126 -0
  397. package/docs/attestation/patent/2025-12-07-shadow-governance-pct-draft.md +350 -0
  398. package/docs/attestation/patent/2025-12-07-shadow-governance-pct-draft.md.ots +0 -0
  399. package/docs/attestation/patent/2025-12-07-shadow-governance-pct-draft_VERIFICATION.md +130 -0
  400. package/docs/attestation/patent/README.md +75 -0
  401. package/docs/attestation/patent/fig1_write_path.svg +58 -0
  402. package/docs/attestation/patent/fig2_read_normalize_rollup.svg +92 -0
  403. package/docs/attestation/timestamp_response.tsr +0 -0
  404. package/docs/attribution-README.md +264 -0
  405. package/docs/audit-compliance.md +283 -0
  406. package/docs/audit-outputs.md +1213 -0
  407. package/docs/audit-sdk.md +1134 -0
  408. package/docs/autopilot-levels.md +368 -0
  409. package/docs/autopilot.md +288 -0
  410. package/docs/ci-cd-integration.md +580 -0
  411. package/docs/ci-integration-guide.md +369 -0
  412. package/docs/ci-version-validation.md +198 -0
  413. package/docs/cli-mcp-weave-reporting.md +462 -0
  414. package/docs/cli.md +2262 -0
  415. package/docs/cluster-gates-rollback.md +222 -0
  416. package/docs/command-creation-guide.md +485 -0
  417. package/docs/command-whitelist.md +490 -0
  418. package/docs/commands/idea.md +253 -0
  419. package/docs/config.md +245 -0
  420. package/docs/conflict-clustering.md +225 -0
  421. package/docs/conflict-predictor.md +359 -0
  422. package/docs/context-diet.md +249 -0
  423. package/docs/counter-examples.md +199 -0
  424. package/docs/create-project.md +211 -0
  425. package/docs/deliverables-generator.md +299 -0
  426. package/docs/deliverables-management.md +474 -0
  427. package/docs/dependency-parser.md +354 -0
  428. package/docs/determinism.md +299 -0
  429. package/docs/diffgraph-planner.md +1211 -0
  430. package/docs/dogfood/README.md +33 -0
  431. package/docs/dogfood/wave-3-results.md +303 -0
  432. package/docs/dogfood-merge-weave-script.md +224 -0
  433. package/docs/enterprise-onboarding.md +291 -0
  434. package/docs/environment-variables.md +625 -0
  435. package/docs/error-recovery.md +466 -0
  436. package/docs/errors.md +288 -0
  437. package/docs/executor-authoring.md +854 -0
  438. package/docs/executor-decoupling.md +410 -0
  439. package/docs/front-end-capture-pipeline.md +312 -0
  440. package/docs/gate-report-examples.md +380 -0
  441. package/docs/gates.md +319 -0
  442. package/docs/github-automation.md +128 -0
  443. package/docs/governance-metrics.md +368 -0
  444. package/docs/integrations/README.md +588 -0
  445. package/docs/interactive-plan-review.md +493 -0
  446. package/docs/issue-orchestration.md +256 -0
  447. package/docs/lex_ax_session_key_rememberings_v0.1.md +195 -0
  448. package/docs/lexrunner-v1-summary.md +246 -0
  449. package/docs/lexrunner-v2-contract.md +404 -0
  450. package/docs/lexrunner-v2-migration-plan.md +388 -0
  451. package/docs/lexrunner-v2-salvage-map.md +355 -0
  452. package/docs/lexsona-rules.md +154 -0
  453. package/docs/merge-weave-analysis.md +403 -0
  454. package/docs/merge-weave-quickstart.md +770 -0
  455. package/docs/merge-weave-state-machine.md +390 -0
  456. package/docs/migration-guide.md +529 -0
  457. package/docs/monitoring-examples.md +470 -0
  458. package/docs/monitoring-implementation.md +252 -0
  459. package/docs/orchestration.md +234 -0
  460. package/docs/performance-scale.md +359 -0
  461. package/docs/plan-generation.md +407 -0
  462. package/docs/profile-resolution.md +455 -0
  463. package/docs/prompts.md +427 -0
  464. package/docs/quickstart.md +546 -0
  465. package/docs/release-process.md +310 -0
  466. package/docs/sample-prompts/merge-weave/cli-merge-weave-kickoff.md +274 -0
  467. package/docs/sample-prompts/merge-weave/mcp-merge-weave-kickoff.md +480 -0
  468. package/docs/sample-prompts/merge-weave/standalone-merge-weave-kickoff.md +237 -0
  469. package/docs/schemas.md +359 -0
  470. package/docs/scope-validation.md +444 -0
  471. package/docs/security/rotation-guide.md +325 -0
  472. package/docs/specs/Meeting_Control_Stack_Concept_v0.1.0.md +417 -0
  473. package/docs/specs/git-feature-flag-redesign.md +321 -0
  474. package/docs/specs/lex-pr-brief-behavior.md +269 -0
  475. package/docs/specs/smartergpt-structure-v1.md +705 -0
  476. package/docs/specs/task-brief-v0.1.md +224 -0
  477. package/docs/store-architecture.md +61 -0
  478. package/docs/templates/CONTRIBUTING-merge-weave-section.md +33 -0
  479. package/docs/templates/gates.example.yml +109 -0
  480. package/docs/templates/plan.example.json +77 -0
  481. package/docs/thesis/00-EVOLUTION-NOTES.md +383 -0
  482. package/docs/thesis/01-CORE-THESIS.md +285 -0
  483. package/docs/thesis/02-TURN-COST.md +498 -0
  484. package/docs/thesis/03-PERMISSION-TO-FAIL.md +581 -0
  485. package/docs/thesis/04-CROSS-MODEL-CONTINUITY.md +517 -0
  486. package/docs/thesis/05-RULE-FILE-SPEC.md +732 -0
  487. package/docs/thesis/06-CAPABILITY-TIERS.md +723 -0
  488. package/docs/thesis/07-ROBERT-FIELD-REPORT.md +433 -0
  489. package/docs/thesis/08-IMPLEMENTATION-GUIDE.md +1093 -0
  490. package/docs/thesis/09-METRICS-AND-TELEMETRY.md +793 -0
  491. package/docs/thesis/10-FAILURE-MODES.md +716 -0
  492. package/docs/thesis/README.md +151 -0
  493. package/docs/thesis/lex_governance-collab_systems_paper_draft.md +952 -0
  494. package/docs/thesis/lex_governance-collab_systems_paper_draft.pdf +0 -0
  495. package/docs/tool-grounded/READINESS_ANALYSIS.md +527 -0
  496. package/docs/tool-grounded/enforcement.md +361 -0
  497. package/docs/tool-grounded/tool-grounded-a-view-from-the-inside.md +437 -0
  498. package/docs/tool-grounded/tool-grounded-prompt.md +122 -0
  499. package/docs/tool-grounded/tool-grounded-run-centric.md +474 -0
  500. package/docs/troubleshooting-planner.md +910 -0
  501. package/docs/troubleshooting.md +745 -0
  502. package/docs/tutorials/README.md +201 -0
  503. package/docs/tutorials/diffgraph-planner/01-simple-stack.md +460 -0
  504. package/docs/tutorials/diffgraph-planner/02-diamond-pattern.md +431 -0
  505. package/docs/tutorials/diffgraph-planner/03-large-batch.md +525 -0
  506. package/docs/tutorials/diffgraph-planner/04-fixing-cycles.md +526 -0
  507. package/docs/tutorials/diffgraph-planner/05-hybrid-workflow.md +555 -0
  508. package/docs/tutorials/quick-merge-pyramid.md +364 -0
  509. package/docs/tutorials/video-scripts/01-getting-started.md +286 -0
  510. package/docs/tutorials/video-scripts/02-understanding-dependencies.md +376 -0
  511. package/docs/weave-contract.md +116 -0
  512. package/docs/weave-execution-log.md +153 -0
  513. package/docs/workflows/README.md +139 -0
  514. package/docs/workflows/enterprise.md +545 -0
  515. package/docs/workflows/small-team.md +398 -0
  516. package/docs/workflows/solo-developer.md +419 -0
  517. package/dogfood-merge-weave.sh +122 -0
  518. package/examples/README.md +22 -0
  519. package/examples/WORKING_EXAMPLE.md +309 -0
  520. package/examples/analyze-pr-files.js +100 -0
  521. package/examples/autopilot-level4-example.md +234 -0
  522. package/examples/cluster-gates-demo.sh +178 -0
  523. package/examples/complete-security-workflow.ts +248 -0
  524. package/examples/error-recovery/README.md +202 -0
  525. package/examples/executor-manifest.example.yaml +81 -0
  526. package/examples/front-end-capture-pipeline/README.md +99 -0
  527. package/examples/front-end-capture-pipeline/create-project-example.sh +83 -0
  528. package/examples/front-end-capture-pipeline/idea-dark-mode.json +14 -0
  529. package/examples/front-end-capture-pipeline/idea-example.sh +57 -0
  530. package/examples/front-end-capture-pipeline/manual-test-checklist.md +426 -0
  531. package/examples/gates/README.md +165 -0
  532. package/examples/gates/lint-gate.sh +40 -0
  533. package/examples/gates/lint-gate.ts +99 -0
  534. package/examples/gates/test-runner.ts +113 -0
  535. package/examples/gates/vuln-scanner.ts +95 -0
  536. package/examples/github-integration/README.md +111 -0
  537. package/examples/github-integration/example-plan.json +95 -0
  538. package/examples/performance-config.md +388 -0
  539. package/examples/profile-setup/.gitignore.template +66 -0
  540. package/examples/profile-setup/.smartergpt-example/README.md +190 -0
  541. package/examples/profile-setup/.smartergpt.local-example/README.md +365 -0
  542. package/examples/profile-setup/README.md +492 -0
  543. package/examples/profile-setup/cross-repo-prompts/README.md +606 -0
  544. package/examples/safety-framework-demo.ts +130 -0
  545. package/examples/safety-mechanisms-example.ts +191 -0
  546. package/examples/sample-plan.json +87 -0
  547. package/examples/sample-stack.yml +66 -0
  548. package/examples/sarif/README.md +224 -0
  549. package/examples/scope-validation-demo.ts +199 -0
  550. package/examples/security-integration.ts +293 -0
  551. package/examples/token-tracking-example.ts +71 -0
  552. package/executors/senior-dev/ARCHITECTURE.md +182 -0
  553. package/executors/senior-dev/MEMORY_INTEGRATION.md +236 -0
  554. package/executors/senior-dev/QUICK_START.md +145 -0
  555. package/executors/senior-dev/README.md +76 -0
  556. package/executors/senior-dev/examples/sample-review-session.md +228 -0
  557. package/executors/senior-dev/executor-manifest.yaml +79 -0
  558. package/executors/senior-dev/prompts/code-review.prompt.md +78 -0
  559. package/executors/senior-dev/prompts/mentorship-feedback.prompt.md +97 -0
  560. package/executors/senior-dev/prompts/pattern-recognition.prompt.md +80 -0
  561. package/executors/senior-dev/prompts/pr-analysis.prompt.md +75 -0
  562. package/executors/senior-dev/scripts/capture-review-frame.sh +129 -0
  563. package/executors/senior-dev/scripts/prepare-review-context.sh +61 -0
  564. package/executors/senior-dev/scripts/recall-context.sh +87 -0
  565. package/lexrunner-launcher.sh +12 -0
  566. package/mcp-config-example.json +14 -0
  567. package/mcp-server.mjs +1221 -0
  568. package/merge-weave-current-prs.md +170 -0
  569. package/merge-weave-dogfood.json +46 -0
  570. package/merge-weave-plan.json +56 -0
  571. package/package.json +140 -0
  572. package/procedures/merge-weave-main.yaml +90 -0
  573. package/procedures/pr-review.yaml +68 -0
  574. package/project/README.md +50 -0
  575. package/prompts/tool-grounded-mode.md +185 -0
  576. package/schemas/allowed-commands.schema.json +108 -0
  577. package/schemas/audit-events.schema.json +138 -0
  578. package/schemas/audit-events.v1.0.0.schema.json +138 -0
  579. package/schemas/edit-plan.schema.json +80 -0
  580. package/schemas/executor-manifest.schema.json +236 -0
  581. package/schemas/flake-report.schema.json +95 -0
  582. package/schemas/gate-report.schema.json +85 -0
  583. package/schemas/gates/build.schema.json +32 -0
  584. package/schemas/gates/coverage.schema.json +42 -0
  585. package/schemas/gates/lint.schema.json +34 -0
  586. package/schemas/gates/security-scan.schema.json +33 -0
  587. package/schemas/gates/test.schema.json +35 -0
  588. package/schemas/next-option.schema.json +60 -0
  589. package/schemas/persona-snapshot.schema.json +66 -0
  590. package/schemas/plan.schema.json +300 -0
  591. package/schemas/status-response.schema.json +193 -0
  592. package/scripts/README.md +354 -0
  593. package/scripts/analyze-governance-logs.mjs +51 -0
  594. package/scripts/benchmark-ci.ts +339 -0
  595. package/scripts/check-determinism.sh +23 -0
  596. package/scripts/check-license-compliance.mjs +319 -0
  597. package/scripts/check-release-drift.mjs +81 -0
  598. package/scripts/ci-debug.sh +24 -0
  599. package/scripts/ci-smoke.mjs +304 -0
  600. package/scripts/create-sample-repo.sh +245 -0
  601. package/scripts/dogfood-merge-weave.sh +552 -0
  602. package/scripts/gen_mcp_servers.py +252 -0
  603. package/scripts/generate-executor-manifest-schema.ts +30 -0
  604. package/scripts/generate-flake-schema.ts +32 -0
  605. package/scripts/generate-gate-schema.ts +32 -0
  606. package/scripts/generate-plan-schema.ts +30 -0
  607. package/scripts/generate-run-schemas.ts +69 -0
  608. package/scripts/load-prompt.mjs +147 -0
  609. package/scripts/merge-weave-wrapper.sh +445 -0
  610. package/scripts/merge-weave.sh +489 -0
  611. package/scripts/metrics-template.ts +134 -0
  612. package/scripts/package-lex.sh +267 -0
  613. package/scripts/quick-start-merge-weave.sh +218 -0
  614. package/scripts/release-prepare.ts +350 -0
  615. package/scripts/rotate-secrets-example.ts +134 -0
  616. package/scripts/test-lexsona-shadow.mjs +100 -0
  617. package/scripts/validate-manifests.ts +188 -0
  618. package/scripts/verify-audit-phase2.js +175 -0
  619. package/src/ai/README.md +456 -0
  620. package/src/ai/conflictStrategy.ts +223 -0
  621. package/src/ai/conflictStrategyCache.ts +164 -0
  622. package/src/ai/conflictStrategyPrompt.ts +128 -0
  623. package/src/ai/conflictStrategySchema.ts +165 -0
  624. package/src/ai/heuristicFallback.ts +162 -0
  625. package/src/ai/index.ts +64 -0
  626. package/src/ai/riskScoring.ts +174 -0
  627. package/src/aliases/index.ts +16 -0
  628. package/src/aliases/resolver.ts +212 -0
  629. package/src/audit/context.ts +284 -0
  630. package/src/audit/emitter.ts +685 -0
  631. package/src/audit/events.ts +210 -0
  632. package/src/audit/gateMatrix.ts +158 -0
  633. package/src/audit/index.ts +44 -0
  634. package/src/audit/manifest.ts +78 -0
  635. package/src/audit/profiles.ts +93 -0
  636. package/src/audit/redaction.ts +216 -0
  637. package/src/audit/sarif.ts +213 -0
  638. package/src/audit/schema/events.ts +366 -0
  639. package/src/audit/schema/manifest.ts +47 -0
  640. package/src/audit/schema.ts +159 -0
  641. package/src/audit/sdk/index.ts +145 -0
  642. package/src/audit/sdk/types.ts +88 -0
  643. package/src/audit/sidecar.ts +111 -0
  644. package/src/audit/signing.ts +521 -0
  645. package/src/autopilot/README.md +113 -0
  646. package/src/autopilot/artifacts.ts +287 -0
  647. package/src/autopilot/base.ts +132 -0
  648. package/src/autopilot/deliverables.ts +392 -0
  649. package/src/autopilot/index.ts +29 -0
  650. package/src/autopilot/level1.ts +187 -0
  651. package/src/autopilot/level2.ts +262 -0
  652. package/src/autopilot/level3.ts +263 -0
  653. package/src/autopilot/level4.ts +393 -0
  654. package/src/autopilot/safety/README.md +512 -0
  655. package/src/autopilot/safety/SafetyFramework.ts +634 -0
  656. package/src/autopilot/safety/index.ts +16 -0
  657. package/src/autopilot/types.ts +250 -0
  658. package/src/budget/index.ts +56 -0
  659. package/src/budget/manager.ts +547 -0
  660. package/src/budget/schema.ts +305 -0
  661. package/src/budget/tracker.ts +155 -0
  662. package/src/cache/issue-cache.ts +150 -0
  663. package/src/cli/command-map.ts +221 -0
  664. package/src/cli/commands/gate/test.ts +214 -0
  665. package/src/cli/exitHandler.ts +98 -0
  666. package/src/cli/flags.ts +123 -0
  667. package/src/cli/formatSuggestions.ts +202 -0
  668. package/src/cli/formatters.ts +294 -0
  669. package/src/cli/jsonEnvelope.ts +152 -0
  670. package/src/cli/output.ts +61 -0
  671. package/src/cli/runnerLifecycle.ts +118 -0
  672. package/src/cli-audit.ts +76 -0
  673. package/src/cli-security.ts +114 -0
  674. package/src/cli.ts +1231 -0
  675. package/src/commands/audit/index.ts +5 -0
  676. package/src/commands/audit/verify.ts +87 -0
  677. package/src/commands/autopilot.ts +131 -0
  678. package/src/commands/budget.ts +327 -0
  679. package/src/commands/bulkOps.ts +204 -0
  680. package/src/commands/completion.ts +287 -0
  681. package/src/commands/config/validate.ts +428 -0
  682. package/src/commands/config.ts +368 -0
  683. package/src/commands/counterExamples.ts +104 -0
  684. package/src/commands/create-project.ts +338 -0
  685. package/src/commands/discover.ts +192 -0
  686. package/src/commands/doctor.ts +436 -0
  687. package/src/commands/execute.ts +558 -0
  688. package/src/commands/explain.ts +157 -0
  689. package/src/commands/fanout-analyze.ts +684 -0
  690. package/src/commands/fanout-harvest.ts +328 -0
  691. package/src/commands/fanout-monitor.ts +224 -0
  692. package/src/commands/gateAttest.ts +95 -0
  693. package/src/commands/gateImport.ts +142 -0
  694. package/src/commands/gateImportChecks.ts +208 -0
  695. package/src/commands/gateReport.ts +184 -0
  696. package/src/commands/governanceCleanup.ts +171 -0
  697. package/src/commands/governanceReport.ts +497 -0
  698. package/src/commands/guards.ts +50 -0
  699. package/src/commands/idea.ts +281 -0
  700. package/src/commands/init.ts +414 -0
  701. package/src/commands/issues.ts +165 -0
  702. package/src/commands/merge.ts +677 -0
  703. package/src/commands/mergeOrder.ts +68 -0
  704. package/src/commands/metrics.ts +232 -0
  705. package/src/commands/migrateProfile.ts +187 -0
  706. package/src/commands/orchestrate/analyze-issues.ts +203 -0
  707. package/src/commands/orchestrate/assign-batch.ts +204 -0
  708. package/src/commands/orchestrate/generate-deliverables.ts +66 -0
  709. package/src/commands/orchestrate/pinToolchain.ts +102 -0
  710. package/src/commands/orchestrate/plan-batch.ts +119 -0
  711. package/src/commands/orchestrate/predict-conflicts.ts +210 -0
  712. package/src/commands/orchestrate.ts +186 -0
  713. package/src/commands/plan.ts +403 -0
  714. package/src/commands/planDiff.ts +56 -0
  715. package/src/commands/planReview.ts +112 -0
  716. package/src/commands/planViewer.ts +180 -0
  717. package/src/commands/preview-constraints.ts +97 -0
  718. package/src/commands/query.ts +313 -0
  719. package/src/commands/report.ts +56 -0
  720. package/src/commands/retry.ts +60 -0
  721. package/src/commands/schema.ts +128 -0
  722. package/src/commands/security.ts +140 -0
  723. package/src/commands/seniorDev.ts +326 -0
  724. package/src/commands/status.ts +97 -0
  725. package/src/commands/tokenReport.ts +167 -0
  726. package/src/commands/validation.ts +66 -0
  727. package/src/commands/weave-checkpoints.ts +145 -0
  728. package/src/commands/weave-fanout.ts +273 -0
  729. package/src/commands/weave-policy.ts +277 -0
  730. package/src/commands/weave.ts +518 -0
  731. package/src/config/localOverlay.ts +167 -0
  732. package/src/config/pathResolver.ts +106 -0
  733. package/src/config/profileResolver.ts +194 -0
  734. package/src/config/promptsResolver.ts +312 -0
  735. package/src/config/rulesResolver.ts +257 -0
  736. package/src/config/schemas.ts +142 -0
  737. package/src/core/bootstrap.ts +287 -0
  738. package/src/core/enterprise.ts +453 -0
  739. package/src/core/errorRecovery.ts +509 -0
  740. package/src/core/githubPlan.ts +282 -0
  741. package/src/core/inputs.ts +314 -0
  742. package/src/core/multiRepoPlan.ts +353 -0
  743. package/src/core/plan.ts +106 -0
  744. package/src/core/snapshot.ts +189 -0
  745. package/src/errors/adapters.ts +897 -0
  746. package/src/errors/index.ts +231 -0
  747. package/src/executionState.ts +356 -0
  748. package/src/executors/README_FRAME_CONTRACT.md +446 -0
  749. package/src/executors/frameContract.ts +270 -0
  750. package/src/executors/guardrailEnforcement.ts +294 -0
  751. package/src/executors/seniorDev/core.ts +548 -0
  752. package/src/executors/seniorDev/index.ts +30 -0
  753. package/src/executors/seniorDev/types.ts +176 -0
  754. package/src/executors/toolBudget.ts +194 -0
  755. package/src/fanout/analyzer.ts +735 -0
  756. package/src/fanout/github-adapter.ts +262 -0
  757. package/src/fanout/harvest.ts +517 -0
  758. package/src/fanout/monitor.ts +350 -0
  759. package/src/fanout/types.ts +428 -0
  760. package/src/frames/controller.ts +160 -0
  761. package/src/frames/emitter.ts +455 -0
  762. package/src/frames/index.ts +58 -0
  763. package/src/frames/storage.ts +203 -0
  764. package/src/frames/types.ts +258 -0
  765. package/src/gates/checkRunConverter.ts +91 -0
  766. package/src/gates/test/adapters/errors.ts +32 -0
  767. package/src/gates/test/adapters/index.ts +36 -0
  768. package/src/gates/test/adapters/interface.ts +63 -0
  769. package/src/gates/test/adapters/jest-json.ts +370 -0
  770. package/src/gates/test/adapters/junit-xml.ts +400 -0
  771. package/src/gates/test/adapters/registry.ts +149 -0
  772. package/src/gates/test/adapters/vitest-json.ts +339 -0
  773. package/src/gates/test/enrichment/failureId.ts +74 -0
  774. package/src/gates/test/enrichment/index.ts +25 -0
  775. package/src/gates/test/enrichment/nextActions.ts +322 -0
  776. package/src/gates/test/enrichment/rerunTemplates.ts +105 -0
  777. package/src/gates/test/enrichment/signature.ts +58 -0
  778. package/src/gates/test/enrichment/stackParser.ts +149 -0
  779. package/src/gates/test/enrichment/types.ts +67 -0
  780. package/src/gates/test/formatters/markdown.spec.ts +942 -0
  781. package/src/gates/test/formatters/markdown.ts +296 -0
  782. package/src/gates/test/index.ts +54 -0
  783. package/src/gates/test/schema.spec.ts +372 -0
  784. package/src/gates/test/schema.ts +327 -0
  785. package/src/gates/validator.ts +92 -0
  786. package/src/gates.ts +1022 -0
  787. package/src/git/operations.ts +592 -0
  788. package/src/git/parseRemote.ts +22 -0
  789. package/src/github/api.ts +584 -0
  790. package/src/github/batch-ops.ts +215 -0
  791. package/src/github/client.ts +647 -0
  792. package/src/github/contextDiet.ts +205 -0
  793. package/src/github/diffHunks.ts +285 -0
  794. package/src/github/index.ts +11 -0
  795. package/src/github/minimalContext.ts +212 -0
  796. package/src/github/minimalContextClient.ts +105 -0
  797. package/src/github/symbolMap.ts +370 -0
  798. package/src/github/types.ts +166 -0
  799. package/src/governance/index.ts +42 -0
  800. package/src/governance/mcpStatus.ts +258 -0
  801. package/src/governance/timeoutAdjustment.ts +149 -0
  802. package/src/governance/turnCostSummary.ts +182 -0
  803. package/src/hooks/events.ts +374 -0
  804. package/src/hooks/index.ts +8 -0
  805. package/src/hostility/checks.ts +408 -0
  806. package/src/hostility/index.ts +108 -0
  807. package/src/hostility/score.ts +143 -0
  808. package/src/interactive/planDiff.ts +168 -0
  809. package/src/interactive/planHistory.ts +205 -0
  810. package/src/interactive/planReview.ts +531 -0
  811. package/src/learning/counter-example.ts +174 -0
  812. package/src/learning/prompts.ts +107 -0
  813. package/src/learning/storage.ts +230 -0
  814. package/src/lexsona/client.ts +367 -0
  815. package/src/lexsona/index.ts +44 -0
  816. package/src/lexsona/logger.ts +408 -0
  817. package/src/lexsona/types.ts +177 -0
  818. package/src/mcp/DEPRECATED.md +33 -0
  819. package/src/mcp/server.ts +3587 -0
  820. package/src/mcp/types/guided-response.ts +95 -0
  821. package/src/mcp/types.ts +468 -0
  822. package/src/mcp/workflow/state-machine.ts +277 -0
  823. package/src/mergeEligibility.ts +355 -0
  824. package/src/mergeOrder.ts +170 -0
  825. package/src/metrics/export.ts +472 -0
  826. package/src/metrics/index.ts +35 -0
  827. package/src/metrics/turncost.ts +284 -0
  828. package/src/monitoring/README.md +222 -0
  829. package/src/monitoring/audit.ts +98 -0
  830. package/src/monitoring/cache.ts +121 -0
  831. package/src/monitoring/dashboards/grafana-dashboard.json +172 -0
  832. package/src/monitoring/errorRecovery.ts +334 -0
  833. package/src/monitoring/errors.ts +105 -0
  834. package/src/monitoring/fileLogger.ts +194 -0
  835. package/src/monitoring/hallucinations.ts +45 -0
  836. package/src/monitoring/health.ts +171 -0
  837. package/src/monitoring/index.ts +16 -0
  838. package/src/monitoring/lock.ts +158 -0
  839. package/src/monitoring/logger.ts +178 -0
  840. package/src/monitoring/metrics.ts +245 -0
  841. package/src/monitoring/profiler.ts +156 -0
  842. package/src/monitoring/tokenLogger.ts +141 -0
  843. package/src/orchestrate/analyzer.ts +461 -0
  844. package/src/orchestrate/index.ts +6 -0
  845. package/src/orchestrate/types.ts +65 -0
  846. package/src/orchestration/README.md +480 -0
  847. package/src/orchestration/agentAssigner.ts +206 -0
  848. package/src/orchestration/batchPlanner.ts +201 -0
  849. package/src/orchestration/conflictClustering.ts +344 -0
  850. package/src/orchestration/conflictGraph.ts +63 -0
  851. package/src/orchestration/conflictPredictor.ts +170 -0
  852. package/src/orchestration/deliverablesGenerator.ts +345 -0
  853. package/src/orchestration/determinism.ts +232 -0
  854. package/src/orchestration/index.ts +45 -0
  855. package/src/orchestration/mergeTreeSimulator.ts +137 -0
  856. package/src/orchestration/mis.ts +123 -0
  857. package/src/orchestration/toolchainManifest.ts +169 -0
  858. package/src/orchestration/types.ts +103 -0
  859. package/src/performance.README.md +99 -0
  860. package/src/performance.ts +279 -0
  861. package/src/planner/README.md +215 -0
  862. package/src/planner/dependencyParser.ts +404 -0
  863. package/src/planner/dependencyScoring.ts +346 -0
  864. package/src/planner/fileAnalysis.ts +693 -0
  865. package/src/planner/index.ts +41 -0
  866. package/src/planner/scopeValidator.ts +308 -0
  867. package/src/planner/types.ts +80 -0
  868. package/src/planner/validation.ts +493 -0
  869. package/src/preview/constraints.ts +333 -0
  870. package/src/procedures/index.ts +47 -0
  871. package/src/procedures/loader.ts +252 -0
  872. package/src/procedures/schema.ts +191 -0
  873. package/src/procedures/stateMachine.ts +160 -0
  874. package/src/procedures/types.ts +178 -0
  875. package/src/receipts/emit.ts +354 -0
  876. package/src/receipts/index.ts +48 -0
  877. package/src/receipts/schema.ts +227 -0
  878. package/src/report/aggregate.ts +160 -0
  879. package/src/runs/artifacts.ts +315 -0
  880. package/src/runs/attribution.ts +132 -0
  881. package/src/runs/context.ts +54 -0
  882. package/src/runs/decisions.ts +407 -0
  883. package/src/runs/enforcement.ts +395 -0
  884. package/src/runs/failures.ts +517 -0
  885. package/src/runs/index.ts +141 -0
  886. package/src/runs/manager.ts +910 -0
  887. package/src/runs/statusBuilder.ts +233 -0
  888. package/src/runs/storage.ts +290 -0
  889. package/src/runs/types.ts +216 -0
  890. package/src/schema/flakeReport.ts +74 -0
  891. package/src/schema/gateMapping.ts +107 -0
  892. package/src/schema/gateReport.ts +236 -0
  893. package/src/schema/weaveLock.ts +51 -0
  894. package/src/schema.ts +313 -0
  895. package/src/schemas/executorManifest.ts +204 -0
  896. package/src/schemas/feature-spec-v0.ts +40 -0
  897. package/src/schemas/persona.ts +162 -0
  898. package/src/schemas/project.ts +91 -0
  899. package/src/schemas/runCentric.ts +402 -0
  900. package/src/schemas/task-contract.ts +626 -0
  901. package/src/schemas/vacuumReadyPrompt.ts +128 -0
  902. package/src/sdk/index.ts +113 -0
  903. package/src/sdk/parser.ts +101 -0
  904. package/src/sdk/query.ts +315 -0
  905. package/src/sdk/validator.ts +114 -0
  906. package/src/security/README.md +496 -0
  907. package/src/security/authentication.ts +173 -0
  908. package/src/security/authorization.ts +348 -0
  909. package/src/security/commandValidator.ts +195 -0
  910. package/src/security/compliance.ts +688 -0
  911. package/src/security/index.ts +85 -0
  912. package/src/security/policy.ts +399 -0
  913. package/src/security/sarif.ts +179 -0
  914. package/src/security/scanning.ts +362 -0
  915. package/src/security/secrets.ts +520 -0
  916. package/src/shared/git/index.ts +30 -0
  917. package/src/shared/git/runGit.ts +281 -0
  918. package/src/shared/git/runtime.ts +66 -0
  919. package/src/snapshot/builder.ts +229 -0
  920. package/src/snapshot/index.ts +8 -0
  921. package/src/store/CONTRACT.md +189 -0
  922. package/src/store/README.md +22 -0
  923. package/src/store/index.ts +99 -0
  924. package/src/store/inmemory/index.ts +10 -0
  925. package/src/store/inmemory/run-store.ts +268 -0
  926. package/src/store/postgres/.gitkeep +0 -0
  927. package/src/store/run-store.ts +405 -0
  928. package/src/store/sqlite/index.ts +7 -0
  929. package/src/store/sqlite/run-store.ts +525 -0
  930. package/src/store/sqlite/schema.sql +67 -0
  931. package/src/telemetry/frames.ts +179 -0
  932. package/src/telemetry/index.ts +5 -0
  933. package/src/tiers/index.ts +34 -0
  934. package/src/tiers/metrics.ts +156 -0
  935. package/src/tiers/schema.ts +95 -0
  936. package/src/tiers/suggest.ts +183 -0
  937. package/src/types/guardrails.ts +452 -0
  938. package/src/types/index.ts +42 -0
  939. package/src/util/canonicalJson.ts +29 -0
  940. package/src/util/colorControl.ts +46 -0
  941. package/src/util/envUtils.ts +139 -0
  942. package/src/util/hash.ts +69 -0
  943. package/src/util/lockHash.ts +90 -0
  944. package/src/util/minHeap.ts +108 -0
  945. package/src/util/progress.ts +89 -0
  946. package/src/util/tokenEstimator.ts +55 -0
  947. package/src/utils/fingerprint.ts +105 -0
  948. package/src/utils/paths.ts +209 -0
  949. package/src/utils/tokens.ts +151 -0
  950. package/src/utils/validation.ts +53 -0
  951. package/src/verification/diff-applier.ts +60 -0
  952. package/src/verification/engine-verifier.ts +171 -0
  953. package/src/verification/errors.ts +30 -0
  954. package/src/verification/index.ts +13 -0
  955. package/src/weave/audit/index.ts +17 -0
  956. package/src/weave/audit/logger.ts +206 -0
  957. package/src/weave/authority/evaluator.ts +660 -0
  958. package/src/weave/authority/index.ts +30 -0
  959. package/src/weave/authority/schema.ts +292 -0
  960. package/src/weave/checkpoint/index.ts +7 -0
  961. package/src/weave/checkpoint/storage.ts +223 -0
  962. package/src/weave/checkpoint/types.ts +121 -0
  963. package/src/weave/checkpoint/utils.ts +207 -0
  964. package/src/weave/clusterGates.ts +366 -0
  965. package/src/weave/draftPR.ts +214 -0
  966. package/src/weave/executor/d1-executor.ts +822 -0
  967. package/src/weave/executor/d2-executor.ts +381 -0
  968. package/src/weave/executor/index.ts +24 -0
  969. package/src/weave/executor/types.ts +135 -0
  970. package/src/weave/fanout/generator.ts +186 -0
  971. package/src/weave/fanout/index.ts +51 -0
  972. package/src/weave/fanout/loader.ts +134 -0
  973. package/src/weave/fanout/matcher.ts +239 -0
  974. package/src/weave/fanout/schema.ts +178 -0
  975. package/src/weave/frameHelper.ts +126 -0
  976. package/src/weave/gateFailureHandler.ts +405 -0
  977. package/src/weave/index.ts +89 -0
  978. package/src/weave/lockFile.ts +193 -0
  979. package/src/weave/mergeHelpers.ts +377 -0
  980. package/src/weave/mergeWeaveSequential.ts +282 -0
  981. package/src/weave/metrics/calculator.ts +362 -0
  982. package/src/weave/metrics/index.ts +44 -0
  983. package/src/weave/metrics/logger.ts +291 -0
  984. package/src/weave/metrics/schema.ts +505 -0
  985. package/src/weave/planner/index.ts +23 -0
  986. package/src/weave/planner/planner.ts +411 -0
  987. package/src/weave/planner/types.ts +181 -0
  988. package/src/weave/policy/index.ts +63 -0
  989. package/src/weave/policy/loader.ts +148 -0
  990. package/src/weave/policy/schema.ts +290 -0
  991. package/src/weave/post-merge-checks.ts +220 -0
  992. package/src/weave/preflightConflicts.ts +375 -0
  993. package/src/weave/receiptHelper.ts +287 -0
  994. package/src/weave/recovery.ts +232 -0
  995. package/src/weave/resolutionGuidance.ts +173 -0
  996. package/src/weave/stateMachine.ts +426 -0
  997. package/src/weave/testfix/applier.ts +195 -0
  998. package/src/weave/testfix/index.ts +18 -0
  999. package/src/weave/testfix/loader.ts +116 -0
  1000. package/src/weave/testfix/matcher.ts +158 -0
  1001. package/src/weave/testfix/schema.ts +218 -0
  1002. package/src/weave/types.ts +305 -0
  1003. package/src/weave/utils/copilot-completion.ts +76 -0
  1004. package/test-mcp-dogfood.mjs +128 -0
  1005. package/test-mcp.mjs +116 -0
  1006. package/tests/README.md +155 -0
  1007. package/tests/advanced-cli-e2e.spec.ts +218 -0
  1008. package/tests/agentAssigner.spec.ts +261 -0
  1009. package/tests/ai-conflict-strategy-cache.spec.ts +254 -0
  1010. package/tests/ai-conflict-strategy-risk.spec.ts +287 -0
  1011. package/tests/ai-conflict-strategy-schema.spec.ts +252 -0
  1012. package/tests/ai-conflict-strategy.spec.ts +442 -0
  1013. package/tests/aliases/resolver.spec.ts +238 -0
  1014. package/tests/audit/context.spec.ts +283 -0
  1015. package/tests/audit/emitter.spec.ts +347 -0
  1016. package/tests/audit/gateMatrix.spec.ts +335 -0
  1017. package/tests/audit/integration.spec.ts +236 -0
  1018. package/tests/audit/redaction.spec.ts +290 -0
  1019. package/tests/audit/sarif-integration.spec.ts +303 -0
  1020. package/tests/audit/sarif.spec.ts +458 -0
  1021. package/tests/audit/schema-events.spec.ts +421 -0
  1022. package/tests/audit/schema.spec.ts +434 -0
  1023. package/tests/audit/sdk-integration.spec.ts +598 -0
  1024. package/tests/audit/sdk.spec.ts +318 -0
  1025. package/tests/audit/signing-integration.spec.ts +276 -0
  1026. package/tests/audit/signing.spec.ts +350 -0
  1027. package/tests/audit-signing.spec.ts +406 -0
  1028. package/tests/audit-verify-cli.spec.ts +176 -0
  1029. package/tests/autopilot-e2e-level3-4.spec.ts +741 -0
  1030. package/tests/autopilot-integration.spec.ts +274 -0
  1031. package/tests/autopilot-level1.spec.ts +449 -0
  1032. package/tests/autopilot-level2.spec.ts +188 -0
  1033. package/tests/autopilot-level3.spec.ts +266 -0
  1034. package/tests/autopilot-level4.spec.ts +454 -0
  1035. package/tests/autopilot.spec.ts +379 -0
  1036. package/tests/ax-error-adapters.spec.ts +580 -0
  1037. package/tests/batch-planner.spec.ts +500 -0
  1038. package/tests/benchmark-infrastructure.spec.ts +445 -0
  1039. package/tests/benchmarks/README.md +103 -0
  1040. package/tests/benchmarks/baselines/baseline.json +127 -0
  1041. package/tests/benchmarks/core/dependencyResolver.bench.ts +128 -0
  1042. package/tests/benchmarks/core/planParser.bench.ts +114 -0
  1043. package/tests/benchmarks/core/topologicalSort.bench.ts +102 -0
  1044. package/tests/benchmarks/index.ts +36 -0
  1045. package/tests/benchmarks/io/fileOperations.bench.ts +132 -0
  1046. package/tests/benchmarks/io/gitOperations.bench.ts +99 -0
  1047. package/tests/benchmarks/utils/graphGenerator.ts +201 -0
  1048. package/tests/benchmarks/utils/reporter.ts +231 -0
  1049. package/tests/benchmarks/workflows/endToEnd.bench.ts +132 -0
  1050. package/tests/bootstrap.test.ts +319 -0
  1051. package/tests/budget-tracker.spec.ts +279 -0
  1052. package/tests/bulkOps.spec.ts +166 -0
  1053. package/tests/bulletproof-determinism.test.ts +223 -0
  1054. package/tests/canonicalJson.test.ts +130 -0
  1055. package/tests/checkRunConverter.spec.ts +357 -0
  1056. package/tests/cli/commands/gate/test.spec.ts +564 -0
  1057. package/tests/cli/emit-frames-flag.spec.ts +117 -0
  1058. package/tests/cli/exitHandler.spec.ts +314 -0
  1059. package/tests/cli/flags.spec.ts +223 -0
  1060. package/tests/cli/formatters.spec.ts +513 -0
  1061. package/tests/cli/output.spec.ts +221 -0
  1062. package/tests/cli-autopilot.spec.ts +170 -0
  1063. package/tests/cli-budget-guards.spec.ts +210 -0
  1064. package/tests/cli-color-control.spec.ts +334 -0
  1065. package/tests/cli-deliverables-generator.spec.ts +185 -0
  1066. package/tests/cli-determinism.spec.ts +496 -0
  1067. package/tests/cli-init-enterprise.spec.ts +294 -0
  1068. package/tests/cli-init-json.spec.ts +154 -0
  1069. package/tests/cli-init-local.spec.ts +159 -0
  1070. package/tests/cli-json-envelope.spec.ts +140 -0
  1071. package/tests/cli-json.spec.ts +408 -0
  1072. package/tests/cli-orchestrate-plan-batch.spec.ts +329 -0
  1073. package/tests/cli-orchestrate.spec.ts +231 -0
  1074. package/tests/cli-plan-generation.spec.ts +367 -0
  1075. package/tests/cli-plan-review.spec.ts +300 -0
  1076. package/tests/cli-progress.spec.ts +193 -0
  1077. package/tests/cli-ux-enhancements.spec.ts +213 -0
  1078. package/tests/cliJsonPurity.spec.ts +437 -0
  1079. package/tests/cliSuggestDeps.spec.ts +360 -0
  1080. package/tests/cluster-gates-rollback.spec.ts +353 -0
  1081. package/tests/command-validator-integration.spec.ts +305 -0
  1082. package/tests/command-validator.spec.ts +380 -0
  1083. package/tests/commands/autopilot.spec.ts +124 -0
  1084. package/tests/commands/config-validate.spec.ts +301 -0
  1085. package/tests/commands/config.spec.ts +311 -0
  1086. package/tests/commands/create-project.spec.ts +90 -0
  1087. package/tests/commands/doctor.spec.ts +57 -0
  1088. package/tests/commands/execute.spec.ts +293 -0
  1089. package/tests/commands/gateAttest.spec.ts +172 -0
  1090. package/tests/commands/gateImport.spec.ts +176 -0
  1091. package/tests/commands/gateReport.spec.ts +130 -0
  1092. package/tests/commands/guards.spec.ts +114 -0
  1093. package/tests/commands/idea.spec.ts +177 -0
  1094. package/tests/commands/merge.spec.ts +166 -0
  1095. package/tests/commands/plan.spec.ts +123 -0
  1096. package/tests/commands/query.spec.ts +294 -0
  1097. package/tests/commands/report.spec.ts +54 -0
  1098. package/tests/commands/retry.spec.ts +300 -0
  1099. package/tests/commands/schema.spec.ts +136 -0
  1100. package/tests/commands/validation.spec.ts +229 -0
  1101. package/tests/completion.spec.ts +133 -0
  1102. package/tests/config-inspect.spec.ts +202 -0
  1103. package/tests/conflictClustering-e2e.spec.ts +278 -0
  1104. package/tests/conflictClustering.spec.ts +550 -0
  1105. package/tests/conflictGraph.spec.ts +126 -0
  1106. package/tests/conflictPredictor.spec.ts +238 -0
  1107. package/tests/deliverables-generator.spec.ts +329 -0
  1108. package/tests/deliverables.spec.ts +381 -0
  1109. package/tests/dependencyParser-github.spec.ts +244 -0
  1110. package/tests/dependencyParser.spec.ts +386 -0
  1111. package/tests/dependencyScoring.spec.ts +668 -0
  1112. package/tests/deterministic-applicable.test.ts +156 -0
  1113. package/tests/deterministic-build.test.ts +172 -0
  1114. package/tests/deterministic-simple.test.ts +32 -0
  1115. package/tests/discover-suggest-integration.spec.ts +340 -0
  1116. package/tests/dogfood-merge-weave-script.spec.ts +150 -0
  1117. package/tests/e2e/planner.spec.ts +596 -0
  1118. package/tests/e2e-comprehensive.test.ts +500 -0
  1119. package/tests/e2e-determinism.test.ts +293 -0
  1120. package/tests/e2e-synthetic-6pr-weave.spec.ts +329 -0
  1121. package/tests/enterprise-init.spec.ts +350 -0
  1122. package/tests/envUtils.spec.ts +267 -0
  1123. package/tests/error-handling.test.ts +104 -0
  1124. package/tests/error-recovery.spec.ts +451 -0
  1125. package/tests/execution-plan-v1.test.ts +257 -0
  1126. package/tests/executionState-loadGateResults.spec.ts +267 -0
  1127. package/tests/executionState.test.ts +169 -0
  1128. package/tests/executors/README.md +100 -0
  1129. package/tests/executors/frameContract-integration.spec.ts +324 -0
  1130. package/tests/executors/frameContract.spec.ts +531 -0
  1131. package/tests/executors/guardrailEnforcement.spec.ts +424 -0
  1132. package/tests/executors/lifecycle.spec.ts +313 -0
  1133. package/tests/executors/toolBudget.spec.ts +473 -0
  1134. package/tests/feature-spec-v0.test.ts +145 -0
  1135. package/tests/fileAnalysis.spec.ts +946 -0
  1136. package/tests/fingerprint.spec.ts +100 -0
  1137. package/tests/fixtures/README.md +380 -0
  1138. package/tests/fixtures/deliverables/batch-example-plan.json +62 -0
  1139. package/tests/fixtures/executors/README.md +57 -0
  1140. package/tests/fixtures/executors/index.ts +9 -0
  1141. package/tests/fixtures/executors/mock-executor.ts +204 -0
  1142. package/tests/fixtures/executors/registry.ts +51 -0
  1143. package/tests/fixtures/executors/types.ts +95 -0
  1144. package/tests/fixtures/fixtures.spec.ts +307 -0
  1145. package/tests/fixtures/gates/configs.ts +234 -0
  1146. package/tests/fixtures/gates/results.ts +234 -0
  1147. package/tests/fixtures/harvest-bundle-fixture.json +87 -0
  1148. package/tests/fixtures/index.ts +219 -0
  1149. package/tests/fixtures/invalid/plans.ts +178 -0
  1150. package/tests/fixtures/jest/all-passing.json +71 -0
  1151. package/tests/fixtures/jest/snapshot-failures.json +66 -0
  1152. package/tests/fixtures/jest/some-failing.json +100 -0
  1153. package/tests/fixtures/jest/with-location.json +84 -0
  1154. package/tests/fixtures/junit/cdata-messages.xml +29 -0
  1155. package/tests/fixtures/junit/multiple-suites.xml +30 -0
  1156. package/tests/fixtures/junit/single-suite.xml +17 -0
  1157. package/tests/fixtures/junit/with-errors.xml +19 -0
  1158. package/tests/fixtures/junit/with-skipped.xml +18 -0
  1159. package/tests/fixtures/npm-audit.json +32 -0
  1160. package/tests/fixtures/plan.bad-schema.json +5 -0
  1161. package/tests/fixtures/plan.bad-unknown-dep.json +10 -0
  1162. package/tests/fixtures/plan.ci-gates.json +36 -0
  1163. package/tests/fixtures/plan.complex-cycle.json +22 -0
  1164. package/tests/fixtures/plan.cycle.json +14 -0
  1165. package/tests/fixtures/plan.deep-chain.json +95 -0
  1166. package/tests/fixtures/plan.dogfood-execute.json +36 -0
  1167. package/tests/fixtures/plan.gates.json +30 -0
  1168. package/tests/fixtures/plan.integration-pyramid.json +56 -0
  1169. package/tests/fixtures/plan.orphans.json +22 -0
  1170. package/tests/fixtures/plan.parallel.json +30 -0
  1171. package/tests/fixtures/plan.tiny.json +18 -0
  1172. package/tests/fixtures/plan.wide-parallel.json +75 -0
  1173. package/tests/fixtures/plan.with-failures.json +26 -0
  1174. package/tests/fixtures/plan.with-vuln.json +25 -0
  1175. package/tests/fixtures/planner/cross-module.json +101 -0
  1176. package/tests/fixtures/planner/cycle-error.json +56 -0
  1177. package/tests/fixtures/planner/diamond-pattern.json +74 -0
  1178. package/tests/fixtures/planner/empty-repo.json +9 -0
  1179. package/tests/fixtures/planner/file-overlap-heavy.json +110 -0
  1180. package/tests/fixtures/planner/invalid-pr.json +25 -0
  1181. package/tests/fixtures/planner/merge-conflicts.json +42 -0
  1182. package/tests/fixtures/planner/mixed-deps.json +101 -0
  1183. package/tests/fixtures/planner/self-dependency.json +24 -0
  1184. package/tests/fixtures/planner/simple-stack.json +79 -0
  1185. package/tests/fixtures/planner/single-pr.json +25 -0
  1186. package/tests/fixtures/planner/stale-pr.json +40 -0
  1187. package/tests/fixtures/plans/complex.ts +201 -0
  1188. package/tests/fixtures/plans/diamond.ts +115 -0
  1189. package/tests/fixtures/plans/linear.ts +74 -0
  1190. package/tests/fixtures/plans/simple.ts +61 -0
  1191. package/tests/fixtures/prs/basic.ts +175 -0
  1192. package/tests/fixtures/prs/withDeps.ts +197 -0
  1193. package/tests/fixtures/scan-results-clean.sarif +15 -0
  1194. package/tests/fixtures/scan-results.sarif +74 -0
  1195. package/tests/fixtures/scenarios/mergeWorkflows.ts +300 -0
  1196. package/tests/fixtures/scenarios/syntheticWeave.ts +351 -0
  1197. package/tests/fixtures/snapshot/package.json +5 -0
  1198. package/tests/fixtures/snapshot/sample.ts +21 -0
  1199. package/tests/fixtures/utils/cleanup.ts +81 -0
  1200. package/tests/fixtures/utils/mockGitHub.ts +219 -0
  1201. package/tests/fixtures/utils/tempDir.ts +109 -0
  1202. package/tests/fixtures/verification/expected-verification.json +16 -0
  1203. package/tests/fixtures/verification/receipt.json +31 -0
  1204. package/tests/fixtures/verification/snapshot.json +44 -0
  1205. package/tests/fixtures/vitest/all-passing.json +67 -0
  1206. package/tests/fixtures/vitest/complex-nested-suites.json +98 -0
  1207. package/tests/fixtures/vitest/some-failing.json +98 -0
  1208. package/tests/fixtures/vitest/with-coverage.json +97 -0
  1209. package/tests/fixtures-usage-examples.spec.ts +304 -0
  1210. package/tests/flakeReport.spec.ts +267 -0
  1211. package/tests/frames/ci-gate-integration.spec.ts +331 -0
  1212. package/tests/frames/controller.spec.ts +165 -0
  1213. package/tests/frames/emitter.spec.ts +371 -0
  1214. package/tests/frames/idempotency.spec.ts +177 -0
  1215. package/tests/frames/storage.spec.ts +346 -0
  1216. package/tests/frames/types.spec.ts +249 -0
  1217. package/tests/frames/v2-schema-integration.spec.ts +435 -0
  1218. package/tests/gate-working-directory.spec.ts +204 -0
  1219. package/tests/gateMapping.spec.ts +161 -0
  1220. package/tests/gateReportIntegration.spec.ts +175 -0
  1221. package/tests/gateReportValidation.spec.ts +452 -0
  1222. package/tests/gates/test/adapters/jest-json.spec.ts +372 -0
  1223. package/tests/gates/test/adapters/junit-xml.spec.ts +421 -0
  1224. package/tests/gates/test/adapters/registry.spec.ts +376 -0
  1225. package/tests/gates/test/adapters/vitest-json.spec.ts +455 -0
  1226. package/tests/gates/test/enrichment/failureId.spec.ts +131 -0
  1227. package/tests/gates/test/enrichment/nextActions.spec.ts +365 -0
  1228. package/tests/gates/test/enrichment/rerunTemplates.spec.ts +187 -0
  1229. package/tests/gates/test/enrichment/signature.spec.ts +163 -0
  1230. package/tests/gates/test/enrichment/stackParser.spec.ts +203 -0
  1231. package/tests/gates/turncost-integration.spec.ts +221 -0
  1232. package/tests/gates/validation-integration.spec.ts +147 -0
  1233. package/tests/gates/validator.spec.ts +200 -0
  1234. package/tests/gates.test.ts +255 -0
  1235. package/tests/gatesWithPolicy.hostilityTimeoutAdjustment.spec.ts +156 -0
  1236. package/tests/git-operations-receipts.spec.ts +121 -0
  1237. package/tests/git-operations.test.ts +152 -0
  1238. package/tests/git-runtime.spec.ts +175 -0
  1239. package/tests/github-api.labels.spec.ts +21 -0
  1240. package/tests/github-api.test.ts +85 -0
  1241. package/tests/github-context-diet.spec.ts +441 -0
  1242. package/tests/github-diff-hunks.spec.ts +387 -0
  1243. package/tests/github-integration.spec.ts +774 -0
  1244. package/tests/github-minimal-context.spec.ts +338 -0
  1245. package/tests/github-symbol-map.spec.ts +414 -0
  1246. package/tests/githubClient.spec.ts +123 -0
  1247. package/tests/governance/mcpStatus.spec.ts +276 -0
  1248. package/tests/governance/timeoutAdjustment.spec.ts +149 -0
  1249. package/tests/governance/turnCostSummary.spec.ts +188 -0
  1250. package/tests/governance-retention.spec.ts +151 -0
  1251. package/tests/governance-wrapper-delegation.spec.ts +148 -0
  1252. package/tests/guardrails.spec.ts +860 -0
  1253. package/tests/hash.test.ts +83 -0
  1254. package/tests/helpers/cli.ts +23 -0
  1255. package/tests/helpers/getStd.ts +1 -0
  1256. package/tests/helpers/makeGate.ts +19 -0
  1257. package/tests/helpers/plannerTestHelpers.ts +314 -0
  1258. package/tests/hooks/events.spec.ts +518 -0
  1259. package/tests/hostility/checks.spec.ts +295 -0
  1260. package/tests/hostility/integration.spec.ts +123 -0
  1261. package/tests/hostility/score.spec.ts +175 -0
  1262. package/tests/init.spec.ts +270 -0
  1263. package/tests/integration/hipaa-encryption.spec.ts +148 -0
  1264. package/tests/integration/lex-smoke-test.spec.ts +328 -0
  1265. package/tests/integration-e2e.test.ts +244 -0
  1266. package/tests/integration-matrix.test.ts +409 -0
  1267. package/tests/interPRConflicts.spec.ts +254 -0
  1268. package/tests/interactive-plan-history.spec.ts +255 -0
  1269. package/tests/interactive-plan-review.spec.ts +287 -0
  1270. package/tests/issue-analyzer.spec.ts +593 -0
  1271. package/tests/lexsona-integration.spec.ts +311 -0
  1272. package/tests/localOverlay.spec.ts +203 -0
  1273. package/tests/lockHash.spec.ts +167 -0
  1274. package/tests/mcp-auth-errors.spec.ts +190 -0
  1275. package/tests/mcp-contracts.spec.ts +290 -0
  1276. package/tests/mcp-gates-external-plan.spec.ts +146 -0
  1277. package/tests/mcp-granular-tools.spec.ts +208 -0
  1278. package/tests/mcp-runstore-integration.spec.ts +334 -0
  1279. package/tests/mcp-scope-integration.spec.ts +318 -0
  1280. package/tests/mcp-task-handoff.spec.ts +320 -0
  1281. package/tests/mcp-workflow-guide.spec.ts +53 -0
  1282. package/tests/mcp.test.ts +151 -0
  1283. package/tests/merge-conflict-detection.spec.ts +260 -0
  1284. package/tests/mergeEligibility.test.ts +201 -0
  1285. package/tests/mergeLockHash.spec.ts +158 -0
  1286. package/tests/mergeOrder-with-fixtures.spec.ts +215 -0
  1287. package/tests/mergeOrder.test.ts +108 -0
  1288. package/tests/mergeTreeSimulator.spec.ts +145 -0
  1289. package/tests/metrics/export.spec.ts +446 -0
  1290. package/tests/metrics/turncost.spec.ts +309 -0
  1291. package/tests/metrics-template.spec.ts +137 -0
  1292. package/tests/migrateProfile.spec.ts +254 -0
  1293. package/tests/mis.spec.ts +202 -0
  1294. package/tests/monitoring-audit.spec.ts +181 -0
  1295. package/tests/monitoring-cache.spec.ts +331 -0
  1296. package/tests/monitoring-error-recovery.spec.ts +236 -0
  1297. package/tests/monitoring-errors.spec.ts +193 -0
  1298. package/tests/monitoring-fileLogger.spec.ts +319 -0
  1299. package/tests/monitoring-health.spec.ts +152 -0
  1300. package/tests/monitoring-lock.spec.ts +308 -0
  1301. package/tests/monitoring-logger.spec.ts +157 -0
  1302. package/tests/monitoring-metrics.spec.ts +158 -0
  1303. package/tests/monitoring-profiler.spec.ts +197 -0
  1304. package/tests/orchestration-determinism.spec.ts +204 -0
  1305. package/tests/parseRemote.spec.ts +25 -0
  1306. package/tests/pathResolver.spec.ts +122 -0
  1307. package/tests/paths.spec.ts +68 -0
  1308. package/tests/performance.spec.ts +322 -0
  1309. package/tests/pipeline-determinism.spec.ts +597 -0
  1310. package/tests/plan-tier-integration.spec.ts +184 -0
  1311. package/tests/precedence-resolution.spec.ts +682 -0
  1312. package/tests/preflightConflicts.spec.ts +205 -0
  1313. package/tests/procedures/keystone-policy.spec.ts +296 -0
  1314. package/tests/procedures/loader.spec.ts +585 -0
  1315. package/tests/procedures/pr-review.spec.ts +321 -0
  1316. package/tests/profileResolver.spec.ts +375 -0
  1317. package/tests/progress-indicators.spec.ts +139 -0
  1318. package/tests/promptsResolver.spec.ts +443 -0
  1319. package/tests/public-api.spec.ts +272 -0
  1320. package/tests/query.spec.ts +170 -0
  1321. package/tests/receipts.spec.ts +463 -0
  1322. package/tests/release-prepare.spec.ts +268 -0
  1323. package/tests/report.test.ts +335 -0
  1324. package/tests/resolutionGuidance.spec.ts +160 -0
  1325. package/tests/rotate-secrets-example.spec.ts +198 -0
  1326. package/tests/rulesResolver.spec.ts +232 -0
  1327. package/tests/runGit.spec.ts +229 -0
  1328. package/tests/runner-lifecycle-integration.spec.ts +283 -0
  1329. package/tests/runs/artifacts.spec.ts +367 -0
  1330. package/tests/runs/decisions.spec.ts +495 -0
  1331. package/tests/runs/enforcement.spec.ts +555 -0
  1332. package/tests/runs/failures.spec.ts +554 -0
  1333. package/tests/runs/manager-runstore-integration.spec.ts +455 -0
  1334. package/tests/runs/manager.spec.ts +678 -0
  1335. package/tests/runs-manager.spec.ts +485 -0
  1336. package/tests/safety-acceptance.spec.ts +278 -0
  1337. package/tests/safety-enhanced.spec.ts +329 -0
  1338. package/tests/safety-framework.spec.ts +427 -0
  1339. package/tests/safety-guards-integration.spec.ts +213 -0
  1340. package/tests/safety-integration.spec.ts +278 -0
  1341. package/tests/sarif-parser.spec.ts +148 -0
  1342. package/tests/schema.test.ts +88 -0
  1343. package/tests/schemas/behavior-rule.spec.ts +366 -0
  1344. package/tests/schemas/executorManifest.spec.ts +441 -0
  1345. package/tests/schemas/persona-integration.spec.ts +62 -0
  1346. package/tests/schemas/persona.spec.ts +172 -0
  1347. package/tests/schemas/project.spec.ts +247 -0
  1348. package/tests/schemas/run-store.spec.ts +553 -0
  1349. package/tests/schemas/runCentric.spec.ts +463 -0
  1350. package/tests/schemas/vacuumReadyPrompt.spec.ts +515 -0
  1351. package/tests/scope-github-auto-detection.spec.ts +200 -0
  1352. package/tests/scopeValidator.spec.ts +497 -0
  1353. package/tests/security-authentication.spec.ts +42 -0
  1354. package/tests/security-authorization.spec.ts +350 -0
  1355. package/tests/security-cli.spec.ts +264 -0
  1356. package/tests/security-compliance.spec.ts +334 -0
  1357. package/tests/security-policy.spec.ts +295 -0
  1358. package/tests/security-scanning.spec.ts +349 -0
  1359. package/tests/security-secrets.spec.ts +401 -0
  1360. package/tests/store/create-run-store.spec.ts +185 -0
  1361. package/tests/store/inmemory/run-store.spec.ts +533 -0
  1362. package/tests/store/sqlite/run-store.spec.ts +849 -0
  1363. package/tests/telemetry/frames.spec.ts +120 -0
  1364. package/tests/tiers.spec.ts +466 -0
  1365. package/tests/token-usage.spec.ts +309 -0
  1366. package/tests/toolchain-manifest.spec.ts +145 -0
  1367. package/tests/unified-budget.spec.ts +713 -0
  1368. package/tests/unit/cache/issue-cache.spec.ts +131 -0
  1369. package/tests/unit/fanout/analyzer-integration.spec.ts +398 -0
  1370. package/tests/unit/fanout/analyzer.spec.ts +605 -0
  1371. package/tests/unit/fanout/github-adapter.spec.ts +203 -0
  1372. package/tests/unit/fanout/harvest.spec.ts +93 -0
  1373. package/tests/unit/fanout/monitor.spec.ts +297 -0
  1374. package/tests/unit/fanout/types.spec.ts +308 -0
  1375. package/tests/unit/github/batch-ops.spec.ts +179 -0
  1376. package/tests/unit/learning/counter-example.spec.ts +168 -0
  1377. package/tests/unit/learning/storage.spec.ts +154 -0
  1378. package/tests/unit/preview/constraints.spec.ts +429 -0
  1379. package/tests/unit/runs/attribution.spec.ts +204 -0
  1380. package/tests/unit/schemas/task-contract.spec.ts +483 -0
  1381. package/tests/unit/snapshot/builder.spec.ts +389 -0
  1382. package/tests/unit/verification/engine-verifier.spec.ts +279 -0
  1383. package/tests/unit/weave/authority-evaluator.spec.ts +404 -0
  1384. package/tests/unit/weave/authority-schema.spec.ts +199 -0
  1385. package/tests/unit/weave/auto-undraft-integration.spec.ts +349 -0
  1386. package/tests/unit/weave/copilot-completion.spec.ts +182 -0
  1387. package/tests/unit/weave/d1-executor.spec.ts +269 -0
  1388. package/tests/unit/weave/d2-executor.spec.ts +334 -0
  1389. package/tests/unit/weave/fanout-generator.spec.ts +365 -0
  1390. package/tests/unit/weave/fanout-matcher.spec.ts +320 -0
  1391. package/tests/unit/weave/fanout-schema.spec.ts +221 -0
  1392. package/tests/unit/weave/mergeWeaveSequential.spec.ts +268 -0
  1393. package/tests/unit/weave/metrics-calculator.spec.ts +212 -0
  1394. package/tests/unit/weave/metrics-logger.spec.ts +233 -0
  1395. package/tests/unit/weave/metrics-schema.spec.ts +383 -0
  1396. package/tests/unit/weave/multi-repo-plan.spec.ts +221 -0
  1397. package/tests/unit/weave/planner.spec.ts +227 -0
  1398. package/tests/unit/weave/post-merge-checks.spec.ts +342 -0
  1399. package/tests/unit/weave/recovery.spec.ts +306 -0
  1400. package/tests/unit/weave/testfix/applier.spec.ts +364 -0
  1401. package/tests/unit/weave/testfix/e2e.spec.ts +273 -0
  1402. package/tests/unit/weave/testfix/integration.spec.ts +128 -0
  1403. package/tests/unit/weave/testfix/matcher.spec.ts +321 -0
  1404. package/tests/unit/weave/testfix/schema.spec.ts +298 -0
  1405. package/tests/utils/fingerprint.spec.ts +251 -0
  1406. package/tests/utils/paths.spec.ts +284 -0
  1407. package/tests/utils/tokens.spec.ts +210 -0
  1408. package/tests/utils/validation.spec.ts +215 -0
  1409. package/tests/utils-validation.spec.ts +80 -0
  1410. package/tests/validate-manifests.spec.ts +231 -0
  1411. package/tests/validation.spec.ts +501 -0
  1412. package/tests/vuln-gate.spec.ts +341 -0
  1413. package/tests/weave/adr007-integration.spec.ts +309 -0
  1414. package/tests/weave/checkpoint/cli-integration.spec.ts +118 -0
  1415. package/tests/weave/checkpoint/storage.spec.ts +302 -0
  1416. package/tests/weave/checkpoint/utils.spec.ts +223 -0
  1417. package/tests/weave/frameHelper.spec.ts +423 -0
  1418. package/tests/weave/gateFailureHandler.spec.ts +249 -0
  1419. package/tests/weave/lockFile.spec.ts +387 -0
  1420. package/tests/weave/mergeHelpers.spec.ts +173 -0
  1421. package/tests/weave/receiptHelper.spec.ts +261 -0
  1422. package/tests/weave/stateMachine.spec.ts +436 -0
  1423. package/tests/weave-contract.test.ts +517 -0
  1424. package/tests/weave-e2e.spec.ts +279 -0
  1425. package/tests/weaveLock.spec.ts +136 -0
  1426. package/tests/workflow-state-machine.spec.ts +274 -0
  1427. package/tests/write-protection.spec.ts +213 -0
  1428. package/tsconfig.json +18 -0
  1429. package/tsup.config.ts +12 -0
  1430. package/vitest.benchmark.config.ts +17 -0
  1431. package/vitest.config.ts +28 -0
  1432. package/vitest.git.config.ts +12 -0
  1433. package/vitest.slow-cli.config.ts +28 -0
package/docs/cli.md ADDED
@@ -0,0 +1,2262 @@
1
+ # CLI Reference
2
+
3
+ Complete reference for the lexrunner command-line interface, including all subcommands, options, and JSON output schemas.
4
+
5
+ > **📖 See Also**:
6
+ >
7
+ > - [Merge-Weave Quickstart](./merge-weave-quickstart.md) - End-to-end guide for merge-weave operations
8
+ > - [Autopilot Levels](./autopilot-levels.md) - Comprehensive guide to automation levels 0-4
9
+ > - [Advanced CLI Features](./advanced-cli.md) - Power user tools and interactive modes
10
+ > - [Command Creation Guide](./command-creation-guide.md) - How to add new commands to the CLI
11
+
12
+ ## Architecture
13
+
14
+ The lexrunner CLI uses a **modular command architecture** that provides:
15
+
16
+ - **Maintainability**: Each command lives in its own module under `src/commands/`
17
+ - **Testability**: Business logic separated from CLI registration
18
+ - **Consistency**: Shared utilities for output, flags, and exit handling
19
+ - **Extensibility**: Easy to add new commands following established patterns
20
+
21
+ ### Command Registration Flow
22
+
23
+ ```
24
+ ┌─────────────────┐
25
+ │ src/cli.ts │ Entry point, parses global flags
26
+ └────────┬────────┘
27
+ │ registerCommands()
28
+
29
+ ┌─────────────────────────────────────────────┐
30
+ │ src/commands/ │
31
+ │ ├── init.ts → registerInitCommand │
32
+ │ ├── plan.ts → registerPlanCommand │
33
+ │ ├── execute.ts → registerExecuteCmd │
34
+ │ ├── merge.ts → registerMergeCmd │
35
+ │ └── ... │
36
+ └─────────────────────────────────────────────┘
37
+
38
+ ↓ Each command registers with Commander
39
+ ┌─────────────────┐
40
+ │ Commander.js │ Handles argument parsing & dispatch
41
+ └────────┬────────┘
42
+
43
+ ↓ .action() handler
44
+ ┌─────────────────────────────────────────────┐
45
+ │ Business Logic (pure functions) │
46
+ │ • Separated from CLI concerns │
47
+ │ • Unit testable │
48
+ │ • Returns typed results │
49
+ └─────────────────────────────────────────────┘
50
+
51
+
52
+ ┌─────────────────────────────────────────────┐
53
+ │ Shared Utilities │
54
+ │ • src/cli/output.js (JSON output) │
55
+ │ • src/cli/flags.js (global flags) │
56
+ │ • src/cli/exitHandler.js (error handling) │
57
+ └─────────────────────────────────────────────┘
58
+ ```
59
+
60
+ ### Command Module Pattern
61
+
62
+ Each command module exports a single registration function:
63
+
64
+ ```typescript
65
+ // src/commands/myCommand.ts
66
+ import { Command } from "commander";
67
+
68
+ export function registerMyCommandCommand(program: Command): void {
69
+ program
70
+ .command("my-command")
71
+ .description("Command description")
72
+ .action(async (args, options) => {
73
+ // Thin wrapper - delegates to business logic
74
+ const result = await executeMyCommand(args, options);
75
+ handleOutput(result, options);
76
+ });
77
+ }
78
+
79
+ // Pure, testable business logic
80
+ async function executeMyCommand(args, options) {
81
+ // All logic here
82
+ }
83
+ ```
84
+
85
+ **Key Principles:**
86
+
87
+ - **Separation of Concerns**: CLI registration separate from business logic
88
+ - **Pure Functions**: Business logic has no side effects (testable)
89
+ - **Consistent Output**: All commands support `--json` and human-readable formats
90
+ - **Error Handling**: Use `throwExit()` from `src/cli/exitHandler.js`
91
+
92
+ ### Shared Utilities
93
+
94
+ #### Output (`src/cli/output.js`)
95
+
96
+ ```typescript
97
+ import { writeJsonOutput } from '../cli/output.js';
98
+
99
+ // Canonical JSON output to stdout
100
+ writeJsonOutput({ success: true, items: [...] });
101
+ ```
102
+
103
+ #### Exit Handling (`src/cli/exitHandler.js`)
104
+
105
+ ```typescript
106
+ import { throwExit, CLIExitSignal } from "../cli/exitHandler.js";
107
+
108
+ // Graceful exit with error message
109
+ throwExit(new Error("Operation failed"), 1);
110
+
111
+ // Exit with success
112
+ throw new CLIExitSignal(0, "Operation complete");
113
+ ```
114
+
115
+ #### Global Flags (`src/cli/flags.js`)
116
+
117
+ ```typescript
118
+ import { parseGlobalFlags } from "../cli/flags.js";
119
+
120
+ // Access global flags (--json, --no-color, etc.)
121
+ const globalOpts = parseGlobalFlags(process.argv);
122
+ ```
123
+
124
+ ### Adding New Commands
125
+
126
+ See the **[Command Creation Guide](./command-creation-guide.md)** for:
127
+
128
+ - Step-by-step command creation
129
+ - Templates and examples
130
+ - Testing patterns
131
+ - Documentation requirements
132
+ - Complete checklist
133
+
134
+ Quick reference:
135
+
136
+ 1. Create `src/commands/myCommand.ts`
137
+ 2. Export `registerMyCommandCommand(program: Command)`
138
+ 3. Register in `src/cli.ts`
139
+ 4. Add tests in `tests/commands/myCommand.spec.ts`
140
+ 5. Update this file (`docs/cli.md`) with command reference
141
+
142
+ ---
143
+
144
+ ## Global Options
145
+
146
+ ```bash
147
+ lex-pr [options] [command]
148
+
149
+ Options:
150
+ -V, --version Output the version number
151
+ --no-color Disable ANSI color codes in output
152
+ --json Enable JSON output mode (implies --no-color)
153
+ --log-format <fmt> Log output format: 'json' or 'human' (default: 'human')
154
+ -h, --help Display help for command
155
+ ```
156
+
157
+ ### Output Control Flags
158
+
159
+ #### `--no-color`
160
+
161
+ Unconditionally disables ANSI escape codes in output, regardless of TTY detection.
162
+
163
+ **Use cases:**
164
+
165
+ - Force plain text output when piping to tools that don't handle ANSI codes
166
+ - Debugging in environments where color codes interfere with output
167
+ - CI/CD pipelines where color codes are not needed
168
+
169
+ **Example:**
170
+
171
+ ```bash
172
+ lex-pr --no-color config:inspect
173
+ ```
174
+
175
+ #### `--json`
176
+
177
+ Enables JSON output mode and automatically disables colors. This flag:
178
+
179
+ - Forces JSON output to stdout for supported commands
180
+ - Disables ANSI color codes (implies `--no-color`)
181
+ - Suppresses human-friendly decorations (emojis, tips, progress indicators)
182
+ - Uses plain text prefixes in error messages (e.g., `[lex-pr]` instead of ❌)
183
+
184
+ **Use cases:**
185
+
186
+ - Machine-readable output for automation and scripting
187
+ - Clean JSON output for piping to `jq` or other JSON processors
188
+ - CI/CD pipelines and automated testing
189
+
190
+ **Example:**
191
+
192
+ ```bash
193
+ lex-pr --json plan > plan.json
194
+ ```
195
+
196
+ **Note:** The `--json` flag can be used either globally or at the command level:
197
+
198
+ ```bash
199
+ # Global flag (affects all output)
200
+ lex-pr --json plan
201
+
202
+ # Command-level flag (some commands support this)
203
+ lex-pr plan --json
204
+ ```
205
+
206
+ ## Configuration Precedence
207
+
208
+ Configuration values are resolved in the following order (highest to lowest priority):
209
+
210
+ 1. **Command-line flags** (`--out ./custom-dir`)
211
+ 2. **Environment variables** (`LEX_PR_OUT_DIR=./custom-dir`)
212
+ 3. **Configuration files** (`.smartergpt/config.json`)
213
+ 4. **Built-in defaults**
214
+
215
+ ### Environment Variables
216
+
217
+ | Variable | Description | Default |
218
+ | -------------------- | --------------------------------------------- | -------------------- |
219
+ | `LEX_PR_OUT_DIR` | Default output directory for artifacts | `.smartergpt/runner` |
220
+ | `LEX_PR_MAX_WORKERS` | Maximum parallel gate execution | `1` |
221
+ | `LEX_PR_TIMEOUT` | Default gate timeout in seconds | `300` |
222
+ | `NO_COLOR` | Disable ANSI color codes when set (any value) | unset |
223
+ | `LOG_FORMAT` | Log output format: 'json' or 'human' | `human` |
224
+
225
+ ## Commands
226
+
227
+ ### `init`
228
+
229
+ Initialize lexrunner workspace with interactive setup wizard.
230
+
231
+ ```bash
232
+ lex-pr init [options]
233
+
234
+ Options:
235
+ --force Overwrite existing configuration files
236
+ --non-interactive Run without prompts (use environment variables)
237
+ --github-token <token> GitHub token for authentication
238
+ --profile-dir <dir> Profile directory (default: .smartergpt.local)
239
+ -h, --help Display help for command
240
+ ```
241
+
242
+ #### What Gets Created
243
+
244
+ The init command creates a complete workspace configuration:
245
+
246
+ ```
247
+ .smartergpt.local/
248
+ ├── profile.yml # Profile metadata (role: local)
249
+ ├── intent.md # Project goals and scope
250
+ ├── scope.yml # PR discovery rules
251
+ ├── deps.yml # Dependency relationships
252
+ ├── gates.yml # Quality gates configuration
253
+ └── pull-request-template.md # PR template with dependency syntax
254
+ ```
255
+
256
+ #### Interactive Setup
257
+
258
+ When run without `--non-interactive`, the wizard will:
259
+
260
+ 1. Detect project type (Node.js, Python, Rust, Go, etc.)
261
+ 2. Prompt for GitHub token (optional)
262
+ 3. Validate repository access if token provided
263
+ 4. Create workspace configuration files
264
+ 5. Display next steps
265
+
266
+ #### Examples
267
+
268
+ ```bash
269
+ # Interactive setup with prompts
270
+ lex-pr init
271
+
272
+ # Non-interactive setup (use environment variables)
273
+ export GITHUB_TOKEN=your_token_here
274
+ lex-pr init --non-interactive
275
+
276
+ # Force overwrite existing configuration
277
+ lex-pr init --force
278
+
279
+ # Use custom profile directory
280
+ lex-pr init --profile-dir .smartergpt.custom
281
+
282
+ # Provide GitHub token via CLI
283
+ lex-pr init --github-token ghp_your_token_here
284
+ ```
285
+
286
+ #### Environment Variables
287
+
288
+ | Variable | Description | Used When |
289
+ | -------------- | ---------------------------- | -------------------- |
290
+ | `GITHUB_TOKEN` | GitHub personal access token | Token authentication |
291
+ | `GH_TOKEN` | Alternative GitHub token | Token authentication |
292
+
293
+ #### Exit Codes
294
+
295
+ - `0`: Initialization successful
296
+ - `1`: Initialization failed (general error)
297
+ - `2`: Write protection error (tried to write to read-only profile)
298
+
299
+ #### Profile Directory Selection
300
+
301
+ The init command automatically selects the appropriate profile directory:
302
+
303
+ 1. If `--profile-dir` is specified, uses that directory
304
+ 2. If `.smartergpt` exists (tracked example), uses `.smartergpt.local`
305
+ 3. Otherwise, uses `.smartergpt.local` for new setups
306
+
307
+ This ensures local development work doesn't overwrite tracked example configurations.
308
+
309
+ #### See Also
310
+
311
+ - [Quickstart Guide](./quickstart.md) - Complete onboarding workflow
312
+ - [Profile Resolution](./profile-resolution.md) - Understanding profile directories
313
+ - `lex-pr doctor` - Validate environment after initialization
314
+
315
+ ---
316
+
317
+ ### `schema validate`
318
+
319
+ Validate plan.json files against the schema with enhanced cycle detection and diagnostics.
320
+
321
+ ```bash
322
+ lex-pr schema validate [options] [file]
323
+
324
+ Arguments:
325
+ file Path to plan.json file
326
+
327
+ Options:
328
+ --json Output machine-readable JSON errors
329
+ --verbose Show detailed diagnostics (layers, warnings, full dependency graph)
330
+ -h, --help Display help for command
331
+ ```
332
+
333
+ #### Validation Checks
334
+
335
+ The validator performs comprehensive checks:
336
+
337
+ 1. **Schema validation** - Ensures plan follows correct structure
338
+ 2. **Cycle detection** - Identifies circular dependencies with full path details
339
+ 3. **Orphan detection** - Warns about items with no dependencies/dependents
340
+ 4. **Reference validation** - Ensures all dependencies exist
341
+ 5. **Self-dependency detection** - Catches items depending on themselves
342
+ 6. **Topology analysis** - Computes merge layers and identifies bottlenecks
343
+
344
+ #### Examples
345
+
346
+ ```bash
347
+ # Basic validation with human-readable output
348
+ lex-pr schema validate plan.json
349
+
350
+ # Detailed validation with layer information
351
+ lex-pr schema validate plan.json --verbose
352
+
353
+ # Validate with JSON output for CI
354
+ lex-pr schema validate --json plan.json
355
+
356
+ # Example output (human-readable):
357
+ === Plan Validation Report ===
358
+
359
+ ❌ Errors:
360
+
361
+ Dependency cycle detected in plan
362
+
363
+ Cycle path: feat-a → feat-b → feat-c → feat-a
364
+
365
+ Dependency chain:
366
+ feat-a depends on feat-b
367
+ feat-b depends on feat-c
368
+ feat-c depends on feat-a
369
+
370
+ Suggestion: Consider removing the dependency from 'feat-c' to 'feat-a' to break the cycle
371
+
372
+ ❌ Plan has 1 error(s) that must be fixed
373
+
374
+ # Example verbose output:
375
+ === Plan Validation Report ===
376
+
377
+ Nodes: 6 items
378
+ Edges: 4 dependencies
379
+
380
+ Layers (topological sort):
381
+ Layer 0: feat-a, feat-b, feat-f
382
+ Layer 1: feat-c, feat-d
383
+ Layer 2: feat-e
384
+
385
+ ⚠️ Warnings:
386
+
387
+ Item 'feat-f' has no dependencies and no dependents (orphan)
388
+ Suggestion: Consider if these items should have dependencies or dependents.
389
+
390
+ ✅ Plan is valid and ready for execution
391
+ ```
392
+
393
+ #### JSON Output Schema
394
+
395
+ **Success Response:**
396
+
397
+ ```json
398
+ {
399
+ "valid": true,
400
+ "errors": [],
401
+ "warnings": [],
402
+ "diagnostics": {
403
+ "nodes": 5,
404
+ "edges": 4,
405
+ "layers": [
406
+ { "level": 0, "prs": ["feat-a", "feat-b"] },
407
+ { "level": 1, "prs": ["feat-c"] }
408
+ ],
409
+ "orphans": []
410
+ }
411
+ }
412
+ ```
413
+
414
+ **Error Response (Cycle):**
415
+
416
+ ```json
417
+ {
418
+ "valid": false,
419
+ "errors": [
420
+ {
421
+ "type": "cycle",
422
+ "message": "Dependency cycle detected in plan\n\nCycle path: feat-a → feat-b → feat-a\n\nDependency chain:\n feat-a depends on feat-b\n feat-b depends on feat-a",
423
+ "details": {
424
+ "cyclePath": ["feat-a", "feat-b", "feat-a"]
425
+ },
426
+ "suggestion": "Consider removing the dependency from 'feat-b' to 'feat-a' to break the cycle"
427
+ }
428
+ ],
429
+ "warnings": [],
430
+ "diagnostics": {
431
+ "nodes": 2,
432
+ "edges": 2,
433
+ "layers": [],
434
+ "orphans": []
435
+ }
436
+ }
437
+ ```
438
+
439
+ **Warning Response (Orphans):**
440
+
441
+ ```json
442
+ {
443
+ "valid": true,
444
+ "errors": [],
445
+ "warnings": [
446
+ {
447
+ "type": "orphan",
448
+ "message": "2 items have no dependencies and no dependents (orphans): orphan-1, orphan-2",
449
+ "affectedPRs": ["orphan-1", "orphan-2"],
450
+ "suggestion": "Consider if these items should have dependencies or dependents. Use labels to mark intentional orphans."
451
+ }
452
+ ],
453
+ "diagnostics": {
454
+ "nodes": 4,
455
+ "edges": 1,
456
+ "layers": [
457
+ { "level": 0, "prs": ["feat-a", "orphan-1", "orphan-2"] },
458
+ { "level": 1, "prs": ["feat-b"] }
459
+ ],
460
+ "orphans": ["orphan-1", "orphan-2"]
461
+ }
462
+ }
463
+ ```
464
+
465
+ **Error Types:**
466
+
467
+ - `cycle` - Circular dependency detected
468
+ - `invalid-ref` - Reference to non-existent item
469
+ - `self-dependency` - Item depends on itself
470
+
471
+ **Warning Types:**
472
+
473
+ - `orphan` - Item has no dependencies and no dependents
474
+ - `large-layer` - Layer has too many items (potential merge conflicts)
475
+
476
+ **Exit Codes:**
477
+
478
+ - `0`: Validation successful (may have warnings)
479
+ - `1`: Validation failed with errors or system error
480
+ - `2`: Validation failed
481
+
482
+ ---
483
+
484
+ ### `plan`
485
+
486
+ Generate merge plan from workspace configuration or GitHub PRs with automatic dependency discovery.
487
+
488
+ ```bash
489
+ lex-pr plan [options]
490
+
491
+ Options:
492
+ --out <dir> Output directory for artifacts (default: ".smartergpt/runner")
493
+ --json Output canonical plan JSON to stdout only
494
+ --dry-run Validate inputs and show what would be written
495
+ --from-github Auto-discover PRs from GitHub API with dependency detection
496
+ --suggest-deps Generate dependency suggestions from file analysis
497
+ --threshold <float> Confidence threshold for suggestions (0.0-1.0, default: 0.3)
498
+ --no-suggestions Disable file-based dependency suggestions
499
+ --query <query> GitHub search query (e.g., 'is:open label:stack:*')
500
+ --labels <labels> Filter PRs by comma-separated labels
501
+ --exclude-labels <l> Exclude PRs with labels (comma-separated)
502
+ --include-drafts Include draft PRs in the plan
503
+ --exclude-prs <numbers> Exclude specific PRs by comma-separated PR numbers
504
+ --github-token <token> GitHub API token (or use GITHUB_TOKEN env var)
505
+ --owner <owner> GitHub repository owner (auto-detected from git remote)
506
+ --repo <repo> GitHub repository name (auto-detected from git remote)
507
+ --required-gates <gates> Comma-separated list of required gates (default: lint,typecheck,test)
508
+ --max-workers <n> Maximum parallel workers for execution (default: 2)
509
+ --target <branch> Target branch for merging PRs (default: repo default branch)
510
+ --validate Validate plan after generation (cycles, orphans, refs)
511
+ --validate-cycles Enable dependency cycle detection (default: true)
512
+ --optimize Optimize plan for parallel execution
513
+ --format <type> Output format: json|markdown|dot (default: json)
514
+ --output <file> Output file path (alternative to --out, for single file)
515
+ -h, --help Display help for command
516
+ ```
517
+
518
+ #### Plan Generation Modes
519
+
520
+ **1. GitHub Auto-Discovery Mode (Recommended)**
521
+
522
+ Generate plan from GitHub PRs with automatic dependency detection:
523
+
524
+ ```bash
525
+ # Basic auto-discovery with dependency parsing
526
+ lex-pr plan --from-github
527
+
528
+ # With file-based dependency suggestions
529
+ lex-pr plan --from-github --suggest-deps --threshold=0.7
530
+
531
+ # Filter by labels
532
+ lex-pr plan --from-github --labels "ready-to-merge,stack:feature"
533
+
534
+ # Exclude certain labels
535
+ lex-pr plan --from-github --exclude-labels "wip,draft"
536
+ ```
537
+
538
+ **What auto-discovery does:**
539
+
540
+ 1. Fetches open PRs from GitHub
541
+ 2. Parses `Depends-on:` footers from PR descriptions
542
+ 3. Analyzes file changes to suggest implicit dependencies (if `--suggest-deps`)
543
+ 4. Validates dependency graph (detects cycles, orphans)
544
+ 5. Computes merge layers using topological sort
545
+ 6. Generates deterministic `plan.json`
546
+
547
+ **2. Dependency Suggestions Only**
548
+
549
+ Generate file-based dependency suggestions without creating a plan:
550
+
551
+ ```bash
552
+ # High-confidence suggestions (≥0.7)
553
+ lex-pr plan --suggest-deps --threshold=0.7
554
+
555
+ # Output as markdown for review
556
+ lex-pr plan --suggest-deps --format=markdown > suggestions.md
557
+
558
+ # JSON format for automation
559
+ lex-pr plan --suggest-deps --format=json | jq '.suggestions'
560
+ ```
561
+
562
+ **3. Configuration Files Mode (Default)**
563
+
564
+ ```bash
565
+ # Generate from .smartergpt/ configuration files
566
+ lex-pr plan
567
+ ```
568
+
569
+ #### Dependency Syntax
570
+
571
+ The planner recognizes these dependency formats in PR descriptions:
572
+
573
+ ```markdown
574
+ # Single dependency
575
+
576
+ Depends-on: #123
577
+
578
+ # Multiple dependencies
579
+
580
+ Depends-on: #123, #456, #789
581
+
582
+ # Cross-repo references
583
+
584
+ Depends-on: owner/repo#123
585
+
586
+ # Alternative keywords (aliases)
587
+
588
+ Depends: #123
589
+ Requires: #456
590
+ ```
591
+
592
+ **Note:** `Closes`, `Fixes`, and `Resolves` are GitHub keywords for closing issues and are **not** treated as dependencies.
593
+
594
+ #### File-Based Heuristics
595
+
596
+ When `--suggest-deps` is used, the planner analyzes file changes to suggest dependencies:
597
+
598
+ | Heuristic | Confidence Range | Description |
599
+ | ----------------------- | ---------------- | -------------------------------- |
600
+ | **Shared files** | 0.6 - 1.0 | Both PRs modify the same files |
601
+ | **Directory proximity** | 0.3 - 0.8 | PRs work in the same directories |
602
+ | **Test overlap** | 0.5 - 0.85 | PRs test the same modules |
603
+
604
+ **Threshold guidelines:**
605
+
606
+ - `≥0.8`: Very high confidence, almost always valid
607
+ - `≥0.7`: High confidence, recommended for hybrid workflow
608
+ - `≥0.5`: Medium confidence, requires manual review
609
+ - `<0.5`: Low confidence, likely false positive
610
+
611
+ #### Examples
612
+
613
+ ```bash
614
+ # Generate plan with default output directory
615
+ lex-pr plan
616
+
617
+ # Generate plan to custom directory
618
+ lex-pr plan --out ./my-artifacts
619
+
620
+ # JSON-only output for piping/processing
621
+ lex-pr plan --json
622
+
623
+ # Validate inputs without writing files
624
+ lex-pr plan --dry-run
625
+
626
+ # GitHub mode: Auto-discover and generate plan
627
+ lex-pr plan --from-github --github-token $GITHUB_TOKEN
628
+
629
+ # Custom policy configuration
630
+ lex-pr plan --from-github \
631
+ --required-gates "lint,test,security-scan" \
632
+ --max-workers 4 \
633
+ --target develop
634
+
635
+ # Optimize and validate plan
636
+ lex-pr plan --from-github --optimize --validate-cycles
637
+
638
+ # Search for specific PRs
639
+ lex-pr plan --from-github \
640
+ --query "is:open label:stack:*" \
641
+ --labels "priority-high"
642
+ ```
643
+
644
+ #### Dependency Validation and Optimization
645
+
646
+ The plan command automatically validates dependencies when using `--from-github`:
647
+
648
+ - **Cycle Detection**: Detects circular dependencies between PRs (enabled by default with `--validate-cycles` or `--validate`)
649
+ - **Orphan Detection**: Warns about PRs with no dependencies/dependents
650
+ - **Reference Validation**: Ensures all dependencies exist in the plan
651
+ - **Optimization**: Shows parallelization levels with `--optimize` flag
652
+
653
+ ```bash
654
+ # Full validation (recommended)
655
+ lex-pr plan --from-github --validate
656
+
657
+ # Show optimization levels and merge layers
658
+ lex-pr plan --from-github --optimize
659
+
660
+ # Disable cycle detection (not recommended)
661
+ lex-pr plan --from-github --validate-cycles=false
662
+ ```
663
+
664
+ Example output with `--optimize`:
665
+
666
+ ```
667
+ ✓ Auto-discovered 5 PRs from GitHub
668
+ ✓ Parsed dependencies: 3 explicit, 1 implicit
669
+ ✓ Dependency validation passed (no cycles detected)
670
+ ✓ Plan optimized for parallel execution: 3 layers
671
+ Layer 0: PR-100 (ready to merge)
672
+ Layer 1: PR-101, PR-102 (after PR-100, parallel)
673
+ Layer 2: PR-103, PR-104 (after Layer 1, parallel)
674
+ ```
675
+
676
+ #### Exit Codes
677
+
678
+ - `0`: Plan generated successfully
679
+ - `1`: Plan generation failed (general error)
680
+ - `2`: Validation failed (cycles, invalid refs, orphans)
681
+
682
+ #### See Also
683
+
684
+ - **[Diffgraph Planner Guide](./diffgraph-planner.md)** - Complete feature documentation
685
+ - **[Troubleshooting](./troubleshooting-planner.md)** - Common errors and solutions
686
+ - **[Dependency Parser](./dependency-parser.md)** - Parser documentation
687
+ - **[Tutorials](./tutorials/diffgraph-planner/)** - Step-by-step guides
688
+ - `lex-pr schema validate` - Validate existing plan
689
+ - `lex-pr merge-order` - Review merge layers
690
+
691
+ ---
692
+
693
+ #### JSON Output Schema (`--json` flag)
694
+
695
+ **Success Response:**
696
+
697
+ ```json
698
+ {
699
+ "schemaVersion": "1.0.0",
700
+ "target": "main",
701
+ "policy": {
702
+ "requiredGates": ["string"],
703
+ "optionalGates": ["string"],
704
+ "maxWorkers": 1,
705
+ "retries": {},
706
+ "overrides": {},
707
+ "blockOn": ["string"],
708
+ "mergeRule": {
709
+ "type": "strict-required"
710
+ }
711
+ },
712
+ "items": [
713
+ {
714
+ "name": "string",
715
+ "deps": ["string"],
716
+ "gates": [
717
+ {
718
+ "name": "string",
719
+ "run": "string",
720
+ "cwd": "string",
721
+ "env": {},
722
+ "runtime": "local|container|ci-service",
723
+ "container": {
724
+ "image": "string",
725
+ "entrypoint": ["string"],
726
+ "mounts": [
727
+ {
728
+ "source": "string",
729
+ "target": "string",
730
+ "type": "bind|volume"
731
+ }
732
+ ]
733
+ },
734
+ "artifacts": ["string"]
735
+ }
736
+ ]
737
+ }
738
+ ]
739
+ }
740
+ ```
741
+
742
+ **Deterministic Guarantees:**
743
+
744
+ - Keys sorted alphabetically at all levels
745
+ - Arrays maintain stable ordering (deps sorted, items by name)
746
+ - No runtime timestamps or random values
747
+ - Cross-platform identical output
748
+
749
+ **Exit Codes:**
750
+
751
+ - `0`: Plan generated successfully
752
+ - `1`: System error (filesystem, permissions)
753
+ - `2`: Configuration validation failed
754
+
755
+ ---
756
+
757
+ ### `merge-order`
758
+
759
+ Compute dependency levels and merge order using Kahn's algorithm.
760
+
761
+ ```bash
762
+ lex-pr merge-order [options] [file]
763
+
764
+ Arguments:
765
+ file Path to plan.json file (alternative to --plan)
766
+
767
+ Options:
768
+ --plan <file> Path to plan.json file
769
+ --json Output JSON format
770
+ -h, --help Display help for command
771
+ ```
772
+
773
+ #### Examples
774
+
775
+ ```bash
776
+ # Human-readable merge order
777
+ lex-pr merge-order plan.json
778
+
779
+ # JSON output for automation
780
+ lex-pr merge-order --json plan.json
781
+
782
+ # Using --plan flag
783
+ lex-pr merge-order --plan ./configs/plan.json
784
+ ```
785
+
786
+ #### JSON Output Schema (`--json` flag)
787
+
788
+ **Success Response:**
789
+
790
+ ```json
791
+ {
792
+ "levels": [
793
+ ["item-a", "item-c"], // Level 0: No dependencies
794
+ ["item-b"], // Level 1: Depends on level 0
795
+ ["item-d"] // Level 2: Depends on level 1
796
+ ],
797
+ "totalItems": 4,
798
+ "maxParallelism": 2
799
+ }
800
+ ```
801
+
802
+ **Human-Readable Output:**
803
+
804
+ ```
805
+ Merge Order (3 levels):
806
+ Level 0: item-a, item-c
807
+ Level 1: item-b
808
+ Level 2: item-d
809
+
810
+ Total items: 4, Max parallelism: 2
811
+ ```
812
+
813
+ **Exit Codes:**
814
+
815
+ - `0`: Merge order computed successfully
816
+ - `1`: System error (file not readable)
817
+ - `2`: Dependency cycle or unknown dependency detected
818
+
819
+ ---
820
+
821
+ ### `orchestrate:predict-conflicts`
822
+
823
+ Predict merge conflicts using conflict graphs, Maximal Independent Set (MIS) computation, and git merge-tree simulation.
824
+
825
+ ```bash
826
+ lex-pr orchestrate:predict-conflicts [options]
827
+
828
+ Options:
829
+ --prs <numbers> Comma-separated list of PR numbers (e.g., 166,167,168) [required]
830
+ --base <branch> Base branch for conflict analysis (default: "main")
831
+ --skip-merge-tree Skip git merge-tree simulation
832
+ -h, --help Display help for command
833
+ ```
834
+
835
+ #### Algorithm Overview
836
+
837
+ 1. **Conflict Graph**: Build undirected graph where nodes are PRs and edges represent shared files
838
+ 2. **MIS Computation**: Use greedy algorithm to find Maximal Independent Set (PRs with no conflicts)
839
+ 3. **Merge Simulation**: Run `git merge-tree` to validate predicted conflicts
840
+
841
+ **Greedy MIS Algorithm:**
842
+
843
+ - Sort nodes by degree (fewest conflicts first), then by PR number
844
+ - Greedily select nodes that don't conflict with already selected nodes
845
+ - Result: Maximum set of PRs that can merge in parallel
846
+
847
+ #### Examples
848
+
849
+ ```bash
850
+ # Predict conflicts for specific PRs (human-readable)
851
+ lex-pr orchestrate:predict-conflicts --prs 166,167,168
852
+
853
+ # JSON output for automation
854
+ lex-pr --json orchestrate:predict-conflicts --prs 166,167,168
855
+
856
+ # Skip merge-tree simulation (faster, file-based analysis only)
857
+ lex-pr orchestrate:predict-conflicts --prs 166,167,168 --skip-merge-tree
858
+
859
+ # Custom base branch
860
+ lex-pr orchestrate:predict-conflicts --prs 100,101,102 --base develop
861
+ ```
862
+
863
+ #### JSON Output Schema (`--json` flag)
864
+
865
+ **Success Response:**
866
+
867
+ ```json
868
+ {
869
+ "analyzedAt": "2025-10-13T02:00:00Z",
870
+ "baseBranch": "main",
871
+ "conflictGraph": {
872
+ "nodes": ["166", "167", "168"],
873
+ "edges": [
874
+ {
875
+ "from": "166",
876
+ "to": "167",
877
+ "sharedFiles": ["src/cli.ts"]
878
+ },
879
+ {
880
+ "from": "167",
881
+ "to": "168",
882
+ "sharedFiles": ["src/gates.ts"]
883
+ }
884
+ ]
885
+ },
886
+ "misBatches": [
887
+ {
888
+ "id": "mis-1",
889
+ "prs": ["166", "168"],
890
+ "reason": "No shared files"
891
+ },
892
+ {
893
+ "id": "mis-2",
894
+ "prs": ["167"],
895
+ "reason": "Conflicts with #166 and #168"
896
+ }
897
+ ],
898
+ "mergeTreeSimulation": {
899
+ "166-168": {
900
+ "status": "clean",
901
+ "conflicts": []
902
+ },
903
+ "166-167": {
904
+ "status": "conflict",
905
+ "conflicts": [
906
+ {
907
+ "file": "src/cli.ts",
908
+ "lines": "125-140",
909
+ "type": "both-modified"
910
+ }
911
+ ]
912
+ }
913
+ },
914
+ "recommendations": {
915
+ "safeBatch": ["166", "168"],
916
+ "sequential": ["167"]
917
+ }
918
+ }
919
+ ```
920
+
921
+ **Human-Readable Output:**
922
+
923
+ ```
924
+ 🔍 Conflict Analysis
925
+ ============================================================
926
+
927
+ 📊 Conflict Graph:
928
+ - #166 ↔ #167: src/cli.ts
929
+ - #167 ↔ #168: src/gates.ts
930
+
931
+ 🔀 MIS Batches (safe parallel groups):
932
+ - mis-1: [#166, #168]
933
+ No shared files
934
+ - mis-2: [#167]
935
+ Conflicts with #166 and #168
936
+
937
+ 🧪 git merge-tree Simulation:
938
+ - #166 + #168: ✅ Clean merge
939
+ - #166 + #167: ❌ Conflict
940
+ ↳ src/cli.ts (both-modified)
941
+
942
+ 💡 Recommendations:
943
+ ✓ Safe parallel batch: #166, #168
944
+ ⚠ Merge sequentially: #167
945
+ ```
946
+
947
+ **Exit Codes:**
948
+
949
+ - `0`: Conflict analysis completed successfully
950
+ - `1`: Missing required parameters or system error
951
+
952
+ #### Use Cases
953
+
954
+ - **Batch Planning**: Determine which PRs can be merged in parallel
955
+ - **Conflict Avoidance**: Identify potential conflicts before merging
956
+ - **Optimization**: Maximize parallelism in merge pyramid execution
957
+ - **CI/CD Integration**: Automate conflict detection in merge workflows
958
+
959
+ ---
960
+
961
+ ### `plan-review`
962
+
963
+ Interactively review and edit a plan with human-in-the-loop validation.
964
+
965
+ ```bash
966
+ lex-pr plan-review [options] [file]
967
+
968
+ Arguments:
969
+ file Path to plan.json file (alternative to --plan)
970
+
971
+ Options:
972
+ --plan <file> Path to plan.json file
973
+ --non-interactive Non-interactive mode (auto-approve)
974
+ --profile-dir <dir> Profile directory for history tracking
975
+ --save-history Save plan versions to history
976
+ --output <file> Output file for approved/modified plan
977
+ -h, --help Display help for command
978
+ ```
979
+
980
+ #### Features
981
+
982
+ - **Interactive Review**: View plan summary, dependency graph, and merge order
983
+ - **Plan Editing**: Add/remove items, modify dependencies, change target branch
984
+ - **Validation**: Automatic validation of dependencies and cycles during editing
985
+ - **Approval Workflow**: Approve or reject plans with optional reason
986
+ - **History Tracking**: Save plan versions with metadata for audit trail
987
+ - **Diff View**: See changes made during interactive session
988
+
989
+ #### Examples
990
+
991
+ ```bash
992
+ # Interactive review with prompts
993
+ lex-pr plan-review plan.json
994
+
995
+ # Auto-approve in non-interactive mode
996
+ lex-pr plan-review plan.json --non-interactive
997
+
998
+ # Review and save to new file
999
+ lex-pr plan-review plan.json --output approved-plan.json
1000
+
1001
+ # Review with history tracking
1002
+ lex-pr plan-review plan.json --save-history --profile-dir .smartergpt.local
1003
+ ```
1004
+
1005
+ #### Interactive Options
1006
+
1007
+ When running in interactive mode, you'll see:
1008
+
1009
+ 1. **Plan Summary**: Items count, target branch, dependencies overview
1010
+ 2. **Dependency Graph**: ASCII visualization of item dependencies
1011
+ 3. **Merge Order**: Computed execution levels
1012
+
1013
+ Then you can choose:
1014
+
1015
+ - `[a]` Approve plan - Accept the plan as-is
1016
+ - `[r]` Reject plan - Reject with optional reason
1017
+ - `[e]` Edit plan - Interactively modify the plan
1018
+ - `[v]` View plan details - See full JSON
1019
+ - `[d]` Show diff - Compare original vs modified
1020
+ - `[q]` Quit without saving
1021
+
1022
+ #### Edit Operations
1023
+
1024
+ When editing, you can:
1025
+
1026
+ - Add new items with dependencies
1027
+ - Remove items (validated against dependents)
1028
+ - Modify item dependencies (cycle detection)
1029
+ - Change target branch
1030
+ - Gates editing (planned for future release)
1031
+
1032
+ #### Exit Codes
1033
+
1034
+ - `0`: Plan approved
1035
+ - `1`: Plan rejected or operation failed
1036
+
1037
+ ---
1038
+
1039
+ ### `plan-diff`
1040
+
1041
+ Compare two plans and show differences.
1042
+
1043
+ ```bash
1044
+ lex-pr plan-diff [options] <plan1> <plan2>
1045
+
1046
+ Arguments:
1047
+ plan1 First plan file
1048
+ plan2 Second plan file
1049
+
1050
+ Options:
1051
+ --json Output JSON format
1052
+ -h, --help Display help for command
1053
+ ```
1054
+
1055
+ #### Examples
1056
+
1057
+ ```bash
1058
+ # Human-readable diff
1059
+ lex-pr plan-diff plan-v1.json plan-v2.json
1060
+
1061
+ # JSON output for automation
1062
+ lex-pr plan-diff plan-v1.json plan-v2.json --json
1063
+ ```
1064
+
1065
+ #### Human-Readable Output
1066
+
1067
+ ```
1068
+ 📊 Plan Comparison
1069
+
1070
+ Plan 1: plan-v1.json
1071
+ Plan 2: plan-v2.json
1072
+
1073
+ Target Branch: main → develop
1074
+
1075
+ Added Items:
1076
+ + feature-d
1077
+ deps: feature-b
1078
+ gates: 2
1079
+
1080
+ Removed Items:
1081
+ - feature-c
1082
+
1083
+ Modified Items:
1084
+ ~ feature-b
1085
+ deps: [feature-a] → [feature-a, feature-x]
1086
+ ```
1087
+
1088
+ #### JSON Output Schema
1089
+
1090
+ ```json
1091
+ {
1092
+ "targetChanged": true,
1093
+ "originalTarget": "main",
1094
+ "modifiedTarget": "develop",
1095
+ "addedItems": [
1096
+ {
1097
+ "name": "feature-d",
1098
+ "deps": ["feature-b"],
1099
+ "gates": []
1100
+ }
1101
+ ],
1102
+ "removedItems": [
1103
+ {
1104
+ "name": "feature-c",
1105
+ "deps": ["feature-a"],
1106
+ "gates": []
1107
+ }
1108
+ ],
1109
+ "modifiedItems": [
1110
+ {
1111
+ "name": "feature-b",
1112
+ "originalDeps": ["feature-a"],
1113
+ "modifiedDeps": ["feature-a", "feature-x"],
1114
+ "originalGatesCount": 1,
1115
+ "modifiedGatesCount": 2
1116
+ }
1117
+ ],
1118
+ "hasChanges": true
1119
+ }
1120
+ ```
1121
+
1122
+ #### Exit Codes
1123
+
1124
+ - `0`: No changes detected (plans are identical)
1125
+ - `1`: Changes detected or comparison successful
1126
+
1127
+ ---
1128
+
1129
+ ### `execute`
1130
+
1131
+ Execute plan with policy-aware gate running and status tracking.
1132
+
1133
+ ```bash
1134
+ lex-pr execute [options] [file]
1135
+
1136
+ Arguments:
1137
+ file Path to plan.json file (alternative to --plan)
1138
+
1139
+ Options:
1140
+ --plan <file> Path to plan.json file
1141
+ --artifact-dir <dir> Output directory for artifacts (default: "./artifacts")
1142
+ --timeout <ms> Gate timeout in milliseconds (default: "30000")
1143
+ --dry-run Validate plan and show execution order without running gates
1144
+ --json Output results in JSON format
1145
+ --status-table Generate status table for PR comments
1146
+ --max-level <level> Maximum autopilot level (0-4) (default: "0")
1147
+ --open-pr Open pull requests for integration branches (Level 3+)
1148
+ --close-superseded Close superseded PRs after integration (Level 4)
1149
+ --comment-template <path> Path to PR comment template (Level 2+)
1150
+ --branch-prefix <prefix> Prefix for integration branch names (default: "integration/")
1151
+ -h, --help Display help for command
1152
+ ```
1153
+
1154
+ > **📖 Autopilot Levels**: See [Autopilot Levels](./autopilot-levels.md) for details on automation levels 0-4.
1155
+
1156
+ #### Examples
1157
+
1158
+ ```bash
1159
+ # Execute entire plan
1160
+ lex-pr execute plan.json
1161
+
1162
+ # Execute specific item only
1163
+ lex-pr execute --only-item item-a plan.json
1164
+
1165
+ # JSON output for monitoring
1166
+ lex-pr execute --json plan.json
1167
+
1168
+ # Execute plan with vulnerability scanning
1169
+ lex-pr execute plan-with-vuln.json
1170
+ ```
1171
+
1172
+ #### Built-in Gates
1173
+
1174
+ ##### Vulnerability Gate (`vuln`)
1175
+
1176
+ The `vuln` gate is a special built-in gate that scans for security vulnerabilities using artifact-based detection:
1177
+
1178
+ - **Artifact Detection**: Automatically looks for `scan-results.sarif` (SARIF 2.1.0 format) or `npm-audit.json` in the item's artifact directory
1179
+ - **Policy Enforcement**: Applies thresholds from `plan.policy.security`
1180
+ - **Deterministic Output**: Provides consistent, structured vulnerability counts
1181
+
1182
+ **Policy Configuration:**
1183
+
1184
+ ```json
1185
+ {
1186
+ "policy": {
1187
+ "requiredGates": ["vuln"],
1188
+ "security": {
1189
+ "blockCritical": true,
1190
+ "blockHigh": true,
1191
+ "maxMedium": 5,
1192
+ "maxLow": 10
1193
+ }
1194
+ }
1195
+ }
1196
+ ```
1197
+
1198
+ **Example Gate:**
1199
+
1200
+ ```json
1201
+ {
1202
+ "gates": [
1203
+ {
1204
+ "name": "vuln",
1205
+ "run": "trivy fs --format sarif --output scan-results.sarif ."
1206
+ }
1207
+ ]
1208
+ }
1209
+ ```
1210
+
1211
+ **Supported Scanners:**
1212
+
1213
+ - Trivy: `trivy fs --format sarif`
1214
+ - Snyk: `snyk test --sarif`
1215
+ - CodeQL: `codeql database analyze --format=sarif-latest`
1216
+ - npm audit: `npm audit --json > npm-audit.json`
1217
+
1218
+ See [Gate Report Examples](./gate-report-examples.md#vulnerability-gate-vuln) for detailed output examples.
1219
+
1220
+ #### JSON Output Schema (`--json` flag)
1221
+
1222
+ **Success Response:**
1223
+
1224
+ ```json
1225
+ {
1226
+ "executionId": "string", // Unique execution identifier
1227
+ "startedAt": "2024-01-15T10:30:00Z",
1228
+ "completedAt": "2024-01-15T10:35:00Z",
1229
+ "status": "completed|failed|running",
1230
+ "totalItems": 4,
1231
+ "completedItems": 4,
1232
+ "failedItems": 0,
1233
+ "items": [
1234
+ {
1235
+ "name": "item-a",
1236
+ "status": "pass|fail|blocked|skipped|retrying",
1237
+ "gates": [
1238
+ {
1239
+ "gate": "test",
1240
+ "status": "pass|fail|blocked|skipped|retrying",
1241
+ "exitCode": 0,
1242
+ "duration": 1500, // milliseconds
1243
+ "stdout": "string",
1244
+ "stderr": "string",
1245
+ "artifacts": ["coverage.json"],
1246
+ "attempts": 1,
1247
+ "lastAttempt": "2024-01-15T10:32:00Z"
1248
+ }
1249
+ ],
1250
+ "blockedBy": [], // Items that blocked this one
1251
+ "eligibleForMerge": true
1252
+ }
1253
+ ]
1254
+ }
1255
+ ```
1256
+
1257
+ **Exit Codes:**
1258
+
1259
+ - `0`: All gates passed successfully
1260
+ - `1`: System error during execution
1261
+ - `2`: One or more gates failed
1262
+
1263
+ ---
1264
+
1265
+ ### `merge`
1266
+
1267
+ Execute merge pyramid with git operations. Supports dry-run preview, conflict detection, and resumable execution.
1268
+
1269
+ ```bash
1270
+ lex-pr merge [options]
1271
+
1272
+ Options:
1273
+ --plan <file> Path to plan.json file (default: "plan.json")
1274
+ --dry-run Show what would be merged without executing (default: true)
1275
+ --execute Actually perform merge operations
1276
+ --resume [runId] Resume execution from weave-lock.json (optional: specific run ID)
1277
+ --cleanup Clean up integration branches after execution
1278
+ --force Force execution even if same lock hash exists
1279
+ --json Output JSON format
1280
+ --batch Enable batch mode for multiple items
1281
+ --filter <query> Filter items using query language
1282
+ --levels <levels> Comma-separated list of levels to merge
1283
+ --items <items> Comma-separated list of items to merge
1284
+ --max-level <level> Maximum autopilot level (0-4) (default: "0")
1285
+ --open-pr Open pull requests for integration branches (Level 3+)
1286
+ --close-superseded Close superseded PRs after integration (Level 4)
1287
+ --comment-template <path> Path to PR comment template (Level 2+)
1288
+ --branch-prefix <prefix> Prefix for integration branch names (default: "integration/")
1289
+ --skip-preflight Skip preflight conflict detection in dry-run mode
1290
+ --fail-on-preflight-conflict Exit with error if preflight conflict detection finds conflicts
1291
+ --track-turncost Track Turn Cost metrics during execution (coordination overhead)
1292
+ -h, --help Display help for command
1293
+ ```
1294
+
1295
+ > **📖 Quick Start**: See [Merge-Weave Quickstart](./merge-weave-quickstart.md) for an end-to-end walkthrough with examples.
1296
+ >
1297
+ > **📖 Autopilot Levels**: See [Autopilot Levels](./autopilot-levels.md) for details on automation levels 0-4.
1298
+
1299
+ #### Basic Examples
1300
+
1301
+ ```bash
1302
+ # Dry-run: preview merge operations (default)
1303
+ lex-pr merge
1304
+
1305
+ # Dry-run with explicit flag
1306
+ lex-pr merge --plan ./plan.json --dry-run --json
1307
+
1308
+ # Execute merge pyramid
1309
+ lex-pr merge --execute
1310
+
1311
+ # Execute and clean up integration branches
1312
+ lex-pr merge --execute --cleanup
1313
+
1314
+ # Resume from previous execution
1315
+ lex-pr merge --resume
1316
+
1317
+ # Force execution even if already executed
1318
+ lex-pr merge --execute --force
1319
+ ```
1320
+
1321
+ #### Batch Operations
1322
+
1323
+ ```bash
1324
+ # Merge specific items only
1325
+ lex-pr merge --batch --items "pr-123,pr-456" --execute
1326
+
1327
+ # Merge specific dependency levels
1328
+ lex-pr merge --batch --levels "1,2" --execute
1329
+
1330
+ # Merge items matching a query
1331
+ lex-pr merge --batch --filter "level eq 1" --execute
1332
+ ```
1333
+
1334
+ #### Conflict Detection
1335
+
1336
+ ```bash
1337
+ # Skip preflight conflict detection
1338
+ lex-pr merge --skip-preflight
1339
+
1340
+ # Fail if conflicts detected in dry-run
1341
+ lex-pr merge --fail-on-preflight-conflict
1342
+
1343
+ # Execute even if conflicts detected
1344
+ lex-pr merge --execute # Will pause on conflicts for manual resolution
1345
+ ```
1346
+
1347
+ #### State Management
1348
+
1349
+ The merge command uses a lock file (`weave-lock.json`) for idempotency and resumability:
1350
+
1351
+ - **Lock Hash**: Computed from `plan.json` + PR head commits
1352
+ - **Idempotency**: Duplicate runs with same lock hash are skipped (use `--force` to override)
1353
+ - **Resume**: Failed executions can be resumed with `--resume`
1354
+
1355
+ **Lock File Example:**
1356
+
1357
+ ```json
1358
+ {
1359
+ "lockHash": "abc123de",
1360
+ "planHash": "def456gh",
1361
+ "prHeads": [
1362
+ { "name": "feature/auth", "sha": "a1b2c3d4" },
1363
+ { "name": "feature/api", "sha": "e5f6g7h8" }
1364
+ ],
1365
+ "timestamp": "2024-12-13T02:00:00Z",
1366
+ "status": "completed"
1367
+ }
1368
+ ```
1369
+
1370
+ #### Preflight Conflict Detection
1371
+
1372
+ Enabled by default in dry-run mode. Uses `git merge-tree` to simulate merges without modifying the working tree.
1373
+
1374
+ **Benefits:**
1375
+
1376
+ - Detects conflicts early before actual merge execution
1377
+ - No working tree modifications
1378
+ - Fast simulation of merge operations
1379
+
1380
+ **Example Dry-Run Output with Conflicts:**
1381
+
1382
+ ```json
1383
+ {
1384
+ "mode": "dry-run",
1385
+ "lockHash": "abc123de",
1386
+ "preflight": {
1387
+ "enabled": true,
1388
+ "conflictsDetected": 2,
1389
+ "items": [
1390
+ {
1391
+ "id": "feature-ui",
1392
+ "branch": "feature/ui",
1393
+ "conflicts": ["src/components/Header.tsx", "src/styles/main.css"]
1394
+ }
1395
+ ]
1396
+ },
1397
+ "warnings": ["feature-ui has 2 potential conflicts. Review and resolve before executing."]
1398
+ }
1399
+ ```
1400
+
1401
+ #### Turn Cost Tracking
1402
+
1403
+ Track coordination overhead during merge-weave operations:
1404
+
1405
+ ```bash
1406
+ lex-pr merge --execute --track-turncost
1407
+ ```
1408
+
1409
+ **Components:**
1410
+
1411
+ - **Latency (L)**: Total execution time
1412
+ - **Renegotiation (R)**: Conflicts requiring manual resolution
1413
+ - **Token Bloat (T)**: Token usage overhead (future)
1414
+ - **Attention (A)**: Context switches during execution
1415
+
1416
+ **Weighted Score**: `λL + γC + ρR + τT + αA`
1417
+
1418
+ See [Governance Metrics](./governance-metrics.md) for details on Turn Cost calculation.
1419
+
1420
+ #### Exit Codes
1421
+
1422
+ - `0`: Success (merge completed or dry-run successful)
1423
+ - `1`: Merge failed or conflicts detected (with `--fail-on-preflight-conflict`)
1424
+ - `2`: Configuration or validation error
1425
+
1426
+ #### See Also
1427
+
1428
+ - [Merge-Weave Quickstart](./merge-weave-quickstart.md) - Complete walkthrough with troubleshooting
1429
+ - [Merge-Weave State Machine](./merge-weave-state-machine.md) - Execution state transitions
1430
+ - [Advanced CLI Features](./advanced-cli.md) - Advanced merge-weave options
1431
+ - [Autopilot Levels](./autopilot-levels.md) - Automated PR creation and management
1432
+
1433
+ ---
1434
+
1435
+ ### `status`
1436
+
1437
+ Show current execution status and merge eligibility.
1438
+
1439
+ ```bash
1440
+ lex-pr status [options] [file]
1441
+
1442
+ Arguments:
1443
+ file Path to plan.json file (alternative to --plan)
1444
+
1445
+ Options:
1446
+ --plan <file> Path to plan.json file
1447
+ --json Output JSON format
1448
+ --state-dir <dir> Directory containing execution state (default: ".smartergpt/runner")
1449
+ -h, --help Display help for command
1450
+ ```
1451
+
1452
+ #### Examples
1453
+
1454
+ ```bash
1455
+ # Show human-readable status
1456
+ lex-pr status plan.json
1457
+
1458
+ # JSON status for dashboards
1459
+ lex-pr status --json plan.json
1460
+ ```
1461
+
1462
+ #### JSON Output Schema (`--json` flag)
1463
+
1464
+ **Success Response:**
1465
+
1466
+ ```json
1467
+ {
1468
+ "executionStatus": "not_started|running|completed|failed",
1469
+ "lastUpdated": "2024-01-15T10:35:00Z",
1470
+ "summary": {
1471
+ "totalItems": 4,
1472
+ "passedItems": 2,
1473
+ "failedItems": 1,
1474
+ "blockedItems": 1,
1475
+ "eligibleForMerge": 2
1476
+ },
1477
+ "items": [
1478
+ {
1479
+ "name": "item-a",
1480
+ "status": "pass",
1481
+ "eligibleForMerge": true,
1482
+ "gatesSummary": {
1483
+ "total": 2,
1484
+ "passed": 2,
1485
+ "failed": 0
1486
+ }
1487
+ }
1488
+ ]
1489
+ }
1490
+ ```
1491
+
1492
+ **Exit Codes:**
1493
+
1494
+ - `0`: Status retrieved successfully
1495
+ - `1`: System error (state files not readable)
1496
+ - `2`: No execution state found
1497
+
1498
+ ---
1499
+
1500
+ ### `report`
1501
+
1502
+ Aggregate gate reports from directory of JSON files.
1503
+
1504
+ ```bash
1505
+ lex-pr report [options] <dir>
1506
+
1507
+ Arguments:
1508
+ dir Directory containing gate report JSON files
1509
+
1510
+ Options:
1511
+ --out <format> Output format: json|md (default: "json")
1512
+ --validate Validate reports against schema before aggregating
1513
+ -h, --help Display help for command
1514
+ ```
1515
+
1516
+ #### Examples
1517
+
1518
+ ```bash
1519
+ # JSON summary of gate results
1520
+ lex-pr report ./gate-results
1521
+
1522
+ # Markdown report for humans
1523
+ lex-pr report --out md ./gate-results
1524
+
1525
+ # Validate reports first
1526
+ lex-pr report --validate ./gate-results
1527
+ ```
1528
+
1529
+ #### JSON Output Schema (`--out json`)
1530
+
1531
+ **Success Response:**
1532
+
1533
+ ```json
1534
+ {
1535
+ "summary": {
1536
+ "totalReports": 8,
1537
+ "totalItems": 4,
1538
+ "totalGates": 12,
1539
+ "passedGates": 10,
1540
+ "failedGates": 2,
1541
+ "allGreen": false
1542
+ },
1543
+ "items": [
1544
+ {
1545
+ "name": "item-a",
1546
+ "gates": [
1547
+ {
1548
+ "name": "test",
1549
+ "status": "pass",
1550
+ "duration_ms": 1500,
1551
+ "started_at": "2024-01-15T10:30:00Z"
1552
+ }
1553
+ ],
1554
+ "summary": {
1555
+ "totalGates": 3,
1556
+ "passedGates": 3,
1557
+ "failedGates": 0
1558
+ }
1559
+ }
1560
+ ]
1561
+ }
1562
+ ```
1563
+
1564
+ **Markdown Output (`--out md`):**
1565
+
1566
+ ```markdown
1567
+ # Gate Execution Report
1568
+
1569
+ ## Summary
1570
+
1571
+ - **Total Items**: 4
1572
+ - **Total Gates**: 12
1573
+ - **Passed**: 10 ✅
1574
+ - **Failed**: 2 ❌
1575
+ - **Overall Status**: ❌ FAILED
1576
+
1577
+ ## Item Results
1578
+
1579
+ ### item-a ✅
1580
+
1581
+ - test: ✅ PASS (1.5s)
1582
+ - lint: ✅ PASS (0.8s)
1583
+ - build: ✅ PASS (12.3s)
1584
+ ```
1585
+
1586
+ **Exit Codes:**
1587
+
1588
+ - `0`: All gates passed (allGreen: true)
1589
+ - `1`: System error (directory not readable, invalid reports)
1590
+ - `2`: One or more gates failed
1591
+
1592
+ ---
1593
+
1594
+ ### `doctor`
1595
+
1596
+ Environment and configuration sanity checks.
1597
+
1598
+ ```bash
1599
+ lex-pr doctor [options]
1600
+
1601
+ Options:
1602
+ --json Output JSON format
1603
+ -h, --help Display help for command
1604
+ ```
1605
+
1606
+ #### Examples
1607
+
1608
+ ```bash
1609
+ # Human-readable environment check
1610
+ lex-pr doctor
1611
+
1612
+ # JSON output for automation
1613
+ lex-pr doctor --json
1614
+ ```
1615
+
1616
+ #### JSON Output Schema (`--json` flag)
1617
+
1618
+ **Success Response:**
1619
+
1620
+ ```json
1621
+ {
1622
+ "status": "healthy|warning|error",
1623
+ "timestamp": "2024-01-15T10:30:00Z",
1624
+ "checks": [
1625
+ {
1626
+ "name": "node_version",
1627
+ "status": "pass|warn|fail",
1628
+ "message": "Node.js 20.10.0 (OK)",
1629
+ "expected": ">=18.0.0",
1630
+ "actual": "20.10.0"
1631
+ },
1632
+ {
1633
+ "name": "config_files",
1634
+ "status": "pass",
1635
+ "message": "All configuration files found",
1636
+ "details": [".smartergpt/intent.md: ✓", ".smartergpt/scope.yml: ✓"]
1637
+ }
1638
+ ],
1639
+ "summary": {
1640
+ "totalChecks": 5,
1641
+ "passed": 4,
1642
+ "warnings": 1,
1643
+ "failures": 0
1644
+ }
1645
+ }
1646
+ ```
1647
+
1648
+ **Exit Codes:**
1649
+
1650
+ - `0`: All checks passed or warnings only
1651
+ - `1`: System error during checks
1652
+ - `2`: One or more critical checks failed
1653
+
1654
+ ## Deterministic Output Requirements
1655
+
1656
+ All CLI commands with `--json` output must guarantee:
1657
+
1658
+ 1. **Stable key ordering**: All JSON objects have keys sorted alphabetically
1659
+ 2. **Consistent formatting**: Use 2-space indentation, no trailing whitespace
1660
+ 3. **Reproducible timestamps**: Avoid runtime timestamps except where semantically required
1661
+ 4. **Sorted arrays**: Dependencies, items, errors sorted by name/path
1662
+ 5. **Cross-platform consistency**: Same inputs produce identical outputs on Windows/macOS/Linux
1663
+
1664
+ ### Verification
1665
+
1666
+ ```bash
1667
+ # Determinism check - should be byte-identical
1668
+ npm run build && npm run format
1669
+ git diff --exit-code # Must be clean
1670
+
1671
+ # Cross-platform verification
1672
+ lex-pr plan --json > output1.json
1673
+ lex-pr plan --json > output2.json
1674
+ cmp output1.json output2.json # Should be identical
1675
+ ```
1676
+
1677
+ ---
1678
+
1679
+ ## CLI Conventions
1680
+
1681
+ This section documents internal patterns for CLI development. Follow these conventions to ensure consistent behavior across all commands.
1682
+
1683
+ ### Exit Handling
1684
+
1685
+ **Core Principle**: Never call `process.exit()` directly. Use `throwExit()` or throw `CLIExitSignal` instead.
1686
+
1687
+ #### The CLIExitSignal Pattern
1688
+
1689
+ The CLI uses a custom error class for all exits:
1690
+
1691
+ ```typescript
1692
+ class CLIExitSignal extends Error {
1693
+ exitCode: number;
1694
+
1695
+ constructor(code: number, message?: string) {
1696
+ super(message ?? `CLI exited with code ${code}`);
1697
+ this.exitCode = code;
1698
+ }
1699
+ }
1700
+
1701
+ const throwExit = (code: number): never => {
1702
+ throw new CLIExitSignal(code);
1703
+ };
1704
+ ```
1705
+
1706
+ **Why**: This approach allows:
1707
+
1708
+ - Centralized exit handling in the main error handler
1709
+ - Proper cleanup of resources before exit
1710
+ - Testability (errors can be caught in tests)
1711
+ - Consistent error formatting
1712
+
1713
+ #### Commander Exit Override
1714
+
1715
+ All Commander exits are intercepted centrally:
1716
+
1717
+ ```typescript
1718
+ program.exitOverride((err: CommanderError) => {
1719
+ // Help/version often exit with code 0; normalize through CLIExitSignal
1720
+ throw new CLIExitSignal(err.exitCode ?? 1, err.message);
1721
+ });
1722
+ ```
1723
+
1724
+ **Why**: Commander's default exit behavior calls `process.exit()` directly. Overriding ensures:
1725
+
1726
+ - All exits go through the same path
1727
+ - Help/version commands work correctly with exit code 0
1728
+ - No bypassing of error handlers
1729
+
1730
+ #### Exit Code Discipline
1731
+
1732
+ Use the standard exit codes consistently:
1733
+
1734
+ ```typescript
1735
+ throwExit(0); // Success
1736
+ throwExit(1); // System/infrastructure errors
1737
+ throwExit(2); // User/validation errors
1738
+ ```
1739
+
1740
+ **Examples**:
1741
+
1742
+ ✅ **Correct**:
1743
+
1744
+ ```typescript
1745
+ try {
1746
+ const plan = loadPlan(planPath);
1747
+ // ... process plan
1748
+ throwExit(0);
1749
+ } catch (e) {
1750
+ if (e instanceof SchemaValidationError) {
1751
+ console.error(`Validation failed: ${e.message}`);
1752
+ throwExit(2); // User can fix this
1753
+ }
1754
+ console.error(`Unexpected error: ${e.message}`);
1755
+ throwExit(1); // System error
1756
+ }
1757
+ ```
1758
+
1759
+ ❌ **Incorrect**:
1760
+
1761
+ ```typescript
1762
+ // DON'T: Direct process.exit
1763
+ process.exit(1);
1764
+
1765
+ // DON'T: Throw generic errors for exit
1766
+ throw new Error("exit");
1767
+
1768
+ // DON'T: Return exit codes
1769
+ return 1;
1770
+ ```
1771
+
1772
+ ### JSON Purity
1773
+
1774
+ **Core Principle**: Keep stdout clean for JSON output. All diagnostics, progress messages, and errors go to stderr.
1775
+
1776
+ #### Output Stream Configuration
1777
+
1778
+ Configure Commander to use explicit streams:
1779
+
1780
+ ```typescript
1781
+ program.configureOutput({
1782
+ writeOut: (str) => process.stdout.write(str),
1783
+ writeErr: (str) => process.stderr.write(str),
1784
+ });
1785
+ ```
1786
+
1787
+ **Why**: This ensures:
1788
+
1789
+ - Help/version output goes to stderr (Commander default)
1790
+ - stdout remains pure for JSON or data output
1791
+ - Pipeable commands work correctly
1792
+
1793
+ #### JSON Mode Discipline
1794
+
1795
+ Commands with `--json` flag must follow strict rules:
1796
+
1797
+ ```typescript
1798
+ let jsonModeActive = false;
1799
+
1800
+ command.action(async (opts) => {
1801
+ const previousJsonMode = jsonModeActive;
1802
+ jsonModeActive = !!opts.json;
1803
+
1804
+ try {
1805
+ if (opts.json) {
1806
+ // ONLY write JSON to stdout, nothing else
1807
+ process.stdout.write(canonicalJSONStringify(result));
1808
+ return;
1809
+ }
1810
+
1811
+ // Human-readable output
1812
+ console.log("✓ Success!");
1813
+ console.log(summary);
1814
+ } finally {
1815
+ jsonModeActive = previousJsonMode;
1816
+ }
1817
+ });
1818
+ ```
1819
+
1820
+ **Rules for JSON mode**:
1821
+
1822
+ 1. **No console.log** in JSON mode - use `process.stdout.write()` directly
1823
+ 2. **No progress messages** - suppress all diagnostics in JSON mode
1824
+ 3. **No emojis or formatting** - JSON only
1825
+ 4. **Always use canonicalJSONStringify** - ensures deterministic output
1826
+
1827
+ **Examples**:
1828
+
1829
+ ✅ **Correct**:
1830
+
1831
+ ```typescript
1832
+ if (opts.json) {
1833
+ // Pure JSON to stdout
1834
+ process.stdout.write(canonicalJSONStringify({ status: "ok", data }));
1835
+ return;
1836
+ }
1837
+
1838
+ // Human mode: rich output to stdout/stderr
1839
+ console.log("✓ Operation complete");
1840
+ console.error("ℹ️ Note: Some items were skipped");
1841
+ ```
1842
+
1843
+ ❌ **Incorrect**:
1844
+
1845
+ ```typescript
1846
+ if (opts.json) {
1847
+ console.log("Processing..."); // DON'T: breaks JSON purity
1848
+ console.log(JSON.stringify(data)); // DON'T: use canonicalJSONStringify
1849
+ console.error(JSON.stringify(error)); // DON'T: errors to stderr, not JSON mixed in
1850
+ }
1851
+ ```
1852
+
1853
+ #### Diagnostic Output
1854
+
1855
+ Even in normal mode, separate data from diagnostics:
1856
+
1857
+ ```typescript
1858
+ // Diagnostics and progress → stderr
1859
+ console.error("🔍 Analyzing plan...");
1860
+ console.error(`Found ${items.length} items`);
1861
+
1862
+ // Final output → stdout
1863
+ console.log(canonicalJSONStringify(result));
1864
+ ```
1865
+
1866
+ **Why**: Allows users to pipe output while still seeing progress:
1867
+
1868
+ ```bash
1869
+ lex-pr plan --json > plan.json # Progress visible, JSON piped
1870
+ ```
1871
+
1872
+ ### Output Modes
1873
+
1874
+ #### Canonical JSON Output
1875
+
1876
+ Always use `canonicalJSONStringify()` for JSON output:
1877
+
1878
+ ```typescript
1879
+ import { canonicalJSONStringify } from "./util/canonicalJson.js";
1880
+
1881
+ // Automatically includes trailing newline
1882
+ process.stdout.write(canonicalJSONStringify(data));
1883
+ ```
1884
+
1885
+ **Note**: Import path shown is from `src/` directory. Adjust relative path based on your file location. Use `.js` extension in imports even for TypeScript source files (required for ES modules - TypeScript doesn't rewrite extensions).
1886
+
1887
+ **Why**: Ensures deterministic output:
1888
+
1889
+ - Keys sorted alphabetically at all levels
1890
+ - Consistent 2-space indentation
1891
+ - Always includes trailing newline
1892
+ - Same output every time (no timestamps, no random ordering)
1893
+
1894
+ #### Human-Readable Output
1895
+
1896
+ For human output, use rich formatting:
1897
+
1898
+ ```typescript
1899
+ console.log("\n✓ Plan generated successfully\n");
1900
+ console.log(`📁 Output: ${planPath}`);
1901
+ console.log(`📊 Items: ${items.length}`);
1902
+ console.log("");
1903
+ console.log(generatePlanSummary(plan));
1904
+ ```
1905
+
1906
+ **Guidelines**:
1907
+
1908
+ - Use emojis for visual clarity
1909
+ - Include spacing for readability
1910
+ - Provide actionable next steps
1911
+ - Use colors (via chalk) sparingly
1912
+
1913
+ ### Error Handling Patterns
1914
+
1915
+ #### The exitWith() Helper
1916
+
1917
+ Use the `exitWith()` helper for consistent error handling:
1918
+
1919
+ ```typescript
1920
+ function exitWith(e: unknown, schemaCode = "ESCHEMA") {
1921
+ // Let CLIExitSignal propagate - don't treat it as an error
1922
+ if (e instanceof CLIExitSignal) {
1923
+ throw e;
1924
+ }
1925
+
1926
+ const err: any = e;
1927
+
1928
+ // Schema-specific error handling
1929
+ if (err?.code === schemaCode && Array.isArray(err.issues)) {
1930
+ console.log(JSON.stringify({ errors: err.issues }, null, 2));
1931
+ console.error(err.message);
1932
+ throwExit(2);
1933
+ }
1934
+
1935
+ // Handle known validation errors (exit 2)
1936
+ if (
1937
+ e instanceof SchemaValidationError ||
1938
+ e instanceof CycleError ||
1939
+ e instanceof UnknownDependencyError ||
1940
+ e instanceof WriteProtectionError ||
1941
+ e instanceof AutopilotConfigError
1942
+ ) {
1943
+ console.error(`\n❌ Error: ${err.message}\n`);
1944
+
1945
+ // Add contextual help based on error type
1946
+ // e.g., for WriteProtectionError: suggest using local profile
1947
+ // e.g., for CycleError: suggest checking dependency declarations
1948
+
1949
+ throwExit(2);
1950
+ }
1951
+
1952
+ // Handle system errors (exit 1)
1953
+ console.error(`\n❌ Unexpected error: ${err.message}\n`);
1954
+ throwExit(1);
1955
+ }
1956
+ ```
1957
+
1958
+ **Note**: Simplified example. See `src/cli.ts` for the full implementation with contextual error messages.
1959
+
1960
+ **Usage**:
1961
+
1962
+ ```typescript
1963
+ try {
1964
+ const plan = await generatePlan();
1965
+ process.stdout.write(canonicalJSONStringify(plan));
1966
+ } catch (error) {
1967
+ exitWith(error);
1968
+ }
1969
+ ```
1970
+
1971
+ #### Error Context
1972
+
1973
+ Provide helpful context in error messages:
1974
+
1975
+ ```typescript
1976
+ if (e instanceof WriteProtectionError) {
1977
+ console.error(`\n❌ Error: ${e.message}\n`);
1978
+ console.error("💡 Tip: Use a local profile directory for development:");
1979
+ console.error(" lex-pr init --profile-dir .smartergpt.local\n");
1980
+ throwExit(2);
1981
+ }
1982
+ ```
1983
+
1984
+ ### Testing CLI Commands
1985
+
1986
+ Write tests that verify exit behavior:
1987
+
1988
+ ```typescript
1989
+ import { describe, it, expect } from "vitest";
1990
+ import { CLIExitSignal } from "../src/cli.js";
1991
+
1992
+ describe("CLI exit codes", () => {
1993
+ it("should throw CLIExitSignal on validation error", () => {
1994
+ // Test that validation errors throw CLIExitSignal with code 2
1995
+ expect(() => {
1996
+ throw new CLIExitSignal(2, "Validation failed");
1997
+ }).toThrow(CLIExitSignal);
1998
+ });
1999
+
2000
+ it("should have correct exit code in signal", () => {
2001
+ const signal = new CLIExitSignal(2, "Validation error");
2002
+ expect(signal.exitCode).toBe(2);
2003
+ });
2004
+ });
2005
+ ```
2006
+
2007
+ **Note**: Testing the full CLI requires mocking process.exit or using child processes. The above shows testing the CLIExitSignal class itself.
2008
+
2009
+ ### Summary
2010
+
2011
+ **Key Takeaways**:
2012
+
2013
+ 1. **Exit Discipline**: Always use `throwExit()` or throw `CLIExitSignal`, never `process.exit()`
2014
+ 2. **JSON Purity**: stdout for data, stderr for diagnostics - configure Commander explicitly
2015
+ 3. **Deterministic Output**: Use `canonicalJSONStringify()` for all JSON output
2016
+ 4. **Error Codes**: 0 = success, 1 = system error, 2 = user error
2017
+ 5. **Stream Separation**: Commander's `configureOutput()` ensures help/errors don't pollute stdout
2018
+
2019
+ **Related Documentation**:
2020
+
2021
+ - [Error Taxonomy](./errors.md) - Complete error code reference
2022
+ - [Deterministic Output](#deterministic-output-requirements) - JSON output guarantees
2023
+ - Source: `src/cli.ts` - See `CLIExitSignal`, `throwExit()`, `exitWith()`
2024
+
2025
+ ---
2026
+
2027
+ ## Advanced Commands
2028
+
2029
+ ### `view`
2030
+
2031
+ Interactive plan viewer with keyboard navigation and filtering.
2032
+
2033
+ ```bash
2034
+ lex-pr view [options] [file]
2035
+
2036
+ Arguments:
2037
+ file Path to plan.json file (alternative to --plan)
2038
+
2039
+ Options:
2040
+ --plan <file> Path to plan.json file
2041
+ --filter <text> Initial filter text
2042
+ --no-deps Hide dependencies by default
2043
+ --no-gates Hide gates by default
2044
+ -h, --help Display help for command
2045
+ ```
2046
+
2047
+ **Keyboard Navigation:**
2048
+
2049
+ - `↑/↓` - Navigate items
2050
+ - `/` - Enter filter mode
2051
+ - `d` - Toggle dependencies
2052
+ - `g` - Toggle gates
2053
+ - `q` - Quit
2054
+
2055
+ #### Examples
2056
+
2057
+ ```bash
2058
+ # Open interactive viewer
2059
+ lex-pr view plan.json
2060
+
2061
+ # Start with a filter
2062
+ lex-pr view plan.json --filter "feature"
2063
+
2064
+ # Hide gates by default
2065
+ lex-pr view plan.json --no-gates
2066
+ ```
2067
+
2068
+ ---
2069
+
2070
+ ### `query`
2071
+
2072
+ Advanced query and analysis of plan using SQL-like syntax.
2073
+
2074
+ ```bash
2075
+ lex-pr query [file] [query] [options]
2076
+
2077
+ Arguments:
2078
+ file Path to plan.json file (alternative to --plan)
2079
+ query Query string (e.g., 'level eq 1', 'name contains feature')
2080
+
2081
+ Options:
2082
+ --plan <file> Path to plan.json file
2083
+ --format <fmt> Output format: json, table, csv (default: "table")
2084
+ --output <file> Output file (default: stdout)
2085
+ --stats Show plan statistics
2086
+ --roots Show root nodes (no dependencies)
2087
+ --leaves Show leaf nodes (no dependents)
2088
+ --level <level> Filter by merge level
2089
+ -h, --help Display help for command
2090
+ ```
2091
+
2092
+ **Query Syntax:**
2093
+
2094
+ ```
2095
+ field operator value [AND field operator value]
2096
+ ```
2097
+
2098
+ **Operators:** `eq`, `ne`, `contains`, `in`, `gt`, `lt`, `gte`, `lte`
2099
+
2100
+ **Fields:** `name`, `level`, `depsCount`, `gatesCount`, `dependentsCount`
2101
+
2102
+ #### Examples
2103
+
2104
+ ```bash
2105
+ # Find all items at merge level 1
2106
+ lex-pr query plan.json "level eq 1"
2107
+
2108
+ # Find items with specific name pattern
2109
+ lex-pr query plan.json "name contains feature"
2110
+
2111
+ # Find items with more than 2 dependencies
2112
+ lex-pr query plan.json "depsCount gt 2"
2113
+
2114
+ # Complex queries with AND
2115
+ lex-pr query plan.json "level eq 1 AND depsCount eq 0"
2116
+
2117
+ # Show plan statistics
2118
+ lex-pr query plan.json --stats
2119
+
2120
+ # Output as JSON
2121
+ lex-pr query plan.json "level eq 1" --format json
2122
+
2123
+ # Save to file
2124
+ lex-pr query plan.json --roots --output roots.json --format json
2125
+ ```
2126
+
2127
+ ---
2128
+
2129
+ ### `retry`
2130
+
2131
+ Retry failed gates with selective filtering.
2132
+
2133
+ ```bash
2134
+ lex-pr retry [options]
2135
+
2136
+ Options:
2137
+ --state-dir <dir> State directory (default: ".smartergpt/runner")
2138
+ --filter <text> Filter items/gates to retry
2139
+ --items <items> Comma-separated list of items to retry
2140
+ --dry-run Show what would be retried without executing
2141
+ --json Output JSON format
2142
+ -h, --help Display help for command
2143
+ ```
2144
+
2145
+ #### Examples
2146
+
2147
+ ```bash
2148
+ # Show all failed gates
2149
+ lex-pr retry --dry-run
2150
+
2151
+ # Retry all failed gates
2152
+ lex-pr retry
2153
+
2154
+ # Retry specific items
2155
+ lex-pr retry --items "item1,item2"
2156
+
2157
+ # Retry with filter
2158
+ lex-pr retry --filter "integration"
2159
+
2160
+ # JSON output
2161
+ lex-pr retry --json
2162
+ ```
2163
+
2164
+ ---
2165
+
2166
+ ### `completion`
2167
+
2168
+ Generate shell completion scripts for bash and zsh.
2169
+
2170
+ ```bash
2171
+ lex-pr completion [shell] [options]
2172
+
2173
+ Arguments:
2174
+ shell Shell type: bash, zsh (default: "bash")
2175
+
2176
+ Options:
2177
+ --install Show installation instructions
2178
+ -h, --help Display help for command
2179
+ ```
2180
+
2181
+ #### Examples
2182
+
2183
+ ```bash
2184
+ # Generate bash completion
2185
+ lex-pr completion bash
2186
+
2187
+ # Generate zsh completion
2188
+ lex-pr completion zsh
2189
+
2190
+ # Show installation instructions
2191
+ lex-pr completion bash --install
2192
+ ```
2193
+
2194
+ **Installation:**
2195
+
2196
+ For bash:
2197
+
2198
+ ```bash
2199
+ # Add to ~/.bashrc
2200
+ eval "$(lex-pr completion bash)"
2201
+ ```
2202
+
2203
+ For zsh:
2204
+
2205
+ ```bash
2206
+ # Add to ~/.zshrc
2207
+ eval "$(lex-pr completion zsh)"
2208
+ ```
2209
+
2210
+ ---
2211
+
2212
+ ### Enhanced `merge` Options
2213
+
2214
+ The `merge` command now supports batch operations:
2215
+
2216
+ ```bash
2217
+ lex-pr merge [options]
2218
+
2219
+ Additional Batch Options:
2220
+ --batch Enable batch mode for multiple items
2221
+ --filter <query> Filter items using query language
2222
+ --levels <levels> Comma-separated list of levels to merge
2223
+ --items <items> Comma-separated list of items to merge
2224
+ ```
2225
+
2226
+ #### Batch Examples
2227
+
2228
+ ```bash
2229
+ # Merge specific items
2230
+ lex-pr merge plan.json --batch --items "item1,item2" --execute
2231
+
2232
+ # Merge all items at specific levels
2233
+ lex-pr merge plan.json --batch --levels "1,2" --execute
2234
+
2235
+ # Merge items matching a query
2236
+ lex-pr merge plan.json --batch --filter "level eq 1" --execute
2237
+ ```
2238
+
2239
+ ---
2240
+
2241
+ ## Error Handling
2242
+
2243
+ All commands follow consistent error handling:
2244
+
2245
+ - **Exit code 0**: Success
2246
+ - **Exit code 1**: System/infrastructure errors
2247
+ - **Exit code 2**: User/validation errors
2248
+
2249
+ JSON error responses use consistent format:
2250
+
2251
+ ```json
2252
+ {
2253
+ "error": true,
2254
+ "code": "ERROR_CODE",
2255
+ "message": "Human-readable error message",
2256
+ "details": {
2257
+ // Command-specific error context
2258
+ }
2259
+ }
2260
+ ```
2261
+
2262
+ See [Error Taxonomy](./errors.md) for complete error code reference.