@intentius/chant 0.124.27 → 0.124.28
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/change-set-graph.d.ts +56 -0
- package/dist/change-set-graph.d.ts.map +1 -0
- package/dist/change-set-graph.js +128 -0
- package/dist/change-set.d.ts +52 -3
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +35 -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/commands/build.d.ts +8 -0
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/build.js +9 -8
- 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 +19 -4
- package/dist/cli/handlers/build.d.ts.map +1 -1
- package/dist/cli/handlers/build.js +28 -0
- 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 +1 -1
- package/dist/cli/handlers/fan-out.d.ts.map +1 -1
- package/dist/cli/handlers/fan-out.js +14 -3
- package/dist/cli/handlers/pr.d.ts +8 -2
- package/dist/cli/handlers/pr.d.ts.map +1 -1
- package/dist/cli/handlers/pr.js +148 -24
- package/dist/cli/handlers/promote.d.ts.map +1 -1
- package/dist/cli/handlers/promote.js +256 -21
- package/dist/cli/handlers/release.d.ts +34 -0
- package/dist/cli/handlers/release.d.ts.map +1 -0
- package/dist/cli/handlers/release.js +203 -0
- package/dist/cli/handlers/run.d.ts +28 -2
- package/dist/cli/handlers/run.d.ts.map +1 -1
- package/dist/cli/handlers/run.js +170 -13
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +88 -13
- 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 +49 -3
- package/dist/cli/registry.d.ts +29 -3
- package/dist/cli/registry.d.ts.map +1 -1
- package/dist/cli/run-events.d.ts +29 -0
- package/dist/cli/run-events.d.ts.map +1 -0
- package/dist/cli/run-events.js +47 -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 +4 -1
- package/dist/components/auto-release.d.ts.map +1 -1
- package/dist/components/auto-release.js +2 -0
- 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 +42 -9
- package/dist/components/driver.d.ts.map +1 -1
- package/dist/components/driver.js +81 -54
- 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 +35 -26
- 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 +15 -2
- package/dist/components/promote.d.ts.map +1 -1
- package/dist/components/promote.js +17 -0
- package/dist/components/release-compile.d.ts +133 -0
- package/dist/components/release-compile.d.ts.map +1 -0
- package/dist/components/release-compile.js +376 -0
- package/dist/components/release-gate.d.ts +125 -0
- package/dist/components/release-gate.d.ts.map +1 -0
- package/dist/components/release-gate.js +282 -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 +3 -1
- package/dist/components/wave-plan.d.ts.map +1 -1
- package/dist/components/wave-plan.js +1 -1
- package/dist/config.d.ts +7 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -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/change-set-store.d.ts +67 -0
- package/dist/lifecycle/change-set-store.d.ts.map +1 -0
- package/dist/lifecycle/change-set-store.js +96 -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/gate-change-set.d.ts +69 -0
- package/dist/lifecycle/gate-change-set.d.ts.map +1 -0
- package/dist/lifecycle/gate-change-set.js +106 -0
- package/dist/lifecycle/gate-ledger.d.ts +49 -1
- package/dist/lifecycle/gate-ledger.d.ts.map +1 -1
- package/dist/lifecycle/gate-ledger.js +18 -0
- package/dist/lifecycle/release-cut.d.ts +107 -0
- package/dist/lifecycle/release-cut.d.ts.map +1 -0
- package/dist/lifecycle/release-cut.js +273 -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-store.d.ts +190 -0
- package/dist/lifecycle/release-store.d.ts.map +1 -0
- package/dist/lifecycle/release-store.js +318 -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/point-decision.d.ts +2 -0
- package/dist/point-decision.d.ts.map +1 -1
- package/dist/point-decision.js +9 -2
- package/dist/run-event-store.d.ts +77 -0
- package/dist/run-event-store.d.ts.map +1 -0
- package/dist/run-event-store.js +204 -0
- package/dist/run-event-stream.d.ts +132 -0
- package/dist/run-event-stream.d.ts.map +1 -0
- package/dist/run-event-stream.js +238 -0
- package/dist/run-event.d.ts +267 -0
- package/dist/run-event.d.ts.map +1 -0
- package/dist/run-event.js +207 -0
- package/dist/wave-runtime.mjs +204 -199
- 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 +28 -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/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 +273 -13
- package/dist/workspace/ci-green.d.ts.map +1 -1
- package/dist/workspace/ci-green.js +449 -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 +19 -0
- package/dist/workspace/declaration.d.ts.map +1 -1
- package/dist/workspace/declaration.js +1 -1
- package/dist/workspace/declaration.schema.json +12 -0
- 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.d.ts +6 -1
- package/dist/workspace/intent.d.ts.map +1 -1
- package/dist/workspace/intent.js +51 -1
- 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/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 +2 -0
- package/dist/workspace/reason-codes.d.ts.map +1 -1
- package/dist/workspace/reason-codes.js +4 -1
- package/dist/workspace/releases.d.ts +72 -0
- package/dist/workspace/releases.d.ts.map +1 -0
- package/dist/workspace/releases.js +94 -0
- package/dist/workspace/releases.schema.json +391 -0
- package/dist/workspace/run-event.schema.json +288 -0
- package/dist/workspace/status-gates.d.ts +26 -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 +39 -0
- package/dist/workspace/status.d.ts.map +1 -1
- package/dist/workspace/status.js +48 -1
- package/dist/workspace/status.schema.json +70 -1
- 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/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/change-set-graph.test.ts +72 -0
- package/src/change-set-graph.ts +133 -0
- package/src/change-set.ts +76 -6
- package/src/chant-version.ts +16 -0
- package/src/cli/commands/build.ts +19 -8
- 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 +80 -0
- package/src/cli/handlers/approve.ts +18 -2
- package/src/cli/handlers/build.test.ts +52 -0
- package/src/cli/handlers/build.ts +29 -0
- package/src/cli/handlers/change-set.ts +49 -1
- package/src/cli/handlers/fan-out.test.ts +48 -0
- package/src/cli/handlers/fan-out.ts +15 -3
- package/src/cli/handlers/operator.test.ts +37 -0
- package/src/cli/handlers/pr.test.ts +194 -0
- package/src/cli/handlers/pr.ts +168 -34
- package/src/cli/handlers/promote.test.ts +389 -5
- package/src/cli/handlers/promote.ts +279 -20
- package/src/cli/handlers/release-implicit.e2e.test.ts +153 -0
- package/src/cli/handlers/release.e2e.test.ts +85 -0
- package/src/cli/handlers/release.ts +206 -0
- package/src/cli/handlers/run-auto-release.test.ts +71 -0
- package/src/cli/handlers/run-events-cmd.test.ts +92 -0
- package/src/cli/handlers/run.test.ts +30 -0
- package/src/cli/handlers/run.ts +176 -15
- package/src/cli/main.test.ts +7 -0
- package/src/cli/main.ts +88 -13
- 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 +37 -3
- package/src/cli/registry.ts +29 -3
- package/src/cli/run-events.ts +54 -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 +21 -0
- package/src/components/auto-release.ts +6 -1
- package/src/components/cli-support.test.ts +82 -0
- package/src/components/cli-support.ts +16 -9
- package/src/components/driver.ts +129 -56
- package/src/components/fan-out-run.ts +56 -35
- 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 +26 -1
- package/src/components/release-compile.test.ts +147 -0
- package/src/components/release-compile.ts +445 -0
- package/src/components/release-gate.test.ts +215 -0
- package/src/components/release-gate.ts +341 -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 +1 -1
- package/src/config.ts +7 -1
- package/src/index.ts +2 -0
- package/src/lifecycle/change-set-store.test.ts +217 -0
- package/src/lifecycle/change-set-store.ts +112 -0
- package/src/lifecycle/commit-sha.ts +23 -0
- package/src/lifecycle/gate-change-set.e2e.test.ts +122 -0
- package/src/lifecycle/gate-change-set.ts +133 -0
- package/src/lifecycle/gate-ledger.test.ts +33 -0
- package/src/lifecycle/gate-ledger.ts +66 -1
- package/src/lifecycle/release-cut-signed.test.ts +180 -0
- package/src/lifecycle/release-cut.test.ts +411 -0
- package/src/lifecycle/release-cut.ts +367 -0
- package/src/lifecycle/release-ledger.test.ts +14 -0
- package/src/lifecycle/release-ledger.ts +85 -17
- package/src/lifecycle/release-store.ts +423 -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/point-decision.ts +12 -2
- package/src/run-event-store.test.ts +144 -0
- package/src/run-event-store.ts +213 -0
- package/src/run-event-stream.test.ts +175 -0
- package/src/run-event-stream.ts +306 -0
- package/src/run-event.test.ts +277 -0
- package/src/run-event.ts +451 -0
- package/src/wave-loop-golden.test.ts +9 -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 +28 -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/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 +624 -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 +12 -0
- package/src/workspace/declaration.ts +22 -2
- package/src/workspace/identity-gate-rule.ts +91 -7
- package/src/workspace/identity.ts +14 -1
- package/src/workspace/intent.ts +48 -1
- 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/promotion-order.ts +97 -0
- package/src/workspace/read-contract.e2e.test.ts +4 -1
- package/src/workspace/reason-codes.test.ts +2 -1
- package/src/workspace/reason-codes.ts +4 -1
- package/src/workspace/releases.schema.json +391 -0
- package/src/workspace/releases.test.ts +108 -0
- package/src/workspace/releases.ts +122 -0
- package/src/workspace/run-event.schema.json +288 -0
- package/src/workspace/status-contract.test.ts +52 -1
- package/src/workspace/status-gates.ts +56 -1
- package/src/workspace/status-stewards.ts +6 -0
- package/src/workspace/status.schema.json +70 -1
- package/src/workspace/status.ts +80 -1
- 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/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/dist/cli/handlers/pr.js
CHANGED
|
@@ -29,6 +29,12 @@
|
|
|
29
29
|
*
|
|
30
30
|
* Every run writes `pr-plan.json` or `pr-apply.json` (`pr-report.schema.json`),
|
|
31
31
|
* `change-set.json` and `pr-note.md` under `--output` (default `.chant/pr`). *
|
|
32
|
+
* `--events-json` (#4041, #4007) streams the stage's run events to stdout,
|
|
33
|
+
* one `run-event.schema.json` line each: the planning as a `plan` phase with
|
|
34
|
+
* a step per component, the gate's decision as a `gate` phase, and on
|
|
35
|
+
* pr-apply the apply's waves and components as `chant run --components`
|
|
36
|
+
* streams them.
|
|
37
|
+
*
|
|
32
38
|
* `--member <name>` (#3465) runs a workspace member's loop: the member's
|
|
33
39
|
* generated pipeline passes it from the member's directory. The gate is
|
|
34
40
|
* recorded under `pr-<n>-<member>`, and the note and the statuses carry the
|
|
@@ -44,6 +50,8 @@ import { applyPrSet, approvalOf, approversWithoutReview, decidePrGate, planPrSet
|
|
|
44
50
|
import { readFanOutAttempt, writeFanOutAttempt } from "../../components/fan-out-record.js";
|
|
45
51
|
import { samePlanDigest } from "../../lifecycle/plan-digest.js";
|
|
46
52
|
import { gitGateLedgerPort } from "../../op/gate.js";
|
|
53
|
+
import { emitGateStep, gateEventsOf, GATE_PHASE } from "../../run-event-stream.js";
|
|
54
|
+
import { openCliRunEvents, refusesEventsWithJson } from "../run-events.js";
|
|
47
55
|
import { describePlanChanged, PR_APPLY_GATE, prApproveCommand, prNoteMarker, prOp, prStatusDescription, prStatusContext, prStatusState, renderPrNote, } from "../../pr-loop.js";
|
|
48
56
|
import { FORGE_KINDS, forgeFromEnv, forgePrincipalOf } from "../../pr-forge.js";
|
|
49
57
|
import { GITHUB_COMMENT_LIMIT, GITLAB_NOTE_LIMIT } from "../../plan-summary.js";
|
|
@@ -51,7 +59,7 @@ import { resolveCliBuildParams, parseParamFlags } from "../build-params-cli.js";
|
|
|
51
59
|
import { formatError, formatInfo, formatSuccess, formatWarning } from "../format.js";
|
|
52
60
|
import { findWorkspaceRoot } from "../../project-root.js";
|
|
53
61
|
import { resolveChangedUnits } from "./fan-out.js";
|
|
54
|
-
import { GATED_EXIT_CODE, recordAutoReleasesForRun } from "./run.js";
|
|
62
|
+
import { GATED_EXIT_CODE, autoReleaseRun, recordAutoReleasesForRun } from "./run.js";
|
|
55
63
|
/** Where the reports land unless `--output` says. */
|
|
56
64
|
export const PR_REPORT_DIR = ".chant/pr";
|
|
57
65
|
const fail = (message, hint) => {
|
|
@@ -179,8 +187,31 @@ async function checkMember(projectPath, names) {
|
|
|
179
187
|
return name;
|
|
180
188
|
}
|
|
181
189
|
/** Plan every member the derivation selects. */
|
|
182
|
-
function planAll(p) {
|
|
183
|
-
return planPrSet({
|
|
190
|
+
function planAll(p, onRunEvent) {
|
|
191
|
+
return planPrSet({
|
|
192
|
+
components: p.components,
|
|
193
|
+
plan: p.plan,
|
|
194
|
+
registry: p.registry,
|
|
195
|
+
env: p.env,
|
|
196
|
+
seededOutputs: p.seededOutputs,
|
|
197
|
+
...(onRunEvent ? { onRunEvent } : {}),
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* How a stage's report settles its run's events (#4041): a refusal waits on
|
|
202
|
+
* a person, as a gate does, and exits the same way.
|
|
203
|
+
*/
|
|
204
|
+
function settleOf(status) {
|
|
205
|
+
switch (status) {
|
|
206
|
+
case "nothing":
|
|
207
|
+
case "planned":
|
|
208
|
+
case "applied":
|
|
209
|
+
return "ok";
|
|
210
|
+
case "refused":
|
|
211
|
+
return "gated";
|
|
212
|
+
default:
|
|
213
|
+
return "failed";
|
|
214
|
+
}
|
|
184
215
|
}
|
|
185
216
|
/** Write the report, the change set and the note; print the note's path. */
|
|
186
217
|
function writeOutputs(ctx, report, note) {
|
|
@@ -238,20 +269,44 @@ async function finish(ctx, p, report) {
|
|
|
238
269
|
if (ctx.args.json)
|
|
239
270
|
console.log(JSON.stringify(report, null, 2));
|
|
240
271
|
}
|
|
241
|
-
/**
|
|
242
|
-
|
|
272
|
+
/** Run a stage, and end its stream as `failed` when the stage did not settle it. */
|
|
273
|
+
async function withStageEvents(stage, run) {
|
|
274
|
+
const events = {};
|
|
275
|
+
try {
|
|
276
|
+
return await run(events);
|
|
277
|
+
}
|
|
278
|
+
catch (err) {
|
|
279
|
+
events.stream?.settle("failed", err instanceof Error ? err.message : String(err));
|
|
280
|
+
throw err;
|
|
281
|
+
}
|
|
282
|
+
finally {
|
|
283
|
+
events.stream?.settle("failed", `${stage} stopped before it finished`);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
/** chant components pr-plan --base <ref> --pr <n> [--env <env>] [--gate <name>] [--forge <kind>] [--output <dir>] [--json] [--events-json] */
|
|
287
|
+
export function runComponentsPrPlan(ctx) {
|
|
288
|
+
if (refusesEventsWithJson(ctx.args, "the stage's report"))
|
|
289
|
+
return Promise.resolve(1);
|
|
290
|
+
return withStageEvents("pr-plan", (events) => prPlan(ctx, events));
|
|
291
|
+
}
|
|
292
|
+
async function prPlan(ctx, stage) {
|
|
243
293
|
if (ctx.args.pr === undefined) {
|
|
244
294
|
return fail("pr-plan needs the pull or merge request: --pr <n>", "Its approval is recorded under op pr-<n>, so one pull request's approval never answers another's.");
|
|
245
295
|
}
|
|
246
296
|
const p = await prepare(ctx, "plan");
|
|
247
297
|
if (typeof p === "number")
|
|
248
298
|
return p;
|
|
249
|
-
const set = await planAll(p);
|
|
250
299
|
const op = prOp(ctx.args.pr, p.member);
|
|
300
|
+
// `--events-json` (#4041): planning, then where the approval stands.
|
|
301
|
+
const events = await openCliRunEvents(ctx.args, { kind: "component", name: `pr-plan ${op}`, cwd: resolve(".") });
|
|
302
|
+
stage.stream = events;
|
|
303
|
+
events?.emit({ type: "run-start", waves: p.plan.waves });
|
|
304
|
+
const set = await planAll(p, events?.emit);
|
|
251
305
|
let approval = { status: "pending" };
|
|
252
306
|
if (p.plan.order.length > 0) {
|
|
253
307
|
try {
|
|
254
|
-
|
|
308
|
+
const check = await emitGateStep(events?.emit, { op, gate: p.gate }, () => decidePrGate(readOnlyLedger(gitGateLedgerPort()), { op, gate: p.gate, digest: set.doc.digest }));
|
|
309
|
+
approval = approvalOf(check);
|
|
255
310
|
}
|
|
256
311
|
catch (err) {
|
|
257
312
|
console.error(formatWarning({ message: `could not read the gate ledger, so the approval reads as pending: ${err instanceof Error ? err.message : String(err)}` }));
|
|
@@ -274,6 +329,8 @@ export async function runComponentsPrPlan(ctx) {
|
|
|
274
329
|
status,
|
|
275
330
|
});
|
|
276
331
|
await finish(ctx, p, report);
|
|
332
|
+
// The plan stage settles on its planning: an approval still to come is what it reports, not a stop.
|
|
333
|
+
events?.settle(settleOf(status), status === "plan-failed" ? "a member failed to plan" : undefined);
|
|
277
334
|
console.error(formatInfo(`pr-plan: ${report.members.length} member(s), ${status}`));
|
|
278
335
|
printMembers(report);
|
|
279
336
|
if (status === "planned") {
|
|
@@ -282,8 +339,13 @@ export async function runComponentsPrPlan(ctx) {
|
|
|
282
339
|
}
|
|
283
340
|
return status === "plan-failed" ? 1 : 0;
|
|
284
341
|
}
|
|
285
|
-
/** chant components pr-apply --base <ref> [--pr <n>] [--env <env>] [--gate <name>] [--forge <kind>] [--require-review] [--output <dir>] [--json] */
|
|
286
|
-
export
|
|
342
|
+
/** chant components pr-apply --base <ref> [--pr <n>] [--env <env>] [--gate <name>] [--forge <kind>] [--require-review] [--output <dir>] [--json] [--events-json] */
|
|
343
|
+
export function runComponentsPrApply(ctx) {
|
|
344
|
+
if (refusesEventsWithJson(ctx.args, "the stage's report"))
|
|
345
|
+
return Promise.resolve(1);
|
|
346
|
+
return withStageEvents("pr-apply", (events) => prApply(ctx, events));
|
|
347
|
+
}
|
|
348
|
+
async function prApply(ctx, stage) {
|
|
287
349
|
const { args } = ctx;
|
|
288
350
|
if (args.requireReview && !args.forge)
|
|
289
351
|
return fail("--require-review reads the pull request's reviews, so it needs --forge <kind>");
|
|
@@ -300,6 +362,12 @@ export async function runComponentsPrApply(ctx) {
|
|
|
300
362
|
}
|
|
301
363
|
}
|
|
302
364
|
const op = pr === null ? "pr-unknown" : prOp(pr, p.member);
|
|
365
|
+
// The run id the release records carry, chosen before the run so that
|
|
366
|
+
// `--events-json` (#4041, #4007) names the run by it too.
|
|
367
|
+
const release = autoReleaseRun(`${op}-${Date.now()}`);
|
|
368
|
+
const events = await openCliRunEvents(args, { kind: "component", name: `pr-apply ${op}`, runId: release.runId, cwd: resolve(".") });
|
|
369
|
+
stage.stream = events;
|
|
370
|
+
events?.emit({ type: "run-start", waves: p.plan.waves });
|
|
303
371
|
// `--resume` (#3464): an earlier attempt at this change on this commit
|
|
304
372
|
// applied part of an approved set. When the members left are covered by
|
|
305
373
|
// it and its approval still stands, finish it under that approval.
|
|
@@ -314,9 +382,12 @@ export async function runComponentsPrApply(ctx) {
|
|
|
314
382
|
}
|
|
315
383
|
}
|
|
316
384
|
const resumed = pr !== null && p.plan.order.length > 0 && attempt ? await tryResume(p, attempt, args.resume, op) : undefined;
|
|
317
|
-
|
|
385
|
+
if (resumed)
|
|
386
|
+
emitResumedGate(events, op, p.gate, resumed.check);
|
|
387
|
+
const set = resumed?.set ?? (await planAll(p, events?.emit));
|
|
318
388
|
const base = { stage: "apply", pr, env: p.env, ...(p.member ? { member: p.member } : {}), base: p.base, head: p.head, op, gate: p.gate, plan: p.plan, signal: p.signal, set };
|
|
319
|
-
const stop = async (report, code) => {
|
|
389
|
+
const stop = async (report, code, settle) => {
|
|
390
|
+
events?.settle(settle ?? settleOf(report.status), report.status === "plan-failed" || report.status === "failed" ? report.message ?? `pr-apply ${report.status}` : undefined);
|
|
320
391
|
await finish(ctx, p, report);
|
|
321
392
|
console.error((code === 0 ? formatInfo : (m) => formatWarning({ message: m }))(`pr-apply: ${report.status}${report.refusal ? ` (${report.refusal})` : ""}`));
|
|
322
393
|
if (report.message)
|
|
@@ -344,16 +415,25 @@ export async function runComponentsPrApply(ctx) {
|
|
|
344
415
|
message: "A member failed to plan, so there is no plan to compare with the approved one. Nothing was applied.",
|
|
345
416
|
}), 1);
|
|
346
417
|
}
|
|
418
|
+
// #4022: keep the change set the gate binds on chant/lifecycle under its
|
|
419
|
+
// digest before deciding the gate, so the plan an approval bound, or the
|
|
420
|
+
// one a pending fact waits on, can be read once this job is gone.
|
|
421
|
+
await storeChangeSetForGate(ctx, p, set.doc);
|
|
347
422
|
let approval;
|
|
348
423
|
if (resumed) {
|
|
349
424
|
approval = resumed.approval;
|
|
350
425
|
}
|
|
351
426
|
else {
|
|
352
|
-
const check = await decidePrGate(gitGateLedgerPort(), {
|
|
427
|
+
const check = await emitGateStep(events?.emit, { op, gate: p.gate }, () => decidePrGate(gitGateLedgerPort(), {
|
|
353
428
|
op,
|
|
354
429
|
gate: p.gate,
|
|
355
430
|
digest: set.doc.digest,
|
|
356
431
|
description: `pull request #${pr}: ${p.plan.order.join(", ")}`,
|
|
432
|
+
}), (unapproved) => {
|
|
433
|
+
const a = approvalOf(unapproved);
|
|
434
|
+
return a.status === "changed"
|
|
435
|
+
? describePlanChanged({ op, gate: p.gate, digest: set.doc.digest, approval: a })
|
|
436
|
+
: `No approval stands for this plan. Approve it: ${prApproveCommand({ op, gate: p.gate, digest: set.doc.digest })}`;
|
|
357
437
|
});
|
|
358
438
|
approval = approvalOf(check);
|
|
359
439
|
if (!check.satisfied) {
|
|
@@ -378,15 +458,11 @@ export async function runComponentsPrApply(ctx) {
|
|
|
378
458
|
}
|
|
379
459
|
const strangers = approversWithoutReview(approval.approvedBy ?? [], reviewers);
|
|
380
460
|
if (strangers.length > 0) {
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
approval
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
message: `The plan is approved by ${strangers.join(", ")}, who ${strangers.length === 1 ? "has" : "have"} no approving review on #${pr}` +
|
|
387
|
-
` (approving reviews: ${reviewers.join(", ") || "none"}). Nothing was applied. ` +
|
|
388
|
-
`An approval counts when it names the reviewer the way the forge does: ${p.forge.principalOf("<login>")}.`,
|
|
389
|
-
}), GATED_EXIT_CODE);
|
|
461
|
+
const message = `The plan is approved by ${strangers.join(", ")}, who ${strangers.length === 1 ? "has" : "have"} no approving review on #${pr}` +
|
|
462
|
+
` (approving reviews: ${reviewers.join(", ") || "none"}). Nothing was applied. ` +
|
|
463
|
+
`An approval counts when it names the reviewer the way the forge does: ${p.forge.principalOf("<login>")}.`;
|
|
464
|
+
emitReviewStop(events, message);
|
|
465
|
+
return stop(prReport({ ...base, approval, status: "refused", refusal: "not-a-reviewer", message }), GATED_EXIT_CODE);
|
|
390
466
|
}
|
|
391
467
|
}
|
|
392
468
|
// The record is written before the first component runs and again as each
|
|
@@ -424,6 +500,8 @@ export async function runComponentsPrApply(ctx) {
|
|
|
424
500
|
env: p.env,
|
|
425
501
|
set,
|
|
426
502
|
...(resumed ? { resumed: prior } : {}),
|
|
503
|
+
// The apply is this run's waves, so the fan-out's own run framing is dropped.
|
|
504
|
+
...(events ? { onRunEvent: events.nested } : {}),
|
|
427
505
|
...(resumePath
|
|
428
506
|
? {
|
|
429
507
|
onComponentSettled: (settled, outputs) => {
|
|
@@ -441,7 +519,7 @@ export async function runComponentsPrApply(ctx) {
|
|
|
441
519
|
: {}),
|
|
442
520
|
});
|
|
443
521
|
recordAttempt();
|
|
444
|
-
await recordAutoReleasesForRun(applied.run.results, p.env,
|
|
522
|
+
await recordAutoReleasesForRun(applied.run.results, p.env, release.runId, resolveAutoReleaseDisabled(p.config, args.noReleaseRecord), release.runOrigin);
|
|
445
523
|
const report = prReport({
|
|
446
524
|
...base,
|
|
447
525
|
approval,
|
|
@@ -449,11 +527,57 @@ export async function runComponentsPrApply(ctx) {
|
|
|
449
527
|
members: applied.members,
|
|
450
528
|
...(resumed ? { resumed: resumed.completed } : {}),
|
|
451
529
|
});
|
|
452
|
-
|
|
530
|
+
// A component that stopped at a gate of its own leaves the apply waiting on a person.
|
|
531
|
+
const code = await stop(report, applied.status === "applied" ? 0 : 1, applied.run.status === "gated" ? "gated" : undefined);
|
|
453
532
|
if (applied.status === "applied")
|
|
454
533
|
console.error(formatSuccess(`applied the plan ${report.digest} approved by ${(approval.approvedBy ?? []).join(", ")}`));
|
|
455
534
|
return code;
|
|
456
535
|
}
|
|
536
|
+
/** A resumed apply's gate (#3464), decided against the approved digest, as the run's `gate` phase. */
|
|
537
|
+
function emitResumedGate(events, op, gate, check) {
|
|
538
|
+
if (!events)
|
|
539
|
+
return;
|
|
540
|
+
const where = { component: null, phase: GATE_PHASE, step: `gate:${gate}` };
|
|
541
|
+
events.emit({ type: "phase-start", component: null, phase: GATE_PHASE });
|
|
542
|
+
events.emit({ type: "step-start", ...where });
|
|
543
|
+
for (const body of gateEventsOf(check, { ...where, op, gate }, { durationMs: null }))
|
|
544
|
+
events.emit(body);
|
|
545
|
+
events.emit({ type: "phase-settle", component: null, phase: GATE_PHASE, status: check.satisfied ? "ok" : "gated" });
|
|
546
|
+
}
|
|
547
|
+
/** An approval by someone with no approving review (#3183) stops the apply: a `review` phase that settles `gated`. */
|
|
548
|
+
function emitReviewStop(events, message) {
|
|
549
|
+
if (!events)
|
|
550
|
+
return;
|
|
551
|
+
events.emit({ type: "phase-start", component: null, phase: "review" });
|
|
552
|
+
events.emit({ type: "step-start", component: null, phase: "review", step: "review" });
|
|
553
|
+
events.emit({ type: "step-settle", component: null, phase: "review", step: "review", status: "gated", durationMs: null, message });
|
|
554
|
+
events.emit({ type: "phase-settle", component: null, phase: "review", status: "gated" });
|
|
555
|
+
}
|
|
556
|
+
/**
|
|
557
|
+
* Store `doc` under its digest with its entries mapped onto the member's
|
|
558
|
+
* graph (`storeGateChangeSet`), and push. A failure is a warning: the gate
|
|
559
|
+
* decides the same either way.
|
|
560
|
+
*/
|
|
561
|
+
async function storeChangeSetForGate(ctx, p, doc) {
|
|
562
|
+
const { storeGateChangeSet, gateGraphReader } = await import("../../lifecycle/gate-change-set.js");
|
|
563
|
+
const { pushLifecycleReport } = await import("../../lifecycle/git.js");
|
|
564
|
+
const graphArgs = [
|
|
565
|
+
...(ctx.args.param ?? []).flatMap((kv) => ["--param", kv]),
|
|
566
|
+
...(ctx.args.paramsFile ? ["--params-file", ctx.args.paramsFile] : []),
|
|
567
|
+
];
|
|
568
|
+
try {
|
|
569
|
+
const stored = await storeGateChangeSet({ doc, cwd: resolve("."), at: p.head, readGraph: gateGraphReader(graphArgs) });
|
|
570
|
+
if (stored.warning)
|
|
571
|
+
console.error(formatWarning({ message: stored.warning }));
|
|
572
|
+
// The push's own outcome is said by the gate's pending fact, or by the
|
|
573
|
+
// release records the apply writes, which push the same branch.
|
|
574
|
+
if (stored.written)
|
|
575
|
+
await pushLifecycleReport();
|
|
576
|
+
}
|
|
577
|
+
catch (err) {
|
|
578
|
+
console.error(formatWarning({ message: `could not store the change set ${doc.digest}: ${err instanceof Error ? err.message : String(err)}` }));
|
|
579
|
+
}
|
|
580
|
+
}
|
|
457
581
|
/**
|
|
458
582
|
* Whether `attempt` finishes here (#3464). It carries only when it was made
|
|
459
583
|
* by an apply of this pull request's gate, on this commit, for this
|
|
@@ -499,5 +623,5 @@ async function tryResume(p, attempt, file, op) {
|
|
|
499
623
|
if (!resumed.ok)
|
|
500
624
|
return skip(`what is left is not what was approved. ${resumed.reasons.join("; ")}`);
|
|
501
625
|
console.error(formatInfo(`resume : ${attempt.completed.join(", ")} applied in an earlier attempt; applying ${resumed.plan.order.join(", ") || "nothing more"} under the approval of ${record.digest}`));
|
|
502
|
-
return { plan: resumed.plan, set: resumed.set, approval: approvalOf(check), completed: attempt.completed, outputs };
|
|
626
|
+
return { plan: resumed.plan, set: resumed.set, check, approval: approvalOf(check), completed: attempt.completed, outputs };
|
|
503
627
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promote.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/promote.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"promote.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/promote.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA8CH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAgclD,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CA6F/E;AAED,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CA0BhF;AAED,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CA0BhF"}
|