@intentius/chant 0.124.13 → 0.124.14
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/bin/chant +11 -0
- package/dist/agents/checks.js +326 -0
- package/dist/agents/discover.js +885 -0
- package/dist/agents/importer.js +17 -0
- package/dist/agents/index.js +12 -0
- package/dist/agents/types.js +19 -0
- package/dist/apply.js +151 -0
- package/dist/attrref.js +70 -0
- package/dist/audit/catalog.js +350 -0
- package/dist/audit/core.js +252 -0
- package/dist/audit/discover.js +633 -0
- package/dist/audit/fetch.js +666 -0
- package/dist/audit/lineage.js +91 -0
- package/dist/audit/nginx.js +366 -0
- package/dist/audit/prior-art.js +132 -0
- package/dist/audit/proof.js +321 -0
- package/dist/audit/report-html.js +194 -0
- package/dist/audit/report-model.js +198 -0
- package/dist/audit/report.js +102 -0
- package/dist/audit/rules-doc.js +144 -0
- package/dist/audit/secrets.js +405 -0
- package/dist/audit/terraform-state.js +140 -0
- package/dist/audit/wrangler.js +262 -0
- package/dist/behaviour-delta.js +401 -0
- package/dist/behaviour-engine.js +357 -0
- package/dist/behaviour-graph.js +83 -0
- package/dist/behaviour-http.js +188 -0
- package/dist/behaviour-kinds.js +172 -0
- package/dist/behaviour-overlay.js +50 -0
- package/dist/behaviour-predict.js +188 -0
- package/dist/behaviour-request.js +194 -0
- package/dist/behaviour.js +1325 -0
- package/dist/build-params.js +108 -0
- package/dist/build.js +668 -0
- package/dist/builder.js +44 -0
- package/dist/cdk/advise.js +30 -0
- package/dist/cdk/assembly.js +122 -0
- package/dist/cdk/graph.js +444 -0
- package/dist/cdk/tier-map.js +64 -0
- package/dist/cdk/types.js +24 -0
- package/dist/change-set.js +312 -0
- package/dist/child-project.js +21 -0
- package/dist/claimed-fields.js +135 -0
- package/dist/cli/build-options.js +70 -0
- package/dist/cli/build-params-cli.js +139 -0
- package/dist/cli/command-group.js +123 -0
- package/dist/cli/commands/audit-agents.js +326 -0
- package/dist/cli/commands/audit.js +571 -0
- package/dist/cli/commands/build.js +920 -0
- package/dist/cli/commands/carve-apply.js +153 -0
- package/dist/cli/commands/carve-bridge.js +201 -0
- package/dist/cli/commands/carve-emit.js +332 -0
- package/dist/cli/commands/carve-status.js +119 -0
- package/dist/cli/commands/carve.js +204 -0
- package/dist/cli/commands/check-lexicon-docs.js +79 -0
- package/dist/cli/commands/check-lexicon-examples.js +177 -0
- package/dist/cli/commands/check-lexicon-intrinsics.js +291 -0
- package/dist/cli/commands/check-lexicon-mcp.js +82 -0
- package/dist/cli/commands/check-lexicon-plugin.d.ts.map +1 -1
- package/dist/cli/commands/check-lexicon-plugin.js +104 -0
- package/dist/cli/commands/check-lexicon.js +766 -0
- package/dist/cli/commands/describe.js +85 -0
- package/dist/cli/commands/diff.js +175 -0
- package/dist/cli/commands/doctor.js +350 -0
- package/dist/cli/commands/import-agents.js +155 -0
- package/dist/cli/commands/import.js +670 -0
- package/dist/cli/commands/init-lexicon/templates/codegen.js +194 -0
- package/dist/cli/commands/init-lexicon/templates/docs.js +100 -0
- package/dist/cli/commands/init-lexicon/templates/examples.js +29 -0
- package/dist/cli/commands/init-lexicon/templates/lint.js +34 -0
- package/dist/cli/commands/init-lexicon/templates/lsp.js +37 -0
- package/dist/cli/commands/init-lexicon/templates/plugin.js +108 -0
- package/dist/cli/commands/init-lexicon/templates/project.js +240 -0
- package/dist/cli/commands/init-lexicon/templates/spec.js +56 -0
- package/dist/cli/commands/init-lexicon/templates/tests.js +66 -0
- package/dist/cli/commands/init-lexicon.js +172 -0
- package/dist/cli/commands/init.js +381 -0
- package/dist/cli/commands/lexicon-rolling-upgrade.js +145 -0
- package/dist/cli/commands/lexicon-surface-diff.js +145 -0
- package/dist/cli/commands/licenses.js +125 -0
- package/dist/cli/commands/lint.d.ts.map +1 -1
- package/dist/cli/commands/lint.js +948 -0
- package/dist/cli/commands/list.js +63 -0
- package/dist/cli/commands/migrate.d.ts.map +1 -1
- package/dist/cli/commands/migrate.js +423 -0
- package/dist/cli/commands/onboard.js +403 -0
- package/dist/cli/commands/pinned-upgrade.js +191 -0
- package/dist/cli/commands/update.js +194 -0
- package/dist/cli/commands/vendor.js +217 -0
- package/dist/cli/conflict-check.js +104 -0
- package/dist/cli/debug.js +8 -0
- package/dist/cli/format.js +104 -0
- package/dist/cli/handlers/build.js +267 -0
- package/dist/cli/handlers/carve-apply.js +30 -0
- package/dist/cli/handlers/carve-bridge.js +28 -0
- package/dist/cli/handlers/carve-emit.js +50 -0
- package/dist/cli/handlers/carve-status.js +26 -0
- package/dist/cli/handlers/carve.js +40 -0
- package/dist/cli/handlers/change-set.js +46 -0
- package/dist/cli/handlers/components.js +730 -0
- package/dist/cli/handlers/dev.js +113 -0
- package/dist/cli/handlers/emulator.js +233 -0
- package/dist/cli/handlers/explain.js +54 -0
- package/dist/cli/handlers/fan-out.js +422 -0
- package/dist/cli/handlers/gate-resume.js +275 -0
- package/dist/cli/handlers/generate.js +84 -0
- package/dist/cli/handlers/graph.js +969 -0
- package/dist/cli/handlers/init.js +102 -0
- package/dist/cli/handlers/lifecycle.js +1727 -0
- package/dist/cli/handlers/lint.js +62 -0
- package/dist/cli/handlers/migrate.js +48 -0
- package/dist/cli/handlers/misc.js +391 -0
- package/dist/cli/handlers/operator.js +1162 -0
- package/dist/cli/handlers/override-approve.js +102 -0
- package/dist/cli/handlers/pr.js +503 -0
- package/dist/cli/handlers/promote.js +342 -0
- package/dist/cli/handlers/run-generate.js +206 -0
- package/dist/cli/handlers/run-wave.js +66 -0
- package/dist/cli/handlers/run.js +1191 -0
- package/dist/cli/handlers/scenario.js +325 -0
- package/dist/cli/handlers/search.js +924 -0
- package/dist/cli/handlers/serve.js +32 -0
- package/dist/cli/handlers/vendor.js +154 -0
- package/dist/cli/index.js +3 -0
- package/dist/cli/is-entry-point.js +23 -0
- package/dist/cli/lsp/capabilities.js +28 -0
- package/dist/cli/lsp/diagnostics.js +34 -0
- package/dist/cli/lsp/server.js +329 -0
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +2540 -0
- package/dist/cli/mcp/lifecycle-tools.js +80 -0
- package/dist/cli/mcp/op-tools.js +306 -0
- package/dist/cli/mcp/resource-handlers.js +258 -0
- package/dist/cli/mcp/resources/context.js +85 -0
- package/dist/cli/mcp/server.js +353 -0
- package/dist/cli/mcp/tools/build.js +111 -0
- package/dist/cli/mcp/tools/composites.js +95 -0
- package/dist/cli/mcp/tools/explain.js +166 -0
- package/dist/cli/mcp/tools/import.js +49 -0
- package/dist/cli/mcp/tools/lint.js +41 -0
- package/dist/cli/mcp/tools/scaffold.js +111 -0
- package/dist/cli/mcp/tools/search.js +112 -0
- package/dist/cli/mcp/types.js +1 -0
- package/dist/cli/mcp/workspace-plugins.js +91 -0
- package/dist/cli/mcp/workspace-tools.d.ts +1 -1
- package/dist/cli/mcp/workspace-tools.js +564 -0
- package/dist/cli/mcp-config.js +70 -0
- package/dist/cli/plugins.js +313 -0
- package/dist/cli/registry.js +23 -0
- package/dist/cli/reporters/stylish.js +329 -0
- package/dist/cli/version.js +15 -0
- package/dist/cli/watch.js +79 -0
- package/dist/codegen/bound-property-types.js +82 -0
- package/dist/codegen/coverage.js +119 -0
- package/dist/codegen/docs-file-markers.js +60 -0
- package/dist/codegen/docs-pages.js +115 -0
- package/dist/codegen/docs-rule-scanning.js +164 -0
- package/dist/codegen/docs-rules.js +76 -0
- package/dist/codegen/docs-sections.js +117 -0
- package/dist/codegen/docs-sidebar.js +65 -0
- package/dist/codegen/docs-types.js +4 -0
- package/dist/codegen/docs.js +356 -0
- package/dist/codegen/fetch.js +340 -0
- package/dist/codegen/generate-post-synth-barrel.js +63 -0
- package/dist/codegen/generate-registry.js +71 -0
- package/dist/codegen/generate-runtime-index.js +56 -0
- package/dist/codegen/generate-typescript.js +119 -0
- package/dist/codegen/generate.js +115 -0
- package/dist/codegen/json-patch.js +141 -0
- package/dist/codegen/json-schema-to-ts.js +344 -0
- package/dist/codegen/json-schema.js +246 -0
- package/dist/codegen/lexicon-regen.js +412 -0
- package/dist/codegen/naming.js +217 -0
- package/dist/codegen/okf-lexicon.js +245 -0
- package/dist/codegen/package.js +150 -0
- package/dist/codegen/pinned-upgrade.d.ts.map +1 -1
- package/dist/codegen/pinned-upgrade.js +494 -0
- package/dist/codegen/registry.js +60 -0
- package/dist/codegen/rehype-base-url.mjs +68 -0
- package/dist/codegen/rolling-upgrade.js +217 -0
- package/dist/codegen/surface-snapshot.js +537 -0
- package/dist/codegen/testdata/postgres-tags.json +242 -0
- package/dist/codegen/topo-sort.js +36 -0
- package/dist/codegen/typecheck.js +115 -0
- package/dist/codegen/validate.js +200 -0
- package/dist/codegen/version-bump.js +35 -0
- package/dist/components/auto-release.js +143 -0
- package/dist/components/builders.js +47 -0
- package/dist/components/capability-plugin-loader.js +175 -0
- package/dist/components/capability-plugin-schema.js +46 -0
- package/dist/components/capability-plugin.js +99 -0
- package/dist/components/capability.js +60 -0
- package/dist/components/changed-files.js +72 -0
- package/dist/components/cli-support.js +427 -0
- package/dist/components/component.js +120 -0
- package/dist/components/component.schema.json +271 -0
- package/dist/components/config-defaults.js +130 -0
- package/dist/components/deploy-units.js +60 -0
- package/dist/components/discover.d.ts.map +1 -1
- package/dist/components/discover.js +189 -0
- package/dist/components/driver-output.js +86 -0
- package/dist/components/driver.js +728 -0
- package/dist/components/fan-out-output.js +165 -0
- package/dist/components/fan-out-record.js +94 -0
- package/dist/components/fan-out-run.js +373 -0
- package/dist/components/fan-out-support.js +60 -0
- package/dist/components/fan-out.js +273 -0
- package/dist/components/gate-plan.js +41 -0
- package/dist/components/gated-wave-pipeline.js +46 -0
- package/dist/components/index.js +24 -0
- package/dist/components/layers.js +28 -0
- package/dist/components/manifest-persistence.js +108 -0
- package/dist/components/pilots/alb-ecs.pilot.js +59 -0
- package/dist/components/pilots/dynamodb.pilot.js +51 -0
- package/dist/components/pilots/jar-emr.pilot.js +65 -0
- package/dist/components/pilots/lambda.pilot.js +52 -0
- package/dist/components/pilots/neo4j-fanout.pilot.js +68 -0
- package/dist/components/pilots/project.js +12 -0
- package/dist/components/pr-pipeline.js +134 -0
- package/dist/components/pr-run.js +363 -0
- package/dist/components/presets/ecs-fargate.js +72 -0
- package/dist/components/presets/index.js +28 -0
- package/dist/components/presets/lambda.js +34 -0
- package/dist/components/presets/single-host-compose.js +41 -0
- package/dist/components/promote.js +549 -0
- package/dist/components/registry.js +34 -0
- package/dist/components/run-progress.js +33 -0
- package/dist/components/sandbox/driver.d.ts.map +1 -1
- package/dist/components/sandbox/driver.js +93 -0
- package/dist/components/sandbox/run.js +115 -0
- package/dist/components/starter-plugin.js +104 -0
- package/dist/components/verbs/__tests__/mock-cloud-executor.js +68 -0
- package/dist/components/verbs/__tests__/mock-process-runner.js +45 -0
- package/dist/components/verbs/__tests__/mock-sbom-generator.js +56 -0
- package/dist/components/verbs/bom-writer.js +287 -0
- package/dist/components/verbs/build-archive.js +188 -0
- package/dist/components/verbs/build.js +142 -0
- package/dist/components/verbs/cloud-executor.js +110 -0
- package/dist/components/verbs/component-bom.js +125 -0
- package/dist/components/verbs/ensure-secret.js +50 -0
- package/dist/components/verbs/index.js +61 -0
- package/dist/components/verbs/license-policy.js +75 -0
- package/dist/components/verbs/lockfile-sbom-generator.js +191 -0
- package/dist/components/verbs/process-runner.js +78 -0
- package/dist/components/verbs/r2-sync.js +93 -0
- package/dist/components/verbs/reproducibility.js +62 -0
- package/dist/components/verbs/run-agent.js +577 -0
- package/dist/components/verbs/sbom-generator.js +119 -0
- package/dist/components/verbs/sbom.js +97 -0
- package/dist/components/verbs/shell.js +32 -0
- package/dist/components/verbs/sign.js +221 -0
- package/dist/components/verbs/stub.js +28 -0
- package/dist/components/verbs/tool-sbom-generator.js +154 -0
- package/dist/components/verbs/verify.js +112 -0
- package/dist/components/verbs/vex.js +131 -0
- package/dist/components/verbs/vuln-gate.js +152 -0
- package/dist/components/verbs/vuln-scan.js +288 -0
- package/dist/components/verbs/wait-verify.js +106 -0
- package/dist/components/verbs/wrangler.js +179 -0
- package/dist/components/wave-plan.js +102 -0
- package/dist/composite.js +305 -0
- package/dist/config-import.d.ts.map +1 -1
- package/dist/config-import.js +22 -0
- package/dist/config-sandbox.js +122 -0
- package/dist/config-static.js +206 -0
- package/dist/config.js +605 -0
- package/dist/content-digest.js +23 -0
- package/dist/declarable.js +114 -0
- package/dist/deep-observation.js +437 -0
- package/dist/detectLexicon.js +54 -0
- package/dist/discovery/cache.js +70 -0
- package/dist/discovery/collect.js +208 -0
- package/dist/discovery/cycles.js +95 -0
- package/dist/discovery/entity-wire-codec.js +391 -0
- package/dist/discovery/entity-wire.js +42 -0
- package/dist/discovery/files.js +121 -0
- package/dist/discovery/fold-import.d.ts.map +1 -1
- package/dist/discovery/fold-import.js +4178 -0
- package/dist/discovery/fold-rank.js +292 -0
- package/dist/discovery/graph.js +115 -0
- package/dist/discovery/import.d.ts.map +1 -1
- package/dist/discovery/import.js +65 -0
- package/dist/discovery/index.js +333 -0
- package/dist/discovery/param-deps.js +487 -0
- package/dist/discovery/resolve.js +39 -0
- package/dist/discovery/sandbox/bundle.js +214 -0
- package/dist/discovery/sandbox/child-errors.js +26 -0
- package/dist/discovery/sandbox/config-run.js +100 -0
- package/dist/discovery/sandbox/config-wire.js +183 -0
- package/dist/discovery/sandbox/driver.d.ts.map +1 -1
- package/dist/discovery/sandbox/driver.js +333 -0
- package/dist/discovery/sandbox/fork.js +229 -0
- package/dist/discovery/sandbox/policy-run.js +142 -0
- package/dist/discovery/sandbox/policy-wire.js +152 -0
- package/dist/discovery/sandbox/run.js +77 -0
- package/dist/discovery/specifier-resolve.js +320 -0
- package/dist/discovery/walk.js +284 -0
- package/dist/effect-receipt.js +340 -0
- package/dist/env.js +55 -0
- package/dist/errors.js +62 -0
- package/dist/fold/fold.js +1434 -0
- package/dist/fold/foldable-helpers.js +229 -0
- package/dist/fold/subset.js +696 -0
- package/dist/fold-provenance.js +414 -0
- package/dist/gate-decision.js +260 -0
- package/dist/gate-resume-run.js +154 -0
- package/dist/gated-waves.js +165 -0
- package/dist/governance.js +43 -0
- package/dist/graph-declared.js +45 -0
- package/dist/graph-detail.js +207 -0
- package/dist/graph-dot.js +54 -0
- package/dist/graph-effective.js +107 -0
- package/dist/graph-ir.js +623 -0
- package/dist/graph-layout.js +184 -0
- package/dist/graph-lens.js +105 -0
- package/dist/graph-mermaid.js +83 -0
- package/dist/graph-ops.js +39 -0
- package/dist/graph-refs.js +156 -0
- package/dist/held-elsewhere.js +87 -0
- package/dist/identity.js +251 -0
- package/dist/import/base-parser.js +34 -0
- package/dist/import/embedded.js +255 -0
- package/dist/import/generator.js +1 -0
- package/dist/import/ir-utils.js +85 -0
- package/dist/import/parser-options.js +45 -0
- package/dist/import/parser.js +1 -0
- package/dist/index.js +118 -0
- package/dist/intrinsic-interpolation.js +73 -0
- package/dist/intrinsic.js +31 -0
- package/dist/join-key.js +35 -0
- package/dist/kubectl-context.js +150 -0
- package/dist/lexicon-config.js +58 -0
- package/dist/lexicon-integrity.js +47 -0
- package/dist/lexicon-manifest.js +70 -0
- package/dist/lexicon-module.d.ts.map +1 -1
- package/dist/lexicon-module.js +241 -0
- package/dist/lexicon-output.js +218 -0
- package/dist/lexicon-plugin-helpers.js +104 -0
- package/dist/lexicon-schema.js +136 -0
- package/dist/lexicon.js +130 -0
- package/dist/lifecycle/affected.js +224 -0
- package/dist/lifecycle/assert-live.js +110 -0
- package/dist/lifecycle/build-ledger-store.js +160 -0
- package/dist/lifecycle/build-ledger.js +155 -0
- package/dist/lifecycle/change-set.js +356 -0
- package/dist/lifecycle/converge-ledger.js +161 -0
- package/dist/lifecycle/deep-diff.js +233 -0
- package/dist/lifecycle/deep-observe.js +147 -0
- package/dist/lifecycle/digest.js +143 -0
- package/dist/lifecycle/disruption.js +135 -0
- package/dist/lifecycle/gate-applied.js +113 -0
- package/dist/lifecycle/gate-audit.js +341 -0
- package/dist/lifecycle/gate-ledger-select.js +89 -0
- package/dist/lifecycle/gate-ledger.js +193 -0
- package/dist/lifecycle/gate-origin.js +117 -0
- package/dist/lifecycle/gate-pending.js +58 -0
- package/dist/lifecycle/git.js +1182 -0
- package/dist/lifecycle/identity.js +58 -0
- package/dist/lifecycle/index.js +26 -0
- package/dist/lifecycle/lease.js +283 -0
- package/dist/lifecycle/ledger-port.js +1 -0
- package/dist/lifecycle/legacy-digest.js +91 -0
- package/dist/lifecycle/live-diff.js +274 -0
- package/dist/lifecycle/local-note.js +15 -0
- package/dist/lifecycle/member-ledger.js +122 -0
- package/dist/lifecycle/observation-baseline.js +155 -0
- package/dist/lifecycle/observe.js +375 -0
- package/dist/lifecycle/oras-referrer-lookup.js +82 -0
- package/dist/lifecycle/override-ledger.js +54 -0
- package/dist/lifecycle/plan-digest.js +110 -0
- package/dist/lifecycle/plan-ledger.js +129 -0
- package/dist/lifecycle/receipt-plan.js +192 -0
- package/dist/lifecycle/release-ledger.js +155 -0
- package/dist/lifecycle/release-read.js +64 -0
- package/dist/lifecycle/replay.js +193 -0
- package/dist/lifecycle/rollback.js +102 -0
- package/dist/lifecycle/run-ledger.js +183 -0
- package/dist/lifecycle/scenario-eval.js +204 -0
- package/dist/lifecycle/scenario.js +214 -0
- package/dist/lifecycle/snapshot.js +239 -0
- package/dist/lifecycle/status.js +447 -0
- package/dist/lifecycle/symptoms.js +117 -0
- package/dist/lifecycle/teardown.js +255 -0
- package/dist/lifecycle/types.js +1 -0
- package/dist/lifecycle/unobserved-gate.js +33 -0
- package/dist/lifecycle/wave-plans.js +68 -0
- package/dist/lifecycle/work-item-id.js +36 -0
- package/dist/lifecycle/work-lease.js +393 -0
- package/dist/lint/component-checks.js +87 -0
- package/dist/lint/config.js +483 -0
- package/dist/lint/declarative.js +122 -0
- package/dist/lint/discover.d.ts.map +1 -1
- package/dist/lint/discover.js +138 -0
- package/dist/lint/engine.js +246 -0
- package/dist/lint/knowledge-checks.js +64 -0
- package/dist/lint/named-checks.js +22 -0
- package/dist/lint/output-checks.js +87 -0
- package/dist/lint/output-docs.js +163 -0
- package/dist/lint/parser.js +33 -0
- package/dist/lint/pipeline-change-gate.js +70 -0
- package/dist/lint/policy-import.d.ts +1 -1
- package/dist/lint/policy-import.d.ts.map +1 -1
- package/dist/lint/policy-import.js +62 -0
- package/dist/lint/policy-sandbox.js +86 -0
- package/dist/lint/policy.js +122 -0
- package/dist/lint/post-synth.js +87 -0
- package/dist/lint/presets/relaxed.json +26 -0
- package/dist/lint/presets/strict.json +24 -24
- package/dist/lint/receipt-checks.js +83 -0
- package/dist/lint/rule-loader.d.ts.map +1 -1
- package/dist/lint/rule-loader.js +89 -0
- package/dist/lint/rule-registry.js +86 -0
- package/dist/lint/rule.js +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-a.component.js +7 -0
- package/dist/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-b.component.js +7 -0
- package/dist/lint/rules/__fixtures__/comp/comp001/fail/orphan-lib.component.js +9 -0
- package/dist/lint/rules/__fixtures__/comp/comp001/pass/emr-job.component.js +11 -0
- package/dist/lint/rules/__fixtures__/comp/comp001/pass/jar-lib.component.js +9 -0
- package/dist/lint/rules/__fixtures__/comp/comp002/fail/search-service.component.js +25 -0
- package/dist/lint/rules/__fixtures__/comp/comp002/pass/jar-lib.component.js +8 -0
- package/dist/lint/rules/__fixtures__/comp/comp002/pass/search-service.component.js +21 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/fail/migrator.component.js +8 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/pass/agent-turn.component.js +24 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/pass/migrator.component.js +17 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/pass/orders-table.component.js +8 -0
- package/dist/lint/rules/__fixtures__/comp/comp004/fail/neo4j-cluster.component.js +18 -0
- package/dist/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.js +20 -0
- package/dist/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.js +8 -0
- package/dist/lint/rules/__fixtures__/comp/comp005/fail/search-service.component.js +12 -0
- package/dist/lint/rules/__fixtures__/comp/comp005/pass/search-service.component.js +16 -0
- package/dist/lint/rules/__fixtures__/comp/comp006/fail/legacy-tool.component.js +8 -0
- package/dist/lint/rules/__fixtures__/comp/comp006/pass/legacy-tool.component.js +12 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/fail/inventory-table.component.js +11 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/fail/orders-table.component.js +11 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/pass/orders-table.component.js +10 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/pass/search-service.component.js +16 -0
- package/dist/lint/rules/comp/comp001-publishes-never-applies.js +69 -0
- package/dist/lint/rules/comp/comp002-dangling-wiring-ref.js +84 -0
- package/dist/lint/rules/comp/comp003-mutating-no-rollback.js +103 -0
- package/dist/lint/rules/comp/comp004-gate-needs-durable-runtime.js +70 -0
- package/dist/lint/rules/comp/comp005-capability-kind-is-noun.js +109 -0
- package/dist/lint/rules/comp/comp006-shell-needs-reason.js +49 -0
- package/dist/lint/rules/comp/comp007-composition-sprawl.js +64 -0
- package/dist/lint/rules/comp/index.js +33 -0
- package/dist/lint/rules/comp/support.js +129 -0
- package/dist/lint/rules/composite-scope.js +51 -0
- package/dist/lint/rules/cor017-composite-name-match.js +93 -0
- package/dist/lint/rules/cor018-composite-prefer-lexicon-type.js +136 -0
- package/dist/lint/rules/cor021-env-literal-name.js +100 -0
- package/dist/lint/rules/cor022-receipt-leaf.js +118 -0
- package/dist/lint/rules/cor024-receipt-secret-pointer.js +199 -0
- package/dist/lint/rules/declarable-naming-convention.js +62 -0
- package/dist/lint/rules/evl001-non-literal-expression.js +66 -0
- package/dist/lint/rules/evl002-control-flow-resource.js +69 -0
- package/dist/lint/rules/evl003-dynamic-property-access.js +44 -0
- package/dist/lint/rules/evl004-spread-non-const.js +94 -0
- package/dist/lint/rules/evl005-resource-block-body.js +41 -0
- package/dist/lint/rules/evl007-invalid-siblings.js +105 -0
- package/dist/lint/rules/evl009-composite-no-constant.js +158 -0
- package/dist/lint/rules/evl010-composite-no-transform.js +59 -0
- package/dist/lint/rules/evl011-symbolic-in-template.js +106 -0
- package/dist/lint/rules/export-required.js +115 -0
- package/dist/lint/rules/file-declarable-limit.js +88 -0
- package/dist/lint/rules/flat-declarations.js +62 -0
- package/dist/lint/rules/index.js +90 -0
- package/dist/lint/rules/no-cyclic-declarable-ref.js +138 -0
- package/dist/lint/rules/no-redundant-type-import.js +76 -0
- package/dist/lint/rules/no-redundant-value-cast.js +41 -0
- package/dist/lint/rules/no-string-ref.js +59 -0
- package/dist/lint/rules/no-unused-declarable-import.js +75 -0
- package/dist/lint/rules/no-unused-declarable.js +142 -0
- package/dist/lint/rules/op/index.js +28 -0
- package/dist/lint/rules/op/ops012-activity-contract.js +54 -0
- package/dist/lint/rules/op/ops013-step-output-ref.js +88 -0
- package/dist/lint/rules/op/ops014-converge-rule-refusals.js +114 -0
- package/dist/lint/rules/op/ops015-gate-approval.js +45 -0
- package/dist/lint/rules/op/support.js +11 -0
- package/dist/lint/rules/op/sys010-key-over-plain-http.js +100 -0
- package/dist/lint/rules/property-kind.js +56 -0
- package/dist/lint/rules/single-concern-file.js +71 -0
- package/dist/lint/rules/sys001-no-literal-key.js +60 -0
- package/dist/lint/selectors.js +168 -0
- package/dist/lint/suppressions.js +129 -0
- package/dist/lint/typescript.js +17 -0
- package/dist/live-endpoint.js +113 -0
- package/dist/live-read-session.js +76 -0
- package/dist/lsp/lexicon-providers.js +163 -0
- package/dist/lsp/types.js +5 -0
- package/dist/managed-fields.js +293 -0
- package/dist/mcp/types.js +4 -0
- package/dist/notify-verify.js +0 -1
- package/dist/notify.js +0 -1
- package/dist/notify.schema.json +72 -0
- package/dist/observation.js +266 -0
- package/dist/okf-read.js +134 -0
- package/dist/okf.js +275 -0
- package/dist/op/__fixtures__/decide-stub-backend.js +125 -0
- package/dist/op/activities/activity-contracts.js +313 -0
- package/dist/op/activities/apply.js +582 -0
- package/dist/op/activities/build.js +18 -0
- package/dist/op/activities/change-coverage.js +40 -0
- package/dist/op/activities/change-set.js +64 -0
- package/dist/op/activities/converge.js +492 -0
- package/dist/op/activities/decide.js +211 -0
- package/dist/op/activities/env-teardown.js +110 -0
- package/dist/op/activities/factory.js +591 -0
- package/dist/op/activities/forge-pull-request.js +82 -0
- package/dist/op/activities/gh-host.js +78 -0
- package/dist/op/activities/guard-validate.js +165 -0
- package/dist/op/activities/http-check.js +40 -0
- package/dist/op/activities/index.js +59 -0
- package/dist/op/activities/lexicon-upgrade.js +629 -0
- package/dist/op/activities/lifecycle.js +109 -0
- package/dist/op/activities/pipeline-audit.js +147 -0
- package/dist/op/activities/policy.js +26 -0
- package/dist/op/activities/predict-behaviour.js +341 -0
- package/dist/op/activities/propose-upgrade.js +165 -0
- package/dist/op/activities/reconcile.js +997 -0
- package/dist/op/activities/shell.js +118 -0
- package/dist/op/activities/source-release.js +97 -0
- package/dist/op/activities/source-rollback.js +165 -0
- package/dist/op/activities/teardown.js +17 -0
- package/dist/op/activities/util.js +6 -0
- package/dist/op/activities/wait.js +51 -0
- package/dist/op/activities/work-evidence.js +35 -0
- package/dist/op/activities/workflow-audit.js +133 -0
- package/dist/op/activity-contract-registry.js +106 -0
- package/dist/op/activity-contract.js +232 -0
- package/dist/op/activity-failure.js +31 -0
- package/dist/op/activity-profiles.js +129 -0
- package/dist/op/activity-registry.js +105 -0
- package/dist/op/activity-runtime.js +28 -0
- package/dist/op/builders.js +801 -0
- package/dist/op/change-signal.js +118 -0
- package/dist/op/composites/apply-op.js +151 -0
- package/dist/op/composites/behaviour-op.js +65 -0
- package/dist/op/composites/converge-op.js +141 -0
- package/dist/op/composites/index.js +19 -0
- package/dist/op/composites/lexicon-upgrade-op.js +107 -0
- package/dist/op/composites/pipeline-audit-op.js +50 -0
- package/dist/op/composites/reconcile-op.js +84 -0
- package/dist/op/composites/watch-op.js +69 -0
- package/dist/op/composites/workflow-audit-op.js +57 -0
- package/dist/op/converge-rule.js +205 -0
- package/dist/op/cron.js +146 -0
- package/dist/op/decide-backend.js +181 -0
- package/dist/op/decide-config.js +68 -0
- package/dist/op/decide-read-inputs.js +141 -0
- package/dist/op/discover.d.ts.map +1 -1
- package/dist/op/discover.js +213 -0
- package/dist/op/duration.js +21 -0
- package/dist/op/emulator-freshness.js +80 -0
- package/dist/op/emulator-lifecycle.js +269 -0
- package/dist/op/factory.js +83 -0
- package/dist/op/gate-approval.js +172 -0
- package/dist/op/gate-name.js +86 -0
- package/dist/op/gate-plan-context.js +167 -0
- package/dist/op/gate-point-run.js +67 -0
- package/dist/op/gate-point.js +111 -0
- package/dist/op/gate-resume-plan.js +155 -0
- package/dist/op/gate-resume.js +31 -0
- package/dist/op/gate-review.js +290 -0
- package/dist/op/gate-run-locator.js +85 -0
- package/dist/op/gate-summary.js +100 -0
- package/dist/op/gate-wait.js +56 -0
- package/dist/op/gate.js +449 -0
- package/dist/op/generate-pipeline.js +124 -0
- package/dist/op/index.js +51 -0
- package/dist/op/lifecycle-receipt-store.js +45 -0
- package/dist/op/local-executor.js +1164 -0
- package/dist/op/local-output.js +140 -0
- package/dist/op/op-ir.js +317 -0
- package/dist/op/op-verb-class.js +131 -0
- package/dist/op/op-waves-notify.js +136 -0
- package/dist/op/op-waves-run.js +1657 -0
- package/dist/op/op-waves.js +409 -0
- package/dist/op/operator.js +743 -0
- package/dist/op/receipt-store.js +94 -0
- package/dist/op/resource.js +23 -0
- package/dist/op/run-context.js +28 -0
- package/dist/op/run-live.js +256 -0
- package/dist/op/runtime.js +21 -0
- package/dist/op/runtimes/local.js +195 -0
- package/dist/op/source-archive.js +131 -0
- package/dist/op/step-output-ref.js +397 -0
- package/dist/op/steward-beside.js +169 -0
- package/dist/op/steward-points.js +138 -0
- package/dist/op/steward-turn.js +59 -0
- package/dist/op/steward.js +317 -0
- package/dist/op/types.js +25 -0
- package/dist/op/work-lease-decl.js +81 -0
- package/dist/op/work-lease-run.js +393 -0
- package/dist/override-gate.js +284 -0
- package/dist/owner-chain.js +74 -0
- package/dist/ownership.js +92 -0
- package/dist/params.js +61 -0
- package/dist/plan-summary.js +711 -0
- package/dist/point-decision.js +211 -0
- package/dist/pr-forge.js +810 -0
- package/dist/pr-loop.js +203 -0
- package/dist/project-codegen.js +191 -0
- package/dist/project-root.js +74 -0
- package/dist/project-validation.js +50 -0
- package/dist/provenance.js +157 -0
- package/dist/pseudo-parameter.js +40 -0
- package/dist/reconcile.js +450 -0
- package/dist/resource-attributes.js +33 -0
- package/dist/runtime-adapter.js +77 -0
- package/dist/runtime.js +66 -0
- package/dist/secret-materialization.js +153 -0
- package/dist/secret-provenance.js +250 -0
- package/dist/serializer-walker.js +112 -0
- package/dist/serializer.js +1 -0
- package/dist/sort.js +45 -0
- package/dist/stack-output.js +115 -0
- package/dist/telemetry-attribution.js +149 -0
- package/dist/terraform/__fixtures__/build-graph.js +63 -0
- package/dist/terraform/adopt-state.js +40 -0
- package/dist/terraform/aws-resources.js +384 -0
- package/dist/terraform/bridge.js +204 -0
- package/dist/terraform/carve-provider.js +155 -0
- package/dist/terraform/carve.js +138 -0
- package/dist/terraform/data-source-shape.js +57 -0
- package/dist/terraform/emit-source.js +36 -0
- package/dist/terraform/excise.js +123 -0
- package/dist/terraform/graduate.js +128 -0
- package/dist/terraform/graph.js +435 -0
- package/dist/terraform/hcl2json.js +60 -0
- package/dist/terraform/manifest.js +149 -0
- package/dist/terraform/parse.js +81 -0
- package/dist/terraform/providers/aws.js +146 -0
- package/dist/terraform/providers/gcp.js +294 -0
- package/dist/terraform/providers/index.js +17 -0
- package/dist/terraform/providers/kubernetes.js +253 -0
- package/dist/terraform/score.js +151 -0
- package/dist/terraform/state.js +67 -0
- package/dist/terraform/tier-map.js +74 -0
- package/dist/terraform/types.js +13 -0
- package/dist/terraform/unified-diff.js +132 -0
- package/dist/testing.js +295 -0
- package/dist/toml-emit.js +153 -0
- package/dist/toml-parse.js +355 -0
- package/dist/toml-utils.js +60 -0
- package/dist/toml.js +428 -0
- package/dist/ts-loader.d.ts +46 -0
- package/dist/ts-loader.d.ts.map +1 -0
- package/dist/ts-loader.js +103 -0
- package/dist/types.js +1 -0
- package/dist/utils.js +61 -0
- package/dist/validation.js +20 -0
- package/dist/vendor/js-yaml-load.js +1662 -0
- package/dist/workspace/__fixtures__/contract-repo.js +103 -0
- package/dist/workspace/__fixtures__/decide-workspace.js +112 -0
- package/dist/workspace/__fixtures__/sessions.js +91 -0
- package/dist/workspace/__fixtures__/two-member-workspace.js +34 -0
- package/dist/workspace/agent-cli.js +99 -0
- package/dist/workspace/agent.schema.json +390 -0
- package/dist/workspace/answers-ledger.js +89 -0
- package/dist/workspace/box-cli.js +142 -0
- package/dist/workspace/box-factory-write.js +196 -0
- package/dist/workspace/box-factory-write.schema.json +342 -0
- package/dist/workspace/box-factory.js +88 -0
- package/dist/workspace/box-intent.js +126 -0
- package/dist/workspace/box-isolation.js +169 -0
- package/dist/workspace/box-listing-write.schema.json +204 -0
- package/dist/workspace/box-listing.js +298 -0
- package/dist/workspace/box-publish.js +352 -0
- package/dist/workspace/box-publish.schema.json +498 -0
- package/dist/workspace/box-services.js +39 -0
- package/dist/workspace/broker-protocol.js +359 -0
- package/dist/workspace/broker-protocol.schema.json +228 -0
- package/dist/workspace/change-set.schema.json +460 -0
- package/dist/workspace/changes-cli.js +56 -0
- package/dist/workspace/changes.js +446 -0
- package/dist/workspace/changes.schema.json +642 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit-fly-site.js +198 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit-live-names.js +155 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit-rollback.js +214 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit-ship-inputs.js +180 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit-ship-policy.js +99 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit.js +847 -0
- package/dist/workspace/chant-migrations.js +113 -0
- package/dist/workspace/check.schema.json +433 -0
- package/dist/workspace/checks/box-isolation.js +62 -0
- package/dist/workspace/checks/boxes.js +491 -0
- package/dist/workspace/checks/diagrams.js +104 -0
- package/dist/workspace/checks/generated.js +419 -0
- package/dist/workspace/checks/ledgers.js +212 -0
- package/dist/workspace/checks/links.js +191 -0
- package/dist/workspace/checks/live.js +100 -0
- package/dist/workspace/checks/pipelines.js +188 -0
- package/dist/workspace/checks/records.js +169 -0
- package/dist/workspace/checks.js +426 -0
- package/dist/workspace/ci-green-cli.js +125 -0
- package/dist/workspace/ci-green-forge.js +83 -0
- package/dist/workspace/ci-green-workflow.js +199 -0
- package/dist/workspace/ci-green.js +325 -0
- package/dist/workspace/ci-last-green.schema.json +158 -0
- package/dist/workspace/compose-graph.js +235 -0
- package/dist/workspace/compose-reports.js +146 -0
- package/dist/workspace/composites.js +264 -0
- package/dist/workspace/composites.schema.json +617 -0
- package/dist/workspace/conformance/__fixture__/app/package.json +7 -0
- package/dist/workspace/conformance/__fixture__/app/src/server.mjs +29 -0
- package/dist/workspace/conformance/__fixture__/decisions/decision.kind.mjs +54 -0
- package/dist/workspace/conformance/__fixture__/decisions/decision.schema.json +512 -0
- package/dist/workspace/conformance/__fixture__/decisions/fix-001-how-the-app-is-deployed.md +40 -0
- package/dist/workspace/conformance/__fixture__/delivery/chant.config.ts +7 -0
- package/dist/workspace/conformance/__fixture__/delivery/lexicon/index.ts +26 -0
- package/dist/workspace/conformance/__fixture__/delivery/package.json +7 -0
- package/dist/workspace/conformance/__fixture__/delivery/src/app.component.ts +14 -0
- package/dist/workspace/conformance/__fixture__/delivery/src/app.ts +4 -0
- package/dist/workspace/conformance/__fixtures__/reference-broker.js +205 -0
- package/dist/workspace/conformance/__writer_fixture__/answers/answer.kind.mjs +32 -0
- package/dist/workspace/conformance/__writer_fixture__/answers/answer.schema.json +135 -0
- package/dist/workspace/conformance/__writer_fixture__/contracts/contract.kind.mjs +37 -0
- package/dist/workspace/conformance/__writer_fixture__/contracts/contract.schema.json +213 -0
- package/dist/workspace/conformance/__writer_fixture__/decisions/points.json +228 -0
- package/dist/workspace/conformance/__writer_fixture__/drivers/driver.kind.mjs +15 -0
- package/dist/workspace/conformance/__writer_fixture__/drivers/driver.schema.json +38 -0
- package/dist/workspace/conformance/__writer_fixture__/sessions/session.kind.mjs +54 -0
- package/dist/workspace/conformance/__writer_fixture__/sessions/session.schema.json +289 -0
- package/dist/workspace/conformance/__writer_fixture__/work/W-001-the-writer-suite-works-this-item.md +25 -0
- package/dist/workspace/conformance/__writer_fixture__/work/work.kind.mjs +60 -0
- package/dist/workspace/conformance/__writer_fixture__/work/work.schema.json +603 -0
- package/dist/workspace/conformance/broker.js +736 -0
- package/dist/workspace/conformance/index.js +673 -0
- package/dist/workspace/conformance/vitest.js +108 -0
- package/dist/workspace/conformance/writer.js +1080 -0
- package/dist/workspace/decide.js +879 -0
- package/dist/workspace/decision-points.schema.json +135 -135
- package/dist/workspace/declaration-write-cli.js +74 -0
- package/dist/workspace/declaration-write.js +238 -0
- package/dist/workspace/declaration.js +938 -0
- package/dist/workspace/declaration.schema.json +1413 -1413
- package/dist/workspace/declared-kinds.js +106 -0
- package/dist/workspace/environments.js +164 -0
- package/dist/workspace/evidence.schema.json +279 -0
- package/dist/workspace/export-cli.js +185 -0
- package/dist/workspace/export.js +499 -0
- package/dist/workspace/factory-rules.js +175 -0
- package/dist/workspace/generated-files.js +92 -0
- package/dist/workspace/glob.js +45 -0
- package/dist/workspace/graph-cache.js +352 -0
- package/dist/workspace/graph-cli.js +348 -0
- package/dist/workspace/graph.schema.json +1338 -0
- package/dist/workspace/identity-gate-rule.js +75 -0
- package/dist/workspace/identity.js +126 -0
- package/dist/workspace/import.js +283 -0
- package/dist/workspace/init.js +620 -0
- package/dist/workspace/intent-cli.js +263 -0
- package/dist/workspace/intent-joins.js +201 -0
- package/dist/workspace/intent-record.js +352 -0
- package/dist/workspace/intent-record.schema.json +864 -0
- package/dist/workspace/intent.js +1582 -0
- package/dist/workspace/intent.schema.json +2420 -0
- package/dist/workspace/json-edit.js +221 -0
- package/dist/workspace/jsonc.js +235 -0
- package/dist/workspace/kind-readers.js +103 -0
- package/dist/workspace/kinds.js +587 -0
- package/dist/workspace/lexicon-symbols.js +112 -0
- package/dist/workspace/lineage-adopt-cli.js +102 -0
- package/dist/workspace/lineage-adopt.js +360 -0
- package/dist/workspace/lineage-check.js +282 -0
- package/dist/workspace/lineage-cli.js +121 -0
- package/dist/workspace/lineage-hash-index.js +284 -0
- package/dist/workspace/lineage-init.js +507 -0
- package/dist/workspace/lineage-lock.js +387 -0
- package/dist/workspace/lineage-merge.js +45 -0
- package/dist/workspace/lineage-migrations.d.ts.map +1 -1
- package/dist/workspace/lineage-migrations.js +329 -0
- package/dist/workspace/lineage-provenance.js +36 -0
- package/dist/workspace/lineage-update.js +138 -0
- package/dist/workspace/lineage-upgrade-cli.js +131 -0
- package/dist/workspace/lineage-upgrade.js +889 -0
- package/dist/workspace/lineage-vendor.js +171 -0
- package/dist/workspace/lineage-version.js +128 -0
- package/dist/workspace/lineage-versions.js +275 -0
- package/dist/workspace/links.js +330 -0
- package/dist/workspace/ls-generated.js +95 -0
- package/dist/workspace/ls.js +277 -0
- package/dist/workspace/ls.schema.json +333 -0
- package/dist/workspace/member-commands.js +508 -0
- package/dist/workspace/member-handles.js +216 -0
- package/dist/workspace/member-pipeline.js +258 -0
- package/dist/workspace/member-run.js +117 -0
- package/dist/workspace/member-write.schema.json +193 -0
- package/dist/workspace/nested-graph.js +156 -0
- package/dist/workspace/nesting.js +38 -0
- package/dist/workspace/patch.js +301 -0
- package/dist/workspace/patch.schema.json +321 -0
- package/dist/workspace/pin-cli.js +55 -0
- package/dist/workspace/pin-integrity.js +100 -0
- package/dist/workspace/plan-summary.schema.json +155 -0
- package/dist/workspace/point-answer.schema.json +129 -129
- package/dist/workspace/points-cli.js +291 -0
- package/dist/workspace/points-write.schema.json +660 -0
- package/dist/workspace/points.js +521 -0
- package/dist/workspace/points.schema.json +916 -0
- package/dist/workspace/pr-report.schema.json +108 -0
- package/dist/workspace/principal-classes.js +245 -0
- package/dist/workspace/reason-codes.js +326 -0
- package/dist/workspace/record-assets.js +151 -0
- package/dist/workspace/record-decided.js +105 -0
- package/dist/workspace/record-sessions.js +96 -0
- package/dist/workspace/record-source.js +114 -0
- package/dist/workspace/records-amend.schema.json +284 -0
- package/dist/workspace/records-checkout.js +76 -0
- package/dist/workspace/records-cli.js +707 -0
- package/dist/workspace/records-close.js +116 -0
- package/dist/workspace/records-close.schema.json +278 -0
- package/dist/workspace/records-new.schema.json +202 -0
- package/dist/workspace/records-review.schema.json +367 -0
- package/dist/workspace/records-since.js +317 -0
- package/dist/workspace/records-since.schema.json +218 -0
- package/dist/workspace/records-write.js +1229 -0
- package/dist/workspace/records.js +1345 -0
- package/dist/workspace/records.schema.json +604 -0
- package/dist/workspace/reference-kinds/app/package.json +10 -0
- package/dist/workspace/reference-kinds/app/workspace-kinds.json +45 -0
- package/dist/workspace/returns.js +303 -0
- package/dist/workspace/root-refusal.js +75 -0
- package/dist/workspace/run-statement.schema.json +622 -0
- package/dist/workspace/runs-cli.js +584 -0
- package/dist/workspace/runs-write.schema.json +994 -0
- package/dist/workspace/runs.js +708 -0
- package/dist/workspace/runs.schema.json +1257 -0
- package/dist/workspace/runtimes.js +76 -0
- package/dist/workspace/session-kinds.js +83 -0
- package/dist/workspace/signers.schema.json +206 -0
- package/dist/workspace/source-block.js +125 -0
- package/dist/workspace/squash.js +177 -0
- package/dist/workspace/status-gates.js +162 -0
- package/dist/workspace/status-stewards.js +330 -0
- package/dist/workspace/status.js +514 -0
- package/dist/workspace/status.schema.json +998 -0
- package/dist/workspace/steward-index.js +191 -0
- package/dist/workspace/symbols.js +188 -0
- package/dist/workspace/template-manifest.js +227 -0
- package/dist/workspace/template-pins.js +115 -0
- package/dist/workspace/trailer-joins.js +65 -0
- package/dist/workspace/trailers.js +111 -0
- package/dist/workspace/tree.js +136 -0
- package/dist/workspace/trust/attestor.js +63 -0
- package/dist/workspace/trust/dsse.js +108 -0
- package/dist/workspace/trust/evidence-cli.js +175 -0
- package/dist/workspace/trust/evidence.js +161 -0
- package/dist/workspace/trust/gate-seal.js +226 -0
- package/dist/workspace/trust/policy.js +190 -0
- package/dist/workspace/trust/provenance.js +180 -0
- package/dist/workspace/trust/rotation.js +298 -0
- package/dist/workspace/trust/run-commits.js +101 -0
- package/dist/workspace/trust/run-statement.js +182 -0
- package/dist/workspace/trust/seal.js +272 -0
- package/dist/workspace/trust/signers-cli.js +152 -0
- package/dist/workspace/trust/ssh-commit.js +178 -0
- package/dist/workspace/trust/test-repo.js +118 -0
- package/dist/workspace/trust/trust-files.js +193 -0
- package/dist/workspace/trust/verify-cli.js +63 -0
- package/dist/workspace/trust/verify.js +192 -0
- package/dist/workspace/which-chant.js +141 -0
- package/dist/workspace/wip-cli.js +95 -0
- package/dist/workspace/wip-write.schema.json +504 -0
- package/dist/workspace/wip.js +631 -0
- package/dist/workspace/wip.schema.json +334 -0
- package/dist/workspace/work-cli.js +448 -0
- package/dist/workspace/work-evidence.js +122 -0
- package/dist/workspace/work-evidence.schema.json +222 -0
- package/dist/workspace/work-history.schema.json +421 -0
- package/dist/workspace/work-lease.schema.json +246 -0
- package/dist/workspace/work-size.js +77 -0
- package/dist/workspace/work.js +283 -0
- package/dist/workspace/workspace-kinds.schema.json +259 -259
- package/dist/workspace/workspace-principals.schema.json +53 -53
- package/dist/workspace/write-lock-cli.js +105 -0
- package/dist/workspace/write-lock.js +424 -0
- package/dist/workspace/write-lock.schema.json +172 -0
- package/dist/workspace/write-scope.js +484 -0
- package/dist/yaml.js +459 -0
- package/package.json +2 -2
- package/src/cli/commands/check-lexicon-plugin.ts +2 -0
- package/src/cli/commands/lint.ts +3 -0
- package/src/cli/commands/migrate.ts +2 -0
- package/src/cli/compiled-cli.e2e.test.ts +165 -0
- package/src/cli/main.ts +121 -27
- package/src/cli/mcp/workspace-tools.ts +1 -1
- package/src/codegen/pinned-upgrade.ts +2 -0
- package/src/components/discover.ts +2 -0
- package/src/components/sandbox/driver.ts +3 -1
- package/src/config-import.ts +3 -0
- package/src/discovery/fold-import.ts +23 -14
- package/src/discovery/import.ts +2 -0
- package/src/discovery/sandbox/driver.ts +3 -1
- package/src/lexicon-module.ts +3 -0
- package/src/lint/config.ts +1 -1
- package/src/lint/discover.ts +28 -8
- package/src/lint/policy-import.ts +4 -1
- package/src/lint/rule-loader.ts +2 -0
- package/src/op/discover.ts +3 -0
- package/src/ts-loader.test.ts +23 -0
- package/src/ts-loader.ts +122 -0
- package/src/workspace/chant-migrations/chud-lexicon-exit.ts +1 -1
- package/src/workspace/declaration.ts +1 -1
- package/src/workspace/kinds.ts +1 -1
- package/src/workspace/lineage-migrations.ts +2 -0
- package/src/workspace/points.ts +1 -1
- package/src/workspace/principal-classes.ts +1 -1
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A steward's declaration (#2731): the one writer for an environment, as data
|
|
3
|
+
* core can read without any lexicon loaded.
|
|
4
|
+
*
|
|
5
|
+
* A steward runs a fixed list of Ops, each on its own `schedule` when it has
|
|
6
|
+
* one, one Op at a time. Where it runs is its form:
|
|
7
|
+
*
|
|
8
|
+
* - `fountain`: the fountain lexicon's `Steward` composite, an `acp` Agent on
|
|
9
|
+
* a persistent sandbox bound to a Teammate, with a Fountain `Schedule` per
|
|
10
|
+
* scheduled Op. A turn is one `chant run <op>` on the teammate's thread.
|
|
11
|
+
* - `local`: `chant operator --steward <name>` in the box itself, for a box
|
|
12
|
+
* with no Fountain behind it (a docker compose box, a Sprites box). The same
|
|
13
|
+
* Ops on the same crons, each run under its operator lease, and the steward
|
|
14
|
+
* itself under a lease of its own so a second local operator is refused.
|
|
15
|
+
*
|
|
16
|
+
* One declaration covers both. `form` is either one of the two, or a default
|
|
17
|
+
* with per-environment exceptions, so a box whose `minimal` environment has no
|
|
18
|
+
* Fountain and whose `fountain-k3d` one does still has exactly one steward:
|
|
19
|
+
*
|
|
20
|
+
* ```ts
|
|
21
|
+
* // ops/steward.op.ts
|
|
22
|
+
* export const steward = declareSteward({
|
|
23
|
+
* name: "box-steward",
|
|
24
|
+
* ops: [converge, dispatch, release, upgrade],
|
|
25
|
+
* form: { default: "local", environments: { "fountain-k3d": "fountain" } },
|
|
26
|
+
* });
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* The fountain composite builds this same declaration from its own options and
|
|
30
|
+
* returns it as `declaration`, so a project that declares its steward there
|
|
31
|
+
* exports that object from an `*.op.ts` file instead of calling this function.
|
|
32
|
+
*
|
|
33
|
+
* ## Discovery
|
|
34
|
+
*
|
|
35
|
+
* A steward is discovered from the same `*.op.ts` files Ops are
|
|
36
|
+
* (`./discover.ts`), because it is chant's own run-time declaration and sits
|
|
37
|
+
* beside the Ops it runs. It is plain data with a `kind` marker, not a
|
|
38
|
+
* Declarable, so `chant build` never serializes it and a copy of core linked
|
|
39
|
+
* twice still recognises it.
|
|
40
|
+
*
|
|
41
|
+
* ## What a steward writes
|
|
42
|
+
*
|
|
43
|
+
* A steward's writes are chant writes: run, converge and gate records on the
|
|
44
|
+
* `chant/lifecycle` branch, the answer records of the decision points its
|
|
45
|
+
* Ops ask (`_answers/`, #2786), and lease refs under `refs/chant/lease/`, all made
|
|
46
|
+
* with git plumbing (`../lifecycle/git.ts`: `hash-object`, `mktree`,
|
|
47
|
+
* `commit-tree`, `update-ref`). None of them reads or writes the checkout's
|
|
48
|
+
* index or working tree, so a coding agent editing the app in the same
|
|
49
|
+
* checkout, and holding git's index lock while it commits, never collides with
|
|
50
|
+
* a steward turn. The app's files are the coding agent's; the steward does not
|
|
51
|
+
* edit them.
|
|
52
|
+
*
|
|
53
|
+
* An Op that has to change the checkout (applying a build, a workspace
|
|
54
|
+
* upgrade) says so with `changesCheckout` and runs under a work item's lease
|
|
55
|
+
* (`workLease`, #2748): its leased steps get a worktree of their own on
|
|
56
|
+
* `chant/work/<item>`. `declareSteward` refuses such an Op without the lease,
|
|
57
|
+
* and a scheduled Op whose lease leaves the item to the run.
|
|
58
|
+
*
|
|
59
|
+
* ## Beside the turns
|
|
60
|
+
*
|
|
61
|
+
* An Op listed under `beside` (#2861) is the steward's too, but its runs are
|
|
62
|
+
* not turns. A build that takes half an hour would otherwise hold every other
|
|
63
|
+
* Op of the steward, converge included, for its whole length. The local
|
|
64
|
+
* operator starts a run of it as a `chant run <op>` process of its own, with
|
|
65
|
+
* `CHANT_STEWARD` set so the run is still the steward's, and goes on with its
|
|
66
|
+
* rounds. One run at a time: the run holds the Op's own lease
|
|
67
|
+
* (`refs/chant/lease/<op>`), renewed while it runs, and never the turn lease.
|
|
68
|
+
* The operator starts one on the Op's cron, when its `ready` step says there
|
|
69
|
+
* is work, or to resume a run of the steward's that waited on a question now
|
|
70
|
+
* answered (or a gate now approved).
|
|
71
|
+
*
|
|
72
|
+
* ```ts
|
|
73
|
+
* export const steward = declareSteward({
|
|
74
|
+
* name: "box-steward",
|
|
75
|
+
* ops: [converge, release],
|
|
76
|
+
* beside: [{ op: dispatch, ready: shell("node ops/ready.mjs", { json: true }) }],
|
|
77
|
+
* });
|
|
78
|
+
* ```
|
|
79
|
+
*
|
|
80
|
+
* `ops` on the normalised declaration is every Op the steward runs, beside
|
|
81
|
+
* ones last, so a reader that only asks "whose Op is this" (discovery's
|
|
82
|
+
* two-writers check, `chant run`, `workspace status`) needs nothing new.
|
|
83
|
+
* `beside` names the ones that run beside the turns.
|
|
84
|
+
*/
|
|
85
|
+
import { collectStepOutputRefs } from "./step-output-ref.js";
|
|
86
|
+
import { isValidCronExpression, cronSyntaxMessage } from "./cron.js";
|
|
87
|
+
import { workLeaseNeedsRunItem, workLeaseProblems } from "./work-lease-decl.js";
|
|
88
|
+
/** The entity marker a steward declaration carries. */
|
|
89
|
+
export const STEWARD_KIND = "Chant::Steward";
|
|
90
|
+
/** Where a steward runs. */
|
|
91
|
+
export const STEWARD_FORMS = ["local", "fountain"];
|
|
92
|
+
/** The environment a form is chosen for when none is named: the same default a run ledger uses. */
|
|
93
|
+
export const DEFAULT_STEWARD_ENV = "local";
|
|
94
|
+
/** Names a steward's lease ref and a ledger path can hold. */
|
|
95
|
+
export const STEWARD_NAME_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._-]{0,99}$/;
|
|
96
|
+
/** The config inside an op, whether it arrived as a declaration or as itself. */
|
|
97
|
+
export function stewardOpConfig(op) {
|
|
98
|
+
const declared = op.props;
|
|
99
|
+
return (declared && typeof declared === "object" ? declared : op);
|
|
100
|
+
}
|
|
101
|
+
function checkForm(steward, form, where) {
|
|
102
|
+
if (!STEWARD_FORMS.includes(form)) {
|
|
103
|
+
throw new Error(`Steward "${steward}": ${where} is ${JSON.stringify(form)}; a steward's form is "local" or "fountain"`);
|
|
104
|
+
}
|
|
105
|
+
return form;
|
|
106
|
+
}
|
|
107
|
+
/** Normalise a form spec, refusing an unknown form or an environment name no ledger could hold. */
|
|
108
|
+
export function normaliseStewardForm(steward, spec) {
|
|
109
|
+
if (spec === undefined)
|
|
110
|
+
return { default: "local", environments: {} };
|
|
111
|
+
if (typeof spec === "string")
|
|
112
|
+
return { default: checkForm(steward, spec, "form"), environments: {} };
|
|
113
|
+
const environments = {};
|
|
114
|
+
for (const [env, form] of Object.entries(spec.environments ?? {})) {
|
|
115
|
+
if (!STEWARD_NAME_PATTERN.test(env) || env.includes("..")) {
|
|
116
|
+
throw new Error(`Steward "${steward}": form.environments names ${JSON.stringify(env)}, which can't be an environment`);
|
|
117
|
+
}
|
|
118
|
+
environments[env] = checkForm(steward, form, `form.environments[${JSON.stringify(env)}]`);
|
|
119
|
+
}
|
|
120
|
+
return { default: checkForm(steward, spec.default, "form.default"), environments };
|
|
121
|
+
}
|
|
122
|
+
/** A `beside` entry's Op and ready step, whichever of the two forms it was given in. */
|
|
123
|
+
function besideEntry(entry) {
|
|
124
|
+
const e = entry;
|
|
125
|
+
if (e && typeof e === "object" && e.op !== undefined && e.phases === undefined && e.props === undefined) {
|
|
126
|
+
return { op: stewardOpConfig(e.op), ready: e.ready ?? null };
|
|
127
|
+
}
|
|
128
|
+
return { op: stewardOpConfig(entry), ready: null };
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Declare a steward. Refuses what would make it more than one writer or a
|
|
132
|
+
* promise it can't keep: an Op listed twice, a schedule whose overlap isn't
|
|
133
|
+
* `skip` (a fire while a turn runs is dropped in both forms), a cron that
|
|
134
|
+
* doesn't parse, and a name a lease ref can't hold. For an Op beside the
|
|
135
|
+
* turns (#2861), also a `ready` that is not one activity step, or that reads
|
|
136
|
+
* another step's output (it runs on its own, outside any run).
|
|
137
|
+
*/
|
|
138
|
+
export function declareSteward(config) {
|
|
139
|
+
const name = config.name;
|
|
140
|
+
if (!STEWARD_NAME_PATTERN.test(name) || name.includes("..")) {
|
|
141
|
+
throw new Error(`Steward ${JSON.stringify(name)}: a steward's name is letters, digits, ".", "_" and "-", starting with a letter or digit`);
|
|
142
|
+
}
|
|
143
|
+
const besides = (config.beside ?? []).map(besideEntry);
|
|
144
|
+
const ops = [...config.ops.map(stewardOpConfig), ...besides.map((b) => b.op)];
|
|
145
|
+
const seen = new Set();
|
|
146
|
+
for (const op of ops) {
|
|
147
|
+
if (!op || typeof op.name !== "string" || !Array.isArray(op.phases)) {
|
|
148
|
+
throw new Error(`Steward "${name}": every entry in ops must be an Op`);
|
|
149
|
+
}
|
|
150
|
+
if (seen.has(op.name))
|
|
151
|
+
throw new Error(`Steward "${name}": op "${op.name}" is listed twice`);
|
|
152
|
+
seen.add(op.name);
|
|
153
|
+
// An Op that changes the checkout runs under a work item's lease, on a
|
|
154
|
+
// branch of its own (#2748): one that doesn't declare the lease, or
|
|
155
|
+
// declares it badly, is refused here as the executor would refuse it.
|
|
156
|
+
const leaseProblems = workLeaseProblems(op);
|
|
157
|
+
if (leaseProblems.length > 0)
|
|
158
|
+
throw new Error(`Steward "${name}": ${leaseProblems.join("; ")}`);
|
|
159
|
+
if (op.schedule && workLeaseNeedsRunItem(op)) {
|
|
160
|
+
throw new Error(`Steward "${name}": op "${op.name}" is scheduled, but its workLease names no item, and a scheduled run can't be given one. ` +
|
|
161
|
+
`Name the item, candidates, or the step whose output picks it.`);
|
|
162
|
+
}
|
|
163
|
+
const beside = besides.find((b) => b.op === op);
|
|
164
|
+
if (beside?.ready) {
|
|
165
|
+
const ready = beside.ready;
|
|
166
|
+
if (!ready || ready.kind !== "activity" || typeof ready.fn !== "string") {
|
|
167
|
+
throw new Error(`Steward "${name}": op "${op.name}": ready is one activity step, such as shell("...", { json: true })`);
|
|
168
|
+
}
|
|
169
|
+
if (collectStepOutputRefs(ready.args ?? {}).length > 0) {
|
|
170
|
+
throw new Error(`Steward "${name}": op "${op.name}": its ready step reads another step's output, and it runs outside any run`);
|
|
171
|
+
}
|
|
172
|
+
if (workLeaseNeedsRunItem(op)) {
|
|
173
|
+
throw new Error(`Steward "${name}": op "${op.name}" is started when its ready step says so, but its workLease names no item, and such a run can't be given one. ` +
|
|
174
|
+
`Name the item, candidates, or the step whose output picks it.`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
const schedule = op.schedule;
|
|
178
|
+
if (!schedule)
|
|
179
|
+
continue;
|
|
180
|
+
if (!isValidCronExpression(schedule.cron)) {
|
|
181
|
+
throw new Error(`Steward "${name}": op "${op.name}": ${cronSyntaxMessage(schedule.cron)}`);
|
|
182
|
+
}
|
|
183
|
+
if (schedule.overlap !== undefined && schedule.overlap !== "skip") {
|
|
184
|
+
throw new Error(`Steward "${name}": op "${op.name}" schedules overlap "${schedule.overlap}". ` +
|
|
185
|
+
`A fire while the steward is busy is dropped, so "skip" is the only policy a steward can honour.`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
const capabilities = [...new Set(config.capabilities ?? [])];
|
|
189
|
+
for (const c of capabilities) {
|
|
190
|
+
if (typeof c !== "string" || c.trim() === "")
|
|
191
|
+
throw new Error(`Steward "${name}": a capability is named by a non-empty string`);
|
|
192
|
+
}
|
|
193
|
+
const vault = config.vault ?? null;
|
|
194
|
+
if (vault !== null && capabilities.length > 0) {
|
|
195
|
+
throw new Error(`Steward "${name}": it reaches ${capabilities.join(", ")} through the box's broker and also holds the vault "${vault}". ` +
|
|
196
|
+
`A brokered steward holds no credential of its own: drop the vault, or name no capabilities.`);
|
|
197
|
+
}
|
|
198
|
+
return Object.freeze({
|
|
199
|
+
kind: STEWARD_KIND,
|
|
200
|
+
name,
|
|
201
|
+
ops: Object.freeze([...ops]),
|
|
202
|
+
beside: Object.freeze(besides.map((b) => Object.freeze({ op: b.op.name, ready: b.ready }))),
|
|
203
|
+
form: normaliseStewardForm(name, config.form),
|
|
204
|
+
capabilities: Object.freeze(capabilities),
|
|
205
|
+
vault,
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
/** Is this value a steward declaration? Duck-typed, like `isOpEntity`. */
|
|
209
|
+
export function isStewardDeclaration(value) {
|
|
210
|
+
if (!value || typeof value !== "object")
|
|
211
|
+
return false;
|
|
212
|
+
const v = value;
|
|
213
|
+
return (v.kind === STEWARD_KIND &&
|
|
214
|
+
typeof v.name === "string" &&
|
|
215
|
+
Array.isArray(v.ops) &&
|
|
216
|
+
!!v.form &&
|
|
217
|
+
typeof v.form === "object" &&
|
|
218
|
+
typeof v.form.default === "string");
|
|
219
|
+
}
|
|
220
|
+
/** The Ops a steward runs beside its turns (#2861); none for a declaration without the field. */
|
|
221
|
+
export function stewardBesideOf(steward) {
|
|
222
|
+
return Array.isArray(steward.beside) ? steward.beside : [];
|
|
223
|
+
}
|
|
224
|
+
/** The entry for `op` when the steward runs it beside its turns (#2861), or undefined. */
|
|
225
|
+
export function stewardBesideFor(steward, op) {
|
|
226
|
+
return stewardBesideOf(steward).find((b) => b.op === op);
|
|
227
|
+
}
|
|
228
|
+
/** The Ops a steward runs as its turns, one at a time: `ops` without the beside ones. */
|
|
229
|
+
export function stewardTurnOps(steward) {
|
|
230
|
+
const beside = new Set(stewardBesideOf(steward).map((b) => b.op));
|
|
231
|
+
return steward.ops.filter((op) => !beside.has(op.name));
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* What a `ready` step's result says (#2861): the work keys it names, or null
|
|
235
|
+
* when its result is not one of the shapes below. The value read is the
|
|
236
|
+
* result's `json` when it has one (a `shell` step with `json: true`), or the
|
|
237
|
+
* result itself.
|
|
238
|
+
*
|
|
239
|
+
* - an array: one key per entry (a string as is, anything else as its JSON);
|
|
240
|
+
* empty means no work;
|
|
241
|
+
* - a non-empty string: one key; `""` means no work;
|
|
242
|
+
* - `true` means work, with no key; `false` and `null` mean none.
|
|
243
|
+
*
|
|
244
|
+
* The operator starts a run when a key is one it has not started a run for
|
|
245
|
+
* yet, so a run that ends with the same work still ready is not started
|
|
246
|
+
* again for it. `true` has no key, so it starts a run whenever none is in
|
|
247
|
+
* flight.
|
|
248
|
+
*/
|
|
249
|
+
export function readinessKeys(result) {
|
|
250
|
+
const value = result && typeof result === "object" && !Array.isArray(result) && "json" in result
|
|
251
|
+
? result.json
|
|
252
|
+
: result;
|
|
253
|
+
if (value === true)
|
|
254
|
+
return { ready: true, keys: [] };
|
|
255
|
+
if (value === false || value === null || value === undefined)
|
|
256
|
+
return { ready: false, keys: [] };
|
|
257
|
+
if (typeof value === "string")
|
|
258
|
+
return value === "" ? { ready: false, keys: [] } : { ready: true, keys: [value] };
|
|
259
|
+
if (Array.isArray(value)) {
|
|
260
|
+
const keys = value.map((v) => (typeof v === "string" ? v : JSON.stringify(v)));
|
|
261
|
+
return { ready: keys.length > 0, keys };
|
|
262
|
+
}
|
|
263
|
+
return null;
|
|
264
|
+
}
|
|
265
|
+
/** The form a steward takes in `env` (`local` when none is named). */
|
|
266
|
+
export function stewardFormFor(steward, env = DEFAULT_STEWARD_ENV) {
|
|
267
|
+
return steward.form.environments[env] ?? steward.form.default;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* The lease a local steward holds for as long as it runs, so a second
|
|
271
|
+
* `chant operator --steward` for the same steward is refused. It sits under
|
|
272
|
+
* `refs/chant/lease/_stewards/`, beside the per-Op leases, which a leading
|
|
273
|
+
* `_` keeps out of any Op's name.
|
|
274
|
+
*/
|
|
275
|
+
export function stewardLeaseName(steward) {
|
|
276
|
+
return `_stewards/${steward}`;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* The lease a local steward holds for as long as one of its Ops is actually
|
|
280
|
+
* running: one turn (#2750). Distinct from {@link stewardLeaseName}, which one
|
|
281
|
+
* `chant operator --steward` process holds for its whole life (renewed
|
|
282
|
+
* between ticks, released only when the process stops) — this one is taken
|
|
283
|
+
* right before a run starts and released right after it ends, whether the
|
|
284
|
+
* run is a round's scheduled tick or `chant run <op>` typed by hand. That is
|
|
285
|
+
* what makes an on-request run wait its turn behind a turn already in
|
|
286
|
+
* progress, and succeed again the moment that turn ends, rather than only
|
|
287
|
+
* once the whole steward process stops.
|
|
288
|
+
*
|
|
289
|
+
* `_turns/<name>`, not `_stewards/<name>/turn`: a git ref name is a path
|
|
290
|
+
* component in the loose-refs tree, and `refs/chant/lease/_stewards/<name>`
|
|
291
|
+
* (the lease {@link stewardLeaseName} names) already exists as a *leaf* —
|
|
292
|
+
* git refuses to also create anything *under* it (`fatal: ... exists;
|
|
293
|
+
* cannot create ...`), so nesting the turn lease inside the steward lease's
|
|
294
|
+
* own name is unusable the moment both are live at once. A sibling
|
|
295
|
+
* top-level segment sidesteps that entirely.
|
|
296
|
+
*/
|
|
297
|
+
export function stewardTurnLeaseName(steward) {
|
|
298
|
+
return `_turns/${steward}`;
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Pick the steward `--steward [<name>]` names, or the project's only one.
|
|
302
|
+
* Returns the steward, or the message to refuse with.
|
|
303
|
+
*/
|
|
304
|
+
export function pickSteward(stewards, name) {
|
|
305
|
+
if (name) {
|
|
306
|
+
const found = stewards.get(name);
|
|
307
|
+
if (found)
|
|
308
|
+
return found.declaration;
|
|
309
|
+
const known = [...stewards.keys()].sort();
|
|
310
|
+
return `No steward "${name}" is declared` + (known.length ? ` (declared: ${known.join(", ")})` : " (no *.op.ts file exports one)");
|
|
311
|
+
}
|
|
312
|
+
if (stewards.size === 1)
|
|
313
|
+
return [...stewards.values()][0].declaration;
|
|
314
|
+
if (stewards.size === 0)
|
|
315
|
+
return "No steward is declared: export declareSteward({...}) (or the fountain Steward's declaration) from an *.op.ts file";
|
|
316
|
+
return `${stewards.size} stewards are declared (${[...stewards.keys()].sort().join(", ")}); name one with --steward <name>`;
|
|
317
|
+
}
|
package/dist/op/types.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Op type definitions — the data model for a named, phased Op.
|
|
3
|
+
*
|
|
4
|
+
* These types are intentionally free of any runtime SDK's imports, so they can
|
|
5
|
+
* live in core without core depending on a runtime.
|
|
6
|
+
*/
|
|
7
|
+
/** The exit code `chant run` returns for a completed run that found drift, under `failOn: "drift"` or `--fail-on-drift` (#3675). */
|
|
8
|
+
export const DRIFT_EXIT_CODE = 2;
|
|
9
|
+
/**
|
|
10
|
+
* The id under which a run's work lease is published to its steps (#2748):
|
|
11
|
+
* `stepOutput(WORK_LEASE_STEP_ID, "token")`, or `workLeaseOutput("token")`
|
|
12
|
+
* from `./work-lease-run.ts`. No step of an Op with a `workLease` may use it.
|
|
13
|
+
*/
|
|
14
|
+
export const WORK_LEASE_STEP_ID = "workLease";
|
|
15
|
+
/**
|
|
16
|
+
* {@link ActivityStep.outcomeAttribute} as a list, whichever form it was
|
|
17
|
+
* authored in. `[]` when the step publishes none, so every consumer can
|
|
18
|
+
* iterate without first asking which of the two shapes it is holding.
|
|
19
|
+
*/
|
|
20
|
+
export function outcomeAttributesOf(step) {
|
|
21
|
+
const declared = step.outcomeAttribute;
|
|
22
|
+
if (!declared)
|
|
23
|
+
return [];
|
|
24
|
+
return Array.isArray(declared) ? declared : [declared];
|
|
25
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The rules an Op's `workLease` and `changesCheckout` declaration keeps
|
|
3
|
+
* (#2748), with no imports beyond the Op model, so `Op()` and
|
|
4
|
+
* `declareSteward` can check them without loading the lease machinery in
|
|
5
|
+
* `./work-lease-run.ts`.
|
|
6
|
+
*/
|
|
7
|
+
import { isStepOutputRef } from "./step-output-ref.js";
|
|
8
|
+
import { parseDuration } from "./duration.js";
|
|
9
|
+
import { WORK_ITEM_ID_PATTERN, workItemIdProblem } from "../lifecycle/work-item-id.js";
|
|
10
|
+
import { WORK_LEASE_STEP_ID } from "./types.js";
|
|
11
|
+
/** A work item id a lease can be keyed by: the same pattern as `WORK_ITEM_ID_PATTERN` in `../lifecycle/work-lease.ts`. */
|
|
12
|
+
export const WORK_LEASE_ITEM_PATTERN = WORK_ITEM_ID_PATTERN;
|
|
13
|
+
/** The ids of the activity steps in an Op's main phases, in order. */
|
|
14
|
+
function mainStepIds(phases) {
|
|
15
|
+
const ids = [];
|
|
16
|
+
for (const phase of phases) {
|
|
17
|
+
for (const step of phase.steps)
|
|
18
|
+
if (step.kind === "activity" && step.id)
|
|
19
|
+
ids.push(step.id);
|
|
20
|
+
}
|
|
21
|
+
return ids;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* What is wrong with an Op's `workLease` and `changesCheckout`, or an empty
|
|
25
|
+
* list. The executor refuses to start a run with any of these, and
|
|
26
|
+
* `declareSteward` refuses to list the Op.
|
|
27
|
+
*/
|
|
28
|
+
export function workLeaseProblems(config) {
|
|
29
|
+
const problems = [];
|
|
30
|
+
const spec = config.workLease;
|
|
31
|
+
const name = config.name;
|
|
32
|
+
if (config.changesCheckout && !spec) {
|
|
33
|
+
problems.push(`Op "${name}" changes the checkout but declares no workLease. A change to the checkout happens under a work item's lease, ` +
|
|
34
|
+
`on a branch of its own: declare workLease on the Op.`);
|
|
35
|
+
}
|
|
36
|
+
if (!spec)
|
|
37
|
+
return problems;
|
|
38
|
+
const ids = mainStepIds(config.phases ?? []);
|
|
39
|
+
if (ids.includes(WORK_LEASE_STEP_ID)) {
|
|
40
|
+
problems.push(`Op "${name}": step id "${WORK_LEASE_STEP_ID}" is reserved for the run's work lease; rename the step`);
|
|
41
|
+
}
|
|
42
|
+
const checkId = (id) => {
|
|
43
|
+
const problem = workItemIdProblem(id);
|
|
44
|
+
if (problem)
|
|
45
|
+
problems.push(`Op "${name}": workLease.item ${problem}`);
|
|
46
|
+
};
|
|
47
|
+
const item = spec.item;
|
|
48
|
+
if (isStepOutputRef(item)) {
|
|
49
|
+
if (!ids.includes(item.step)) {
|
|
50
|
+
problems.push(`Op "${name}": workLease.item references step "${item.step}", which no activity step in the Op's phases declares`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
else if (Array.isArray(item)) {
|
|
54
|
+
if (item.length === 0)
|
|
55
|
+
problems.push(`Op "${name}": workLease.item is an empty list`);
|
|
56
|
+
item.forEach(checkId);
|
|
57
|
+
}
|
|
58
|
+
else if (item !== undefined) {
|
|
59
|
+
checkId(item);
|
|
60
|
+
}
|
|
61
|
+
if (spec.ttl !== undefined) {
|
|
62
|
+
try {
|
|
63
|
+
if (parseDuration(spec.ttl) < 3000)
|
|
64
|
+
problems.push(`Op "${name}": workLease.ttl "${spec.ttl}" is shorter than 3s`);
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
problems.push(`Op "${name}": workLease.ttl: ${err instanceof Error ? err.message : String(err)}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (spec.outcome !== undefined && !isStepOutputRef(spec.outcome)) {
|
|
71
|
+
problems.push(`Op "${name}": workLease.outcome is a reference to a step's output`);
|
|
72
|
+
}
|
|
73
|
+
if (spec.kind !== undefined && (typeof spec.kind !== "string" || spec.kind.trim() === "")) {
|
|
74
|
+
problems.push(`Op "${name}": workLease.kind names a work kind file`);
|
|
75
|
+
}
|
|
76
|
+
return problems;
|
|
77
|
+
}
|
|
78
|
+
/** Whether a run of this Op has to be told its work item (`--work <id>`). */
|
|
79
|
+
export function workLeaseNeedsRunItem(config) {
|
|
80
|
+
return config.workLease !== undefined && config.workLease.item === undefined;
|
|
81
|
+
}
|