@intentius/chant 0.124.12 → 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.d.ts +36 -4
- package/dist/gate-decision.d.ts.map +1 -1
- 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.d.ts +8 -0
- package/dist/lifecycle/gate-ledger.d.ts.map +1 -1
- 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.d.ts +1 -1
- package/dist/op/op-waves-run.d.ts.map +1 -1
- 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.d.ts +65 -0
- package/dist/workspace/identity-gate-rule.d.ts.map +1 -0
- package/dist/workspace/identity-gate-rule.js +75 -0
- package/dist/workspace/identity.d.ts +4 -2
- package/dist/workspace/identity.d.ts.map +1 -1
- 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.d.ts +3 -14
- package/dist/workspace/principal-classes.d.ts.map +1 -1
- 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 +36 -6
- 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/gate-decision-bundle.test.ts +3 -2
- package/src/gate-decision-identity.test.ts +176 -0
- package/src/gate-decision.ts +100 -22
- package/src/lexicon-module.ts +3 -0
- package/src/lifecycle/gate-ledger.ts +8 -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/op/op-waves-point.test.ts +1 -0
- package/src/op/op-waves-run.ts +5 -4
- package/src/op/op-waves.test.ts +14 -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/identity-gate-rule.ts +109 -0
- package/src/workspace/identity.ts +8 -18
- 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 +5 -30
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI-facing helpers over component discovery (#560, epic #551) — kept
|
|
3
|
+
* separate from ../cli/commands/{list,describe}.ts and
|
|
4
|
+
* ../cli/handlers/graph.ts so those files stay thin dispatchers and the
|
|
5
|
+
* component-specific report shaping lives alongside the rest of the
|
|
6
|
+
* component subsystem, the same way ../op/discover.ts's results are shaped
|
|
7
|
+
* inline by its own CLI callers rather than a `cli` folder inside `op/`.
|
|
8
|
+
*
|
|
9
|
+
* Surfaces components in the three places the issue asks for:
|
|
10
|
+
* - `chant list --components` — inventory (mirrors `ListEntity`/`listCommand`).
|
|
11
|
+
* - `chant describe <name> --components` — one component's full JSON contract
|
|
12
|
+
* projection (mirrors `describeCommand`'s effective-config view).
|
|
13
|
+
* - `chant graph --components` — dependency order/waves from `dependsOn`
|
|
14
|
+
* (mirrors `computeStackGraph`/`runStackGraph`, but reuses
|
|
15
|
+
* `resolveComponentGraph` from ../driver.ts since a component's `dependsOn`
|
|
16
|
+
* is already a flat name list — no AttrRef-style inference needed).
|
|
17
|
+
* - `chant build --components --generate gitlab` — generate mode (#563):
|
|
18
|
+
* synthesize CI YAML from the same discovered declarations instead of
|
|
19
|
+
* running them, via `generateGitlabPipeline` (../generate-gitlab.ts).
|
|
20
|
+
* - `chant run --components <name|all>` — interpret mode (#585): dispatch
|
|
21
|
+
* discovered component(s) through the interpret `driver.ts` on the local
|
|
22
|
+
* executor, the CLI entrypoint the driver (#556) never had.
|
|
23
|
+
*/
|
|
24
|
+
import { UnknownCanaryError } from "../gated-waves.js";
|
|
25
|
+
import { lexiconModulePath, lexiconNames, importLexiconPackage } from "../lexicon-module.js";
|
|
26
|
+
import { discoverComponents } from "./discover.js";
|
|
27
|
+
import { inferArchetype, projectToJson } from "./component.js";
|
|
28
|
+
import { deployContext, resolveComponentGraph, runInterpretDriver, runComponentDeploy, UnknownDependencyError, DependencyCycleError, DriverRunFailure, } from "./driver.js";
|
|
29
|
+
import { gateName } from "../op/gate-name.js";
|
|
30
|
+
import { isLexiconPlugin } from "../lexicon.js";
|
|
31
|
+
import { dirname, relative } from "node:path";
|
|
32
|
+
import { existsSync, statSync } from "node:fs";
|
|
33
|
+
import { getHeadCommit } from "../lifecycle/git.js";
|
|
34
|
+
import { buildCapabilityRegistry } from "./capability-plugin-loader.js";
|
|
35
|
+
import { applyConfigDefaults } from "./config-defaults.js";
|
|
36
|
+
import { loadChantConfig } from "../config.js";
|
|
37
|
+
/** Discover components under `path` and shape them for `chant list --components`. */
|
|
38
|
+
export async function listComponents(path, sandbox) {
|
|
39
|
+
const result = await discoverComponents(path, { sandbox });
|
|
40
|
+
if (result.errors.length > 0) {
|
|
41
|
+
return { success: false, components: [], errors: result.errors.map((e) => e.message) };
|
|
42
|
+
}
|
|
43
|
+
const components = [...result.components.values()]
|
|
44
|
+
.map(({ component, filePath }) => {
|
|
45
|
+
const projected = projectToJson(component);
|
|
46
|
+
return {
|
|
47
|
+
name: component.name,
|
|
48
|
+
archetype: projected.archetype,
|
|
49
|
+
dependsOn: component.dependsOn,
|
|
50
|
+
hasBuild: component.build !== undefined,
|
|
51
|
+
phases: component.deploy.map((p) => p.phase),
|
|
52
|
+
filePath,
|
|
53
|
+
};
|
|
54
|
+
})
|
|
55
|
+
.sort((a, b) => a.name.localeCompare(b.name));
|
|
56
|
+
return { success: true, components, errors: [] };
|
|
57
|
+
}
|
|
58
|
+
/** Find and project one named component, for `chant describe <name> --components`. */
|
|
59
|
+
export async function describeComponent(path, name, sandbox) {
|
|
60
|
+
const result = await discoverComponents(path, { sandbox });
|
|
61
|
+
if (result.errors.length > 0) {
|
|
62
|
+
return { success: false, component: name, output: result.errors.map((e) => e.message).join("\n") };
|
|
63
|
+
}
|
|
64
|
+
const found = result.components.get(name);
|
|
65
|
+
if (!found) {
|
|
66
|
+
const known = [...result.components.keys()].sort().join(", ");
|
|
67
|
+
return {
|
|
68
|
+
success: false,
|
|
69
|
+
component: name,
|
|
70
|
+
output: `No component "${name}" found.\nKnown components: ${known || "(none)"}`,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
const json = projectToJson(found.component);
|
|
74
|
+
return {
|
|
75
|
+
success: true,
|
|
76
|
+
component: name,
|
|
77
|
+
described: { name, filePath: found.filePath, json },
|
|
78
|
+
output: "",
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
/** Compute the components' dependency graph under `path`, for `chant graph --components`. */
|
|
82
|
+
export async function computeComponentGraph(path, sandbox, buildParams) {
|
|
83
|
+
// #1490 — without this the component graph is always the DEFAULT-parameter
|
|
84
|
+
// graph. `discoverComponents` has honoured `buildParams` since #1108; every
|
|
85
|
+
// caller simply stopped short of passing them, so `--param backups=omit`
|
|
86
|
+
// dropped the CronJob from `chant build` and left the component that
|
|
87
|
+
// describes it in `chant graph --components`. Two commands disagreeing about
|
|
88
|
+
// what the source says, which is the thing #1064 and #1108 each fixed one
|
|
89
|
+
// layer of.
|
|
90
|
+
const result = await discoverComponents(path, { sandbox, buildParams });
|
|
91
|
+
if (result.errors.length > 0) {
|
|
92
|
+
return { success: false, order: [], waves: [], edges: [], error: result.errors.map((e) => e.message).join("\n") };
|
|
93
|
+
}
|
|
94
|
+
const driverComponents = [...result.components.values()].map(({ component }) => ({
|
|
95
|
+
name: component.name,
|
|
96
|
+
dependsOn: component.dependsOn,
|
|
97
|
+
deploy: component.deploy,
|
|
98
|
+
}));
|
|
99
|
+
// component name → its declaring file, relative to `path`, for node deep-links.
|
|
100
|
+
const files = {};
|
|
101
|
+
// component name → owned live resource names (#1491), declared or the
|
|
102
|
+
// contract's identity fallback.
|
|
103
|
+
const liveNames = {};
|
|
104
|
+
// component name → declared composite kind(s) (#1492), only for components
|
|
105
|
+
// that declared them — no identity fallback (see ComponentGraphResult doc).
|
|
106
|
+
const composites = {};
|
|
107
|
+
const archetypes = {};
|
|
108
|
+
const environments = {};
|
|
109
|
+
for (const [name, discovered] of result.components) {
|
|
110
|
+
const declaredEnvironments = discovered.component.environments;
|
|
111
|
+
if (declaredEnvironments && declaredEnvironments.length > 0)
|
|
112
|
+
environments[name] = declaredEnvironments.map((e) => ({ ...e }));
|
|
113
|
+
archetypes[name] = discovered.component.archetype ?? inferArchetype(discovered.component);
|
|
114
|
+
files[name] = relative(path, discovered.filePath);
|
|
115
|
+
const declared = discovered.component.liveNames;
|
|
116
|
+
liveNames[name] = declared && declared.length > 0 ? [...declared] : [name];
|
|
117
|
+
const declaredComposites = discovered.component.composites;
|
|
118
|
+
if (declaredComposites && declaredComposites.length > 0)
|
|
119
|
+
composites[name] = [...declaredComposites];
|
|
120
|
+
}
|
|
121
|
+
try {
|
|
122
|
+
const { order, waves } = resolveComponentGraph(driverComponents);
|
|
123
|
+
const edges = [];
|
|
124
|
+
for (const c of driverComponents) {
|
|
125
|
+
for (const dep of c.dependsOn ?? [])
|
|
126
|
+
edges.push({ from: c.name, to: dep });
|
|
127
|
+
}
|
|
128
|
+
return { success: true, order, waves, edges, files, liveNames, composites, archetypes, environments };
|
|
129
|
+
}
|
|
130
|
+
catch (err) {
|
|
131
|
+
if (err instanceof UnknownDependencyError || err instanceof DependencyCycleError) {
|
|
132
|
+
return { success: false, order: [], waves: [], edges: [], error: err.message };
|
|
133
|
+
}
|
|
134
|
+
throw err;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Load a lexicon's plugin (`@intentius/chant-lexicon-<name>`) to reach its
|
|
139
|
+
* `generateComponentPipeline`. Tolerant: returns null when the package can't be
|
|
140
|
+
* resolved. Mirrors the lexicon-borne loading the capability + upstream-pin
|
|
141
|
+
* seams use, kept here so `components` doesn't depend on the `cli` plugin loader.
|
|
142
|
+
*/
|
|
143
|
+
async function loadLexiconPlugin(name) {
|
|
144
|
+
let mod;
|
|
145
|
+
try {
|
|
146
|
+
mod = (await importLexiconPackage(lexiconModulePath(name) ?? `@intentius/chant-lexicon-${name}`));
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
for (const value of Object.values(mod)) {
|
|
152
|
+
if (isLexiconPlugin(value))
|
|
153
|
+
return value;
|
|
154
|
+
}
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Generate mode (#563): discover every `Component` under `path` and
|
|
159
|
+
* synthesize a thin CI pipeline for `lexicon` that triggers each component's
|
|
160
|
+
* own composition in dependency order/waves — the same `resolveComponentGraph`
|
|
161
|
+
* order `chant graph --components`/the interpret driver use. No deploy logic
|
|
162
|
+
* is inlined into the generated YAML; a cross-cutting change goes through
|
|
163
|
+
* `options`, never per component. The CI-specific synthesis is contributed by
|
|
164
|
+
* the target lexicon's `generateComponentPipeline` (#688); core owns only the
|
|
165
|
+
* generic discovery + graph.
|
|
166
|
+
*/
|
|
167
|
+
export async function generateComponentsPipeline(path, lexicon, options, sandbox,
|
|
168
|
+
/**
|
|
169
|
+
* chant #1108 — this invocation's resolved build-time parameter values
|
|
170
|
+
* (../cli/handlers/build.ts resolves them, the same sequence `chant build`
|
|
171
|
+
* runs, BEFORE calling this function), forwarded into discovery so a
|
|
172
|
+
* `params.<name>` reference inside a discovered `*.component.ts` file
|
|
173
|
+
* resolves instead of reading `{}`. See `discoverComponents`'s
|
|
174
|
+
* `buildParams` option (./discover.ts) for the full doc.
|
|
175
|
+
*/
|
|
176
|
+
buildParams) {
|
|
177
|
+
const plugin = await loadLexiconPlugin(lexicon);
|
|
178
|
+
if (!plugin?.generateComponentPipeline) {
|
|
179
|
+
return {
|
|
180
|
+
success: false,
|
|
181
|
+
error: `Lexicon "${lexicon}" does not support generate mode (no generateComponentPipeline). GitLab, GitHub, and Forgejo are supported today.`,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
const result = await discoverComponents(path, { sandbox, buildParams });
|
|
185
|
+
if (result.errors.length > 0) {
|
|
186
|
+
return { success: false, error: result.errors.map((e) => e.message).join("\n") };
|
|
187
|
+
}
|
|
188
|
+
const driverComponents = [...result.components.values()].map(({ component }) => ({
|
|
189
|
+
name: component.name,
|
|
190
|
+
dependsOn: component.dependsOn,
|
|
191
|
+
deploy: component.deploy,
|
|
192
|
+
}));
|
|
193
|
+
try {
|
|
194
|
+
const { yaml, stages, jobs, env } = plugin.generateComponentPipeline(driverComponents, options);
|
|
195
|
+
return { success: true, yaml, stages, jobs, ...(env ? { env } : {}), buildParams };
|
|
196
|
+
}
|
|
197
|
+
catch (err) {
|
|
198
|
+
if (err instanceof UnknownDependencyError || err instanceof DependencyCycleError || err instanceof UnknownCanaryError) {
|
|
199
|
+
return { success: false, error: err.message };
|
|
200
|
+
}
|
|
201
|
+
throw err;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
// ── Interpret mode: `chant run --components <name|all>` (#585) ──────────────
|
|
205
|
+
/** Convert a discovered `Component` to the driver's leaner `DriverComponent` shape (name/dependsOn/deploy/rollback — the only fields the driver reads). */
|
|
206
|
+
function toDriverComponent(component) {
|
|
207
|
+
return {
|
|
208
|
+
name: component.name,
|
|
209
|
+
dependsOn: component.dependsOn,
|
|
210
|
+
deploy: component.deploy,
|
|
211
|
+
...(component.rollback ? { rollback: component.rollback } : {}),
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Find the first `gate` step anywhere in a component's `deploy`/`rollback`
|
|
216
|
+
* composition (including nested fan-out phases).
|
|
217
|
+
*
|
|
218
|
+
* A declaration-time question, not a pre-flight refusal: since #2119 the
|
|
219
|
+
* driver decides a gate against the ledger when it reaches one, so nothing
|
|
220
|
+
* needs to know up front that a component has one.
|
|
221
|
+
*
|
|
222
|
+
* The name comes back on `gate` whichever key the component spelled it with,
|
|
223
|
+
* so a caller never has to know about the deprecated `signalName` (#2202).
|
|
224
|
+
*/
|
|
225
|
+
export function findComponentGate(component) {
|
|
226
|
+
const search = (phases) => {
|
|
227
|
+
for (const phaseDef of phases ?? []) {
|
|
228
|
+
for (const entry of phaseDef.steps) {
|
|
229
|
+
if (entry.kind === "gate") {
|
|
230
|
+
return { gate: gateName(entry) };
|
|
231
|
+
}
|
|
232
|
+
if (typeof entry.phase === "string" && Array.isArray(entry.steps)) {
|
|
233
|
+
const nested = search([entry]);
|
|
234
|
+
if (nested)
|
|
235
|
+
return nested;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
const fromOnFailure = search(phaseDef.onFailure);
|
|
239
|
+
if (fromOnFailure)
|
|
240
|
+
return fromOnFailure;
|
|
241
|
+
}
|
|
242
|
+
return undefined;
|
|
243
|
+
};
|
|
244
|
+
return search(component.deploy) ?? search(component.rollback);
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Discover every component under `path` and resolve `selector` (`"all"` or a
|
|
248
|
+
* single component name) to the `DriverComponent`(s) to run, with no gate
|
|
249
|
+
* check and no dispatch — just discovery + selection, factored out of
|
|
250
|
+
* `runComponents` so another entrypoint can reuse the exact same selection
|
|
251
|
+
* semantics without inheriting the run itself.
|
|
252
|
+
*/
|
|
253
|
+
export async function resolveComponentTargets(path, selector, sandbox,
|
|
254
|
+
/** chant #1108 — this invocation's resolved build-time parameter values, forwarded into `discoverComponents` so a `params.<name>` reference inside a discovered `*.component.ts` file resolves instead of reading `{}`. See `discoverComponents`'s `buildParams` option (./discover.ts). */
|
|
255
|
+
buildParams) {
|
|
256
|
+
const result = await discoverComponents(path, { sandbox, buildParams });
|
|
257
|
+
if (result.errors.length > 0) {
|
|
258
|
+
return { success: false, targets: [], error: result.errors.map((e) => e.message).join("\n") };
|
|
259
|
+
}
|
|
260
|
+
const discovered = [...result.components.values()].map(({ component }) => component);
|
|
261
|
+
const all = discovered.map((component) => toDriverComponent(component));
|
|
262
|
+
if (selector === "all") {
|
|
263
|
+
// chant #1522 — a seam-gated component (`enabled: false`, computed from
|
|
264
|
+
// this run's own params) sits out of "all": the run deploys the estate
|
|
265
|
+
// the parameters describe, not the units the seams turned off. A disabled
|
|
266
|
+
// dependency is satisfied vacuously — ordering is dependsOn's only
|
|
267
|
+
// semantics — so it is also stripped from the survivors' dependsOn,
|
|
268
|
+
// rather than failing wave resolution as an unknown name.
|
|
269
|
+
const disabled = new Set(discovered.filter((c) => c.enabled === false).map((c) => c.name));
|
|
270
|
+
const targets = all
|
|
271
|
+
.filter((c) => !disabled.has(c.name))
|
|
272
|
+
.map((c) => (c.dependsOn?.some((d) => disabled.has(d)) ? { ...c, dependsOn: c.dependsOn.filter((d) => !disabled.has(d)) } : c));
|
|
273
|
+
return { success: true, targets };
|
|
274
|
+
}
|
|
275
|
+
const found = all.find((c) => c.name === selector);
|
|
276
|
+
const disabledByName = discovered.find((c) => c.name === selector && c.enabled === false);
|
|
277
|
+
if (disabledByName) {
|
|
278
|
+
// An explicit ask for a unit the parameters excluded is a mistake to
|
|
279
|
+
// surface, not to skip silently.
|
|
280
|
+
return {
|
|
281
|
+
success: false,
|
|
282
|
+
targets: [],
|
|
283
|
+
error: `Component "${selector}" is disabled under this run's parameters (enabled: false) — enable the seam it is gated on, or run without naming it.`,
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
if (!found) {
|
|
287
|
+
const known = all.map((c) => c.name).sort().join(", ");
|
|
288
|
+
return {
|
|
289
|
+
success: false,
|
|
290
|
+
targets: [],
|
|
291
|
+
error: `Component "${selector}" not found.${known ? ` Known components: ${known}` : " No components discovered."}`,
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
return { success: true, targets: [found] };
|
|
295
|
+
}
|
|
296
|
+
export async function runComponents(path, selector, options = {}) {
|
|
297
|
+
const resolved = await resolveComponentTargets(path, selector, options.sandbox, options.buildParams);
|
|
298
|
+
if (!resolved.success) {
|
|
299
|
+
return { success: false, selected: [], error: resolved.error };
|
|
300
|
+
}
|
|
301
|
+
const targets = resolved.targets;
|
|
302
|
+
// (#629) Resolve `chant.config.ts`'s `sbom`/`signing`/`vulnPolicy` sections
|
|
303
|
+
// and fill their defaults into every recognized step (`generate-sbom`,
|
|
304
|
+
// `sign`/`attest-provenance`, `verify`, `vuln-gate`) that didn't already
|
|
305
|
+
// specify the value itself, BEFORE dispatching to the driver — the driver
|
|
306
|
+
// itself stays capability-agnostic and never reads project config (see
|
|
307
|
+
// ./config-defaults.ts's module doc). Loaded up front here (rather than just
|
|
308
|
+
// before `applyConfigDefaults`) so the same config drives which capability
|
|
309
|
+
// plugins the registry loads: a component's cloud leaves (e.g. `cfn-deploy`)
|
|
310
|
+
// are contributed by the project's active lexicons (`config.lexicons`), not
|
|
311
|
+
// baked into core — see ./capability-plugin-loader.ts.
|
|
312
|
+
const { config } = options.config ? { config: options.config } : await loadChantConfig(path);
|
|
313
|
+
const registry = options.registry ??
|
|
314
|
+
(await buildCapabilityRegistry({
|
|
315
|
+
plugins: options.capabilityPlugins ?? config.capabilities,
|
|
316
|
+
lexicons: lexiconNames(config.lexicons),
|
|
317
|
+
}));
|
|
318
|
+
const env = options.env ?? "local";
|
|
319
|
+
const selected = targets.map((c) => c.name);
|
|
320
|
+
const resolvedTargets = targets.map((component) => applyConfigDefaults(component, config));
|
|
321
|
+
// Cross-component/cross-stack outputs to resolve references against. Seeded
|
|
322
|
+
// from a caller (a downstream CI job passing an upstream job's dumped
|
|
323
|
+
// outputs via `--seed-outputs`); grows as this run's components complete.
|
|
324
|
+
const seedOutputs = options.componentOutputs ?? {};
|
|
325
|
+
const { onProgress } = options;
|
|
326
|
+
const gates = options.gates;
|
|
327
|
+
// #3061: the commit this run deploys, for the workloads' vcs.ref.head.revision. The digest comes
|
|
328
|
+
// from the run's own publish step. Best effort: outside a git checkout nothing is passed.
|
|
329
|
+
const revision = options.revision !== undefined
|
|
330
|
+
? options.revision ?? undefined
|
|
331
|
+
: await getHeadCommit({ cwd: existsSync(path) && statSync(path).isDirectory() ? path : dirname(path) }).catch(() => undefined);
|
|
332
|
+
const releaseIdentity = () => (revision ? { revision } : {});
|
|
333
|
+
try {
|
|
334
|
+
if (selector === "all") {
|
|
335
|
+
const run = await runInterpretDriver(resolvedTargets, registry, {
|
|
336
|
+
env,
|
|
337
|
+
releaseIdentity,
|
|
338
|
+
componentOutputs: seedOutputs,
|
|
339
|
+
onProgress,
|
|
340
|
+
...(gates ? { gates } : {}),
|
|
341
|
+
});
|
|
342
|
+
return {
|
|
343
|
+
success: run.status === "ok",
|
|
344
|
+
run,
|
|
345
|
+
selected,
|
|
346
|
+
buildParams: options.buildParams,
|
|
347
|
+
...(run.status === "gated" && run.gate
|
|
348
|
+
? {
|
|
349
|
+
gated: {
|
|
350
|
+
component: run.gatedComponent ?? selected[0],
|
|
351
|
+
gate: run.gate,
|
|
352
|
+
...(run.gatePushed !== undefined ? { pushed: run.gatePushed } : {}),
|
|
353
|
+
...(run.gatePushWarning ? { pushWarning: run.gatePushWarning } : {}),
|
|
354
|
+
...(run.gateMismatch ? { mismatch: run.gateMismatch } : {}),
|
|
355
|
+
},
|
|
356
|
+
}
|
|
357
|
+
: {}),
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
// Single-component invocation: run just this component, bypassing
|
|
361
|
+
// whole-graph `dependsOn` resolution (see docstring above). The seeded
|
|
362
|
+
// outputs stand in for the dependency components that ran in earlier jobs,
|
|
363
|
+
// so a single-component run still resolves their `stackOutput()`/publish
|
|
364
|
+
// references. `runComponentDeploy` mutates this map with this component's
|
|
365
|
+
// own outputs, which `run.componentOutputs` then exposes for `--dump-outputs`.
|
|
366
|
+
//
|
|
367
|
+
// There's no `runInterpretDriver` call here to thread progress through
|
|
368
|
+
// (that's the whole point of the single-component bypass), so the
|
|
369
|
+
// run-start/wave-start/component-start/…/run-done envelope is emitted by
|
|
370
|
+
// hand, treating this one component as a single-wave run — the same shape
|
|
371
|
+
// `run.waves`/`run.order` below already give it.
|
|
372
|
+
const componentOutputs = { ...seedOutputs };
|
|
373
|
+
const componentName = resolvedTargets[0].name;
|
|
374
|
+
onProgress?.({ type: "run-start", waves: [selected] });
|
|
375
|
+
onProgress?.({ type: "wave-start", wave: 1, components: selected });
|
|
376
|
+
onProgress?.({ type: "component-start", wave: 1, component: componentName });
|
|
377
|
+
const componentResult = await runComponentDeploy(resolvedTargets[0], deployContext({ env, releaseIdentity }, componentName), registry, componentOutputs, onProgress, gates ? { port: gates } : undefined);
|
|
378
|
+
const status = componentResult.status === "fail" ? "failed" : componentResult.status;
|
|
379
|
+
onProgress?.({ type: "component-done", wave: 1, component: componentName, status });
|
|
380
|
+
onProgress?.({ type: "wave-done", wave: 1, status });
|
|
381
|
+
onProgress?.({ type: "run-done", status });
|
|
382
|
+
const run = {
|
|
383
|
+
order: selected,
|
|
384
|
+
waves: [selected],
|
|
385
|
+
results: [componentResult],
|
|
386
|
+
ok: componentResult.ok,
|
|
387
|
+
status: componentResult.status,
|
|
388
|
+
failedComponent: componentResult.status === "fail" ? componentResult.component : undefined,
|
|
389
|
+
...(componentResult.status === "gated"
|
|
390
|
+
? {
|
|
391
|
+
gatedComponent: componentResult.component,
|
|
392
|
+
gate: componentResult.gate,
|
|
393
|
+
...(componentResult.gatePushed !== undefined ? { gatePushed: componentResult.gatePushed } : {}),
|
|
394
|
+
...(componentResult.gatePushWarning ? { gatePushWarning: componentResult.gatePushWarning } : {}),
|
|
395
|
+
...(componentResult.gateMismatch ? { gateMismatch: componentResult.gateMismatch } : {}),
|
|
396
|
+
}
|
|
397
|
+
: {}),
|
|
398
|
+
componentOutputs,
|
|
399
|
+
};
|
|
400
|
+
return {
|
|
401
|
+
success: componentResult.ok,
|
|
402
|
+
run,
|
|
403
|
+
selected,
|
|
404
|
+
buildParams: options.buildParams,
|
|
405
|
+
...(componentResult.status === "gated" && componentResult.gate
|
|
406
|
+
? {
|
|
407
|
+
gated: {
|
|
408
|
+
component: componentResult.component,
|
|
409
|
+
gate: componentResult.gate,
|
|
410
|
+
...(componentResult.gatePushed !== undefined ? { pushed: componentResult.gatePushed } : {}),
|
|
411
|
+
...(componentResult.gatePushWarning ? { pushWarning: componentResult.gatePushWarning } : {}),
|
|
412
|
+
...(componentResult.gateMismatch ? { mismatch: componentResult.gateMismatch } : {}),
|
|
413
|
+
},
|
|
414
|
+
}
|
|
415
|
+
: {}),
|
|
416
|
+
};
|
|
417
|
+
}
|
|
418
|
+
catch (err) {
|
|
419
|
+
if (err instanceof DriverRunFailure) {
|
|
420
|
+
return { success: false, run: err.result, selected, error: err.message };
|
|
421
|
+
}
|
|
422
|
+
if (err instanceof UnknownDependencyError || err instanceof DependencyCycleError) {
|
|
423
|
+
return { success: false, selected, error: err.message };
|
|
424
|
+
}
|
|
425
|
+
throw err;
|
|
426
|
+
}
|
|
427
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed `Component` authoring form — Phase 2 (#560, epic #551).
|
|
3
|
+
*
|
|
4
|
+
* This is the real authoring frontend the docs (component-contract.mdx,
|
|
5
|
+
* composition-and-wiring.mdx) describe and that `pilots/authoring-shape.ts`
|
|
6
|
+
* (#555's stopgap) explicitly deferred to this issue. It mirrors
|
|
7
|
+
* `component.schema.json` field-for-field, so `projectToJson` stays a
|
|
8
|
+
* structural no-op — the interesting content lives in each component's
|
|
9
|
+
* composition, not in a bespoke serializer.
|
|
10
|
+
*
|
|
11
|
+
* See https://intentius.io/chant/components/component-contract/ and
|
|
12
|
+
* https://intentius.io/chant/components/composition-and-wiring/.
|
|
13
|
+
*/
|
|
14
|
+
/** Author a named phase. `steps` may mix capability `Step`s, `Gate`s, and nested `Phase`s (fan-out). */
|
|
15
|
+
export function phase(name, steps, opts) {
|
|
16
|
+
return { phase: name, steps, ...(opts?.parallel ? { parallel: true } : {}) };
|
|
17
|
+
}
|
|
18
|
+
/** Author a gate step — a human approval the driver decides against the gate ledger, stopping the run `gated` when nothing has answered it. */
|
|
19
|
+
export function gate(name, opts) {
|
|
20
|
+
return { kind: "gate", gate: name, ...opts };
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Author a cross-stack output reference — the TypeScript-side equivalent of
|
|
24
|
+
* the JSON contract's `{ stackOutput: { stack, name } }` (schema
|
|
25
|
+
* `StackOutputReference`), e.g. `stackOutput("shared-alb", "ListenerArn")`.
|
|
26
|
+
* Resolved by `chant graph --stacks`, never by orchestrator code.
|
|
27
|
+
*/
|
|
28
|
+
export function stackOutput(stack, name) {
|
|
29
|
+
return { stackOutput: { stack, name } };
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Every capability-family marker `inferArchetype` looks for, grouped the same
|
|
33
|
+
* way component-contract.mdx's archetype table groups phases. Kept as a plain
|
|
34
|
+
* list (not the full starter verb set) so this module has no dependency on
|
|
35
|
+
* `./registry`/`./verbs` — inference is a structural, name-based heuristic
|
|
36
|
+
* over the composition, not a capability-registry lookup.
|
|
37
|
+
*/
|
|
38
|
+
const BUILD_ONLY_HINT = new Set(["docker-build", "zip-package", "jvm-build"]);
|
|
39
|
+
const PUBLISH_KIND_PREFIX = /^(publish-|load-image-on-host)/;
|
|
40
|
+
/** True if a step's `kind` looks like a publish-family capability (`publish-image`, `publish-artifact`, `load-image-on-host`, ...). */
|
|
41
|
+
function isPublishStep(step) {
|
|
42
|
+
return PUBLISH_KIND_PREFIX.test(step.kind);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Distinguishes a nested fan-out `Phase` from a `Step`/`Gate` within a
|
|
46
|
+
* phase's `steps` array. `Step` carries an open index signature
|
|
47
|
+
* (`[param: string]: unknown`), so a plain `"phase" in s` structural check
|
|
48
|
+
* cannot narrow `Step` away from `Phase` — checking the concrete field types
|
|
49
|
+
* (`phase` is a string, `steps` is an array) here is what actually
|
|
50
|
+
* disambiguates them.
|
|
51
|
+
*/
|
|
52
|
+
function isNestedPhase(s) {
|
|
53
|
+
return typeof s.phase === "string" && Array.isArray(s.steps);
|
|
54
|
+
}
|
|
55
|
+
/** Flatten every step across every phase (including nested fan-out phases) into one list, for structural inspection. */
|
|
56
|
+
function allSteps(phases) {
|
|
57
|
+
const out = [];
|
|
58
|
+
const walk = (ps) => {
|
|
59
|
+
for (const p of ps) {
|
|
60
|
+
for (const s of p.steps) {
|
|
61
|
+
if (isNestedPhase(s))
|
|
62
|
+
walk([s]);
|
|
63
|
+
else
|
|
64
|
+
out.push(s);
|
|
65
|
+
}
|
|
66
|
+
if (p.onFailure)
|
|
67
|
+
walk(p.onFailure);
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
walk(phases);
|
|
71
|
+
return out;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Infer a component's archetype from the shape of its composition, when no
|
|
75
|
+
* explicit `archetype` is authored — matching the archetype table in
|
|
76
|
+
* component-contract.mdx:
|
|
77
|
+
* - **producer-library**: has a `build`, and every step across `deploy` is a
|
|
78
|
+
* publish-family step (or a gate) — build -> publish only, no apply.
|
|
79
|
+
* - **service**: has a `build` and at least one non-publish, non-gate step
|
|
80
|
+
* (an apply/verify step) — build -> publish -> apply -> verify.
|
|
81
|
+
* - **infra**: no `build` — apply -> verify only.
|
|
82
|
+
*
|
|
83
|
+
* This is a structural heuristic, not a capability-registry lookup (see
|
|
84
|
+
* `BUILD_ONLY_HINT`/`isPublishStep` above): it only needs to distinguish
|
|
85
|
+
* "nothing but publish" from "something else happens after publish", which
|
|
86
|
+
* every merged pilot/fixture satisfies without consulting the registry.
|
|
87
|
+
*/
|
|
88
|
+
export function inferArchetype(component) {
|
|
89
|
+
if (!component.build)
|
|
90
|
+
return "infra";
|
|
91
|
+
const steps = allSteps(component.deploy);
|
|
92
|
+
const nonGateSteps = steps.filter((s) => s.kind !== "gate");
|
|
93
|
+
const hasNonPublishStep = nonGateSteps.some((s) => !isPublishStep(s));
|
|
94
|
+
return hasNonPublishStep ? "service" : "producer-library";
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Project a typed `Component` to its plain-JSON contract form
|
|
98
|
+
* (component.schema.json). Field names already match the schema 1:1, so
|
|
99
|
+
* projection is mechanical: a deep `JSON.parse(JSON.stringify())` round-trip
|
|
100
|
+
* (dropping `undefined` optional fields) plus filling in `archetype` via
|
|
101
|
+
* `inferArchetype` when the author didn't supply one explicitly. Kept
|
|
102
|
+
* intentionally dumb beyond that inference — the schema/fixtures stay the
|
|
103
|
+
* source of truth for shape, not this function.
|
|
104
|
+
*/
|
|
105
|
+
export function projectToJson(component) {
|
|
106
|
+
const withArchetype = {
|
|
107
|
+
...component,
|
|
108
|
+
archetype: component.archetype ?? inferArchetype(component),
|
|
109
|
+
};
|
|
110
|
+
return JSON.parse(JSON.stringify(withArchetype));
|
|
111
|
+
}
|
|
112
|
+
/** Runtime type guard: true if `value` looks like a `Component` (has the required `name`/`dependsOn`/`deploy` shape). Used by discovery to pick exported `Component` values out of a `*.component.ts` module without requiring a class/marker symbol. */
|
|
113
|
+
export function isComponent(value) {
|
|
114
|
+
if (typeof value !== "object" || value === null)
|
|
115
|
+
return false;
|
|
116
|
+
const v = value;
|
|
117
|
+
return (typeof v.name === "string" &&
|
|
118
|
+
Array.isArray(v.dependsOn) &&
|
|
119
|
+
Array.isArray(v.deploy));
|
|
120
|
+
}
|