@intentius/chant 0.124.27 → 0.124.29
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/README.md +1 -1
- package/dist/__golden__/wave-loop/fan-out-gated.json +8 -0
- package/dist/__golden__/wave-loop/fan-out-no-members.json +4 -0
- package/dist/__golden__/wave-loop/fan-out-only.json +6 -0
- package/dist/__golden__/wave-loop/op-by-apply-hold.json +2 -0
- package/dist/__golden__/wave-loop/op-cost-member.json +3 -0
- package/dist/__golden__/wave-loop/op-held-on-before-apply.json +1 -0
- package/dist/__golden__/wave-loop/op-held-on.json +2 -0
- package/dist/__golden__/wave-loop/op-hooks-held.json +2 -0
- package/dist/__golden__/wave-loop/op-hooks-hold-before-apply.json +2 -0
- package/dist/__golden__/wave-loop/op-hooks-refused-at-base.json +3 -0
- package/dist/__golden__/wave-loop/op-hooks-share.json +3 -0
- package/dist/__golden__/wave-loop/op-per-run.json +7 -0
- package/dist/__golden__/wave-loop/op-pr-review.json +7 -0
- package/dist/__golden__/wave-loop/op-sealed.json +3 -0
- package/dist/__golden__/wave-loop/op-spend.json +3 -0
- package/dist/__golden__/wave-loop/op-wave-commands.json +7 -0
- package/dist/__golden__/wave-loop/op-wide-waiting.json +4 -0
- 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 +63 -0
- package/dist/change-set-graph.d.ts.map +1 -0
- package/dist/change-set-graph.js +130 -0
- package/dist/change-set.d.ts +62 -3
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +36 -4
- package/dist/chant-version.d.ts +9 -0
- package/dist/chant-version.d.ts.map +1 -0
- package/dist/chant-version.js +16 -0
- 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 +8 -0
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/build.js +15 -11
- package/dist/cli/commands/check-lexicon-docs.d.ts.map +1 -1
- package/dist/cli/commands/check-lexicon-docs.js +30 -2
- package/dist/cli/commands/check-lexicon.d.ts.map +1 -1
- package/dist/cli/commands/check-lexicon.js +13 -2
- package/dist/cli/commands/init-lexicon/templates/docs.d.ts +4 -1
- package/dist/cli/commands/init-lexicon/templates/docs.d.ts.map +1 -1
- package/dist/cli/commands/init-lexicon/templates/docs.js +6 -6
- package/dist/cli/commands/init-lexicon.d.ts.map +1 -1
- package/dist/cli/commands/init-lexicon.js +17 -8
- package/dist/cli/handlers/approve.d.ts.map +1 -1
- package/dist/cli/handlers/approve.js +64 -4
- package/dist/cli/handlers/build.d.ts.map +1 -1
- package/dist/cli/handlers/build.js +43 -4
- package/dist/cli/handlers/change-set.d.ts +10 -0
- package/dist/cli/handlers/change-set.d.ts.map +1 -1
- package/dist/cli/handlers/change-set.js +51 -1
- package/dist/cli/handlers/fan-out.d.ts +10 -1
- package/dist/cli/handlers/fan-out.d.ts.map +1 -1
- package/dist/cli/handlers/fan-out.js +54 -6
- 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 +16 -2
- package/dist/cli/handlers/pr.d.ts.map +1 -1
- package/dist/cli/handlers/pr.js +269 -37
- 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 +440 -28
- package/dist/cli/handlers/release.d.ts +91 -0
- package/dist/cli/handlers/release.d.ts.map +1 -0
- package/dist/cli/handlers/release.js +589 -0
- package/dist/cli/handlers/run.d.ts +38 -2
- package/dist/cli/handlers/run.d.ts.map +1 -1
- package/dist/cli/handlers/run.js +234 -16
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +143 -17
- package/dist/cli/mcp/workspace-tools.js +1 -1
- package/dist/cli/parse-args.d.ts.map +1 -1
- package/dist/cli/parse-args.js +73 -5
- package/dist/cli/registry.d.ts +43 -5
- package/dist/cli/registry.d.ts.map +1 -1
- package/dist/cli/run-events.d.ts +30 -0
- package/dist/cli/run-events.d.ts.map +1 -0
- package/dist/cli/run-events.js +49 -0
- package/dist/cli/version.d.ts +3 -5
- package/dist/cli/version.d.ts.map +1 -1
- package/dist/cli/version.js +3 -13
- package/dist/codegen/docs-in-site.d.ts +71 -0
- package/dist/codegen/docs-in-site.d.ts.map +1 -0
- package/dist/codegen/docs-in-site.js +177 -0
- package/dist/codegen/docs-types.d.ts +14 -1
- package/dist/codegen/docs-types.d.ts.map +1 -1
- package/dist/codegen/docs.d.ts +18 -1
- package/dist/codegen/docs.d.ts.map +1 -1
- package/dist/codegen/docs.js +40 -7
- package/dist/codegen/rehype-base-url.mjs +15 -9
- package/dist/components/auto-release.d.ts +6 -1
- package/dist/components/auto-release.d.ts.map +1 -1
- package/dist/components/auto-release.js +3 -0
- package/dist/components/capability.d.ts +9 -0
- package/dist/components/capability.d.ts.map +1 -1
- package/dist/components/cli-support.d.ts +6 -0
- package/dist/components/cli-support.d.ts.map +1 -1
- package/dist/components/cli-support.js +10 -9
- package/dist/components/driver.d.ts +50 -9
- package/dist/components/driver.d.ts.map +1 -1
- package/dist/components/driver.js +116 -54
- 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 +7 -0
- package/dist/components/fan-out-run.d.ts.map +1 -1
- package/dist/components/fan-out-run.js +85 -26
- 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 +25 -0
- package/dist/components/pr-pipeline.d.ts.map +1 -1
- package/dist/components/pr-pipeline.js +22 -4
- package/dist/components/pr-run.d.ts +11 -0
- package/dist/components/pr-run.d.ts.map +1 -1
- package/dist/components/pr-run.js +20 -1
- package/dist/components/promote-order.d.ts +38 -0
- package/dist/components/promote-order.d.ts.map +1 -0
- package/dist/components/promote-order.js +62 -0
- package/dist/components/promote.d.ts +38 -2
- package/dist/components/promote.d.ts.map +1 -1
- package/dist/components/promote.js +77 -2
- package/dist/components/release-compile.d.ts +142 -0
- package/dist/components/release-compile.d.ts.map +1 -0
- package/dist/components/release-compile.js +382 -0
- package/dist/components/release-gate.d.ts +135 -0
- package/dist/components/release-gate.d.ts.map +1 -0
- package/dist/components/release-gate.js +288 -0
- package/dist/components/release-promote.d.ts +96 -0
- package/dist/components/release-promote.d.ts.map +1 -0
- package/dist/components/release-promote.js +204 -0
- package/dist/components/run-progress.d.ts +7 -0
- package/dist/components/run-progress.d.ts.map +1 -1
- package/dist/components/wave-plan.d.ts +8 -1
- package/dist/components/wave-plan.d.ts.map +1 -1
- package/dist/components/wave-plan.js +11 -3
- package/dist/config.d.ts +45 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -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/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -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 +68 -0
- package/dist/lifecycle/change-set-store.d.ts.map +1 -0
- package/dist/lifecycle/change-set-store.js +97 -0
- package/dist/lifecycle/commit-sha.d.ts +13 -0
- package/dist/lifecycle/commit-sha.d.ts.map +1 -0
- package/dist/lifecycle/commit-sha.js +21 -0
- 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 +78 -0
- package/dist/lifecycle/gate-change-set.d.ts.map +1 -0
- package/dist/lifecycle/gate-change-set.js +138 -0
- package/dist/lifecycle/gate-ledger.d.ts +51 -4
- package/dist/lifecycle/gate-ledger.d.ts.map +1 -1
- package/dist/lifecycle/gate-ledger.js +18 -0
- 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 +154 -0
- package/dist/lifecycle/release-cut.d.ts.map +1 -0
- package/dist/lifecycle/release-cut.js +366 -0
- 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 +54 -0
- package/dist/lifecycle/release-ledger.d.ts.map +1 -1
- package/dist/lifecycle/release-ledger.js +53 -20
- 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 +200 -0
- package/dist/lifecycle/release-store.d.ts.map +1 -0
- package/dist/lifecycle/release-store.js +320 -0
- 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 +4 -0
- package/dist/lifecycle/run-ledger.d.ts.map +1 -1
- package/dist/lifecycle/run-ledger.js +2 -0
- package/dist/op/activities/change-coverage.d.ts.map +1 -1
- package/dist/op/activities/change-coverage.js +4 -2
- package/dist/op/activities/source-release.d.ts.map +1 -1
- package/dist/op/activities/source-release.js +7 -3
- package/dist/op/activities/source-rollback.d.ts.map +1 -1
- package/dist/op/activities/source-rollback.js +7 -3
- package/dist/op/gate-name.d.ts +11 -2
- package/dist/op/gate-name.d.ts.map +1 -1
- package/dist/op/gate-name.js +12 -3
- package/dist/op/gate-run-locator.d.ts +22 -0
- package/dist/op/gate-run-locator.d.ts.map +1 -1
- package/dist/op/gate-run-locator.js +31 -0
- package/dist/op/gate.d.ts +27 -3
- package/dist/op/gate.d.ts.map +1 -1
- package/dist/op/gate.js +57 -3
- package/dist/op/local-executor.d.ts +36 -1
- package/dist/op/local-executor.d.ts.map +1 -1
- package/dist/op/local-executor.js +158 -52
- package/dist/op/op-waves-run.d.ts.map +1 -1
- package/dist/op/op-waves-run.js +4 -0
- package/dist/op/run-live.d.ts +2 -0
- package/dist/op/run-live.d.ts.map +1 -1
- package/dist/op/run-live.js +1 -1
- package/dist/op/runtime.d.ts +46 -0
- package/dist/op/runtime.d.ts.map +1 -1
- package/dist/op/runtimes/local.d.ts.map +1 -1
- package/dist/op/runtimes/local.js +8 -0
- package/dist/plan-summary.d.ts.map +1 -1
- package/dist/plan-summary.js +8 -2
- package/dist/point-decision.d.ts +2 -0
- package/dist/point-decision.d.ts.map +1 -1
- package/dist/point-decision.js +9 -2
- package/dist/pr-loop.d.ts +7 -0
- package/dist/pr-loop.d.ts.map +1 -1
- package/dist/pr-loop.js +23 -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 +104 -0
- package/dist/run-event-store.d.ts.map +1 -0
- package/dist/run-event-store.js +251 -0
- package/dist/run-event-stream.d.ts +133 -0
- package/dist/run-event-stream.d.ts.map +1 -0
- package/dist/run-event-stream.js +242 -0
- package/dist/run-event.d.ts +285 -0
- package/dist/run-event.d.ts.map +1 -0
- package/dist/run-event.js +209 -0
- package/dist/wave-runtime.mjs +262 -226
- 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/__fixtures__/run-event-check.d.ts +19 -0
- package/dist/workspace/__fixtures__/run-event-check.d.ts.map +1 -0
- package/dist/workspace/__fixtures__/run-event-check.js +59 -0
- package/dist/workspace/change-set-show.d.ts +56 -0
- package/dist/workspace/change-set-show.d.ts.map +1 -0
- package/dist/workspace/change-set-show.js +54 -0
- package/dist/workspace/change-set-show.schema.json +102 -0
- package/dist/workspace/change-set.schema.json +32 -1
- package/dist/workspace/changes-cli.d.ts.map +1 -1
- package/dist/workspace/changes-cli.js +10 -1
- package/dist/workspace/changes.d.ts +37 -0
- package/dist/workspace/changes.d.ts.map +1 -1
- package/dist/workspace/changes.js +49 -2
- package/dist/workspace/changes.schema.json +135 -0
- 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-cli.d.ts +19 -4
- package/dist/workspace/ci-green-cli.d.ts.map +1 -1
- package/dist/workspace/ci-green-cli.js +75 -12
- package/dist/workspace/ci-green-forge.d.ts +20 -3
- package/dist/workspace/ci-green-forge.d.ts.map +1 -1
- package/dist/workspace/ci-green-forge.js +6 -4
- package/dist/workspace/ci-green-workflow.d.ts +11 -0
- package/dist/workspace/ci-green-workflow.d.ts.map +1 -1
- package/dist/workspace/ci-green-workflow.js +6 -0
- package/dist/workspace/ci-green.d.ts +281 -13
- package/dist/workspace/ci-green.d.ts.map +1 -1
- package/dist/workspace/ci-green.js +456 -38
- package/dist/workspace/ci-last-green.schema.json +32 -2
- package/dist/workspace/ci-list.schema.json +525 -0
- package/dist/workspace/commit-links.d.ts +85 -0
- package/dist/workspace/commit-links.d.ts.map +1 -0
- package/dist/workspace/commit-links.js +163 -0
- package/dist/workspace/declaration.d.ts +35 -0
- package/dist/workspace/declaration.d.ts.map +1 -1
- package/dist/workspace/declaration.js +27 -1
- package/dist/workspace/declaration.schema.json +76 -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/identity-gate-rule.d.ts +37 -0
- package/dist/workspace/identity-gate-rule.d.ts.map +1 -1
- package/dist/workspace/identity-gate-rule.js +72 -7
- package/dist/workspace/identity.d.ts +12 -0
- package/dist/workspace/identity.d.ts.map +1 -1
- package/dist/workspace/identity.js +13 -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 +36 -7
- package/dist/workspace/intent.d.ts.map +1 -1
- package/dist/workspace/intent.js +192 -22
- package/dist/workspace/intent.schema.json +702 -6
- package/dist/workspace/ls.d.ts +4 -0
- package/dist/workspace/ls.d.ts.map +1 -1
- package/dist/workspace/ls.js +2 -0
- package/dist/workspace/ls.schema.json +3 -1
- package/dist/workspace/member-pipeline.d.ts +6 -0
- package/dist/workspace/member-pipeline.d.ts.map +1 -1
- package/dist/workspace/member-pipeline.js +6 -0
- 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/promotion-order.d.ts +41 -0
- package/dist/workspace/promotion-order.d.ts.map +1 -0
- package/dist/workspace/promotion-order.js +95 -0
- package/dist/workspace/reason-codes.d.ts +4 -0
- package/dist/workspace/reason-codes.d.ts.map +1 -1
- package/dist/workspace/reason-codes.js +7 -1
- 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 +81 -0
- package/dist/workspace/releases.d.ts.map +1 -0
- package/dist/workspace/releases.js +103 -0
- package/dist/workspace/releases.schema.json +513 -0
- package/dist/workspace/run-event.schema.json +295 -0
- package/dist/workspace/status-gates.d.ts +34 -1
- package/dist/workspace/status-gates.d.ts.map +1 -1
- package/dist/workspace/status-gates.js +31 -2
- package/dist/workspace/status-stewards.d.ts +4 -0
- package/dist/workspace/status-stewards.d.ts.map +1 -1
- package/dist/workspace/status-stewards.js +2 -0
- package/dist/workspace/status.d.ts +117 -0
- package/dist/workspace/status.d.ts.map +1 -1
- package/dist/workspace/status.js +218 -4
- package/dist/workspace/status.schema.json +268 -2
- package/dist/workspace/trust/ci-tag-statement.d.ts +102 -0
- package/dist/workspace/trust/ci-tag-statement.d.ts.map +1 -0
- package/dist/workspace/trust/ci-tag-statement.js +123 -0
- package/dist/workspace/trust/op-run-statement.d.ts +91 -0
- package/dist/workspace/trust/op-run-statement.d.ts.map +1 -0
- package/dist/workspace/trust/op-run-statement.js +143 -0
- package/dist/workspace/trust/rotation.d.ts +18 -2
- package/dist/workspace/trust/rotation.d.ts.map +1 -1
- package/dist/workspace/trust/rotation.js +65 -16
- package/dist/workspace/trust/seal.d.ts +11 -0
- package/dist/workspace/trust/seal.d.ts.map +1 -1
- package/dist/workspace/trust/seal.js +9 -0
- package/dist/workspace/trust/ssh-commit.d.ts.map +1 -1
- package/dist/workspace/trust/ssh-commit.js +10 -10
- package/dist/workspace/wip.d.ts.map +1 -1
- package/dist/workspace/wip.js +11 -3
- package/package.json +1 -1
- package/src/__golden__/wave-loop/fan-out-gated.json +8 -0
- package/src/__golden__/wave-loop/fan-out-no-members.json +4 -0
- package/src/__golden__/wave-loop/fan-out-only.json +6 -0
- package/src/__golden__/wave-loop/op-by-apply-hold.json +2 -0
- package/src/__golden__/wave-loop/op-cost-member.json +3 -0
- package/src/__golden__/wave-loop/op-held-on-before-apply.json +1 -0
- package/src/__golden__/wave-loop/op-held-on.json +2 -0
- package/src/__golden__/wave-loop/op-hooks-held.json +2 -0
- package/src/__golden__/wave-loop/op-hooks-hold-before-apply.json +2 -0
- package/src/__golden__/wave-loop/op-hooks-refused-at-base.json +3 -0
- package/src/__golden__/wave-loop/op-hooks-share.json +3 -0
- package/src/__golden__/wave-loop/op-per-run.json +7 -0
- package/src/__golden__/wave-loop/op-pr-review.json +7 -0
- package/src/__golden__/wave-loop/op-sealed.json +3 -0
- package/src/__golden__/wave-loop/op-spend.json +3 -0
- package/src/__golden__/wave-loop/op-wave-commands.json +7 -0
- package/src/__golden__/wave-loop/op-wide-waiting.json +4 -0
- package/src/build-params.test.ts +46 -0
- package/src/build-params.ts +55 -1
- package/src/change-set-graph.test.ts +72 -0
- package/src/change-set-graph.ts +141 -0
- package/src/change-set.ts +87 -6
- package/src/chant-version.ts +16 -0
- package/src/cli/build-params-cli.ts +22 -9
- package/src/cli/commands/build.ts +25 -11
- package/src/cli/commands/check-lexicon-docs.test.ts +51 -0
- package/src/cli/commands/check-lexicon-docs.ts +39 -2
- package/src/cli/commands/check-lexicon.ts +14 -2
- package/src/cli/commands/init-lexicon/templates/docs.ts +7 -6
- package/src/cli/commands/init-lexicon.test.ts +25 -0
- package/src/cli/commands/init-lexicon.ts +18 -8
- package/src/cli/handlers/approve-release.test.ts +84 -0
- package/src/cli/handlers/approve-revoked.test.ts +155 -0
- package/src/cli/handlers/approve.ts +65 -2
- package/src/cli/handlers/build.test.ts +67 -0
- package/src/cli/handlers/build.ts +46 -4
- package/src/cli/handlers/change-set.ts +49 -1
- package/src/cli/handlers/fan-out.test.ts +228 -1
- package/src/cli/handlers/fan-out.ts +53 -6
- 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/operator.test.ts +37 -0
- package/src/cli/handlers/pr.test.ts +341 -0
- package/src/cli/handlers/pr.ts +292 -47
- package/src/cli/handlers/promote.test.ts +669 -7
- package/src/cli/handlers/promote.ts +464 -29
- package/src/cli/handlers/release-implicit.e2e.test.ts +161 -0
- 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 +199 -0
- package/src/cli/handlers/release.ts +593 -0
- package/src/cli/handlers/run-auto-release.test.ts +80 -0
- package/src/cli/handlers/run-events-cmd.test.ts +92 -0
- package/src/cli/handlers/run-release.test.ts +55 -0
- package/src/cli/handlers/run.test.ts +30 -0
- package/src/cli/handlers/run.ts +243 -18
- package/src/cli/main.test.ts +8 -0
- package/src/cli/main.ts +143 -17
- package/src/cli/mcp/never-over-mcp.test.ts +2 -0
- package/src/cli/mcp/workspace-tools.ts +1 -1
- package/src/cli/parse-args.ts +56 -5
- package/src/cli/registry.ts +43 -5
- package/src/cli/run-events.ts +57 -0
- package/src/cli/version.ts +3 -13
- package/src/codegen/docs-in-site.test.ts +166 -0
- package/src/codegen/docs-in-site.ts +182 -0
- package/src/codegen/docs-site/AgentPrompt.astro +26 -1
- package/src/codegen/docs-types.ts +14 -1
- package/src/codegen/docs.ts +60 -7
- package/src/codegen/rehype-base-url.d.mts +3 -1
- package/src/codegen/rehype-base-url.mjs +15 -9
- package/src/codegen/rehype-base-url.test.ts +34 -0
- package/src/components/auto-release.test.ts +30 -0
- package/src/components/auto-release.ts +9 -1
- package/src/components/capability.ts +9 -0
- package/src/components/cli-support.test.ts +82 -0
- package/src/components/cli-support.ts +16 -9
- package/src/components/driver.test.ts +24 -0
- package/src/components/driver.ts +165 -56
- 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 +104 -35
- package/src/components/fan-out.ts +4 -0
- package/src/components/pr-pipeline.ts +35 -4
- package/src/components/pr-run.ts +30 -1
- package/src/components/promote-order.test.ts +90 -0
- package/src/components/promote-order.ts +75 -0
- package/src/components/promote.test.ts +10 -1
- package/src/components/promote.ts +94 -3
- package/src/components/release-compile.test.ts +147 -0
- package/src/components/release-compile.ts +459 -0
- package/src/components/release-gate.test.ts +215 -0
- package/src/components/release-gate.ts +355 -0
- package/src/components/release-promote.test.ts +159 -0
- package/src/components/release-promote.ts +232 -0
- package/src/components/run-progress.ts +7 -0
- package/src/components/wave-plan.ts +16 -3
- package/src/config.ts +15 -1
- package/src/flag-params.test.ts +144 -0
- package/src/flag-params.ts +134 -0
- package/src/index.ts +2 -0
- package/src/lifecycle/__fixtures__/publish-fakes.ts +351 -0
- package/src/lifecycle/change-set-store.test.ts +217 -0
- package/src/lifecycle/change-set-store.ts +113 -0
- package/src/lifecycle/commit-sha.ts +23 -0
- package/src/lifecycle/delivery-metrics.ts +263 -0
- package/src/lifecycle/deploy-outcome.ts +147 -0
- package/src/lifecycle/gate-change-set.e2e.test.ts +122 -0
- package/src/lifecycle/gate-change-set.ts +164 -0
- package/src/lifecycle/gate-ledger.test.ts +33 -0
- package/src/lifecycle/gate-ledger.ts +68 -3
- 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-signed.test.ts +180 -0
- package/src/lifecycle/release-cut.test.ts +483 -0
- package/src/lifecycle/release-cut.ts +503 -0
- 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.test.ts +14 -0
- package/src/lifecycle/release-ledger.ts +85 -17
- 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 +434 -0
- 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.test.ts +10 -0
- package/src/lifecycle/run-ledger.ts +6 -0
- package/src/op/activities/change-coverage.ts +4 -1
- package/src/op/activities/source-release.ts +8 -3
- package/src/op/activities/source-rollback.ts +8 -4
- package/src/op/commit-run-gate-deploy-join.test.ts +117 -0
- package/src/op/gate-name.ts +13 -3
- package/src/op/gate-release.test.ts +126 -0
- package/src/op/gate-run-locator.test.ts +110 -0
- package/src/op/gate-run-locator.ts +35 -0
- package/src/op/gate.ts +88 -6
- package/src/op/local-executor.ts +207 -52
- package/src/op/op-waves-run.ts +4 -0
- package/src/op/run-events.test.ts +166 -0
- package/src/op/run-live.ts +1 -1
- package/src/op/runtime.ts +39 -0
- package/src/op/runtimes/local.test.ts +16 -0
- package/src/op/runtimes/local.ts +9 -0
- package/src/plan-summary.test.ts +20 -0
- package/src/plan-summary.ts +8 -1
- package/src/point-decision.ts +12 -2
- package/src/pr-loop.ts +25 -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.test.ts +144 -0
- package/src/run-event-store.ts +273 -0
- package/src/run-event-stream.test.ts +175 -0
- package/src/run-event-stream.ts +309 -0
- package/src/run-event.test.ts +277 -0
- package/src/run-event.ts +471 -0
- package/src/wave-loop-golden.test.ts +9 -0
- 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/__fixtures__/run-event-check.ts +58 -0
- package/src/workspace/ancestry-index.test.ts +93 -0
- package/src/workspace/change-set-show.schema.json +102 -0
- package/src/workspace/change-set-show.ts +72 -0
- package/src/workspace/change-set.schema.json +32 -1
- package/src/workspace/changes-cli.ts +10 -1
- package/src/workspace/changes.schema.json +135 -0
- package/src/workspace/changes.test.ts +1 -1
- package/src/workspace/changes.ts +84 -2
- 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-cli.ts +75 -13
- package/src/workspace/ci-green-forge.ts +24 -4
- package/src/workspace/ci-green-runs.test.ts +242 -0
- package/src/workspace/ci-green-signed.test.ts +302 -0
- package/src/workspace/ci-green-workflow.test.ts +16 -0
- package/src/workspace/ci-green-workflow.ts +12 -0
- package/src/workspace/ci-green.test.ts +131 -2
- package/src/workspace/ci-green.ts +635 -42
- package/src/workspace/ci-last-green.schema.json +32 -2
- package/src/workspace/ci-list.schema.json +525 -0
- package/src/workspace/commit-links.test.ts +279 -0
- package/src/workspace/commit-links.ts +183 -0
- package/src/workspace/declaration.schema.json +76 -0
- package/src/workspace/declaration.test.ts +28 -0
- package/src/workspace/declaration.ts +60 -2
- 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/identity-gate-rule.ts +91 -7
- package/src/workspace/identity.ts +14 -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 +196 -26
- package/src/workspace/ls.schema.json +3 -1
- package/src/workspace/ls.ts +6 -0
- package/src/workspace/member-pipeline.test.ts +17 -0
- package/src/workspace/member-pipeline.ts +9 -0
- 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/promotion-order.ts +97 -0
- package/src/workspace/read-contract.e2e.test.ts +5 -1
- package/src/workspace/reason-codes.test.ts +7 -1
- package/src/workspace/reason-codes.ts +7 -1
- 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 +513 -0
- package/src/workspace/releases.test.ts +108 -0
- package/src/workspace/releases.ts +133 -0
- package/src/workspace/run-event.schema.json +295 -0
- package/src/workspace/status-contract.test.ts +81 -1
- package/src/workspace/status-gates.ts +64 -1
- package/src/workspace/status-mixed.test.ts +152 -0
- package/src/workspace/status-revoked.test.ts +153 -0
- package/src/workspace/status-stewards.ts +6 -0
- package/src/workspace/status.schema.json +268 -2
- package/src/workspace/status.ts +334 -4
- package/src/workspace/trust/ci-tag-statement.ts +151 -0
- package/src/workspace/trust/op-run-statement.ts +148 -0
- package/src/workspace/trust/rotation.ts +61 -14
- package/src/workspace/trust/seal.ts +10 -0
- package/src/workspace/trust/ssh-commit.ts +10 -9
- package/src/workspace/wip.ts +11 -2
- package/src/cli/commands/__fixtures__/init-lexicon-output/docs/astro.config.mjs +0 -14
- package/src/cli/commands/__fixtures__/init-lexicon-output/docs/package.json +0 -16
- package/src/cli/commands/__fixtures__/init-lexicon-output/docs/src/content/docs/index.mdx +0 -8
- package/src/cli/commands/__fixtures__/init-lexicon-output/docs/src/content.config.ts +0 -15
- package/src/cli/commands/__fixtures__/init-lexicon-output/docs/tsconfig.json +0 -10
package/src/cli/main.test.ts
CHANGED
|
@@ -16,6 +16,13 @@ describe("parseArgs", () => {
|
|
|
16
16
|
expect(() => parseArgs(["graph", "--traffic"])).toThrow(/--traffic needs a level/);
|
|
17
17
|
});
|
|
18
18
|
|
|
19
|
+
test("--before-script is repeatable and keeps its order; --image takes a reference (#4002)", () => {
|
|
20
|
+
const args = parseArgs(["build", "--components", "--generate", "forgejo", "--image", "node:22-bookworm", "--before-script", "npm ci", "--before-script", "-x"]);
|
|
21
|
+
expect(args.image).toBe("node:22-bookworm");
|
|
22
|
+
expect(args.beforeScript).toEqual(["npm ci", "-x"]);
|
|
23
|
+
expect(() => parseArgs(["build", "--before-script"])).toThrow(/--before-script needs a shell line/);
|
|
24
|
+
});
|
|
25
|
+
|
|
19
26
|
test("--skip-undeclarable reaches live import (#3911)", () => {
|
|
20
27
|
expect(parseArgs(["import", "--from", "prod"]).skipUndeclarable).toBeUndefined();
|
|
21
28
|
expect(parseArgs(["import", "--from", "prod", "--skip-undeclarable"]).skipUndeclarable).toBe(true);
|
|
@@ -821,6 +828,7 @@ describe("workspace init and ls (#2534)", () => {
|
|
|
821
828
|
"workspace ls",
|
|
822
829
|
"workspace member",
|
|
823
830
|
"workspace member-run",
|
|
831
|
+
"workspace metrics",
|
|
824
832
|
"workspace patch",
|
|
825
833
|
"workspace pin",
|
|
826
834
|
"workspace points",
|
package/src/cli/main.ts
CHANGED
|
@@ -114,6 +114,7 @@ const runOpApprove = lazyHandler(runHandlers, (m) => m.runOpApprove);
|
|
|
114
114
|
const runOpSignalRenamed = lazyHandler(runHandlers, (m) => m.runOpSignalRenamed);
|
|
115
115
|
const runOpCancel = lazyHandler(runHandlers, (m) => m.runOpCancel);
|
|
116
116
|
const runOpLog = lazyHandler(runHandlers, (m) => m.runOpLog);
|
|
117
|
+
const runOpEvents = lazyHandler(runHandlers, (m) => m.runOpEvents);
|
|
117
118
|
const runWaveHandlers = () => import("./handlers/run-wave");
|
|
118
119
|
const runOpWaveCommand = lazyHandler(runWaveHandlers, (m) => m.runOpWaveCommand);
|
|
119
120
|
const operatorHandlers = () => import("./handlers/operator");
|
|
@@ -227,22 +228,82 @@ Commands:
|
|
|
227
228
|
applied) and path. Read-only.
|
|
228
229
|
|
|
229
230
|
CI:
|
|
230
|
-
ci last-green [--json] The newest first-parent commit of
|
|
231
|
-
|
|
232
|
-
tags only; fetch
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
231
|
+
ci last-green [--json] [--from <rev>] The newest first-parent commit of
|
|
232
|
+
ci.green's branch, or of --from, with a ci/green tag
|
|
233
|
+
and no ci/revoked tag. Reads local tags only; fetch
|
|
234
|
+
them first. With ci.green.signedSince, a tag without a
|
|
235
|
+
valid runner statement is ignored and reported.
|
|
236
|
+
ci list [--json] [--limit <n>] [--since <rev>] [--forge github] [--source checks|runs]
|
|
237
|
+
The first-parent commits of ci.green's branch within
|
|
238
|
+
its window, newest first, each green, revoked or
|
|
239
|
+
undecided with its required phases' results. Reads
|
|
240
|
+
local tags; --forge reads check runs for undecided
|
|
241
|
+
commits, and source runs reads the signed Op runs on
|
|
242
|
+
the local chant/lifecycle. --since replaces the window.
|
|
243
|
+
ci tick [--dry-run] [--forge github] [--source checks|runs] [--key <runner key.pem>]
|
|
244
|
+
Tag each commit within ci.green's window whose
|
|
245
|
+
required phases all passed ci/green/<sha>, and revoke
|
|
246
|
+
a green one that now fails ci/revoked/<sha>. Reads
|
|
247
|
+
check runs from the forge, or with source runs
|
|
248
|
+
(ci.green.source or --source) the Op runs on
|
|
249
|
+
chant/lifecycle that a runner key signed. Pushes the
|
|
250
|
+
tags. --key, or the PEM in CHANT_RUNNER_KEY, signs
|
|
251
|
+
each tag with a runner key.
|
|
237
252
|
ci workflow [--workflow <name>]... [--output <file>] Write
|
|
238
253
|
[--chant <command>] [--install <command>]
|
|
239
254
|
[--token-secret <NAME> | --app-id-var <VAR> --app-key-secret <NAME>]
|
|
255
|
+
[--runner-key-secret <NAME>]
|
|
240
256
|
.github/workflows/chant-ci-green.yml, which runs the
|
|
241
257
|
tick when a required workflow completes and every 15m.
|
|
242
258
|
--chant replaces the npx @intentius/chant pin the tick
|
|
243
259
|
runs; --install adds a step before it. --token-secret,
|
|
244
260
|
or a GitHub App's id and key, pushes the tags with a
|
|
245
261
|
token that may tag commits changing workflow files.
|
|
262
|
+
--runner-key-secret hands the tick the runner key it
|
|
263
|
+
signs its tags with.
|
|
264
|
+
|
|
265
|
+
Releases:
|
|
266
|
+
release cut [<label>] [--yes] [--build <command>] [--param <k=v>]
|
|
267
|
+
[--params-file <file>] [--src <dir>] [-o <file>] [--lexicon <name>]
|
|
268
|
+
[--actor <name>] [--sign [<key file>]] [--json]
|
|
269
|
+
A dry run of a cut of this member from HEAD, which
|
|
270
|
+
must be clean, on trunk and pushed, and carry a
|
|
271
|
+
ci/green tag: compile every environment in the
|
|
272
|
+
config's environments and print what the cut would
|
|
273
|
+
build, record and tag, and what publishes where.
|
|
274
|
+
--yes cuts: builds the artifacts once, stores the
|
|
275
|
+
release on chant/lifecycle under its digest, records
|
|
276
|
+
the actor and run id, tags the commit release/<label>
|
|
277
|
+
here, and prints the next command.
|
|
278
|
+
--build runs before each environment's templates are
|
|
279
|
+
read, with CHANT_ENV set; {env} in --params-file is
|
|
280
|
+
replaced by the environment. --sign signs the cut with
|
|
281
|
+
the actor's ssh key; an identity.gates release entry
|
|
282
|
+
requires it. A project with no components releases
|
|
283
|
+
what chant build --env <env> writes: --src <dir> is
|
|
284
|
+
the build root, -o <file> the output (dist/build.yaml),
|
|
285
|
+
--lexicon narrows it.
|
|
286
|
+
release publish <label|digest> [--yes] [--allow-unsigned]
|
|
287
|
+
[--require-provenance] [--json]
|
|
288
|
+
Publish a cut release to the targets release.publish
|
|
289
|
+
in chant.config.ts declares (npm, OCI registries,
|
|
290
|
+
forge release assets), each with an SBOM and the
|
|
291
|
+
release's provenance. A dry run without --yes.
|
|
292
|
+
Refuses a revoked release, one whose signature does
|
|
293
|
+
not verify against .chant/allowed_signers unless
|
|
294
|
+
--allow-unsigned, and with a target a checkout that
|
|
295
|
+
is not the release's commit. Warns first when the run
|
|
296
|
+
has no OIDC token, so what it publishes carries no
|
|
297
|
+
OIDC provenance; --require-provenance refuses instead.
|
|
298
|
+
release verify <label|digest> [--json]
|
|
299
|
+
Check, offline, that the release was signed by a key
|
|
300
|
+
.chant/allowed_signers lists at the release's commit.
|
|
301
|
+
release list [--json] Every release of this member with its targets, its
|
|
302
|
+
cuts and the environments that run it.
|
|
303
|
+
release export <label|digest> --env <env> [-o <dir>] [--json]
|
|
304
|
+
Write the files the release recorded for <env>, each
|
|
305
|
+
checked against its digest, at their recorded paths
|
|
306
|
+
under <dir> (default: here), for a deploy to read.
|
|
246
307
|
|
|
247
308
|
Change sets:
|
|
248
309
|
change-set summary <file> The grouped plan summary of a change-set
|
|
@@ -251,6 +312,10 @@ Change sets:
|
|
|
251
312
|
replacement, failure and hole named.
|
|
252
313
|
markdown fits an MR/PR note of --limit
|
|
253
314
|
characters (default 65536). Read-only.
|
|
315
|
+
change-set show <digest> The change set a pull-request or release gate
|
|
316
|
+
[--member <name>] [--json] bound, stored on
|
|
317
|
+
chant/lifecycle under its digest, each
|
|
318
|
+
entry with its graph node. Read-only.
|
|
254
319
|
|
|
255
320
|
Ops:
|
|
256
321
|
run <name> Run an Op on the resolved runtime (--on; local by default)
|
|
@@ -260,11 +325,18 @@ Ops:
|
|
|
260
325
|
its Drift outcome is true (WatchOp failOn: "drift")
|
|
261
326
|
--no-record: a test run that records nothing on
|
|
262
327
|
chant/lifecycle and pushes nothing (local runtime)
|
|
328
|
+
--key <runner key.pem>, or the PEM in
|
|
329
|
+
CHANT_RUNNER_KEY: sign the run's record with a runner
|
|
330
|
+
key, so ci tick from runs counts it (#4044)
|
|
263
331
|
run list List all Ops with the runtime's state for each
|
|
264
332
|
run status <name> Show the runtime's state for one Op's latest run
|
|
265
333
|
run approve <op> <gate> Record a gate's resolution and wake the runtime
|
|
266
334
|
run cancel <name> Cancel the active run (requires --force)
|
|
267
335
|
run log <name> Show run history for an Op
|
|
336
|
+
run events <run> Replay a run's events kept on this host (a run id, or
|
|
337
|
+
an Op or component name for its newest run). --json
|
|
338
|
+
prints the run-event lines; --follow streams a run in
|
|
339
|
+
progress until run-settle (#4042)
|
|
268
340
|
run wave --spec <file> --wave <k> Plan, gate and apply wave k of an Op
|
|
269
341
|
waves spec (#3679): the job a generated waves
|
|
270
342
|
pipeline runs. --decide plans and decides only;
|
|
@@ -293,12 +365,19 @@ Ops:
|
|
|
293
365
|
run, and prints that order first (#3950).
|
|
294
366
|
On success, auto-emits a release-ledger record per
|
|
295
367
|
component that published a digest (default: on;
|
|
296
|
-
--no-release-record to opt out; #597)
|
|
368
|
+
--no-release-record to opt out; #597).
|
|
369
|
+
--release <label|digest>: the run is of that release,
|
|
370
|
+
cut from this checkout's commit; the records name it (#4043)
|
|
297
371
|
--progress-json: stream one NDJSON RunProgressEvent
|
|
298
372
|
per line to stdout while the run executes, for a
|
|
299
373
|
consumer to render live wave/component/phase/step
|
|
300
374
|
progress instead of tailing raw logs (additive; run
|
|
301
375
|
semantics/exit code unchanged)
|
|
376
|
+
--events-json: stream the run's events instead, one
|
|
377
|
+
run-event.schema.json line each, with the run id,
|
|
378
|
+
commit and runtime on every line (#4041). Also on
|
|
379
|
+
run <op>, components promote|rollback|redeploy,
|
|
380
|
+
fan-out, pr-plan and pr-apply
|
|
302
381
|
operator Run scheduled ticks for discovered ConvergeOps
|
|
303
382
|
locally (#1485): acquire/renew a per-op
|
|
304
383
|
lease (git ref CAS), tick on --interval, record every
|
|
@@ -387,6 +466,13 @@ Workspace (level 1, #2524):
|
|
|
387
466
|
beside it and marks the members whose digests differ.
|
|
388
467
|
Read only; never fetches. --json prints the
|
|
389
468
|
read-contract document
|
|
469
|
+
workspace metrics [dir] [--env <env>] [--member <name>] [--since <date>] [--json]
|
|
470
|
+
The four DORA metrics per member and environment
|
|
471
|
+
(#4039): deployment frequency, lead time from commit
|
|
472
|
+
to running release, change failure rate and time to
|
|
473
|
+
restore, from the deploy records, releases and ci
|
|
474
|
+
revoked tags. Eight weeks back by default. Read only;
|
|
475
|
+
never fetches. --json prints the read-contract document
|
|
390
476
|
workspace records [--kind <kind file>] [--current] [--uncommitted | --at <rev>] [--base <rev>] [--require attested] [--json]
|
|
391
477
|
Without --kind, every record kind the declaration
|
|
392
478
|
names. Read the records a record kind locates, validated
|
|
@@ -664,7 +750,13 @@ Workspace (level 1, #2524):
|
|
|
664
750
|
the severity (warn by default) and ignore globs. When
|
|
665
751
|
the declaration at base has writeScope or agents, each
|
|
666
752
|
commit that writes outside its writer's scope fails
|
|
667
|
-
the check (write-scope-member, write-scope-kind)
|
|
753
|
+
the check (write-scope-member, write-scope-kind). Each
|
|
754
|
+
first-parent commit of the range should name its work
|
|
755
|
+
item in a Chant-Record: <work kind>:<id> or a
|
|
756
|
+
Chant-Lease trailer. commit-unlinked is a commit that
|
|
757
|
+
names none, commit-wrongly-linked one whose trailers
|
|
758
|
+
name no work item that exists; both follow the
|
|
759
|
+
severity
|
|
668
760
|
workspace patch <base>..<head>|<base>...<head>|<commit> [--path <p>...] [--max-bytes <n>] [--json]
|
|
669
761
|
workspace patch [<commit>] --worktree [--path <p>...] [--max-bytes <n>] [--json]
|
|
670
762
|
The hunks of a diff, file by file: a range, a work
|
|
@@ -695,7 +787,7 @@ Workspace (level 1, #2524):
|
|
|
695
787
|
Each composite instance the members declare, with the
|
|
696
788
|
components whose contract can deploy it; an instance
|
|
697
789
|
with none lists an empty set
|
|
698
|
-
workspace graph --intent <path[:start-end]|path#symbol> [--at <rev>] [--kind <kind file>...] [--follow-squash] [--json]
|
|
790
|
+
workspace graph --intent <path[:start-end]|path#symbol|member/node|sha> [--at <rev>] [--kind <kind file>...] [--follow-squash] [--json]
|
|
699
791
|
The intent graph over one region: the commits that
|
|
700
792
|
touched it, the decisions whose constrains cover it,
|
|
701
793
|
the artifacts they pin, and findings with closed codes.
|
|
@@ -734,6 +826,13 @@ Lifecycle (alias: lc):
|
|
|
734
826
|
executes the plan (production-like names also need
|
|
735
827
|
--confirm-prod, or an interactive confirmation)
|
|
736
828
|
lifecycle log [env] History of lifecycle snapshots
|
|
829
|
+
lifecycle gc [--yes] [--push] [--json]
|
|
830
|
+
Prune stored change sets, releases and run event
|
|
831
|
+
files by the retention policy (#4036). A dry run
|
|
832
|
+
without --yes; --yes writes one commit removing
|
|
833
|
+
them on the local chant/lifecycle and deletes the
|
|
834
|
+
run event files; --push pushes it. History is
|
|
835
|
+
never rewritten, and the ledgers are never pruned
|
|
737
836
|
|
|
738
837
|
Plan scenarios (#1292):
|
|
739
838
|
scenario check Evaluate every declared Scenario's expect clause
|
|
@@ -772,7 +871,11 @@ Component release ledger + status:
|
|
|
772
871
|
--member <name>, both commands: a workspace
|
|
773
872
|
member's loop, gate op pr-<n>-<member>;
|
|
774
873
|
--resume <file> finishes an apply that failed
|
|
775
|
-
partway under the same approval
|
|
874
|
+
partway under the same approval;
|
|
875
|
+
--events-json, both commands: the run-event
|
|
876
|
+
stream on stdout; --report-url <s3 or file URL>,
|
|
877
|
+
both commands: copy the report, the change set
|
|
878
|
+
and the events to <url>/<pr>/<commit>/)
|
|
776
879
|
components release <env> Append one immutable release record
|
|
777
880
|
(--component <name> --digest <sha256:...>
|
|
778
881
|
[--git-sha <sha>] [--run-id <id>] [--actor <name>]);
|
|
@@ -787,13 +890,18 @@ Component release ledger + status:
|
|
|
787
890
|
byte-for-byte plus a self-describing manifest.json
|
|
788
891
|
components promote Deploy the digests one environment's release
|
|
789
892
|
ledger records to another, without a build
|
|
790
|
-
(--
|
|
791
|
-
[--
|
|
792
|
-
|
|
893
|
+
(--to <env> [--from <env>] [--allow-skip]
|
|
894
|
+
[--release <label|digest>]
|
|
895
|
+
[--component <name> [--digest <sha256:...>]];
|
|
896
|
+
--from defaults to the environment before --to
|
|
897
|
+
in the config's environments; --dry-run prints
|
|
898
|
+
the plan; the target's gates still apply)
|
|
793
899
|
components rollback <env> Redeploy an earlier release of an environment
|
|
794
900
|
from its recorded digest (--component <name>
|
|
795
901
|
[--digest <sha256:...>]; defaults to the release
|
|
796
|
-
before the current one; --dry-run prints the plan)
|
|
902
|
+
before the current one; --dry-run prints the plan).
|
|
903
|
+
--release <label|digest> restores every component
|
|
904
|
+
of that release through the release gate (#4035)
|
|
797
905
|
components redeploy <env> Redeploy the release an environment's ledger
|
|
798
906
|
records as current, after a deploy that failed
|
|
799
907
|
partway (--component <name> [--digest <sha256:...>];
|
|
@@ -934,7 +1042,7 @@ Options:
|
|
|
934
1042
|
chant.config.ts's build.sandbox: true; #1045)
|
|
935
1043
|
--param <name=value> (build, graph, run --components, components fan-out,
|
|
936
1044
|
components promote, components rollback,
|
|
937
|
-
components redeploy) Bind a
|
|
1045
|
+
components redeploy, release cut) Bind a
|
|
938
1046
|
declared build-time parameter (chant.config.ts's buildParams)
|
|
939
1047
|
to a value, for source to read as params.<name>
|
|
940
1048
|
(#1064) instead of process.env — repeatable.
|
|
@@ -946,7 +1054,7 @@ Options:
|
|
|
946
1054
|
chant.template.json declares instead (#2627).
|
|
947
1055
|
--params-file <path> (build, graph, run --components, components fan-out,
|
|
948
1056
|
components promote, components rollback,
|
|
949
|
-
components redeploy) JSON file
|
|
1057
|
+
components redeploy, release cut) JSON file
|
|
950
1058
|
of { "name": value } build-time parameter values
|
|
951
1059
|
(#1064). Second precedence, after --param.
|
|
952
1060
|
init --from refuses it: pass --param instead.
|
|
@@ -1195,10 +1303,22 @@ export const commandRegistry: CommandDef[] = [
|
|
|
1195
1303
|
{ name: "carve status", handler: runCarveStatus },
|
|
1196
1304
|
// #3573 — which commits passed CI, kept as ci/green and ci/revoked tags (ws-103). Imported on first use.
|
|
1197
1305
|
{ name: "ci last-green", runsNoConfig: true, handler: async (ctx) => (await import("../workspace/ci-green-cli")).runCiLastGreen(ctx) },
|
|
1306
|
+
{ name: "ci list", runsNoConfig: true, handler: async (ctx) => (await import("../workspace/ci-green-cli")).runCiList(ctx) },
|
|
1198
1307
|
{ name: "ci tick", runsNoConfig: true, handler: async (ctx) => (await import("../workspace/ci-green-cli")).runCiTick(ctx) },
|
|
1199
1308
|
{ name: "ci workflow", runsNoConfig: true, handler: async (ctx) => (await import("../workspace/ci-green-cli")).runCiWorkflow(ctx) },
|
|
1309
|
+
// #4026: the release cut from a green commit (ws-104). Imported on first use.
|
|
1310
|
+
{ name: "release cut", runsNoConfig: true, handler: async (ctx) => (await import("./handlers/release")).runReleaseCut(ctx) },
|
|
1311
|
+
// #4027: publish a cut release, to the targets #4047 declares.
|
|
1312
|
+
{ name: "release publish", runsNoConfig: true, handler: async (ctx) => (await import("./handlers/release")).runReleasePublish(ctx) },
|
|
1313
|
+
// #4049: check a release's signature offline.
|
|
1314
|
+
{ name: "release verify", runsNoConfig: true, handler: async (ctx) => (await import("./handlers/release")).runReleaseVerify(ctx) },
|
|
1315
|
+
{ name: "release list", runsNoConfig: true, handler: async (ctx) => (await import("./handlers/release")).runReleaseList(ctx) },
|
|
1316
|
+
{ name: "release export", runsNoConfig: true, handler: async (ctx) => (await import("./handlers/release")).runReleaseExport(ctx) },
|
|
1317
|
+
{ name: "release compile", runsNoConfig: true, handler: async (ctx) => (await import("./handlers/release")).runReleaseCompile(ctx) },
|
|
1200
1318
|
// #3188 — the grouped plan summary of a change-set document. Reads one file; imported on first use.
|
|
1201
1319
|
{ name: "change-set summary", runsNoConfig: true, handler: async (ctx) => (await import("./handlers/change-set")).runChangeSetSummary(ctx) },
|
|
1320
|
+
// #4022: the change set a gate bound, read from chant/lifecycle by its digest.
|
|
1321
|
+
{ name: "change-set show", runsNoConfig: true, handler: async (ctx) => (await import("./handlers/change-set")).runChangeSetShow(ctx) },
|
|
1202
1322
|
{ name: "init", handler: runInit, runsNoConfig: true },
|
|
1203
1323
|
{ name: "init lexicon", handler: runInitLexicon },
|
|
1204
1324
|
{ name: "update", handler: runUpdate },
|
|
@@ -1220,6 +1340,7 @@ export const commandRegistry: CommandDef[] = [
|
|
|
1220
1340
|
{ name: "run signal", handler: runOpSignalRenamed },
|
|
1221
1341
|
{ name: "run cancel", handler: runOpCancel },
|
|
1222
1342
|
{ name: "run log", handler: runOpLog },
|
|
1343
|
+
{ name: "run events", handler: runOpEvents },
|
|
1223
1344
|
{ name: "run wave", handler: runOpWaveCommand },
|
|
1224
1345
|
// #3683 — start the CI jobs that wait at gates whose approval arrived. Imported on first use.
|
|
1225
1346
|
{ name: "run resume", handler: async (ctx) => (await import("./handlers/gate-resume")).runResumeCommand(ctx) },
|
|
@@ -1249,6 +1370,8 @@ export const commandRegistry: CommandDef[] = [
|
|
|
1249
1370
|
{ name: "workspace work", runsNoConfig: true, handler: async (ctx) => (await import("../workspace/work-cli")).runWorkspaceWork(ctx) },
|
|
1250
1371
|
// #3033 — the agent run record: what each run cost and which commits it made. chant records runs and never starts one.
|
|
1251
1372
|
{ name: "workspace runs", runsNoConfig: true, handler: async (ctx) => (await import("../workspace/runs-cli")).runWorkspaceRuns(ctx) },
|
|
1373
|
+
// #4039 — DORA metrics from the deploy, release and revocation records.
|
|
1374
|
+
{ name: "workspace metrics", runsNoConfig: true, handler: async (ctx) => (await import("../workspace/delivery-metrics")).runWorkspaceMetrics(ctx) },
|
|
1252
1375
|
{ name: "workspace status", runsNoConfig: true, handler: async (ctx) => (await import("../workspace/status")).runWorkspaceStatus(ctx) },
|
|
1253
1376
|
{ name: "workspace lineage", handler: async (ctx) => (await import("../workspace/lineage-cli")).runWorkspaceLineage(ctx) },
|
|
1254
1377
|
{ name: "workspace upgrade", handler: async (ctx) => (await import("../workspace/lineage-upgrade-cli")).runWorkspaceUpgrade(ctx) },
|
|
@@ -1299,6 +1422,8 @@ export const commandRegistry: CommandDef[] = [
|
|
|
1299
1422
|
{ name: "lifecycle whoami", requiresPlugins: true, handler: runLifecycleWhoami },
|
|
1300
1423
|
{ name: "lifecycle teardown", requiresPlugins: true, handler: runLifecycleTeardown },
|
|
1301
1424
|
{ name: "lifecycle log", handler: runLifecycleLog },
|
|
1425
|
+
// #4036 — retention's garbage collection. Imported on first use.
|
|
1426
|
+
{ name: "lifecycle gc", runsNoConfig: true, handler: async (ctx) => (await import("./handlers/lifecycle-gc")).runLifecycleGc(ctx) },
|
|
1302
1427
|
|
|
1303
1428
|
// Plan scenarios (#1292) — fully offline, no plugin network calls, but
|
|
1304
1429
|
// requiresPlugins:true so the build step has serializers to partition
|
|
@@ -1335,6 +1460,7 @@ export const commandRegistry: CommandDef[] = [
|
|
|
1335
1460
|
{ name: "dev", handler: runDevUnknown },
|
|
1336
1461
|
{ name: "serve", handler: runServeUnknown },
|
|
1337
1462
|
{ name: "components", handler: runComponentsUnknown },
|
|
1463
|
+
{ name: "release", runsNoConfig: true, handler: async (ctx) => (await import("./handlers/release")).runReleaseUnknown(ctx) },
|
|
1338
1464
|
{ name: "workspace", handler: async (ctx) => (await import("../workspace/records-cli")).runWorkspaceUnknown(ctx) },
|
|
1339
1465
|
];
|
|
1340
1466
|
|
|
@@ -217,6 +217,8 @@ describe("neverOverMcp (chant#3447)", () => {
|
|
|
217
217
|
const gateOnlyOps: Array<{ op: string; gate: string }> = [
|
|
218
218
|
{ op: "workspace-upgrade", gate: "." },
|
|
219
219
|
{ op: "pr-12", gate: "pr-apply" },
|
|
220
|
+
// #4045: a release gate approves a change to an environment, as a pull request's does.
|
|
221
|
+
{ op: "release", gate: "prod-release" },
|
|
220
222
|
];
|
|
221
223
|
|
|
222
224
|
for (const { op, gate } of gateOnlyOps) {
|
|
@@ -126,7 +126,7 @@ export const workspaceReadTools: ToolDefinition[] = [
|
|
|
126
126
|
{
|
|
127
127
|
name: "workspace-changes",
|
|
128
128
|
description:
|
|
129
|
-
"The forward coverage check over a diff: chant workspace check --changes <range> --json (changes.schema.json, #2773). Each changed path with the current records whose constrains cover it, and a change-uncovered or change-out-of-scope finding for each gap, at the severity the declaration's changes block sets. Returns the document unchanged.",
|
|
129
|
+
"The forward coverage check over a diff: chant workspace check --changes <range> --json (changes.schema.json, #2773). Each changed path with the current records whose constrains cover it, and a change-uncovered or change-out-of-scope finding for each gap, at the severity the declaration's changes block sets. links says whether each trunk commit of the range names its work item, with commit-unlinked and commit-wrongly-linked findings at the same severity. Returns the document unchanged.",
|
|
130
130
|
inputSchema: {
|
|
131
131
|
type: "object",
|
|
132
132
|
properties: {
|
package/src/cli/parse-args.ts
CHANGED
|
@@ -48,6 +48,8 @@ const BOOLEAN_FLAGS = new Set([
|
|
|
48
48
|
"--local",
|
|
49
49
|
"--json",
|
|
50
50
|
"--progress-json",
|
|
51
|
+
"--events-json",
|
|
52
|
+
"--follow",
|
|
51
53
|
"--update-snapshot",
|
|
52
54
|
"--update-baseline",
|
|
53
55
|
"--run-examples",
|
|
@@ -71,11 +73,16 @@ const BOOLEAN_FLAGS = new Set([
|
|
|
71
73
|
"--current",
|
|
72
74
|
"--uncommitted",
|
|
73
75
|
"--allow-code",
|
|
76
|
+
"--allow-skip",
|
|
77
|
+
"--allow-unsigned",
|
|
78
|
+
"--require-provenance",
|
|
74
79
|
"--root-only",
|
|
75
80
|
"--generated",
|
|
76
81
|
"--decide",
|
|
77
82
|
"--record-plans",
|
|
78
83
|
"--loopback",
|
|
84
|
+
"--artifacts",
|
|
85
|
+
"--push",
|
|
79
86
|
]);
|
|
80
87
|
|
|
81
88
|
/**
|
|
@@ -191,8 +198,9 @@ export function parseArgs(args: string[]): ParsedArgs {
|
|
|
191
198
|
result.overlayAnchor = v;
|
|
192
199
|
} else if (arg === "--from") {
|
|
193
200
|
// Shared by `migrate --from <lexicon>`, `import --from <env>`,
|
|
194
|
-
// `components promote --from <env
|
|
195
|
-
//
|
|
201
|
+
// `components promote --from <env>`, `init --from <repo>@<ref>` and
|
|
202
|
+
// `ci last-green --from <rev>` (#4031); the commands never run
|
|
203
|
+
// together, so one field carries all five.
|
|
196
204
|
result.migrateFrom = args[++i];
|
|
197
205
|
} else if (arg === "--kustomize") {
|
|
198
206
|
// `chant import --kustomize <dir>` (#1548): render the overlay, import
|
|
@@ -243,6 +251,9 @@ export function parseArgs(args: string[]): ParsedArgs {
|
|
|
243
251
|
result.dryRun = true;
|
|
244
252
|
} else if (arg === "--yes") {
|
|
245
253
|
result.yes = true;
|
|
254
|
+
} else if (arg === "--push") {
|
|
255
|
+
// `chant lifecycle gc --yes --push` (#4036): push the prune commit.
|
|
256
|
+
result.push = true;
|
|
246
257
|
} else if (arg === "--confirm-prod") {
|
|
247
258
|
result.confirmProd = true;
|
|
248
259
|
} else if (arg === "--strict") {
|
|
@@ -370,8 +381,23 @@ export function parseArgs(args: string[]): ParsedArgs {
|
|
|
370
381
|
if (!result.forge || result.forge.startsWith("-")) throw new Error("--forge needs a forge: --forge github|gitlab|forgejo");
|
|
371
382
|
} else if (arg === "--require-review") {
|
|
372
383
|
result.requireReview = true;
|
|
384
|
+
} else if (arg === "--report-url") {
|
|
385
|
+
// `chant components pr-plan|pr-apply --report-url <url>` (#4007).
|
|
386
|
+
const url = args[++i];
|
|
387
|
+
if (!url || url.startsWith("-")) throw new Error("--report-url needs a URL: --report-url s3://<bucket>/<prefix> or file://<directory>");
|
|
388
|
+
result.reportUrl = url;
|
|
389
|
+
} else if (arg === "--allow-unsigned") {
|
|
390
|
+
// `chant release publish --allow-unsigned` (#4049).
|
|
391
|
+
result.allowUnsigned = true;
|
|
392
|
+
} else if (arg === "--require-provenance") {
|
|
393
|
+
// `chant release publish --require-provenance` (#4049).
|
|
394
|
+
result.requireProvenance = true;
|
|
373
395
|
} else if (arg === "--pr-loop") {
|
|
374
396
|
result.prLoop = true;
|
|
397
|
+
} else if (arg === "--before-script") {
|
|
398
|
+
const line = args[++i];
|
|
399
|
+
if (line === undefined || line === "") throw new Error("--before-script needs a shell line: --before-script '<line>'");
|
|
400
|
+
(result.beforeScript ??= []).push(line);
|
|
375
401
|
} else if (arg === "--resume") {
|
|
376
402
|
// `chant approve <op> <gate> --resume` (#3683) takes no value; the
|
|
377
403
|
// fan-out and pull-request apply take the attempt file they resume.
|
|
@@ -384,6 +410,11 @@ export function parseArgs(args: string[]): ParsedArgs {
|
|
|
384
410
|
result.json = true;
|
|
385
411
|
} else if (arg === "--progress-json") {
|
|
386
412
|
result.progressJson = true;
|
|
413
|
+
} else if (arg === "--events-json") {
|
|
414
|
+
result.eventsJson = true;
|
|
415
|
+
} else if (arg === "--follow") {
|
|
416
|
+
// `chant run events <run> --follow` (#4042): tail a run in progress on this host.
|
|
417
|
+
result.follow = true;
|
|
387
418
|
} else if (arg === "--gated-exit") {
|
|
388
419
|
// `chant run <op> --gated-exit <code>` (#2243) — remap only the gated
|
|
389
420
|
// outcome's exit code. Parsed as a number here and range-checked in the
|
|
@@ -413,11 +444,11 @@ export function parseArgs(args: string[]): ParsedArgs {
|
|
|
413
444
|
// `chant workspace graph --composites` (#2662)
|
|
414
445
|
result.composites = true;
|
|
415
446
|
} else if (arg === "--intent") {
|
|
416
|
-
// `chant workspace graph --intent <path[:start-end]|path#symbol>` (#2651), or `--intent --record <id>` with no region.
|
|
447
|
+
// `chant workspace graph --intent <path[:start-end]|path#symbol|member/node|sha>` (#2651), or `--intent --record <id>` with no region.
|
|
417
448
|
const value = args[i + 1];
|
|
418
449
|
if (value !== undefined && !value.startsWith("-")) result.intent = args[++i];
|
|
419
450
|
else if (args.includes("--record")) result.intent = "";
|
|
420
|
-
else throw new Error("--intent needs a region: --intent <path[:start-end]|path#symbol>, or --intent --record <id>");
|
|
451
|
+
else throw new Error("--intent needs a region: --intent <path[:start-end]|path#symbol|member/node|sha>, or --intent --record <id>");
|
|
421
452
|
} else if (arg === "--follow-squash") {
|
|
422
453
|
// `chant workspace graph --intent ... --follow-squash` and `chant workspace runs --follow-squash` (#3035)
|
|
423
454
|
result.followSquash = true;
|
|
@@ -502,6 +533,10 @@ export function parseArgs(args: string[]): ParsedArgs {
|
|
|
502
533
|
} else if (arg === "--app-key-secret") {
|
|
503
534
|
result.ciAppKeySecret = args[++i];
|
|
504
535
|
if (!result.ciAppKeySecret || result.ciAppKeySecret.startsWith("-")) throw new Error("--app-key-secret needs the secret holding the App's private key: --app-key-secret <NAME>");
|
|
536
|
+
} else if (arg === "--runner-key-secret") {
|
|
537
|
+
// `chant ci workflow --runner-key-secret <NAME>` (#4031): the secret holding the runner key the tick signs its tags with.
|
|
538
|
+
result.ciRunnerKeySecret = args[++i];
|
|
539
|
+
if (!result.ciRunnerKeySecret || result.ciRunnerKeySecret.startsWith("-")) throw new Error("--runner-key-secret needs the repository secret holding the runner key, such as CHANT_RUNNER_KEY: --runner-key-secret <NAME>");
|
|
505
540
|
} else if (arg === "--verdict") {
|
|
506
541
|
// `chant workspace records review <id> --verdict agree|dissent|abstain` (#2670)
|
|
507
542
|
result.verdict = args[++i];
|
|
@@ -588,6 +623,17 @@ export function parseArgs(args: string[]): ParsedArgs {
|
|
|
588
623
|
if (result.digest !== undefined) (result.digests ??= []).push(result.digest);
|
|
589
624
|
} else if (arg === "--release-plan") {
|
|
590
625
|
result.releasePlanFile = args[++i];
|
|
626
|
+
} else if (arg === "--release") {
|
|
627
|
+
// `chant components promote --release <label|digest>` (#4026)
|
|
628
|
+
result.release = args[++i];
|
|
629
|
+
if (!result.release || result.release.startsWith("-")) throw new Error("--release needs a release's label or digest: --release <label|digest>");
|
|
630
|
+
} else if (arg === "--build") {
|
|
631
|
+
// `chant release cut --build <command>` (#4026)
|
|
632
|
+
result.buildCommand = args[++i];
|
|
633
|
+
if (!result.buildCommand) throw new Error("--build needs a shell command: --build '<command>'");
|
|
634
|
+
} else if (arg === "--artifacts") {
|
|
635
|
+
// `chant release compile --artifacts` (#4026, internal)
|
|
636
|
+
result.artifacts = true;
|
|
591
637
|
} else if (arg === "--git-sha") {
|
|
592
638
|
result.gitSha = args[++i];
|
|
593
639
|
} else if (arg === "--run-id") {
|
|
@@ -712,10 +758,15 @@ export function parseArgs(args: string[]): ParsedArgs {
|
|
|
712
758
|
// #2550 — `chant workspace upgrade` runs a template's code migrations
|
|
713
759
|
// only when asked to.
|
|
714
760
|
result.allowCode = true;
|
|
761
|
+
} else if (arg === "--allow-skip") {
|
|
762
|
+
// #4030 — `chant components promote` skips a step of the member's
|
|
763
|
+
// declared promotion order only when asked to.
|
|
764
|
+
result.allowSkip = true;
|
|
715
765
|
} else if (arg === "--source") {
|
|
716
766
|
// #2551 — `chant workspace upgrade --source <repo>[#<member>]`.
|
|
717
767
|
result.source = args[++i];
|
|
718
|
-
|
|
768
|
+
// #4044: also `chant ci tick|list --source checks|runs`.
|
|
769
|
+
if (!result.source || result.source.startsWith("-")) throw new Error("--source needs a template: --source <repo>[#<member>] for workspace upgrade, or a source for ci tick and ci list: --source checks|runs");
|
|
719
770
|
} else if (arg === "--tags") {
|
|
720
771
|
// #2551 — `chant workspace adopt-lineage --tags <glob>`, also hash-index and versions.
|
|
721
772
|
result.tags = args[++i];
|
package/src/cli/registry.ts
CHANGED
|
@@ -72,6 +72,16 @@ export interface ParsedArgs {
|
|
|
72
72
|
* unchanged; omitted (undefined, not false) when the flag isn't passed.
|
|
73
73
|
*/
|
|
74
74
|
progressJson?: boolean;
|
|
75
|
+
/**
|
|
76
|
+
* `--events-json` (#4041) — stream the run's events to stdout, one
|
|
77
|
+
* `run-event.schema.json` line each (`../../run-event.ts`), on `chant run
|
|
78
|
+
* <op>`, `chant run --components`, `components promote|rollback|redeploy`,
|
|
79
|
+
* `components fan-out` and `components pr-plan|pr-apply`. Refused beside
|
|
80
|
+
* `--progress-json`, which prints the older shapes to the same stdout.
|
|
81
|
+
*/
|
|
82
|
+
eventsJson?: boolean;
|
|
83
|
+
/** `chant run events <run> --follow` (#4042) — stream the run's events as they happen, until `run-settle`. */
|
|
84
|
+
follow?: boolean;
|
|
75
85
|
live: boolean;
|
|
76
86
|
/** `chant migrate --from <name>` (default "github") */
|
|
77
87
|
migrateFrom?: string;
|
|
@@ -137,6 +147,12 @@ export interface ParsedArgs {
|
|
|
137
147
|
namespace?: string;
|
|
138
148
|
/** `chant workspace upgrade --allow-code` (#2550) — run migrations whose body is the template's own code. */
|
|
139
149
|
allowCode?: boolean;
|
|
150
|
+
/** `chant components promote --allow-skip` (#4030): promote past a step of the member's declared promotion order. */
|
|
151
|
+
allowSkip?: boolean;
|
|
152
|
+
/** `chant release publish --allow-unsigned` (#4049): publish a release with no signature that verifies, with a warning. Never overrides identity.gates.release. */
|
|
153
|
+
allowUnsigned?: boolean;
|
|
154
|
+
/** `chant release publish --require-provenance` (#4049): refuse a run with no OIDC token, where it warns. */
|
|
155
|
+
requireProvenance?: boolean;
|
|
140
156
|
/** `chant workspace upgrade --source <repo>[#<member>]` (#2551): move the scope to another template. */
|
|
141
157
|
source?: string;
|
|
142
158
|
/** `chant workspace adopt-lineage --tags <glob>` and `hash-index --tags` (#2551): the tags to compare. */
|
|
@@ -152,6 +168,8 @@ export interface ParsedArgs {
|
|
|
152
168
|
/** `chant lifecycle teardown <env> --yes` — execute the planned deletion
|
|
153
169
|
* (#1222). Without it the command plans and stops. */
|
|
154
170
|
yes?: boolean;
|
|
171
|
+
/** `chant lifecycle gc --yes --push` (#4036): push the commit the prune wrote to chant/lifecycle. Without it the prune stays local. */
|
|
172
|
+
push?: boolean;
|
|
155
173
|
/** `chant lifecycle teardown <env> --yes --confirm-prod` — the non-interactive
|
|
156
174
|
* form of the extra confirmation a production-like environment name demands
|
|
157
175
|
* (#1222). Meaningless without `--yes`. */
|
|
@@ -160,15 +178,21 @@ export interface ParsedArgs {
|
|
|
160
178
|
verbatim?: boolean;
|
|
161
179
|
/** `chant import --skip-undeclarable` — import what can be declared and warn about the live objects that cannot, instead of failing */
|
|
162
180
|
skipUndeclarable?: boolean;
|
|
163
|
-
/** `chant lifecycle … --src <dir>` — build root override for lifecycle commands */
|
|
181
|
+
/** `chant lifecycle … --src <dir>` — build root override for lifecycle commands. Also `chant release cut --src <dir>` (#4046): the build root of a project with no components. */
|
|
164
182
|
src?: string;
|
|
165
183
|
/** `--env <name>` — active environment: sets CHANT_ENV so env-aware source
|
|
166
184
|
* re-evaluates for that environment (`build` + `graph`), and drives policy. */
|
|
167
185
|
env?: string;
|
|
168
186
|
/** `chant emulator up --port <container-port>=<host-port>`, repeatable (#3673); a bare `<host-port>` when one emulator is selected. */
|
|
169
187
|
port?: string[];
|
|
170
|
-
/**
|
|
188
|
+
/**
|
|
189
|
+
* `chant emulator up --image <ref>` (#3952): the image to start, when one
|
|
190
|
+
* emulator is selected. `chant build --components --generate --image <ref>`
|
|
191
|
+
* (#4002): the image every generated job runs in.
|
|
192
|
+
*/
|
|
171
193
|
image?: string;
|
|
194
|
+
/** `chant build --components --generate --before-script <line>`, repeatable (#4002): shell lines every generated job runs before its command. */
|
|
195
|
+
beforeScript?: string[];
|
|
172
196
|
/** `chant emulator up --network <name>` (#3952): the Docker network each started container joins. */
|
|
173
197
|
network?: string;
|
|
174
198
|
/** `chant emulator up --setting <KEY>=<VALUE>`, repeatable (#3952): an emulator setting such as `FLOCI_<NAME>`, passed as `-e`. */
|
|
@@ -290,6 +314,12 @@ export interface ParsedArgs {
|
|
|
290
314
|
* request. Needs `--forge`.
|
|
291
315
|
*/
|
|
292
316
|
requireReview?: boolean;
|
|
317
|
+
/**
|
|
318
|
+
* `chant components pr-plan|pr-apply --report-url <url>` (#4007) — copy
|
|
319
|
+
* the stage's report, change set and run events to `<url>/<pr>/<commit>/`,
|
|
320
|
+
* an `s3://` or `file://` URL, the events as each wave and component settles.
|
|
321
|
+
*/
|
|
322
|
+
reportUrl?: string;
|
|
293
323
|
/**
|
|
294
324
|
* `chant build --components --generate <lexicon> --pr-loop` (#3183) —
|
|
295
325
|
* generate the pull-request pipeline: plan on the pull request, apply on
|
|
@@ -386,7 +416,7 @@ export interface ParsedArgs {
|
|
|
386
416
|
noCache?: boolean;
|
|
387
417
|
/** `chant workspace graph --composites` (#2662): print each composite instance with the components that can deploy it. */
|
|
388
418
|
composites?: boolean;
|
|
389
|
-
/** `chant workspace graph --intent <path[:start-end]|path#symbol>` (#2651): the region the intent graph is over. Empty with `--record`. */
|
|
419
|
+
/** `chant workspace graph --intent <path[:start-end]|path#symbol|member/node|sha>` (#2651): the region the intent graph is over. Empty with `--record`. */
|
|
390
420
|
intent?: string;
|
|
391
421
|
/** `chant workspace graph --intent` and `chant workspace runs` (#3035): follow squash merges to their pull requests' original commits, fetching missing pull request refs. */
|
|
392
422
|
followSquash?: boolean;
|
|
@@ -434,6 +464,8 @@ export interface ParsedArgs {
|
|
|
434
464
|
ciAppIdVar?: string;
|
|
435
465
|
/** `chant ci workflow --app-key-secret <NAME>` (#3573): the secret holding that App's private key. */
|
|
436
466
|
ciAppKeySecret?: string;
|
|
467
|
+
/** `chant ci workflow --runner-key-secret <NAME>` (#4031): the secret holding the runner key the tick signs its tags with. */
|
|
468
|
+
ciRunnerKeySecret?: string;
|
|
437
469
|
/**
|
|
438
470
|
* `chant workspace records review <id> --by <principal>` (#2670): the
|
|
439
471
|
* reviewer, as the caller names them. Also `chant workspace records new
|
|
@@ -460,7 +492,7 @@ export interface ParsedArgs {
|
|
|
460
492
|
prefix?: string;
|
|
461
493
|
/** `chant workspace records|verify --require attested` (#2547): the provenance level a gate requires. */
|
|
462
494
|
require?: string;
|
|
463
|
-
/** `chant workspace evidence sign --key` (a runner's Ed25519 PEM) and `signers sign --key` (an ssh private key) (#2553). */
|
|
495
|
+
/** `chant workspace evidence sign --key` (a runner's Ed25519 PEM) and `signers sign --key` (an ssh private key) (#2553). Also `chant ci tick --key` (#4031): the runner key the tick signs its tags with. */
|
|
464
496
|
key?: string;
|
|
465
497
|
/** `chant workspace evidence sign --check-id <id>` (#2553): the check the evidence is for. */
|
|
466
498
|
checkId?: string;
|
|
@@ -541,6 +573,12 @@ export interface ParsedArgs {
|
|
|
541
573
|
digest?: string;
|
|
542
574
|
/** `chant components release record --release-plan <file>` (ws-055, #2733) — path to a release plan JSON file, persisted content-addressed to `_plans/<digest>.json` on chant/lifecycle and read back through the read contract (`chant workspace status --json`). The plan's own `digest` field supplies `--digest` when it is omitted, and must match it when both are given. Distinct from `--plan` (#2300, below), the Op gate-approval plan digest. */
|
|
543
575
|
releasePlanFile?: string;
|
|
576
|
+
/** `chant components promote --release <label|digest>` (#4026): deploy under that release, reading the templates its target for `--to` recorded. `chant run --components --release <label|digest>` (#4043): the run is of that release, which must have been cut from the checked-out commit and have a target for `--env`; the release records the run writes name it. */
|
|
577
|
+
release?: string;
|
|
578
|
+
/** `chant release cut --build <command>` (#4026): the shell command run in the member's directory before each environment's templates are read, with `CHANT_ENV` set to the environment. */
|
|
579
|
+
buildCommand?: string;
|
|
580
|
+
/** `chant release compile --artifacts` (#4026, internal): build the artifacts of `--component` instead of compiling the environment. */
|
|
581
|
+
artifacts?: boolean;
|
|
544
582
|
/** Every `--digest` value, in order (#2602). `chant components promote --digest <component>=<sha256:...>` is repeatable, one per component; the other commands read the single {@link digest}. */
|
|
545
583
|
digests?: string[];
|
|
546
584
|
/** `chant components release record --git-sha <sha>` (#568) — git commit the deploy was built from. */
|
|
@@ -634,7 +672,7 @@ export interface ParsedArgs {
|
|
|
634
672
|
plan?: string;
|
|
635
673
|
/** `chant operator log --op <name>` (#2029) — restrict the tick history to one ConvergeOp by name. Omitted, every discovered ConvergeOp's ticks are merged into one timeline. */
|
|
636
674
|
op?: string;
|
|
637
|
-
/** `chant operator log --since <iso>` (#2029) — only entries at or after this ISO-8601 instant. `chant workspace records --since <rev>` (#2673) — the revision to compare the records with. */
|
|
675
|
+
/** `chant operator log --since <iso>` (#2029) — only entries at or after this ISO-8601 instant. `chant workspace records --since <rev>` (#2673) — the revision to compare the records with. `chant workspace metrics --since <date>` (#4039) — the start of the window the metrics count. */
|
|
638
676
|
since?: string;
|
|
639
677
|
/** `chant operator log --limit <n>` (#2029) — keep only the newest n entries (still printed oldest-first). */
|
|
640
678
|
limit?: number;
|