@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
package/dist/yaml.js
ADDED
|
@@ -0,0 +1,459 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* YAML emitter and parser.
|
|
3
|
+
*
|
|
4
|
+
* The emitter writes the block-style YAML chant's serializers produce. The
|
|
5
|
+
* parser is a vendored js-yaml loader with chant's schema (#3006): YAML 1.2 core types,
|
|
6
|
+
* merge keys, `yes`/`no` booleans, and local tags such as `!reference` read
|
|
7
|
+
* as strings. `splitYAMLDocuments` splits a multi-document stream. Input the
|
|
8
|
+
* parser cannot read throws a `YAMLParseError` naming the line.
|
|
9
|
+
*/
|
|
10
|
+
import { FLOAT_TYPE, INT_TYPE, load, MAP_TYPE, NULL_TYPE, SEQ_TYPE, STR_TYPE, YAMLException, } from "./vendor/js-yaml-load.js";
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
// Emitter
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
/**
|
|
15
|
+
* Emit a YAML value with proper indentation.
|
|
16
|
+
*
|
|
17
|
+
* - Primitives render inline.
|
|
18
|
+
* - Arrays and objects render as block YAML, returning a string that starts
|
|
19
|
+
* with `\n` so the caller can append it after a key.
|
|
20
|
+
* - Tagged values `{ tag, value }` emit `!tag [...]` or `!tag scalar`.
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* An object's entries minus those whose value is `undefined`. An `undefined`
|
|
24
|
+
* property is "not supplied" in TypeScript (a declared-but-unset optional
|
|
25
|
+
* build parameter, `{ x: cond ? v : undefined }`), which `JSON.stringify`
|
|
26
|
+
* already omits; the YAML emitter must agree, or the same source ships
|
|
27
|
+
* `key: null` under `-o out.yaml` and no key at all under `-o out.json`. An
|
|
28
|
+
* explicit `null` is a value and is kept (chant #1371).
|
|
29
|
+
*/
|
|
30
|
+
function definedEntries(obj) {
|
|
31
|
+
return Object.entries(obj).filter(([, val]) => val !== undefined);
|
|
32
|
+
}
|
|
33
|
+
export function emitYAML(value, indent) {
|
|
34
|
+
const prefix = " ".repeat(indent);
|
|
35
|
+
// `undefined` only reaches here as a top-level value or an array element —
|
|
36
|
+
// an object entry whose value is `undefined` is dropped below, the same way
|
|
37
|
+
// `JSON.stringify` omits it. A bare `undefined` renders as `null` for the
|
|
38
|
+
// same reason `JSON.stringify([undefined])` is `[null]`: YAML has no way to
|
|
39
|
+
// say "absent" in a sequence slot.
|
|
40
|
+
if (value === null || value === undefined) {
|
|
41
|
+
return "null";
|
|
42
|
+
}
|
|
43
|
+
if (typeof value === "boolean") {
|
|
44
|
+
return value ? "true" : "false";
|
|
45
|
+
}
|
|
46
|
+
if (typeof value === "number") {
|
|
47
|
+
return String(value);
|
|
48
|
+
}
|
|
49
|
+
if (typeof value === "string") {
|
|
50
|
+
// Multiline strings use YAML literal block scalar (|)
|
|
51
|
+
if (value.includes("\n")) {
|
|
52
|
+
const lines = value.split("\n");
|
|
53
|
+
// Trim trailing empty line if present (common for template strings)
|
|
54
|
+
const trimmed = lines[lines.length - 1] === "" ? lines.slice(0, -1) : lines;
|
|
55
|
+
return "|\n" + trimmed.map((l) => `${prefix}${l}`).join("\n");
|
|
56
|
+
}
|
|
57
|
+
// Quote strings that could be misinterpreted
|
|
58
|
+
if (value === "" ||
|
|
59
|
+
value === "true" ||
|
|
60
|
+
value === "false" ||
|
|
61
|
+
value === "null" ||
|
|
62
|
+
value === "yes" ||
|
|
63
|
+
value === "no" ||
|
|
64
|
+
value.includes(": ") ||
|
|
65
|
+
value.includes("#") ||
|
|
66
|
+
value.startsWith("*") ||
|
|
67
|
+
value.startsWith("&") ||
|
|
68
|
+
value.startsWith("!") ||
|
|
69
|
+
value.startsWith("{") ||
|
|
70
|
+
value.startsWith("[") ||
|
|
71
|
+
value.startsWith("'") ||
|
|
72
|
+
value.startsWith('"') ||
|
|
73
|
+
value.startsWith("$") ||
|
|
74
|
+
/^\d/.test(value) ||
|
|
75
|
+
// What a YAML parser reads as something other than this string: an
|
|
76
|
+
// indicator that cannot start a plain scalar, a trailing colon, edge
|
|
77
|
+
// whitespace, a signed or dotted number, and the other spellings of
|
|
78
|
+
// booleans, null and the float constants (#3006).
|
|
79
|
+
/^[-?:](?:\s|$)|^[,\]}|>%@`]|:$|^\s|\s$|^[-+.]\d/.test(value) ||
|
|
80
|
+
/^(?:true|false|null|~|yes|no|[-+]?\.(?:inf|nan))$/i.test(value)) {
|
|
81
|
+
// Use single quotes, escaping internal single quotes
|
|
82
|
+
return `'${value.replace(/'/g, "''")}'`;
|
|
83
|
+
}
|
|
84
|
+
return value;
|
|
85
|
+
}
|
|
86
|
+
if (Array.isArray(value)) {
|
|
87
|
+
if (value.length === 0)
|
|
88
|
+
return "[]";
|
|
89
|
+
const lines = [];
|
|
90
|
+
for (const item of value) {
|
|
91
|
+
if (typeof item === "object" && item !== null && !Array.isArray(item)) {
|
|
92
|
+
// Object items in arrays
|
|
93
|
+
const entries = definedEntries(item);
|
|
94
|
+
if (entries.length > 0) {
|
|
95
|
+
const [firstKey, firstVal] = entries[0];
|
|
96
|
+
const firstEmitted = emitYAML(firstVal, indent + 2);
|
|
97
|
+
if (firstEmitted.startsWith("\n")) {
|
|
98
|
+
lines.push(`${prefix}- ${firstKey}:${firstEmitted}`);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
lines.push(`${prefix}- ${firstKey}: ${firstEmitted}`);
|
|
102
|
+
}
|
|
103
|
+
for (let i = 1; i < entries.length; i++) {
|
|
104
|
+
const [key, val] = entries[i];
|
|
105
|
+
const emitted = emitYAML(val, indent + 2);
|
|
106
|
+
if (emitted.startsWith("\n")) {
|
|
107
|
+
lines.push(`${prefix} ${key}:${emitted}`);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
lines.push(`${prefix} ${key}: ${emitted}`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
// An empty mapping is still an item: `egress: [{}]` allows all
|
|
116
|
+
// egress, and dropping it leaves an empty list.
|
|
117
|
+
lines.push(`${prefix}- {}`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
lines.push(`${prefix}- ${emitYAML(item, indent + 1).trimStart()}`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return "\n" + lines.join("\n");
|
|
125
|
+
}
|
|
126
|
+
if (typeof value === "object") {
|
|
127
|
+
const obj = value;
|
|
128
|
+
// Handle tagged values (e.g. { tag: "!reference", value: [...] })
|
|
129
|
+
if ("tag" in obj && "value" in obj && typeof obj.tag === "string") {
|
|
130
|
+
if (Array.isArray(obj.value)) {
|
|
131
|
+
return `${obj.tag} [${obj.value.map(String).join(", ")}]`;
|
|
132
|
+
}
|
|
133
|
+
return `${obj.tag} ${emitYAML(obj.value, indent)}`;
|
|
134
|
+
}
|
|
135
|
+
const entries = definedEntries(obj);
|
|
136
|
+
if (entries.length === 0)
|
|
137
|
+
return "{}";
|
|
138
|
+
const lines = [];
|
|
139
|
+
for (const [key, val] of entries) {
|
|
140
|
+
const emitted = emitYAML(val, indent + 1);
|
|
141
|
+
if (emitted.startsWith("\n")) {
|
|
142
|
+
lines.push(`${prefix}${key}:${emitted}`);
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
lines.push(`${prefix}${key}: ${emitted}`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return "\n" + lines.join("\n");
|
|
149
|
+
}
|
|
150
|
+
return String(value);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* `key: value` at column `indent * 2`, for a serializer that writes a
|
|
154
|
+
* document key by key. A block value follows the colon on the next line; an
|
|
155
|
+
* inline one (a scalar, `{}`, `[]`) needs a space after the colon, or
|
|
156
|
+
* `jobs:{}` is the plain scalar "jobs:{}" rather than a key (#3006).
|
|
157
|
+
*/
|
|
158
|
+
export function emitYAMLEntry(key, value, indent = 0) {
|
|
159
|
+
const emitted = emitYAML(value, indent + 1);
|
|
160
|
+
return `${" ".repeat(indent)}${key}:${emitted.startsWith("\n") ? "" : " "}${emitted}`;
|
|
161
|
+
}
|
|
162
|
+
// ---------------------------------------------------------------------------
|
|
163
|
+
// Parser
|
|
164
|
+
// ---------------------------------------------------------------------------
|
|
165
|
+
/**
|
|
166
|
+
* A document the parser cannot read. Its message and `line` name the line,
|
|
167
|
+
* so `chant import` can report "YAML line N: ..." instead of a stack trace.
|
|
168
|
+
*/
|
|
169
|
+
export class YAMLParseError extends Error {
|
|
170
|
+
constructor(line, message) {
|
|
171
|
+
super(`YAML line ${line}: ${message}`);
|
|
172
|
+
this.name = "YAMLParseError";
|
|
173
|
+
this.line = line;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
/** A document start (`---`) or end (`...`) marker, optionally followed by a comment. */
|
|
177
|
+
const DOCUMENT_MARKER = /^(?:---|\.\.\.)(?:[ \t]+#.*)?[ \t]*$/;
|
|
178
|
+
/**
|
|
179
|
+
* Booleans as YAML 1.2's core schema reads them, plus `yes` and `no`, which
|
|
180
|
+
* this parser has always read as booleans and its callers expect.
|
|
181
|
+
*/
|
|
182
|
+
const BOOL = {
|
|
183
|
+
tag: "tag:yaml.org,2002:bool",
|
|
184
|
+
kind: "scalar",
|
|
185
|
+
resolve: (data) => data !== null && /^(?:true|True|TRUE|false|False|FALSE|yes|no)$/.test(data),
|
|
186
|
+
construct: (data) => /^(?:true|True|TRUE|yes)$/.test(data),
|
|
187
|
+
};
|
|
188
|
+
/** A tagged value written back as text, the way it appeared: `!reference [.base, script]`. */
|
|
189
|
+
function flowText(value) {
|
|
190
|
+
if (Array.isArray(value))
|
|
191
|
+
return `[${value.map(flowText).join(", ")}]`;
|
|
192
|
+
if (typeof value === "object" && value !== null) {
|
|
193
|
+
return `{${Object.entries(value).map(([k, v]) => `${k}: ${flowText(v)}`).join(", ")}}`;
|
|
194
|
+
}
|
|
195
|
+
return String(value);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Local tags (`!reference`, `!Ref`, `!GetAtt`) on a scalar or a sequence read
|
|
199
|
+
* as the string `"<tag> <value>"`, as they always have: GitLab CI's
|
|
200
|
+
* `!reference [.base, script]` is the string `"!reference [.base, script]"`.
|
|
201
|
+
* A tag on a mapping has no such form and is an error.
|
|
202
|
+
*/
|
|
203
|
+
const TAGGED_SCALAR = {
|
|
204
|
+
tag: "!",
|
|
205
|
+
kind: "scalar",
|
|
206
|
+
multi: true,
|
|
207
|
+
construct: (data, tag) => (data === null || data === "" ? tag : `${tag} ${data}`),
|
|
208
|
+
};
|
|
209
|
+
const TAGGED_SEQUENCE = {
|
|
210
|
+
tag: "!",
|
|
211
|
+
kind: "sequence",
|
|
212
|
+
multi: true,
|
|
213
|
+
construct: (data, tag) => `${tag} ${flowText(data ?? [])}`,
|
|
214
|
+
};
|
|
215
|
+
/** The merge key `<<`, as js-yaml's own merge type reads it. */
|
|
216
|
+
const MERGE = {
|
|
217
|
+
tag: "tag:yaml.org,2002:merge",
|
|
218
|
+
kind: "scalar",
|
|
219
|
+
resolve: (data) => data === "<<" || data === null,
|
|
220
|
+
};
|
|
221
|
+
/**
|
|
222
|
+
* YAML 1.2's core schema (no timestamps, so a date stays a string) with merge
|
|
223
|
+
* keys, `yes`/`no` booleans and local tags read as strings.
|
|
224
|
+
*/
|
|
225
|
+
const SCHEMA = {
|
|
226
|
+
implicit: [NULL_TYPE, BOOL, INT_TYPE, FLOAT_TYPE, MERGE],
|
|
227
|
+
explicit: [STR_TYPE, SEQ_TYPE, MAP_TYPE, TAGGED_SCALAR, TAGGED_SEQUENCE],
|
|
228
|
+
};
|
|
229
|
+
/**
|
|
230
|
+
* Give every alias its own copy of the anchored value. js-yaml shares one
|
|
231
|
+
* object between an anchor and its aliases, so a caller editing the alias
|
|
232
|
+
* would edit the anchor too.
|
|
233
|
+
*/
|
|
234
|
+
function unshareAliases(value, seen = new Set()) {
|
|
235
|
+
if (typeof value !== "object" || value === null)
|
|
236
|
+
return value;
|
|
237
|
+
if (seen.has(value))
|
|
238
|
+
return unshareAliases(structuredClone(value), seen);
|
|
239
|
+
seen.add(value);
|
|
240
|
+
if (Array.isArray(value)) {
|
|
241
|
+
for (let i = 0; i < value.length; i++)
|
|
242
|
+
value[i] = unshareAliases(value[i], seen);
|
|
243
|
+
}
|
|
244
|
+
else {
|
|
245
|
+
const obj = value;
|
|
246
|
+
for (const key of Object.keys(obj))
|
|
247
|
+
obj[key] = unshareAliases(obj[key], seen);
|
|
248
|
+
}
|
|
249
|
+
return value;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* The 1-based line to report for a js-yaml error. js-yaml marks where it
|
|
253
|
+
* gave up, which for a stray line of text above a key is the key's line:
|
|
254
|
+
* `a: 1\njust text\nb: 2` fails at `b: 2`, reading `just text b` as one
|
|
255
|
+
* multiline key. Report the line where that key starts instead, the text
|
|
256
|
+
* that is not a key.
|
|
257
|
+
*/
|
|
258
|
+
function errorLine(lines, err) {
|
|
259
|
+
let line = err.mark?.line ?? 0;
|
|
260
|
+
if (/multiline key may not be an implicit key/.test(err.reason)) {
|
|
261
|
+
const indent = lines[line]?.search(/\S/) ?? -1;
|
|
262
|
+
for (let k = line - 1; k >= 0; k--) {
|
|
263
|
+
const prev = lines[k];
|
|
264
|
+
if (prev.trim() === "" || prev.trim().startsWith("#"))
|
|
265
|
+
continue;
|
|
266
|
+
if (prev.search(/\S/) !== indent || /:(?:\s|$)/.test(prev) || /^\s*-(?:\s|$)/.test(prev))
|
|
267
|
+
break;
|
|
268
|
+
line = k;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
return line + 1;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Read one YAML document with js-yaml (#3006).
|
|
275
|
+
*
|
|
276
|
+
* Kept from the line parser this replaced: `---` and `...` lines are skipped
|
|
277
|
+
* (so a stream reads as one document, as it always has), duplicate keys take
|
|
278
|
+
* the last value, and a document that is not a mapping or a sequence is a
|
|
279
|
+
* {@link YAMLParseError}, as is anything js-yaml rejects. An empty document is
|
|
280
|
+
* `{}`.
|
|
281
|
+
*/
|
|
282
|
+
function loadDocument(content) {
|
|
283
|
+
const text = content
|
|
284
|
+
.replace(/\r\n?/g, "\n")
|
|
285
|
+
.split("\n")
|
|
286
|
+
.map((line) => (DOCUMENT_MARKER.test(line) ? "" : line))
|
|
287
|
+
.join("\n");
|
|
288
|
+
let value;
|
|
289
|
+
try {
|
|
290
|
+
value = load(text, SCHEMA);
|
|
291
|
+
}
|
|
292
|
+
catch (err) {
|
|
293
|
+
if (!(err instanceof YAMLException))
|
|
294
|
+
throw err;
|
|
295
|
+
const line = errorLine(text.split("\n"), err);
|
|
296
|
+
const tag = err.reason.match(/^unknown tag !<(![^>]*)>/)?.[1];
|
|
297
|
+
throw new YAMLParseError(line, tag ? `the tag ${JSON.stringify(tag)} on a mapping is not supported` : err.reason);
|
|
298
|
+
}
|
|
299
|
+
if (value === undefined || value === null)
|
|
300
|
+
return {};
|
|
301
|
+
if (typeof value !== "object") {
|
|
302
|
+
const line = text.split("\n").findIndex((l) => l.trim() !== "" && !l.trim().startsWith("#")) + 1;
|
|
303
|
+
throw new YAMLParseError(line, `expected a mapping or a sequence, found the scalar ${JSON.stringify(value)}`);
|
|
304
|
+
}
|
|
305
|
+
return /[&]/.test(text) ? unshareAliases(value) : value;
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Parse a YAML document (or JSON document) into a plain object.
|
|
309
|
+
*
|
|
310
|
+
* Tries `JSON.parse` first, then js-yaml (#3006). A top-level sequence reads
|
|
311
|
+
* as `{}`, since callers rely on getting a mapping back; use
|
|
312
|
+
* {@link parseYAMLDocument} for the list. Throws {@link YAMLParseError} with
|
|
313
|
+
* the line number on input it cannot read.
|
|
314
|
+
*/
|
|
315
|
+
export function parseYAML(content) {
|
|
316
|
+
try {
|
|
317
|
+
return JSON.parse(content);
|
|
318
|
+
}
|
|
319
|
+
catch {
|
|
320
|
+
// Fall through to YAML parsing
|
|
321
|
+
}
|
|
322
|
+
const value = loadDocument(content);
|
|
323
|
+
return Array.isArray(value) ? {} : value;
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Parse one YAML (or JSON) document whose top level may be a sequence
|
|
327
|
+
* (#2965). {@link parseYAML} returns `{}` for a file like `- a\n- b`; this
|
|
328
|
+
* returns the list.
|
|
329
|
+
*/
|
|
330
|
+
export function parseYAMLDocument(content) {
|
|
331
|
+
try {
|
|
332
|
+
return JSON.parse(content);
|
|
333
|
+
}
|
|
334
|
+
catch {
|
|
335
|
+
// Fall through to YAML parsing
|
|
336
|
+
}
|
|
337
|
+
return loadDocument(content);
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Split a YAML stream into its documents (#2965). A line holding only `---`
|
|
341
|
+
* starts a document and a line holding only `...` ends one; either may carry
|
|
342
|
+
* a trailing `# comment`. Documents that are empty or hold only comments are
|
|
343
|
+
* dropped. The text of each document is returned unparsed, with `\r\n`
|
|
344
|
+
* normalized to `\n`.
|
|
345
|
+
*/
|
|
346
|
+
export function splitYAMLDocuments(content) {
|
|
347
|
+
const documents = [];
|
|
348
|
+
let current = [];
|
|
349
|
+
const flush = () => {
|
|
350
|
+
const text = current.join("\n");
|
|
351
|
+
if (text.replace(/#[^\n]*/g, "").trim() !== "")
|
|
352
|
+
documents.push(text);
|
|
353
|
+
current = [];
|
|
354
|
+
};
|
|
355
|
+
for (const line of content.replace(/\r\n?/g, "\n").split("\n")) {
|
|
356
|
+
if (DOCUMENT_MARKER.test(line))
|
|
357
|
+
flush();
|
|
358
|
+
else
|
|
359
|
+
current.push(line);
|
|
360
|
+
}
|
|
361
|
+
flush();
|
|
362
|
+
return documents;
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Coerce a scalar string to a typed value.
|
|
366
|
+
*/
|
|
367
|
+
export function parseScalar(value) {
|
|
368
|
+
if (value === "" || value === "~" || value === "null")
|
|
369
|
+
return null;
|
|
370
|
+
if (value === "true" || value === "yes")
|
|
371
|
+
return true;
|
|
372
|
+
if (value === "false" || value === "no")
|
|
373
|
+
return false;
|
|
374
|
+
// Quoted scalars carry escapes, and stripping the quotes is only half the
|
|
375
|
+
// job: a double-quoted `\n` is a newline, a single-quoted `''` is one
|
|
376
|
+
// quote. Dropping that step leaves the escape sequence in the value as
|
|
377
|
+
// literal characters, which is how a multiline `setup_script` reached a
|
|
378
|
+
// shell as one line of `set -e\nsudo ...` (#1860).
|
|
379
|
+
if (value.length >= 2) {
|
|
380
|
+
if (value.startsWith('"') && value.endsWith('"')) {
|
|
381
|
+
const unescaped = unescapeDoubleQuoted(value.slice(1, -1));
|
|
382
|
+
// `null` means the body held a bare `"`, so this was never a single
|
|
383
|
+
// well-formed scalar (`"a" + "b"`). Keep the old behaviour there.
|
|
384
|
+
return unescaped ?? value.slice(1, -1);
|
|
385
|
+
}
|
|
386
|
+
if (value.startsWith("'") && value.endsWith("'")) {
|
|
387
|
+
return value.slice(1, -1).replace(/''/g, "'");
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
// Number
|
|
391
|
+
const num = Number(value);
|
|
392
|
+
if (!isNaN(num) && value !== "")
|
|
393
|
+
return num;
|
|
394
|
+
return value;
|
|
395
|
+
}
|
|
396
|
+
/** YAML double-quoted escapes, per the spec's escape table. */
|
|
397
|
+
const DQ_ESCAPES = {
|
|
398
|
+
"0": "\0",
|
|
399
|
+
a: "\x07",
|
|
400
|
+
b: "\b",
|
|
401
|
+
t: "\t",
|
|
402
|
+
"\t": "\t",
|
|
403
|
+
n: "\n",
|
|
404
|
+
v: "\v",
|
|
405
|
+
f: "\f",
|
|
406
|
+
r: "\r",
|
|
407
|
+
e: "\x1b",
|
|
408
|
+
" ": " ",
|
|
409
|
+
'"': '"',
|
|
410
|
+
"/": "/",
|
|
411
|
+
"\\": "\\",
|
|
412
|
+
N: "\x85",
|
|
413
|
+
_: "\xa0",
|
|
414
|
+
L: "\u2028",
|
|
415
|
+
P: "\u2029",
|
|
416
|
+
};
|
|
417
|
+
/**
|
|
418
|
+
* Decode the body of a double-quoted YAML scalar.
|
|
419
|
+
*
|
|
420
|
+
* Returns `null` when the body holds an unescaped `"`, which means the caller
|
|
421
|
+
* was not looking at one quoted scalar after all.
|
|
422
|
+
*/
|
|
423
|
+
function unescapeDoubleQuoted(body) {
|
|
424
|
+
let out = "";
|
|
425
|
+
for (let i = 0; i < body.length; i++) {
|
|
426
|
+
const ch = body[i];
|
|
427
|
+
if (ch === '"')
|
|
428
|
+
return null;
|
|
429
|
+
if (ch !== "\\") {
|
|
430
|
+
out += ch;
|
|
431
|
+
continue;
|
|
432
|
+
}
|
|
433
|
+
const esc = body[++i];
|
|
434
|
+
if (esc === undefined)
|
|
435
|
+
return null;
|
|
436
|
+
// \xXX, \uXXXX, \UXXXXXXXX
|
|
437
|
+
const width = esc === "x" ? 2 : esc === "u" ? 4 : esc === "U" ? 8 : 0;
|
|
438
|
+
if (width > 0) {
|
|
439
|
+
const hex = body.slice(i + 1, i + 1 + width);
|
|
440
|
+
if (hex.length < width || !/^[0-9a-fA-F]+$/.test(hex))
|
|
441
|
+
return null;
|
|
442
|
+
out += String.fromCodePoint(parseInt(hex, 16));
|
|
443
|
+
i += width;
|
|
444
|
+
continue;
|
|
445
|
+
}
|
|
446
|
+
// An escaped line break is a line continuation: it and the following
|
|
447
|
+
// indentation fold away to nothing.
|
|
448
|
+
if (esc === "\n") {
|
|
449
|
+
while (body[i + 1] === " " || body[i + 1] === "\t")
|
|
450
|
+
i++;
|
|
451
|
+
continue;
|
|
452
|
+
}
|
|
453
|
+
const mapped = DQ_ESCAPES[esc];
|
|
454
|
+
if (mapped === undefined)
|
|
455
|
+
return null;
|
|
456
|
+
out += mapped;
|
|
457
|
+
}
|
|
458
|
+
return out;
|
|
459
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intentius/chant",
|
|
3
|
-
"version": "0.124.
|
|
3
|
+
"version": "0.124.14",
|
|
4
4
|
"description": "Declarative infrastructure-as-code toolkit — TypeScript on Node.js",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://intentius.io/chant",
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
}
|
|
116
116
|
},
|
|
117
117
|
"scripts": {
|
|
118
|
-
"build": "../../scripts/tsc7.sh -p tsconfig.build.json && tsc-alias -p tsconfig.build.json &&
|
|
118
|
+
"build": "../../scripts/tsc7.sh -p tsconfig.build.json --sourceMap false && tsc-alias -p tsconfig.build.json && node scripts/copy-assets.mjs",
|
|
119
119
|
"prepack": "npm run build"
|
|
120
120
|
},
|
|
121
121
|
"dependencies": {
|
|
@@ -23,6 +23,7 @@ import { existsSync, readFileSync } from "fs";
|
|
|
23
23
|
import { isAbsolute, join, resolve } from "path";
|
|
24
24
|
import { pathToFileURL } from "url";
|
|
25
25
|
import { isLexiconPlugin, type LexiconPlugin } from "../../lexicon";
|
|
26
|
+
import { ensureTypeScriptLoader } from "../../ts-loader";
|
|
26
27
|
|
|
27
28
|
export interface LoadedLexicon {
|
|
28
29
|
/** The plugin, when the package exported one. */
|
|
@@ -76,6 +77,7 @@ export async function loadLexiconFromDir(dir: string): Promise<LoadedLexicon> {
|
|
|
76
77
|
|
|
77
78
|
let mod: Record<string, unknown>;
|
|
78
79
|
try {
|
|
80
|
+
ensureTypeScriptLoader();
|
|
79
81
|
mod = (await import(pathToFileURL(entry).href)) as Record<string, unknown>;
|
|
80
82
|
} catch (error) {
|
|
81
83
|
return { entry, error: `import failed: ${error instanceof Error ? error.message : String(error)}` };
|
package/src/cli/commands/lint.ts
CHANGED
|
@@ -32,6 +32,8 @@ import { applyConfiguredPreset, applyConfiguredSeverity, resolvePresetIds } from
|
|
|
32
32
|
import { applyInlineSuppressions } from "../../lint/suppressions";
|
|
33
33
|
import { getProvenance } from "../../provenance";
|
|
34
34
|
import { runLexiconPostSynthChecks } from "./build";
|
|
35
|
+
import { armSandboxPolicyExecution, runProjectPolicies } from "../../lint/policy-sandbox";
|
|
36
|
+
import { ensureTypeScriptLoader } from "../../ts-loader";
|
|
35
37
|
|
|
36
38
|
// Import config loader
|
|
37
39
|
import { loadConfig, resolveRulesForFile, resolveConfiguredSeverity, findProjectRoot } from "../../lint/config";
|
|
@@ -89,6 +91,7 @@ export async function loadPluginRules(
|
|
|
89
91
|
const resolved = resolve(configDir, pluginPath);
|
|
90
92
|
let mod: Record<string, unknown>;
|
|
91
93
|
try {
|
|
94
|
+
ensureTypeScriptLoader();
|
|
92
95
|
mod = await import(resolved);
|
|
93
96
|
} catch (err) {
|
|
94
97
|
throw new Error(
|
|
@@ -591,6 +594,7 @@ async function runOpCheckDiagnostics(
|
|
|
591
594
|
const fileByOpName = new Map<string, string>();
|
|
592
595
|
for (const filePath of opFiles) {
|
|
593
596
|
try {
|
|
597
|
+
ensureTypeScriptLoader();
|
|
594
598
|
const mod: unknown = await import(filePath);
|
|
595
599
|
const entity = (mod as { default?: unknown }).default;
|
|
596
600
|
if (!entity || typeof entity !== "object") continue;
|
|
@@ -665,9 +669,15 @@ async function runOpCheckDiagnostics(
|
|
|
665
669
|
* builds `infraPath`, the target the caller asked to lint, never the project
|
|
666
670
|
* root above it, so `chant lint <dir>` costs a build of `<dir>` and nothing
|
|
667
671
|
* more (the same scoping {@link runOpCheckDiagnostics} documents). It is
|
|
668
|
-
* skipped outright when no loaded lexicon ships post-synth checks
|
|
669
|
-
*
|
|
670
|
-
* all.
|
|
672
|
+
* skipped outright when no loaded lexicon ships post-synth checks and the
|
|
673
|
+
* project declares no `lint.policies`, which keeps a project with no lexicon,
|
|
674
|
+
* and every core-only fixture, from building at all.
|
|
675
|
+
*
|
|
676
|
+
* The project's `lint.policies` run over the same build after the lexicons'
|
|
677
|
+
* checks (#3870), with every lexicon's output and the env, as `chant build`
|
|
678
|
+
* runs them, and sandboxed when the build is. `lint.rules` applies to their
|
|
679
|
+
* ids; a policy that does not load is reported under
|
|
680
|
+
* {@link BUILD_FAILURE_RULE_ID}.
|
|
671
681
|
*
|
|
672
682
|
* A target that does not build reports each build error under
|
|
673
683
|
* {@link BUILD_FAILURE_RULE_ID} and skips the checks. Findings go through
|
|
@@ -686,10 +696,10 @@ async function runLexiconPostSynthDiagnostics(
|
|
|
686
696
|
const diagnostics: LintDiagnostic[] = [];
|
|
687
697
|
const suppressed: Array<LintDiagnostic & { reason?: string }> = [];
|
|
688
698
|
const withChecks = plugins.filter((plugin) => (plugin.postSynthChecks?.() ?? []).length > 0);
|
|
689
|
-
if (withChecks.length === 0) return { diagnostics, suppressed };
|
|
690
|
-
|
|
691
699
|
const projectRoot = findProjectRoot(infraPath);
|
|
692
700
|
const lintConfig = loadConfig(projectRoot);
|
|
701
|
+
if (withChecks.length === 0 && (lintConfig.policies ?? []).length === 0) return { diagnostics, suppressed };
|
|
702
|
+
|
|
693
703
|
// Where a finding that names no declared entity is reported: the config the
|
|
694
704
|
// build loads once it is known (past a lint-only fragment), else the nearest.
|
|
695
705
|
let fallbackFile = findProjectConfig(projectRoot).configPath ?? projectRoot;
|
|
@@ -707,6 +717,7 @@ async function runLexiconPostSynthDiagnostics(
|
|
|
707
717
|
let telemetry: Awaited<ReturnType<typeof resolveTelemetryAttribution>>;
|
|
708
718
|
let configDir = infraPath;
|
|
709
719
|
let loadedConfig: Record<string, unknown> | undefined;
|
|
720
|
+
let policies: readonly string[] = [];
|
|
710
721
|
try {
|
|
711
722
|
const loaded = await loadChantConfigUpward(infraPath);
|
|
712
723
|
const config = loaded.config;
|
|
@@ -720,6 +731,10 @@ async function runLexiconPostSynthDiagnostics(
|
|
|
720
731
|
// fragment with no `buildParams` (a `src/chant.config.json`).
|
|
721
732
|
const params = buildParams ?? resolveBuildParams(config.buildParams, { env: process.env }).provenance;
|
|
722
733
|
env = resolveOwnershipEnv(config, params);
|
|
734
|
+
policies = config.lint?.policies ?? [];
|
|
735
|
+
// #3870: a sandboxed build sandboxes the policies too, as `chant build` arms it.
|
|
736
|
+
const modes = resolveBuildModes(config, { sandbox });
|
|
737
|
+
if (modes.sandbox && policies.length > 0) armSandboxPolicyExecution();
|
|
723
738
|
telemetry = await resolveTelemetryAttribution(configDir, config as unknown as Record<string, unknown>, env);
|
|
724
739
|
// Every lexicon the lint loaded, as `chant build` serializes with every
|
|
725
740
|
// lexicon it loaded: a check may read another lexicon's entities, and the
|
|
@@ -732,7 +747,7 @@ async function runLexiconPostSynthDiagnostics(
|
|
|
732
747
|
config,
|
|
733
748
|
configDir,
|
|
734
749
|
plugins,
|
|
735
|
-
modes
|
|
750
|
+
modes,
|
|
736
751
|
ownership: resolveOwnershipMarker(config, params),
|
|
737
752
|
buildParams: params,
|
|
738
753
|
telemetry,
|
|
@@ -781,6 +796,21 @@ async function runLexiconPostSynthDiagnostics(
|
|
|
781
796
|
}
|
|
782
797
|
}
|
|
783
798
|
|
|
799
|
+
// #3870: the project's `lint.policies`, over the same build, as `chant
|
|
800
|
+
// build` runs them: every lexicon's output at once, with the env, and
|
|
801
|
+
// `lint.rules` applied to their ids.
|
|
802
|
+
if (policies.length > 0) {
|
|
803
|
+
let raw: Awaited<ReturnType<typeof runProjectPolicies>>;
|
|
804
|
+
try {
|
|
805
|
+
raw = await runProjectPolicies({ policies, configDir, buildResult: result, env });
|
|
806
|
+
} catch (err) {
|
|
807
|
+
diagnostics.push(buildFailure(err instanceof Error ? err.message : String(err)));
|
|
808
|
+
return { diagnostics, suppressed };
|
|
809
|
+
}
|
|
810
|
+
const configured = applyConfiguredSeverity(raw, lintConfig.rules);
|
|
811
|
+
for (const d of configured.diagnostics) diagnostics.push(toLint(d));
|
|
812
|
+
}
|
|
813
|
+
|
|
784
814
|
return { diagnostics, suppressed };
|
|
785
815
|
}
|
|
786
816
|
|
|
@@ -12,6 +12,7 @@ import { formatError, formatInfo } from "../format";
|
|
|
12
12
|
import { formatSarif } from "../reporters/stylish";
|
|
13
13
|
import type { LexiconPlugin } from "../../lexicon";
|
|
14
14
|
import type { LintRule, LintDiagnostic } from "../../lint/rule";
|
|
15
|
+
import { ensureTypeScriptLoader } from "../../ts-loader";
|
|
15
16
|
|
|
16
17
|
export interface MigrateCliOpts {
|
|
17
18
|
sourceFile: string;
|
|
@@ -235,6 +236,7 @@ async function loadMigrationRules(targetLexicon: string): Promise<LintRule[]> {
|
|
|
235
236
|
// lexicons ship their own migrate paths.
|
|
236
237
|
if (targetLexicon === "gitlab") {
|
|
237
238
|
try {
|
|
239
|
+
ensureTypeScriptLoader();
|
|
238
240
|
const mod = await import("@intentius/chant-lexicon-gitlab/migrate/from-github/rules");
|
|
239
241
|
return (mod as { MIGRATION_RULES: LintRule[] }).MIGRATION_RULES;
|
|
240
242
|
} catch {
|