@intentius/chant 0.124.13 → 0.124.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/chant +11 -0
- package/dist/agents/checks.js +326 -0
- package/dist/agents/discover.js +885 -0
- package/dist/agents/importer.js +17 -0
- package/dist/agents/index.js +12 -0
- package/dist/agents/types.js +19 -0
- package/dist/apply.js +151 -0
- package/dist/attrref.js +70 -0
- package/dist/audit/catalog.js +350 -0
- package/dist/audit/core.js +252 -0
- package/dist/audit/discover.js +633 -0
- package/dist/audit/fetch.js +666 -0
- package/dist/audit/lineage.js +91 -0
- package/dist/audit/nginx.js +366 -0
- package/dist/audit/prior-art.js +132 -0
- package/dist/audit/proof.js +321 -0
- package/dist/audit/report-html.js +194 -0
- package/dist/audit/report-model.js +198 -0
- package/dist/audit/report.js +102 -0
- package/dist/audit/rules-doc.js +144 -0
- package/dist/audit/secrets.js +405 -0
- package/dist/audit/terraform-state.js +140 -0
- package/dist/audit/wrangler.js +262 -0
- package/dist/behaviour-delta.js +401 -0
- package/dist/behaviour-engine.js +357 -0
- package/dist/behaviour-graph.js +83 -0
- package/dist/behaviour-http.js +188 -0
- package/dist/behaviour-kinds.js +172 -0
- package/dist/behaviour-overlay.js +50 -0
- package/dist/behaviour-predict.js +188 -0
- package/dist/behaviour-request.js +194 -0
- package/dist/behaviour.js +1325 -0
- package/dist/build-params.js +108 -0
- package/dist/build.d.ts +6 -0
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +669 -0
- package/dist/builder.js +44 -0
- package/dist/cdk/advise.js +30 -0
- package/dist/cdk/assembly.js +122 -0
- package/dist/cdk/graph.js +444 -0
- package/dist/cdk/tier-map.js +64 -0
- package/dist/cdk/types.js +24 -0
- package/dist/change-set.d.ts +24 -2
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +361 -0
- package/dist/child-project.js +21 -0
- package/dist/ci-jobs.d.ts +227 -0
- package/dist/ci-jobs.d.ts.map +1 -0
- package/dist/ci-jobs.js +448 -0
- package/dist/claimed-fields.js +135 -0
- package/dist/cli/build-options.js +70 -0
- package/dist/cli/build-params-cli.js +139 -0
- package/dist/cli/command-group.js +123 -0
- package/dist/cli/commands/audit-agents.js +326 -0
- package/dist/cli/commands/audit.js +571 -0
- package/dist/cli/commands/build.js +920 -0
- package/dist/cli/commands/carve-apply.js +153 -0
- package/dist/cli/commands/carve-bridge.js +201 -0
- package/dist/cli/commands/carve-emit.js +332 -0
- package/dist/cli/commands/carve-status.js +119 -0
- package/dist/cli/commands/carve.js +204 -0
- package/dist/cli/commands/check-lexicon-docs.js +79 -0
- package/dist/cli/commands/check-lexicon-examples.js +177 -0
- package/dist/cli/commands/check-lexicon-intrinsics.js +291 -0
- package/dist/cli/commands/check-lexicon-mcp.js +82 -0
- package/dist/cli/commands/check-lexicon-plugin.d.ts.map +1 -1
- package/dist/cli/commands/check-lexicon-plugin.js +104 -0
- package/dist/cli/commands/check-lexicon.js +766 -0
- package/dist/cli/commands/describe.js +85 -0
- package/dist/cli/commands/diff.js +175 -0
- package/dist/cli/commands/doctor.js +350 -0
- package/dist/cli/commands/import-agents.js +155 -0
- package/dist/cli/commands/import.js +670 -0
- package/dist/cli/commands/init-lexicon/templates/codegen.js +194 -0
- package/dist/cli/commands/init-lexicon/templates/docs.js +100 -0
- package/dist/cli/commands/init-lexicon/templates/examples.js +29 -0
- package/dist/cli/commands/init-lexicon/templates/lint.js +34 -0
- package/dist/cli/commands/init-lexicon/templates/lsp.js +37 -0
- package/dist/cli/commands/init-lexicon/templates/plugin.js +108 -0
- package/dist/cli/commands/init-lexicon/templates/project.js +240 -0
- package/dist/cli/commands/init-lexicon/templates/spec.js +56 -0
- package/dist/cli/commands/init-lexicon/templates/tests.js +66 -0
- package/dist/cli/commands/init-lexicon.js +172 -0
- package/dist/cli/commands/init.js +381 -0
- package/dist/cli/commands/lexicon-rolling-upgrade.js +145 -0
- package/dist/cli/commands/lexicon-surface-diff.js +145 -0
- package/dist/cli/commands/licenses.js +125 -0
- package/dist/cli/commands/lint.d.ts.map +1 -1
- package/dist/cli/commands/lint.js +948 -0
- package/dist/cli/commands/list.js +63 -0
- package/dist/cli/commands/migrate.d.ts.map +1 -1
- package/dist/cli/commands/migrate.js +423 -0
- package/dist/cli/commands/onboard.js +403 -0
- package/dist/cli/commands/pinned-upgrade.js +191 -0
- package/dist/cli/commands/update.js +194 -0
- package/dist/cli/commands/vendor.js +217 -0
- package/dist/cli/conflict-check.js +104 -0
- package/dist/cli/debug.js +8 -0
- package/dist/cli/format.js +104 -0
- package/dist/cli/handlers/build.js +267 -0
- package/dist/cli/handlers/carve-apply.js +30 -0
- package/dist/cli/handlers/carve-bridge.js +28 -0
- package/dist/cli/handlers/carve-emit.js +50 -0
- package/dist/cli/handlers/carve-status.js +26 -0
- package/dist/cli/handlers/carve.js +40 -0
- package/dist/cli/handlers/change-set.js +46 -0
- package/dist/cli/handlers/components.js +730 -0
- package/dist/cli/handlers/dev.js +113 -0
- package/dist/cli/handlers/emulator.js +233 -0
- package/dist/cli/handlers/explain.js +54 -0
- package/dist/cli/handlers/fan-out.js +422 -0
- package/dist/cli/handlers/gate-resume.js +275 -0
- package/dist/cli/handlers/generate.js +84 -0
- package/dist/cli/handlers/graph.js +969 -0
- package/dist/cli/handlers/init.js +102 -0
- package/dist/cli/handlers/lifecycle.js +1727 -0
- package/dist/cli/handlers/lint.js +62 -0
- package/dist/cli/handlers/migrate.js +48 -0
- package/dist/cli/handlers/misc.js +391 -0
- package/dist/cli/handlers/operator.js +1162 -0
- package/dist/cli/handlers/override-approve.js +102 -0
- package/dist/cli/handlers/pr.js +503 -0
- package/dist/cli/handlers/promote.js +342 -0
- package/dist/cli/handlers/run-generate.js +206 -0
- package/dist/cli/handlers/run-wave.js +66 -0
- package/dist/cli/handlers/run.js +1191 -0
- package/dist/cli/handlers/scenario.js +325 -0
- package/dist/cli/handlers/search.js +924 -0
- package/dist/cli/handlers/serve.js +32 -0
- package/dist/cli/handlers/vendor.js +154 -0
- package/dist/cli/index.js +3 -0
- package/dist/cli/is-entry-point.js +23 -0
- package/dist/cli/lsp/capabilities.js +28 -0
- package/dist/cli/lsp/diagnostics.js +34 -0
- package/dist/cli/lsp/server.js +329 -0
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +2540 -0
- package/dist/cli/mcp/lifecycle-tools.js +80 -0
- package/dist/cli/mcp/op-tools.js +306 -0
- package/dist/cli/mcp/resource-handlers.js +258 -0
- package/dist/cli/mcp/resources/context.js +85 -0
- package/dist/cli/mcp/server.js +353 -0
- package/dist/cli/mcp/tools/build.js +111 -0
- package/dist/cli/mcp/tools/composites.js +95 -0
- package/dist/cli/mcp/tools/explain.js +166 -0
- package/dist/cli/mcp/tools/import.js +49 -0
- package/dist/cli/mcp/tools/lint.js +41 -0
- package/dist/cli/mcp/tools/scaffold.js +111 -0
- package/dist/cli/mcp/tools/search.js +112 -0
- package/dist/cli/mcp/types.js +1 -0
- package/dist/cli/mcp/workspace-plugins.js +91 -0
- package/dist/cli/mcp/workspace-tools.d.ts +1 -1
- package/dist/cli/mcp/workspace-tools.js +564 -0
- package/dist/cli/mcp-config.js +70 -0
- package/dist/cli/plugins.js +313 -0
- package/dist/cli/registry.js +23 -0
- package/dist/cli/reporters/stylish.js +329 -0
- package/dist/cli/version.js +15 -0
- package/dist/cli/watch.js +79 -0
- package/dist/codegen/bound-property-types.js +82 -0
- package/dist/codegen/coverage.js +119 -0
- package/dist/codegen/docs-file-markers.js +60 -0
- package/dist/codegen/docs-pages.js +115 -0
- package/dist/codegen/docs-rule-scanning.js +164 -0
- package/dist/codegen/docs-rules.js +76 -0
- package/dist/codegen/docs-sections.js +117 -0
- package/dist/codegen/docs-sidebar.js +65 -0
- package/dist/codegen/docs-types.js +4 -0
- package/dist/codegen/docs.js +356 -0
- package/dist/codegen/fetch.js +340 -0
- package/dist/codegen/generate-post-synth-barrel.js +63 -0
- package/dist/codegen/generate-registry.js +71 -0
- package/dist/codegen/generate-runtime-index.js +56 -0
- package/dist/codegen/generate-typescript.js +119 -0
- package/dist/codegen/generate.js +115 -0
- package/dist/codegen/json-patch.js +141 -0
- package/dist/codegen/json-schema-to-ts.js +344 -0
- package/dist/codegen/json-schema.js +246 -0
- package/dist/codegen/lexicon-regen.js +412 -0
- package/dist/codegen/naming.js +217 -0
- package/dist/codegen/okf-lexicon.js +245 -0
- package/dist/codegen/package.js +150 -0
- package/dist/codegen/pinned-upgrade.d.ts.map +1 -1
- package/dist/codegen/pinned-upgrade.js +494 -0
- package/dist/codegen/registry.js +60 -0
- package/dist/codegen/rehype-base-url.mjs +68 -0
- package/dist/codegen/rolling-upgrade.js +217 -0
- package/dist/codegen/surface-snapshot.js +537 -0
- package/dist/codegen/testdata/postgres-tags.json +242 -0
- package/dist/codegen/topo-sort.js +36 -0
- package/dist/codegen/typecheck.js +115 -0
- package/dist/codegen/validate.js +200 -0
- package/dist/codegen/version-bump.js +35 -0
- package/dist/components/auto-release.js +143 -0
- package/dist/components/builders.js +47 -0
- package/dist/components/capability-plugin-loader.js +175 -0
- package/dist/components/capability-plugin-schema.js +46 -0
- package/dist/components/capability-plugin.js +99 -0
- package/dist/components/capability.js +60 -0
- package/dist/components/changed-files.js +72 -0
- package/dist/components/cli-support.js +427 -0
- package/dist/components/component.js +120 -0
- package/dist/components/component.schema.json +271 -0
- package/dist/components/config-defaults.js +130 -0
- package/dist/components/deploy-units.js +60 -0
- package/dist/components/discover.d.ts.map +1 -1
- package/dist/components/discover.js +189 -0
- package/dist/components/driver-output.js +86 -0
- package/dist/components/driver.js +728 -0
- package/dist/components/fan-out-output.js +165 -0
- package/dist/components/fan-out-record.js +94 -0
- package/dist/components/fan-out-run.js +373 -0
- package/dist/components/fan-out-support.js +60 -0
- package/dist/components/fan-out.js +273 -0
- package/dist/components/gate-plan.js +41 -0
- package/dist/components/gated-wave-pipeline.js +46 -0
- package/dist/components/index.js +24 -0
- package/dist/components/layers.js +28 -0
- package/dist/components/manifest-persistence.js +108 -0
- package/dist/components/pilots/alb-ecs.pilot.js +59 -0
- package/dist/components/pilots/dynamodb.pilot.js +51 -0
- package/dist/components/pilots/jar-emr.pilot.js +65 -0
- package/dist/components/pilots/lambda.pilot.js +52 -0
- package/dist/components/pilots/neo4j-fanout.pilot.js +68 -0
- package/dist/components/pilots/project.js +12 -0
- package/dist/components/pr-pipeline.d.ts.map +1 -1
- package/dist/components/pr-pipeline.js +135 -0
- package/dist/components/pr-run.js +363 -0
- package/dist/components/presets/ecs-fargate.js +72 -0
- package/dist/components/presets/index.js +28 -0
- package/dist/components/presets/lambda.js +34 -0
- package/dist/components/presets/single-host-compose.js +41 -0
- package/dist/components/promote.js +549 -0
- package/dist/components/registry.js +34 -0
- package/dist/components/run-progress.js +33 -0
- package/dist/components/sandbox/driver.d.ts.map +1 -1
- package/dist/components/sandbox/driver.js +93 -0
- package/dist/components/sandbox/run.js +115 -0
- package/dist/components/starter-plugin.js +104 -0
- package/dist/components/verbs/__tests__/mock-cloud-executor.js +68 -0
- package/dist/components/verbs/__tests__/mock-process-runner.js +45 -0
- package/dist/components/verbs/__tests__/mock-sbom-generator.js +56 -0
- package/dist/components/verbs/bom-writer.js +287 -0
- package/dist/components/verbs/build-archive.js +188 -0
- package/dist/components/verbs/build.js +142 -0
- package/dist/components/verbs/cloud-executor.js +110 -0
- package/dist/components/verbs/component-bom.js +125 -0
- package/dist/components/verbs/ensure-secret.js +50 -0
- package/dist/components/verbs/index.js +61 -0
- package/dist/components/verbs/license-policy.js +75 -0
- package/dist/components/verbs/lockfile-sbom-generator.js +191 -0
- package/dist/components/verbs/process-runner.js +78 -0
- package/dist/components/verbs/r2-sync.js +93 -0
- package/dist/components/verbs/reproducibility.js +62 -0
- package/dist/components/verbs/run-agent.js +577 -0
- package/dist/components/verbs/sbom-generator.js +119 -0
- package/dist/components/verbs/sbom.js +97 -0
- package/dist/components/verbs/shell.js +32 -0
- package/dist/components/verbs/sign.js +221 -0
- package/dist/components/verbs/stub.js +28 -0
- package/dist/components/verbs/tool-sbom-generator.js +154 -0
- package/dist/components/verbs/verify.js +112 -0
- package/dist/components/verbs/vex.js +131 -0
- package/dist/components/verbs/vuln-gate.js +152 -0
- package/dist/components/verbs/vuln-scan.js +288 -0
- package/dist/components/verbs/wait-verify.js +106 -0
- package/dist/components/verbs/wrangler.js +179 -0
- package/dist/components/wave-plan.js +102 -0
- package/dist/composite.d.ts +10 -2
- package/dist/composite.d.ts.map +1 -1
- package/dist/composite.js +313 -0
- package/dist/config-import.d.ts.map +1 -1
- package/dist/config-import.js +22 -0
- package/dist/config-sandbox.js +122 -0
- package/dist/config-static.js +206 -0
- package/dist/config.js +605 -0
- package/dist/content-digest.js +23 -0
- package/dist/declarable.js +114 -0
- package/dist/deep-observation.js +437 -0
- package/dist/detectLexicon.js +54 -0
- package/dist/discovery/cache.js +70 -0
- package/dist/discovery/collect.d.ts +2 -1
- package/dist/discovery/collect.d.ts.map +1 -1
- package/dist/discovery/collect.js +223 -0
- package/dist/discovery/cycles.js +95 -0
- package/dist/discovery/entity-wire-codec.js +391 -0
- package/dist/discovery/entity-wire.js +42 -0
- package/dist/discovery/files.js +121 -0
- package/dist/discovery/fold-import.d.ts.map +1 -1
- package/dist/discovery/fold-import.js +4073 -0
- package/dist/discovery/fold-rank.js +292 -0
- package/dist/discovery/graph.js +115 -0
- package/dist/discovery/host-composite.d.ts +35 -0
- package/dist/discovery/host-composite.d.ts.map +1 -0
- package/dist/discovery/host-composite.js +93 -0
- package/dist/discovery/import.d.ts.map +1 -1
- package/dist/discovery/import.js +65 -0
- package/dist/discovery/index.d.ts +9 -0
- package/dist/discovery/index.d.ts.map +1 -1
- package/dist/discovery/index.js +333 -0
- package/dist/discovery/param-deps.js +487 -0
- package/dist/discovery/resolve.js +39 -0
- package/dist/discovery/sandbox/bundle.js +214 -0
- package/dist/discovery/sandbox/child-errors.js +26 -0
- package/dist/discovery/sandbox/config-run.js +100 -0
- package/dist/discovery/sandbox/config-wire.js +183 -0
- package/dist/discovery/sandbox/driver.d.ts.map +1 -1
- package/dist/discovery/sandbox/driver.js +333 -0
- package/dist/discovery/sandbox/fork.js +229 -0
- package/dist/discovery/sandbox/policy-run.js +142 -0
- package/dist/discovery/sandbox/policy-wire.js +152 -0
- package/dist/discovery/sandbox/run.js +77 -0
- package/dist/discovery/specifier-resolve.js +320 -0
- package/dist/discovery/walk.js +284 -0
- package/dist/effect-receipt.js +340 -0
- package/dist/env.js +55 -0
- package/dist/errors.js +62 -0
- package/dist/fold/fold.js +1434 -0
- package/dist/fold/foldable-helpers.js +229 -0
- package/dist/fold/subset.js +696 -0
- package/dist/fold-provenance.js +414 -0
- package/dist/gate-decision.d.ts +20 -9
- package/dist/gate-decision.d.ts.map +1 -1
- package/dist/gate-decision.js +313 -0
- package/dist/gate-resume-run.js +154 -0
- package/dist/gated-waves.js +165 -0
- package/dist/governance.js +43 -0
- package/dist/graph-declared.js +45 -0
- package/dist/graph-detail.js +207 -0
- package/dist/graph-dot.js +54 -0
- package/dist/graph-effective.js +107 -0
- package/dist/graph-ir.js +623 -0
- package/dist/graph-layout.js +184 -0
- package/dist/graph-lens.js +105 -0
- package/dist/graph-mermaid.js +83 -0
- package/dist/graph-ops.js +39 -0
- package/dist/graph-refs.js +156 -0
- package/dist/held-elsewhere.js +87 -0
- package/dist/identity.js +251 -0
- package/dist/import/base-parser.js +34 -0
- package/dist/import/embedded.js +255 -0
- package/dist/import/generator.js +1 -0
- package/dist/import/ir-utils.js +85 -0
- package/dist/import/parser-options.js +45 -0
- package/dist/import/parser.js +1 -0
- package/dist/index.js +118 -0
- package/dist/intrinsic-interpolation.js +73 -0
- package/dist/intrinsic.js +31 -0
- package/dist/join-key.js +35 -0
- package/dist/kubectl-context.js +150 -0
- package/dist/lexicon-config.js +58 -0
- package/dist/lexicon-integrity.js +47 -0
- package/dist/lexicon-manifest.js +70 -0
- package/dist/lexicon-module.d.ts.map +1 -1
- package/dist/lexicon-module.js +241 -0
- package/dist/lexicon-output.js +218 -0
- package/dist/lexicon-plugin-helpers.js +104 -0
- package/dist/lexicon-schema.js +136 -0
- package/dist/lexicon.js +130 -0
- package/dist/lifecycle/affected.js +224 -0
- package/dist/lifecycle/assert-live.js +110 -0
- package/dist/lifecycle/build-ledger-store.js +160 -0
- package/dist/lifecycle/build-ledger.js +155 -0
- package/dist/lifecycle/change-set.js +356 -0
- package/dist/lifecycle/converge-ledger.js +161 -0
- package/dist/lifecycle/deep-diff.js +233 -0
- package/dist/lifecycle/deep-observe.js +147 -0
- package/dist/lifecycle/digest.js +143 -0
- package/dist/lifecycle/disruption.js +135 -0
- package/dist/lifecycle/gate-applied.js +113 -0
- package/dist/lifecycle/gate-audit.d.ts +69 -2
- package/dist/lifecycle/gate-audit.d.ts.map +1 -1
- package/dist/lifecycle/gate-audit.js +415 -0
- package/dist/lifecycle/gate-ledger-select.js +89 -0
- package/dist/lifecycle/gate-ledger.d.ts +24 -0
- package/dist/lifecycle/gate-ledger.d.ts.map +1 -1
- package/dist/lifecycle/gate-ledger.js +201 -0
- package/dist/lifecycle/gate-origin.js +117 -0
- package/dist/lifecycle/gate-pending.js +58 -0
- package/dist/lifecycle/git.js +1182 -0
- package/dist/lifecycle/identity.js +58 -0
- package/dist/lifecycle/index.js +26 -0
- package/dist/lifecycle/lease.js +283 -0
- package/dist/lifecycle/ledger-port.js +1 -0
- package/dist/lifecycle/legacy-digest.js +91 -0
- package/dist/lifecycle/live-diff.js +274 -0
- package/dist/lifecycle/local-note.js +15 -0
- package/dist/lifecycle/member-ledger.js +122 -0
- package/dist/lifecycle/observation-baseline.js +155 -0
- package/dist/lifecycle/observe.js +375 -0
- package/dist/lifecycle/oras-referrer-lookup.js +82 -0
- package/dist/lifecycle/override-ledger.js +54 -0
- package/dist/lifecycle/plan-digest.js +110 -0
- package/dist/lifecycle/plan-ledger.js +129 -0
- package/dist/lifecycle/receipt-plan.js +192 -0
- package/dist/lifecycle/release-ledger.js +155 -0
- package/dist/lifecycle/release-read.js +64 -0
- package/dist/lifecycle/replay.js +193 -0
- package/dist/lifecycle/rollback.js +102 -0
- package/dist/lifecycle/run-ledger.js +183 -0
- package/dist/lifecycle/scenario-eval.js +204 -0
- package/dist/lifecycle/scenario.js +214 -0
- package/dist/lifecycle/snapshot.js +239 -0
- package/dist/lifecycle/status.js +447 -0
- package/dist/lifecycle/symptoms.js +117 -0
- package/dist/lifecycle/teardown.js +255 -0
- package/dist/lifecycle/types.js +1 -0
- package/dist/lifecycle/unobserved-gate.js +33 -0
- package/dist/lifecycle/wave-plans.js +68 -0
- package/dist/lifecycle/work-item-id.js +36 -0
- package/dist/lifecycle/work-lease.js +393 -0
- package/dist/lint/component-checks.js +87 -0
- package/dist/lint/config.js +483 -0
- package/dist/lint/declarative.js +122 -0
- package/dist/lint/discover.d.ts.map +1 -1
- package/dist/lint/discover.js +138 -0
- package/dist/lint/engine.js +246 -0
- package/dist/lint/knowledge-checks.js +64 -0
- package/dist/lint/named-checks.js +22 -0
- package/dist/lint/output-checks.js +87 -0
- package/dist/lint/output-docs.js +163 -0
- package/dist/lint/parser.js +33 -0
- package/dist/lint/pipeline-change-gate.js +70 -0
- package/dist/lint/policy-import.d.ts +1 -1
- package/dist/lint/policy-import.d.ts.map +1 -1
- package/dist/lint/policy-import.js +62 -0
- package/dist/lint/policy-sandbox.js +86 -0
- package/dist/lint/policy.js +122 -0
- package/dist/lint/post-synth.js +87 -0
- package/dist/lint/presets/relaxed.json +26 -0
- package/dist/lint/presets/strict.json +24 -24
- package/dist/lint/receipt-checks.js +83 -0
- package/dist/lint/rule-loader.d.ts.map +1 -1
- package/dist/lint/rule-loader.js +89 -0
- package/dist/lint/rule-registry.js +86 -0
- package/dist/lint/rule.js +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-a.component.js +7 -0
- package/dist/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-b.component.js +7 -0
- package/dist/lint/rules/__fixtures__/comp/comp001/fail/orphan-lib.component.js +9 -0
- package/dist/lint/rules/__fixtures__/comp/comp001/pass/emr-job.component.js +11 -0
- package/dist/lint/rules/__fixtures__/comp/comp001/pass/jar-lib.component.js +9 -0
- package/dist/lint/rules/__fixtures__/comp/comp002/fail/search-service.component.js +25 -0
- package/dist/lint/rules/__fixtures__/comp/comp002/pass/jar-lib.component.js +8 -0
- package/dist/lint/rules/__fixtures__/comp/comp002/pass/search-service.component.js +21 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/fail/migrator.component.js +8 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/pass/agent-turn.component.js +24 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/pass/migrator.component.js +17 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/pass/orders-table.component.js +8 -0
- package/dist/lint/rules/__fixtures__/comp/comp004/fail/neo4j-cluster.component.js +18 -0
- package/dist/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.js +20 -0
- package/dist/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.js +8 -0
- package/dist/lint/rules/__fixtures__/comp/comp005/fail/search-service.component.js +12 -0
- package/dist/lint/rules/__fixtures__/comp/comp005/pass/search-service.component.js +16 -0
- package/dist/lint/rules/__fixtures__/comp/comp006/fail/legacy-tool.component.js +8 -0
- package/dist/lint/rules/__fixtures__/comp/comp006/pass/legacy-tool.component.js +12 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/fail/inventory-table.component.js +11 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/fail/orders-table.component.js +11 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/pass/orders-table.component.js +10 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/pass/search-service.component.js +16 -0
- package/dist/lint/rules/comp/comp001-publishes-never-applies.js +69 -0
- package/dist/lint/rules/comp/comp002-dangling-wiring-ref.js +84 -0
- package/dist/lint/rules/comp/comp003-mutating-no-rollback.js +103 -0
- package/dist/lint/rules/comp/comp004-gate-needs-durable-runtime.js +70 -0
- package/dist/lint/rules/comp/comp005-capability-kind-is-noun.js +109 -0
- package/dist/lint/rules/comp/comp006-shell-needs-reason.js +49 -0
- package/dist/lint/rules/comp/comp007-composition-sprawl.js +64 -0
- package/dist/lint/rules/comp/index.js +33 -0
- package/dist/lint/rules/comp/support.js +129 -0
- package/dist/lint/rules/composite-scope.js +51 -0
- package/dist/lint/rules/cor017-composite-name-match.js +93 -0
- package/dist/lint/rules/cor018-composite-prefer-lexicon-type.js +136 -0
- package/dist/lint/rules/cor021-env-literal-name.js +100 -0
- package/dist/lint/rules/cor022-receipt-leaf.js +118 -0
- package/dist/lint/rules/cor024-receipt-secret-pointer.js +199 -0
- package/dist/lint/rules/declarable-naming-convention.js +62 -0
- package/dist/lint/rules/evl001-non-literal-expression.js +66 -0
- package/dist/lint/rules/evl002-control-flow-resource.js +69 -0
- package/dist/lint/rules/evl003-dynamic-property-access.js +44 -0
- package/dist/lint/rules/evl004-spread-non-const.js +94 -0
- package/dist/lint/rules/evl005-resource-block-body.js +41 -0
- package/dist/lint/rules/evl007-invalid-siblings.js +105 -0
- package/dist/lint/rules/evl009-composite-no-constant.js +158 -0
- package/dist/lint/rules/evl010-composite-no-transform.js +59 -0
- package/dist/lint/rules/evl011-symbolic-in-template.js +106 -0
- package/dist/lint/rules/export-required.js +115 -0
- package/dist/lint/rules/file-declarable-limit.js +88 -0
- package/dist/lint/rules/flat-declarations.js +62 -0
- package/dist/lint/rules/index.js +90 -0
- package/dist/lint/rules/no-cyclic-declarable-ref.js +138 -0
- package/dist/lint/rules/no-redundant-type-import.js +76 -0
- package/dist/lint/rules/no-redundant-value-cast.js +41 -0
- package/dist/lint/rules/no-string-ref.js +59 -0
- package/dist/lint/rules/no-unused-declarable-import.js +75 -0
- package/dist/lint/rules/no-unused-declarable.js +142 -0
- package/dist/lint/rules/op/index.js +28 -0
- package/dist/lint/rules/op/ops012-activity-contract.js +54 -0
- package/dist/lint/rules/op/ops013-step-output-ref.js +88 -0
- package/dist/lint/rules/op/ops014-converge-rule-refusals.js +114 -0
- package/dist/lint/rules/op/ops015-gate-approval.js +45 -0
- package/dist/lint/rules/op/support.js +11 -0
- package/dist/lint/rules/op/sys010-key-over-plain-http.js +100 -0
- package/dist/lint/rules/property-kind.js +56 -0
- package/dist/lint/rules/single-concern-file.js +71 -0
- package/dist/lint/rules/sys001-no-literal-key.js +60 -0
- package/dist/lint/selectors.js +168 -0
- package/dist/lint/suppressions.js +129 -0
- package/dist/lint/typescript.js +17 -0
- package/dist/live-endpoint.js +113 -0
- package/dist/live-read-session.js +76 -0
- package/dist/lsp/lexicon-providers.js +163 -0
- package/dist/lsp/types.js +5 -0
- package/dist/managed-fields.js +293 -0
- package/dist/mcp/types.js +4 -0
- package/dist/notify-verify.js +0 -1
- package/dist/notify.js +0 -1
- package/dist/notify.schema.json +72 -0
- package/dist/observation.js +266 -0
- package/dist/okf-read.js +134 -0
- package/dist/okf.js +275 -0
- package/dist/op/__fixtures__/decide-stub-backend.js +125 -0
- package/dist/op/activities/activity-contracts.d.ts +1 -1
- package/dist/op/activities/activity-contracts.js +313 -0
- package/dist/op/activities/apply.js +582 -0
- package/dist/op/activities/build.js +18 -0
- package/dist/op/activities/change-coverage.js +40 -0
- package/dist/op/activities/change-set.d.ts +8 -3
- package/dist/op/activities/change-set.d.ts.map +1 -1
- package/dist/op/activities/change-set.js +67 -0
- package/dist/op/activities/converge.js +492 -0
- package/dist/op/activities/decide.js +211 -0
- package/dist/op/activities/env-teardown.js +110 -0
- package/dist/op/activities/factory.js +591 -0
- package/dist/op/activities/forge-pull-request.js +82 -0
- package/dist/op/activities/gh-host.js +78 -0
- package/dist/op/activities/guard-validate.js +165 -0
- package/dist/op/activities/http-check.js +40 -0
- package/dist/op/activities/index.js +59 -0
- package/dist/op/activities/lexicon-upgrade.js +629 -0
- package/dist/op/activities/lifecycle.js +109 -0
- package/dist/op/activities/pipeline-audit.js +147 -0
- package/dist/op/activities/policy.js +26 -0
- package/dist/op/activities/predict-behaviour.js +341 -0
- package/dist/op/activities/propose-upgrade.js +165 -0
- package/dist/op/activities/reconcile.d.ts +28 -16
- package/dist/op/activities/reconcile.d.ts.map +1 -1
- package/dist/op/activities/reconcile.js +1011 -0
- package/dist/op/activities/shell.js +118 -0
- package/dist/op/activities/source-release.js +97 -0
- package/dist/op/activities/source-rollback.js +165 -0
- package/dist/op/activities/teardown.js +17 -0
- package/dist/op/activities/util.js +6 -0
- package/dist/op/activities/wait.js +51 -0
- package/dist/op/activities/work-evidence.js +35 -0
- package/dist/op/activities/workflow-audit.js +133 -0
- package/dist/op/activity-contract-registry.js +106 -0
- package/dist/op/activity-contract.js +232 -0
- package/dist/op/activity-failure.js +31 -0
- package/dist/op/activity-profiles.js +129 -0
- package/dist/op/activity-registry.js +105 -0
- package/dist/op/activity-runtime.js +28 -0
- package/dist/op/builders.d.ts +1 -1
- package/dist/op/builders.d.ts.map +1 -1
- package/dist/op/builders.js +801 -0
- package/dist/op/change-signal.js +118 -0
- package/dist/op/composites/apply-op.js +151 -0
- package/dist/op/composites/behaviour-op.js +65 -0
- package/dist/op/composites/converge-op.js +141 -0
- package/dist/op/composites/index.js +19 -0
- package/dist/op/composites/lexicon-upgrade-op.js +107 -0
- package/dist/op/composites/pipeline-audit-op.js +50 -0
- package/dist/op/composites/reconcile-op.js +84 -0
- package/dist/op/composites/watch-op.js +69 -0
- package/dist/op/composites/workflow-audit-op.js +57 -0
- package/dist/op/converge-rule.js +205 -0
- package/dist/op/cron.js +146 -0
- package/dist/op/decide-backend.js +181 -0
- package/dist/op/decide-config.js +68 -0
- package/dist/op/decide-read-inputs.js +141 -0
- package/dist/op/discover.d.ts.map +1 -1
- package/dist/op/discover.js +213 -0
- package/dist/op/duration.js +21 -0
- package/dist/op/emulator-freshness.js +80 -0
- package/dist/op/emulator-lifecycle.js +269 -0
- package/dist/op/factory.js +83 -0
- package/dist/op/gate-approval.js +172 -0
- package/dist/op/gate-name.js +86 -0
- package/dist/op/gate-plan-context.js +167 -0
- package/dist/op/gate-point-run.js +67 -0
- package/dist/op/gate-point.js +111 -0
- package/dist/op/gate-resume-plan.js +155 -0
- package/dist/op/gate-resume.js +31 -0
- package/dist/op/gate-review.js +290 -0
- package/dist/op/gate-run-locator.js +85 -0
- package/dist/op/gate-summary.js +100 -0
- package/dist/op/gate-wait.js +56 -0
- package/dist/op/gate.js +449 -0
- package/dist/op/generate-pipeline.js +124 -0
- package/dist/op/index.js +51 -0
- package/dist/op/lifecycle-receipt-store.js +45 -0
- package/dist/op/local-executor.js +1164 -0
- package/dist/op/local-output.js +140 -0
- package/dist/op/op-ir.js +317 -0
- package/dist/op/op-verb-class.js +131 -0
- package/dist/op/op-waves-notify.js +136 -0
- package/dist/op/op-waves-run.d.ts +1 -1
- package/dist/op/op-waves-run.d.ts.map +1 -1
- package/dist/op/op-waves-run.js +1657 -0
- package/dist/op/op-waves.js +409 -0
- package/dist/op/operator.js +743 -0
- package/dist/op/receipt-store.js +94 -0
- package/dist/op/resource.js +23 -0
- package/dist/op/run-context.js +28 -0
- package/dist/op/run-live.js +256 -0
- package/dist/op/runtime.js +21 -0
- package/dist/op/runtimes/local.js +195 -0
- package/dist/op/source-archive.js +131 -0
- package/dist/op/step-output-ref.js +397 -0
- package/dist/op/steward-beside.js +169 -0
- package/dist/op/steward-points.js +138 -0
- package/dist/op/steward-turn.js +59 -0
- package/dist/op/steward.js +317 -0
- package/dist/op/types.js +25 -0
- package/dist/op/work-lease-decl.js +81 -0
- package/dist/op/work-lease-run.js +393 -0
- package/dist/override-gate.js +284 -0
- package/dist/owner-chain.js +74 -0
- package/dist/ownership.js +92 -0
- package/dist/params.js +61 -0
- package/dist/plan-summary.js +711 -0
- package/dist/point-decision.js +211 -0
- package/dist/pr-forge.js +810 -0
- package/dist/pr-loop.js +203 -0
- package/dist/project-codegen.js +191 -0
- package/dist/project-root.js +74 -0
- package/dist/project-validation.js +50 -0
- package/dist/provenance.js +157 -0
- package/dist/pseudo-parameter.js +40 -0
- package/dist/reconcile.js +450 -0
- package/dist/resource-attributes.js +33 -0
- package/dist/runtime-adapter.js +77 -0
- package/dist/runtime.js +66 -0
- package/dist/secret-materialization.js +153 -0
- package/dist/secret-provenance.js +250 -0
- package/dist/serializer-walker.js +112 -0
- package/dist/serializer.js +1 -0
- package/dist/sort.js +45 -0
- package/dist/stack-output.js +115 -0
- package/dist/telemetry-attribution.js +149 -0
- package/dist/terraform/__fixtures__/build-graph.js +63 -0
- package/dist/terraform/adopt-state.js +40 -0
- package/dist/terraform/aws-resources.js +384 -0
- package/dist/terraform/bridge.js +204 -0
- package/dist/terraform/carve-provider.js +155 -0
- package/dist/terraform/carve.js +138 -0
- package/dist/terraform/data-source-shape.js +57 -0
- package/dist/terraform/emit-source.js +36 -0
- package/dist/terraform/excise.js +123 -0
- package/dist/terraform/graduate.js +128 -0
- package/dist/terraform/graph.js +435 -0
- package/dist/terraform/hcl2json.js +60 -0
- package/dist/terraform/manifest.js +149 -0
- package/dist/terraform/parse.js +81 -0
- package/dist/terraform/providers/aws.js +146 -0
- package/dist/terraform/providers/gcp.js +294 -0
- package/dist/terraform/providers/index.js +17 -0
- package/dist/terraform/providers/kubernetes.js +253 -0
- package/dist/terraform/score.js +151 -0
- package/dist/terraform/state.js +67 -0
- package/dist/terraform/tier-map.js +74 -0
- package/dist/terraform/types.js +13 -0
- package/dist/terraform/unified-diff.js +132 -0
- package/dist/testing.js +295 -0
- package/dist/toml-emit.js +153 -0
- package/dist/toml-parse.js +355 -0
- package/dist/toml-utils.js +60 -0
- package/dist/toml.js +428 -0
- package/dist/ts-loader.d.ts +46 -0
- package/dist/ts-loader.d.ts.map +1 -0
- package/dist/ts-loader.js +103 -0
- package/dist/types.js +1 -0
- package/dist/utils.js +61 -0
- package/dist/validation.js +20 -0
- package/dist/vendor/js-yaml-load.js +1662 -0
- package/dist/workspace/__fixtures__/contract-repo.d.ts +7 -0
- package/dist/workspace/__fixtures__/contract-repo.d.ts.map +1 -1
- package/dist/workspace/__fixtures__/contract-repo.js +119 -0
- package/dist/workspace/__fixtures__/decide-workspace.js +112 -0
- package/dist/workspace/__fixtures__/sessions.d.ts +1 -1
- package/dist/workspace/__fixtures__/sessions.d.ts.map +1 -1
- package/dist/workspace/__fixtures__/sessions.js +91 -0
- package/dist/workspace/__fixtures__/two-member-workspace.js +34 -0
- package/dist/workspace/agent-cli.js +99 -0
- package/dist/workspace/agent.schema.json +390 -0
- package/dist/workspace/answers-ledger.js +89 -0
- package/dist/workspace/box-cli.js +142 -0
- package/dist/workspace/box-factory-write.js +196 -0
- package/dist/workspace/box-factory-write.schema.json +342 -0
- package/dist/workspace/box-factory.js +88 -0
- package/dist/workspace/box-intent.js +126 -0
- package/dist/workspace/box-isolation.js +169 -0
- package/dist/workspace/box-listing-write.schema.json +204 -0
- package/dist/workspace/box-listing.js +298 -0
- package/dist/workspace/box-publish.js +352 -0
- package/dist/workspace/box-publish.schema.json +498 -0
- package/dist/workspace/box-services.js +39 -0
- package/dist/workspace/broker-protocol.js +359 -0
- package/dist/workspace/broker-protocol.schema.json +228 -0
- package/dist/workspace/change-set.schema.json +462 -0
- package/dist/workspace/changes-cli.js +56 -0
- package/dist/workspace/changes.js +446 -0
- package/dist/workspace/changes.schema.json +642 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit-fly-site.js +198 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit-live-names.js +155 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit-rollback.js +214 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit-ship-inputs.js +180 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit-ship-policy.js +99 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit.js +847 -0
- package/dist/workspace/chant-migrations.js +113 -0
- package/dist/workspace/check.schema.json +433 -0
- package/dist/workspace/checks/box-isolation.js +62 -0
- package/dist/workspace/checks/boxes.js +491 -0
- package/dist/workspace/checks/diagrams.js +104 -0
- package/dist/workspace/checks/generated.js +419 -0
- package/dist/workspace/checks/ledgers.js +212 -0
- package/dist/workspace/checks/links.js +191 -0
- package/dist/workspace/checks/live.js +100 -0
- package/dist/workspace/checks/pipelines.js +188 -0
- package/dist/workspace/checks/records.js +169 -0
- package/dist/workspace/checks.js +426 -0
- package/dist/workspace/ci-green-cli.js +125 -0
- package/dist/workspace/ci-green-forge.js +83 -0
- package/dist/workspace/ci-green-workflow.d.ts +3 -1
- package/dist/workspace/ci-green-workflow.d.ts.map +1 -1
- package/dist/workspace/ci-green-workflow.js +202 -0
- package/dist/workspace/ci-green.js +325 -0
- package/dist/workspace/ci-last-green.schema.json +158 -0
- package/dist/workspace/class-data.d.ts +84 -0
- package/dist/workspace/class-data.d.ts.map +1 -0
- package/dist/workspace/class-data.js +238 -0
- package/dist/workspace/compose-graph.js +235 -0
- package/dist/workspace/compose-reports.js +146 -0
- package/dist/workspace/composites.js +264 -0
- package/dist/workspace/composites.schema.json +617 -0
- package/dist/workspace/conformance/__fixture__/app/package.json +7 -0
- package/dist/workspace/conformance/__fixture__/app/src/server.mjs +29 -0
- package/dist/workspace/conformance/__fixture__/decisions/decision.kind.mjs +54 -0
- package/dist/workspace/conformance/__fixture__/decisions/decision.schema.json +512 -0
- package/dist/workspace/conformance/__fixture__/decisions/fix-001-how-the-app-is-deployed.md +40 -0
- package/dist/workspace/conformance/__fixture__/delivery/chant.config.ts +7 -0
- package/dist/workspace/conformance/__fixture__/delivery/lexicon/index.ts +26 -0
- package/dist/workspace/conformance/__fixture__/delivery/package.json +7 -0
- package/dist/workspace/conformance/__fixture__/delivery/src/app.component.ts +14 -0
- package/dist/workspace/conformance/__fixture__/delivery/src/app.ts +4 -0
- package/dist/workspace/conformance/__fixtures__/reference-broker.js +205 -0
- package/dist/workspace/conformance/__writer_fixture__/answers/answer.kind.mjs +32 -0
- package/dist/workspace/conformance/__writer_fixture__/answers/answer.schema.json +135 -0
- package/dist/workspace/conformance/__writer_fixture__/contracts/contract.kind.mjs +37 -0
- package/dist/workspace/conformance/__writer_fixture__/contracts/contract.schema.json +213 -0
- package/dist/workspace/conformance/__writer_fixture__/decisions/points.json +228 -0
- package/dist/workspace/conformance/__writer_fixture__/drivers/driver.kind.mjs +15 -0
- package/dist/workspace/conformance/__writer_fixture__/drivers/driver.schema.json +38 -0
- package/dist/workspace/conformance/__writer_fixture__/sessions/session.kind.mjs +54 -0
- package/dist/workspace/conformance/__writer_fixture__/sessions/session.schema.json +289 -0
- package/dist/workspace/conformance/__writer_fixture__/work/W-001-the-writer-suite-works-this-item.md +25 -0
- package/dist/workspace/conformance/__writer_fixture__/work/work.kind.mjs +60 -0
- package/dist/workspace/conformance/__writer_fixture__/work/work.schema.json +603 -0
- package/dist/workspace/conformance/broker.js +736 -0
- package/dist/workspace/conformance/index.js +673 -0
- package/dist/workspace/conformance/vitest.js +108 -0
- package/dist/workspace/conformance/writer.js +1080 -0
- package/dist/workspace/decide.js +879 -0
- package/dist/workspace/decision-points.schema.json +135 -135
- package/dist/workspace/declaration-write-cli.js +74 -0
- package/dist/workspace/declaration-write.js +238 -0
- package/dist/workspace/declaration.js +938 -0
- package/dist/workspace/declaration.schema.json +1413 -1413
- package/dist/workspace/declared-kinds.js +106 -0
- package/dist/workspace/environments.js +164 -0
- package/dist/workspace/evidence.schema.json +279 -0
- package/dist/workspace/export-cli.js +185 -0
- package/dist/workspace/export.js +499 -0
- package/dist/workspace/factory-rules.js +175 -0
- package/dist/workspace/generated-files.js +92 -0
- package/dist/workspace/glob.js +45 -0
- package/dist/workspace/graph-cache.js +352 -0
- package/dist/workspace/graph-cli.js +348 -0
- package/dist/workspace/graph.schema.json +1338 -0
- package/dist/workspace/identity-gate-rule.js +75 -0
- package/dist/workspace/identity.js +126 -0
- package/dist/workspace/import.js +283 -0
- package/dist/workspace/init.js +620 -0
- package/dist/workspace/intent-cli.js +263 -0
- package/dist/workspace/intent-joins.js +201 -0
- package/dist/workspace/intent-record.js +352 -0
- package/dist/workspace/intent-record.schema.json +864 -0
- package/dist/workspace/intent.js +1582 -0
- package/dist/workspace/intent.schema.json +2420 -0
- package/dist/workspace/json-edit.js +221 -0
- package/dist/workspace/jsonc.js +235 -0
- package/dist/workspace/kind-readers.js +103 -0
- package/dist/workspace/kinds.d.ts +3 -7
- package/dist/workspace/kinds.d.ts.map +1 -1
- package/dist/workspace/kinds.js +553 -0
- package/dist/workspace/lexicon-symbols.js +112 -0
- package/dist/workspace/lineage-adopt-cli.js +102 -0
- package/dist/workspace/lineage-adopt.js +360 -0
- package/dist/workspace/lineage-check.js +282 -0
- package/dist/workspace/lineage-cli.js +121 -0
- package/dist/workspace/lineage-hash-index.js +284 -0
- package/dist/workspace/lineage-init.js +507 -0
- package/dist/workspace/lineage-lock.js +387 -0
- package/dist/workspace/lineage-merge.js +45 -0
- package/dist/workspace/lineage-migrations.d.ts.map +1 -1
- package/dist/workspace/lineage-migrations.js +329 -0
- package/dist/workspace/lineage-provenance.js +36 -0
- package/dist/workspace/lineage-update.js +138 -0
- package/dist/workspace/lineage-upgrade-cli.js +131 -0
- package/dist/workspace/lineage-upgrade.js +889 -0
- package/dist/workspace/lineage-vendor.js +171 -0
- package/dist/workspace/lineage-version.js +128 -0
- package/dist/workspace/lineage-versions.js +275 -0
- package/dist/workspace/links.js +330 -0
- package/dist/workspace/ls-generated.js +95 -0
- package/dist/workspace/ls.js +277 -0
- package/dist/workspace/ls.schema.json +333 -0
- package/dist/workspace/member-commands.js +508 -0
- package/dist/workspace/member-handles.js +216 -0
- package/dist/workspace/member-pipeline.js +258 -0
- package/dist/workspace/member-run.js +117 -0
- package/dist/workspace/member-write.schema.json +193 -0
- package/dist/workspace/nested-graph.js +156 -0
- package/dist/workspace/nesting.js +38 -0
- package/dist/workspace/patch.js +301 -0
- package/dist/workspace/patch.schema.json +321 -0
- package/dist/workspace/pin-cli.js +55 -0
- package/dist/workspace/pin-integrity.js +100 -0
- package/dist/workspace/plan-summary.schema.json +155 -0
- package/dist/workspace/point-answer.schema.json +129 -129
- package/dist/workspace/points-cli.js +291 -0
- package/dist/workspace/points-write.schema.json +660 -0
- package/dist/workspace/points.js +521 -0
- package/dist/workspace/points.schema.json +916 -0
- package/dist/workspace/pr-report.schema.json +108 -0
- package/dist/workspace/principal-classes.d.ts +4 -11
- package/dist/workspace/principal-classes.d.ts.map +1 -1
- package/dist/workspace/principal-classes.js +162 -0
- package/dist/workspace/reason-codes.js +326 -0
- package/dist/workspace/record-assets.js +151 -0
- package/dist/workspace/record-decided.js +105 -0
- package/dist/workspace/record-sessions.js +96 -0
- package/dist/workspace/record-source.js +114 -0
- package/dist/workspace/records-amend.schema.json +284 -0
- package/dist/workspace/records-checkout.js +76 -0
- package/dist/workspace/records-cli.js +707 -0
- package/dist/workspace/records-close.js +116 -0
- package/dist/workspace/records-close.schema.json +278 -0
- package/dist/workspace/records-new.schema.json +202 -0
- package/dist/workspace/records-review.schema.json +367 -0
- package/dist/workspace/records-since.js +317 -0
- package/dist/workspace/records-since.schema.json +218 -0
- package/dist/workspace/records-write.js +1229 -0
- package/dist/workspace/records.js +1345 -0
- package/dist/workspace/records.schema.json +604 -0
- package/dist/workspace/reference-kinds/app/package.json +10 -0
- package/dist/workspace/reference-kinds/app/workspace-kinds.json +45 -0
- package/dist/workspace/returns.js +303 -0
- package/dist/workspace/root-refusal.js +75 -0
- package/dist/workspace/run-statement.schema.json +622 -0
- package/dist/workspace/runs-cli.js +584 -0
- package/dist/workspace/runs-write.schema.json +994 -0
- package/dist/workspace/runs.js +708 -0
- package/dist/workspace/runs.schema.json +1257 -0
- package/dist/workspace/runtimes.js +76 -0
- package/dist/workspace/session-kinds.js +83 -0
- package/dist/workspace/signers.schema.json +206 -0
- package/dist/workspace/source-block.js +125 -0
- package/dist/workspace/squash.js +177 -0
- package/dist/workspace/status-gates.js +162 -0
- package/dist/workspace/status-stewards.js +330 -0
- package/dist/workspace/status.js +514 -0
- package/dist/workspace/status.schema.json +998 -0
- package/dist/workspace/steward-index.js +191 -0
- package/dist/workspace/symbols.js +188 -0
- package/dist/workspace/template-manifest.js +227 -0
- package/dist/workspace/template-pins.js +115 -0
- package/dist/workspace/trailer-joins.js +65 -0
- package/dist/workspace/trailers.js +111 -0
- package/dist/workspace/tree.js +136 -0
- package/dist/workspace/trust/attestor.js +63 -0
- package/dist/workspace/trust/dsse.js +108 -0
- package/dist/workspace/trust/evidence-cli.js +175 -0
- package/dist/workspace/trust/evidence.js +161 -0
- package/dist/workspace/trust/gate-seal.js +226 -0
- package/dist/workspace/trust/policy.js +190 -0
- package/dist/workspace/trust/provenance.js +180 -0
- package/dist/workspace/trust/rotation.js +298 -0
- package/dist/workspace/trust/run-commits.js +101 -0
- package/dist/workspace/trust/run-statement.js +182 -0
- package/dist/workspace/trust/seal.js +272 -0
- package/dist/workspace/trust/signers-cli.js +152 -0
- package/dist/workspace/trust/ssh-commit.js +178 -0
- package/dist/workspace/trust/test-repo.js +118 -0
- package/dist/workspace/trust/trust-files.js +193 -0
- package/dist/workspace/trust/verify-cli.js +63 -0
- package/dist/workspace/trust/verify.js +192 -0
- package/dist/workspace/which-chant.js +141 -0
- package/dist/workspace/wip-cli.js +95 -0
- package/dist/workspace/wip-write.schema.json +504 -0
- package/dist/workspace/wip.js +631 -0
- package/dist/workspace/wip.schema.json +334 -0
- package/dist/workspace/work-cli.js +448 -0
- package/dist/workspace/work-evidence.js +122 -0
- package/dist/workspace/work-evidence.schema.json +222 -0
- package/dist/workspace/work-history.schema.json +421 -0
- package/dist/workspace/work-lease.schema.json +246 -0
- package/dist/workspace/work-size.js +77 -0
- package/dist/workspace/work.js +283 -0
- package/dist/workspace/workspace-kinds.schema.json +259 -259
- package/dist/workspace/workspace-principals.schema.json +53 -53
- package/dist/workspace/write-lock-cli.js +105 -0
- package/dist/workspace/write-lock.js +424 -0
- package/dist/workspace/write-lock.schema.json +172 -0
- package/dist/workspace/write-scope.js +484 -0
- package/dist/yaml.js +459 -0
- package/package.json +2 -2
- package/src/build.ts +8 -0
- package/src/change-set.test.ts +48 -0
- package/src/change-set.ts +52 -2
- package/src/ci-jobs.test.ts +49 -0
- package/src/ci-jobs.ts +515 -0
- package/src/cli/commands/check-lexicon-plugin.ts +2 -0
- package/src/cli/commands/lint.ts +3 -0
- package/src/cli/commands/migrate.ts +2 -0
- package/src/cli/compiled-cli.e2e.test.ts +165 -0
- package/src/cli/main.ts +121 -27
- package/src/cli/mcp/workspace-tools.ts +1 -1
- package/src/codegen/pinned-upgrade.ts +2 -0
- package/src/components/discover.ts +2 -0
- package/src/components/pr-pipeline.ts +3 -2
- package/src/components/sandbox/driver.ts +3 -1
- package/src/composite.ts +15 -3
- package/src/config-import.ts +3 -0
- package/src/discovery/collect.ts +15 -1
- package/src/discovery/fold-build-parity.test.ts +71 -0
- package/src/discovery/fold-import.ts +25 -127
- package/src/discovery/fold-project-provenance.test.ts +21 -4
- package/src/discovery/host-composite.ts +101 -0
- package/src/discovery/import.ts +2 -0
- package/src/discovery/index.ts +11 -1
- package/src/discovery/sandbox/driver.ts +3 -1
- package/src/gate-decision-bundle.test.ts +5 -4
- package/src/gate-decision-identity.test.ts +59 -6
- package/src/gate-decision.ts +81 -21
- package/src/lexicon-module.ts +3 -0
- package/src/lifecycle/gate-audit.test.ts +55 -1
- package/src/lifecycle/gate-audit.ts +116 -3
- package/src/lifecycle/gate-ledger.test.ts +20 -1
- package/src/lifecycle/gate-ledger.ts +33 -1
- package/src/lint/config.ts +1 -1
- package/src/lint/discover.ts +28 -8
- package/src/lint/policy-import.ts +4 -1
- package/src/lint/rule-loader.ts +2 -0
- package/src/op/activities/activity-contracts.ts +1 -1
- package/src/op/activities/change-set.ts +11 -3
- package/src/op/activities/lexicon-upgrade.test.ts +2 -0
- package/src/op/activities/reconcile.test.ts +62 -2
- package/src/op/activities/reconcile.ts +46 -22
- package/src/op/builders.ts +1 -1
- package/src/op/discover.ts +3 -0
- package/src/op/op-waves-run.ts +4 -3
- package/src/op/op-waves.test.ts +2 -0
- package/src/op/work-lease-run.test.ts +12 -4
- package/src/ts-loader.test.ts +23 -0
- package/src/ts-loader.ts +122 -0
- package/src/workspace/__fixtures__/contract-repo.ts +17 -1
- package/src/workspace/__fixtures__/sessions.ts +3 -3
- package/src/workspace/change-set.schema.json +5 -3
- package/src/workspace/chant-migrations/chud-lexicon-exit.ts +1 -1
- package/src/workspace/ci-green-workflow.test.ts +4 -4
- package/src/workspace/ci-green-workflow.ts +5 -2
- package/src/workspace/class-data.test.ts +64 -0
- package/src/workspace/class-data.ts +236 -0
- package/src/workspace/declaration.ts +1 -1
- package/src/workspace/kinds.ts +7 -36
- package/src/workspace/lineage-migrations.ts +2 -0
- package/src/workspace/points.ts +1 -1
- package/src/workspace/principal-classes.ts +12 -95
- package/src/workspace/records-formats.test.ts +7 -2
- package/src/workspace/records-sessions-write.test.ts +3 -3
- package/src/workspace/status-contract.e2e.test.ts +37 -0
- package/src/workspace/status-contract.test.ts +23 -21
|
@@ -0,0 +1,487 @@
|
|
|
1
|
+
import * as ts from "typescript";
|
|
2
|
+
/**
|
|
3
|
+
* Which build parameters an authored props expression READS, per path (chant
|
|
4
|
+
* #1443) — the declared-side counterpart of `managed-fields.ts`'s per-path live
|
|
5
|
+
* `owners`.
|
|
6
|
+
*
|
|
7
|
+
* This is a syntactic dependency, not a value taint. Fold substitutes
|
|
8
|
+
* `params.<name>` before anything is emitted, so by output time the value is a
|
|
9
|
+
* literal and indistinguishable from one typed by hand; tainting the value
|
|
10
|
+
* through fold's evaluator would mean propagating a tag through every operator
|
|
11
|
+
* it supports, and one operator that forgot would produce silently wrong
|
|
12
|
+
* provenance. Recording which parameters the *expression* mentions cannot
|
|
13
|
+
* degrade that way: a shape this walk does not follow drops a dependency, it
|
|
14
|
+
* never invents one.
|
|
15
|
+
*
|
|
16
|
+
* It also answers the more useful question. For
|
|
17
|
+
* `replicas: params.tier === "prod" ? 5 : 1`, a taint reports that the value
|
|
18
|
+
* came from the literal `5` — true, and no help to anyone about to edit the
|
|
19
|
+
* field. The dependency reports that the field is governed by `tier`.
|
|
20
|
+
*
|
|
21
|
+
* Known under-reporting, all in the safe direction: destructured parameters
|
|
22
|
+
* (`const { tier } = params`) are not tracked, because `collectConsts` only
|
|
23
|
+
* records identifier bindings; a bare reference to the whole `params` object
|
|
24
|
+
* names no single parameter and records nothing; and the run path has no
|
|
25
|
+
* expression to walk at all.
|
|
26
|
+
*
|
|
27
|
+
* The one direction it can over-report is a local binding that shadows a
|
|
28
|
+
* top-level `const` of the same name, since names resolve against the file's
|
|
29
|
+
* consts without scope tracking. That reports a parameter the field could
|
|
30
|
+
* plausibly be governed by rather than one it definitely is, which is the
|
|
31
|
+
* failure the "could affect" reading is written to absorb.
|
|
32
|
+
*
|
|
33
|
+
* {@link collectCompositeOrigins} (chant #2161) is the same walk pointed at a
|
|
34
|
+
* different parameter object: a composite factory's own props, inside a body
|
|
35
|
+
* the fold interprets. It shares the path grammar, the const-following and the
|
|
36
|
+
* under-reporting posture, and adds the one answer a build parameter has no use
|
|
37
|
+
* for — a path that reads no parameter at all, which for a composite means the
|
|
38
|
+
* field is fixed.
|
|
39
|
+
*/
|
|
40
|
+
/** The property name a member declares, when it is a literal one. */
|
|
41
|
+
function literalName(name) {
|
|
42
|
+
if (!name)
|
|
43
|
+
return undefined;
|
|
44
|
+
if (ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name))
|
|
45
|
+
return name.text;
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
/** Strip the wrappers that do not change what an initializer reads. */
|
|
49
|
+
function unwrap(expr) {
|
|
50
|
+
let current = expr;
|
|
51
|
+
for (;;) {
|
|
52
|
+
if (ts.isParenthesizedExpression(current) || ts.isAsExpression(current) || ts.isNonNullExpression(current)) {
|
|
53
|
+
current = current.expression;
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
return current;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Every parameter name `expr` reads, following this file's own top-level
|
|
61
|
+
* `const` bindings so a value hoisted into a local is still attributed
|
|
62
|
+
* (`const replicas = params.tier === "prod" ? 5 : 1` used as `replicas`).
|
|
63
|
+
*/
|
|
64
|
+
function readParams(expr, consts, paramLocals, out) {
|
|
65
|
+
const followed = new Set();
|
|
66
|
+
const visit = (node) => {
|
|
67
|
+
if (ts.isPropertyAccessExpression(node)) {
|
|
68
|
+
if (ts.isIdentifier(node.expression) && paramLocals.has(node.expression.text)) {
|
|
69
|
+
out.add(node.name.text);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
visit(node.expression);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if (ts.isElementAccessExpression(node)) {
|
|
76
|
+
if (ts.isIdentifier(node.expression) && paramLocals.has(node.expression.text)) {
|
|
77
|
+
if (ts.isStringLiteralLike(node.argumentExpression))
|
|
78
|
+
out.add(node.argumentExpression.text);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
visit(node.expression);
|
|
82
|
+
}
|
|
83
|
+
visit(node.argumentExpression);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
if (ts.isIdentifier(node)) {
|
|
87
|
+
// A bare `params` names no single parameter — see the under-reporting
|
|
88
|
+
// note above.
|
|
89
|
+
if (paramLocals.has(node.text))
|
|
90
|
+
return;
|
|
91
|
+
const initializer = consts.get(node.text);
|
|
92
|
+
if (initializer && !followed.has(node.text)) {
|
|
93
|
+
followed.add(node.text);
|
|
94
|
+
visit(initializer);
|
|
95
|
+
}
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
// A property KEY is not a reference; without this a nested `{ tier: 1 }`
|
|
99
|
+
// would resolve `tier` against `consts` and manufacture a dependency.
|
|
100
|
+
if (ts.isPropertyAssignment(node)) {
|
|
101
|
+
visit(node.initializer);
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
ts.forEachChild(node, visit);
|
|
105
|
+
};
|
|
106
|
+
visit(expr);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* The first host read in `expr`, following this file's own top-level consts,
|
|
110
|
+
* or `undefined` when it reads none (INTENTIUS/typescript-as-data#248).
|
|
111
|
+
*
|
|
112
|
+
* A method called on a receiver is `host-call` whatever the receiver is, since
|
|
113
|
+
* fold calls the real method on it; so is a call to an eager lexicon helper. An
|
|
114
|
+
* identifier bound to a lexicon export is `host-value`. A call fold reduces to
|
|
115
|
+
* an envelope (an authoring helper, a call-form intrinsic) or evaluates itself
|
|
116
|
+
* (a project function) is not host code, and only its arguments are read.
|
|
117
|
+
*
|
|
118
|
+
* Syntactic, like {@link readParams}, so it over-reports in one place: both
|
|
119
|
+
* arms of a conditional are read although only one is taken. That errs toward
|
|
120
|
+
* `unknown`, which never licenses an edit `direct` would not.
|
|
121
|
+
*/
|
|
122
|
+
export function hostReadOf(expr, consts, paramLocals, host) {
|
|
123
|
+
const followed = new Set();
|
|
124
|
+
let found;
|
|
125
|
+
const visit = (node) => {
|
|
126
|
+
if (found)
|
|
127
|
+
return;
|
|
128
|
+
if (ts.isCallExpression(node)) {
|
|
129
|
+
const callee = unwrap(node.expression);
|
|
130
|
+
if (ts.isPropertyAccessExpression(callee) || ts.isElementAccessExpression(callee)) {
|
|
131
|
+
found = "host-call";
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
if (ts.isIdentifier(callee) && !consts.has(callee.text) && host.eagerCalls.has(callee.text)) {
|
|
135
|
+
found = "host-call";
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
for (const argument of node.arguments)
|
|
139
|
+
visit(argument);
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
if (ts.isPropertyAccessExpression(node)) {
|
|
143
|
+
// The member name is not a reference.
|
|
144
|
+
visit(node.expression);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
if (ts.isIdentifier(node)) {
|
|
148
|
+
if (paramLocals.has(node.text))
|
|
149
|
+
return;
|
|
150
|
+
const initializer = consts.get(node.text);
|
|
151
|
+
if (initializer) {
|
|
152
|
+
// A sibling resource is a reference to it, not a read of its props.
|
|
153
|
+
if (ts.isNewExpression(unwrap(initializer)) || followed.has(node.text))
|
|
154
|
+
return;
|
|
155
|
+
followed.add(node.text);
|
|
156
|
+
visit(initializer);
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
if (host.values.has(node.text))
|
|
160
|
+
found = "host-value";
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
if (ts.isPropertyAssignment(node)) {
|
|
164
|
+
visit(node.initializer);
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
// A tag is an intrinsic the lexicon registered, and only its
|
|
168
|
+
// interpolations are read.
|
|
169
|
+
if (ts.isTaggedTemplateExpression(node)) {
|
|
170
|
+
visit(node.template);
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
ts.forEachChild(node, visit);
|
|
174
|
+
};
|
|
175
|
+
visit(expr);
|
|
176
|
+
return found;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Path → build-parameter origin for one resource's props object literal.
|
|
180
|
+
*
|
|
181
|
+
* Paths are dotted property names only, per `EntityProvenance.paths`: an object
|
|
182
|
+
* literal is descended into, and anything else — an array literal included — is
|
|
183
|
+
* attributed whole at its own path. An array's elements are deliberately not
|
|
184
|
+
* indexed, because an index-shaped key would not survive an element moving and
|
|
185
|
+
* would not match the `[#key]` addressing a diff uses.
|
|
186
|
+
*
|
|
187
|
+
* A spread is attributed to the object it spreads INTO, at that object's own
|
|
188
|
+
* path (the entity root for a top-level spread), since which keys it
|
|
189
|
+
* contributes is not knowable here.
|
|
190
|
+
*
|
|
191
|
+
* With `host`, a path whose expression reads host code ({@link hostReadOf})
|
|
192
|
+
* is recorded `host` instead, and that outranks a build parameter it also
|
|
193
|
+
* reads: the value is what host code returned, whatever the parameter was.
|
|
194
|
+
*/
|
|
195
|
+
export function collectParamDependencies(props, consts, paramLocals, host) {
|
|
196
|
+
const out = {};
|
|
197
|
+
if (paramLocals.size === 0 && !host)
|
|
198
|
+
return out;
|
|
199
|
+
const record = (path, expr) => {
|
|
200
|
+
if (out[path]?.kind === "host")
|
|
201
|
+
return;
|
|
202
|
+
const reason = host ? hostReadOf(expr, consts, paramLocals, host) : undefined;
|
|
203
|
+
if (reason) {
|
|
204
|
+
out[path] = { kind: "host", reason };
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
const found = new Set();
|
|
208
|
+
readParams(expr, consts, paramLocals, found);
|
|
209
|
+
if (found.size === 0)
|
|
210
|
+
return;
|
|
211
|
+
const existing = out[path];
|
|
212
|
+
const merged = existing && existing.kind === "build-param" ? new Set([...existing.params, ...found]) : found;
|
|
213
|
+
out[path] = { kind: "build-param", params: [...merged].sort() };
|
|
214
|
+
};
|
|
215
|
+
const walk = (object, prefix) => {
|
|
216
|
+
for (const member of object.properties) {
|
|
217
|
+
if (ts.isSpreadAssignment(member)) {
|
|
218
|
+
record(prefix, member.expression);
|
|
219
|
+
continue;
|
|
220
|
+
}
|
|
221
|
+
if (ts.isShorthandPropertyAssignment(member)) {
|
|
222
|
+
const key = member.name.text;
|
|
223
|
+
record(prefix ? `${prefix}.${key}` : key, member.name);
|
|
224
|
+
continue;
|
|
225
|
+
}
|
|
226
|
+
if (!ts.isPropertyAssignment(member))
|
|
227
|
+
continue;
|
|
228
|
+
const key = literalName(member.name);
|
|
229
|
+
if (key === undefined)
|
|
230
|
+
continue;
|
|
231
|
+
const path = prefix ? `${prefix}.${key}` : key;
|
|
232
|
+
const initializer = unwrap(member.initializer);
|
|
233
|
+
if (ts.isObjectLiteralExpression(initializer)) {
|
|
234
|
+
walk(initializer, path);
|
|
235
|
+
continue;
|
|
236
|
+
}
|
|
237
|
+
record(path, member.initializer);
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
walk(props, "");
|
|
241
|
+
return out;
|
|
242
|
+
}
|
|
243
|
+
/** The parameter path `node` addresses, or `undefined` when it is not rooted at one. */
|
|
244
|
+
function parameterPathOf(node, scope) {
|
|
245
|
+
const segments = [];
|
|
246
|
+
let current = node;
|
|
247
|
+
for (;;) {
|
|
248
|
+
if (ts.isPropertyAccessExpression(current)) {
|
|
249
|
+
segments.unshift(current.name.text);
|
|
250
|
+
current = current.expression;
|
|
251
|
+
continue;
|
|
252
|
+
}
|
|
253
|
+
if (ts.isElementAccessExpression(current) && ts.isStringLiteralLike(current.argumentExpression)) {
|
|
254
|
+
segments.unshift(current.argumentExpression.text);
|
|
255
|
+
current = current.expression;
|
|
256
|
+
continue;
|
|
257
|
+
}
|
|
258
|
+
break;
|
|
259
|
+
}
|
|
260
|
+
if (!ts.isIdentifier(current))
|
|
261
|
+
return undefined;
|
|
262
|
+
if (scope.whole.has(current.text)) {
|
|
263
|
+
// A bare `props` addresses no single parameter — the same call the
|
|
264
|
+
// build-param collector makes about a bare `params`.
|
|
265
|
+
return segments.length === 0 ? undefined : segments.join(".");
|
|
266
|
+
}
|
|
267
|
+
const base = scope.destructured.get(current.text);
|
|
268
|
+
if (base === undefined)
|
|
269
|
+
return undefined;
|
|
270
|
+
return segments.length === 0 ? base : `${base}.${segments.join(".")}`;
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* True for a `const` bound to a sibling ENTITY rather than to a value: a
|
|
274
|
+
* `new Type(...)`, or a call (a nested composite, a helper).
|
|
275
|
+
*
|
|
276
|
+
* Following one would answer the wrong question. `const bucket = new Bucket({
|
|
277
|
+
* BucketName: props.name })` and then `Description: bucket.Arn` reads a
|
|
278
|
+
* reference to a sibling the composite wired up, not the value of `name`.
|
|
279
|
+
* Chasing it would report `Description` as governed by `name`, and the return
|
|
280
|
+
* leg would propose editing `name` to fix a field that is a cross-reference. A
|
|
281
|
+
* field wired inside the composite is one the composite fixes, and the refusal
|
|
282
|
+
* is the right answer.
|
|
283
|
+
*/
|
|
284
|
+
function isEntityBinding(initializer) {
|
|
285
|
+
const expr = unwrap(initializer);
|
|
286
|
+
return ts.isNewExpression(expr) || ts.isCallExpression(expr);
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Every factory parameter path `expr` reads, following `consts` so a value
|
|
290
|
+
* hoisted into a body-local `const` is still attributed.
|
|
291
|
+
*/
|
|
292
|
+
function readCompositeParameters(expr, consts, scope, out) {
|
|
293
|
+
const followed = new Set();
|
|
294
|
+
const visit = (node) => {
|
|
295
|
+
if (ts.isPropertyAccessExpression(node) || ts.isElementAccessExpression(node)) {
|
|
296
|
+
const path = parameterPathOf(node, scope);
|
|
297
|
+
if (path !== undefined) {
|
|
298
|
+
out.add(path);
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
visit(node.expression);
|
|
302
|
+
if (ts.isElementAccessExpression(node))
|
|
303
|
+
visit(node.argumentExpression);
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
if (ts.isIdentifier(node)) {
|
|
307
|
+
const path = parameterPathOf(node, scope);
|
|
308
|
+
if (path !== undefined) {
|
|
309
|
+
out.add(path);
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
312
|
+
if (scope.whole.has(node.text))
|
|
313
|
+
return;
|
|
314
|
+
const initializer = consts.get(node.text);
|
|
315
|
+
if (initializer && !followed.has(node.text) && !isEntityBinding(initializer)) {
|
|
316
|
+
followed.add(node.text);
|
|
317
|
+
visit(initializer);
|
|
318
|
+
}
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
// A property KEY is not a reference — see `readParams` for the same guard.
|
|
322
|
+
if (ts.isPropertyAssignment(node)) {
|
|
323
|
+
visit(node.initializer);
|
|
324
|
+
return;
|
|
325
|
+
}
|
|
326
|
+
ts.forEachChild(node, visit);
|
|
327
|
+
};
|
|
328
|
+
visit(expr);
|
|
329
|
+
}
|
|
330
|
+
/** A node's start as a 1-based {@link SourceLocation}. */
|
|
331
|
+
export function sourceLocationOf(file, node) {
|
|
332
|
+
const sourceFile = node.getSourceFile();
|
|
333
|
+
const { line, character } = sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile));
|
|
334
|
+
return { file, line: line + 1, column: character + 1 };
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Where `parameter` was written at `call`: the property at that path in the
|
|
338
|
+
* call's object-literal argument, descending nested object literals segment by
|
|
339
|
+
* segment, or the call itself when there is no such property.
|
|
340
|
+
*
|
|
341
|
+
* The fallback covers a parameter the call leaves out, one that arrives through
|
|
342
|
+
* a spread, and an argument that is not an object literal. In each of those the
|
|
343
|
+
* call is the nearest place that governs the value, and no `text` is given,
|
|
344
|
+
* because no property at the call says what it is.
|
|
345
|
+
*/
|
|
346
|
+
export function argumentLocation(call, parameter) {
|
|
347
|
+
const fallback = { parameter, ...sourceLocationOf(call.file, call.node) };
|
|
348
|
+
const first = call.node.arguments[0];
|
|
349
|
+
if (!first)
|
|
350
|
+
return fallback;
|
|
351
|
+
let object = unwrap(first);
|
|
352
|
+
let found;
|
|
353
|
+
for (const segment of parameter.split(".")) {
|
|
354
|
+
if (!ts.isObjectLiteralExpression(object))
|
|
355
|
+
return fallback;
|
|
356
|
+
found = undefined;
|
|
357
|
+
// Last write wins, as it does when the object literal is evaluated.
|
|
358
|
+
for (const member of object.properties) {
|
|
359
|
+
if (ts.isShorthandPropertyAssignment(member) && member.name.text === segment)
|
|
360
|
+
found = member;
|
|
361
|
+
else if (ts.isPropertyAssignment(member) && literalName(member.name) === segment)
|
|
362
|
+
found = member;
|
|
363
|
+
}
|
|
364
|
+
if (!found)
|
|
365
|
+
return fallback;
|
|
366
|
+
object = ts.isPropertyAssignment(found) ? unwrap(found.initializer) : found.name;
|
|
367
|
+
}
|
|
368
|
+
if (!found)
|
|
369
|
+
return fallback;
|
|
370
|
+
return { parameter, ...sourceLocationOf(call.file, found), text: found.getText() };
|
|
371
|
+
}
|
|
372
|
+
/** {@link argumentLocation} for each of `parameters`, in order, or nothing when no call was seen. */
|
|
373
|
+
function argumentLocations(call, parameters) {
|
|
374
|
+
return call ? parameters.map((parameter) => argumentLocation(call, parameter)) : undefined;
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* Path → composite origin for one `new Type({...})` inside an interpreted
|
|
378
|
+
* composite factory body (chant #2161).
|
|
379
|
+
*
|
|
380
|
+
* Same walk, same path grammar and the same under-reporting posture as
|
|
381
|
+
* {@link collectParamDependencies}, with one added answer: a path whose
|
|
382
|
+
* expression reads NO parameter is recorded as `composite-literal` rather than
|
|
383
|
+
* left silent, because "the composite fixes this" is a finding in its own
|
|
384
|
+
* right — it is what the reconcile refuses on.
|
|
385
|
+
*
|
|
386
|
+
* A spread is the one place nothing is recorded when no parameter is found.
|
|
387
|
+
* Which keys it contributes is not knowable here, so `composite-parameter` at
|
|
388
|
+
* the containing object is a safe over-approximation of "a parameter governs
|
|
389
|
+
* something under here", while `composite-literal` would be a claim that every
|
|
390
|
+
* key it brings is fixed. That claim is left unmade, and those paths come back
|
|
391
|
+
* `unknown` from ../fold-provenance.ts instead.
|
|
392
|
+
*
|
|
393
|
+
* `call` (chant #3597), when the fold saw the composite call, adds where each
|
|
394
|
+
* parameter's argument was written there, in the same pass.
|
|
395
|
+
*/
|
|
396
|
+
export function collectCompositeOrigins(props, consts, scope, composite, call) {
|
|
397
|
+
const out = {};
|
|
398
|
+
const parametersOf = (expr) => {
|
|
399
|
+
const found = new Set();
|
|
400
|
+
readCompositeParameters(expr, consts, scope, found);
|
|
401
|
+
return [...found].sort();
|
|
402
|
+
};
|
|
403
|
+
const record = (path, expr, spread) => {
|
|
404
|
+
const parameters = parametersOf(expr);
|
|
405
|
+
if (parameters.length > 0) {
|
|
406
|
+
const existing = out[path];
|
|
407
|
+
const merged = existing && existing.kind === "composite-parameter"
|
|
408
|
+
? [...new Set([...existing.parameters, ...parameters])].sort()
|
|
409
|
+
: parameters;
|
|
410
|
+
out[path] = compositeParameterOrigin(composite, merged, call);
|
|
411
|
+
return;
|
|
412
|
+
}
|
|
413
|
+
if (spread)
|
|
414
|
+
return;
|
|
415
|
+
out[path] ?? (out[path] = { kind: "composite-literal", composite });
|
|
416
|
+
};
|
|
417
|
+
const walk = (object, prefix) => {
|
|
418
|
+
for (const member of object.properties) {
|
|
419
|
+
if (ts.isSpreadAssignment(member)) {
|
|
420
|
+
record(prefix, member.expression, true);
|
|
421
|
+
continue;
|
|
422
|
+
}
|
|
423
|
+
if (ts.isShorthandPropertyAssignment(member)) {
|
|
424
|
+
const key = member.name.text;
|
|
425
|
+
record(prefix ? `${prefix}.${key}` : key, member.name, false);
|
|
426
|
+
continue;
|
|
427
|
+
}
|
|
428
|
+
if (!ts.isPropertyAssignment(member))
|
|
429
|
+
continue;
|
|
430
|
+
const key = literalName(member.name);
|
|
431
|
+
if (key === undefined)
|
|
432
|
+
continue;
|
|
433
|
+
const path = prefix ? `${prefix}.${key}` : key;
|
|
434
|
+
const initializer = unwrap(member.initializer);
|
|
435
|
+
if (ts.isObjectLiteralExpression(initializer)) {
|
|
436
|
+
walk(initializer, path);
|
|
437
|
+
continue;
|
|
438
|
+
}
|
|
439
|
+
record(path, member.initializer, false);
|
|
440
|
+
}
|
|
441
|
+
};
|
|
442
|
+
walk(props, "");
|
|
443
|
+
return out;
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* Path → composite origin for an entity a registered tag built inside an
|
|
447
|
+
* interpreted composite factory body (chant #3212).
|
|
448
|
+
*
|
|
449
|
+
* The tag reports which props paths each interpolation fed (`fields`, from
|
|
450
|
+
* `setInterpolationFields`), because only the tag parsed the text. This joins
|
|
451
|
+
* that with the factory parameters each interpolation's expression reads,
|
|
452
|
+
* walked exactly as {@link collectCompositeOrigins} walks a property's
|
|
453
|
+
* expression, so a body `const` is followed and a sibling entity is not.
|
|
454
|
+
*
|
|
455
|
+
* A path fed by an interpolation that reads a parameter is that parameter. Every
|
|
456
|
+
* other top-level key of `props` is something the factory's text fixes, and is
|
|
457
|
+
* recorded `composite-literal` at the key, which a parameter recorded deeper
|
|
458
|
+
* still outranks by longest prefix.
|
|
459
|
+
*/
|
|
460
|
+
export function collectTagOrigins(interpolations, fields, props, consts, scope, composite, call) {
|
|
461
|
+
const out = {};
|
|
462
|
+
interpolations.forEach((expr, index) => {
|
|
463
|
+
const found = new Set();
|
|
464
|
+
readCompositeParameters(expr, consts, scope, found);
|
|
465
|
+
if (found.size === 0)
|
|
466
|
+
return;
|
|
467
|
+
for (const path of fields[index] ?? []) {
|
|
468
|
+
const existing = out[path];
|
|
469
|
+
const merged = new Set(existing?.kind === "composite-parameter" ? existing.parameters : []);
|
|
470
|
+
for (const parameter of found)
|
|
471
|
+
merged.add(parameter);
|
|
472
|
+
out[path] = compositeParameterOrigin(composite, [...merged].sort(), call);
|
|
473
|
+
}
|
|
474
|
+
});
|
|
475
|
+
if (props !== null && typeof props === "object" && !Array.isArray(props)) {
|
|
476
|
+
for (const [key, value] of Object.entries(props)) {
|
|
477
|
+
if (value !== undefined)
|
|
478
|
+
out[key] ?? (out[key] = { kind: "composite-literal", composite });
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
return out;
|
|
482
|
+
}
|
|
483
|
+
/** A `composite-parameter` origin, with its argument locations when the call was seen. */
|
|
484
|
+
function compositeParameterOrigin(composite, parameters, call) {
|
|
485
|
+
const locations = argumentLocations(call, parameters);
|
|
486
|
+
return { kind: "composite-parameter", composite, parameters, ...(locations ? { arguments: locations } : {}) };
|
|
487
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { LOGICAL_NAME_SYMBOL, getAttributes, isAttrRefLike } from "../utils.js";
|
|
2
|
+
/**
|
|
3
|
+
* Resolves all AttrRef instances in a collection of entities
|
|
4
|
+
* Sets logical names on entities and resolves parent references in AttrRefs
|
|
5
|
+
*
|
|
6
|
+
* @param entities - Map of export name to Declarable entity
|
|
7
|
+
* @throws {Error} If an AttrRef parent cannot be found in the entities collection
|
|
8
|
+
*/
|
|
9
|
+
export function resolveAttrRefs(entities) {
|
|
10
|
+
// First pass: Set logical names on all entities
|
|
11
|
+
for (const [name, entity] of entities.entries()) {
|
|
12
|
+
entity[LOGICAL_NAME_SYMBOL] = name;
|
|
13
|
+
}
|
|
14
|
+
// Second pass: Resolve all AttrRef instances
|
|
15
|
+
for (const [name, entity] of entities.entries()) {
|
|
16
|
+
const attributes = getAttributes(entity);
|
|
17
|
+
for (const attrName of attributes) {
|
|
18
|
+
const attrRef = entity[attrName];
|
|
19
|
+
if (isAttrRefLike(attrRef)) {
|
|
20
|
+
const parent = attrRef.parent.deref();
|
|
21
|
+
if (!parent) {
|
|
22
|
+
throw new Error(`Cannot resolve AttrRef on "${name}.${attrName}": parent has been garbage collected`);
|
|
23
|
+
}
|
|
24
|
+
// Find the parent entity in the entities map
|
|
25
|
+
let parentLogicalName;
|
|
26
|
+
for (const [entityName, entityValue] of entities.entries()) {
|
|
27
|
+
if (entityValue === parent) {
|
|
28
|
+
parentLogicalName = entityName;
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (!parentLogicalName) {
|
|
33
|
+
throw new Error(`Cannot resolve AttrRef on "${name}.${attrName}": parent entity not found in entities collection`);
|
|
34
|
+
}
|
|
35
|
+
attrRef._setLogicalName(parentLogicalName);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|