@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
|
@@ -4,7 +4,7 @@ import { resolveBuildModes, resolveProjectBuildOptions } from "../build-options.
|
|
|
4
4
|
import { resolveTelemetryAttribution } from "../../telemetry-attribution.js";
|
|
5
5
|
import { loadOkfBundle } from "../../okf-read.js";
|
|
6
6
|
import { unknownEnvError } from "../../env.js";
|
|
7
|
-
import {
|
|
7
|
+
import { resolveFlaggedBuildParams } from "../../flag-params.js";
|
|
8
8
|
import { runPostSynthChecks } from "../../lint/post-synth.js";
|
|
9
9
|
import { loadActivityContracts } from "../../op/activity-contract-registry.js";
|
|
10
10
|
import { isOpEntity } from "../../op/resource.js";
|
|
@@ -25,6 +25,10 @@ import { formatError, formatWarning, formatSuccess, formatBold, formatInfo } fro
|
|
|
25
25
|
import { writeFileSync, mkdirSync } from "fs";
|
|
26
26
|
import { resolve, dirname, join, relative } from "path";
|
|
27
27
|
import { watchDirectory, formatTimestamp, formatChangedFiles } from "../watch.js";
|
|
28
|
+
function writeFileCreatingDir(path, content) {
|
|
29
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
30
|
+
writeFileSync(path, content);
|
|
31
|
+
}
|
|
28
32
|
/**
|
|
29
33
|
* Resolve the output format for `chant build`.
|
|
30
34
|
*
|
|
@@ -148,11 +152,14 @@ export async function buildCommand(options) {
|
|
|
148
152
|
// project's own `params.ts` does before migrating to this mechanism). Also
|
|
149
153
|
// logs a one-line count on success, or every resolved value (`[param] name =
|
|
150
154
|
// value (source)`) under --verbose (#1424).
|
|
151
|
-
|
|
155
|
+
// #4024: in a workspace member, a build for an environment also reads the
|
|
156
|
+
// flag records that back its parameters, and refuses an override of one
|
|
157
|
+
// where the environment has a gate (../../flag-params.ts).
|
|
158
|
+
const paramsResolution = await resolveFlaggedBuildParams(configDir, config.buildParams, {
|
|
152
159
|
cli: options.params,
|
|
153
160
|
paramsFile: options.paramsFile,
|
|
154
161
|
verbose: options.verbose,
|
|
155
|
-
});
|
|
162
|
+
}, options.env);
|
|
156
163
|
if (!paramsResolution.success) {
|
|
157
164
|
errors.push(...paramsResolution.errors);
|
|
158
165
|
return { success: false, resourceCount: 0, fileCount: 0, errors, warnings };
|
|
@@ -552,6 +559,7 @@ export async function buildCommand(options) {
|
|
|
552
559
|
}));
|
|
553
560
|
}
|
|
554
561
|
// Handle output
|
|
562
|
+
const writeOutput = options.writeFile ?? writeFileCreatingDir;
|
|
555
563
|
if (result.errors.length === 0 && errors.length === 0) {
|
|
556
564
|
// Extract primary content and collect additional files from SerializerResult.
|
|
557
565
|
// Each entry remembers which lexicon produced it, so a same-basename
|
|
@@ -680,8 +688,7 @@ export async function buildCommand(options) {
|
|
|
680
688
|
additionalFiles.delete(filename);
|
|
681
689
|
try {
|
|
682
690
|
const targetPath = join(projectDist, filename);
|
|
683
|
-
|
|
684
|
-
writeFileSync(targetPath, entry.content);
|
|
691
|
+
writeOutput(targetPath, entry.content);
|
|
685
692
|
opsWritten += 1;
|
|
686
693
|
}
|
|
687
694
|
catch (err) {
|
|
@@ -706,8 +713,7 @@ export async function buildCommand(options) {
|
|
|
706
713
|
continue;
|
|
707
714
|
try {
|
|
708
715
|
const targetPath = join(projectDist, "ops", config.name, "op.json");
|
|
709
|
-
|
|
710
|
-
writeFileSync(targetPath, serializeOpIR(config));
|
|
716
|
+
writeOutput(targetPath, serializeOpIR(config));
|
|
711
717
|
irWritten += 1;
|
|
712
718
|
}
|
|
713
719
|
catch (err) {
|
|
@@ -724,8 +730,7 @@ export async function buildCommand(options) {
|
|
|
724
730
|
// output path and any nested additional-file paths (e.g. ops/<name>/...).
|
|
725
731
|
try {
|
|
726
732
|
const outputPath = resolve(options.output);
|
|
727
|
-
|
|
728
|
-
writeFileSync(outputPath, output);
|
|
733
|
+
writeOutput(outputPath, output);
|
|
729
734
|
// Write additional files (e.g. nested stack templates) alongside the primary output
|
|
730
735
|
if (additionalFiles.size > 0) {
|
|
731
736
|
const outputDir = dirname(outputPath);
|
|
@@ -746,8 +751,7 @@ export async function buildCommand(options) {
|
|
|
746
751
|
}
|
|
747
752
|
}
|
|
748
753
|
const targetPath = join(outputDir, filename);
|
|
749
|
-
|
|
750
|
-
writeFileSync(targetPath, fileContent);
|
|
754
|
+
writeOutput(targetPath, fileContent);
|
|
751
755
|
}
|
|
752
756
|
}
|
|
753
757
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-lexicon-docs.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/check-lexicon-docs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"check-lexicon-docs.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/check-lexicon-docs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,MAAM,WAAW,gBAAgB;IAC/B,0DAA0D;IAC1D,OAAO,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,+DAA+D;IAC/D,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAM9D;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAkB1E;AAED,MAAM,WAAW,kBAAkB;IACjC,+DAA+D;IAC/D,QAAQ,EAAE,OAAO,CAAC;IAClB,gFAAgF;IAChF,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAID;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB,CAa9E"}
|
|
@@ -14,7 +14,9 @@
|
|
|
14
14
|
* membership is the whole of reachability for a lexicon site.
|
|
15
15
|
*/
|
|
16
16
|
import { existsSync, readdirSync, readFileSync } from "fs";
|
|
17
|
-
import { join } from "path";
|
|
17
|
+
import { basename, join, resolve } from "path";
|
|
18
|
+
import { collectSidebarSlugs } from "../../codegen/docs.js";
|
|
19
|
+
import { findChantDocsSite, sectionContentDir } from "../../codegen/docs-in-site.js";
|
|
18
20
|
/**
|
|
19
21
|
* Slugs the sidebar reaches, including nested group `items`.
|
|
20
22
|
*
|
|
@@ -42,7 +44,7 @@ export function auditDocsReachability(lexiconDir) {
|
|
|
42
44
|
const contentDir = join(lexiconDir, "docs", "src", "content", "docs");
|
|
43
45
|
const configPath = join(lexiconDir, "docs", "astro.config.mjs");
|
|
44
46
|
if (!existsSync(contentDir) || !existsSync(configPath)) {
|
|
45
|
-
return
|
|
47
|
+
return auditSectionReachability(lexiconDir);
|
|
46
48
|
}
|
|
47
49
|
const slugs = sidebarSlugs(readFileSync(configPath, "utf-8"));
|
|
48
50
|
const pages = readdirSync(contentDir)
|
|
@@ -77,3 +79,29 @@ export function auditDocsClassification(lexiconDir) {
|
|
|
77
79
|
}
|
|
78
80
|
return { hasPages: true, unclassified };
|
|
79
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Reachability for a lexicon whose docs are a section of the chant main site
|
|
84
|
+
* (chant #3993): its generated pages under
|
|
85
|
+
* `docs/src/content/docs/lexicons/<name>/` against the `_sidebar.json` the
|
|
86
|
+
* pipeline wrote beside them. A page the fragment lists as hidden is
|
|
87
|
+
* deliberately URL-only and does not count. Before the section has been
|
|
88
|
+
* generated there is nothing to audit, which reads as no site, like a
|
|
89
|
+
* lexicon with no docs.
|
|
90
|
+
*/
|
|
91
|
+
function auditSectionReachability(lexiconDir) {
|
|
92
|
+
const site = findChantDocsSite(lexiconDir);
|
|
93
|
+
const name = basename(resolve(lexiconDir));
|
|
94
|
+
const dir = site ? sectionContentDir(site, name) : undefined;
|
|
95
|
+
const fragmentPath = dir ? join(dir, "_sidebar.json") : undefined;
|
|
96
|
+
if (!dir || !fragmentPath || !existsSync(fragmentPath))
|
|
97
|
+
return { hasSite: false, pages: [], unreachable: [] };
|
|
98
|
+
const fragment = JSON.parse(readFileSync(fragmentPath, "utf-8"));
|
|
99
|
+
const prefix = `lexicons/${name}/`;
|
|
100
|
+
const reached = new Set([...collectSidebarSlugs([fragment.group]), ...(fragment.hidden ?? [])].map((slug) => slug.startsWith(prefix) ? slug.slice(prefix.length) : slug));
|
|
101
|
+
const pages = readdirSync(dir)
|
|
102
|
+
.filter((f) => f.endsWith(".mdx") || f.endsWith(".md"))
|
|
103
|
+
.map((f) => f.replace(/\.mdx?$/, ""))
|
|
104
|
+
.sort();
|
|
105
|
+
const unreachable = pages.filter((slug) => slug !== "index" && !reached.has(slug));
|
|
106
|
+
return { hasSite: true, pages, unreachable };
|
|
107
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-lexicon.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/check-lexicon.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAInD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACpB;AAyBD,gEAAgE;AAChE;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAIlE;AAuBD;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAyB/F;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,GAAG,SAAS,EACjC,GAAG,EAAE,MAAM,GACV;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAanC;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAazE;AAID;;GAEG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"check-lexicon.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/check-lexicon.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAInD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACpB;AAyBD,gEAAgE;AAChE;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAIlE;AAuBD;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAyB/F;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,GAAG,SAAS,EACjC,GAAG,EAAE,MAAM,GACV;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAanC;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAazE;AAID;;GAEG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA4mBpE;AAqBD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAmDzE"}
|
|
@@ -406,12 +406,23 @@ export async function checkLexicon(dir) {
|
|
|
406
406
|
tier: 1,
|
|
407
407
|
pass: hasSerializerTest,
|
|
408
408
|
});
|
|
409
|
+
// A lexicon whose src/codegen/docs.ts runs docsPipeline always has a page:
|
|
410
|
+
// the pipeline writes the overview (index.mdx) from the manifest. Inside the
|
|
411
|
+
// chant repository that page is generated into the main docs site rather
|
|
412
|
+
// than committed under docs/ (chant #3993), so k3d, whose docs are all
|
|
413
|
+
// generated, has no .mdx of its own to count.
|
|
409
414
|
const mdxFiles = findFiles(join(dir, "docs"), (n) => n.endsWith(".mdx"));
|
|
415
|
+
const docsTs = join(dir, "src", "codegen", "docs.ts");
|
|
416
|
+
const pipelineOverview = existsSync(docsTs) && readFileSync(docsTs, "utf-8").includes("docsPipeline(");
|
|
410
417
|
items.push({
|
|
411
418
|
name: "At least 1 .mdx doc page",
|
|
412
419
|
tier: 1,
|
|
413
|
-
pass: mdxFiles.length > 0,
|
|
414
|
-
detail: mdxFiles.length > 0
|
|
420
|
+
pass: mdxFiles.length > 0 || pipelineOverview,
|
|
421
|
+
detail: mdxFiles.length > 0
|
|
422
|
+
? `${mdxFiles.length} page(s)`
|
|
423
|
+
: pipelineOverview
|
|
424
|
+
? "the docs pipeline's generated overview"
|
|
425
|
+
: undefined,
|
|
415
426
|
});
|
|
416
427
|
// Counting pages says nothing about whether a reader can find them.
|
|
417
428
|
// Starlight has no auto-discovery, so a page missing from the sidebar is
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Docs site template generators for init-lexicon scaffold.
|
|
2
|
+
* Docs site template generators for init-lexicon scaffold. The app files
|
|
3
|
+
* (package.json, tsconfig, Astro config, content config) are written only for a
|
|
4
|
+
* lexicon outside the chant repository; inside it, the lexicon's docs are a
|
|
5
|
+
* section of the main site (chant #3993).
|
|
3
6
|
*/
|
|
4
7
|
export declare function generateDocsPackageJson(name: string): string;
|
|
5
8
|
export declare function generateDocsTsConfig(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/init-lexicon/templates/docs.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/init-lexicon/templates/docs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAiB5D;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAU7C;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAiB5D;AAED,wBAAgB,yBAAyB,IAAI,MAAM,CAiBlD;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAmBlE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAWzD"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Docs site template generators for init-lexicon scaffold.
|
|
2
|
+
* Docs site template generators for init-lexicon scaffold. The app files
|
|
3
|
+
* (package.json, tsconfig, Astro config, content config) are written only for a
|
|
4
|
+
* lexicon outside the chant repository; inside it, the lexicon's docs are a
|
|
5
|
+
* section of the main site (chant #3993).
|
|
3
6
|
*/
|
|
7
|
+
import { DOCS_SITE_DEPENDENCIES } from "../../../../codegen/docs-in-site.js";
|
|
4
8
|
export function generateDocsPackageJson(name) {
|
|
5
9
|
return JSON.stringify({
|
|
6
10
|
name: `@intentius/chant-lexicon-${name}-docs`,
|
|
@@ -12,11 +16,7 @@ export function generateDocsPackageJson(name) {
|
|
|
12
16
|
build: "astro build",
|
|
13
17
|
preview: "astro preview",
|
|
14
18
|
},
|
|
15
|
-
dependencies: {
|
|
16
|
-
"@astrojs/starlight": "^0.37.6",
|
|
17
|
-
astro: "^5.6.1",
|
|
18
|
-
sharp: "^0.34.2",
|
|
19
|
-
},
|
|
19
|
+
dependencies: { ...DOCS_SITE_DEPENDENCIES },
|
|
20
20
|
}, null, 2) + "\n";
|
|
21
21
|
}
|
|
22
22
|
export function generateDocsTsConfig() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-lexicon.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init-lexicon.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init-lexicon.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init-lexicon.ts"],"names":[],"mappings":"AAgBA;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAQD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM;IAGpC,aAAa;IACb,iBAAiB;IACjB,UAAU;IACV,WAAW;EAEd;AAqBD;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAkIhG;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBrF"}
|
|
@@ -11,6 +11,7 @@ import { generatePackageJson, generateTsConfig, generateTsConfigBuild, generateJ
|
|
|
11
11
|
import { generatePluginTestTs, generateSerializerTestTs, generateCompletionsTestTs, generateHoverTestTs } from "./init-lexicon/templates/tests.js";
|
|
12
12
|
import { generateDocsPackageJson, generateDocsTsConfig, generateDocsAstroConfig, generateDocsContentConfig, generateDocsIndexMdx, generateDocsGettingStartedMdx } from "./init-lexicon/templates/docs.js";
|
|
13
13
|
import { generateExamplePackageJson, generateExampleInfraTs } from "./init-lexicon/templates/examples.js";
|
|
14
|
+
import { findChantDocsSite } from "../../codegen/docs-in-site.js";
|
|
14
15
|
// ── Name derivation helpers ──────────────────────────────────────────
|
|
15
16
|
function toCamelCase(name) {
|
|
16
17
|
return name.replace(/[-_]+(.)/g, (_, c) => c.toUpperCase());
|
|
@@ -60,6 +61,12 @@ export async function initLexiconCommand(options) {
|
|
|
60
61
|
warnings.push("Initializing in non-empty directory");
|
|
61
62
|
}
|
|
62
63
|
}
|
|
64
|
+
// Inside the chant repository a lexicon's docs are a section of the main
|
|
65
|
+
// site (chant #3993): the pipeline writes its pages into docs/, so the
|
|
66
|
+
// lexicon gets only docs/pages/. Anywhere else it gets a standalone
|
|
67
|
+
// Starlight app of its own, as before.
|
|
68
|
+
const standaloneDocs = findChantDocsSite(targetDir) === undefined;
|
|
69
|
+
const standaloneDocsDirs = ["docs/src", "docs/src/content", "docs/src/content/docs"];
|
|
63
70
|
// Create directory structure
|
|
64
71
|
const dirs = [
|
|
65
72
|
"",
|
|
@@ -71,9 +78,7 @@ export async function initLexiconCommand(options) {
|
|
|
71
78
|
"src/lsp",
|
|
72
79
|
"src/generated",
|
|
73
80
|
"docs",
|
|
74
|
-
|
|
75
|
-
"docs/src/content",
|
|
76
|
-
"docs/src/content/docs",
|
|
81
|
+
...(standaloneDocs ? standaloneDocsDirs : []),
|
|
77
82
|
"docs/pages",
|
|
78
83
|
"examples/getting-started",
|
|
79
84
|
"examples/getting-started/src",
|
|
@@ -114,11 +119,15 @@ export async function initLexiconCommand(options) {
|
|
|
114
119
|
"justfile": generateJustfile(name),
|
|
115
120
|
".gitignore": generateGitignore(),
|
|
116
121
|
"README.md": generateReadme(name, names),
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
+
...(standaloneDocs
|
|
123
|
+
? {
|
|
124
|
+
"docs/package.json": generateDocsPackageJson(name),
|
|
125
|
+
"docs/tsconfig.json": generateDocsTsConfig(),
|
|
126
|
+
"docs/astro.config.mjs": generateDocsAstroConfig(name),
|
|
127
|
+
"docs/src/content.config.ts": generateDocsContentConfig(),
|
|
128
|
+
"docs/src/content/docs/index.mdx": generateDocsIndexMdx(name),
|
|
129
|
+
}
|
|
130
|
+
: {}),
|
|
122
131
|
"docs/pages/getting-started.mdx": generateDocsGettingStartedMdx(name),
|
|
123
132
|
"examples/getting-started/package.json": generateExamplePackageJson(name),
|
|
124
133
|
"examples/getting-started/src/infra.ts": generateExampleInfraTs(name, names),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approve.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/approve.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,EACuE,KAAK,UAAU,EAC5F,MAAM,6BAA6B,CAAC;AAOrC,OAAO,EAEuC,KAAK,mBAAmB,EAAE,KAAK,oBAAoB,EAChG,MAAM,wBAAwB,CAAC;AAQhC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAkDlD,wBAAsB,UAAU,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"approve.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/approve.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,EACuE,KAAK,UAAU,EAC5F,MAAM,6BAA6B,CAAC;AAOrC,OAAO,EAEuC,KAAK,mBAAmB,EAAE,KAAK,oBAAoB,EAChG,MAAM,wBAAwB,CAAC;AAQhC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAkDlD,wBAAsB,UAAU,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CA6GrE;AAED,8DAA8D;AAC9D,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,oGAAoG;IACpG,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,SAAS,CAAC,EAAE,mBAAmB,CAAC;CACjC;AAED,MAAM,MAAM,mBAAmB,GAC3B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,oBAAoB,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAC3D;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC;AA0ClB;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,mBAAmB,CAAC,CAmX9B;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,oBAAoB,EAC9B,MAAM,EAAE,oBAAoB,EAC5B,KAAK,EAAE,oBAAoB,EAAE,EAC7B,QAAQ,EAAE,iBAAiB,GAAG,SAAS,EACvC,OAAO,GAAE,SAAS,iBAAiB,EAA+B,GACjE,MAAM,EAAE,CA8BV"}
|
|
@@ -11,7 +11,7 @@ import { appendGateResolution, appendPendingGate, readGateLedger, latestPendingG
|
|
|
11
11
|
import { isPlanDigest, samePlanDigest } from "../../lifecycle/plan-digest.js";
|
|
12
12
|
import { gateContextDigest, gatePolicyRequest, loadGatePolicyEvaluator, } from "../../op/gate-approval.js";
|
|
13
13
|
import { approverOf, humanQuorumSince, tallyGateApprovals } from "../../op/gate.js";
|
|
14
|
-
import { FAN_OUT_GATE_OP, OVERRIDE_GATE_OP, WORKSPACE_UPGRADE_GATE_OP } from "../../op/gate-name.js";
|
|
14
|
+
import { FAN_OUT_GATE_OP, OVERRIDE_GATE_OP, RELEASE_GATE_OP, WORKSPACE_UPGRADE_GATE_OP } from "../../op/gate-name.js";
|
|
15
15
|
import { PR_GATE_OP } from "../../pr-loop.js";
|
|
16
16
|
import { pushLifecycleReport, requireLifecycleLedger } from "../../lifecycle/git.js";
|
|
17
17
|
import { LIFECYCLE_LOCAL_NOTE, isLifecycleLocalNote } from "../../lifecycle/local-note.js";
|
|
@@ -99,6 +99,8 @@ export async function runApprove(ctx) {
|
|
|
99
99
|
timestamp: now,
|
|
100
100
|
expiresAt: now,
|
|
101
101
|
...(standing.description ? { description: standing.description } : {}),
|
|
102
|
+
...(standing.runId ? { runId: standing.runId } : {}),
|
|
103
|
+
...(standing.gitSha ? { gitSha: standing.gitSha } : {}),
|
|
102
104
|
});
|
|
103
105
|
const push = await reportedPush(`The expiry is recorded locally on ${LIFECYCLE_BRANCH}. Until it reaches the remote, ` +
|
|
104
106
|
`a run in another checkout still sees the old pending fact.`);
|
|
@@ -109,7 +111,9 @@ export async function runApprove(ctx) {
|
|
|
109
111
|
? `The next \`chant components pr-apply\` decides this gate from scratch and records a fresh pending fact.`
|
|
110
112
|
: opName === WORKSPACE_UPGRADE_GATE_OP
|
|
111
113
|
? `The next \`chant workspace upgrade ${gate}\` decides this gate from scratch and records a fresh pending fact.`
|
|
112
|
-
:
|
|
114
|
+
: opName === RELEASE_GATE_OP
|
|
115
|
+
? `The next \`chant components promote --release\` decides this gate from scratch and records a fresh pending fact.`
|
|
116
|
+
: `The next \`chant run ${opName}\` decides this gate from scratch and records a fresh pending fact.`));
|
|
113
117
|
return 0;
|
|
114
118
|
}
|
|
115
119
|
// #3760: an override of a denied plan names its rules and gives a reason.
|
|
@@ -154,9 +158,48 @@ export async function runApprove(ctx) {
|
|
|
154
158
|
? `The pull request's apply (\`chant components pr-apply\`) walks through gate "${gate}" when it plans this same digest.`
|
|
155
159
|
: opName === WORKSPACE_UPGRADE_GATE_OP
|
|
156
160
|
? `Repeat \`chant workspace upgrade ${gate}\` with the same target, and it applies the patch this approval names.`
|
|
157
|
-
:
|
|
161
|
+
: opName === RELEASE_GATE_OP
|
|
162
|
+
? `Repeat the same \`chant components promote --release\`, and it walks through gate "${gate}" when it plans this same change set for this release.`
|
|
163
|
+
: `Run \`chant run ${opName}\` and it walks through gate "${gate}".`)));
|
|
158
164
|
return 0;
|
|
159
165
|
}
|
|
166
|
+
/**
|
|
167
|
+
* Refuse the approval of a release gate whose release is revoked (#4033,
|
|
168
|
+
* ws-105): its commit carries a `ci/revoked/<sha>` tag that counts, read from
|
|
169
|
+
* local tags as `release cut` reads them. Prints the refusal and returns true
|
|
170
|
+
* when it refuses. A release file that can't be read, or tags that can't be
|
|
171
|
+
* judged, refuse too, since whether the release is revoked is then unknown.
|
|
172
|
+
*/
|
|
173
|
+
async function refuseRevokedRelease(opName, gate, releaseDigest, cwd) {
|
|
174
|
+
const { readRelease, readCuts, labelsByDigest } = await import("../../lifecycle/release-store.js");
|
|
175
|
+
const { readRevokedCommits, revocationOf, revokedRefusal } = await import("../../lifecycle/release-revocation.js");
|
|
176
|
+
const release = await readRelease(releaseDigest, { cwd }).catch(() => null);
|
|
177
|
+
if (!release) {
|
|
178
|
+
console.error(formatError({
|
|
179
|
+
message: `Gate "${gate}" on "${opName}" binds release ${releaseDigest}, which can't be read from ${LIFECYCLE_BRANCH}, so whether it is revoked is unknown [release-unreadable]`,
|
|
180
|
+
hint: `Fetch the ledger branch (git fetch origin ${LIFECYCLE_BRANCH}:${LIFECYCLE_BRANCH}) and approve again from the member's directory.`,
|
|
181
|
+
}));
|
|
182
|
+
return true;
|
|
183
|
+
}
|
|
184
|
+
let revoked;
|
|
185
|
+
try {
|
|
186
|
+
revoked = await readRevokedCommits(cwd);
|
|
187
|
+
}
|
|
188
|
+
catch (err) {
|
|
189
|
+
console.error(formatError({
|
|
190
|
+
message: `Gate "${gate}" on "${opName}" binds release ${releaseDigest}, and the ci tags can't be judged: ${err instanceof Error ? err.message : String(err)} [declaration-invalid]`,
|
|
191
|
+
hint: "Fix ci.green in chant.workspace.json at base; chant workspace check names the problem.",
|
|
192
|
+
}));
|
|
193
|
+
return true;
|
|
194
|
+
}
|
|
195
|
+
const r = revocationOf(release, revoked);
|
|
196
|
+
if (!r)
|
|
197
|
+
return false;
|
|
198
|
+
const label = labelsByDigest((await readCuts({ cwd }).catch(() => ({ cuts: [] }))).cuts).get(releaseDigest) ?? null;
|
|
199
|
+
console.error(formatError(revokedRefusal({ releaseDigest, label }, r, `Clear the pending gate with \`chant approve ${opName} ${gate} --expire\`, then promote a release cut from a green commit: ` +
|
|
200
|
+
"`chant ci last-green` names the newest, and `chant release list` marks the revoked releases.")));
|
|
201
|
+
return true;
|
|
202
|
+
}
|
|
160
203
|
/**
|
|
161
204
|
* The ledger write behind `chant approve` — extracted so `chant run approve`
|
|
162
205
|
* (#2121) records the identical fact before waking the runtime that hosts the
|
|
@@ -187,7 +230,7 @@ export async function recordGateApproval(opName, gate, opts) {
|
|
|
187
230
|
// so there is no `*.op.ts` to find and nothing is wrong when none is there.
|
|
188
231
|
// #3949: a gate that lists this one as an alias, after an Op was restructured.
|
|
189
232
|
const successor = aliasingGate([...ops.values()].map((o) => o.config), opName, gate);
|
|
190
|
-
if (!successor && !ops.has(opName) && opName !== FAN_OUT_GATE_OP && opName !== WORKSPACE_UPGRADE_GATE_OP && opName !== OVERRIDE_GATE_OP) {
|
|
233
|
+
if (!successor && !ops.has(opName) && opName !== FAN_OUT_GATE_OP && opName !== WORKSPACE_UPGRADE_GATE_OP && opName !== OVERRIDE_GATE_OP && opName !== RELEASE_GATE_OP) {
|
|
191
234
|
console.error(formatWarning({
|
|
192
235
|
message: `Op "${opName}" was not found among discovered *.op.ts declarations — recording the resolution anyway`,
|
|
193
236
|
}));
|
|
@@ -284,6 +327,18 @@ export async function recordGateApproval(opName, gate, opts) {
|
|
|
284
327
|
const checkpointDigest = standing?.checkpointDigest !== undefined && samePlanDigest(planDigest, standing.planDigest)
|
|
285
328
|
? standing.checkpointDigest
|
|
286
329
|
: undefined;
|
|
330
|
+
// #4045: a release gate's fact names the release its change set was
|
|
331
|
+
// planned for. An approval of that fact's plan is for that release too; an
|
|
332
|
+
// approval of another plan names none, and no release gate counts it.
|
|
333
|
+
const releaseDigest = standing?.releaseDigest !== undefined && samePlanDigest(planDigest, standing.planDigest) ? standing.releaseDigest : undefined;
|
|
334
|
+
// #4033 (ws-105): a release gate whose release was cut from a revoked
|
|
335
|
+
// commit is superseded. Its promote refuses the release, so an approval of
|
|
336
|
+
// it would count for nothing; refuse it here, whatever plan is named.
|
|
337
|
+
if (standing?.releaseDigest !== undefined) {
|
|
338
|
+
const refused = await refuseRevokedRelease(opName, gate, standing.releaseDigest, opts.cwd ?? process.cwd());
|
|
339
|
+
if (refused)
|
|
340
|
+
return { ok: false };
|
|
341
|
+
}
|
|
287
342
|
// chant#2384 — the gate's whole value is that its two halves have different
|
|
288
343
|
// authors. At a shell they do: a person runs, reads the plan, and approves.
|
|
289
344
|
// On MCP and ACP the person's only act was launching the server, and every
|
|
@@ -476,6 +531,10 @@ export async function recordGateApproval(opName, gate, opts) {
|
|
|
476
531
|
...(planDigest !== undefined ? { planDigest } : {}),
|
|
477
532
|
...(checkpointDigest !== undefined ? { checkpointDigest } : {}),
|
|
478
533
|
...(environment !== undefined ? { environment } : {}),
|
|
534
|
+
...(releaseDigest !== undefined ? { releaseDigest } : {}),
|
|
535
|
+
// #4020: the commit and run the gate waited on, off the fact this approves.
|
|
536
|
+
...(standing?.gitSha ? { gitSha: standing.gitSha } : {}),
|
|
537
|
+
...(standing?.runId ? { runId: standing.runId } : {}),
|
|
479
538
|
origin,
|
|
480
539
|
...(refusal && opts.allowSameOrigin ? { sameOriginOverride: true } : {}),
|
|
481
540
|
});
|
|
@@ -490,6 +549,7 @@ export async function recordGateApproval(opName, gate, opts) {
|
|
|
490
549
|
if (record.planDigest) {
|
|
491
550
|
console.error(formatInfo(`This approves the plan ${record.planDigest}` +
|
|
492
551
|
(record.environment !== undefined ? ` in environment "${record.environment}"` : "") +
|
|
552
|
+
(record.releaseDigest !== undefined ? ` for release ${record.releaseDigest}` : "") +
|
|
493
553
|
", and only that plan. A run whose fresh plan differs refuses rather than applying it."));
|
|
494
554
|
}
|
|
495
555
|
if (record.checkpointDigest) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/build.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/build.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAyLlD,wBAAsB,QAAQ,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAkJnE"}
|
|
@@ -6,6 +6,20 @@ import { generateComponentsPipeline } from "../../components/cli-support.js";
|
|
|
6
6
|
import { loadChantConfigUpward } from "../../config.js";
|
|
7
7
|
import { resolveCliBuildParams, parseParamFlags } from "../build-params-cli.js";
|
|
8
8
|
import { findWorkspaceRoot } from "../../project-root.js";
|
|
9
|
+
import { resolvePromotionSource } from "../../components/promote-order.js";
|
|
10
|
+
/**
|
|
11
|
+
* The `prLoop` generator option from `--pr-loop`'s flags (#3183): the gate
|
|
12
|
+
* and the branch, and with `--events-json` and `--report-url` (#4007) the
|
|
13
|
+
* flags the generated jobs pass to pr-plan and pr-apply.
|
|
14
|
+
*/
|
|
15
|
+
function prLoopOption(args) {
|
|
16
|
+
return {
|
|
17
|
+
...(args.gate ? { gate: args.gate } : {}),
|
|
18
|
+
...(args.branch ? { branch: args.branch } : {}),
|
|
19
|
+
...(args.eventsJson ? { events: true } : {}),
|
|
20
|
+
...(args.reportUrl ? { reportUrl: args.reportUrl } : {}),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
9
23
|
/**
|
|
10
24
|
* `chant build --components --generate <lexicon>` — generate mode (#563,
|
|
11
25
|
* epic #551 Phase 3). Discovers `Component` declarations under `args.path`
|
|
@@ -42,6 +56,23 @@ async function runGenerateComponents(ctx) {
|
|
|
42
56
|
console.error(message);
|
|
43
57
|
return 1;
|
|
44
58
|
}
|
|
59
|
+
// #4030: the generated promote job runs `promote --from <env> --to <promote-to>`,
|
|
60
|
+
// which the member's declared promotion order refuses when it skips a step.
|
|
61
|
+
// Refuse here, with the same code, rather than write a job that fails.
|
|
62
|
+
if (args.promoteTo) {
|
|
63
|
+
// Loaded here, not at the top: a build without --promote-to loads no workspace module (#2526).
|
|
64
|
+
const { promotionOrder } = await import("../../workspace/promotion-order.js");
|
|
65
|
+
const resolved = resolvePromotionSource({
|
|
66
|
+
order: promotionOrder(config.environments),
|
|
67
|
+
to: args.promoteTo,
|
|
68
|
+
from: args.env ?? "production",
|
|
69
|
+
...(args.allowSkip ? { allowSkip: true } : {}),
|
|
70
|
+
});
|
|
71
|
+
if ("error" in resolved) {
|
|
72
|
+
console.error(formatError({ message: `${resolved.error.message} [${resolved.error.code}]`, hint: resolved.error.fix }));
|
|
73
|
+
return 1;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
45
76
|
// A project inside a workspace member gets that member's pipeline (#2542):
|
|
46
77
|
// path-filtered, run in the member's directory, written to a file named
|
|
47
78
|
// after the member and recorded as the member's generated file. The
|
|
@@ -59,11 +90,14 @@ async function runGenerateComponents(ctx) {
|
|
|
59
90
|
lexicon,
|
|
60
91
|
env: args.env,
|
|
61
92
|
promoteTo: args.promoteTo,
|
|
93
|
+
...(args.allowSkip ? { allowSkip: true } : {}),
|
|
62
94
|
output: args.output,
|
|
63
95
|
params: args.param,
|
|
64
96
|
paramsFile: args.paramsFile,
|
|
65
97
|
...(args.waveGate ? { waveGate: { gate: args.waveGate, ...(args.canary?.length ? { canary: args.canary } : {}), ...(args.base ? { base: args.base } : {}) } } : {}),
|
|
66
|
-
...(args.prLoop ? { prLoop:
|
|
98
|
+
...(args.prLoop ? { prLoop: prLoopOption(args) } : {}),
|
|
99
|
+
...(args.image ? { image: args.image } : {}),
|
|
100
|
+
...(args.beforeScript?.length ? { beforeScript: args.beforeScript } : {}),
|
|
67
101
|
});
|
|
68
102
|
}
|
|
69
103
|
catch (err) {
|
|
@@ -78,15 +112,20 @@ async function runGenerateComponents(ctx) {
|
|
|
78
112
|
const result = await generateComponentsPipeline(args.path, lexicon, {
|
|
79
113
|
env: args.env,
|
|
80
114
|
...(args.promoteTo ? { promoteTo: args.promoteTo } : {}),
|
|
115
|
+
// #4030: the job passes --allow-skip through, so it is not refused again at deploy time.
|
|
116
|
+
...(args.promoteTo && args.allowSkip
|
|
117
|
+
? { promoteCommand: ["chant", "components", "promote", "--from", args.env ?? "production", "--to", args.promoteTo, "--allow-skip"] }
|
|
118
|
+
: {}),
|
|
81
119
|
...(plan ? { member: plan.member } : {}),
|
|
82
120
|
// #3049: one job per wave of a gated-wave fan-out instead of one per component.
|
|
83
121
|
...(args.waveGate
|
|
84
122
|
? { gatedWaves: { gate: args.waveGate, ...(args.canary?.length ? { canary: args.canary } : {}), ...(args.base ? { base: args.base } : {}) } }
|
|
85
123
|
: {}),
|
|
86
124
|
// #3183: a plan job per pull request and an apply job per merge.
|
|
87
|
-
...(args.prLoop
|
|
88
|
-
|
|
89
|
-
|
|
125
|
+
...(args.prLoop ? { prLoop: prLoopOption(args) } : {}),
|
|
126
|
+
// #4002: the job image and the lines that install what it lacks, chant itself included.
|
|
127
|
+
...(args.image ? { image: args.image } : {}),
|
|
128
|
+
...(args.beforeScript?.length ? { beforeScript: args.beforeScript } : {}),
|
|
90
129
|
}, args.sandbox, paramsResolution.provenance);
|
|
91
130
|
if (!result.success) {
|
|
92
131
|
console.error(formatError({ message: result.error ?? "Failed to generate CI pipeline from components" }));
|
|
@@ -8,4 +8,14 @@ import type { CommandContext } from "../registry.js";
|
|
|
8
8
|
* file; no project, no plugins, no network.
|
|
9
9
|
*/
|
|
10
10
|
export declare function runChangeSetSummary(ctx: CommandContext): Promise<number>;
|
|
11
|
+
/**
|
|
12
|
+
* `chant change-set show <digest>` (#4022): the change-set document a gate
|
|
13
|
+
* bound, stored on `chant/lifecycle` under its digest, with each entry's
|
|
14
|
+
* graph node. `--json` prints the read contract's `change-set-show`
|
|
15
|
+
* document (`../../workspace/change-set-show.ts`); without it, the grouped
|
|
16
|
+
* summary and each entry with its node. `--member` reads a workspace
|
|
17
|
+
* member's ledger from anywhere in the checkout. Exit 1 when nothing is
|
|
18
|
+
* stored under the digest.
|
|
19
|
+
*/
|
|
20
|
+
export declare function runChangeSetShow(ctx: CommandContext): Promise<number>;
|
|
11
21
|
//# sourceMappingURL=change-set.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change-set.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/change-set.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"change-set.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/change-set.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAKlD;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CA2B9E;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAmC3E"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { readFileSync } from "node:fs";
|
|
2
|
+
import { resolve } from "node:path";
|
|
2
3
|
import { CHANGE_SET_CONTRACT, CHANGE_SET_SCHEMA_ID } from "../../change-set.js";
|
|
3
4
|
import { GITHUB_COMMENT_LIMIT, groupChangeSet, renderPlanSummaryMarkdown, renderPlanSummaryText } from "../../plan-summary.js";
|
|
4
|
-
import { formatError } from "../format.js";
|
|
5
|
+
import { formatError, formatWarning } from "../format.js";
|
|
5
6
|
const USAGE = "chant change-set summary <change-set.json> [--format text|json|markdown] [--limit <chars>]";
|
|
7
|
+
const SHOW_USAGE = "chant change-set show <digest> [--member <name>] [--json]";
|
|
6
8
|
/**
|
|
7
9
|
* `chant change-set summary <file>` (#3188): the grouped plan summary of a
|
|
8
10
|
* change-set document (`../../change-set.ts`), such as the `document` a
|
|
@@ -44,3 +46,51 @@ export async function runChangeSetSummary(ctx) {
|
|
|
44
46
|
process.stdout.write(renderPlanSummaryText(summary));
|
|
45
47
|
return 0;
|
|
46
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* `chant change-set show <digest>` (#4022): the change-set document a gate
|
|
51
|
+
* bound, stored on `chant/lifecycle` under its digest, with each entry's
|
|
52
|
+
* graph node. `--json` prints the read contract's `change-set-show`
|
|
53
|
+
* document (`../../workspace/change-set-show.ts`); without it, the grouped
|
|
54
|
+
* summary and each entry with its node. `--member` reads a workspace
|
|
55
|
+
* member's ledger from anywhere in the checkout. Exit 1 when nothing is
|
|
56
|
+
* stored under the digest.
|
|
57
|
+
*/
|
|
58
|
+
export async function runChangeSetShow(ctx) {
|
|
59
|
+
const { args } = ctx;
|
|
60
|
+
const digest = args.extraPositional;
|
|
61
|
+
const { changeSetShowDocument, CHANGE_SET_DIGEST_PATTERN } = await import("../../workspace/change-set-show.js");
|
|
62
|
+
if (!digest || !CHANGE_SET_DIGEST_PATTERN.test(digest)) {
|
|
63
|
+
console.error(formatError({ message: digest ? `${digest} is not a change-set digest` : "change-set show needs the digest a gate binds", hint: SHOW_USAGE }));
|
|
64
|
+
return 1;
|
|
65
|
+
}
|
|
66
|
+
if ((args.members?.length ?? 0) > 1) {
|
|
67
|
+
console.error(formatError({ message: `change-set show reads one member, not ${args.members.join(", ")}`, hint: SHOW_USAGE }));
|
|
68
|
+
return 1;
|
|
69
|
+
}
|
|
70
|
+
const member = args.members?.[0]?.split("/").filter(Boolean);
|
|
71
|
+
const doc = await changeSetShowDocument({ cwd: resolve("."), digest, ...(member ? { member } : {}) });
|
|
72
|
+
if (args.json) {
|
|
73
|
+
console.log(JSON.stringify(doc, null, 2));
|
|
74
|
+
return "error" in doc || doc.changeSet === null ? 1 : 0;
|
|
75
|
+
}
|
|
76
|
+
if ("error" in doc) {
|
|
77
|
+
console.error(formatError({ message: doc.error.message, hint: SHOW_USAGE }));
|
|
78
|
+
return 1;
|
|
79
|
+
}
|
|
80
|
+
if (doc.reason)
|
|
81
|
+
console.error(formatWarning({ message: doc.reason.message }));
|
|
82
|
+
if (doc.changeSet === null) {
|
|
83
|
+
if (!doc.reason)
|
|
84
|
+
console.error(formatError({ message: `no change set is stored under ${digest}${doc.member ? ` for member ${doc.member}` : ""}`, hint: "A pull-request or release gate stores the change set it binds; a component gate binds a lifecycle plan and stores none." }));
|
|
85
|
+
return 1;
|
|
86
|
+
}
|
|
87
|
+
process.stdout.write(renderPlanSummaryText(groupChangeSet(doc.changeSet)));
|
|
88
|
+
const graph = doc.changeSet.graph;
|
|
89
|
+
console.log(graph ? `\nNodes from the graph of ${graph.member ?? "this project"}${graph.at ? ` at ${graph.at.slice(0, 12)}` : ""}:` : "\nNo graph was read, so no entry has a node.");
|
|
90
|
+
for (const e of doc.changeSet.entries) {
|
|
91
|
+
if (e.action === "no-op" || e.action === "read")
|
|
92
|
+
continue;
|
|
93
|
+
console.log(` ${e.action.padEnd(8)} ${e.member} ${e.address}${e.deposed ? ` (deposed ${e.deposed})` : ""} ${e.node ?? "(no node)"}`);
|
|
94
|
+
}
|
|
95
|
+
return 0;
|
|
96
|
+
}
|
|
@@ -34,6 +34,15 @@
|
|
|
34
34
|
* the plan before the gate is decided, and the digest is carried rather than
|
|
35
35
|
* recomputed, so the approval still stands.
|
|
36
36
|
*
|
|
37
|
+
* The approval and the progress are bound to different things (#4081). The
|
|
38
|
+
* approval is bound to the plan digest, the derivation: who runs, in what
|
|
39
|
+
* order, off which edges. The progress is bound to each component's input
|
|
40
|
+
* digest (../../components/fan-out-inputs.ts): a component the earlier
|
|
41
|
+
* attempt applied stays `already-applied` only while what it would apply is
|
|
42
|
+
* the same, and one whose template, step inputs or upstream moved runs again
|
|
43
|
+
* with a line saying so. The fix after a failure keeps the approval, and a
|
|
44
|
+
* different change of the same shape does not inherit the progress.
|
|
45
|
+
*
|
|
37
46
|
* `--wave-gate <name>` (#3049) swaps the one gate for one per wave: the same
|
|
38
47
|
* repeated command stops at each wave's gate in turn, each planned after the
|
|
39
48
|
* wave before it applied, and `chant approve fan-out <name>-wave-<n>` answers
|
|
@@ -72,7 +81,7 @@ export declare function resolveChangedUnits(ctx: CommandContext, config: ChantCo
|
|
|
72
81
|
* chant components fan-out --base <ref> | --from-affected <file>
|
|
73
82
|
* [--head <ref>] [--include-dependents] [--env <env>] [--gate <name>]
|
|
74
83
|
* [--dry-run] [--json] [--resume <file>] [--seed-outputs <file>]
|
|
75
|
-
* [--dump-outputs <file>] [--progress-json]
|
|
84
|
+
* [--dump-outputs <file>] [--progress-json | --events-json]
|
|
76
85
|
*/
|
|
77
86
|
export declare function runComponentsFanOut(ctx: CommandContext): Promise<number>;
|
|
78
87
|
//# sourceMappingURL=fan-out.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fan-out.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/fan-out.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"fan-out.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/fan-out.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAIH,OAAO,EAA+C,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAe7F,OAAO,EAAmB,KAAK,YAAY,EAAuB,MAAM,0BAA0B,CAAC;AAMnG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,WAAW,EACnB,IAAI,GAAE;IACJ,yFAAyF;IACzF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wFAAwF;IACxF,UAAU,CAAC,EAAE,OAAO,CAAC;CACjB,GACL,OAAO,CAAC;IAAE,KAAK,EAAE,YAAY,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA+ErE;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAwT9E"}
|