@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/dist/cli.d.cts ADDED
@@ -0,0 +1,2709 @@
1
+ #!/usr/bin/env node
2
+ import { z } from 'zod';
3
+ import { Octokit } from '@octokit/rest';
4
+
5
+ /**
6
+ * Gate execution result
7
+ */
8
+ declare const GateResult: z.ZodObject<{
9
+ gate: z.ZodString;
10
+ status: z.ZodEnum<{
11
+ pass: "pass";
12
+ fail: "fail";
13
+ blocked: "blocked";
14
+ skipped: "skipped";
15
+ retrying: "retrying";
16
+ }>;
17
+ exitCode: z.ZodOptional<z.ZodNumber>;
18
+ duration: z.ZodOptional<z.ZodNumber>;
19
+ stdout: z.ZodOptional<z.ZodString>;
20
+ stderr: z.ZodOptional<z.ZodString>;
21
+ artifacts: z.ZodOptional<z.ZodArray<z.ZodString>>;
22
+ attempts: z.ZodDefault<z.ZodNumber>;
23
+ lastAttempt: z.ZodOptional<z.ZodString>;
24
+ }, z.core.$strip>;
25
+ type GateResult = z.infer<typeof GateResult>;
26
+ /**
27
+ * Node execution state
28
+ */
29
+ declare const NodeResult: z.ZodObject<{
30
+ name: z.ZodString;
31
+ status: z.ZodEnum<{
32
+ pass: "pass";
33
+ fail: "fail";
34
+ blocked: "blocked";
35
+ skipped: "skipped";
36
+ retrying: "retrying";
37
+ }>;
38
+ gates: z.ZodDefault<z.ZodArray<z.ZodObject<{
39
+ gate: z.ZodString;
40
+ status: z.ZodEnum<{
41
+ pass: "pass";
42
+ fail: "fail";
43
+ blocked: "blocked";
44
+ skipped: "skipped";
45
+ retrying: "retrying";
46
+ }>;
47
+ exitCode: z.ZodOptional<z.ZodNumber>;
48
+ duration: z.ZodOptional<z.ZodNumber>;
49
+ stdout: z.ZodOptional<z.ZodString>;
50
+ stderr: z.ZodOptional<z.ZodString>;
51
+ artifacts: z.ZodOptional<z.ZodArray<z.ZodString>>;
52
+ attempts: z.ZodDefault<z.ZodNumber>;
53
+ lastAttempt: z.ZodOptional<z.ZodString>;
54
+ }, z.core.$strip>>>;
55
+ blockedBy: z.ZodOptional<z.ZodArray<z.ZodString>>;
56
+ eligibleForMerge: z.ZodDefault<z.ZodBoolean>;
57
+ }, z.core.$strip>;
58
+ type NodeResult = z.infer<typeof NodeResult>;
59
+ /**
60
+ * Plan item with dependencies resolved by name.
61
+ * Note: Input generator defaults name := id when name is unset.
62
+ * All deps references must match item names in the final plan.
63
+ */
64
+ declare const PlanItem: z.ZodObject<{
65
+ name: z.ZodString;
66
+ deps: z.ZodDefault<z.ZodArray<z.ZodString>>;
67
+ gates: z.ZodDefault<z.ZodArray<z.ZodObject<{
68
+ name: z.ZodString;
69
+ run: z.ZodString;
70
+ cwd: z.ZodOptional<z.ZodString>;
71
+ env: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
72
+ runtime: z.ZodDefault<z.ZodEnum<{
73
+ local: "local";
74
+ container: "container";
75
+ "ci-service": "ci-service";
76
+ }>>;
77
+ container: z.ZodOptional<z.ZodObject<{
78
+ image: z.ZodString;
79
+ entrypoint: z.ZodOptional<z.ZodArray<z.ZodString>>;
80
+ mounts: z.ZodOptional<z.ZodArray<z.ZodObject<{
81
+ source: z.ZodString;
82
+ target: z.ZodString;
83
+ type: z.ZodDefault<z.ZodEnum<{
84
+ bind: "bind";
85
+ volume: "volume";
86
+ }>>;
87
+ }, z.core.$strip>>>;
88
+ }, z.core.$strip>>;
89
+ artifacts: z.ZodDefault<z.ZodArray<z.ZodString>>;
90
+ input: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
91
+ }, z.core.$strict>>>;
92
+ tier: z.ZodOptional<z.ZodObject<{
93
+ suggested: z.ZodEnum<{
94
+ senior: "senior";
95
+ mid: "mid";
96
+ junior: "junior";
97
+ }>;
98
+ actual: z.ZodOptional<z.ZodEnum<{
99
+ senior: "senior";
100
+ mid: "mid";
101
+ junior: "junior";
102
+ }>>;
103
+ escalated: z.ZodDefault<z.ZodBoolean>;
104
+ escalationReason: z.ZodOptional<z.ZodString>;
105
+ mismatch: z.ZodOptional<z.ZodBoolean>;
106
+ }, z.core.$strip>>;
107
+ }, z.core.$strict>;
108
+ type PlanItem = z.infer<typeof PlanItem>;
109
+ declare const Plan: z.ZodObject<{
110
+ schemaVersion: z.ZodString;
111
+ target: z.ZodDefault<z.ZodString>;
112
+ policy: z.ZodOptional<z.ZodObject<{
113
+ requiredGates: z.ZodDefault<z.ZodArray<z.ZodString>>;
114
+ optionalGates: z.ZodDefault<z.ZodArray<z.ZodString>>;
115
+ maxWorkers: z.ZodDefault<z.ZodNumber>;
116
+ retries: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
117
+ maxAttempts: z.ZodDefault<z.ZodNumber>;
118
+ backoffSeconds: z.ZodDefault<z.ZodNumber>;
119
+ }, z.core.$strip>>>;
120
+ overrides: z.ZodDefault<z.ZodObject<{
121
+ adminGreen: z.ZodOptional<z.ZodObject<{
122
+ allowedUsers: z.ZodOptional<z.ZodArray<z.ZodString>>;
123
+ requireReason: z.ZodDefault<z.ZodBoolean>;
124
+ }, z.core.$strip>>;
125
+ }, z.core.$strip>>;
126
+ blockOn: z.ZodDefault<z.ZodArray<z.ZodString>>;
127
+ mergeRule: z.ZodDefault<z.ZodObject<{
128
+ type: z.ZodDefault<z.ZodEnum<{
129
+ "strict-required": "strict-required";
130
+ }>>;
131
+ }, z.core.$strip>>;
132
+ performance: z.ZodOptional<z.ZodDefault<z.ZodObject<{
133
+ maxMemoryMB: z.ZodOptional<z.ZodNumber>;
134
+ batchSize: z.ZodDefault<z.ZodNumber>;
135
+ cacheTTLSeconds: z.ZodDefault<z.ZodNumber>;
136
+ enableCaching: z.ZodDefault<z.ZodBoolean>;
137
+ throttleOnMemory: z.ZodDefault<z.ZodBoolean>;
138
+ memoryThresholdPercent: z.ZodDefault<z.ZodNumber>;
139
+ }, z.core.$strip>>>;
140
+ security: z.ZodOptional<z.ZodDefault<z.ZodObject<{
141
+ blockCritical: z.ZodDefault<z.ZodBoolean>;
142
+ blockHigh: z.ZodDefault<z.ZodBoolean>;
143
+ maxMedium: z.ZodDefault<z.ZodNumber>;
144
+ maxLow: z.ZodDefault<z.ZodNumber>;
145
+ }, z.core.$strip>>>;
146
+ }, z.core.$strip>>;
147
+ items: z.ZodDefault<z.ZodArray<z.ZodObject<{
148
+ name: z.ZodString;
149
+ deps: z.ZodDefault<z.ZodArray<z.ZodString>>;
150
+ gates: z.ZodDefault<z.ZodArray<z.ZodObject<{
151
+ name: z.ZodString;
152
+ run: z.ZodString;
153
+ cwd: z.ZodOptional<z.ZodString>;
154
+ env: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
155
+ runtime: z.ZodDefault<z.ZodEnum<{
156
+ local: "local";
157
+ container: "container";
158
+ "ci-service": "ci-service";
159
+ }>>;
160
+ container: z.ZodOptional<z.ZodObject<{
161
+ image: z.ZodString;
162
+ entrypoint: z.ZodOptional<z.ZodArray<z.ZodString>>;
163
+ mounts: z.ZodOptional<z.ZodArray<z.ZodObject<{
164
+ source: z.ZodString;
165
+ target: z.ZodString;
166
+ type: z.ZodDefault<z.ZodEnum<{
167
+ bind: "bind";
168
+ volume: "volume";
169
+ }>>;
170
+ }, z.core.$strip>>>;
171
+ }, z.core.$strip>>;
172
+ artifacts: z.ZodDefault<z.ZodArray<z.ZodString>>;
173
+ input: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
174
+ }, z.core.$strict>>>;
175
+ tier: z.ZodOptional<z.ZodObject<{
176
+ suggested: z.ZodEnum<{
177
+ senior: "senior";
178
+ mid: "mid";
179
+ junior: "junior";
180
+ }>;
181
+ actual: z.ZodOptional<z.ZodEnum<{
182
+ senior: "senior";
183
+ mid: "mid";
184
+ junior: "junior";
185
+ }>>;
186
+ escalated: z.ZodDefault<z.ZodBoolean>;
187
+ escalationReason: z.ZodOptional<z.ZodString>;
188
+ mismatch: z.ZodOptional<z.ZodBoolean>;
189
+ }, z.core.$strip>>;
190
+ }, z.core.$strict>>>;
191
+ }, z.core.$strict>;
192
+ type Plan = z.infer<typeof Plan>;
193
+ /**
194
+ * Load and validate a plan.json file
195
+ */
196
+ declare function loadPlan(planContent: string): Plan;
197
+
198
+ /**
199
+ * Error Recovery and Resilience Framework
200
+ *
201
+ * Implements:
202
+ * - Error classification (transient vs permanent)
203
+ * - Exponential backoff retry mechanism
204
+ * - Circuit breaker pattern for external services
205
+ * - Graceful degradation strategies
206
+ * - Detailed error diagnostics and recovery guidance
207
+ */
208
+ /**
209
+ * Error classification types
210
+ */
211
+ declare enum ErrorType {
212
+ /** Transient errors that may succeed on retry (network, rate limits, temporary service outages) */
213
+ Transient = "transient",
214
+ /** Permanent errors that won't succeed on retry (validation, auth, not found) */
215
+ Permanent = "permanent",
216
+ /** Unknown error classification */
217
+ Unknown = "unknown"
218
+ }
219
+ /**
220
+ * Error severity levels for prioritization and alerting
221
+ */
222
+ declare enum ErrorSeverity {
223
+ /** Critical errors that prevent operation continuation */
224
+ Critical = "critical",
225
+ /** High severity errors that impact functionality */
226
+ High = "high",
227
+ /** Medium severity errors with workarounds available */
228
+ Medium = "medium",
229
+ /** Low severity errors or warnings */
230
+ Low = "low"
231
+ }
232
+ /**
233
+ * Classified error with context and recovery information
234
+ */
235
+ interface ClassifiedError {
236
+ /** Original error */
237
+ error: Error;
238
+ /** Error classification type */
239
+ type: ErrorType;
240
+ /** Severity level */
241
+ severity: ErrorSeverity;
242
+ /** Human-readable context */
243
+ context: string;
244
+ /** Suggested recovery actions */
245
+ recoveryActions: string[];
246
+ /** Whether this error is retryable */
247
+ retryable: boolean;
248
+ /** Error code for automation */
249
+ code: string;
250
+ /** Metadata for diagnostics */
251
+ metadata?: Record<string, any>;
252
+ }
253
+
254
+ /**
255
+ * Execution state management for the lexrunner
256
+ * Handles status tracking, propagation, and merge eligibility
257
+ * Includes error diagnostics and recovery tracking
258
+ */
259
+
260
+ /**
261
+ * Error diagnostic information
262
+ */
263
+ interface ErrorDiagnostic {
264
+ nodeName: string;
265
+ gateName: string;
266
+ classified: ClassifiedError;
267
+ timestamp: string;
268
+ attemptNumber: number;
269
+ }
270
+ /**
271
+ * Execution state manager with error tracking
272
+ */
273
+ declare class ExecutionState {
274
+ private results;
275
+ private plan;
276
+ private policy;
277
+ private errorDiagnostics;
278
+ constructor(plan: Plan);
279
+ /**
280
+ * Record error diagnostic for troubleshooting
281
+ */
282
+ recordErrorDiagnostic(nodeName: string, gateName: string, error: Error, attemptNumber: number): void;
283
+ /**
284
+ * Get error diagnostics
285
+ */
286
+ getErrorDiagnostics(): ErrorDiagnostic[];
287
+ /**
288
+ * Get summary of errors by type
289
+ */
290
+ getErrorSummary(): {
291
+ transient: number;
292
+ permanent: number;
293
+ unknown: number;
294
+ };
295
+ /**
296
+ * Update gate result for a node
297
+ */
298
+ updateGateResult(nodeName: string, gateResult: GateResult): void;
299
+ /**
300
+ * Update node status based on its gate results and policy
301
+ */
302
+ private updateNodeStatus;
303
+ /**
304
+ * Propagate blocked status to dependent nodes
305
+ */
306
+ propagateBlockedStatus(): void;
307
+ /**
308
+ * Get required gates for a node based on policy and node configuration
309
+ */
310
+ private getRequiredGatesForNode;
311
+ /**
312
+ * Build dependency map for the plan
313
+ */
314
+ private buildDependencyMap;
315
+ /**
316
+ * Get current results
317
+ */
318
+ getResults(): Map<string, NodeResult>;
319
+ /**
320
+ * Get result for specific node
321
+ */
322
+ getNodeResult(nodeName: string): NodeResult | undefined;
323
+ /**
324
+ * Get nodes eligible for merge
325
+ */
326
+ getEligibleNodes(): string[];
327
+ /**
328
+ * Check if all nodes are complete (passed, failed, or blocked)
329
+ */
330
+ isExecutionComplete(): boolean;
331
+ /**
332
+ * Load gate results from a directory and populate execution state
333
+ * This allows importing results from external runs (manual gates, CI, etc.)
334
+ *
335
+ * @param gateResultsDir Directory containing gate result JSON files
336
+ * @returns Number of gate results loaded
337
+ */
338
+ loadGateResultsFromDirectory(gateResultsDir: string): number;
339
+ }
340
+
341
+ /**
342
+ * Progress indicators for human mode CLI output
343
+ * Provides timing and progress ticks for long operations
344
+ */
345
+ interface ProgressOptions {
346
+ /** Whether to show progress indicators (disabled in JSON mode) */
347
+ enabled: boolean;
348
+ }
349
+ /**
350
+ * Progress reporter for long-running operations
351
+ */
352
+ declare class ProgressReporter {
353
+ private enabled;
354
+ private startTimes;
355
+ constructor(options?: ProgressOptions);
356
+ /**
357
+ * Mark the start of a level
358
+ */
359
+ levelStart(level: number, items: string[]): void;
360
+ /**
361
+ * Mark the completion of a level
362
+ */
363
+ levelComplete(level: number): void;
364
+ /**
365
+ * Mark the start of a node/item
366
+ */
367
+ nodeStart(name: string): void;
368
+ /**
369
+ * Mark the completion of a node/item (only if >2s threshold)
370
+ */
371
+ nodeComplete(name: string, success?: boolean): void;
372
+ /**
373
+ * Format duration in human-readable format
374
+ */
375
+ private formatDuration;
376
+ }
377
+
378
+ /**
379
+ * Turn Cost Tracking for Merge-Weave Operations
380
+ *
381
+ * Implements Turn Cost tracking per the coordination cost compression thesis:
382
+ * Turn Cost = λL + γC + ρR + τT + αA
383
+ *
384
+ * Where:
385
+ * - L: Latency (API response time, gate execution, merge time)
386
+ * - C: Context Reset tokens (N/A for deterministic runner)
387
+ * - R: Renegotiation (conflict resolution retries, clarification turns)
388
+ * - T: Token Bloat (excess tokens beyond expected)
389
+ * - A: Attention Switch (human interventions, manual conflict resolutions)
390
+ */
391
+ /**
392
+ * Default weights for Turn Cost calculation
393
+ */
394
+ declare const DEFAULT_TURN_COST_WEIGHTS: {
395
+ /** Weight for latency (λ) - normalized to seconds */
396
+ readonly lambda: 0.1;
397
+ /** Weight for context reset tokens (γ) */
398
+ readonly gamma: 0.1;
399
+ /** Weight for renegotiation count (ρ) */
400
+ readonly rho: 0.3;
401
+ /** Weight for token bloat (τ) */
402
+ readonly tau: 0.2;
403
+ /** Weight for attention switch count (α) */
404
+ readonly alpha: 0.3;
405
+ };
406
+ type TurnCostWeights = typeof DEFAULT_TURN_COST_WEIGHTS;
407
+ /**
408
+ * Turn Cost components tracked during merge-weave operations
409
+ */
410
+ interface TurnCostComponents {
411
+ /** Total latency in milliseconds */
412
+ latencyMs: number;
413
+ /** Context reset tokens (N/A for deterministic runner, always 0) */
414
+ contextResetTokens: number;
415
+ /** Number of renegotiation events (conflict retries, clarifications) */
416
+ renegotiationCount: number;
417
+ /** Token bloat (actual - expected tokens used) */
418
+ tokenBloat: number;
419
+ /** Number of attention switches (human interventions) */
420
+ attentionSwitchCount: number;
421
+ }
422
+ /**
423
+ * Event recorded during Turn Cost tracking
424
+ */
425
+ interface TurnCostEvent {
426
+ /** Type of event */
427
+ type: "latency" | "renegotiation" | "token_bloat" | "attention_switch";
428
+ /** Timestamp of the event */
429
+ timestamp: string;
430
+ /** Event-specific details */
431
+ details: {
432
+ /** Reason for the event */
433
+ reason?: string;
434
+ /** Duration in milliseconds (for latency events) */
435
+ durationMs?: number;
436
+ /** Expected token count (for token bloat events) */
437
+ expectedTokens?: number;
438
+ /** Actual token count (for token bloat events) */
439
+ actualTokens?: number;
440
+ /** Item name associated with the event */
441
+ itemName?: string;
442
+ };
443
+ }
444
+ /**
445
+ * Turn Cost summary for output
446
+ */
447
+ interface TurnCostSummary {
448
+ /** Component values */
449
+ components: TurnCostComponents;
450
+ /** Weighted score using default weights */
451
+ weightedScore: number;
452
+ /** Number of events recorded */
453
+ eventCount: number;
454
+ /** Optional prior run score for comparison */
455
+ priorRunScore?: number;
456
+ /** Optional improvement percentage (negative = improvement) */
457
+ improvement?: string;
458
+ }
459
+ /**
460
+ * MergeWeaveTurnCost tracks coordination costs during merge-weave operations.
461
+ *
462
+ * Usage:
463
+ * ```typescript
464
+ * const turnCost = new MergeWeaveTurnCost();
465
+ *
466
+ * // Track latency for operations
467
+ * const start = performance.now();
468
+ * await someOperation();
469
+ * turnCost.recordLatency(performance.now() - start);
470
+ *
471
+ * // Track renegotiation events
472
+ * turnCost.recordRenegotiation('conflict in feature-branch');
473
+ *
474
+ * // Track token bloat
475
+ * turnCost.recordTokenBloat(1000, 1500); // expected, actual
476
+ *
477
+ * // Track attention switches
478
+ * turnCost.recordAttentionSwitch('manual conflict resolution required');
479
+ *
480
+ * // Get summary
481
+ * const summary = turnCost.toJSON();
482
+ * ```
483
+ */
484
+ declare class MergeWeaveTurnCost {
485
+ private components;
486
+ private events;
487
+ private weights;
488
+ constructor(weights?: TurnCostWeights);
489
+ /**
490
+ * Record latency from an operation.
491
+ * @param durationMs Duration in milliseconds
492
+ * @param itemName Optional item name for context
493
+ */
494
+ recordLatency(durationMs: number, itemName?: string): void;
495
+ /**
496
+ * Record a renegotiation event (conflict resolution retry, clarification).
497
+ * @param reason Reason for the renegotiation
498
+ * @param itemName Optional item name for context
499
+ */
500
+ recordRenegotiation(reason: string, itemName?: string): void;
501
+ /**
502
+ * Record token bloat (excess tokens used beyond expected).
503
+ * @param expected Expected token count
504
+ * @param actual Actual token count
505
+ * @param itemName Optional item name for context
506
+ */
507
+ recordTokenBloat(expected: number, actual: number, itemName?: string): void;
508
+ /**
509
+ * Record an attention switch (human intervention required).
510
+ * @param reason Reason for the attention switch
511
+ * @param itemName Optional item name for context
512
+ */
513
+ recordAttentionSwitch(reason: string, itemName?: string): void;
514
+ /**
515
+ * Get the current Turn Cost components.
516
+ */
517
+ getComponents(): TurnCostComponents;
518
+ /**
519
+ * Get all recorded events.
520
+ */
521
+ getEvents(): TurnCostEvent[];
522
+ /**
523
+ * Calculate the weighted Turn Cost score.
524
+ * @param weights Optional custom weights (uses default if not provided)
525
+ */
526
+ getWeightedScore(weights?: TurnCostWeights): number;
527
+ /**
528
+ * Get Turn Cost summary for output.
529
+ * @param priorRunScore Optional prior run score for comparison
530
+ */
531
+ toJSON(priorRunScore?: number): TurnCostSummary;
532
+ /**
533
+ * Reset all tracked values.
534
+ */
535
+ reset(): void;
536
+ /**
537
+ * Merge another TurnCost tracker into this one.
538
+ * Useful for aggregating per-item costs into a total.
539
+ */
540
+ merge(other: MergeWeaveTurnCost): void;
541
+ }
542
+
543
+ /**
544
+ * Execute gates for multiple items with concurrency control and dependency ordering
545
+ */
546
+ declare function executeGatesWithPolicy(plan: Plan, executionState: ExecutionState, artifactDir: string, timeoutMs?: number, progressReporter?: ProgressReporter, skipValidation?: boolean, repoRoot?: string, options?: {
547
+ runId?: string;
548
+ baseDir?: string;
549
+ turnCostTracker?: MergeWeaveTurnCost;
550
+ }): Promise<void>;
551
+
552
+ /**
553
+ * Merge eligibility and decision logic for lexrunner
554
+ * Implements policy-based merge decisions, short-circuiting, and manual overrides
555
+ */
556
+
557
+ /**
558
+ * Merge decision result
559
+ */
560
+ interface MergeDecision {
561
+ nodeName: string;
562
+ eligible: boolean;
563
+ reason: string;
564
+ requiresOverride: boolean;
565
+ blockedBy?: string[];
566
+ }
567
+ /**
568
+ * Override request for manual merge approval
569
+ */
570
+ interface OverrideRequest {
571
+ nodeName: string;
572
+ requestedBy: string;
573
+ reason: string;
574
+ timestamp: string;
575
+ }
576
+ /**
577
+ * Merge eligibility evaluator
578
+ */
579
+ declare class MergeEligibilityEvaluator {
580
+ private plan;
581
+ private policy;
582
+ private executionState;
583
+ private overrides;
584
+ constructor(plan: Plan, executionState: ExecutionState);
585
+ /**
586
+ * Get default policy if none specified
587
+ */
588
+ private getDefaultPolicy;
589
+ /**
590
+ * Evaluate merge eligibility for all nodes
591
+ */
592
+ evaluateAllNodes(): Map<string, MergeDecision>;
593
+ /**
594
+ * Evaluate merge eligibility for a specific node
595
+ */
596
+ evaluateNode(nodeName: string): MergeDecision;
597
+ /**
598
+ * Evaluate strict-required merge rule
599
+ */
600
+ private evaluateStrictRequired;
601
+ /**
602
+ * Check status of all dependencies
603
+ */
604
+ private checkDependencyStatus;
605
+ /**
606
+ * Request manual override for a node
607
+ */
608
+ requestOverride(nodeName: string, requestedBy: string, reason: string): boolean;
609
+ /**
610
+ * Check if an override is valid
611
+ */
612
+ private isValidOverride;
613
+ /**
614
+ * Get nodes ready for merge (eligible and all dependencies merged)
615
+ */
616
+ getNodesReadyForMerge(): string[];
617
+ /**
618
+ * Get merge summary for reporting
619
+ */
620
+ getMergeSummary(): {
621
+ eligible: string[];
622
+ blocked: string[];
623
+ pending: string[];
624
+ failed: string[];
625
+ overrides: OverrideRequest[];
626
+ };
627
+ /**
628
+ * Clear all overrides (for testing or reset)
629
+ */
630
+ clearOverrides(): void;
631
+ }
632
+
633
+ /**
634
+ * Core inputs processing - reads and normalizes configuration sources
635
+ * Maintains deterministic ordering and stable output
636
+ */
637
+ /**
638
+ * Configuration source types
639
+ */
640
+ interface ConfigSource {
641
+ file: string;
642
+ content: unknown;
643
+ exists: boolean;
644
+ }
645
+ /**
646
+ * Provenance map tracking source file for each configuration key
647
+ */
648
+ interface ProvenanceMap {
649
+ [key: string]: string;
650
+ }
651
+ /**
652
+ * Normalized input configuration
653
+ */
654
+ interface InputConfig {
655
+ version: number;
656
+ target: string;
657
+ items: InputItem[];
658
+ sources: ConfigSource[];
659
+ provenance?: ProvenanceMap;
660
+ }
661
+ interface InputItem {
662
+ id?: string;
663
+ name: string;
664
+ branch?: string;
665
+ sha?: string;
666
+ deps: string[];
667
+ strategy: "rebase-weave" | "merge-weave" | "squash-weave";
668
+ gates?: InputGate[];
669
+ }
670
+ interface InputGate {
671
+ name: string;
672
+ run: string;
673
+ cwd?: string;
674
+ env?: Record<string, string>;
675
+ runtime?: "local" | "container" | "ci-service";
676
+ artifacts?: string[];
677
+ }
678
+ /**
679
+ * Load configuration from file system with deterministic precedence
680
+ * Returns normalized configuration with stable ordering
681
+ */
682
+ declare function loadInputs(baseDir?: string): InputConfig;
683
+
684
+ /**
685
+ * Capability Tier Schema
686
+ *
687
+ * Defines tier types for task assignment governance.
688
+ * Implements Claim 3.4: Matching task tier to model capability
689
+ * reduces overall Turn Cost by avoiding over/under-allocation.
690
+ */
691
+
692
+ /**
693
+ * Tier override specification from CLI
694
+ * Format: "item-name=tier" (e.g., "PR-123=senior")
695
+ */
696
+ declare const TierOverride: z.ZodObject<{
697
+ itemName: z.ZodString;
698
+ tier: z.ZodEnum<{
699
+ senior: "senior";
700
+ mid: "mid";
701
+ junior: "junior";
702
+ }>;
703
+ }, z.core.$strip>;
704
+ type TierOverride = z.infer<typeof TierOverride>;
705
+
706
+ /**
707
+ * Core plan generation - transforms inputs to normalized plan
708
+ * Maintains deterministic ordering and canonical structure
709
+ */
710
+
711
+ /**
712
+ * Generate normalized plan from input configuration
713
+ * Ensures deterministic output with stable ordering
714
+ */
715
+ declare function generatePlan(inputs: InputConfig, options?: {
716
+ tierOverrides?: TierOverride[];
717
+ }): Plan;
718
+
719
+ /**
720
+ * Core snapshot generation - creates deterministic snapshot.md with metadata
721
+ * Includes plan hash, environment fingerprint, and stable metadata
722
+ */
723
+
724
+ /**
725
+ * Generate deterministic snapshot.md with plan metadata
726
+ */
727
+ declare function generateSnapshot(plan: Plan, inputs: InputConfig): string;
728
+ /**
729
+ * Generate snapshot.md for GitHub-generated plans
730
+ */
731
+ declare function generateGitHubSnapshot(plan: Plan): string;
732
+
733
+ /**
734
+ * Serialize any value to canonical JSON with deterministic key ordering
735
+ * Arrays keep authored order, objects get keys sorted recursively
736
+ * Always ends with newline for consistent file artifacts
737
+ */
738
+ declare function canonicalJSONStringify(input: unknown): string;
739
+
740
+ /**
741
+ * Local overlay setup and initialization
742
+ * Auto-detects project type and creates .smartergpt.local/ directory
743
+ */
744
+ interface LocalOverlayConfig {
745
+ role: string;
746
+ projectType: string;
747
+ name?: string;
748
+ version?: string;
749
+ }
750
+ interface LocalOverlayResult {
751
+ created: boolean;
752
+ path: string;
753
+ config: LocalOverlayConfig;
754
+ copiedFiles: string[];
755
+ }
756
+ /**
757
+ * Initialize local overlay directory with auto-detected project configuration
758
+ *
759
+ * @param baseDir - Base directory for workspace (default: current working directory)
760
+ * @param force - Force recreation even if local overlay exists
761
+ * @returns Result of initialization
762
+ */
763
+ declare function initLocalOverlay(baseDir?: string, force?: boolean): LocalOverlayResult;
764
+
765
+ /**
766
+ * Profile resolver with manifest support
767
+ * Implements precedence chain: --profile-dir → LEX_PR_PROFILE_DIR → .smartergpt.local/ → .smartergpt/
768
+ */
769
+ /**
770
+ * Profile manifest schema
771
+ */
772
+ interface ProfileManifest {
773
+ role: string;
774
+ name?: string;
775
+ version?: string;
776
+ }
777
+ /**
778
+ * Resolved profile information
779
+ */
780
+ interface ResolvedProfile {
781
+ path: string;
782
+ source: string;
783
+ manifest: ProfileManifest;
784
+ }
785
+ /**
786
+ * Resolve profile directory with precedence chain
787
+ *
788
+ * Precedence order:
789
+ * 1. --profile-dir flag (passed as parameter)
790
+ * 2. LEX_PR_PROFILE_DIR environment variable
791
+ * 3. .smartergpt.local/ (local override, not tracked)
792
+ * 4. .smartergpt/ (tracked example profile)
793
+ *
794
+ * @param profileDirFlag - Profile directory from CLI flag (optional)
795
+ * @param baseDir - Base directory to resolve relative paths (default: current working directory)
796
+ * @returns Resolved profile with absolute path and manifest
797
+ */
798
+ declare function resolveProfile(profileDirFlag?: string, baseDir?: string): ResolvedProfile;
799
+
800
+ /**
801
+ * Health check endpoint for MCP server and general system health
802
+ */
803
+ interface HealthStatus {
804
+ status: "healthy" | "degraded" | "unhealthy";
805
+ timestamp: string;
806
+ uptime: number;
807
+ version: string;
808
+ checks: {
809
+ memory: HealthCheck;
810
+ activeOperations: HealthCheck;
811
+ errorRate: HealthCheck;
812
+ };
813
+ metrics?: {
814
+ memory: NodeJS.MemoryUsage;
815
+ activeProfiles: number;
816
+ errorSummary: {
817
+ totalErrors: number;
818
+ uniqueErrors: number;
819
+ };
820
+ };
821
+ }
822
+ interface HealthCheck {
823
+ status: "pass" | "warn" | "fail";
824
+ message?: string;
825
+ value?: any;
826
+ }
827
+ /**
828
+ * Health checker for system monitoring
829
+ */
830
+ declare class HealthChecker {
831
+ private startTime;
832
+ constructor();
833
+ /**
834
+ * Get current health status
835
+ */
836
+ getHealth(includeMetrics?: boolean): HealthStatus;
837
+ /**
838
+ * Check memory usage
839
+ */
840
+ private checkMemory;
841
+ /**
842
+ * Check active operations
843
+ */
844
+ private checkActiveOperations;
845
+ /**
846
+ * Check error rate
847
+ */
848
+ private checkErrorRate;
849
+ }
850
+ /**
851
+ * Global health checker instance
852
+ */
853
+ declare const healthChecker: HealthChecker;
854
+
855
+ /**
856
+ * Run-Centric Schemas for Tool-Grounded Interactions
857
+ *
858
+ * This module defines the canonical Zod schemas for StatusResponse and NextOption,
859
+ * which structure all tool-grounded interactions in the lexrunner system.
860
+ *
861
+ * Key invariants:
862
+ * - `nextOptions` is the ONLY canonical source of allowed next actions
863
+ * - Models should never invent actions outside of `nextOptions`
864
+ * - `summary` must be a single sentence that orients quickly
865
+ */
866
+
867
+ /**
868
+ * PersonaSnapshot Schema
869
+ *
870
+ * Captures the current persona mode and its constraints at a point in time.
871
+ *
872
+ * @example
873
+ * ```typescript
874
+ * const snapshot: PersonaSnapshot = {
875
+ * mode: "senior-dev",
876
+ * forbidden: ["force-push", "delete-branch"],
877
+ * completionGates: ["lint", "test", "build"],
878
+ * decisionStyle: {
879
+ * preferSmallDiffs: true,
880
+ * requireRationaleForSkips: true,
881
+ * escalateSecurityFindings: true
882
+ * }
883
+ * };
884
+ * ```
885
+ */
886
+ declare const PersonaSnapshotSchema: z.ZodObject<{
887
+ mode: z.ZodString;
888
+ forbidden: z.ZodArray<z.ZodString>;
889
+ completionGates: z.ZodArray<z.ZodString>;
890
+ decisionStyle: z.ZodOptional<z.ZodObject<{
891
+ preferSmallDiffs: z.ZodOptional<z.ZodBoolean>;
892
+ requireRationaleForSkips: z.ZodOptional<z.ZodBoolean>;
893
+ escalateSecurityFindings: z.ZodOptional<z.ZodBoolean>;
894
+ }, z.core.$strip>>;
895
+ outputFormat: z.ZodOptional<z.ZodObject<{
896
+ severityLevels: z.ZodOptional<z.ZodArray<z.ZodString>>;
897
+ requireSeverityOnFindings: z.ZodOptional<z.ZodBoolean>;
898
+ }, z.core.$strip>>;
899
+ }, z.core.$strip>;
900
+ /**
901
+ * StatusResponse Schema
902
+ *
903
+ * The canonical response format for run status queries.
904
+ * Contains full context for orientation and available actions.
905
+ *
906
+ * @example
907
+ * ```typescript
908
+ * const status: StatusResponse = {
909
+ * runId: "01HXYZ123ABC",
910
+ * state: "gated",
911
+ * mode: "senior-dev",
912
+ * procedure: "merge-weave-main",
913
+ * summary: "Waiting for lint gate to pass on PR #42.",
914
+ * progress: {
915
+ * completed: ["fetch-prs", "analyze-deps"],
916
+ * current: "run-gates",
917
+ * remaining: ["merge-prs", "cleanup"]
918
+ * },
919
+ * nextOptions: [
920
+ * {
921
+ * action: "retry_gate",
922
+ * description: "Retry the failing lint gate.",
923
+ * riskLevel: "low"
924
+ * },
925
+ * {
926
+ * action: "skip_gate",
927
+ * description: "Skip the lint gate and continue.",
928
+ * requiresLLMDecision: true,
929
+ * prompt: "Provide rationale for skipping the lint gate.",
930
+ * riskLevel: "medium"
931
+ * }
932
+ * ],
933
+ * blockers: ["lint gate failing"],
934
+ * riskFlags: ["unstable-ci"]
935
+ * };
936
+ * ```
937
+ */
938
+ declare const StatusResponseSchema: z.ZodObject<{
939
+ runId: z.ZodString;
940
+ state: z.ZodString;
941
+ mode: z.ZodString;
942
+ procedure: z.ZodString;
943
+ summary: z.ZodString;
944
+ progress: z.ZodOptional<z.ZodObject<{
945
+ completed: z.ZodArray<z.ZodString>;
946
+ current: z.ZodNullable<z.ZodString>;
947
+ remaining: z.ZodArray<z.ZodString>;
948
+ }, z.core.$strip>>;
949
+ nextOptions: z.ZodArray<z.ZodObject<{
950
+ action: z.ZodString;
951
+ description: z.ZodString;
952
+ requiresLLMDecision: z.ZodOptional<z.ZodBoolean>;
953
+ prompt: z.ZodOptional<z.ZodString>;
954
+ responseSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
955
+ objective: z.ZodOptional<z.ZodString>;
956
+ constraints: z.ZodOptional<z.ZodArray<z.ZodString>>;
957
+ style: z.ZodOptional<z.ZodEnum<{
958
+ brief: "brief";
959
+ detailed: "detailed";
960
+ }>>;
961
+ riskLevel: z.ZodOptional<z.ZodEnum<{
962
+ high: "high";
963
+ medium: "medium";
964
+ low: "low";
965
+ }>>;
966
+ }, z.core.$strip>>;
967
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
968
+ riskFlags: z.ZodOptional<z.ZodArray<z.ZodString>>;
969
+ blockers: z.ZodOptional<z.ZodArray<z.ZodString>>;
970
+ persona: z.ZodOptional<z.ZodObject<{
971
+ mode: z.ZodString;
972
+ forbidden: z.ZodArray<z.ZodString>;
973
+ completionGates: z.ZodArray<z.ZodString>;
974
+ decisionStyle: z.ZodOptional<z.ZodObject<{
975
+ preferSmallDiffs: z.ZodOptional<z.ZodBoolean>;
976
+ requireRationaleForSkips: z.ZodOptional<z.ZodBoolean>;
977
+ escalateSecurityFindings: z.ZodOptional<z.ZodBoolean>;
978
+ }, z.core.$strip>>;
979
+ outputFormat: z.ZodOptional<z.ZodObject<{
980
+ severityLevels: z.ZodOptional<z.ZodArray<z.ZodString>>;
981
+ requireSeverityOnFindings: z.ZodOptional<z.ZodBoolean>;
982
+ }, z.core.$strip>>;
983
+ }, z.core.$strip>>;
984
+ }, z.core.$strip>;
985
+ type StatusResponse = z.infer<typeof StatusResponseSchema>;
986
+
987
+ /**
988
+ * Run Lifecycle Types
989
+ *
990
+ * Core types for the run lifecycle manager, including RunState, RunFilter,
991
+ * and related interfaces for tracking tool-grounded execution runs.
992
+ */
993
+
994
+ /**
995
+ * Run State Schema
996
+ *
997
+ * Represents the complete state of a run at any point in time.
998
+ * Persisted to .lexrunner/runs/{runId}.json
999
+ */
1000
+ declare const RunStateSchema$1: z.ZodObject<{
1001
+ runId: z.ZodString;
1002
+ mode: z.ZodString;
1003
+ procedure: z.ZodString;
1004
+ repo: z.ZodString;
1005
+ task: z.ZodOptional<z.ZodString>;
1006
+ state: z.ZodString;
1007
+ createdAt: z.ZodString;
1008
+ updatedAt: z.ZodString;
1009
+ completedAt: z.ZodOptional<z.ZodString>;
1010
+ completedSteps: z.ZodArray<z.ZodString>;
1011
+ currentStep: z.ZodNullable<z.ZodString>;
1012
+ params: z.ZodRecord<z.ZodString, z.ZodUnknown>;
1013
+ metadata: z.ZodRecord<z.ZodString, z.ZodUnknown>;
1014
+ persona: z.ZodOptional<z.ZodObject<{
1015
+ mode: z.ZodString;
1016
+ forbidden: z.ZodArray<z.ZodString>;
1017
+ completionGates: z.ZodArray<z.ZodString>;
1018
+ decisionStyle: z.ZodOptional<z.ZodObject<{
1019
+ preferSmallDiffs: z.ZodOptional<z.ZodBoolean>;
1020
+ requireRationaleForSkips: z.ZodOptional<z.ZodBoolean>;
1021
+ escalateSecurityFindings: z.ZodOptional<z.ZodBoolean>;
1022
+ }, z.core.$strip>>;
1023
+ outputFormat: z.ZodOptional<z.ZodObject<{
1024
+ severityLevels: z.ZodOptional<z.ZodArray<z.ZodString>>;
1025
+ requireSeverityOnFindings: z.ZodOptional<z.ZodBoolean>;
1026
+ }, z.core.$strip>>;
1027
+ }, z.core.$strip>>;
1028
+ }, z.core.$strip>;
1029
+ type RunState$1 = z.infer<typeof RunStateSchema$1>;
1030
+ /**
1031
+ * Parameters for creating a new run
1032
+ */
1033
+ interface CreateRunParams {
1034
+ /** Persona mode, e.g. "senior-dev", "eager-pm" */
1035
+ mode: string;
1036
+ /** Procedure being executed, e.g. "merge-weave-main", "pr-review" */
1037
+ procedure: string;
1038
+ /** Repository identifier (owner/repo or path) */
1039
+ repo: string;
1040
+ /** Optional task description */
1041
+ task?: string;
1042
+ /** Initial state in procedure state machine */
1043
+ initialState?: string;
1044
+ /** Runtime parameters for the run */
1045
+ params?: Record<string, unknown>;
1046
+ /** Additional metadata for the run */
1047
+ metadata?: Record<string, unknown>;
1048
+ /** Persona snapshot to freeze for the run */
1049
+ persona?: z.infer<typeof PersonaSnapshotSchema>;
1050
+ }
1051
+ /**
1052
+ * Filter options for listing runs
1053
+ */
1054
+ interface RunFilter {
1055
+ /** Filter by state */
1056
+ state?: string;
1057
+ /** Filter by procedure */
1058
+ procedure?: string;
1059
+ /** Filter by mode */
1060
+ mode?: string;
1061
+ /** Filter by creation date (ISO 8601 timestamp) - runs created after this date */
1062
+ since?: string;
1063
+ /** Filter by creation date (ISO 8601 timestamp) - runs created before this date */
1064
+ until?: string;
1065
+ /** Maximum number of runs to return */
1066
+ limit?: number;
1067
+ }
1068
+ /**
1069
+ * Input parameters for starting a run (MCP tool)
1070
+ */
1071
+ declare const StartRunInputSchema: z.ZodObject<{
1072
+ mode: z.ZodString;
1073
+ procedure: z.ZodString;
1074
+ repo: z.ZodString;
1075
+ task: z.ZodOptional<z.ZodString>;
1076
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1077
+ }, z.core.$strip>;
1078
+ type StartRunInput = z.infer<typeof StartRunInputSchema>;
1079
+ /**
1080
+ * Input for getStatus (MCP tool)
1081
+ */
1082
+ declare const GetStatusInputSchema: z.ZodObject<{
1083
+ runId: z.ZodString;
1084
+ }, z.core.$strip>;
1085
+ type GetStatusInput = z.infer<typeof GetStatusInputSchema>;
1086
+ /**
1087
+ * RunStateFile - Lenient type for testing and backwards compatibility
1088
+ *
1089
+ * This is a partial RunState that allows optional fields like completedSteps.
1090
+ * Used primarily for test fixtures and backwards compatibility with LR-060 tests.
1091
+ */
1092
+ interface RunStateFile {
1093
+ runId: string;
1094
+ mode: string;
1095
+ procedure: string;
1096
+ repo: string;
1097
+ state: string;
1098
+ createdAt: string;
1099
+ updatedAt: string;
1100
+ task?: string;
1101
+ completedAt?: string;
1102
+ completedSteps?: string[];
1103
+ currentStep?: string | null;
1104
+ params?: Record<string, unknown>;
1105
+ metadata?: Record<string, unknown>;
1106
+ /** Optional blockers for status display */
1107
+ blockers?: string[];
1108
+ /** Optional progress info for status display */
1109
+ progress?: {
1110
+ current: number;
1111
+ total: number;
1112
+ phase?: string;
1113
+ };
1114
+ /** Optional context for status display */
1115
+ context?: Record<string, unknown>;
1116
+ }
1117
+
1118
+ /**
1119
+ * Status builder for constructing StatusResponse from run state
1120
+ *
1121
+ * Derives nextOptions from current state and builds rich context for model orientation.
1122
+ */
1123
+
1124
+ /**
1125
+ * Input type for statusBuilder - accepts both RunState and lenient RunStateFile
1126
+ */
1127
+ type StatusBuilderInput = RunState$1 | RunStateFile;
1128
+ /**
1129
+ * Build a StatusResponse from run state
1130
+ */
1131
+ declare function buildStatusResponse(runState: StatusBuilderInput, options?: {
1132
+ baseDir?: string;
1133
+ }): StatusResponse;
1134
+
1135
+ /**
1136
+ * Artifact Discovery and Metadata
1137
+ *
1138
+ * Provides functionality to list and inspect artifacts and receipts for a run.
1139
+ * Artifacts include plan files, decision logs, failure logs, gate reports, and reports.
1140
+ */
1141
+
1142
+ /**
1143
+ * Input schema for listArtifacts
1144
+ */
1145
+ declare const ListArtifactsInputSchema: z.ZodObject<{
1146
+ runId: z.ZodString;
1147
+ type: z.ZodOptional<z.ZodEnum<{
1148
+ gate: "gate";
1149
+ failure: "failure";
1150
+ log: "log";
1151
+ decision: "decision";
1152
+ report: "report";
1153
+ plan: "plan";
1154
+ }>>;
1155
+ path: z.ZodOptional<z.ZodString>;
1156
+ latestOnly: z.ZodOptional<z.ZodBoolean>;
1157
+ inline: z.ZodOptional<z.ZodBoolean>;
1158
+ }, z.core.$strip>;
1159
+ type ListArtifactsInput = z.infer<typeof ListArtifactsInputSchema>;
1160
+ /**
1161
+ * Output schema for listArtifacts
1162
+ */
1163
+ declare const ListArtifactsOutputSchema: z.ZodObject<{
1164
+ artifacts: z.ZodArray<z.ZodObject<{
1165
+ path: z.ZodString;
1166
+ type: z.ZodEnum<{
1167
+ gate: "gate";
1168
+ failure: "failure";
1169
+ log: "log";
1170
+ decision: "decision";
1171
+ report: "report";
1172
+ plan: "plan";
1173
+ }>;
1174
+ size: z.ZodNumber;
1175
+ createdAt: z.ZodString;
1176
+ modifiedAt: z.ZodString;
1177
+ content: z.ZodOptional<z.ZodString>;
1178
+ }, z.core.$strip>>;
1179
+ totalCount: z.ZodNumber;
1180
+ }, z.core.$strip>;
1181
+ type ListArtifactsOutput = z.infer<typeof ListArtifactsOutputSchema>;
1182
+
1183
+ /**
1184
+ * RunStore — Persistence Contract for Run Lifecycle
1185
+ *
1186
+ * This module defines the canonical interfaces and Zod schemas for run lifecycle persistence.
1187
+ * It is the interface layer for the Store Layer 1.0.0 persistence abstraction.
1188
+ *
1189
+ * Key Design Decisions:
1190
+ * - ID Naming: `runId`, `stepId`, `receiptId` (not generic `id`)
1191
+ * - ID Ownership: Caller (orchestration) generates IDs, store is dumb persistence
1192
+ * - Timestamps: UTC ISO 8601 strings (YYYY-MM-DDTHH:mm:ss.sssZ) for serialization
1193
+ * - NDJSON Coexistence: RunStore does NOT replace audit logs; they remain human-friendly traces
1194
+ *
1195
+ * @module store/run-store
1196
+ */
1197
+
1198
+ /**
1199
+ * Run state machine states.
1200
+ *
1201
+ * @example
1202
+ * ```typescript
1203
+ * const state: RunState = "running";
1204
+ * ```
1205
+ */
1206
+ declare const RunStateSchema: z.ZodEnum<{
1207
+ completed: "completed";
1208
+ failed: "failed";
1209
+ pending: "pending";
1210
+ aborted: "aborted";
1211
+ running: "running";
1212
+ }>;
1213
+ type RunState = z.infer<typeof RunStateSchema>;
1214
+ /**
1215
+ * A single run record.
1216
+ *
1217
+ * ID Ownership: `runId` MUST be pre-generated by the caller (orchestration layer).
1218
+ * The same runId appears in artifacts, NDJSON logs, and MCP status responses.
1219
+ * The store is responsible for persistence, not identity generation.
1220
+ *
1221
+ * Timestamps: All timestamps MUST be UTC ISO 8601 strings (YYYY-MM-DDTHH:mm:ss.sssZ).
1222
+ *
1223
+ * @example
1224
+ * ```typescript
1225
+ * const run: RunRecord = {
1226
+ * runId: "01HXYZ123ABC",
1227
+ * planHash: "sha256:abc123...",
1228
+ * state: "running",
1229
+ * startedAt: "2024-01-15T10:30:00.000Z",
1230
+ * metadata: { prNumber: 42 }
1231
+ * };
1232
+ * ```
1233
+ */
1234
+ declare const RunRecordSchema: z.ZodObject<{
1235
+ runId: z.ZodString;
1236
+ planHash: z.ZodString;
1237
+ state: z.ZodEnum<{
1238
+ completed: "completed";
1239
+ failed: "failed";
1240
+ pending: "pending";
1241
+ aborted: "aborted";
1242
+ running: "running";
1243
+ }>;
1244
+ startedAt: z.ZodString;
1245
+ completedAt: z.ZodOptional<z.ZodString>;
1246
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1247
+ }, z.core.$strip>;
1248
+ type RunRecord = z.infer<typeof RunRecordSchema>;
1249
+ /**
1250
+ * A single step within a run.
1251
+ *
1252
+ * Timestamps: MUST be UTC ISO 8601 strings.
1253
+ *
1254
+ * @example
1255
+ * ```typescript
1256
+ * const step: StepOutcome = {
1257
+ * stepId: "step-001",
1258
+ * runId: "01HXYZ123ABC",
1259
+ * nodeId: "pr-42",
1260
+ * gateName: "lint",
1261
+ * status: "pass",
1262
+ * durationMs: 1234,
1263
+ * timestamp: "2024-01-15T10:30:05.000Z"
1264
+ * };
1265
+ * ```
1266
+ */
1267
+ declare const StepOutcomeSchema: z.ZodObject<{
1268
+ stepId: z.ZodString;
1269
+ runId: z.ZodString;
1270
+ nodeId: z.ZodString;
1271
+ gateName: z.ZodString;
1272
+ status: z.ZodEnum<{
1273
+ pass: "pass";
1274
+ fail: "fail";
1275
+ blocked: "blocked";
1276
+ skipped: "skipped";
1277
+ }>;
1278
+ durationMs: z.ZodNumber;
1279
+ logs: z.ZodOptional<z.ZodString>;
1280
+ artifacts: z.ZodOptional<z.ZodArray<z.ZodString>>;
1281
+ timestamp: z.ZodString;
1282
+ }, z.core.$strip>;
1283
+ type StepOutcome = z.infer<typeof StepOutcomeSchema>;
1284
+ /**
1285
+ * A receipt recording scope/risk changes requiring human approval.
1286
+ *
1287
+ * Timestamps: MUST be UTC ISO 8601 strings.
1288
+ *
1289
+ * @example
1290
+ * ```typescript
1291
+ * const receipt: Receipt = {
1292
+ * receiptId: "receipt-001",
1293
+ * runId: "01HXYZ123ABC",
1294
+ * reason: "Scope expanded beyond initial plan",
1295
+ * approver: "alice@example.com",
1296
+ * timestamp: "2024-01-15T10:31:00.000Z"
1297
+ * };
1298
+ * ```
1299
+ */
1300
+ declare const ReceiptSchema: z.ZodObject<{
1301
+ receiptId: z.ZodString;
1302
+ runId: z.ZodString;
1303
+ reason: z.ZodString;
1304
+ approver: z.ZodOptional<z.ZodString>;
1305
+ timestamp: z.ZodString;
1306
+ }, z.core.$strip>;
1307
+ type Receipt = z.infer<typeof ReceiptSchema>;
1308
+ /**
1309
+ * Options for listing runs.
1310
+ */
1311
+ interface ListRunsOptions {
1312
+ /** Maximum number of runs to return. */
1313
+ limit?: number;
1314
+ /** Number of runs to skip (for pagination). */
1315
+ offset?: number;
1316
+ /** Filter by run state. */
1317
+ state?: RunState;
1318
+ }
1319
+ /**
1320
+ * RunStore — persistence contract for run lifecycle.
1321
+ *
1322
+ * Default: InMemoryRunStore (CLI).
1323
+ * Future: SqliteRunStore, PostgresRunStore.
1324
+ *
1325
+ * Note: RunStore provides structured access to runs/steps/receipts.
1326
+ * It does NOT replace NDJSON audit logs — those remain the human-friendly trace.
1327
+ *
1328
+ * @example
1329
+ * ```typescript
1330
+ * // Create a run
1331
+ * await store.createRun({
1332
+ * runId: "run-001",
1333
+ * planHash: "sha256:abc123",
1334
+ * state: "pending",
1335
+ * startedAt: new Date().toISOString()
1336
+ * });
1337
+ *
1338
+ * // Update run state
1339
+ * await store.updateRun("run-001", { state: "running" });
1340
+ *
1341
+ * // Append step outcomes
1342
+ * await store.appendStep({
1343
+ * stepId: "step-001",
1344
+ * runId: "run-001",
1345
+ * nodeId: "pr-42",
1346
+ * gateName: "lint",
1347
+ * status: "pass",
1348
+ * durationMs: 1234,
1349
+ * timestamp: new Date().toISOString()
1350
+ * });
1351
+ *
1352
+ * // Get run details
1353
+ * const run = await store.getRun("run-001");
1354
+ *
1355
+ * // Clean up
1356
+ * await store.close();
1357
+ * ```
1358
+ */
1359
+ interface RunStore {
1360
+ /**
1361
+ * Create a new run record.
1362
+ *
1363
+ * @param run - The run record to create (runId must be pre-generated by caller)
1364
+ * @throws If run with same runId already exists
1365
+ */
1366
+ createRun(run: RunRecord): Promise<void>;
1367
+ /**
1368
+ * Update an existing run record.
1369
+ *
1370
+ * @param runId - The run identifier to update
1371
+ * @param updates - Partial updates to apply (runId cannot be changed)
1372
+ * @throws If run with given runId does not exist
1373
+ */
1374
+ updateRun(runId: string, updates: Partial<Omit<RunRecord, "runId">>): Promise<void>;
1375
+ /**
1376
+ * Get a run record by ID.
1377
+ *
1378
+ * @param runId - The run identifier
1379
+ * @returns The run record, or null if not found
1380
+ */
1381
+ getRun(runId: string): Promise<RunRecord | null>;
1382
+ /**
1383
+ * List run records with optional filtering and pagination.
1384
+ *
1385
+ * @param options - Optional filtering and pagination options
1386
+ * @returns Array of run records matching the criteria
1387
+ */
1388
+ listRuns(options?: ListRunsOptions): Promise<RunRecord[]>;
1389
+ /**
1390
+ * Append a step outcome to a run.
1391
+ *
1392
+ * @param step - The step outcome to append
1393
+ */
1394
+ appendStep(step: StepOutcome): Promise<void>;
1395
+ /**
1396
+ * Get all step outcomes for a run.
1397
+ *
1398
+ * @param runId - The run identifier
1399
+ * @returns Array of step outcomes for the run
1400
+ */
1401
+ getStepsForRun(runId: string): Promise<StepOutcome[]>;
1402
+ /**
1403
+ * Save a receipt for scope/risk escalation.
1404
+ *
1405
+ * @param receipt - The receipt to save
1406
+ */
1407
+ saveReceipt(receipt: Receipt): Promise<void>;
1408
+ /**
1409
+ * Get all receipts for a run.
1410
+ *
1411
+ * @param runId - The run identifier
1412
+ * @returns Array of receipts for the run
1413
+ */
1414
+ getReceiptsForRun(runId: string): Promise<Receipt[]>;
1415
+ /**
1416
+ * Get the count of runs, optionally filtered by state.
1417
+ *
1418
+ * @param state - Optional state filter
1419
+ * @returns Number of runs matching the criteria
1420
+ */
1421
+ getRunCount(state?: RunState): Promise<number>;
1422
+ /**
1423
+ * Close the store and release any resources.
1424
+ * Should be called when the store is no longer needed.
1425
+ */
1426
+ close(): Promise<void>;
1427
+ }
1428
+
1429
+ /**
1430
+ * Execution Frame Types
1431
+ *
1432
+ * Types for capturing workflow execution as Frames for memory integration.
1433
+ * Implements AX-005: Frame emission for core workflows.
1434
+ *
1435
+ * AX Principle: Memory Is a Feature
1436
+ */
1437
+
1438
+ /**
1439
+ * Frame outcome status
1440
+ */
1441
+ type FrameOutcome = "success" | "failure" | "partial";
1442
+ /**
1443
+ * Execution Frame schema
1444
+ *
1445
+ * Represents what was attempted, scope touched, outcome, and recommended next steps.
1446
+ */
1447
+ declare const ExecutionFrameSchema: z.ZodObject<{
1448
+ type: z.ZodEnum<{
1449
+ gate: "gate";
1450
+ procedure: "procedure";
1451
+ execution: "execution";
1452
+ "merge-weave": "merge-weave";
1453
+ }>;
1454
+ reference_point: z.ZodString;
1455
+ summary_caption: z.ZodString;
1456
+ module_scope: z.ZodArray<z.ZodString>;
1457
+ keywords: z.ZodArray<z.ZodString>;
1458
+ outcome: z.ZodEnum<{
1459
+ success: "success";
1460
+ failure: "failure";
1461
+ partial: "partial";
1462
+ }>;
1463
+ next_actions: z.ZodArray<z.ZodString>;
1464
+ metadata: z.ZodOptional<z.ZodObject<{
1465
+ duration_ms: z.ZodOptional<z.ZodNumber>;
1466
+ conflicts_resolved: z.ZodOptional<z.ZodNumber>;
1467
+ gates_passed: z.ZodOptional<z.ZodArray<z.ZodString>>;
1468
+ gates_failed: z.ZodOptional<z.ZodArray<z.ZodString>>;
1469
+ artifacts: z.ZodOptional<z.ZodArray<z.ZodString>>;
1470
+ error: z.ZodOptional<z.ZodString>;
1471
+ exit_code: z.ZodOptional<z.ZodNumber>;
1472
+ run_id: z.ZodOptional<z.ZodString>;
1473
+ plan_hash: z.ZodOptional<z.ZodString>;
1474
+ turn_cost: z.ZodOptional<z.ZodObject<{
1475
+ components: z.ZodObject<{
1476
+ latencyMs: z.ZodNumber;
1477
+ contextResetTokens: z.ZodNumber;
1478
+ renegotiationCount: z.ZodNumber;
1479
+ tokenBloat: z.ZodNumber;
1480
+ attentionSwitchCount: z.ZodNumber;
1481
+ }, z.core.$strip>;
1482
+ weightedScore: z.ZodNumber;
1483
+ eventCount: z.ZodNumber;
1484
+ priorRunScore: z.ZodOptional<z.ZodNumber>;
1485
+ improvement: z.ZodOptional<z.ZodString>;
1486
+ }, z.core.$strip>>;
1487
+ tier_metrics: z.ZodOptional<z.ZodObject<{
1488
+ totalTasks: z.ZodNumber;
1489
+ byTier: z.ZodObject<{
1490
+ senior: z.ZodNumber;
1491
+ mid: z.ZodNumber;
1492
+ junior: z.ZodNumber;
1493
+ }, z.core.$strip>;
1494
+ escalations: z.ZodNumber;
1495
+ mismatches: z.ZodNumber;
1496
+ tierMatchRate: z.ZodNumber;
1497
+ escalationRate: z.ZodNumber;
1498
+ }, z.core.$strip>>;
1499
+ governed_by: z.ZodOptional<z.ZodArray<z.ZodObject<{
1500
+ constraintId: z.ZodString;
1501
+ source: z.ZodEnum<{
1502
+ persona: "persona";
1503
+ baseline: "baseline";
1504
+ learned: "learned";
1505
+ }>;
1506
+ action: z.ZodString;
1507
+ }, z.core.$strip>>>;
1508
+ }, z.core.$strip>>;
1509
+ }, z.core.$strip>;
1510
+ type ExecutionFrame = z.infer<typeof ExecutionFrameSchema>;
1511
+ /**
1512
+ * Result of Frame emission
1513
+ */
1514
+ interface FrameEmitResult {
1515
+ /** Whether the Frame was emitted successfully */
1516
+ success: boolean;
1517
+ /** The emitted Frame (if successful) */
1518
+ frame?: ExecutionFrame;
1519
+ /** Frame ID (if stored via Lex) */
1520
+ frameId?: string;
1521
+ /** Error message (if failed) */
1522
+ error?: string;
1523
+ }
1524
+
1525
+ /**
1526
+ * Run Lifecycle Manager
1527
+ *
1528
+ * Core infrastructure for creating, tracking, and persisting run state
1529
+ * across the tool-grounded lifecycle.
1530
+ *
1531
+ * Supports dual-write mode: persists to both NDJSON files (backward compatible)
1532
+ * and optional RunStore for structured queries.
1533
+ */
1534
+
1535
+ /**
1536
+ * Options for creating a RunManager
1537
+ */
1538
+ interface RunManagerOptions {
1539
+ /**
1540
+ * Base directory for run storage (defaults to cwd)
1541
+ */
1542
+ baseDir?: string;
1543
+ /**
1544
+ * Optional RunStore for structured persistence.
1545
+ * If provided, step outcomes and receipts will be persisted to this store.
1546
+ * NDJSON coexistence is maintained regardless.
1547
+ */
1548
+ runStore?: RunStore;
1549
+ }
1550
+ /**
1551
+ * RunManager - Core run lifecycle management
1552
+ *
1553
+ * Handles creation, retrieval, updates, and cleanup of run state.
1554
+ * Supports dual-write mode: NDJSON files for backward compatibility,
1555
+ * plus optional RunStore for structured queries.
1556
+ */
1557
+ declare class RunManager {
1558
+ private baseDir;
1559
+ private runStore;
1560
+ /**
1561
+ * Create a new RunManager
1562
+ *
1563
+ * @param baseDirOrOptions - Base directory string (deprecated) or options object
1564
+ */
1565
+ constructor(baseDirOrOptions?: string | RunManagerOptions);
1566
+ /**
1567
+ * Get the runs directory path
1568
+ *
1569
+ * @returns Path to the runs directory
1570
+ */
1571
+ getRunsDir(): string;
1572
+ /**
1573
+ * Create a new run
1574
+ *
1575
+ * Generates a unique runId (ULID), initializes state, and persists to disk.
1576
+ *
1577
+ * @param params - Run creation parameters
1578
+ * @returns The created RunState
1579
+ */
1580
+ createRun(params: CreateRunParams): Promise<RunState$1>;
1581
+ /**
1582
+ * Get a run by ID
1583
+ *
1584
+ * @param runId - The run identifier
1585
+ * @returns RunState if found, null if not found
1586
+ */
1587
+ getRun(runId: string): Promise<RunState$1 | null>;
1588
+ /**
1589
+ * List runs with optional filtering
1590
+ *
1591
+ * Note: Filters are applied to the index first, so only matching entries
1592
+ * are loaded. Use the `limit` filter to control the number of runs loaded.
1593
+ *
1594
+ * @param filter - Optional filter criteria
1595
+ * @returns Array of RunState objects matching the filter
1596
+ */
1597
+ listRunStates(filter?: RunFilter): Promise<RunState$1[]>;
1598
+ /**
1599
+ * List run IDs (synchronous)
1600
+ *
1601
+ * Returns sorted list of run IDs from the index.
1602
+ *
1603
+ * @returns Sorted array of run IDs
1604
+ */
1605
+ listRuns(): string[];
1606
+ /**
1607
+ * Update a run
1608
+ *
1609
+ * Applies updates atomically and persists changes.
1610
+ *
1611
+ * @param runId - The run identifier
1612
+ * @param updates - Partial updates to apply
1613
+ * @returns Updated RunState
1614
+ * @throws Error if run not found
1615
+ */
1616
+ updateRun(runId: string, updates: Partial<RunState$1>): Promise<RunState$1>;
1617
+ /**
1618
+ * Transition run state
1619
+ *
1620
+ * Applies a state transition event and persists the change.
1621
+ * Currently does not validate against a state machine - this is
1622
+ * intentionally flexible for different procedures.
1623
+ *
1624
+ * @param runId - The run identifier
1625
+ * @param newState - The new state to transition to
1626
+ * @returns Updated RunState
1627
+ * @throws AXErrorException if run not found
1628
+ */
1629
+ transitionState(runId: string, newState: string): Promise<RunState$1>;
1630
+ /**
1631
+ * Mark a step as complete
1632
+ *
1633
+ * @param runId - The run identifier
1634
+ * @param stepId - The step to mark as complete
1635
+ * @param nextStep - The next step to set as current (optional)
1636
+ * @returns Updated RunState
1637
+ */
1638
+ completeStep(runId: string, stepId: string, nextStep?: string | null): Promise<RunState$1>;
1639
+ /**
1640
+ * Log a decision to the run's decision log
1641
+ *
1642
+ * @param runId - The run identifier
1643
+ * @param decision - The decision to log
1644
+ */
1645
+ logDecision(runId: string, decision: Record<string, unknown>): Promise<void>;
1646
+ /**
1647
+ * Log a failure to the run's failure log
1648
+ *
1649
+ * @param runId - The run identifier
1650
+ * @param failure - The failure to log
1651
+ */
1652
+ logFailure(runId: string, failure: Record<string, unknown>): Promise<void>;
1653
+ /**
1654
+ * Get the RunStore instance (if configured)
1655
+ *
1656
+ * @returns The RunStore instance, or undefined if not configured
1657
+ */
1658
+ getRunStore(): RunStore | undefined;
1659
+ /**
1660
+ * Record a step outcome to the RunStore.
1661
+ *
1662
+ * Step outcomes are persisted to both:
1663
+ * 1. NDJSON log (backward compatible)
1664
+ * 2. RunStore (if configured)
1665
+ *
1666
+ * @param outcome - The step outcome to record
1667
+ *
1668
+ * @example
1669
+ * ```typescript
1670
+ * await manager.recordStepOutcome({
1671
+ * stepId: "step-001",
1672
+ * runId: "run-001",
1673
+ * nodeId: "pr-42",
1674
+ * gateName: "lint",
1675
+ * status: "pass",
1676
+ * durationMs: 1234,
1677
+ * timestamp: new Date().toISOString()
1678
+ * });
1679
+ * ```
1680
+ */
1681
+ recordStepOutcome(outcome: StepOutcome): Promise<void>;
1682
+ /**
1683
+ * Record a receipt (scope/risk escalation) to the RunStore.
1684
+ *
1685
+ * Receipts are persisted to both:
1686
+ * 1. NDJSON log (backward compatible)
1687
+ * 2. RunStore (if configured)
1688
+ *
1689
+ * @param receipt - The receipt to record
1690
+ *
1691
+ * @example
1692
+ * ```typescript
1693
+ * await manager.recordReceipt({
1694
+ * receiptId: "receipt-001",
1695
+ * runId: "run-001",
1696
+ * reason: "Scope expanded beyond initial plan",
1697
+ * approver: "alice@example.com",
1698
+ * timestamp: new Date().toISOString()
1699
+ * });
1700
+ * ```
1701
+ */
1702
+ recordReceipt(receipt: Receipt): Promise<void>;
1703
+ /**
1704
+ * Get step outcomes for a run.
1705
+ *
1706
+ * Queries the RunStore if configured, otherwise returns from NDJSON logs.
1707
+ *
1708
+ * @param runId - The run identifier
1709
+ * @returns Array of step outcomes for the run
1710
+ */
1711
+ getStepOutcomes(runId: string): Promise<StepOutcome[]>;
1712
+ /**
1713
+ * Get receipts for a run.
1714
+ *
1715
+ * Queries the RunStore if configured, otherwise returns from NDJSON logs.
1716
+ *
1717
+ * @param runId - The run identifier
1718
+ * @returns Array of receipts for the run
1719
+ */
1720
+ getReceipts(runId: string): Promise<Receipt[]>;
1721
+ /**
1722
+ * Get decisions for a run
1723
+ *
1724
+ * @param runId - The run identifier
1725
+ * @returns Array of decision log entries
1726
+ */
1727
+ getDecisions(runId: string): Promise<Array<Record<string, unknown>>>;
1728
+ /**
1729
+ * Get failures for a run
1730
+ *
1731
+ * @param runId - The run identifier
1732
+ * @returns Array of failure log entries
1733
+ */
1734
+ getFailures(runId: string): Promise<Array<Record<string, unknown>>>;
1735
+ /**
1736
+ * Archive a run (mark as archived in metadata)
1737
+ *
1738
+ * @param runId - The run identifier
1739
+ */
1740
+ archiveRun(runId: string): Promise<void>;
1741
+ /**
1742
+ * Delete a run and all associated data (sync version)
1743
+ *
1744
+ * @param runId - The run identifier
1745
+ * @returns true if run was deleted, false if not found
1746
+ */
1747
+ deleteRun(runId: string): boolean;
1748
+ /**
1749
+ * Delete a run and all associated data (async version)
1750
+ *
1751
+ * @param runId - The run identifier
1752
+ */
1753
+ deleteRunAsync(runId: string): Promise<void>;
1754
+ /**
1755
+ * Start a new run (MCP tool interface)
1756
+ *
1757
+ * Convenience wrapper around createRun for MCP tool usage.
1758
+ * Maps StartRunInput to CreateRunParams and returns a structured result.
1759
+ *
1760
+ * @param input - MCP tool input for starting a run
1761
+ * @returns Result object with runId, status, message, and initialStatus
1762
+ */
1763
+ startRun(input: StartRunInput): {
1764
+ runId: string;
1765
+ status: string;
1766
+ message: string;
1767
+ initialStatus: ReturnType<typeof buildStatusResponse>;
1768
+ };
1769
+ /**
1770
+ * Check if a run exists
1771
+ *
1772
+ * @param runId - The run identifier
1773
+ * @returns true if run exists, false otherwise
1774
+ */
1775
+ runExists(runId: string): boolean;
1776
+ /**
1777
+ * Load run state (synchronous)
1778
+ *
1779
+ * @param runId - The run identifier
1780
+ * @returns RunState
1781
+ * @throws Error if run not found
1782
+ */
1783
+ loadRunState(runId: string): RunState$1;
1784
+ /**
1785
+ * Update run state (synchronous)
1786
+ *
1787
+ * @param runId - The run identifier
1788
+ * @param updates - Partial updates to apply
1789
+ * @returns Updated RunState
1790
+ * @throws Error if run not found
1791
+ */
1792
+ updateRunState(runId: string, updates: Partial<RunState$1>): RunState$1;
1793
+ /**
1794
+ * Get status of a run (MCP tool interface)
1795
+ *
1796
+ * Convenience wrapper around getRun for MCP tool usage.
1797
+ * Returns a structured status response.
1798
+ *
1799
+ * @param input - MCP tool input for getting status
1800
+ * @returns Status response object
1801
+ * @throws RunNotFoundError if run not found
1802
+ */
1803
+ getStatus(input: GetStatusInput): ReturnType<typeof buildStatusResponse>;
1804
+ /**
1805
+ * List artifacts for a run (MCP tool interface)
1806
+ *
1807
+ * Returns metadata for all artifacts in a run directory,
1808
+ * with optional filtering by type, path pattern, and recency.
1809
+ *
1810
+ * @param input - MCP tool input for listing artifacts
1811
+ * @returns ListArtifactsOutput with artifacts array and total count
1812
+ * @throws RunNotFoundError if run not found
1813
+ */
1814
+ listArtifacts(input: ListArtifactsInput): ListArtifactsOutput;
1815
+ /**
1816
+ * Complete a run and emit a Frame (AX-005)
1817
+ *
1818
+ * Transitions the run to a terminal state and emits an execution Frame
1819
+ * capturing what was attempted, scope touched, outcome, and next steps.
1820
+ * The Frame is persisted to .lexrunner/frames/ for audit trail.
1821
+ *
1822
+ * @param runId - The run identifier
1823
+ * @param outcome - The outcome of the run (success/failure/partial)
1824
+ * @param nextActions - Recommended next actions
1825
+ * @param options - Additional options
1826
+ * @returns Updated RunState and FrameEmitResult
1827
+ */
1828
+ completeRunWithFrame(runId: string, outcome: FrameOutcome, nextActions: string[], options?: {
1829
+ artifacts?: string[];
1830
+ error?: string;
1831
+ planHash?: string;
1832
+ }): Promise<{
1833
+ runState: RunState$1;
1834
+ frameResult: FrameEmitResult;
1835
+ }>;
1836
+ /**
1837
+ * Synchronous version of createRun for MCP compatibility
1838
+ *
1839
+ * @param params - Run creation parameters
1840
+ * @returns The created RunState
1841
+ */
1842
+ private createRunSync;
1843
+ /**
1844
+ * Create an index entry from a run state
1845
+ */
1846
+ private createIndexEntry;
1847
+ /**
1848
+ * Check if a state is terminal
1849
+ */
1850
+ private isTerminalState;
1851
+ }
1852
+ /**
1853
+ * Create a new RunManager instance
1854
+ *
1855
+ * @param baseDirOrOptions - Base directory string or options object
1856
+ * @returns A new RunManager instance
1857
+ *
1858
+ * @example
1859
+ * ```typescript
1860
+ * // Legacy: string baseDir
1861
+ * const manager = createRunManager("/path/to/project");
1862
+ *
1863
+ * // New: options object with RunStore
1864
+ * const store = new InMemoryRunStore();
1865
+ * const manager = createRunManager({ baseDir: "/path/to/project", runStore: store });
1866
+ * ```
1867
+ */
1868
+ declare function createRunManager(baseDirOrOptions?: string | RunManagerOptions): RunManager;
1869
+
1870
+ /**
1871
+ * Compute merge order levels using Kahn's algorithm with deterministic ordering
1872
+ * Returns array of levels, where each level contains item names that can be processed in parallel
1873
+ */
1874
+ declare function computeMergeOrder(plan: Plan): string[][];
1875
+
1876
+ /**
1877
+ * GitHub API integration for PR discovery and metadata extraction
1878
+ * Maintains deterministic ordering and stable output
1879
+ * Includes error recovery with retry and circuit breaker patterns
1880
+ */
1881
+
1882
+ interface GitHubPullRequest {
1883
+ number: number;
1884
+ title: string;
1885
+ branch: string;
1886
+ sha: string;
1887
+ state: "open" | "closed" | "merged";
1888
+ labels: string[];
1889
+ author: string;
1890
+ baseBranch: string;
1891
+ createdAt: string;
1892
+ updatedAt: string;
1893
+ mergeable?: boolean;
1894
+ body?: string | null;
1895
+ draft?: boolean;
1896
+ reviewRequested?: boolean;
1897
+ }
1898
+ interface GitHubConfig {
1899
+ token?: string;
1900
+ owner: string;
1901
+ repo: string;
1902
+ }
1903
+ /**
1904
+ * GitHub API client for PR operations with error recovery
1905
+ */
1906
+ declare class GitHubAPI {
1907
+ private octokit;
1908
+ config: GitHubConfig;
1909
+ private circuitBreaker;
1910
+ private normalized;
1911
+ constructor(config: GitHubConfig);
1912
+ /**
1913
+ * Get the underlying Octokit instance for advanced operations
1914
+ * Use with caution - prefer using typed methods when available
1915
+ */
1916
+ getOctokit(): Octokit;
1917
+ /**
1918
+ * Normalize repository owner and name to match GitHub's canonical casing.
1919
+ * This handles case-insensitive lookups where git remote URLs may have
1920
+ * different casing than the actual GitHub repository.
1921
+ */
1922
+ private normalizeRepositoryName;
1923
+ /**
1924
+ * Extract HTTP status code from error object
1925
+ */
1926
+ private extractErrorStatus;
1927
+ /**
1928
+ * Discover open pull requests with stable ordering and error recovery
1929
+ */
1930
+ discoverPullRequests(state?: "open" | "closed" | "all"): Promise<GitHubPullRequest[]>;
1931
+ /**
1932
+ * Get repository information
1933
+ */
1934
+ getRepositoryInfo(): Promise<{
1935
+ name: string;
1936
+ fullName: string;
1937
+ defaultBranch: string;
1938
+ private: boolean;
1939
+ }>;
1940
+ /**
1941
+ * Check if authentication is working
1942
+ */
1943
+ checkAuth(): Promise<{
1944
+ authenticated: boolean;
1945
+ user?: string;
1946
+ }>;
1947
+ /**
1948
+ * Get a specific pull request by number
1949
+ */
1950
+ getPullRequest(prNumber: number): Promise<GitHubPullRequest | null>;
1951
+ /**
1952
+ * Update a pull request (e.g., to undraft it)
1953
+ */
1954
+ updatePullRequest(owner: string, repo: string, prNumber: number, updates: {
1955
+ draft?: boolean;
1956
+ title?: string;
1957
+ body?: string;
1958
+ }): Promise<void>;
1959
+ /**
1960
+ * Add a label to a pull request
1961
+ */
1962
+ addLabel(prNumber: number, label: string): Promise<void>;
1963
+ /**
1964
+ * Remove a label from a pull request
1965
+ */
1966
+ removeLabel(prNumber: number, label: string): Promise<void>;
1967
+ /**
1968
+ * Get labels for a pull request
1969
+ */
1970
+ getLabels(prNumber: number): Promise<string[]>;
1971
+ /**
1972
+ * Get repository info (for harvest)
1973
+ */
1974
+ getRepository(): Promise<{
1975
+ default_branch: string;
1976
+ [key: string]: any;
1977
+ }>;
1978
+ /**
1979
+ * Get a git reference (branch/tag SHA)
1980
+ */
1981
+ getRef(ref: string): Promise<{
1982
+ object: {
1983
+ sha: string;
1984
+ };
1985
+ }>;
1986
+ /**
1987
+ * Get check runs for a commit SHA
1988
+ */
1989
+ getCheckRuns(sha: string): Promise<{
1990
+ total_count: number;
1991
+ check_runs: Array<{
1992
+ status: string;
1993
+ conclusion: string | null;
1994
+ }>;
1995
+ }>;
1996
+ /**
1997
+ * Get reviews for a pull request
1998
+ */
1999
+ getReviews(prNumber: number): Promise<Array<{
2000
+ user: {
2001
+ login: string;
2002
+ } | null;
2003
+ state: string;
2004
+ }>>;
2005
+ /**
2006
+ * Compare two commits
2007
+ */
2008
+ compare(base: string, head: string): Promise<{
2009
+ merge_base_commit?: {
2010
+ sha: string;
2011
+ };
2012
+ }>;
2013
+ /**
2014
+ * List issues (excluding PRs if filtered by caller)
2015
+ */
2016
+ listIssues(options: {
2017
+ state: "open" | "closed" | "all";
2018
+ }): Promise<any[]>;
2019
+ /**
2020
+ * Update a pull request's branch with the latest changes from the base branch
2021
+ * This is typically used after merging another PR to keep branches up to date
2022
+ */
2023
+ updatePullRequestBranch(owner: string, repo: string, prNumber: number): Promise<void>;
2024
+ /**
2025
+ * Merge a pull request
2026
+ */
2027
+ mergePullRequest(owner: string, repo: string, prNumber: number, options: {
2028
+ method: "squash" | "merge" | "rebase";
2029
+ commitTitle?: string;
2030
+ }): Promise<boolean>;
2031
+ /**
2032
+ * Get commit status for a SHA
2033
+ */
2034
+ getCommitStatus(owner: string, repo: string, ref: string): Promise<{
2035
+ state: string;
2036
+ statuses: any[];
2037
+ }>;
2038
+ }
2039
+ /**
2040
+ * Create GitHub API client from environment and config
2041
+ */
2042
+ declare function createGitHubAPI(): Promise<GitHubAPI | null>;
2043
+
2044
+ /**
2045
+ * GitHub API integration types
2046
+ * Defines data structures for PR metadata and repository information
2047
+ */
2048
+ interface RepositoryInfo {
2049
+ owner: string;
2050
+ repo: string;
2051
+ defaultBranch: string;
2052
+ url: string;
2053
+ }
2054
+ interface PullRequest {
2055
+ number: number;
2056
+ title: string;
2057
+ body: string | null;
2058
+ head: {
2059
+ ref: string;
2060
+ sha: string;
2061
+ };
2062
+ base: {
2063
+ ref: string;
2064
+ sha: string;
2065
+ };
2066
+ state: "open" | "closed" | "merged";
2067
+ labels: Array<{
2068
+ name: string;
2069
+ color: string;
2070
+ }>;
2071
+ draft: boolean;
2072
+ mergeable?: boolean | null;
2073
+ user: {
2074
+ login: string;
2075
+ };
2076
+ createdAt: string;
2077
+ updatedAt: string;
2078
+ }
2079
+ interface PullRequestDetails extends PullRequest {
2080
+ dependencies: string[];
2081
+ tags: string[];
2082
+ requiredGates: string[];
2083
+ metadata?: {
2084
+ priority?: string;
2085
+ labels?: string[];
2086
+ [key: string]: any;
2087
+ };
2088
+ gateOverrides?: {
2089
+ skip?: string[];
2090
+ required?: string[];
2091
+ };
2092
+ }
2093
+ interface PRQueryOptions {
2094
+ state?: "open" | "closed" | "all";
2095
+ labels?: string[];
2096
+ query?: string;
2097
+ base?: string;
2098
+ head?: string;
2099
+ sort?: "created" | "updated" | "popularity" | "long-running";
2100
+ direction?: "asc" | "desc";
2101
+ per_page?: number;
2102
+ page?: number;
2103
+ }
2104
+ /**
2105
+ * GitHub Issue representation
2106
+ */
2107
+ interface GitHubIssue {
2108
+ number: number;
2109
+ title: string;
2110
+ body: string | null;
2111
+ state: "open" | "closed";
2112
+ labels: Array<{
2113
+ name: string;
2114
+ color: string;
2115
+ }>;
2116
+ user: {
2117
+ login: string;
2118
+ };
2119
+ assignees: Array<{
2120
+ login: string;
2121
+ }>;
2122
+ createdAt: string;
2123
+ updatedAt: string;
2124
+ }
2125
+ /**
2126
+ * Query options for listing issues
2127
+ */
2128
+ interface IssueQueryOptions {
2129
+ state?: "open" | "closed" | "all";
2130
+ labels?: string[];
2131
+ assignee?: string;
2132
+ creator?: string;
2133
+ mentioned?: string;
2134
+ sort?: "created" | "updated" | "comments";
2135
+ direction?: "asc" | "desc";
2136
+ per_page?: number;
2137
+ page?: number;
2138
+ }
2139
+ /**
2140
+ * GitHub Check Run representation
2141
+ */
2142
+ interface GitHubCheckRun {
2143
+ id: number;
2144
+ name: string;
2145
+ status: "queued" | "in_progress" | "completed";
2146
+ conclusion: "success" | "failure" | "neutral" | "cancelled" | "skipped" | "timed_out" | "action_required" | null;
2147
+ started_at: string | null;
2148
+ completed_at: string | null;
2149
+ html_url: string;
2150
+ app: {
2151
+ name: string;
2152
+ };
2153
+ }
2154
+ /**
2155
+ * Options for querying check runs
2156
+ */
2157
+ interface CheckRunsOptions {
2158
+ ref?: string;
2159
+ check_name?: string;
2160
+ status?: "queued" | "in_progress" | "completed";
2161
+ filter?: "latest" | "all";
2162
+ }
2163
+
2164
+ /**
2165
+ * GitHub API client for PR discovery and metadata extraction
2166
+ * Implements the GitHubClient interface with authentication and rate limiting
2167
+ */
2168
+
2169
+ interface GitHubClient {
2170
+ listOpenPRs(options?: PRQueryOptions): Promise<PullRequest[]>;
2171
+ getPRDetails(number: number): Promise<PullRequestDetails>;
2172
+ getPRDependencies(pr: PullRequest): Promise<string[]>;
2173
+ validateRepository(): Promise<RepositoryInfo>;
2174
+ listIssues(options?: IssueQueryOptions): Promise<GitHubIssue[]>;
2175
+ getOctokit(): any;
2176
+ getOwner(): string;
2177
+ getRepo(): string;
2178
+ getPRDiff(prNumber: number): Promise<string>;
2179
+ getPRFiles(prNumber: number): Promise<Array<{
2180
+ path: string;
2181
+ content: string;
2182
+ }>>;
2183
+ getCheckRuns(ref: string, options?: CheckRunsOptions): Promise<GitHubCheckRun[]>;
2184
+ updatePullRequestBranch(prNumber: number): Promise<void>;
2185
+ }
2186
+ /**
2187
+ * Factory function to create GitHub client with auto-detection of repository info
2188
+ */
2189
+ declare function createGitHubClient(options?: {
2190
+ token?: string;
2191
+ owner?: string;
2192
+ repo?: string;
2193
+ octokit?: Octokit;
2194
+ }): Promise<GitHubClient>;
2195
+
2196
+ /**
2197
+ * Types for file-change analysis and intersection detection
2198
+ */
2199
+ /**
2200
+ * Represents a file change in a PR
2201
+ */
2202
+ interface FileChange {
2203
+ filename: string;
2204
+ status: "added" | "modified" | "removed" | "renamed";
2205
+ additions: number;
2206
+ deletions: number;
2207
+ changes: number;
2208
+ patch?: string;
2209
+ previousFilename?: string;
2210
+ }
2211
+ /**
2212
+ * Represents an intersection between PRs on specific files
2213
+ */
2214
+ interface FileIntersection {
2215
+ prs: string[];
2216
+ files: string[];
2217
+ confidence: number;
2218
+ }
2219
+ /**
2220
+ * Heuristic types for dependency detection
2221
+ */
2222
+ type HeuristicType = "shared-files" | "directory-proximity" | "test-overlap";
2223
+ /**
2224
+ * Dependency suggestion based on file analysis
2225
+ */
2226
+ interface DependencySuggestion {
2227
+ from: string;
2228
+ to: string;
2229
+ reason: string;
2230
+ confidence: number;
2231
+ sharedFiles: string[];
2232
+ heuristic?: HeuristicType;
2233
+ }
2234
+ /**
2235
+ * Conflict prediction based on file overlap
2236
+ */
2237
+ interface ConflictPrediction {
2238
+ prs: string[];
2239
+ files: string[];
2240
+ severity: "low" | "medium" | "high";
2241
+ reason: string;
2242
+ }
2243
+ /**
2244
+ * Complete file analysis result
2245
+ */
2246
+ interface FileAnalysisResult {
2247
+ fileIntersections: FileIntersection[];
2248
+ suggestions: DependencySuggestion[];
2249
+ conflicts: ConflictPrediction[];
2250
+ }
2251
+
2252
+ /**
2253
+ * File-Change Analysis Engine & Intersection Detection
2254
+ * Analyzes file changes across PRs to detect implicit dependencies and suggest merge order
2255
+ */
2256
+
2257
+ /**
2258
+ * File analyzer for detecting PR dependencies based on file changes
2259
+ */
2260
+ declare class FileAnalyzer {
2261
+ private cache;
2262
+ private octokit;
2263
+ private owner;
2264
+ private repo;
2265
+ constructor(octokit: Octokit, owner: string, repo: string);
2266
+ /**
2267
+ * Fetch file changes for a specific PR
2268
+ */
2269
+ getPRFileChanges(prNumber: number, sha?: string): Promise<FileChange[]>;
2270
+ /**
2271
+ * Build file intersection matrix for multiple PRs
2272
+ */
2273
+ buildIntersectionMatrix(prs: Array<{
2274
+ number: number;
2275
+ name: string;
2276
+ sha?: string;
2277
+ }>): Promise<FileIntersection[]>;
2278
+ /**
2279
+ * Find files that are modified in both PRs
2280
+ */
2281
+ private findSharedFiles;
2282
+ /**
2283
+ * Calculate confidence level for intersection based on change types
2284
+ */
2285
+ private calculateIntersectionConfidence;
2286
+ /**
2287
+ * Predict potential conflicts based on file overlaps
2288
+ */
2289
+ predictConflicts(prs: Array<{
2290
+ number: number;
2291
+ name: string;
2292
+ sha?: string;
2293
+ }>): Promise<ConflictPrediction[]>;
2294
+ /**
2295
+ * Assess severity of potential conflict
2296
+ */
2297
+ private assessConflictSeverity;
2298
+ /**
2299
+ * Generate human-readable conflict reason
2300
+ */
2301
+ private generateConflictReason;
2302
+ /**
2303
+ * Generate dependency suggestions based on file analysis
2304
+ */
2305
+ suggestDependencies(prs: Array<{
2306
+ number: number;
2307
+ name: string;
2308
+ sha?: string;
2309
+ }>): Promise<DependencySuggestion[]>;
2310
+ /**
2311
+ * Generate dependency suggestions using multiple heuristics
2312
+ */
2313
+ suggestDependenciesWithHeuristics(prs: Array<{
2314
+ number: number;
2315
+ name: string;
2316
+ sha?: string;
2317
+ }>): Promise<DependencySuggestion[]>;
2318
+ /**
2319
+ * Heuristic 1: Shared file modifications
2320
+ */
2321
+ private heuristicSharedFiles;
2322
+ /**
2323
+ * Heuristic 2: Directory proximity
2324
+ * PRs modifying files in the same directory structure likely related
2325
+ */
2326
+ private heuristicDirectoryProximity;
2327
+ /**
2328
+ * Heuristic 3: Test overlap
2329
+ * PRs that modify the same test files or test the same modules
2330
+ */
2331
+ private heuristicTestOverlap;
2332
+ /**
2333
+ * Extract directory path from filename
2334
+ */
2335
+ private getDirectoryPath;
2336
+ /**
2337
+ * Check if file is a test file
2338
+ */
2339
+ private isTestFile;
2340
+ /**
2341
+ * Extract module name from test file
2342
+ */
2343
+ private getTestedModule;
2344
+ /**
2345
+ * Perform complete file analysis on a set of PRs
2346
+ */
2347
+ analyzeFiles(prs: Array<{
2348
+ number: number;
2349
+ name: string;
2350
+ sha?: string;
2351
+ }>): Promise<FileAnalysisResult>;
2352
+ /**
2353
+ * Clear the cache
2354
+ */
2355
+ clearCache(): void;
2356
+ /**
2357
+ * Get cache statistics
2358
+ */
2359
+ getCacheStats(): {
2360
+ size: number;
2361
+ entries: string[];
2362
+ };
2363
+ }
2364
+ /**
2365
+ * Create a file analyzer for detecting implicit dependencies between PRs
2366
+ *
2367
+ * Factory function that creates a FileAnalyzer instance with caching,
2368
+ * heuristic analysis, and conflict prediction capabilities. The analyzer
2369
+ * uses multiple heuristics to suggest dependencies based on file changes.
2370
+ *
2371
+ * @param octokit - Authenticated Octokit instance for GitHub API access
2372
+ * @param owner - Repository owner (username or organization)
2373
+ * @param repo - Repository name
2374
+ * @returns FileAnalyzer instance with methods for analyzing file changes
2375
+ *
2376
+ * @example Basic usage
2377
+ * ```typescript
2378
+ * import { createFileAnalyzer } from "./planner/fileAnalysis.js";
2379
+ * import { Octokit } from "@octokit/rest";
2380
+ *
2381
+ * const octokit = new Octokit({ auth: process.env.GITHUB_TOKEN });
2382
+ * const analyzer = createFileAnalyzer(octokit, "owner", "repo");
2383
+ *
2384
+ * const analysis = await analyzer.analyzeFiles([
2385
+ * { number: 101, name: "PR-101", sha: "abc123" },
2386
+ * { number: 102, name: "PR-102", sha: "def456" }
2387
+ * ]);
2388
+ *
2389
+ * console.log("File intersections:", analysis.fileIntersections);
2390
+ * console.log("Suggestions:", analysis.suggestions);
2391
+ * console.log("Conflicts:", analysis.conflicts);
2392
+ * ```
2393
+ *
2394
+ * @example With caching
2395
+ * ```typescript
2396
+ * const analyzer = createFileAnalyzer(octokit, "owner", "repo");
2397
+ *
2398
+ * // First call fetches from GitHub API
2399
+ * const analysis1 = await analyzer.analyzeFiles(prs);
2400
+ *
2401
+ * // Second call uses cache
2402
+ * const analysis2 = await analyzer.analyzeFiles(prs);
2403
+ *
2404
+ * // Check cache statistics
2405
+ * const stats = analyzer.getCacheStats();
2406
+ * console.log(`Cache size: ${stats.size} entries`);
2407
+ *
2408
+ * // Clear cache if needed
2409
+ * analyzer.clearCache();
2410
+ * ```
2411
+ *
2412
+ * @example Dependency suggestions with heuristics
2413
+ * ```typescript
2414
+ * const analyzer = createFileAnalyzer(octokit, "owner", "repo");
2415
+ *
2416
+ * const prs = [
2417
+ * { number: 100, name: "PR-100", body: "", sha: "abc" },
2418
+ * { number: 101, name: "PR-101", body: "", sha: "def" },
2419
+ * { number: 102, name: "PR-102", body: "", sha: "ghi" }
2420
+ * ];
2421
+ *
2422
+ * const suggestions = await analyzer.suggestDependenciesWithHeuristics(prs);
2423
+ *
2424
+ * // Suggestions are sorted by confidence (high to low)
2425
+ * suggestions.forEach(s => {
2426
+ * console.log(`${s.from} → ${s.to}`);
2427
+ * console.log(` Confidence: ${(s.confidence * 100).toFixed(0)}%`);
2428
+ * console.log(` Heuristic: ${s.heuristic}`);
2429
+ * console.log(` Reason: ${s.reason}`);
2430
+ * console.log(` Shared files: ${s.sharedFiles.join(", ")}`);
2431
+ * });
2432
+ * ```
2433
+ *
2434
+ * @example Conflict prediction
2435
+ * ```typescript
2436
+ * const analyzer = createFileAnalyzer(octokit, "owner", "repo");
2437
+ * const analysis = await analyzer.analyzeFiles(prs);
2438
+ *
2439
+ * const highSeverityConflicts = analysis.conflicts.filter(c => c.severity === "high");
2440
+ *
2441
+ * highSeverityConflicts.forEach(conflict => {
2442
+ * console.error(`Conflict: ${conflict.prs.join(" vs ")}`);
2443
+ * console.error(` Files: ${conflict.files.join(", ")}`);
2444
+ * console.error(` Severity: ${conflict.severity}`);
2445
+ * console.error(` Reason: ${conflict.reason}`);
2446
+ * });
2447
+ * ```
2448
+ *
2449
+ * @see {@link ../../../docs/diffgraph-planner.md#file-change-heuristics} for heuristic details
2450
+ */
2451
+ declare function createFileAnalyzer(octokit: Octokit, owner: string, repo: string): FileAnalyzer;
2452
+
2453
+ /**
2454
+ * GitHub-powered plan generation
2455
+ * Auto-discovers PRs and generates plan.json from GitHub metadata
2456
+ */
2457
+
2458
+ interface GitHubPlanOptions {
2459
+ query?: string;
2460
+ labels?: string[];
2461
+ excludePRs?: number[];
2462
+ includeDrafts?: boolean;
2463
+ target?: string;
2464
+ policy?: {
2465
+ requiredGates?: string[];
2466
+ maxWorkers?: number;
2467
+ };
2468
+ tierOverrides?: TierOverride[];
2469
+ }
2470
+ /**
2471
+ * Generate plan from GitHub PRs with automatic dependency resolution
2472
+ */
2473
+ declare function generatePlanFromGitHub(client: GitHubClient, options?: GitHubPlanOptions): Promise<Plan>;
2474
+
2475
+ /**
2476
+ * Multi-Repo Plan Generation
2477
+ *
2478
+ * Extends GitHub plan generation to support multiple repositories.
2479
+ * This enables merge-weave operations across repos like lex, lexsona, and lexrunner.
2480
+ *
2481
+ * @module
2482
+ */
2483
+
2484
+ /**
2485
+ * Repository target for multi-repo discovery
2486
+ */
2487
+ interface RepoTarget {
2488
+ owner: string;
2489
+ repo: string;
2490
+ /** Priority for merge ordering (lower = earlier). Default: 1 */
2491
+ priority?: number;
2492
+ }
2493
+ /**
2494
+ * Options for multi-repo plan generation
2495
+ */
2496
+ interface MultiRepoPlanOptions {
2497
+ query?: string;
2498
+ labels?: string[];
2499
+ excludePRs?: number[];
2500
+ includeDrafts?: boolean;
2501
+ target?: string;
2502
+ policy?: {
2503
+ requiredGates?: string[];
2504
+ maxWorkers?: number;
2505
+ };
2506
+ tierOverrides?: TierOverride[];
2507
+ /** GitHub token for authentication */
2508
+ githubToken?: string;
2509
+ }
2510
+ /**
2511
+ * Generate plan from multiple GitHub repositories
2512
+ *
2513
+ * This function:
2514
+ * 1. Discovers PRs from each repository
2515
+ * 2. Resolves cross-repo dependencies (owner/repo#123 format)
2516
+ * 3. Combines into a single plan with proper ordering
2517
+ *
2518
+ * @example
2519
+ * ```typescript
2520
+ * const plan = await generateMultiRepoPlan([
2521
+ * { owner: "Guffawaffle", repo: "lex", priority: 1 },
2522
+ * { owner: "Guffawaffle", repo: "lexsona", priority: 2 },
2523
+ * { owner: "Guffawaffle", repo: "lexrunner", priority: 3 },
2524
+ * ], {
2525
+ * labels: ["ready-to-merge"],
2526
+ * policy: { requiredGates: ["lint", "test"] }
2527
+ * });
2528
+ * ```
2529
+ */
2530
+ declare function generateMultiRepoPlan(repos: RepoTarget[], options?: MultiRepoPlanOptions): Promise<Plan>;
2531
+
2532
+ /**
2533
+ * Git operations for merge pyramid execution
2534
+ * Implements weave strategy and conflict detection
2535
+ */
2536
+
2537
+ interface MergeOperation {
2538
+ item: PlanItem;
2539
+ targetBranch: string;
2540
+ strategy: "rebase-weave" | "merge-weave" | "squash-weave";
2541
+ }
2542
+ interface WeaveResult {
2543
+ success: boolean;
2544
+ item: PlanItem;
2545
+ conflicts?: string[];
2546
+ sha?: string;
2547
+ message?: string;
2548
+ }
2549
+ interface WeaveExecutionResult {
2550
+ operations: WeaveResult[];
2551
+ successful: number;
2552
+ failed: number;
2553
+ conflicts: number;
2554
+ totalOperations: number;
2555
+ }
2556
+ /**
2557
+ * Git operations manager for merge pyramid execution
2558
+ */
2559
+ declare class GitOperations {
2560
+ private git;
2561
+ private workingDir;
2562
+ constructor(workingDir?: string);
2563
+ /**
2564
+ * Check if git repository is in a clean state
2565
+ */
2566
+ isClean(): Promise<boolean>;
2567
+ /**
2568
+ * Get current branch name
2569
+ */
2570
+ getCurrentBranch(): Promise<string>;
2571
+ /**
2572
+ * Get commit SHA for a branch
2573
+ */
2574
+ getBranchHead(branchName: string): Promise<string | null>;
2575
+ /**
2576
+ * Get list of conflicted files using git diff
2577
+ * This captures files with unmerged status (UU, AA, DU, UD, etc.)
2578
+ */
2579
+ getConflictedFiles(): Promise<string[]>;
2580
+ /**
2581
+ * Create and checkout a new branch for weave operations
2582
+ */
2583
+ createWeaveBranch(baseBranch?: string): Promise<string>;
2584
+ /**
2585
+ * Execute a single merge operation with conflict detection
2586
+ */
2587
+ executeMergeOperation(operation: MergeOperation): Promise<WeaveResult>;
2588
+ /**
2589
+ * Execute merge pyramid with dependency ordering
2590
+ */
2591
+ executeWeave(plan: Plan, levels: string[][], progressReporter?: ProgressReporter): Promise<WeaveExecutionResult>;
2592
+ /**
2593
+ * Rollback to previous state
2594
+ */
2595
+ rollback(targetBranch: string): Promise<void>;
2596
+ /**
2597
+ * Clean up integration branches
2598
+ */
2599
+ cleanup(branchPattern?: string): Promise<void>;
2600
+ /**
2601
+ * Get current HEAD commit SHA
2602
+ */
2603
+ getCurrentHead(): Promise<string>;
2604
+ /**
2605
+ * Get diff between two commits
2606
+ */
2607
+ getDiff(baseSha: string, headSha: string): Promise<string>;
2608
+ /**
2609
+ * Reset repository to a specific commit (hard reset)
2610
+ */
2611
+ resetHard(targetSha: string): Promise<void>;
2612
+ }
2613
+ /**
2614
+ * Create git operations manager
2615
+ */
2616
+ declare function createGitOperations(workingDir?: string): GitOperations;
2617
+
2618
+ /**
2619
+ * Configuration bootstrapping and workspace setup
2620
+ * Provides automatic configuration discovery and fallback mechanisms
2621
+ */
2622
+ interface BootstrapConfig {
2623
+ profileDir: string;
2624
+ hasConfiguration: boolean;
2625
+ missingFiles: string[];
2626
+ suggestions: string[];
2627
+ }
2628
+ /**
2629
+ * Bootstrap workspace configuration with intelligent defaults
2630
+ *
2631
+ * @param baseDir - Base directory for profile resolution
2632
+ * @param profileDirFlag - Optional profile directory override (from CLI --profile-dir)
2633
+ */
2634
+ declare function bootstrapWorkspace(baseDir?: string, profileDirFlag?: string): BootstrapConfig;
2635
+ /**
2636
+ * Detect project type and suggest appropriate templates
2637
+ */
2638
+ declare function detectProjectType(baseDir?: string): string;
2639
+ /**
2640
+ * Get environment-specific configuration suggestions
2641
+ */
2642
+ declare function getEnvironmentSuggestions(): string[];
2643
+
2644
+ /**
2645
+ * Guided workflow response types for MCP server
2646
+ *
2647
+ * These types enable context-aware workflow guidance without modifying
2648
+ * existing tool response structures. Per LPR-037 and Guff's Option 1 approach.
2649
+ */
2650
+ /**
2651
+ * Workflow action that can be taken in the current phase
2652
+ */
2653
+ interface WorkflowAction {
2654
+ /** MCP tool command name (e.g., 'gates_run', 'plan_validate') */
2655
+ command: string;
2656
+ /** Human-readable description of what this action does */
2657
+ description: string;
2658
+ /** Whether this action must be performed before proceeding */
2659
+ required: boolean;
2660
+ }
2661
+ /**
2662
+ * Common issue and its resolution in a workflow phase
2663
+ */
2664
+ interface CommonIssue {
2665
+ /** Symptom or error message pattern */
2666
+ symptom: string;
2667
+ /** Recommended solution or next step */
2668
+ solution: string;
2669
+ }
2670
+ /**
2671
+ * Guided workflow response from the workflow_guide tool
2672
+ */
2673
+ interface WorkflowGuide {
2674
+ /** Current workflow phase identifier */
2675
+ phase: string;
2676
+ /** Available next steps in this phase */
2677
+ nextSteps: WorkflowAction[];
2678
+ /** Common issues that occur in this phase */
2679
+ commonIssues: CommonIssue[];
2680
+ /** Link to relevant documentation */
2681
+ documentation?: string;
2682
+ /** Whether agent can proceed to next phase */
2683
+ canProceed: boolean;
2684
+ /** Optional recommendation for the most common next action */
2685
+ recommendedAction?: string;
2686
+ }
2687
+
2688
+ /**
2689
+ * Workflow state machine for guided MCP workflows
2690
+ *
2691
+ * Tracks workflow phases and valid transitions for deterministic guidance.
2692
+ * Per LPR-037 implementation.
2693
+ */
2694
+
2695
+ /**
2696
+ * Valid workflow phases
2697
+ */
2698
+ type WorkflowPhase = "initial" | "post-plan-creation" | "post-gates-run" | "pre-merge" | "post-merge" | "error-recovery";
2699
+ /**
2700
+ * Create a workflow guide for a given phase without managing state
2701
+ *
2702
+ * This is a stateless helper for the MCP server that doesn't require
2703
+ * maintaining a state machine instance.
2704
+ */
2705
+ declare function createWorkflowGuide(phase: WorkflowPhase): WorkflowGuide;
2706
+
2707
+ declare function main(argv?: string[]): Promise<void>;
2708
+
2709
+ export { ExecutionState, GitHubAPI, MergeEligibilityEvaluator, type MultiRepoPlanOptions, type RepoTarget, bootstrapWorkspace, canonicalJSONStringify, computeMergeOrder, createFileAnalyzer, createGitHubAPI, createGitHubClient, createGitOperations, createRunManager, createWorkflowGuide, detectProjectType, executeGatesWithPolicy, generateGitHubSnapshot, generateMultiRepoPlan, generatePlan, generatePlanFromGitHub, generateSnapshot, getEnvironmentSuggestions, healthChecker, initLocalOverlay, loadInputs, loadPlan, main, resolveProfile };