@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
|
@@ -0,0 +1,542 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One drift record across engines (#4450, #4451).
|
|
3
|
+
*
|
|
4
|
+
* Drift had four vocabularies for one question: the converge observers'
|
|
5
|
+
* `in-sync | drifted | unknown` (`./lifecycle/symptoms.ts`), component
|
|
6
|
+
* status's `reconciled | unrecorded | stale | drifted | unknown`
|
|
7
|
+
* (`./lifecycle/status.ts`), the graph overlay's tones, and the live diff's
|
|
8
|
+
* buckets (`./lifecycle/live-diff.ts`). A renderer colouring a terraform, a
|
|
9
|
+
* choudoufu and a chant member side by side had to know all four, and behold
|
|
10
|
+
* read choudoufu's documents itself. This module is the one shape they all
|
|
11
|
+
* become: a {@link DriftRecord} per resource instance, and a
|
|
12
|
+
* {@link DriftDocument} (`drift: "v1"`) that holds them. Its schema is
|
|
13
|
+
* `./workspace/drift.schema.json`, `$id` {@link DRIFT_SCHEMA_ID}.
|
|
14
|
+
*
|
|
15
|
+
* A record says which read answered (`read`) and what it found (`status`).
|
|
16
|
+
* The two travel together because they are different claims: a `state` read
|
|
17
|
+
* says what the last apply recorded and can never say the account matches,
|
|
18
|
+
* so {@link driftRecord} refuses a state read whose status is anything but
|
|
19
|
+
* `recorded`, `pending` or `not-observed`. Every record goes through that
|
|
20
|
+
* constructor, so the rule holds for every adapter, and for a document read
|
|
21
|
+
* back with {@link parseDriftDocument}.
|
|
22
|
+
*
|
|
23
|
+
* `not-observed` is never absence. It always carries a reason from the
|
|
24
|
+
* observation contract's closed list (`./observation.ts`), and
|
|
25
|
+
* `not-reached` is the reason a stream gives an address it expected and
|
|
26
|
+
* never heard about ({@link driftSettle}).
|
|
27
|
+
*
|
|
28
|
+
* ## Redaction
|
|
29
|
+
*
|
|
30
|
+
* An attribute the planner marked sensitive keeps its path and loses both
|
|
31
|
+
* values (`sensitive: true`), as the change set spells it
|
|
32
|
+
* (`./change-set.ts`). A second pass redacts any path with a segment
|
|
33
|
+
* {@link isSensitiveKey} names, whatever the planner said, so an engine
|
|
34
|
+
* that marks nothing still never ships a `password` value. Values are
|
|
35
|
+
* optional: a card needs only the names.
|
|
36
|
+
*
|
|
37
|
+
* ## Not digest-bound
|
|
38
|
+
*
|
|
39
|
+
* A drift read authorizes nothing and goes stale on the next read, so a
|
|
40
|
+
* record is ephemeral. {@link driftDocumentDigest} exists for one case, a
|
|
41
|
+
* WatchOp writing its document into its own run ledger as evidence, and
|
|
42
|
+
* leaves out `observedAt` and `evidence`, which change on every read.
|
|
43
|
+
*
|
|
44
|
+
* ## Adapters
|
|
45
|
+
*
|
|
46
|
+
* The chant ones are here: `lifecycle diff --live` ({@link liveDiffDriftRecords}),
|
|
47
|
+
* deep observe ({@link deepDiffDriftRecords}, {@link mergeDeepDrift}) and
|
|
48
|
+
* component status ({@link componentStatusDriftRecords}). The terraform and
|
|
49
|
+
* choudoufu ones live in the terraform lexicon's `drift-record` subpath,
|
|
50
|
+
* beside its readers, and the Pulumi one (`refresh --preview-only`, #4453)
|
|
51
|
+
* in the pulumi lexicon's.
|
|
52
|
+
*
|
|
53
|
+
* ## The graph and the rollup
|
|
54
|
+
*
|
|
55
|
+
* A record's `node` and `instanceOf` come from the change set's own rule
|
|
56
|
+
* (`graphNodeFor`, #4454), and a block's status from core's one rollup
|
|
57
|
+
* (`rollupInstances`) over {@link DRIFT_INSTANCE_ROLLUP}. Neither is
|
|
58
|
+
* written a second time here.
|
|
59
|
+
*
|
|
60
|
+
* ## The import graph
|
|
61
|
+
*
|
|
62
|
+
* This module ships in the change-set bundle (`change-set-bundle.test.ts`,
|
|
63
|
+
* #3421): at run time it imports the plan digest, the observation
|
|
64
|
+
* contract's reason list, the change-set graph's node rule, the instance
|
|
65
|
+
* rollup and the sensitive-key list, and types only otherwise.
|
|
66
|
+
*/
|
|
67
|
+
import { type ChangeSetGraphNodes } from "./change-set-graph.js";
|
|
68
|
+
import type { ChangeSetPlanner } from "./change-set.js";
|
|
69
|
+
import type { DeepDiffResult } from "./lifecycle/deep-diff.js";
|
|
70
|
+
import type { LiveDiffResult } from "./lifecycle/live-diff.js";
|
|
71
|
+
import type { ComponentStatusRow } from "./lifecycle/status.js";
|
|
72
|
+
import { type UnobservedReason } from "./observation.js";
|
|
73
|
+
/** The schema a drift document names in `$schema`. */
|
|
74
|
+
export declare const DRIFT_SCHEMA_ID = "https://intentius.io/chant/schemas/workspace/drift/v1/drift.schema.json";
|
|
75
|
+
/** The document's version. */
|
|
76
|
+
export declare const DRIFT_VERSION = "v1";
|
|
77
|
+
/**
|
|
78
|
+
* Which engine read the resource: a change-set planner (`pulumi` among them
|
|
79
|
+
* since #4453), or plunge, which has no planner of its own. A plunge
|
|
80
|
+
* address is a Pulumi URN, so a plunge record is placed on the graph by the
|
|
81
|
+
* `pulumi` planner's rule ({@link driftPlanner}).
|
|
82
|
+
*/
|
|
83
|
+
export type DriftEngine = ChangeSetPlanner | "plunge";
|
|
84
|
+
/** The planner whose node rule places an engine's records: plunge's URNs go by `pulumi`'s (#4453). */
|
|
85
|
+
export declare function driftPlanner(engine: DriftEngine): ChangeSetPlanner;
|
|
86
|
+
/** Every engine, in the order the schema lists them. */
|
|
87
|
+
export declare const DRIFT_ENGINES: readonly DriftEngine[];
|
|
88
|
+
/**
|
|
89
|
+
* Which read answered.
|
|
90
|
+
*
|
|
91
|
+
* - `state` — the engine's state file: what the last apply recorded.
|
|
92
|
+
* - `plan` — a plan: what the next apply would do, after a refresh.
|
|
93
|
+
* - `refresh` — a refresh preview (Pulumi's `refresh --preview-only`).
|
|
94
|
+
* - `live-read` — chant's own read of the provider.
|
|
95
|
+
* - `ownership` — an ownership read (choudoufu's `live-plan` and `live-ls`),
|
|
96
|
+
* which says who holds each object and not what its attributes are.
|
|
97
|
+
*/
|
|
98
|
+
export type DriftRead = "state" | "plan" | "refresh" | "live-read" | "ownership";
|
|
99
|
+
/** Every read, in the order the schema lists them. */
|
|
100
|
+
export declare const DRIFT_READS: readonly DriftRead[];
|
|
101
|
+
/**
|
|
102
|
+
* What the read found.
|
|
103
|
+
*
|
|
104
|
+
* - `in-sync` — present, and nothing the read compares differs.
|
|
105
|
+
* - `drifted` — present, and something differs; `attributes` says what.
|
|
106
|
+
* - `pending` — declared and confirmed absent, never deployed.
|
|
107
|
+
* - `missing` — recorded or deployed, and now gone.
|
|
108
|
+
* - `unclaimed` — something live sits at a declared identity and does not
|
|
109
|
+
* carry this member's marker: adoptable, or held by someone else.
|
|
110
|
+
* - `undeclared` — live or recorded, and the member does not declare it.
|
|
111
|
+
* - `runtime` — live, undeclared, and expected: a controller's child.
|
|
112
|
+
* - `recorded` — in the engine's state. The only presence a state read gives.
|
|
113
|
+
* - `not-observed` — the read could not say; `unobserved` says why.
|
|
114
|
+
*/
|
|
115
|
+
export type DriftStatus = "in-sync" | "drifted" | "pending" | "missing" | "unclaimed" | "undeclared" | "runtime" | "recorded" | "not-observed";
|
|
116
|
+
/** Every status, in the order the schema lists them. */
|
|
117
|
+
export declare const DRIFT_STATUSES: readonly DriftStatus[];
|
|
118
|
+
/** The only statuses a `state` read may give. It never says in-sync or drifted. */
|
|
119
|
+
export declare const STATE_READ_STATUSES: readonly DriftStatus[];
|
|
120
|
+
/** Who an ownership facet says holds the object. */
|
|
121
|
+
export type DriftOwnershipVerdict = "owned" | "foreign" | "adoptable" | "unknown";
|
|
122
|
+
/** Every ownership verdict. */
|
|
123
|
+
export declare const DRIFT_OWNERSHIP_VERDICTS: readonly DriftOwnershipVerdict[];
|
|
124
|
+
/** What the ownership verdict rests on. */
|
|
125
|
+
export type DriftOwnershipBy = "marker" | "derived" | "record" | "cache" | "state" | "label";
|
|
126
|
+
/** Every ownership basis. */
|
|
127
|
+
export declare const DRIFT_OWNERSHIP_BY: readonly DriftOwnershipBy[];
|
|
128
|
+
/**
|
|
129
|
+
* One attribute that differs. `before` is what was expected (the record, the
|
|
130
|
+
* snapshot, the declaration) and `after` what the read found. A path in the
|
|
131
|
+
* plan-observation grammar: keys joined with `.`, indexes and keys that are
|
|
132
|
+
* not identifiers in brackets (`tags["kubernetes.io/role"]`).
|
|
133
|
+
*/
|
|
134
|
+
export interface DriftAttribute {
|
|
135
|
+
path: string;
|
|
136
|
+
before?: unknown;
|
|
137
|
+
after?: unknown;
|
|
138
|
+
/** The planner marked it sensitive, or its name looks secret-bearing, so neither value is carried. */
|
|
139
|
+
sensitive?: true;
|
|
140
|
+
}
|
|
141
|
+
/** Why a record is `not-observed`. */
|
|
142
|
+
export interface DriftUnobserved {
|
|
143
|
+
reason: UnobservedReason;
|
|
144
|
+
detail?: string;
|
|
145
|
+
/** The address the read was issued against, when the engine reported one. */
|
|
146
|
+
queried?: string;
|
|
147
|
+
}
|
|
148
|
+
/** Who holds the object, from an ownership read. */
|
|
149
|
+
export interface DriftOwnership {
|
|
150
|
+
verdict: DriftOwnershipVerdict;
|
|
151
|
+
by?: DriftOwnershipBy;
|
|
152
|
+
/** The marker was read off the object itself, not derived or remembered. */
|
|
153
|
+
markerOnObject?: boolean;
|
|
154
|
+
/** The estate, stack or controller that does hold it, when not this member. */
|
|
155
|
+
ownedBy?: string;
|
|
156
|
+
/** The address an adoption would write onto the object. */
|
|
157
|
+
adopt?: string;
|
|
158
|
+
}
|
|
159
|
+
/** What produced the record. */
|
|
160
|
+
export interface DriftEvidence {
|
|
161
|
+
tool: string;
|
|
162
|
+
version?: string;
|
|
163
|
+
command?: string;
|
|
164
|
+
/** The engine's own token for the verdict (`UNOWNED`, `NEEDS_DISCOVERY`, `ABSENT`), so a pane can show it. */
|
|
165
|
+
engineCode?: string;
|
|
166
|
+
}
|
|
167
|
+
export interface DriftRecord {
|
|
168
|
+
member: string;
|
|
169
|
+
engine: DriftEngine;
|
|
170
|
+
/** The engine's own address, at instance level: `aws_eip.pool[0]`, a Pulumi URN, a chant entity name. */
|
|
171
|
+
address: string;
|
|
172
|
+
/** The resource type, when the read reports one. Not `type`, which a stream line uses for its kind. */
|
|
173
|
+
resourceType?: string;
|
|
174
|
+
/**
|
|
175
|
+
* The graph node, by the change set's mapping rules (`graphNodeFor` in
|
|
176
|
+
* `./change-set-graph.ts`, {@link mapDriftToGraph}): for an instance of a
|
|
177
|
+
* `count` or `for_each` block the instance node, `<blockNode>[0]` or
|
|
178
|
+
* `<blockNode>["a"]`, and the block node otherwise. Null when the graph
|
|
179
|
+
* holds none. A Pulumi URN's node is `<member>/<key>` by the URN rule
|
|
180
|
+
* (#4456), and a plunge URN's by the same rule (#4453).
|
|
181
|
+
*/
|
|
182
|
+
node: string | null;
|
|
183
|
+
/** On a record whose `node` is an instance node (#4454): the block node it is an instance of, the rollup. */
|
|
184
|
+
instanceOf?: string;
|
|
185
|
+
/** RFC 3339. Per record, because a stream's rows finish at different times. */
|
|
186
|
+
observedAt: string;
|
|
187
|
+
read: DriftRead;
|
|
188
|
+
/**
|
|
189
|
+
* The read that was asked for and failed, when this one answered instead:
|
|
190
|
+
* what `RootRead.depth` holds (`"plan"`, `"live+plan"`) on a root whose
|
|
191
|
+
* `RootRead.fellBackTo` is set (`./observation.ts`).
|
|
192
|
+
*/
|
|
193
|
+
fellBackFrom?: string;
|
|
194
|
+
status: DriftStatus;
|
|
195
|
+
/** Set exactly when `status` is `not-observed`. */
|
|
196
|
+
unobserved?: DriftUnobserved;
|
|
197
|
+
/** What differs. Only on `drifted`. */
|
|
198
|
+
attributes?: DriftAttribute[];
|
|
199
|
+
/**
|
|
200
|
+
* Presence is known and the attributes are not: a deep read that failed
|
|
201
|
+
* for an entity the thin read found. On `in-sync` and `drifted` only.
|
|
202
|
+
*/
|
|
203
|
+
attributesUnobserved?: DriftUnobserved;
|
|
204
|
+
ownership?: DriftOwnership;
|
|
205
|
+
evidence: DriftEvidence;
|
|
206
|
+
}
|
|
207
|
+
/** Counts per status, every status present. */
|
|
208
|
+
export type DriftCounts = Record<DriftStatus, number>;
|
|
209
|
+
export interface DriftDocument {
|
|
210
|
+
$schema: typeof DRIFT_SCHEMA_ID;
|
|
211
|
+
drift: typeof DRIFT_VERSION;
|
|
212
|
+
/** The chant that wrote it, when known. */
|
|
213
|
+
chant?: string;
|
|
214
|
+
/** Sorted by member, address and read. One per `(member, address, read)`. */
|
|
215
|
+
records: DriftRecord[];
|
|
216
|
+
counts: DriftCounts;
|
|
217
|
+
}
|
|
218
|
+
/** Which rule a refused record broke. */
|
|
219
|
+
export type DriftRecordRule = "shape" | "state-read-status" | "unobserved-reason" | "unobserved-on-observed" | "attributes-status" | "attributes-unobserved-status";
|
|
220
|
+
/** A record {@link driftRecord} refused, naming the record and the rule. */
|
|
221
|
+
export declare class DriftRecordError extends Error {
|
|
222
|
+
readonly rule: DriftRecordRule;
|
|
223
|
+
constructor(rule: DriftRecordRule, message: string);
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* The key segments of an attribute path, indexes left out:
|
|
227
|
+
* `spec.env[0]["db_password"]` is `spec`, `env`, `db_password`. A keyed
|
|
228
|
+
* element (`Tags[#api-token-owner].Value`, the deep read's address for an
|
|
229
|
+
* array it can key) is a key too: it names the element the way a map key
|
|
230
|
+
* does, so an environment list keyed by `DB_PASSWORD` redacts like a map's.
|
|
231
|
+
*/
|
|
232
|
+
export declare function attributePathKeys(path: string): string[];
|
|
233
|
+
/**
|
|
234
|
+
* One attribute, redacted: the planner's mark first, then any key segment
|
|
235
|
+
* {@link isSensitiveKey} names. A redacted attribute is `{ path, sensitive:
|
|
236
|
+
* true }` and nothing else.
|
|
237
|
+
*/
|
|
238
|
+
export declare function redactDriftAttribute(attribute: DriftAttribute): DriftAttribute;
|
|
239
|
+
/**
|
|
240
|
+
* Build one record, or refuse it. Every adapter and every reader goes
|
|
241
|
+
* through here, so these hold for every record that exists:
|
|
242
|
+
*
|
|
243
|
+
* - a `state` read's status is `recorded`, `pending` or `not-observed`;
|
|
244
|
+
* - `not-observed` carries `unobserved` with a legal reason, and no other
|
|
245
|
+
* status carries it;
|
|
246
|
+
* - `attributes` appear only on `drifted`, sorted by path, one per path,
|
|
247
|
+
* and redacted ({@link redactDriftAttribute});
|
|
248
|
+
* - `attributesUnobserved` appears only on `in-sync` or `drifted`.
|
|
249
|
+
*
|
|
250
|
+
* A refusal is a {@link DriftRecordError} naming the member, the address,
|
|
251
|
+
* the read and the status.
|
|
252
|
+
*/
|
|
253
|
+
export declare function driftRecord(input: DriftRecord): DriftRecord;
|
|
254
|
+
/** Read one record from parsed JSON. The same checks as {@link driftRecord}. */
|
|
255
|
+
export declare function parseDriftRecord(value: unknown): DriftRecord;
|
|
256
|
+
/** Counts per status, zero included. */
|
|
257
|
+
export declare function countDriftStatuses(records: Iterable<Pick<DriftRecord, "status">>): DriftCounts;
|
|
258
|
+
export interface DriftDocumentOptions {
|
|
259
|
+
/** The chant version to record in `chant`. */
|
|
260
|
+
chant?: string;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Join records into one document. A later record for the same `(member,
|
|
264
|
+
* address, read)` replaces the earlier one, as a stream's later line does.
|
|
265
|
+
* Records are sorted by member, address and read. Every record is checked
|
|
266
|
+
* with {@link driftRecord}.
|
|
267
|
+
*/
|
|
268
|
+
export declare function driftDocument(records: Iterable<DriftRecord>, options?: DriftDocumentOptions): DriftDocument;
|
|
269
|
+
/** Read a document from parsed JSON, checking every record. Counts are recomputed. */
|
|
270
|
+
export declare function parseDriftDocument(value: unknown): DriftDocument;
|
|
271
|
+
/**
|
|
272
|
+
* The document's digest, for a WatchOp that keeps its document as evidence
|
|
273
|
+
* in its own run ledger: `computePlanDigest("drift-document", …)` over the
|
|
274
|
+
* records sorted as {@link driftDocument} sorts them, without `observedAt`
|
|
275
|
+
* and `evidence`, which change on every read. No gate binds it.
|
|
276
|
+
*/
|
|
277
|
+
export declare function driftDocumentDigest(doc: Pick<DriftDocument, "records">): string;
|
|
278
|
+
/**
|
|
279
|
+
* The precedence a block's instance records roll up in, most significant
|
|
280
|
+
* first, for core's one rollup (`rollupInstances` in `./instance-nodes.ts`,
|
|
281
|
+
* #4454). Partial knowledge is not knowledge, so one not-observed instance
|
|
282
|
+
* makes the block not-observed, as `TERRAFORM_INSTANCE_ROLLUP` puts
|
|
283
|
+
* `unobserved` first. A difference outranks an absence, an absence
|
|
284
|
+
* outranks agreement, and `runtime` is last because a controller's children
|
|
285
|
+
* never decide a block.
|
|
286
|
+
*/
|
|
287
|
+
export declare const DRIFT_INSTANCE_ROLLUP: readonly DriftStatus[];
|
|
288
|
+
/** One block node's rolled-up status and the records it came from. */
|
|
289
|
+
export interface DriftBlockRollup {
|
|
290
|
+
/** The block node: the records' `instanceOf`, or their `node` when they are on the block itself. */
|
|
291
|
+
node: string;
|
|
292
|
+
status: DriftStatus;
|
|
293
|
+
/** Every read that answered for the block's records, sorted. */
|
|
294
|
+
reads: DriftRead[];
|
|
295
|
+
records: DriftRecord[];
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Records grouped by block node (`instanceOf`, else `node`) and rolled up
|
|
299
|
+
* with `rollupInstances` over {@link DRIFT_INSTANCE_ROLLUP}. A record with a
|
|
300
|
+
* null `node` is on no block and is left out. Sorted by node.
|
|
301
|
+
*/
|
|
302
|
+
export declare function rollupDriftByBlock(records: Iterable<DriftRecord>): DriftBlockRollup[];
|
|
303
|
+
/**
|
|
304
|
+
* The document with each record's `node` and `instanceOf` set from `graph`
|
|
305
|
+
* by `graphNodeFor` (`./change-set-graph.ts`), the rule a change-set entry
|
|
306
|
+
* uses, so a drift row and a change-set entry for one instance name the
|
|
307
|
+
* same node: an instance of a `count` or `for_each` block is on
|
|
308
|
+
* `<blockNode>[0]` with `instanceOf` the block node, and an instance under
|
|
309
|
+
* an expanded module call is on `<root>/module.app[0]/<block>[1]` with the
|
|
310
|
+
* same `instanceOf` (#4486). A Pulumi URN is on
|
|
311
|
+
* `<member>/<key>` by the URN rule (`./pulumi-urn.ts`, #4456), through the
|
|
312
|
+
* `pulumi` planner's case, and so is a plunge URN ({@link driftPlanner}).
|
|
313
|
+
* A null `graph` gives every record `node: null`.
|
|
314
|
+
*/
|
|
315
|
+
export declare function mapDriftToGraph(doc: DriftDocument, graph: ChangeSetGraphNodes | null): DriftDocument;
|
|
316
|
+
/**
|
|
317
|
+
* The NDJSON stream, one JSON object per line, built like the run-event
|
|
318
|
+
* stream and in the layout choudoufu's `live-plan -resource` writes
|
|
319
|
+
* (choudoufu `internal/command/views/live_drift.go`): every line has a
|
|
320
|
+
* `type`, `drift-start`, `drift-record` or `drift-settle`, and a record
|
|
321
|
+
* line is the record itself with `type` beside its fields.
|
|
322
|
+
*/
|
|
323
|
+
/** One address a stream expects to hear about, with the node and type a not-reached record should carry. */
|
|
324
|
+
export interface DriftExpected {
|
|
325
|
+
address: string;
|
|
326
|
+
node?: string | null;
|
|
327
|
+
instanceOf?: string;
|
|
328
|
+
resourceType?: string;
|
|
329
|
+
}
|
|
330
|
+
/** Opens a member's read: which member, engine and read, and every address it expects. */
|
|
331
|
+
export interface DriftStartLine {
|
|
332
|
+
type: "drift-start";
|
|
333
|
+
drift: typeof DRIFT_VERSION;
|
|
334
|
+
member: string;
|
|
335
|
+
engine: DriftEngine;
|
|
336
|
+
read: DriftRead;
|
|
337
|
+
/** The one address the read was asked about, on a single-resource read (`live-plan -resource`). */
|
|
338
|
+
resource?: string;
|
|
339
|
+
fellBackFrom?: string;
|
|
340
|
+
/** RFC 3339, when the writer gives it. */
|
|
341
|
+
at?: string;
|
|
342
|
+
/** Bare addresses, or addresses with the node and type a not-reached record is given. */
|
|
343
|
+
expected: Array<string | DriftExpected>;
|
|
344
|
+
/** The evidence a not-reached record is given. Default `{ tool: <engine> }`. */
|
|
345
|
+
evidence?: DriftEvidence;
|
|
346
|
+
}
|
|
347
|
+
/** One record, as its read finishes: the record's own fields beside `type`. A later line for the same `(member, address, read)` replaces it. */
|
|
348
|
+
export type DriftRecordLine = DriftRecord & {
|
|
349
|
+
type: "drift-record";
|
|
350
|
+
};
|
|
351
|
+
/** Closes a member's read. */
|
|
352
|
+
export interface DriftSettleLine {
|
|
353
|
+
type: "drift-settle";
|
|
354
|
+
drift: typeof DRIFT_VERSION;
|
|
355
|
+
member: string;
|
|
356
|
+
engine: DriftEngine;
|
|
357
|
+
read: DriftRead;
|
|
358
|
+
/** Records per status. A writer may leave out a status it has none of. */
|
|
359
|
+
counts: Partial<DriftCounts>;
|
|
360
|
+
/** The engine's own account of what the read cost (choudoufu: `recordsRead`, `sweepCalls`, ...). Carried, never interpreted. */
|
|
361
|
+
reads?: Record<string, unknown>;
|
|
362
|
+
/** RFC 3339, when the writer gives it: every not-reached record's `observedAt`. */
|
|
363
|
+
at?: string;
|
|
364
|
+
/**
|
|
365
|
+
* Expected addresses with no record line, when the writer lists them. A
|
|
366
|
+
* reader treats every expected address with no record as not-reached
|
|
367
|
+
* whether or not this is given; a writer that emits its own not-reached
|
|
368
|
+
* records (choudoufu does) leaves it out.
|
|
369
|
+
*/
|
|
370
|
+
notReached?: string[];
|
|
371
|
+
}
|
|
372
|
+
export type DriftLine = DriftStartLine | DriftRecordLine | DriftSettleLine;
|
|
373
|
+
/** A start line's expected entries, bare addresses made objects. */
|
|
374
|
+
export declare function driftExpected(start: Pick<DriftStartLine, "expected">): DriftExpected[];
|
|
375
|
+
/** A record as its stream line. */
|
|
376
|
+
export declare function driftRecordLine(record: DriftRecord): DriftRecordLine;
|
|
377
|
+
/** One line of the stream, newline-terminated. */
|
|
378
|
+
export declare function encodeDriftLine(line: DriftLine): string;
|
|
379
|
+
/** The whole stream for one or more reads, in order. */
|
|
380
|
+
export declare function encodeDriftLines(lines: Iterable<DriftLine>): string;
|
|
381
|
+
/** Read one line, checking it. A record line goes through {@link driftRecord}. Unknown fields are dropped. */
|
|
382
|
+
export declare function decodeDriftLine(text: string): DriftLine;
|
|
383
|
+
/** Every non-blank line of an NDJSON stream, decoded. */
|
|
384
|
+
export declare function decodeDriftLines(text: string): DriftLine[];
|
|
385
|
+
/** Open a read: the start line for a member's expected addresses, each once. */
|
|
386
|
+
export declare function driftStart(input: Omit<DriftStartLine, "type" | "drift">): DriftStartLine;
|
|
387
|
+
/**
|
|
388
|
+
* Close a read. `records` are the records sent since `start`, in order; a
|
|
389
|
+
* later one for an address and read replaces an earlier one, and records
|
|
390
|
+
* for another member are ignored. A record for an expected address answers
|
|
391
|
+
* it whatever its read, since one read can answer an address with another
|
|
392
|
+
* (a plan stream's unclaimed row is an `ownership` record). Every expected
|
|
393
|
+
* address with no record becomes `not-observed / not-reached` at `at`.
|
|
394
|
+
* Returns the settle line, which lists them in `notReached`, and the
|
|
395
|
+
* member's final records.
|
|
396
|
+
*/
|
|
397
|
+
export declare function driftSettle(start: DriftStartLine, records: Iterable<DriftRecord>, at: string): {
|
|
398
|
+
line: DriftSettleLine;
|
|
399
|
+
records: DriftRecord[];
|
|
400
|
+
};
|
|
401
|
+
/** An address a started read expects and has not reported yet. Not a status: a settle always resolves it. */
|
|
402
|
+
export interface DriftReading {
|
|
403
|
+
member: string;
|
|
404
|
+
read: DriftRead;
|
|
405
|
+
address: string;
|
|
406
|
+
node: string | null;
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* Fold a stream into a document. Record lines replace earlier ones for the
|
|
410
|
+
* same `(member, address, read)`. At a settle line, every address its start
|
|
411
|
+
* expected that no record answered (by member and address, whatever the
|
|
412
|
+
* read) becomes `not-observed / not-reached`, with the node and type the
|
|
413
|
+
* start gave, at the settle's `at`, else the start's, else the latest
|
|
414
|
+
* record's `observedAt` in the stream; `notReached` addresses the start did
|
|
415
|
+
* not list are added the same way. A start with no settle yet leaves its
|
|
416
|
+
* unanswered addresses in `reading`, which a renderer shows as "reading"
|
|
417
|
+
* and nothing else.
|
|
418
|
+
*/
|
|
419
|
+
export declare function foldDriftLines(lines: Iterable<DriftLine>, options?: DriftDocumentOptions): {
|
|
420
|
+
document: DriftDocument;
|
|
421
|
+
reading: DriftReading[];
|
|
422
|
+
};
|
|
423
|
+
/** What every adapter takes beside its source document. */
|
|
424
|
+
export interface DriftAdapterBase {
|
|
425
|
+
member: string;
|
|
426
|
+
/** RFC 3339, given to every record. */
|
|
427
|
+
observedAt: string;
|
|
428
|
+
/**
|
|
429
|
+
* The member's graph, to place each record with `graphNodeFor` as it is
|
|
430
|
+
* made. Omit to leave `node` null, for {@link mapDriftToGraph} to fill.
|
|
431
|
+
*/
|
|
432
|
+
graph?: ChangeSetGraphNodes | null;
|
|
433
|
+
/** The read that was asked for and failed, when this one answered instead. */
|
|
434
|
+
fellBackFrom?: string;
|
|
435
|
+
/** The chant or engine version, for `evidence.version`. */
|
|
436
|
+
version?: string;
|
|
437
|
+
}
|
|
438
|
+
/**
|
|
439
|
+
* Where an adapter's record for `address` sits: `graphNodeFor` on the
|
|
440
|
+
* input's graph, plunge's by the `pulumi` rule ({@link driftPlanner}). Exported
|
|
441
|
+
* for the lexicons' adapters.
|
|
442
|
+
*/
|
|
443
|
+
export declare function placeDriftRecord(input: Pick<DriftAdapterBase, "member" | "graph">, engine: DriftEngine, address: string): {
|
|
444
|
+
node: string | null;
|
|
445
|
+
instanceOf?: string;
|
|
446
|
+
};
|
|
447
|
+
export interface LiveDiffDriftInput extends DriftAdapterBase {
|
|
448
|
+
/** `chant lifecycle diff --live --json`, parsed. */
|
|
449
|
+
diff: LiveDiffResult;
|
|
450
|
+
/** Entity types by name, for the records whose diff row carries none. */
|
|
451
|
+
types?: Record<string, string>;
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* A chant member's records, from `lifecycle diff --live`: `unchanged` and
|
|
455
|
+
* `newlyObserved` are in-sync, `driftedSinceSnapshot` drifted (before is the
|
|
456
|
+
* snapshot, after the read), `missing` pending, `disappeared` missing,
|
|
457
|
+
* `orphan` undeclared, `runtimeChildren` runtime, `unobserved` not-observed.
|
|
458
|
+
* An entity in both `missing` and `disappeared` was deployed and is gone,
|
|
459
|
+
* so it is missing.
|
|
460
|
+
*/
|
|
461
|
+
export declare function liveDiffDriftRecords(input: LiveDiffDriftInput): DriftRecord[];
|
|
462
|
+
export interface DeepDiffDriftInput extends DriftAdapterBase {
|
|
463
|
+
/** `chant lifecycle diff --live --deep --json`'s deep result, parsed. */
|
|
464
|
+
diff: DeepDiffResult;
|
|
465
|
+
/**
|
|
466
|
+
* The command for `evidence.command`, when the deep result came from
|
|
467
|
+
* somewhere other than a live read: `chant lifecycle diff --index <ref>`
|
|
468
|
+
* (#4526) diffs against an index version. Default
|
|
469
|
+
* `chant lifecycle diff --live --deep`.
|
|
470
|
+
*/
|
|
471
|
+
command?: string;
|
|
472
|
+
}
|
|
473
|
+
/**
|
|
474
|
+
* A chant member's records from the deep diff alone: `drifted` with paths
|
|
475
|
+
* (before is the declared value, after the live one; an `absent` path has
|
|
476
|
+
* no after), `unchanged` in-sync, `unobserved` not-observed and
|
|
477
|
+
* `undeclaredEntities` undeclared. Accepted and held paths are not drift and
|
|
478
|
+
* are left out. To lay these over the thin read's records, so a deep hole
|
|
479
|
+
* stays on the attribute surface, use {@link mergeDeepDrift}.
|
|
480
|
+
*/
|
|
481
|
+
export declare function deepDiffDriftRecords(input: DeepDiffDriftInput): DriftRecord[];
|
|
482
|
+
/**
|
|
483
|
+
* The thin read's records with the deep read laid over them, by member and
|
|
484
|
+
* address. A thin in-sync record the deep read found drifted becomes
|
|
485
|
+
* drifted with the deep paths. A deep not-observed record never changes the
|
|
486
|
+
* thin status: presence is known, so it becomes `attributesUnobserved` on an
|
|
487
|
+
* in-sync or drifted record and is dropped elsewhere. Deep records with no
|
|
488
|
+
* thin record are added as they are.
|
|
489
|
+
*/
|
|
490
|
+
export declare function mergeDeepDrift(thin: Iterable<DriftRecord>, deep: Iterable<DriftRecord>): DriftRecord[];
|
|
491
|
+
export interface ComponentStatusDriftInput extends DriftAdapterBase {
|
|
492
|
+
/** `chant components status [env] --json`'s rows. */
|
|
493
|
+
rows: readonly ComponentStatusRow[];
|
|
494
|
+
}
|
|
495
|
+
/**
|
|
496
|
+
* A member's records from component status, one per component, addressed
|
|
497
|
+
* by component name: `reconciled` in-sync, `drifted` drifted, `stale`
|
|
498
|
+
* missing (recorded and no longer observed live), `unknown` not-observed
|
|
499
|
+
* with the row's reason, or `not-reached` when live status was never asked
|
|
500
|
+
* for. `unrecorded` is drifted when the component is live, since something
|
|
501
|
+
* runs that no release accounts for, pending when nothing is, and
|
|
502
|
+
* not-observed when live status was not asked for.
|
|
503
|
+
*/
|
|
504
|
+
export declare function componentStatusDriftRecords(input: ComponentStatusDriftInput): DriftRecord[];
|
|
505
|
+
/**
|
|
506
|
+
* What `chant lifecycle drift` asks a lexicon for (`LexiconPlugin.readDrift`,
|
|
507
|
+
* behold#995). `chant workspace drift` runs that command in a member's reader
|
|
508
|
+
* project, so a lexicon that reads members of a package kind (the terraform
|
|
509
|
+
* lexicon's `terraform` and `choudoufu` kinds) answers with its own engine,
|
|
510
|
+
* and chant core never imports the lexicon.
|
|
511
|
+
*/
|
|
512
|
+
export interface ReadDriftOptions {
|
|
513
|
+
/** The workspace member the records are for. Every line the lexicon returns names it. */
|
|
514
|
+
member: string;
|
|
515
|
+
/** The directory holding the project's `chant.config.*`. */
|
|
516
|
+
projectRoot: string;
|
|
517
|
+
/** The project's resolved config, for the lexicon's own namespace. */
|
|
518
|
+
config: Record<string, unknown>;
|
|
519
|
+
/** The read asked for. Unset, the lexicon's default read for what it finds. */
|
|
520
|
+
read?: DriftRead;
|
|
521
|
+
/** One address to read, on an engine that can read one resource on its own. */
|
|
522
|
+
resource?: string;
|
|
523
|
+
/** RFC 3339, the `observedAt` of every record the lexicon builds itself. */
|
|
524
|
+
observedAt: string;
|
|
525
|
+
}
|
|
526
|
+
/** Why a lexicon will not answer a drift read, in a code a caller can branch on. */
|
|
527
|
+
export type ReadDriftRefusalCode = "read-unsupported" | "resource-unsupported" | "no-drift-read";
|
|
528
|
+
/**
|
|
529
|
+
* A lexicon's answer: the stream lines of each read it ran, in order (a
|
|
530
|
+
* `drift-start`, its records, a `drift-settle`, per root), or a refusal. A
|
|
531
|
+
* read that ran and failed is not a refusal: its addresses are records
|
|
532
|
+
* with status `not-observed`.
|
|
533
|
+
*/
|
|
534
|
+
export type ReadDriftResult = {
|
|
535
|
+
lines: DriftLine[];
|
|
536
|
+
} | {
|
|
537
|
+
refused: {
|
|
538
|
+
code: ReadDriftRefusalCode;
|
|
539
|
+
message: string;
|
|
540
|
+
};
|
|
541
|
+
};
|
|
542
|
+
//# sourceMappingURL=drift-record.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drift-record.d.ts","sourceRoot":"","sources":["../src/drift-record.ts"],"names":[],"mappings":"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"}
|