@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.
- package/.changes/ci-debug-added.txt +1 -0
- package/.changeset/tsconfig-solution-build.md +5 -0
- package/.editorconfig +9 -0
- package/.env.example +8 -0
- package/.github/COST_EFFICIENCY.md +60 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +28 -0
- package/.github/ISSUE_TEMPLATE/epic.yml +123 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +26 -0
- package/.github/ISSUE_TEMPLATE/issue-A1-gate-input-validation.md +380 -0
- package/.github/ISSUE_TEMPLATE/issue-B1-scope-validation.md +509 -0
- package/.github/ISSUE_TEMPLATE/issue-C1-command-whitelist.md +463 -0
- package/.github/ISSUE_TEMPLATE/subtask.yml +153 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +9 -0
- package/.github/copilot-instructions-old.md +429 -0
- package/.github/copilot-instructions.md +33 -0
- package/.github/instructions/tests.instructions.md +10 -0
- package/.github/workflows/auto-delete-merged-branches.yml +103 -0
- package/.github/workflows/benchmarks.yml +72 -0
- package/.github/workflows/ci-debug.yml +33 -0
- package/.github/workflows/ci.yml +167 -0
- package/.github/workflows/cli-smoke-test.yml +345 -0
- package/.github/workflows/copilot-setup-steps.yml +20 -0
- package/.github/workflows/frame-emission-gate.yml +242 -0
- package/.github/workflows/project-auto.yml +24 -0
- package/.github/workflows/release.yml +260 -0
- package/.github/workflows/slow-cli-tests.yml +37 -0
- package/.github/workflows/tag-guard.yml +44 -0
- package/.husky/pre-commit +1 -0
- package/.nvmrc +2 -0
- package/.prettierignore +28 -0
- package/.prettierrc.json +10 -0
- package/.smartergpt/CONTROL_DECK_VISION.md +226 -0
- package/.smartergpt/allowed-commands.json +41 -0
- package/.smartergpt/allowed-commands.strict.json +56 -0
- package/.smartergpt/deliverables/.live.md +426 -0
- package/.smartergpt/deliverables/ISSUE_STATUS_2025-12-28.md +193 -0
- package/.smartergpt/deliverables/_research/snapshot-contract-feedback/ADR_DISCUSSION.md +379 -0
- package/.smartergpt/deliverables/_research/snapshot-contract-feedback/Answer_claude-haiku.md +109 -0
- package/.smartergpt/deliverables/_research/snapshot-contract-feedback/Answer_gemini-flash.md +42 -0
- package/.smartergpt/deliverables/_research/snapshot-contract-feedback/Answer_gpt-codex-mini.md +19 -0
- package/.smartergpt/deliverables/_research/snapshot-contract-feedback/Answer_raptor-mini.md +37 -0
- package/.smartergpt/deliverables/_research/snapshot-contract-feedback/Question.md +37 -0
- package/.smartergpt/deliverables/merge-weave-04469e41-24ba-4ed5-b0ff-13c7ea12858d.ndjson +2 -0
- package/.smartergpt/deps.yml +3 -0
- package/.smartergpt/docs/fanout-templates.md +213 -0
- package/.smartergpt/docs/merge-weave-interventions.md +261 -0
- package/.smartergpt/docs/test-fix-patterns.md +240 -0
- package/.smartergpt/fanout-templates.yml +263 -0
- package/.smartergpt/gates.yml +9 -0
- package/.smartergpt/intent.md +1 -0
- package/.smartergpt/issues/QOL-001-analysis-script-filtering.md +36 -0
- package/.smartergpt/issues/QOL-002-log-retention-policy.md +92 -0
- package/.smartergpt/issues/QOL-003-realtime-console-feedback.md +44 -0
- package/.smartergpt/issues/QOL-004-governance-report-cli.md +44 -0
- package/.smartergpt/issues/QOL-005-schema-versioning.md +46 -0
- package/.smartergpt/issues/QOL-006-debug-verbose-mode.md +45 -0
- package/.smartergpt/issues/QOL-COMPLETION-REPORT.md +359 -0
- package/.smartergpt/issues/QOL-REVIEW-SUMMARY.md +111 -0
- package/.smartergpt/issues/QOL-ROADMAP.md +71 -0
- package/.smartergpt/merge-policy.yml +41 -0
- package/.smartergpt/merge-weave-policy.yml +255 -0
- package/.smartergpt/o1.json +0 -0
- package/.smartergpt/o2.json +0 -0
- package/.smartergpt/personas/eager-pm.md +123 -0
- package/.smartergpt/personas/example.md +81 -0
- package/.smartergpt/personas/senior-dev.md +107 -0
- package/.smartergpt/profile.yml +2 -0
- package/.smartergpt/prompts/create-project.md +112 -0
- package/.smartergpt/prompts/idea.md +64 -0
- package/.smartergpt/pull-request-template.md +25 -0
- package/.smartergpt/schemas/behavior-rule.schema.d.ts +54 -0
- package/.smartergpt/schemas/behavior-rule.schema.js +56 -0
- package/.smartergpt/schemas/behavior-rule.schema.json +105 -0
- package/.smartergpt/schemas/behavior-rule.schema.ts +60 -0
- package/.smartergpt/schemas/execution-plan-v1.d.ts +47 -0
- package/.smartergpt/schemas/execution-plan-v1.js +22 -0
- package/.smartergpt/schemas/execution-plan-v1.json +113 -0
- package/.smartergpt/schemas/execution-plan-v1.ts +32 -0
- package/.smartergpt/schemas/execution-plan.schema.json +116 -0
- package/.smartergpt/schemas/feature-spec-v0.d.ts +13 -0
- package/.smartergpt/schemas/feature-spec-v0.js +12 -0
- package/.smartergpt/schemas/feature-spec-v0.json +58 -0
- package/.smartergpt/schemas/feature-spec-v0.ts +16 -0
- package/.smartergpt/schemas/feature-spec.schema.json +111 -0
- package/.smartergpt/schemas/gates.schema.d.ts +48 -0
- package/.smartergpt/schemas/gates.schema.js +20 -0
- package/.smartergpt/schemas/gates.schema.json +47 -0
- package/.smartergpt/schemas/gates.schema.ts +26 -0
- package/.smartergpt/schemas/idea.schema.json +81 -0
- package/.smartergpt/schemas/runner.scope.schema.d.ts +54 -0
- package/.smartergpt/schemas/runner.scope.schema.js +28 -0
- package/.smartergpt/schemas/runner.scope.schema.json +75 -0
- package/.smartergpt/schemas/runner.scope.schema.ts +36 -0
- package/.smartergpt/schemas/runner.stack.schema.d.ts +40 -0
- package/.smartergpt/schemas/runner.stack.schema.js +21 -0
- package/.smartergpt/schemas/runner.stack.schema.json +51 -0
- package/.smartergpt/schemas/runner.stack.schema.ts +27 -0
- package/.smartergpt/scope.yml +11 -0
- package/.smartergpt/stack.yml +16 -0
- package/.smartergpt/test-fix-patterns.yml +106 -0
- package/.tool-versions +13 -0
- package/AGENTS.md +402 -0
- package/CHANGELOG.md +256 -0
- package/CLAUDE.md +484 -0
- package/CONTRIBUTING.md +345 -0
- package/EAGER_PM_FANOUT_ANALYSIS.md +283 -0
- package/FAQ.md +292 -0
- package/FIXTURE_LIBRARY_SUMMARY.md +327 -0
- package/IMPLEMENTATION_SUMMARY.md +222 -0
- package/LICENSE +21 -0
- package/MANUAL_TEST_GUIDE.md +229 -0
- package/MCP-ALIGNMENT-SUMMARY.md +261 -0
- package/MCP-CONFIG.md +125 -0
- package/MERGE_WEAVE_QUICKSTART.md +450 -0
- package/MERGE_WEAVE_SUMMARY.md +259 -0
- package/MERGE_WEAVE_USAGE_GUIDE.md +368 -0
- package/NOTICE.md +43 -0
- package/README.mcp.md +770 -0
- package/README.md +1069 -0
- package/TEST_INFRASTRUCTURE_ASSESSMENT.md +225 -0
- package/bootstrap-lexrunner.sh +396 -0
- package/dist/api-7H7SJZIX.js +15 -0
- package/dist/api-U3X2WA6D.js +15 -0
- package/dist/audit-2TZ2LU72.js +60 -0
- package/dist/audit-5HH5BMKI.js +60 -0
- package/dist/audit-6K5K333I.js +60 -0
- package/dist/audit-DYQWS57J.js +60 -0
- package/dist/audit-JBWZ2GZ2.js +60 -0
- package/dist/audit-SJF3434D.js +60 -0
- package/dist/audit-TICGGVX5.js +60 -0
- package/dist/audit-YOBB27PY.js +60 -0
- package/dist/autopilot-3GAVXWWC.js +45 -0
- package/dist/autopilot-43NOYVQA.js +45 -0
- package/dist/autopilot-4UA3OWLU.js +45 -0
- package/dist/autopilot-54TK5CCG.js +45 -0
- package/dist/autopilot-5BHC2UQT.js +45 -0
- package/dist/autopilot-ABZUCVGY.js +45 -0
- package/dist/autopilot-ACJZP47Y.js +45 -0
- package/dist/autopilot-AL5F5AUS.js +46 -0
- package/dist/autopilot-BO67FWUC.js +45 -0
- package/dist/autopilot-BR6W4GEX.js +45 -0
- package/dist/autopilot-FOR2UKRY.js +45 -0
- package/dist/autopilot-GDTTXHEQ.js +45 -0
- package/dist/autopilot-GEAMFZBM.js +45 -0
- package/dist/autopilot-HDMBRZE6.js +45 -0
- package/dist/autopilot-IKI2Y6S4.js +44 -0
- package/dist/autopilot-ILTBWWOL.js +46 -0
- package/dist/autopilot-KI3MXIFI.js +44 -0
- package/dist/autopilot-LWNPZC3J.js +45 -0
- package/dist/autopilot-LXPJ4ZXF.js +45 -0
- package/dist/autopilot-MDIFIONK.js +46 -0
- package/dist/autopilot-NW3LDP6M.js +45 -0
- package/dist/autopilot-OKTSCG35.js +45 -0
- package/dist/autopilot-OR5PF5PD.js +45 -0
- package/dist/autopilot-PE65SBGN.js +45 -0
- package/dist/autopilot-PW7I4B6W.js +45 -0
- package/dist/autopilot-QMLBL5P6.js +45 -0
- package/dist/autopilot-QSN6ZU5O.js +45 -0
- package/dist/autopilot-R7EZJOGI.js +46 -0
- package/dist/autopilot-T544CPPD.js +44 -0
- package/dist/autopilot-TNQB6VGJ.js +44 -0
- package/dist/autopilot-UVIYCR6K.js +45 -0
- package/dist/autopilot-W3ZTTSH3.js +45 -0
- package/dist/autopilot-XPKWOFXO.js +44 -0
- package/dist/autopilot-XRX4QWRM.js +44 -0
- package/dist/autopilot-Y3BAGNI5.js +44 -0
- package/dist/autopilot-ZE64XW2K.js +44 -0
- package/dist/chunk-2ESYSVXG.js +48 -0
- package/dist/chunk-2VR554P7.js +668 -0
- package/dist/chunk-37DOWIVT.js +1084 -0
- package/dist/chunk-3DU2DWUP.js +400 -0
- package/dist/chunk-3DVXIZFM.js +11166 -0
- package/dist/chunk-3FABZF4V.js +811 -0
- package/dist/chunk-4FFGNTAV.js +515 -0
- package/dist/chunk-4GEC4HC3.js +11221 -0
- package/dist/chunk-4RVZNLD4.js +628 -0
- package/dist/chunk-55VWJYZY.js +39 -0
- package/dist/chunk-5CGWZH5X.js +340 -0
- package/dist/chunk-5QKWKK4M.js +11794 -0
- package/dist/chunk-5Z3XHND7.js +11755 -0
- package/dist/chunk-6A4IE3TI.js +302 -0
- package/dist/chunk-6KK5JFFE.js +106 -0
- package/dist/chunk-6YC2VSLE.js +11252 -0
- package/dist/chunk-7C4K2SHD.js +668 -0
- package/dist/chunk-ANXY4RGA.js +11091 -0
- package/dist/chunk-ASHKNUBR.js +11312 -0
- package/dist/chunk-B3OYDPOP.js +11793 -0
- package/dist/chunk-DBH7SQ2S.js +1084 -0
- package/dist/chunk-DEI7A5B4.js +11449 -0
- package/dist/chunk-DM4GHY3J.js +92 -0
- package/dist/chunk-EQKFCZLH.js +9823 -0
- package/dist/chunk-FAIJPBT5.js +40 -0
- package/dist/chunk-FDDKUDXR.js +11166 -0
- package/dist/chunk-FEAR6ETG.js +438 -0
- package/dist/chunk-FNBAHK5V.js +72 -0
- package/dist/chunk-FXL74C73.js +523 -0
- package/dist/chunk-GLJEDX4L.js +10247 -0
- package/dist/chunk-GTP4OHD7.js +1107 -0
- package/dist/chunk-HIHH7IVO.js +10557 -0
- package/dist/chunk-I3VXUVCB.js +10474 -0
- package/dist/chunk-I6BIFVWI.js +10519 -0
- package/dist/chunk-I72TRUTJ.js +1084 -0
- package/dist/chunk-J5B5KT2F.js +368 -0
- package/dist/chunk-JMTULZ66.js +11743 -0
- package/dist/chunk-JXIQ7HCK.js +11166 -0
- package/dist/chunk-K6HVPBDP.js +10692 -0
- package/dist/chunk-KBT5Y666.js +521 -0
- package/dist/chunk-LETPROKG.js +11092 -0
- package/dist/chunk-LLMY2BZF.js +1084 -0
- package/dist/chunk-NMNL4US2.js +1084 -0
- package/dist/chunk-O2XRP7JK.js +10247 -0
- package/dist/chunk-OGPWLFFO.js +11201 -0
- package/dist/chunk-OQJUWTZV.js +51 -0
- package/dist/chunk-PJRWPLQ6.js +669 -0
- package/dist/chunk-PYRVUCJR.js +370 -0
- package/dist/chunk-Q6Y524KH.js +669 -0
- package/dist/chunk-QF7DM5VW.js +106 -0
- package/dist/chunk-QGM4M3NI.js +37 -0
- package/dist/chunk-QIIELFTL.js +1107 -0
- package/dist/chunk-QUW6N7GR.js +10264 -0
- package/dist/chunk-QZASNLQX.js +11223 -0
- package/dist/chunk-RMN4IAWO.js +11808 -0
- package/dist/chunk-RN5NHU37.js +11465 -0
- package/dist/chunk-RNG3RILO.js +11755 -0
- package/dist/chunk-RSA6DEB4.js +9748 -0
- package/dist/chunk-RURYWSMX.js +10524 -0
- package/dist/chunk-SUEXK5U7.js +11201 -0
- package/dist/chunk-TVUF55OH.js +11807 -0
- package/dist/chunk-U5MMENCP.js +456 -0
- package/dist/chunk-U62I2R2D.js +434 -0
- package/dist/chunk-UHFMFO54.js +21 -0
- package/dist/chunk-UNZBDSEU.js +11166 -0
- package/dist/chunk-UOATTNQP.js +334 -0
- package/dist/chunk-UZFYNSMJ.js +334 -0
- package/dist/chunk-VP37GLU6.js +1084 -0
- package/dist/chunk-W6WDKBWO.js +11453 -0
- package/dist/chunk-XBKUFNVF.js +10745 -0
- package/dist/chunk-XOLVQTIE.js +670 -0
- package/dist/chunk-XVFTBVDS.js +257 -0
- package/dist/chunk-YABA7DB6.js +11091 -0
- package/dist/chunk-YWCJX5KL.js +10557 -0
- package/dist/chunk-Z5GP7FSR.js +309 -0
- package/dist/chunk-ZBT3DATZ.js +296 -0
- package/dist/chunk-ZDBAZXUQ.js +11201 -0
- package/dist/chunk-ZEMABYS4.js +92 -0
- package/dist/chunk-ZOA4HT7P.js +662 -0
- package/dist/cli.cjs +40431 -0
- package/dist/cli.d.cts +2709 -0
- package/dist/cli.d.ts +2709 -0
- package/dist/cli.js +21149 -0
- package/dist/commandValidator-42OUDFZ4.js +140 -0
- package/dist/commandValidator-7LQHTYL5.js +140 -0
- package/dist/commandValidator-AT5OYZFC.js +142 -0
- package/dist/commandValidator-DH3CX2OW.js +140 -0
- package/dist/commandValidator-GCQC7H4A.js +140 -0
- package/dist/commandValidator-K6VWB6O3.js +140 -0
- package/dist/commandValidator-L6WNDBYB.js +129 -0
- package/dist/commandValidator-O3KSNXD2.js +140 -0
- package/dist/commandValidator-ZHMUA5RQ.js +140 -0
- package/dist/constraints-M52FVL2X.js +11 -0
- package/dist/dist-CSOR2BL2.js +1144 -0
- package/dist/dist-PKOIS5NZ.js +1144 -0
- package/dist/fileAnalysis-3VMDDJ6I.js +9 -0
- package/dist/fileAnalysis-4QLHUT44.js +9 -0
- package/dist/fileAnalysis-H6M2Z7ZC.js +9 -0
- package/dist/fileAnalysis-HMI7IL6S.js +9 -0
- package/dist/fileAnalysis-JHABOPUQ.js +9 -0
- package/dist/gateMapping-E5MGNJH5.js +17 -0
- package/dist/jsonEnvelope-R4SWKX2N.js +62 -0
- package/dist/mergeTreeSimulator-ATOPJ3DU.js +11 -0
- package/dist/mergeTreeSimulator-AYUK4TZT.js +11 -0
- package/dist/mergeTreeSimulator-BBWJUQBK.js +11 -0
- package/dist/mergeTreeSimulator-DJJDRB5N.js +11 -0
- package/dist/mergeTreeSimulator-X4BA647P.js +11 -0
- package/dist/planDiff-37QHCPKO.js +109 -0
- package/dist/planDiff-BQHIUARB.js +109 -0
- package/dist/planDiff-QOK6KNB7.js +111 -0
- package/dist/planDiff-RXR4CWFS.js +109 -0
- package/dist/planDiff-W2BTH2MU.js +109 -0
- package/dist/planHistory-4J3Q6AJ3.js +126 -0
- package/dist/planHistory-DQRSB2Y7.js +118 -0
- package/dist/planHistory-GLCXP6AB.js +126 -0
- package/dist/planHistory-SMNRLEKG.js +126 -0
- package/dist/planHistory-UO4WZ6GO.js +126 -0
- package/dist/planReview-7BWVLABC.js +377 -0
- package/dist/planReview-7VB3OYKZ.js +385 -0
- package/dist/planReview-FAIBIAE6.js +377 -0
- package/dist/planReview-FXQBDNKJ.js +376 -0
- package/dist/planReview-HO4YYETA.js +377 -0
- package/dist/planReview-I26EKCUK.js +376 -0
- package/dist/planReview-JBOAJHSU.js +377 -0
- package/dist/planReview-SCNZWC6B.js +376 -0
- package/dist/planReview-TU7LMZIY.js +376 -0
- package/dist/planViewer-2YZCPVDM.js +155 -0
- package/dist/planViewer-72WZFUTU.js +154 -0
- package/dist/planViewer-G546TVHV.js +154 -0
- package/dist/planViewer-I7ZHNJQF.js +150 -0
- package/dist/planViewer-IRXHOY5U.js +155 -0
- package/dist/planViewer-IX2ICW45.js +154 -0
- package/dist/planViewer-PDWPUOP6.js +155 -0
- package/dist/planViewer-PEOADAGZ.js +155 -0
- package/dist/planViewer-PFYDEG6V.js +150 -0
- package/dist/planViewer-UIPOSRVW.js +151 -0
- package/dist/planViewer-V2JUKV7Q.js +154 -0
- package/dist/sarif-46TKOOJZ.js +9 -0
- package/dist/sarif-63JKTFFI.js +9 -0
- package/dist/sarif-CIYIWUNC.js +9 -0
- package/dist/sarif-OGAGDL6B.js +9 -0
- package/dist/sarif-XIREI5B5.js +9 -0
- package/dist/security-3V6FKJDA.js +423 -0
- package/dist/security-4JMEUM56.js +423 -0
- package/dist/security-QHPEWY5G.js +423 -0
- package/dist/security-V2LAL5TP.js +415 -0
- package/dist/security-WTASK6T6.js +423 -0
- package/dist/security-XE4GHVJD.js +423 -0
- package/dist/security-XLXM3UHT.js +423 -0
- package/dist/security-YDLHSMVY.js +441 -0
- package/dist/security-ZDAEZF7D.js +423 -0
- package/dist/signing-3EI734L4.js +14 -0
- package/dist/signing-5G7K6JXJ.js +14 -0
- package/dist/signing-7DK7SABM.js +14 -0
- package/dist/signing-JJJOUGCW.js +14 -0
- package/dist/signing-OAJ3MXGA.js +14 -0
- package/dist/verify-5F6PUXUQ.js +62 -0
- package/dist/verify-5ILURHV2.js +62 -0
- package/dist/verify-MRDZJUGO.js +62 -0
- package/dist/verify-SCUHB3SA.js +62 -0
- package/dist/verify-YZRHN2D3.js +62 -0
- package/docs/1.0.0-vertical-slice.md +214 -0
- package/docs/ADR-007-INTEGRATION-SUMMARY.md +232 -0
- package/docs/ALIASING_FOR_LEXRUNNER.md +709 -0
- package/docs/ALIASING_FOR_RUNNER.md +552 -0
- package/docs/AX.md +317 -0
- package/docs/CHECKPOINT_RESUME.md +208 -0
- package/docs/CLI_VERBS.md +219 -0
- package/docs/CONFLICT_DETECTION.md +198 -0
- package/docs/DISCIPLINED_FAILURE.md +224 -0
- package/docs/ENVIRONMENT_QUALITY.md +155 -0
- package/docs/ERROR_CODES.md +528 -0
- package/docs/EVENT_SCHEMA.md +659 -0
- package/docs/EXE-012-investigation-summary.md +300 -0
- package/docs/GATE_ATTESTATION_GUIDE.md +237 -0
- package/docs/JSON_OUTPUT_SCHEMAS.md +347 -0
- package/docs/LEXRUNNER_ALIASING.md +444 -0
- package/docs/LEX_INTEGRATION.md +83 -0
- package/docs/LEX_PUBLIC_API.md +306 -0
- package/docs/LICENSING.md +119 -0
- package/docs/MCP-CLI-PARITY.md +410 -0
- package/docs/MCP-MIGRATION.md +258 -0
- package/docs/MCP-PARITY.md +234 -0
- package/docs/MEMORY_TOOLS.md +278 -0
- package/docs/MERGE_WEAVE_SETUP.md +643 -0
- package/docs/MIGRATION_v0.1.md +760 -0
- package/docs/NAMING_CONVENTIONS.md +82 -0
- package/docs/PERSONA_FOUNDATION.md +124 -0
- package/docs/PHASE3_MEMORY_GUIDE.md +122 -0
- package/docs/PLAN_LOCK.md +114 -0
- package/docs/README.md +289 -0
- package/docs/RUNNER_LIFECYCLE.md +257 -0
- package/docs/SAFETY_MECHANISMS.md +325 -0
- package/docs/SECURITY_IMPLEMENTATION.md +535 -0
- package/docs/TERMS.md +34 -0
- package/docs/TOKEN_TRACKING.md +162 -0
- package/docs/WORKFLOW_GUIDANCE.md +277 -0
- package/docs/adr/ADR-000-product-naming-and-branding.md +115 -0
- package/docs/adr/ADR-001-plan-json-frozen-input.md +68 -0
- package/docs/adr/ADR-002-two-track-separation.md +84 -0
- package/docs/adr/ADR-003-gate-uniform-execution.md +69 -0
- package/docs/adr/ADR-004-runner-state-model.md +75 -0
- package/docs/adr/ADR-005-merge-pyramid-ordering.md +87 -0
- package/docs/adr/ADR-006-schema-versioning-semver.md +81 -0
- package/docs/adr/ADR-007-task-snapshot-contract.md +503 -0
- package/docs/adr/ADR-008-lex-packaging.md +243 -0
- package/docs/adr/ADR-009-ax-test-output-adapters.md +440 -0
- package/docs/adr/README.md +32 -0
- package/docs/advanced-cli.md +436 -0
- package/docs/agent-stall-detection.md +278 -0
- package/docs/architecture/executors.md +190 -0
- package/docs/architecture.md +316 -0
- package/docs/attestation/AX-SHARED-PLEDGE.md +83 -0
- package/docs/attestation/AX-SHARED-PLEDGE_v1.0.0.md +99 -0
- package/docs/attestation/AX-SHARED-PLEDGE_v1.0.0_VERIFICATION.md +115 -0
- package/docs/attestation/Lex_Guff_Version_Contract_Pact_v1.0.0.md +181 -0
- package/docs/attestation/README.md +87 -0
- package/docs/attestation/ax_pledge_2025-12-02.ots +0 -0
- package/docs/attestation/ax_pledge_timestamp_response.tsr +0 -0
- package/docs/attestation/copilot_summarization_2025-12-01.ots +0 -0
- package/docs/attestation/copilot_summarization_2025-12-01_VERIFICATION.md +100 -0
- package/docs/attestation/copilot_summarization_behavior_observation_2025-12-01.md +85 -0
- package/docs/attestation/copilot_summarization_screenshot_2025-12-01.png +0 -0
- package/docs/attestation/employment_separation_2025-11-26.ots +0 -0
- package/docs/attestation/employment_timestamp_response.tsr +0 -0
- package/docs/attestation/freetsa_cacert.pem +45 -0
- package/docs/attestation/freetsa_tsa.crt +45 -0
- package/docs/attestation/lex_employment_separation_2025-11-26.md +85 -0
- package/docs/attestation/lex_employment_separation_2025-11-26_VERIFICATION.md +126 -0
- package/docs/attestation/patent/2025-12-07-shadow-governance-pct-draft.md +350 -0
- package/docs/attestation/patent/2025-12-07-shadow-governance-pct-draft.md.ots +0 -0
- package/docs/attestation/patent/2025-12-07-shadow-governance-pct-draft_VERIFICATION.md +130 -0
- package/docs/attestation/patent/README.md +75 -0
- package/docs/attestation/patent/fig1_write_path.svg +58 -0
- package/docs/attestation/patent/fig2_read_normalize_rollup.svg +92 -0
- package/docs/attestation/timestamp_response.tsr +0 -0
- package/docs/attribution-README.md +264 -0
- package/docs/audit-compliance.md +283 -0
- package/docs/audit-outputs.md +1213 -0
- package/docs/audit-sdk.md +1134 -0
- package/docs/autopilot-levels.md +368 -0
- package/docs/autopilot.md +288 -0
- package/docs/ci-cd-integration.md +580 -0
- package/docs/ci-integration-guide.md +369 -0
- package/docs/ci-version-validation.md +198 -0
- package/docs/cli-mcp-weave-reporting.md +462 -0
- package/docs/cli.md +2262 -0
- package/docs/cluster-gates-rollback.md +222 -0
- package/docs/command-creation-guide.md +485 -0
- package/docs/command-whitelist.md +490 -0
- package/docs/commands/idea.md +253 -0
- package/docs/config.md +245 -0
- package/docs/conflict-clustering.md +225 -0
- package/docs/conflict-predictor.md +359 -0
- package/docs/context-diet.md +249 -0
- package/docs/counter-examples.md +199 -0
- package/docs/create-project.md +211 -0
- package/docs/deliverables-generator.md +299 -0
- package/docs/deliverables-management.md +474 -0
- package/docs/dependency-parser.md +354 -0
- package/docs/determinism.md +299 -0
- package/docs/diffgraph-planner.md +1211 -0
- package/docs/dogfood/README.md +33 -0
- package/docs/dogfood/wave-3-results.md +303 -0
- package/docs/dogfood-merge-weave-script.md +224 -0
- package/docs/enterprise-onboarding.md +291 -0
- package/docs/environment-variables.md +625 -0
- package/docs/error-recovery.md +466 -0
- package/docs/errors.md +288 -0
- package/docs/executor-authoring.md +854 -0
- package/docs/executor-decoupling.md +410 -0
- package/docs/front-end-capture-pipeline.md +312 -0
- package/docs/gate-report-examples.md +380 -0
- package/docs/gates.md +319 -0
- package/docs/github-automation.md +128 -0
- package/docs/governance-metrics.md +368 -0
- package/docs/integrations/README.md +588 -0
- package/docs/interactive-plan-review.md +493 -0
- package/docs/issue-orchestration.md +256 -0
- package/docs/lex_ax_session_key_rememberings_v0.1.md +195 -0
- package/docs/lexrunner-v1-summary.md +246 -0
- package/docs/lexrunner-v2-contract.md +404 -0
- package/docs/lexrunner-v2-migration-plan.md +388 -0
- package/docs/lexrunner-v2-salvage-map.md +355 -0
- package/docs/lexsona-rules.md +154 -0
- package/docs/merge-weave-analysis.md +403 -0
- package/docs/merge-weave-quickstart.md +770 -0
- package/docs/merge-weave-state-machine.md +390 -0
- package/docs/migration-guide.md +529 -0
- package/docs/monitoring-examples.md +470 -0
- package/docs/monitoring-implementation.md +252 -0
- package/docs/orchestration.md +234 -0
- package/docs/performance-scale.md +359 -0
- package/docs/plan-generation.md +407 -0
- package/docs/profile-resolution.md +455 -0
- package/docs/prompts.md +427 -0
- package/docs/quickstart.md +546 -0
- package/docs/release-process.md +310 -0
- package/docs/sample-prompts/merge-weave/cli-merge-weave-kickoff.md +274 -0
- package/docs/sample-prompts/merge-weave/mcp-merge-weave-kickoff.md +480 -0
- package/docs/sample-prompts/merge-weave/standalone-merge-weave-kickoff.md +237 -0
- package/docs/schemas.md +359 -0
- package/docs/scope-validation.md +444 -0
- package/docs/security/rotation-guide.md +325 -0
- package/docs/specs/Meeting_Control_Stack_Concept_v0.1.0.md +417 -0
- package/docs/specs/git-feature-flag-redesign.md +321 -0
- package/docs/specs/lex-pr-brief-behavior.md +269 -0
- package/docs/specs/smartergpt-structure-v1.md +705 -0
- package/docs/specs/task-brief-v0.1.md +224 -0
- package/docs/store-architecture.md +61 -0
- package/docs/templates/CONTRIBUTING-merge-weave-section.md +33 -0
- package/docs/templates/gates.example.yml +109 -0
- package/docs/templates/plan.example.json +77 -0
- package/docs/thesis/00-EVOLUTION-NOTES.md +383 -0
- package/docs/thesis/01-CORE-THESIS.md +285 -0
- package/docs/thesis/02-TURN-COST.md +498 -0
- package/docs/thesis/03-PERMISSION-TO-FAIL.md +581 -0
- package/docs/thesis/04-CROSS-MODEL-CONTINUITY.md +517 -0
- package/docs/thesis/05-RULE-FILE-SPEC.md +732 -0
- package/docs/thesis/06-CAPABILITY-TIERS.md +723 -0
- package/docs/thesis/07-ROBERT-FIELD-REPORT.md +433 -0
- package/docs/thesis/08-IMPLEMENTATION-GUIDE.md +1093 -0
- package/docs/thesis/09-METRICS-AND-TELEMETRY.md +793 -0
- package/docs/thesis/10-FAILURE-MODES.md +716 -0
- package/docs/thesis/README.md +151 -0
- package/docs/thesis/lex_governance-collab_systems_paper_draft.md +952 -0
- package/docs/thesis/lex_governance-collab_systems_paper_draft.pdf +0 -0
- package/docs/tool-grounded/READINESS_ANALYSIS.md +527 -0
- package/docs/tool-grounded/enforcement.md +361 -0
- package/docs/tool-grounded/tool-grounded-a-view-from-the-inside.md +437 -0
- package/docs/tool-grounded/tool-grounded-prompt.md +122 -0
- package/docs/tool-grounded/tool-grounded-run-centric.md +474 -0
- package/docs/troubleshooting-planner.md +910 -0
- package/docs/troubleshooting.md +745 -0
- package/docs/tutorials/README.md +201 -0
- package/docs/tutorials/diffgraph-planner/01-simple-stack.md +460 -0
- package/docs/tutorials/diffgraph-planner/02-diamond-pattern.md +431 -0
- package/docs/tutorials/diffgraph-planner/03-large-batch.md +525 -0
- package/docs/tutorials/diffgraph-planner/04-fixing-cycles.md +526 -0
- package/docs/tutorials/diffgraph-planner/05-hybrid-workflow.md +555 -0
- package/docs/tutorials/quick-merge-pyramid.md +364 -0
- package/docs/tutorials/video-scripts/01-getting-started.md +286 -0
- package/docs/tutorials/video-scripts/02-understanding-dependencies.md +376 -0
- package/docs/weave-contract.md +116 -0
- package/docs/weave-execution-log.md +153 -0
- package/docs/workflows/README.md +139 -0
- package/docs/workflows/enterprise.md +545 -0
- package/docs/workflows/small-team.md +398 -0
- package/docs/workflows/solo-developer.md +419 -0
- package/dogfood-merge-weave.sh +122 -0
- package/examples/README.md +22 -0
- package/examples/WORKING_EXAMPLE.md +309 -0
- package/examples/analyze-pr-files.js +100 -0
- package/examples/autopilot-level4-example.md +234 -0
- package/examples/cluster-gates-demo.sh +178 -0
- package/examples/complete-security-workflow.ts +248 -0
- package/examples/error-recovery/README.md +202 -0
- package/examples/executor-manifest.example.yaml +81 -0
- package/examples/front-end-capture-pipeline/README.md +99 -0
- package/examples/front-end-capture-pipeline/create-project-example.sh +83 -0
- package/examples/front-end-capture-pipeline/idea-dark-mode.json +14 -0
- package/examples/front-end-capture-pipeline/idea-example.sh +57 -0
- package/examples/front-end-capture-pipeline/manual-test-checklist.md +426 -0
- package/examples/gates/README.md +165 -0
- package/examples/gates/lint-gate.sh +40 -0
- package/examples/gates/lint-gate.ts +99 -0
- package/examples/gates/test-runner.ts +113 -0
- package/examples/gates/vuln-scanner.ts +95 -0
- package/examples/github-integration/README.md +111 -0
- package/examples/github-integration/example-plan.json +95 -0
- package/examples/performance-config.md +388 -0
- package/examples/profile-setup/.gitignore.template +66 -0
- package/examples/profile-setup/.smartergpt-example/README.md +190 -0
- package/examples/profile-setup/.smartergpt.local-example/README.md +365 -0
- package/examples/profile-setup/README.md +492 -0
- package/examples/profile-setup/cross-repo-prompts/README.md +606 -0
- package/examples/safety-framework-demo.ts +130 -0
- package/examples/safety-mechanisms-example.ts +191 -0
- package/examples/sample-plan.json +87 -0
- package/examples/sample-stack.yml +66 -0
- package/examples/sarif/README.md +224 -0
- package/examples/scope-validation-demo.ts +199 -0
- package/examples/security-integration.ts +293 -0
- package/examples/token-tracking-example.ts +71 -0
- package/executors/senior-dev/ARCHITECTURE.md +182 -0
- package/executors/senior-dev/MEMORY_INTEGRATION.md +236 -0
- package/executors/senior-dev/QUICK_START.md +145 -0
- package/executors/senior-dev/README.md +76 -0
- package/executors/senior-dev/examples/sample-review-session.md +228 -0
- package/executors/senior-dev/executor-manifest.yaml +79 -0
- package/executors/senior-dev/prompts/code-review.prompt.md +78 -0
- package/executors/senior-dev/prompts/mentorship-feedback.prompt.md +97 -0
- package/executors/senior-dev/prompts/pattern-recognition.prompt.md +80 -0
- package/executors/senior-dev/prompts/pr-analysis.prompt.md +75 -0
- package/executors/senior-dev/scripts/capture-review-frame.sh +129 -0
- package/executors/senior-dev/scripts/prepare-review-context.sh +61 -0
- package/executors/senior-dev/scripts/recall-context.sh +87 -0
- package/lexrunner-launcher.sh +12 -0
- package/mcp-config-example.json +14 -0
- package/mcp-server.mjs +1221 -0
- package/merge-weave-current-prs.md +170 -0
- package/merge-weave-dogfood.json +46 -0
- package/merge-weave-plan.json +56 -0
- package/package.json +140 -0
- package/procedures/merge-weave-main.yaml +90 -0
- package/procedures/pr-review.yaml +68 -0
- package/project/README.md +50 -0
- package/prompts/tool-grounded-mode.md +185 -0
- package/schemas/allowed-commands.schema.json +108 -0
- package/schemas/audit-events.schema.json +138 -0
- package/schemas/audit-events.v1.0.0.schema.json +138 -0
- package/schemas/edit-plan.schema.json +80 -0
- package/schemas/executor-manifest.schema.json +236 -0
- package/schemas/flake-report.schema.json +95 -0
- package/schemas/gate-report.schema.json +85 -0
- package/schemas/gates/build.schema.json +32 -0
- package/schemas/gates/coverage.schema.json +42 -0
- package/schemas/gates/lint.schema.json +34 -0
- package/schemas/gates/security-scan.schema.json +33 -0
- package/schemas/gates/test.schema.json +35 -0
- package/schemas/next-option.schema.json +60 -0
- package/schemas/persona-snapshot.schema.json +66 -0
- package/schemas/plan.schema.json +300 -0
- package/schemas/status-response.schema.json +193 -0
- package/scripts/README.md +354 -0
- package/scripts/analyze-governance-logs.mjs +51 -0
- package/scripts/benchmark-ci.ts +339 -0
- package/scripts/check-determinism.sh +23 -0
- package/scripts/check-license-compliance.mjs +319 -0
- package/scripts/check-release-drift.mjs +81 -0
- package/scripts/ci-debug.sh +24 -0
- package/scripts/ci-smoke.mjs +304 -0
- package/scripts/create-sample-repo.sh +245 -0
- package/scripts/dogfood-merge-weave.sh +552 -0
- package/scripts/gen_mcp_servers.py +252 -0
- package/scripts/generate-executor-manifest-schema.ts +30 -0
- package/scripts/generate-flake-schema.ts +32 -0
- package/scripts/generate-gate-schema.ts +32 -0
- package/scripts/generate-plan-schema.ts +30 -0
- package/scripts/generate-run-schemas.ts +69 -0
- package/scripts/load-prompt.mjs +147 -0
- package/scripts/merge-weave-wrapper.sh +445 -0
- package/scripts/merge-weave.sh +489 -0
- package/scripts/metrics-template.ts +134 -0
- package/scripts/package-lex.sh +267 -0
- package/scripts/quick-start-merge-weave.sh +218 -0
- package/scripts/release-prepare.ts +350 -0
- package/scripts/rotate-secrets-example.ts +134 -0
- package/scripts/test-lexsona-shadow.mjs +100 -0
- package/scripts/validate-manifests.ts +188 -0
- package/scripts/verify-audit-phase2.js +175 -0
- package/src/ai/README.md +456 -0
- package/src/ai/conflictStrategy.ts +223 -0
- package/src/ai/conflictStrategyCache.ts +164 -0
- package/src/ai/conflictStrategyPrompt.ts +128 -0
- package/src/ai/conflictStrategySchema.ts +165 -0
- package/src/ai/heuristicFallback.ts +162 -0
- package/src/ai/index.ts +64 -0
- package/src/ai/riskScoring.ts +174 -0
- package/src/aliases/index.ts +16 -0
- package/src/aliases/resolver.ts +212 -0
- package/src/audit/context.ts +284 -0
- package/src/audit/emitter.ts +685 -0
- package/src/audit/events.ts +210 -0
- package/src/audit/gateMatrix.ts +158 -0
- package/src/audit/index.ts +44 -0
- package/src/audit/manifest.ts +78 -0
- package/src/audit/profiles.ts +93 -0
- package/src/audit/redaction.ts +216 -0
- package/src/audit/sarif.ts +213 -0
- package/src/audit/schema/events.ts +366 -0
- package/src/audit/schema/manifest.ts +47 -0
- package/src/audit/schema.ts +159 -0
- package/src/audit/sdk/index.ts +145 -0
- package/src/audit/sdk/types.ts +88 -0
- package/src/audit/sidecar.ts +111 -0
- package/src/audit/signing.ts +521 -0
- package/src/autopilot/README.md +113 -0
- package/src/autopilot/artifacts.ts +287 -0
- package/src/autopilot/base.ts +132 -0
- package/src/autopilot/deliverables.ts +392 -0
- package/src/autopilot/index.ts +29 -0
- package/src/autopilot/level1.ts +187 -0
- package/src/autopilot/level2.ts +262 -0
- package/src/autopilot/level3.ts +263 -0
- package/src/autopilot/level4.ts +393 -0
- package/src/autopilot/safety/README.md +512 -0
- package/src/autopilot/safety/SafetyFramework.ts +634 -0
- package/src/autopilot/safety/index.ts +16 -0
- package/src/autopilot/types.ts +250 -0
- package/src/budget/index.ts +56 -0
- package/src/budget/manager.ts +547 -0
- package/src/budget/schema.ts +305 -0
- package/src/budget/tracker.ts +155 -0
- package/src/cache/issue-cache.ts +150 -0
- package/src/cli/command-map.ts +221 -0
- package/src/cli/commands/gate/test.ts +214 -0
- package/src/cli/exitHandler.ts +98 -0
- package/src/cli/flags.ts +123 -0
- package/src/cli/formatSuggestions.ts +202 -0
- package/src/cli/formatters.ts +294 -0
- package/src/cli/jsonEnvelope.ts +152 -0
- package/src/cli/output.ts +61 -0
- package/src/cli/runnerLifecycle.ts +118 -0
- package/src/cli-audit.ts +76 -0
- package/src/cli-security.ts +114 -0
- package/src/cli.ts +1231 -0
- package/src/commands/audit/index.ts +5 -0
- package/src/commands/audit/verify.ts +87 -0
- package/src/commands/autopilot.ts +131 -0
- package/src/commands/budget.ts +327 -0
- package/src/commands/bulkOps.ts +204 -0
- package/src/commands/completion.ts +287 -0
- package/src/commands/config/validate.ts +428 -0
- package/src/commands/config.ts +368 -0
- package/src/commands/counterExamples.ts +104 -0
- package/src/commands/create-project.ts +338 -0
- package/src/commands/discover.ts +192 -0
- package/src/commands/doctor.ts +436 -0
- package/src/commands/execute.ts +558 -0
- package/src/commands/explain.ts +157 -0
- package/src/commands/fanout-analyze.ts +684 -0
- package/src/commands/fanout-harvest.ts +328 -0
- package/src/commands/fanout-monitor.ts +224 -0
- package/src/commands/gateAttest.ts +95 -0
- package/src/commands/gateImport.ts +142 -0
- package/src/commands/gateImportChecks.ts +208 -0
- package/src/commands/gateReport.ts +184 -0
- package/src/commands/governanceCleanup.ts +171 -0
- package/src/commands/governanceReport.ts +497 -0
- package/src/commands/guards.ts +50 -0
- package/src/commands/idea.ts +281 -0
- package/src/commands/init.ts +414 -0
- package/src/commands/issues.ts +165 -0
- package/src/commands/merge.ts +677 -0
- package/src/commands/mergeOrder.ts +68 -0
- package/src/commands/metrics.ts +232 -0
- package/src/commands/migrateProfile.ts +187 -0
- package/src/commands/orchestrate/analyze-issues.ts +203 -0
- package/src/commands/orchestrate/assign-batch.ts +204 -0
- package/src/commands/orchestrate/generate-deliverables.ts +66 -0
- package/src/commands/orchestrate/pinToolchain.ts +102 -0
- package/src/commands/orchestrate/plan-batch.ts +119 -0
- package/src/commands/orchestrate/predict-conflicts.ts +210 -0
- package/src/commands/orchestrate.ts +186 -0
- package/src/commands/plan.ts +403 -0
- package/src/commands/planDiff.ts +56 -0
- package/src/commands/planReview.ts +112 -0
- package/src/commands/planViewer.ts +180 -0
- package/src/commands/preview-constraints.ts +97 -0
- package/src/commands/query.ts +313 -0
- package/src/commands/report.ts +56 -0
- package/src/commands/retry.ts +60 -0
- package/src/commands/schema.ts +128 -0
- package/src/commands/security.ts +140 -0
- package/src/commands/seniorDev.ts +326 -0
- package/src/commands/status.ts +97 -0
- package/src/commands/tokenReport.ts +167 -0
- package/src/commands/validation.ts +66 -0
- package/src/commands/weave-checkpoints.ts +145 -0
- package/src/commands/weave-fanout.ts +273 -0
- package/src/commands/weave-policy.ts +277 -0
- package/src/commands/weave.ts +518 -0
- package/src/config/localOverlay.ts +167 -0
- package/src/config/pathResolver.ts +106 -0
- package/src/config/profileResolver.ts +194 -0
- package/src/config/promptsResolver.ts +312 -0
- package/src/config/rulesResolver.ts +257 -0
- package/src/config/schemas.ts +142 -0
- package/src/core/bootstrap.ts +287 -0
- package/src/core/enterprise.ts +453 -0
- package/src/core/errorRecovery.ts +509 -0
- package/src/core/githubPlan.ts +282 -0
- package/src/core/inputs.ts +314 -0
- package/src/core/multiRepoPlan.ts +353 -0
- package/src/core/plan.ts +106 -0
- package/src/core/snapshot.ts +189 -0
- package/src/errors/adapters.ts +897 -0
- package/src/errors/index.ts +231 -0
- package/src/executionState.ts +356 -0
- package/src/executors/README_FRAME_CONTRACT.md +446 -0
- package/src/executors/frameContract.ts +270 -0
- package/src/executors/guardrailEnforcement.ts +294 -0
- package/src/executors/seniorDev/core.ts +548 -0
- package/src/executors/seniorDev/index.ts +30 -0
- package/src/executors/seniorDev/types.ts +176 -0
- package/src/executors/toolBudget.ts +194 -0
- package/src/fanout/analyzer.ts +735 -0
- package/src/fanout/github-adapter.ts +262 -0
- package/src/fanout/harvest.ts +517 -0
- package/src/fanout/monitor.ts +350 -0
- package/src/fanout/types.ts +428 -0
- package/src/frames/controller.ts +160 -0
- package/src/frames/emitter.ts +455 -0
- package/src/frames/index.ts +58 -0
- package/src/frames/storage.ts +203 -0
- package/src/frames/types.ts +258 -0
- package/src/gates/checkRunConverter.ts +91 -0
- package/src/gates/test/adapters/errors.ts +32 -0
- package/src/gates/test/adapters/index.ts +36 -0
- package/src/gates/test/adapters/interface.ts +63 -0
- package/src/gates/test/adapters/jest-json.ts +370 -0
- package/src/gates/test/adapters/junit-xml.ts +400 -0
- package/src/gates/test/adapters/registry.ts +149 -0
- package/src/gates/test/adapters/vitest-json.ts +339 -0
- package/src/gates/test/enrichment/failureId.ts +74 -0
- package/src/gates/test/enrichment/index.ts +25 -0
- package/src/gates/test/enrichment/nextActions.ts +322 -0
- package/src/gates/test/enrichment/rerunTemplates.ts +105 -0
- package/src/gates/test/enrichment/signature.ts +58 -0
- package/src/gates/test/enrichment/stackParser.ts +149 -0
- package/src/gates/test/enrichment/types.ts +67 -0
- package/src/gates/test/formatters/markdown.spec.ts +942 -0
- package/src/gates/test/formatters/markdown.ts +296 -0
- package/src/gates/test/index.ts +54 -0
- package/src/gates/test/schema.spec.ts +372 -0
- package/src/gates/test/schema.ts +327 -0
- package/src/gates/validator.ts +92 -0
- package/src/gates.ts +1022 -0
- package/src/git/operations.ts +592 -0
- package/src/git/parseRemote.ts +22 -0
- package/src/github/api.ts +584 -0
- package/src/github/batch-ops.ts +215 -0
- package/src/github/client.ts +647 -0
- package/src/github/contextDiet.ts +205 -0
- package/src/github/diffHunks.ts +285 -0
- package/src/github/index.ts +11 -0
- package/src/github/minimalContext.ts +212 -0
- package/src/github/minimalContextClient.ts +105 -0
- package/src/github/symbolMap.ts +370 -0
- package/src/github/types.ts +166 -0
- package/src/governance/index.ts +42 -0
- package/src/governance/mcpStatus.ts +258 -0
- package/src/governance/timeoutAdjustment.ts +149 -0
- package/src/governance/turnCostSummary.ts +182 -0
- package/src/hooks/events.ts +374 -0
- package/src/hooks/index.ts +8 -0
- package/src/hostility/checks.ts +408 -0
- package/src/hostility/index.ts +108 -0
- package/src/hostility/score.ts +143 -0
- package/src/interactive/planDiff.ts +168 -0
- package/src/interactive/planHistory.ts +205 -0
- package/src/interactive/planReview.ts +531 -0
- package/src/learning/counter-example.ts +174 -0
- package/src/learning/prompts.ts +107 -0
- package/src/learning/storage.ts +230 -0
- package/src/lexsona/client.ts +367 -0
- package/src/lexsona/index.ts +44 -0
- package/src/lexsona/logger.ts +408 -0
- package/src/lexsona/types.ts +177 -0
- package/src/mcp/DEPRECATED.md +33 -0
- package/src/mcp/server.ts +3587 -0
- package/src/mcp/types/guided-response.ts +95 -0
- package/src/mcp/types.ts +468 -0
- package/src/mcp/workflow/state-machine.ts +277 -0
- package/src/mergeEligibility.ts +355 -0
- package/src/mergeOrder.ts +170 -0
- package/src/metrics/export.ts +472 -0
- package/src/metrics/index.ts +35 -0
- package/src/metrics/turncost.ts +284 -0
- package/src/monitoring/README.md +222 -0
- package/src/monitoring/audit.ts +98 -0
- package/src/monitoring/cache.ts +121 -0
- package/src/monitoring/dashboards/grafana-dashboard.json +172 -0
- package/src/monitoring/errorRecovery.ts +334 -0
- package/src/monitoring/errors.ts +105 -0
- package/src/monitoring/fileLogger.ts +194 -0
- package/src/monitoring/hallucinations.ts +45 -0
- package/src/monitoring/health.ts +171 -0
- package/src/monitoring/index.ts +16 -0
- package/src/monitoring/lock.ts +158 -0
- package/src/monitoring/logger.ts +178 -0
- package/src/monitoring/metrics.ts +245 -0
- package/src/monitoring/profiler.ts +156 -0
- package/src/monitoring/tokenLogger.ts +141 -0
- package/src/orchestrate/analyzer.ts +461 -0
- package/src/orchestrate/index.ts +6 -0
- package/src/orchestrate/types.ts +65 -0
- package/src/orchestration/README.md +480 -0
- package/src/orchestration/agentAssigner.ts +206 -0
- package/src/orchestration/batchPlanner.ts +201 -0
- package/src/orchestration/conflictClustering.ts +344 -0
- package/src/orchestration/conflictGraph.ts +63 -0
- package/src/orchestration/conflictPredictor.ts +170 -0
- package/src/orchestration/deliverablesGenerator.ts +345 -0
- package/src/orchestration/determinism.ts +232 -0
- package/src/orchestration/index.ts +45 -0
- package/src/orchestration/mergeTreeSimulator.ts +137 -0
- package/src/orchestration/mis.ts +123 -0
- package/src/orchestration/toolchainManifest.ts +169 -0
- package/src/orchestration/types.ts +103 -0
- package/src/performance.README.md +99 -0
- package/src/performance.ts +279 -0
- package/src/planner/README.md +215 -0
- package/src/planner/dependencyParser.ts +404 -0
- package/src/planner/dependencyScoring.ts +346 -0
- package/src/planner/fileAnalysis.ts +693 -0
- package/src/planner/index.ts +41 -0
- package/src/planner/scopeValidator.ts +308 -0
- package/src/planner/types.ts +80 -0
- package/src/planner/validation.ts +493 -0
- package/src/preview/constraints.ts +333 -0
- package/src/procedures/index.ts +47 -0
- package/src/procedures/loader.ts +252 -0
- package/src/procedures/schema.ts +191 -0
- package/src/procedures/stateMachine.ts +160 -0
- package/src/procedures/types.ts +178 -0
- package/src/receipts/emit.ts +354 -0
- package/src/receipts/index.ts +48 -0
- package/src/receipts/schema.ts +227 -0
- package/src/report/aggregate.ts +160 -0
- package/src/runs/artifacts.ts +315 -0
- package/src/runs/attribution.ts +132 -0
- package/src/runs/context.ts +54 -0
- package/src/runs/decisions.ts +407 -0
- package/src/runs/enforcement.ts +395 -0
- package/src/runs/failures.ts +517 -0
- package/src/runs/index.ts +141 -0
- package/src/runs/manager.ts +910 -0
- package/src/runs/statusBuilder.ts +233 -0
- package/src/runs/storage.ts +290 -0
- package/src/runs/types.ts +216 -0
- package/src/schema/flakeReport.ts +74 -0
- package/src/schema/gateMapping.ts +107 -0
- package/src/schema/gateReport.ts +236 -0
- package/src/schema/weaveLock.ts +51 -0
- package/src/schema.ts +313 -0
- package/src/schemas/executorManifest.ts +204 -0
- package/src/schemas/feature-spec-v0.ts +40 -0
- package/src/schemas/persona.ts +162 -0
- package/src/schemas/project.ts +91 -0
- package/src/schemas/runCentric.ts +402 -0
- package/src/schemas/task-contract.ts +626 -0
- package/src/schemas/vacuumReadyPrompt.ts +128 -0
- package/src/sdk/index.ts +113 -0
- package/src/sdk/parser.ts +101 -0
- package/src/sdk/query.ts +315 -0
- package/src/sdk/validator.ts +114 -0
- package/src/security/README.md +496 -0
- package/src/security/authentication.ts +173 -0
- package/src/security/authorization.ts +348 -0
- package/src/security/commandValidator.ts +195 -0
- package/src/security/compliance.ts +688 -0
- package/src/security/index.ts +85 -0
- package/src/security/policy.ts +399 -0
- package/src/security/sarif.ts +179 -0
- package/src/security/scanning.ts +362 -0
- package/src/security/secrets.ts +520 -0
- package/src/shared/git/index.ts +30 -0
- package/src/shared/git/runGit.ts +281 -0
- package/src/shared/git/runtime.ts +66 -0
- package/src/snapshot/builder.ts +229 -0
- package/src/snapshot/index.ts +8 -0
- package/src/store/CONTRACT.md +189 -0
- package/src/store/README.md +22 -0
- package/src/store/index.ts +99 -0
- package/src/store/inmemory/index.ts +10 -0
- package/src/store/inmemory/run-store.ts +268 -0
- package/src/store/postgres/.gitkeep +0 -0
- package/src/store/run-store.ts +405 -0
- package/src/store/sqlite/index.ts +7 -0
- package/src/store/sqlite/run-store.ts +525 -0
- package/src/store/sqlite/schema.sql +67 -0
- package/src/telemetry/frames.ts +179 -0
- package/src/telemetry/index.ts +5 -0
- package/src/tiers/index.ts +34 -0
- package/src/tiers/metrics.ts +156 -0
- package/src/tiers/schema.ts +95 -0
- package/src/tiers/suggest.ts +183 -0
- package/src/types/guardrails.ts +452 -0
- package/src/types/index.ts +42 -0
- package/src/util/canonicalJson.ts +29 -0
- package/src/util/colorControl.ts +46 -0
- package/src/util/envUtils.ts +139 -0
- package/src/util/hash.ts +69 -0
- package/src/util/lockHash.ts +90 -0
- package/src/util/minHeap.ts +108 -0
- package/src/util/progress.ts +89 -0
- package/src/util/tokenEstimator.ts +55 -0
- package/src/utils/fingerprint.ts +105 -0
- package/src/utils/paths.ts +209 -0
- package/src/utils/tokens.ts +151 -0
- package/src/utils/validation.ts +53 -0
- package/src/verification/diff-applier.ts +60 -0
- package/src/verification/engine-verifier.ts +171 -0
- package/src/verification/errors.ts +30 -0
- package/src/verification/index.ts +13 -0
- package/src/weave/audit/index.ts +17 -0
- package/src/weave/audit/logger.ts +206 -0
- package/src/weave/authority/evaluator.ts +660 -0
- package/src/weave/authority/index.ts +30 -0
- package/src/weave/authority/schema.ts +292 -0
- package/src/weave/checkpoint/index.ts +7 -0
- package/src/weave/checkpoint/storage.ts +223 -0
- package/src/weave/checkpoint/types.ts +121 -0
- package/src/weave/checkpoint/utils.ts +207 -0
- package/src/weave/clusterGates.ts +366 -0
- package/src/weave/draftPR.ts +214 -0
- package/src/weave/executor/d1-executor.ts +822 -0
- package/src/weave/executor/d2-executor.ts +381 -0
- package/src/weave/executor/index.ts +24 -0
- package/src/weave/executor/types.ts +135 -0
- package/src/weave/fanout/generator.ts +186 -0
- package/src/weave/fanout/index.ts +51 -0
- package/src/weave/fanout/loader.ts +134 -0
- package/src/weave/fanout/matcher.ts +239 -0
- package/src/weave/fanout/schema.ts +178 -0
- package/src/weave/frameHelper.ts +126 -0
- package/src/weave/gateFailureHandler.ts +405 -0
- package/src/weave/index.ts +89 -0
- package/src/weave/lockFile.ts +193 -0
- package/src/weave/mergeHelpers.ts +377 -0
- package/src/weave/mergeWeaveSequential.ts +282 -0
- package/src/weave/metrics/calculator.ts +362 -0
- package/src/weave/metrics/index.ts +44 -0
- package/src/weave/metrics/logger.ts +291 -0
- package/src/weave/metrics/schema.ts +505 -0
- package/src/weave/planner/index.ts +23 -0
- package/src/weave/planner/planner.ts +411 -0
- package/src/weave/planner/types.ts +181 -0
- package/src/weave/policy/index.ts +63 -0
- package/src/weave/policy/loader.ts +148 -0
- package/src/weave/policy/schema.ts +290 -0
- package/src/weave/post-merge-checks.ts +220 -0
- package/src/weave/preflightConflicts.ts +375 -0
- package/src/weave/receiptHelper.ts +287 -0
- package/src/weave/recovery.ts +232 -0
- package/src/weave/resolutionGuidance.ts +173 -0
- package/src/weave/stateMachine.ts +426 -0
- package/src/weave/testfix/applier.ts +195 -0
- package/src/weave/testfix/index.ts +18 -0
- package/src/weave/testfix/loader.ts +116 -0
- package/src/weave/testfix/matcher.ts +158 -0
- package/src/weave/testfix/schema.ts +218 -0
- package/src/weave/types.ts +305 -0
- package/src/weave/utils/copilot-completion.ts +76 -0
- package/test-mcp-dogfood.mjs +128 -0
- package/test-mcp.mjs +116 -0
- package/tests/README.md +155 -0
- package/tests/advanced-cli-e2e.spec.ts +218 -0
- package/tests/agentAssigner.spec.ts +261 -0
- package/tests/ai-conflict-strategy-cache.spec.ts +254 -0
- package/tests/ai-conflict-strategy-risk.spec.ts +287 -0
- package/tests/ai-conflict-strategy-schema.spec.ts +252 -0
- package/tests/ai-conflict-strategy.spec.ts +442 -0
- package/tests/aliases/resolver.spec.ts +238 -0
- package/tests/audit/context.spec.ts +283 -0
- package/tests/audit/emitter.spec.ts +347 -0
- package/tests/audit/gateMatrix.spec.ts +335 -0
- package/tests/audit/integration.spec.ts +236 -0
- package/tests/audit/redaction.spec.ts +290 -0
- package/tests/audit/sarif-integration.spec.ts +303 -0
- package/tests/audit/sarif.spec.ts +458 -0
- package/tests/audit/schema-events.spec.ts +421 -0
- package/tests/audit/schema.spec.ts +434 -0
- package/tests/audit/sdk-integration.spec.ts +598 -0
- package/tests/audit/sdk.spec.ts +318 -0
- package/tests/audit/signing-integration.spec.ts +276 -0
- package/tests/audit/signing.spec.ts +350 -0
- package/tests/audit-signing.spec.ts +406 -0
- package/tests/audit-verify-cli.spec.ts +176 -0
- package/tests/autopilot-e2e-level3-4.spec.ts +741 -0
- package/tests/autopilot-integration.spec.ts +274 -0
- package/tests/autopilot-level1.spec.ts +449 -0
- package/tests/autopilot-level2.spec.ts +188 -0
- package/tests/autopilot-level3.spec.ts +266 -0
- package/tests/autopilot-level4.spec.ts +454 -0
- package/tests/autopilot.spec.ts +379 -0
- package/tests/ax-error-adapters.spec.ts +580 -0
- package/tests/batch-planner.spec.ts +500 -0
- package/tests/benchmark-infrastructure.spec.ts +445 -0
- package/tests/benchmarks/README.md +103 -0
- package/tests/benchmarks/baselines/baseline.json +127 -0
- package/tests/benchmarks/core/dependencyResolver.bench.ts +128 -0
- package/tests/benchmarks/core/planParser.bench.ts +114 -0
- package/tests/benchmarks/core/topologicalSort.bench.ts +102 -0
- package/tests/benchmarks/index.ts +36 -0
- package/tests/benchmarks/io/fileOperations.bench.ts +132 -0
- package/tests/benchmarks/io/gitOperations.bench.ts +99 -0
- package/tests/benchmarks/utils/graphGenerator.ts +201 -0
- package/tests/benchmarks/utils/reporter.ts +231 -0
- package/tests/benchmarks/workflows/endToEnd.bench.ts +132 -0
- package/tests/bootstrap.test.ts +319 -0
- package/tests/budget-tracker.spec.ts +279 -0
- package/tests/bulkOps.spec.ts +166 -0
- package/tests/bulletproof-determinism.test.ts +223 -0
- package/tests/canonicalJson.test.ts +130 -0
- package/tests/checkRunConverter.spec.ts +357 -0
- package/tests/cli/commands/gate/test.spec.ts +564 -0
- package/tests/cli/emit-frames-flag.spec.ts +117 -0
- package/tests/cli/exitHandler.spec.ts +314 -0
- package/tests/cli/flags.spec.ts +223 -0
- package/tests/cli/formatters.spec.ts +513 -0
- package/tests/cli/output.spec.ts +221 -0
- package/tests/cli-autopilot.spec.ts +170 -0
- package/tests/cli-budget-guards.spec.ts +210 -0
- package/tests/cli-color-control.spec.ts +334 -0
- package/tests/cli-deliverables-generator.spec.ts +185 -0
- package/tests/cli-determinism.spec.ts +496 -0
- package/tests/cli-init-enterprise.spec.ts +294 -0
- package/tests/cli-init-json.spec.ts +154 -0
- package/tests/cli-init-local.spec.ts +159 -0
- package/tests/cli-json-envelope.spec.ts +140 -0
- package/tests/cli-json.spec.ts +408 -0
- package/tests/cli-orchestrate-plan-batch.spec.ts +329 -0
- package/tests/cli-orchestrate.spec.ts +231 -0
- package/tests/cli-plan-generation.spec.ts +367 -0
- package/tests/cli-plan-review.spec.ts +300 -0
- package/tests/cli-progress.spec.ts +193 -0
- package/tests/cli-ux-enhancements.spec.ts +213 -0
- package/tests/cliJsonPurity.spec.ts +437 -0
- package/tests/cliSuggestDeps.spec.ts +360 -0
- package/tests/cluster-gates-rollback.spec.ts +353 -0
- package/tests/command-validator-integration.spec.ts +305 -0
- package/tests/command-validator.spec.ts +380 -0
- package/tests/commands/autopilot.spec.ts +124 -0
- package/tests/commands/config-validate.spec.ts +301 -0
- package/tests/commands/config.spec.ts +311 -0
- package/tests/commands/create-project.spec.ts +90 -0
- package/tests/commands/doctor.spec.ts +57 -0
- package/tests/commands/execute.spec.ts +293 -0
- package/tests/commands/gateAttest.spec.ts +172 -0
- package/tests/commands/gateImport.spec.ts +176 -0
- package/tests/commands/gateReport.spec.ts +130 -0
- package/tests/commands/guards.spec.ts +114 -0
- package/tests/commands/idea.spec.ts +177 -0
- package/tests/commands/merge.spec.ts +166 -0
- package/tests/commands/plan.spec.ts +123 -0
- package/tests/commands/query.spec.ts +294 -0
- package/tests/commands/report.spec.ts +54 -0
- package/tests/commands/retry.spec.ts +300 -0
- package/tests/commands/schema.spec.ts +136 -0
- package/tests/commands/validation.spec.ts +229 -0
- package/tests/completion.spec.ts +133 -0
- package/tests/config-inspect.spec.ts +202 -0
- package/tests/conflictClustering-e2e.spec.ts +278 -0
- package/tests/conflictClustering.spec.ts +550 -0
- package/tests/conflictGraph.spec.ts +126 -0
- package/tests/conflictPredictor.spec.ts +238 -0
- package/tests/deliverables-generator.spec.ts +329 -0
- package/tests/deliverables.spec.ts +381 -0
- package/tests/dependencyParser-github.spec.ts +244 -0
- package/tests/dependencyParser.spec.ts +386 -0
- package/tests/dependencyScoring.spec.ts +668 -0
- package/tests/deterministic-applicable.test.ts +156 -0
- package/tests/deterministic-build.test.ts +172 -0
- package/tests/deterministic-simple.test.ts +32 -0
- package/tests/discover-suggest-integration.spec.ts +340 -0
- package/tests/dogfood-merge-weave-script.spec.ts +150 -0
- package/tests/e2e/planner.spec.ts +596 -0
- package/tests/e2e-comprehensive.test.ts +500 -0
- package/tests/e2e-determinism.test.ts +293 -0
- package/tests/e2e-synthetic-6pr-weave.spec.ts +329 -0
- package/tests/enterprise-init.spec.ts +350 -0
- package/tests/envUtils.spec.ts +267 -0
- package/tests/error-handling.test.ts +104 -0
- package/tests/error-recovery.spec.ts +451 -0
- package/tests/execution-plan-v1.test.ts +257 -0
- package/tests/executionState-loadGateResults.spec.ts +267 -0
- package/tests/executionState.test.ts +169 -0
- package/tests/executors/README.md +100 -0
- package/tests/executors/frameContract-integration.spec.ts +324 -0
- package/tests/executors/frameContract.spec.ts +531 -0
- package/tests/executors/guardrailEnforcement.spec.ts +424 -0
- package/tests/executors/lifecycle.spec.ts +313 -0
- package/tests/executors/toolBudget.spec.ts +473 -0
- package/tests/feature-spec-v0.test.ts +145 -0
- package/tests/fileAnalysis.spec.ts +946 -0
- package/tests/fingerprint.spec.ts +100 -0
- package/tests/fixtures/README.md +380 -0
- package/tests/fixtures/deliverables/batch-example-plan.json +62 -0
- package/tests/fixtures/executors/README.md +57 -0
- package/tests/fixtures/executors/index.ts +9 -0
- package/tests/fixtures/executors/mock-executor.ts +204 -0
- package/tests/fixtures/executors/registry.ts +51 -0
- package/tests/fixtures/executors/types.ts +95 -0
- package/tests/fixtures/fixtures.spec.ts +307 -0
- package/tests/fixtures/gates/configs.ts +234 -0
- package/tests/fixtures/gates/results.ts +234 -0
- package/tests/fixtures/harvest-bundle-fixture.json +87 -0
- package/tests/fixtures/index.ts +219 -0
- package/tests/fixtures/invalid/plans.ts +178 -0
- package/tests/fixtures/jest/all-passing.json +71 -0
- package/tests/fixtures/jest/snapshot-failures.json +66 -0
- package/tests/fixtures/jest/some-failing.json +100 -0
- package/tests/fixtures/jest/with-location.json +84 -0
- package/tests/fixtures/junit/cdata-messages.xml +29 -0
- package/tests/fixtures/junit/multiple-suites.xml +30 -0
- package/tests/fixtures/junit/single-suite.xml +17 -0
- package/tests/fixtures/junit/with-errors.xml +19 -0
- package/tests/fixtures/junit/with-skipped.xml +18 -0
- package/tests/fixtures/npm-audit.json +32 -0
- package/tests/fixtures/plan.bad-schema.json +5 -0
- package/tests/fixtures/plan.bad-unknown-dep.json +10 -0
- package/tests/fixtures/plan.ci-gates.json +36 -0
- package/tests/fixtures/plan.complex-cycle.json +22 -0
- package/tests/fixtures/plan.cycle.json +14 -0
- package/tests/fixtures/plan.deep-chain.json +95 -0
- package/tests/fixtures/plan.dogfood-execute.json +36 -0
- package/tests/fixtures/plan.gates.json +30 -0
- package/tests/fixtures/plan.integration-pyramid.json +56 -0
- package/tests/fixtures/plan.orphans.json +22 -0
- package/tests/fixtures/plan.parallel.json +30 -0
- package/tests/fixtures/plan.tiny.json +18 -0
- package/tests/fixtures/plan.wide-parallel.json +75 -0
- package/tests/fixtures/plan.with-failures.json +26 -0
- package/tests/fixtures/plan.with-vuln.json +25 -0
- package/tests/fixtures/planner/cross-module.json +101 -0
- package/tests/fixtures/planner/cycle-error.json +56 -0
- package/tests/fixtures/planner/diamond-pattern.json +74 -0
- package/tests/fixtures/planner/empty-repo.json +9 -0
- package/tests/fixtures/planner/file-overlap-heavy.json +110 -0
- package/tests/fixtures/planner/invalid-pr.json +25 -0
- package/tests/fixtures/planner/merge-conflicts.json +42 -0
- package/tests/fixtures/planner/mixed-deps.json +101 -0
- package/tests/fixtures/planner/self-dependency.json +24 -0
- package/tests/fixtures/planner/simple-stack.json +79 -0
- package/tests/fixtures/planner/single-pr.json +25 -0
- package/tests/fixtures/planner/stale-pr.json +40 -0
- package/tests/fixtures/plans/complex.ts +201 -0
- package/tests/fixtures/plans/diamond.ts +115 -0
- package/tests/fixtures/plans/linear.ts +74 -0
- package/tests/fixtures/plans/simple.ts +61 -0
- package/tests/fixtures/prs/basic.ts +175 -0
- package/tests/fixtures/prs/withDeps.ts +197 -0
- package/tests/fixtures/scan-results-clean.sarif +15 -0
- package/tests/fixtures/scan-results.sarif +74 -0
- package/tests/fixtures/scenarios/mergeWorkflows.ts +300 -0
- package/tests/fixtures/scenarios/syntheticWeave.ts +351 -0
- package/tests/fixtures/snapshot/package.json +5 -0
- package/tests/fixtures/snapshot/sample.ts +21 -0
- package/tests/fixtures/utils/cleanup.ts +81 -0
- package/tests/fixtures/utils/mockGitHub.ts +219 -0
- package/tests/fixtures/utils/tempDir.ts +109 -0
- package/tests/fixtures/verification/expected-verification.json +16 -0
- package/tests/fixtures/verification/receipt.json +31 -0
- package/tests/fixtures/verification/snapshot.json +44 -0
- package/tests/fixtures/vitest/all-passing.json +67 -0
- package/tests/fixtures/vitest/complex-nested-suites.json +98 -0
- package/tests/fixtures/vitest/some-failing.json +98 -0
- package/tests/fixtures/vitest/with-coverage.json +97 -0
- package/tests/fixtures-usage-examples.spec.ts +304 -0
- package/tests/flakeReport.spec.ts +267 -0
- package/tests/frames/ci-gate-integration.spec.ts +331 -0
- package/tests/frames/controller.spec.ts +165 -0
- package/tests/frames/emitter.spec.ts +371 -0
- package/tests/frames/idempotency.spec.ts +177 -0
- package/tests/frames/storage.spec.ts +346 -0
- package/tests/frames/types.spec.ts +249 -0
- package/tests/frames/v2-schema-integration.spec.ts +435 -0
- package/tests/gate-working-directory.spec.ts +204 -0
- package/tests/gateMapping.spec.ts +161 -0
- package/tests/gateReportIntegration.spec.ts +175 -0
- package/tests/gateReportValidation.spec.ts +452 -0
- package/tests/gates/test/adapters/jest-json.spec.ts +372 -0
- package/tests/gates/test/adapters/junit-xml.spec.ts +421 -0
- package/tests/gates/test/adapters/registry.spec.ts +376 -0
- package/tests/gates/test/adapters/vitest-json.spec.ts +455 -0
- package/tests/gates/test/enrichment/failureId.spec.ts +131 -0
- package/tests/gates/test/enrichment/nextActions.spec.ts +365 -0
- package/tests/gates/test/enrichment/rerunTemplates.spec.ts +187 -0
- package/tests/gates/test/enrichment/signature.spec.ts +163 -0
- package/tests/gates/test/enrichment/stackParser.spec.ts +203 -0
- package/tests/gates/turncost-integration.spec.ts +221 -0
- package/tests/gates/validation-integration.spec.ts +147 -0
- package/tests/gates/validator.spec.ts +200 -0
- package/tests/gates.test.ts +255 -0
- package/tests/gatesWithPolicy.hostilityTimeoutAdjustment.spec.ts +156 -0
- package/tests/git-operations-receipts.spec.ts +121 -0
- package/tests/git-operations.test.ts +152 -0
- package/tests/git-runtime.spec.ts +175 -0
- package/tests/github-api.labels.spec.ts +21 -0
- package/tests/github-api.test.ts +85 -0
- package/tests/github-context-diet.spec.ts +441 -0
- package/tests/github-diff-hunks.spec.ts +387 -0
- package/tests/github-integration.spec.ts +774 -0
- package/tests/github-minimal-context.spec.ts +338 -0
- package/tests/github-symbol-map.spec.ts +414 -0
- package/tests/githubClient.spec.ts +123 -0
- package/tests/governance/mcpStatus.spec.ts +276 -0
- package/tests/governance/timeoutAdjustment.spec.ts +149 -0
- package/tests/governance/turnCostSummary.spec.ts +188 -0
- package/tests/governance-retention.spec.ts +151 -0
- package/tests/governance-wrapper-delegation.spec.ts +148 -0
- package/tests/guardrails.spec.ts +860 -0
- package/tests/hash.test.ts +83 -0
- package/tests/helpers/cli.ts +23 -0
- package/tests/helpers/getStd.ts +1 -0
- package/tests/helpers/makeGate.ts +19 -0
- package/tests/helpers/plannerTestHelpers.ts +314 -0
- package/tests/hooks/events.spec.ts +518 -0
- package/tests/hostility/checks.spec.ts +295 -0
- package/tests/hostility/integration.spec.ts +123 -0
- package/tests/hostility/score.spec.ts +175 -0
- package/tests/init.spec.ts +270 -0
- package/tests/integration/hipaa-encryption.spec.ts +148 -0
- package/tests/integration/lex-smoke-test.spec.ts +328 -0
- package/tests/integration-e2e.test.ts +244 -0
- package/tests/integration-matrix.test.ts +409 -0
- package/tests/interPRConflicts.spec.ts +254 -0
- package/tests/interactive-plan-history.spec.ts +255 -0
- package/tests/interactive-plan-review.spec.ts +287 -0
- package/tests/issue-analyzer.spec.ts +593 -0
- package/tests/lexsona-integration.spec.ts +311 -0
- package/tests/localOverlay.spec.ts +203 -0
- package/tests/lockHash.spec.ts +167 -0
- package/tests/mcp-auth-errors.spec.ts +190 -0
- package/tests/mcp-contracts.spec.ts +290 -0
- package/tests/mcp-gates-external-plan.spec.ts +146 -0
- package/tests/mcp-granular-tools.spec.ts +208 -0
- package/tests/mcp-runstore-integration.spec.ts +334 -0
- package/tests/mcp-scope-integration.spec.ts +318 -0
- package/tests/mcp-task-handoff.spec.ts +320 -0
- package/tests/mcp-workflow-guide.spec.ts +53 -0
- package/tests/mcp.test.ts +151 -0
- package/tests/merge-conflict-detection.spec.ts +260 -0
- package/tests/mergeEligibility.test.ts +201 -0
- package/tests/mergeLockHash.spec.ts +158 -0
- package/tests/mergeOrder-with-fixtures.spec.ts +215 -0
- package/tests/mergeOrder.test.ts +108 -0
- package/tests/mergeTreeSimulator.spec.ts +145 -0
- package/tests/metrics/export.spec.ts +446 -0
- package/tests/metrics/turncost.spec.ts +309 -0
- package/tests/metrics-template.spec.ts +137 -0
- package/tests/migrateProfile.spec.ts +254 -0
- package/tests/mis.spec.ts +202 -0
- package/tests/monitoring-audit.spec.ts +181 -0
- package/tests/monitoring-cache.spec.ts +331 -0
- package/tests/monitoring-error-recovery.spec.ts +236 -0
- package/tests/monitoring-errors.spec.ts +193 -0
- package/tests/monitoring-fileLogger.spec.ts +319 -0
- package/tests/monitoring-health.spec.ts +152 -0
- package/tests/monitoring-lock.spec.ts +308 -0
- package/tests/monitoring-logger.spec.ts +157 -0
- package/tests/monitoring-metrics.spec.ts +158 -0
- package/tests/monitoring-profiler.spec.ts +197 -0
- package/tests/orchestration-determinism.spec.ts +204 -0
- package/tests/parseRemote.spec.ts +25 -0
- package/tests/pathResolver.spec.ts +122 -0
- package/tests/paths.spec.ts +68 -0
- package/tests/performance.spec.ts +322 -0
- package/tests/pipeline-determinism.spec.ts +597 -0
- package/tests/plan-tier-integration.spec.ts +184 -0
- package/tests/precedence-resolution.spec.ts +682 -0
- package/tests/preflightConflicts.spec.ts +205 -0
- package/tests/procedures/keystone-policy.spec.ts +296 -0
- package/tests/procedures/loader.spec.ts +585 -0
- package/tests/procedures/pr-review.spec.ts +321 -0
- package/tests/profileResolver.spec.ts +375 -0
- package/tests/progress-indicators.spec.ts +139 -0
- package/tests/promptsResolver.spec.ts +443 -0
- package/tests/public-api.spec.ts +272 -0
- package/tests/query.spec.ts +170 -0
- package/tests/receipts.spec.ts +463 -0
- package/tests/release-prepare.spec.ts +268 -0
- package/tests/report.test.ts +335 -0
- package/tests/resolutionGuidance.spec.ts +160 -0
- package/tests/rotate-secrets-example.spec.ts +198 -0
- package/tests/rulesResolver.spec.ts +232 -0
- package/tests/runGit.spec.ts +229 -0
- package/tests/runner-lifecycle-integration.spec.ts +283 -0
- package/tests/runs/artifacts.spec.ts +367 -0
- package/tests/runs/decisions.spec.ts +495 -0
- package/tests/runs/enforcement.spec.ts +555 -0
- package/tests/runs/failures.spec.ts +554 -0
- package/tests/runs/manager-runstore-integration.spec.ts +455 -0
- package/tests/runs/manager.spec.ts +678 -0
- package/tests/runs-manager.spec.ts +485 -0
- package/tests/safety-acceptance.spec.ts +278 -0
- package/tests/safety-enhanced.spec.ts +329 -0
- package/tests/safety-framework.spec.ts +427 -0
- package/tests/safety-guards-integration.spec.ts +213 -0
- package/tests/safety-integration.spec.ts +278 -0
- package/tests/sarif-parser.spec.ts +148 -0
- package/tests/schema.test.ts +88 -0
- package/tests/schemas/behavior-rule.spec.ts +366 -0
- package/tests/schemas/executorManifest.spec.ts +441 -0
- package/tests/schemas/persona-integration.spec.ts +62 -0
- package/tests/schemas/persona.spec.ts +172 -0
- package/tests/schemas/project.spec.ts +247 -0
- package/tests/schemas/run-store.spec.ts +553 -0
- package/tests/schemas/runCentric.spec.ts +463 -0
- package/tests/schemas/vacuumReadyPrompt.spec.ts +515 -0
- package/tests/scope-github-auto-detection.spec.ts +200 -0
- package/tests/scopeValidator.spec.ts +497 -0
- package/tests/security-authentication.spec.ts +42 -0
- package/tests/security-authorization.spec.ts +350 -0
- package/tests/security-cli.spec.ts +264 -0
- package/tests/security-compliance.spec.ts +334 -0
- package/tests/security-policy.spec.ts +295 -0
- package/tests/security-scanning.spec.ts +349 -0
- package/tests/security-secrets.spec.ts +401 -0
- package/tests/store/create-run-store.spec.ts +185 -0
- package/tests/store/inmemory/run-store.spec.ts +533 -0
- package/tests/store/sqlite/run-store.spec.ts +849 -0
- package/tests/telemetry/frames.spec.ts +120 -0
- package/tests/tiers.spec.ts +466 -0
- package/tests/token-usage.spec.ts +309 -0
- package/tests/toolchain-manifest.spec.ts +145 -0
- package/tests/unified-budget.spec.ts +713 -0
- package/tests/unit/cache/issue-cache.spec.ts +131 -0
- package/tests/unit/fanout/analyzer-integration.spec.ts +398 -0
- package/tests/unit/fanout/analyzer.spec.ts +605 -0
- package/tests/unit/fanout/github-adapter.spec.ts +203 -0
- package/tests/unit/fanout/harvest.spec.ts +93 -0
- package/tests/unit/fanout/monitor.spec.ts +297 -0
- package/tests/unit/fanout/types.spec.ts +308 -0
- package/tests/unit/github/batch-ops.spec.ts +179 -0
- package/tests/unit/learning/counter-example.spec.ts +168 -0
- package/tests/unit/learning/storage.spec.ts +154 -0
- package/tests/unit/preview/constraints.spec.ts +429 -0
- package/tests/unit/runs/attribution.spec.ts +204 -0
- package/tests/unit/schemas/task-contract.spec.ts +483 -0
- package/tests/unit/snapshot/builder.spec.ts +389 -0
- package/tests/unit/verification/engine-verifier.spec.ts +279 -0
- package/tests/unit/weave/authority-evaluator.spec.ts +404 -0
- package/tests/unit/weave/authority-schema.spec.ts +199 -0
- package/tests/unit/weave/auto-undraft-integration.spec.ts +349 -0
- package/tests/unit/weave/copilot-completion.spec.ts +182 -0
- package/tests/unit/weave/d1-executor.spec.ts +269 -0
- package/tests/unit/weave/d2-executor.spec.ts +334 -0
- package/tests/unit/weave/fanout-generator.spec.ts +365 -0
- package/tests/unit/weave/fanout-matcher.spec.ts +320 -0
- package/tests/unit/weave/fanout-schema.spec.ts +221 -0
- package/tests/unit/weave/mergeWeaveSequential.spec.ts +268 -0
- package/tests/unit/weave/metrics-calculator.spec.ts +212 -0
- package/tests/unit/weave/metrics-logger.spec.ts +233 -0
- package/tests/unit/weave/metrics-schema.spec.ts +383 -0
- package/tests/unit/weave/multi-repo-plan.spec.ts +221 -0
- package/tests/unit/weave/planner.spec.ts +227 -0
- package/tests/unit/weave/post-merge-checks.spec.ts +342 -0
- package/tests/unit/weave/recovery.spec.ts +306 -0
- package/tests/unit/weave/testfix/applier.spec.ts +364 -0
- package/tests/unit/weave/testfix/e2e.spec.ts +273 -0
- package/tests/unit/weave/testfix/integration.spec.ts +128 -0
- package/tests/unit/weave/testfix/matcher.spec.ts +321 -0
- package/tests/unit/weave/testfix/schema.spec.ts +298 -0
- package/tests/utils/fingerprint.spec.ts +251 -0
- package/tests/utils/paths.spec.ts +284 -0
- package/tests/utils/tokens.spec.ts +210 -0
- package/tests/utils/validation.spec.ts +215 -0
- package/tests/utils-validation.spec.ts +80 -0
- package/tests/validate-manifests.spec.ts +231 -0
- package/tests/validation.spec.ts +501 -0
- package/tests/vuln-gate.spec.ts +341 -0
- package/tests/weave/adr007-integration.spec.ts +309 -0
- package/tests/weave/checkpoint/cli-integration.spec.ts +118 -0
- package/tests/weave/checkpoint/storage.spec.ts +302 -0
- package/tests/weave/checkpoint/utils.spec.ts +223 -0
- package/tests/weave/frameHelper.spec.ts +423 -0
- package/tests/weave/gateFailureHandler.spec.ts +249 -0
- package/tests/weave/lockFile.spec.ts +387 -0
- package/tests/weave/mergeHelpers.spec.ts +173 -0
- package/tests/weave/receiptHelper.spec.ts +261 -0
- package/tests/weave/stateMachine.spec.ts +436 -0
- package/tests/weave-contract.test.ts +517 -0
- package/tests/weave-e2e.spec.ts +279 -0
- package/tests/weaveLock.spec.ts +136 -0
- package/tests/workflow-state-machine.spec.ts +274 -0
- package/tests/write-protection.spec.ts +213 -0
- package/tsconfig.json +18 -0
- package/tsup.config.ts +12 -0
- package/vitest.benchmark.config.ts +17 -0
- package/vitest.config.ts +28 -0
- package/vitest.git.config.ts +12 -0
- 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 };
|