@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
|
@@ -14,4 +14,37 @@ import type { PathOrigin } from "../provenance.js";
|
|
|
14
14
|
* contributes is not knowable here.
|
|
15
15
|
*/
|
|
16
16
|
export declare function collectParamDependencies(props: ts.ObjectLiteralExpression, consts: ReadonlyMap<string, ts.Expression>, paramLocals: ReadonlySet<string>): Record<string, PathOrigin>;
|
|
17
|
+
/**
|
|
18
|
+
* The factory-parameter names in scope inside one composite body (chant #2161).
|
|
19
|
+
*
|
|
20
|
+
* A `Composite()` factory takes at most one argument, so a parameter path is a
|
|
21
|
+
* path INTO that argument: `props.scaling.max` is the parameter path
|
|
22
|
+
* `scaling.max`. Two binding forms reach the same place — `(props) => …` binds
|
|
23
|
+
* the whole object under one name, `({ name, port }) => …` binds leaves — so
|
|
24
|
+
* the scope carries both.
|
|
25
|
+
*/
|
|
26
|
+
export interface CompositeParamScope {
|
|
27
|
+
/** Local names bound to the whole props object (`(props) => …`). */
|
|
28
|
+
whole: ReadonlySet<string>;
|
|
29
|
+
/** Local name → the parameter path it was destructured from (`({ name }) => …`). */
|
|
30
|
+
destructured: ReadonlyMap<string, string>;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Path → composite origin for one `new Type({...})` inside an interpreted
|
|
34
|
+
* composite factory body (chant #2161).
|
|
35
|
+
*
|
|
36
|
+
* Same walk, same path grammar and the same under-reporting posture as
|
|
37
|
+
* {@link collectParamDependencies}, with one added answer: a path whose
|
|
38
|
+
* expression reads NO parameter is recorded as `composite-literal` rather than
|
|
39
|
+
* left silent, because "the composite fixes this" is a finding in its own
|
|
40
|
+
* right — it is what the reconcile refuses on.
|
|
41
|
+
*
|
|
42
|
+
* A spread is the one place nothing is recorded when no parameter is found.
|
|
43
|
+
* Which keys it contributes is not knowable here, so `composite-parameter` at
|
|
44
|
+
* the containing object is a safe over-approximation of "a parameter governs
|
|
45
|
+
* something under here", while `composite-literal` would be a claim that every
|
|
46
|
+
* key it brings is fixed. That claim is left unmade, and those paths come back
|
|
47
|
+
* `unknown` from ../fold-provenance.ts instead.
|
|
48
|
+
*/
|
|
49
|
+
export declare function collectCompositeOrigins(props: ts.ObjectLiteralExpression, consts: ReadonlyMap<string, ts.Expression>, scope: CompositeParamScope, composite: string): Record<string, PathOrigin>;
|
|
17
50
|
//# sourceMappingURL=param-deps.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"param-deps.d.ts","sourceRoot":"","sources":["../../src/discovery/param-deps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"param-deps.d.ts","sourceRoot":"","sources":["../../src/discovery/param-deps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAsHhD;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,EAAE,CAAC,uBAAuB,EACjC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,EAC1C,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAwC5B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,mBAAmB;IAClC,oEAAoE;IACpE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3B,oFAAoF;IACpF,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C;AAkGD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,EAAE,CAAC,uBAAuB,EACjC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,EAC1C,KAAK,EAAE,mBAAmB,EAC1B,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAkD5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../../src/discovery/sandbox/bundle.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../../src/discovery/sandbox/bundle.ts"],"names":[],"mappings":"AA0LA,MAAM,WAAW,YAAY;IAC3B,uSAAuS;IACvS,UAAU,EAAE,MAAM,CAAC;IACnB,kJAAkJ;IAClJ,SAAS,EAAE,MAAM,CAAC;IAClB,uQAAuQ;IACvQ,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,uGAAuG;IACvG,UAAU,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CA4B9E"}
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
*
|
|
40
40
|
* The one way to get there is `ChantConfigSchema`'s `.passthrough()`, which
|
|
41
41
|
* accepts unknown extra keys of any type (that is how a lexicon extends the
|
|
42
|
-
* config —
|
|
43
|
-
*
|
|
42
|
+
* config — a lexicon's own namespace key, itself pure data). A project that
|
|
43
|
+
* parks a function under such a key gets a clear
|
|
44
44
|
* error naming it, rather than a config that silently lost it.
|
|
45
45
|
*
|
|
46
46
|
* ## The one accepted lossy case: `undefined` object properties
|
|
@@ -66,7 +66,11 @@
|
|
|
66
66
|
* `fold()` already rejects a nested `new Type(...)` used as a value for a
|
|
67
67
|
* real, differential-caught reason (the envelope leaks into
|
|
68
68
|
* serialization); a factory that returns one is the same hazard wearing a
|
|
69
|
-
* call.
|
|
69
|
+
* call. Still true after #2171, which registered the ConvergeOp RULE
|
|
70
|
+
* builders below. Those return plain data that an Op carries; `Op()`
|
|
71
|
+
* itself returns the entity, and a top-level `export const x = Op({...})`
|
|
72
|
+
* folds through the composite spine in `../discovery/fold-import.ts`
|
|
73
|
+
* rather than through this list, which is why it needs no entry here.
|
|
70
74
|
* - `propagate()`, `withDefaults()`, `resource()`, `mergeDefaults()`
|
|
71
75
|
* (`../composite.ts`) are composite *definition* helpers, not value-position
|
|
72
76
|
* helpers. `propagate()` in particular mutates its argument in place, and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"foldable-helpers.d.ts","sourceRoot":"","sources":["../../src/fold/foldable-helpers.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"foldable-helpers.d.ts","sourceRoot":"","sources":["../../src/fold/foldable-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoFG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sFAAsF;IACtF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,kFAAkF;IAClF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,0BAA0B,EAAE,SAAS,iBAAiB,EAsGlE,CAAC;AAIF;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAeD,+FAA+F;AAC/F,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAIhE"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fold provenance (#2161) — which composite parameter produced which emitted field.
|
|
3
|
+
*
|
|
4
|
+
* A composite is the one lossy thing chant emits. It takes a few typed
|
|
5
|
+
* arguments and expands to several resources, so a return leg that regenerates
|
|
6
|
+
* source from live produces flat typed resources and the composite is gone. The
|
|
7
|
+
* projection is not invertible from its output alone, which is the view-update
|
|
8
|
+
* problem landing on chant's record.
|
|
9
|
+
*
|
|
10
|
+
* chant can answer it where a general generator cannot, and for one reason: the
|
|
11
|
+
* evaluated subset is restricted on purpose. `discovery/fold-import.ts` already
|
|
12
|
+
* interprets an admissible factory body rather than calling it, so the
|
|
13
|
+
* expression each member property was WRITTEN as is in hand at build time. The
|
|
14
|
+
* same pass records where the field came from, in `discovery/param-deps.ts`'s
|
|
15
|
+
* {@link import("./discovery/param-deps.js").collectCompositeOrigins}.
|
|
16
|
+
*
|
|
17
|
+
* ## Four answers, and the fourth is a real one
|
|
18
|
+
*
|
|
19
|
+
* Every emitted path gets one of {@link FoldFieldOrigin}'s four kinds. Three of
|
|
20
|
+
* them are findings; `unknown` is the fourth, and it is a legal answer rather
|
|
21
|
+
* than a gap. A build that expanded a composite without interpreting its body
|
|
22
|
+
* (the run path, a factory outside the admissible subset, a sandboxed child
|
|
23
|
+
* whose provenance did not survive the wire) knows the field came from a
|
|
24
|
+
* composite and cannot say which parameter. Recording that is the whole point:
|
|
25
|
+
* an unknown must never fall through to `direct`, because `direct` licenses
|
|
26
|
+
* editing the field in the user's source and an unattributed composite field is
|
|
27
|
+
* exactly the case where that produces a flattened resource.
|
|
28
|
+
*
|
|
29
|
+
* `direct` is claimed only where the build has a provenance record AND that
|
|
30
|
+
* record says no composite expanded the entity. Absence of a record is
|
|
31
|
+
* `unknown`, never `direct`.
|
|
32
|
+
*
|
|
33
|
+
* ## Beside the output, never in it
|
|
34
|
+
*
|
|
35
|
+
* The record is build metadata, not declared configuration, and it must not
|
|
36
|
+
* reach the document an applier writes. It rides two channels, both outside the
|
|
37
|
+
* apply-bound document, and neither is a new mechanism:
|
|
38
|
+
*
|
|
39
|
+
* - per entity, the non-enumerable symbol-keyed side channel `./provenance.ts`
|
|
40
|
+
* already owns, invisible to every serializer and to every spread;
|
|
41
|
+
* - per build, {@link import("./build.js").BuildResult.foldProvenance}, a sibling
|
|
42
|
+
* of `buildParams` and `lexiconVersions`.
|
|
43
|
+
*
|
|
44
|
+
* Nothing is added to `SerializeContext`. That is the same posture
|
|
45
|
+
* `./effect-receipt.ts` takes at the same seam, one notch stricter: a receipt
|
|
46
|
+
* rides `SerializeContext.receipts` so a lexicon MAY render it outside
|
|
47
|
+
* `Resources`, whereas provenance has no rendering and is simply never handed
|
|
48
|
+
* to a serializer at all. `fold-provenance-exclusion.test.ts` drives a real
|
|
49
|
+
* build through a spy serializer and a mock applier to hold that line.
|
|
50
|
+
*
|
|
51
|
+
* ## The return leg
|
|
52
|
+
*
|
|
53
|
+
* {@link resolveDriftedField} is the consumer. #2160 has already ruled out the
|
|
54
|
+
* fields nobody declared, so a drifted field reaching it is one source actually
|
|
55
|
+
* declared, and the origin decides what may be proposed:
|
|
56
|
+
*
|
|
57
|
+
* - a composite parameter: propose changing that parameter, naming the file,
|
|
58
|
+
* the composite call and the parameter path. One line, composite intact.
|
|
59
|
+
* - a literal the composite fixes: refuse by name. The choice is to
|
|
60
|
+
* parameterize the field or stop using the composite there, and neither is
|
|
61
|
+
* something chant may pick.
|
|
62
|
+
* - a direct declaration: today's behaviour, unchanged.
|
|
63
|
+
* - unknown: today's behaviour, and say that is what happened.
|
|
64
|
+
*
|
|
65
|
+
* Proposing is as far as this goes. Rewriting a parameter in the user's source
|
|
66
|
+
* is a source-edit problem (the generator half of `chant import` emits whole
|
|
67
|
+
* files and nothing maps a property path back to a location in a `.ts` file),
|
|
68
|
+
* so a proposal here is a described action: it names the file, the composite
|
|
69
|
+
* call and the parameter path, and performs no edit.
|
|
70
|
+
*/
|
|
71
|
+
import { type Declarable } from "./declarable.js";
|
|
72
|
+
import { type EntityProvenance, type PathOrigin } from "./provenance.js";
|
|
73
|
+
import type { DeepEntityDrift } from "./lifecycle/deep-diff.js";
|
|
74
|
+
/** Why a field's origin could not be determined. Both are facts about the BUILD, not about the field. */
|
|
75
|
+
export type UnknownOriginReason =
|
|
76
|
+
/**
|
|
77
|
+
* A composite expanded the entity and this build did not interpret its body,
|
|
78
|
+
* so parameter and fixed literal are indistinguishable. The run path, a
|
|
79
|
+
* factory outside `fold-import.ts`'s admissible subset, and a `propagate()`
|
|
80
|
+
* key both sides wrote all land here.
|
|
81
|
+
*/
|
|
82
|
+
"composite-not-interpreted"
|
|
83
|
+
/**
|
|
84
|
+
* The build recorded no provenance for this entity at all, so not even "did a
|
|
85
|
+
* composite make it" is answerable. A sandboxed child's entities arrive this
|
|
86
|
+
* way: `discovery/entity-wire-codec.ts` drops build metadata over the wire.
|
|
87
|
+
*/
|
|
88
|
+
| "no-provenance";
|
|
89
|
+
/**
|
|
90
|
+
* What produced one emitted property path.
|
|
91
|
+
*
|
|
92
|
+
* The composite kinds carry `instance` — the export name every member of one
|
|
93
|
+
* composite call shares — because "the `AutoscaledService` composite" is not an
|
|
94
|
+
* address and "the `api` call of `AutoscaledService`" is.
|
|
95
|
+
*/
|
|
96
|
+
export type FoldFieldOrigin = {
|
|
97
|
+
kind: "composite-parameter";
|
|
98
|
+
composite: string;
|
|
99
|
+
instance?: string;
|
|
100
|
+
parameters: string[];
|
|
101
|
+
} | {
|
|
102
|
+
kind: "composite-literal";
|
|
103
|
+
composite: string;
|
|
104
|
+
instance?: string;
|
|
105
|
+
} | {
|
|
106
|
+
kind: "direct";
|
|
107
|
+
} | {
|
|
108
|
+
kind: "unknown";
|
|
109
|
+
reason: UnknownOriginReason;
|
|
110
|
+
};
|
|
111
|
+
/** One entity's fold provenance: where it was declared, and an origin for every field it emits. */
|
|
112
|
+
export interface EntityFoldProvenance {
|
|
113
|
+
/** The source file that declared the entity, when the build recorded one. */
|
|
114
|
+
sourceFile?: string;
|
|
115
|
+
/** The composite type that expanded it, when one did. */
|
|
116
|
+
composite?: string;
|
|
117
|
+
/** The composite call (export name) it belongs to, when one expanded it. */
|
|
118
|
+
instance?: string;
|
|
119
|
+
/**
|
|
120
|
+
* Emitted property path to origin, in sorted key order. Every path the entity
|
|
121
|
+
* emits is present: a path with no attribution carries an `unknown` origin
|
|
122
|
+
* rather than being left out, so a consumer iterating fields never has to
|
|
123
|
+
* decide what a missing key meant.
|
|
124
|
+
*/
|
|
125
|
+
fields: Record<string, FoldFieldOrigin>;
|
|
126
|
+
}
|
|
127
|
+
/** A whole build's fold provenance, keyed by chant entity name. */
|
|
128
|
+
export type FoldProvenance = Record<string, EntityFoldProvenance>;
|
|
129
|
+
/**
|
|
130
|
+
* Every property path an entity's `props` emits, in `EntityProvenance.paths`'
|
|
131
|
+
* grammar: dotted names only, plain objects descended into, everything else
|
|
132
|
+
* attributed whole at its own path.
|
|
133
|
+
*
|
|
134
|
+
* Arrays are deliberately not indexed. An index-shaped key would not survive an
|
|
135
|
+
* element moving, and the recorder that produces origins cannot index either,
|
|
136
|
+
* so indexing here would manufacture paths nothing can ever attribute. The diff
|
|
137
|
+
* addresses array elements with `[#key]`/`[n]` and `originOfPath` resolves
|
|
138
|
+
* those against the dotted key that covers them, which is the join between the
|
|
139
|
+
* two grammars.
|
|
140
|
+
*
|
|
141
|
+
* An empty object is a value, and a leaf. An `undefined` value is not emitted
|
|
142
|
+
* and yields no path.
|
|
143
|
+
*/
|
|
144
|
+
export declare function emittedFieldPaths(props: unknown): string[];
|
|
145
|
+
/**
|
|
146
|
+
* The four-way answer for one path, from the recorded {@link PathOrigin} and
|
|
147
|
+
* the entity's own provenance.
|
|
148
|
+
*
|
|
149
|
+
* `origin` is what {@link originOfPath} resolved for the path, so a coarse key
|
|
150
|
+
* recorded at an ancestor governs a leaf, exactly as it does everywhere else.
|
|
151
|
+
*/
|
|
152
|
+
export declare function classifyFieldOrigin(origin: PathOrigin | undefined, provenance: EntityProvenance | undefined): FoldFieldOrigin;
|
|
153
|
+
/** One entity's fold provenance, or `undefined` when it emits no properties at all. */
|
|
154
|
+
export declare function foldProvenanceOfEntity(entity: Declarable, provenance: EntityProvenance | undefined): EntityFoldProvenance | undefined;
|
|
155
|
+
/**
|
|
156
|
+
* A whole build's fold provenance.
|
|
157
|
+
*
|
|
158
|
+
* `provenanceOf` is injected rather than read off the entity here so the same
|
|
159
|
+
* function serves a build (where it is `getProvenance`) and a test with a
|
|
160
|
+
* hand-written record. Entities with no properties are absent; sorted, because
|
|
161
|
+
* a build's outputs are compared byte for byte.
|
|
162
|
+
*/
|
|
163
|
+
export declare function foldProvenanceOfEntities(entities: ReadonlyMap<string, Declarable>, provenanceOf: (entity: Declarable) => EntityProvenance | undefined): FoldProvenance;
|
|
164
|
+
/** One-line rendering of a field origin, for a report. */
|
|
165
|
+
export declare function describeFoldFieldOrigin(origin: FoldFieldOrigin): string;
|
|
166
|
+
/** Why an origin could not be determined, in words a report can print. */
|
|
167
|
+
export declare function unknownOriginText(reason: UnknownOriginReason): string;
|
|
168
|
+
/**
|
|
169
|
+
* What the return leg may do about one drifted field.
|
|
170
|
+
*
|
|
171
|
+
* Every arm is a DESCRIBED action. Nothing here edits a file, and
|
|
172
|
+
* `propose-parameter` deliberately stops at naming the edit: the source-edit
|
|
173
|
+
* half is the generator side of `chant import` and does not exist yet.
|
|
174
|
+
*/
|
|
175
|
+
export type DriftResolution = {
|
|
176
|
+
kind: "propose-parameter";
|
|
177
|
+
composite: string;
|
|
178
|
+
instance?: string;
|
|
179
|
+
sourceFile?: string;
|
|
180
|
+
/** The factory parameter paths that govern the field. */
|
|
181
|
+
parameters: string[];
|
|
182
|
+
description: string;
|
|
183
|
+
} | {
|
|
184
|
+
kind: "refuse-fixed";
|
|
185
|
+
composite: string;
|
|
186
|
+
instance?: string;
|
|
187
|
+
sourceFile?: string;
|
|
188
|
+
description: string;
|
|
189
|
+
} | {
|
|
190
|
+
kind: "edit-declaration";
|
|
191
|
+
sourceFile?: string;
|
|
192
|
+
description: string;
|
|
193
|
+
} | {
|
|
194
|
+
kind: "fall-back";
|
|
195
|
+
reason: UnknownOriginReason;
|
|
196
|
+
sourceFile?: string;
|
|
197
|
+
description: string;
|
|
198
|
+
};
|
|
199
|
+
/** One drifted field and what may be done about it. */
|
|
200
|
+
export interface FieldReconcile {
|
|
201
|
+
entity: string;
|
|
202
|
+
path: string;
|
|
203
|
+
declared?: unknown;
|
|
204
|
+
live?: unknown;
|
|
205
|
+
origin: FoldFieldOrigin;
|
|
206
|
+
resolution: DriftResolution;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Classify one drifted field by its origin.
|
|
210
|
+
*
|
|
211
|
+
* The caller has already established this is drift in #2160's sense: a path
|
|
212
|
+
* source declared, whose live value moved. Undeclared fields are held
|
|
213
|
+
* elsewhere and never reach here, so the only question left is which of the
|
|
214
|
+
* four origins produced the field.
|
|
215
|
+
*/
|
|
216
|
+
export declare function resolveDriftedField(input: {
|
|
217
|
+
entity: string;
|
|
218
|
+
path: string;
|
|
219
|
+
declared?: unknown;
|
|
220
|
+
live?: unknown;
|
|
221
|
+
origin?: PathOrigin;
|
|
222
|
+
provenance?: EntityProvenance;
|
|
223
|
+
}): FieldReconcile;
|
|
224
|
+
/**
|
|
225
|
+
* Every drifted field in a deep diff, classified.
|
|
226
|
+
*
|
|
227
|
+
* Reads `drifted` only. `unclaimed` is somebody else's field and
|
|
228
|
+
* `accepted` is a difference the baseline holds back, and neither may become an
|
|
229
|
+
* update, so neither is offered a resolution.
|
|
230
|
+
*
|
|
231
|
+
* A drift row of kind `absent` has no live value: the field is declared and the
|
|
232
|
+
* cloud does not have it. That is still drift on a declared path, and the same
|
|
233
|
+
* four origins decide what may be proposed about it.
|
|
234
|
+
*/
|
|
235
|
+
export declare function resolveDeepDrift(drifted: readonly DeepEntityDrift[], provenanceOf: (entity: string) => EntityProvenance | undefined): FieldReconcile[];
|
|
236
|
+
//# sourceMappingURL=fold-provenance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fold-provenance.d.ts","sourceRoot":"","sources":["../src/fold-provenance.ts"],"names":[],"mappings":"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"}
|
package/dist/graph-ops.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import type { Declarable } from "./declarable.js";
|
|
|
5
5
|
* root beside `sourceDir: "src"`), and `chant op` / `chant graph` find them via
|
|
6
6
|
* {@link discoverOps}, which scans from the git root. Join the two scopes: every
|
|
7
7
|
* Op `discoverOps` finds that discovery did not already load becomes a
|
|
8
|
-
* `
|
|
8
|
+
* `Chant::Op` entity in the map, keyed the way discovery keys a default
|
|
9
9
|
* export (the file's basename sans `.op.ts`), so the IR carries the declared
|
|
10
10
|
* DAG whatever the layout. Ops discovery already loaded (same file) are left
|
|
11
11
|
* alone. Returns the op-discovery errors for the caller to surface.
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `heldElsewhere` — a typed, per-property declaration that a field belongs to
|
|
3
|
+
* something else once the first apply happens (chant #2162).
|
|
4
|
+
*
|
|
5
|
+
* An autoscaler owns a Deployment's `replicas` after the first apply. A
|
|
6
|
+
* controller writes an annotation on every sync. An operator was granted one
|
|
7
|
+
* knob deliberately. None of these are drift, and reconciling them back to
|
|
8
|
+
* whatever chant last declared would fight the thing that is actually
|
|
9
|
+
* supposed to own the field.
|
|
10
|
+
*
|
|
11
|
+
* Terraform's answer is `lifecycle { ignore_changes = [...] }`: a list of
|
|
12
|
+
* strings, carrying no reason, invisible once written. This is the typed
|
|
13
|
+
* alternative — a marker written where the property's value would go, so a
|
|
14
|
+
* lexicon's generated types check it the same way they check any other value,
|
|
15
|
+
* and it cannot be attached to a property that does not exist.
|
|
16
|
+
*
|
|
17
|
+
* This is not a suppression comment. `chant-ignore` (#2111) hides a *lint*
|
|
18
|
+
* finding about source; a `heldElsewhere` marker is a fact about who operates
|
|
19
|
+
* a field at *runtime*, so it lives in the typed declaration, where
|
|
20
|
+
* `chant lifecycle plan` and `chant lifecycle diff --live` can render it,
|
|
21
|
+
* rather than in a comment only a linter reads.
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* Runtime-only marker, symbol-keyed so it never collides with a real
|
|
25
|
+
* property actually named `by` or `reason` and never serializes by accident
|
|
26
|
+
* through `JSON.stringify` or `Object.entries` (which do not visit symbol
|
|
27
|
+
* keys) — the two places a stray plain-object marker would otherwise leak
|
|
28
|
+
* into a snapshot or a wire payload unnoticed.
|
|
29
|
+
*/
|
|
30
|
+
export declare const HELD_ELSEWHERE_MARKER: unique symbol;
|
|
31
|
+
export interface HeldElsewhereOptions {
|
|
32
|
+
/** Who holds the field at runtime — the autoscaler, the controller, the operator. Free text: whatever names the holder on this substrate ("hpa", "cluster-autoscaler", "the on-call operator who set this by hand"). */
|
|
33
|
+
by: string;
|
|
34
|
+
/** Why chant does not reconcile this field after the first apply. */
|
|
35
|
+
reason: string;
|
|
36
|
+
}
|
|
37
|
+
/** The runtime shape a `heldElsewhere()` call actually produces. */
|
|
38
|
+
export interface HeldElsewhereMarker extends HeldElsewhereOptions {
|
|
39
|
+
readonly [HELD_ELSEWHERE_MARKER]: true;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Declare a property held by something else after the first apply.
|
|
43
|
+
*
|
|
44
|
+
* Typed `T` — the property's own declared type — rather than
|
|
45
|
+
* `HeldElsewhereMarker`, so it type-checks in exactly the position the
|
|
46
|
+
* property's real value would go: `replicas: heldElsewhere({ by: "hpa",
|
|
47
|
+
* reason: "the autoscaler owns replicas after the first apply" })` against a
|
|
48
|
+
* generated `replicas?: number` typechecks the same way `replicas: 3` does,
|
|
49
|
+
* and writing it against a property that does not exist on the resource's
|
|
50
|
+
* props is an excess-property error like any other.
|
|
51
|
+
*
|
|
52
|
+
* The runtime value is the marker object, not a `T` — this function tells
|
|
53
|
+
* TypeScript otherwise on purpose. Every consumer that must tell the two
|
|
54
|
+
* apart checks {@link isHeldElsewhere} before trusting a declared value's
|
|
55
|
+
* real shape: the synth-time serializer (`serializer-walker.ts`, which omits
|
|
56
|
+
* the field from the applied payload so the property is never sent — the
|
|
57
|
+
* provider defaults it once at creation, and the holder owns it from there)
|
|
58
|
+
* and the deep-diff declared side (`deep-observation.ts`/`deep-diff.ts`,
|
|
59
|
+
* which reports a live difference as held rather than as drift).
|
|
60
|
+
*/
|
|
61
|
+
export declare function heldElsewhere<T>(opts: HeldElsewhereOptions): T;
|
|
62
|
+
/**
|
|
63
|
+
* True when `value` is a {@link HeldElsewhereMarker} — the runtime shape a
|
|
64
|
+
* `heldElsewhere()` call produces, wherever it ends up (a resource's own
|
|
65
|
+
* prop, nested inside a property-kind Declarable's props).
|
|
66
|
+
*/
|
|
67
|
+
export declare function isHeldElsewhere(value: unknown): value is HeldElsewhereMarker;
|
|
68
|
+
/**
|
|
69
|
+
* JSON-safe tag a held marker normalizes to (see `deep-observation.ts`) so
|
|
70
|
+
* its identity survives normalization, `flattenDeepProperties`, and a
|
|
71
|
+
* `--json` round-trip. The symbol marker above does not serialize and
|
|
72
|
+
* `Object.entries` does not enumerate it, so without a JSON-safe stand-in the
|
|
73
|
+
* normalization pass would flatten `{ by, reason }` into two ordinary leaf
|
|
74
|
+
* paths instead of keeping the marker recognizable as one value.
|
|
75
|
+
*/
|
|
76
|
+
export declare const HELD_ELSEWHERE_TAG: "chant:heldElsewhere";
|
|
77
|
+
/** The normalized, JSON-safe form of a {@link HeldElsewhereMarker}. */
|
|
78
|
+
export interface NormalizedHeldElsewhere extends HeldElsewhereOptions {
|
|
79
|
+
readonly heldElsewhere: typeof HELD_ELSEWHERE_TAG;
|
|
80
|
+
}
|
|
81
|
+
/** Normalize a runtime marker to its JSON-safe tagged form. */
|
|
82
|
+
export declare function normalizeHeldElsewhere(marker: HeldElsewhereMarker): NormalizedHeldElsewhere;
|
|
83
|
+
/** True when `value` is the normalized, JSON-safe tagged form of a held marker. */
|
|
84
|
+
export declare function isNormalizedHeldElsewhere(value: unknown): value is NormalizedHeldElsewhere;
|
|
85
|
+
//# sourceMappingURL=held-elsewhere.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"held-elsewhere.d.ts","sourceRoot":"","sources":["../src/held-elsewhere.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,eAAoC,CAAC;AAEvE,MAAM,WAAW,oBAAoB;IACnC,wNAAwN;IACxN,EAAE,EAAE,MAAM,CAAC;IACX,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,oEAAoE;AACpE,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;IAC/D,QAAQ,CAAC,CAAC,qBAAqB,CAAC,EAAE,IAAI,CAAC;CACxC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,oBAAoB,GAAG,CAAC,CAO9D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAM5E;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,EAAG,qBAA8B,CAAC;AAEjE,uEAAuE;AACvE,MAAM,WAAW,uBAAwB,SAAQ,oBAAoB;IACnE,QAAQ,CAAC,aAAa,EAAE,OAAO,kBAAkB,CAAC;CACnD;AAED,+DAA+D;AAC/D,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,mBAAmB,GAAG,uBAAuB,CAE3F;AAED,mFAAmF;AACnF,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,uBAAuB,CAM1F"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Lexicon-agnostic declarative specification system
|
|
5
5
|
*/
|
|
6
6
|
export * from "./declarable.js";
|
|
7
|
+
export * from "./held-elsewhere.js";
|
|
7
8
|
export * from "./composite.js";
|
|
8
9
|
export * from "./provenance.js";
|
|
9
10
|
export * from "./secret-provenance.js";
|
|
@@ -55,6 +56,8 @@ export * from "./observation.js";
|
|
|
55
56
|
export * from "./identity.js";
|
|
56
57
|
export * from "./apply.js";
|
|
57
58
|
export * from "./deep-observation.js";
|
|
59
|
+
export * from "./claimed-fields.js";
|
|
60
|
+
export * from "./fold-provenance.js";
|
|
58
61
|
export * from "./owner-chain.js";
|
|
59
62
|
export * from "./lexicon-integrity.js";
|
|
60
63
|
export * from "./lexicon-manifest.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,QAAQ,CAAC;AACvB,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,YAAY,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,2BAA2B,EAC3B,oBAAoB,EACpB,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,GAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,GACtB,MAAM,0BAA0B,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAElC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAClE,cAAc,EAAE,iBAAiB,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC5F,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Every cloud lexicon binds an environment to a scope: AWS resolves `<env>`
|
|
5
5
|
* to a CloudFormation stack, Azure treats `<env>` as the resource group,
|
|
6
|
-
*
|
|
6
|
+
* Fly resolves it to an app. K8s (and
|
|
7
7
|
* GCP-via-Config-Connector, which observes through the same kubectl path)
|
|
8
8
|
* bound nothing — `describeResources` shelled out to `kubectl get` with no
|
|
9
9
|
* `--context`, so it read whatever cluster `kubectl config current-context`
|
|
@@ -78,8 +78,8 @@ export interface ResolveClusterTargetOptions {
|
|
|
78
78
|
* Resolve the kubectl context an environment should be observed/applied
|
|
79
79
|
* against, reading `k8s.profiles.<environment>.context` from `chant.config.ts`
|
|
80
80
|
* (the `config` passed in is the passthrough `ChantConfig`, cast loosely since
|
|
81
|
-
* the `k8s` key isn't declared on the core schema — same pattern
|
|
82
|
-
*
|
|
81
|
+
* the `k8s` key isn't declared on the core schema — the same pattern every
|
|
82
|
+
* lexicon namespace follows).
|
|
83
83
|
*
|
|
84
84
|
* - No binding declared: returns `{ source: "ambient" }` — unchanged
|
|
85
85
|
* behavior — but logs a visible warning identifying the caller and
|
package/dist/lexicon-config.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* The config namespace a lexicon owns (#1344).
|
|
3
3
|
*
|
|
4
4
|
* Three lexicons read a top-level `chant.config.ts` key named after themselves —
|
|
5
|
-
* `k8s.profiles.<env>.context`, `
|
|
5
|
+
* `k8s.profiles.<env>.context`, `forgejo.runnerLabels` and
|
|
6
6
|
* `forgejo.actionsRoot` — all documented for users, none declared anywhere.
|
|
7
7
|
* `ChantConfigSchema` is `.passthrough()`, so at runtime any key is accepted and
|
|
8
8
|
* a typo is silently ignored: write `runnerLabel` and the Forgejo dialect just
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
* error TS2353: Object literal may only specify known properties,
|
|
13
13
|
* and 'forgejo' does not exist in type 'ChantConfig'.
|
|
14
14
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
15
|
+
* The lexicons had arrived at different workarounds: one exported its own
|
|
16
|
+
* widened config type, k8s's docs dropped `satisfies`, and forgejo's kept it
|
|
17
|
+
* and were wrong.
|
|
18
18
|
*
|
|
19
19
|
* A lexicon now declares the shape of its namespace. The declaration is both
|
|
20
20
|
* halves of the fix at once: core validates against it at load, and the lexicon
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared helpers for lexicon plugin implementations.
|
|
3
3
|
*
|
|
4
|
-
* Eliminates boilerplate across the
|
|
4
|
+
* Eliminates boilerplate across the 15 lexicon plugins that use it by providing
|
|
5
5
|
* factory functions for common plugin methods: skills loading,
|
|
6
6
|
* MCP diff tool, and MCP catalog resource.
|
|
7
7
|
*/
|