@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,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rule documentation auto-generation.
|
|
3
|
+
*
|
|
4
|
+
* Generates MDX pages from a RuleEntry registry:
|
|
5
|
+
* - A catalog page with all rules grouped by category
|
|
6
|
+
* - Per-rule detail pages with configuration examples and disable syntax
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Generate a rule catalog MDX page with all rules grouped by category.
|
|
10
|
+
*/
|
|
11
|
+
export function generateRuleCatalog(entries, displayName = "chant") {
|
|
12
|
+
const lines = [
|
|
13
|
+
"---",
|
|
14
|
+
`title: "Rule Reference"`,
|
|
15
|
+
`description: "Complete reference of all lint rules and post-synth checks"`,
|
|
16
|
+
"---",
|
|
17
|
+
"",
|
|
18
|
+
`This page lists all **${entries.length}** rules available in ${displayName}.`,
|
|
19
|
+
"",
|
|
20
|
+
];
|
|
21
|
+
// Group by category
|
|
22
|
+
const byCategory = new Map();
|
|
23
|
+
for (const entry of entries) {
|
|
24
|
+
const cat = entry.category;
|
|
25
|
+
const existing = byCategory.get(cat) ?? [];
|
|
26
|
+
existing.push(entry);
|
|
27
|
+
byCategory.set(cat, existing);
|
|
28
|
+
}
|
|
29
|
+
// Render each category
|
|
30
|
+
const categoryOrder = ["correctness", "security", "style", "performance"];
|
|
31
|
+
const sortedCategories = [...byCategory.keys()].sort((a, b) => (categoryOrder.indexOf(a) ?? 99) - (categoryOrder.indexOf(b) ?? 99));
|
|
32
|
+
for (const cat of sortedCategories) {
|
|
33
|
+
const catEntries = byCategory.get(cat);
|
|
34
|
+
const title = cat.charAt(0).toUpperCase() + cat.slice(1);
|
|
35
|
+
lines.push(`## ${title}`, "", "| ID | Description | Severity | Phase | Fix |", "|----|-------------|----------|-------|-----|");
|
|
36
|
+
for (const entry of catEntries.sort((a, b) => a.id.localeCompare(b.id))) {
|
|
37
|
+
const fix = entry.hasAutoFix ? "Yes" : "";
|
|
38
|
+
const link = entry.helpUri
|
|
39
|
+
? `[\`${entry.id}\`](${entry.helpUri})`
|
|
40
|
+
: `\`${entry.id}\``;
|
|
41
|
+
lines.push(`| ${link} | ${entry.description} | ${entry.defaultSeverity} | ${entry.phase} | ${fix} |`);
|
|
42
|
+
}
|
|
43
|
+
lines.push("");
|
|
44
|
+
}
|
|
45
|
+
return lines.join("\n");
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Generate a per-rule detail MDX page.
|
|
49
|
+
*/
|
|
50
|
+
export function generateRuleDetailPage(entry) {
|
|
51
|
+
const lines = [
|
|
52
|
+
"---",
|
|
53
|
+
`title: "${entry.id}: ${entry.description}"`,
|
|
54
|
+
`description: "${entry.description}"`,
|
|
55
|
+
"---",
|
|
56
|
+
"",
|
|
57
|
+
`# ${entry.id}`,
|
|
58
|
+
"",
|
|
59
|
+
entry.description,
|
|
60
|
+
"",
|
|
61
|
+
"| Property | Value |",
|
|
62
|
+
"|----------|-------|",
|
|
63
|
+
`| **ID** | \`${entry.id}\` |`,
|
|
64
|
+
`| **Severity** | ${entry.defaultSeverity} |`,
|
|
65
|
+
`| **Category** | ${entry.category} |`,
|
|
66
|
+
`| **Phase** | ${entry.phase} |`,
|
|
67
|
+
`| **Source** | ${entry.source} |`,
|
|
68
|
+
`| **Auto-fix** | ${entry.hasAutoFix ? "Yes" : "No"} |`,
|
|
69
|
+
"",
|
|
70
|
+
];
|
|
71
|
+
// Configuration example
|
|
72
|
+
lines.push("## Configuration", "", "Override severity in your `chant.config.ts`:", "", "```ts", "// chant.config.ts", `rules: {`, ` "${entry.id}": "warning", // or "error", "info", "off"`, `}`, "```", "");
|
|
73
|
+
// Disable syntax
|
|
74
|
+
lines.push("## Disabling", "", "Suppress this rule with inline comments:", "", "```ts", `// chant-disable ${entry.id}`, `// ... entire file suppressed for ${entry.id}`, "", `const x = 1; // chant-disable-line ${entry.id}`, "", `// chant-disable-next-line ${entry.id} -- reason for suppression`, `const y = 2;`, "```", "");
|
|
75
|
+
return lines.join("\n");
|
|
76
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Section content generators for lexicon documentation pages.
|
|
3
|
+
*
|
|
4
|
+
* Each function produces a complete MDX page string with frontmatter.
|
|
5
|
+
*/
|
|
6
|
+
import { escapeMdx } from "./docs-file-markers.js";
|
|
7
|
+
import { intrinsicFolds } from "../lexicon.js";
|
|
8
|
+
export function generateOverview(config, manifest, resources, properties, serviceGroups, rules) {
|
|
9
|
+
const lines = [
|
|
10
|
+
"---",
|
|
11
|
+
`title: "${config.displayName}"`,
|
|
12
|
+
`description: "${config.description}"`,
|
|
13
|
+
"---",
|
|
14
|
+
"",
|
|
15
|
+
config.overview ?? `Reference documentation for the **${config.displayName}** lexicon.`,
|
|
16
|
+
"",
|
|
17
|
+
"## At a Glance",
|
|
18
|
+
"",
|
|
19
|
+
`| Metric | Count |`,
|
|
20
|
+
`|--------|-------|`,
|
|
21
|
+
`| Resources | ${resources.size} |`,
|
|
22
|
+
`| Property types | ${properties.size} |`,
|
|
23
|
+
`| Services | ${serviceGroups.size} |`,
|
|
24
|
+
`| Intrinsic functions | ${manifest.intrinsics?.length ?? 0} |`,
|
|
25
|
+
`| Pseudo-parameters | ${Object.keys(manifest.pseudoParameters ?? {}).length} |`,
|
|
26
|
+
`| Lint rules | ${rules.length} |`,
|
|
27
|
+
"",
|
|
28
|
+
`**Lexicon version:** ${manifest.version} `,
|
|
29
|
+
`**Namespace:** \`${manifest.namespace ?? manifest.name}\``,
|
|
30
|
+
"",
|
|
31
|
+
];
|
|
32
|
+
const suppress = new Set(config.suppressPages ?? []);
|
|
33
|
+
if (!suppress.has("intrinsics") && manifest.intrinsics && manifest.intrinsics.length > 0) {
|
|
34
|
+
lines.push(`- [Intrinsic Functions](./intrinsics) — ${manifest.intrinsics.length} built-in functions`);
|
|
35
|
+
}
|
|
36
|
+
if (!suppress.has("pseudo-parameters") &&
|
|
37
|
+
manifest.pseudoParameters &&
|
|
38
|
+
Object.keys(manifest.pseudoParameters).length > 0) {
|
|
39
|
+
lines.push(`- [Pseudo-Parameters](./pseudo-parameters) — ${Object.keys(manifest.pseudoParameters).length} pseudo-parameters`);
|
|
40
|
+
}
|
|
41
|
+
// Same reasoning as the sidebar's rules entry: link the complete table on
|
|
42
|
+
// every lexicon, under the label the sidebar uses, whether or not a prose
|
|
43
|
+
// `lint-rules` page also exists.
|
|
44
|
+
if (!suppress.has("rules") && rules.length > 0) {
|
|
45
|
+
lines.push(`- [All Rules](./rules) — ${rules.length} rules`);
|
|
46
|
+
}
|
|
47
|
+
if (!suppress.has("serialization")) {
|
|
48
|
+
lines.push(`- [Serialization](./serialization) — output format details`);
|
|
49
|
+
}
|
|
50
|
+
if (config.extraSections) {
|
|
51
|
+
for (const section of config.extraSections) {
|
|
52
|
+
lines.push("", `## ${section.title}`, "", section.content);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
lines.push("");
|
|
56
|
+
return lines.join("\n");
|
|
57
|
+
}
|
|
58
|
+
export function generateIntrinsics(config, manifest) {
|
|
59
|
+
const intrinsics = manifest.intrinsics;
|
|
60
|
+
const lines = [
|
|
61
|
+
"---",
|
|
62
|
+
`title: "Intrinsic Functions"`,
|
|
63
|
+
`description: "Built-in intrinsic functions for the ${config.displayName} lexicon"`,
|
|
64
|
+
"---",
|
|
65
|
+
"",
|
|
66
|
+
`The ${config.displayName} lexicon provides **${intrinsics.length}** intrinsic functions.`,
|
|
67
|
+
"",
|
|
68
|
+
`**Tag?** shows how an intrinsic is authored: a genuine tagged template (\`Sub\\\`...\\\`\`) or a plain function call (\`Ref(...)\`). **Folds?** shows whether [folding](/chant/concepts/typescript-as-data/#folded-vs-run) — the default \`chant build\` path — can reduce a use of this intrinsic today, without running the file — generated directly from this lexicon's registration, not restated by hand. A tagged template folds once it is registered. A plain call folds only where this lexicon has opted that intrinsic in one at a time (\`foldsAsCall\`), so a \`No\` in this column means this intrinsic has not been opted in, not that calls in general cannot fold.`,
|
|
69
|
+
"",
|
|
70
|
+
"| Function | Description | Output Key | Tag? | Folds? |",
|
|
71
|
+
"|----------|-------------|------------|------|--------|",
|
|
72
|
+
];
|
|
73
|
+
for (const fn of intrinsics) {
|
|
74
|
+
const tag = fn.isTag ? "Yes" : "No";
|
|
75
|
+
const folds = intrinsicFolds(fn) ? "Yes" : "No";
|
|
76
|
+
lines.push(`| \`${fn.name}\` | ${escapeMdx(fn.description ?? "—")} | \`${fn.outputKey ?? fn.name}\` | ${tag} | ${folds} |`);
|
|
77
|
+
}
|
|
78
|
+
lines.push("");
|
|
79
|
+
return lines.join("\n");
|
|
80
|
+
}
|
|
81
|
+
export function generatePseudoParameters(config, manifest) {
|
|
82
|
+
const params = manifest.pseudoParameters;
|
|
83
|
+
const entries = Object.entries(params);
|
|
84
|
+
const lines = [
|
|
85
|
+
"---",
|
|
86
|
+
`title: "Pseudo-Parameters"`,
|
|
87
|
+
`description: "Pseudo-parameters available in the ${config.displayName} lexicon"`,
|
|
88
|
+
"---",
|
|
89
|
+
"",
|
|
90
|
+
`The ${config.displayName} lexicon provides **${entries.length}** pseudo-parameters — predefined values available in every stack without explicit declaration.`,
|
|
91
|
+
"",
|
|
92
|
+
"| Name | Value |",
|
|
93
|
+
"|------|-------|",
|
|
94
|
+
];
|
|
95
|
+
for (const [name, value] of entries) {
|
|
96
|
+
lines.push(`| \`${name}\` | \`${value}\` |`);
|
|
97
|
+
}
|
|
98
|
+
lines.push("");
|
|
99
|
+
return lines.join("\n");
|
|
100
|
+
}
|
|
101
|
+
export function generateSerialization(config) {
|
|
102
|
+
const lines = [
|
|
103
|
+
"---",
|
|
104
|
+
`title: "Serialization"`,
|
|
105
|
+
`description: "Output format for the ${config.displayName} lexicon"`,
|
|
106
|
+
"---",
|
|
107
|
+
"",
|
|
108
|
+
];
|
|
109
|
+
if (config.outputFormat) {
|
|
110
|
+
lines.push(config.outputFormat);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
lines.push(`The ${config.displayName} lexicon serializes resources into its native output format during the build step.`, "", "See the [Serialization](/chant/serialization/output-formats) guide for general information about output formats in chant.");
|
|
114
|
+
}
|
|
115
|
+
lines.push("");
|
|
116
|
+
return lines.join("\n");
|
|
117
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sidebar generation for Starlight docs sites.
|
|
3
|
+
*
|
|
4
|
+
* Grouped by Diátaxis quadrant (https://diataxis.fr), chant #1731. Every page
|
|
5
|
+
* the pipeline knows about — authored under docs/pages/ and generated reference
|
|
6
|
+
* tables — arrives as a {@link SidebarPage} with a quadrant; this module only sorts and nests. Empty quadrants are omitted.
|
|
7
|
+
*/
|
|
8
|
+
import { QUADRANTS, QUADRANT_LABELS } from "./docs-pages.js";
|
|
9
|
+
function byOrderThenLabel(a, b) {
|
|
10
|
+
const ao = a.order ?? Number.POSITIVE_INFINITY;
|
|
11
|
+
const bo = b.order ?? Number.POSITIVE_INFINITY;
|
|
12
|
+
if (ao !== bo)
|
|
13
|
+
return ao - bo;
|
|
14
|
+
return a.label.localeCompare(b.label);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* One quadrant's entries: ungrouped pages first (by order, then label), then
|
|
18
|
+
* each nested `group` in order of its lowest-ordered member.
|
|
19
|
+
*/
|
|
20
|
+
export function quadrantItems(pages) {
|
|
21
|
+
const loose = pages.filter((p) => !p.group).sort(byOrderThenLabel);
|
|
22
|
+
const groups = new Map();
|
|
23
|
+
for (const p of pages) {
|
|
24
|
+
if (!p.group)
|
|
25
|
+
continue;
|
|
26
|
+
const list = groups.get(p.group) ?? [];
|
|
27
|
+
list.push(p);
|
|
28
|
+
groups.set(p.group, list);
|
|
29
|
+
}
|
|
30
|
+
const items = loose.map((p) => ({ label: p.label, slug: p.slug }));
|
|
31
|
+
const grouped = [...groups.entries()]
|
|
32
|
+
.map(([label, members]) => ({ label, members: members.sort(byOrderThenLabel) }))
|
|
33
|
+
.sort((a, b) => byOrderThenLabel(a.members[0], b.members[0]));
|
|
34
|
+
for (const g of grouped) {
|
|
35
|
+
items.push({ label: g.label, items: g.members.map((p) => ({ label: p.label, slug: p.slug })) });
|
|
36
|
+
}
|
|
37
|
+
return items;
|
|
38
|
+
}
|
|
39
|
+
export function buildSidebar(config, result) {
|
|
40
|
+
// Starlight prepends basePath to every sidebar `link`, so a site-root-relative
|
|
41
|
+
// path like "/chant/" becomes "/chant/lexicons/aws/chant/" — a 404. Instead
|
|
42
|
+
// we use relative traversal: "../../" is prepended to become
|
|
43
|
+
// "/chant/lexicons/aws/../../" which the browser resolves to "/chant/".
|
|
44
|
+
const segments = (config.basePath ?? "/").replace(/^\/|\/$/g, "").split("/");
|
|
45
|
+
const backLink = segments.length > 1 ? "../".repeat(segments.length - 1) : "/";
|
|
46
|
+
const items = [
|
|
47
|
+
{ label: "← chant docs", link: backLink },
|
|
48
|
+
{ label: "Overview", slug: "index" },
|
|
49
|
+
];
|
|
50
|
+
const byQuadrant = new Map();
|
|
51
|
+
for (const page of result.sidebarPages) {
|
|
52
|
+
if (page.hidden)
|
|
53
|
+
continue;
|
|
54
|
+
const list = byQuadrant.get(page.quadrant) ?? [];
|
|
55
|
+
list.push(page);
|
|
56
|
+
byQuadrant.set(page.quadrant, list);
|
|
57
|
+
}
|
|
58
|
+
for (const q of QUADRANTS) {
|
|
59
|
+
const pages = byQuadrant.get(q);
|
|
60
|
+
if (!pages || pages.length === 0)
|
|
61
|
+
continue;
|
|
62
|
+
items.push({ label: QUADRANT_LABELS[q], items: quadrantItems(pages) });
|
|
63
|
+
}
|
|
64
|
+
return items;
|
|
65
|
+
}
|
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic documentation pipeline for lexicons.
|
|
3
|
+
*
|
|
4
|
+
* Reads manifest.json and meta.json from a packaged lexicon's dist/ directory,
|
|
5
|
+
* collects rule metadata from source, and generates structured MDX reference
|
|
6
|
+
* pages. Individual lexicons supply callbacks for provider-specific formatting
|
|
7
|
+
* (service grouping, resource type URLs, custom overview content).
|
|
8
|
+
*/
|
|
9
|
+
import { copyFileSync, existsSync, readdirSync, readFileSync, writeFileSync, mkdirSync, rmSync } from "fs";
|
|
10
|
+
import { join } from "path";
|
|
11
|
+
import { fileURLToPath } from "url";
|
|
12
|
+
import { expandFileMarkers } from "./docs-file-markers.js";
|
|
13
|
+
import { readAuthoredPages } from "./docs-pages.js";
|
|
14
|
+
import { scanRules, generateRules } from "./docs-rule-scanning.js";
|
|
15
|
+
import { buildSidebar } from "./docs-sidebar.js";
|
|
16
|
+
import { generateOverview, generateIntrinsics, generatePseudoParameters, generateSerialization } from "./docs-sections.js";
|
|
17
|
+
// Re-export all public types and functions so existing importers continue to work.
|
|
18
|
+
export { expandFileMarkers } from "./docs-file-markers.js";
|
|
19
|
+
export { QUADRANTS, QUADRANT_LABELS, readAuthoredPages } from "./docs-pages.js";
|
|
20
|
+
// ── Pipeline ───────────────────────────────────────────────────────
|
|
21
|
+
/**
|
|
22
|
+
* The version rendered into the docs (chant #1377).
|
|
23
|
+
*
|
|
24
|
+
* `dist/manifest.json` is written by `npm run bundle`, which runs only under
|
|
25
|
+
* `prepack`, so its `version` is whatever was last bundled on this machine
|
|
26
|
+
* and can trail `package.json` by several releases. `package.json` is the
|
|
27
|
+
* source of truth and is never stale, so it wins whenever it is present.
|
|
28
|
+
* The manifest's own version is the fallback for a dist with no package
|
|
29
|
+
* beside it (test fixtures, relocated dist directories).
|
|
30
|
+
*/
|
|
31
|
+
export function lexiconVersion(config, manifest) {
|
|
32
|
+
const pkgPath = config.packageJsonPath ?? join(config.distDir, "..", "package.json");
|
|
33
|
+
if (existsSync(pkgPath)) {
|
|
34
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
|
|
35
|
+
if (typeof pkg.version === "string" && pkg.version.length > 0)
|
|
36
|
+
return pkg.version;
|
|
37
|
+
}
|
|
38
|
+
return manifest.version;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Run the documentation pipeline with the supplied config.
|
|
42
|
+
*/
|
|
43
|
+
export function docsPipeline(config) {
|
|
44
|
+
const manifest = JSON.parse(readFileSync(join(config.distDir, "manifest.json"), "utf-8"));
|
|
45
|
+
manifest.version = lexiconVersion(config, manifest);
|
|
46
|
+
const meta = JSON.parse(readFileSync(join(config.distDir, "meta.json"), "utf-8"));
|
|
47
|
+
const rules = scanRules(config.srcDir ?? join(config.distDir, "..", "src"));
|
|
48
|
+
// Separate resources and properties
|
|
49
|
+
const resources = new Map();
|
|
50
|
+
const properties = new Map();
|
|
51
|
+
for (const [className, entry] of Object.entries(meta)) {
|
|
52
|
+
if (entry.kind === "resource") {
|
|
53
|
+
resources.set(className, entry);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
properties.set(className, entry);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Group resources by service
|
|
60
|
+
const serviceFromType = config.serviceFromType ?? ((t) => t.split("::")[1] ?? "Other");
|
|
61
|
+
const serviceGroups = new Map();
|
|
62
|
+
for (const [className, entry] of resources) {
|
|
63
|
+
const service = serviceFromType(entry.resourceType);
|
|
64
|
+
let group = serviceGroups.get(service);
|
|
65
|
+
if (!group) {
|
|
66
|
+
group = new Map();
|
|
67
|
+
serviceGroups.set(service, group);
|
|
68
|
+
}
|
|
69
|
+
group.set(className, entry);
|
|
70
|
+
}
|
|
71
|
+
// Generate pages
|
|
72
|
+
const pages = new Map();
|
|
73
|
+
let overviewContent = generateOverview(config, manifest, resources, properties, serviceGroups, rules);
|
|
74
|
+
if (config.examplesDir) {
|
|
75
|
+
overviewContent = expandFileMarkers(overviewContent, config.examplesDir);
|
|
76
|
+
}
|
|
77
|
+
pages.set("index.mdx", overviewContent);
|
|
78
|
+
const suppress = new Set(config.suppressPages ?? []);
|
|
79
|
+
const sidebarPages = [];
|
|
80
|
+
// Authored pages under docs/pages/ (#1733). Each names its Diátaxis
|
|
81
|
+
// quadrant; the sidebar is grouped from that. Written with a provenance
|
|
82
|
+
// marker that points back at the source file.
|
|
83
|
+
const authored = readAuthoredPages(config);
|
|
84
|
+
const authoredSources = new Map();
|
|
85
|
+
for (const page of authored) {
|
|
86
|
+
pages.set(`${page.slug}.mdx`, page.content);
|
|
87
|
+
authoredSources.set(`${page.slug}.mdx`, page.file);
|
|
88
|
+
if (!page.hidden)
|
|
89
|
+
sidebarPages.push(page);
|
|
90
|
+
}
|
|
91
|
+
const extraSlugs = new Set(authored.map((p) => p.slug));
|
|
92
|
+
// A generated page must not overwrite one the lexicon authored. Authored
|
|
93
|
+
// pages are written into `pages` first, so an unguarded `pages.set` below
|
|
94
|
+
// would silently discard them: helm once declared its own "Intrinsics
|
|
95
|
+
// Reference" and pre-synth rules pages and shipped neither for as long as
|
|
96
|
+
// both slugs collided (#1312). Authorship wins, and the collision is
|
|
97
|
+
// reported rather than resolved in silence.
|
|
98
|
+
const claimed = (slug) => {
|
|
99
|
+
if (suppress.has(slug))
|
|
100
|
+
return true;
|
|
101
|
+
if (!extraSlugs.has(slug))
|
|
102
|
+
return false;
|
|
103
|
+
console.warn(`[docs:${config.name}] docs/pages/${slug}.mdx has the slug of a generated page — keeping the authored one.\n` +
|
|
104
|
+
` Add "${slug}" to suppressPages to make that explicit, or rename the authored page if both are wanted.`);
|
|
105
|
+
return true;
|
|
106
|
+
};
|
|
107
|
+
// Generated reference tables sort after authored reference pages, in the
|
|
108
|
+
// order the old flat sidebar listed them.
|
|
109
|
+
let generatedOrder = 1000;
|
|
110
|
+
const generated = (slug, label) => {
|
|
111
|
+
sidebarPages.push({ slug, label, quadrant: "reference", order: generatedOrder++ });
|
|
112
|
+
};
|
|
113
|
+
if (!claimed("intrinsics") && manifest.intrinsics && manifest.intrinsics.length > 0) {
|
|
114
|
+
pages.set("intrinsics.mdx", generateIntrinsics(config, manifest));
|
|
115
|
+
generated("intrinsics", "Intrinsics");
|
|
116
|
+
}
|
|
117
|
+
if (!claimed("pseudo-parameters") &&
|
|
118
|
+
manifest.pseudoParameters &&
|
|
119
|
+
Object.keys(manifest.pseudoParameters).length > 0) {
|
|
120
|
+
pages.set("pseudo-parameters.mdx", generatePseudoParameters(config, manifest));
|
|
121
|
+
generated("pseudo-parameters", "Pseudo-Parameters");
|
|
122
|
+
}
|
|
123
|
+
// Every lexicon links its generated rules table, whether or not it also
|
|
124
|
+
// ships a prose `lint-rules` page. Skipping it when one existed was how gcp
|
|
125
|
+
// ended up emitting a page nothing pointed at (#1312). The label
|
|
126
|
+
// distinguishes the generated table from a prose page.
|
|
127
|
+
if (!claimed("rules") && rules.length > 0) {
|
|
128
|
+
pages.set("rules.mdx", generateRules(config, rules));
|
|
129
|
+
generated("rules", "All Rules");
|
|
130
|
+
}
|
|
131
|
+
if (!claimed("serialization")) {
|
|
132
|
+
pages.set("serialization.mdx", generateSerialization(config));
|
|
133
|
+
generated("serialization", "Serialization");
|
|
134
|
+
}
|
|
135
|
+
// Stamp every emitted page with its provenance. These files look exactly
|
|
136
|
+
// like the hand-written pages sitting beside them, and without a marker they
|
|
137
|
+
// get edited directly — the k8s "Live Cluster" sidebar group and the AWS
|
|
138
|
+
// intrinsics guide's #1044 claim were both fixed in the emitted `.mdx` and
|
|
139
|
+
// silently reverted by the next regen (#1312).
|
|
140
|
+
for (const [filename, content] of pages) {
|
|
141
|
+
pages.set(filename, withGeneratedMarker(config, content, authoredSources.get(filename)));
|
|
142
|
+
}
|
|
143
|
+
return {
|
|
144
|
+
pages,
|
|
145
|
+
sidebarPages,
|
|
146
|
+
stats: {
|
|
147
|
+
resources: resources.size,
|
|
148
|
+
properties: properties.size,
|
|
149
|
+
services: serviceGroups.size,
|
|
150
|
+
rules: rules.length,
|
|
151
|
+
intrinsics: manifest.intrinsics?.length ?? 0,
|
|
152
|
+
},
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Insert a provenance comment directly after a page's frontmatter.
|
|
157
|
+
*
|
|
158
|
+
* MDX parses `<!-- -->` as JSX rather than a comment, so this uses the
|
|
159
|
+
* `{/* … *\/}` form the rest of the docs already use for generated markers.
|
|
160
|
+
*/
|
|
161
|
+
function withGeneratedMarker(config, content, source) {
|
|
162
|
+
const edit = source
|
|
163
|
+
? `Edit lexicons/${config.name}/docs/pages/${source} instead`
|
|
164
|
+
: `Edit lexicons/${config.name}/src/codegen/docs.ts instead`;
|
|
165
|
+
const marker = `{/* ${GENERATED_MARKER_TAG} by \`npm run docs -w @intentius/chant-lexicon-${config.name}\` — DO NOT EDIT.\n ${edit}; changes here are overwritten. */}`;
|
|
166
|
+
const lines = content.split("\n");
|
|
167
|
+
// Frontmatter is the leading `---` … `---` block; the marker goes after it.
|
|
168
|
+
if (lines[0] === "---") {
|
|
169
|
+
const close = lines.indexOf("---", 1);
|
|
170
|
+
if (close > 0) {
|
|
171
|
+
lines.splice(close + 1, 0, "", marker);
|
|
172
|
+
return lines.join("\n");
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return `${marker}\n\n${content}`;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Render the complete rules table for a lexicon that has no {@link docsPipeline}
|
|
179
|
+
* site of its own.
|
|
180
|
+
*
|
|
181
|
+
* The docker lexicon hand-authors its docs, which left its rule table the only
|
|
182
|
+
* one in the repo that could drift from source without anything noticing
|
|
183
|
+
* (#1312). This is the one page worth generating even when the rest of a site
|
|
184
|
+
* is hand-written; the caller writes the result to `rules.mdx` and links it.
|
|
185
|
+
* Returns null when the lexicon declares no rules.
|
|
186
|
+
*/
|
|
187
|
+
export function generateRulesPage(config, srcDir) {
|
|
188
|
+
const rules = scanRules(srcDir);
|
|
189
|
+
if (rules.length === 0)
|
|
190
|
+
return null;
|
|
191
|
+
return withGeneratedMarker(config, generateRules(config, rules));
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Marks a page as pipeline output. Used both to warn readers off editing the
|
|
195
|
+
* file and, in {@link writeDocsSite}, to tell a page this pipeline owns from a
|
|
196
|
+
* hand-written one when reaping pages it no longer emits.
|
|
197
|
+
*/
|
|
198
|
+
export const GENERATED_MARKER_TAG = "GENERATED-BY-CHANT-DOCS";
|
|
199
|
+
/**
|
|
200
|
+
* Every slug a Starlight sidebar reaches, including nested group items.
|
|
201
|
+
*/
|
|
202
|
+
export function collectSidebarSlugs(items) {
|
|
203
|
+
const slugs = new Set();
|
|
204
|
+
const walk = (list) => {
|
|
205
|
+
for (const item of list) {
|
|
206
|
+
if (typeof item.slug === "string")
|
|
207
|
+
slugs.add(item.slug);
|
|
208
|
+
if (Array.isArray(item.items))
|
|
209
|
+
walk(item.items);
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
walk(items);
|
|
213
|
+
return slugs;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Content pages that no sidebar entry points at.
|
|
217
|
+
*
|
|
218
|
+
* `index` is always the site root and never needs an entry of its own.
|
|
219
|
+
*/
|
|
220
|
+
export function unreachablePages(contentDir, sidebar) {
|
|
221
|
+
if (!existsSync(contentDir))
|
|
222
|
+
return [];
|
|
223
|
+
const slugs = collectSidebarSlugs(sidebar);
|
|
224
|
+
return readdirSync(contentDir)
|
|
225
|
+
.filter((f) => f.endsWith(".mdx") || f.endsWith(".md"))
|
|
226
|
+
.map((f) => f.replace(/\.mdx?$/, ""))
|
|
227
|
+
.filter((slug) => slug !== "index" && !slugs.has(slug))
|
|
228
|
+
.sort();
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Write generated docs pages to disk.
|
|
232
|
+
*/
|
|
233
|
+
export function writeDocsPages(result, outDir) {
|
|
234
|
+
mkdirSync(outDir, { recursive: true });
|
|
235
|
+
for (const [filename, content] of result.pages) {
|
|
236
|
+
const filePath = join(outDir, filename);
|
|
237
|
+
const dir = filePath.substring(0, filePath.lastIndexOf("/"));
|
|
238
|
+
mkdirSync(dir, { recursive: true });
|
|
239
|
+
writeFileSync(filePath, content);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Scaffold a standalone Starlight docs site from pipeline results.
|
|
244
|
+
*
|
|
245
|
+
* Writes: package.json, astro.config.mjs, tsconfig.json, and all content
|
|
246
|
+
* pages under src/content/docs/. The resulting directory can be built with
|
|
247
|
+
* `npm install && npm run build`.
|
|
248
|
+
*/
|
|
249
|
+
export function writeDocsSite(config, result) {
|
|
250
|
+
const outDir = config.outDir;
|
|
251
|
+
const contentDir = join(outDir, "src", "content", "docs");
|
|
252
|
+
// Clear stale generated content and Astro caches so changes are picked up on next build.
|
|
253
|
+
// Only remove files that will be regenerated — preserve hand-written pages.
|
|
254
|
+
for (const filename of result.pages.keys()) {
|
|
255
|
+
const filePath = join(contentDir, filename);
|
|
256
|
+
rmSync(filePath, { force: true });
|
|
257
|
+
}
|
|
258
|
+
// Reap pages this pipeline used to emit and no longer does. Suppressing a
|
|
259
|
+
// page only stops it being written; the copy from the last run stayed on
|
|
260
|
+
// disk, unreferenced by the sidebar and indistinguishable from a
|
|
261
|
+
// hand-written page — which is how azure, gcp and helm each kept a `rules`
|
|
262
|
+
// page after adopting their own (#1312). The provenance marker is what makes
|
|
263
|
+
// this safe: only a file this pipeline stamped is ever removed.
|
|
264
|
+
if (existsSync(contentDir)) {
|
|
265
|
+
for (const filename of readdirSync(contentDir)) {
|
|
266
|
+
if (!filename.endsWith(".mdx") && !filename.endsWith(".md"))
|
|
267
|
+
continue;
|
|
268
|
+
if (result.pages.has(filename))
|
|
269
|
+
continue;
|
|
270
|
+
const filePath = join(contentDir, filename);
|
|
271
|
+
if (readFileSync(filePath, "utf-8").includes(GENERATED_MARKER_TAG)) {
|
|
272
|
+
rmSync(filePath, { force: true });
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
rmSync(join(outDir, ".astro"), { recursive: true, force: true });
|
|
277
|
+
rmSync(join(outDir, "node_modules", ".astro"), { recursive: true, force: true });
|
|
278
|
+
// Write content pages
|
|
279
|
+
writeDocsPages(result, contentDir);
|
|
280
|
+
// Build sidebar from generated pages
|
|
281
|
+
const sidebar = buildSidebar(config, result);
|
|
282
|
+
// Starlight does not auto-discover pages, so a page absent from the sidebar
|
|
283
|
+
// is reachable only by typing its URL. The pipeline deliberately preserves
|
|
284
|
+
// hand-written pages it did not emit (above), which makes it easy to add one
|
|
285
|
+
// and never wire it up — azure, helm and github each accumulated
|
|
286
|
+
// several that way (#1312). Report them; `chant dev check-lexicon` gates on
|
|
287
|
+
// the same condition.
|
|
288
|
+
const unreachable = unreachablePages(contentDir, sidebar);
|
|
289
|
+
if (unreachable.length > 0) {
|
|
290
|
+
console.warn(`[docs:${config.name}] ${unreachable.length} page(s) in no sidebar entry — reachable only by direct URL: ${unreachable.join(", ")}.\n` +
|
|
291
|
+
` Move them to docs/pages/ with a \`diataxis\` field to surface them (chant #1731).`);
|
|
292
|
+
}
|
|
293
|
+
// package.json
|
|
294
|
+
writeFileSync(join(outDir, "package.json"), JSON.stringify({
|
|
295
|
+
name: `@intentius/chant-lexicon-${config.name}-docs`,
|
|
296
|
+
type: "module",
|
|
297
|
+
version: "0.0.1",
|
|
298
|
+
private: true,
|
|
299
|
+
scripts: {
|
|
300
|
+
dev: "astro dev",
|
|
301
|
+
build: "astro build",
|
|
302
|
+
preview: "astro preview",
|
|
303
|
+
},
|
|
304
|
+
dependencies: {
|
|
305
|
+
"@astrojs/starlight": "^0.37.6",
|
|
306
|
+
astro: "^5.6.1",
|
|
307
|
+
sharp: "^0.34.2",
|
|
308
|
+
},
|
|
309
|
+
}, null, 2) + "\n");
|
|
310
|
+
// tsconfig.json
|
|
311
|
+
writeFileSync(join(outDir, "tsconfig.json"), JSON.stringify({
|
|
312
|
+
extends: "astro/tsconfigs/strict",
|
|
313
|
+
include: [".astro/types.d.ts", "**/*"],
|
|
314
|
+
exclude: ["dist"],
|
|
315
|
+
}, null, 2) + "\n");
|
|
316
|
+
// src/content.config.ts (required by Astro 5+ / Starlight 0.37+)
|
|
317
|
+
mkdirSync(join(outDir, "src"), { recursive: true });
|
|
318
|
+
writeFileSync(join(outDir, "src", "content.config.ts"), `import { defineCollection, z } from 'astro:content';
|
|
319
|
+
import { docsLoader } from '@astrojs/starlight/loaders';
|
|
320
|
+
import { docsSchema } from '@astrojs/starlight/schema';
|
|
321
|
+
|
|
322
|
+
export const collections = {
|
|
323
|
+
docs: defineCollection({
|
|
324
|
+
loader: docsLoader(),
|
|
325
|
+
schema: docsSchema({
|
|
326
|
+
extend: z.object({
|
|
327
|
+
// Diátaxis quadrant (https://diataxis.fr), chant #1731.
|
|
328
|
+
diataxis: z.enum(['tutorial', 'how-to', 'reference', 'explanation']).optional(),
|
|
329
|
+
}),
|
|
330
|
+
}),
|
|
331
|
+
}),
|
|
332
|
+
};
|
|
333
|
+
`);
|
|
334
|
+
// src/rehype-base-url.mjs — copied from chant core so Astro can import it
|
|
335
|
+
// without the generated docs site needing a workspace dep on @intentius/chant.
|
|
336
|
+
const pluginSrcPath = fileURLToPath(new URL("./rehype-base-url.mjs", import.meta.url));
|
|
337
|
+
copyFileSync(pluginSrcPath, join(outDir, "src", "rehype-base-url.mjs"));
|
|
338
|
+
// astro.config.mjs
|
|
339
|
+
const rehypeLine = config.basePath
|
|
340
|
+
? `\n markdown: {\n rehypePlugins: [[rehypeBaseUrl, { base: '${config.basePath}', projectBase: '/chant' }]],\n },`
|
|
341
|
+
: "";
|
|
342
|
+
writeFileSync(join(outDir, "astro.config.mjs"), `// @ts-check
|
|
343
|
+
import { defineConfig } from 'astro/config';
|
|
344
|
+
import starlight from '@astrojs/starlight';
|
|
345
|
+
import rehypeBaseUrl from './src/rehype-base-url.mjs';
|
|
346
|
+
|
|
347
|
+
export default defineConfig({${config.basePath ? `\n base: '${config.basePath}',` : ""}${rehypeLine}
|
|
348
|
+
integrations: [
|
|
349
|
+
starlight({
|
|
350
|
+
title: '${config.displayName}',
|
|
351
|
+
sidebar: ${JSON.stringify(sidebar, null, 6).replace(/\n/g, "\n ")},
|
|
352
|
+
}),
|
|
353
|
+
],
|
|
354
|
+
});
|
|
355
|
+
`);
|
|
356
|
+
}
|