@intentius/chant 0.124.12 → 0.124.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/chant +11 -0
- package/dist/agents/checks.js +326 -0
- package/dist/agents/discover.js +885 -0
- package/dist/agents/importer.js +17 -0
- package/dist/agents/index.js +12 -0
- package/dist/agents/types.js +19 -0
- package/dist/apply.js +151 -0
- package/dist/attrref.js +70 -0
- package/dist/audit/catalog.js +350 -0
- package/dist/audit/core.js +252 -0
- package/dist/audit/discover.js +633 -0
- package/dist/audit/fetch.js +666 -0
- package/dist/audit/lineage.js +91 -0
- package/dist/audit/nginx.js +366 -0
- package/dist/audit/prior-art.js +132 -0
- package/dist/audit/proof.js +321 -0
- package/dist/audit/report-html.js +194 -0
- package/dist/audit/report-model.js +198 -0
- package/dist/audit/report.js +102 -0
- package/dist/audit/rules-doc.js +144 -0
- package/dist/audit/secrets.js +405 -0
- package/dist/audit/terraform-state.js +140 -0
- package/dist/audit/wrangler.js +262 -0
- package/dist/behaviour-delta.js +401 -0
- package/dist/behaviour-engine.js +357 -0
- package/dist/behaviour-graph.js +83 -0
- package/dist/behaviour-http.js +188 -0
- package/dist/behaviour-kinds.js +172 -0
- package/dist/behaviour-overlay.js +50 -0
- package/dist/behaviour-predict.js +188 -0
- package/dist/behaviour-request.js +194 -0
- package/dist/behaviour.js +1325 -0
- package/dist/build-params.js +108 -0
- package/dist/build.js +668 -0
- package/dist/builder.js +44 -0
- package/dist/cdk/advise.js +30 -0
- package/dist/cdk/assembly.js +122 -0
- package/dist/cdk/graph.js +444 -0
- package/dist/cdk/tier-map.js +64 -0
- package/dist/cdk/types.js +24 -0
- package/dist/change-set.js +312 -0
- package/dist/child-project.js +21 -0
- package/dist/claimed-fields.js +135 -0
- package/dist/cli/build-options.js +70 -0
- package/dist/cli/build-params-cli.js +139 -0
- package/dist/cli/command-group.js +123 -0
- package/dist/cli/commands/audit-agents.js +326 -0
- package/dist/cli/commands/audit.js +571 -0
- package/dist/cli/commands/build.js +920 -0
- package/dist/cli/commands/carve-apply.js +153 -0
- package/dist/cli/commands/carve-bridge.js +201 -0
- package/dist/cli/commands/carve-emit.js +332 -0
- package/dist/cli/commands/carve-status.js +119 -0
- package/dist/cli/commands/carve.js +204 -0
- package/dist/cli/commands/check-lexicon-docs.js +79 -0
- package/dist/cli/commands/check-lexicon-examples.js +177 -0
- package/dist/cli/commands/check-lexicon-intrinsics.js +291 -0
- package/dist/cli/commands/check-lexicon-mcp.js +82 -0
- package/dist/cli/commands/check-lexicon-plugin.d.ts.map +1 -1
- package/dist/cli/commands/check-lexicon-plugin.js +104 -0
- package/dist/cli/commands/check-lexicon.js +766 -0
- package/dist/cli/commands/describe.js +85 -0
- package/dist/cli/commands/diff.js +175 -0
- package/dist/cli/commands/doctor.js +350 -0
- package/dist/cli/commands/import-agents.js +155 -0
- package/dist/cli/commands/import.js +670 -0
- package/dist/cli/commands/init-lexicon/templates/codegen.js +194 -0
- package/dist/cli/commands/init-lexicon/templates/docs.js +100 -0
- package/dist/cli/commands/init-lexicon/templates/examples.js +29 -0
- package/dist/cli/commands/init-lexicon/templates/lint.js +34 -0
- package/dist/cli/commands/init-lexicon/templates/lsp.js +37 -0
- package/dist/cli/commands/init-lexicon/templates/plugin.js +108 -0
- package/dist/cli/commands/init-lexicon/templates/project.js +240 -0
- package/dist/cli/commands/init-lexicon/templates/spec.js +56 -0
- package/dist/cli/commands/init-lexicon/templates/tests.js +66 -0
- package/dist/cli/commands/init-lexicon.js +172 -0
- package/dist/cli/commands/init.js +381 -0
- package/dist/cli/commands/lexicon-rolling-upgrade.js +145 -0
- package/dist/cli/commands/lexicon-surface-diff.js +145 -0
- package/dist/cli/commands/licenses.js +125 -0
- package/dist/cli/commands/lint.d.ts.map +1 -1
- package/dist/cli/commands/lint.js +948 -0
- package/dist/cli/commands/list.js +63 -0
- package/dist/cli/commands/migrate.d.ts.map +1 -1
- package/dist/cli/commands/migrate.js +423 -0
- package/dist/cli/commands/onboard.js +403 -0
- package/dist/cli/commands/pinned-upgrade.js +191 -0
- package/dist/cli/commands/update.js +194 -0
- package/dist/cli/commands/vendor.js +217 -0
- package/dist/cli/conflict-check.js +104 -0
- package/dist/cli/debug.js +8 -0
- package/dist/cli/format.js +104 -0
- package/dist/cli/handlers/build.js +267 -0
- package/dist/cli/handlers/carve-apply.js +30 -0
- package/dist/cli/handlers/carve-bridge.js +28 -0
- package/dist/cli/handlers/carve-emit.js +50 -0
- package/dist/cli/handlers/carve-status.js +26 -0
- package/dist/cli/handlers/carve.js +40 -0
- package/dist/cli/handlers/change-set.js +46 -0
- package/dist/cli/handlers/components.js +730 -0
- package/dist/cli/handlers/dev.js +113 -0
- package/dist/cli/handlers/emulator.js +233 -0
- package/dist/cli/handlers/explain.js +54 -0
- package/dist/cli/handlers/fan-out.js +422 -0
- package/dist/cli/handlers/gate-resume.js +275 -0
- package/dist/cli/handlers/generate.js +84 -0
- package/dist/cli/handlers/graph.js +969 -0
- package/dist/cli/handlers/init.js +102 -0
- package/dist/cli/handlers/lifecycle.js +1727 -0
- package/dist/cli/handlers/lint.js +62 -0
- package/dist/cli/handlers/migrate.js +48 -0
- package/dist/cli/handlers/misc.js +391 -0
- package/dist/cli/handlers/operator.js +1162 -0
- package/dist/cli/handlers/override-approve.js +102 -0
- package/dist/cli/handlers/pr.js +503 -0
- package/dist/cli/handlers/promote.js +342 -0
- package/dist/cli/handlers/run-generate.js +206 -0
- package/dist/cli/handlers/run-wave.js +66 -0
- package/dist/cli/handlers/run.js +1191 -0
- package/dist/cli/handlers/scenario.js +325 -0
- package/dist/cli/handlers/search.js +924 -0
- package/dist/cli/handlers/serve.js +32 -0
- package/dist/cli/handlers/vendor.js +154 -0
- package/dist/cli/index.js +3 -0
- package/dist/cli/is-entry-point.js +23 -0
- package/dist/cli/lsp/capabilities.js +28 -0
- package/dist/cli/lsp/diagnostics.js +34 -0
- package/dist/cli/lsp/server.js +329 -0
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +2540 -0
- package/dist/cli/mcp/lifecycle-tools.js +80 -0
- package/dist/cli/mcp/op-tools.js +306 -0
- package/dist/cli/mcp/resource-handlers.js +258 -0
- package/dist/cli/mcp/resources/context.js +85 -0
- package/dist/cli/mcp/server.js +353 -0
- package/dist/cli/mcp/tools/build.js +111 -0
- package/dist/cli/mcp/tools/composites.js +95 -0
- package/dist/cli/mcp/tools/explain.js +166 -0
- package/dist/cli/mcp/tools/import.js +49 -0
- package/dist/cli/mcp/tools/lint.js +41 -0
- package/dist/cli/mcp/tools/scaffold.js +111 -0
- package/dist/cli/mcp/tools/search.js +112 -0
- package/dist/cli/mcp/types.js +1 -0
- package/dist/cli/mcp/workspace-plugins.js +91 -0
- package/dist/cli/mcp/workspace-tools.d.ts +1 -1
- package/dist/cli/mcp/workspace-tools.js +564 -0
- package/dist/cli/mcp-config.js +70 -0
- package/dist/cli/plugins.js +313 -0
- package/dist/cli/registry.js +23 -0
- package/dist/cli/reporters/stylish.js +329 -0
- package/dist/cli/version.js +15 -0
- package/dist/cli/watch.js +79 -0
- package/dist/codegen/bound-property-types.js +82 -0
- package/dist/codegen/coverage.js +119 -0
- package/dist/codegen/docs-file-markers.js +60 -0
- package/dist/codegen/docs-pages.js +115 -0
- package/dist/codegen/docs-rule-scanning.js +164 -0
- package/dist/codegen/docs-rules.js +76 -0
- package/dist/codegen/docs-sections.js +117 -0
- package/dist/codegen/docs-sidebar.js +65 -0
- package/dist/codegen/docs-types.js +4 -0
- package/dist/codegen/docs.js +356 -0
- package/dist/codegen/fetch.js +340 -0
- package/dist/codegen/generate-post-synth-barrel.js +63 -0
- package/dist/codegen/generate-registry.js +71 -0
- package/dist/codegen/generate-runtime-index.js +56 -0
- package/dist/codegen/generate-typescript.js +119 -0
- package/dist/codegen/generate.js +115 -0
- package/dist/codegen/json-patch.js +141 -0
- package/dist/codegen/json-schema-to-ts.js +344 -0
- package/dist/codegen/json-schema.js +246 -0
- package/dist/codegen/lexicon-regen.js +412 -0
- package/dist/codegen/naming.js +217 -0
- package/dist/codegen/okf-lexicon.js +245 -0
- package/dist/codegen/package.js +150 -0
- package/dist/codegen/pinned-upgrade.d.ts.map +1 -1
- package/dist/codegen/pinned-upgrade.js +494 -0
- package/dist/codegen/registry.js +60 -0
- package/dist/codegen/rehype-base-url.mjs +68 -0
- package/dist/codegen/rolling-upgrade.js +217 -0
- package/dist/codegen/surface-snapshot.js +537 -0
- package/dist/codegen/testdata/postgres-tags.json +242 -0
- package/dist/codegen/topo-sort.js +36 -0
- package/dist/codegen/typecheck.js +115 -0
- package/dist/codegen/validate.js +200 -0
- package/dist/codegen/version-bump.js +35 -0
- package/dist/components/auto-release.js +143 -0
- package/dist/components/builders.js +47 -0
- package/dist/components/capability-plugin-loader.js +175 -0
- package/dist/components/capability-plugin-schema.js +46 -0
- package/dist/components/capability-plugin.js +99 -0
- package/dist/components/capability.js +60 -0
- package/dist/components/changed-files.js +72 -0
- package/dist/components/cli-support.js +427 -0
- package/dist/components/component.js +120 -0
- package/dist/components/component.schema.json +271 -0
- package/dist/components/config-defaults.js +130 -0
- package/dist/components/deploy-units.js +60 -0
- package/dist/components/discover.d.ts.map +1 -1
- package/dist/components/discover.js +189 -0
- package/dist/components/driver-output.js +86 -0
- package/dist/components/driver.js +728 -0
- package/dist/components/fan-out-output.js +165 -0
- package/dist/components/fan-out-record.js +94 -0
- package/dist/components/fan-out-run.js +373 -0
- package/dist/components/fan-out-support.js +60 -0
- package/dist/components/fan-out.js +273 -0
- package/dist/components/gate-plan.js +41 -0
- package/dist/components/gated-wave-pipeline.js +46 -0
- package/dist/components/index.js +24 -0
- package/dist/components/layers.js +28 -0
- package/dist/components/manifest-persistence.js +108 -0
- package/dist/components/pilots/alb-ecs.pilot.js +59 -0
- package/dist/components/pilots/dynamodb.pilot.js +51 -0
- package/dist/components/pilots/jar-emr.pilot.js +65 -0
- package/dist/components/pilots/lambda.pilot.js +52 -0
- package/dist/components/pilots/neo4j-fanout.pilot.js +68 -0
- package/dist/components/pilots/project.js +12 -0
- package/dist/components/pr-pipeline.js +134 -0
- package/dist/components/pr-run.js +363 -0
- package/dist/components/presets/ecs-fargate.js +72 -0
- package/dist/components/presets/index.js +28 -0
- package/dist/components/presets/lambda.js +34 -0
- package/dist/components/presets/single-host-compose.js +41 -0
- package/dist/components/promote.js +549 -0
- package/dist/components/registry.js +34 -0
- package/dist/components/run-progress.js +33 -0
- package/dist/components/sandbox/driver.d.ts.map +1 -1
- package/dist/components/sandbox/driver.js +93 -0
- package/dist/components/sandbox/run.js +115 -0
- package/dist/components/starter-plugin.js +104 -0
- package/dist/components/verbs/__tests__/mock-cloud-executor.js +68 -0
- package/dist/components/verbs/__tests__/mock-process-runner.js +45 -0
- package/dist/components/verbs/__tests__/mock-sbom-generator.js +56 -0
- package/dist/components/verbs/bom-writer.js +287 -0
- package/dist/components/verbs/build-archive.js +188 -0
- package/dist/components/verbs/build.js +142 -0
- package/dist/components/verbs/cloud-executor.js +110 -0
- package/dist/components/verbs/component-bom.js +125 -0
- package/dist/components/verbs/ensure-secret.js +50 -0
- package/dist/components/verbs/index.js +61 -0
- package/dist/components/verbs/license-policy.js +75 -0
- package/dist/components/verbs/lockfile-sbom-generator.js +191 -0
- package/dist/components/verbs/process-runner.js +78 -0
- package/dist/components/verbs/r2-sync.js +93 -0
- package/dist/components/verbs/reproducibility.js +62 -0
- package/dist/components/verbs/run-agent.js +577 -0
- package/dist/components/verbs/sbom-generator.js +119 -0
- package/dist/components/verbs/sbom.js +97 -0
- package/dist/components/verbs/shell.js +32 -0
- package/dist/components/verbs/sign.js +221 -0
- package/dist/components/verbs/stub.js +28 -0
- package/dist/components/verbs/tool-sbom-generator.js +154 -0
- package/dist/components/verbs/verify.js +112 -0
- package/dist/components/verbs/vex.js +131 -0
- package/dist/components/verbs/vuln-gate.js +152 -0
- package/dist/components/verbs/vuln-scan.js +288 -0
- package/dist/components/verbs/wait-verify.js +106 -0
- package/dist/components/verbs/wrangler.js +179 -0
- package/dist/components/wave-plan.js +102 -0
- package/dist/composite.js +305 -0
- package/dist/config-import.d.ts.map +1 -1
- package/dist/config-import.js +22 -0
- package/dist/config-sandbox.js +122 -0
- package/dist/config-static.js +206 -0
- package/dist/config.js +605 -0
- package/dist/content-digest.js +23 -0
- package/dist/declarable.js +114 -0
- package/dist/deep-observation.js +437 -0
- package/dist/detectLexicon.js +54 -0
- package/dist/discovery/cache.js +70 -0
- package/dist/discovery/collect.js +208 -0
- package/dist/discovery/cycles.js +95 -0
- package/dist/discovery/entity-wire-codec.js +391 -0
- package/dist/discovery/entity-wire.js +42 -0
- package/dist/discovery/files.js +121 -0
- package/dist/discovery/fold-import.d.ts.map +1 -1
- package/dist/discovery/fold-import.js +4178 -0
- package/dist/discovery/fold-rank.js +292 -0
- package/dist/discovery/graph.js +115 -0
- package/dist/discovery/import.d.ts.map +1 -1
- package/dist/discovery/import.js +65 -0
- package/dist/discovery/index.js +333 -0
- package/dist/discovery/param-deps.js +487 -0
- package/dist/discovery/resolve.js +39 -0
- package/dist/discovery/sandbox/bundle.js +214 -0
- package/dist/discovery/sandbox/child-errors.js +26 -0
- package/dist/discovery/sandbox/config-run.js +100 -0
- package/dist/discovery/sandbox/config-wire.js +183 -0
- package/dist/discovery/sandbox/driver.d.ts.map +1 -1
- package/dist/discovery/sandbox/driver.js +333 -0
- package/dist/discovery/sandbox/fork.js +229 -0
- package/dist/discovery/sandbox/policy-run.js +142 -0
- package/dist/discovery/sandbox/policy-wire.js +152 -0
- package/dist/discovery/sandbox/run.js +77 -0
- package/dist/discovery/specifier-resolve.js +320 -0
- package/dist/discovery/walk.js +284 -0
- package/dist/effect-receipt.js +340 -0
- package/dist/env.js +55 -0
- package/dist/errors.js +62 -0
- package/dist/fold/fold.js +1434 -0
- package/dist/fold/foldable-helpers.js +229 -0
- package/dist/fold/subset.js +696 -0
- package/dist/fold-provenance.js +414 -0
- package/dist/gate-decision.d.ts +36 -4
- package/dist/gate-decision.d.ts.map +1 -1
- package/dist/gate-decision.js +260 -0
- package/dist/gate-resume-run.js +154 -0
- package/dist/gated-waves.js +165 -0
- package/dist/governance.js +43 -0
- package/dist/graph-declared.js +45 -0
- package/dist/graph-detail.js +207 -0
- package/dist/graph-dot.js +54 -0
- package/dist/graph-effective.js +107 -0
- package/dist/graph-ir.js +623 -0
- package/dist/graph-layout.js +184 -0
- package/dist/graph-lens.js +105 -0
- package/dist/graph-mermaid.js +83 -0
- package/dist/graph-ops.js +39 -0
- package/dist/graph-refs.js +156 -0
- package/dist/held-elsewhere.js +87 -0
- package/dist/identity.js +251 -0
- package/dist/import/base-parser.js +34 -0
- package/dist/import/embedded.js +255 -0
- package/dist/import/generator.js +1 -0
- package/dist/import/ir-utils.js +85 -0
- package/dist/import/parser-options.js +45 -0
- package/dist/import/parser.js +1 -0
- package/dist/index.js +118 -0
- package/dist/intrinsic-interpolation.js +73 -0
- package/dist/intrinsic.js +31 -0
- package/dist/join-key.js +35 -0
- package/dist/kubectl-context.js +150 -0
- package/dist/lexicon-config.js +58 -0
- package/dist/lexicon-integrity.js +47 -0
- package/dist/lexicon-manifest.js +70 -0
- package/dist/lexicon-module.d.ts.map +1 -1
- package/dist/lexicon-module.js +241 -0
- package/dist/lexicon-output.js +218 -0
- package/dist/lexicon-plugin-helpers.js +104 -0
- package/dist/lexicon-schema.js +136 -0
- package/dist/lexicon.js +130 -0
- package/dist/lifecycle/affected.js +224 -0
- package/dist/lifecycle/assert-live.js +110 -0
- package/dist/lifecycle/build-ledger-store.js +160 -0
- package/dist/lifecycle/build-ledger.js +155 -0
- package/dist/lifecycle/change-set.js +356 -0
- package/dist/lifecycle/converge-ledger.js +161 -0
- package/dist/lifecycle/deep-diff.js +233 -0
- package/dist/lifecycle/deep-observe.js +147 -0
- package/dist/lifecycle/digest.js +143 -0
- package/dist/lifecycle/disruption.js +135 -0
- package/dist/lifecycle/gate-applied.js +113 -0
- package/dist/lifecycle/gate-audit.js +341 -0
- package/dist/lifecycle/gate-ledger-select.js +89 -0
- package/dist/lifecycle/gate-ledger.d.ts +8 -0
- package/dist/lifecycle/gate-ledger.d.ts.map +1 -1
- package/dist/lifecycle/gate-ledger.js +193 -0
- package/dist/lifecycle/gate-origin.js +117 -0
- package/dist/lifecycle/gate-pending.js +58 -0
- package/dist/lifecycle/git.js +1182 -0
- package/dist/lifecycle/identity.js +58 -0
- package/dist/lifecycle/index.js +26 -0
- package/dist/lifecycle/lease.js +283 -0
- package/dist/lifecycle/ledger-port.js +1 -0
- package/dist/lifecycle/legacy-digest.js +91 -0
- package/dist/lifecycle/live-diff.js +274 -0
- package/dist/lifecycle/local-note.js +15 -0
- package/dist/lifecycle/member-ledger.js +122 -0
- package/dist/lifecycle/observation-baseline.js +155 -0
- package/dist/lifecycle/observe.js +375 -0
- package/dist/lifecycle/oras-referrer-lookup.js +82 -0
- package/dist/lifecycle/override-ledger.js +54 -0
- package/dist/lifecycle/plan-digest.js +110 -0
- package/dist/lifecycle/plan-ledger.js +129 -0
- package/dist/lifecycle/receipt-plan.js +192 -0
- package/dist/lifecycle/release-ledger.js +155 -0
- package/dist/lifecycle/release-read.js +64 -0
- package/dist/lifecycle/replay.js +193 -0
- package/dist/lifecycle/rollback.js +102 -0
- package/dist/lifecycle/run-ledger.js +183 -0
- package/dist/lifecycle/scenario-eval.js +204 -0
- package/dist/lifecycle/scenario.js +214 -0
- package/dist/lifecycle/snapshot.js +239 -0
- package/dist/lifecycle/status.js +447 -0
- package/dist/lifecycle/symptoms.js +117 -0
- package/dist/lifecycle/teardown.js +255 -0
- package/dist/lifecycle/types.js +1 -0
- package/dist/lifecycle/unobserved-gate.js +33 -0
- package/dist/lifecycle/wave-plans.js +68 -0
- package/dist/lifecycle/work-item-id.js +36 -0
- package/dist/lifecycle/work-lease.js +393 -0
- package/dist/lint/component-checks.js +87 -0
- package/dist/lint/config.js +483 -0
- package/dist/lint/declarative.js +122 -0
- package/dist/lint/discover.d.ts.map +1 -1
- package/dist/lint/discover.js +138 -0
- package/dist/lint/engine.js +246 -0
- package/dist/lint/knowledge-checks.js +64 -0
- package/dist/lint/named-checks.js +22 -0
- package/dist/lint/output-checks.js +87 -0
- package/dist/lint/output-docs.js +163 -0
- package/dist/lint/parser.js +33 -0
- package/dist/lint/pipeline-change-gate.js +70 -0
- package/dist/lint/policy-import.d.ts +1 -1
- package/dist/lint/policy-import.d.ts.map +1 -1
- package/dist/lint/policy-import.js +62 -0
- package/dist/lint/policy-sandbox.js +86 -0
- package/dist/lint/policy.js +122 -0
- package/dist/lint/post-synth.js +87 -0
- package/dist/lint/presets/relaxed.json +26 -0
- package/dist/lint/presets/strict.json +24 -24
- package/dist/lint/receipt-checks.js +83 -0
- package/dist/lint/rule-loader.d.ts.map +1 -1
- package/dist/lint/rule-loader.js +89 -0
- package/dist/lint/rule-registry.js +86 -0
- package/dist/lint/rule.js +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-a.component.js +7 -0
- package/dist/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-b.component.js +7 -0
- package/dist/lint/rules/__fixtures__/comp/comp001/fail/orphan-lib.component.js +9 -0
- package/dist/lint/rules/__fixtures__/comp/comp001/pass/emr-job.component.js +11 -0
- package/dist/lint/rules/__fixtures__/comp/comp001/pass/jar-lib.component.js +9 -0
- package/dist/lint/rules/__fixtures__/comp/comp002/fail/search-service.component.js +25 -0
- package/dist/lint/rules/__fixtures__/comp/comp002/pass/jar-lib.component.js +8 -0
- package/dist/lint/rules/__fixtures__/comp/comp002/pass/search-service.component.js +21 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/fail/migrator.component.js +8 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/pass/agent-turn.component.js +24 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/pass/migrator.component.js +17 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/pass/orders-table.component.js +8 -0
- package/dist/lint/rules/__fixtures__/comp/comp004/fail/neo4j-cluster.component.js +18 -0
- package/dist/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.js +20 -0
- package/dist/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.js +8 -0
- package/dist/lint/rules/__fixtures__/comp/comp005/fail/search-service.component.js +12 -0
- package/dist/lint/rules/__fixtures__/comp/comp005/pass/search-service.component.js +16 -0
- package/dist/lint/rules/__fixtures__/comp/comp006/fail/legacy-tool.component.js +8 -0
- package/dist/lint/rules/__fixtures__/comp/comp006/pass/legacy-tool.component.js +12 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/fail/inventory-table.component.js +11 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/fail/orders-table.component.js +11 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/pass/orders-table.component.js +10 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/pass/search-service.component.js +16 -0
- package/dist/lint/rules/comp/comp001-publishes-never-applies.js +69 -0
- package/dist/lint/rules/comp/comp002-dangling-wiring-ref.js +84 -0
- package/dist/lint/rules/comp/comp003-mutating-no-rollback.js +103 -0
- package/dist/lint/rules/comp/comp004-gate-needs-durable-runtime.js +70 -0
- package/dist/lint/rules/comp/comp005-capability-kind-is-noun.js +109 -0
- package/dist/lint/rules/comp/comp006-shell-needs-reason.js +49 -0
- package/dist/lint/rules/comp/comp007-composition-sprawl.js +64 -0
- package/dist/lint/rules/comp/index.js +33 -0
- package/dist/lint/rules/comp/support.js +129 -0
- package/dist/lint/rules/composite-scope.js +51 -0
- package/dist/lint/rules/cor017-composite-name-match.js +93 -0
- package/dist/lint/rules/cor018-composite-prefer-lexicon-type.js +136 -0
- package/dist/lint/rules/cor021-env-literal-name.js +100 -0
- package/dist/lint/rules/cor022-receipt-leaf.js +118 -0
- package/dist/lint/rules/cor024-receipt-secret-pointer.js +199 -0
- package/dist/lint/rules/declarable-naming-convention.js +62 -0
- package/dist/lint/rules/evl001-non-literal-expression.js +66 -0
- package/dist/lint/rules/evl002-control-flow-resource.js +69 -0
- package/dist/lint/rules/evl003-dynamic-property-access.js +44 -0
- package/dist/lint/rules/evl004-spread-non-const.js +94 -0
- package/dist/lint/rules/evl005-resource-block-body.js +41 -0
- package/dist/lint/rules/evl007-invalid-siblings.js +105 -0
- package/dist/lint/rules/evl009-composite-no-constant.js +158 -0
- package/dist/lint/rules/evl010-composite-no-transform.js +59 -0
- package/dist/lint/rules/evl011-symbolic-in-template.js +106 -0
- package/dist/lint/rules/export-required.js +115 -0
- package/dist/lint/rules/file-declarable-limit.js +88 -0
- package/dist/lint/rules/flat-declarations.js +62 -0
- package/dist/lint/rules/index.js +90 -0
- package/dist/lint/rules/no-cyclic-declarable-ref.js +138 -0
- package/dist/lint/rules/no-redundant-type-import.js +76 -0
- package/dist/lint/rules/no-redundant-value-cast.js +41 -0
- package/dist/lint/rules/no-string-ref.js +59 -0
- package/dist/lint/rules/no-unused-declarable-import.js +75 -0
- package/dist/lint/rules/no-unused-declarable.js +142 -0
- package/dist/lint/rules/op/index.js +28 -0
- package/dist/lint/rules/op/ops012-activity-contract.js +54 -0
- package/dist/lint/rules/op/ops013-step-output-ref.js +88 -0
- package/dist/lint/rules/op/ops014-converge-rule-refusals.js +114 -0
- package/dist/lint/rules/op/ops015-gate-approval.js +45 -0
- package/dist/lint/rules/op/support.js +11 -0
- package/dist/lint/rules/op/sys010-key-over-plain-http.js +100 -0
- package/dist/lint/rules/property-kind.js +56 -0
- package/dist/lint/rules/single-concern-file.js +71 -0
- package/dist/lint/rules/sys001-no-literal-key.js +60 -0
- package/dist/lint/selectors.js +168 -0
- package/dist/lint/suppressions.js +129 -0
- package/dist/lint/typescript.js +17 -0
- package/dist/live-endpoint.js +113 -0
- package/dist/live-read-session.js +76 -0
- package/dist/lsp/lexicon-providers.js +163 -0
- package/dist/lsp/types.js +5 -0
- package/dist/managed-fields.js +293 -0
- package/dist/mcp/types.js +4 -0
- package/dist/notify-verify.js +0 -1
- package/dist/notify.js +0 -1
- package/dist/notify.schema.json +72 -0
- package/dist/observation.js +266 -0
- package/dist/okf-read.js +134 -0
- package/dist/okf.js +275 -0
- package/dist/op/__fixtures__/decide-stub-backend.js +125 -0
- package/dist/op/activities/activity-contracts.js +313 -0
- package/dist/op/activities/apply.js +582 -0
- package/dist/op/activities/build.js +18 -0
- package/dist/op/activities/change-coverage.js +40 -0
- package/dist/op/activities/change-set.js +64 -0
- package/dist/op/activities/converge.js +492 -0
- package/dist/op/activities/decide.js +211 -0
- package/dist/op/activities/env-teardown.js +110 -0
- package/dist/op/activities/factory.js +591 -0
- package/dist/op/activities/forge-pull-request.js +82 -0
- package/dist/op/activities/gh-host.js +78 -0
- package/dist/op/activities/guard-validate.js +165 -0
- package/dist/op/activities/http-check.js +40 -0
- package/dist/op/activities/index.js +59 -0
- package/dist/op/activities/lexicon-upgrade.js +629 -0
- package/dist/op/activities/lifecycle.js +109 -0
- package/dist/op/activities/pipeline-audit.js +147 -0
- package/dist/op/activities/policy.js +26 -0
- package/dist/op/activities/predict-behaviour.js +341 -0
- package/dist/op/activities/propose-upgrade.js +165 -0
- package/dist/op/activities/reconcile.js +997 -0
- package/dist/op/activities/shell.js +118 -0
- package/dist/op/activities/source-release.js +97 -0
- package/dist/op/activities/source-rollback.js +165 -0
- package/dist/op/activities/teardown.js +17 -0
- package/dist/op/activities/util.js +6 -0
- package/dist/op/activities/wait.js +51 -0
- package/dist/op/activities/work-evidence.js +35 -0
- package/dist/op/activities/workflow-audit.js +133 -0
- package/dist/op/activity-contract-registry.js +106 -0
- package/dist/op/activity-contract.js +232 -0
- package/dist/op/activity-failure.js +31 -0
- package/dist/op/activity-profiles.js +129 -0
- package/dist/op/activity-registry.js +105 -0
- package/dist/op/activity-runtime.js +28 -0
- package/dist/op/builders.js +801 -0
- package/dist/op/change-signal.js +118 -0
- package/dist/op/composites/apply-op.js +151 -0
- package/dist/op/composites/behaviour-op.js +65 -0
- package/dist/op/composites/converge-op.js +141 -0
- package/dist/op/composites/index.js +19 -0
- package/dist/op/composites/lexicon-upgrade-op.js +107 -0
- package/dist/op/composites/pipeline-audit-op.js +50 -0
- package/dist/op/composites/reconcile-op.js +84 -0
- package/dist/op/composites/watch-op.js +69 -0
- package/dist/op/composites/workflow-audit-op.js +57 -0
- package/dist/op/converge-rule.js +205 -0
- package/dist/op/cron.js +146 -0
- package/dist/op/decide-backend.js +181 -0
- package/dist/op/decide-config.js +68 -0
- package/dist/op/decide-read-inputs.js +141 -0
- package/dist/op/discover.d.ts.map +1 -1
- package/dist/op/discover.js +213 -0
- package/dist/op/duration.js +21 -0
- package/dist/op/emulator-freshness.js +80 -0
- package/dist/op/emulator-lifecycle.js +269 -0
- package/dist/op/factory.js +83 -0
- package/dist/op/gate-approval.js +172 -0
- package/dist/op/gate-name.js +86 -0
- package/dist/op/gate-plan-context.js +167 -0
- package/dist/op/gate-point-run.js +67 -0
- package/dist/op/gate-point.js +111 -0
- package/dist/op/gate-resume-plan.js +155 -0
- package/dist/op/gate-resume.js +31 -0
- package/dist/op/gate-review.js +290 -0
- package/dist/op/gate-run-locator.js +85 -0
- package/dist/op/gate-summary.js +100 -0
- package/dist/op/gate-wait.js +56 -0
- package/dist/op/gate.js +449 -0
- package/dist/op/generate-pipeline.js +124 -0
- package/dist/op/index.js +51 -0
- package/dist/op/lifecycle-receipt-store.js +45 -0
- package/dist/op/local-executor.js +1164 -0
- package/dist/op/local-output.js +140 -0
- package/dist/op/op-ir.js +317 -0
- package/dist/op/op-verb-class.js +131 -0
- package/dist/op/op-waves-notify.js +136 -0
- package/dist/op/op-waves-run.d.ts +1 -1
- package/dist/op/op-waves-run.d.ts.map +1 -1
- package/dist/op/op-waves-run.js +1657 -0
- package/dist/op/op-waves.js +409 -0
- package/dist/op/operator.js +743 -0
- package/dist/op/receipt-store.js +94 -0
- package/dist/op/resource.js +23 -0
- package/dist/op/run-context.js +28 -0
- package/dist/op/run-live.js +256 -0
- package/dist/op/runtime.js +21 -0
- package/dist/op/runtimes/local.js +195 -0
- package/dist/op/source-archive.js +131 -0
- package/dist/op/step-output-ref.js +397 -0
- package/dist/op/steward-beside.js +169 -0
- package/dist/op/steward-points.js +138 -0
- package/dist/op/steward-turn.js +59 -0
- package/dist/op/steward.js +317 -0
- package/dist/op/types.js +25 -0
- package/dist/op/work-lease-decl.js +81 -0
- package/dist/op/work-lease-run.js +393 -0
- package/dist/override-gate.js +284 -0
- package/dist/owner-chain.js +74 -0
- package/dist/ownership.js +92 -0
- package/dist/params.js +61 -0
- package/dist/plan-summary.js +711 -0
- package/dist/point-decision.js +211 -0
- package/dist/pr-forge.js +810 -0
- package/dist/pr-loop.js +203 -0
- package/dist/project-codegen.js +191 -0
- package/dist/project-root.js +74 -0
- package/dist/project-validation.js +50 -0
- package/dist/provenance.js +157 -0
- package/dist/pseudo-parameter.js +40 -0
- package/dist/reconcile.js +450 -0
- package/dist/resource-attributes.js +33 -0
- package/dist/runtime-adapter.js +77 -0
- package/dist/runtime.js +66 -0
- package/dist/secret-materialization.js +153 -0
- package/dist/secret-provenance.js +250 -0
- package/dist/serializer-walker.js +112 -0
- package/dist/serializer.js +1 -0
- package/dist/sort.js +45 -0
- package/dist/stack-output.js +115 -0
- package/dist/telemetry-attribution.js +149 -0
- package/dist/terraform/__fixtures__/build-graph.js +63 -0
- package/dist/terraform/adopt-state.js +40 -0
- package/dist/terraform/aws-resources.js +384 -0
- package/dist/terraform/bridge.js +204 -0
- package/dist/terraform/carve-provider.js +155 -0
- package/dist/terraform/carve.js +138 -0
- package/dist/terraform/data-source-shape.js +57 -0
- package/dist/terraform/emit-source.js +36 -0
- package/dist/terraform/excise.js +123 -0
- package/dist/terraform/graduate.js +128 -0
- package/dist/terraform/graph.js +435 -0
- package/dist/terraform/hcl2json.js +60 -0
- package/dist/terraform/manifest.js +149 -0
- package/dist/terraform/parse.js +81 -0
- package/dist/terraform/providers/aws.js +146 -0
- package/dist/terraform/providers/gcp.js +294 -0
- package/dist/terraform/providers/index.js +17 -0
- package/dist/terraform/providers/kubernetes.js +253 -0
- package/dist/terraform/score.js +151 -0
- package/dist/terraform/state.js +67 -0
- package/dist/terraform/tier-map.js +74 -0
- package/dist/terraform/types.js +13 -0
- package/dist/terraform/unified-diff.js +132 -0
- package/dist/testing.js +295 -0
- package/dist/toml-emit.js +153 -0
- package/dist/toml-parse.js +355 -0
- package/dist/toml-utils.js +60 -0
- package/dist/toml.js +428 -0
- package/dist/ts-loader.d.ts +46 -0
- package/dist/ts-loader.d.ts.map +1 -0
- package/dist/ts-loader.js +103 -0
- package/dist/types.js +1 -0
- package/dist/utils.js +61 -0
- package/dist/validation.js +20 -0
- package/dist/vendor/js-yaml-load.js +1662 -0
- package/dist/workspace/__fixtures__/contract-repo.js +103 -0
- package/dist/workspace/__fixtures__/decide-workspace.js +112 -0
- package/dist/workspace/__fixtures__/sessions.js +91 -0
- package/dist/workspace/__fixtures__/two-member-workspace.js +34 -0
- package/dist/workspace/agent-cli.js +99 -0
- package/dist/workspace/agent.schema.json +390 -0
- package/dist/workspace/answers-ledger.js +89 -0
- package/dist/workspace/box-cli.js +142 -0
- package/dist/workspace/box-factory-write.js +196 -0
- package/dist/workspace/box-factory-write.schema.json +342 -0
- package/dist/workspace/box-factory.js +88 -0
- package/dist/workspace/box-intent.js +126 -0
- package/dist/workspace/box-isolation.js +169 -0
- package/dist/workspace/box-listing-write.schema.json +204 -0
- package/dist/workspace/box-listing.js +298 -0
- package/dist/workspace/box-publish.js +352 -0
- package/dist/workspace/box-publish.schema.json +498 -0
- package/dist/workspace/box-services.js +39 -0
- package/dist/workspace/broker-protocol.js +359 -0
- package/dist/workspace/broker-protocol.schema.json +228 -0
- package/dist/workspace/change-set.schema.json +460 -0
- package/dist/workspace/changes-cli.js +56 -0
- package/dist/workspace/changes.js +446 -0
- package/dist/workspace/changes.schema.json +642 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit-fly-site.js +198 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit-live-names.js +155 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit-rollback.js +214 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit-ship-inputs.js +180 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit-ship-policy.js +99 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit.js +847 -0
- package/dist/workspace/chant-migrations.js +113 -0
- package/dist/workspace/check.schema.json +433 -0
- package/dist/workspace/checks/box-isolation.js +62 -0
- package/dist/workspace/checks/boxes.js +491 -0
- package/dist/workspace/checks/diagrams.js +104 -0
- package/dist/workspace/checks/generated.js +419 -0
- package/dist/workspace/checks/ledgers.js +212 -0
- package/dist/workspace/checks/links.js +191 -0
- package/dist/workspace/checks/live.js +100 -0
- package/dist/workspace/checks/pipelines.js +188 -0
- package/dist/workspace/checks/records.js +169 -0
- package/dist/workspace/checks.js +426 -0
- package/dist/workspace/ci-green-cli.js +125 -0
- package/dist/workspace/ci-green-forge.js +83 -0
- package/dist/workspace/ci-green-workflow.js +199 -0
- package/dist/workspace/ci-green.js +325 -0
- package/dist/workspace/ci-last-green.schema.json +158 -0
- package/dist/workspace/compose-graph.js +235 -0
- package/dist/workspace/compose-reports.js +146 -0
- package/dist/workspace/composites.js +264 -0
- package/dist/workspace/composites.schema.json +617 -0
- package/dist/workspace/conformance/__fixture__/app/package.json +7 -0
- package/dist/workspace/conformance/__fixture__/app/src/server.mjs +29 -0
- package/dist/workspace/conformance/__fixture__/decisions/decision.kind.mjs +54 -0
- package/dist/workspace/conformance/__fixture__/decisions/decision.schema.json +512 -0
- package/dist/workspace/conformance/__fixture__/decisions/fix-001-how-the-app-is-deployed.md +40 -0
- package/dist/workspace/conformance/__fixture__/delivery/chant.config.ts +7 -0
- package/dist/workspace/conformance/__fixture__/delivery/lexicon/index.ts +26 -0
- package/dist/workspace/conformance/__fixture__/delivery/package.json +7 -0
- package/dist/workspace/conformance/__fixture__/delivery/src/app.component.ts +14 -0
- package/dist/workspace/conformance/__fixture__/delivery/src/app.ts +4 -0
- package/dist/workspace/conformance/__fixtures__/reference-broker.js +205 -0
- package/dist/workspace/conformance/__writer_fixture__/answers/answer.kind.mjs +32 -0
- package/dist/workspace/conformance/__writer_fixture__/answers/answer.schema.json +135 -0
- package/dist/workspace/conformance/__writer_fixture__/contracts/contract.kind.mjs +37 -0
- package/dist/workspace/conformance/__writer_fixture__/contracts/contract.schema.json +213 -0
- package/dist/workspace/conformance/__writer_fixture__/decisions/points.json +228 -0
- package/dist/workspace/conformance/__writer_fixture__/drivers/driver.kind.mjs +15 -0
- package/dist/workspace/conformance/__writer_fixture__/drivers/driver.schema.json +38 -0
- package/dist/workspace/conformance/__writer_fixture__/sessions/session.kind.mjs +54 -0
- package/dist/workspace/conformance/__writer_fixture__/sessions/session.schema.json +289 -0
- package/dist/workspace/conformance/__writer_fixture__/work/W-001-the-writer-suite-works-this-item.md +25 -0
- package/dist/workspace/conformance/__writer_fixture__/work/work.kind.mjs +60 -0
- package/dist/workspace/conformance/__writer_fixture__/work/work.schema.json +603 -0
- package/dist/workspace/conformance/broker.js +736 -0
- package/dist/workspace/conformance/index.js +673 -0
- package/dist/workspace/conformance/vitest.js +108 -0
- package/dist/workspace/conformance/writer.js +1080 -0
- package/dist/workspace/decide.js +879 -0
- package/dist/workspace/decision-points.schema.json +135 -135
- package/dist/workspace/declaration-write-cli.js +74 -0
- package/dist/workspace/declaration-write.js +238 -0
- package/dist/workspace/declaration.js +938 -0
- package/dist/workspace/declaration.schema.json +1413 -1413
- package/dist/workspace/declared-kinds.js +106 -0
- package/dist/workspace/environments.js +164 -0
- package/dist/workspace/evidence.schema.json +279 -0
- package/dist/workspace/export-cli.js +185 -0
- package/dist/workspace/export.js +499 -0
- package/dist/workspace/factory-rules.js +175 -0
- package/dist/workspace/generated-files.js +92 -0
- package/dist/workspace/glob.js +45 -0
- package/dist/workspace/graph-cache.js +352 -0
- package/dist/workspace/graph-cli.js +348 -0
- package/dist/workspace/graph.schema.json +1338 -0
- package/dist/workspace/identity-gate-rule.d.ts +65 -0
- package/dist/workspace/identity-gate-rule.d.ts.map +1 -0
- package/dist/workspace/identity-gate-rule.js +75 -0
- package/dist/workspace/identity.d.ts +4 -2
- package/dist/workspace/identity.d.ts.map +1 -1
- package/dist/workspace/identity.js +126 -0
- package/dist/workspace/import.js +283 -0
- package/dist/workspace/init.js +620 -0
- package/dist/workspace/intent-cli.js +263 -0
- package/dist/workspace/intent-joins.js +201 -0
- package/dist/workspace/intent-record.js +352 -0
- package/dist/workspace/intent-record.schema.json +864 -0
- package/dist/workspace/intent.js +1582 -0
- package/dist/workspace/intent.schema.json +2420 -0
- package/dist/workspace/json-edit.js +221 -0
- package/dist/workspace/jsonc.js +235 -0
- package/dist/workspace/kind-readers.js +103 -0
- package/dist/workspace/kinds.js +587 -0
- package/dist/workspace/lexicon-symbols.js +112 -0
- package/dist/workspace/lineage-adopt-cli.js +102 -0
- package/dist/workspace/lineage-adopt.js +360 -0
- package/dist/workspace/lineage-check.js +282 -0
- package/dist/workspace/lineage-cli.js +121 -0
- package/dist/workspace/lineage-hash-index.js +284 -0
- package/dist/workspace/lineage-init.js +507 -0
- package/dist/workspace/lineage-lock.js +387 -0
- package/dist/workspace/lineage-merge.js +45 -0
- package/dist/workspace/lineage-migrations.d.ts.map +1 -1
- package/dist/workspace/lineage-migrations.js +329 -0
- package/dist/workspace/lineage-provenance.js +36 -0
- package/dist/workspace/lineage-update.js +138 -0
- package/dist/workspace/lineage-upgrade-cli.js +131 -0
- package/dist/workspace/lineage-upgrade.js +889 -0
- package/dist/workspace/lineage-vendor.js +171 -0
- package/dist/workspace/lineage-version.js +128 -0
- package/dist/workspace/lineage-versions.js +275 -0
- package/dist/workspace/links.js +330 -0
- package/dist/workspace/ls-generated.js +95 -0
- package/dist/workspace/ls.js +277 -0
- package/dist/workspace/ls.schema.json +333 -0
- package/dist/workspace/member-commands.js +508 -0
- package/dist/workspace/member-handles.js +216 -0
- package/dist/workspace/member-pipeline.js +258 -0
- package/dist/workspace/member-run.js +117 -0
- package/dist/workspace/member-write.schema.json +193 -0
- package/dist/workspace/nested-graph.js +156 -0
- package/dist/workspace/nesting.js +38 -0
- package/dist/workspace/patch.js +301 -0
- package/dist/workspace/patch.schema.json +321 -0
- package/dist/workspace/pin-cli.js +55 -0
- package/dist/workspace/pin-integrity.js +100 -0
- package/dist/workspace/plan-summary.schema.json +155 -0
- package/dist/workspace/point-answer.schema.json +129 -129
- package/dist/workspace/points-cli.js +291 -0
- package/dist/workspace/points-write.schema.json +660 -0
- package/dist/workspace/points.js +521 -0
- package/dist/workspace/points.schema.json +916 -0
- package/dist/workspace/pr-report.schema.json +108 -0
- package/dist/workspace/principal-classes.d.ts +3 -14
- package/dist/workspace/principal-classes.d.ts.map +1 -1
- package/dist/workspace/principal-classes.js +245 -0
- package/dist/workspace/reason-codes.js +326 -0
- package/dist/workspace/record-assets.js +151 -0
- package/dist/workspace/record-decided.js +105 -0
- package/dist/workspace/record-sessions.js +96 -0
- package/dist/workspace/record-source.js +114 -0
- package/dist/workspace/records-amend.schema.json +284 -0
- package/dist/workspace/records-checkout.js +76 -0
- package/dist/workspace/records-cli.js +707 -0
- package/dist/workspace/records-close.js +116 -0
- package/dist/workspace/records-close.schema.json +278 -0
- package/dist/workspace/records-new.schema.json +202 -0
- package/dist/workspace/records-review.schema.json +367 -0
- package/dist/workspace/records-since.js +317 -0
- package/dist/workspace/records-since.schema.json +218 -0
- package/dist/workspace/records-write.js +1229 -0
- package/dist/workspace/records.js +1345 -0
- package/dist/workspace/records.schema.json +604 -0
- package/dist/workspace/reference-kinds/app/package.json +10 -0
- package/dist/workspace/reference-kinds/app/workspace-kinds.json +45 -0
- package/dist/workspace/returns.js +303 -0
- package/dist/workspace/root-refusal.js +75 -0
- package/dist/workspace/run-statement.schema.json +622 -0
- package/dist/workspace/runs-cli.js +584 -0
- package/dist/workspace/runs-write.schema.json +994 -0
- package/dist/workspace/runs.js +708 -0
- package/dist/workspace/runs.schema.json +1257 -0
- package/dist/workspace/runtimes.js +76 -0
- package/dist/workspace/session-kinds.js +83 -0
- package/dist/workspace/signers.schema.json +206 -0
- package/dist/workspace/source-block.js +125 -0
- package/dist/workspace/squash.js +177 -0
- package/dist/workspace/status-gates.js +162 -0
- package/dist/workspace/status-stewards.js +330 -0
- package/dist/workspace/status.js +514 -0
- package/dist/workspace/status.schema.json +998 -0
- package/dist/workspace/steward-index.js +191 -0
- package/dist/workspace/symbols.js +188 -0
- package/dist/workspace/template-manifest.js +227 -0
- package/dist/workspace/template-pins.js +115 -0
- package/dist/workspace/trailer-joins.js +65 -0
- package/dist/workspace/trailers.js +111 -0
- package/dist/workspace/tree.js +136 -0
- package/dist/workspace/trust/attestor.js +63 -0
- package/dist/workspace/trust/dsse.js +108 -0
- package/dist/workspace/trust/evidence-cli.js +175 -0
- package/dist/workspace/trust/evidence.js +161 -0
- package/dist/workspace/trust/gate-seal.js +226 -0
- package/dist/workspace/trust/policy.js +190 -0
- package/dist/workspace/trust/provenance.js +180 -0
- package/dist/workspace/trust/rotation.js +298 -0
- package/dist/workspace/trust/run-commits.js +101 -0
- package/dist/workspace/trust/run-statement.js +182 -0
- package/dist/workspace/trust/seal.js +272 -0
- package/dist/workspace/trust/signers-cli.js +152 -0
- package/dist/workspace/trust/ssh-commit.js +178 -0
- package/dist/workspace/trust/test-repo.js +118 -0
- package/dist/workspace/trust/trust-files.js +193 -0
- package/dist/workspace/trust/verify-cli.js +63 -0
- package/dist/workspace/trust/verify.js +192 -0
- package/dist/workspace/which-chant.js +141 -0
- package/dist/workspace/wip-cli.js +95 -0
- package/dist/workspace/wip-write.schema.json +504 -0
- package/dist/workspace/wip.js +631 -0
- package/dist/workspace/wip.schema.json +334 -0
- package/dist/workspace/work-cli.js +448 -0
- package/dist/workspace/work-evidence.js +122 -0
- package/dist/workspace/work-evidence.schema.json +222 -0
- package/dist/workspace/work-history.schema.json +421 -0
- package/dist/workspace/work-lease.schema.json +246 -0
- package/dist/workspace/work-size.js +77 -0
- package/dist/workspace/work.js +283 -0
- package/dist/workspace/workspace-kinds.schema.json +259 -259
- package/dist/workspace/workspace-principals.schema.json +53 -53
- package/dist/workspace/write-lock-cli.js +105 -0
- package/dist/workspace/write-lock.js +424 -0
- package/dist/workspace/write-lock.schema.json +172 -0
- package/dist/workspace/write-scope.js +484 -0
- package/dist/yaml.js +459 -0
- package/package.json +2 -2
- package/src/cli/commands/check-lexicon-plugin.ts +2 -0
- package/src/cli/commands/lint.ts +36 -6
- package/src/cli/commands/migrate.ts +2 -0
- package/src/cli/compiled-cli.e2e.test.ts +165 -0
- package/src/cli/main.ts +121 -27
- package/src/cli/mcp/workspace-tools.ts +1 -1
- package/src/codegen/pinned-upgrade.ts +2 -0
- package/src/components/discover.ts +2 -0
- package/src/components/sandbox/driver.ts +3 -1
- package/src/config-import.ts +3 -0
- package/src/discovery/fold-import.ts +23 -14
- package/src/discovery/import.ts +2 -0
- package/src/discovery/sandbox/driver.ts +3 -1
- package/src/gate-decision-bundle.test.ts +3 -2
- package/src/gate-decision-identity.test.ts +176 -0
- package/src/gate-decision.ts +100 -22
- package/src/lexicon-module.ts +3 -0
- package/src/lifecycle/gate-ledger.ts +8 -0
- package/src/lint/config.ts +1 -1
- package/src/lint/discover.ts +28 -8
- package/src/lint/policy-import.ts +4 -1
- package/src/lint/rule-loader.ts +2 -0
- package/src/op/discover.ts +3 -0
- package/src/op/op-waves-point.test.ts +1 -0
- package/src/op/op-waves-run.ts +5 -4
- package/src/op/op-waves.test.ts +14 -0
- package/src/ts-loader.test.ts +23 -0
- package/src/ts-loader.ts +122 -0
- package/src/workspace/chant-migrations/chud-lexicon-exit.ts +1 -1
- package/src/workspace/declaration.ts +1 -1
- package/src/workspace/identity-gate-rule.ts +109 -0
- package/src/workspace/identity.ts +8 -18
- package/src/workspace/kinds.ts +1 -1
- package/src/workspace/lineage-migrations.ts +2 -0
- package/src/workspace/points.ts +1 -1
- package/src/workspace/principal-classes.ts +5 -30
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-discovery for lint rules and post-synth checks.
|
|
3
|
+
*
|
|
4
|
+
* Scans directories for .ts files and loads exported rules/checks,
|
|
5
|
+
* eliminating the need to manually list every rule in plugin.ts.
|
|
6
|
+
*/
|
|
7
|
+
import { readdirSync } from "fs";
|
|
8
|
+
import { join } from "path";
|
|
9
|
+
import { createRequire } from "module";
|
|
10
|
+
import { ensureTypeScriptLoader } from "../ts-loader.js";
|
|
11
|
+
let cjsTypeScript = false;
|
|
12
|
+
/**
|
|
13
|
+
* Register tsx so createRequire can load TypeScript files in Node.js ESM
|
|
14
|
+
* context. Does nothing when tsx is not available; then only pre-compiled .js
|
|
15
|
+
* files can be require()'d.
|
|
16
|
+
*
|
|
17
|
+
* From source this runs when the module loads, as it always has: vitest and
|
|
18
|
+
* the source CLI rely on tsx's CommonJS hook being in place from then on. The
|
|
19
|
+
* compiled CLI imports this module on every start and most commands read no
|
|
20
|
+
* rule directory, so there it waits for the first one (#3878).
|
|
21
|
+
*/
|
|
22
|
+
function registerTypeScriptRequire() {
|
|
23
|
+
if (cjsTypeScript)
|
|
24
|
+
return;
|
|
25
|
+
cjsTypeScript = true;
|
|
26
|
+
if (ensureTypeScriptLoader())
|
|
27
|
+
return;
|
|
28
|
+
try {
|
|
29
|
+
const _req = createRequire(import.meta.url);
|
|
30
|
+
const { register } = _req("tsx/cjs/api");
|
|
31
|
+
register();
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
// tsx not available; only pre-compiled .js files can be require()'d
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
if (!import.meta.url.endsWith(".js"))
|
|
38
|
+
registerTypeScriptRequire();
|
|
39
|
+
/**
|
|
40
|
+
* Discover lint rules from a directory.
|
|
41
|
+
*
|
|
42
|
+
* Scans the directory for .ts files (excluding tests, helpers, and index files),
|
|
43
|
+
* loads each module, and collects any exported objects that look like a LintRule
|
|
44
|
+
* (has `id`, `severity`, `category`, and `check` function).
|
|
45
|
+
*
|
|
46
|
+
* @param dir - Absolute path to the rules directory
|
|
47
|
+
* @param importMetaUrl - The caller's import.meta.url (for createRequire)
|
|
48
|
+
*/
|
|
49
|
+
export function discoverLintRules(dir, importMetaUrl) {
|
|
50
|
+
registerTypeScriptRequire();
|
|
51
|
+
const require = createRequire(importMetaUrl);
|
|
52
|
+
const rules = [];
|
|
53
|
+
for (const file of listRuleFiles(dir)) {
|
|
54
|
+
try {
|
|
55
|
+
// Strip .ts extension — require() resolves without it
|
|
56
|
+
const modPath = join(dir, file.replace(/\.ts$/, ""));
|
|
57
|
+
const mod = require(modPath);
|
|
58
|
+
for (const exp of Object.values(mod)) {
|
|
59
|
+
if (isLintRule(exp))
|
|
60
|
+
rules.push(exp);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// Skip files that fail to load
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return rules.sort((a, b) => a.id.localeCompare(b.id));
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Discover post-synth checks from a directory.
|
|
71
|
+
*
|
|
72
|
+
* Scans the directory for .ts files (excluding tests, helpers, and index files),
|
|
73
|
+
* loads each module, and collects any exported objects that look like a PostSynthCheck
|
|
74
|
+
* (has `id`, `description`, and `check` function).
|
|
75
|
+
*
|
|
76
|
+
* @param dir - Absolute path to the post-synth rules directory
|
|
77
|
+
* @param importMetaUrl - The caller's import.meta.url (for createRequire)
|
|
78
|
+
*/
|
|
79
|
+
export function discoverPostSynthChecks(dir, importMetaUrl) {
|
|
80
|
+
registerTypeScriptRequire();
|
|
81
|
+
const require = createRequire(importMetaUrl);
|
|
82
|
+
const checks = [];
|
|
83
|
+
for (const file of listRuleFiles(dir)) {
|
|
84
|
+
try {
|
|
85
|
+
// Strip .ts extension — require() resolves without it
|
|
86
|
+
const modPath = join(dir, file.replace(/\.ts$/, ""));
|
|
87
|
+
const mod = require(modPath);
|
|
88
|
+
for (const exp of Object.values(mod)) {
|
|
89
|
+
if (isPostSynthCheck(exp))
|
|
90
|
+
checks.push(exp);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
// Skip files that fail to load
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return checks.sort((a, b) => a.id.localeCompare(b.id));
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* List rule files in a directory (excluding tests, helpers, index).
|
|
101
|
+
*/
|
|
102
|
+
export function listRuleFiles(dir) {
|
|
103
|
+
try {
|
|
104
|
+
return readdirSync(dir).filter((f) => {
|
|
105
|
+
if (!f.endsWith(".ts"))
|
|
106
|
+
return false;
|
|
107
|
+
if (f.endsWith(".test.ts"))
|
|
108
|
+
return false;
|
|
109
|
+
if (f === "index.ts")
|
|
110
|
+
return false;
|
|
111
|
+
if (f.includes("helper"))
|
|
112
|
+
return false;
|
|
113
|
+
return true;
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
return [];
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
function isLintRule(obj) {
|
|
121
|
+
if (typeof obj !== "object" || obj === null)
|
|
122
|
+
return false;
|
|
123
|
+
const o = obj;
|
|
124
|
+
return (typeof o.id === "string" &&
|
|
125
|
+
typeof o.severity === "string" &&
|
|
126
|
+
typeof o.category === "string" &&
|
|
127
|
+
typeof o.check === "function");
|
|
128
|
+
}
|
|
129
|
+
function isPostSynthCheck(obj) {
|
|
130
|
+
if (typeof obj !== "object" || obj === null)
|
|
131
|
+
return false;
|
|
132
|
+
const o = obj;
|
|
133
|
+
return (typeof o.id === "string" &&
|
|
134
|
+
typeof o.description === "string" &&
|
|
135
|
+
typeof o.check === "function" &&
|
|
136
|
+
// Exclude LintRules (which also have check) by checking for PostSynthCheck-specific fields
|
|
137
|
+
typeof o.severity !== "string");
|
|
138
|
+
}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import { parseFile } from "./parser.js";
|
|
2
|
+
import { readFileSync } from "fs";
|
|
3
|
+
/**
|
|
4
|
+
* Parse disable comments from source code
|
|
5
|
+
* Supports:
|
|
6
|
+
* - // chant-disable - disable all rules for entire file
|
|
7
|
+
* - // chant-disable-line - disable all rules for current line
|
|
8
|
+
* - // chant-disable-next-line - disable all rules for next line
|
|
9
|
+
* - // chant-disable rule-id1 rule-id2 - disable specific rules for file
|
|
10
|
+
* - // chant-disable-line rule-id1 - disable specific rules for line
|
|
11
|
+
* - // chant-disable-next-line rule-id1 - disable specific rules for next line
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Parse the text after a directive keyword, splitting rule IDs from an optional reason.
|
|
15
|
+
* Reason is separated by ` -- ` (first occurrence only).
|
|
16
|
+
* Trailing `--` with no text is treated as no reason.
|
|
17
|
+
*/
|
|
18
|
+
function parseDirectiveText(afterDirective) {
|
|
19
|
+
if (!afterDirective)
|
|
20
|
+
return {};
|
|
21
|
+
const trimmed = afterDirective.trim();
|
|
22
|
+
if (!trimmed)
|
|
23
|
+
return {};
|
|
24
|
+
// Handle `-- reason` at the start (no rule IDs, just reason)
|
|
25
|
+
if (trimmed.startsWith("-- ")) {
|
|
26
|
+
const reasonPart = trimmed.slice(3).trim();
|
|
27
|
+
return { reason: reasonPart || undefined };
|
|
28
|
+
}
|
|
29
|
+
// Handle bare `--` (no rule IDs, no reason)
|
|
30
|
+
if (trimmed === "--") {
|
|
31
|
+
return {};
|
|
32
|
+
}
|
|
33
|
+
// Handle `RULE_ID -- reason` (rule IDs + reason separated by ` -- `)
|
|
34
|
+
const dashIdx = trimmed.indexOf(" -- ");
|
|
35
|
+
if (dashIdx >= 0) {
|
|
36
|
+
const idsPart = trimmed.slice(0, dashIdx).trim();
|
|
37
|
+
const reasonPart = trimmed.slice(dashIdx + 4).trim();
|
|
38
|
+
const ruleIds = idsPart ? idsPart.split(/\s+/).filter(Boolean) : undefined;
|
|
39
|
+
const reason = reasonPart || undefined;
|
|
40
|
+
return {
|
|
41
|
+
ruleIds: ruleIds && ruleIds.length > 0 ? ruleIds : undefined,
|
|
42
|
+
reason,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
// Handle trailing ` --` with no reason text
|
|
46
|
+
if (trimmed.endsWith(" --")) {
|
|
47
|
+
const idsPart = trimmed.slice(0, -3).trim();
|
|
48
|
+
const ruleIds = idsPart ? idsPart.split(/\s+/).filter(Boolean) : undefined;
|
|
49
|
+
return {
|
|
50
|
+
ruleIds: ruleIds && ruleIds.length > 0 ? ruleIds : undefined,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
// No `--` at all — just rule IDs
|
|
54
|
+
const ruleIds = trimmed.split(/\s+/).filter(Boolean);
|
|
55
|
+
return {
|
|
56
|
+
ruleIds: ruleIds.length > 0 ? ruleIds : undefined,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Parse `chant-disable`/`chant-disable-line`/`chant-disable-next-line`
|
|
61
|
+
* comments out of raw file content. Exported (in addition to being used
|
|
62
|
+
* internally by `runLint`) so other diagnostic sources that are not plain
|
|
63
|
+
* per-file AST `LintRule`s — e.g. ../lint/rules/comp's component composition
|
|
64
|
+
* checks, which produce whole-component diagnostics rather than
|
|
65
|
+
* exact-line ones — can still honor at least the file-level directive form
|
|
66
|
+
* without duplicating this parsing.
|
|
67
|
+
*/
|
|
68
|
+
export function parseDisableComments(content) {
|
|
69
|
+
const directives = [];
|
|
70
|
+
const lines = content.split("\n");
|
|
71
|
+
for (let i = 0; i < lines.length; i++) {
|
|
72
|
+
const line = lines[i];
|
|
73
|
+
const lineNumber = i + 1;
|
|
74
|
+
// Match disable comments
|
|
75
|
+
const disableFileMatch = line.match(/\/\/\s*chant-disable(?:\s+(.+))?$/);
|
|
76
|
+
const disableLineMatch = line.match(/\/\/\s*chant-disable-line(?:\s+(.+))?$/);
|
|
77
|
+
const disableNextLineMatch = line.match(/\/\/\s*chant-disable-next-line(?:\s+(.+))?$/);
|
|
78
|
+
if (disableNextLineMatch) {
|
|
79
|
+
const { ruleIds, reason } = parseDirectiveText(disableNextLineMatch[1]);
|
|
80
|
+
directives.push({
|
|
81
|
+
line: lineNumber + 1, // Next line
|
|
82
|
+
type: "next-line",
|
|
83
|
+
ruleIds,
|
|
84
|
+
reason,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
else if (disableLineMatch) {
|
|
88
|
+
const { ruleIds, reason } = parseDirectiveText(disableLineMatch[1]);
|
|
89
|
+
directives.push({
|
|
90
|
+
line: lineNumber,
|
|
91
|
+
type: "line",
|
|
92
|
+
ruleIds,
|
|
93
|
+
reason,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
else if (disableFileMatch) {
|
|
97
|
+
const { ruleIds, reason } = parseDirectiveText(disableFileMatch[1]);
|
|
98
|
+
directives.push({
|
|
99
|
+
line: lineNumber,
|
|
100
|
+
type: "file",
|
|
101
|
+
ruleIds,
|
|
102
|
+
reason,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return directives;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Check if a diagnostic should be suppressed based on disable directives.
|
|
110
|
+
* Returns suppression info if suppressed, or null if not suppressed.
|
|
111
|
+
*/
|
|
112
|
+
function isDiagnosticDisabled(diagnostic, directives, allRuleIds) {
|
|
113
|
+
// Check for file-level disables
|
|
114
|
+
const fileDisables = directives.filter((d) => d.type === "file");
|
|
115
|
+
for (const directive of fileDisables) {
|
|
116
|
+
if (!directive.ruleIds) {
|
|
117
|
+
// Disable all rules
|
|
118
|
+
return { suppressed: true, reason: directive.reason };
|
|
119
|
+
}
|
|
120
|
+
// Check if rule ID exists before checking if it's disabled
|
|
121
|
+
if (directive.ruleIds.some((id) => allRuleIds.has(id))) {
|
|
122
|
+
if (directive.ruleIds.includes(diagnostic.ruleId)) {
|
|
123
|
+
return { suppressed: true, reason: directive.reason };
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// Silently ignore non-existent rule IDs
|
|
127
|
+
}
|
|
128
|
+
// Check for line-specific disables
|
|
129
|
+
const lineDisables = directives.filter((d) => (d.type === "line" || d.type === "next-line") && d.line === diagnostic.line);
|
|
130
|
+
for (const directive of lineDisables) {
|
|
131
|
+
if (!directive.ruleIds) {
|
|
132
|
+
// Disable all rules
|
|
133
|
+
return { suppressed: true, reason: directive.reason };
|
|
134
|
+
}
|
|
135
|
+
// Check if rule ID exists before checking if it's disabled
|
|
136
|
+
if (directive.ruleIds.some((id) => allRuleIds.has(id))) {
|
|
137
|
+
if (directive.ruleIds.includes(diagnostic.ruleId)) {
|
|
138
|
+
return { suppressed: true, reason: directive.reason };
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// Silently ignore non-existent rule IDs
|
|
142
|
+
}
|
|
143
|
+
return { suppressed: false };
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* The error reported when a rule throws while checking a file (#2511). It
|
|
147
|
+
* names the rule, the file and the thrown message, at error severity so
|
|
148
|
+
* `chant lint` exits non-zero.
|
|
149
|
+
*/
|
|
150
|
+
export function ruleThrewDiagnostic(ruleId, filePath, error) {
|
|
151
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
152
|
+
return {
|
|
153
|
+
file: filePath,
|
|
154
|
+
line: 1,
|
|
155
|
+
column: 1,
|
|
156
|
+
ruleId,
|
|
157
|
+
severity: "error",
|
|
158
|
+
message: `Rule ${ruleId} threw while checking ${filePath}: ${message}`,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Execute lint rules on a set of files
|
|
163
|
+
* @param files - Array of file paths to lint
|
|
164
|
+
* @param rules - Array of lint rules to execute
|
|
165
|
+
* @param ruleOptions - Optional map of rule ID to options object
|
|
166
|
+
* @param intrinsics - chant #1106 — the active lexicons' registered
|
|
167
|
+
* intrinsics (e.g. AWS's `Ref`, `GetAtt`), put on every file's
|
|
168
|
+
* `LintContext.intrinsics` so a rule built on `../fold/subset.ts`'s
|
|
169
|
+
* shared predicate (EVL001) answers exactly like `fold()` does for a
|
|
170
|
+
* registered, opted-in call, instead of degrading to "every call is a
|
|
171
|
+
* violation". Mirrors how `discover()` has threaded the same
|
|
172
|
+
* `IntrinsicDef[]` into the fold path since #1039/#1105. Optional and
|
|
173
|
+
* defaulting to none, so a caller that hasn't resolved a project's
|
|
174
|
+
* lexicons (a unit test, `bench.test.ts`) is unaffected.
|
|
175
|
+
* @param projectConfig - chant #1221 — the project's config slice for
|
|
176
|
+
* config-aware rules (COR021 reads `environments` + `ownership`), put on
|
|
177
|
+
* every file's `LintContext.projectConfig`. Optional; without it those
|
|
178
|
+
* rules stay silent.
|
|
179
|
+
* @param propertyClasses - chant #2957 — the class names the active
|
|
180
|
+
* lexicons declare property-kind (`LexiconPlugin.propertyClassNames()`),
|
|
181
|
+
* put on every file's `LintContext.propertyClasses` so COR001, COR004 and
|
|
182
|
+
* COR009 leave those declarables out. Optional; without it every
|
|
183
|
+
* declarable counts.
|
|
184
|
+
* @returns LintRunResult with diagnostics and suppressed items
|
|
185
|
+
*/
|
|
186
|
+
export async function runLint(files, rules, ruleOptions, intrinsics, projectConfig, propertyClasses) {
|
|
187
|
+
const allDiagnostics = [];
|
|
188
|
+
const allSuppressed = [];
|
|
189
|
+
const allRuleIds = new Set(rules.map((r) => r.id));
|
|
190
|
+
for (const filePath of files) {
|
|
191
|
+
try {
|
|
192
|
+
// Parse the file
|
|
193
|
+
const sourceFile = parseFile(filePath);
|
|
194
|
+
// Read file content for disable comment parsing
|
|
195
|
+
const content = readFileSync(filePath, "utf-8");
|
|
196
|
+
const directives = parseDisableComments(content);
|
|
197
|
+
// Create lint context
|
|
198
|
+
const context = {
|
|
199
|
+
sourceFile,
|
|
200
|
+
entities: [],
|
|
201
|
+
filePath,
|
|
202
|
+
lexicon: undefined,
|
|
203
|
+
intrinsics,
|
|
204
|
+
projectConfig,
|
|
205
|
+
propertyClasses,
|
|
206
|
+
};
|
|
207
|
+
// Execute each rule. A rule that throws is reported as an error for
|
|
208
|
+
// this file (#2511) and the remaining rules still run.
|
|
209
|
+
const ruleErrors = [];
|
|
210
|
+
for (const rule of rules) {
|
|
211
|
+
const options = ruleOptions?.get(rule.id);
|
|
212
|
+
try {
|
|
213
|
+
const diagnostics = rule.check(context, options);
|
|
214
|
+
allDiagnostics.push(...diagnostics);
|
|
215
|
+
}
|
|
216
|
+
catch (error) {
|
|
217
|
+
ruleErrors.push(ruleThrewDiagnostic(rule.id, filePath, error));
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
// Partition file diagnostics into active and suppressed
|
|
221
|
+
const fileDiags = allDiagnostics.filter((d) => d.file === filePath);
|
|
222
|
+
const otherFileDiags = allDiagnostics.filter((d) => d.file !== filePath);
|
|
223
|
+
const keptDiags = [];
|
|
224
|
+
for (const diagnostic of fileDiags) {
|
|
225
|
+
const result = isDiagnosticDisabled(diagnostic, directives, allRuleIds);
|
|
226
|
+
if (result.suppressed) {
|
|
227
|
+
allSuppressed.push({ ...diagnostic, reason: result.reason });
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
keptDiags.push(diagnostic);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
// Replace file diagnostics with filtered ones
|
|
234
|
+
allDiagnostics.length = 0;
|
|
235
|
+
// A rule's own failure is never suppressed by a disable comment: the
|
|
236
|
+
// comment is aimed at the rule's findings, and hiding the failure would
|
|
237
|
+
// make a rule that did not run look like a clean lint.
|
|
238
|
+
allDiagnostics.push(...otherFileDiags, ...keptDiags, ...ruleErrors);
|
|
239
|
+
}
|
|
240
|
+
catch (error) {
|
|
241
|
+
// If parsing fails, skip this file and continue with others
|
|
242
|
+
continue;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
return { diagnostics: allDiagnostics, suppressed: allSuppressed };
|
|
246
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { bindConcepts } from "../okf-read.js";
|
|
2
|
+
/**
|
|
3
|
+
* COR026: Stale Knowledge Binding (#1865, design #1059, epic #1057)
|
|
4
|
+
*
|
|
5
|
+
* A concept's `binds` frontmatter key names a discovered entity's logical
|
|
6
|
+
* name (#1864, `../okf-read.ts`'s `bindConcepts`). A name that resolves to
|
|
7
|
+
* nothing is a stale binding — the entity was renamed or removed, or the
|
|
8
|
+
* concept was authored against a name that never existed — and per #1059's
|
|
9
|
+
* stated failure posture ("the spec permits broken links, which argues for
|
|
10
|
+
* warn") that is a warning, never a build failure: knowledge is deliberately
|
|
11
|
+
* softer than the typed graph it describes, and OKF itself tolerates broken
|
|
12
|
+
* links (epic #1057).
|
|
13
|
+
*
|
|
14
|
+
* The converse is deliberately silent: a concept with no `binds` at all is
|
|
15
|
+
* orphaned knowledge, not an omission (a runbook, a decision about the
|
|
16
|
+
* project as a whole), and `bindConcepts` never reports it as unresolved in
|
|
17
|
+
* the first place — see its own doc comment. A project with no knowledge
|
|
18
|
+
* bundle loads an empty one (`loadOkfBundle`), so this check produces no
|
|
19
|
+
* diagnostics either.
|
|
20
|
+
*
|
|
21
|
+
* Wired into `chant build` (`../cli/commands/build.ts`) alongside
|
|
22
|
+
* `coreReceiptChecks` — same reasons COR023/COR024 are build-owned rather
|
|
23
|
+
* than a per-file `LintRule`: the check needs the full discovered entity map
|
|
24
|
+
* (`ctx.entities`), not one `ts.SourceFile`, and that map only exists after
|
|
25
|
+
* discovery has run. Unlike COR023/024 it never reads `ctx.outputs` — the
|
|
26
|
+
* bundle is loaded once, up front (async — `loadOkfBundle` reads the
|
|
27
|
+
* filesystem), and closed over here so the check itself stays the same sync
|
|
28
|
+
* shape every other `PostSynthCheck` has.
|
|
29
|
+
*/
|
|
30
|
+
export const STALE_KNOWLEDGE_BINDING_CHECK_ID = "COR026";
|
|
31
|
+
/**
|
|
32
|
+
* Build the COR026 check for one loaded bundle. A factory, not a bare
|
|
33
|
+
* constant, because — unlike `coreReceiptChecks`, which needs nothing but
|
|
34
|
+
* `ctx.entities` — this check needs the bundle loaded from disk, and
|
|
35
|
+
* `loadOkfBundle` is async while `PostSynthCheck#check` is not. The caller
|
|
36
|
+
* loads the bundle once (`resolveKnowledgeDir` + `loadOkfBundle`) and passes
|
|
37
|
+
* it in; see `../cli/commands/build.ts`.
|
|
38
|
+
*/
|
|
39
|
+
export function staleKnowledgeBindingCheck(bundle) {
|
|
40
|
+
return {
|
|
41
|
+
id: STALE_KNOWLEDGE_BINDING_CHECK_ID,
|
|
42
|
+
description: "A knowledge concept's `binds` entry must name a discovered entity — a name that resolves to nothing is a stale binding",
|
|
43
|
+
check(ctx) {
|
|
44
|
+
const { unresolved } = bindConcepts(bundle, ctx.entities);
|
|
45
|
+
return unresolved.map(({ concept, name }) => ({
|
|
46
|
+
checkId: STALE_KNOWLEDGE_BINDING_CHECK_ID,
|
|
47
|
+
severity: "warning",
|
|
48
|
+
message: `Knowledge concept "${concept.path}" binds "${name}", but no discovered entity has that name — ` +
|
|
49
|
+
`a stale binding. The entity may have been renamed or removed, or the concept was authored ` +
|
|
50
|
+
`against a name that never existed. Update the concept's \`binds\` frontmatter, or remove the ` +
|
|
51
|
+
`entry if the concept no longer applies.`,
|
|
52
|
+
}));
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Core's own post-synth check over knowledge bindings, run by `chant build`
|
|
58
|
+
* over the full build result — unscoped, like `coreReceiptChecks`, since a
|
|
59
|
+
* concept's `binds` can name any discovered entity regardless of which
|
|
60
|
+
* lexicon owns it.
|
|
61
|
+
*/
|
|
62
|
+
export function coreKnowledgeChecks(bundle) {
|
|
63
|
+
return [staleKnowledgeBindingCheck(bundle)];
|
|
64
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registry of named check functions.
|
|
3
|
+
*/
|
|
4
|
+
const checkRegistry = new Map();
|
|
5
|
+
/**
|
|
6
|
+
* Register a named check function.
|
|
7
|
+
*/
|
|
8
|
+
export function registerCheck(name, fn) {
|
|
9
|
+
checkRegistry.set(name, fn);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Get a named check by name. Returns undefined if not found.
|
|
13
|
+
*/
|
|
14
|
+
export function getNamedCheck(name) {
|
|
15
|
+
return checkRegistry.get(name);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* List all registered check names.
|
|
19
|
+
*/
|
|
20
|
+
export function listChecks() {
|
|
21
|
+
return Array.from(checkRegistry.keys());
|
|
22
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { getPrimaryOutput } from "./post-synth.js";
|
|
2
|
+
/**
|
|
3
|
+
* COR025: Stringified Reference in Serialized Output (#1526)
|
|
4
|
+
*
|
|
5
|
+
* kubemicrovm-ops composed a bucket policy's resource ARN with a template
|
|
6
|
+
* literal — `` `${bucket.Arn}/*` `` — over an `AttrRef`, not a string.
|
|
7
|
+
* JavaScript stringifies any non-primitive interpolated into a template
|
|
8
|
+
* literal via `Object.prototype.toString`, so the emitted policy carried the
|
|
9
|
+
* literal substring `"[object Object]/*"` in place of the resolved ARN. That
|
|
10
|
+
* built clean and linted clean — nothing upstream of serialization sees a
|
|
11
|
+
* type error, because `AttrRef` IS an object and a template literal accepts
|
|
12
|
+
* any coercible value — and it deployed clean on floci, which does no
|
|
13
|
+
* policy validation. It failed the first real deploy with S3 rejecting the
|
|
14
|
+
* policy's `Resource` and rolling back the stack.
|
|
15
|
+
*
|
|
16
|
+
* `[object Object]` (and its array-of-objects sibling `[object Object,object
|
|
17
|
+
* Object]`) never appears in a serialized template/manifest on purpose: no
|
|
18
|
+
* lexicon's serializer ever emits it, and no cloud provider's schema ever
|
|
19
|
+
* expects it as a literal value. Its presence is only ever a reference that
|
|
20
|
+
* got coerced to a string instead of resolved. That makes this check cheap,
|
|
21
|
+
* universal across lexicons (it scans the emitted text, not any one
|
|
22
|
+
* lexicon's schema), and free of false positives worth caring about — see
|
|
23
|
+
* `stringifiedReferenceCheck` below.
|
|
24
|
+
*
|
|
25
|
+
* Scans `ctx.outputs` (the SYNTHESIZED text) rather than `ctx.entities`
|
|
26
|
+
* because the coercion already happened in the user's own declaration code,
|
|
27
|
+
* upstream of anything chant's model retains structurally — by the time an
|
|
28
|
+
* entity reaches `ctx.entities` its prop is already a plain string containing
|
|
29
|
+
* the marker, indistinguishable from any other string prop. The only place
|
|
30
|
+
* left to catch it lexicon-independently is the text chant actually emits.
|
|
31
|
+
*/
|
|
32
|
+
const MARKER = "[object Object]";
|
|
33
|
+
export const STRINGIFIED_REFERENCE_CHECK_ID = "COR025";
|
|
34
|
+
/** Trim a matched line down to a readable snippet without truncating mid-marker. */
|
|
35
|
+
const MAX_SNIPPET_LENGTH = 200;
|
|
36
|
+
function lineContaining(text, index) {
|
|
37
|
+
const lineStart = text.lastIndexOf("\n", index) + 1;
|
|
38
|
+
const nextNewline = text.indexOf("\n", index);
|
|
39
|
+
const lineEnd = nextNewline === -1 ? text.length : nextNewline;
|
|
40
|
+
const line = text.slice(lineStart, lineEnd).trim();
|
|
41
|
+
return line.length > MAX_SNIPPET_LENGTH ? `${line.slice(0, MAX_SNIPPET_LENGTH)}…` : line;
|
|
42
|
+
}
|
|
43
|
+
/** Every serialized file for one lexicon's output: the primary plus any nested files. */
|
|
44
|
+
function serializedFiles(output) {
|
|
45
|
+
const files = { primary: getPrimaryOutput(output) };
|
|
46
|
+
if (typeof output !== "string" && output.files) {
|
|
47
|
+
Object.assign(files, output.files);
|
|
48
|
+
}
|
|
49
|
+
return files;
|
|
50
|
+
}
|
|
51
|
+
const stringifiedReferenceCheck = {
|
|
52
|
+
id: STRINGIFIED_REFERENCE_CHECK_ID,
|
|
53
|
+
description: 'A serialized output contains the literal substring "[object Object]" — a reference that was ' +
|
|
54
|
+
"stringified (e.g. through a template literal or string concatenation) instead of resolved. " +
|
|
55
|
+
"Always an authoring error, never intentional output.",
|
|
56
|
+
check(ctx) {
|
|
57
|
+
const diagnostics = [];
|
|
58
|
+
for (const [lexicon, output] of ctx.outputs) {
|
|
59
|
+
for (const [fileLabel, content] of Object.entries(serializedFiles(output))) {
|
|
60
|
+
const seenLines = new Set();
|
|
61
|
+
let index = content.indexOf(MARKER);
|
|
62
|
+
while (index !== -1) {
|
|
63
|
+
const line = lineContaining(content, index);
|
|
64
|
+
const dedupeKey = `${fileLabel}::${line}`;
|
|
65
|
+
if (!seenLines.has(dedupeKey)) {
|
|
66
|
+
seenLines.add(dedupeKey);
|
|
67
|
+
const location = fileLabel === "primary" ? "" : ` (${fileLabel})`;
|
|
68
|
+
diagnostics.push({
|
|
69
|
+
checkId: STRINGIFIED_REFERENCE_CHECK_ID,
|
|
70
|
+
severity: "error",
|
|
71
|
+
lexicon,
|
|
72
|
+
message: `Serialized output${location} contains "${MARKER}" — a reference was stringified ` +
|
|
73
|
+
`instead of resolved (a template literal or string concatenation over an object, ` +
|
|
74
|
+
`not the raw value/ref). Emitted line: ${line}`,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
index = content.indexOf(MARKER, index + MARKER.length);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return diagnostics;
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
/** Core-owned post-synth checks over serialized output text (#1526). */
|
|
85
|
+
export function coreOutputChecks() {
|
|
86
|
+
return [stringifiedReferenceCheck];
|
|
87
|
+
}
|