@intentius/chant 0.57.0 → 0.58.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/audit/catalog.d.ts +51 -1
- package/dist/audit/catalog.d.ts.map +1 -1
- package/dist/audit/core.d.ts +20 -1
- package/dist/audit/core.d.ts.map +1 -1
- package/dist/audit/discover.d.ts +14 -8
- package/dist/audit/discover.d.ts.map +1 -1
- package/dist/audit/lineage.d.ts +10 -0
- package/dist/audit/lineage.d.ts.map +1 -0
- package/dist/audit/prior-art.d.ts +385 -0
- package/dist/audit/prior-art.d.ts.map +1 -0
- package/dist/audit/proof.d.ts +16 -0
- package/dist/audit/proof.d.ts.map +1 -1
- package/dist/audit/report-html.d.ts.map +1 -1
- package/dist/audit/report-model.d.ts +8 -1
- package/dist/audit/report-model.d.ts.map +1 -1
- package/dist/audit/report.d.ts.map +1 -1
- package/dist/audit/rules-doc.d.ts +3 -0
- package/dist/audit/rules-doc.d.ts.map +1 -1
- package/dist/audit/secrets.d.ts +15 -0
- package/dist/audit/secrets.d.ts.map +1 -1
- package/dist/audit/terraform-state.d.ts +46 -0
- package/dist/audit/terraform-state.d.ts.map +1 -0
- package/dist/build.d.ts +17 -1
- package/dist/build.d.ts.map +1 -1
- package/dist/claimed-fields.d.ts +161 -0
- package/dist/claimed-fields.d.ts.map +1 -0
- package/dist/cli/build-params-cli.d.ts +2 -2
- package/dist/cli/command-group.d.ts +14 -0
- package/dist/cli/command-group.d.ts.map +1 -1
- package/dist/cli/commands/audit.d.ts +17 -1
- package/dist/cli/commands/audit.d.ts.map +1 -1
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/check-lexicon-docs.d.ts +1 -1
- package/dist/cli/commands/check-lexicon-examples.d.ts +16 -6
- package/dist/cli/commands/check-lexicon-examples.d.ts.map +1 -1
- package/dist/cli/commands/init-lexicon/templates/codegen.d.ts +1 -0
- package/dist/cli/commands/init-lexicon/templates/codegen.d.ts.map +1 -1
- package/dist/cli/commands/init-lexicon/templates/project.d.ts +7 -0
- package/dist/cli/commands/init-lexicon/templates/project.d.ts.map +1 -1
- package/dist/cli/commands/init-lexicon.d.ts.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/lint.d.ts.map +1 -1
- package/dist/cli/commands/onboard.d.ts +2 -0
- package/dist/cli/commands/onboard.d.ts.map +1 -1
- package/dist/cli/handlers/build.d.ts.map +1 -1
- package/dist/cli/handlers/lifecycle.d.ts.map +1 -1
- package/dist/cli/handlers/operator.d.ts +82 -16
- package/dist/cli/handlers/operator.d.ts.map +1 -1
- package/dist/cli/handlers/run.d.ts +49 -42
- package/dist/cli/handlers/run.d.ts.map +1 -1
- package/dist/cli/main.d.ts +28 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/mcp/op-tools.d.ts +16 -1
- package/dist/cli/mcp/op-tools.d.ts.map +1 -1
- package/dist/cli/mcp/resource-handlers.d.ts.map +1 -1
- package/dist/cli/mcp/resources/context.d.ts.map +1 -1
- package/dist/cli/registry.d.ts +26 -9
- package/dist/cli/registry.d.ts.map +1 -1
- package/dist/codegen/generate-post-synth-barrel.d.ts +1 -1
- package/dist/components/auto-release.d.ts +10 -20
- package/dist/components/auto-release.d.ts.map +1 -1
- package/dist/components/capability.d.ts +4 -4
- package/dist/components/cli-support.d.ts +20 -21
- package/dist/components/cli-support.d.ts.map +1 -1
- package/dist/components/component.d.ts +3 -3
- package/dist/components/component.d.ts.map +1 -1
- package/dist/components/driver-output.d.ts.map +1 -1
- package/dist/components/driver.d.ts +66 -36
- package/dist/components/driver.d.ts.map +1 -1
- package/dist/components/index.d.ts +1 -2
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/manifest-persistence.d.ts +1 -9
- package/dist/components/manifest-persistence.d.ts.map +1 -1
- package/dist/components/run-progress.d.ts +6 -6
- package/dist/components/run-progress.d.ts.map +1 -1
- package/dist/components/verbs/run-agent.d.ts +9 -15
- package/dist/components/verbs/run-agent.d.ts.map +1 -1
- package/dist/components/verbs/verify.d.ts +2 -2
- package/dist/deep-observation.d.ts +17 -0
- package/dist/deep-observation.d.ts.map +1 -1
- package/dist/discovery/files.d.ts +4 -4
- package/dist/discovery/fold-import.d.ts.map +1 -1
- package/dist/discovery/param-deps.d.ts +33 -0
- package/dist/discovery/param-deps.d.ts.map +1 -1
- package/dist/discovery/sandbox/bundle.d.ts.map +1 -1
- package/dist/discovery/sandbox/config-wire.d.ts +2 -2
- package/dist/fold/foldable-helpers.d.ts +5 -1
- package/dist/fold/foldable-helpers.d.ts.map +1 -1
- package/dist/fold-provenance.d.ts +236 -0
- package/dist/fold-provenance.d.ts.map +1 -0
- package/dist/graph-ops.d.ts +1 -1
- package/dist/held-elsewhere.d.ts +85 -0
- package/dist/held-elsewhere.d.ts.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/kubectl-context.d.ts +3 -3
- package/dist/lexicon-config.d.ts +4 -4
- package/dist/lexicon-plugin-helpers.d.ts +1 -1
- package/dist/lexicon.d.ts +104 -14
- package/dist/lexicon.d.ts.map +1 -1
- package/dist/lifecycle/change-set.d.ts +13 -0
- package/dist/lifecycle/change-set.d.ts.map +1 -1
- package/dist/lifecycle/deep-diff.d.ts +133 -6
- package/dist/lifecycle/deep-diff.d.ts.map +1 -1
- package/dist/lifecycle/deep-observe.d.ts.map +1 -1
- package/dist/lifecycle/gate-ledger.d.ts +71 -3
- package/dist/lifecycle/gate-ledger.d.ts.map +1 -1
- package/dist/lifecycle/index.d.ts +1 -0
- package/dist/lifecycle/index.d.ts.map +1 -1
- package/dist/lifecycle/release-ledger.d.ts +2 -2
- package/dist/lifecycle/run-ledger.d.ts +53 -0
- package/dist/lifecycle/run-ledger.d.ts.map +1 -0
- package/dist/lifecycle/symptoms.d.ts +3 -3
- package/dist/lifecycle/symptoms.d.ts.map +1 -1
- package/dist/lint/config.d.ts +81 -2
- package/dist/lint/config.d.ts.map +1 -1
- package/dist/lint/post-synth.d.ts +55 -2
- package/dist/lint/post-synth.d.ts.map +1 -1
- package/dist/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.d.ts +1 -1
- package/dist/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.d.ts.map +1 -1
- package/dist/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.d.ts +1 -1
- package/dist/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.d.ts.map +1 -1
- package/dist/lint/rules/comp/comp004-gate-needs-durable-runtime.d.ts +44 -0
- package/dist/lint/rules/comp/comp004-gate-needs-durable-runtime.d.ts.map +1 -0
- package/dist/lint/rules/comp/index.d.ts +1 -1
- package/dist/lint/rules/comp/index.d.ts.map +1 -1
- package/dist/lint/rules/op/index.d.ts +16 -0
- package/dist/lint/rules/op/index.d.ts.map +1 -0
- package/dist/lint/rules/op/ops012-activity-contract.d.ts +27 -0
- package/dist/lint/rules/op/ops012-activity-contract.d.ts.map +1 -0
- package/dist/lint/rules/op/ops013-step-output-ref.d.ts +61 -0
- package/dist/lint/rules/op/ops013-step-output-ref.d.ts.map +1 -0
- package/dist/lint/rules/op/ops014-converge-rule-refusals.d.ts +55 -0
- package/dist/lint/rules/op/ops014-converge-rule-refusals.d.ts.map +1 -0
- package/dist/lint/rules/op/support.d.ts +12 -0
- package/dist/lint/rules/op/support.d.ts.map +1 -0
- package/dist/lint/suppressions.d.ts +108 -0
- package/dist/lint/suppressions.d.ts.map +1 -0
- package/dist/live-endpoint.d.ts +1 -1
- package/dist/op/activities/activity-contracts.d.ts +54 -0
- package/dist/op/activities/activity-contracts.d.ts.map +1 -0
- package/dist/op/activities/apply.d.ts +262 -0
- package/dist/op/activities/apply.d.ts.map +1 -0
- package/dist/op/activities/build.d.ts +13 -0
- package/dist/op/activities/build.d.ts.map +1 -0
- package/dist/op/activities/converge.d.ts +110 -0
- package/dist/op/activities/converge.d.ts.map +1 -0
- package/dist/op/activities/env-teardown.d.ts +76 -0
- package/dist/op/activities/env-teardown.d.ts.map +1 -0
- package/dist/op/activities/guard-validate.d.ts +64 -0
- package/dist/op/activities/guard-validate.d.ts.map +1 -0
- package/dist/op/activities/http-check.d.ts +34 -0
- package/dist/op/activities/http-check.d.ts.map +1 -0
- package/dist/op/activities/index.d.ts +31 -0
- package/dist/op/activities/index.d.ts.map +1 -0
- package/dist/op/activities/lexicon-upgrade.d.ts +182 -0
- package/dist/op/activities/lexicon-upgrade.d.ts.map +1 -0
- package/dist/op/activities/lifecycle.d.ts +42 -0
- package/dist/op/activities/lifecycle.d.ts.map +1 -0
- package/dist/op/activities/pipeline-audit.d.ts +84 -0
- package/dist/op/activities/pipeline-audit.d.ts.map +1 -0
- package/dist/op/activities/policy.d.ts +17 -0
- package/dist/op/activities/policy.d.ts.map +1 -0
- package/dist/op/activities/reconcile.d.ts +89 -0
- package/dist/op/activities/reconcile.d.ts.map +1 -0
- package/dist/op/activities/shell.d.ts +13 -0
- package/dist/op/activities/shell.d.ts.map +1 -0
- package/dist/op/activities/teardown.d.ts +10 -0
- package/dist/op/activities/teardown.d.ts.map +1 -0
- package/dist/op/activities/util.d.ts +7 -0
- package/dist/op/activities/util.d.ts.map +1 -0
- package/dist/op/activities/wait.d.ts +28 -0
- package/dist/op/activities/wait.d.ts.map +1 -0
- package/dist/op/activities/workflow-audit.d.ts +92 -0
- package/dist/op/activities/workflow-audit.d.ts.map +1 -0
- package/dist/op/activity-contract-registry.d.ts +76 -0
- package/dist/op/activity-contract-registry.d.ts.map +1 -0
- package/dist/op/activity-contract.d.ts +25 -18
- package/dist/op/activity-contract.d.ts.map +1 -1
- package/dist/op/activity-failure.d.ts +28 -0
- package/dist/op/activity-failure.d.ts.map +1 -0
- package/dist/op/activity-profiles.d.ts +118 -0
- package/dist/op/activity-profiles.d.ts.map +1 -0
- package/dist/op/activity-registry.d.ts +22 -38
- package/dist/op/activity-registry.d.ts.map +1 -1
- package/dist/op/activity-runtime.d.ts +3 -14
- package/dist/op/activity-runtime.d.ts.map +1 -1
- package/dist/op/builders.d.ts +84 -29
- package/dist/op/builders.d.ts.map +1 -1
- package/dist/op/composites/apply-op.d.ts +113 -0
- package/dist/op/composites/apply-op.d.ts.map +1 -0
- package/dist/op/composites/converge-op.d.ts +120 -0
- package/dist/op/composites/converge-op.d.ts.map +1 -0
- package/dist/op/composites/index.d.ts +26 -0
- package/dist/op/composites/index.d.ts.map +1 -0
- package/dist/op/composites/lexicon-upgrade-op.d.ts +78 -0
- package/dist/op/composites/lexicon-upgrade-op.d.ts.map +1 -0
- package/dist/op/composites/pipeline-audit-op.d.ts +50 -0
- package/dist/op/composites/pipeline-audit-op.d.ts.map +1 -0
- package/dist/op/composites/reconcile-op.d.ts +57 -0
- package/dist/op/composites/reconcile-op.d.ts.map +1 -0
- package/dist/op/composites/watch-op.d.ts +60 -0
- package/dist/op/composites/watch-op.d.ts.map +1 -0
- package/dist/op/composites/workflow-audit-op.d.ts +57 -0
- package/dist/op/composites/workflow-audit-op.d.ts.map +1 -0
- package/dist/op/converge-rule.d.ts +12 -10
- package/dist/op/converge-rule.d.ts.map +1 -1
- package/dist/op/cron.d.ts +51 -0
- package/dist/op/cron.d.ts.map +1 -0
- package/dist/op/discover.d.ts +9 -0
- package/dist/op/discover.d.ts.map +1 -1
- package/dist/op/duration.d.ts +11 -0
- package/dist/op/duration.d.ts.map +1 -0
- package/dist/op/emulator-lifecycle.d.ts.map +1 -1
- package/dist/op/gate.d.ts +90 -0
- package/dist/op/gate.d.ts.map +1 -0
- package/dist/op/generate-pipeline.d.ts +9 -0
- package/dist/op/generate-pipeline.d.ts.map +1 -1
- package/dist/op/index.d.ts +23 -7
- package/dist/op/index.d.ts.map +1 -1
- package/dist/op/local-executor.d.ts +114 -28
- package/dist/op/local-executor.d.ts.map +1 -1
- package/dist/op/local-output.d.ts +11 -1
- package/dist/op/local-output.d.ts.map +1 -1
- package/dist/op/op-ir.d.ts +184 -0
- package/dist/op/op-ir.d.ts.map +1 -0
- package/dist/op/op-verb-class.d.ts +10 -2
- package/dist/op/op-verb-class.d.ts.map +1 -1
- package/dist/op/operator.d.ts +30 -5
- package/dist/op/operator.d.ts.map +1 -1
- package/dist/op/receipt-store.d.ts +1 -1
- package/dist/op/receipt-store.d.ts.map +1 -1
- package/dist/op/resource.d.ts +15 -1
- package/dist/op/resource.d.ts.map +1 -1
- package/dist/op/runtime.d.ts +200 -0
- package/dist/op/runtime.d.ts.map +1 -0
- package/dist/op/runtimes/local.d.ts +29 -0
- package/dist/op/runtimes/local.d.ts.map +1 -0
- package/dist/op/step-output-ref.d.ts +15 -13
- package/dist/op/step-output-ref.d.ts.map +1 -1
- package/dist/op/types.d.ts +79 -27
- package/dist/op/types.d.ts.map +1 -1
- package/dist/ownership.d.ts +1 -1
- package/dist/provenance.d.ts +21 -0
- package/dist/provenance.d.ts.map +1 -1
- package/dist/serializer-walker.d.ts.map +1 -1
- package/package.json +6 -1
- package/src/audit/catalog.test.ts +79 -3
- package/src/audit/catalog.ts +111 -13
- package/src/audit/core.test.ts +26 -0
- package/src/audit/core.ts +61 -17
- package/src/audit/discover.test.ts +39 -0
- package/src/audit/discover.ts +91 -15
- package/src/audit/lineage.ts +100 -0
- package/src/audit/prior-art.ts +153 -0
- package/src/audit/proof.test.ts +67 -0
- package/src/audit/proof.ts +70 -0
- package/src/audit/report-html.ts +9 -4
- package/src/audit/report-model.ts +16 -2
- package/src/audit/report.test.ts +33 -0
- package/src/audit/report.ts +5 -3
- package/src/audit/rules-doc.test.ts +34 -2
- package/src/audit/rules-doc.ts +82 -9
- package/src/audit/secrets.ts +15 -3
- package/src/audit/terraform-state.test.ts +144 -0
- package/src/audit/terraform-state.ts +131 -0
- package/src/build.ts +31 -1
- package/src/claimed-fields.test.ts +145 -0
- package/src/claimed-fields.ts +208 -0
- package/src/cli/build-params-cli.ts +2 -2
- package/src/cli/command-group.ts +14 -0
- package/src/cli/commands/__fixtures__/audit-terraform/infra/.terraform/providers/lock.txt +1 -0
- package/src/cli/commands/__fixtures__/audit-terraform/infra/main.tf +1 -0
- package/src/cli/commands/__fixtures__/audit-terraform/infra/modules/foo/main.tf +1 -0
- package/src/cli/commands/__fixtures__/audit-terraform/infra/variables.tf +3 -0
- package/src/cli/commands/__fixtures__/init-lexicon-output/package.json +13 -4
- package/src/cli/commands/__fixtures__/init-lexicon-output/src/codegen/docs-cli.ts +4 -0
- package/src/cli/commands/__fixtures__/init-lexicon-output/src/codegen/package.ts +1 -0
- package/src/cli/commands/__fixtures__/init-lexicon-output/src/package-cli.ts +21 -0
- package/src/cli/commands/__snapshots__/init-lexicon.test.ts.snap +1 -0
- package/src/cli/commands/audit.test.ts +189 -11
- package/src/cli/commands/audit.ts +73 -27
- package/src/cli/commands/build.test.ts +292 -9
- package/src/cli/commands/build.ts +156 -24
- package/src/cli/commands/check-lexicon-docs.ts +1 -1
- package/src/cli/commands/check-lexicon-examples.test.ts +29 -1
- package/src/cli/commands/check-lexicon-examples.ts +42 -10
- package/src/cli/commands/init-lexicon/templates/codegen.ts +9 -0
- package/src/cli/commands/init-lexicon/templates/project.ts +44 -4
- package/src/cli/commands/init-lexicon.test.ts +97 -2
- package/src/cli/commands/init-lexicon.ts +4 -2
- package/src/cli/commands/init.test.ts +35 -1
- package/src/cli/commands/init.ts +14 -3
- package/src/cli/commands/lint.test.ts +48 -0
- package/src/cli/commands/lint.ts +123 -0
- package/src/cli/commands/onboard.test.ts +75 -0
- package/src/cli/commands/onboard.ts +54 -23
- package/src/cli/handlers/build.test.ts +81 -1
- package/src/cli/handlers/build.ts +15 -1
- package/src/cli/handlers/graph.test.ts +3 -3
- package/src/cli/handlers/lifecycle.test.ts +195 -12
- package/src/cli/handlers/lifecycle.ts +123 -6
- package/src/cli/handlers/misc.ts +1 -1
- package/src/cli/handlers/operator.test.ts +183 -11
- package/src/cli/handlers/operator.ts +260 -55
- package/src/cli/handlers/run.test.ts +431 -1287
- package/src/cli/handlers/run.ts +365 -915
- package/src/cli/main.test.ts +23 -15
- package/src/cli/main.ts +88 -33
- package/src/cli/mcp/op-tools.ts +147 -88
- package/src/cli/mcp/resource-handlers.ts +10 -37
- package/src/cli/mcp/resources/context.ts +11 -12
- package/src/cli/mcp/server.test.ts +25 -27
- package/src/cli/mcp/server.ts +2 -2
- package/src/cli/registry.ts +26 -9
- package/src/codegen/docs.ts +1 -1
- package/src/codegen/generate-post-synth-barrel.test.ts +1 -1
- package/src/codegen/generate-post-synth-barrel.ts +1 -1
- package/src/components/README.md +3 -2
- package/src/components/auto-release.test.ts +4 -20
- package/src/components/auto-release.ts +17 -42
- package/src/components/capability.ts +4 -4
- package/src/components/cli-support.test.ts +10 -5
- package/src/components/cli-support.ts +52 -44
- package/src/components/component.schema.json +2 -2
- package/src/components/component.ts +3 -3
- package/src/components/driver-output.ts +14 -2
- package/src/components/driver.test.ts +92 -22
- package/src/components/driver.ts +193 -83
- package/src/components/index.ts +1 -6
- package/src/components/manifest-persistence.test.ts +2 -20
- package/src/components/manifest-persistence.ts +4 -24
- package/src/components/pilots/pilots-lint-clean.test.ts +11 -10
- package/src/components/run-progress.ts +6 -6
- package/src/components/verbs/run-agent.ts +11 -17
- package/src/components/verbs/verify.ts +2 -2
- package/src/deep-observation.test.ts +75 -0
- package/src/deep-observation.ts +48 -0
- package/src/discovery/collect.test.ts +3 -3
- package/src/discovery/files.ts +4 -4
- package/src/discovery/fold-import.ts +105 -2
- package/src/discovery/param-deps.test.ts +112 -1
- package/src/discovery/param-deps.ts +193 -0
- package/src/discovery/sandbox/bundle.ts +15 -1
- package/src/discovery/sandbox/config-wire.test.ts +2 -2
- package/src/discovery/sandbox/config-wire.ts +2 -2
- package/src/fold/fold.test.ts +56 -0
- package/src/fold/foldable-helpers.ts +81 -1
- package/src/fold-provenance-exclusion.test.ts +186 -0
- package/src/fold-provenance.test.ts +495 -0
- package/src/fold-provenance.ts +441 -0
- package/src/graph-ops.test.ts +2 -2
- package/src/graph-ops.ts +1 -1
- package/src/held-elsewhere.test.ts +102 -0
- package/src/held-elsewhere.ts +114 -0
- package/src/index.ts +3 -0
- package/src/kubectl-context.ts +3 -3
- package/src/lexicon-config.test.ts +5 -5
- package/src/lexicon-config.ts +4 -4
- package/src/lexicon-plugin-helpers.ts +1 -1
- package/src/lexicon.ts +120 -14
- package/src/lifecycle/change-set.test.ts +49 -0
- package/src/lifecycle/change-set.ts +67 -0
- package/src/lifecycle/converge-ledger.ts +1 -1
- package/src/lifecycle/deep-diff.test.ts +267 -14
- package/src/lifecycle/deep-diff.ts +217 -14
- package/src/lifecycle/deep-observe.test.ts +3 -1
- package/src/lifecycle/deep-observe.ts +16 -6
- package/src/lifecycle/gate-ledger.test.ts +74 -2
- package/src/lifecycle/gate-ledger.ts +143 -36
- package/src/lifecycle/index.ts +1 -0
- package/src/lifecycle/release-ledger.ts +2 -2
- package/src/lifecycle/run-ledger.test.ts +268 -0
- package/src/lifecycle/run-ledger.ts +201 -0
- package/src/lifecycle/symptoms.ts +3 -3
- package/src/lint/config.test.ts +82 -1
- package/src/lint/config.ts +112 -3
- package/src/lint/policy.test.ts +1 -1
- package/src/lint/post-synth.test.ts +31 -0
- package/src/lint/post-synth.ts +54 -1
- package/src/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.ts +2 -2
- package/src/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.ts +1 -1
- package/src/lint/rules/comp/comp.test.ts +1 -1
- package/src/lint/rules/comp/comp004-gate-needs-durable-runtime.ts +74 -0
- package/src/lint/rules/comp/index.ts +3 -3
- package/src/lint/rules/op/index.ts +23 -0
- package/src/lint/rules/op/ops012-activity-contract.test.ts +161 -0
- package/src/lint/rules/op/ops012-activity-contract.ts +64 -0
- package/src/lint/rules/op/ops013-step-output-ref.test.ts +237 -0
- package/src/lint/rules/op/ops013-step-output-ref.ts +98 -0
- package/src/lint/rules/op/ops014-converge-rule-refusals.test.ts +263 -0
- package/src/lint/rules/op/ops014-converge-rule-refusals.ts +179 -0
- package/src/lint/rules/op/support.ts +11 -0
- package/src/lint/suppressions.test.ts +163 -0
- package/src/lint/suppressions.ts +204 -0
- package/src/live-endpoint.ts +1 -1
- package/src/op/activities/activity-contracts.ts +66 -0
- package/src/op/activities/apply.test.ts +567 -0
- package/src/op/activities/apply.ts +662 -0
- package/src/op/activities/build.ts +26 -0
- package/src/op/activities/converge.test.ts +330 -0
- package/src/op/activities/converge.ts +449 -0
- package/src/op/activities/env-teardown.test.ts +187 -0
- package/src/op/activities/env-teardown.ts +171 -0
- package/src/op/activities/guard-validate.test.ts +139 -0
- package/src/op/activities/guard-validate.ts +223 -0
- package/src/op/activities/http-check.test.ts +48 -0
- package/src/op/activities/http-check.ts +55 -0
- package/src/op/activities/index.ts +119 -0
- package/src/op/activities/lexicon-upgrade.test.ts +492 -0
- package/src/op/activities/lexicon-upgrade.ts +673 -0
- package/src/op/activities/lifecycle.ts +85 -0
- package/src/op/activities/pipeline-audit.test.ts +67 -0
- package/src/op/activities/pipeline-audit.ts +201 -0
- package/src/op/activities/policy.test.ts +19 -0
- package/src/op/activities/policy.ts +37 -0
- package/src/op/activities/reconcile.test.ts +81 -0
- package/src/op/activities/reconcile.ts +187 -0
- package/src/op/activities/shell.ts +26 -0
- package/src/op/activities/teardown.ts +22 -0
- package/src/op/activities/util.ts +6 -0
- package/src/op/activities/wait.ts +69 -0
- package/src/op/activities/workflow-audit.test.ts +90 -0
- package/src/op/activities/workflow-audit.ts +203 -0
- package/src/op/activity-contract-registry.test.ts +98 -0
- package/src/op/activity-contract-registry.ts +114 -0
- package/src/op/activity-contract.test.ts +1 -1
- package/src/op/activity-contract.ts +37 -33
- package/src/op/activity-failure.ts +34 -0
- package/src/op/activity-profiles.test.ts +56 -0
- package/src/op/activity-profiles.ts +116 -0
- package/src/op/activity-registry.test.ts +37 -28
- package/src/op/activity-registry.ts +27 -56
- package/src/op/activity-runtime.ts +3 -47
- package/src/op/builders-exports.test.ts +0 -49
- package/src/op/builders-typed.test.ts +164 -0
- package/src/op/builders.ts +123 -39
- package/src/op/composites/apply-op.ts +208 -0
- package/src/op/composites/composites.test.ts +366 -0
- package/src/op/composites/converge-op.test.ts +168 -0
- package/src/op/composites/converge-op.ts +214 -0
- package/src/op/composites/index.ts +26 -0
- package/src/op/composites/lexicon-upgrade-op.test.ts +68 -0
- package/src/op/composites/lexicon-upgrade-op.ts +134 -0
- package/src/op/composites/pipeline-audit-op.test.ts +25 -0
- package/src/op/composites/pipeline-audit-op.ts +78 -0
- package/src/op/composites/reconcile-op.test.ts +51 -0
- package/src/op/composites/reconcile-op.ts +107 -0
- package/src/op/composites/watch-op.ts +108 -0
- package/src/op/composites/workflow-audit-op.test.ts +25 -0
- package/src/op/composites/workflow-audit-op.ts +88 -0
- package/src/op/converge-rule.ts +12 -10
- package/src/op/cron.test.ts +128 -0
- package/src/op/cron.ts +149 -0
- package/src/op/discover-root.test.ts +105 -1
- package/src/op/discover.test.ts +6 -2
- package/src/op/discover.ts +84 -16
- package/src/op/duration.ts +21 -0
- package/src/op/effect-step.test.ts +26 -11
- package/src/op/emulator-lifecycle.ts +1 -2
- package/src/op/gate.ts +155 -0
- package/src/op/generate-pipeline.test.ts +65 -3
- package/src/op/generate-pipeline.ts +19 -2
- package/src/op/index.ts +39 -6
- package/src/op/local-executor.test.ts +163 -34
- package/src/op/local-executor.ts +370 -102
- package/src/op/local-output.test.ts +95 -11
- package/src/op/local-output.ts +33 -4
- package/src/op/op-ir.test.ts +281 -0
- package/src/op/op-ir.ts +417 -0
- package/src/op/op-verb-class.ts +19 -5
- package/src/op/op.test.ts +26 -5
- package/src/op/operator.test.ts +175 -6
- package/src/op/operator.ts +63 -16
- package/src/op/receipt-store.ts +1 -1
- package/src/op/resource.ts +20 -2
- package/src/op/runtime.ts +203 -0
- package/src/op/runtimes/local.test.ts +181 -0
- package/src/op/runtimes/local.ts +212 -0
- package/src/op/step-output-ref.ts +15 -13
- package/src/op/types.ts +84 -24
- package/src/ownership.ts +1 -1
- package/src/provenance.test.ts +6 -0
- package/src/provenance.ts +21 -1
- package/src/serializer-walker.test.ts +42 -0
- package/src/serializer-walker.ts +21 -2
- package/dist/cli/handlers/op-progress.d.ts +0 -90
- package/dist/cli/handlers/op-progress.d.ts.map +0 -1
- package/dist/cli/handlers/run-client.d.ts +0 -127
- package/dist/cli/handlers/run-client.d.ts.map +0 -1
- package/dist/cli/handlers/run-report.d.ts +0 -5
- package/dist/cli/handlers/run-report.d.ts.map +0 -1
- package/dist/components/temporal-codegen-loader.d.ts +0 -27
- package/dist/components/temporal-codegen-loader.d.ts.map +0 -1
- package/dist/lint/rules/comp/comp004-gate-needs-temporal.d.ts +0 -37
- package/dist/lint/rules/comp/comp004-gate-needs-temporal.d.ts.map +0 -1
- package/src/cli/handlers/op-progress.test.ts +0 -268
- package/src/cli/handlers/op-progress.ts +0 -248
- package/src/cli/handlers/run-client.test.ts +0 -82
- package/src/cli/handlers/run-client.ts +0 -219
- package/src/cli/handlers/run-report.test.ts +0 -62
- package/src/cli/handlers/run-report.ts +0 -122
- package/src/components/temporal-codegen-loader.ts +0 -41
- package/src/lint/rules/comp/comp004-gate-needs-temporal.ts +0 -66
|
@@ -33,11 +33,13 @@ export declare function isApprovalUrl(raw: string): boolean;
|
|
|
33
33
|
export interface GateResolutionRecord {
|
|
34
34
|
/** Schema version, so an incompatible future shape is detected before being misread. */
|
|
35
35
|
version: 1;
|
|
36
|
+
/** Discriminator against {@link PendingGateRecord}, which shares this file. Absent on every line written before #2119, so a reader must treat "no kind" as `"resolution"`. */
|
|
37
|
+
kind?: "resolution";
|
|
36
38
|
/** The dispatched op the gate belongs to. */
|
|
37
39
|
op: string;
|
|
38
40
|
/** The gate's signal name (matches `ConvergeRuleOutcome.gateName`). */
|
|
39
41
|
gate: string;
|
|
40
|
-
/** Who resolved it — an actor name, the same convention `components release --actor` and `run
|
|
42
|
+
/** Who resolved it — an actor name, the same convention `components release --actor` and `run approve --approver` use. */
|
|
41
43
|
resolvedBy: string;
|
|
42
44
|
/** ISO-8601 timestamp, caller-supplied (library code never calls `Date.now()` internally). */
|
|
43
45
|
timestamp: string;
|
|
@@ -55,7 +57,46 @@ export interface GateResolutionRecord {
|
|
|
55
57
|
*/
|
|
56
58
|
url?: string;
|
|
57
59
|
}
|
|
58
|
-
export type GateResolutionInput = Omit<GateResolutionRecord, "version">;
|
|
60
|
+
export type GateResolutionInput = Omit<GateResolutionRecord, "version" | "kind">;
|
|
61
|
+
/**
|
|
62
|
+
* One immutable pending-gate record (#2119) — what an executor writes when a
|
|
63
|
+
* run reaches a `gate` step with no resolution standing against it. The run
|
|
64
|
+
* ends here with status `gated`; this line is the durable trace of that, and
|
|
65
|
+
* the anchor a later {@link GateResolutionRecord} has to be newer than to
|
|
66
|
+
* count as its answer.
|
|
67
|
+
*
|
|
68
|
+
* Idempotent by design: a run that finds a live (unexpired) pending fact for
|
|
69
|
+
* the same gate reuses it rather than appending a second one, so a converge
|
|
70
|
+
* loop ticking every minute against an unapproved gate does not grow the
|
|
71
|
+
* ledger by a line a minute. Once `expiresAt` passes, the fact is stale and
|
|
72
|
+
* the next run records a fresh one.
|
|
73
|
+
*/
|
|
74
|
+
export interface PendingGateRecord {
|
|
75
|
+
/** Schema version, so an incompatible future shape is detected before being misread. */
|
|
76
|
+
version: 1;
|
|
77
|
+
kind: "pending";
|
|
78
|
+
/** The op (or, on the component driver, the component) the gate belongs to. */
|
|
79
|
+
op: string;
|
|
80
|
+
/** The gate's signal name (matches `GateStep.signalName`). */
|
|
81
|
+
gate: string;
|
|
82
|
+
/** The gate's human-readable description, when it declared one — what `chant operator status` shows a reader who wasn't there for the run. */
|
|
83
|
+
description?: string;
|
|
84
|
+
/** The run that reached the gate, when the caller identifies its runs. */
|
|
85
|
+
runId?: string;
|
|
86
|
+
/** ISO-8601 timestamp, caller-supplied (library code never calls `Date.now()` internally). */
|
|
87
|
+
timestamp: string;
|
|
88
|
+
/** ISO-8601 expiry, from the gate's `timeout` (default {@link DEFAULT_GATE_EXPIRY}). Past it, the fact is stale and a run re-records it. */
|
|
89
|
+
expiresAt: string;
|
|
90
|
+
/** The address approval happens at, when the run knew one — see {@link resolveApprovalUrl}. */
|
|
91
|
+
url?: string;
|
|
92
|
+
}
|
|
93
|
+
export type PendingGateInput = Omit<PendingGateRecord, "version" | "kind">;
|
|
94
|
+
/** Either kind of line in `_gates/<op>.jsonl`. */
|
|
95
|
+
export type GateLedgerRecord = GateResolutionRecord | PendingGateRecord;
|
|
96
|
+
/** The default a gate's pending fact expires after when its `GateStep` declares no `timeout` — the same 48h `GateStep.timeout` documents as its own default. */
|
|
97
|
+
export declare const DEFAULT_GATE_EXPIRY = "48h";
|
|
98
|
+
/** Whether a pending fact has aged out of relevance at `nowIso`. */
|
|
99
|
+
export declare function isPendingGateExpired(record: PendingGateRecord, nowIso: string): boolean;
|
|
59
100
|
/** Append one immutable gate-resolution record. Does not push to the remote — call `pushLifecycle` (./git.ts) afterward, same two-step shape every other ledger write here uses. Retries on `RefCASConflictError` the same way `appendConvergeRecord` does (./converge-ledger.ts) — a concurrent writer to a different op's/env's file on the same orphan branch is the ordinary case, not an edge case. The baseline read must be `readPathSha` + `readBlobBySha` rather than `readBlobFromPath`, so the exact sha `existing` came from can be passed as `expectPriorPathSha` — see `writeBlobToPath` (./git.ts) for the race that closes. */
|
|
60
101
|
export declare function appendGateResolution(input: GateResolutionInput, opts?: {
|
|
61
102
|
cwd?: string;
|
|
@@ -63,13 +104,40 @@ export declare function appendGateResolution(input: GateResolutionInput, opts?:
|
|
|
63
104
|
commit: string;
|
|
64
105
|
record: GateResolutionRecord;
|
|
65
106
|
}>;
|
|
66
|
-
/**
|
|
107
|
+
/**
|
|
108
|
+
* Append one immutable pending-gate record (#2119) — the fact a run leaves
|
|
109
|
+
* behind when it reaches a gate nobody has approved. Same file, same
|
|
110
|
+
* append-and-retry discipline, same "does not push" contract as
|
|
111
|
+
* {@link appendGateResolution}.
|
|
112
|
+
*/
|
|
113
|
+
export declare function appendPendingGate(input: PendingGateInput, opts?: {
|
|
114
|
+
cwd?: string;
|
|
115
|
+
}): Promise<{
|
|
116
|
+
commit: string;
|
|
117
|
+
record: PendingGateRecord;
|
|
118
|
+
}>;
|
|
119
|
+
/**
|
|
120
|
+
* Read every line of `op`'s gate file, oldest first, split into the two kinds
|
|
121
|
+
* (#2119). Malformed lines are skipped and counted, not thrown on — the same
|
|
122
|
+
* graceful-degradation stance `readConvergeLedger` takes. Returns empty arrays
|
|
123
|
+
* (never throws) when `op` has nothing recorded yet.
|
|
124
|
+
*/
|
|
125
|
+
export declare function readGateLedger(op: string, opts?: {
|
|
126
|
+
cwd?: string;
|
|
127
|
+
}): Promise<{
|
|
128
|
+
resolutions: GateResolutionRecord[];
|
|
129
|
+
pending: PendingGateRecord[];
|
|
130
|
+
malformed: number;
|
|
131
|
+
}>;
|
|
132
|
+
/** Read every gate-*resolution* record for `op`, oldest first — {@link readGateLedger} narrowed to the half every caller before #2119 wanted. Pending facts are not malformed lines and are not counted as such. */
|
|
67
133
|
export declare function readGateResolutions(op: string, opts?: {
|
|
68
134
|
cwd?: string;
|
|
69
135
|
}): Promise<{
|
|
70
136
|
records: GateResolutionRecord[];
|
|
71
137
|
malformed: number;
|
|
72
138
|
}>;
|
|
139
|
+
/** The most recent pending fact for `gate`, expired or not — the anchor {@link latestResolutionSince} measures a resolution against. `undefined` when the gate has never been recorded pending. */
|
|
140
|
+
export declare function latestPendingGate(records: PendingGateRecord[], gate: string): PendingGateRecord | undefined;
|
|
73
141
|
/** The most recent resolution for `gate` recorded after `sinceIso` (a gated tick's own timestamp) — what `chant operator status` uses to tell a resolved gate from a still-pending one. `undefined` when no such resolution exists. */
|
|
74
142
|
export declare function latestResolutionSince(records: GateResolutionRecord[], gate: string, sinceIso: string): GateResolutionRecord | undefined;
|
|
75
143
|
//# sourceMappingURL=gate-ledger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate-ledger.d.ts","sourceRoot":"","sources":["../../src/lifecycle/gate-ledger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gate-ledger.d.ts","sourceRoot":"","sources":["../../src/lifecycle/gate-ledger.ts"],"names":[],"mappings":"AA0CA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAY3F;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOlD;AAED,4CAA4C;AAC5C,MAAM,WAAW,oBAAoB;IACnC,wFAAwF;IACxF,OAAO,EAAE,CAAC,CAAC;IACX,8KAA8K;IAC9K,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,0HAA0H;IAC1H,UAAU,EAAE,MAAM,CAAC;IACnB,8FAA8F;IAC9F,SAAS,EAAE,MAAM,CAAC;IAClB,oLAAoL;IACpL,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;;;OASG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,EAAE,SAAS,GAAG,MAAM,CAAC,CAAC;AAEjF;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,iBAAiB;IAChC,wFAAwF;IACxF,OAAO,EAAE,CAAC,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,+EAA+E;IAC/E,EAAE,EAAE,MAAM,CAAC;IACX,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,8IAA8I;IAC9I,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8FAA8F;IAC9F,SAAS,EAAE,MAAM,CAAC;IAClB,4IAA4I;IAC5I,SAAS,EAAE,MAAM,CAAC;IAClB,+FAA+F;IAC/F,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,EAAE,SAAS,GAAG,MAAM,CAAC,CAAC;AAE3E,kDAAkD;AAClD,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,GAAG,iBAAiB,CAAC;AAExE,gKAAgK;AAChK,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC,oEAAoE;AACpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAEvF;AAMD,+mBAA+mB;AAC/mB,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,mBAAmB,EAC1B,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACtB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,oBAAoB,CAAA;CAAE,CAAC,CAI3D;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,gBAAgB,EACvB,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACtB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,CAAC,CAIxD;AA2BD;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,MAAM,EACV,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACtB,OAAO,CAAC;IAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC;IAAC,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAqCnG;AAED,oNAAoN;AACpN,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,MAAM,EACV,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACtB,OAAO,CAAC;IAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAGjE;AAED,mMAAmM;AACnM,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,iBAAiB,EAAE,EAC5B,IAAI,EAAE,MAAM,GACX,iBAAiB,GAAG,SAAS,CAO/B;AAED,uOAAuO;AACvO,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,oBAAoB,EAAE,EAC/B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,oBAAoB,GAAG,SAAS,CASlC"}
|
|
@@ -20,6 +20,7 @@ export * from "./teardown.js";
|
|
|
20
20
|
export * from "./assert-live.js";
|
|
21
21
|
export * from "./symptoms.js";
|
|
22
22
|
export * from "./converge-ledger.js";
|
|
23
|
+
export * from "./run-ledger.js";
|
|
23
24
|
export * from "./scenario.js";
|
|
24
25
|
export * from "./scenario-eval.js";
|
|
25
26
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lifecycle/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lifecycle/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
|
|
@@ -93,8 +93,8 @@ export interface ReleaseRecord {
|
|
|
93
93
|
/**
|
|
94
94
|
* Who approved the change at its durable approval gate (#1035). Populated for
|
|
95
95
|
* a gated change — the same identity the approver supplied when they cleared
|
|
96
|
-
* the
|
|
97
|
-
*
|
|
96
|
+
* the gate (`chant approve <op> <gate> --approver`, recorded on the gate
|
|
97
|
+
* resolution fact). Optional and omitted for an
|
|
98
98
|
* ungated change (nothing to approve), so `actor` alone answers "who made
|
|
99
99
|
* it" while `approver` answers "who approved it" only where a gate exists.
|
|
100
100
|
* Distinct from `actor`: the approver is deliberately a different person than
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { OpConfig } from "../op/types.js";
|
|
2
|
+
import type { StepRecord } from "../op/local-executor.js";
|
|
3
|
+
import type { OpRunRecord, OpRunRecordInput } from "../op/runtime.js";
|
|
4
|
+
/** The env a run records against when its Op declares no `labels.Env`. */
|
|
5
|
+
export declare const DEFAULT_RUN_ENV = "local";
|
|
6
|
+
/** The env a run records against: the Op's own `labels.Env`, else {@link DEFAULT_RUN_ENV}. */
|
|
7
|
+
export declare function runEnvOf(config: Pick<OpConfig, "labels">): string;
|
|
8
|
+
/**
|
|
9
|
+
* Fold a run's step records into the ledger shape, pure — no clock, no git.
|
|
10
|
+
* `started`/`ended` are supplied by the caller for the same reason
|
|
11
|
+
* `ConvergeTickRecord.timestamp` is: library code here never calls
|
|
12
|
+
* `Date.now()` itself.
|
|
13
|
+
*
|
|
14
|
+
* Phases are grouped by `StepRecord.phase` in first-seen order, which is
|
|
15
|
+
* execution order for the sequential path and the authored order for a
|
|
16
|
+
* parallel one. A compensation (`onFailure`) phase appears after the phase
|
|
17
|
+
* that failed, exactly where the executor emitted its records.
|
|
18
|
+
*/
|
|
19
|
+
export declare function buildRunRecord(config: Pick<OpConfig, "name" | "labels">, records: readonly StepRecord[], times: {
|
|
20
|
+
started: string;
|
|
21
|
+
ended: string;
|
|
22
|
+
status: OpRunRecord["status"];
|
|
23
|
+
id?: string;
|
|
24
|
+
gate?: OpRunRecord["gate"];
|
|
25
|
+
}): OpRunRecordInput;
|
|
26
|
+
/**
|
|
27
|
+
* Append one immutable run record. Does not push to the remote — call
|
|
28
|
+
* `pushLifecycle` (./git.ts) afterward, the two-step shape every ledger here
|
|
29
|
+
* uses.
|
|
30
|
+
*
|
|
31
|
+
* Mints `record.id` when the input carries none, and retries the whole
|
|
32
|
+
* read-modify-write on `RefCASConflictError` re-reading fresh each attempt —
|
|
33
|
+
* see `appendConvergeRecord`'s doc for why both of those live in the append
|
|
34
|
+
* function rather than in its callers.
|
|
35
|
+
*/
|
|
36
|
+
export declare function appendRunRecord(input: OpRunRecordInput, opts?: {
|
|
37
|
+
cwd?: string;
|
|
38
|
+
}): Promise<{
|
|
39
|
+
commit: string;
|
|
40
|
+
record: OpRunRecord;
|
|
41
|
+
}>;
|
|
42
|
+
/**
|
|
43
|
+
* Read every run record for `op` in `environment`, oldest first. Malformed
|
|
44
|
+
* lines are skipped and counted, never thrown on — a hand-edited or truncated
|
|
45
|
+
* ledger degrades to a shorter history, the stance every ledger here takes.
|
|
46
|
+
*/
|
|
47
|
+
export declare function readRunLedger(environment: string, op: string, opts?: {
|
|
48
|
+
cwd?: string;
|
|
49
|
+
}): Promise<{
|
|
50
|
+
records: OpRunRecord[];
|
|
51
|
+
malformed: number;
|
|
52
|
+
}>;
|
|
53
|
+
//# sourceMappingURL=run-ledger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-ledger.d.ts","sourceRoot":"","sources":["../../src/lifecycle/run-ledger.ts"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAqC,MAAM,eAAe,CAAC;AAStG,0EAA0E;AAC1E,eAAO,MAAM,eAAe,UAAU,CAAC;AAMvC,8FAA8F;AAC9F,wBAAgB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,MAAM,CAEjE;AAQD;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC,EACzC,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,KAAK,EAAE;IACL,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC5B,GACA,gBAAgB,CAoClB;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,gBAAgB,EACvB,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACtB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC,CAsBlD;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,EACV,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACtB,OAAO,CAAC;IAAE,OAAO,EAAE,WAAW,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CA4BxD"}
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
* `LexiconPlugin.symptoms?()` interface in v1 — everything here is a pure
|
|
9
9
|
* projection of structures chant already computes (`ChangeSet`,
|
|
10
10
|
* `ComponentStatusRow[]`). No I/O in this module; a caller (the `convergeTick`
|
|
11
|
-
* activity,
|
|
12
|
-
*
|
|
11
|
+
* activity, ../op/activities/converge.ts) gathers those inputs and hands them
|
|
12
|
+
* here.
|
|
13
13
|
*
|
|
14
14
|
* One record per tick, not per component: the issue's own rule sketch reads
|
|
15
15
|
* `s.status`/`s.backupVerifiedAge` as a single symptom `s` a rule closes
|
|
@@ -58,6 +58,6 @@ export interface ConvergeSymptom {
|
|
|
58
58
|
* `ConvergeSymptom`. Pure — no I/O.
|
|
59
59
|
*/
|
|
60
60
|
export declare function deriveSymptoms(env: string, cs: ChangeSet, statusRows: ComponentStatusRow[]): ConvergeSymptom;
|
|
61
|
-
/** Every field name a `ConvergeSymptom` produces — the runtime whitelist `
|
|
61
|
+
/** Every field name a `ConvergeSymptom` produces — the runtime whitelist `OPS014` (packages/core/src/lint/rules/op/ops014-converge-rule-refusals.ts) re-validates a serialized rule table's predicates against. Kept in sync with {@link ConvergeSymptom} by hand (deliberately small, changes rarely). */
|
|
62
62
|
export declare const CONVERGE_SYMPTOM_FIELDS: ReadonlySet<string>;
|
|
63
63
|
//# sourceMappingURL=symptoms.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symptoms.d.ts","sourceRoot":"","sources":["../../src/lifecycle/symptoms.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAgB,SAAS,EAAE,MAAM,cAAc,CAAC;AAE5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAwB,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAkB7E,qKAAqK;AACrK,wBAAgB,WAAW,CAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,CAM5F;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,gHAAgH;IAChH,MAAM,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IAC7C,wIAAwI;IACxI,UAAU,EAAE,kBAAkB,EAAE,CAAC;IACjC,6EAA6E;IAC7E,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,wLAAwL;IACxL,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,sGAAsG;IACtG,eAAe,EAAE,MAAM,CAAC;IACxB,oFAAoF;IACpF,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,kGAAkG;IAClG,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,GAAG,eAAe,CAwB5G;AAED,
|
|
1
|
+
{"version":3,"file":"symptoms.d.ts","sourceRoot":"","sources":["../../src/lifecycle/symptoms.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAgB,SAAS,EAAE,MAAM,cAAc,CAAC;AAE5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAwB,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAkB7E,qKAAqK;AACrK,wBAAgB,WAAW,CAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,CAM5F;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,gHAAgH;IAChH,MAAM,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IAC7C,wIAAwI;IACxI,UAAU,EAAE,kBAAkB,EAAE,CAAC;IACjC,6EAA6E;IAC7E,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,wLAAwL;IACxL,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,sGAAsG;IACtG,eAAe,EAAE,MAAM,CAAC;IACxB,oFAAoF;IACpF,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,kGAAkG;IAClG,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,GAAG,eAAe,CAwB5G;AAED,2SAA2S;AAC3S,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAatD,CAAC"}
|
package/dist/lint/config.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import type { Severity, RuleConfig } from "./rule.js";
|
|
3
3
|
import type { PostSynthDiagnostic } from "./post-synth.js";
|
|
4
|
+
import { type RuleMeta } from "../audit/catalog.js";
|
|
4
5
|
export { findProjectRoot } from "../project-root.js";
|
|
5
6
|
export declare const LintConfigSchema: z.ZodObject<{
|
|
6
7
|
rules: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodEnum<{
|
|
@@ -31,6 +32,7 @@ export declare const LintConfigSchema: z.ZodObject<{
|
|
|
31
32
|
}, z.core.$strip>>>;
|
|
32
33
|
plugins: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
33
34
|
policies: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
35
|
+
presets: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
34
36
|
}, z.core.$strip>;
|
|
35
37
|
/**
|
|
36
38
|
* Per-file rule override
|
|
@@ -61,6 +63,23 @@ export interface LintConfig {
|
|
|
61
63
|
* phase; same engine.
|
|
62
64
|
*/
|
|
63
65
|
policies?: string[];
|
|
66
|
+
/**
|
|
67
|
+
* Lexicon name mapped to a preset name (chant #2113), e.g.
|
|
68
|
+
* `{ terraform: "recommended" }`. A preset is a lexicon's own bundle of
|
|
69
|
+
* post-synth check ids. tflint ships `recommended` (a subset) and `all`
|
|
70
|
+
* for its Terraform-language rules the same way, and a lexicon that ships
|
|
71
|
+
* one exposes it through its plugin's `lintPresets()` (`../lexicon.ts`).
|
|
72
|
+
* Naming a preset here changes which of that lexicon's post-synth findings
|
|
73
|
+
* are reported at all, distinct from `rules`, which changes an
|
|
74
|
+
* already-reported finding's severity. A rule a preset excludes is not
|
|
75
|
+
* suppressed (it never runs the severity-override gauntlet in the first
|
|
76
|
+
* place), but an explicit `rules` entry for it always wins and re-enables
|
|
77
|
+
* it regardless of the active preset, see `resolvePresetIds`/
|
|
78
|
+
* `applyConfiguredPreset` below. Unset, or naming a preset the lexicon
|
|
79
|
+
* does not export, falls back to `"recommended"`. A lexicon that ships no
|
|
80
|
+
* presets at all is unaffected by this field, same as today.
|
|
81
|
+
*/
|
|
82
|
+
presets?: Record<string, string>;
|
|
64
83
|
}
|
|
65
84
|
/**
|
|
66
85
|
* Parsed rule configuration with severity and optional options
|
|
@@ -96,8 +115,17 @@ export declare function parseRuleConfig(value: RuleConfig): ParsedRuleConfig;
|
|
|
96
115
|
* checks have no per-file scope to begin with (see {@link
|
|
97
116
|
* ./post-synth.ts!PostSynthDiagnostic}'s doc for why), so they always pass
|
|
98
117
|
* `config.rules` directly.
|
|
118
|
+
*
|
|
119
|
+
* `catalog` (chant #2113) is optional and off by default: pass a resolved
|
|
120
|
+
* audit catalog to also honor a `rules` key that names one of `id`'s
|
|
121
|
+
* `RuleMeta.aliases` rather than `id` itself. A project's
|
|
122
|
+
* `lint.rules: { OLD_ID: "off" }` then keeps suppressing the rule after it
|
|
123
|
+
* is renamed/renumbered, instead of silently starting to match nothing. Every
|
|
124
|
+
* existing call site omits `catalog` and is unaffected; a caller that has one
|
|
125
|
+
* handy (an audit-shaped consumer, not `chant build`'s post-synth loop, which
|
|
126
|
+
* has no catalog readily resolved at that point) opts in by passing it.
|
|
99
127
|
*/
|
|
100
|
-
export declare function resolveConfiguredSeverity(rules: Record<string, RuleConfig> | undefined, id: string, defaultSeverity: Severity): ParsedRuleConfig;
|
|
128
|
+
export declare function resolveConfiguredSeverity(rules: Record<string, RuleConfig> | undefined, id: string, defaultSeverity: Severity, catalog?: Record<string, RuleMeta>): ParsedRuleConfig;
|
|
101
129
|
/**
|
|
102
130
|
* Default configuration with all rules enabled at strict preset severities
|
|
103
131
|
*/
|
|
@@ -182,6 +210,57 @@ export interface PostSynthSeverityResult {
|
|
|
182
210
|
* remove. Config severity (`"off"`) is the one suppression surface this can
|
|
183
211
|
* offer uniformly; a check that wants a per-instance escape hatch can read
|
|
184
212
|
* `ctx.env`/its own options to decide not to emit a diagnostic at all.
|
|
213
|
+
*
|
|
214
|
+
* chant #2111 adds a second, narrower surface next to this one:
|
|
215
|
+
* `./suppressions.ts`'s `applyInlineSuppressions` matches `diag.entity`
|
|
216
|
+
* against `ctx.entities` (a source-level map key every `PostSynthContext`
|
|
217
|
+
* carries) instead of a name in the synthesized output, so it sidesteps the
|
|
218
|
+
* exact mismatch this comment describes. It is opt-in per lexicon (an entity
|
|
219
|
+
* has to carry a `suppressions` field) and runs as its own pass, right after
|
|
220
|
+
* this one, in both `chant build` and `chant audit`. See that module's doc
|
|
221
|
+
* for the full reasoning.
|
|
222
|
+
*
|
|
223
|
+
* `catalog` (chant #2113, optional) passes straight through to
|
|
224
|
+
* `resolveConfiguredSeverity` above for alias resolution; see its doc for
|
|
225
|
+
* what that buys and why it's opt-in.
|
|
226
|
+
*/
|
|
227
|
+
export declare function applyConfiguredSeverity(diagnostics: readonly PostSynthDiagnostic[], rules: Record<string, RuleConfig> | undefined, catalog?: Record<string, RuleMeta>): PostSynthSeverityResult;
|
|
228
|
+
/**
|
|
229
|
+
* Result of applying a lexicon preset to a set of post-synth diagnostics.
|
|
230
|
+
* Shaped like {@link PostSynthSeverityResult} so a caller threading both
|
|
231
|
+
* through (a preset filter, then a severity override) handles them the same
|
|
232
|
+
* way. See `applyConfiguredPreset` below.
|
|
233
|
+
*/
|
|
234
|
+
export interface PostSynthPresetResult {
|
|
235
|
+
/** Diagnostics whose check id the active preset enables (or that `rules` explicitly configures, see below). */
|
|
236
|
+
diagnostics: PostSynthDiagnostic[];
|
|
237
|
+
/** Diagnostics the active preset excluded, unaltered. Countable rather than silently dropped, mirroring `PostSynthSeverityResult.suppressed`. */
|
|
238
|
+
suppressed: PostSynthDiagnostic[];
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Resolve `lint.presets`' name for one lexicon into the set of check ids that
|
|
242
|
+
* preset enables (chant #2113). `presets` is what a lexicon plugin's
|
|
243
|
+
* `lintPresets()` returns (`../lexicon.ts`). A lexicon that ships none
|
|
244
|
+
* passes `undefined` here, in which case this returns `undefined` and
|
|
245
|
+
* `applyConfiguredPreset` below becomes a no-op (every rule reports, exactly
|
|
246
|
+
* today's behavior for a lexicon this feature doesn't touch).
|
|
247
|
+
*
|
|
248
|
+
* An unrecognized preset name (a typo, or a name the lexicon doesn't define)
|
|
249
|
+
* also returns `undefined` rather than an empty set. Falling back to
|
|
250
|
+
* unfiltered is the safe failure direction; silently reporting nothing would
|
|
251
|
+
* not be.
|
|
252
|
+
*/
|
|
253
|
+
export declare function resolvePresetIds(presets: Record<string, string[]> | undefined, presetName: string): Set<string> | undefined;
|
|
254
|
+
/**
|
|
255
|
+
* Filter post-synth diagnostics down to an active preset's ids (chant
|
|
256
|
+
* #2113). `presetIds` is `resolvePresetIds`'s output. `undefined` disables
|
|
257
|
+
* filtering entirely (a lexicon with no presets, or an unresolved preset
|
|
258
|
+
* name), matching tflint's own precedence chain (`--only` / rule config,
|
|
259
|
+
* then preset, then `disabled_by_default`, `tflint-ruleset-terraform`'s
|
|
260
|
+
* config docs): an explicit `lint.rules` entry for a check id always keeps
|
|
261
|
+
* that id's findings, whether or not the active preset includes it, so a
|
|
262
|
+
* project can opt a single report-only rule back in under `recommended`
|
|
263
|
+
* without switching its whole lexicon to `all`.
|
|
185
264
|
*/
|
|
186
|
-
export declare function
|
|
265
|
+
export declare function applyConfiguredPreset(diagnostics: readonly PostSynthDiagnostic[], presetIds: Set<string> | undefined, rules: Record<string, RuleConfig> | undefined): PostSynthPresetResult;
|
|
187
266
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lint/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lint/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Declarable } from "../declarable.js";
|
|
2
|
+
import type { ActivityContract } from "../op/activity-contract.js";
|
|
2
3
|
import type { SerializerResult } from "../serializer.js";
|
|
3
4
|
import type { Severity } from "./rule.js";
|
|
4
5
|
import { type OutputDoc } from "./output-docs.js";
|
|
@@ -36,6 +37,22 @@ export interface PostSynthContext {
|
|
|
36
37
|
* with `ctx.docs ?? []` only when a context's provenance is unknown.
|
|
37
38
|
*/
|
|
38
39
|
readonly docs?: OutputDoc[];
|
|
40
|
+
/**
|
|
41
|
+
* Activity contracts resolved across every lexicon this build configured
|
|
42
|
+
* (chant #2101), keyed by activity name — core's own plus whatever each
|
|
43
|
+
* lexicon contributes at `@intentius/chant-lexicon-<name>/op/activity-contracts`
|
|
44
|
+
* or through its plugin. Filled in by `chant build`, `chant lint` and
|
|
45
|
+
* `check-lexicon`'s example harness via `loadActivityContracts`.
|
|
46
|
+
*
|
|
47
|
+
* The checks that validate Op steps against contracts (OPS012 and OPS013,
|
|
48
|
+
* `./rules/op/`) merge this over their own statically imported table with
|
|
49
|
+
* `mergeActivityContracts`, so an Op calling `terraformPlan` or
|
|
50
|
+
* `k3sInstall` validates against the contract the owning lexicon declared
|
|
51
|
+
* instead of failing for the absence of one. Optional, and absent from a
|
|
52
|
+
* hand-built context: a check must behave as it did before this existed
|
|
53
|
+
* when it is `undefined`.
|
|
54
|
+
*/
|
|
55
|
+
readonly activityContracts?: ReadonlyMap<string, ActivityContract>;
|
|
39
56
|
/** Raw build result object */
|
|
40
57
|
buildResult: {
|
|
41
58
|
outputs: Map<string, string | SerializerResult>;
|
|
@@ -87,6 +104,14 @@ export declare function getAdditionalFiles(output: string | SerializerResult): R
|
|
|
87
104
|
* comment (`chant-disable`) suppression is out of scope for post-synth
|
|
88
105
|
* findings — see `./config.ts`'s `applyConfiguredSeverity` doc for the full
|
|
89
106
|
* reasoning and what suppression surface post-synth findings get instead.
|
|
107
|
+
*
|
|
108
|
+
* chant #2111 finds a narrower anchor that does generalize: `./suppressions.ts`'s
|
|
109
|
+
* `applyInlineSuppressions` matches `entity` against `ctx.entities` (a map key
|
|
110
|
+
* every context already carries, source-level, before serialization), not
|
|
111
|
+
* against a name in the synthesized OUTPUT. A lexicon whose entities carry a
|
|
112
|
+
* `suppressions` field (see that file's module doc) gets inline `# chant-
|
|
113
|
+
* ignore`-style comments this way; one that doesn't is unaffected, and this
|
|
114
|
+
* interface's own contract (no `file`/`line`) is unchanged either way.
|
|
90
115
|
*/
|
|
91
116
|
export interface PostSynthDiagnostic {
|
|
92
117
|
/** ID of the check that produced this diagnostic */
|
|
@@ -103,6 +128,30 @@ export interface PostSynthDiagnostic {
|
|
|
103
128
|
entity?: string;
|
|
104
129
|
/** Optional lexicon related to this diagnostic */
|
|
105
130
|
lexicon?: string;
|
|
131
|
+
/**
|
|
132
|
+
* Set when the finding is that something does not exist, rather than that
|
|
133
|
+
* something present is wrong (chant #2113). TF001 (no remote backend) is
|
|
134
|
+
* the motivating case: there is no resource to set `entity` to, only the
|
|
135
|
+
* scope that is missing one. Snyk's policy-engine spec names this the
|
|
136
|
+
* "missing-resource" archetype (a `deny` whose `info` carries a
|
|
137
|
+
* `resource_type` instead of a `resource`, because there is nothing to
|
|
138
|
+
* attach to) and is the only tool in chant's TF-family survey with a
|
|
139
|
+
* first-class shape for it; trivy's own inline-ignore comments admit they
|
|
140
|
+
* cannot suppress an absence finding for exactly this reason. `kind` names
|
|
141
|
+
* what is missing (a `backend`/`cloud` block, a required resource type);
|
|
142
|
+
* `scope` names where it is missing (a root module name, a file). Renders
|
|
143
|
+
* distinctly in all three reporters (stylish/JSON/SARIF, `../cli/commands/
|
|
144
|
+
* audit.ts` and `../audit/report-model.ts`) instead of falling back to
|
|
145
|
+
* `entity`, and gives #2111's HCL suppression a block-anchored key to
|
|
146
|
+
* suppress an absence finding by (the block that *should* declare `kind`
|
|
147
|
+
* inside `scope`), independent of whatever `entity` this diagnostic sets.
|
|
148
|
+
*/
|
|
149
|
+
missing?: {
|
|
150
|
+
/** What kind of thing is absent (e.g. `"backend"`, `"cloud"`). */
|
|
151
|
+
kind: string;
|
|
152
|
+
/** Where it is missing from (e.g. a root module name). */
|
|
153
|
+
scope: string;
|
|
154
|
+
};
|
|
106
155
|
}
|
|
107
156
|
/**
|
|
108
157
|
* A post-synthesis check that validates build output. Lexicons ship these as
|
|
@@ -121,7 +170,11 @@ export interface PostSynthCheck {
|
|
|
121
170
|
export declare function isPostSynthCheck(value: unknown): value is PostSynthCheck;
|
|
122
171
|
/**
|
|
123
172
|
* Run a set of post-synthesis checks against a build result. `env` is threaded
|
|
124
|
-
* into the context so a check can branch on the current environment/stack
|
|
173
|
+
* into the context so a check can branch on the current environment/stack, and
|
|
174
|
+
* `opts.activityContracts` (chant #2101) carries the build's cross-lexicon
|
|
175
|
+
* activity-contract map to the checks that validate Op steps against it.
|
|
125
176
|
*/
|
|
126
|
-
export declare function runPostSynthChecks(checks: PostSynthCheck[], buildResult: PostSynthContext["buildResult"], env?: string
|
|
177
|
+
export declare function runPostSynthChecks(checks: PostSynthCheck[], buildResult: PostSynthContext["buildResult"], env?: string, opts?: {
|
|
178
|
+
activityContracts?: ReadonlyMap<string, ActivityContract>;
|
|
179
|
+
}): PostSynthDiagnostic[];
|
|
127
180
|
//# sourceMappingURL=post-synth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-synth.d.ts","sourceRoot":"","sources":["../../src/lint/post-synth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kEAAkE;IAClE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC;IAChD,8CAA8C;IAC9C,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAClC;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC;IAC5B,8BAA8B;IAC9B,WAAW,EAAE;QACX,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC;QAChD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAClC,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,MAAM,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACjD,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC,GAC9C,MAAM,SAAS,EAAE,CAQnB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,MAAM,CAE1E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAE5F;AAED
|
|
1
|
+
{"version":3,"file":"post-synth.d.ts","sourceRoot":"","sources":["../../src/lint/post-synth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { Component } from "../../../../../../components/component.js";
|
|
2
|
-
/** COMP004 pass case: a genuine gate, opted out via a file-level disable directive with a documented reason — the intended path for a component
|
|
2
|
+
/** COMP004 pass case: a genuine gate, opted out via a file-level disable directive with a documented reason — the intended path for a component whose rollout genuinely waits on a person. */
|
|
3
3
|
export declare const neo4jCluster: Component;
|
|
4
4
|
//# sourceMappingURL=neo4j-cluster.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"neo4j-cluster.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,
|
|
1
|
+
{"version":3,"file":"neo4j-cluster.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,8LAA8L;AAC9L,eAAO,MAAM,YAAY,EAAE,SAiB1B,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { Component } from "../../../../../../components/component.js";
|
|
2
|
-
/** COMP004 pass case: no gate step anywhere — nothing
|
|
2
|
+
/** COMP004 pass case: no gate step anywhere — nothing here stops the run for a person. */
|
|
3
3
|
export declare const ordersTable: Component;
|
|
4
4
|
//# sourceMappingURL=orders-table.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orders-table.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,
|
|
1
|
+
{"version":3,"file":"orders-table.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,0FAA0F;AAC1F,eAAO,MAAM,WAAW,EAAE,SAKzB,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* COMP004: gate-needs-durable-runtime (the file is renamed in #2116; the
|
|
3
|
+
* behaviour changed in #2119)
|
|
4
|
+
*
|
|
5
|
+
* The file name and the exported symbol keep the old wording on purpose
|
|
6
|
+
* (#2195): the id is what an author writes in a `chant-disable` comment and
|
|
7
|
+
* what every import names, and churning both buys nothing. `description`
|
|
8
|
+
* below is the accurate sentence, and it is what the docs page uses as its
|
|
9
|
+
* heading — since #2119 the rule has nothing to do with which runtime hosts
|
|
10
|
+
* the run.
|
|
11
|
+
*
|
|
12
|
+
* Flags a `gate` step anywhere in a component's composition — the point where
|
|
13
|
+
* a run stops and waits for a person. Since #2119 that is not a refusal: the
|
|
14
|
+
* driver decides the gate against the gate ledger (`../../../op/gate.ts`), and
|
|
15
|
+
* one nobody has approved ends the run pending `chant approve <component>
|
|
16
|
+
* <gate>`, to be re-decided next run.
|
|
17
|
+
*
|
|
18
|
+
* The rule survives the change because what it flags survives it. The
|
|
19
|
+
* component contract has no per-component runtime field (the runtime is chosen
|
|
20
|
+
* per *run*, via `chant run --on`, intentionally not part of the declaration),
|
|
21
|
+
* so lint cannot tell from the declaration alone that a `gate` is deliberate;
|
|
22
|
+
* every one is a standing "this component stops for a human" fact worth
|
|
23
|
+
* surfacing, not a mistake to silently allow. Acknowledge it explicitly with a
|
|
24
|
+
* **file-level**
|
|
25
|
+
* disable directive once the human wait is genuinely intended (see
|
|
26
|
+
* lint-rules/disable-directives.mdx) — a COMP* diagnostic carries no real
|
|
27
|
+
* line/column (it is reported for the whole component; see
|
|
28
|
+
* ../../component-checks.ts), so only the file-level `chant-disable` form is
|
|
29
|
+
* honored for these rules — `-line`/`-next-line` do not suppress a COMP*
|
|
30
|
+
* diagnostic (see ../../../cli/commands/lint.ts's
|
|
31
|
+
* `runComponentCheckDiagnostics`):
|
|
32
|
+
*
|
|
33
|
+
* ```ts
|
|
34
|
+
* // chant-disable COMP004 -- the rollout waits on a release manager's approval
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* Triggers on: any `gate` step in `deploy`/`rollback` with no matching
|
|
38
|
+
* file-level disable directive.
|
|
39
|
+
* OK: a component with no `gate` steps at all, or a `gate` whose file-level
|
|
40
|
+
* disable directive says who is expected to approve it and why.
|
|
41
|
+
*/
|
|
42
|
+
import type { ComponentCheck } from "../../component-checks.js";
|
|
43
|
+
export declare const comp004GateNeedsDurableRuntimeRule: ComponentCheck;
|
|
44
|
+
//# sourceMappingURL=comp004-gate-needs-durable-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comp004-gate-needs-durable-runtime.d.ts","sourceRoot":"","sources":["../../../../src/lint/rules/comp/comp004-gate-needs-durable-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAmD,MAAM,wBAAwB,CAAC;AAG9G,eAAO,MAAM,kCAAkC,EAAE,cA4BhD,CAAC"}
|
|
@@ -9,7 +9,7 @@ import type { ComponentCheck } from "../../component-checks.js";
|
|
|
9
9
|
export { comp001PublishesNeverAppliesRule } from "./comp001-publishes-never-applies.js";
|
|
10
10
|
export { comp002DanglingWiringRefRule } from "./comp002-dangling-wiring-ref.js";
|
|
11
11
|
export { comp003MutatingNoRollbackRule } from "./comp003-mutating-no-rollback.js";
|
|
12
|
-
export {
|
|
12
|
+
export { comp004GateNeedsDurableRuntimeRule } from "./comp004-gate-needs-durable-runtime.js";
|
|
13
13
|
export { comp005CapabilityKindIsNounRule } from "./comp005-capability-kind-is-noun.js";
|
|
14
14
|
export { comp006ShellNeedsReasonRule } from "./comp006-shell-needs-reason.js";
|
|
15
15
|
export { comp007CompositionSprawlRule } from "./comp007-composition-sprawl.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lint/rules/comp/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAS7D,OAAO,EAAE,gCAAgC,EAAE,MAAM,mCAAmC,CAAC;AACrF,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lint/rules/comp/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAS7D,OAAO,EAAE,gCAAgC,EAAE,MAAM,mCAAmC,CAAC;AACrF,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,kCAAkC,EAAE,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAE5E,4CAA4C;AAC5C,wBAAgB,mBAAmB,IAAI,cAAc,EAAE,CAUtD"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OPS* Op-model post-synth checks (#2122, epic #2114 sub-issue 6) — ported
|
|
3
|
+
* from a hosting lexicon's own TMP012/TMP013/TMP014. Registered as core-owned
|
|
4
|
+
* post-synth checks (`coreOpChecks`, mirroring `../../receipt-checks.ts`'s
|
|
5
|
+
* `coreReceiptChecks`) so they run over the FULL build result regardless of
|
|
6
|
+
* which lexicons are configured — an Op is recognized by entity type
|
|
7
|
+
* (`../../../op/resource.ts`'s `OpResource`), not by which lexicon declared
|
|
8
|
+
* it.
|
|
9
|
+
*/
|
|
10
|
+
import type { PostSynthCheck } from "../../post-synth.js";
|
|
11
|
+
export { ops012 } from "./ops012-activity-contract.js";
|
|
12
|
+
export { ops013 } from "./ops013-step-output-ref.js";
|
|
13
|
+
export { ops014 } from "./ops014-converge-rule-refusals.js";
|
|
14
|
+
/** Core's own post-synth checks over the Op model — OPS012, OPS013, OPS014. */
|
|
15
|
+
export declare function coreOpChecks(): PostSynthCheck[];
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lint/rules/op/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAKvD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAEzD,+EAA+E;AAC/E,wBAAgB,YAAY,IAAI,cAAc,EAAE,CAE/C"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OPS012: activity step args/outcomeAttribute must match the activity's
|
|
3
|
+
* declared contract (chant #1288 Stage 1; moved from a hosting lexicon's own
|
|
4
|
+
* TMP012 to core in #2122, epic #2114 sub-issue 6, so it fires on every
|
|
5
|
+
* project that declares an Op, not only one with that lexicon configured).
|
|
6
|
+
*
|
|
7
|
+
* Validates every Op entity's steps against core's own base-activity
|
|
8
|
+
* contracts (`../../../op/activities/activity-contracts.ts`, #2117), using
|
|
9
|
+
* the generic walk in `@intentius/chant/op`'s `validateActivitySteps`. A step
|
|
10
|
+
* whose `fn` has no registered contract here is skipped — most activities
|
|
11
|
+
* don't have one yet; see that module's doc for why that's the intended,
|
|
12
|
+
* non-breaking default.
|
|
13
|
+
*
|
|
14
|
+
* Cross-lexicon (chant #2101): an Op step may call an activity any
|
|
15
|
+
* configured lexicon contributes (`terraformPlan`, `k3sInstall`,
|
|
16
|
+
* `flyApply`), and since this check became core-owned it fires on every
|
|
17
|
+
* project that declares an Op. `ctx.activityContracts` carries the contracts
|
|
18
|
+
* every configured lexicon declared, resolved by `loadActivityContracts`
|
|
19
|
+
* (`../../../op/activity-contract-registry.ts`) the same way
|
|
20
|
+
* `loadActivities` resolves the implementations, and is merged over the
|
|
21
|
+
* static table below. A context that carries none — a hand-built one in a
|
|
22
|
+
* test, a caller that has not loaded any — falls back to that table alone,
|
|
23
|
+
* exactly as before.
|
|
24
|
+
*/
|
|
25
|
+
import type { PostSynthCheck } from "../../post-synth.js";
|
|
26
|
+
export declare const ops012: PostSynthCheck;
|
|
27
|
+
//# sourceMappingURL=ops012-activity-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ops012-activity-contract.d.ts","sourceRoot":"","sources":["../../../../src/lint/rules/op/ops012-activity-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAyC,MAAM,kBAAkB,CAAC;AAU9F,eAAO,MAAM,MAAM,EAAE,cA4BpB,CAAC"}
|