@intentius/chant 0.57.0 → 0.58.0
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/catalog.d.ts +51 -1
- package/dist/audit/catalog.d.ts.map +1 -1
- package/dist/audit/core.d.ts +20 -1
- package/dist/audit/core.d.ts.map +1 -1
- package/dist/audit/discover.d.ts +14 -8
- package/dist/audit/discover.d.ts.map +1 -1
- package/dist/audit/lineage.d.ts +10 -0
- package/dist/audit/lineage.d.ts.map +1 -0
- package/dist/audit/prior-art.d.ts +385 -0
- package/dist/audit/prior-art.d.ts.map +1 -0
- package/dist/audit/proof.d.ts +16 -0
- package/dist/audit/proof.d.ts.map +1 -1
- package/dist/audit/report-html.d.ts.map +1 -1
- package/dist/audit/report-model.d.ts +8 -1
- package/dist/audit/report-model.d.ts.map +1 -1
- package/dist/audit/report.d.ts.map +1 -1
- package/dist/audit/rules-doc.d.ts +3 -0
- package/dist/audit/rules-doc.d.ts.map +1 -1
- package/dist/audit/secrets.d.ts +15 -0
- package/dist/audit/secrets.d.ts.map +1 -1
- package/dist/audit/terraform-state.d.ts +46 -0
- package/dist/audit/terraform-state.d.ts.map +1 -0
- package/dist/build.d.ts +17 -1
- package/dist/build.d.ts.map +1 -1
- package/dist/claimed-fields.d.ts +161 -0
- package/dist/claimed-fields.d.ts.map +1 -0
- package/dist/cli/build-params-cli.d.ts +2 -2
- package/dist/cli/command-group.d.ts +14 -0
- package/dist/cli/command-group.d.ts.map +1 -1
- package/dist/cli/commands/audit.d.ts +17 -1
- package/dist/cli/commands/audit.d.ts.map +1 -1
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/check-lexicon-docs.d.ts +1 -1
- package/dist/cli/commands/check-lexicon-examples.d.ts +16 -6
- package/dist/cli/commands/check-lexicon-examples.d.ts.map +1 -1
- package/dist/cli/commands/init-lexicon/templates/codegen.d.ts +1 -0
- package/dist/cli/commands/init-lexicon/templates/codegen.d.ts.map +1 -1
- package/dist/cli/commands/init-lexicon/templates/project.d.ts +7 -0
- package/dist/cli/commands/init-lexicon/templates/project.d.ts.map +1 -1
- package/dist/cli/commands/init-lexicon.d.ts.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/lint.d.ts.map +1 -1
- package/dist/cli/commands/onboard.d.ts +2 -0
- package/dist/cli/commands/onboard.d.ts.map +1 -1
- package/dist/cli/handlers/build.d.ts.map +1 -1
- package/dist/cli/handlers/lifecycle.d.ts.map +1 -1
- package/dist/cli/handlers/operator.d.ts +82 -16
- package/dist/cli/handlers/operator.d.ts.map +1 -1
- package/dist/cli/handlers/run.d.ts +49 -42
- package/dist/cli/handlers/run.d.ts.map +1 -1
- package/dist/cli/main.d.ts +28 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/mcp/op-tools.d.ts +16 -1
- package/dist/cli/mcp/op-tools.d.ts.map +1 -1
- package/dist/cli/mcp/resource-handlers.d.ts.map +1 -1
- package/dist/cli/mcp/resources/context.d.ts.map +1 -1
- package/dist/cli/registry.d.ts +26 -9
- package/dist/cli/registry.d.ts.map +1 -1
- package/dist/codegen/generate-post-synth-barrel.d.ts +1 -1
- package/dist/components/auto-release.d.ts +10 -20
- package/dist/components/auto-release.d.ts.map +1 -1
- package/dist/components/capability.d.ts +4 -4
- package/dist/components/cli-support.d.ts +20 -21
- package/dist/components/cli-support.d.ts.map +1 -1
- package/dist/components/component.d.ts +3 -3
- package/dist/components/component.d.ts.map +1 -1
- package/dist/components/driver-output.d.ts.map +1 -1
- package/dist/components/driver.d.ts +66 -36
- package/dist/components/driver.d.ts.map +1 -1
- package/dist/components/index.d.ts +1 -2
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/manifest-persistence.d.ts +1 -9
- package/dist/components/manifest-persistence.d.ts.map +1 -1
- package/dist/components/run-progress.d.ts +6 -6
- package/dist/components/run-progress.d.ts.map +1 -1
- package/dist/components/verbs/run-agent.d.ts +9 -15
- package/dist/components/verbs/run-agent.d.ts.map +1 -1
- package/dist/components/verbs/verify.d.ts +2 -2
- package/dist/deep-observation.d.ts +17 -0
- package/dist/deep-observation.d.ts.map +1 -1
- package/dist/discovery/files.d.ts +4 -4
- package/dist/discovery/fold-import.d.ts.map +1 -1
- package/dist/discovery/param-deps.d.ts +33 -0
- package/dist/discovery/param-deps.d.ts.map +1 -1
- package/dist/discovery/sandbox/bundle.d.ts.map +1 -1
- package/dist/discovery/sandbox/config-wire.d.ts +2 -2
- package/dist/fold/foldable-helpers.d.ts +5 -1
- package/dist/fold/foldable-helpers.d.ts.map +1 -1
- package/dist/fold-provenance.d.ts +236 -0
- package/dist/fold-provenance.d.ts.map +1 -0
- package/dist/graph-ops.d.ts +1 -1
- package/dist/held-elsewhere.d.ts +85 -0
- package/dist/held-elsewhere.d.ts.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/kubectl-context.d.ts +3 -3
- package/dist/lexicon-config.d.ts +4 -4
- package/dist/lexicon-plugin-helpers.d.ts +1 -1
- package/dist/lexicon.d.ts +104 -14
- package/dist/lexicon.d.ts.map +1 -1
- package/dist/lifecycle/change-set.d.ts +13 -0
- package/dist/lifecycle/change-set.d.ts.map +1 -1
- package/dist/lifecycle/deep-diff.d.ts +133 -6
- package/dist/lifecycle/deep-diff.d.ts.map +1 -1
- package/dist/lifecycle/deep-observe.d.ts.map +1 -1
- package/dist/lifecycle/gate-ledger.d.ts +71 -3
- package/dist/lifecycle/gate-ledger.d.ts.map +1 -1
- package/dist/lifecycle/index.d.ts +1 -0
- package/dist/lifecycle/index.d.ts.map +1 -1
- package/dist/lifecycle/release-ledger.d.ts +2 -2
- package/dist/lifecycle/run-ledger.d.ts +53 -0
- package/dist/lifecycle/run-ledger.d.ts.map +1 -0
- package/dist/lifecycle/symptoms.d.ts +3 -3
- package/dist/lifecycle/symptoms.d.ts.map +1 -1
- package/dist/lint/config.d.ts +81 -2
- package/dist/lint/config.d.ts.map +1 -1
- package/dist/lint/post-synth.d.ts +55 -2
- package/dist/lint/post-synth.d.ts.map +1 -1
- package/dist/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.d.ts +1 -1
- package/dist/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.d.ts.map +1 -1
- package/dist/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.d.ts +1 -1
- package/dist/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.d.ts.map +1 -1
- package/dist/lint/rules/comp/comp004-gate-needs-durable-runtime.d.ts +44 -0
- package/dist/lint/rules/comp/comp004-gate-needs-durable-runtime.d.ts.map +1 -0
- package/dist/lint/rules/comp/index.d.ts +1 -1
- package/dist/lint/rules/comp/index.d.ts.map +1 -1
- package/dist/lint/rules/op/index.d.ts +16 -0
- package/dist/lint/rules/op/index.d.ts.map +1 -0
- package/dist/lint/rules/op/ops012-activity-contract.d.ts +27 -0
- package/dist/lint/rules/op/ops012-activity-contract.d.ts.map +1 -0
- package/dist/lint/rules/op/ops013-step-output-ref.d.ts +61 -0
- package/dist/lint/rules/op/ops013-step-output-ref.d.ts.map +1 -0
- package/dist/lint/rules/op/ops014-converge-rule-refusals.d.ts +55 -0
- package/dist/lint/rules/op/ops014-converge-rule-refusals.d.ts.map +1 -0
- package/dist/lint/rules/op/support.d.ts +12 -0
- package/dist/lint/rules/op/support.d.ts.map +1 -0
- package/dist/lint/suppressions.d.ts +108 -0
- package/dist/lint/suppressions.d.ts.map +1 -0
- package/dist/live-endpoint.d.ts +1 -1
- package/dist/op/activities/activity-contracts.d.ts +54 -0
- package/dist/op/activities/activity-contracts.d.ts.map +1 -0
- package/dist/op/activities/apply.d.ts +262 -0
- package/dist/op/activities/apply.d.ts.map +1 -0
- package/dist/op/activities/build.d.ts +13 -0
- package/dist/op/activities/build.d.ts.map +1 -0
- package/dist/op/activities/converge.d.ts +110 -0
- package/dist/op/activities/converge.d.ts.map +1 -0
- package/dist/op/activities/env-teardown.d.ts +76 -0
- package/dist/op/activities/env-teardown.d.ts.map +1 -0
- package/dist/op/activities/guard-validate.d.ts +64 -0
- package/dist/op/activities/guard-validate.d.ts.map +1 -0
- package/dist/op/activities/http-check.d.ts +34 -0
- package/dist/op/activities/http-check.d.ts.map +1 -0
- package/dist/op/activities/index.d.ts +31 -0
- package/dist/op/activities/index.d.ts.map +1 -0
- package/dist/op/activities/lexicon-upgrade.d.ts +182 -0
- package/dist/op/activities/lexicon-upgrade.d.ts.map +1 -0
- package/dist/op/activities/lifecycle.d.ts +42 -0
- package/dist/op/activities/lifecycle.d.ts.map +1 -0
- package/dist/op/activities/pipeline-audit.d.ts +84 -0
- package/dist/op/activities/pipeline-audit.d.ts.map +1 -0
- package/dist/op/activities/policy.d.ts +17 -0
- package/dist/op/activities/policy.d.ts.map +1 -0
- package/dist/op/activities/reconcile.d.ts +89 -0
- package/dist/op/activities/reconcile.d.ts.map +1 -0
- package/dist/op/activities/shell.d.ts +13 -0
- package/dist/op/activities/shell.d.ts.map +1 -0
- package/dist/op/activities/teardown.d.ts +10 -0
- package/dist/op/activities/teardown.d.ts.map +1 -0
- package/dist/op/activities/util.d.ts +7 -0
- package/dist/op/activities/util.d.ts.map +1 -0
- package/dist/op/activities/wait.d.ts +28 -0
- package/dist/op/activities/wait.d.ts.map +1 -0
- package/dist/op/activities/workflow-audit.d.ts +92 -0
- package/dist/op/activities/workflow-audit.d.ts.map +1 -0
- package/dist/op/activity-contract-registry.d.ts +76 -0
- package/dist/op/activity-contract-registry.d.ts.map +1 -0
- package/dist/op/activity-contract.d.ts +25 -18
- package/dist/op/activity-contract.d.ts.map +1 -1
- package/dist/op/activity-failure.d.ts +28 -0
- package/dist/op/activity-failure.d.ts.map +1 -0
- package/dist/op/activity-profiles.d.ts +118 -0
- package/dist/op/activity-profiles.d.ts.map +1 -0
- package/dist/op/activity-registry.d.ts +22 -38
- package/dist/op/activity-registry.d.ts.map +1 -1
- package/dist/op/activity-runtime.d.ts +3 -14
- package/dist/op/activity-runtime.d.ts.map +1 -1
- package/dist/op/builders.d.ts +84 -29
- package/dist/op/builders.d.ts.map +1 -1
- package/dist/op/composites/apply-op.d.ts +113 -0
- package/dist/op/composites/apply-op.d.ts.map +1 -0
- package/dist/op/composites/converge-op.d.ts +120 -0
- package/dist/op/composites/converge-op.d.ts.map +1 -0
- package/dist/op/composites/index.d.ts +26 -0
- package/dist/op/composites/index.d.ts.map +1 -0
- package/dist/op/composites/lexicon-upgrade-op.d.ts +78 -0
- package/dist/op/composites/lexicon-upgrade-op.d.ts.map +1 -0
- package/dist/op/composites/pipeline-audit-op.d.ts +50 -0
- package/dist/op/composites/pipeline-audit-op.d.ts.map +1 -0
- package/dist/op/composites/reconcile-op.d.ts +57 -0
- package/dist/op/composites/reconcile-op.d.ts.map +1 -0
- package/dist/op/composites/watch-op.d.ts +60 -0
- package/dist/op/composites/watch-op.d.ts.map +1 -0
- package/dist/op/composites/workflow-audit-op.d.ts +57 -0
- package/dist/op/composites/workflow-audit-op.d.ts.map +1 -0
- package/dist/op/converge-rule.d.ts +12 -10
- package/dist/op/converge-rule.d.ts.map +1 -1
- package/dist/op/cron.d.ts +51 -0
- package/dist/op/cron.d.ts.map +1 -0
- package/dist/op/discover.d.ts +9 -0
- package/dist/op/discover.d.ts.map +1 -1
- package/dist/op/duration.d.ts +11 -0
- package/dist/op/duration.d.ts.map +1 -0
- package/dist/op/emulator-lifecycle.d.ts.map +1 -1
- package/dist/op/gate.d.ts +90 -0
- package/dist/op/gate.d.ts.map +1 -0
- package/dist/op/generate-pipeline.d.ts +9 -0
- package/dist/op/generate-pipeline.d.ts.map +1 -1
- package/dist/op/index.d.ts +23 -7
- package/dist/op/index.d.ts.map +1 -1
- package/dist/op/local-executor.d.ts +114 -28
- package/dist/op/local-executor.d.ts.map +1 -1
- package/dist/op/local-output.d.ts +11 -1
- package/dist/op/local-output.d.ts.map +1 -1
- package/dist/op/op-ir.d.ts +184 -0
- package/dist/op/op-ir.d.ts.map +1 -0
- package/dist/op/op-verb-class.d.ts +10 -2
- package/dist/op/op-verb-class.d.ts.map +1 -1
- package/dist/op/operator.d.ts +30 -5
- package/dist/op/operator.d.ts.map +1 -1
- package/dist/op/receipt-store.d.ts +1 -1
- package/dist/op/receipt-store.d.ts.map +1 -1
- package/dist/op/resource.d.ts +15 -1
- package/dist/op/resource.d.ts.map +1 -1
- package/dist/op/runtime.d.ts +200 -0
- package/dist/op/runtime.d.ts.map +1 -0
- package/dist/op/runtimes/local.d.ts +29 -0
- package/dist/op/runtimes/local.d.ts.map +1 -0
- package/dist/op/step-output-ref.d.ts +15 -13
- package/dist/op/step-output-ref.d.ts.map +1 -1
- package/dist/op/types.d.ts +79 -27
- package/dist/op/types.d.ts.map +1 -1
- package/dist/ownership.d.ts +1 -1
- package/dist/provenance.d.ts +21 -0
- package/dist/provenance.d.ts.map +1 -1
- package/dist/serializer-walker.d.ts.map +1 -1
- package/package.json +6 -1
- package/src/audit/catalog.test.ts +79 -3
- package/src/audit/catalog.ts +111 -13
- package/src/audit/core.test.ts +26 -0
- package/src/audit/core.ts +61 -17
- package/src/audit/discover.test.ts +39 -0
- package/src/audit/discover.ts +91 -15
- package/src/audit/lineage.ts +100 -0
- package/src/audit/prior-art.ts +153 -0
- package/src/audit/proof.test.ts +67 -0
- package/src/audit/proof.ts +70 -0
- package/src/audit/report-html.ts +9 -4
- package/src/audit/report-model.ts +16 -2
- package/src/audit/report.test.ts +33 -0
- package/src/audit/report.ts +5 -3
- package/src/audit/rules-doc.test.ts +34 -2
- package/src/audit/rules-doc.ts +82 -9
- package/src/audit/secrets.ts +15 -3
- package/src/audit/terraform-state.test.ts +144 -0
- package/src/audit/terraform-state.ts +131 -0
- package/src/build.ts +31 -1
- package/src/claimed-fields.test.ts +145 -0
- package/src/claimed-fields.ts +208 -0
- package/src/cli/build-params-cli.ts +2 -2
- package/src/cli/command-group.ts +14 -0
- package/src/cli/commands/__fixtures__/audit-terraform/infra/.terraform/providers/lock.txt +1 -0
- package/src/cli/commands/__fixtures__/audit-terraform/infra/main.tf +1 -0
- package/src/cli/commands/__fixtures__/audit-terraform/infra/modules/foo/main.tf +1 -0
- package/src/cli/commands/__fixtures__/audit-terraform/infra/variables.tf +3 -0
- package/src/cli/commands/__fixtures__/init-lexicon-output/package.json +13 -4
- package/src/cli/commands/__fixtures__/init-lexicon-output/src/codegen/docs-cli.ts +4 -0
- package/src/cli/commands/__fixtures__/init-lexicon-output/src/codegen/package.ts +1 -0
- package/src/cli/commands/__fixtures__/init-lexicon-output/src/package-cli.ts +21 -0
- package/src/cli/commands/__snapshots__/init-lexicon.test.ts.snap +1 -0
- package/src/cli/commands/audit.test.ts +189 -11
- package/src/cli/commands/audit.ts +73 -27
- package/src/cli/commands/build.test.ts +292 -9
- package/src/cli/commands/build.ts +156 -24
- package/src/cli/commands/check-lexicon-docs.ts +1 -1
- package/src/cli/commands/check-lexicon-examples.test.ts +29 -1
- package/src/cli/commands/check-lexicon-examples.ts +42 -10
- package/src/cli/commands/init-lexicon/templates/codegen.ts +9 -0
- package/src/cli/commands/init-lexicon/templates/project.ts +44 -4
- package/src/cli/commands/init-lexicon.test.ts +97 -2
- package/src/cli/commands/init-lexicon.ts +4 -2
- package/src/cli/commands/init.test.ts +35 -1
- package/src/cli/commands/init.ts +14 -3
- package/src/cli/commands/lint.test.ts +48 -0
- package/src/cli/commands/lint.ts +123 -0
- package/src/cli/commands/onboard.test.ts +75 -0
- package/src/cli/commands/onboard.ts +54 -23
- package/src/cli/handlers/build.test.ts +81 -1
- package/src/cli/handlers/build.ts +15 -1
- package/src/cli/handlers/graph.test.ts +3 -3
- package/src/cli/handlers/lifecycle.test.ts +195 -12
- package/src/cli/handlers/lifecycle.ts +123 -6
- package/src/cli/handlers/misc.ts +1 -1
- package/src/cli/handlers/operator.test.ts +183 -11
- package/src/cli/handlers/operator.ts +260 -55
- package/src/cli/handlers/run.test.ts +431 -1287
- package/src/cli/handlers/run.ts +365 -915
- package/src/cli/main.test.ts +23 -15
- package/src/cli/main.ts +88 -33
- package/src/cli/mcp/op-tools.ts +147 -88
- package/src/cli/mcp/resource-handlers.ts +10 -37
- package/src/cli/mcp/resources/context.ts +11 -12
- package/src/cli/mcp/server.test.ts +25 -27
- package/src/cli/mcp/server.ts +2 -2
- package/src/cli/registry.ts +26 -9
- package/src/codegen/docs.ts +1 -1
- package/src/codegen/generate-post-synth-barrel.test.ts +1 -1
- package/src/codegen/generate-post-synth-barrel.ts +1 -1
- package/src/components/README.md +3 -2
- package/src/components/auto-release.test.ts +4 -20
- package/src/components/auto-release.ts +17 -42
- package/src/components/capability.ts +4 -4
- package/src/components/cli-support.test.ts +10 -5
- package/src/components/cli-support.ts +52 -44
- package/src/components/component.schema.json +2 -2
- package/src/components/component.ts +3 -3
- package/src/components/driver-output.ts +14 -2
- package/src/components/driver.test.ts +92 -22
- package/src/components/driver.ts +193 -83
- package/src/components/index.ts +1 -6
- package/src/components/manifest-persistence.test.ts +2 -20
- package/src/components/manifest-persistence.ts +4 -24
- package/src/components/pilots/pilots-lint-clean.test.ts +11 -10
- package/src/components/run-progress.ts +6 -6
- package/src/components/verbs/run-agent.ts +11 -17
- package/src/components/verbs/verify.ts +2 -2
- package/src/deep-observation.test.ts +75 -0
- package/src/deep-observation.ts +48 -0
- package/src/discovery/collect.test.ts +3 -3
- package/src/discovery/files.ts +4 -4
- package/src/discovery/fold-import.ts +105 -2
- package/src/discovery/param-deps.test.ts +112 -1
- package/src/discovery/param-deps.ts +193 -0
- package/src/discovery/sandbox/bundle.ts +15 -1
- package/src/discovery/sandbox/config-wire.test.ts +2 -2
- package/src/discovery/sandbox/config-wire.ts +2 -2
- package/src/fold/fold.test.ts +56 -0
- package/src/fold/foldable-helpers.ts +81 -1
- package/src/fold-provenance-exclusion.test.ts +186 -0
- package/src/fold-provenance.test.ts +495 -0
- package/src/fold-provenance.ts +441 -0
- package/src/graph-ops.test.ts +2 -2
- package/src/graph-ops.ts +1 -1
- package/src/held-elsewhere.test.ts +102 -0
- package/src/held-elsewhere.ts +114 -0
- package/src/index.ts +3 -0
- package/src/kubectl-context.ts +3 -3
- package/src/lexicon-config.test.ts +5 -5
- package/src/lexicon-config.ts +4 -4
- package/src/lexicon-plugin-helpers.ts +1 -1
- package/src/lexicon.ts +120 -14
- package/src/lifecycle/change-set.test.ts +49 -0
- package/src/lifecycle/change-set.ts +67 -0
- package/src/lifecycle/converge-ledger.ts +1 -1
- package/src/lifecycle/deep-diff.test.ts +267 -14
- package/src/lifecycle/deep-diff.ts +217 -14
- package/src/lifecycle/deep-observe.test.ts +3 -1
- package/src/lifecycle/deep-observe.ts +16 -6
- package/src/lifecycle/gate-ledger.test.ts +74 -2
- package/src/lifecycle/gate-ledger.ts +143 -36
- package/src/lifecycle/index.ts +1 -0
- package/src/lifecycle/release-ledger.ts +2 -2
- package/src/lifecycle/run-ledger.test.ts +268 -0
- package/src/lifecycle/run-ledger.ts +201 -0
- package/src/lifecycle/symptoms.ts +3 -3
- package/src/lint/config.test.ts +82 -1
- package/src/lint/config.ts +112 -3
- package/src/lint/policy.test.ts +1 -1
- package/src/lint/post-synth.test.ts +31 -0
- package/src/lint/post-synth.ts +54 -1
- package/src/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.ts +2 -2
- package/src/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.ts +1 -1
- package/src/lint/rules/comp/comp.test.ts +1 -1
- package/src/lint/rules/comp/comp004-gate-needs-durable-runtime.ts +74 -0
- package/src/lint/rules/comp/index.ts +3 -3
- package/src/lint/rules/op/index.ts +23 -0
- package/src/lint/rules/op/ops012-activity-contract.test.ts +161 -0
- package/src/lint/rules/op/ops012-activity-contract.ts +64 -0
- package/src/lint/rules/op/ops013-step-output-ref.test.ts +237 -0
- package/src/lint/rules/op/ops013-step-output-ref.ts +98 -0
- package/src/lint/rules/op/ops014-converge-rule-refusals.test.ts +263 -0
- package/src/lint/rules/op/ops014-converge-rule-refusals.ts +179 -0
- package/src/lint/rules/op/support.ts +11 -0
- package/src/lint/suppressions.test.ts +163 -0
- package/src/lint/suppressions.ts +204 -0
- package/src/live-endpoint.ts +1 -1
- package/src/op/activities/activity-contracts.ts +66 -0
- package/src/op/activities/apply.test.ts +567 -0
- package/src/op/activities/apply.ts +662 -0
- package/src/op/activities/build.ts +26 -0
- package/src/op/activities/converge.test.ts +330 -0
- package/src/op/activities/converge.ts +449 -0
- package/src/op/activities/env-teardown.test.ts +187 -0
- package/src/op/activities/env-teardown.ts +171 -0
- package/src/op/activities/guard-validate.test.ts +139 -0
- package/src/op/activities/guard-validate.ts +223 -0
- package/src/op/activities/http-check.test.ts +48 -0
- package/src/op/activities/http-check.ts +55 -0
- package/src/op/activities/index.ts +119 -0
- package/src/op/activities/lexicon-upgrade.test.ts +492 -0
- package/src/op/activities/lexicon-upgrade.ts +673 -0
- package/src/op/activities/lifecycle.ts +85 -0
- package/src/op/activities/pipeline-audit.test.ts +67 -0
- package/src/op/activities/pipeline-audit.ts +201 -0
- package/src/op/activities/policy.test.ts +19 -0
- package/src/op/activities/policy.ts +37 -0
- package/src/op/activities/reconcile.test.ts +81 -0
- package/src/op/activities/reconcile.ts +187 -0
- package/src/op/activities/shell.ts +26 -0
- package/src/op/activities/teardown.ts +22 -0
- package/src/op/activities/util.ts +6 -0
- package/src/op/activities/wait.ts +69 -0
- package/src/op/activities/workflow-audit.test.ts +90 -0
- package/src/op/activities/workflow-audit.ts +203 -0
- package/src/op/activity-contract-registry.test.ts +98 -0
- package/src/op/activity-contract-registry.ts +114 -0
- package/src/op/activity-contract.test.ts +1 -1
- package/src/op/activity-contract.ts +37 -33
- package/src/op/activity-failure.ts +34 -0
- package/src/op/activity-profiles.test.ts +56 -0
- package/src/op/activity-profiles.ts +116 -0
- package/src/op/activity-registry.test.ts +37 -28
- package/src/op/activity-registry.ts +27 -56
- package/src/op/activity-runtime.ts +3 -47
- package/src/op/builders-exports.test.ts +0 -49
- package/src/op/builders-typed.test.ts +164 -0
- package/src/op/builders.ts +123 -39
- package/src/op/composites/apply-op.ts +208 -0
- package/src/op/composites/composites.test.ts +366 -0
- package/src/op/composites/converge-op.test.ts +168 -0
- package/src/op/composites/converge-op.ts +214 -0
- package/src/op/composites/index.ts +26 -0
- package/src/op/composites/lexicon-upgrade-op.test.ts +68 -0
- package/src/op/composites/lexicon-upgrade-op.ts +134 -0
- package/src/op/composites/pipeline-audit-op.test.ts +25 -0
- package/src/op/composites/pipeline-audit-op.ts +78 -0
- package/src/op/composites/reconcile-op.test.ts +51 -0
- package/src/op/composites/reconcile-op.ts +107 -0
- package/src/op/composites/watch-op.ts +108 -0
- package/src/op/composites/workflow-audit-op.test.ts +25 -0
- package/src/op/composites/workflow-audit-op.ts +88 -0
- package/src/op/converge-rule.ts +12 -10
- package/src/op/cron.test.ts +128 -0
- package/src/op/cron.ts +149 -0
- package/src/op/discover-root.test.ts +105 -1
- package/src/op/discover.test.ts +6 -2
- package/src/op/discover.ts +84 -16
- package/src/op/duration.ts +21 -0
- package/src/op/effect-step.test.ts +26 -11
- package/src/op/emulator-lifecycle.ts +1 -2
- package/src/op/gate.ts +155 -0
- package/src/op/generate-pipeline.test.ts +65 -3
- package/src/op/generate-pipeline.ts +19 -2
- package/src/op/index.ts +39 -6
- package/src/op/local-executor.test.ts +163 -34
- package/src/op/local-executor.ts +370 -102
- package/src/op/local-output.test.ts +95 -11
- package/src/op/local-output.ts +33 -4
- package/src/op/op-ir.test.ts +281 -0
- package/src/op/op-ir.ts +417 -0
- package/src/op/op-verb-class.ts +19 -5
- package/src/op/op.test.ts +26 -5
- package/src/op/operator.test.ts +175 -6
- package/src/op/operator.ts +63 -16
- package/src/op/receipt-store.ts +1 -1
- package/src/op/resource.ts +20 -2
- package/src/op/runtime.ts +203 -0
- package/src/op/runtimes/local.test.ts +181 -0
- package/src/op/runtimes/local.ts +212 -0
- package/src/op/step-output-ref.ts +15 -13
- package/src/op/types.ts +84 -24
- package/src/ownership.ts +1 -1
- package/src/provenance.test.ts +6 -0
- package/src/provenance.ts +21 -1
- package/src/serializer-walker.test.ts +42 -0
- package/src/serializer-walker.ts +21 -2
- package/dist/cli/handlers/op-progress.d.ts +0 -90
- package/dist/cli/handlers/op-progress.d.ts.map +0 -1
- package/dist/cli/handlers/run-client.d.ts +0 -127
- package/dist/cli/handlers/run-client.d.ts.map +0 -1
- package/dist/cli/handlers/run-report.d.ts +0 -5
- package/dist/cli/handlers/run-report.d.ts.map +0 -1
- package/dist/components/temporal-codegen-loader.d.ts +0 -27
- package/dist/components/temporal-codegen-loader.d.ts.map +0 -1
- package/dist/lint/rules/comp/comp004-gate-needs-temporal.d.ts +0 -37
- package/dist/lint/rules/comp/comp004-gate-needs-temporal.d.ts.map +0 -1
- package/src/cli/handlers/op-progress.test.ts +0 -268
- package/src/cli/handlers/op-progress.ts +0 -248
- package/src/cli/handlers/run-client.test.ts +0 -82
- package/src/cli/handlers/run-client.ts +0 -219
- package/src/cli/handlers/run-report.test.ts +0 -62
- package/src/cli/handlers/run-report.ts +0 -122
- package/src/components/temporal-codegen-loader.ts +0 -41
- package/src/lint/rules/comp/comp004-gate-needs-temporal.ts +0 -66
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { type ConvergeRule } from "../converge-rule.js";
|
|
2
|
+
import { type OpVerbClass } from "../op-verb-class.js";
|
|
3
|
+
import { type ConvergeSymptom } from "../../lifecycle/symptoms.js";
|
|
4
|
+
import { sanitizeLedgerText, type ConvergeRuleOutcome, type ConvergeTickRecord } from "../../lifecycle/converge-ledger.js";
|
|
5
|
+
/** A `ConvergeRule<ConvergeSymptom>`, restated with `S = ConvergeSymptom` fixed — the JSON shape `ConvergeOp` bakes into the Op's `convergeTick` step args. */
|
|
6
|
+
export type SerializedConvergeRule = ConvergeRule<ConvergeSymptom>;
|
|
7
|
+
export interface ConvergeTickArgs {
|
|
8
|
+
/** Op name (`ConvergeOp`'s own `config.name`) — carried into the ledger record. */
|
|
9
|
+
opName: string;
|
|
10
|
+
env: string;
|
|
11
|
+
/**
|
|
12
|
+
* Authority level for this environment (the issue's dial × verb-class
|
|
13
|
+
* matrix): `"observe"` never dispatches a mutating/destructive op
|
|
14
|
+
* (report-only); `"reconcile"` free-runs a read-only op but never a
|
|
15
|
+
* mutating one — the issue's table answer for `reconcile` × mutating is
|
|
16
|
+
* "open PR", which v1 doesn't implement (epic #1487's onDrift-channel open
|
|
17
|
+
* question), so `reconcile` refuses that dispatch (`OPS014`, build time)
|
|
18
|
+
* rather than silently escalating it to "run directly"; `"apply"` is the
|
|
19
|
+
* only dial that free-runs a mutating op. A destructive op is refused
|
|
20
|
+
* under every dial, `"apply"` included, in v1 — see `OPS014`'s doc on why
|
|
21
|
+
* "destructive + apply + gated" can never actually dispatch.
|
|
22
|
+
*/
|
|
23
|
+
dial: "observe" | "reconcile" | "apply";
|
|
24
|
+
/** Max number of `run` dispatches this tick may perform; remaining matched rules are recorded `skipped-budget`. */
|
|
25
|
+
budget: number;
|
|
26
|
+
/** The rule table, in authored order. */
|
|
27
|
+
rules: SerializedConvergeRule[];
|
|
28
|
+
/**
|
|
29
|
+
* `Observe` phase's quick drift signal, threaded in via a step-output
|
|
30
|
+
* reference rather than a search-attribute round-trip (#1290) — a
|
|
31
|
+
* diagnostic cross-check folded into the tick record, not a control input
|
|
32
|
+
* (this activity re-derives its own symptom independently).
|
|
33
|
+
*/
|
|
34
|
+
preflightDrift?: boolean;
|
|
35
|
+
}
|
|
36
|
+
export interface ConvergeTickResult {
|
|
37
|
+
/** The ledger record's tick id (#2027) — what a caller correlates this tick's outcomes, gate facts and remediations against. */
|
|
38
|
+
id: string;
|
|
39
|
+
drifted: boolean;
|
|
40
|
+
remediated: number;
|
|
41
|
+
reported: number;
|
|
42
|
+
skippedBudget: number;
|
|
43
|
+
skippedFlap: number;
|
|
44
|
+
unobserved: number;
|
|
45
|
+
adopted: number;
|
|
46
|
+
/** Rules whose dispatch hit a gate this tick (#1485) — see `ConvergeRuleOutcome.action`'s doc. */
|
|
47
|
+
gated: number;
|
|
48
|
+
/** The one human-readable summary line this tick produced. */
|
|
49
|
+
log: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Cap a subprocess failure's raw output to one sanitized line — a ledger
|
|
53
|
+
* record (`converge-ledger.ts`'s `appendConvergeRecord`) is one line of JSON,
|
|
54
|
+
* and a multi-line/oversized `stderr` folded straight into `outcome.reason`
|
|
55
|
+
* would break that. Not a fix for the ledger-durability bug (#1936,
|
|
56
|
+
* `writeBlobToPath`'s corruption under concurrent writes — fixed at the root
|
|
57
|
+
* in a separate PR); this only keeps one dispatch failure's own message from
|
|
58
|
+
* corrupting the line it's written into.
|
|
59
|
+
*
|
|
60
|
+
* The rule now lives next to the record it protects (`sanitizeLedgerText`,
|
|
61
|
+
* #2027), since a component verdict's `detail` needs the same cap; this stays
|
|
62
|
+
* as the dispatch path's name for it.
|
|
63
|
+
*/
|
|
64
|
+
export declare const sanitizeOneLine: typeof sanitizeLedgerText;
|
|
65
|
+
/**
|
|
66
|
+
* The gate a gated `chant run` stopped at, read off its JSON result (#2119) —
|
|
67
|
+
* pure, unit-tested directly rather than only through `dispatchOp`'s
|
|
68
|
+
* subprocess plumbing. `undefined` when the output says nothing about a gate.
|
|
69
|
+
*/
|
|
70
|
+
export declare function classifyDispatchFailure(raw: string): {
|
|
71
|
+
gateName: string;
|
|
72
|
+
} | undefined;
|
|
73
|
+
/**
|
|
74
|
+
* Runtime backstop for issue #1484's Autonomy table (pre-merge review of
|
|
75
|
+
* #1954): `OPS014` already refuses, at build time, a rule table shaped to
|
|
76
|
+
* reach this point with a mutating dispatch outside `"apply"` or any
|
|
77
|
+
* destructive dispatch at all. This is the defense-in-depth check for a rule
|
|
78
|
+
* table that reached `convergeTick` without going through that build — the
|
|
79
|
+
* same "not authored through the checked path" concern
|
|
80
|
+
* `isWellFormedPredicate` already guards for a hand-assembled predicate (see
|
|
81
|
+
* `../../../../packages/core/src/op/converge-rule.ts`'s doc). Fail-closed:
|
|
82
|
+
* an unclassifiable target (`verbClass === undefined`, e.g. the target op
|
|
83
|
+
* couldn't be discovered/read) is never treated as safe to free-run — same
|
|
84
|
+
* fail-closed stance `classifyOpVerbClass` itself takes for an unrecognized
|
|
85
|
+
* activity `fn`.
|
|
86
|
+
*/
|
|
87
|
+
export declare function verbClassAllowedToDispatch(dial: ConvergeTickArgs["dial"], verbClass: OpVerbClass | undefined): boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Apply {@link verbClassAllowedToDispatch} to one planned "ran" outcome,
|
|
90
|
+
* downgrading it to "reported" (never silently dropped, never silently run)
|
|
91
|
+
* when the dial/verb-class pairing isn't one the tick may actually free-run.
|
|
92
|
+
* Pure — the impure part (discovering and classifying the target op) is
|
|
93
|
+
* {@link classifyDispatchTarget}, called by `convergeTick` before this.
|
|
94
|
+
*/
|
|
95
|
+
export declare function enforceVerbClassAtDispatch(outcome: ConvergeRuleOutcome, dial: ConvergeTickArgs["dial"], verbClass: OpVerbClass | undefined): ConvergeRuleOutcome;
|
|
96
|
+
/**
|
|
97
|
+
* The pure planning core: given a symptom, a rule table, prior-tick fire
|
|
98
|
+
* history, the dial, and the remaining budget, decide what each rule does
|
|
99
|
+
* this tick. Exported and unit-tested directly — the activity function
|
|
100
|
+
* around it is the thin I/O shell (gather inputs, execute the plan, append
|
|
101
|
+
* the ledger record), matching `reconcilePr`'s split between its pure
|
|
102
|
+
* `reconcileSummary`/`entriesFromPlan` and its I/O body.
|
|
103
|
+
*/
|
|
104
|
+
export interface ConvergeTickPlan {
|
|
105
|
+
firedRuleIds: string[];
|
|
106
|
+
outcomes: ConvergeRuleOutcome[];
|
|
107
|
+
}
|
|
108
|
+
export declare function planConvergeTick(symptom: ConvergeSymptom, rules: SerializedConvergeRule[], priorRecords: ConvergeTickRecord[], dial: ConvergeTickArgs["dial"], budget: number): ConvergeTickPlan;
|
|
109
|
+
export declare function convergeTick(args: ConvergeTickArgs, signal?: AbortSignal): Promise<ConvergeTickResult>;
|
|
110
|
+
//# sourceMappingURL=converge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"converge.d.ts","sourceRoot":"","sources":["../../../src/op/activities/converge.ts"],"names":[],"mappings":"AAkCA,OAAO,EAEL,KAAK,YAAY,EAGlB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEzE,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAKL,kBAAkB,EAClB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACxB,MAAM,iCAAiC,CAAC;AAQzC,+JAA+J;AAC/J,MAAM,MAAM,sBAAsB,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;AAEnE,MAAM,WAAW,gBAAgB;IAC/B,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;;;;;;;OAWG;IACH,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;IACxC,mHAAmH;IACnH,MAAM,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAChC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,gIAAgI;IAChI,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,kGAAkG;IAClG,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,GAAG,EAAE,MAAM,CAAC;CACb;AAMD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,2BAAqB,CAAC;AA0BlD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAerF;AA0CD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO,CAKtH;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,mBAAmB,EAC5B,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAC9B,SAAS,EAAE,WAAW,GAAG,SAAS,GACjC,mBAAmB,CAWrB;AAaD;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CACjC;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,sBAAsB,EAAE,EAC/B,YAAY,EAAE,kBAAkB,EAAE,EAClC,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAC9B,MAAM,EAAE,MAAM,GACb,gBAAgB,CAmDlB;AAoBD,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAyF5G"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `envTeardown` — the durable form of `chant lifecycle teardown <env> --yes`
|
|
3
|
+
* (#1222).
|
|
4
|
+
*
|
|
5
|
+
* Wraps core's {@link executeTeardown}: enumerate the live resources whose
|
|
6
|
+
* ownership marker carries this project's `ownership.stack` + the requested
|
|
7
|
+
* environment, delete them through each lexicon's `executeTeardown`
|
|
8
|
+
* capability, run core's one bounded retry pass, and fail the activity loudly
|
|
9
|
+
* when any candidate is still `failed` afterwards. Selection is marker-scoped
|
|
10
|
+
* by construction — the same engine the CLI verb drives, reached in-process
|
|
11
|
+
* rather than through a shell.
|
|
12
|
+
*
|
|
13
|
+
* The guards are the CLI's guards, unchanged:
|
|
14
|
+
* - an environment the project does not declare is refused;
|
|
15
|
+
* - a project with no `ownership.stack` is refused — teardown has nothing to
|
|
16
|
+
* select on;
|
|
17
|
+
* - a production-like environment name (`prod`, `production`, `prod-eu`, ...)
|
|
18
|
+
* is refused unless the step's args carry an explicit `confirmProd: true`.
|
|
19
|
+
* An Op is non-interactive, so there is no re-type-the-name prompt to fall
|
|
20
|
+
* back to — the confirmation must be authored into the Op.
|
|
21
|
+
*
|
|
22
|
+
* All three refusals throw before any live read, so a refused teardown
|
|
23
|
+
* touches nothing at all. They are configuration errors, not transient ones —
|
|
24
|
+
* no retry can make `prod` stop looking like production.
|
|
25
|
+
*
|
|
26
|
+
* Distinct from {@link chantTeardown} (`npm run teardown`), which runs
|
|
27
|
+
* whatever script a project wired under that name. This activity is
|
|
28
|
+
* product-agnostic: it imports core only, and core reaches each product
|
|
29
|
+
* through the lexicons the project configures.
|
|
30
|
+
*/
|
|
31
|
+
import { type ChantConfig } from "../../config.js";
|
|
32
|
+
import { type TeardownReport } from "../../lifecycle/teardown.js";
|
|
33
|
+
import type { ObservationLexicon } from "../../lexicon.js";
|
|
34
|
+
export interface EnvTeardownArgs {
|
|
35
|
+
/** The environment to tear down — the marker env core selects on. */
|
|
36
|
+
env: string;
|
|
37
|
+
/**
|
|
38
|
+
* Required (as an explicit `true`) when `env` looks production-like.
|
|
39
|
+
* The Op's counterpart of the CLI's `--confirm-prod`: activities never
|
|
40
|
+
* prompt, so the confirmation is authored, reviewed, and versioned with
|
|
41
|
+
* the Op instead.
|
|
42
|
+
*/
|
|
43
|
+
confirmProd?: boolean;
|
|
44
|
+
/** Path to the chant project (where chant.config.ts lives). Default: the chant process's cwd. */
|
|
45
|
+
path?: string;
|
|
46
|
+
}
|
|
47
|
+
/** What a completed (fully successful) teardown reports back to the run. */
|
|
48
|
+
export interface EnvTeardownResult {
|
|
49
|
+
environment: string;
|
|
50
|
+
/** The ownership stack everything was selected on. */
|
|
51
|
+
stack: string;
|
|
52
|
+
deleted: number;
|
|
53
|
+
/** Deliberately refused by a lexicon, with the reason in the report. */
|
|
54
|
+
notPrunable: number;
|
|
55
|
+
/** Planned candidates whose lexicon implements no execution yet. */
|
|
56
|
+
skipped: number;
|
|
57
|
+
/** Kinds that could not be read (#1089) — the plan was incomplete, not clean. */
|
|
58
|
+
holes: number;
|
|
59
|
+
/** The full per-candidate report core produced. */
|
|
60
|
+
report: TeardownReport;
|
|
61
|
+
}
|
|
62
|
+
/** Injectable seams for testing — production loads both from the project. */
|
|
63
|
+
export interface EnvTeardownDeps {
|
|
64
|
+
/** Pre-loaded project config (skips reading chant.config.ts). */
|
|
65
|
+
config?: ChantConfig;
|
|
66
|
+
/** Pre-loaded lexicon plugins (skips resolving + importing lexicon packages). */
|
|
67
|
+
plugins?: ObservationLexicon[];
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Tear down one environment's marker-owned resources through the core
|
|
71
|
+
* teardown engine. Uses the `longInfra` profile — deletion waits on the
|
|
72
|
+
* target's own pace. Safe to retry: the engine re-plans from live markers on
|
|
73
|
+
* every run, and a resource already gone is simply no longer a candidate.
|
|
74
|
+
*/
|
|
75
|
+
export declare function envTeardown(args: EnvTeardownArgs, _signal?: AbortSignal, deps?: EnvTeardownDeps): Promise<EnvTeardownResult>;
|
|
76
|
+
//# sourceMappingURL=env-teardown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-teardown.d.ts","sourceRoot":"","sources":["../../../src/op/activities/env-teardown.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAGH,OAAO,EAA0C,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAGxF,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,MAAM,WAAW,eAAe;IAC9B,qEAAqE;IACrE,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iGAAiG;IACjG,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,4EAA4E;AAC5E,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,WAAW,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,6EAA6E;AAC7E,MAAM,WAAW,eAAe;IAC9B,iEAAiE;IACjE,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,iFAAiF;IACjF,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAChC;AAaD;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,eAAe,EACrB,OAAO,CAAC,EAAE,WAAW,EACrB,IAAI,CAAC,EAAE,eAAe,GACrB,OAAO,CAAC,iBAAiB,CAAC,CAyE5B"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
export interface GuardValidateArgs {
|
|
2
|
+
/**
|
|
3
|
+
* Path to a `.guard` rules file or directory, passed to `cfn-guard validate
|
|
4
|
+
* -r`. No chant-specific rule format — these are ordinary cfn-guard rules,
|
|
5
|
+
* the same ones CDK's `CfnGuardValidator` would run.
|
|
6
|
+
*/
|
|
7
|
+
rules: string;
|
|
8
|
+
/**
|
|
9
|
+
* Path to the built CloudFormation template to validate. Default:
|
|
10
|
+
* `<path>/template.json` — the convention `chant build -o template.json`
|
|
11
|
+
* writes to (see the aws lexicon's own examples and the native-output
|
|
12
|
+
* policy docs).
|
|
13
|
+
*/
|
|
14
|
+
template?: string;
|
|
15
|
+
/** Project directory `template` is resolved relative to, when `template` is not given. Default ".". */
|
|
16
|
+
path?: string;
|
|
17
|
+
/**
|
|
18
|
+
* What to produce on a finding. Only `"report"` runs today — it prints a
|
|
19
|
+
* summary and throws on any finding, no external service involved.
|
|
20
|
+
* `issue`/`pull-request` modes (reusing the audit-Op finding-mode
|
|
21
|
+
* plumbing) are left to a follow-up. Default: `"report"`.
|
|
22
|
+
*/
|
|
23
|
+
onFinding?: "report";
|
|
24
|
+
/** Path to (or name of) the `cfn-guard` binary. Default: `"cfn-guard"`, resolved via `PATH`. */
|
|
25
|
+
binary?: string;
|
|
26
|
+
}
|
|
27
|
+
/** One cfn-guard rule violation, mapped to a chant-shaped diagnostic. */
|
|
28
|
+
export interface GuardFinding {
|
|
29
|
+
/** The cfn-guard rule name that failed. */
|
|
30
|
+
rule: string;
|
|
31
|
+
/** Always `"error"` today — a cfn-guard non-compliant result is a policy violation, the same weight `policyGate` gives a violation. */
|
|
32
|
+
severity: "error";
|
|
33
|
+
/** Human-readable violation message. */
|
|
34
|
+
message: string;
|
|
35
|
+
/** Best-effort CloudFormation logical id the violation is about, when cfn-guard's output names one. */
|
|
36
|
+
entity?: string;
|
|
37
|
+
}
|
|
38
|
+
export interface GuardValidateResult {
|
|
39
|
+
findings: GuardFinding[];
|
|
40
|
+
summary: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Map cfn-guard's `--output-format json` report to chant-shaped findings.
|
|
44
|
+
* Exported and tested directly (independent of `spawn`) — same split
|
|
45
|
+
* `collectPipelineRefs`/`pipelineSupplyChainAudit` (`./pipeline-audit.ts`)
|
|
46
|
+
* use between pure mapping and the orchestrating activity.
|
|
47
|
+
*
|
|
48
|
+
* Throws if `stdout` is not parseable JSON — a cfn-guard invocation that
|
|
49
|
+
* didn't run with `--output-format json` (a bad rules path, a version too
|
|
50
|
+
* old to support it) is a setup problem, not "zero violations"; reporting
|
|
51
|
+
* a clean run here would be a false negative.
|
|
52
|
+
*/
|
|
53
|
+
export declare function parseGuardFindings(stdout: string): GuardFinding[];
|
|
54
|
+
/**
|
|
55
|
+
* Run an external CloudFormation Guard rules pack against the project's
|
|
56
|
+
* built CloudFormation template. `report` mode: prints a summary, and
|
|
57
|
+
* throws (non-retryable) when any rule is violated, so the local executor
|
|
58
|
+
* (`chant run`) exits non-zero and CI fails the pipeline — the same shape
|
|
59
|
+
* `policyGate` uses to block an apply. A clean run passes through.
|
|
60
|
+
*
|
|
61
|
+
* A plain activity on every runtime, not a `gate` step.
|
|
62
|
+
*/
|
|
63
|
+
export declare function guardValidate(args: GuardValidateArgs, _signal?: AbortSignal): Promise<GuardValidateResult>;
|
|
64
|
+
//# sourceMappingURL=guard-validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard-validate.d.ts","sourceRoot":"","sources":["../../../src/op/activities/guard-validate.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uGAAuG;IACvG,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,gGAAgG;IAChG,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,yEAAyE;AACzE,MAAM,WAAW,YAAY;IAC3B,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,uIAAuI;IACvI,QAAQ,EAAE,OAAO,CAAC;IAClB,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,uGAAuG;IACvG,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB;AA2DD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE,CA2BjE;AAUD;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAuChH"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export interface HttpCheckArgs {
|
|
2
|
+
/** URL to GET (or `method`). */
|
|
3
|
+
url: string;
|
|
4
|
+
/** HTTP method. Default: `GET`. */
|
|
5
|
+
method?: string;
|
|
6
|
+
/** Exact expected status. Default: any 2xx. */
|
|
7
|
+
status?: number;
|
|
8
|
+
/** Substring the response body must contain. */
|
|
9
|
+
contains?: string;
|
|
10
|
+
/** Retries before failing, for a resource that may lag. Default: `0`. */
|
|
11
|
+
retries?: number;
|
|
12
|
+
/** Delay between retries in ms. Default: `1000`. */
|
|
13
|
+
intervalMs?: number;
|
|
14
|
+
}
|
|
15
|
+
/** Injectable fetch — the response shape `httpCheck` needs. Defaults to global `fetch`. */
|
|
16
|
+
export type HttpFetch = (url: string, init?: {
|
|
17
|
+
method?: string;
|
|
18
|
+
signal?: AbortSignal;
|
|
19
|
+
}) => Promise<{
|
|
20
|
+
status: number;
|
|
21
|
+
text(): Promise<string>;
|
|
22
|
+
}>;
|
|
23
|
+
/** Whether a status satisfies the expectation (exact if given, else any 2xx). Pure. */
|
|
24
|
+
export declare function statusOk(status: number, expected?: number): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Assert an HTTP endpoint responds as expected — a typed verify step, the modeled
|
|
27
|
+
* replacement for `shell("curl -fs ...")`. Fails (throwing) if the status or body
|
|
28
|
+
* doesn't match after the allowed retries. `fetchFn` is injectable for tests.
|
|
29
|
+
* Uses fastIdempotent profile — 5m timeout.
|
|
30
|
+
*/
|
|
31
|
+
export declare function httpCheck(args: HttpCheckArgs, signal?: AbortSignal, fetchFn?: HttpFetch): Promise<{
|
|
32
|
+
status: number;
|
|
33
|
+
}>;
|
|
34
|
+
//# sourceMappingURL=http-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-check.d.ts","sourceRoot":"","sources":["../../../src/op/activities/http-check.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,gCAAgC;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,2FAA2F;AAC3F,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,KAAK,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC,CAAC;AAEhJ,uFAAuF;AACvF,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAEnE;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,OAAO,GAAE,SAAiB,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAuBlI"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export { chantBuild } from "./build.js";
|
|
2
|
+
export type { ChantBuildArgs } from "./build.js";
|
|
3
|
+
export { waitForStack } from "./wait.js";
|
|
4
|
+
export type { WaitForStackArgs } from "./wait.js";
|
|
5
|
+
export { shellCmd } from "./shell.js";
|
|
6
|
+
export type { ShellCmdArgs } from "./shell.js";
|
|
7
|
+
export { httpCheck, statusOk } from "./http-check.js";
|
|
8
|
+
export type { HttpCheckArgs, HttpFetch } from "./http-check.js";
|
|
9
|
+
export { lifecycleSnapshot, lifecycleDiff } from "./lifecycle.js";
|
|
10
|
+
export type { LifecycleSnapshotArgs, LifecycleDiffArgs, LifecycleDiffResult } from "./lifecycle.js";
|
|
11
|
+
export { chantTeardown } from "./teardown.js";
|
|
12
|
+
export type { ChantTeardownArgs } from "./teardown.js";
|
|
13
|
+
export { envTeardown } from "./env-teardown.js";
|
|
14
|
+
export type { EnvTeardownArgs, EnvTeardownResult, EnvTeardownDeps } from "./env-teardown.js";
|
|
15
|
+
export { reconcilePr } from "./reconcile.js";
|
|
16
|
+
export type { ReconcilePrArgs, ReconcileResult, ReconcileMode, ReconcileEntry } from "./reconcile.js";
|
|
17
|
+
export { nativeApply, compensateApply, hasNativeRollback } from "./apply.js";
|
|
18
|
+
export type { NativeApplyArgs, NativeApplyResult, CompensateApplyArgs, CompensateApplyResult, ApplyTarget, DeleteMode, K8sApplier, AzureApplier, GcpApplier, FlyApplier, AwsApplier, AwsRollback, } from "./apply.js";
|
|
19
|
+
export { policyGate } from "./policy.js";
|
|
20
|
+
export type { PolicyGateArgs } from "./policy.js";
|
|
21
|
+
export { guardValidate, parseGuardFindings } from "./guard-validate.js";
|
|
22
|
+
export type { GuardValidateArgs, GuardValidateResult, GuardFinding } from "./guard-validate.js";
|
|
23
|
+
export { workflowSupplyChainAudit, collectAuditRefs, defaultActionRefResolver } from "./workflow-audit.js";
|
|
24
|
+
export type { WorkflowAuditArgs, WorkflowAuditResult, WorkflowAuditMode, WorkflowAuditFinding, WorkflowAuditFindingKind, ActionRefResolver, ActionRefResolution, } from "./workflow-audit.js";
|
|
25
|
+
export { pipelineSupplyChainAudit, collectPipelineRefs, defaultGitlabRefResolver } from "./pipeline-audit.js";
|
|
26
|
+
export type { PipelineAuditArgs, PipelineAuditResult, PipelineAuditMode, PipelineAuditFinding, PipelineAuditFindingKind, PipelineRefKind, GitlabRefResolver, PipelineRefResolution, } from "./pipeline-audit.js";
|
|
27
|
+
export { convergeTick, planConvergeTick } from "./converge.js";
|
|
28
|
+
export type { ConvergeTickArgs, ConvergeTickResult, ConvergeTickPlan, SerializedConvergeRule } from "./converge.js";
|
|
29
|
+
export { lexiconUpgrade, isPinned, isRolling, severityToLabel, upgradeBranchName, upgradePrTitle, buildUpgradeSummary, } from "./lexicon-upgrade.js";
|
|
30
|
+
export type { LexiconUpgradeArgs, LexiconUpgradeResult, LexiconUpgradeMode, SupportedLexicon, SemverLabel, CheckPinnedFn, CheckRollingFn, GhRunner, ApplyBumpFn, } from "./lexicon-upgrade.js";
|
|
31
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/op/activities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAQ9C,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,YAAY,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAK/C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACnD,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE7D,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC/D,YAAY,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEjG,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAiB1F,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEnG,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC1E,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,WAAW,EACX,UAAU,EACV,UAAU,EACV,YAAY,EACZ,UAAU,EACV,UAAU,EACV,UAAU,EACV,WAAW,GACZ,MAAM,SAAS,CAAC;AAKjB,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACrE,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE7F,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACxG,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC3G,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,wBAAwB,EACxB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC5D,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEjH,OAAO,EACL,cAAc,EACd,QAAQ,EACR,SAAS,EACT,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,cAAc,EACd,QAAQ,EACR,WAAW,GACZ,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* lexiconUpgrade — the upgrade-detection and PR-automation activity for
|
|
3
|
+
* in-scope lexicons (k8s, gcp, docker, gitlab, aws, azure, github).
|
|
4
|
+
*
|
|
5
|
+
* Classifies the lexicon as pinned or rolling, calls the right check function,
|
|
6
|
+
* then surfaces the result in the requested mode: report (default), issue, or
|
|
7
|
+
* pull-request. In pull-request mode it maintains a long-lived branch per
|
|
8
|
+
* lexicon (`lexicon-upgrade/<lexicon>`), updates the PR in place when the delta
|
|
9
|
+
* changes, and applies a semver label derived from the surface severity.
|
|
10
|
+
*
|
|
11
|
+
* For pinned lexicons in pull-request mode, the PR also bumps the lexicon's
|
|
12
|
+
* own package.json version according to the semver label (minor → minor bump,
|
|
13
|
+
* breaking → major bump). Merging the PR carries the version change so
|
|
14
|
+
* publish-on-merge can ship just that lexicon without a full monorepo release.
|
|
15
|
+
*
|
|
16
|
+
* Rolling lexicons (aws, azure, github) drift on their own cadence and are not
|
|
17
|
+
* version-bumped here — they move to drift-issues per #546.
|
|
18
|
+
*
|
|
19
|
+
* Supply-chain note: this activity never executes spec-provided content.
|
|
20
|
+
* It only reads the artifacts produced by the lexicon's own generate step,
|
|
21
|
+
* which is called through the lexicon's npm prepack chain.
|
|
22
|
+
*/
|
|
23
|
+
import type { UpgradeCheckResult, LexiconId } from "../../codegen/pinned-upgrade.js";
|
|
24
|
+
import type { RollingUpgradeResult, RollingLexicon } from "../../codegen/rolling-upgrade.js";
|
|
25
|
+
import { bumpPackageJsonVersion } from "../../codegen/version-bump.js";
|
|
26
|
+
export { bumpPackageJsonVersion };
|
|
27
|
+
/** Finding mode, mirrors ReconcileOp's mode. */
|
|
28
|
+
export type LexiconUpgradeMode = "report" | "issue" | "pull-request";
|
|
29
|
+
/** All lexicons supported by this activity. */
|
|
30
|
+
export type SupportedLexicon = LexiconId | RollingLexicon;
|
|
31
|
+
/** Semver label applied to upgrade PRs. */
|
|
32
|
+
export type SemverLabel = "minor" | "breaking";
|
|
33
|
+
export interface LexiconUpgradeArgs {
|
|
34
|
+
/**
|
|
35
|
+
* Which lexicon to check. Determines pinned vs rolling dispatch:
|
|
36
|
+
* PINNED: k8s, gcp, docker, gitlab, cedar
|
|
37
|
+
* ROLLING: aws, azure, github, fly
|
|
38
|
+
*/
|
|
39
|
+
lexicon: SupportedLexicon;
|
|
40
|
+
/**
|
|
41
|
+
* Absolute path to the lexicon root directory.
|
|
42
|
+
* Defaults to `<cwd>/lexicons/<lexicon>`.
|
|
43
|
+
*/
|
|
44
|
+
lexiconDir?: string;
|
|
45
|
+
/** What to produce. Default: "report". */
|
|
46
|
+
mode?: LexiconUpgradeMode;
|
|
47
|
+
/**
|
|
48
|
+
* Override the pinned check function — inject a mock in tests.
|
|
49
|
+
* The real implementation calls checkPinnedUpgrade from core.
|
|
50
|
+
*/
|
|
51
|
+
_checkPinned?: CheckPinnedFn;
|
|
52
|
+
/**
|
|
53
|
+
* Override the rolling check function — inject a mock in tests.
|
|
54
|
+
* The real implementation calls checkRollingUpgrade from core.
|
|
55
|
+
*/
|
|
56
|
+
_checkRolling?: CheckRollingFn;
|
|
57
|
+
/**
|
|
58
|
+
* Override the gh/git runner — inject a mock in tests.
|
|
59
|
+
*/
|
|
60
|
+
_gh?: GhRunner;
|
|
61
|
+
/**
|
|
62
|
+
* Override the applyPinnedVersionBump function — inject a mock in tests.
|
|
63
|
+
*/
|
|
64
|
+
_applyBump?: ApplyBumpFn;
|
|
65
|
+
/**
|
|
66
|
+
* Override the package.json version writer — inject a mock in tests.
|
|
67
|
+
* Defaults to bumpPackageJsonVersion.
|
|
68
|
+
*/
|
|
69
|
+
_bumpPackageVersion?: BumpPackageVersionFn;
|
|
70
|
+
}
|
|
71
|
+
export interface LexiconUpgradeResult {
|
|
72
|
+
lexicon: SupportedLexicon;
|
|
73
|
+
mode: LexiconUpgradeMode;
|
|
74
|
+
/** True when an upgrade is available and validation passed. */
|
|
75
|
+
hasUpgrade: boolean;
|
|
76
|
+
/** Human-readable surface delta summary. Empty when no upgrade. */
|
|
77
|
+
deltaText: string;
|
|
78
|
+
/** Semver label applied to the PR. null when no upgrade or no change. */
|
|
79
|
+
semverLabel: SemverLabel | null;
|
|
80
|
+
/** URL of the opened/updated PR (pull-request mode). */
|
|
81
|
+
prUrl?: string;
|
|
82
|
+
/** URL of the opened issue (issue mode). */
|
|
83
|
+
issueUrl?: string;
|
|
84
|
+
/** Full markdown summary, used as PR/issue body or printed in report mode. */
|
|
85
|
+
summary: string;
|
|
86
|
+
/** Whether validation passed. False means a breakage report was produced. */
|
|
87
|
+
validationOk: boolean;
|
|
88
|
+
}
|
|
89
|
+
/** Matches checkPinnedUpgrade from core. */
|
|
90
|
+
export type CheckPinnedFn = (opts: {
|
|
91
|
+
lexiconDir: string;
|
|
92
|
+
lexicon: LexiconId;
|
|
93
|
+
force?: boolean;
|
|
94
|
+
verbose?: boolean;
|
|
95
|
+
}) => Promise<UpgradeCheckResult>;
|
|
96
|
+
/** Matches checkRollingUpgrade from core. */
|
|
97
|
+
export type CheckRollingFn = (opts: {
|
|
98
|
+
lexiconDir: string;
|
|
99
|
+
force?: boolean;
|
|
100
|
+
verbose?: boolean;
|
|
101
|
+
}) => Promise<RollingUpgradeResult>;
|
|
102
|
+
/** Minimal shell-exec interface for gh/git invocations. */
|
|
103
|
+
export type GhRunner = (cmd: string) => Promise<{
|
|
104
|
+
stdout: string;
|
|
105
|
+
stderr: string;
|
|
106
|
+
}>;
|
|
107
|
+
/** Applies a pinned version bump permanently (no revert). Async (core loads the lexicon's pin descriptor); a sync mock is also accepted. */
|
|
108
|
+
export type ApplyBumpFn = (lexicon: LexiconId, lexiconDir: string, newVersion: string) => {
|
|
109
|
+
filePath: string;
|
|
110
|
+
} | Promise<{
|
|
111
|
+
filePath: string;
|
|
112
|
+
}>;
|
|
113
|
+
/**
|
|
114
|
+
* Write a new version into a package.json, returning the file path.
|
|
115
|
+
* Injectable for tests via LexiconUpgradeArgs._bumpPackageVersion.
|
|
116
|
+
*/
|
|
117
|
+
export type BumpPackageVersionFn = (packageJsonPath: string, newVersion: string) => void;
|
|
118
|
+
/**
|
|
119
|
+
* Compute a bumped semver string from a current version and a semver label.
|
|
120
|
+
*
|
|
121
|
+
* The mapping is 0.x-aware, because promoting to 1.0.0 should signal the
|
|
122
|
+
* lexicon's own API stability, not track an upstream spec's breaking change:
|
|
123
|
+
*
|
|
124
|
+
* - Pre-1.0 (major === 0): "breaking" bumps the minor (0.13.1 → 0.14.0),
|
|
125
|
+
* "minor" (additive) bumps the patch (0.13.1 → 0.13.2). Never auto-1.0.0.
|
|
126
|
+
* - >= 1.0.0: "minor" bumps the minor (1.2.3 → 1.3.0), "breaking" bumps the
|
|
127
|
+
* major (1.2.3 → 2.0.0).
|
|
128
|
+
*
|
|
129
|
+
* Handles the common "MAJOR.MINOR.PATCH" form. Returns null when the
|
|
130
|
+
* current version string cannot be parsed as M.m.p.
|
|
131
|
+
*/
|
|
132
|
+
export declare function computeBumpedVersion(current: string, label: SemverLabel): string | null;
|
|
133
|
+
/** Return true when the lexicon uses a pinned version constant. */
|
|
134
|
+
export declare function isPinned(lexicon: SupportedLexicon): lexicon is LexiconId;
|
|
135
|
+
/** Return true when the lexicon follows a rolling spec (no pinned constant). */
|
|
136
|
+
export declare function isRolling(lexicon: SupportedLexicon): lexicon is RollingLexicon;
|
|
137
|
+
/**
|
|
138
|
+
* Map a surface severity to a semver label for the PR.
|
|
139
|
+
*
|
|
140
|
+
* "additive" → "minor" (new resources/properties added)
|
|
141
|
+
* "breaking" → "breaking" (removed or changed resources/properties)
|
|
142
|
+
* "none" → null (surface unchanged)
|
|
143
|
+
*/
|
|
144
|
+
export declare function severityToLabel(severity: string): SemverLabel | null;
|
|
145
|
+
/** Long-lived branch name for a lexicon upgrade PR. */
|
|
146
|
+
export declare function upgradeBranchName(lexicon: SupportedLexicon): string;
|
|
147
|
+
/** PR title for an upgrade. */
|
|
148
|
+
export declare function upgradePrTitle(lexicon: SupportedLexicon, from?: string, to?: string | null): string;
|
|
149
|
+
/** Build the PR/issue/report body from the upgrade result data. */
|
|
150
|
+
export declare function buildUpgradeSummary(opts: {
|
|
151
|
+
lexicon: SupportedLexicon;
|
|
152
|
+
from?: string;
|
|
153
|
+
to?: string | null;
|
|
154
|
+
deltaText: string;
|
|
155
|
+
semverLabel: SemverLabel | null;
|
|
156
|
+
validationOk: boolean;
|
|
157
|
+
failures?: Array<{
|
|
158
|
+
step: string;
|
|
159
|
+
output: string;
|
|
160
|
+
}>;
|
|
161
|
+
}): string;
|
|
162
|
+
/**
|
|
163
|
+
* Run the lexicon upgrade check for one lexicon and surface the result.
|
|
164
|
+
*
|
|
165
|
+
* Pinned lexicons (k8s, gcp, docker, gitlab):
|
|
166
|
+
* Calls checkPinnedUpgrade. A PR is opened only when hasUpgrade=true AND
|
|
167
|
+
* validation passed. Validation failures produce a report or issue.
|
|
168
|
+
*
|
|
169
|
+
* Rolling lexicons (aws, azure, github):
|
|
170
|
+
* Calls checkRollingUpgrade. A PR is opened only when the surface changed
|
|
171
|
+
* AND validation passed. Surface unchanged = no action.
|
|
172
|
+
*
|
|
173
|
+
* In pull-request mode:
|
|
174
|
+
* - Branch: lexicon-upgrade/<lexicon> (long-lived, one per lexicon).
|
|
175
|
+
* - Idempotent: if the open PR body matches the new summary, skip re-push.
|
|
176
|
+
* - Semver label: "minor" (additive) or "breaking" (changed/removed).
|
|
177
|
+
* - Validation failure falls back to issue mode.
|
|
178
|
+
*
|
|
179
|
+
* Never auto-merges or auto-publishes.
|
|
180
|
+
*/
|
|
181
|
+
export declare function lexiconUpgrade(args: LexiconUpgradeArgs): Promise<LexiconUpgradeResult>;
|
|
182
|
+
//# sourceMappingURL=lexicon-upgrade.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lexicon-upgrade.d.ts","sourceRoot":"","sources":["../../../src/op/activities/lexicon-upgrade.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export interface LifecycleSnapshotArgs {
|
|
2
|
+
/** Environment name (e.g. "dev", "staging", "prod"). */
|
|
3
|
+
env: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Take a chant lifecycle snapshot for the given environment.
|
|
7
|
+
* Uses fastIdempotent profile — 5m timeout, 3 retries.
|
|
8
|
+
*/
|
|
9
|
+
export declare function lifecycleSnapshot(args: LifecycleSnapshotArgs, signal?: AbortSignal): Promise<void>;
|
|
10
|
+
export interface LifecycleDiffArgs {
|
|
11
|
+
/** Environment name (e.g. "dev", "staging", "prod"). */
|
|
12
|
+
env: string;
|
|
13
|
+
/**
|
|
14
|
+
* When true, run `chant lifecycle diff <env> --live` (queries cloud APIs).
|
|
15
|
+
* When false (default), run digest-only diff against the last snapshot.
|
|
16
|
+
*/
|
|
17
|
+
live?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface LifecycleDiffResult {
|
|
20
|
+
/** Combined stdout + stderr from the chant command. */
|
|
21
|
+
output: string;
|
|
22
|
+
/** Process exit code (0 = success). */
|
|
23
|
+
exitCode: number;
|
|
24
|
+
/**
|
|
25
|
+
* True when the diff output contains any drift indicators
|
|
26
|
+
* (MISSING / ORPHAN / DRIFTED / DISAPPEARED section headers from
|
|
27
|
+
* `chant lifecycle diff --live`).
|
|
28
|
+
*/
|
|
29
|
+
drifted: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Run `chant lifecycle diff <env>` and return the output + structured drift
|
|
33
|
+
* flag. Read-only; intended for use inside watch/observation Ops.
|
|
34
|
+
* Uses fastIdempotent profile.
|
|
35
|
+
*
|
|
36
|
+
* The `drifted` field is computed by scanning the output for any of the
|
|
37
|
+
* MISSING / ORPHAN / DRIFTED / DISAPPEARED section headers documented in
|
|
38
|
+
* cli/state.mdx. Pair with `outcomeAttribute: { name: "Drift", from: "drifted" }`
|
|
39
|
+
* on a WatchOp activity step to surface drift as the run's `Drift` outcome.
|
|
40
|
+
*/
|
|
41
|
+
export declare function lifecycleDiff(args: LifecycleDiffArgs, signal?: AbortSignal): Promise<LifecycleDiffResult>;
|
|
42
|
+
//# sourceMappingURL=lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/op/activities/lifecycle.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,qBAAqB;IACpC,wDAAwD;IACxD,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,qBAAqB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAIxG;AAED,MAAM,WAAW,iBAAiB;IAChC,wDAAwD;IACxD,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB;AAoBD;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAa/G"}
|