@intentius/chant 0.57.0 → 0.59.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 +36 -1
- package/dist/audit/core.d.ts.map +1 -1
- package/dist/audit/discover.d.ts +26 -9
- 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/carve-bridge.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 +13 -0
- 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 +12 -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/plugins.d.ts +22 -0
- package/dist/cli/plugins.d.ts.map +1 -1
- package/dist/cli/registry.d.ts +40 -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 +24 -22
- package/dist/components/cli-support.d.ts.map +1 -1
- package/dist/components/component.d.ts +21 -6
- 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 +73 -37
- 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 +10 -22
- 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/detectLexicon.d.ts +13 -0
- package/dist/detectLexicon.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 +273 -16
- 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 +79 -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 +149 -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 +85 -30
- package/dist/op/builders.d.ts.map +1 -1
- package/dist/op/change-signal.d.ts +91 -0
- package/dist/op/change-signal.d.ts.map +1 -0
- package/dist/op/composites/apply-op.d.ts +118 -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-name.d.ts +40 -0
- package/dist/op/gate-name.d.ts.map +1 -0
- package/dist/op/gate-summary.d.ts +43 -0
- package/dist/op/gate-summary.d.ts.map +1 -0
- 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 +29 -9
- 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 +185 -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 +93 -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 +96 -29
- 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/dist/terraform/bridge.d.ts +26 -7
- package/dist/terraform/bridge.d.ts.map +1 -1
- package/dist/terraform/carve-provider.d.ts +28 -2
- package/dist/terraform/carve-provider.d.ts.map +1 -1
- package/dist/terraform/data-source-shape.d.ts +77 -0
- package/dist/terraform/data-source-shape.d.ts.map +1 -0
- package/dist/terraform/graph.d.ts.map +1 -1
- package/dist/terraform/providers/kubernetes.d.ts +5 -0
- package/dist/terraform/providers/kubernetes.d.ts.map +1 -1
- package/dist/terraform/tier-map.d.ts +16 -4
- package/dist/terraform/tier-map.d.ts.map +1 -1
- package/dist/terraform/types.d.ts +8 -0
- package/dist/terraform/types.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 +84 -18
- package/src/audit/discover.test.ts +39 -0
- package/src/audit/discover.ts +202 -18
- 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 +191 -11
- package/src/cli/commands/audit.ts +78 -28
- package/src/cli/commands/build.test.ts +330 -9
- package/src/cli/commands/build.ts +170 -24
- package/src/cli/commands/carve-bridge.test.ts +237 -14
- package/src/cli/commands/carve-bridge.ts +21 -17
- package/src/cli/commands/carve-emit-k8s.test.ts +17 -10
- 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 +194 -1
- package/src/cli/commands/lint.ts +205 -7
- 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 +341 -55
- package/src/cli/handlers/run.test.ts +568 -1295
- package/src/cli/handlers/run.ts +446 -912
- package/src/cli/main.test.ts +22 -16
- package/src/cli/main.ts +66 -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/plugins.test.ts +68 -2
- package/src/cli/plugins.ts +39 -0
- package/src/cli/registry.ts +40 -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 +4 -3
- package/src/components/__fixtures__/neo4j-fanout.json +1 -1
- 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 +28 -12
- package/src/components/cli-support.ts +60 -47
- package/src/components/component-schema.test.ts +18 -2
- package/src/components/component.schema.json +18 -5
- package/src/components/component.test.ts +2 -2
- package/src/components/component.ts +27 -7
- package/src/components/config-defaults.test.ts +2 -2
- package/src/components/driver-output.ts +14 -2
- package/src/components/driver.test.ts +109 -20
- package/src/components/driver.ts +201 -84
- 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/neo4j-fanout.pilot.ts +3 -3
- 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.test.ts +19 -0
- package/src/components/verbs/run-agent.ts +12 -24
- 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/detectLexicon.ts +18 -1
- package/src/discovery/collect.test.ts +3 -3
- package/src/discovery/files.ts +4 -4
- package/src/discovery/fold-import.test.ts +1 -1
- 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 +82 -2
- 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 +3 -3
- 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 +296 -16
- 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 +154 -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/pipeline-change-gate.test.ts +2 -2
- 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 +27 -1
- package/src/lint/rules/comp/comp004-gate-needs-durable-runtime.ts +76 -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 +161 -0
- package/src/op/activities/reconcile.ts +354 -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 +125 -41
- package/src/op/change-signal.test.ts +117 -0
- package/src/op/change-signal.ts +169 -0
- package/src/op/composites/apply-op.ts +218 -0
- package/src/op/composites/composites.test.ts +379 -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 +110 -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 +29 -14
- package/src/op/emulator-lifecycle.ts +1 -2
- package/src/op/gate-name.test.ts +65 -0
- package/src/op/gate-name.ts +60 -0
- package/src/op/gate-summary.ts +84 -0
- 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 +48 -8
- package/src/op/local-executor.test.ts +178 -34
- package/src/op/local-executor.ts +371 -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 +292 -0
- package/src/op/op-ir.ts +419 -0
- package/src/op/op-verb-class.test.ts +2 -2
- package/src/op/op-verb-class.ts +19 -5
- package/src/op/op.test.ts +28 -7
- package/src/op/operator.test.ts +543 -6
- package/src/op/operator.ts +203 -20
- 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 +106 -26
- 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/src/terraform/aws-resources.test.ts +13 -4
- package/src/terraform/bridge.test.ts +22 -9
- package/src/terraform/bridge.ts +89 -28
- package/src/terraform/carve-provider.ts +38 -2
- package/src/terraform/data-source-shape.ts +95 -0
- package/src/terraform/graph.ts +35 -7
- package/src/terraform/providers/kubernetes.ts +48 -2
- package/src/terraform/tier-map.ts +21 -6
- package/src/terraform/types.ts +8 -0
- 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,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LexiconUpgradeOp composite — the runner that dogfoods chant to keep each
|
|
3
|
+
* in-scope lexicon current with its upstream spec (#527, epic #523).
|
|
4
|
+
*
|
|
5
|
+
* The shared tooling (#524) does the regen + surface-diff; the pinned (#525)
|
|
6
|
+
* and rolling (#526) pipelines do the detection. This Op wires them into an
|
|
7
|
+
* audit-style operational layer, modeled on `WorkflowAuditOp` / `PipelineAuditOp`:
|
|
8
|
+
* phases detect → run the right check for the lexicon → surface-diff → finding.
|
|
9
|
+
*
|
|
10
|
+
* It runs one-shot on the **local Op executor** via `chant run` — nothing
|
|
11
|
+
* durable is required for an upgrade check (the scheduled CI runner is the
|
|
12
|
+
* trigger). A `schedule` may still be supplied for continuous re-check; it
|
|
13
|
+
* lands on the Op itself (#2120).
|
|
14
|
+
*
|
|
15
|
+
* Lexicon classification (which check the activity dispatches to):
|
|
16
|
+
* PINNED {k8s, gcp, docker, gitlab} → checkPinnedUpgrade
|
|
17
|
+
* ROLLING {aws, azure, github} → checkRollingUpgrade
|
|
18
|
+
* helm / forgejo are excluded — no upstream spec.
|
|
19
|
+
*
|
|
20
|
+
* Finding-modes mirror ReconcileOp: `report` (default, no external services)
|
|
21
|
+
* | `issue` | `pull-request`. For the epic goal, `pull-request` opens/updates a
|
|
22
|
+
* long-lived branch per lexicon.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* // one-shot, local executor, report only
|
|
27
|
+
* export const { op } = LexiconUpgradeOp({ lexicon: "aws" });
|
|
28
|
+
*
|
|
29
|
+
* // weekly, opening a PR when an upgrade is ready
|
|
30
|
+
* export const { op } = LexiconUpgradeOp({
|
|
31
|
+
* lexicon: "k8s",
|
|
32
|
+
* schedule: "0 6 * * 1",
|
|
33
|
+
* onFinding: "pull-request",
|
|
34
|
+
* });
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* @see #524 — shared regen-validate + surface-diff tooling.
|
|
38
|
+
* @see #525 — pinned-version bump pipeline.
|
|
39
|
+
* @see #526 — rolling-spec drift pipeline.
|
|
40
|
+
*/
|
|
41
|
+
import type { OpResource } from "../resource.js";
|
|
42
|
+
import type { LexiconUpgradeMode, SupportedLexicon } from "../activities/lexicon-upgrade.js";
|
|
43
|
+
/** The in-scope lexicons. helm / forgejo are excluded (no upstream spec). */
|
|
44
|
+
export declare const IN_SCOPE_LEXICONS: readonly SupportedLexicon[];
|
|
45
|
+
export interface LexiconUpgradeOpConfig {
|
|
46
|
+
/** Which in-scope lexicon to check. */
|
|
47
|
+
lexicon: SupportedLexicon;
|
|
48
|
+
/**
|
|
49
|
+
* Op name (kebab-case). Names the Op's output directory and is what `chant
|
|
50
|
+
* run` takes. Defaults to `<lexicon>-upgrade`.
|
|
51
|
+
*/
|
|
52
|
+
name?: string;
|
|
53
|
+
/**
|
|
54
|
+
* Cron expression. When set, it lands on the Op as `schedule` for
|
|
55
|
+
* continuous re-check; omit for one-shot `chant run` on the local executor.
|
|
56
|
+
*/
|
|
57
|
+
schedule?: string;
|
|
58
|
+
/**
|
|
59
|
+
* Absolute path to the lexicon root, forwarded to the activity. Defaults to
|
|
60
|
+
* `<cwd>/lexicons/<lexicon>` at run time.
|
|
61
|
+
*/
|
|
62
|
+
lexiconDir?: string;
|
|
63
|
+
/**
|
|
64
|
+
* What to produce on findings. Default: "report".
|
|
65
|
+
* @default "report"
|
|
66
|
+
*/
|
|
67
|
+
onFinding?: LexiconUpgradeMode;
|
|
68
|
+
}
|
|
69
|
+
export interface LexiconUpgradeOpResources {
|
|
70
|
+
/** Op resource — the upgrade Op, emitted on `chant build`. */
|
|
71
|
+
op: InstanceType<typeof OpResource>;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Build a LexiconUpgradeOp for one lexicon. Rejects out-of-scope lexicons at
|
|
75
|
+
* construction time so a typo never silently produces a no-op Op.
|
|
76
|
+
*/
|
|
77
|
+
export declare function LexiconUpgradeOp(config: LexiconUpgradeOpConfig): LexiconUpgradeOpResources;
|
|
78
|
+
//# sourceMappingURL=lexicon-upgrade-op.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lexicon-upgrade-op.d.ts","sourceRoot":"","sources":["../../../src/op/composites/lexicon-upgrade-op.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAE1F,6EAA6E;AAC7E,eAAO,MAAM,iBAAiB,EAAE,SAAS,gBAAgB,EAU/C,CAAC;AAEX,MAAM,WAAW,sBAAsB;IACrC,uCAAuC;IACvC,OAAO,EAAE,gBAAgB,CAAC;IAC1B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC;AAED,MAAM,WAAW,yBAAyB;IACxC,8DAA8D;IAC9D,EAAE,EAAE,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;CACrC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,GAAG,yBAAyB,CAyC1F"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PipelineAuditOp composite — the live include/component audit of GitLab
|
|
3
|
+
* pipelines as a chant Op with an optional schedule (#303).
|
|
4
|
+
*
|
|
5
|
+
* The gitlab post-synth checks (#297) own everything answerable from the
|
|
6
|
+
* deterministic build. This Op owns *only* the checks that require live
|
|
7
|
+
* resolution against a moving upstream truth — a pinned component/include ref
|
|
8
|
+
* that no longer resolves, an archived or moved upstream project, or a new
|
|
9
|
+
* advisory covering a component/image in use. It sits at **observe** on the
|
|
10
|
+
* lifecycle dial, with a finding-mode (`report | issue | merge-request`) as the
|
|
11
|
+
* **reconcile** step — for GitLab the PR mode is a merge request.
|
|
12
|
+
*
|
|
13
|
+
* Runs one-shot on the local Op executor via `chant run`; a `schedule` puts
|
|
14
|
+
* the cadence on the Op itself (#2120).
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* export const { op } = PipelineAuditOp({
|
|
19
|
+
* name: "pipeline-audit",
|
|
20
|
+
* schedule: "0 6 * * *",
|
|
21
|
+
* onFinding: "merge-request",
|
|
22
|
+
* });
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @see #297 — the deterministic counterpart this freshens.
|
|
26
|
+
*/
|
|
27
|
+
import type { OpResource } from "../resource.js";
|
|
28
|
+
import type { PipelineAuditMode } from "../activities/pipeline-audit.js";
|
|
29
|
+
export interface PipelineAuditOpConfig {
|
|
30
|
+
/** Op name (kebab-case). Names the Op's output directory and is what `chant run` takes. */
|
|
31
|
+
name: string;
|
|
32
|
+
/** Cron expression. When set, it lands on the Op as `schedule`; omit for one-shot. */
|
|
33
|
+
schedule?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Path to the emitted `.gitlab-ci.yml` to audit at run time.
|
|
36
|
+
* @default ".gitlab-ci.yml"
|
|
37
|
+
*/
|
|
38
|
+
pipelineFile?: string;
|
|
39
|
+
/**
|
|
40
|
+
* What to produce on findings. Default: "report".
|
|
41
|
+
* @default "report"
|
|
42
|
+
*/
|
|
43
|
+
onFinding?: PipelineAuditMode;
|
|
44
|
+
}
|
|
45
|
+
export interface PipelineAuditOpResources {
|
|
46
|
+
/** Op resource — the audit Op, emitted on `chant build`. */
|
|
47
|
+
op: InstanceType<typeof OpResource>;
|
|
48
|
+
}
|
|
49
|
+
export declare function PipelineAuditOp(config: PipelineAuditOpConfig): PipelineAuditOpResources;
|
|
50
|
+
//# sourceMappingURL=pipeline-audit-op.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-audit-op.d.ts","sourceRoot":"","sources":["../../../src/op/composites/pipeline-audit-op.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,MAAM,WAAW,qBAAqB;IACpC,2FAA2F;IAC3F,IAAI,EAAE,MAAM,CAAC;IACb,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,4DAA4D;IAC5D,EAAE,EAAE,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;CACrC;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,wBAAwB,CAwBvF"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ReconcileOp composite — the cloud → code workflow as an Op.
|
|
3
|
+
*
|
|
4
|
+
* Keeps source tracking reality: when live drifts from declarations, open a PR
|
|
5
|
+
* that regenerates the affected TypeScript. Mirrors the {@link WatchOp} shape.
|
|
6
|
+
*
|
|
7
|
+
* Phases: snapshot → plan → regenerate (live import) → open PR. The
|
|
8
|
+
* regenerate-and-PR step is the `reconcilePr` activity (#122), which derives
|
|
9
|
+
* the change set from `chant lifecycle plan` and opens a reviewable PR.
|
|
10
|
+
*
|
|
11
|
+
* Runs one-shot on the local Op executor for a `chant run`; with a `schedule`
|
|
12
|
+
* the cadence rides on the Op itself (#2120) for whichever runtime honours it.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* // one-shot, local executor
|
|
17
|
+
* export const { op } = ReconcileOp({ name: "prod-reconcile", env: "prod" });
|
|
18
|
+
*
|
|
19
|
+
* // hourly
|
|
20
|
+
* export const { op } = ReconcileOp({
|
|
21
|
+
* name: "prod-reconcile",
|
|
22
|
+
* env: "prod",
|
|
23
|
+
* schedule: "0 * * * *",
|
|
24
|
+
* scope: { owned: true },
|
|
25
|
+
* });
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @see #112 — stateless-authoritative state model + live import
|
|
29
|
+
*/
|
|
30
|
+
import type { OpResource } from "../resource.js";
|
|
31
|
+
import type { ReconcileMode } from "../activities/reconcile.js";
|
|
32
|
+
export interface ReconcileOpConfig {
|
|
33
|
+
/** Op name (kebab-case). Names the Op's output directory and is what `chant run` takes. */
|
|
34
|
+
name: string;
|
|
35
|
+
/** Environment to reconcile (e.g. "prod"). */
|
|
36
|
+
env: string;
|
|
37
|
+
/**
|
|
38
|
+
* Cron expression. When set, it lands on the Op as `schedule`; omit for
|
|
39
|
+
* one-shot `chant run` on the local executor.
|
|
40
|
+
*/
|
|
41
|
+
schedule?: string;
|
|
42
|
+
/**
|
|
43
|
+
* What to produce on drift. Default: "pull-request".
|
|
44
|
+
* @default "pull-request"
|
|
45
|
+
*/
|
|
46
|
+
onDrift?: ReconcileMode;
|
|
47
|
+
/** Restrict reconciliation to chant-owned resources. */
|
|
48
|
+
scope?: {
|
|
49
|
+
owned?: boolean;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export interface ReconcileOpResources {
|
|
53
|
+
/** Op resource — the snapshot→plan→regenerate→PR Op. */
|
|
54
|
+
op: InstanceType<typeof OpResource>;
|
|
55
|
+
}
|
|
56
|
+
export declare function ReconcileOp(config: ReconcileOpConfig): ReconcileOpResources;
|
|
57
|
+
//# sourceMappingURL=reconcile-op.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconcile-op.d.ts","sourceRoot":"","sources":["../../../src/op/composites/reconcile-op.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,WAAW,iBAAiB;IAChC,2FAA2F;IAC3F,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,wDAAwD;IACxD,KAAK,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,wDAAwD;IACxD,EAAE,EAAE,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;CACrC;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,oBAAoB,CAmD3E"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WatchOp composite — periodic state observation as an Op.
|
|
3
|
+
*
|
|
4
|
+
* Composes existing pieces:
|
|
5
|
+
* - The local executor (`../local-executor.ts`) runs the phases in order and
|
|
6
|
+
* files each step's record under the phase it belongs to
|
|
7
|
+
* - The pre-built lifecycleSnapshot + lifecycleDiff activities
|
|
8
|
+
* - `schedule` puts the cadence on the Op itself (#2120)
|
|
9
|
+
*
|
|
10
|
+
* The cron is Op data, not a resource: `chant operator` ticks on it, the
|
|
11
|
+
* github/gitlab/forgejo generators render it as a CI cron, and a hosting
|
|
12
|
+
* lexicon hands it to its own scheduler.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* export const { op } = WatchOp({
|
|
17
|
+
* name: "prod-watch",
|
|
18
|
+
* env: "prod",
|
|
19
|
+
* schedule: "0,15,30,45 * * * *", // every 15 minutes
|
|
20
|
+
* });
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @see #31 — Continuous observation (the issue this composite addresses)
|
|
24
|
+
*/
|
|
25
|
+
import type { OpResource } from "../resource.js";
|
|
26
|
+
import type { EffectReceiptDeclaration } from "../../effect-receipt.js";
|
|
27
|
+
export interface WatchOpConfig {
|
|
28
|
+
/** Op name (kebab-case). Names the Op's output directory and is what `chant run` takes. */
|
|
29
|
+
name: string;
|
|
30
|
+
/** Environment to snapshot + diff (e.g. "prod"). */
|
|
31
|
+
env: string;
|
|
32
|
+
/**
|
|
33
|
+
* Cron expression controlling how often the watch runs. Omit for a
|
|
34
|
+
* one-shot `chant run` on the local executor.
|
|
35
|
+
* @example "0,15,30,45 * * * *" — every 15 minutes
|
|
36
|
+
* @example "0 * * * *" — hourly
|
|
37
|
+
*/
|
|
38
|
+
schedule?: string;
|
|
39
|
+
/**
|
|
40
|
+
* Run `chant lifecycle diff --live` (queries cloud APIs) instead of the
|
|
41
|
+
* default digest-only diff. Recommended for real drift detection.
|
|
42
|
+
* @default true
|
|
43
|
+
*/
|
|
44
|
+
live?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Effect receipts to check for staleness between change windows (#1834,
|
|
47
|
+
* epic #1703). Typed references only — import each EffectReceipt const.
|
|
48
|
+
* Read-only: the watch reads each receipt through the receipt store
|
|
49
|
+
* (provided by the receipt row's lexicon, #1835) and reports absent or
|
|
50
|
+
* differing values as findings. It never runs an effect and never writes
|
|
51
|
+
* a receipt — the `effect()` step is the sole writer.
|
|
52
|
+
*/
|
|
53
|
+
receipts?: EffectReceiptDeclaration[];
|
|
54
|
+
}
|
|
55
|
+
export interface WatchOpResources {
|
|
56
|
+
/** Op resource — the snapshot+diff Op, emitted on `chant build`. */
|
|
57
|
+
op: InstanceType<typeof OpResource>;
|
|
58
|
+
}
|
|
59
|
+
export declare function WatchOp(config: WatchOpConfig): WatchOpResources;
|
|
60
|
+
//# sourceMappingURL=watch-op.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch-op.d.ts","sourceRoot":"","sources":["../../../src/op/composites/watch-op.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAErE,MAAM,WAAW,aAAa;IAC5B,2FAA2F;IAC3F,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,wBAAwB,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,gBAAgB;IAC/B,oEAAoE;IACpE,EAAE,EAAE,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;CACrC;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,gBAAgB,CA2C/D"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WorkflowAuditOp composite — the live supply-chain audit of GitHub workflows
|
|
3
|
+
* as a chant Op with an optional schedule (#292).
|
|
4
|
+
*
|
|
5
|
+
* The github post-synth checks (#286-#291) own everything answerable from the
|
|
6
|
+
* deterministic build. This Op owns *only* the checks that require live
|
|
7
|
+
* resolution against a moving upstream truth — stale SHA pins, impostor refs,
|
|
8
|
+
* symbolic-ref confusion, pin/comment mismatch, advisories, archived upstreams.
|
|
9
|
+
* It sits at **observe** on the lifecycle dial, with a finding-mode (mirroring
|
|
10
|
+
* `ReconcileOp`: `report | issue | pull-request`) as the **reconcile** step.
|
|
11
|
+
*
|
|
12
|
+
* Runs one-shot on the local Op executor via `chant run`; a `schedule` puts
|
|
13
|
+
* the cadence on the Op itself (#2120), for continuous re-audit between
|
|
14
|
+
* change windows.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* // one-shot, local executor
|
|
19
|
+
* export const { op } = WorkflowAuditOp({ name: "actions-audit" });
|
|
20
|
+
*
|
|
21
|
+
* // daily, opening a PR that bumps a stale pin
|
|
22
|
+
* export const { op } = WorkflowAuditOp({
|
|
23
|
+
* name: "actions-audit",
|
|
24
|
+
* schedule: "0 6 * * *",
|
|
25
|
+
* onFinding: "pull-request",
|
|
26
|
+
* });
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @see #286 — the deterministic counterpart this freshens.
|
|
30
|
+
*/
|
|
31
|
+
import type { OpResource } from "../resource.js";
|
|
32
|
+
import type { WorkflowAuditMode } from "../activities/workflow-audit.js";
|
|
33
|
+
export interface WorkflowAuditOpConfig {
|
|
34
|
+
/** Op name (kebab-case). Names the Op's output directory and is what `chant run` takes. */
|
|
35
|
+
name: string;
|
|
36
|
+
/**
|
|
37
|
+
* Cron expression. When set, it lands on the Op as `schedule` for
|
|
38
|
+
* continuous re-audit; omit for one-shot `chant run` on the local executor.
|
|
39
|
+
*/
|
|
40
|
+
schedule?: string;
|
|
41
|
+
/**
|
|
42
|
+
* Directory of emitted workflow files to audit at run time.
|
|
43
|
+
* @default ".github/workflows"
|
|
44
|
+
*/
|
|
45
|
+
workflowsDir?: string;
|
|
46
|
+
/**
|
|
47
|
+
* What to produce on findings. Default: "report".
|
|
48
|
+
* @default "report"
|
|
49
|
+
*/
|
|
50
|
+
onFinding?: WorkflowAuditMode;
|
|
51
|
+
}
|
|
52
|
+
export interface WorkflowAuditOpResources {
|
|
53
|
+
/** Op resource — generates the audit workflow on `chant build`. */
|
|
54
|
+
op: InstanceType<typeof OpResource>;
|
|
55
|
+
}
|
|
56
|
+
export declare function WorkflowAuditOp(config: WorkflowAuditOpConfig): WorkflowAuditOpResources;
|
|
57
|
+
//# sourceMappingURL=workflow-audit-op.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-audit-op.d.ts","sourceRoot":"","sources":["../../../src/op/composites/workflow-audit-op.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,MAAM,WAAW,qBAAqB;IACpC,2FAA2F;IAC3F,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,mEAAmE;IACnE,EAAE,EAAE,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;CACrC;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,wBAAwB,CA2BvF"}
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
* The issue's illustrative sketch writes a rule's condition as a JS arrow
|
|
6
6
|
* function (`s => s.status === "drifted"`). That reads well but can't
|
|
7
7
|
* actually ship: a rule is evaluated per-tick against live, freshly-observed
|
|
8
|
-
* data inside
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* data inside an activity, and an activity's arguments — including whatever a
|
|
9
|
+
* `ConvergeOp` composite bakes into the Op it builds — must be plain JSON (see
|
|
10
|
+
* `step-output-ref.ts`'s module doc on why a value crossing an activity
|
|
11
|
+
* boundary can't carry a closure). A rule
|
|
12
12
|
* "outside the evaluable subset" is one of the build-time refusals #1484
|
|
13
13
|
* names explicitly, which only makes sense if there IS an evaluable subset
|
|
14
14
|
* to be outside of — so rules here are data: a small comparison language
|
|
@@ -25,7 +25,8 @@
|
|
|
25
25
|
* produces" refusal, satisfied for free. {@link isWellFormedPredicate} is the
|
|
26
26
|
* runtime backstop for a rule assembled by hand (bypassing `when()`/the
|
|
27
27
|
* comparison builders) rather than authored through them, and is what a
|
|
28
|
-
* build-time check (
|
|
28
|
+
* build-time check (OPS014, ../lint/rules/op/ops014-converge-rule-refusals.ts)
|
|
29
|
+
* re-validates the serialized rule table against.
|
|
29
30
|
*/
|
|
30
31
|
/** Comparison operators over a single symptom field. */
|
|
31
32
|
export type FieldComparisonOp = "eq" | "neq" | "gt" | "gte" | "lt" | "lte";
|
|
@@ -59,8 +60,9 @@ export interface AnyOfPredicate<S> {
|
|
|
59
60
|
export type SymptomPredicate<S> = FieldComparisonPredicate<S> | FieldTruthinessPredicate<S> | AllOfPredicate<S> | AnyOfPredicate<S>;
|
|
60
61
|
/**
|
|
61
62
|
* Structural validator for a value claiming to be a {@link SymptomPredicate}
|
|
62
|
-
* — the runtime backstop
|
|
63
|
-
* re-checks a serialized
|
|
63
|
+
* — the runtime backstop OPS014
|
|
64
|
+
* (../lint/rules/op/ops014-converge-rule-refusals.ts) re-checks a serialized
|
|
65
|
+
* rule table against, since nothing forces a rule
|
|
64
66
|
* assembled by hand (rather than through the builders below) to match this
|
|
65
67
|
* shape. Recurses through `allOf`/`anyOf`; `fieldWhitelist`, when given,
|
|
66
68
|
* additionally refuses a field name the symptom record doesn't actually
|
|
@@ -75,9 +77,9 @@ export declare function evaluatePredicate<S>(predicate: SymptomPredicate<S>, sym
|
|
|
75
77
|
* Does a predicate reference the given symptom field anywhere in it,
|
|
76
78
|
* recursing through `allOf`/`anyOf`? The build-time backstop for a claim
|
|
77
79
|
* about a *category* of rule (e.g. "a rule reading `adoptCount`") rather
|
|
78
|
-
* than a single comparison —
|
|
79
|
-
* (
|
|
80
|
-
*
|
|
80
|
+
* than a single comparison — OPS014's adopt-safety check
|
|
81
|
+
* (../lint/rules/op/ops014-converge-rule-refusals.ts) uses this to refuse a
|
|
82
|
+
* rule that both reads `adoptCount` and dispatches a
|
|
81
83
|
* mutating op, rather than merely documenting that authors shouldn't write
|
|
82
84
|
* one.
|
|
83
85
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"converge-rule.d.ts","sourceRoot":"","sources":["../../src/op/converge-rule.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"converge-rule.d.ts","sourceRoot":"","sources":["../../src/op/converge-rule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cron for an Op's own schedule (#2120) — validation at `Op()` construction
|
|
3
|
+
* and minute-granularity matching for `chant operator`'s per-op cadence.
|
|
4
|
+
*
|
|
5
|
+
* `OpConfig.schedule.cron` is runtime-neutral data: the github lexicon turns
|
|
6
|
+
* it into `on.schedule`, a hosting lexicon hands it to its own scheduler,
|
|
7
|
+
* `chant operator` reads it as that Op's tick cadence, and the local one-shot
|
|
8
|
+
* executor ignores it entirely. Nothing here talks to a scheduler.
|
|
9
|
+
*
|
|
10
|
+
* The validator a lexicon's own post-synth cron check imports rather than
|
|
11
|
+
* keeping its own copy:
|
|
12
|
+
* deliberately permissive, a pre-submission guard rather than a full parser,
|
|
13
|
+
* since the final word belongs to whichever scheduler runs the cron.
|
|
14
|
+
*
|
|
15
|
+
* {@link cronMatches} is stricter about what it can *evaluate* than
|
|
16
|
+
* {@link isValidCronExpression} is about what it accepts, so a field carrying
|
|
17
|
+
* a Quartz extension the evaluator does not implement (`L`, `W`, `#`, `?`)
|
|
18
|
+
* matches everything rather than nothing — an operator that ticks too often
|
|
19
|
+
* is a wasted converge, one that never ticks is a silent outage.
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* True when `expr` looks like 5- or 6-field cron. Field-shape only: it does
|
|
23
|
+
* not check that a number is in range for its position, and it accepts the
|
|
24
|
+
* Quartz extensions (`L`, `W`, `#`, `?`) some schedulers take.
|
|
25
|
+
*/
|
|
26
|
+
export declare function isValidCronExpression(expr: string): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* The message `Op()` throws with and a lexicon's post-synth cron check
|
|
29
|
+
* reports, so one wording covers both the build-time refusal and the
|
|
30
|
+
* post-synth diagnostic.
|
|
31
|
+
*/
|
|
32
|
+
export declare function cronSyntaxMessage(expr: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* True when `date` falls on a minute `expr` fires at, in the host's local
|
|
35
|
+
* time zone (the only clock the operator daemon has).
|
|
36
|
+
*
|
|
37
|
+
* A 6-field expression is read as Quartz's `second minute hour dom month dow`
|
|
38
|
+
* and the seconds field is dropped — nothing in chant ticks sub-minute.
|
|
39
|
+
* Day-of-month and day-of-week follow the usual cron rule: when both are
|
|
40
|
+
* restricted, either one matching is enough.
|
|
41
|
+
*/
|
|
42
|
+
export declare function cronMatches(expr: string, date: Date): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* True when `expr` fires at some minute in `(after, upTo]` — what a round
|
|
45
|
+
* asks for an Op it last ticked at `after`. Level-triggered on purpose: a
|
|
46
|
+
* round that arrives late still ticks the Op it owes rather than waiting for
|
|
47
|
+
* the next exact match, and several missed fires collapse into the one tick a
|
|
48
|
+
* convergent verb needs.
|
|
49
|
+
*/
|
|
50
|
+
export declare function cronDueBetween(expr: string, after: Date, upTo: Date): boolean;
|
|
51
|
+
//# sourceMappingURL=cron.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../src/op/cron.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAI3D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AA+CD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAoB7D;AAUD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAa7E"}
|
package/dist/op/discover.d.ts
CHANGED
|
@@ -2,6 +2,12 @@ import type { OpConfig } from "./types.js";
|
|
|
2
2
|
export interface DiscoveredOp {
|
|
3
3
|
config: OpConfig;
|
|
4
4
|
filePath: string;
|
|
5
|
+
/**
|
|
6
|
+
* The export this Op arrived on: `"default"`, or the named export's own
|
|
7
|
+
* name (#2171). Diagnostic only, and the reason a file may carry more than
|
|
8
|
+
* one Op without either becoming ambiguous.
|
|
9
|
+
*/
|
|
10
|
+
exportName: string;
|
|
5
11
|
}
|
|
6
12
|
export interface OpDiscoveryResult {
|
|
7
13
|
ops: Map<string, DiscoveredOp>;
|
|
@@ -12,6 +18,9 @@ export interface OpDiscoveryResult {
|
|
|
12
18
|
* project root (the directory holding `chant.config.ts`/`.json`, walking up
|
|
13
19
|
* from `cwd`), or under the git root when no config exists — see
|
|
14
20
|
* {@link findDiscoveryRoot} (#2058).
|
|
21
|
+
*
|
|
22
|
+
* An Op may be the file's default export or a named one, and a file may hold
|
|
23
|
+
* several. See {@link opsExportedBy} (#2171).
|
|
15
24
|
*/
|
|
16
25
|
export declare function discoverOps(opts?: {
|
|
17
26
|
cwd?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/op/discover.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,QAAQ,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/op/discover.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,QAAQ,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC/B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAmHD;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAAC,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAyCrF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The duration-string parser the Op model uses everywhere a timeout is
|
|
3
|
+
* authored ("5m", "30s", "1h30m", "100ms"). Its own leaf module so both
|
|
4
|
+
* `./local-executor.ts` (activity start-to-close timeouts) and `./gate.ts`
|
|
5
|
+
* (a gate's pending-fact expiry) can reach it without importing each other.
|
|
6
|
+
* Re-exported from `./local-executor.ts`, which is where it lived and where
|
|
7
|
+
* every existing caller still imports it from.
|
|
8
|
+
*/
|
|
9
|
+
/** Parse a duration string ("5m", "30s", "1h30m", "100ms") to milliseconds. Throws when nothing in `s` parses as a quantity+unit. */
|
|
10
|
+
export declare function parseDuration(s: string): number;
|
|
11
|
+
//# sourceMappingURL=duration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duration.d.ts","sourceRoot":"","sources":["../../src/op/duration.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,qIAAqI;AACrI,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAU/C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emulator-lifecycle.d.ts","sourceRoot":"","sources":["../../src/op/emulator-lifecycle.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,aAAa,EAAE,MAAM,CAAC;IACtB,sFAAsF;IACtF,UAAU,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IACxC,+EAA+E;IAC/E,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE;QACT,0EAA0E;QAC1E,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,YAAY,CAAC;IACnB,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/C;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GAAG,SAAS,kBAAkB,EAAE,CAAC;AAErF,8DAA8D;AAC9D,wBAAgB,WAAW,CAAC,WAAW,EAAE,mBAAmB,GAAG,SAAS,GAAG,SAAS,kBAAkB,EAAE,CAGvG;AAKD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAIxE;AAED,0EAA0E;AAC1E,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2FAA2F;IAC3F,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/B;AAED,uDAAuD;AACvD,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC;IAC1C,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,EAAE,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/E,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrE;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,iBAAiB,
|
|
1
|
+
{"version":3,"file":"emulator-lifecycle.d.ts","sourceRoot":"","sources":["../../src/op/emulator-lifecycle.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,aAAa,EAAE,MAAM,CAAC;IACtB,sFAAsF;IACtF,UAAU,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IACxC,+EAA+E;IAC/E,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE;QACT,0EAA0E;QAC1E,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,YAAY,CAAC;IACnB,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/C;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GAAG,SAAS,kBAAkB,EAAE,CAAC;AAErF,8DAA8D;AAC9D,wBAAgB,WAAW,CAAC,WAAW,EAAE,mBAAmB,GAAG,SAAS,GAAG,SAAS,kBAAkB,EAAE,CAGvG;AAKD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAIxE;AAED,0EAA0E;AAC1E,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2FAA2F;IAC3F,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/B;AAED,uDAAuD;AACvD,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC;IAC1C,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,EAAE,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/E,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrE;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,iBAAiB,CA0EvE"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The gate step's name field, and the one-version bridge for the key it used
|
|
3
|
+
* to carry (chant #2202).
|
|
4
|
+
*
|
|
5
|
+
* A gate is a fact on the gate ledger, not a channel: since #2119 nothing is
|
|
6
|
+
* running and nothing is signalled, so the field that names a gate is called
|
|
7
|
+
* `gate` — the same word `chant approve <op> <gate>` takes on the command
|
|
8
|
+
* line. It was called `signalName` through 0.58.0.
|
|
9
|
+
*
|
|
10
|
+
* `signalName` is still read, on `GateStep`, on the component `Gate` step and
|
|
11
|
+
* on the composites' gate options, and a build that sees only the old key
|
|
12
|
+
* warns once. It goes away in 0.60.0: delete this module's
|
|
13
|
+
* {@link DEPRECATED_GATE_KEY_WARNING}, {@link usesDeprecatedGateKey}, the
|
|
14
|
+
* `signalName` branch of {@link gateName}, the optional `signalName` fields
|
|
15
|
+
* that call it, and the schema's `oneOf` once that release is out, leaving
|
|
16
|
+
* `gate` as the only key.
|
|
17
|
+
*/
|
|
18
|
+
import type { OpConfig } from "./types.js";
|
|
19
|
+
/** Either spelling of a gate step's name. `gate` since #2202; `signalName` through 0.59.0. */
|
|
20
|
+
export interface GateNamed {
|
|
21
|
+
gate?: string;
|
|
22
|
+
/** @deprecated Renamed to `gate` in #2202. Accepted through 0.59.0, removed in 0.60.0. */
|
|
23
|
+
signalName?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The gate's name, from whichever key carries it. One place reads the old key,
|
|
27
|
+
* so removing the bridge is a one-file edit rather than a sweep.
|
|
28
|
+
*/
|
|
29
|
+
export declare function gateName(step: GateNamed): string;
|
|
30
|
+
/** True when a step names its gate only with the deprecated key. */
|
|
31
|
+
export declare function usesDeprecatedGateKey(step: GateNamed): boolean;
|
|
32
|
+
/** What a build prints once when it finds a gate step still using the old key. */
|
|
33
|
+
export declare const DEPRECATED_GATE_KEY_WARNING: string;
|
|
34
|
+
/**
|
|
35
|
+
* True when any gate step in an Op's phases (main or `onFailure`, at any
|
|
36
|
+
* nesting depth inside an `effect()`) names itself only with the deprecated
|
|
37
|
+
* key. `chant build` calls this to warn once per build.
|
|
38
|
+
*/
|
|
39
|
+
export declare function opUsesDeprecatedGateKey(config: OpConfig): boolean;
|
|
40
|
+
//# sourceMappingURL=gate-name.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gate-name.d.ts","sourceRoot":"","sources":["../../src/op/gate-name.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAmC,MAAM,SAAS,CAAC;AAEzE,8FAA8F;AAC9F,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0FAA0F;IAC1F,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAEhD;AAED,oEAAoE;AACpE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAE9D;AAED,kFAAkF;AAClF,eAAO,MAAM,2BAA2B,QAE0B,CAAC;AAEnE;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CASjE"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The pending-gate block a CI run leaves where people actually look (#2243).
|
|
3
|
+
*
|
|
4
|
+
* A gated run already prints the gate, the approve command and the expiry to
|
|
5
|
+
* stderr (`./local-output.ts`'s `renderHuman`). In CI that lands in a log
|
|
6
|
+
* nobody opens unless the run is red, which is exactly the run this stops
|
|
7
|
+
* being red. GitHub Actions, Forgejo Actions and Gitea all give a step a
|
|
8
|
+
* markdown scratchpad through `GITHUB_STEP_SUMMARY`, rendered at the top of
|
|
9
|
+
* the run page; anything else that sets the variable gets the same block.
|
|
10
|
+
*
|
|
11
|
+
* That is the whole forge coupling: one environment variable, appended to
|
|
12
|
+
* when it is set, and nothing at all when it is not. No API call, no token,
|
|
13
|
+
* no flag to turn it on.
|
|
14
|
+
*/
|
|
15
|
+
/** What a gated run knows about the gate it stopped on. */
|
|
16
|
+
export interface GatedRunSummary {
|
|
17
|
+
/** The Op (or component) the gate belongs to. */
|
|
18
|
+
op: string;
|
|
19
|
+
/** The gate's name — the second argument to `chant approve`. */
|
|
20
|
+
gate: string;
|
|
21
|
+
/** The gate's authored description, when it has one. */
|
|
22
|
+
description?: string;
|
|
23
|
+
/** ISO-8601 instant the pending fact ages out at. */
|
|
24
|
+
expiresAt?: string;
|
|
25
|
+
/** The approval surface the run resolved, when it knew one. */
|
|
26
|
+
url?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* The markdown block itself. Pure, so a test reads what CI would render
|
|
30
|
+
* without touching a file: op, gate, the exact `chant approve` line, and the
|
|
31
|
+
* ledger path the pending fact was appended to.
|
|
32
|
+
*/
|
|
33
|
+
export declare function gatedRunSummaryMarkdown(summary: GatedRunSummary): string;
|
|
34
|
+
/**
|
|
35
|
+
* Append {@link gatedRunSummaryMarkdown} to the file `GITHUB_STEP_SUMMARY`
|
|
36
|
+
* names, when the variable is set and the file can be written.
|
|
37
|
+
*
|
|
38
|
+
* Returns the path written, or `undefined` when there was nothing to write to.
|
|
39
|
+
* A write that fails is swallowed: a run that already decided its outcome must
|
|
40
|
+
* not turn into a different one because a CI scratchpad was read-only.
|
|
41
|
+
*/
|
|
42
|
+
export declare function writeGatedRunSummary(summary: GatedRunSummary, env?: NodeJS.ProcessEnv): string | undefined;
|
|
43
|
+
//# sourceMappingURL=gate-summary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gate-summary.d.ts","sourceRoot":"","sources":["../../src/op/gate-summary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,2DAA2D;AAC3D,MAAM,WAAW,eAAe;IAC9B,iDAAiD;IACjD,EAAE,EAAE,MAAM,CAAC;IACX,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAuBxE;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,eAAe,EACxB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,GAAG,SAAS,CASpB"}
|