@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
|
@@ -3,6 +3,7 @@ import { describeCommand, printDescribeResult } from "../commands/describe.js";
|
|
|
3
3
|
import { importCommand, importFromContent, importFromLive, importFromLiveStacks, printImportResult } from "../commands/import.js";
|
|
4
4
|
import { loadChantConfig } from "../../config.js";
|
|
5
5
|
import { resolve } from "path";
|
|
6
|
+
import { existsSync, readFileSync } from "fs";
|
|
6
7
|
import { auditCommand, printAuditResult } from "../commands/audit.js";
|
|
7
8
|
import { AGENT_RUNTIMES, AGENT_SCOPES } from "../../agents/types.js";
|
|
8
9
|
import { registeredProjectRoots } from "../../agents/discover.js";
|
|
@@ -239,6 +240,60 @@ export async function runDescribe(ctx) {
|
|
|
239
240
|
printDescribeResult(result);
|
|
240
241
|
return result.success ? 0 : 1;
|
|
241
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* The selection for `chant import --index` (#4524). `--type` and `--name`
|
|
245
|
+
* take comma-separated lists, `--tag key=value` repeats, `--select` is a JSON
|
|
246
|
+
* file of node ids (a list of ids, of `{ id }` or `{ node }` objects, or an
|
|
247
|
+
* object holding `nodes` or `results`) or a comma-separated list of ids, and
|
|
248
|
+
* `--all` takes every node.
|
|
249
|
+
*/
|
|
250
|
+
export function indexSelectionFromArgs(args) {
|
|
251
|
+
const list = (v) => (v ? v.split(",").map((s) => s.trim()).filter(Boolean) : undefined);
|
|
252
|
+
const selection = {};
|
|
253
|
+
if (args.all)
|
|
254
|
+
selection.all = true;
|
|
255
|
+
const types = list(args.selectType);
|
|
256
|
+
if (types)
|
|
257
|
+
selection.types = types;
|
|
258
|
+
const names = list(args.selectName);
|
|
259
|
+
if (names)
|
|
260
|
+
selection.names = names;
|
|
261
|
+
if (args.selectTags && args.selectTags.length > 0) {
|
|
262
|
+
const tags = {};
|
|
263
|
+
for (const t of args.selectTags) {
|
|
264
|
+
const eq = t.indexOf("=");
|
|
265
|
+
tags[t.slice(0, eq)] = t.slice(eq + 1);
|
|
266
|
+
}
|
|
267
|
+
selection.tags = tags;
|
|
268
|
+
}
|
|
269
|
+
if (args.selectAddress) {
|
|
270
|
+
const path = resolve(args.selectAddress);
|
|
271
|
+
if (existsSync(path)) {
|
|
272
|
+
let parsed;
|
|
273
|
+
try {
|
|
274
|
+
parsed = JSON.parse(readFileSync(path, "utf-8"));
|
|
275
|
+
}
|
|
276
|
+
catch (err) {
|
|
277
|
+
return new Error(`--select ${args.selectAddress} is not JSON: ${err instanceof Error ? err.message : String(err)}`);
|
|
278
|
+
}
|
|
279
|
+
const rows = Array.isArray(parsed)
|
|
280
|
+
? parsed
|
|
281
|
+
: parsed && typeof parsed === "object"
|
|
282
|
+
? (parsed.nodes ?? parsed.results ?? [])
|
|
283
|
+
: [];
|
|
284
|
+
const ids = rows
|
|
285
|
+
.map((r) => (typeof r === "string" ? r : r && typeof r === "object" ? (r.id ?? r.node) : undefined))
|
|
286
|
+
.filter((x) => typeof x === "string");
|
|
287
|
+
if (ids.length === 0)
|
|
288
|
+
return new Error(`--select ${args.selectAddress} names no node ids`);
|
|
289
|
+
selection.nodes = ids;
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
selection.nodes = list(args.selectAddress);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
return selection;
|
|
296
|
+
}
|
|
242
297
|
export async function runImport(ctx) {
|
|
243
298
|
const { args } = ctx;
|
|
244
299
|
// `--agents` (#chant audit --agents' other half): the source is this
|
|
@@ -318,6 +373,28 @@ export async function runImport(ctx) {
|
|
|
318
373
|
printImportResult(result);
|
|
319
374
|
return result.success ? 0 : 1;
|
|
320
375
|
}
|
|
376
|
+
// `--index <ref>` (#4524): typed source for indexed resources; nothing is applied.
|
|
377
|
+
if (args.index) {
|
|
378
|
+
const { importFromIndex, summarizeIndexImport } = await import("../commands/import-index.js");
|
|
379
|
+
const selection = indexSelectionFromArgs(args);
|
|
380
|
+
if (selection instanceof Error) {
|
|
381
|
+
console.error(formatError({ message: selection.message }));
|
|
382
|
+
return 1;
|
|
383
|
+
}
|
|
384
|
+
const result = await importFromIndex({
|
|
385
|
+
index: args.index,
|
|
386
|
+
selection,
|
|
387
|
+
output: args.output,
|
|
388
|
+
force: args.force,
|
|
389
|
+
report: args.reportFile,
|
|
390
|
+
adoptOut: args.adoptOut,
|
|
391
|
+
src: args.src,
|
|
392
|
+
});
|
|
393
|
+
printImportResult(result);
|
|
394
|
+
if (result.report)
|
|
395
|
+
console.error(summarizeIndexImport(result.report));
|
|
396
|
+
return result.success ? 0 : 1;
|
|
397
|
+
}
|
|
321
398
|
// `--from <env>` switches import from a template file to a live source.
|
|
322
399
|
if (args.migrateFrom) {
|
|
323
400
|
const selector = args.selectType || args.selectName
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pr.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/pr.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AAKH,OAAO,EAA+C,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"pr.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/pr.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AAKH,OAAO,EAA+C,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAI7F,OAAO,EAYL,KAAK,SAAS,EACf,MAAM,yBAAyB,CAAC;AASjC,OAAO,EAA0C,KAAK,YAAY,EAAuB,MAAM,wBAAwB,CAAC;AAIxH,OAAO,EAWL,KAAK,aAAa,EAElB,KAAK,cAAc,EAKpB,MAAM,eAAe,CAAC;AACvB,OAAO,EAA+D,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAU3G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAClF,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAiD,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC9H,OAAO,EAA8G,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC3K,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAKnD,qDAAqD;AACrD,eAAO,MAAM,aAAa,cAAc,CAAC;AAEzC,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,WAAW,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,4GAA4G;IAC5G,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,+BAA+B,EAAE,CAAC,CAAC;IAC1D,uDAAuD;IACvD,KAAK,EAAE,WAAW,CAAC;IACnB,iEAAiE;IACjE,YAAY,EAAE,aAAa,EAAE,CAAC;IAC9B,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,MAAM,EAAE,YAAY,CAAC;IACrB,sEAAsE;IACtE,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,8FAA8F;IAC9F,WAAW,CAAC,EAAE,aAAa,CAAC;CAC7B;AAOD,uJAAuJ;AACvJ,wBAAsB,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,CAkIjH;AAED,sEAAsE;AACtE,wBAAgB,UAAU,CAAC,GAAG,EAAE,cAAc,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAE1G;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,CAAC,EAAE,QAAQ,EACX,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,OAAO,CAAC,EAAE,SAAS,EACnB,IAAI,SAAwB,EAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAW7B;AAyBD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAO3J;AA+ED,qFAAqF;AACrF,wBAAgB,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAElF;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CASnF;AA0ND,mKAAmK;AACnK,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAGxE;AA8GD,yLAAyL;AACzL,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAYzE;AAmYD,uKAAuK;AACvK,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAG1E;AA03BD;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CA+B9E"}
|
package/dist/cli/handlers/pr.js
CHANGED
|
@@ -69,6 +69,7 @@ import { join, relative, resolve, sep } from "node:path";
|
|
|
69
69
|
import { loadChantConfig, resolveAutoReleaseDisabled } from "../../config.js";
|
|
70
70
|
import { resolveCommit, resolveMergeBase } from "../../components/changed-files.js";
|
|
71
71
|
import { deriveFanOut, fanOutRegistry } from "../../components/fan-out-support.js";
|
|
72
|
+
import { findComponentGroups, groupFanOut } from "../../components/groups.js";
|
|
72
73
|
import { applyPrSet, approvalOf, approversWhoAuthored, approversWithoutReview, decidePrGate, planPrSet, prReport, readOnlyLedger, prWavePlan, resumePrSet, waveNotCovered, } from "../../components/pr-run.js";
|
|
73
74
|
import { composeChangeSet, verifyChangeSetDigest } from "../../change-set.js";
|
|
74
75
|
import { waveGateName } from "../../gated-waves.js";
|
|
@@ -153,6 +154,7 @@ export async function prepare(ctx, stage) {
|
|
|
153
154
|
const signal = await resolveChangedUnits(ctx, config, { base, stacksOnly: true });
|
|
154
155
|
if ("error" in signal)
|
|
155
156
|
return fail(signal.error, signal.hint);
|
|
157
|
+
const registry = await fanOutRegistry(projectPath, config);
|
|
156
158
|
let derived;
|
|
157
159
|
try {
|
|
158
160
|
derived = await deriveFanOut({
|
|
@@ -161,6 +163,7 @@ export async function prepare(ctx, stage) {
|
|
|
161
163
|
sandbox: args.sandbox,
|
|
162
164
|
buildParams: paramsResolution.provenance,
|
|
163
165
|
config,
|
|
166
|
+
registry,
|
|
164
167
|
});
|
|
165
168
|
}
|
|
166
169
|
catch (err) {
|
|
@@ -204,10 +207,19 @@ export async function prepare(ctx, stage) {
|
|
|
204
207
|
if (policy.note)
|
|
205
208
|
console.error(formatInfo(policy.note));
|
|
206
209
|
const env = args.env ?? "local";
|
|
207
|
-
const registry = await fanOutRegistry(projectPath, config);
|
|
208
210
|
const routedAway = member ? await routing(ctx, stage, projectPath, member, base, forge) : undefined;
|
|
209
211
|
if (routedAway)
|
|
210
212
|
console.error(formatInfo(routedAway));
|
|
213
|
+
// ws-107: the groups a capability plans and applies as one, placed in the waves every stage and wave job reads.
|
|
214
|
+
let plan = derived.plan;
|
|
215
|
+
if (!routedAway && plan.order.length > 0) {
|
|
216
|
+
try {
|
|
217
|
+
plan = groupFanOut(plan, derived.components, await findComponentGroups({ components: derived.components, plan, registry, env }));
|
|
218
|
+
}
|
|
219
|
+
catch (err) {
|
|
220
|
+
return fail(err instanceof Error ? err.message : String(err));
|
|
221
|
+
}
|
|
222
|
+
}
|
|
211
223
|
return {
|
|
212
224
|
config,
|
|
213
225
|
env,
|
|
@@ -217,7 +229,7 @@ export async function prepare(ctx, stage) {
|
|
|
217
229
|
gate: args.gate ?? PR_APPLY_GATE,
|
|
218
230
|
...(forge ? { forge } : {}),
|
|
219
231
|
components: derived.components,
|
|
220
|
-
plan: routedAway ? { ...derived.plan, order: [], waves: [], seeds: [], indeterminate: [] } :
|
|
232
|
+
plan: routedAway ? { ...derived.plan, order: [], waves: [], seeds: [], indeterminate: [] } : plan,
|
|
221
233
|
signal: derived.signal,
|
|
222
234
|
...(derived.sites ? { sites: derived.sites } : {}),
|
|
223
235
|
registry,
|
|
@@ -1555,6 +1567,7 @@ async function tryResume(p, attempt, file, op, inputsNow) {
|
|
|
1555
1567
|
seededOutputs: p.seededOutputs,
|
|
1556
1568
|
record,
|
|
1557
1569
|
completed,
|
|
1570
|
+
applied: outputs,
|
|
1558
1571
|
});
|
|
1559
1572
|
if (!resumed.ok)
|
|
1560
1573
|
return skip(`what is left is not what was approved. ${resumed.reasons.join("; ")}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promote.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/promote.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;
|
|
1
|
+
{"version":3,"file":"promote.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/promote.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAkDH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAi4BlD,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAmF/E;AAED,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAsChF;AAsCD,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CA6BhF"}
|
|
@@ -31,6 +31,7 @@ import { fetchLifecycle, getHeadCommit, pushLifecycle } from "../../lifecycle/gi
|
|
|
31
31
|
import { appendReleaseRecord, latestPerComponent, readReleaseLedger, resolveRunId, } from "../../lifecycle/release-ledger.js";
|
|
32
32
|
import { isComponentList, resolveComponentTargets } from "../../components/cli-support.js";
|
|
33
33
|
import { applyConfigDefaults } from "../../components/config-defaults.js";
|
|
34
|
+
import { withDeclaredReads } from "../../components/declared-reads.js";
|
|
34
35
|
import { fanOutRegistry } from "../../components/fan-out-support.js";
|
|
35
36
|
import { renderDriverHuman } from "../../components/driver-output.js";
|
|
36
37
|
import { ndjsonProgressSink } from "../../components/run-progress.js";
|
|
@@ -161,17 +162,26 @@ async function bindReleaseGate(input) {
|
|
|
161
162
|
unsettled.set(component, `the ${u.outcome.verb} run ${u.outcome.runId} left ${component} ${u.state} in "${env}" and nothing has been recorded for it since, so what it runs is not known`);
|
|
162
163
|
}
|
|
163
164
|
const digests = new Map(plan.items.map((i) => [i.component, i.digest]));
|
|
164
|
-
const planSet = (only, outputs) =>
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
165
|
+
const planSet = async (only, outputs) => {
|
|
166
|
+
const planned = await gate.planReleaseSet({
|
|
167
|
+
release: under.release,
|
|
168
|
+
env,
|
|
169
|
+
components: input.prepared,
|
|
170
|
+
digests,
|
|
171
|
+
registry: input.registry,
|
|
172
|
+
current,
|
|
173
|
+
unsettled,
|
|
174
|
+
seededOutputs: outputs,
|
|
175
|
+
...(only ? { only } : {}),
|
|
176
|
+
...(input.grouped ? { grouped: input.grouped } : {}),
|
|
177
|
+
});
|
|
178
|
+
// #4465: the run applies the plan the gate bound, the newest one for a group planned again.
|
|
179
|
+
for (const g of planned.groups ?? [])
|
|
180
|
+
if (g.run)
|
|
181
|
+
input.groupRuns.unshift(g.run);
|
|
182
|
+
return planned;
|
|
183
|
+
};
|
|
184
|
+
const groupsOf = (p) => ({ ...(p.groups ? { groups: p.groups } : {}), ...(p.fallbacks ? { fallbacks: p.fallbacks } : {}) });
|
|
175
185
|
const { storeGateChangeSet } = await import("../../lifecycle/gate-change-set.js");
|
|
176
186
|
const { readStoredChangeSet } = await import("../../lifecycle/change-set-store.js");
|
|
177
187
|
const { isEmptyChangeSet } = await import("../../change-set.js");
|
|
@@ -248,6 +258,7 @@ async function bindReleaseGate(input) {
|
|
|
248
258
|
binding: { op: gate.RELEASE_GATE_OP, planDigest: stored.document.digest, releaseDigest, verifyEmpty },
|
|
249
259
|
reads: fresh.reads,
|
|
250
260
|
resumedFrom: stored.document.digest,
|
|
261
|
+
...groupsOf(fresh),
|
|
251
262
|
...(fresh.plannedOutputs ? { plannedOutputs: fresh.plannedOutputs } : {}),
|
|
252
263
|
...(fresh.unknownInputs ? { unknownInputs: fresh.unknownInputs } : {}),
|
|
253
264
|
...later,
|
|
@@ -259,7 +270,7 @@ async function bindReleaseGate(input) {
|
|
|
259
270
|
const bound = await bindDoc(fresh.doc, gates, "change set");
|
|
260
271
|
if (typeof bound === "number")
|
|
261
272
|
return bound;
|
|
262
|
-
return { doc: fresh.doc, ...bound, reads: fresh.reads, ...(fresh.plannedOutputs ? { plannedOutputs: fresh.plannedOutputs } : {}), ...(fresh.unknownInputs ? { unknownInputs: fresh.unknownInputs } : {}), ...later };
|
|
273
|
+
return { doc: fresh.doc, ...bound, reads: fresh.reads, ...groupsOf(fresh), ...(fresh.plannedOutputs ? { plannedOutputs: fresh.plannedOutputs } : {}), ...(fresh.unknownInputs ? { unknownInputs: fresh.unknownInputs } : {}), ...later };
|
|
263
274
|
}
|
|
264
275
|
const first = await planSet(undefined, input.seededOutputs);
|
|
265
276
|
const bound = await bindDoc(first.doc, gates, "change set");
|
|
@@ -268,7 +279,7 @@ async function bindReleaseGate(input) {
|
|
|
268
279
|
for (const [component, refs] of Object.entries(first.unknownInputs ?? {})) {
|
|
269
280
|
console.error(formatInfo(`${component} reads ${refs.join(", ")}, known only once its upstream applies; it is planned again then, and needs its own approval if its plan moves`));
|
|
270
281
|
}
|
|
271
|
-
return { doc: first.doc, ...bound, reads: first.reads, ...(first.plannedOutputs ? { plannedOutputs: first.plannedOutputs } : {}), ...(first.unknownInputs ? { unknownInputs: first.unknownInputs } : {}), ...later };
|
|
282
|
+
return { doc: first.doc, ...bound, reads: first.reads, ...groupsOf(first), ...(first.plannedOutputs ? { plannedOutputs: first.plannedOutputs } : {}), ...(first.unknownInputs ? { unknownInputs: first.unknownInputs } : {}), ...later };
|
|
272
283
|
}
|
|
273
284
|
/** A later round's or wave's plan was refused (provisional or failed members); the refusal is already printed. */
|
|
274
285
|
class PromoteStageRefused extends Error {
|
|
@@ -426,6 +437,12 @@ async function deployPlanIn(ctx, verb, plan, project, actor, record, under) {
|
|
|
426
437
|
}
|
|
427
438
|
}
|
|
428
439
|
const registry = await fanOutRegistry(project.projectPath, project.config);
|
|
440
|
+
// #4516: the reads a capability finds in its steps' files (a template's
|
|
441
|
+
// Fn::ImportValue) order the promote as `deriveFanOut` orders a fan-out, so
|
|
442
|
+
// an importer deploys after the exporter it reads. Read once the release's
|
|
443
|
+
// templates are written, so they are the files read; a read of a component
|
|
444
|
+
// this promote does not deploy is left out.
|
|
445
|
+
prepared.splice(0, prepared.length, ...(await withDeclaredReads(prepared, registry, project.projectPath)));
|
|
429
446
|
const port = gitGateLedgerPort();
|
|
430
447
|
// #4045: under a release, every gate binds the release's change set for this environment.
|
|
431
448
|
let releaseGate;
|
|
@@ -447,10 +464,52 @@ async function deployPlanIn(ctx, verb, plan, project, actor, record, under) {
|
|
|
447
464
|
console.error(formatWarning({ message: `could not read the resume record ${resumePath}: ${err instanceof Error ? err.message : String(err)}` }));
|
|
448
465
|
}
|
|
449
466
|
}
|
|
467
|
+
// ws-107 (#4465): under a release, the components a capability takes as one
|
|
468
|
+
// plan and apply as one group; under --wave-gate none forms (ruling 1).
|
|
469
|
+
// A resume groups again what is left of each group.
|
|
470
|
+
let grouped;
|
|
471
|
+
const groupRuns = [];
|
|
472
|
+
if (under) {
|
|
473
|
+
const groups = await import("../../components/groups.js");
|
|
474
|
+
const whole = await groups.formRunGroups({
|
|
475
|
+
components: prepared,
|
|
476
|
+
plan: groups.componentSetFanOut(prepared),
|
|
477
|
+
registry,
|
|
478
|
+
env: plan.to,
|
|
479
|
+
...(args.waveGate !== undefined ? { waveGate: true } : {}),
|
|
480
|
+
});
|
|
481
|
+
if (resume && whole.groups?.length) {
|
|
482
|
+
const { remainingFanOut } = await import("../../components/fan-out.js");
|
|
483
|
+
grouped = await groups.regroupRemaining({
|
|
484
|
+
components: prepared,
|
|
485
|
+
plan: remainingFanOut(whole, prepared, { completed: resume.completed }),
|
|
486
|
+
registry,
|
|
487
|
+
env: plan.to,
|
|
488
|
+
groups: whole.groups,
|
|
489
|
+
...(whole.fallbacks ? { fallbacks: whole.fallbacks } : {}),
|
|
490
|
+
});
|
|
491
|
+
}
|
|
492
|
+
else {
|
|
493
|
+
grouped = whole;
|
|
494
|
+
}
|
|
495
|
+
}
|
|
450
496
|
let pullRequests = [];
|
|
451
497
|
if (under) {
|
|
452
498
|
try {
|
|
453
|
-
const result = await bindReleaseGate({
|
|
499
|
+
const result = await bindReleaseGate({
|
|
500
|
+
plan,
|
|
501
|
+
prepared,
|
|
502
|
+
under,
|
|
503
|
+
registry,
|
|
504
|
+
port,
|
|
505
|
+
seededOutputs,
|
|
506
|
+
actor: actor,
|
|
507
|
+
projectPath: project.projectPath,
|
|
508
|
+
head,
|
|
509
|
+
...(resume ? { resume } : {}),
|
|
510
|
+
...(grouped ? { grouped } : {}),
|
|
511
|
+
groupRuns,
|
|
512
|
+
});
|
|
454
513
|
if (typeof result === "number") {
|
|
455
514
|
tidy();
|
|
456
515
|
return result;
|
|
@@ -507,6 +566,7 @@ async function deployPlanIn(ctx, verb, plan, project, actor, record, under) {
|
|
|
507
566
|
...(args.waveGate ? { waveGate: args.waveGate } : {}),
|
|
508
567
|
replan: bound.replan,
|
|
509
568
|
bind: bound.bind,
|
|
569
|
+
...(grouped?.groups?.length ? { grouped } : {}),
|
|
510
570
|
run: (components, outputs, binding) => runPromotion({
|
|
511
571
|
plan: { ...plan, items: plan.items.filter((i) => components.some((c) => c.name === i.component)) },
|
|
512
572
|
components,
|
|
@@ -514,6 +574,7 @@ async function deployPlanIn(ctx, verb, plan, project, actor, record, under) {
|
|
|
514
574
|
componentOutputs: outputs,
|
|
515
575
|
gates: port,
|
|
516
576
|
releaseGate: binding,
|
|
577
|
+
...(grouped?.groups?.length ? { grouped, groupRuns } : {}),
|
|
517
578
|
...(args.progressJson ? { onProgress: ndjsonProgressSink() } : {}),
|
|
518
579
|
...(events ? { onRunEvent: events.emit } : {}),
|
|
519
580
|
}),
|
|
@@ -528,6 +589,8 @@ async function deployPlanIn(ctx, verb, plan, project, actor, record, under) {
|
|
|
528
589
|
componentOutputs: seededOutputs,
|
|
529
590
|
gates: port,
|
|
530
591
|
...(releaseGate ? { releaseGate } : {}),
|
|
592
|
+
// #4465: with no release gate to bind, nothing planned the groups beforehand, so each plans in its wave.
|
|
593
|
+
...(grouped?.groups?.length ? { grouped, groupRuns, planGroupsAtWave: bound === undefined } : {}),
|
|
531
594
|
...(args.progressJson ? { onProgress: ndjsonProgressSink() } : {}),
|
|
532
595
|
...(events ? { onRunEvent: events.emit } : {}),
|
|
533
596
|
});
|
|
@@ -571,6 +634,17 @@ async function deployPlanIn(ctx, verb, plan, project, actor, record, under) {
|
|
|
571
634
|
console.error(formatInfo(`resume record: ${resumePath}; the same promote carries on from here`));
|
|
572
635
|
}
|
|
573
636
|
}
|
|
637
|
+
// #4465: the groups applied as one, and how each member ended, as pr-report says it.
|
|
638
|
+
const { runGroupsReport, renderRunGroups } = await import("../../components/run-groups.js");
|
|
639
|
+
const groupsReport = runGroupsReport({
|
|
640
|
+
grouped,
|
|
641
|
+
...(bound?.groups ? { planned: bound.groups } : {}),
|
|
642
|
+
...(bound ? { doc: bound.doc } : {}),
|
|
643
|
+
...(run.groupOutcomes ? { outcomes: run.groupOutcomes } : {}),
|
|
644
|
+
});
|
|
645
|
+
if (!args.json)
|
|
646
|
+
for (const line of renderRunGroups(groupsReport, `the same ${verb}`))
|
|
647
|
+
console.error(formatInfo(line));
|
|
574
648
|
// The driver settles the stream; this only ends one it left open.
|
|
575
649
|
events?.settle(run.status === "fail" ? "failed" : run.status);
|
|
576
650
|
if (!args.json)
|
|
@@ -609,7 +683,7 @@ async function deployPlanIn(ctx, verb, plan, project, actor, record, under) {
|
|
|
609
683
|
const withChangeSet = under && changeSetJson ? { release: { ...releaseJson.release, ...changeSetJson } } : releaseJson;
|
|
610
684
|
const stagedJson = staged ? { stages: staged.stages, ...(bound?.plannedOutputs ? { plannedOutputs: bound.plannedOutputs } : {}), ...(bound?.unknownInputs ? { unknownInputs: bound.unknownInputs } : {}) } : {};
|
|
611
685
|
const prJson = pullRequests.length > 0 ? { pullRequests: pullRequests.map((r) => ({ commit: r.commit, source: r.source, plan: r.plan, digest: r.digest, approvedBy: r.approvedBy, ...(r.authorApproved ? { authorApproved: r.authorApproved } : {}) })) } : {};
|
|
612
|
-
console.log(JSON.stringify({ ...planJson(plan, removed), ...withChangeSet, ...stagedJson, ...prJson, run, recorded, ...(outcome ? { outcome } : {}) }, null, 2));
|
|
686
|
+
console.log(JSON.stringify({ ...planJson(plan, removed), ...withChangeSet, ...stagedJson, ...prJson, ...groupsReport, run, recorded, ...(outcome ? { outcome } : {}) }, null, 2));
|
|
613
687
|
}
|
|
614
688
|
else {
|
|
615
689
|
for (const r of recorded) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/query.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/query.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKzD;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAoDhH;AAED,wBAAsB,eAAe,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CA+B1E"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `chant query "<sql>" [dir] [--member <name>] [--json]` (#4297): one
|
|
3
|
-
* read-only SQL statement over the snapshots
|
|
4
|
-
* releases on the local `chant/lifecycle`
|
|
3
|
+
* read-only SQL statement over the snapshots in the index store (#4519) and
|
|
4
|
+
* the Op runs, gates, deploys and releases on the local `chant/lifecycle`
|
|
5
|
+
* branch. The tables and the engine
|
|
5
6
|
* live in `../../lifecycle/query.ts`; this reads the ledgers and prints.
|
|
6
7
|
*
|
|
7
8
|
* Inside a workspace every member's ledger is read, each row naming its
|
|
@@ -30,8 +31,12 @@ export async function queryLedgers(cwd, members, at) {
|
|
|
30
31
|
const commit = resolveLedgerRevision(repo, at);
|
|
31
32
|
return (member) => revisionLedgerReadPort(repo, commit, member === null ? "" : memberLedgerPrefix([member]));
|
|
32
33
|
})();
|
|
34
|
+
// Snapshots come from the index store (#4519). `--at` names a commit of
|
|
35
|
+
// chant/lifecycle, so it reads that commit's snapshots as before.
|
|
36
|
+
const { resolveSnapshotStore, snapshotReadPort } = await import("../../lifecycle/snapshot-store.js");
|
|
37
|
+
const store = at === undefined ? await resolveSnapshotStore({ cwd: found?.dir ?? cwd }) : undefined;
|
|
33
38
|
if (!found)
|
|
34
|
-
return [{ member: null, port: atPort ? atPort(null) : gitLedgerReadPort({ cwd }) }];
|
|
39
|
+
return [{ member: null, port: atPort ? atPort(null) : gitLedgerReadPort({ cwd }), ...(store ? { snapshots: snapshotReadPort(store, { cwd }) } : {}) }];
|
|
35
40
|
// Workspace code loads only when there is a workspace, so a level-0 project never pays for it.
|
|
36
41
|
const { readDeclaration, WorkspaceReadError } = await import("../../workspace/declaration.js");
|
|
37
42
|
const { workingTree } = await import("../../workspace/tree.js");
|
|
@@ -51,9 +56,28 @@ export async function queryLedgers(cwd, members, at) {
|
|
|
51
56
|
if (unknown.length > 0)
|
|
52
57
|
throw new QueryError(`--member ${unknown.join(", ")} names no member of the workspace`);
|
|
53
58
|
}
|
|
59
|
+
// #4482: a TerraformApplyOp run names its root's directory; the member that holds it is `root_member`.
|
|
60
|
+
const { ownerOf, resolveGroups } = await import("../../workspace/declaration.js");
|
|
61
|
+
const groups = (() => {
|
|
62
|
+
try {
|
|
63
|
+
return resolveGroups(declaration, workingTree(found.dir));
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return [];
|
|
67
|
+
}
|
|
68
|
+
})();
|
|
69
|
+
const ownerOfPath = (path) => {
|
|
70
|
+
const owner = ownerOf(declaration, groups, path);
|
|
71
|
+
return owner && "member" in owner ? owner.member.name : null;
|
|
72
|
+
};
|
|
54
73
|
return declaration.members
|
|
55
74
|
.filter((m) => !wanted || wanted.has(m.name))
|
|
56
|
-
.map((m) => ({
|
|
75
|
+
.map((m) => ({
|
|
76
|
+
member: m.name,
|
|
77
|
+
port: atPort ? atPort(m.dir === "." ? null : m.name) : gitLedgerReadPort({ cwd: found.dir, member: m.dir === "." ? "." : m.name }),
|
|
78
|
+
...(store ? { snapshots: snapshotReadPort(store, { cwd: found.dir, member: m.dir === "." ? "." : m.name }) } : {}),
|
|
79
|
+
ownerOfPath,
|
|
80
|
+
}));
|
|
57
81
|
}
|
|
58
82
|
export async function runQueryCommand(ctx) {
|
|
59
83
|
const { args } = ctx;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scenario.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/scenario.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAKlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAyE3E;
|
|
1
|
+
{"version":3,"file":"scenario.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/scenario.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAKlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAyE3E;AA4OD,0FAA0F;AAC1F,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAM7E"}
|
|
@@ -2,7 +2,7 @@ import { resolve } from "node:path";
|
|
|
2
2
|
import { readFile } from "node:fs/promises";
|
|
3
3
|
import { commandBuildParams } from "../build-params-cli.js";
|
|
4
4
|
import { build } from "../../build.js";
|
|
5
|
-
import {
|
|
5
|
+
import { readEnvironmentSnapshotsFrom, resolveSnapshotStore } from "../../lifecycle/snapshot-store.js";
|
|
6
6
|
import { buildChangeSet } from "../../lifecycle/change-set.js";
|
|
7
7
|
import { planReceipts, mergeReceiptEntries, observedValueResolver, readReceiptValue, } from "../../lifecycle/receipt-plan.js";
|
|
8
8
|
import { collectEffectReceipts, isEffectReceipt } from "../../effect-receipt.js";
|
|
@@ -73,11 +73,11 @@ export async function runScenarioCheck(ctx) {
|
|
|
73
73
|
// ahead of the per-scenario loop, since it's a property of the build, not
|
|
74
74
|
// of any one scenario's fixture.
|
|
75
75
|
const receipts = collectEffectReceipts(buildResult.entities);
|
|
76
|
-
// `snapshot(env)` reads the
|
|
77
|
-
//
|
|
78
|
-
//
|
|
76
|
+
// `snapshot(env)` reads the index store (#4519) — fetch once, up front,
|
|
77
|
+
// the same pre-read `runLifecyclePlan` does, rather than once per scenario
|
|
78
|
+
// that needs it.
|
|
79
79
|
if ([...scenarios.values()].some((s) => s.given.kind === "env")) {
|
|
80
|
-
await
|
|
80
|
+
await (await resolveSnapshotStore()).fetch();
|
|
81
81
|
}
|
|
82
82
|
const results = [];
|
|
83
83
|
for (const [entityName, scenario] of scenarios) {
|
|
@@ -194,9 +194,10 @@ async function resolveGiven(given) {
|
|
|
194
194
|
behaviour: behaviourFrom([snap], given.path),
|
|
195
195
|
};
|
|
196
196
|
}
|
|
197
|
-
const
|
|
197
|
+
const store = await resolveSnapshotStore();
|
|
198
|
+
const stored = await readEnvironmentSnapshotsFrom(store, given.env);
|
|
198
199
|
if (stored.size === 0) {
|
|
199
|
-
const error = `no recorded snapshot for environment "${given.env}"
|
|
200
|
+
const error = `no recorded snapshot for environment "${given.env}" in ${store.where} — record one with \`chant lifecycle snapshot ${given.env}\`, or name a checked-in fixture`;
|
|
200
201
|
return { env: given.env, perLexicon: new Map(), error, behaviour: { missing: error } };
|
|
201
202
|
}
|
|
202
203
|
const perLexicon = new Map();
|
|
@@ -7,6 +7,7 @@ import type { ObservationDepth } from "../../lifecycle/types.js";
|
|
|
7
7
|
import { type CountBy } from "./search-count.js";
|
|
8
8
|
import type { CommandContext } from "../registry.js";
|
|
9
9
|
import { type SearchErrorCode, type SearchFailure } from "../../workspace/search-contract.js";
|
|
10
|
+
import { type IndexJoin } from "../../lifecycle/index-join.js";
|
|
10
11
|
/**
|
|
11
12
|
* `chant search <query> [--live --env <name>]` — answer an estate question with
|
|
12
13
|
* a COMPACT result instead of the whole graph. The point (measured on aws-bench,
|
|
@@ -19,11 +20,17 @@ import { type SearchErrorCode, type SearchFailure } from "../../workspace/search
|
|
|
19
20
|
* on a terraform resource, its type (kind:aws_instance, kind:aws_iam_)
|
|
20
21
|
* tag:<key>=<val> a Tags entry with Key=key and Value containing val
|
|
21
22
|
* attr:<name>=<val> attribute <name> equals/contains <val>
|
|
23
|
+
* id:<cloud id> physicalId or an engine cloudIds value is exactly <cloud id> (#4534)
|
|
22
24
|
* ->kind:X / ->attr:.. this node has an edge TO a node matching the right side
|
|
23
25
|
* <-kind:X / <-attr:.. this node has an edge FROM a node matching the right side
|
|
24
26
|
* ->*X, ->{n}X, ->{m,n}X the far end is any depth / n / m..n hops away (#4359)
|
|
25
27
|
* ->[via=a]X, ->[to=a]X only edges through consumer attr a / reading producer attr a
|
|
26
28
|
*
|
|
29
|
+
* `--index <ref>` (#4525) answers from an index version in the store instead
|
|
30
|
+
* of a live read: the declared rows joined to it through each lexicon's index
|
|
31
|
+
* match, each row with its verdict, or, with no project, the index alone.
|
|
32
|
+
* See ../../lifecycle/index-join.ts.
|
|
33
|
+
*
|
|
27
34
|
* The edge operators are the point of "edge-aware" search (#1139): a small
|
|
28
35
|
* model shouldn't hand-join instance→subnet→public across many results — one
|
|
29
36
|
* query does the traversal. `kind:Instance ->attr:MapPublicIpOnLaunch=true`
|
|
@@ -60,6 +67,8 @@ export declare function checkSearchArgs(args: {
|
|
|
60
67
|
failOnDrift?: boolean;
|
|
61
68
|
live?: boolean;
|
|
62
69
|
env?: string;
|
|
70
|
+
index?: string;
|
|
71
|
+
ambient?: boolean;
|
|
63
72
|
}, query: string, snapshot: {
|
|
64
73
|
ref?: string;
|
|
65
74
|
flag: string;
|
|
@@ -77,6 +86,7 @@ export declare function printCapabilities(args: {
|
|
|
77
86
|
env?: string;
|
|
78
87
|
snapshot?: string;
|
|
79
88
|
at?: string;
|
|
89
|
+
index?: string;
|
|
80
90
|
countBy?: string;
|
|
81
91
|
explain?: boolean;
|
|
82
92
|
show?: string;
|
|
@@ -126,6 +136,23 @@ export type AnswerSource = {
|
|
|
126
136
|
snapshot?: string;
|
|
127
137
|
commit: string;
|
|
128
138
|
timestamp: string;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* `--index <ref>` (#4525): the index version answered from and its stamp.
|
|
142
|
+
* `index` is the ref resolved (`<scope key>@<version>`); `by` the source
|
|
143
|
+
* that wrote it; `project` false when there was no project, so every row
|
|
144
|
+
* is an indexed node.
|
|
145
|
+
*/
|
|
146
|
+
| {
|
|
147
|
+
kind: "index";
|
|
148
|
+
index: string;
|
|
149
|
+
scopeKey: string;
|
|
150
|
+
version: string;
|
|
151
|
+
observedAt: string;
|
|
152
|
+
completedAt?: string;
|
|
153
|
+
digest: string;
|
|
154
|
+
by: string;
|
|
155
|
+
project: boolean;
|
|
129
156
|
};
|
|
130
157
|
/**
|
|
131
158
|
* Name the `--show` columns nothing carries (#1279).
|
|
@@ -185,9 +212,9 @@ declare function ambientHint(matches: IRNode[], ambientKinds: string[], asked: b
|
|
|
185
212
|
* already done. That is a fact about the query, printed for every query, and it
|
|
186
213
|
* encodes no expected answer.
|
|
187
214
|
*/
|
|
188
|
-
declare function provenanceLine(matches: IRNode[], source: AnswerSource, recorded?: string, liveFailures?: string[], derived?: string[]): string;
|
|
215
|
+
declare function provenanceLine(matches: IRNode[], source: AnswerSource, recorded?: string, liveFailures?: string[], derived?: string[], joins?: Record<string, IndexJoin>): string;
|
|
189
216
|
/** Print {@link provenanceLine}: the text footer. */
|
|
190
|
-
declare function provenance(matches: IRNode[], source: AnswerSource, recorded?: string, liveFailures?: string[], derived?: string[]): void;
|
|
217
|
+
declare function provenance(matches: IRNode[], source: AnswerSource, recorded?: string, liveFailures?: string[], derived?: string[], joins?: Record<string, IndexJoin>): void;
|
|
191
218
|
/** Union `LiveObservation.resources` across lexicons into one name-keyed map. */
|
|
192
219
|
declare function mergeResources(observations: LiveObservation[]): Record<string, ResourceMetadata>;
|
|
193
220
|
/** Restrict a name-keyed map to the matched ids — the whole of "query-scoped". */
|
|
@@ -360,6 +387,8 @@ export interface SearchJson {
|
|
|
360
387
|
hops: PathHop[];
|
|
361
388
|
}[];
|
|
362
389
|
}[];
|
|
390
|
+
/** `--index` with a project (#4525): how the declared row joined to the index version. */
|
|
391
|
+
join?: IndexJoin;
|
|
363
392
|
}[];
|
|
364
393
|
provenance?: string;
|
|
365
394
|
/** Present when every match is a planned create (#4372): how many. See the schema. */
|
|
@@ -411,11 +440,12 @@ declare function searchJson(query: string, source: AnswerSource, matches: IRNode
|
|
|
411
440
|
capabilities?: SearchJson["capabilities"];
|
|
412
441
|
explain?: ReturnType<typeof explainData>;
|
|
413
442
|
drift?: SearchDriftJson;
|
|
443
|
+
joins?: Record<string, IndexJoin>;
|
|
414
444
|
}): SearchJson;
|
|
415
445
|
/** A term as the query grammar spells it, `!` and ASCII arrows included (#4367). */
|
|
416
446
|
declare function termText(t: Term): string;
|
|
417
447
|
export interface Term {
|
|
418
|
-
kind: "word" | "kind" | "tag" | "attr" | "edge" | "cap";
|
|
448
|
+
kind: "word" | "kind" | "tag" | "attr" | "edge" | "cap" | "id";
|
|
419
449
|
/** `!term` — the node must NOT satisfy this (#1280). */
|
|
420
450
|
negated?: boolean;
|
|
421
451
|
a: string;
|
|
@@ -528,7 +558,7 @@ declare function findPath(n: IRNode, t: Term, ir: GraphIR, byId: Map<string, IRN
|
|
|
528
558
|
* `producer.attr <- consumer.via`. Hops are joined with `; `.
|
|
529
559
|
*/
|
|
530
560
|
declare function formatPath(hops: PathHop[], dir: "out" | "in"): string;
|
|
531
|
-
declare function formatRow(n: IRNode, show: string[]): string;
|
|
561
|
+
declare function formatRow(n: IRNode, show: string[], join?: IndexJoin): string;
|
|
532
562
|
/** Internals exposed for unit tests. */
|
|
533
563
|
export declare const __searchInternals: {
|
|
534
564
|
parseQuery: typeof parseQuery;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/search.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0E,KAAK,OAAO,EAAE,KAAK,MAAM,EAAe,MAAM,gBAAgB,CAAC;AAKhJ,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAMpE,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAiB,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAM9D,OAAO,EAA4F,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAGxI,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAoD,KAAK,eAAe,EAAE,KAAK,aAAa,EAAmB,MAAM,iCAAiC,CAAC;AAE9J
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/search.ts"],"names":[],"mappings":"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"}
|