@intentius/chant 0.124.28 → 0.124.30
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/dist/build-params.d.ts +34 -1
- package/dist/build-params.d.ts.map +1 -1
- package/dist/build-params.js +31 -1
- package/dist/change-set-graph.d.ts +8 -1
- package/dist/change-set-graph.d.ts.map +1 -1
- package/dist/change-set-graph.js +4 -2
- package/dist/change-set.d.ts +10 -0
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +4 -3
- package/dist/cli/build-params-cli.d.ts +7 -1
- package/dist/cli/build-params-cli.d.ts.map +1 -1
- package/dist/cli/build-params-cli.js +17 -8
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/build.js +6 -3
- package/dist/cli/handlers/approve.d.ts.map +1 -1
- package/dist/cli/handlers/approve.js +45 -0
- package/dist/cli/handlers/build.d.ts.map +1 -1
- package/dist/cli/handlers/build.js +18 -4
- package/dist/cli/handlers/fan-out.d.ts +9 -0
- package/dist/cli/handlers/fan-out.d.ts.map +1 -1
- package/dist/cli/handlers/fan-out.js +67 -8
- package/dist/cli/handlers/lifecycle-gc.d.ts +19 -0
- package/dist/cli/handlers/lifecycle-gc.d.ts.map +1 -0
- package/dist/cli/handlers/lifecycle-gc.js +143 -0
- package/dist/cli/handlers/pr.d.ts +11 -3
- package/dist/cli/handlers/pr.d.ts.map +1 -1
- package/dist/cli/handlers/pr.js +134 -26
- package/dist/cli/handlers/promote.d.ts +7 -0
- package/dist/cli/handlers/promote.d.ts.map +1 -1
- package/dist/cli/handlers/promote.js +210 -33
- package/dist/cli/handlers/release.d.ts +62 -5
- package/dist/cli/handlers/release.d.ts.map +1 -1
- package/dist/cli/handlers/release.js +414 -28
- package/dist/cli/handlers/run.d.ts +11 -1
- package/dist/cli/handlers/run.d.ts.map +1 -1
- package/dist/cli/handlers/run.js +67 -6
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +91 -10
- package/dist/cli/parse-args.d.ts.map +1 -1
- package/dist/cli/parse-args.js +73 -2
- package/dist/cli/registry.d.ts +32 -4
- package/dist/cli/registry.d.ts.map +1 -1
- package/dist/cli/run-events.d.ts +3 -2
- package/dist/cli/run-events.d.ts.map +1 -1
- package/dist/cli/run-events.js +5 -3
- package/dist/components/auto-release.d.ts +2 -0
- package/dist/components/auto-release.d.ts.map +1 -1
- package/dist/components/auto-release.js +1 -0
- package/dist/components/capability.d.ts +9 -0
- package/dist/components/capability.d.ts.map +1 -1
- package/dist/components/driver.d.ts +8 -0
- package/dist/components/driver.d.ts.map +1 -1
- package/dist/components/driver.js +35 -0
- package/dist/components/fan-out-inputs.d.ts +69 -0
- package/dist/components/fan-out-inputs.d.ts.map +1 -0
- package/dist/components/fan-out-inputs.js +169 -0
- package/dist/components/fan-out-record.d.ts +13 -0
- package/dist/components/fan-out-record.d.ts.map +1 -1
- package/dist/components/fan-out-record.js +16 -0
- package/dist/components/fan-out-run.d.ts.map +1 -1
- package/dist/components/fan-out-run.js +50 -0
- package/dist/components/fan-out.d.ts +4 -0
- package/dist/components/fan-out.d.ts.map +1 -1
- package/dist/components/pr-pipeline.d.ts +49 -0
- package/dist/components/pr-pipeline.d.ts.map +1 -1
- package/dist/components/pr-pipeline.js +38 -4
- package/dist/components/pr-run.d.ts +20 -2
- package/dist/components/pr-run.d.ts.map +1 -1
- package/dist/components/pr-run.js +26 -13
- package/dist/components/promote.d.ts +23 -0
- package/dist/components/promote.d.ts.map +1 -1
- package/dist/components/promote.js +60 -2
- package/dist/components/release-compile.d.ts +9 -0
- package/dist/components/release-compile.d.ts.map +1 -1
- package/dist/components/release-compile.js +9 -3
- package/dist/components/release-gate.d.ts +11 -1
- package/dist/components/release-gate.d.ts.map +1 -1
- package/dist/components/release-gate.js +10 -4
- package/dist/components/wave-plan.d.ts +16 -0
- package/dist/components/wave-plan.d.ts.map +1 -1
- package/dist/components/wave-plan.js +36 -2
- package/dist/config.d.ts +38 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -0
- package/dist/flag-params.d.ts +54 -0
- package/dist/flag-params.d.ts.map +1 -0
- package/dist/flag-params.js +130 -0
- package/dist/lifecycle/__fixtures__/publish-fakes.d.ts +120 -0
- package/dist/lifecycle/__fixtures__/publish-fakes.d.ts.map +1 -0
- package/dist/lifecycle/__fixtures__/publish-fakes.js +304 -0
- package/dist/lifecycle/change-set-store.d.ts +2 -1
- package/dist/lifecycle/change-set-store.d.ts.map +1 -1
- package/dist/lifecycle/change-set-store.js +2 -1
- package/dist/lifecycle/delivery-metrics.d.ts +139 -0
- package/dist/lifecycle/delivery-metrics.d.ts.map +1 -0
- package/dist/lifecycle/delivery-metrics.js +145 -0
- package/dist/lifecycle/deploy-outcome.d.ts +81 -0
- package/dist/lifecycle/deploy-outcome.d.ts.map +1 -0
- package/dist/lifecycle/deploy-outcome.js +101 -0
- package/dist/lifecycle/gate-change-set.d.ts +10 -1
- package/dist/lifecycle/gate-change-set.d.ts.map +1 -1
- package/dist/lifecycle/gate-change-set.js +35 -3
- package/dist/lifecycle/gate-ledger.d.ts +2 -3
- package/dist/lifecycle/gate-ledger.d.ts.map +1 -1
- package/dist/lifecycle/git.d.ts +30 -1
- package/dist/lifecycle/git.d.ts.map +1 -1
- package/dist/lifecycle/git.js +31 -5
- package/dist/lifecycle/index.d.ts +4 -0
- package/dist/lifecycle/index.d.ts.map +1 -1
- package/dist/lifecycle/index.js +4 -0
- package/dist/lifecycle/mixed-environment.d.ts +95 -0
- package/dist/lifecycle/mixed-environment.d.ts.map +1 -0
- package/dist/lifecycle/mixed-environment.js +154 -0
- package/dist/lifecycle/publish-attachments.d.ts +79 -0
- package/dist/lifecycle/publish-attachments.d.ts.map +1 -0
- package/dist/lifecycle/publish-attachments.js +179 -0
- package/dist/lifecycle/publish-credentials.d.ts +37 -0
- package/dist/lifecycle/publish-credentials.d.ts.map +1 -0
- package/dist/lifecycle/publish-credentials.js +69 -0
- package/dist/lifecycle/publish-declaration.d.ts +97 -0
- package/dist/lifecycle/publish-declaration.d.ts.map +1 -0
- package/dist/lifecycle/publish-declaration.js +83 -0
- package/dist/lifecycle/publish-forge.d.ts +53 -0
- package/dist/lifecycle/publish-forge.d.ts.map +1 -0
- package/dist/lifecycle/publish-forge.js +298 -0
- package/dist/lifecycle/publish-npm.d.ts +61 -0
- package/dist/lifecycle/publish-npm.d.ts.map +1 -0
- package/dist/lifecycle/publish-npm.js +242 -0
- package/dist/lifecycle/publish-oci.d.ts +64 -0
- package/dist/lifecycle/publish-oci.d.ts.map +1 -0
- package/dist/lifecycle/publish-oci.js +383 -0
- package/dist/lifecycle/publish-record.d.ts +66 -0
- package/dist/lifecycle/publish-record.d.ts.map +1 -0
- package/dist/lifecycle/publish-record.js +84 -0
- package/dist/lifecycle/publish-targets.d.ts +45 -0
- package/dist/lifecycle/publish-targets.d.ts.map +1 -0
- package/dist/lifecycle/publish-targets.js +85 -0
- package/dist/lifecycle/release-cut.d.ts +48 -1
- package/dist/lifecycle/release-cut.d.ts.map +1 -1
- package/dist/lifecycle/release-cut.js +116 -23
- package/dist/lifecycle/release-join.d.ts +95 -0
- package/dist/lifecycle/release-join.d.ts.map +1 -0
- package/dist/lifecycle/release-join.js +139 -0
- package/dist/lifecycle/release-ledger.d.ts +8 -3
- package/dist/lifecycle/release-ledger.d.ts.map +1 -1
- package/dist/lifecycle/release-ledger.js +2 -0
- package/dist/lifecycle/release-publish.d.ts +312 -0
- package/dist/lifecycle/release-publish.d.ts.map +1 -0
- package/dist/lifecycle/release-publish.js +335 -0
- package/dist/lifecycle/release-revocation.d.ts +80 -0
- package/dist/lifecycle/release-revocation.d.ts.map +1 -0
- package/dist/lifecycle/release-revocation.js +123 -0
- package/dist/lifecycle/release-store.d.ts +12 -2
- package/dist/lifecycle/release-store.d.ts.map +1 -1
- package/dist/lifecycle/release-store.js +4 -2
- package/dist/lifecycle/release-verify.d.ts +61 -0
- package/dist/lifecycle/release-verify.d.ts.map +1 -0
- package/dist/lifecycle/release-verify.js +92 -0
- package/dist/lifecycle/release-workstation.d.ts +91 -0
- package/dist/lifecycle/release-workstation.d.ts.map +1 -0
- package/dist/lifecycle/release-workstation.js +180 -0
- package/dist/lifecycle/retention-policy.d.ts +45 -0
- package/dist/lifecycle/retention-policy.d.ts.map +1 -0
- package/dist/lifecycle/retention-policy.js +43 -0
- package/dist/lifecycle/retention.d.ts +185 -0
- package/dist/lifecycle/retention.d.ts.map +1 -0
- package/dist/lifecycle/retention.js +400 -0
- package/dist/lifecycle/run-ledger.d.ts +1 -1
- package/dist/lifecycle/run-ledger.d.ts.map +1 -1
- package/dist/lifecycle/run-ledger.js +9 -0
- package/dist/op/activities/activity-contracts.d.ts +1 -0
- package/dist/op/activities/activity-contracts.d.ts.map +1 -1
- package/dist/op/activities/activity-contracts.js +1 -0
- package/dist/op/activities/shell.d.ts +6 -0
- package/dist/op/activities/shell.d.ts.map +1 -1
- package/dist/op/activities/shell.js +1 -1
- package/dist/op/local-executor.d.ts +23 -1
- package/dist/op/local-executor.d.ts.map +1 -1
- package/dist/op/local-executor.js +9 -3
- package/dist/op/runtime.d.ts +27 -0
- package/dist/op/runtime.d.ts.map +1 -1
- package/dist/op/runtime.js +20 -0
- package/dist/plan-summary.d.ts.map +1 -1
- package/dist/plan-summary.js +8 -2
- package/dist/pr-forge.d.ts +23 -0
- package/dist/pr-forge.d.ts.map +1 -1
- package/dist/pr-forge.js +44 -0
- package/dist/pr-loop.d.ts +17 -0
- package/dist/pr-loop.d.ts.map +1 -1
- package/dist/pr-loop.js +30 -4
- package/dist/pr-report-url.d.ts +82 -0
- package/dist/pr-report-url.d.ts.map +1 -0
- package/dist/pr-report-url.js +174 -0
- package/dist/provenance.d.ts +2 -2
- package/dist/provenance.d.ts.map +1 -1
- package/dist/run-event-store.d.ts +29 -2
- package/dist/run-event-store.d.ts.map +1 -1
- package/dist/run-event-store.js +50 -3
- package/dist/run-event-stream.d.ts +4 -3
- package/dist/run-event-stream.d.ts.map +1 -1
- package/dist/run-event-stream.js +7 -3
- package/dist/run-event.d.ts +34 -1
- package/dist/run-event.d.ts.map +1 -1
- package/dist/run-event.js +4 -0
- package/dist/wave-runtime.mjs +260 -229
- package/dist/workspace/__fixtures__/flag-workspace.d.ts +31 -0
- package/dist/workspace/__fixtures__/flag-workspace.d.ts.map +1 -0
- package/dist/workspace/__fixtures__/flag-workspace.js +114 -0
- package/dist/workspace/change-set.schema.json +5 -1
- package/dist/workspace/check.schema.json +4 -2
- package/dist/workspace/checks/records.d.ts +9 -1
- package/dist/workspace/checks/records.d.ts.map +1 -1
- package/dist/workspace/checks/records.js +35 -1
- package/dist/workspace/checks.d.ts +1 -0
- package/dist/workspace/checks.d.ts.map +1 -1
- package/dist/workspace/checks.js +2 -1
- package/dist/workspace/ci-green-forge.d.ts +2 -0
- package/dist/workspace/ci-green-forge.d.ts.map +1 -1
- package/dist/workspace/ci-green.d.ts +10 -0
- package/dist/workspace/ci-green.d.ts.map +1 -1
- package/dist/workspace/ci-green.js +14 -5
- package/dist/workspace/ci-run.d.ts +222 -0
- package/dist/workspace/ci-run.d.ts.map +1 -0
- package/dist/workspace/ci-run.js +464 -0
- package/dist/workspace/ci-serve.d.ts +214 -0
- package/dist/workspace/ci-serve.d.ts.map +1 -0
- package/dist/workspace/ci-serve.js +412 -0
- package/dist/workspace/declaration.d.ts +16 -0
- package/dist/workspace/declaration.d.ts.map +1 -1
- package/dist/workspace/declaration.js +26 -0
- package/dist/workspace/declaration.schema.json +64 -0
- package/dist/workspace/declared-kinds.d.ts +16 -0
- package/dist/workspace/declared-kinds.d.ts.map +1 -1
- package/dist/workspace/declared-kinds.js +25 -0
- package/dist/workspace/delivery-metrics.d.ts +91 -0
- package/dist/workspace/delivery-metrics.d.ts.map +1 -0
- package/dist/workspace/delivery-metrics.js +217 -0
- package/dist/workspace/delivery-metrics.schema.json +519 -0
- package/dist/workspace/flags-read.d.ts +37 -0
- package/dist/workspace/flags-read.d.ts.map +1 -0
- package/dist/workspace/flags-read.js +103 -0
- package/dist/workspace/flags.d.ts +100 -0
- package/dist/workspace/flags.d.ts.map +1 -0
- package/dist/workspace/flags.js +98 -0
- package/dist/workspace/graph-cli.js +1 -1
- package/dist/workspace/intent-cli.d.ts +11 -2
- package/dist/workspace/intent-cli.d.ts.map +1 -1
- package/dist/workspace/intent-cli.js +54 -5
- package/dist/workspace/intent-trace.d.ts +219 -0
- package/dist/workspace/intent-trace.d.ts.map +1 -0
- package/dist/workspace/intent-trace.js +314 -0
- package/dist/workspace/intent.d.ts +30 -6
- package/dist/workspace/intent.d.ts.map +1 -1
- package/dist/workspace/intent.js +141 -21
- package/dist/workspace/intent.schema.json +702 -6
- package/dist/workspace/overlap.d.ts +146 -0
- package/dist/workspace/overlap.d.ts.map +1 -0
- package/dist/workspace/overlap.js +276 -0
- package/dist/workspace/pr-report.schema.json +5 -0
- package/dist/workspace/reason-codes.d.ts +2 -0
- package/dist/workspace/reason-codes.d.ts.map +1 -1
- package/dist/workspace/reason-codes.js +3 -0
- package/dist/workspace/records.d.ts +15 -2
- package/dist/workspace/records.d.ts.map +1 -1
- package/dist/workspace/records.js +32 -0
- package/dist/workspace/records.schema.json +21 -2
- package/dist/workspace/reference-kinds/flag/flag.kind.mjs +32 -0
- package/dist/workspace/reference-kinds/flag/flag.schema.json +53 -0
- package/dist/workspace/releases.d.ts +9 -0
- package/dist/workspace/releases.d.ts.map +1 -1
- package/dist/workspace/releases.js +9 -0
- package/dist/workspace/releases.schema.json +123 -1
- package/dist/workspace/run-event.schema.json +24 -6
- package/dist/workspace/status-gates.d.ts +8 -0
- package/dist/workspace/status-gates.d.ts.map +1 -1
- package/dist/workspace/status-stewards.d.ts +2 -0
- package/dist/workspace/status-stewards.d.ts.map +1 -1
- package/dist/workspace/status-stewards.js +1 -0
- package/dist/workspace/status.d.ts +78 -0
- package/dist/workspace/status.d.ts.map +1 -1
- package/dist/workspace/status.js +170 -3
- package/dist/workspace/status.schema.json +210 -2
- package/dist/workspace/wip.d.ts.map +1 -1
- package/dist/workspace/wip.js +11 -3
- package/package.json +1 -1
- package/src/build-params.test.ts +46 -0
- package/src/build-params.ts +55 -1
- package/src/change-set-graph.ts +10 -2
- package/src/change-set.ts +14 -3
- package/src/cli/build-params-cli.ts +22 -9
- package/src/cli/commands/build.ts +6 -3
- package/src/cli/handlers/approve-release.test.ts +5 -1
- package/src/cli/handlers/approve-revoked.test.ts +155 -0
- package/src/cli/handlers/approve.ts +47 -0
- package/src/cli/handlers/build.test.ts +30 -0
- package/src/cli/handlers/build.ts +20 -4
- package/src/cli/handlers/fan-out.test.ts +262 -1
- package/src/cli/handlers/fan-out.ts +72 -8
- package/src/cli/handlers/intent-trace.e2e.test.ts +201 -0
- package/src/cli/handlers/lifecycle-gc.test.ts +126 -0
- package/src/cli/handlers/lifecycle-gc.ts +146 -0
- package/src/cli/handlers/pr.test.ts +148 -1
- package/src/cli/handlers/pr.ts +144 -28
- package/src/cli/handlers/promote.test.ts +280 -2
- package/src/cli/handlers/promote.ts +210 -34
- package/src/cli/handlers/release-implicit.e2e.test.ts +12 -4
- package/src/cli/handlers/release-join.e2e.test.ts +185 -0
- package/src/cli/handlers/release-publish-targets.e2e.test.ts +295 -0
- package/src/cli/handlers/release-verify.e2e.test.ts +117 -0
- package/src/cli/handlers/release-workstation-ci.e2e.test.ts +135 -0
- package/src/cli/handlers/release.e2e.test.ts +146 -32
- package/src/cli/handlers/release.ts +415 -28
- package/src/cli/handlers/run-auto-release.test.ts +9 -0
- package/src/cli/handlers/run-release.test.ts +55 -0
- package/src/cli/handlers/run.ts +69 -5
- package/src/cli/main.test.ts +1 -0
- package/src/cli/main.ts +91 -10
- package/src/cli/parse-args.ts +54 -2
- package/src/cli/registry.ts +32 -4
- package/src/cli/run-events.ts +5 -2
- package/src/components/auto-release.test.ts +9 -0
- package/src/components/auto-release.ts +3 -0
- package/src/components/capability.ts +9 -0
- package/src/components/driver.test.ts +24 -0
- package/src/components/driver.ts +36 -0
- package/src/components/fan-out-inputs.test.ts +85 -0
- package/src/components/fan-out-inputs.ts +192 -0
- package/src/components/fan-out-record.test.ts +10 -0
- package/src/components/fan-out-record.ts +19 -0
- package/src/components/fan-out-run.ts +48 -0
- package/src/components/fan-out.ts +4 -0
- package/src/components/pr-pipeline.ts +67 -4
- package/src/components/pr-run.test.ts +127 -0
- package/src/components/pr-run.ts +32 -12
- package/src/components/promote.ts +68 -2
- package/src/components/release-compile.ts +17 -3
- package/src/components/release-gate.ts +18 -4
- package/src/components/wave-plan.ts +45 -2
- package/src/config.ts +8 -0
- package/src/flag-params.test.ts +144 -0
- package/src/flag-params.ts +134 -0
- package/src/lifecycle/__fixtures__/publish-fakes.ts +351 -0
- package/src/lifecycle/change-set-store.ts +2 -1
- package/src/lifecycle/delivery-metrics.ts +263 -0
- package/src/lifecycle/deploy-outcome.ts +147 -0
- package/src/lifecycle/gate-change-set.ts +37 -6
- package/src/lifecycle/gate-ledger.ts +2 -2
- package/src/lifecycle/git.ts +61 -8
- package/src/lifecycle/index.ts +4 -0
- package/src/lifecycle/mixed-environment.test.ts +97 -0
- package/src/lifecycle/mixed-environment.ts +204 -0
- package/src/lifecycle/publish-attachments.ts +196 -0
- package/src/lifecycle/publish-credentials.ts +84 -0
- package/src/lifecycle/publish-declaration.ts +95 -0
- package/src/lifecycle/publish-forge.ts +325 -0
- package/src/lifecycle/publish-npm.ts +259 -0
- package/src/lifecycle/publish-oci.ts +396 -0
- package/src/lifecycle/publish-record.ts +113 -0
- package/src/lifecycle/publish-resume.test.ts +168 -0
- package/src/lifecycle/publish-targets.test.ts +494 -0
- package/src/lifecycle/publish-targets.ts +100 -0
- package/src/lifecycle/release-cut.test.ts +74 -2
- package/src/lifecycle/release-cut.ts +158 -22
- package/src/lifecycle/release-flag.test.ts +112 -0
- package/src/lifecycle/release-join.test.ts +68 -0
- package/src/lifecycle/release-join.ts +182 -0
- package/src/lifecycle/release-ledger.ts +9 -3
- package/src/lifecycle/release-publish.test.ts +225 -0
- package/src/lifecycle/release-publish.ts +568 -0
- package/src/lifecycle/release-revocation.ts +147 -0
- package/src/lifecycle/release-store.ts +15 -4
- package/src/lifecycle/release-verify.test.ts +110 -0
- package/src/lifecycle/release-verify.ts +120 -0
- package/src/lifecycle/release-workstation.test.ts +204 -0
- package/src/lifecycle/release-workstation.ts +216 -0
- package/src/lifecycle/retention-growth.e2e.test.ts +279 -0
- package/src/lifecycle/retention-policy.ts +63 -0
- package/src/lifecycle/retention.test.ts +363 -0
- package/src/lifecycle/retention.ts +508 -0
- package/src/lifecycle/run-ledger.ts +7 -1
- package/src/op/activities/activity-contracts.ts +1 -0
- package/src/op/activities/shell.ts +7 -1
- package/src/op/local-executor.ts +27 -4
- package/src/op/runtime.ts +42 -0
- package/src/plan-summary.test.ts +20 -0
- package/src/plan-summary.ts +8 -1
- package/src/pr-forge.test.ts +25 -0
- package/src/pr-forge.ts +62 -0
- package/src/pr-loop.test.ts +13 -1
- package/src/pr-loop.ts +41 -4
- package/src/pr-report-url.test.ts +131 -0
- package/src/pr-report-url.ts +209 -0
- package/src/provenance.ts +2 -2
- package/src/run-event-store.ts +63 -3
- package/src/run-event-stream.ts +8 -4
- package/src/run-event.ts +38 -1
- package/src/workspace/__fixtures__/flag-workspace.ts +132 -0
- package/src/workspace/__fixtures__/older-records/change-set-984534ea9.json +100 -0
- package/src/workspace/__fixtures__/older-records/older-records.json +326 -0
- package/src/workspace/change-set.schema.json +5 -1
- package/src/workspace/check.schema.json +4 -2
- package/src/workspace/checks/records.ts +35 -1
- package/src/workspace/checks.ts +2 -1
- package/src/workspace/ci-green-forge.ts +2 -0
- package/src/workspace/ci-green.ts +20 -5
- package/src/workspace/ci-run.test.ts +416 -0
- package/src/workspace/ci-run.ts +571 -0
- package/src/workspace/ci-serve.test.ts +268 -0
- package/src/workspace/ci-serve.ts +521 -0
- package/src/workspace/declaration.schema.json +64 -0
- package/src/workspace/declaration.test.ts +28 -0
- package/src/workspace/declaration.ts +38 -0
- package/src/workspace/declared-kinds.ts +40 -1
- package/src/workspace/delivery-metrics.schema.json +519 -0
- package/src/workspace/delivery-metrics.test.ts +236 -0
- package/src/workspace/delivery-metrics.ts +286 -0
- package/src/workspace/flags-read.ts +121 -0
- package/src/workspace/flags.test.ts +141 -0
- package/src/workspace/flags.ts +157 -0
- package/src/workspace/graph-cli.ts +1 -1
- package/src/workspace/intent-cli.ts +46 -5
- package/src/workspace/intent-trace.test.ts +173 -0
- package/src/workspace/intent-trace.ts +484 -0
- package/src/workspace/intent.schema.json +702 -6
- package/src/workspace/intent.ts +148 -25
- package/src/workspace/older-records.test.ts +412 -0
- package/src/workspace/overlap.test.ts +165 -0
- package/src/workspace/overlap.ts +340 -0
- package/src/workspace/pr-report.schema.json +5 -0
- package/src/workspace/read-contract.e2e.test.ts +2 -1
- package/src/workspace/reason-codes.test.ts +5 -0
- package/src/workspace/reason-codes.ts +3 -0
- package/src/workspace/record-assets.test.ts +2 -1
- package/src/workspace/records-contract.e2e.test.ts +2 -1
- package/src/workspace/records.schema.json +21 -2
- package/src/workspace/records.ts +36 -2
- package/src/workspace/reference-kinds/flag/flag.kind.mjs +32 -0
- package/src/workspace/reference-kinds/flag/flag.schema.json +53 -0
- package/src/workspace/releases.schema.json +123 -1
- package/src/workspace/releases.ts +11 -0
- package/src/workspace/run-event.schema.json +24 -6
- package/src/workspace/status-contract.test.ts +29 -0
- package/src/workspace/status-gates.ts +8 -0
- package/src/workspace/status-mixed.test.ts +152 -0
- package/src/workspace/status-revoked.test.ts +153 -0
- package/src/workspace/status-stewards.ts +3 -0
- package/src/workspace/status.schema.json +210 -2
- package/src/workspace/status.ts +254 -3
- package/src/workspace/wip.ts +11 -2
|
@@ -34,6 +34,15 @@
|
|
|
34
34
|
* the plan before the gate is decided, and the digest is carried rather than
|
|
35
35
|
* recomputed, so the approval still stands.
|
|
36
36
|
*
|
|
37
|
+
* The approval and the progress are bound to different things (#4081). The
|
|
38
|
+
* approval is bound to the plan digest, the derivation: who runs, in what
|
|
39
|
+
* order, off which edges. The progress is bound to each component's input
|
|
40
|
+
* digest (../../components/fan-out-inputs.ts): a component the earlier
|
|
41
|
+
* attempt applied stays `already-applied` only while what it would apply is
|
|
42
|
+
* the same, and one whose template, step inputs or upstream moved runs again
|
|
43
|
+
* with a line saying so. The fix after a failure keeps the approval, and a
|
|
44
|
+
* different change of the same shape does not inherit the progress.
|
|
45
|
+
*
|
|
37
46
|
* `--wave-gate <name>` (#3049) swaps the one gate for one per wave: the same
|
|
38
47
|
* repeated command stops at each wave's gate in turn, each planned after the
|
|
39
48
|
* wave before it applied, and `chant approve fan-out <name>-wave-<n>` answers
|
|
@@ -48,6 +57,7 @@ import { changedFilesBetween, lexiconChangedUnits } from "../../components/chang
|
|
|
48
57
|
import { deriveFanOut, fanOutRegistry } from "../../components/fan-out-support.js";
|
|
49
58
|
import { EarlierWaveNotAppliedError, runFanOut } from "../../components/fan-out-run.js";
|
|
50
59
|
import { readFanOutAttempt, writeFanOutAttempt } from "../../components/fan-out-record.js";
|
|
60
|
+
import { componentInputDigests, progressThatCarries } from "../../components/fan-out-inputs.js";
|
|
51
61
|
import { describeChangedWave, withWaveRecord } from "../../gated-waves.js";
|
|
52
62
|
import { renderFanOutHuman, renderFanOutJson, renderFanOutPlan } from "../../components/fan-out-output.js";
|
|
53
63
|
import { ndjsonProgressSink } from "../../components/run-progress.js";
|
|
@@ -56,6 +66,8 @@ import { summaryLedgerPrefix, writeGatedRunSummary } from "../../op/gate-summary
|
|
|
56
66
|
import { approveCommand, gateIsSealed } from "../../op/gate.js";
|
|
57
67
|
import { getHeadCommit } from "../../lifecycle/git.js";
|
|
58
68
|
import { remainingFanOut } from "../../components/fan-out.js";
|
|
69
|
+
import { readDeployedOutputs } from "../../components/wave-plan.js";
|
|
70
|
+
import { deployContext } from "../../components/driver.js";
|
|
59
71
|
import { resolveCliBuildParams, parseParamFlags } from "../build-params-cli.js";
|
|
60
72
|
import { formatError, formatInfo, formatWarning } from "../format.js";
|
|
61
73
|
import { FAN_OUT_GATE_OP } from "../../op/gate-name.js";
|
|
@@ -233,7 +245,12 @@ export async function runComponentsFanOut(ctx) {
|
|
|
233
245
|
// real run happens inside `runFanOut`, before the gate is decided, so an
|
|
234
246
|
// approval survives the resume rather than being re-asked for.
|
|
235
247
|
const resumePath = args.resume ? resolve(args.resume) : undefined;
|
|
248
|
+
// What each component would apply now (#4081). The record keeps it for
|
|
249
|
+
// every component that applies, and a later attempt carries progress only
|
|
250
|
+
// where it is unchanged.
|
|
251
|
+
const inputsNow = resumePath ? componentInputDigests(derived.components, { projectRoot: projectPath, env: args.env ?? "local" }) : {};
|
|
236
252
|
let priorCompleted = [];
|
|
253
|
+
let priorInputs = {};
|
|
237
254
|
let priorOutputs = {};
|
|
238
255
|
let priorWaves = [];
|
|
239
256
|
let priorCarried = {};
|
|
@@ -259,9 +276,27 @@ export async function runComponentsFanOut(ctx) {
|
|
|
259
276
|
// as progress would block their subtrees again on the very run that
|
|
260
277
|
// exists to retry them — the operator repeated the command precisely
|
|
261
278
|
// because the thing that failed is now expected to work.
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
279
|
+
//
|
|
280
|
+
// And only the part of `completed` whose input is the same now (#4081).
|
|
281
|
+
// The plan digest identifies the derivation, which a different change
|
|
282
|
+
// of the same shape shares; the input digest says what was applied.
|
|
283
|
+
const split = progressThatCarries(attempt, inputsNow);
|
|
284
|
+
if (split.unrecorded && split.changed.length > 0) {
|
|
285
|
+
console.error(formatWarning({
|
|
286
|
+
message: `--resume: "${args.resume}" does not record what each component applied, so none of its progress carries`,
|
|
287
|
+
hint: "It was written before chant recorded component inputs. Everything selected will run.",
|
|
288
|
+
}));
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
for (const name of split.changed) {
|
|
292
|
+
console.error(formatInfo(`${name}: changed since the earlier attempt, so it runs again`));
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
const carried = new Set(split.carried);
|
|
296
|
+
priorCompleted = split.carried;
|
|
297
|
+
priorInputs = Object.fromEntries(split.carried.map((name) => [name, inputsNow[name]]));
|
|
298
|
+
priorOutputs = Object.fromEntries(Object.entries(attempt.outputs).filter(([name]) => carried.has(name)));
|
|
299
|
+
progress = { completed: split.carried };
|
|
265
300
|
priorWaves = attempt.waves ?? [];
|
|
266
301
|
// What steps kept per member (#3459), such as a choudoufu root's wave
|
|
267
302
|
// resume file. Each step decides whether what it kept still applies.
|
|
@@ -291,6 +326,29 @@ export async function runComponentsFanOut(ctx) {
|
|
|
291
326
|
}
|
|
292
327
|
}
|
|
293
328
|
const registry = await fanOutRegistry(projectPath, config);
|
|
329
|
+
const env = args.env ?? "local";
|
|
330
|
+
// A completed component's recorded outputs win over a `--seed-outputs`
|
|
331
|
+
// entry for the same name, as a fresh apply's outputs merge over a seed in
|
|
332
|
+
// the driver: the record holds what this fan-out itself applied. A seed
|
|
333
|
+
// neither gives is read from the deployed estate (#4104), through its
|
|
334
|
+
// capability's `outputs`, as pr-plan reads a dependency outside the change.
|
|
335
|
+
// One that cannot be read leaves its dependents' references unresolved.
|
|
336
|
+
const componentOutputs = { ...seededOutputs, ...priorOutputs };
|
|
337
|
+
const seeds = (progress ? remainingFanOut(derived.plan, derived.components, progress) : derived.plan).seeds;
|
|
338
|
+
let deployedSeeds;
|
|
339
|
+
try {
|
|
340
|
+
deployedSeeds = await readDeployedOutputs(seeds, new Map(derived.components.map((c) => [c.name, c])), registry, (name) => deployContext({ env }, name), componentOutputs);
|
|
341
|
+
}
|
|
342
|
+
catch (err) {
|
|
343
|
+
console.error(formatError({
|
|
344
|
+
message: `could not read the deployed outputs of ${seeds.filter((s) => !(s in componentOutputs)).join(", ")}: ${err instanceof Error ? err.message : String(err)}`,
|
|
345
|
+
hint: "Nothing ran. --seed-outputs <file> gives a component's outputs instead of reading them.",
|
|
346
|
+
}));
|
|
347
|
+
return 1;
|
|
348
|
+
}
|
|
349
|
+
for (const [name, keys] of Object.entries(deployedSeeds)) {
|
|
350
|
+
console.error(formatInfo(`${name}: outputs read from the deployed estate (${keys.length > 0 ? keys.join(", ") : "none yet"})`));
|
|
351
|
+
}
|
|
294
352
|
// #3061: the commit this run deploys, for the workloads' vcs.ref.head.revision.
|
|
295
353
|
const revision = await getHeadCommit().catch(() => undefined);
|
|
296
354
|
// The record is rewritten as each component settles, not only once the run
|
|
@@ -298,6 +356,7 @@ export async function runComponentsFanOut(ctx) {
|
|
|
298
356
|
// runner, ctrl-c) then still knows that the first two applied, and the
|
|
299
357
|
// repeated command picks up from there instead of redoing them.
|
|
300
358
|
const completedSoFar = new Set(priorCompleted);
|
|
359
|
+
const inputsSoFar = { ...priorInputs };
|
|
301
360
|
const failedSoFar = [];
|
|
302
361
|
const outputsSoFar = { ...priorOutputs };
|
|
303
362
|
let wavesSoFar = priorWaves;
|
|
@@ -310,6 +369,7 @@ export async function runComponentsFanOut(ctx) {
|
|
|
310
369
|
completed: [...completedSoFar].sort(),
|
|
311
370
|
failed: [...failedSoFar].sort(),
|
|
312
371
|
outputs: outputsSoFar,
|
|
372
|
+
inputs: Object.fromEntries(Object.entries(inputsSoFar).sort(([a], [b]) => a.localeCompare(b))),
|
|
313
373
|
...(wavesSoFar.length > 0 ? { waves: wavesSoFar } : {}),
|
|
314
374
|
...(Object.keys(carriedSoFar).length > 0 ? { carried: carriedSoFar } : {}),
|
|
315
375
|
};
|
|
@@ -322,12 +382,9 @@ export async function runComponentsFanOut(ctx) {
|
|
|
322
382
|
let result;
|
|
323
383
|
try {
|
|
324
384
|
result = await runFanOut(derived.plan, derived.components, registry, {
|
|
325
|
-
env
|
|
385
|
+
env,
|
|
326
386
|
releaseIdentity: () => (revision ? { revision } : {}),
|
|
327
|
-
|
|
328
|
-
// entry for the same name, as a fresh apply's outputs merge over a seed in
|
|
329
|
-
// the driver: the record holds what this fan-out itself applied.
|
|
330
|
-
componentOutputs: { ...seededOutputs, ...priorOutputs },
|
|
387
|
+
componentOutputs,
|
|
331
388
|
...(gate ? { gate } : {}),
|
|
332
389
|
...(waveGate ? { waveGate } : {}),
|
|
333
390
|
...(waveGate
|
|
@@ -355,6 +412,8 @@ export async function runComponentsFanOut(ctx) {
|
|
|
355
412
|
onComponentSettled: (settled, outputs) => {
|
|
356
413
|
if (settled.status === "ok") {
|
|
357
414
|
completedSoFar.add(settled.component);
|
|
415
|
+
if (inputsNow[settled.component] !== undefined)
|
|
416
|
+
inputsSoFar[settled.component] = inputsNow[settled.component];
|
|
358
417
|
if (outputs)
|
|
359
418
|
outputsSoFar[settled.component] = outputs;
|
|
360
419
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `chant lifecycle gc [--yes] [--push] [--json] [--verbose]` (#4036): prune
|
|
3
|
+
* stored change sets, releases and their templates from `chant/lifecycle`, and
|
|
4
|
+
* run event files from this host, by the retention policy.
|
|
5
|
+
*
|
|
6
|
+
* Without `--yes` it is a dry run: it prints what it would remove and changes
|
|
7
|
+
* nothing. With `--yes` it writes one commit to the local `chant/lifecycle`
|
|
8
|
+
* that removes those files, and deletes the run event files. It pushes only
|
|
9
|
+
* with `--push`. History is never rewritten, so a pruned file stays in the
|
|
10
|
+
* branch's earlier commits. The rules are in ../../lifecycle/retention.ts.
|
|
11
|
+
*
|
|
12
|
+
* The policy is the defaults, overridden by the `retention` block of the
|
|
13
|
+
* workspace declaration at base when the checkout is a workspace. The prune
|
|
14
|
+
* covers the whole branch, every member, from wherever in the repository it
|
|
15
|
+
* runs.
|
|
16
|
+
*/
|
|
17
|
+
import type { CommandContext } from "../registry.js";
|
|
18
|
+
export declare function runLifecycleGc(ctx: CommandContext): Promise<number>;
|
|
19
|
+
//# sourceMappingURL=lifecycle-gc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle-gc.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/lifecycle-gc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAuClD,wBAAsB,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAqFzE"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `chant lifecycle gc [--yes] [--push] [--json] [--verbose]` (#4036): prune
|
|
3
|
+
* stored change sets, releases and their templates from `chant/lifecycle`, and
|
|
4
|
+
* run event files from this host, by the retention policy.
|
|
5
|
+
*
|
|
6
|
+
* Without `--yes` it is a dry run: it prints what it would remove and changes
|
|
7
|
+
* nothing. With `--yes` it writes one commit to the local `chant/lifecycle`
|
|
8
|
+
* that removes those files, and deletes the run event files. It pushes only
|
|
9
|
+
* with `--push`. History is never rewritten, so a pruned file stays in the
|
|
10
|
+
* branch's earlier commits. The rules are in ../../lifecycle/retention.ts.
|
|
11
|
+
*
|
|
12
|
+
* The policy is the defaults, overridden by the `retention` block of the
|
|
13
|
+
* workspace declaration at base when the checkout is a workspace. The prune
|
|
14
|
+
* covers the whole branch, every member, from wherever in the repository it
|
|
15
|
+
* runs.
|
|
16
|
+
*/
|
|
17
|
+
import { execFileSync } from "node:child_process";
|
|
18
|
+
import { existsSync } from "node:fs";
|
|
19
|
+
import { dirname, join, resolve } from "node:path";
|
|
20
|
+
import { formatError, formatSuccess, formatWarning } from "../format.js";
|
|
21
|
+
const USAGE = "chant lifecycle gc [--yes] [--push] [--json] [--verbose]";
|
|
22
|
+
function tryGit(cwd, args) {
|
|
23
|
+
try {
|
|
24
|
+
return execFileSync("git", args, { cwd, encoding: "utf-8", stdio: ["ignore", "pipe", "ignore"] }).trim();
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/** Whether a workspace declaration sits in `cwd` or a directory above it, up to the repository's top. */
|
|
31
|
+
function inWorkspace(cwd, top) {
|
|
32
|
+
for (let dir = cwd;; dir = dirname(dir)) {
|
|
33
|
+
if (existsSync(join(dir, "chant.workspace.json")) || existsSync(join(dir, "chant.workspace.jsonc")))
|
|
34
|
+
return true;
|
|
35
|
+
if (dir === top || dirname(dir) === dir)
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/** Every commit with a `ci/revoked/<sha>` tag, counted as `chant release cut` counts it. */
|
|
40
|
+
async function revokedCommits(cwd, top, green, workspace) {
|
|
41
|
+
if (workspace) {
|
|
42
|
+
const { readCiTags } = await import("../../workspace/ci-green.js");
|
|
43
|
+
const base = green
|
|
44
|
+
? (tryGit(top, ["rev-parse", "--verify", "--quiet", `refs/remotes/origin/${green.branch}^{commit}`]) ??
|
|
45
|
+
tryGit(top, ["rev-parse", "--verify", "--quiet", `refs/heads/${green.branch}^{commit}`]) ??
|
|
46
|
+
tryGit(top, ["rev-parse", "HEAD"]))
|
|
47
|
+
: null;
|
|
48
|
+
return new Set(readCiTags(top, green, base).revoked.keys());
|
|
49
|
+
}
|
|
50
|
+
// With no declaration every tag counts, as readCiTags counts them without `ci.green`.
|
|
51
|
+
const out = tryGit(cwd, ["for-each-ref", "--format=%(refname:lstrip=4)", "refs/tags/ci/revoked/"]) ?? "";
|
|
52
|
+
return new Set(out.split("\n").filter((s) => /^[0-9a-f]{40,64}$/.test(s)));
|
|
53
|
+
}
|
|
54
|
+
const kb = (bytes) => (bytes >= 1024 * 1024 ? `${(bytes / 1024 / 1024).toFixed(1)} MB` : `${(bytes / 1024).toFixed(1)} KB`);
|
|
55
|
+
export async function runLifecycleGc(ctx) {
|
|
56
|
+
const { args } = ctx;
|
|
57
|
+
if (args.extraPositional) {
|
|
58
|
+
console.error(formatError({ message: `lifecycle gc takes no argument, and was given "${args.extraPositional}"`, hint: USAGE }));
|
|
59
|
+
return 1;
|
|
60
|
+
}
|
|
61
|
+
const cwd = resolve(".");
|
|
62
|
+
const top = tryGit(cwd, ["rev-parse", "--show-toplevel"]);
|
|
63
|
+
if (!top) {
|
|
64
|
+
console.error(formatError({ message: "lifecycle gc prunes the chant/lifecycle branch, and this directory is not in a git repository", hint: USAGE }));
|
|
65
|
+
return 1;
|
|
66
|
+
}
|
|
67
|
+
const dryRun = args.yes !== true;
|
|
68
|
+
const { resolveRetention } = await import("../../lifecycle/retention-policy.js");
|
|
69
|
+
let policy = resolveRetention(null);
|
|
70
|
+
let green = null;
|
|
71
|
+
const workspace = inWorkspace(cwd, top);
|
|
72
|
+
if (workspace) {
|
|
73
|
+
const { scopeSource } = await import("../../workspace/write-scope.js");
|
|
74
|
+
const source = scopeSource(cwd);
|
|
75
|
+
if (!source.declaration) {
|
|
76
|
+
console.error(formatError({ message: `the workspace declaration can't be read, so its retention policy is unknown and nothing is pruned: ${source.failure?.message ?? "no declaration"}` }));
|
|
77
|
+
return 1;
|
|
78
|
+
}
|
|
79
|
+
policy = resolveRetention(source.declaration.retention);
|
|
80
|
+
green = source.declaration.ci?.green ?? null;
|
|
81
|
+
}
|
|
82
|
+
// Read the remote's facts first: a prune planned on a stale branch could
|
|
83
|
+
// remove what a newer gate binds, and a forked branch must not be pushed over.
|
|
84
|
+
const { fetchLifecycleStatus } = await import("../../lifecycle/git.js");
|
|
85
|
+
const fetched = await fetchLifecycleStatus({ cwd });
|
|
86
|
+
if (fetched.status === "diverged" || fetched.status === "unreachable") {
|
|
87
|
+
const why = fetched.status === "diverged" ? `the local chant/lifecycle and ${fetched.remote}'s have forked` : `${fetched.remote} did not answer: ${fetched.stderr}`;
|
|
88
|
+
if (!dryRun) {
|
|
89
|
+
console.error(formatError({ message: `nothing was pruned: ${why}`, hint: "Bring chant/lifecycle up to date with its remote, then run again." }));
|
|
90
|
+
return 1;
|
|
91
|
+
}
|
|
92
|
+
if (!args.json)
|
|
93
|
+
console.error(formatWarning({ message: `planned on the local branch only: ${why}` }));
|
|
94
|
+
}
|
|
95
|
+
const { runLifecycleGc: run } = await import("../../lifecycle/retention.js");
|
|
96
|
+
const report = await run({
|
|
97
|
+
cwd,
|
|
98
|
+
policy,
|
|
99
|
+
now: new Date(),
|
|
100
|
+
revokedCommits: await revokedCommits(cwd, top, green, workspace),
|
|
101
|
+
dryRun,
|
|
102
|
+
push: args.push === true,
|
|
103
|
+
});
|
|
104
|
+
if (args.json) {
|
|
105
|
+
console.log(JSON.stringify(report, null, 2));
|
|
106
|
+
return 0;
|
|
107
|
+
}
|
|
108
|
+
const lc = report.lifecycle;
|
|
109
|
+
const count = (list, kind) => list.filter((f) => f.kind === kind).length;
|
|
110
|
+
const bytes = lc.remove.reduce((n, f) => n + f.bytes, 0);
|
|
111
|
+
const verb = dryRun ? "would remove" : "removed";
|
|
112
|
+
if (!lc.tip) {
|
|
113
|
+
console.error("No chant/lifecycle branch: nothing stored to prune.");
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
console.log(`chant/lifecycle at ${lc.tip.slice(0, 12)}: ${verb} ${count(lc.remove, "change-set")} change set(s), ${count(lc.remove, "release")} release(s) and ${count(lc.remove, "template")} template(s), ${kb(bytes)}; ` +
|
|
117
|
+
`keeps ${count(lc.keep, "change-set")}, ${count(lc.keep, "release")} and ${count(lc.keep, "template")}`);
|
|
118
|
+
console.log(` tree at the tip: ${lc.before.files} file(s), ${kb(lc.before.bytes)} before; ${lc.after.files} file(s), ${kb(lc.after.bytes)} after. The ledgers (${kb(lc.before.ledgers.bytes)}) are never pruned, and history keeps every removed file.`);
|
|
119
|
+
if (args.verbose)
|
|
120
|
+
for (const f of lc.remove)
|
|
121
|
+
console.log(` - ${f.path}`);
|
|
122
|
+
}
|
|
123
|
+
const ev = report.runEvents;
|
|
124
|
+
if (ev.dir) {
|
|
125
|
+
console.log(` run events in ${ev.dir}: ${verb} ${ev.remove.length} file(s), ${kb(ev.remove.reduce((n, f) => n + f.bytes, 0))}; keeps ${ev.kept.files}`);
|
|
126
|
+
if (args.verbose)
|
|
127
|
+
for (const f of ev.remove)
|
|
128
|
+
console.log(` - ${f.file}`);
|
|
129
|
+
}
|
|
130
|
+
if (dryRun) {
|
|
131
|
+
console.error("Dry run: nothing was removed. Run again with --yes to prune.");
|
|
132
|
+
}
|
|
133
|
+
else if (lc.commit) {
|
|
134
|
+
console.error(formatSuccess(`Pruned in commit ${lc.commit.slice(0, 12)} on chant/lifecycle`));
|
|
135
|
+
if (lc.pushed)
|
|
136
|
+
console.error(" pushed");
|
|
137
|
+
else if (lc.pushWarning)
|
|
138
|
+
console.error(formatWarning({ message: lc.pushWarning }));
|
|
139
|
+
else
|
|
140
|
+
console.error(" not pushed: run with --push, or push chant/lifecycle yourself");
|
|
141
|
+
}
|
|
142
|
+
return 0;
|
|
143
|
+
}
|
|
@@ -33,7 +33,15 @@
|
|
|
33
33
|
* one `run-event.schema.json` line each: the planning as a `plan` phase with
|
|
34
34
|
* a step per component, the gate's decision as a `gate` phase, and on
|
|
35
35
|
* pr-apply the apply's waves and components as `chant run --components`
|
|
36
|
-
* streams them.
|
|
36
|
+
* streams them. A component the apply does not start settles too, `blocked`
|
|
37
|
+
* behind a failed dependency or `already-applied` on a resumed apply.
|
|
38
|
+
* With or without it, pr-apply prints a line on stderr as each wave starts
|
|
39
|
+
* and as each component settles, so a job log shows the waves in order.
|
|
40
|
+
*
|
|
41
|
+
* `--report-url <s3 or file URL>` (#4007) copies `pr-<stage>.json`,
|
|
42
|
+
* `change-set.json` and, with `--events-json`, the events to
|
|
43
|
+
* `<url>/<pr>/<commit>/`, the events again as each wave and component
|
|
44
|
+
* settles (`../../pr-report-url.ts`).
|
|
37
45
|
*
|
|
38
46
|
* `--member <name>` (#3465) runs a workspace member's loop: the member's
|
|
39
47
|
* generated pipeline passes it from the member's directory. The gate is
|
|
@@ -44,8 +52,8 @@
|
|
|
44
52
|
import type { CommandContext } from "../registry.js";
|
|
45
53
|
/** Where the reports land unless `--output` says. */
|
|
46
54
|
export declare const PR_REPORT_DIR = ".chant/pr";
|
|
47
|
-
/** chant components pr-plan --base <ref> --pr <n> [--env <env>] [--gate <name>] [--forge <kind>] [--output <dir>] [--json] [--events-json] */
|
|
55
|
+
/** chant components pr-plan --base <ref> --pr <n> [--env <env>] [--gate <name>] [--forge <kind>] [--output <dir>] [--json] [--events-json] [--report-url <url>] */
|
|
48
56
|
export declare function runComponentsPrPlan(ctx: CommandContext): Promise<number>;
|
|
49
|
-
/** chant components pr-apply --base <ref> [--pr <n>] [--env <env>] [--gate <name>] [--forge <kind>] [--require-review] [--output <dir>] [--json] [--events-json] */
|
|
57
|
+
/** chant components pr-apply --base <ref> [--pr <n>] [--env <env>] [--gate <name>] [--forge <kind>] [--require-review] [--output <dir>] [--json] [--events-json] [--report-url <url>] */
|
|
50
58
|
export declare function runComponentsPrApply(ctx: CommandContext): Promise<number>;
|
|
51
59
|
//# sourceMappingURL=pr.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pr.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/pr.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"pr.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/pr.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AA8CH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAMlD,qDAAqD;AACrD,eAAO,MAAM,aAAa,cAAc,CAAC;AA6RzC,mKAAmK;AACnK,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAGxE;AAwDD,yLAAyL;AACzL,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAGzE"}
|