@intentius/chant 0.124.52 → 0.124.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/audit/discover.d.ts.map +1 -1
- package/dist/audit/discover.js +3 -1
- package/dist/behaviour.d.ts +1 -1
- package/dist/behaviour.d.ts.map +1 -1
- package/dist/capabilities/templates.d.ts +65 -0
- package/dist/capabilities/templates.d.ts.map +1 -0
- package/dist/capabilities/templates.js +193 -0
- package/dist/capabilities/templates.json +145 -0
- package/dist/change-set-graph.d.ts +35 -3
- package/dist/change-set-graph.d.ts.map +1 -1
- package/dist/change-set-graph.js +60 -9
- package/dist/change-set.d.ts +65 -7
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +23 -12
- package/dist/ci-identity.d.ts +7 -2
- package/dist/ci-identity.d.ts.map +1 -1
- package/dist/ci-identity.js +4 -1
- package/dist/cli/commands/import-index.d.ts +52 -0
- package/dist/cli/commands/import-index.d.ts.map +1 -0
- package/dist/cli/commands/import-index.js +226 -0
- package/dist/cli/commands/lint.d.ts.map +1 -1
- package/dist/cli/commands/lint.js +4 -2
- package/dist/cli/handlers/components.d.ts.map +1 -1
- package/dist/cli/handlers/components.js +11 -2
- package/dist/cli/handlers/fan-out.d.ts.map +1 -1
- package/dist/cli/handlers/fan-out.js +16 -3
- package/dist/cli/handlers/graph.d.ts.map +1 -1
- package/dist/cli/handlers/graph.js +22 -4
- package/dist/cli/handlers/index-cloud.d.ts +14 -0
- package/dist/cli/handlers/index-cloud.d.ts.map +1 -0
- package/dist/cli/handlers/index-cloud.js +22 -0
- package/dist/cli/handlers/index-diff.d.ts +18 -0
- package/dist/cli/handlers/index-diff.d.ts.map +1 -0
- package/dist/cli/handlers/index-diff.js +142 -0
- package/dist/cli/handlers/lifecycle-drift.d.ts +25 -0
- package/dist/cli/handlers/lifecycle-drift.d.ts.map +1 -0
- package/dist/cli/handlers/lifecycle-drift.js +64 -0
- package/dist/cli/handlers/lifecycle.d.ts.map +1 -1
- package/dist/cli/handlers/lifecycle.js +188 -28
- package/dist/cli/handlers/misc.d.ts +9 -0
- package/dist/cli/handlers/misc.d.ts.map +1 -1
- package/dist/cli/handlers/misc.js +77 -0
- package/dist/cli/handlers/pr.d.ts.map +1 -1
- package/dist/cli/handlers/pr.js +15 -2
- package/dist/cli/handlers/promote.d.ts.map +1 -1
- package/dist/cli/handlers/promote.js +89 -15
- package/dist/cli/handlers/query.d.ts.map +1 -1
- package/dist/cli/handlers/query.js +28 -4
- package/dist/cli/handlers/scenario.d.ts.map +1 -1
- package/dist/cli/handlers/scenario.js +8 -7
- package/dist/cli/handlers/search.d.ts +34 -4
- package/dist/cli/handlers/search.d.ts.map +1 -1
- package/dist/cli/handlers/search.js +216 -36
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +55 -1
- package/dist/cli/mcp/lifecycle-tools.d.ts.map +1 -1
- package/dist/cli/mcp/lifecycle-tools.js +3 -2
- package/dist/cli/mcp/resource-handlers.d.ts.map +1 -1
- package/dist/cli/mcp/resource-handlers.js +4 -3
- 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 +55 -2
- package/dist/cli/registry.d.ts +19 -1
- package/dist/cli/registry.d.ts.map +1 -1
- package/dist/cloud-lister/aws.d.ts +35 -0
- package/dist/cloud-lister/aws.d.ts.map +1 -0
- package/dist/cloud-lister/aws.js +203 -0
- package/dist/cloud-lister/azure.d.ts +34 -0
- package/dist/cloud-lister/azure.d.ts.map +1 -0
- package/dist/cloud-lister/azure.js +129 -0
- package/dist/cloud-lister/common.d.ts +40 -0
- package/dist/cloud-lister/common.d.ts.map +1 -0
- package/dist/cloud-lister/common.js +83 -0
- package/dist/cloud-lister/credentials.d.ts +50 -0
- package/dist/cloud-lister/credentials.d.ts.map +1 -0
- package/dist/cloud-lister/credentials.js +86 -0
- package/dist/cloud-lister/fakes.d.ts +27 -0
- package/dist/cloud-lister/fakes.d.ts.map +1 -0
- package/dist/cloud-lister/fakes.js +50 -0
- package/dist/cloud-lister/gcp.d.ts +42 -0
- package/dist/cloud-lister/gcp.d.ts.map +1 -0
- package/dist/cloud-lister/gcp.js +143 -0
- package/dist/cloud-lister/guard.d.ts +49 -0
- package/dist/cloud-lister/guard.d.ts.map +1 -0
- package/dist/cloud-lister/guard.js +103 -0
- package/dist/cloud-lister/ids.d.ts +23 -0
- package/dist/cloud-lister/ids.d.ts.map +1 -0
- package/dist/cloud-lister/ids.js +42 -0
- package/dist/cloud-lister/index.d.ts +67 -0
- package/dist/cloud-lister/index.d.ts.map +1 -0
- package/dist/cloud-lister/index.js +102 -0
- package/dist/cloud-lister/kubernetes.d.ts +64 -0
- package/dist/cloud-lister/kubernetes.d.ts.map +1 -0
- package/dist/cloud-lister/kubernetes.js +276 -0
- package/dist/cloud-lister/markers.d.ts +31 -0
- package/dist/cloud-lister/markers.d.ts.map +1 -0
- package/dist/cloud-lister/markers.js +73 -0
- package/dist/cloud-lister/mask.d.ts +31 -0
- package/dist/cloud-lister/mask.d.ts.map +1 -0
- package/dist/cloud-lister/mask.js +74 -0
- package/dist/cloud-lister/sigv4.d.ts +29 -0
- package/dist/cloud-lister/sigv4.d.ts.map +1 -0
- package/dist/cloud-lister/sigv4.js +54 -0
- package/dist/cloud-lister/transport.d.ts +55 -0
- package/dist/cloud-lister/transport.d.ts.map +1 -0
- package/dist/cloud-lister/transport.js +86 -0
- package/dist/cloud-lister/types.d.ts +121 -0
- package/dist/cloud-lister/types.d.ts.map +1 -0
- package/dist/cloud-lister/types.js +24 -0
- package/dist/components/capability-plugin-loader.d.ts.map +1 -1
- package/dist/components/capability-plugin-loader.js +6 -0
- package/dist/components/capability-plugin.d.ts +9 -0
- package/dist/components/capability-plugin.d.ts.map +1 -1
- package/dist/components/capability.d.ts +215 -0
- package/dist/components/capability.d.ts.map +1 -1
- package/dist/components/cli-support.d.ts +21 -0
- package/dist/components/cli-support.d.ts.map +1 -1
- package/dist/components/cli-support.js +58 -14
- package/dist/components/declared-reads.d.ts +38 -0
- package/dist/components/declared-reads.d.ts.map +1 -0
- package/dist/components/declared-reads.js +131 -0
- package/dist/components/deploy-units.d.ts.map +1 -1
- package/dist/components/deploy-units.js +4 -0
- package/dist/components/driver.d.ts +34 -1
- package/dist/components/driver.d.ts.map +1 -1
- package/dist/components/driver.js +66 -3
- package/dist/components/fan-out-run.d.ts +23 -1
- package/dist/components/fan-out-run.d.ts.map +1 -1
- package/dist/components/fan-out-run.js +82 -14
- package/dist/components/fan-out-support.d.ts +6 -0
- package/dist/components/fan-out-support.d.ts.map +1 -1
- package/dist/components/fan-out-support.js +4 -1
- package/dist/components/fan-out.d.ts +28 -0
- package/dist/components/fan-out.d.ts.map +1 -1
- package/dist/components/groups.d.ts +229 -0
- package/dist/components/groups.d.ts.map +1 -0
- package/dist/components/groups.js +760 -0
- package/dist/components/index.d.ts +6 -2
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +4 -0
- package/dist/components/plan-shape-conformance.d.ts +48 -0
- package/dist/components/plan-shape-conformance.d.ts.map +1 -0
- package/dist/components/plan-shape-conformance.js +122 -0
- package/dist/components/pr-run.d.ts +41 -4
- package/dist/components/pr-run.d.ts.map +1 -1
- package/dist/components/pr-run.js +209 -39
- package/dist/components/promote-rounds.d.ts +9 -0
- package/dist/components/promote-rounds.d.ts.map +1 -1
- package/dist/components/promote-rounds.js +23 -2
- package/dist/components/promote.d.ts +17 -0
- package/dist/components/promote.d.ts.map +1 -1
- package/dist/components/promote.js +36 -6
- package/dist/components/release-gate.d.ts +23 -1
- package/dist/components/release-gate.d.ts.map +1 -1
- package/dist/components/release-gate.js +97 -33
- package/dist/components/run-groups.d.ts +58 -0
- package/dist/components/run-groups.d.ts.map +1 -0
- package/dist/components/run-groups.js +78 -0
- package/dist/components/starter-plugin.d.ts +1 -0
- package/dist/components/starter-plugin.d.ts.map +1 -1
- package/dist/components/starter-plugin.js +6 -1
- package/dist/components/verbs/index.d.ts +1 -0
- package/dist/components/verbs/index.d.ts.map +1 -1
- package/dist/components/verbs/index.js +1 -0
- package/dist/components/verbs/member-outputs.d.ts +187 -0
- package/dist/components/verbs/member-outputs.d.ts.map +1 -0
- package/dist/components/verbs/member-outputs.js +218 -0
- package/dist/config.d.ts +60 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +27 -0
- package/dist/deep-observation.d.ts +1 -13
- package/dist/deep-observation.d.ts.map +1 -1
- package/dist/deep-observation.js +5 -22
- package/dist/drift-record.d.ts +542 -0
- package/dist/drift-record.d.ts.map +1 -0
- package/dist/drift-record.js +886 -0
- package/dist/engine-facts.d.ts +144 -0
- package/dist/engine-facts.d.ts.map +1 -0
- package/dist/engine-facts.js +14 -0
- package/dist/graph-ir.d.ts +153 -2
- package/dist/graph-ir.d.ts.map +1 -1
- package/dist/graph-ir.js +224 -6
- package/dist/graph-refs.d.ts +145 -0
- package/dist/graph-refs.d.ts.map +1 -1
- package/dist/graph-refs.js +305 -0
- package/dist/graph-schema/fixtures/adopt.json +15 -0
- package/dist/graph-schema/fixtures/choudoufu.engine-graph.json +169 -0
- package/dist/graph-schema/fixtures/index.json +68 -0
- package/dist/graph-schema/fixtures/plunge.engine-graph.json +158 -0
- package/dist/graph-schema/fixtures.d.ts +23 -0
- package/dist/graph-schema/fixtures.d.ts.map +1 -0
- package/dist/graph-schema/fixtures.js +246 -0
- package/dist/graph-schema/generate.d.ts +15 -0
- package/dist/graph-schema/generate.d.ts.map +1 -0
- package/dist/graph-schema/generate.js +267 -0
- package/dist/graph-schema/graph.schema.json +1387 -0
- package/dist/health.schema.json +2 -1
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +2 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/instance-nodes.d.ts +159 -0
- package/dist/instance-nodes.d.ts.map +1 -0
- package/dist/instance-nodes.js +231 -0
- package/dist/lexicon.d.ts +72 -0
- package/dist/lexicon.d.ts.map +1 -1
- package/dist/lifecycle/adoption-file.d.ts +56 -0
- package/dist/lifecycle/adoption-file.d.ts.map +1 -0
- package/dist/lifecycle/adoption-file.js +123 -0
- package/dist/lifecycle/cloud-index.d.ts +186 -0
- package/dist/lifecycle/cloud-index.d.ts.map +1 -0
- package/dist/lifecycle/cloud-index.js +618 -0
- package/dist/lifecycle/derive-edges.d.ts +59 -0
- package/dist/lifecycle/derive-edges.d.ts.map +1 -0
- package/dist/lifecycle/derive-edges.js +126 -0
- package/dist/lifecycle/git.d.ts +10 -9
- package/dist/lifecycle/git.d.ts.map +1 -1
- package/dist/lifecycle/git.js +7 -1
- package/dist/lifecycle/identity-match.d.ts +133 -0
- package/dist/lifecycle/identity-match.d.ts.map +1 -0
- package/dist/lifecycle/identity-match.js +147 -0
- package/dist/lifecycle/index-diff.d.ts +224 -0
- package/dist/lifecycle/index-diff.d.ts.map +1 -0
- package/dist/lifecycle/index-diff.js +327 -0
- package/dist/lifecycle/index-document.d.ts +130 -0
- package/dist/lifecycle/index-document.d.ts.map +1 -0
- package/dist/lifecycle/index-document.js +189 -0
- package/dist/lifecycle/index-drift.d.ts +121 -0
- package/dist/lifecycle/index-drift.d.ts.map +1 -0
- package/dist/lifecycle/index-drift.js +178 -0
- package/dist/lifecycle/index-import.d.ts +168 -0
- package/dist/lifecycle/index-import.d.ts.map +1 -0
- package/dist/lifecycle/index-import.js +515 -0
- package/dist/lifecycle/index-join.d.ts +129 -0
- package/dist/lifecycle/index-join.d.ts.map +1 -0
- package/dist/lifecycle/index-join.js +248 -0
- 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/observation-baseline.d.ts +61 -21
- package/dist/lifecycle/observation-baseline.d.ts.map +1 -1
- package/dist/lifecycle/observation-baseline.js +144 -19
- package/dist/lifecycle/observe.d.ts.map +1 -1
- package/dist/lifecycle/observe.js +6 -1
- package/dist/lifecycle/query.d.ts +45 -4
- package/dist/lifecycle/query.d.ts.map +1 -1
- package/dist/lifecycle/query.js +89 -7
- package/dist/lifecycle/replay.d.ts +10 -3
- package/dist/lifecycle/replay.d.ts.map +1 -1
- package/dist/lifecycle/replay.js +10 -6
- package/dist/lifecycle/scenario.d.ts +4 -3
- package/dist/lifecycle/scenario.d.ts.map +1 -1
- package/dist/lifecycle/snapshot-store-fake.d.ts +9 -0
- package/dist/lifecycle/snapshot-store-fake.d.ts.map +1 -0
- package/dist/lifecycle/snapshot-store-fake.js +21 -0
- package/dist/lifecycle/snapshot-store-s3.d.ts +102 -0
- package/dist/lifecycle/snapshot-store-s3.d.ts.map +1 -0
- package/dist/lifecycle/snapshot-store-s3.js +254 -0
- package/dist/lifecycle/snapshot-store.d.ts +170 -0
- package/dist/lifecycle/snapshot-store.d.ts.map +1 -0
- package/dist/lifecycle/snapshot-store.js +832 -0
- package/dist/lifecycle/snapshot.d.ts +11 -0
- package/dist/lifecycle/snapshot.d.ts.map +1 -1
- package/dist/lifecycle/snapshot.js +18 -5
- package/dist/lifecycle/type-listing.d.ts +148 -0
- package/dist/lifecycle/type-listing.d.ts.map +1 -0
- package/dist/lifecycle/type-listing.js +166 -0
- package/dist/lint/component-checks.d.ts +15 -1
- package/dist/lint/component-checks.d.ts.map +1 -1
- package/dist/lint/component-checks.js +1 -0
- package/dist/lint/presets/relaxed.json +2 -1
- package/dist/lint/presets/strict.json +2 -1
- package/dist/lint/rules/__fixtures__/comp/comp008/fail/dns.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp008/fail/dns.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp008/fail/dns.component.js +13 -0
- package/dist/lint/rules/__fixtures__/comp/comp008/pass/dns.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp008/pass/dns.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp008/pass/dns.component.js +8 -0
- package/dist/lint/rules/comp/comp008-applies-signal-only-root.d.ts +33 -0
- package/dist/lint/rules/comp/comp008-applies-signal-only-root.d.ts.map +1 -0
- package/dist/lint/rules/comp/comp008-applies-signal-only-root.js +123 -0
- package/dist/lint/rules/comp/index.d.ts +2 -1
- package/dist/lint/rules/comp/index.d.ts.map +1 -1
- package/dist/lint/rules/comp/index.js +4 -1
- package/dist/observation.d.ts +19 -2
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +18 -1
- package/dist/op/activities/activity-contracts.d.ts +1 -1
- package/dist/op/activities/activity-contracts.js +1 -1
- package/dist/op/activities/change-set.d.ts +6 -4
- package/dist/op/activities/change-set.d.ts.map +1 -1
- package/dist/op/activities/change-set.js +4 -2
- package/dist/op/activity-failure.d.ts +27 -0
- package/dist/op/activity-failure.d.ts.map +1 -1
- package/dist/op/activity-failure.js +31 -0
- package/dist/op/index.d.ts +2 -1
- package/dist/op/index.d.ts.map +1 -1
- package/dist/op/index.js +1 -1
- package/dist/op/local-executor.d.ts +5 -1
- package/dist/op/local-executor.d.ts.map +1 -1
- package/dist/op/local-executor.js +22 -8
- package/dist/pr-loop.d.ts +56 -1
- package/dist/pr-loop.d.ts.map +1 -1
- package/dist/pr-loop.js +51 -1
- package/dist/pulumi-urn.d.ts +101 -0
- package/dist/pulumi-urn.d.ts.map +1 -0
- package/dist/pulumi-urn.js +131 -0
- package/dist/release-floors.d.ts +23 -0
- package/dist/release-floors.d.ts.map +1 -0
- package/dist/release-floors.js +22 -0
- package/dist/sensitive-key.d.ts +23 -0
- package/dist/sensitive-key.d.ts.map +1 -0
- package/dist/sensitive-key.js +31 -0
- package/dist/wave-runtime.mjs +234 -234
- package/dist/workspace/adoption-report.d.ts +53 -0
- package/dist/workspace/adoption-report.d.ts.map +1 -0
- package/dist/workspace/adoption-report.js +76 -0
- package/dist/workspace/capabilities-contract.d.ts +7 -0
- package/dist/workspace/capabilities-contract.d.ts.map +1 -1
- package/dist/workspace/capabilities-contract.js +2 -1
- package/dist/workspace/capabilities.schema.json +98 -0
- package/dist/workspace/change-set.schema.json +42 -3
- package/dist/workspace/ci-cloud-identity.d.ts +13 -1
- package/dist/workspace/ci-cloud-identity.d.ts.map +1 -1
- package/dist/workspace/ci-cloud-identity.js +30 -1
- package/dist/workspace/compose-graph.d.ts +10 -1
- package/dist/workspace/compose-graph.d.ts.map +1 -1
- package/dist/workspace/compose-graph.js +6 -1
- package/dist/workspace/conformance/index.d.ts +1 -1
- package/dist/workspace/conformance/index.d.ts.map +1 -1
- package/dist/workspace/conformance/index.js +6 -1
- package/dist/workspace/drift-cli.d.ts +81 -0
- package/dist/workspace/drift-cli.d.ts.map +1 -0
- package/dist/workspace/drift-cli.js +317 -0
- package/dist/workspace/drift.schema.json +672 -0
- package/dist/workspace/graph-cli.d.ts +2 -0
- package/dist/workspace/graph-cli.d.ts.map +1 -1
- package/dist/workspace/graph-cli.js +3 -0
- package/dist/workspace/graph.schema.json +72 -0
- package/dist/workspace/init.d.ts +5 -1
- package/dist/workspace/init.d.ts.map +1 -1
- package/dist/workspace/init.js +55 -9
- package/dist/workspace/ledger.schema.json +1 -1
- package/dist/workspace/nested-graph.d.ts.map +1 -1
- package/dist/workspace/nested-graph.js +2 -0
- package/dist/workspace/pr-report.schema.json +51 -2
- package/dist/workspace/promote-waves.d.ts +112 -0
- package/dist/workspace/promote-waves.d.ts.map +1 -0
- package/dist/workspace/promote-waves.js +290 -0
- package/dist/workspace/promote.d.ts +84 -2
- package/dist/workspace/promote.d.ts.map +1 -1
- package/dist/workspace/promote.js +347 -61
- package/dist/workspace/reason-codes.d.ts +12 -0
- package/dist/workspace/reason-codes.d.ts.map +1 -1
- package/dist/workspace/reason-codes.js +14 -0
- package/dist/workspace/search-contract.d.ts +3 -3
- package/dist/workspace/search-contract.d.ts.map +1 -1
- package/dist/workspace/search-contract.js +2 -0
- package/dist/workspace/search.schema.json +103 -5
- package/package.json +14 -1
- package/src/__fixtures__/drift-record/README.md +58 -0
- package/src/__fixtures__/drift-record/choudoufu-cone.ndjson +4 -0
- package/src/__fixtures__/drift-record/choudoufu-resource.ndjson +3 -0
- package/src/__fixtures__/drift-record/component-status-ledger.json +65 -0
- package/src/__fixtures__/drift-record/component-status.json +91 -0
- package/src/__fixtures__/drift-record/deep-diff.json +259 -0
- package/src/__fixtures__/drift-record/lifecycle-diff-live.json +825 -0
- package/src/__fixtures__/drift-record/live-diff.json +125 -0
- package/src/audit/discover.e2e.test.ts +14 -0
- package/src/audit/discover.ts +3 -1
- package/src/behaviour.ts +1 -1
- package/src/capabilities/templates.json +145 -0
- package/src/capabilities/templates.test.ts +212 -0
- package/src/capabilities/templates.ts +204 -0
- package/src/change-set-bundle.test.ts +83 -0
- package/src/change-set-graph.ts +80 -9
- package/src/change-set.test.ts +24 -0
- package/src/change-set.ts +77 -14
- package/src/ci-identity-targets.test.ts +23 -0
- package/src/ci-identity.ts +10 -4
- package/src/cli/commands/import-index.test.ts +117 -0
- package/src/cli/commands/import-index.ts +265 -0
- package/src/cli/commands/lint.ts +4 -2
- package/src/cli/handlers/components.test.ts +9 -0
- package/src/cli/handlers/components.ts +12 -2
- package/src/cli/handlers/fan-out.ts +17 -3
- package/src/cli/handlers/graph.test.ts +42 -0
- package/src/cli/handlers/graph.ts +26 -4
- package/src/cli/handlers/index-cloud.ts +32 -0
- package/src/cli/handlers/index-diff.test.ts +68 -0
- package/src/cli/handlers/index-diff.ts +146 -0
- package/src/cli/handlers/ledger-root-member.test.ts +161 -0
- package/src/cli/handlers/lifecycle-drift.ts +68 -0
- package/src/cli/handlers/lifecycle.test.ts +33 -11
- package/src/cli/handlers/lifecycle.ts +205 -30
- package/src/cli/handlers/misc.ts +73 -0
- package/src/cli/handlers/pr-waves-blocked.test.ts +37 -2
- package/src/cli/handlers/pr.ts +14 -2
- package/src/cli/handlers/promote.test.ts +64 -0
- package/src/cli/handlers/promote.ts +81 -6
- package/src/cli/handlers/query.ts +27 -4
- package/src/cli/handlers/run-declared-reads-cli.test.ts +187 -0
- package/src/cli/handlers/run-groups-cli.test.ts +229 -0
- package/src/cli/handlers/scenario.test.ts +13 -0
- package/src/cli/handlers/scenario.ts +8 -7
- package/src/cli/handlers/search-index.test.ts +255 -0
- package/src/cli/handlers/search-json.test.ts +1 -1
- package/src/cli/handlers/search-ownership.test.ts +194 -0
- package/src/cli/handlers/search.ts +271 -38
- package/src/cli/main.test.ts +7 -0
- package/src/cli/main.ts +56 -1
- package/src/cli/mcp/lifecycle-tools.ts +3 -2
- package/src/cli/mcp/resource-handlers.ts +4 -3
- package/src/cli/mcp/workspace-tools.ts +1 -1
- package/src/cli/parse-args.ts +40 -2
- package/src/cli/registry.ts +19 -1
- package/src/cloud-lister/aws.test.ts +202 -0
- package/src/cloud-lister/aws.ts +226 -0
- package/src/cloud-lister/azure.test.ts +132 -0
- package/src/cloud-lister/azure.ts +142 -0
- package/src/cloud-lister/common.ts +115 -0
- package/src/cloud-lister/credentials.ts +110 -0
- package/src/cloud-lister/fakes.ts +66 -0
- package/src/cloud-lister/gcp.test.ts +121 -0
- package/src/cloud-lister/gcp.ts +159 -0
- package/src/cloud-lister/guard.test.ts +198 -0
- package/src/cloud-lister/guard.ts +111 -0
- package/src/cloud-lister/ids.ts +54 -0
- package/src/cloud-lister/index.ts +134 -0
- package/src/cloud-lister/kubernetes.test.ts +160 -0
- package/src/cloud-lister/kubernetes.ts +284 -0
- package/src/cloud-lister/markers.ts +74 -0
- package/src/cloud-lister/mask.ts +77 -0
- package/src/cloud-lister/shape.test.ts +81 -0
- package/src/cloud-lister/sigv4.ts +70 -0
- package/src/cloud-lister/transport.ts +118 -0
- package/src/cloud-lister/types.ts +135 -0
- package/src/components/capability-plugin-loader.ts +4 -0
- package/src/components/capability-plugin.ts +10 -0
- package/src/components/capability.ts +229 -0
- package/src/components/cli-support.ts +70 -14
- package/src/components/declared-reads.test.ts +103 -0
- package/src/components/declared-reads.ts +134 -0
- package/src/components/deploy-units.ts +4 -0
- package/src/components/driver.ts +89 -4
- package/src/components/fan-out-run.ts +95 -15
- package/src/components/fan-out-support.ts +10 -1
- package/src/components/fan-out.ts +30 -0
- package/src/components/groups.test.ts +320 -0
- package/src/components/groups.ts +880 -0
- package/src/components/index.ts +42 -0
- package/src/components/plan-shape-conformance.ts +130 -0
- package/src/components/pr-env-run-bundle.test.ts +2 -0
- package/src/components/pr-run.test.ts +516 -3
- package/src/components/pr-run.ts +231 -41
- package/src/components/promote-rounds.ts +25 -2
- package/src/components/promote.ts +55 -5
- package/src/components/registry.test.ts +1 -1
- package/src/components/release-gate.ts +115 -30
- package/src/components/release-groups.test.ts +362 -0
- package/src/components/run-groups.ts +113 -0
- package/src/components/starter-plugin.ts +6 -0
- package/src/components/verbs/index.ts +1 -0
- package/src/components/verbs/member-outputs.test.ts +205 -0
- package/src/components/verbs/member-outputs.ts +308 -0
- package/src/config.ts +44 -0
- package/src/deep-observation.ts +5 -23
- package/src/drift-record.test.ts +596 -0
- package/src/drift-record.ts +1206 -0
- package/src/engine-facts.guard.test.ts +111 -0
- package/src/engine-facts.test.ts +178 -0
- package/src/engine-facts.ts +154 -0
- package/src/gated-waves-bundle.test.ts +2 -0
- package/src/graph-ir-live.test.ts +92 -0
- package/src/graph-ir.ts +317 -7
- package/src/graph-refs.ts +416 -0
- package/src/graph-schema/fixtures/adopt.json +15 -0
- package/src/graph-schema/fixtures/choudoufu.engine-graph.json +169 -0
- package/src/graph-schema/fixtures/index.json +68 -0
- package/src/graph-schema/fixtures/plunge.engine-graph.json +158 -0
- package/src/graph-schema/fixtures.ts +267 -0
- package/src/graph-schema/generate.ts +263 -0
- package/src/graph-schema/graph-schema.test.ts +153 -0
- package/src/graph-schema/graph.schema.json +1387 -0
- package/src/health.schema.json +2 -1
- package/src/identity.ts +2 -0
- package/src/index.ts +2 -0
- package/src/instance-nodes.ts +288 -0
- package/src/lexicon.ts +76 -0
- package/src/lifecycle/__fixtures__/index-diff/20261026T120000Z-aaaaaaaaaaaa.json +149 -0
- package/src/lifecycle/__fixtures__/index-diff/20261026T130000Z-bbbbbbbbbbbb.json +127 -0
- package/src/lifecycle/adoption-file.test.ts +100 -0
- package/src/lifecycle/adoption-file.ts +154 -0
- package/src/lifecycle/cloud-index.test.ts +517 -0
- package/src/lifecycle/cloud-index.ts +736 -0
- package/src/lifecycle/derive-edges.test.ts +193 -0
- package/src/lifecycle/derive-edges.ts +182 -0
- package/src/lifecycle/git.ts +10 -4
- package/src/lifecycle/identity-match.test.ts +308 -0
- package/src/lifecycle/identity-match.ts +257 -0
- package/src/lifecycle/index-diff.test.ts +198 -0
- package/src/lifecycle/index-diff.ts +476 -0
- package/src/lifecycle/index-document.test.ts +64 -0
- package/src/lifecycle/index-document.ts +299 -0
- package/src/lifecycle/index-drift.test.ts +191 -0
- package/src/lifecycle/index-drift.ts +304 -0
- package/src/lifecycle/index-import.test.ts +255 -0
- package/src/lifecycle/index-import.ts +634 -0
- package/src/lifecycle/index-join.test.ts +250 -0
- package/src/lifecycle/index-join.ts +304 -0
- package/src/lifecycle/index-store-load-bearing.test.ts +187 -0
- package/src/lifecycle/index.ts +4 -0
- package/src/lifecycle/member-ledger.test.ts +25 -7
- package/src/lifecycle/observation-baseline.test.ts +72 -1
- package/src/lifecycle/observation-baseline.ts +190 -27
- package/src/lifecycle/observe.ts +6 -1
- package/src/lifecycle/query.test.ts +69 -1
- package/src/lifecycle/query.ts +103 -10
- package/src/lifecycle/replay.test.ts +9 -5
- package/src/lifecycle/replay.ts +9 -5
- package/src/lifecycle/scenario.ts +4 -3
- package/src/lifecycle/snapshot-store-fake.ts +29 -0
- package/src/lifecycle/snapshot-store-s3.ts +316 -0
- package/src/lifecycle/snapshot-store.test.ts +385 -0
- package/src/lifecycle/snapshot-store.ts +981 -0
- package/src/lifecycle/snapshot.test.ts +13 -0
- package/src/lifecycle/snapshot.ts +23 -6
- package/src/lifecycle/type-listing.test.ts +166 -0
- package/src/lifecycle/type-listing.ts +309 -0
- package/src/lint/component-checks.ts +17 -1
- package/src/lint/config.test.ts +3 -0
- package/src/lint/presets/relaxed.json +2 -1
- package/src/lint/presets/strict.json +2 -1
- package/src/lint/rules/__fixtures__/comp/comp008/fail/dns.component.ts +15 -0
- package/src/lint/rules/__fixtures__/comp/comp008/pass/dns.component.ts +10 -0
- package/src/lint/rules/comp/comp.test.ts +2 -1
- package/src/lint/rules/comp/comp008-applies-signal-only-root.ts +121 -0
- package/src/lint/rules/comp/comp008.test.ts +77 -0
- package/src/lint/rules/comp/index.ts +4 -1
- package/src/observation-edges.test.ts +33 -0
- package/src/observation.ts +36 -1
- package/src/op/activities/activity-contracts.ts +1 -1
- package/src/op/activities/change-set.ts +8 -5
- package/src/op/activity-failure.ts +36 -0
- package/src/op/index.ts +2 -1
- package/src/op/local-executor.test.ts +80 -0
- package/src/op/local-executor.ts +27 -9
- package/src/pr-loop-bundle.test.ts +5 -2
- package/src/pr-loop.test.ts +43 -0
- package/src/pr-loop.ts +111 -2
- package/src/pulumi-urn.ts +151 -0
- package/src/release-floors.ts +22 -0
- package/src/sensitive-key.ts +34 -0
- package/src/workspace/adoption-report.test.ts +61 -0
- package/src/workspace/adoption-report.ts +103 -0
- package/src/workspace/capabilities-contract.test.ts +4 -0
- package/src/workspace/capabilities-contract.ts +9 -1
- package/src/workspace/capabilities.schema.json +98 -0
- package/src/workspace/change-set.schema.json +42 -3
- package/src/workspace/ci-cloud-identity.ts +31 -1
- package/src/workspace/compose-graph.test.ts +12 -0
- package/src/workspace/compose-graph.ts +12 -1
- package/src/workspace/conformance/conformance.e2e.test.ts +2 -1
- package/src/workspace/conformance/index.ts +6 -1
- package/src/workspace/drift-cli.test.ts +65 -0
- package/src/workspace/drift-cli.ts +365 -0
- package/src/workspace/drift.schema.json +672 -0
- package/src/workspace/graph-cli.ts +5 -0
- package/src/workspace/graph.schema.json +72 -0
- package/src/workspace/init.test.ts +38 -1
- package/src/workspace/init.ts +50 -8
- package/src/workspace/intent-gaps.test.ts +18 -2
- package/src/workspace/ledger.schema.json +1 -1
- package/src/workspace/nested-graph.ts +1 -0
- package/src/workspace/pr-report.schema.json +51 -2
- package/src/workspace/promote-waves.test.ts +296 -0
- package/src/workspace/promote-waves.ts +340 -0
- package/src/workspace/promote.test.ts +158 -4
- package/src/workspace/promote.ts +398 -57
- package/src/workspace/reason-codes.test.ts +4 -1
- package/src/workspace/reason-codes.ts +14 -0
- package/src/workspace/search-contract.ts +2 -0
- package/src/workspace/search.schema.json +103 -5
|
@@ -13,30 +13,62 @@
|
|
|
13
13
|
*
|
|
14
14
|
* Rungs:
|
|
15
15
|
*
|
|
16
|
-
* - `terraform` to `choudoufu`: `choudoufu
|
|
16
|
+
* - `terraform` to `choudoufu`: `choudoufu init -backend=false` installs the
|
|
17
|
+
* providers in the staging worktree, which has no `.terraform/` of its own
|
|
18
|
+
* (#4461: `live-import` reads each resource through its provider), then
|
|
19
|
+
* `choudoufu live-check` in the member's
|
|
17
20
|
* directory must pass, then `choudoufu live-import -state=<--state>
|
|
18
21
|
* -estate=<member>` prints its ratification report (read-only: it stamps
|
|
19
|
-
* nothing without `-approve`). The patch changes the member's kind.
|
|
22
|
+
* nothing without `-approve`). The patch changes the member's kind. The
|
|
23
|
+
* report, one entry per resource with its status, rides on `--json` as
|
|
24
|
+
* `adoption` (INTENTIUS/behold#999, ./adoption-report.ts), so
|
|
25
|
+
* `--dry-run --json` is the read-only way to ask what adopting would claim.
|
|
20
26
|
* - `choudoufu` or `other` to `chant`: `chant import` writes TypeScript into
|
|
21
27
|
* the member's directory. The patch holds those files and the kind change.
|
|
22
28
|
*
|
|
29
|
+
* The digest covers the member, the rung, what the staging changed outside
|
|
30
|
+
* the declaration, and (for `choudoufu`) the digest of the `live-import`
|
|
31
|
+
* report, so an approval is for the report the approver read. The kind change
|
|
32
|
+
* itself is written into the tree's declaration on apply rather than carried
|
|
33
|
+
* as a hunk, so promoting one member never conflicts with another member's
|
|
34
|
+
* uncommitted promotion (#4461: `--all` promotes a workspace in waves, see
|
|
35
|
+
* `./promote-waves.ts`).
|
|
36
|
+
*
|
|
37
|
+
* The stamp (`live-import -approve`) runs in the staging worktree's member
|
|
38
|
+
* directory, where `choudoufu init -backend=false` already installed the
|
|
39
|
+
* providers, so the member's own directory needs none (chant#4492).
|
|
40
|
+
*
|
|
41
|
+
* When `live-import -approve` fails after the kind change is written, the
|
|
42
|
+
* promote leaves a stamp record under `.chant/workspace-promote/` (#4485). A
|
|
43
|
+
* re-run finds the member already of kind `choudoufu` and the record, and
|
|
44
|
+
* retries the stamp ({@link retryPendingStamp}) rather than reporting it
|
|
45
|
+
* promoted or starting the next rung. The retry has no staging of its own to
|
|
46
|
+
* reuse, so it stages one first: a worktree at HEAD with the tree's changes to
|
|
47
|
+
* the member, and `choudoufu init -backend=false` in it. The record goes once
|
|
48
|
+
* a stamp passes.
|
|
49
|
+
*
|
|
23
50
|
* Commands run through an injectable runner, so a test never starts a binary.
|
|
24
51
|
*/
|
|
25
52
|
import { execFileSync, spawn } from "node:child_process";
|
|
26
|
-
import { existsSync, mkdirSync, realpathSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
53
|
+
import { copyFileSync, existsSync, mkdirSync, realpathSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
27
54
|
import { tmpdir } from "node:os";
|
|
28
|
-
import { join, relative, resolve, sep } from "node:path";
|
|
55
|
+
import { dirname, join, relative, resolve, sep } from "node:path";
|
|
29
56
|
import { formatError, formatInfo, formatSuccess, formatWarning } from "../cli/format.js";
|
|
57
|
+
import { contentDigest } from "../content-digest.js";
|
|
30
58
|
import { computePlanDigest } from "../lifecycle/plan-digest.js";
|
|
31
59
|
import { LIFECYCLE_LOCAL_NOTE, isLifecycleLocalNote } from "../lifecycle/local-note.js";
|
|
32
60
|
import { approveCommand, describeGateMismatch, evaluateGate, gateIsSealed, gitGateLedgerPort } from "../op/gate.js";
|
|
33
61
|
import { WORKSPACE_PROMOTE_GATE_OP } from "../op/gate-name.js";
|
|
62
|
+
import { parseLiveImportReport } from "./adoption-report.js";
|
|
34
63
|
import { DECLARATION_FILES, readDeclaration } from "./declaration.js";
|
|
35
64
|
import { setProperty } from "./json-edit.js";
|
|
36
65
|
import { workingTree } from "./tree.js";
|
|
37
66
|
export const PROMOTE_PLAN_KIND = "workspace-promote";
|
|
38
67
|
export const PROMOTE_GATED_EXIT = 3;
|
|
39
|
-
const USAGE =
|
|
68
|
+
const USAGE = [
|
|
69
|
+
"chant workspace promote <member> [--state <terraform.tfstate>] [--lexicon <lexicon>] [--dry-run] [--output <patch file>] [--json]",
|
|
70
|
+
"chant workspace promote --all [--state-dir <dir>] [--state <member>=<terraform.tfstate>]... [--canary <member>] [--wave-size <n>] [--dry-run] [--json]",
|
|
71
|
+
].join("\n");
|
|
40
72
|
export class PromoteError extends Error {
|
|
41
73
|
}
|
|
42
74
|
/** The ladder, lowest rung first. `other` and `terraform` share the bottom rung. */
|
|
@@ -58,14 +90,19 @@ export const spawnRunner = (argv, cwd) => new Promise((done) => {
|
|
|
58
90
|
child.on("error", (e) => done({ exitCode: 127, output: String(e.message) }));
|
|
59
91
|
child.on("close", (code) => done({ exitCode: code ?? 1, output: Buffer.concat(out).toString("utf-8") }));
|
|
60
92
|
});
|
|
93
|
+
/** `choudoufu init -backend=false` in the member's staging directory: the providers `live-import` reads each resource through (#4461). */
|
|
94
|
+
function stagingInit(member) {
|
|
95
|
+
return { label: "choudoufu init", argv: ["choudoufu", "init", "-input=false", "-backend=false", "-no-color"], cwd: member.dir };
|
|
96
|
+
}
|
|
61
97
|
/** The commands the rung runs in the staging worktree. */
|
|
62
98
|
export function stagingRuns(rung, member, opts) {
|
|
63
99
|
if (rung.to === "choudoufu") {
|
|
64
100
|
if (!opts.state)
|
|
65
101
|
throw new PromoteError(`promoting ${member.name} to choudoufu reads its state for the adoption report: pass --state <terraform.tfstate>`);
|
|
66
102
|
return [
|
|
103
|
+
stagingInit(member),
|
|
67
104
|
{ label: "choudoufu live-check", argv: ["choudoufu", "live-check"], cwd: member.dir },
|
|
68
|
-
{ label: "choudoufu live-import (report)", argv: ["choudoufu", "live-import", `-state=${opts.state}`, `-estate=${member.name}`], cwd: member.dir },
|
|
105
|
+
{ label: "choudoufu live-import (report)", argv: ["choudoufu", "live-import", `-state=${opts.state}`, `-estate=${member.name}`], cwd: member.dir, report: true },
|
|
69
106
|
];
|
|
70
107
|
}
|
|
71
108
|
const lexicon = opts.lexicon ?? (rung.from === "choudoufu" ? "terraform" : undefined);
|
|
@@ -79,9 +116,187 @@ export function followUpRuns(rung, member, opts) {
|
|
|
79
116
|
return [];
|
|
80
117
|
return [{ label: "choudoufu live-import -approve", argv: ["choudoufu", "live-import", `-state=${opts.state}`, `-estate=${member.name}`, "-approve"], cwd: member.dir }];
|
|
81
118
|
}
|
|
119
|
+
/** Where a promote keeps what a re-run needs, relative to the project root. */
|
|
120
|
+
export const PROMOTE_RECORD_DIR = ".chant/workspace-promote";
|
|
121
|
+
export const PENDING_STAMP_SCHEMA = "chant-workspace-promote-stamp/v1";
|
|
122
|
+
function pendingStampPath(root, member) {
|
|
123
|
+
return join(root, PROMOTE_RECORD_DIR, `${member}.stamp.json`);
|
|
124
|
+
}
|
|
125
|
+
/** The stamp a promote of `member` left failed, or undefined when none is pending. */
|
|
126
|
+
export function readPendingStamp(root, member) {
|
|
127
|
+
const file = pendingStampPath(root, member);
|
|
128
|
+
if (!existsSync(file))
|
|
129
|
+
return undefined;
|
|
130
|
+
try {
|
|
131
|
+
const record = JSON.parse(readFileSync(file, "utf-8"));
|
|
132
|
+
return record.schema === PENDING_STAMP_SCHEMA && record.member === member ? record : undefined;
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
return undefined;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
function writePendingStamp(root, record) {
|
|
139
|
+
mkdirSync(join(root, PROMOTE_RECORD_DIR), { recursive: true });
|
|
140
|
+
writeFileSync(pendingStampPath(root, record.member), `${JSON.stringify(record, null, 2)}\n`);
|
|
141
|
+
}
|
|
142
|
+
function clearPendingStamp(root, member) {
|
|
143
|
+
rmSync(pendingStampPath(root, member), { force: true });
|
|
144
|
+
}
|
|
145
|
+
/** The `live-import -approve` line to run by hand for a pending stamp. */
|
|
146
|
+
export function stampCommand(member, state) {
|
|
147
|
+
return `\`choudoufu live-import -state=${state} -estate=${member.name} -approve\` in ${member.dir || "."}`;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Run the stamps of the `choudoufu` rung's follow-up in `cwd`, the member's
|
|
151
|
+
* directory in a staging worktree whose `choudoufu init` installed the
|
|
152
|
+
* providers (chant#4492). Keep a {@link PendingStamp} in the tree when one
|
|
153
|
+
* fails and drop it when they pass. The result is `applied`, exit 0 when
|
|
154
|
+
* every stamp passed, else exit 1 with the failed follow-up named.
|
|
155
|
+
*/
|
|
156
|
+
async function stampMember(input) {
|
|
157
|
+
const rung = { from: "terraform", to: "choudoufu" };
|
|
158
|
+
let followUpOutput;
|
|
159
|
+
for (const step of followUpRuns(rung, input.member, { state: input.state })) {
|
|
160
|
+
const result = await input.run(step.argv, input.cwd);
|
|
161
|
+
input.ran.push({ label: step.label, exitCode: result.exitCode });
|
|
162
|
+
followUpOutput = result.output;
|
|
163
|
+
if (result.exitCode !== 0) {
|
|
164
|
+
const tail = result.output.trimEnd().split("\n").slice(-20).join("\n");
|
|
165
|
+
input.say(formatError({ message: `${step.label} failed after the patch was applied`, hint: tail }));
|
|
166
|
+
writePendingStamp(input.root, {
|
|
167
|
+
schema: PENDING_STAMP_SCHEMA,
|
|
168
|
+
member: input.member.name,
|
|
169
|
+
dir: input.member.dir,
|
|
170
|
+
state: input.state ?? "",
|
|
171
|
+
failed: step.label,
|
|
172
|
+
at: new Date().toISOString(),
|
|
173
|
+
});
|
|
174
|
+
input.say(formatInfo(`the stamp is kept as pending in ${join(PROMOTE_RECORD_DIR, `${input.member.name}.stamp.json`)}: run the same promote again to retry it, or ${stampCommand(input.member, input.state ?? "<terraform.tfstate>")}`));
|
|
175
|
+
return { exitCode: 1, followUpFailed: step.label, failureOutput: tail, followUpOutput };
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
clearPendingStamp(input.root, input.member.name);
|
|
179
|
+
return { exitCode: 0, ...(followUpOutput !== undefined ? { followUpOutput } : {}) };
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Retry the stamp an earlier promote of `member` left failed (#4485), or
|
|
183
|
+
* undefined when none is pending. The member is already of kind
|
|
184
|
+
* `choudoufu`: its kind change was written, so only the stamp runs, against
|
|
185
|
+
* `state` when given, else the state the record names. The result is
|
|
186
|
+
* `applied`: exit 0 once the stamp passed, exit 1 with the failed follow-up
|
|
187
|
+
* when it failed again.
|
|
188
|
+
*/
|
|
189
|
+
export async function retryPendingStamp(opts) {
|
|
190
|
+
const root = realpathSync(resolve(opts.root));
|
|
191
|
+
const pending = readPendingStamp(root, opts.member);
|
|
192
|
+
if (!pending)
|
|
193
|
+
return undefined;
|
|
194
|
+
const say = (m) => {
|
|
195
|
+
if (!opts.json)
|
|
196
|
+
console.error(m);
|
|
197
|
+
};
|
|
198
|
+
const state = opts.state ? resolve(opts.state) : pending.state || undefined;
|
|
199
|
+
if (!state)
|
|
200
|
+
throw new PromoteError(`${opts.member}'s stamp is pending and its record names no state: pass --state <terraform.tfstate>`);
|
|
201
|
+
say(formatInfo(`${opts.member}: kind choudoufu, but the stamp ${pending.at} failed (${pending.failed}); retrying it`));
|
|
202
|
+
const run = opts.runner ?? spawnRunner;
|
|
203
|
+
const member = { name: opts.member, dir: pending.dir };
|
|
204
|
+
const ran = [];
|
|
205
|
+
const done = { outcome: "applied", member: opts.member, from: "terraform", to: "choudoufu", ran, retriedStamp: true };
|
|
206
|
+
// No staging is left from the promote that wrote the record, so stage one (chant#4492): the stamp reads
|
|
207
|
+
// each resource through its provider, and the member's own directory need not have them installed.
|
|
208
|
+
const staging = openStaging(root);
|
|
209
|
+
try {
|
|
210
|
+
const cwd = join(staging.project, member.dir);
|
|
211
|
+
mirrorMember(staging, member.dir);
|
|
212
|
+
mkdirSync(cwd, { recursive: true });
|
|
213
|
+
const init = stagingInit(member);
|
|
214
|
+
const installed = await run(init.argv, cwd);
|
|
215
|
+
ran.push({ label: init.label, exitCode: installed.exitCode });
|
|
216
|
+
if (installed.exitCode !== 0) {
|
|
217
|
+
const tail = installed.output.trimEnd().split("\n").slice(-20).join("\n");
|
|
218
|
+
say(formatError({ message: `${init.label} failed in the staging worktree, so the stamp was not retried`, hint: tail }));
|
|
219
|
+
say(formatInfo(`the stamp stays pending in ${join(PROMOTE_RECORD_DIR, `${member.name}.stamp.json`)}: run the same promote again to retry it`));
|
|
220
|
+
return { ...done, exitCode: 1, followUpFailed: init.label, failureOutput: tail };
|
|
221
|
+
}
|
|
222
|
+
const stamped = await stampMember({ root, cwd, member, state, run, ran, say });
|
|
223
|
+
if (stamped.exitCode === 0)
|
|
224
|
+
say(formatSuccess(`stamped "${opts.member}"; its promotion to choudoufu is complete`));
|
|
225
|
+
return { ...done, ...stamped };
|
|
226
|
+
}
|
|
227
|
+
finally {
|
|
228
|
+
staging.dispose();
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
function openStaging(root) {
|
|
232
|
+
let repo;
|
|
233
|
+
let head;
|
|
234
|
+
try {
|
|
235
|
+
repo = git(root, ["rev-parse", "--show-toplevel"]).trim();
|
|
236
|
+
head = git(root, ["rev-parse", "HEAD"]).trim();
|
|
237
|
+
}
|
|
238
|
+
catch {
|
|
239
|
+
throw new PromoteError("chant workspace promote stages its change in a git worktree, so the project must be in a git repository with at least one commit");
|
|
240
|
+
}
|
|
241
|
+
const projectRel = relative(repo, root).split(sep).join("/");
|
|
242
|
+
const holder = mkdtempSync(join(tmpdir(), "chant-promote-"));
|
|
243
|
+
const worktree = join(holder, "wt");
|
|
244
|
+
const dispose = () => {
|
|
245
|
+
try {
|
|
246
|
+
git(repo, ["worktree", "remove", "--force", worktree]);
|
|
247
|
+
}
|
|
248
|
+
catch {
|
|
249
|
+
// Fall through to the directory removal and a prune.
|
|
250
|
+
}
|
|
251
|
+
rmSync(holder, { recursive: true, force: true });
|
|
252
|
+
try {
|
|
253
|
+
git(repo, ["worktree", "prune"]);
|
|
254
|
+
}
|
|
255
|
+
catch {
|
|
256
|
+
// Nothing to prune.
|
|
257
|
+
}
|
|
258
|
+
};
|
|
259
|
+
try {
|
|
260
|
+
git(repo, ["worktree", "add", "-q", "--detach", worktree, head]);
|
|
261
|
+
}
|
|
262
|
+
catch (err) {
|
|
263
|
+
dispose();
|
|
264
|
+
throw err;
|
|
265
|
+
}
|
|
266
|
+
return { repo, head, projectRel, worktree, project: projectRel ? join(worktree, projectRel) : worktree, dispose };
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Bring the tree's uncommitted changes to the member's directory into the
|
|
270
|
+
* staging worktree: a promote applied but not yet committed (the lock file
|
|
271
|
+
* `init` wrote, say) is what the stamp should read. Ignored files stay out.
|
|
272
|
+
*/
|
|
273
|
+
function mirrorMember(staging, dir) {
|
|
274
|
+
const path = [staging.projectRel, dir].filter(Boolean).join("/") || ".";
|
|
275
|
+
const diff = git(staging.repo, ["diff", "--binary", "HEAD", "--", path]);
|
|
276
|
+
if (diff.trim()) {
|
|
277
|
+
const patchDir = mkdtempSync(join(tmpdir(), "chant-promote-patch-"));
|
|
278
|
+
try {
|
|
279
|
+
const file = join(patchDir, "member.patch");
|
|
280
|
+
writeFileSync(file, diff);
|
|
281
|
+
git(staging.worktree, ["apply", "--binary", "--whitespace=nowarn", file]);
|
|
282
|
+
}
|
|
283
|
+
finally {
|
|
284
|
+
rmSync(patchDir, { recursive: true, force: true });
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
for (const f of git(staging.repo, ["ls-files", "--others", "--exclude-standard", "-z", "--", path]).split("\0").filter(Boolean)) {
|
|
288
|
+
const to = join(staging.worktree, f);
|
|
289
|
+
mkdirSync(dirname(to), { recursive: true });
|
|
290
|
+
copyFileSync(join(staging.repo, f), to);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
82
293
|
function git(cwd, args) {
|
|
83
294
|
return execFileSync("git", args, { cwd, encoding: "utf-8", stdio: ["ignore", "pipe", "pipe"], maxBuffer: 256 * 1024 * 1024 });
|
|
84
295
|
}
|
|
296
|
+
/** What a staging writes that no patch carries: the providers and modules `init` installs (#4461). */
|
|
297
|
+
const NOT_STAGED = [":(exclude,glob)**/.terraform/**"];
|
|
298
|
+
/** The staging step whose output is the adoption report. */
|
|
299
|
+
const REPORT_STEP = "choudoufu live-import (report)";
|
|
85
300
|
function declarationFile(root) {
|
|
86
301
|
const f = DECLARATION_FILES.find((n) => existsSync(join(root, n)));
|
|
87
302
|
if (!f)
|
|
@@ -108,77 +323,110 @@ export async function promoteCommand(opts) {
|
|
|
108
323
|
if (!opts.json)
|
|
109
324
|
console.error(m);
|
|
110
325
|
};
|
|
326
|
+
// #4485: the choudoufu rung is not done until its stamp passed; retry that before any next rung.
|
|
327
|
+
if (found.kind === "choudoufu" && !opts.dryRun) {
|
|
328
|
+
const retried = await retryPendingStamp({ root, member: found.name, ...(opts.state ? { state: opts.state } : {}), ...(opts.json !== undefined ? { json: opts.json } : {}), ...(opts.runner ? { runner: opts.runner } : {}) });
|
|
329
|
+
if (retried) {
|
|
330
|
+
if (opts.json && !opts.nested)
|
|
331
|
+
console.log(JSON.stringify(retried, null, 2));
|
|
332
|
+
return retried;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
111
335
|
const rung = nextRung(found.kind);
|
|
112
336
|
if (!rung) {
|
|
113
337
|
say(formatInfo(`${found.name} is kind ${found.kind}, which has no rung above it on the ladder (terraform or other, choudoufu, chant)`));
|
|
114
338
|
return { outcome: "top-of-ladder", exitCode: 0, member: found.name, from: found.kind };
|
|
115
339
|
}
|
|
116
340
|
const member = { name: found.name, dir: found.dir === "." ? "" : found.dir };
|
|
117
|
-
|
|
341
|
+
// The staging runs in a worktree, so a relative --state would resolve there.
|
|
342
|
+
const state = opts.state ? resolve(opts.state) : undefined;
|
|
343
|
+
const steps = stagingRuns(rung, member, { ...opts, state });
|
|
344
|
+
const emitJson = opts.json && !opts.nested;
|
|
118
345
|
let repo;
|
|
119
|
-
let head;
|
|
120
346
|
try {
|
|
121
347
|
repo = git(root, ["rev-parse", "--show-toplevel"]).trim();
|
|
122
|
-
|
|
348
|
+
git(root, ["rev-parse", "HEAD"]);
|
|
123
349
|
}
|
|
124
350
|
catch {
|
|
125
351
|
throw new PromoteError("chant workspace promote stages its change in a git worktree, so the project must be in a git repository with at least one commit");
|
|
126
352
|
}
|
|
127
353
|
const projectRel = relative(repo, root).split(sep).join("/");
|
|
128
354
|
const declFile = declarationFile(root);
|
|
129
|
-
|
|
355
|
+
// The declaration is not watched: the kind change is written into the
|
|
356
|
+
// tree's declaration on apply, so another member's uncommitted promotion
|
|
357
|
+
// there does not block this one (#4461).
|
|
358
|
+
const inProject = (p) => [projectRel, p].filter(Boolean).join("/") || ".";
|
|
359
|
+
const watched = [inProject(member.dir), `:(exclude)${inProject(declFile)}`];
|
|
130
360
|
const dirty = git(repo, ["status", "--porcelain", "--untracked-files=all", "--", ...watched]).split("\n").filter(Boolean);
|
|
131
361
|
if (dirty.length > 0) {
|
|
132
362
|
throw new PromoteError(`${found.name} has uncommitted changes (${dirty.slice(0, 5).map((l) => l.slice(3)).join(", ")}). Commit them: promote stages from HEAD and applies its patch to the tree.`);
|
|
133
363
|
}
|
|
134
|
-
const
|
|
135
|
-
const worktree =
|
|
136
|
-
const dispose = () => {
|
|
137
|
-
try {
|
|
138
|
-
git(repo, ["worktree", "remove", "--force", worktree]);
|
|
139
|
-
}
|
|
140
|
-
catch {
|
|
141
|
-
// Fall through to the directory removal and a prune.
|
|
142
|
-
}
|
|
143
|
-
rmSync(holder, { recursive: true, force: true });
|
|
144
|
-
try {
|
|
145
|
-
git(repo, ["worktree", "prune"]);
|
|
146
|
-
}
|
|
147
|
-
catch {
|
|
148
|
-
// Nothing to prune.
|
|
149
|
-
}
|
|
150
|
-
};
|
|
364
|
+
const staging = openStaging(root);
|
|
365
|
+
const { worktree, project } = staging;
|
|
151
366
|
try {
|
|
152
|
-
git(repo, ["worktree", "add", "-q", "--detach", worktree, head]);
|
|
153
|
-
const project = projectRel ? join(worktree, projectRel) : worktree;
|
|
154
367
|
const ran = [];
|
|
155
|
-
|
|
368
|
+
let adoption;
|
|
369
|
+
let reportOutput;
|
|
370
|
+
for (const step of steps) {
|
|
156
371
|
const cwd = join(project, step.cwd);
|
|
157
372
|
mkdirSync(cwd, { recursive: true });
|
|
158
373
|
const result = await run(step.argv, cwd);
|
|
159
374
|
ran.push({ label: step.label, exitCode: result.exitCode });
|
|
160
375
|
if (!opts.json)
|
|
161
376
|
say(formatInfo(`${step.label}: exit ${result.exitCode}`));
|
|
377
|
+
if (step.label === REPORT_STEP) {
|
|
378
|
+
adoption = parseLiveImportReport(result.output);
|
|
379
|
+
// The report is what the gate asks a person to review, so it is shown, not only counted.
|
|
380
|
+
if (result.exitCode === 0 && result.output.trim())
|
|
381
|
+
say(result.output.trimEnd());
|
|
382
|
+
}
|
|
162
383
|
if (result.exitCode !== 0) {
|
|
163
|
-
|
|
384
|
+
const tail = result.output.trimEnd().split("\n").slice(-20).join("\n");
|
|
385
|
+
say(formatError({ message: `${step.label} failed in the staging worktree`, hint: tail }));
|
|
164
386
|
say(formatError({ message: "the promotion was not gated: its checks must pass first. The tree is unchanged." }));
|
|
165
|
-
if (
|
|
166
|
-
console.log(JSON.stringify({ outcome: "checks-failed", member: found.name, ran }, null, 2));
|
|
167
|
-
return { outcome: "checks-failed", exitCode: 1, member: found.name, from: rung.from, to: rung.to, ran };
|
|
387
|
+
if (emitJson)
|
|
388
|
+
console.log(JSON.stringify({ outcome: "checks-failed", member: found.name, from: rung.from, to: rung.to, ran, ...(adoption ? { adoption } : {}), failed: { label: step.label, output: tail } }, null, 2));
|
|
389
|
+
return { outcome: "checks-failed", exitCode: 1, member: found.name, from: rung.from, to: rung.to, ran, ...(adoption ? { adoption } : {}), failureOutput: tail };
|
|
168
390
|
}
|
|
391
|
+
if (step.report)
|
|
392
|
+
reportOutput = result.output;
|
|
169
393
|
}
|
|
394
|
+
const reportDigest = reportOutput === undefined ? undefined : contentDigest(reportOutput.trimEnd());
|
|
395
|
+
const declRel = inProject(declFile);
|
|
396
|
+
// What the staging wrote outside the declaration: the hunks the apply
|
|
397
|
+
// carries. The kind change is described by from and to. The providers
|
|
398
|
+
// `choudoufu init` installed under `.terraform/` are never part of it.
|
|
399
|
+
git(worktree, ["add", "-A", "--", ".", ...NOT_STAGED]);
|
|
400
|
+
const memberPatch = git(worktree, ["diff", "--cached", "--binary", "HEAD", "--", ".", `:(exclude)${declRel}`]);
|
|
170
401
|
const declPath = join(project, declFile);
|
|
171
402
|
writeFileSync(declPath, setMemberKind(readFileSync(declPath, "utf-8"), declFile, found.name, rung.to));
|
|
172
|
-
git(worktree, ["add", "-A"]);
|
|
403
|
+
git(worktree, ["add", "-A", "--", ".", ...NOT_STAGED]);
|
|
173
404
|
const patch = git(worktree, ["diff", "--cached", "--binary", "HEAD"]);
|
|
174
|
-
const digest = computePlanDigest(PROMOTE_PLAN_KIND, {
|
|
175
|
-
|
|
405
|
+
const digest = computePlanDigest(PROMOTE_PLAN_KIND, {
|
|
406
|
+
member: found.name,
|
|
407
|
+
from: rung.from,
|
|
408
|
+
to: rung.to,
|
|
409
|
+
patch: memberPatch,
|
|
410
|
+
...(reportDigest ? { report: reportDigest } : {}),
|
|
411
|
+
});
|
|
412
|
+
const base = {
|
|
413
|
+
outcome: "dry-run",
|
|
414
|
+
exitCode: 0,
|
|
415
|
+
member: found.name,
|
|
416
|
+
from: rung.from,
|
|
417
|
+
to: rung.to,
|
|
418
|
+
digest,
|
|
419
|
+
patch,
|
|
420
|
+
ran,
|
|
421
|
+
...(reportDigest ? { reportDigest } : {}),
|
|
422
|
+
...(adoption ? { adoption } : {}),
|
|
423
|
+
};
|
|
176
424
|
const report = (outcome, exitCode, extra = {}) => {
|
|
177
|
-
if (
|
|
178
|
-
console.log(JSON.stringify({ outcome, member: found.name, from: rung.from, to: rung.to, digest, ran, ...extra }, null, 2));
|
|
179
|
-
return { ...base, outcome, exitCode };
|
|
425
|
+
if (emitJson)
|
|
426
|
+
console.log(JSON.stringify({ outcome, member: found.name, from: rung.from, to: rung.to, digest, ...(reportDigest ? { reportDigest } : {}), ran, ...(adoption ? { adoption } : {}), ...extra }, null, 2));
|
|
427
|
+
return { ...base, outcome, exitCode, ...extra };
|
|
180
428
|
};
|
|
181
|
-
say(formatInfo(`${found.name}: ${rung.from} to ${rung.to}, patch ${digest}`));
|
|
429
|
+
say(formatInfo(`${found.name}: ${rung.from} to ${rung.to}, patch ${digest}${reportDigest ? `, live-import report ${reportDigest}` : ""}`));
|
|
182
430
|
if (opts.output)
|
|
183
431
|
writeFileSync(resolve(opts.output), patch);
|
|
184
432
|
if (opts.dryRun) {
|
|
@@ -188,7 +436,7 @@ export async function promoteCommand(opts) {
|
|
|
188
436
|
const check = await evaluateGate(opts.ledger ?? gitGateLedgerPort({ cwd: repo }), {
|
|
189
437
|
op: WORKSPACE_PROMOTE_GATE_OP,
|
|
190
438
|
gate: found.name,
|
|
191
|
-
description: `promote ${found.name} from ${rung.from} to ${rung.to}`,
|
|
439
|
+
description: `promote ${found.name} from ${rung.from} to ${rung.to}${reportDigest ? ` (live-import report ${reportDigest})` : ""}`,
|
|
192
440
|
planDigest: digest,
|
|
193
441
|
...(opts.now ? { now: opts.now } : {}),
|
|
194
442
|
});
|
|
@@ -205,38 +453,76 @@ export async function promoteCommand(opts) {
|
|
|
205
453
|
}
|
|
206
454
|
return report("gated", PROMOTE_GATED_EXIT, { pending: check.pending });
|
|
207
455
|
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
const file = join(patchDir, "promote.patch");
|
|
211
|
-
writeFileSync(file, patch);
|
|
456
|
+
if (memberPatch.trim()) {
|
|
457
|
+
const patchDir = mkdtempSync(join(tmpdir(), "chant-promote-patch-"));
|
|
212
458
|
try {
|
|
213
|
-
|
|
459
|
+
const file = join(patchDir, "promote.patch");
|
|
460
|
+
writeFileSync(file, memberPatch);
|
|
461
|
+
try {
|
|
462
|
+
git(repo, ["apply", "--binary", "--whitespace=nowarn", file]);
|
|
463
|
+
}
|
|
464
|
+
catch (err) {
|
|
465
|
+
const stderr = err.stderr?.toString().trim();
|
|
466
|
+
throw new PromoteError(`the approved patch no longer applies to the tree${stderr ? `: ${stderr}` : ""}`);
|
|
467
|
+
}
|
|
214
468
|
}
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
throw new PromoteError(`the approved patch no longer applies to the tree${stderr ? `: ${stderr}` : ""}`);
|
|
469
|
+
finally {
|
|
470
|
+
rmSync(patchDir, { recursive: true, force: true });
|
|
218
471
|
}
|
|
219
472
|
}
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
if (
|
|
227
|
-
|
|
228
|
-
return report("applied", 1, { followUpFailed: step.label });
|
|
473
|
+
const treeDecl = join(root, declFile);
|
|
474
|
+
writeFileSync(treeDecl, setMemberKind(readFileSync(treeDecl, "utf-8"), declFile, found.name, rung.to));
|
|
475
|
+
let followUpOutput;
|
|
476
|
+
if (rung.to === "choudoufu") {
|
|
477
|
+
// In the staging's member directory, where `choudoufu init` installed the providers (chant#4492).
|
|
478
|
+
const stamped = await stampMember({ root, cwd: join(project, member.dir), member, state, run, ran, say });
|
|
479
|
+
if (stamped.exitCode !== 0) {
|
|
480
|
+
return report("applied", 1, { followUpFailed: stamped.followUpFailed, failureOutput: stamped.failureOutput, followUpOutput: stamped.followUpOutput });
|
|
229
481
|
}
|
|
482
|
+
followUpOutput = stamped.followUpOutput;
|
|
230
483
|
}
|
|
231
484
|
say(formatSuccess(`applied the approved promotion of "${found.name}" to ${rung.to} (${digest}). Review and commit it.`));
|
|
232
|
-
return report("applied", 0);
|
|
485
|
+
return report("applied", 0, followUpOutput === undefined ? {} : { followUpOutput });
|
|
233
486
|
}
|
|
234
487
|
finally {
|
|
235
|
-
dispose();
|
|
488
|
+
staging.dispose();
|
|
236
489
|
}
|
|
237
490
|
}
|
|
238
491
|
export async function runWorkspacePromote(ctx) {
|
|
239
492
|
const { args } = ctx;
|
|
493
|
+
const mapped = (args.statePaths ?? []).some((s) => s.includes("="));
|
|
494
|
+
if (args.all || args.stateDir || args.waveSize !== undefined || mapped) {
|
|
495
|
+
// #4461: a workspace of roots, in waves.
|
|
496
|
+
if (args.extraPositional) {
|
|
497
|
+
console.error(formatError({ message: "promote --all takes no member: name roots with --state <member>=<path>, the canary with --canary <member>", hint: USAGE }));
|
|
498
|
+
return 1;
|
|
499
|
+
}
|
|
500
|
+
if (args.output || args.lexicon) {
|
|
501
|
+
console.error(formatError({ message: "--output and --lexicon promote one member; promote --all adopts terraform roots into choudoufu and writes no patch file", hint: USAGE }));
|
|
502
|
+
return 1;
|
|
503
|
+
}
|
|
504
|
+
try {
|
|
505
|
+
const { parseStateMappings, promoteWavesCommand } = await import("./promote-waves.js");
|
|
506
|
+
const result = await promoteWavesCommand({
|
|
507
|
+
root: process.cwd(),
|
|
508
|
+
all: args.all,
|
|
509
|
+
states: parseStateMappings(args.statePaths ?? []),
|
|
510
|
+
stateDir: args.stateDir,
|
|
511
|
+
canary: args.canary,
|
|
512
|
+
waveSize: args.waveSize,
|
|
513
|
+
dryRun: args.dryRun,
|
|
514
|
+
json: args.json,
|
|
515
|
+
});
|
|
516
|
+
return result.exitCode;
|
|
517
|
+
}
|
|
518
|
+
catch (err) {
|
|
519
|
+
if (err instanceof PromoteError) {
|
|
520
|
+
console.error(formatError({ message: err.message, hint: USAGE }));
|
|
521
|
+
return 1;
|
|
522
|
+
}
|
|
523
|
+
throw err;
|
|
524
|
+
}
|
|
525
|
+
}
|
|
240
526
|
if (!args.extraPositional || args.extraPositional2) {
|
|
241
527
|
console.error(formatError({ message: "promote takes exactly one member", hint: USAGE }));
|
|
242
528
|
return 1;
|
|
@@ -48,11 +48,18 @@ export declare const REASONS: {
|
|
|
48
48
|
readonly "environment-unknown": "--env names an environment the project's chant config does not declare.";
|
|
49
49
|
readonly "snapshot-unavailable": "--snapshot names a snapshot chant can't replay: none is recorded for the environment, or the ref is one replay does not take.";
|
|
50
50
|
readonly "build-failed": "The project's build, or one of its build roots, failed, so the graph search would answer over is incomplete.";
|
|
51
|
+
readonly "index-unavailable": "--index names an index version chant can't read: none is recorded under the scope key in the store, or its stamp is not the scope or version asked for.";
|
|
51
52
|
readonly "snapshot-at-revision": "workspace search was given --snapshot and --at: a snapshot replays the estate as recorded over the source in the working tree, not at a revision.";
|
|
52
53
|
readonly "member-chant-too-old": "The member's chant predates the document asked for: it has no such command, or prints it without the read contract.";
|
|
53
54
|
readonly "lexicon-has-no-mapping": "The lexicon ships no capability mapping, so no capability rule can read its resources.";
|
|
54
55
|
readonly "capability-not-derivable": "The lexicon's capability mapping labels none of the kinds the capability's rule needs.";
|
|
55
56
|
readonly "lexicon-not-loaded": "The lexicon isn't installed where the chant that wrote the catalog runs, so its mapping wasn't read.";
|
|
57
|
+
readonly "instances-each-value": "The block's count or for_each reads each.value or each.key, which only a plan can count.";
|
|
58
|
+
readonly "instances-merge": "The block's count or for_each calls merge(), which the declared graph does not evaluate.";
|
|
59
|
+
readonly "instances-value-unknown": "The block's count or for_each is a form the graph reads, and the files a plan reads give it no value, or one that keys no instances.";
|
|
60
|
+
readonly "instances-form-unread": "The block's count or for_each is an expression the graph does not read: another function, a for expression, another conditional, arithmetic, or a resource, data or module attribute.";
|
|
61
|
+
readonly "instances-over-limit": "The block would have more than 256 instance nodes, so it is drawn alone.";
|
|
62
|
+
readonly "instances-module-uncounted": "The block is under an expanded module call whose count or for_each the graph cannot count, so none of its instance ids is known.";
|
|
56
63
|
readonly "ledger-unreadable": "Reading the ledger failed, so nothing from it is listed.";
|
|
57
64
|
readonly "ledger-malformed": "Some lines of the ledger aren't release records; the rest are listed.";
|
|
58
65
|
readonly "filter-invalid": "A --where or --since names a field the read doesn't have, an operator its type doesn't take, or a value not of its type; nothing was read.";
|
|
@@ -324,6 +331,11 @@ export declare const REASONS: {
|
|
|
324
331
|
readonly "chant-dependency": "The member's package.json still has a chant dependency, or a script that calls chant.";
|
|
325
332
|
readonly "chant-in-ci": "A CI file of the exited member still calls chant.";
|
|
326
333
|
readonly "declaration-not-other": "The declaration still gives the exited member a kind other than other.";
|
|
334
|
+
readonly "member-required": "workspace drift was given no --member, or more than one: it reads one member.";
|
|
335
|
+
readonly "no-drift-read": "The member's kind has no drift read, such as other, app or a nested workspace.";
|
|
336
|
+
readonly "read-unsupported": "--read names a read the member's engine does not answer, such as state on a chant member.";
|
|
337
|
+
readonly "resource-unsupported": "--resource was given for an engine that cannot read one resource on its own.";
|
|
338
|
+
readonly "env-required": "A chant member's live drift read needs an environment, and --env was not given.";
|
|
327
339
|
};
|
|
328
340
|
export type ReasonCode = keyof typeof REASONS;
|
|
329
341
|
/** Every code, in the order of {@link REASONS}. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reason-codes.d.ts","sourceRoot":"","sources":["../../src/workspace/reason-codes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reason-codes.d.ts","sourceRoot":"","sources":["../../src/workspace/reason-codes.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,12 +54,20 @@ export const REASONS = {
|
|
|
54
54
|
"environment-unknown": "--env names an environment the project's chant config does not declare.",
|
|
55
55
|
"snapshot-unavailable": "--snapshot names a snapshot chant can't replay: none is recorded for the environment, or the ref is one replay does not take.",
|
|
56
56
|
"build-failed": "The project's build, or one of its build roots, failed, so the graph search would answer over is incomplete.",
|
|
57
|
+
"index-unavailable": "--index names an index version chant can't read: none is recorded under the scope key in the store, or its stamp is not the scope or version asked for.",
|
|
57
58
|
"snapshot-at-revision": "workspace search was given --snapshot and --at: a snapshot replays the estate as recorded over the source in the working tree, not at a revision.",
|
|
58
59
|
"member-chant-too-old": "The member's chant predates the document asked for: it has no such command, or prints it without the read contract.",
|
|
59
60
|
// the capabilities catalog (#4375): why a lexicon can't supply a capability.
|
|
60
61
|
"lexicon-has-no-mapping": "The lexicon ships no capability mapping, so no capability rule can read its resources.",
|
|
61
62
|
"capability-not-derivable": "The lexicon's capability mapping labels none of the kinds the capability's rule needs.",
|
|
62
63
|
"lexicon-not-loaded": "The lexicon isn't installed where the chant that wrote the catalog runs, so its mapping wasn't read.",
|
|
64
|
+
// Why the graph leaves an expanded terraform block as one node (graph, #4489): nodes[].instanceRollup.code.
|
|
65
|
+
"instances-each-value": "The block's count or for_each reads each.value or each.key, which only a plan can count.",
|
|
66
|
+
"instances-merge": "The block's count or for_each calls merge(), which the declared graph does not evaluate.",
|
|
67
|
+
"instances-value-unknown": "The block's count or for_each is a form the graph reads, and the files a plan reads give it no value, or one that keys no instances.",
|
|
68
|
+
"instances-form-unread": "The block's count or for_each is an expression the graph does not read: another function, a for expression, another conditional, arithmetic, or a resource, data or module attribute.",
|
|
69
|
+
"instances-over-limit": "The block would have more than 256 instance nodes, so it is drawn alone.",
|
|
70
|
+
"instances-module-uncounted": "The block is under an expanded module call whose count or for_each the graph cannot count, so none of its instance ids is known.",
|
|
63
71
|
// A ledger status can't fully read.
|
|
64
72
|
"ledger-unreadable": "Reading the ledger failed, so nothing from it is listed.",
|
|
65
73
|
"ledger-malformed": "Some lines of the ledger aren't release records; the rest are listed.",
|
|
@@ -387,6 +395,12 @@ export const REASONS = {
|
|
|
387
395
|
"chant-dependency": "The member's package.json still has a chant dependency, or a script that calls chant.",
|
|
388
396
|
"chant-in-ci": "A CI file of the exited member still calls chant.",
|
|
389
397
|
"declaration-not-other": "The declaration still gives the exited member a kind other than other.",
|
|
398
|
+
// workspace drift (behold#995): why a member's drift read could not run. records is then empty.
|
|
399
|
+
"member-required": "workspace drift was given no --member, or more than one: it reads one member.",
|
|
400
|
+
"no-drift-read": "The member's kind has no drift read, such as other, app or a nested workspace.",
|
|
401
|
+
"read-unsupported": "--read names a read the member's engine does not answer, such as state on a chant member.",
|
|
402
|
+
"resource-unsupported": "--resource was given for an engine that cannot read one resource on its own.",
|
|
403
|
+
"env-required": "A chant member's live drift read needs an environment, and --env was not given.",
|
|
390
404
|
};
|
|
391
405
|
/** Every code, in the order of {@link REASONS}. */
|
|
392
406
|
export const REASON_CODES = Object.keys(REASONS);
|