@intentius/chant 0.124.13 → 0.124.15
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.d.ts +6 -0
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +669 -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.d.ts +24 -2
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +361 -0
- package/dist/child-project.js +21 -0
- package/dist/ci-jobs.d.ts +227 -0
- package/dist/ci-jobs.d.ts.map +1 -0
- package/dist/ci-jobs.js +448 -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.d.ts.map +1 -1
- package/dist/components/pr-pipeline.js +135 -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.d.ts +10 -2
- package/dist/composite.d.ts.map +1 -1
- package/dist/composite.js +313 -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.d.ts +2 -1
- package/dist/discovery/collect.d.ts.map +1 -1
- package/dist/discovery/collect.js +223 -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 +4073 -0
- package/dist/discovery/fold-rank.js +292 -0
- package/dist/discovery/graph.js +115 -0
- package/dist/discovery/host-composite.d.ts +35 -0
- package/dist/discovery/host-composite.d.ts.map +1 -0
- package/dist/discovery/host-composite.js +93 -0
- package/dist/discovery/import.d.ts.map +1 -1
- package/dist/discovery/import.js +65 -0
- package/dist/discovery/index.d.ts +9 -0
- package/dist/discovery/index.d.ts.map +1 -1
- 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 +20 -9
- package/dist/gate-decision.d.ts.map +1 -1
- package/dist/gate-decision.js +313 -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.d.ts +69 -2
- package/dist/lifecycle/gate-audit.d.ts.map +1 -1
- package/dist/lifecycle/gate-audit.js +415 -0
- package/dist/lifecycle/gate-ledger-select.js +89 -0
- package/dist/lifecycle/gate-ledger.d.ts +24 -0
- package/dist/lifecycle/gate-ledger.d.ts.map +1 -1
- package/dist/lifecycle/gate-ledger.js +201 -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.d.ts +1 -1
- 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.d.ts +8 -3
- package/dist/op/activities/change-set.d.ts.map +1 -1
- package/dist/op/activities/change-set.js +67 -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.d.ts +28 -16
- package/dist/op/activities/reconcile.d.ts.map +1 -1
- package/dist/op/activities/reconcile.js +1011 -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.d.ts +1 -1
- package/dist/op/builders.d.ts.map +1 -1
- 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.d.ts +7 -0
- package/dist/workspace/__fixtures__/contract-repo.d.ts.map +1 -1
- package/dist/workspace/__fixtures__/contract-repo.js +119 -0
- package/dist/workspace/__fixtures__/decide-workspace.js +112 -0
- package/dist/workspace/__fixtures__/sessions.d.ts +1 -1
- package/dist/workspace/__fixtures__/sessions.d.ts.map +1 -1
- 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 +462 -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.d.ts +3 -1
- package/dist/workspace/ci-green-workflow.d.ts.map +1 -1
- package/dist/workspace/ci-green-workflow.js +202 -0
- package/dist/workspace/ci-green.js +325 -0
- package/dist/workspace/ci-last-green.schema.json +158 -0
- package/dist/workspace/class-data.d.ts +84 -0
- package/dist/workspace/class-data.d.ts.map +1 -0
- package/dist/workspace/class-data.js +238 -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.d.ts +3 -7
- package/dist/workspace/kinds.d.ts.map +1 -1
- package/dist/workspace/kinds.js +553 -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 +4 -11
- package/dist/workspace/principal-classes.d.ts.map +1 -1
- package/dist/workspace/principal-classes.js +162 -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/build.ts +8 -0
- package/src/change-set.test.ts +48 -0
- package/src/change-set.ts +52 -2
- package/src/ci-jobs.test.ts +49 -0
- package/src/ci-jobs.ts +515 -0
- 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/pr-pipeline.ts +3 -2
- package/src/components/sandbox/driver.ts +3 -1
- package/src/composite.ts +15 -3
- package/src/config-import.ts +3 -0
- package/src/discovery/collect.ts +15 -1
- package/src/discovery/fold-build-parity.test.ts +71 -0
- package/src/discovery/fold-import.ts +25 -127
- package/src/discovery/fold-project-provenance.test.ts +21 -4
- package/src/discovery/host-composite.ts +101 -0
- package/src/discovery/import.ts +2 -0
- package/src/discovery/index.ts +11 -1
- package/src/discovery/sandbox/driver.ts +3 -1
- package/src/gate-decision-bundle.test.ts +5 -4
- package/src/gate-decision-identity.test.ts +59 -6
- package/src/gate-decision.ts +81 -21
- package/src/lexicon-module.ts +3 -0
- package/src/lifecycle/gate-audit.test.ts +55 -1
- package/src/lifecycle/gate-audit.ts +116 -3
- package/src/lifecycle/gate-ledger.test.ts +20 -1
- package/src/lifecycle/gate-ledger.ts +33 -1
- 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/activities/activity-contracts.ts +1 -1
- package/src/op/activities/change-set.ts +11 -3
- package/src/op/activities/lexicon-upgrade.test.ts +2 -0
- package/src/op/activities/reconcile.test.ts +62 -2
- package/src/op/activities/reconcile.ts +46 -22
- package/src/op/builders.ts +1 -1
- package/src/op/discover.ts +3 -0
- package/src/op/op-waves-run.ts +4 -3
- package/src/op/op-waves.test.ts +2 -0
- package/src/op/work-lease-run.test.ts +12 -4
- package/src/ts-loader.test.ts +23 -0
- package/src/ts-loader.ts +122 -0
- package/src/workspace/__fixtures__/contract-repo.ts +17 -1
- package/src/workspace/__fixtures__/sessions.ts +3 -3
- package/src/workspace/change-set.schema.json +5 -3
- package/src/workspace/chant-migrations/chud-lexicon-exit.ts +1 -1
- package/src/workspace/ci-green-workflow.test.ts +4 -4
- package/src/workspace/ci-green-workflow.ts +5 -2
- package/src/workspace/class-data.test.ts +64 -0
- package/src/workspace/class-data.ts +236 -0
- package/src/workspace/declaration.ts +1 -1
- package/src/workspace/kinds.ts +7 -36
- package/src/workspace/lineage-migrations.ts +2 -0
- package/src/workspace/points.ts +1 -1
- package/src/workspace/principal-classes.ts +12 -95
- package/src/workspace/records-formats.test.ts +7 -2
- package/src/workspace/records-sessions-write.test.ts +3 -3
- package/src/workspace/status-contract.e2e.test.ts +37 -0
- package/src/workspace/status-contract.test.ts +23 -21
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The optional HCL parser, loaded lazily. Kept apart from `parse.ts` so a
|
|
3
|
+
* caller that only needs the loader (the terraform lexicon's HCL reader) does
|
|
4
|
+
* not pull in the dependency graph, the state reader and the carve tables.
|
|
5
|
+
*
|
|
6
|
+
* `@cdktn/hcl2json` is NOT a chant dependency: it carries a ~1.8 MB wasm blob
|
|
7
|
+
* and only HCL users need it. If it is absent the loader fails with a
|
|
8
|
+
* one-line install hint.
|
|
9
|
+
*/
|
|
10
|
+
import { appendFileSync } from "fs";
|
|
11
|
+
export class Hcl2JsonNotInstalled extends Error {
|
|
12
|
+
constructor(cause) {
|
|
13
|
+
super("Terraform carve-out needs the HCL parser, which is not installed.\n" +
|
|
14
|
+
" Install it once: npm install -D @cdktn/hcl2json\n" +
|
|
15
|
+
`(underlying error: ${cause instanceof Error ? cause.message : String(cause)})`);
|
|
16
|
+
this.name = "Hcl2JsonNotInstalled";
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The environment variable that turns on parser-input recording (chant #2483).
|
|
21
|
+
*
|
|
22
|
+
* When set to a file path, every `parse(filename, source)` and every
|
|
23
|
+
* `getReferencesInExpression(filename, expression)` this process makes is
|
|
24
|
+
* appended to that file as one JSON line before the real call runs. That is
|
|
25
|
+
* how `scripts/check-hcl-parser-parity.ts` gets hold of the inline HCL the
|
|
26
|
+
* test suite parses, which no corpus walk on disk would find: run the suite
|
|
27
|
+
* with this set, then replay the file through two parsers and compare. Off
|
|
28
|
+
* unless set, and never changes a result.
|
|
29
|
+
*/
|
|
30
|
+
export const HCL2JSON_RECORD_ENV = "CHANT_HCL2JSON_RECORD";
|
|
31
|
+
function recording(parser, path) {
|
|
32
|
+
const note = (line) => {
|
|
33
|
+
appendFileSync(path, `${JSON.stringify(line)}\n`);
|
|
34
|
+
};
|
|
35
|
+
return {
|
|
36
|
+
parse: (filename, hcl) => {
|
|
37
|
+
note({ kind: "parse", filename, text: hcl });
|
|
38
|
+
return parser.parse(filename, hcl);
|
|
39
|
+
},
|
|
40
|
+
getReferencesInExpression: (filename, expression) => {
|
|
41
|
+
note({ kind: "refs", filename, text: expression });
|
|
42
|
+
return parser.getReferencesInExpression(filename, expression);
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Lazy-load the optional HCL parser. Throws `Hcl2JsonNotInstalled` with an
|
|
48
|
+
* install hint when the package is missing, rather than a raw MODULE_NOT_FOUND.
|
|
49
|
+
*/
|
|
50
|
+
export async function loadHcl2json() {
|
|
51
|
+
let parser;
|
|
52
|
+
try {
|
|
53
|
+
parser = (await import("@cdktn/hcl2json"));
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
throw new Hcl2JsonNotInstalled(err);
|
|
57
|
+
}
|
|
58
|
+
const record = process.env[HCL2JSON_RECORD_ENV];
|
|
59
|
+
return record ? recording(parser, record) : parser;
|
|
60
|
+
}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The carve state manifest (#998) — what makes emit → bridge → apply compose.
|
|
3
|
+
*
|
|
4
|
+
* `carve emit` persists the boundary report and adoption selector next to the
|
|
5
|
+
* emitted source as `<target>.carve.json`. The later steps read it back from
|
|
6
|
+
* their output dir, so `carve bridge` and `carve apply` no longer need the
|
|
7
|
+
* target re-specified by hand, and each step records what it did for the next.
|
|
8
|
+
* Plain JSON on disk — reviewable, diffable, nothing proprietary.
|
|
9
|
+
*/
|
|
10
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from "fs";
|
|
11
|
+
import { isAbsolute, join, relative, resolve } from "path";
|
|
12
|
+
export const CARVE_MANIFEST_SUFFIX = ".carve.json";
|
|
13
|
+
/**
|
|
14
|
+
* Version 2 (#2039): `emit.files`, `bridge.written`, `bridge.patch` and
|
|
15
|
+
* `apply.stampedFiles` are recorded relative to the manifest's own directory,
|
|
16
|
+
* so the manifest stays true when the tree is copied, moved, or checked out
|
|
17
|
+
* elsewhere. Version-1 manifests recorded them absolute; readers resolve
|
|
18
|
+
* either through `resolveManifestFilePath`.
|
|
19
|
+
*/
|
|
20
|
+
export const CARVE_MANIFEST_VERSION = 2;
|
|
21
|
+
/** Filesystem-safe slug for a Terraform address (shared file-naming convention). */
|
|
22
|
+
export function carveSlug(target) {
|
|
23
|
+
return target.replace(/[^A-Za-z0-9_]+/g, "-");
|
|
24
|
+
}
|
|
25
|
+
/** Where the manifest for `target` lives inside an output dir. */
|
|
26
|
+
export function carveManifestPath(outDir, target) {
|
|
27
|
+
return join(outDir, `${carveSlug(target)}${CARVE_MANIFEST_SUFFIX}`);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Relative-to-`outDir` spelling of a recorded file path. Absolute entries
|
|
31
|
+
* (the run-time spelling every step naturally produces, and every version-1
|
|
32
|
+
* manifest on disk) are rewritten against the RESOLVED outDir — a caller's
|
|
33
|
+
* relative `--output` must not change what "relative to the manifest's
|
|
34
|
+
* directory" means (#2059). Already-relative entries pass through: they can
|
|
35
|
+
* only have come from a reader honouring the contract, and re-basing them
|
|
36
|
+
* against an unknowable original cwd would corrupt, not normalize.
|
|
37
|
+
*/
|
|
38
|
+
function relativizePath(outDir, p) {
|
|
39
|
+
return isAbsolute(p) ? relative(resolve(outDir), p) : p;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Normalize a manifest to the version-2 on-disk contract: recorded file
|
|
43
|
+
* paths relative to the manifest's own directory (#2039). `from` and
|
|
44
|
+
* `statePath` stay absolute — they locate the Terraform estate, a different
|
|
45
|
+
* tree the manifest does not travel with.
|
|
46
|
+
*/
|
|
47
|
+
function normalizeManifest(outDir, manifest) {
|
|
48
|
+
const out = { ...manifest, version: CARVE_MANIFEST_VERSION };
|
|
49
|
+
if (manifest.emit) {
|
|
50
|
+
out.emit = { ...manifest.emit, files: manifest.emit.files.map((f) => relativizePath(outDir, f)) };
|
|
51
|
+
}
|
|
52
|
+
if (manifest.bridge) {
|
|
53
|
+
out.bridge = {
|
|
54
|
+
...manifest.bridge,
|
|
55
|
+
written: manifest.bridge.written.map((f) => relativizePath(outDir, f)),
|
|
56
|
+
...(manifest.bridge.patch !== undefined ? { patch: relativizePath(outDir, manifest.bridge.patch) } : {}),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
if (manifest.apply?.stampedFiles) {
|
|
60
|
+
out.apply = { ...manifest.apply, stampedFiles: manifest.apply.stampedFiles.map((f) => relativizePath(outDir, f)) };
|
|
61
|
+
}
|
|
62
|
+
return out;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Resolve a manifest-recorded file path against the manifest's directory.
|
|
66
|
+
* Absolute paths (version-1 manifests) pass through untouched, so both
|
|
67
|
+
* on-disk spellings read the same.
|
|
68
|
+
*/
|
|
69
|
+
export function resolveManifestFilePath(manifestDir, p) {
|
|
70
|
+
// Always ABSOLUTE (#2059): `join` with a relative manifestDir produced a
|
|
71
|
+
// cwd-relative path, which `relativizePath` then passed through untouched —
|
|
72
|
+
// so `carve apply --output carveout` recorded `stampedFiles` relative to
|
|
73
|
+
// wherever the command happened to run, two spellings in one manifest.
|
|
74
|
+
return isAbsolute(p) ? p : resolve(manifestDir, p);
|
|
75
|
+
}
|
|
76
|
+
/** Write (or overwrite) a manifest into the output dir. Returns the path. */
|
|
77
|
+
export function writeCarveManifest(outDir, manifest) {
|
|
78
|
+
mkdirSync(outDir, { recursive: true });
|
|
79
|
+
const path = carveManifestPath(outDir, manifest.target);
|
|
80
|
+
writeFileSync(path, JSON.stringify(normalizeManifest(outDir, manifest), null, 2) + "\n");
|
|
81
|
+
return path;
|
|
82
|
+
}
|
|
83
|
+
/** Read a manifest, or null when absent/unreadable/not a known-version manifest. */
|
|
84
|
+
export function readCarveManifest(path) {
|
|
85
|
+
if (!existsSync(path))
|
|
86
|
+
return null;
|
|
87
|
+
try {
|
|
88
|
+
const parsed = JSON.parse(readFileSync(path, "utf-8"));
|
|
89
|
+
if (parsed?.version !== 1 && parsed?.version !== 2)
|
|
90
|
+
return null;
|
|
91
|
+
if (typeof parsed.target !== "string" || typeof parsed.boundary !== "object")
|
|
92
|
+
return null;
|
|
93
|
+
return parsed;
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/** All carve manifest paths in an output dir. */
|
|
100
|
+
export function listCarveManifests(outDir) {
|
|
101
|
+
if (!existsSync(outDir))
|
|
102
|
+
return [];
|
|
103
|
+
return readdirSync(outDir)
|
|
104
|
+
.filter((f) => f.endsWith(CARVE_MANIFEST_SUFFIX))
|
|
105
|
+
.map((f) => join(outDir, f))
|
|
106
|
+
.sort();
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Resolve the manifest a later carve step composes with. With a selected
|
|
110
|
+
* target, that target's manifest (absent is fine — the step just runs
|
|
111
|
+
* standalone). Without one, the single manifest in the output dir; none or
|
|
112
|
+
* several is an error naming what is (or is not) there.
|
|
113
|
+
*/
|
|
114
|
+
export function resolveCarveManifest(outDir, select) {
|
|
115
|
+
if (select) {
|
|
116
|
+
const path = carveManifestPath(outDir, select);
|
|
117
|
+
const manifest = readCarveManifest(path);
|
|
118
|
+
return manifest ? { manifest, path } : {};
|
|
119
|
+
}
|
|
120
|
+
const paths = listCarveManifests(outDir);
|
|
121
|
+
if (paths.length === 0) {
|
|
122
|
+
return { error: `No carve manifest in ${outDir} — run \`chant carve emit\` first, or pass --select <tf-address>.` };
|
|
123
|
+
}
|
|
124
|
+
const manifests = paths
|
|
125
|
+
.map((path) => ({ path, manifest: readCarveManifest(path) }))
|
|
126
|
+
.filter((m) => m.manifest !== null);
|
|
127
|
+
if (manifests.length === 0) {
|
|
128
|
+
return { error: `No readable carve manifest in ${outDir} — pass --select <tf-address>.` };
|
|
129
|
+
}
|
|
130
|
+
if (manifests.length > 1) {
|
|
131
|
+
const targets = manifests.map((m) => m.manifest.target).join(", ");
|
|
132
|
+
return { error: `Several carves in ${outDir} (${targets}) — pass --select <tf-address> to pick one.` };
|
|
133
|
+
}
|
|
134
|
+
return { manifest: manifests[0].manifest, path: manifests[0].path };
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Read-modify-write a section of an existing manifest. No-op when absent.
|
|
138
|
+
* The whole manifest is re-normalized on write, so updating a version-1
|
|
139
|
+
* manifest also migrates its recorded paths to the relative contract.
|
|
140
|
+
*/
|
|
141
|
+
export function updateCarveManifest(outDir, target, patch) {
|
|
142
|
+
const path = carveManifestPath(outDir, target);
|
|
143
|
+
const manifest = readCarveManifest(path);
|
|
144
|
+
if (!manifest)
|
|
145
|
+
return undefined;
|
|
146
|
+
Object.assign(manifest, patch);
|
|
147
|
+
writeFileSync(path, JSON.stringify(normalizeManifest(outDir, manifest), null, 2) + "\n");
|
|
148
|
+
return path;
|
|
149
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thin wasm glue for the carve-out advisor (#214 T1): read a Terraform estate's
|
|
3
|
+
* `.tf` files, run them through `@cdktn/hcl2json`, merge into one tree, and hand
|
|
4
|
+
* off to the pure `buildGraph`. The parser loader lives in `./hcl2json`, which
|
|
5
|
+
* this module re-exports.
|
|
6
|
+
*/
|
|
7
|
+
import { readdirSync, readFileSync } from "fs";
|
|
8
|
+
import { join } from "path";
|
|
9
|
+
import { buildGraph, collectExpressions } from "./graph.js";
|
|
10
|
+
import { readStateInstanceCounts, applyStateCounts } from "./state.js";
|
|
11
|
+
import { loadHcl2json } from "./hcl2json.js";
|
|
12
|
+
export { loadHcl2json, Hcl2JsonNotInstalled, HCL2JSON_RECORD_ENV, } from "./hcl2json.js";
|
|
13
|
+
/**
|
|
14
|
+
* Resolve every interpolated string in the merged tree through the parser's
|
|
15
|
+
* expression AST (`getReferencesInExpression`), producing the accessor map
|
|
16
|
+
* `buildGraph` classifies. The AST — not a regex over the expression body —
|
|
17
|
+
* decides what is a reference, so a quoted address used as a map key or an
|
|
18
|
+
* escaped `$${...}` literal yields none. An expression the AST cannot parse in
|
|
19
|
+
* isolation resolves to no references (fewer edges, never a phantom one).
|
|
20
|
+
*/
|
|
21
|
+
async function resolveExpressionRefs(hcl2json, tree) {
|
|
22
|
+
const refs = new Map();
|
|
23
|
+
for (const expr of collectExpressions(tree)) {
|
|
24
|
+
try {
|
|
25
|
+
const found = await hcl2json.getReferencesInExpression("expression.tf", expr);
|
|
26
|
+
refs.set(expr, found.map((r) => r.value));
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
refs.set(expr, []);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return refs;
|
|
33
|
+
}
|
|
34
|
+
/** Deep-merge hcl2json trees across files (resource/module/data/output/locals namespaces). */
|
|
35
|
+
function mergeTrees(into, next) {
|
|
36
|
+
for (const section of ["resource", "data"]) {
|
|
37
|
+
const src = next[section];
|
|
38
|
+
if (!src)
|
|
39
|
+
continue;
|
|
40
|
+
const dst = (into[section] ?? (into[section] = {}));
|
|
41
|
+
for (const [type, named] of Object.entries(src)) {
|
|
42
|
+
dst[type] = { ...(dst[type] ?? {}), ...named };
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (next.module)
|
|
46
|
+
into.module = { ...(into.module ?? {}), ...next.module };
|
|
47
|
+
// Outputs usually live in their own file (#1638) — merge them, or the graph
|
|
48
|
+
// never sees the estate's outputs.tf at all.
|
|
49
|
+
if (next.output)
|
|
50
|
+
into.output = { ...(into.output ?? {}), ...next.output };
|
|
51
|
+
// `locals` is an array of blocks, not a keyed namespace, so files concatenate
|
|
52
|
+
// rather than overwrite — a `locals` block in every .tf is idiomatic (#2324).
|
|
53
|
+
if (next.locals)
|
|
54
|
+
into.locals = [...(into.locals ?? []), ...next.locals];
|
|
55
|
+
}
|
|
56
|
+
/** List every `.tf` file directly under `dir` (non-recursive; matches Terraform's own module scoping). */
|
|
57
|
+
function listTfFiles(dir) {
|
|
58
|
+
return readdirSync(dir)
|
|
59
|
+
.filter((f) => f.endsWith(".tf"))
|
|
60
|
+
.map((f) => join(dir, f))
|
|
61
|
+
.sort();
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Parse a Terraform directory into a dependency graph. Reads only `.tf` unless
|
|
65
|
+
* `statePath` is given. Pure `.tf` estates parse fully; `count`/`for_each`
|
|
66
|
+
* blocks report a single instance and are flagged `hasDynamic`. With state, the
|
|
67
|
+
* instance counts become accurate (see `state.ts`).
|
|
68
|
+
*/
|
|
69
|
+
export async function parseTerraformDir(dir, opts = {}) {
|
|
70
|
+
const hcl2json = await loadHcl2json();
|
|
71
|
+
const files = listTfFiles(dir);
|
|
72
|
+
const merged = {};
|
|
73
|
+
for (const file of files) {
|
|
74
|
+
const tree = await hcl2json.parse(file, readFileSync(file, "utf-8"));
|
|
75
|
+
mergeTrees(merged, tree);
|
|
76
|
+
}
|
|
77
|
+
const graph = buildGraph(merged, await resolveExpressionRefs(hcl2json, merged));
|
|
78
|
+
if (opts.statePath)
|
|
79
|
+
applyStateCounts(graph, readStateInstanceCounts(opts.statePath));
|
|
80
|
+
return graph;
|
|
81
|
+
}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The AWS carve provider (#2016) — the seam's implementation over the AWS
|
|
3
|
+
* carve-out table (`../aws-resources.ts`), which stays the single source of
|
|
4
|
+
* truth for which AWS Terraform types chant can carve and how.
|
|
5
|
+
*
|
|
6
|
+
* chant AWS constructors take CloudFormation PascalCase properties (e.g.
|
|
7
|
+
* `new Bucket({ BucketName })`), while Terraform state uses the provider's
|
|
8
|
+
* snake_case attributes (`bucket`, `tags`). Attributes without a mapping are
|
|
9
|
+
* preserved in a reference comment, never dropped.
|
|
10
|
+
*
|
|
11
|
+
* Deferred outbound inputs (#998): an attribute whose value the Terraform
|
|
12
|
+
* source read from a survivor (`vpc_id = aws_vpc.main.id`) is not a fact of
|
|
13
|
+
* the carved resource — it is a deploy-time input. Those props are emitted as
|
|
14
|
+
* `params.<name>` references instead of frozen literals, with the state's
|
|
15
|
+
* resolved value as the declared default (see `carve-emit.ts`'s scaffold).
|
|
16
|
+
*/
|
|
17
|
+
import { AWS_CARVE_TYPES, AWS_LEXICON_IMPORT, awsCarveType, applyAwsMapper, applyAwsFold, unmappedFoldAttrs, } from "../aws-resources.js";
|
|
18
|
+
import { PARAMS_IMPORT, ParamRef, renderObject } from "../emit-source.js";
|
|
19
|
+
/**
|
|
20
|
+
* TF "sub-resource" types that inline into a parent resource rather than
|
|
21
|
+
* standing alone (TF splits config CloudFormation keeps in one resource).
|
|
22
|
+
* A sub-resource that shares its parent's name is folded into the parent's
|
|
23
|
+
* carve set: it is not ranked on its own, and its edge to the parent does not
|
|
24
|
+
* count as inbound boundary work — inlining it is free.
|
|
25
|
+
*/
|
|
26
|
+
const AWS_FOLDS_INTO = {
|
|
27
|
+
aws_s3_bucket_versioning: "aws_s3_bucket",
|
|
28
|
+
aws_s3_bucket_acl: "aws_s3_bucket",
|
|
29
|
+
aws_s3_bucket_policy: "aws_s3_bucket",
|
|
30
|
+
aws_s3_bucket_public_access_block: "aws_s3_bucket",
|
|
31
|
+
aws_s3_bucket_server_side_encryption_configuration: "aws_s3_bucket",
|
|
32
|
+
aws_s3_bucket_lifecycle_configuration: "aws_s3_bucket",
|
|
33
|
+
aws_s3_bucket_website_configuration: "aws_s3_bucket",
|
|
34
|
+
aws_s3_bucket_cors_configuration: "aws_s3_bucket",
|
|
35
|
+
aws_s3_bucket_logging: "aws_s3_bucket",
|
|
36
|
+
aws_s3_bucket_ownership_controls: "aws_s3_bucket",
|
|
37
|
+
aws_s3_bucket_notification: "aws_s3_bucket",
|
|
38
|
+
aws_s3_bucket_accelerate_configuration: "aws_s3_bucket",
|
|
39
|
+
aws_s3_bucket_request_payment_configuration: "aws_s3_bucket",
|
|
40
|
+
aws_s3_bucket_intelligent_tiering_configuration: "aws_s3_bucket",
|
|
41
|
+
aws_ecr_lifecycle_policy: "aws_ecr_repository",
|
|
42
|
+
aws_ecr_repository_policy: "aws_ecr_repository",
|
|
43
|
+
};
|
|
44
|
+
const AWS_TIERS = Object.fromEntries(AWS_CARVE_TYPES.map((t) => [t.tfType, { tier: t.tier, mapsTo: t.nativeType }]));
|
|
45
|
+
const AWS_IDENTITY_ATTRS = Object.fromEntries(AWS_CARVE_TYPES.filter((t) => t.identityAttr).map((t) => [t.tfType, t.identityAttr]));
|
|
46
|
+
/**
|
|
47
|
+
* Render chant source for a state-adopted resource. Emits the native
|
|
48
|
+
* constructor with mapped properties, plus a reference comment listing the
|
|
49
|
+
* Terraform attributes that were not mapped so nothing is silently dropped.
|
|
50
|
+
*
|
|
51
|
+
* A mapped attribute named by a `DeferredParam` renders as a `params.<name>`
|
|
52
|
+
* reference (a real chant build parameter) instead of the state literal —
|
|
53
|
+
* the value came from a survivor, so it stays overridable per build.
|
|
54
|
+
*
|
|
55
|
+
* `folded` carries the carve set's sub-resources (`aws_s3_bucket_versioning`
|
|
56
|
+
* and friends), read from the same state file. Their mappable attributes join
|
|
57
|
+
* the parent's props (#1637) — a fold that only announced itself and left the
|
|
58
|
+
* emitted resource without the versioning or public-access block the Terraform
|
|
59
|
+
* declared was a silent loss of configuration. A sub-resource's setting wins
|
|
60
|
+
* over the parent's own legacy in-state block: it is the one the config
|
|
61
|
+
* actually declares.
|
|
62
|
+
*/
|
|
63
|
+
function adoptAwsFromState(resource, params, folded) {
|
|
64
|
+
const entry = awsCarveType(resource.type);
|
|
65
|
+
if (!entry)
|
|
66
|
+
return null;
|
|
67
|
+
const { props, mappedKeys } = applyAwsMapper(entry, resource.attributes);
|
|
68
|
+
const contributions = [];
|
|
69
|
+
const foldedUnmapped = {};
|
|
70
|
+
for (const sub of folded) {
|
|
71
|
+
const address = `${sub.type}.${sub.name}`;
|
|
72
|
+
const fold = applyAwsFold(sub.type, sub.attributes);
|
|
73
|
+
// No fold mapping for this sub-resource type: it still carves with the
|
|
74
|
+
// parent, so report its attributes rather than dropping them on the floor.
|
|
75
|
+
const rest = fold ? fold.unmapped : unmappedFoldAttrs(sub.attributes);
|
|
76
|
+
if (fold)
|
|
77
|
+
Object.assign(props, fold.props);
|
|
78
|
+
if (Object.keys(rest).length)
|
|
79
|
+
foldedUnmapped[address] = rest;
|
|
80
|
+
contributions.push({ address, props: Object.keys(fold?.props ?? {}) });
|
|
81
|
+
}
|
|
82
|
+
// Substitute deferred inputs: only plain (untransformed) field mappings can
|
|
83
|
+
// carry a parameter reference — a transform ran against the literal at emit
|
|
84
|
+
// time and cannot re-run at build. Everything else keeps the state literal.
|
|
85
|
+
const parameterized = [];
|
|
86
|
+
for (const param of params) {
|
|
87
|
+
const spec = entry.fields[param.tfAttr];
|
|
88
|
+
if (typeof spec !== "string" || !(spec in props))
|
|
89
|
+
continue;
|
|
90
|
+
const type = typeof param.default === "number" ? "number" : typeof param.default === "boolean" ? "boolean" : "string";
|
|
91
|
+
props[spec] = new ParamRef(param.name, type);
|
|
92
|
+
parameterized.push(param.name);
|
|
93
|
+
}
|
|
94
|
+
const unmapped = {};
|
|
95
|
+
for (const [k, v] of Object.entries(resource.attributes)) {
|
|
96
|
+
if (!mappedKeys.includes(k))
|
|
97
|
+
unmapped[k] = v;
|
|
98
|
+
}
|
|
99
|
+
// A folded sub-resource's leftovers are keyed by its address, so the comment
|
|
100
|
+
// says which block a stray attribute came from.
|
|
101
|
+
for (const [address, attrs] of Object.entries(foldedUnmapped))
|
|
102
|
+
unmapped[address] = attrs;
|
|
103
|
+
const L = [];
|
|
104
|
+
L.push(`// Adopted from Terraform state: ${resource.type}.${resource.name} -> ${entry.nativeType}`);
|
|
105
|
+
L.push(`// Properties mapped from Terraform attributes (CloudFormation PascalCase).`);
|
|
106
|
+
for (const c of contributions) {
|
|
107
|
+
const into = c.props.length ? c.props.join(", ") : "nothing mappable — see the reference comment below";
|
|
108
|
+
L.push(`// Folded in ${c.address} -> ${into}`);
|
|
109
|
+
}
|
|
110
|
+
L.push(`import { ${entry.ctor} } from "${AWS_LEXICON_IMPORT}";`);
|
|
111
|
+
if (parameterized.length) {
|
|
112
|
+
L.push(`// Deferred deploy-time input(s) — declared in chant.config.ts's buildParams.`);
|
|
113
|
+
L.push(`import { params } from "${PARAMS_IMPORT}";`);
|
|
114
|
+
}
|
|
115
|
+
L.push("");
|
|
116
|
+
L.push(`export const ${resource.name} = new ${entry.ctor}(${renderObject(props, 2)});`);
|
|
117
|
+
if (Object.keys(unmapped).length) {
|
|
118
|
+
L.push("");
|
|
119
|
+
L.push("/* Unmapped Terraform attributes (reconcile to native props before building):");
|
|
120
|
+
L.push(JSON.stringify(unmapped, null, 2));
|
|
121
|
+
L.push("*/");
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
fileName: `${resource.name}.ts`,
|
|
125
|
+
content: L.join("\n") + "\n",
|
|
126
|
+
mapped: Object.keys(props).length > 0,
|
|
127
|
+
nativeType: entry.nativeType,
|
|
128
|
+
parameterized,
|
|
129
|
+
folded: contributions,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
export const awsCarveProvider = {
|
|
133
|
+
name: "aws",
|
|
134
|
+
tfTypePrefixes: ["aws_"],
|
|
135
|
+
lexicon: "aws",
|
|
136
|
+
tiers: AWS_TIERS,
|
|
137
|
+
identityAttrs: AWS_IDENTITY_ATTRS,
|
|
138
|
+
foldsInto: AWS_FOLDS_INTO,
|
|
139
|
+
// Every ranked AWS type is emittable: advise and emit derive from the one
|
|
140
|
+
// table, so there is no advise↔emit cliff to fall off.
|
|
141
|
+
emitTypes: AWS_CARVE_TYPES.map((t) => t.tfType),
|
|
142
|
+
adopt: adoptAwsFromState,
|
|
143
|
+
// The live import filters a CloudFormation stack's template, so the selector
|
|
144
|
+
// is the CFN type the carve table already records.
|
|
145
|
+
liveSelectorType: (tfType) => awsCarveType(tfType)?.nativeType,
|
|
146
|
+
};
|