@intentius/chant 0.124.13 → 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.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.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.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.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.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.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 +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/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/lexicon-module.ts +3 -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/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/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 +1 -1
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The installed CLI runs compiled JS with plain node (#3878). This packs core
|
|
3
|
+
* (its prepack builds dist/) and the render lexicon the way a release does,
|
|
4
|
+
* installs both into a scratch project with npm, and runs the package's own
|
|
5
|
+
* `bin/chant`.
|
|
6
|
+
*
|
|
7
|
+
* Each run is traced through a load hook that NODE_OPTIONS hands to the CLI's
|
|
8
|
+
* node, so the test can say what loaded: none of chant's TypeScript source,
|
|
9
|
+
* ever, and tsx only for a command that imports TypeScript (here the
|
|
10
|
+
* lexicon and the project source).
|
|
11
|
+
*
|
|
12
|
+
* End to end because it packs, installs from the registry and spawns the CLI.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { execFileSync, spawnSync } from "node:child_process";
|
|
16
|
+
import { mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
17
|
+
import { tmpdir } from "node:os";
|
|
18
|
+
import { join, resolve } from "node:path";
|
|
19
|
+
import { afterAll, beforeAll, describe, expect, test } from "vitest";
|
|
20
|
+
|
|
21
|
+
const coreRoot = resolve(import.meta.dirname, "..", "..");
|
|
22
|
+
const renderRoot = resolve(coreRoot, "..", "..", "lexicons", "render");
|
|
23
|
+
const version = (JSON.parse(readFileSync(join(coreRoot, "package.json"), "utf-8")) as { version: string }).version;
|
|
24
|
+
|
|
25
|
+
let scratch: string;
|
|
26
|
+
let project: string;
|
|
27
|
+
let waves: string;
|
|
28
|
+
let chant: string;
|
|
29
|
+
let tracer: string;
|
|
30
|
+
|
|
31
|
+
const TRACER = `
|
|
32
|
+
import { registerHooks } from "node:module";
|
|
33
|
+
import { appendFileSync } from "node:fs";
|
|
34
|
+
const out = process.env.CHANT_TRACE_OUT;
|
|
35
|
+
const seen = { chantSrc: 0, chantDist: 0, tsx: 0 };
|
|
36
|
+
registerHooks({
|
|
37
|
+
load(url, context, next) {
|
|
38
|
+
if (url.includes("/@intentius/chant/src/")) seen.chantSrc++;
|
|
39
|
+
else if (url.includes("/@intentius/chant/dist/")) seen.chantDist++;
|
|
40
|
+
else if (url.includes("/node_modules/tsx/")) seen.tsx++;
|
|
41
|
+
return next(url, context);
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
process.on("exit", () => { if (out) appendFileSync(out, JSON.stringify(seen) + "\\n"); });
|
|
45
|
+
`;
|
|
46
|
+
|
|
47
|
+
function pack(dir: string, ignoreScripts = false): string {
|
|
48
|
+
const args = ["pack", "--json", "--pack-destination", scratch, ...(ignoreScripts ? ["--ignore-scripts"] : [])];
|
|
49
|
+
const packed = JSON.parse(execFileSync("npm", args, { cwd: dir, encoding: "utf-8", stdio: ["ignore", "pipe", "pipe"] })) as { filename: string }[];
|
|
50
|
+
return join(scratch, packed[0].filename);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
interface Run {
|
|
54
|
+
status: number | null;
|
|
55
|
+
stdout: string;
|
|
56
|
+
stderr: string;
|
|
57
|
+
loaded: { chantSrc: number; chantDist: number; tsx: number };
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function run(cwd: string, args: string[]): Run {
|
|
61
|
+
const traceOut = join(scratch, `trace-${Math.random().toString(36).slice(2)}.jsonl`);
|
|
62
|
+
const env: NodeJS.ProcessEnv = { ...process.env, NODE_OPTIONS: `--import ${tracer}`, CHANT_TRACE_OUT: traceOut };
|
|
63
|
+
delete env.CHANT_ENV;
|
|
64
|
+
const result = spawnSync(chant, args, { cwd, env, encoding: "utf-8" });
|
|
65
|
+
const lines = readFileSync(traceOut, "utf-8").trim().split("\n");
|
|
66
|
+
return { status: result.status, stdout: result.stdout, stderr: result.stderr, loaded: JSON.parse(lines[0]!) as Run["loaded"] };
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
beforeAll(() => {
|
|
70
|
+
scratch = mkdtempSync(join(tmpdir(), "chant-compiled-cli-"));
|
|
71
|
+
tracer = join(scratch, "trace.mjs");
|
|
72
|
+
writeFileSync(tracer, TRACER);
|
|
73
|
+
const core = pack(coreRoot);
|
|
74
|
+
// The lexicon's prepack regenerates it from upstream specs; the checkout's
|
|
75
|
+
// generated source and dist are what this test needs, so pack them as they are.
|
|
76
|
+
const render = pack(renderRoot, true);
|
|
77
|
+
|
|
78
|
+
project = join(scratch, "project");
|
|
79
|
+
mkdirSync(join(project, "src"), { recursive: true });
|
|
80
|
+
writeFileSync(join(project, "package.json"), JSON.stringify({ name: "compiled-cli-e2e", private: true, type: "module" }));
|
|
81
|
+
execFileSync("npm", ["install", "--no-audit", "--no-fund", "--prefer-offline", core, render], { cwd: project, stdio: "ignore" });
|
|
82
|
+
writeFileSync(join(project, "chant.config.ts"), `import type { ChantConfig } from "@intentius/chant";\nexport default { lexicons: ["render"] } satisfies ChantConfig;\n`);
|
|
83
|
+
writeFileSync(
|
|
84
|
+
join(project, "src", "infra.ts"),
|
|
85
|
+
`import { Postgres, Render } from "@intentius/chant-lexicon-render";\n` +
|
|
86
|
+
`export const db = new Postgres({ name: "e2e-db", plan: "free", version: "16", region: Render.Region });\n`,
|
|
87
|
+
);
|
|
88
|
+
chant = join(project, "node_modules", ".bin", "chant");
|
|
89
|
+
|
|
90
|
+
// A waves spec whose plan writes a fixed digest and whose apply does nothing,
|
|
91
|
+
// in a repository with the history `run wave` reads its gate policy from.
|
|
92
|
+
waves = join(scratch, "waves");
|
|
93
|
+
mkdirSync(waves);
|
|
94
|
+
writeFileSync(join(waves, "plan.mjs"), `import { writeFileSync } from "node:fs";\nwriteFileSync(process.argv[3], JSON.stringify({ planDigest: "sha256:" + "a".repeat(64) }));\n`);
|
|
95
|
+
writeFileSync(
|
|
96
|
+
join(waves, "waves.json"),
|
|
97
|
+
JSON.stringify({
|
|
98
|
+
name: "smoke",
|
|
99
|
+
op: "smoke",
|
|
100
|
+
plan: ["node", "plan.mjs", "{target}", "{plan}"],
|
|
101
|
+
apply: ["node", "-e", "0", "{target}", "{plan}"],
|
|
102
|
+
waves: [{ name: "dev", runs: [{ target: "dev" }], gate: "never" }],
|
|
103
|
+
}),
|
|
104
|
+
);
|
|
105
|
+
const git = (...args: string[]) => execFileSync("git", ["-c", "user.email=e2e@chant", "-c", "user.name=e2e", ...args], { cwd: waves, stdio: "ignore" });
|
|
106
|
+
git("init", "-q", "-b", "main");
|
|
107
|
+
git("add", "-A");
|
|
108
|
+
git("commit", "-qm", "spec");
|
|
109
|
+
writeFileSync(join(waves, ".gitignore"), ".chant/\n");
|
|
110
|
+
git("add", "-A");
|
|
111
|
+
git("commit", "-qm", "ignore");
|
|
112
|
+
}, 600_000);
|
|
113
|
+
|
|
114
|
+
afterAll(() => {
|
|
115
|
+
if (scratch) rmSync(scratch, { recursive: true, force: true });
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
describe("the installed chant CLI (#3878)", () => {
|
|
119
|
+
test("--version runs compiled JS and loads no TypeScript loader", () => {
|
|
120
|
+
const r = run(project, ["--version"]);
|
|
121
|
+
expect(r.status, r.stderr).toBe(0);
|
|
122
|
+
expect(r.stdout.trim()).toBe(version);
|
|
123
|
+
expect(r.loaded.chantDist).toBeGreaterThan(0);
|
|
124
|
+
expect(r.loaded).toMatchObject({ chantSrc: 0, tsx: 0 });
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
test("run wave plans and applies a wave without loading tsx", () => {
|
|
128
|
+
const r = run(waves, ["run", "wave", "--spec", "waves.json", "--wave", "1", "--json"]);
|
|
129
|
+
expect(r.status, r.stderr).toBe(0);
|
|
130
|
+
expect(JSON.parse(r.stdout)).toMatchObject({ exitCode: 0 });
|
|
131
|
+
expect(r.loaded).toMatchObject({ chantSrc: 0, tsx: 0 });
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
test("build loads the TypeScript lexicon and project through tsx, against the one compiled core", () => {
|
|
135
|
+
const r = run(project, ["build", "src", "-o", "out/render.json"]);
|
|
136
|
+
expect(r.status, r.stderr).toBe(0);
|
|
137
|
+
const built = JSON.parse(readFileSync(join(project, "out", "render.json"), "utf-8")) as Record<string, { body?: { name?: string } }>;
|
|
138
|
+
expect(built.db?.body?.name).toBe("e2e-db");
|
|
139
|
+
expect(r.loaded.tsx).toBeGreaterThan(0);
|
|
140
|
+
expect(r.loaded.chantSrc).toBe(0);
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
test("lint passes on the project", () => {
|
|
144
|
+
const r = run(project, ["lint", "src"]);
|
|
145
|
+
expect(r.status, r.stdout + r.stderr).toBe(0);
|
|
146
|
+
expect(r.loaded.chantSrc).toBe(0);
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
test("build --sandbox bundles chant's source for the sandboxed child", () => {
|
|
150
|
+
writeFileSync(
|
|
151
|
+
join(project, "src", "made.ts"),
|
|
152
|
+
`import { Postgres, Render } from "@intentius/chant-lexicon-render";\n` +
|
|
153
|
+
`function make(name: string) { const n = [1, 2].map((i) => i * 2).length; return new Postgres({ name: name + n, plan: "free", version: "16", region: Render.Region }); }\n` +
|
|
154
|
+
`export const made = make("made");\n`,
|
|
155
|
+
);
|
|
156
|
+
try {
|
|
157
|
+
const r = run(project, ["build", "src", "--sandbox", "-o", "out/sandbox.json"]);
|
|
158
|
+
expect(r.status, r.stderr).toBe(0);
|
|
159
|
+
const built = JSON.parse(readFileSync(join(project, "out", "sandbox.json"), "utf-8")) as Record<string, { body?: { name?: string } }>;
|
|
160
|
+
expect(built.made?.body?.name).toBe("made2");
|
|
161
|
+
} finally {
|
|
162
|
+
rmSync(join(project, "src", "made.ts"));
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
});
|
package/src/cli/main.ts
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
import { resolve } from "node:path";
|
|
4
4
|
import { isEntryPoint } from "./is-entry-point";
|
|
5
5
|
import { formatSuccess, formatError } from "./format";
|
|
6
|
-
import { loadPlugins, resolveProjectLexicons } from "./plugins";
|
|
7
6
|
import { resolveCommand, type CommandDef, type ParsedArgs } from "./registry";
|
|
8
7
|
import { loadChantConfigUpward } from "../config";
|
|
9
8
|
import { findProjectRoot, findWorkspaceRoot } from "../project-root";
|
|
@@ -14,34 +13,118 @@ import { armSandboxConfigEvaluation } from "../config-sandbox";
|
|
|
14
13
|
import { armSandboxPolicyExecution } from "../lint/policy-import";
|
|
15
14
|
import { ENV_VAR, unknownEnvError } from "../env";
|
|
16
15
|
import { initRuntime } from "../runtime-adapter";
|
|
17
|
-
import {
|
|
18
|
-
import { runLint } from "./handlers/lint";
|
|
19
|
-
import { runDevGenerate, runDevPublish, runDevOnboard, runDevCheckLexicon, runDevSurfaceDiff, runDevPinnedUpgrade, runDevRollingUpgrade, runDevUnknown } from "./handlers/dev";
|
|
20
|
-
import { runServeLsp, runServeMcp, runServeUnknown } from "./handlers/serve";
|
|
21
|
-
import { runInit, runInitLexicon } from "./handlers/init";
|
|
22
|
-
import { runList, runDescribe, runImport, runAudit, runUpdate, runDoctor } from "./handlers/misc";
|
|
23
|
-
import { runVendor } from "./handlers/vendor";
|
|
24
|
-
import { runMigrate } from "./handlers/migrate";
|
|
25
|
-
import { runCarveAdvise, runCarveUnknown } from "./handlers/carve";
|
|
26
|
-
import { runCarveEmit } from "./handlers/carve-emit";
|
|
27
|
-
import { runCarveBridge } from "./handlers/carve-bridge";
|
|
28
|
-
import { runCarveApply } from "./handlers/carve-apply";
|
|
29
|
-
import { runCarveStatus } from "./handlers/carve-status";
|
|
30
|
-
import { runLifecycleSnapshot, runLifecycleShow, runLifecycleDiff, runLifecycleRollback, runLifecyclePlan, runLifecycleAffected, runLifecycleLog, runLifecycleTeardown, runLifecycleWhoami, runLifecycleUnknown } from "./handlers/lifecycle";
|
|
31
|
-
import { runComponentsStatus, runComponentsReleaseRecord, runComponentsExport, runComponentsUnknown } from "./handlers/components";
|
|
32
|
-
import { runComponentsFanOut } from "./handlers/fan-out";
|
|
33
|
-
import { runComponentsPromote, runComponentsRollback, runComponentsRedeploy } from "./handlers/promote";
|
|
34
|
-
import { runScenarioCheck, runScenarioUnknown } from "./handlers/scenario";
|
|
35
|
-
import { runGraph } from "./handlers/graph";
|
|
36
|
-
import { runExplain } from "./handlers/explain";
|
|
37
|
-
import { runSearch } from "./handlers/search";
|
|
38
|
-
import { runOp, runOpList, runOpStatus, runOpApprove, runOpSignalRenamed, runOpCancel, runOpLog } from "./handlers/run";
|
|
39
|
-
import { runOpWaveCommand } from "./handlers/run-wave";
|
|
40
|
-
import { runOperator, runOperatorStatus, runOperatorLog, runApprove } from "./handlers/operator";
|
|
41
|
-
import { runEmulator, formatEmulatorHelp } from "./handlers/emulator";
|
|
16
|
+
import { installCompiledCli } from "../ts-loader";
|
|
42
17
|
import { splitJoinedFlags, dispatchCommandGroup, collectCommandGroups, formatCommandGroupsHelp, type CommandGroup } from "./command-group";
|
|
43
18
|
import type { LexiconPlugin } from "../lexicon";
|
|
44
19
|
|
|
20
|
+
/**
|
|
21
|
+
* #3878 — each command's handler module loads when that command runs, not on
|
|
22
|
+
* every start: together they pull in most of chant (the TypeScript compiler
|
|
23
|
+
* among it), and `chant --version` or `chant run wave` need almost none of it.
|
|
24
|
+
*/
|
|
25
|
+
type Handler = CommandDef["handler"];
|
|
26
|
+
const handlerModules = new Map<Handler, () => Promise<unknown>>();
|
|
27
|
+
function lazyHandler<M>(load: () => Promise<M>, pick: (module: M) => Handler): Handler {
|
|
28
|
+
const handler: Handler = async (ctx) => pick(await load())(ctx);
|
|
29
|
+
handlerModules.set(handler, load);
|
|
30
|
+
return handler;
|
|
31
|
+
}
|
|
32
|
+
const buildHandlers = () => import("./handlers/build");
|
|
33
|
+
const runBuild = lazyHandler(buildHandlers, (m) => m.runBuild);
|
|
34
|
+
const lintHandlers = () => import("./handlers/lint");
|
|
35
|
+
const runLint = lazyHandler(lintHandlers, (m) => m.runLint);
|
|
36
|
+
const devHandlers = () => import("./handlers/dev");
|
|
37
|
+
const runDevGenerate = lazyHandler(devHandlers, (m) => m.runDevGenerate);
|
|
38
|
+
const runDevPublish = lazyHandler(devHandlers, (m) => m.runDevPublish);
|
|
39
|
+
const runDevOnboard = lazyHandler(devHandlers, (m) => m.runDevOnboard);
|
|
40
|
+
const runDevCheckLexicon = lazyHandler(devHandlers, (m) => m.runDevCheckLexicon);
|
|
41
|
+
const runDevSurfaceDiff = lazyHandler(devHandlers, (m) => m.runDevSurfaceDiff);
|
|
42
|
+
const runDevPinnedUpgrade = lazyHandler(devHandlers, (m) => m.runDevPinnedUpgrade);
|
|
43
|
+
const runDevRollingUpgrade = lazyHandler(devHandlers, (m) => m.runDevRollingUpgrade);
|
|
44
|
+
const runDevUnknown = lazyHandler(devHandlers, (m) => m.runDevUnknown);
|
|
45
|
+
const serveHandlers = () => import("./handlers/serve");
|
|
46
|
+
const runServeLsp = lazyHandler(serveHandlers, (m) => m.runServeLsp);
|
|
47
|
+
const runServeMcp = lazyHandler(serveHandlers, (m) => m.runServeMcp);
|
|
48
|
+
const runServeUnknown = lazyHandler(serveHandlers, (m) => m.runServeUnknown);
|
|
49
|
+
const initHandlers = () => import("./handlers/init");
|
|
50
|
+
const runInit = lazyHandler(initHandlers, (m) => m.runInit);
|
|
51
|
+
const runInitLexicon = lazyHandler(initHandlers, (m) => m.runInitLexicon);
|
|
52
|
+
const miscHandlers = () => import("./handlers/misc");
|
|
53
|
+
const runList = lazyHandler(miscHandlers, (m) => m.runList);
|
|
54
|
+
const runDescribe = lazyHandler(miscHandlers, (m) => m.runDescribe);
|
|
55
|
+
const runImport = lazyHandler(miscHandlers, (m) => m.runImport);
|
|
56
|
+
const runAudit = lazyHandler(miscHandlers, (m) => m.runAudit);
|
|
57
|
+
const runUpdate = lazyHandler(miscHandlers, (m) => m.runUpdate);
|
|
58
|
+
const runDoctor = lazyHandler(miscHandlers, (m) => m.runDoctor);
|
|
59
|
+
const vendorHandlers = () => import("./handlers/vendor");
|
|
60
|
+
const runVendor = lazyHandler(vendorHandlers, (m) => m.runVendor);
|
|
61
|
+
const migrateHandlers = () => import("./handlers/migrate");
|
|
62
|
+
const runMigrate = lazyHandler(migrateHandlers, (m) => m.runMigrate);
|
|
63
|
+
const carveHandlers = () => import("./handlers/carve");
|
|
64
|
+
const runCarveAdvise = lazyHandler(carveHandlers, (m) => m.runCarveAdvise);
|
|
65
|
+
const runCarveUnknown = lazyHandler(carveHandlers, (m) => m.runCarveUnknown);
|
|
66
|
+
const carveEmitHandlers = () => import("./handlers/carve-emit");
|
|
67
|
+
const runCarveEmit = lazyHandler(carveEmitHandlers, (m) => m.runCarveEmit);
|
|
68
|
+
const carveBridgeHandlers = () => import("./handlers/carve-bridge");
|
|
69
|
+
const runCarveBridge = lazyHandler(carveBridgeHandlers, (m) => m.runCarveBridge);
|
|
70
|
+
const carveApplyHandlers = () => import("./handlers/carve-apply");
|
|
71
|
+
const runCarveApply = lazyHandler(carveApplyHandlers, (m) => m.runCarveApply);
|
|
72
|
+
const carveStatusHandlers = () => import("./handlers/carve-status");
|
|
73
|
+
const runCarveStatus = lazyHandler(carveStatusHandlers, (m) => m.runCarveStatus);
|
|
74
|
+
const lifecycleHandlers = () => import("./handlers/lifecycle");
|
|
75
|
+
const runLifecycleSnapshot = lazyHandler(lifecycleHandlers, (m) => m.runLifecycleSnapshot);
|
|
76
|
+
const runLifecycleShow = lazyHandler(lifecycleHandlers, (m) => m.runLifecycleShow);
|
|
77
|
+
const runLifecycleDiff = lazyHandler(lifecycleHandlers, (m) => m.runLifecycleDiff);
|
|
78
|
+
const runLifecycleRollback = lazyHandler(lifecycleHandlers, (m) => m.runLifecycleRollback);
|
|
79
|
+
const runLifecyclePlan = lazyHandler(lifecycleHandlers, (m) => m.runLifecyclePlan);
|
|
80
|
+
const runLifecycleAffected = lazyHandler(lifecycleHandlers, (m) => m.runLifecycleAffected);
|
|
81
|
+
const runLifecycleLog = lazyHandler(lifecycleHandlers, (m) => m.runLifecycleLog);
|
|
82
|
+
const runLifecycleTeardown = lazyHandler(lifecycleHandlers, (m) => m.runLifecycleTeardown);
|
|
83
|
+
const runLifecycleWhoami = lazyHandler(lifecycleHandlers, (m) => m.runLifecycleWhoami);
|
|
84
|
+
const runLifecycleUnknown = lazyHandler(lifecycleHandlers, (m) => m.runLifecycleUnknown);
|
|
85
|
+
const componentsHandlers = () => import("./handlers/components");
|
|
86
|
+
const runComponentsStatus = lazyHandler(componentsHandlers, (m) => m.runComponentsStatus);
|
|
87
|
+
const runComponentsReleaseRecord = lazyHandler(componentsHandlers, (m) => m.runComponentsReleaseRecord);
|
|
88
|
+
const runComponentsExport = lazyHandler(componentsHandlers, (m) => m.runComponentsExport);
|
|
89
|
+
const runComponentsUnknown = lazyHandler(componentsHandlers, (m) => m.runComponentsUnknown);
|
|
90
|
+
const fanOutHandlers = () => import("./handlers/fan-out");
|
|
91
|
+
const runComponentsFanOut = lazyHandler(fanOutHandlers, (m) => m.runComponentsFanOut);
|
|
92
|
+
const promoteHandlers = () => import("./handlers/promote");
|
|
93
|
+
const runComponentsPromote = lazyHandler(promoteHandlers, (m) => m.runComponentsPromote);
|
|
94
|
+
const runComponentsRollback = lazyHandler(promoteHandlers, (m) => m.runComponentsRollback);
|
|
95
|
+
const runComponentsRedeploy = lazyHandler(promoteHandlers, (m) => m.runComponentsRedeploy);
|
|
96
|
+
const scenarioHandlers = () => import("./handlers/scenario");
|
|
97
|
+
const runScenarioCheck = lazyHandler(scenarioHandlers, (m) => m.runScenarioCheck);
|
|
98
|
+
const runScenarioUnknown = lazyHandler(scenarioHandlers, (m) => m.runScenarioUnknown);
|
|
99
|
+
const graphHandlers = () => import("./handlers/graph");
|
|
100
|
+
const runGraph = lazyHandler(graphHandlers, (m) => m.runGraph);
|
|
101
|
+
const explainHandlers = () => import("./handlers/explain");
|
|
102
|
+
const runExplain = lazyHandler(explainHandlers, (m) => m.runExplain);
|
|
103
|
+
const searchHandlers = () => import("./handlers/search");
|
|
104
|
+
const runSearch = lazyHandler(searchHandlers, (m) => m.runSearch);
|
|
105
|
+
const runHandlers = () => import("./handlers/run");
|
|
106
|
+
const runOp = lazyHandler(runHandlers, (m) => m.runOp);
|
|
107
|
+
const runOpList = lazyHandler(runHandlers, (m) => m.runOpList);
|
|
108
|
+
const runOpStatus = lazyHandler(runHandlers, (m) => m.runOpStatus);
|
|
109
|
+
const runOpApprove = lazyHandler(runHandlers, (m) => m.runOpApprove);
|
|
110
|
+
const runOpSignalRenamed = lazyHandler(runHandlers, (m) => m.runOpSignalRenamed);
|
|
111
|
+
const runOpCancel = lazyHandler(runHandlers, (m) => m.runOpCancel);
|
|
112
|
+
const runOpLog = lazyHandler(runHandlers, (m) => m.runOpLog);
|
|
113
|
+
const runWaveHandlers = () => import("./handlers/run-wave");
|
|
114
|
+
const runOpWaveCommand = lazyHandler(runWaveHandlers, (m) => m.runOpWaveCommand);
|
|
115
|
+
const operatorHandlers = () => import("./handlers/operator");
|
|
116
|
+
const runOperator = lazyHandler(operatorHandlers, (m) => m.runOperator);
|
|
117
|
+
const runOperatorStatus = lazyHandler(operatorHandlers, (m) => m.runOperatorStatus);
|
|
118
|
+
const runOperatorLog = lazyHandler(operatorHandlers, (m) => m.runOperatorLog);
|
|
119
|
+
const runApprove = lazyHandler(operatorHandlers, (m) => m.runApprove);
|
|
120
|
+
const emulatorHandlers = () => import("./handlers/emulator");
|
|
121
|
+
const runEmulator = lazyHandler(emulatorHandlers, (m) => m.runEmulator);
|
|
122
|
+
|
|
123
|
+
/** The lexicon plugin loader, which imports the lint, fold and build machinery: loaded when a command needs plugins (#3878). */
|
|
124
|
+
const loadPlugins: typeof import("./plugins").loadPlugins = async (...a) => (await import("./plugins")).loadPlugins(...a);
|
|
125
|
+
const resolveProjectLexicons: typeof import("./plugins").resolveProjectLexicons = async (...a) =>
|
|
126
|
+
(await import("./plugins")).resolveProjectLexicons(...a);
|
|
127
|
+
|
|
45
128
|
/**
|
|
46
129
|
* Long-form flags that are pure booleans in {@link parseArgs} — their branch
|
|
47
130
|
* below sets a field to `true` and never consumes a following array element.
|
|
@@ -2002,6 +2085,9 @@ export const commandRegistry: CommandDef[] = [
|
|
|
2002
2085
|
* Main entry point
|
|
2003
2086
|
*/
|
|
2004
2087
|
async function main(): Promise<void> {
|
|
2088
|
+
// #3878 — run from dist/ with plain node, TypeScript loads only when
|
|
2089
|
+
// something imports it. A no-op from source.
|
|
2090
|
+
installCompiledCli();
|
|
2005
2091
|
const rawArgv = process.argv.slice(2);
|
|
2006
2092
|
|
|
2007
2093
|
let args: ParsedArgs;
|
|
@@ -2035,7 +2121,7 @@ async function main(): Promise<void> {
|
|
|
2035
2121
|
// ports and sign-in each configured lexicon's emulator uses, not the
|
|
2036
2122
|
// global command list it used to print.
|
|
2037
2123
|
if (args.help && args.command === "emulator") {
|
|
2038
|
-
console.log(formatEmulatorHelp(await loadPluginsBestEffort().catch(() => [])));
|
|
2124
|
+
console.log((await emulatorHandlers()).formatEmulatorHelp(await loadPluginsBestEffort().catch(() => [])));
|
|
2039
2125
|
await flushAndExit(0);
|
|
2040
2126
|
return;
|
|
2041
2127
|
}
|
|
@@ -2080,6 +2166,14 @@ async function main(): Promise<void> {
|
|
|
2080
2166
|
// command gets no `--env` check against the declared environments either.
|
|
2081
2167
|
const earlyMatch = resolveCommand(args, commandRegistry);
|
|
2082
2168
|
const runsNoConfig = earlyMatch != null && commandRunsNoConfig(earlyMatch.def, args);
|
|
2169
|
+
// #3878 — load the command's own modules (and the plugin loader, when it
|
|
2170
|
+
// needs plugins) before anything imports TypeScript: once a chant.config.ts
|
|
2171
|
+
// has registered tsx, every module after it is resolved and loaded through
|
|
2172
|
+
// tsx's hooks, which costs far more than plain node.
|
|
2173
|
+
await Promise.all([
|
|
2174
|
+
earlyMatch ? handlerModules.get(earlyMatch.def.handler)?.() : undefined,
|
|
2175
|
+
earlyMatch?.def.requiresPlugins ? import("./plugins") : undefined,
|
|
2176
|
+
]);
|
|
2083
2177
|
const projectPath0 = resolve(args.path === "." ? "." : args.path);
|
|
2084
2178
|
let loadedConfig;
|
|
2085
2179
|
try {
|
|
@@ -51,7 +51,7 @@ const AGENT_ENV = "CHANT_AGENT";
|
|
|
51
51
|
export type ChantCommand = string[];
|
|
52
52
|
|
|
53
53
|
/**
|
|
54
|
-
* The chant this process runs as: node with the same flags (the tsx loader
|
|
54
|
+
* The chant this process runs as: node with the same flags (from source, the tsx loader
|
|
55
55
|
* `bin/chant` registers) and the same entry script.
|
|
56
56
|
*/
|
|
57
57
|
export function ownChantCommand(): ChantCommand {
|
|
@@ -29,6 +29,7 @@ import { regenLexicon, type RegenResult } from "./lexicon-regen";
|
|
|
29
29
|
import { fetchWithRetry } from "./fetch";
|
|
30
30
|
import { isLexiconPlugin, type UpstreamPin } from "../lexicon";
|
|
31
31
|
import { importLexiconPackage } from "../lexicon-module";
|
|
32
|
+
import { ensureTypeScriptLoader } from "../ts-loader";
|
|
32
33
|
|
|
33
34
|
// ── Public types ──────────────────────────────────────────────────────
|
|
34
35
|
|
|
@@ -251,6 +252,7 @@ export async function loadUpstreamPins(lexicon: LexiconId, lexiconDir?: string):
|
|
|
251
252
|
const entry = lexiconDir ? lexiconEntry(lexiconDir) : null;
|
|
252
253
|
if (entry) {
|
|
253
254
|
try {
|
|
255
|
+
ensureTypeScriptLoader();
|
|
254
256
|
const pins = pinsOf((await import(pathToFileURL(entry).href)) as Record<string, unknown>);
|
|
255
257
|
if (pins.length > 0) return pins;
|
|
256
258
|
} catch {
|
|
@@ -50,6 +50,7 @@ import { setBuildParams } from "../params";
|
|
|
50
50
|
import { hasDiscoveryMarkerSync } from "../discovery/files";
|
|
51
51
|
import { resolveDiscoveryGlobs } from "../config";
|
|
52
52
|
import { walkDiscovery, workspaceMemberDirs } from "../discovery/walk";
|
|
53
|
+
import { ensureTypeScriptLoader } from "../ts-loader";
|
|
53
54
|
|
|
54
55
|
/** One discovered component, paired with the file it was exported from. */
|
|
55
56
|
export interface DiscoveredComponent {
|
|
@@ -212,6 +213,7 @@ async function importAndCollectComponents(
|
|
|
212
213
|
// `filePath` (e.g. from `chant build --components --generate`, which passes
|
|
213
214
|
// a bare "." path) would otherwise be treated by `import()` as a bare
|
|
214
215
|
// package specifier and fail with "Cannot find package 'x.component.ts'".
|
|
216
|
+
ensureTypeScriptLoader();
|
|
215
217
|
const exports = await import(pathToFileURL(resolve(filePath)).href);
|
|
216
218
|
modules.push({ file: filePath, exports });
|
|
217
219
|
} catch (err) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { join, resolve } from "node:path";
|
|
2
2
|
import { params as currentBuildParams } from "../../params";
|
|
3
3
|
import { sendFunctionSource } from "../../discovery/sandbox/driver";
|
|
4
|
+
import { chantSourceDir } from "../../ts-loader";
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* chant #1051 — generates the source of the "driver" module that runs INSIDE
|
|
@@ -25,7 +26,8 @@ import { sendFunctionSource } from "../../discovery/sandbox/driver";
|
|
|
25
26
|
* for the full identity-correctness argument).
|
|
26
27
|
*/
|
|
27
28
|
|
|
28
|
-
|
|
29
|
+
// #3878: the TypeScript source, also when this module runs compiled from dist/.
|
|
30
|
+
const HERE = chantSourceDir(import.meta.url);
|
|
29
31
|
const COMPONENTS_DIR = join(HERE, "..");
|
|
30
32
|
|
|
31
33
|
/** Absolute paths to chant's OWN trusted modules the generated driver imports — resolved relative to THIS file's own location on disk, exactly like `../../discovery/sandbox/driver.ts` does for the entity path (works whether chant runs from the monorepo or a consumer's `node_modules`). */
|
package/src/config-import.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createRequire } from "node:module";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
+
import { ensureTypeScriptLoader } from "./ts-loader";
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* The single place chant evaluates a project's `chant.config.ts` **in the CLI's
|
|
@@ -29,6 +30,7 @@ export type ConfigModuleNamespace = Record<string, unknown>;
|
|
|
29
30
|
* evaluate the file once — the behavior `loadChantConfig` has always had.
|
|
30
31
|
*/
|
|
31
32
|
export async function importConfigModule(configPath: string): Promise<ConfigModuleNamespace> {
|
|
33
|
+
ensureTypeScriptLoader();
|
|
32
34
|
return (await import(configPath)) as ConfigModuleNamespace;
|
|
33
35
|
}
|
|
34
36
|
|
|
@@ -39,5 +41,6 @@ export async function importConfigModule(configPath: string): Promise<ConfigModu
|
|
|
39
41
|
*/
|
|
40
42
|
export function requireConfigModule(configPath: string, dir: string): ConfigModuleNamespace {
|
|
41
43
|
const req = createRequire(join(dir, "package.json"));
|
|
44
|
+
ensureTypeScriptLoader();
|
|
42
45
|
return req(configPath) as ConfigModuleNamespace;
|
|
43
46
|
}
|
|
@@ -3620,8 +3620,7 @@ function isChantOwnedHelperBinding(binding: ImportBinding, ctx: ResolveCtx): boo
|
|
|
3620
3620
|
} catch {
|
|
3621
3621
|
return false;
|
|
3622
3622
|
}
|
|
3623
|
-
|
|
3624
|
-
return targetPath === root || targetPath.startsWith(root + sep);
|
|
3623
|
+
return isChantCorePath(targetPath);
|
|
3625
3624
|
}
|
|
3626
3625
|
|
|
3627
3626
|
/**
|
|
@@ -3643,7 +3642,7 @@ function isChantOwnedHelperBinding(binding: ImportBinding, ctx: ResolveCtx): boo
|
|
|
3643
3642
|
* modules by subpath instead of through the barrel names code the process
|
|
3644
3643
|
* already trusts, not code the project controls.
|
|
3645
3644
|
* 2. **chant-core's own executing tree** — the specifier is RESOLVED and the
|
|
3646
|
-
* resulting path checked against {@link
|
|
3645
|
+
* resulting path checked against {@link chantCoreRoots}. A text match is
|
|
3647
3646
|
* not enough here: `@intentius/chant` and `@intentius/chant-lexicon-evil`
|
|
3648
3647
|
* are both strings an untrusted repo can write into its own source and
|
|
3649
3648
|
* back with its own `node_modules` directory, and
|
|
@@ -3700,8 +3699,7 @@ function isTrustedExecutableBinding(binding: ImportBinding, ctx: ResolveCtx): bo
|
|
|
3700
3699
|
// chant#2590 — the subpath case of the same arm: another file of a
|
|
3701
3700
|
// multi-file path lexicon, under its trusted directory.
|
|
3702
3701
|
if (inPathLexiconRoot(targetPath, ctx.lexiconRoots)) return true;
|
|
3703
|
-
|
|
3704
|
-
return targetPath === root || targetPath.startsWith(root + sep);
|
|
3702
|
+
return isChantCorePath(targetPath);
|
|
3705
3703
|
}
|
|
3706
3704
|
|
|
3707
3705
|
/**
|
|
@@ -3737,17 +3735,29 @@ function sandboxedExecutionRefusal(
|
|
|
3737
3735
|
}
|
|
3738
3736
|
|
|
3739
3737
|
/**
|
|
3740
|
-
* chant-core's own module
|
|
3741
|
-
*
|
|
3738
|
+
* chant-core's own module roots, derived from THIS module's location:
|
|
3739
|
+
* `packages/core/src` in this repo, and in a published install both
|
|
3740
|
+
* `<pkg>/src` (where `@intentius/chant/*` specifiers resolve, through the
|
|
3741
|
+
* package exports) and `<pkg>/dist` (where the compiled CLI runs from, #3878).
|
|
3742
3742
|
* Pure string arithmetic on `import.meta.url`, no filesystem access at all, so
|
|
3743
3743
|
* it is safe in the #1045 sandbox child (which locks reads to an allowlist);
|
|
3744
3744
|
* lazy and memoized purely to avoid doing it per call.
|
|
3745
3745
|
*/
|
|
3746
|
-
let
|
|
3747
|
-
function
|
|
3748
|
-
|
|
3749
|
-
|
|
3750
|
-
|
|
3746
|
+
let chantCoreRootsMemo: readonly string[] | undefined;
|
|
3747
|
+
function chantCoreRoots(): readonly string[] {
|
|
3748
|
+
if (!chantCoreRootsMemo) {
|
|
3749
|
+
// .../<root>/discovery/fold-import.{ts,js} -> .../<root>
|
|
3750
|
+
const root = dirname(dirname(fileURLToPath(import.meta.url)));
|
|
3751
|
+
const name = basename(root);
|
|
3752
|
+
const sibling = name === "dist" ? join(dirname(root), "src") : name === "src" ? join(dirname(root), "dist") : undefined;
|
|
3753
|
+
chantCoreRootsMemo = sibling ? [root, sibling] : [root];
|
|
3754
|
+
}
|
|
3755
|
+
return chantCoreRootsMemo;
|
|
3756
|
+
}
|
|
3757
|
+
|
|
3758
|
+
/** Whether `path` is one of chant-core's own modules (see {@link chantCoreRoots}). */
|
|
3759
|
+
function isChantCorePath(path: string): boolean {
|
|
3760
|
+
return chantCoreRoots().some((root) => path === root || path.startsWith(root + sep));
|
|
3751
3761
|
}
|
|
3752
3762
|
|
|
3753
3763
|
/** Revive every value in a folded props/attributes object (see {@link reviveFoldedValue}). */
|
|
@@ -4467,8 +4477,7 @@ async function tryFoldFileCore(file: string, session: FoldSession): Promise<Fold
|
|
|
4467
4477
|
// exclusion has to be explicit, or a fixture/in-repo import by path would
|
|
4468
4478
|
// walk fold into chant's own tree and fold `params` to an empty object.
|
|
4469
4479
|
{
|
|
4470
|
-
|
|
4471
|
-
if (file === root || file.startsWith(root + sep)) {
|
|
4480
|
+
if (isChantCorePath(file)) {
|
|
4472
4481
|
return { ok: false, reason: "chant's own module is not project source" };
|
|
4473
4482
|
}
|
|
4474
4483
|
}
|
package/src/discovery/import.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DiscoveryError } from "../errors";
|
|
2
|
+
import { ensureTypeScriptLoader } from "../ts-loader";
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* Modules whose evaluation threw, and the error each threw with (#2368).
|
|
@@ -57,6 +58,7 @@ export async function importModule(
|
|
|
57
58
|
if (failed) throw failed;
|
|
58
59
|
|
|
59
60
|
try {
|
|
61
|
+
ensureTypeScriptLoader();
|
|
60
62
|
return await import(path);
|
|
61
63
|
} catch (error) {
|
|
62
64
|
const message =
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { dirname, join } from "node:path";
|
|
2
2
|
import { params as currentBuildParams } from "../../params";
|
|
3
|
+
import { chantSourceDir } from "../../ts-loader";
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* chant #1045 Phase 2 — generates the source of the "driver" module that runs
|
|
@@ -30,7 +31,8 @@ import { params as currentBuildParams } from "../../params";
|
|
|
30
31
|
* boundary at all.
|
|
31
32
|
*/
|
|
32
33
|
|
|
33
|
-
|
|
34
|
+
// #3878: the TypeScript source, also when this module runs compiled from dist/.
|
|
35
|
+
const HERE = chantSourceDir(import.meta.url);
|
|
34
36
|
const DISCOVERY_DIR = join(HERE, "..");
|
|
35
37
|
|
|
36
38
|
/** Absolute paths to chant's OWN trusted modules the generated driver imports — always resolved relative to THIS file's own location on disk, so this works whether chant is running from the monorepo or from a consumer's `node_modules` (both route runtime resolution at `src/*.ts` — see `packages/core/package.json`'s `development`/`default` export conditions). */
|
package/src/lexicon-module.ts
CHANGED
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
import { createRequire } from "node:module";
|
|
28
28
|
import { dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
|
|
29
29
|
import { pathToFileURL } from "node:url";
|
|
30
|
+
import { ensureTypeScriptLoader } from "./ts-loader";
|
|
30
31
|
|
|
31
32
|
/**
|
|
32
33
|
* One `lexicons` entry: a package-backed name, or a name plus the module that
|
|
@@ -179,6 +180,7 @@ export async function importLexiconModule(name: string): Promise<Record<string,
|
|
|
179
180
|
const path = modulePaths.get(name);
|
|
180
181
|
if (path === undefined) return undefined;
|
|
181
182
|
try {
|
|
183
|
+
ensureTypeScriptLoader();
|
|
182
184
|
return (await import(path)) as Record<string, unknown>;
|
|
183
185
|
} catch (err) {
|
|
184
186
|
throw new Error(
|
|
@@ -259,6 +261,7 @@ export function resolveFromProject(spec: string, fromDir: string = process.cwd()
|
|
|
259
261
|
*/
|
|
260
262
|
export async function importLexiconPackage(spec: string, fromDir: string = process.cwd()): Promise<Record<string, unknown>> {
|
|
261
263
|
try {
|
|
264
|
+
ensureTypeScriptLoader();
|
|
262
265
|
return (await import(spec)) as Record<string, unknown>;
|
|
263
266
|
} catch (err) {
|
|
264
267
|
const pkg = packageNameOf(spec);
|
package/src/lint/config.ts
CHANGED
|
@@ -6,7 +6,7 @@ import type { Severity, RuleConfig } from "./rule";
|
|
|
6
6
|
import type { PostSynthDiagnostic } from "./post-synth";
|
|
7
7
|
import { moduleDir, getRuntime } from "../runtime-adapter";
|
|
8
8
|
import { canonicalRuleId, type RuleMeta } from "../audit/catalog";
|
|
9
|
-
import strictPreset from "./presets/strict.json";
|
|
9
|
+
import strictPreset from "./presets/strict.json" with { type: "json" };
|
|
10
10
|
|
|
11
11
|
// chant #1117 — the upward config-discovery walk moved to a shared module
|
|
12
12
|
// (`../project-root`) so `chant build`/`lint.policies` use the identical walk
|
package/src/lint/discover.ts
CHANGED
|
@@ -10,17 +10,35 @@ import { join } from "path";
|
|
|
10
10
|
import { createRequire } from "module";
|
|
11
11
|
import type { LintRule } from "./rule";
|
|
12
12
|
import type { PostSynthCheck } from "./post-synth";
|
|
13
|
+
import { ensureTypeScriptLoader } from "../ts-loader";
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
15
|
+
let cjsTypeScript = false;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Register tsx so createRequire can load TypeScript files in Node.js ESM
|
|
19
|
+
* context. Does nothing when tsx is not available; then only pre-compiled .js
|
|
20
|
+
* files can be require()'d.
|
|
21
|
+
*
|
|
22
|
+
* From source this runs when the module loads, as it always has: vitest and
|
|
23
|
+
* the source CLI rely on tsx's CommonJS hook being in place from then on. The
|
|
24
|
+
* compiled CLI imports this module on every start and most commands read no
|
|
25
|
+
* rule directory, so there it waits for the first one (#3878).
|
|
26
|
+
*/
|
|
27
|
+
function registerTypeScriptRequire(): void {
|
|
28
|
+
if (cjsTypeScript) return;
|
|
29
|
+
cjsTypeScript = true;
|
|
30
|
+
if (ensureTypeScriptLoader()) return;
|
|
31
|
+
try {
|
|
32
|
+
const _req = createRequire(import.meta.url);
|
|
33
|
+
const { register } = _req("tsx/cjs/api") as { register: () => void };
|
|
34
|
+
register();
|
|
35
|
+
} catch {
|
|
36
|
+
// tsx not available; only pre-compiled .js files can be require()'d
|
|
37
|
+
}
|
|
22
38
|
}
|
|
23
39
|
|
|
40
|
+
if (!import.meta.url.endsWith(".js")) registerTypeScriptRequire();
|
|
41
|
+
|
|
24
42
|
/**
|
|
25
43
|
* Discover lint rules from a directory.
|
|
26
44
|
*
|
|
@@ -32,6 +50,7 @@ try {
|
|
|
32
50
|
* @param importMetaUrl - The caller's import.meta.url (for createRequire)
|
|
33
51
|
*/
|
|
34
52
|
export function discoverLintRules(dir: string, importMetaUrl: string): LintRule[] {
|
|
53
|
+
registerTypeScriptRequire();
|
|
35
54
|
const require = createRequire(importMetaUrl);
|
|
36
55
|
const rules: LintRule[] = [];
|
|
37
56
|
|
|
@@ -62,6 +81,7 @@ export function discoverLintRules(dir: string, importMetaUrl: string): LintRule[
|
|
|
62
81
|
* @param importMetaUrl - The caller's import.meta.url (for createRequire)
|
|
63
82
|
*/
|
|
64
83
|
export function discoverPostSynthChecks(dir: string, importMetaUrl: string): PostSynthCheck[] {
|
|
84
|
+
registerTypeScriptRequire();
|
|
65
85
|
const require = createRequire(importMetaUrl);
|
|
66
86
|
const checks: PostSynthCheck[] = [];
|
|
67
87
|
|