@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
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* just the pre-built composites — so classification walks `OpConfig`'s
|
|
9
9
|
* steps rather than trusting a self-reported tag.
|
|
10
10
|
*
|
|
11
|
-
* There is no existing per-Op verb-class field (`
|
|
11
|
+
* There is no existing per-Op verb-class field (`labels` is a free
|
|
12
12
|
* `Record<string,string>` an author may or may not set — `ApplyOp` tags
|
|
13
13
|
* `{ Apply: "true" }` but nothing requires it, and it carries no verb-class
|
|
14
14
|
* semantics on its own) and no existing "which activity names are
|
|
@@ -37,6 +37,14 @@ export type OpVerbClass = "read-only" | "mutating" | "destructive";
|
|
|
37
37
|
* read-only nor the destructive set is `mutating` by default (fail-closed).
|
|
38
38
|
*/
|
|
39
39
|
export declare function classifyOpVerbClass(config: Pick<OpConfig, "phases" | "onFailure">): OpVerbClass;
|
|
40
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* Does this Op have its own approval gate anywhere in its phases (main or
|
|
42
|
+
* `onFailure`), including one nested inside an effect step?
|
|
43
|
+
*
|
|
44
|
+
* A declaration-time question, not a run-time one: a gate is a fact the
|
|
45
|
+
* executor decides against the ledger when it reaches one (#2119,
|
|
46
|
+
* `./gate.ts`), so this says "this op can stop for a human", never "this op
|
|
47
|
+
* will stop". `OPS014`'s dispatch refusals are the caller that needs it.
|
|
48
|
+
*/
|
|
41
49
|
export declare function isGated(config: Pick<OpConfig, "phases" | "onFailure">): boolean;
|
|
42
50
|
//# sourceMappingURL=op-verb-class.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"op-verb-class.d.ts","sourceRoot":"","sources":["../../src/op/op-verb-class.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;
|
|
1
|
+
{"version":3,"file":"op-verb-class.d.ts","sourceRoot":"","sources":["../../src/op/op-verb-class.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAsC,QAAQ,EAAkB,MAAM,SAAS,CAAC;AAE5F,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,aAAa,CAAC;AA0CnE;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,CAAC,GAAG,WAAW,CA2B/F;AAED;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,CAAC,GAAG,OAAO,CAS/E"}
|
package/dist/op/operator.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `chant operator` (#1485, epic #1487) —
|
|
3
|
-
*
|
|
2
|
+
* `chant operator` (#1485, epic #1487) — durable ticks with no service behind
|
|
3
|
+
* them. A deliberately small daemon: a timer, a lease
|
|
4
4
|
* (../lifecycle/lease.ts), and the existing local executor
|
|
5
5
|
* (./local-executor.ts) in a loop. No new service, no new state store — the
|
|
6
6
|
* lease lives on a git ref, tick state lives on the `chant/lifecycle`
|
|
7
7
|
* orphan branch via the same `convergeTick` activity `chant run <op>`
|
|
8
8
|
* already calls for a single one-shot tick.
|
|
9
9
|
*
|
|
10
|
-
* One round: discover every `ConvergeOp` (
|
|
10
|
+
* One round: discover every `ConvergeOp` (label `Converge:
|
|
11
11
|
* "true"`, optionally filtered to one env), and for each one, try to
|
|
12
12
|
* acquire (or renew) its lease. Win it — run one tick via `runOpLocally` on
|
|
13
13
|
* the Op's own Observe → Converge phases, the identical path `chant run
|
|
@@ -38,9 +38,18 @@
|
|
|
38
38
|
import type { ActivityFn, ActivityProfile } from "./activity-registry.js";
|
|
39
39
|
import { type DiscoveredOp } from "./discover.js";
|
|
40
40
|
import { type OpRunResult } from "./local-executor.js";
|
|
41
|
-
|
|
41
|
+
import type { ChangeSubscription } from "../lexicon.js";
|
|
42
|
+
/**
|
|
43
|
+
* Poll interval between rounds — the operator's own cadence, and the fallback
|
|
44
|
+
* for an Op that declares none. Since #2120 an Op can carry its own
|
|
45
|
+
* `schedule.cron` (`./composites/converge-op.ts`), which this loop honours per
|
|
46
|
+
* Op: the round still wakes every `intervalMs`, but an Op with a cron is
|
|
47
|
+
* ticked only on the minutes that cron fires. Chosen short enough to converge
|
|
48
|
+
* promptly, long enough not to hammer `chant lifecycle plan --live` every few
|
|
49
|
+
* seconds — and short enough that a per-minute cron is not missed.
|
|
50
|
+
*/
|
|
42
51
|
export declare const DEFAULT_OPERATOR_INTERVAL_MS = 60000;
|
|
43
|
-
/** Discover every `ConvergeOp` in the project (`
|
|
52
|
+
/** Discover every `ConvergeOp` in the project (`labels.Converge === "true"`), optionally filtered to one environment. Ops that don't declare an `Env` label are excluded from an `--env`-filtered discovery (there's nothing to match), but included when no `env` filter is given. */
|
|
44
53
|
export declare function discoverConvergeOps(opts?: {
|
|
45
54
|
cwd?: string;
|
|
46
55
|
env?: string;
|
|
@@ -59,6 +68,13 @@ export type OperatorTickEvent = {
|
|
|
59
68
|
op: string;
|
|
60
69
|
env: string;
|
|
61
70
|
heldBy?: string;
|
|
71
|
+
}
|
|
72
|
+
/** The Op declares its own `schedule.cron` (#2120) and this round did not land on a firing minute — the lease was never touched. An Op without a cron is never reported this way: it ticks every round, on `--interval`. */
|
|
73
|
+
| {
|
|
74
|
+
kind: "skipped-not-due";
|
|
75
|
+
op: string;
|
|
76
|
+
env: string;
|
|
77
|
+
cron: string;
|
|
62
78
|
} | {
|
|
63
79
|
kind: "tick-failed";
|
|
64
80
|
op: string;
|
|
@@ -101,6 +117,16 @@ export interface OperatorRoundOptions {
|
|
|
101
117
|
profiles: Record<string, ActivityProfile>;
|
|
102
118
|
now?: () => Date;
|
|
103
119
|
signal?: AbortSignal;
|
|
120
|
+
/**
|
|
121
|
+
* When each Op with its own `schedule.cron` was last considered (#2120) —
|
|
122
|
+
* the state a round needs to answer "has a firing minute passed since I
|
|
123
|
+
* last looked at this Op?". `runOperatorForever` owns one map across
|
|
124
|
+
* rounds; a bare `runOperatorRound` with none given falls back to "is this
|
|
125
|
+
* minute a firing minute", which is what a single round can know on its
|
|
126
|
+
* own. Every considered Op's entry is updated, ticked or not, so a late
|
|
127
|
+
* round makes up exactly one tick rather than a backlog.
|
|
128
|
+
*/
|
|
129
|
+
scheduleState?: Map<string, Date>;
|
|
104
130
|
}
|
|
105
131
|
/**
|
|
106
132
|
* Run exactly one round: for every discovered ConvergeOp (filtered per
|
|
@@ -109,11 +135,67 @@ export interface OperatorRoundOptions {
|
|
|
109
135
|
* assert on it directly without depending on log output.
|
|
110
136
|
*/
|
|
111
137
|
export declare function runOperatorRound(opts: OperatorRoundOptions): Promise<OperatorTickEvent[]>;
|
|
138
|
+
/**
|
|
139
|
+
* One lexicon's change-signal seam, already bound to an environment (#1981).
|
|
140
|
+
*
|
|
141
|
+
* The loop never sees a `LexiconPlugin`: core's operator does not import
|
|
142
|
+
* plugins, and binding happens where plugins are already loaded
|
|
143
|
+
* (`collectChangeSubscribers` in `../cli/plugins.ts`), the same extract-then-
|
|
144
|
+
* thread shape `collectBuildRootContributors` uses for build roots.
|
|
145
|
+
*/
|
|
146
|
+
export interface ChangeSubscriber {
|
|
147
|
+
/** Which lexicon supplies the signal. Log lines only; never a fact. */
|
|
148
|
+
lexicon: string;
|
|
149
|
+
subscribe(ctx: {
|
|
150
|
+
onChange: () => void;
|
|
151
|
+
onError: (message: string) => void;
|
|
152
|
+
signal: AbortSignal;
|
|
153
|
+
}): Promise<ChangeSubscription>;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* What the loop's change-signal machinery reports, alongside the per-op tick
|
|
157
|
+
* events. Separate from {@link OperatorTickEvent} on purpose: none of this is
|
|
158
|
+
* about an Op, and none of it is an observation.
|
|
159
|
+
*/
|
|
160
|
+
export type OperatorSignalEvent =
|
|
161
|
+
/** A lexicon's subscription is live and the loop may now wake early. */
|
|
162
|
+
{
|
|
163
|
+
kind: "subscribed";
|
|
164
|
+
lexicon: string;
|
|
165
|
+
}
|
|
166
|
+
/** Establishing it failed. The loop keeps its timer and retries next round. */
|
|
167
|
+
| {
|
|
168
|
+
kind: "subscribe-failed";
|
|
169
|
+
lexicon: string;
|
|
170
|
+
error: string;
|
|
171
|
+
}
|
|
172
|
+
/** A live subscription died. Reported once; the next round re-subscribes. */
|
|
173
|
+
| {
|
|
174
|
+
kind: "subscription-lost";
|
|
175
|
+
lexicon: string;
|
|
176
|
+
error: string;
|
|
177
|
+
}
|
|
178
|
+
/** A signal shortened the sleep. The round that follows is an ordinary round. */
|
|
179
|
+
| {
|
|
180
|
+
kind: "woken";
|
|
181
|
+
afterMs: number;
|
|
182
|
+
};
|
|
183
|
+
/** Render one signal event as `chant operator`'s log line shape. */
|
|
184
|
+
export declare function formatSignalLine(event: OperatorSignalEvent): string;
|
|
112
185
|
export interface OperatorLoopOptions extends OperatorRoundOptions {
|
|
113
186
|
/** @default DEFAULT_OPERATOR_INTERVAL_MS */
|
|
114
187
|
intervalMs?: number;
|
|
115
188
|
/** Called after every round completes — the CLI's one-line-per-tick log lives here, not inside the loop itself, so a test can drive rounds without capturing stdout. */
|
|
116
189
|
onRound?: (events: OperatorTickEvent[]) => void;
|
|
190
|
+
/**
|
|
191
|
+
* Change-signal seams to keep subscribed for the life of the loop (#1981).
|
|
192
|
+
* Omitted, or empty, and the loop is exactly what it was: a timer.
|
|
193
|
+
*/
|
|
194
|
+
subscribers?: readonly ChangeSubscriber[];
|
|
195
|
+
/** @default DEFAULT_SIGNAL_FLOOR_MS. The shortest gap a signal may force between two rounds. */
|
|
196
|
+
signalFloorMs?: number;
|
|
197
|
+
/** Called for every subscription and wake event. The CLI logs one line each. */
|
|
198
|
+
onSignalEvent?: (event: OperatorSignalEvent) => void;
|
|
117
199
|
}
|
|
118
200
|
/**
|
|
119
201
|
* Run rounds forever, sleeping `intervalMs` between them, until
|
|
@@ -121,6 +203,12 @@ export interface OperatorLoopOptions extends OperatorRoundOptions {
|
|
|
121
203
|
* (issue: "if it dies, nothing breaks and nothing is lost") — this function
|
|
122
204
|
* is exactly `while (!aborted) { round(); sleep(); }`, nothing durable lives
|
|
123
205
|
* in its own memory that a restart would need to recover.
|
|
206
|
+
*
|
|
207
|
+
* With `subscribers` (#1981) the sleep gains a second wake source, and only a
|
|
208
|
+
* wake source. A signal aborts the current sleep; the round that follows is
|
|
209
|
+
* the same round the timer would have run, deriving everything from a fresh
|
|
210
|
+
* observation. Nothing a subscription reports reaches a tick, because the
|
|
211
|
+
* seam has nowhere to put it: `onChange` takes no arguments.
|
|
124
212
|
*/
|
|
125
213
|
export declare function runOperatorForever(opts: OperatorLoopOptions): Promise<void>;
|
|
126
214
|
/** Render one round's events as `chant operator`'s log line shape — one line per ticked/skipped/failed op, reusing each ticked op's own `convergeTick` log line (`OpRunResult`'s outcome attribute doesn't carry it, so this reads the tick's step record's `Remediated`... actually the human-readable summary comes from the ledger, not the run result — see `../cli/handlers/operator.ts` for where `chant operator status` reads it back). This formats what's available from the round itself: which op, which env, and whether it ticked, skipped, or failed. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operator.d.ts","sourceRoot":"","sources":["../../src/op/operator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,
|
|
1
|
+
{"version":3,"file":"operator.d.ts","sourceRoot":"","sources":["../../src/op/operator.ts"],"names":[],"mappings":"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"}
|
|
@@ -77,7 +77,7 @@ export interface ReceiptReadArgs extends ReceiptCheckInput {
|
|
|
77
77
|
export interface ReceiptReadResult {
|
|
78
78
|
/** The receipt's live stored value, or null when absent. */
|
|
79
79
|
current: string | null;
|
|
80
|
-
/** The resolved expectation the
|
|
80
|
+
/** The resolved expectation the effect step compares and later writes. */
|
|
81
81
|
expectation: string;
|
|
82
82
|
/** Convenience: `current === expectation`. */
|
|
83
83
|
applied: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"receipt-store.d.ts","sourceRoot":"","sources":["../../src/op/receipt-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAKL,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACzB,MAAM,mBAAmB,CAAC;AAE3B;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,MAAM,EAAE,mBAAmB,CAAC;IAC5B,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC7D,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtE;AAED;2CAC2C;AAC3C,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,gBAAgB,CAAC;IAC1B;uDACmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,iBAAiB,CAgBtF;AAID,mFAAmF;AACnF,MAAM,WAAW,eAAgB,SAAQ,iBAAiB;CAAG;AAE7D;iEACiE;AACjE,MAAM,WAAW,iBAAiB;IAChC,4DAA4D;IAC5D,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,
|
|
1
|
+
{"version":3,"file":"receipt-store.d.ts","sourceRoot":"","sources":["../../src/op/receipt-store.ts"],"names":[],"mappings":"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"}
|
package/dist/op/resource.d.ts
CHANGED
|
@@ -1,7 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The Declarable resource backing an Op definition.
|
|
3
|
-
* entityType: "
|
|
3
|
+
* entityType: "Chant::Op", lexicon: "chant"
|
|
4
4
|
* Discovered automatically alongside infra files — no pipeline changes needed.
|
|
5
|
+
*
|
|
6
|
+
* An Op is chant's own verb, not a runtime's (#2118, epic #2114): the model,
|
|
7
|
+
* the executor and the ledger all live in core, and a lexicon that hosts runs
|
|
8
|
+
* is one runtime among several. The entity type says so.
|
|
5
9
|
*/
|
|
10
|
+
export declare const OP_ENTITY_TYPE = "Chant::Op";
|
|
6
11
|
export declare const OpResource: new (props: Record<string, unknown>, attributes?: Record<string, unknown>) => import("../index.js").Declarable & Record<string, string>;
|
|
12
|
+
/**
|
|
13
|
+
* Is this entity an Op declaration?
|
|
14
|
+
*
|
|
15
|
+
* Duck-typed on `entityType` rather than `instanceof OpResource` for the same
|
|
16
|
+
* reason `../build.ts`'s dependency inference is: an entity can be built
|
|
17
|
+
* against a different copy of core (a linked lexicon, a child project) and
|
|
18
|
+
* still be the same declaration.
|
|
19
|
+
*/
|
|
20
|
+
export declare function isOpEntity(entity: unknown): boolean;
|
|
7
21
|
//# sourceMappingURL=resource.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/op/resource.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/op/resource.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,cAAc,CAAC;AAE1C,eAAO,MAAM,UAAU,gIAA8C,CAAC;AAEtE;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAEnD"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The op-runtime seam (#2121, epic #2114).
|
|
3
|
+
*
|
|
4
|
+
* An Op is a convergent verb; *where* it runs is a separate question from
|
|
5
|
+
* *what* it does. This module states that question once, as a provider
|
|
6
|
+
* contract, so `chant run` has one dispatch path instead of a branch per
|
|
7
|
+
* runtime. Core ships the `local` provider (./runtimes/local.ts) and never
|
|
8
|
+
* imports a hosting lexicon; a lexicon that hosts runs implements
|
|
9
|
+
* {@link OpRuntimeProvider} and hangs it off `LexiconPlugin.opRuntime`, where
|
|
10
|
+
* `chant run <op> --on <lexicon>` finds it.
|
|
11
|
+
*
|
|
12
|
+
* The record shapes below are the run ledger's (#2118): what a run wrote to
|
|
13
|
+
* `<env>/runs__<op>.jsonl` is what a provider's `status` and `log` read back,
|
|
14
|
+
* so a run's outcome survives the process that produced it. A provider with no
|
|
15
|
+
* ledger behind it (a hosting lexicon reporting a live run) fills the same
|
|
16
|
+
* shape from whatever it does know.
|
|
17
|
+
*/
|
|
18
|
+
import type { OpConfig } from "./types.js";
|
|
19
|
+
import type { StepRecord, OpRunResult } from "./local-executor.js";
|
|
20
|
+
import type { GateResolutionRecord } from "../lifecycle/gate-ledger.js";
|
|
21
|
+
import type { RunComponentsOptions, RunComponentsResult } from "../components/cli-support.js";
|
|
22
|
+
/**
|
|
23
|
+
* How a run ended, or that it has not. `gated` is the state a run reaches when
|
|
24
|
+
* a gate has no recorded resolution — a fact, not a wait (#2119).
|
|
25
|
+
*
|
|
26
|
+
* This is the coarse state a *runtime* reports. The ledger records the
|
|
27
|
+
* executor's own three-state outcome instead ({@link OpRunRecord.status}),
|
|
28
|
+
* which has no `running` or `cancelled`: a record is only written once a run
|
|
29
|
+
* has settled.
|
|
30
|
+
*/
|
|
31
|
+
export type OpRunState = "running" | "completed" | "failed" | "gated" | "cancelled";
|
|
32
|
+
/** Map a settled run's ledger status onto the coarser runtime state. */
|
|
33
|
+
export declare function runStateOf(status: OpRunRecord["status"]): OpRunState;
|
|
34
|
+
/** One step's outcome as the run ledger keeps it — `StepRecord` minus the fields only a live renderer needs. */
|
|
35
|
+
export interface OpRunStepRecord {
|
|
36
|
+
/** The activity function name, or `gate:<signal>` for a gate step. */
|
|
37
|
+
fn: string;
|
|
38
|
+
status: StepRecord["status"];
|
|
39
|
+
durationMs: number;
|
|
40
|
+
/** The step's `outcomeAttribute` capture, when it declared one. */
|
|
41
|
+
outcome?: {
|
|
42
|
+
name: string;
|
|
43
|
+
value: unknown;
|
|
44
|
+
};
|
|
45
|
+
/** Who cleared this gate step and when (#2119), for a gate the run passed. */
|
|
46
|
+
approval?: {
|
|
47
|
+
gate: string;
|
|
48
|
+
resolvedBy: string;
|
|
49
|
+
timestamp: string;
|
|
50
|
+
url?: string;
|
|
51
|
+
};
|
|
52
|
+
/** The failure message, for `status: "fail"`. */
|
|
53
|
+
error?: string;
|
|
54
|
+
}
|
|
55
|
+
/** One phase's steps and the verdict they add up to. */
|
|
56
|
+
export interface OpRunPhaseRecord {
|
|
57
|
+
name: string;
|
|
58
|
+
/** `fail` if any step failed, `skipped` if every step was skipped, else `ok`. */
|
|
59
|
+
status: "ok" | "fail" | "skipped";
|
|
60
|
+
steps: OpRunStepRecord[];
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* A run's current state, as every runtime reports it.
|
|
64
|
+
*
|
|
65
|
+
* `records` and `result` are populated by a runtime that has the executor's
|
|
66
|
+
* own step records to hand (the local one does, for a run it just executed in
|
|
67
|
+
* this process); a runtime answering from the ledger alone omits them rather
|
|
68
|
+
* than inventing them.
|
|
69
|
+
*/
|
|
70
|
+
export interface OpRunStatus {
|
|
71
|
+
op: string;
|
|
72
|
+
runId: string;
|
|
73
|
+
state: OpRunState;
|
|
74
|
+
/** ISO-8601 instant the run started. */
|
|
75
|
+
startedAt: string;
|
|
76
|
+
/** ISO-8601 instant the run settled; absent while it is still running. */
|
|
77
|
+
endedAt?: string;
|
|
78
|
+
/** Per-step records, when the runtime has them. */
|
|
79
|
+
records?: StepRecord[];
|
|
80
|
+
/** The executor's own result, when the runtime is executing in this process. */
|
|
81
|
+
result?: OpRunResult;
|
|
82
|
+
/** The gate this run is waiting on, when `state` is `gated`. */
|
|
83
|
+
gate?: {
|
|
84
|
+
name: string;
|
|
85
|
+
since: string;
|
|
86
|
+
};
|
|
87
|
+
/** Free-text detail for a failed run. */
|
|
88
|
+
error?: string;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* One immutable, settled Op run — the run ledger's line
|
|
92
|
+
* (`../lifecycle/run-ledger.ts`), and what `chant run log <op>` prints a row
|
|
93
|
+
* per.
|
|
94
|
+
*
|
|
95
|
+
* This is where a run's outcome lives now that `OpConfig` no longer carries
|
|
96
|
+
* `searchAttributes` for the generated workflow to upsert (#2118). `labels` is
|
|
97
|
+
* copied off the declaration so a reader can filter runs the way it filters
|
|
98
|
+
* declarations; `outcomes` is every `outcomeAttribute` the run captured, later
|
|
99
|
+
* steps winning over earlier ones for a repeated name, exactly as an upsert
|
|
100
|
+
* would have.
|
|
101
|
+
*/
|
|
102
|
+
export interface OpRunRecord {
|
|
103
|
+
/** Schema version, so an incompatible future shape is detected before being misread. */
|
|
104
|
+
version: 1;
|
|
105
|
+
/** Stable run id — the same string a pending gate fact records for this run. */
|
|
106
|
+
id: string;
|
|
107
|
+
/** The Op's name (`OpConfig.name`). */
|
|
108
|
+
op: string;
|
|
109
|
+
/** The Op's `labels.Env`, or `local` when it declares none. */
|
|
110
|
+
env: string;
|
|
111
|
+
/** ISO-8601 instant the run started. */
|
|
112
|
+
started: string;
|
|
113
|
+
/** ISO-8601 instant the run settled. */
|
|
114
|
+
ended: string;
|
|
115
|
+
/**
|
|
116
|
+
* The executor's three-state outcome. `gated` is neither success nor
|
|
117
|
+
* failure: the run reached a gate nobody has approved, recorded the fact,
|
|
118
|
+
* and stopped (#2119).
|
|
119
|
+
*/
|
|
120
|
+
status: "ok" | "fail" | "gated";
|
|
121
|
+
/** The Op's own `labels`, copied at run time. */
|
|
122
|
+
labels: Record<string, string>;
|
|
123
|
+
/** Every `outcomeAttribute` the run captured, name → value. */
|
|
124
|
+
outcomes: Record<string, unknown>;
|
|
125
|
+
/** Per-phase, per-step status, in execution order. */
|
|
126
|
+
phases: OpRunPhaseRecord[];
|
|
127
|
+
/** The gate the run stopped on, for `status: "gated"`. */
|
|
128
|
+
gate?: {
|
|
129
|
+
name: string;
|
|
130
|
+
since: string;
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
/** An {@link OpRunRecord} before the ledger stamps its version and mints an id. */
|
|
134
|
+
export type OpRunRecordInput = Omit<OpRunRecord, "version" | "id"> & {
|
|
135
|
+
id?: string;
|
|
136
|
+
};
|
|
137
|
+
/** A started run. `result()` settles with the run's final status. */
|
|
138
|
+
export interface OpRunHandle {
|
|
139
|
+
op: string;
|
|
140
|
+
runId: string;
|
|
141
|
+
result(): Promise<OpRunStatus>;
|
|
142
|
+
}
|
|
143
|
+
/** What a caller hands a runtime when it starts a run. */
|
|
144
|
+
export interface OpRunStartOptions {
|
|
145
|
+
/** Build-time parameter bindings, when the caller resolved any. */
|
|
146
|
+
params?: Record<string, unknown>;
|
|
147
|
+
/** Target environment (`--env`). */
|
|
148
|
+
env?: string;
|
|
149
|
+
/**
|
|
150
|
+
* `-p, --profile <name>` (#2124, restored in #2192) — the named connection
|
|
151
|
+
* profile this runtime should target. Only a runtime that has profiles
|
|
152
|
+
* reads it; the local one ignores it, and a runtime that reads it decides
|
|
153
|
+
* for itself what an unknown name means (fountain refuses it rather than
|
|
154
|
+
* falling back to its default).
|
|
155
|
+
*/
|
|
156
|
+
profile?: string;
|
|
157
|
+
/** Called once per settled step, so `--progress-json` can stream. */
|
|
158
|
+
progress?: (record: StepRecord) => void;
|
|
159
|
+
/** Aborts in-flight work (Ctrl-C). */
|
|
160
|
+
signal?: AbortSignal;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* The contract a runtime implements to host Op runs.
|
|
164
|
+
*
|
|
165
|
+
* `chant run` resolves exactly one provider per invocation — the named
|
|
166
|
+
* lexicon's for `--on <name>`, the built-in `local` one otherwise — and every
|
|
167
|
+
* subcommand calls it. A provider that cannot do something (cancel a
|
|
168
|
+
* foreground run, host components) says so by throwing a message the CLI
|
|
169
|
+
* prints verbatim, or by omitting the optional member.
|
|
170
|
+
*/
|
|
171
|
+
export interface OpRuntimeProvider {
|
|
172
|
+
/** How the CLI names this runtime in messages, and what `--on` matches. */
|
|
173
|
+
readonly name: string;
|
|
174
|
+
/** Start a run. Rejects with an actionable Error when it cannot. */
|
|
175
|
+
start(op: OpConfig, opts: OpRunStartOptions): Promise<OpRunHandle>;
|
|
176
|
+
/** The latest run's state, or `undefined` when this runtime has none recorded. */
|
|
177
|
+
status(op: string): Promise<OpRunStatus | undefined>;
|
|
178
|
+
/** Run history, newest first. Empty when nothing is recorded. */
|
|
179
|
+
log(op: string, opts?: {
|
|
180
|
+
limit?: number;
|
|
181
|
+
}): Promise<OpRunRecord[]>;
|
|
182
|
+
/** Latest state for each of `ops`, keyed by op name. */
|
|
183
|
+
list(ops: OpConfig[]): Promise<Map<string, OpRunStatus | undefined>>;
|
|
184
|
+
/** Cancel the active run. `force` is the CLI's confirmation, already checked. */
|
|
185
|
+
cancel(op: string, opts: {
|
|
186
|
+
force: boolean;
|
|
187
|
+
}): Promise<void>;
|
|
188
|
+
/**
|
|
189
|
+
* Wake a run whose gate has just been resolved. The ledger write is the
|
|
190
|
+
* fact and `chant approve` owns it; this is the runtime's chance to act on
|
|
191
|
+
* it. Omit when a run re-reads the ledger on its own.
|
|
192
|
+
*/
|
|
193
|
+
resolveGate?(op: string, gate: string, resolution: GateResolutionRecord): Promise<void>;
|
|
194
|
+
/**
|
|
195
|
+
* Host `chant run --components`. Optional: a runtime without it refuses the
|
|
196
|
+
* flag with one line naming itself.
|
|
197
|
+
*/
|
|
198
|
+
runComponents?(projectPath: string, selector: string, options: RunComponentsOptions): Promise<RunComponentsResult>;
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/op/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The built-in `local` op runtime (#2121, epic #2114).
|
|
3
|
+
*
|
|
4
|
+
* Wraps `runOpLocally` (../local-executor.ts) in the {@link OpRuntimeProvider}
|
|
5
|
+
* contract so `chant run <op>` has one dispatch path whether the run is hosted
|
|
6
|
+
* here or by a lexicon's `opRuntime`. Behaviour is the executor's, unchanged:
|
|
7
|
+
* activities and profiles come from the project's configured lexicons, a gate
|
|
8
|
+
* is decided against the gate ledger and ends the run `gated` (#2119), and
|
|
9
|
+
* Ctrl-C aborts through the caller's `AbortSignal`.
|
|
10
|
+
*
|
|
11
|
+
* Status, log and list read the run ledger (#2118): every run this provider
|
|
12
|
+
* starts appends one `OpRunRecord` to `<env>/runs__<op>.jsonl` on the
|
|
13
|
+
* lifecycle branch, so an answer here outlives the process that produced it
|
|
14
|
+
* and a run started by cron, CI or another machine is visible too. The
|
|
15
|
+
* in-memory history stays as the fallback for the case the ledger cannot cover
|
|
16
|
+
* — a project that is not a checkout, or a run whose append failed — so a
|
|
17
|
+
* `chant run` followed by `chant run status` in the same process still
|
|
18
|
+
* answers.
|
|
19
|
+
*/
|
|
20
|
+
import { type OpRuntimeProvider } from "../runtime.js";
|
|
21
|
+
/**
|
|
22
|
+
* Build the local provider. `projectPath` is where `chant.config.ts` is read
|
|
23
|
+
* from to decide which cloud appliers to load — the same best-effort read the
|
|
24
|
+
* CLI did inline before the seam existed.
|
|
25
|
+
*/
|
|
26
|
+
export declare function createLocalOpRuntime(opts?: {
|
|
27
|
+
projectPath?: string;
|
|
28
|
+
}): OpRuntimeProvider;
|
|
29
|
+
//# sourceMappingURL=local.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../../src/op/runtimes/local.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AASH,OAAO,EAML,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAC;AAwCpB;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,iBAAiB,CAoI3F"}
|
|
@@ -5,14 +5,16 @@
|
|
|
5
5
|
* An Op's steps run in a fixed sequence chant already knows: phases in
|
|
6
6
|
* order, and (within a non-parallel phase) steps in order. Today the only
|
|
7
7
|
* way a value escapes a step is `outcomeAttribute`, which stringifies it
|
|
8
|
-
* into a
|
|
9
|
-
* step can consume. `StepOutputRef` is the mechanism that lets a later
|
|
8
|
+
* into a named run outcome — something to read a run back by, not something a
|
|
9
|
+
* later step can consume. `StepOutputRef` is the mechanism that lets a later
|
|
10
10
|
* step's `args` hold a *reference* to an earlier step's declared return
|
|
11
11
|
* value instead.
|
|
12
12
|
*
|
|
13
13
|
* Deliberately a reference, not an expression: `diff.out.driftedStacks` is
|
|
14
|
-
* a value placeholder
|
|
15
|
-
*
|
|
14
|
+
* a value placeholder that stays inert in the Op's data until the executor
|
|
15
|
+
* substitutes the producing step's recorded result for it, just before the
|
|
16
|
+
* consuming activity is called (`../op/local-executor.ts`'s
|
|
17
|
+
* `resolveStepOutputRefs` over `resultsById`) — never `diff.out.count >
|
|
16
18
|
* 0` or a `.map()` over a reference. That property (an Op is data you can
|
|
17
19
|
* read and know what it does, not a program) is exactly what makes it safe
|
|
18
20
|
* to add this without Ops becoming programs; see the issue's "line not to
|
|
@@ -42,10 +44,10 @@
|
|
|
42
44
|
* Cross-contract type compatibility (chant #1950 pre-merge review, finding
|
|
43
45
|
* 3): `validateStepOutputRefs` checks the producer side (a registered
|
|
44
46
|
* contract with a `returns` schema, and — when `path` is set — that the path
|
|
45
|
-
* resolves on it) and, separately, `validateActivitySteps`/
|
|
47
|
+
* resolves on it) and, separately, `validateActivitySteps`/OPS012 checks a
|
|
46
48
|
* step's `args` against its own contract's `args` schema — but a
|
|
47
49
|
* {@link StepOutputRef} sitting in `args` is a placeholder object at build
|
|
48
|
-
* time, not the value it resolves to, so
|
|
50
|
+
* time, not the value it resolves to, so OPS012 skips it (see
|
|
49
51
|
* `activity-contract.ts`'s `isStepOutputRefValue` guard) rather than
|
|
50
52
|
* false-positive on it. Nothing before this compared the *consumer's*
|
|
51
53
|
* declared type at that position against the *producer's* declared type at
|
|
@@ -89,8 +91,8 @@ declare const STEP_OUTPUT_REF_BRAND: unique symbol;
|
|
|
89
91
|
* A typed reference to a prior step's declared return value. Inert by
|
|
90
92
|
* construction — it carries a producer step id and an optional dot-path
|
|
91
93
|
* into that producer's return schema, resolved by `chant build`
|
|
92
|
-
* (`validateStepOutputRefs`) and compiled by
|
|
93
|
-
* local variable holding the awaited activity result.
|
|
94
|
+
* (`validateStepOutputRefs`) and compiled by a hosting lexicon's serializer
|
|
95
|
+
* into a local variable holding the awaited activity result.
|
|
94
96
|
*/
|
|
95
97
|
export interface StepOutputRef {
|
|
96
98
|
readonly [STEP_OUTPUT_REF_BRAND]: true;
|
|
@@ -151,11 +153,11 @@ export declare function collectStepOutputRefs(value: unknown): StepOutputRef[];
|
|
|
151
153
|
* validateStepOutputRefs}'s checks that don't depend on a contract map, kept
|
|
152
154
|
* as its own export so a caller with no contracts on hand (or that wants to
|
|
153
155
|
* defend against exactly this class of bug regardless of what contracts are
|
|
154
|
-
* registered) can still refuse a scope-invalid reference.
|
|
155
|
-
*
|
|
156
|
-
*
|
|
157
|
-
*
|
|
158
|
-
*
|
|
156
|
+
* registered) can still refuse a scope-invalid reference. A hosting lexicon's
|
|
157
|
+
* own Op serializer is exactly this caller: OPS013 (which calls the fuller
|
|
158
|
+
* {@link validateStepOutputRefs}) protects `chant build`, but a serializer is
|
|
159
|
+
* a public export a caller can invoke directly, bypassing that lint pass —
|
|
160
|
+
* this is its own defense-in-depth.
|
|
159
161
|
*
|
|
160
162
|
* Flags:
|
|
161
163
|
* - a reference authored inside `onFailure`, or inside an `EffectStep`'s
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-output-ref.d.ts","sourceRoot":"","sources":["../../src/op/step-output-ref.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"step-output-ref.d.ts","sourceRoot":"","sources":["../../src/op/step-output-ref.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqFG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAmB,MAAM,SAAS,CAAC;AACvE,OAAO,EAAqD,KAAK,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE3I,QAAA,MAAM,qBAAqB,eAAuC,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,CAAC,qBAAqB,CAAC,EAAE,IAAI,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa;CAAE,CAAC;AAEvE,8FAA8F;AAC9F,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAEtE;AAqBD;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa,CAQhG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAU1E;AAED,8GAA8G;AAC9G,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,EAAE,CAKrE;AAmED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAC,GACtD,qBAAqB,EAAE,CAqEzB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAC,EACvD,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAC/C,qBAAqB,EAAE,CA4EzB"}
|