@intentius/chant 0.124.12 → 0.124.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/chant +11 -0
- package/dist/agents/checks.js +326 -0
- package/dist/agents/discover.js +885 -0
- package/dist/agents/importer.js +17 -0
- package/dist/agents/index.js +12 -0
- package/dist/agents/types.js +19 -0
- package/dist/apply.js +151 -0
- package/dist/attrref.js +70 -0
- package/dist/audit/catalog.js +350 -0
- package/dist/audit/core.js +252 -0
- package/dist/audit/discover.js +633 -0
- package/dist/audit/fetch.js +666 -0
- package/dist/audit/lineage.js +91 -0
- package/dist/audit/nginx.js +366 -0
- package/dist/audit/prior-art.js +132 -0
- package/dist/audit/proof.js +321 -0
- package/dist/audit/report-html.js +194 -0
- package/dist/audit/report-model.js +198 -0
- package/dist/audit/report.js +102 -0
- package/dist/audit/rules-doc.js +144 -0
- package/dist/audit/secrets.js +405 -0
- package/dist/audit/terraform-state.js +140 -0
- package/dist/audit/wrangler.js +262 -0
- package/dist/behaviour-delta.js +401 -0
- package/dist/behaviour-engine.js +357 -0
- package/dist/behaviour-graph.js +83 -0
- package/dist/behaviour-http.js +188 -0
- package/dist/behaviour-kinds.js +172 -0
- package/dist/behaviour-overlay.js +50 -0
- package/dist/behaviour-predict.js +188 -0
- package/dist/behaviour-request.js +194 -0
- package/dist/behaviour.js +1325 -0
- package/dist/build-params.js +108 -0
- package/dist/build.js +668 -0
- package/dist/builder.js +44 -0
- package/dist/cdk/advise.js +30 -0
- package/dist/cdk/assembly.js +122 -0
- package/dist/cdk/graph.js +444 -0
- package/dist/cdk/tier-map.js +64 -0
- package/dist/cdk/types.js +24 -0
- package/dist/change-set.js +312 -0
- package/dist/child-project.js +21 -0
- package/dist/claimed-fields.js +135 -0
- package/dist/cli/build-options.js +70 -0
- package/dist/cli/build-params-cli.js +139 -0
- package/dist/cli/command-group.js +123 -0
- package/dist/cli/commands/audit-agents.js +326 -0
- package/dist/cli/commands/audit.js +571 -0
- package/dist/cli/commands/build.js +920 -0
- package/dist/cli/commands/carve-apply.js +153 -0
- package/dist/cli/commands/carve-bridge.js +201 -0
- package/dist/cli/commands/carve-emit.js +332 -0
- package/dist/cli/commands/carve-status.js +119 -0
- package/dist/cli/commands/carve.js +204 -0
- package/dist/cli/commands/check-lexicon-docs.js +79 -0
- package/dist/cli/commands/check-lexicon-examples.js +177 -0
- package/dist/cli/commands/check-lexicon-intrinsics.js +291 -0
- package/dist/cli/commands/check-lexicon-mcp.js +82 -0
- package/dist/cli/commands/check-lexicon-plugin.d.ts.map +1 -1
- package/dist/cli/commands/check-lexicon-plugin.js +104 -0
- package/dist/cli/commands/check-lexicon.js +766 -0
- package/dist/cli/commands/describe.js +85 -0
- package/dist/cli/commands/diff.js +175 -0
- package/dist/cli/commands/doctor.js +350 -0
- package/dist/cli/commands/import-agents.js +155 -0
- package/dist/cli/commands/import.js +670 -0
- package/dist/cli/commands/init-lexicon/templates/codegen.js +194 -0
- package/dist/cli/commands/init-lexicon/templates/docs.js +100 -0
- package/dist/cli/commands/init-lexicon/templates/examples.js +29 -0
- package/dist/cli/commands/init-lexicon/templates/lint.js +34 -0
- package/dist/cli/commands/init-lexicon/templates/lsp.js +37 -0
- package/dist/cli/commands/init-lexicon/templates/plugin.js +108 -0
- package/dist/cli/commands/init-lexicon/templates/project.js +240 -0
- package/dist/cli/commands/init-lexicon/templates/spec.js +56 -0
- package/dist/cli/commands/init-lexicon/templates/tests.js +66 -0
- package/dist/cli/commands/init-lexicon.js +172 -0
- package/dist/cli/commands/init.js +381 -0
- package/dist/cli/commands/lexicon-rolling-upgrade.js +145 -0
- package/dist/cli/commands/lexicon-surface-diff.js +145 -0
- package/dist/cli/commands/licenses.js +125 -0
- package/dist/cli/commands/lint.d.ts.map +1 -1
- package/dist/cli/commands/lint.js +948 -0
- package/dist/cli/commands/list.js +63 -0
- package/dist/cli/commands/migrate.d.ts.map +1 -1
- package/dist/cli/commands/migrate.js +423 -0
- package/dist/cli/commands/onboard.js +403 -0
- package/dist/cli/commands/pinned-upgrade.js +191 -0
- package/dist/cli/commands/update.js +194 -0
- package/dist/cli/commands/vendor.js +217 -0
- package/dist/cli/conflict-check.js +104 -0
- package/dist/cli/debug.js +8 -0
- package/dist/cli/format.js +104 -0
- package/dist/cli/handlers/build.js +267 -0
- package/dist/cli/handlers/carve-apply.js +30 -0
- package/dist/cli/handlers/carve-bridge.js +28 -0
- package/dist/cli/handlers/carve-emit.js +50 -0
- package/dist/cli/handlers/carve-status.js +26 -0
- package/dist/cli/handlers/carve.js +40 -0
- package/dist/cli/handlers/change-set.js +46 -0
- package/dist/cli/handlers/components.js +730 -0
- package/dist/cli/handlers/dev.js +113 -0
- package/dist/cli/handlers/emulator.js +233 -0
- package/dist/cli/handlers/explain.js +54 -0
- package/dist/cli/handlers/fan-out.js +422 -0
- package/dist/cli/handlers/gate-resume.js +275 -0
- package/dist/cli/handlers/generate.js +84 -0
- package/dist/cli/handlers/graph.js +969 -0
- package/dist/cli/handlers/init.js +102 -0
- package/dist/cli/handlers/lifecycle.js +1727 -0
- package/dist/cli/handlers/lint.js +62 -0
- package/dist/cli/handlers/migrate.js +48 -0
- package/dist/cli/handlers/misc.js +391 -0
- package/dist/cli/handlers/operator.js +1162 -0
- package/dist/cli/handlers/override-approve.js +102 -0
- package/dist/cli/handlers/pr.js +503 -0
- package/dist/cli/handlers/promote.js +342 -0
- package/dist/cli/handlers/run-generate.js +206 -0
- package/dist/cli/handlers/run-wave.js +66 -0
- package/dist/cli/handlers/run.js +1191 -0
- package/dist/cli/handlers/scenario.js +325 -0
- package/dist/cli/handlers/search.js +924 -0
- package/dist/cli/handlers/serve.js +32 -0
- package/dist/cli/handlers/vendor.js +154 -0
- package/dist/cli/index.js +3 -0
- package/dist/cli/is-entry-point.js +23 -0
- package/dist/cli/lsp/capabilities.js +28 -0
- package/dist/cli/lsp/diagnostics.js +34 -0
- package/dist/cli/lsp/server.js +329 -0
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +2540 -0
- package/dist/cli/mcp/lifecycle-tools.js +80 -0
- package/dist/cli/mcp/op-tools.js +306 -0
- package/dist/cli/mcp/resource-handlers.js +258 -0
- package/dist/cli/mcp/resources/context.js +85 -0
- package/dist/cli/mcp/server.js +353 -0
- package/dist/cli/mcp/tools/build.js +111 -0
- package/dist/cli/mcp/tools/composites.js +95 -0
- package/dist/cli/mcp/tools/explain.js +166 -0
- package/dist/cli/mcp/tools/import.js +49 -0
- package/dist/cli/mcp/tools/lint.js +41 -0
- package/dist/cli/mcp/tools/scaffold.js +111 -0
- package/dist/cli/mcp/tools/search.js +112 -0
- package/dist/cli/mcp/types.js +1 -0
- package/dist/cli/mcp/workspace-plugins.js +91 -0
- package/dist/cli/mcp/workspace-tools.d.ts +1 -1
- package/dist/cli/mcp/workspace-tools.js +564 -0
- package/dist/cli/mcp-config.js +70 -0
- package/dist/cli/plugins.js +313 -0
- package/dist/cli/registry.js +23 -0
- package/dist/cli/reporters/stylish.js +329 -0
- package/dist/cli/version.js +15 -0
- package/dist/cli/watch.js +79 -0
- package/dist/codegen/bound-property-types.js +82 -0
- package/dist/codegen/coverage.js +119 -0
- package/dist/codegen/docs-file-markers.js +60 -0
- package/dist/codegen/docs-pages.js +115 -0
- package/dist/codegen/docs-rule-scanning.js +164 -0
- package/dist/codegen/docs-rules.js +76 -0
- package/dist/codegen/docs-sections.js +117 -0
- package/dist/codegen/docs-sidebar.js +65 -0
- package/dist/codegen/docs-types.js +4 -0
- package/dist/codegen/docs.js +356 -0
- package/dist/codegen/fetch.js +340 -0
- package/dist/codegen/generate-post-synth-barrel.js +63 -0
- package/dist/codegen/generate-registry.js +71 -0
- package/dist/codegen/generate-runtime-index.js +56 -0
- package/dist/codegen/generate-typescript.js +119 -0
- package/dist/codegen/generate.js +115 -0
- package/dist/codegen/json-patch.js +141 -0
- package/dist/codegen/json-schema-to-ts.js +344 -0
- package/dist/codegen/json-schema.js +246 -0
- package/dist/codegen/lexicon-regen.js +412 -0
- package/dist/codegen/naming.js +217 -0
- package/dist/codegen/okf-lexicon.js +245 -0
- package/dist/codegen/package.js +150 -0
- package/dist/codegen/pinned-upgrade.d.ts.map +1 -1
- package/dist/codegen/pinned-upgrade.js +494 -0
- package/dist/codegen/registry.js +60 -0
- package/dist/codegen/rehype-base-url.mjs +68 -0
- package/dist/codegen/rolling-upgrade.js +217 -0
- package/dist/codegen/surface-snapshot.js +537 -0
- package/dist/codegen/testdata/postgres-tags.json +242 -0
- package/dist/codegen/topo-sort.js +36 -0
- package/dist/codegen/typecheck.js +115 -0
- package/dist/codegen/validate.js +200 -0
- package/dist/codegen/version-bump.js +35 -0
- package/dist/components/auto-release.js +143 -0
- package/dist/components/builders.js +47 -0
- package/dist/components/capability-plugin-loader.js +175 -0
- package/dist/components/capability-plugin-schema.js +46 -0
- package/dist/components/capability-plugin.js +99 -0
- package/dist/components/capability.js +60 -0
- package/dist/components/changed-files.js +72 -0
- package/dist/components/cli-support.js +427 -0
- package/dist/components/component.js +120 -0
- package/dist/components/component.schema.json +271 -0
- package/dist/components/config-defaults.js +130 -0
- package/dist/components/deploy-units.js +60 -0
- package/dist/components/discover.d.ts.map +1 -1
- package/dist/components/discover.js +189 -0
- package/dist/components/driver-output.js +86 -0
- package/dist/components/driver.js +728 -0
- package/dist/components/fan-out-output.js +165 -0
- package/dist/components/fan-out-record.js +94 -0
- package/dist/components/fan-out-run.js +373 -0
- package/dist/components/fan-out-support.js +60 -0
- package/dist/components/fan-out.js +273 -0
- package/dist/components/gate-plan.js +41 -0
- package/dist/components/gated-wave-pipeline.js +46 -0
- package/dist/components/index.js +24 -0
- package/dist/components/layers.js +28 -0
- package/dist/components/manifest-persistence.js +108 -0
- package/dist/components/pilots/alb-ecs.pilot.js +59 -0
- package/dist/components/pilots/dynamodb.pilot.js +51 -0
- package/dist/components/pilots/jar-emr.pilot.js +65 -0
- package/dist/components/pilots/lambda.pilot.js +52 -0
- package/dist/components/pilots/neo4j-fanout.pilot.js +68 -0
- package/dist/components/pilots/project.js +12 -0
- package/dist/components/pr-pipeline.js +134 -0
- package/dist/components/pr-run.js +363 -0
- package/dist/components/presets/ecs-fargate.js +72 -0
- package/dist/components/presets/index.js +28 -0
- package/dist/components/presets/lambda.js +34 -0
- package/dist/components/presets/single-host-compose.js +41 -0
- package/dist/components/promote.js +549 -0
- package/dist/components/registry.js +34 -0
- package/dist/components/run-progress.js +33 -0
- package/dist/components/sandbox/driver.d.ts.map +1 -1
- package/dist/components/sandbox/driver.js +93 -0
- package/dist/components/sandbox/run.js +115 -0
- package/dist/components/starter-plugin.js +104 -0
- package/dist/components/verbs/__tests__/mock-cloud-executor.js +68 -0
- package/dist/components/verbs/__tests__/mock-process-runner.js +45 -0
- package/dist/components/verbs/__tests__/mock-sbom-generator.js +56 -0
- package/dist/components/verbs/bom-writer.js +287 -0
- package/dist/components/verbs/build-archive.js +188 -0
- package/dist/components/verbs/build.js +142 -0
- package/dist/components/verbs/cloud-executor.js +110 -0
- package/dist/components/verbs/component-bom.js +125 -0
- package/dist/components/verbs/ensure-secret.js +50 -0
- package/dist/components/verbs/index.js +61 -0
- package/dist/components/verbs/license-policy.js +75 -0
- package/dist/components/verbs/lockfile-sbom-generator.js +191 -0
- package/dist/components/verbs/process-runner.js +78 -0
- package/dist/components/verbs/r2-sync.js +93 -0
- package/dist/components/verbs/reproducibility.js +62 -0
- package/dist/components/verbs/run-agent.js +577 -0
- package/dist/components/verbs/sbom-generator.js +119 -0
- package/dist/components/verbs/sbom.js +97 -0
- package/dist/components/verbs/shell.js +32 -0
- package/dist/components/verbs/sign.js +221 -0
- package/dist/components/verbs/stub.js +28 -0
- package/dist/components/verbs/tool-sbom-generator.js +154 -0
- package/dist/components/verbs/verify.js +112 -0
- package/dist/components/verbs/vex.js +131 -0
- package/dist/components/verbs/vuln-gate.js +152 -0
- package/dist/components/verbs/vuln-scan.js +288 -0
- package/dist/components/verbs/wait-verify.js +106 -0
- package/dist/components/verbs/wrangler.js +179 -0
- package/dist/components/wave-plan.js +102 -0
- package/dist/composite.js +305 -0
- package/dist/config-import.d.ts.map +1 -1
- package/dist/config-import.js +22 -0
- package/dist/config-sandbox.js +122 -0
- package/dist/config-static.js +206 -0
- package/dist/config.js +605 -0
- package/dist/content-digest.js +23 -0
- package/dist/declarable.js +114 -0
- package/dist/deep-observation.js +437 -0
- package/dist/detectLexicon.js +54 -0
- package/dist/discovery/cache.js +70 -0
- package/dist/discovery/collect.js +208 -0
- package/dist/discovery/cycles.js +95 -0
- package/dist/discovery/entity-wire-codec.js +391 -0
- package/dist/discovery/entity-wire.js +42 -0
- package/dist/discovery/files.js +121 -0
- package/dist/discovery/fold-import.d.ts.map +1 -1
- package/dist/discovery/fold-import.js +4178 -0
- package/dist/discovery/fold-rank.js +292 -0
- package/dist/discovery/graph.js +115 -0
- package/dist/discovery/import.d.ts.map +1 -1
- package/dist/discovery/import.js +65 -0
- package/dist/discovery/index.js +333 -0
- package/dist/discovery/param-deps.js +487 -0
- package/dist/discovery/resolve.js +39 -0
- package/dist/discovery/sandbox/bundle.js +214 -0
- package/dist/discovery/sandbox/child-errors.js +26 -0
- package/dist/discovery/sandbox/config-run.js +100 -0
- package/dist/discovery/sandbox/config-wire.js +183 -0
- package/dist/discovery/sandbox/driver.d.ts.map +1 -1
- package/dist/discovery/sandbox/driver.js +333 -0
- package/dist/discovery/sandbox/fork.js +229 -0
- package/dist/discovery/sandbox/policy-run.js +142 -0
- package/dist/discovery/sandbox/policy-wire.js +152 -0
- package/dist/discovery/sandbox/run.js +77 -0
- package/dist/discovery/specifier-resolve.js +320 -0
- package/dist/discovery/walk.js +284 -0
- package/dist/effect-receipt.js +340 -0
- package/dist/env.js +55 -0
- package/dist/errors.js +62 -0
- package/dist/fold/fold.js +1434 -0
- package/dist/fold/foldable-helpers.js +229 -0
- package/dist/fold/subset.js +696 -0
- package/dist/fold-provenance.js +414 -0
- package/dist/gate-decision.d.ts +36 -4
- package/dist/gate-decision.d.ts.map +1 -1
- package/dist/gate-decision.js +260 -0
- package/dist/gate-resume-run.js +154 -0
- package/dist/gated-waves.js +165 -0
- package/dist/governance.js +43 -0
- package/dist/graph-declared.js +45 -0
- package/dist/graph-detail.js +207 -0
- package/dist/graph-dot.js +54 -0
- package/dist/graph-effective.js +107 -0
- package/dist/graph-ir.js +623 -0
- package/dist/graph-layout.js +184 -0
- package/dist/graph-lens.js +105 -0
- package/dist/graph-mermaid.js +83 -0
- package/dist/graph-ops.js +39 -0
- package/dist/graph-refs.js +156 -0
- package/dist/held-elsewhere.js +87 -0
- package/dist/identity.js +251 -0
- package/dist/import/base-parser.js +34 -0
- package/dist/import/embedded.js +255 -0
- package/dist/import/generator.js +1 -0
- package/dist/import/ir-utils.js +85 -0
- package/dist/import/parser-options.js +45 -0
- package/dist/import/parser.js +1 -0
- package/dist/index.js +118 -0
- package/dist/intrinsic-interpolation.js +73 -0
- package/dist/intrinsic.js +31 -0
- package/dist/join-key.js +35 -0
- package/dist/kubectl-context.js +150 -0
- package/dist/lexicon-config.js +58 -0
- package/dist/lexicon-integrity.js +47 -0
- package/dist/lexicon-manifest.js +70 -0
- package/dist/lexicon-module.d.ts.map +1 -1
- package/dist/lexicon-module.js +241 -0
- package/dist/lexicon-output.js +218 -0
- package/dist/lexicon-plugin-helpers.js +104 -0
- package/dist/lexicon-schema.js +136 -0
- package/dist/lexicon.js +130 -0
- package/dist/lifecycle/affected.js +224 -0
- package/dist/lifecycle/assert-live.js +110 -0
- package/dist/lifecycle/build-ledger-store.js +160 -0
- package/dist/lifecycle/build-ledger.js +155 -0
- package/dist/lifecycle/change-set.js +356 -0
- package/dist/lifecycle/converge-ledger.js +161 -0
- package/dist/lifecycle/deep-diff.js +233 -0
- package/dist/lifecycle/deep-observe.js +147 -0
- package/dist/lifecycle/digest.js +143 -0
- package/dist/lifecycle/disruption.js +135 -0
- package/dist/lifecycle/gate-applied.js +113 -0
- package/dist/lifecycle/gate-audit.js +341 -0
- package/dist/lifecycle/gate-ledger-select.js +89 -0
- package/dist/lifecycle/gate-ledger.d.ts +8 -0
- package/dist/lifecycle/gate-ledger.d.ts.map +1 -1
- package/dist/lifecycle/gate-ledger.js +193 -0
- package/dist/lifecycle/gate-origin.js +117 -0
- package/dist/lifecycle/gate-pending.js +58 -0
- package/dist/lifecycle/git.js +1182 -0
- package/dist/lifecycle/identity.js +58 -0
- package/dist/lifecycle/index.js +26 -0
- package/dist/lifecycle/lease.js +283 -0
- package/dist/lifecycle/ledger-port.js +1 -0
- package/dist/lifecycle/legacy-digest.js +91 -0
- package/dist/lifecycle/live-diff.js +274 -0
- package/dist/lifecycle/local-note.js +15 -0
- package/dist/lifecycle/member-ledger.js +122 -0
- package/dist/lifecycle/observation-baseline.js +155 -0
- package/dist/lifecycle/observe.js +375 -0
- package/dist/lifecycle/oras-referrer-lookup.js +82 -0
- package/dist/lifecycle/override-ledger.js +54 -0
- package/dist/lifecycle/plan-digest.js +110 -0
- package/dist/lifecycle/plan-ledger.js +129 -0
- package/dist/lifecycle/receipt-plan.js +192 -0
- package/dist/lifecycle/release-ledger.js +155 -0
- package/dist/lifecycle/release-read.js +64 -0
- package/dist/lifecycle/replay.js +193 -0
- package/dist/lifecycle/rollback.js +102 -0
- package/dist/lifecycle/run-ledger.js +183 -0
- package/dist/lifecycle/scenario-eval.js +204 -0
- package/dist/lifecycle/scenario.js +214 -0
- package/dist/lifecycle/snapshot.js +239 -0
- package/dist/lifecycle/status.js +447 -0
- package/dist/lifecycle/symptoms.js +117 -0
- package/dist/lifecycle/teardown.js +255 -0
- package/dist/lifecycle/types.js +1 -0
- package/dist/lifecycle/unobserved-gate.js +33 -0
- package/dist/lifecycle/wave-plans.js +68 -0
- package/dist/lifecycle/work-item-id.js +36 -0
- package/dist/lifecycle/work-lease.js +393 -0
- package/dist/lint/component-checks.js +87 -0
- package/dist/lint/config.js +483 -0
- package/dist/lint/declarative.js +122 -0
- package/dist/lint/discover.d.ts.map +1 -1
- package/dist/lint/discover.js +138 -0
- package/dist/lint/engine.js +246 -0
- package/dist/lint/knowledge-checks.js +64 -0
- package/dist/lint/named-checks.js +22 -0
- package/dist/lint/output-checks.js +87 -0
- package/dist/lint/output-docs.js +163 -0
- package/dist/lint/parser.js +33 -0
- package/dist/lint/pipeline-change-gate.js +70 -0
- package/dist/lint/policy-import.d.ts +1 -1
- package/dist/lint/policy-import.d.ts.map +1 -1
- package/dist/lint/policy-import.js +62 -0
- package/dist/lint/policy-sandbox.js +86 -0
- package/dist/lint/policy.js +122 -0
- package/dist/lint/post-synth.js +87 -0
- package/dist/lint/presets/relaxed.json +26 -0
- package/dist/lint/presets/strict.json +24 -24
- package/dist/lint/receipt-checks.js +83 -0
- package/dist/lint/rule-loader.d.ts.map +1 -1
- package/dist/lint/rule-loader.js +89 -0
- package/dist/lint/rule-registry.js +86 -0
- package/dist/lint/rule.js +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-a.component.js +7 -0
- package/dist/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-b.component.js +7 -0
- package/dist/lint/rules/__fixtures__/comp/comp001/fail/orphan-lib.component.js +9 -0
- package/dist/lint/rules/__fixtures__/comp/comp001/pass/emr-job.component.js +11 -0
- package/dist/lint/rules/__fixtures__/comp/comp001/pass/jar-lib.component.js +9 -0
- package/dist/lint/rules/__fixtures__/comp/comp002/fail/search-service.component.js +25 -0
- package/dist/lint/rules/__fixtures__/comp/comp002/pass/jar-lib.component.js +8 -0
- package/dist/lint/rules/__fixtures__/comp/comp002/pass/search-service.component.js +21 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/fail/migrator.component.js +8 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/pass/agent-turn.component.js +24 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/pass/migrator.component.js +17 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/pass/orders-table.component.js +8 -0
- package/dist/lint/rules/__fixtures__/comp/comp004/fail/neo4j-cluster.component.js +18 -0
- package/dist/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.js +20 -0
- package/dist/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.js +8 -0
- package/dist/lint/rules/__fixtures__/comp/comp005/fail/search-service.component.js +12 -0
- package/dist/lint/rules/__fixtures__/comp/comp005/pass/search-service.component.js +16 -0
- package/dist/lint/rules/__fixtures__/comp/comp006/fail/legacy-tool.component.js +8 -0
- package/dist/lint/rules/__fixtures__/comp/comp006/pass/legacy-tool.component.js +12 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/fail/inventory-table.component.js +11 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/fail/orders-table.component.js +11 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/pass/orders-table.component.js +10 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/pass/search-service.component.js +16 -0
- package/dist/lint/rules/comp/comp001-publishes-never-applies.js +69 -0
- package/dist/lint/rules/comp/comp002-dangling-wiring-ref.js +84 -0
- package/dist/lint/rules/comp/comp003-mutating-no-rollback.js +103 -0
- package/dist/lint/rules/comp/comp004-gate-needs-durable-runtime.js +70 -0
- package/dist/lint/rules/comp/comp005-capability-kind-is-noun.js +109 -0
- package/dist/lint/rules/comp/comp006-shell-needs-reason.js +49 -0
- package/dist/lint/rules/comp/comp007-composition-sprawl.js +64 -0
- package/dist/lint/rules/comp/index.js +33 -0
- package/dist/lint/rules/comp/support.js +129 -0
- package/dist/lint/rules/composite-scope.js +51 -0
- package/dist/lint/rules/cor017-composite-name-match.js +93 -0
- package/dist/lint/rules/cor018-composite-prefer-lexicon-type.js +136 -0
- package/dist/lint/rules/cor021-env-literal-name.js +100 -0
- package/dist/lint/rules/cor022-receipt-leaf.js +118 -0
- package/dist/lint/rules/cor024-receipt-secret-pointer.js +199 -0
- package/dist/lint/rules/declarable-naming-convention.js +62 -0
- package/dist/lint/rules/evl001-non-literal-expression.js +66 -0
- package/dist/lint/rules/evl002-control-flow-resource.js +69 -0
- package/dist/lint/rules/evl003-dynamic-property-access.js +44 -0
- package/dist/lint/rules/evl004-spread-non-const.js +94 -0
- package/dist/lint/rules/evl005-resource-block-body.js +41 -0
- package/dist/lint/rules/evl007-invalid-siblings.js +105 -0
- package/dist/lint/rules/evl009-composite-no-constant.js +158 -0
- package/dist/lint/rules/evl010-composite-no-transform.js +59 -0
- package/dist/lint/rules/evl011-symbolic-in-template.js +106 -0
- package/dist/lint/rules/export-required.js +115 -0
- package/dist/lint/rules/file-declarable-limit.js +88 -0
- package/dist/lint/rules/flat-declarations.js +62 -0
- package/dist/lint/rules/index.js +90 -0
- package/dist/lint/rules/no-cyclic-declarable-ref.js +138 -0
- package/dist/lint/rules/no-redundant-type-import.js +76 -0
- package/dist/lint/rules/no-redundant-value-cast.js +41 -0
- package/dist/lint/rules/no-string-ref.js +59 -0
- package/dist/lint/rules/no-unused-declarable-import.js +75 -0
- package/dist/lint/rules/no-unused-declarable.js +142 -0
- package/dist/lint/rules/op/index.js +28 -0
- package/dist/lint/rules/op/ops012-activity-contract.js +54 -0
- package/dist/lint/rules/op/ops013-step-output-ref.js +88 -0
- package/dist/lint/rules/op/ops014-converge-rule-refusals.js +114 -0
- package/dist/lint/rules/op/ops015-gate-approval.js +45 -0
- package/dist/lint/rules/op/support.js +11 -0
- package/dist/lint/rules/op/sys010-key-over-plain-http.js +100 -0
- package/dist/lint/rules/property-kind.js +56 -0
- package/dist/lint/rules/single-concern-file.js +71 -0
- package/dist/lint/rules/sys001-no-literal-key.js +60 -0
- package/dist/lint/selectors.js +168 -0
- package/dist/lint/suppressions.js +129 -0
- package/dist/lint/typescript.js +17 -0
- package/dist/live-endpoint.js +113 -0
- package/dist/live-read-session.js +76 -0
- package/dist/lsp/lexicon-providers.js +163 -0
- package/dist/lsp/types.js +5 -0
- package/dist/managed-fields.js +293 -0
- package/dist/mcp/types.js +4 -0
- package/dist/notify-verify.js +0 -1
- package/dist/notify.js +0 -1
- package/dist/notify.schema.json +72 -0
- package/dist/observation.js +266 -0
- package/dist/okf-read.js +134 -0
- package/dist/okf.js +275 -0
- package/dist/op/__fixtures__/decide-stub-backend.js +125 -0
- package/dist/op/activities/activity-contracts.js +313 -0
- package/dist/op/activities/apply.js +582 -0
- package/dist/op/activities/build.js +18 -0
- package/dist/op/activities/change-coverage.js +40 -0
- package/dist/op/activities/change-set.js +64 -0
- package/dist/op/activities/converge.js +492 -0
- package/dist/op/activities/decide.js +211 -0
- package/dist/op/activities/env-teardown.js +110 -0
- package/dist/op/activities/factory.js +591 -0
- package/dist/op/activities/forge-pull-request.js +82 -0
- package/dist/op/activities/gh-host.js +78 -0
- package/dist/op/activities/guard-validate.js +165 -0
- package/dist/op/activities/http-check.js +40 -0
- package/dist/op/activities/index.js +59 -0
- package/dist/op/activities/lexicon-upgrade.js +629 -0
- package/dist/op/activities/lifecycle.js +109 -0
- package/dist/op/activities/pipeline-audit.js +147 -0
- package/dist/op/activities/policy.js +26 -0
- package/dist/op/activities/predict-behaviour.js +341 -0
- package/dist/op/activities/propose-upgrade.js +165 -0
- package/dist/op/activities/reconcile.js +997 -0
- package/dist/op/activities/shell.js +118 -0
- package/dist/op/activities/source-release.js +97 -0
- package/dist/op/activities/source-rollback.js +165 -0
- package/dist/op/activities/teardown.js +17 -0
- package/dist/op/activities/util.js +6 -0
- package/dist/op/activities/wait.js +51 -0
- package/dist/op/activities/work-evidence.js +35 -0
- package/dist/op/activities/workflow-audit.js +133 -0
- package/dist/op/activity-contract-registry.js +106 -0
- package/dist/op/activity-contract.js +232 -0
- package/dist/op/activity-failure.js +31 -0
- package/dist/op/activity-profiles.js +129 -0
- package/dist/op/activity-registry.js +105 -0
- package/dist/op/activity-runtime.js +28 -0
- package/dist/op/builders.js +801 -0
- package/dist/op/change-signal.js +118 -0
- package/dist/op/composites/apply-op.js +151 -0
- package/dist/op/composites/behaviour-op.js +65 -0
- package/dist/op/composites/converge-op.js +141 -0
- package/dist/op/composites/index.js +19 -0
- package/dist/op/composites/lexicon-upgrade-op.js +107 -0
- package/dist/op/composites/pipeline-audit-op.js +50 -0
- package/dist/op/composites/reconcile-op.js +84 -0
- package/dist/op/composites/watch-op.js +69 -0
- package/dist/op/composites/workflow-audit-op.js +57 -0
- package/dist/op/converge-rule.js +205 -0
- package/dist/op/cron.js +146 -0
- package/dist/op/decide-backend.js +181 -0
- package/dist/op/decide-config.js +68 -0
- package/dist/op/decide-read-inputs.js +141 -0
- package/dist/op/discover.d.ts.map +1 -1
- package/dist/op/discover.js +213 -0
- package/dist/op/duration.js +21 -0
- package/dist/op/emulator-freshness.js +80 -0
- package/dist/op/emulator-lifecycle.js +269 -0
- package/dist/op/factory.js +83 -0
- package/dist/op/gate-approval.js +172 -0
- package/dist/op/gate-name.js +86 -0
- package/dist/op/gate-plan-context.js +167 -0
- package/dist/op/gate-point-run.js +67 -0
- package/dist/op/gate-point.js +111 -0
- package/dist/op/gate-resume-plan.js +155 -0
- package/dist/op/gate-resume.js +31 -0
- package/dist/op/gate-review.js +290 -0
- package/dist/op/gate-run-locator.js +85 -0
- package/dist/op/gate-summary.js +100 -0
- package/dist/op/gate-wait.js +56 -0
- package/dist/op/gate.js +449 -0
- package/dist/op/generate-pipeline.js +124 -0
- package/dist/op/index.js +51 -0
- package/dist/op/lifecycle-receipt-store.js +45 -0
- package/dist/op/local-executor.js +1164 -0
- package/dist/op/local-output.js +140 -0
- package/dist/op/op-ir.js +317 -0
- package/dist/op/op-verb-class.js +131 -0
- package/dist/op/op-waves-notify.js +136 -0
- package/dist/op/op-waves-run.d.ts +1 -1
- package/dist/op/op-waves-run.d.ts.map +1 -1
- package/dist/op/op-waves-run.js +1657 -0
- package/dist/op/op-waves.js +409 -0
- package/dist/op/operator.js +743 -0
- package/dist/op/receipt-store.js +94 -0
- package/dist/op/resource.js +23 -0
- package/dist/op/run-context.js +28 -0
- package/dist/op/run-live.js +256 -0
- package/dist/op/runtime.js +21 -0
- package/dist/op/runtimes/local.js +195 -0
- package/dist/op/source-archive.js +131 -0
- package/dist/op/step-output-ref.js +397 -0
- package/dist/op/steward-beside.js +169 -0
- package/dist/op/steward-points.js +138 -0
- package/dist/op/steward-turn.js +59 -0
- package/dist/op/steward.js +317 -0
- package/dist/op/types.js +25 -0
- package/dist/op/work-lease-decl.js +81 -0
- package/dist/op/work-lease-run.js +393 -0
- package/dist/override-gate.js +284 -0
- package/dist/owner-chain.js +74 -0
- package/dist/ownership.js +92 -0
- package/dist/params.js +61 -0
- package/dist/plan-summary.js +711 -0
- package/dist/point-decision.js +211 -0
- package/dist/pr-forge.js +810 -0
- package/dist/pr-loop.js +203 -0
- package/dist/project-codegen.js +191 -0
- package/dist/project-root.js +74 -0
- package/dist/project-validation.js +50 -0
- package/dist/provenance.js +157 -0
- package/dist/pseudo-parameter.js +40 -0
- package/dist/reconcile.js +450 -0
- package/dist/resource-attributes.js +33 -0
- package/dist/runtime-adapter.js +77 -0
- package/dist/runtime.js +66 -0
- package/dist/secret-materialization.js +153 -0
- package/dist/secret-provenance.js +250 -0
- package/dist/serializer-walker.js +112 -0
- package/dist/serializer.js +1 -0
- package/dist/sort.js +45 -0
- package/dist/stack-output.js +115 -0
- package/dist/telemetry-attribution.js +149 -0
- package/dist/terraform/__fixtures__/build-graph.js +63 -0
- package/dist/terraform/adopt-state.js +40 -0
- package/dist/terraform/aws-resources.js +384 -0
- package/dist/terraform/bridge.js +204 -0
- package/dist/terraform/carve-provider.js +155 -0
- package/dist/terraform/carve.js +138 -0
- package/dist/terraform/data-source-shape.js +57 -0
- package/dist/terraform/emit-source.js +36 -0
- package/dist/terraform/excise.js +123 -0
- package/dist/terraform/graduate.js +128 -0
- package/dist/terraform/graph.js +435 -0
- package/dist/terraform/hcl2json.js +60 -0
- package/dist/terraform/manifest.js +149 -0
- package/dist/terraform/parse.js +81 -0
- package/dist/terraform/providers/aws.js +146 -0
- package/dist/terraform/providers/gcp.js +294 -0
- package/dist/terraform/providers/index.js +17 -0
- package/dist/terraform/providers/kubernetes.js +253 -0
- package/dist/terraform/score.js +151 -0
- package/dist/terraform/state.js +67 -0
- package/dist/terraform/tier-map.js +74 -0
- package/dist/terraform/types.js +13 -0
- package/dist/terraform/unified-diff.js +132 -0
- package/dist/testing.js +295 -0
- package/dist/toml-emit.js +153 -0
- package/dist/toml-parse.js +355 -0
- package/dist/toml-utils.js +60 -0
- package/dist/toml.js +428 -0
- package/dist/ts-loader.d.ts +46 -0
- package/dist/ts-loader.d.ts.map +1 -0
- package/dist/ts-loader.js +103 -0
- package/dist/types.js +1 -0
- package/dist/utils.js +61 -0
- package/dist/validation.js +20 -0
- package/dist/vendor/js-yaml-load.js +1662 -0
- package/dist/workspace/__fixtures__/contract-repo.js +103 -0
- package/dist/workspace/__fixtures__/decide-workspace.js +112 -0
- package/dist/workspace/__fixtures__/sessions.js +91 -0
- package/dist/workspace/__fixtures__/two-member-workspace.js +34 -0
- package/dist/workspace/agent-cli.js +99 -0
- package/dist/workspace/agent.schema.json +390 -0
- package/dist/workspace/answers-ledger.js +89 -0
- package/dist/workspace/box-cli.js +142 -0
- package/dist/workspace/box-factory-write.js +196 -0
- package/dist/workspace/box-factory-write.schema.json +342 -0
- package/dist/workspace/box-factory.js +88 -0
- package/dist/workspace/box-intent.js +126 -0
- package/dist/workspace/box-isolation.js +169 -0
- package/dist/workspace/box-listing-write.schema.json +204 -0
- package/dist/workspace/box-listing.js +298 -0
- package/dist/workspace/box-publish.js +352 -0
- package/dist/workspace/box-publish.schema.json +498 -0
- package/dist/workspace/box-services.js +39 -0
- package/dist/workspace/broker-protocol.js +359 -0
- package/dist/workspace/broker-protocol.schema.json +228 -0
- package/dist/workspace/change-set.schema.json +460 -0
- package/dist/workspace/changes-cli.js +56 -0
- package/dist/workspace/changes.js +446 -0
- package/dist/workspace/changes.schema.json +642 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit-fly-site.js +198 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit-live-names.js +155 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit-rollback.js +214 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit-ship-inputs.js +180 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit-ship-policy.js +99 -0
- package/dist/workspace/chant-migrations/chud-lexicon-exit.js +847 -0
- package/dist/workspace/chant-migrations.js +113 -0
- package/dist/workspace/check.schema.json +433 -0
- package/dist/workspace/checks/box-isolation.js +62 -0
- package/dist/workspace/checks/boxes.js +491 -0
- package/dist/workspace/checks/diagrams.js +104 -0
- package/dist/workspace/checks/generated.js +419 -0
- package/dist/workspace/checks/ledgers.js +212 -0
- package/dist/workspace/checks/links.js +191 -0
- package/dist/workspace/checks/live.js +100 -0
- package/dist/workspace/checks/pipelines.js +188 -0
- package/dist/workspace/checks/records.js +169 -0
- package/dist/workspace/checks.js +426 -0
- package/dist/workspace/ci-green-cli.js +125 -0
- package/dist/workspace/ci-green-forge.js +83 -0
- package/dist/workspace/ci-green-workflow.js +199 -0
- package/dist/workspace/ci-green.js +325 -0
- package/dist/workspace/ci-last-green.schema.json +158 -0
- package/dist/workspace/compose-graph.js +235 -0
- package/dist/workspace/compose-reports.js +146 -0
- package/dist/workspace/composites.js +264 -0
- package/dist/workspace/composites.schema.json +617 -0
- package/dist/workspace/conformance/__fixture__/app/package.json +7 -0
- package/dist/workspace/conformance/__fixture__/app/src/server.mjs +29 -0
- package/dist/workspace/conformance/__fixture__/decisions/decision.kind.mjs +54 -0
- package/dist/workspace/conformance/__fixture__/decisions/decision.schema.json +512 -0
- package/dist/workspace/conformance/__fixture__/decisions/fix-001-how-the-app-is-deployed.md +40 -0
- package/dist/workspace/conformance/__fixture__/delivery/chant.config.ts +7 -0
- package/dist/workspace/conformance/__fixture__/delivery/lexicon/index.ts +26 -0
- package/dist/workspace/conformance/__fixture__/delivery/package.json +7 -0
- package/dist/workspace/conformance/__fixture__/delivery/src/app.component.ts +14 -0
- package/dist/workspace/conformance/__fixture__/delivery/src/app.ts +4 -0
- package/dist/workspace/conformance/__fixtures__/reference-broker.js +205 -0
- package/dist/workspace/conformance/__writer_fixture__/answers/answer.kind.mjs +32 -0
- package/dist/workspace/conformance/__writer_fixture__/answers/answer.schema.json +135 -0
- package/dist/workspace/conformance/__writer_fixture__/contracts/contract.kind.mjs +37 -0
- package/dist/workspace/conformance/__writer_fixture__/contracts/contract.schema.json +213 -0
- package/dist/workspace/conformance/__writer_fixture__/decisions/points.json +228 -0
- package/dist/workspace/conformance/__writer_fixture__/drivers/driver.kind.mjs +15 -0
- package/dist/workspace/conformance/__writer_fixture__/drivers/driver.schema.json +38 -0
- package/dist/workspace/conformance/__writer_fixture__/sessions/session.kind.mjs +54 -0
- package/dist/workspace/conformance/__writer_fixture__/sessions/session.schema.json +289 -0
- package/dist/workspace/conformance/__writer_fixture__/work/W-001-the-writer-suite-works-this-item.md +25 -0
- package/dist/workspace/conformance/__writer_fixture__/work/work.kind.mjs +60 -0
- package/dist/workspace/conformance/__writer_fixture__/work/work.schema.json +603 -0
- package/dist/workspace/conformance/broker.js +736 -0
- package/dist/workspace/conformance/index.js +673 -0
- package/dist/workspace/conformance/vitest.js +108 -0
- package/dist/workspace/conformance/writer.js +1080 -0
- package/dist/workspace/decide.js +879 -0
- package/dist/workspace/decision-points.schema.json +135 -135
- package/dist/workspace/declaration-write-cli.js +74 -0
- package/dist/workspace/declaration-write.js +238 -0
- package/dist/workspace/declaration.js +938 -0
- package/dist/workspace/declaration.schema.json +1413 -1413
- package/dist/workspace/declared-kinds.js +106 -0
- package/dist/workspace/environments.js +164 -0
- package/dist/workspace/evidence.schema.json +279 -0
- package/dist/workspace/export-cli.js +185 -0
- package/dist/workspace/export.js +499 -0
- package/dist/workspace/factory-rules.js +175 -0
- package/dist/workspace/generated-files.js +92 -0
- package/dist/workspace/glob.js +45 -0
- package/dist/workspace/graph-cache.js +352 -0
- package/dist/workspace/graph-cli.js +348 -0
- package/dist/workspace/graph.schema.json +1338 -0
- package/dist/workspace/identity-gate-rule.d.ts +65 -0
- package/dist/workspace/identity-gate-rule.d.ts.map +1 -0
- package/dist/workspace/identity-gate-rule.js +75 -0
- package/dist/workspace/identity.d.ts +4 -2
- package/dist/workspace/identity.d.ts.map +1 -1
- package/dist/workspace/identity.js +126 -0
- package/dist/workspace/import.js +283 -0
- package/dist/workspace/init.js +620 -0
- package/dist/workspace/intent-cli.js +263 -0
- package/dist/workspace/intent-joins.js +201 -0
- package/dist/workspace/intent-record.js +352 -0
- package/dist/workspace/intent-record.schema.json +864 -0
- package/dist/workspace/intent.js +1582 -0
- package/dist/workspace/intent.schema.json +2420 -0
- package/dist/workspace/json-edit.js +221 -0
- package/dist/workspace/jsonc.js +235 -0
- package/dist/workspace/kind-readers.js +103 -0
- package/dist/workspace/kinds.js +587 -0
- package/dist/workspace/lexicon-symbols.js +112 -0
- package/dist/workspace/lineage-adopt-cli.js +102 -0
- package/dist/workspace/lineage-adopt.js +360 -0
- package/dist/workspace/lineage-check.js +282 -0
- package/dist/workspace/lineage-cli.js +121 -0
- package/dist/workspace/lineage-hash-index.js +284 -0
- package/dist/workspace/lineage-init.js +507 -0
- package/dist/workspace/lineage-lock.js +387 -0
- package/dist/workspace/lineage-merge.js +45 -0
- package/dist/workspace/lineage-migrations.d.ts.map +1 -1
- package/dist/workspace/lineage-migrations.js +329 -0
- package/dist/workspace/lineage-provenance.js +36 -0
- package/dist/workspace/lineage-update.js +138 -0
- package/dist/workspace/lineage-upgrade-cli.js +131 -0
- package/dist/workspace/lineage-upgrade.js +889 -0
- package/dist/workspace/lineage-vendor.js +171 -0
- package/dist/workspace/lineage-version.js +128 -0
- package/dist/workspace/lineage-versions.js +275 -0
- package/dist/workspace/links.js +330 -0
- package/dist/workspace/ls-generated.js +95 -0
- package/dist/workspace/ls.js +277 -0
- package/dist/workspace/ls.schema.json +333 -0
- package/dist/workspace/member-commands.js +508 -0
- package/dist/workspace/member-handles.js +216 -0
- package/dist/workspace/member-pipeline.js +258 -0
- package/dist/workspace/member-run.js +117 -0
- package/dist/workspace/member-write.schema.json +193 -0
- package/dist/workspace/nested-graph.js +156 -0
- package/dist/workspace/nesting.js +38 -0
- package/dist/workspace/patch.js +301 -0
- package/dist/workspace/patch.schema.json +321 -0
- package/dist/workspace/pin-cli.js +55 -0
- package/dist/workspace/pin-integrity.js +100 -0
- package/dist/workspace/plan-summary.schema.json +155 -0
- package/dist/workspace/point-answer.schema.json +129 -129
- package/dist/workspace/points-cli.js +291 -0
- package/dist/workspace/points-write.schema.json +660 -0
- package/dist/workspace/points.js +521 -0
- package/dist/workspace/points.schema.json +916 -0
- package/dist/workspace/pr-report.schema.json +108 -0
- package/dist/workspace/principal-classes.d.ts +3 -14
- package/dist/workspace/principal-classes.d.ts.map +1 -1
- package/dist/workspace/principal-classes.js +245 -0
- package/dist/workspace/reason-codes.js +326 -0
- package/dist/workspace/record-assets.js +151 -0
- package/dist/workspace/record-decided.js +105 -0
- package/dist/workspace/record-sessions.js +96 -0
- package/dist/workspace/record-source.js +114 -0
- package/dist/workspace/records-amend.schema.json +284 -0
- package/dist/workspace/records-checkout.js +76 -0
- package/dist/workspace/records-cli.js +707 -0
- package/dist/workspace/records-close.js +116 -0
- package/dist/workspace/records-close.schema.json +278 -0
- package/dist/workspace/records-new.schema.json +202 -0
- package/dist/workspace/records-review.schema.json +367 -0
- package/dist/workspace/records-since.js +317 -0
- package/dist/workspace/records-since.schema.json +218 -0
- package/dist/workspace/records-write.js +1229 -0
- package/dist/workspace/records.js +1345 -0
- package/dist/workspace/records.schema.json +604 -0
- package/dist/workspace/reference-kinds/app/package.json +10 -0
- package/dist/workspace/reference-kinds/app/workspace-kinds.json +45 -0
- package/dist/workspace/returns.js +303 -0
- package/dist/workspace/root-refusal.js +75 -0
- package/dist/workspace/run-statement.schema.json +622 -0
- package/dist/workspace/runs-cli.js +584 -0
- package/dist/workspace/runs-write.schema.json +994 -0
- package/dist/workspace/runs.js +708 -0
- package/dist/workspace/runs.schema.json +1257 -0
- package/dist/workspace/runtimes.js +76 -0
- package/dist/workspace/session-kinds.js +83 -0
- package/dist/workspace/signers.schema.json +206 -0
- package/dist/workspace/source-block.js +125 -0
- package/dist/workspace/squash.js +177 -0
- package/dist/workspace/status-gates.js +162 -0
- package/dist/workspace/status-stewards.js +330 -0
- package/dist/workspace/status.js +514 -0
- package/dist/workspace/status.schema.json +998 -0
- package/dist/workspace/steward-index.js +191 -0
- package/dist/workspace/symbols.js +188 -0
- package/dist/workspace/template-manifest.js +227 -0
- package/dist/workspace/template-pins.js +115 -0
- package/dist/workspace/trailer-joins.js +65 -0
- package/dist/workspace/trailers.js +111 -0
- package/dist/workspace/tree.js +136 -0
- package/dist/workspace/trust/attestor.js +63 -0
- package/dist/workspace/trust/dsse.js +108 -0
- package/dist/workspace/trust/evidence-cli.js +175 -0
- package/dist/workspace/trust/evidence.js +161 -0
- package/dist/workspace/trust/gate-seal.js +226 -0
- package/dist/workspace/trust/policy.js +190 -0
- package/dist/workspace/trust/provenance.js +180 -0
- package/dist/workspace/trust/rotation.js +298 -0
- package/dist/workspace/trust/run-commits.js +101 -0
- package/dist/workspace/trust/run-statement.js +182 -0
- package/dist/workspace/trust/seal.js +272 -0
- package/dist/workspace/trust/signers-cli.js +152 -0
- package/dist/workspace/trust/ssh-commit.js +178 -0
- package/dist/workspace/trust/test-repo.js +118 -0
- package/dist/workspace/trust/trust-files.js +193 -0
- package/dist/workspace/trust/verify-cli.js +63 -0
- package/dist/workspace/trust/verify.js +192 -0
- package/dist/workspace/which-chant.js +141 -0
- package/dist/workspace/wip-cli.js +95 -0
- package/dist/workspace/wip-write.schema.json +504 -0
- package/dist/workspace/wip.js +631 -0
- package/dist/workspace/wip.schema.json +334 -0
- package/dist/workspace/work-cli.js +448 -0
- package/dist/workspace/work-evidence.js +122 -0
- package/dist/workspace/work-evidence.schema.json +222 -0
- package/dist/workspace/work-history.schema.json +421 -0
- package/dist/workspace/work-lease.schema.json +246 -0
- package/dist/workspace/work-size.js +77 -0
- package/dist/workspace/work.js +283 -0
- package/dist/workspace/workspace-kinds.schema.json +259 -259
- package/dist/workspace/workspace-principals.schema.json +53 -53
- package/dist/workspace/write-lock-cli.js +105 -0
- package/dist/workspace/write-lock.js +424 -0
- package/dist/workspace/write-lock.schema.json +172 -0
- package/dist/workspace/write-scope.js +484 -0
- package/dist/yaml.js +459 -0
- package/package.json +2 -2
- package/src/cli/commands/check-lexicon-plugin.ts +2 -0
- package/src/cli/commands/lint.ts +36 -6
- package/src/cli/commands/migrate.ts +2 -0
- package/src/cli/compiled-cli.e2e.test.ts +165 -0
- package/src/cli/main.ts +121 -27
- package/src/cli/mcp/workspace-tools.ts +1 -1
- package/src/codegen/pinned-upgrade.ts +2 -0
- package/src/components/discover.ts +2 -0
- package/src/components/sandbox/driver.ts +3 -1
- package/src/config-import.ts +3 -0
- package/src/discovery/fold-import.ts +23 -14
- package/src/discovery/import.ts +2 -0
- package/src/discovery/sandbox/driver.ts +3 -1
- package/src/gate-decision-bundle.test.ts +3 -2
- package/src/gate-decision-identity.test.ts +176 -0
- package/src/gate-decision.ts +100 -22
- package/src/lexicon-module.ts +3 -0
- package/src/lifecycle/gate-ledger.ts +8 -0
- package/src/lint/config.ts +1 -1
- package/src/lint/discover.ts +28 -8
- package/src/lint/policy-import.ts +4 -1
- package/src/lint/rule-loader.ts +2 -0
- package/src/op/discover.ts +3 -0
- package/src/op/op-waves-point.test.ts +1 -0
- package/src/op/op-waves-run.ts +5 -4
- package/src/op/op-waves.test.ts +14 -0
- package/src/ts-loader.test.ts +23 -0
- package/src/ts-loader.ts +122 -0
- package/src/workspace/chant-migrations/chud-lexicon-exit.ts +1 -1
- package/src/workspace/declaration.ts +1 -1
- package/src/workspace/identity-gate-rule.ts +109 -0
- package/src/workspace/identity.ts +8 -18
- package/src/workspace/kinds.ts +1 -1
- package/src/workspace/lineage-migrations.ts +2 -0
- package/src/workspace/points.ts +1 -1
- package/src/workspace/principal-classes.ts +5 -30
|
@@ -0,0 +1,494 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pinned-version upgrade detection for any lexicon that declares `upstreamPin`
|
|
3
|
+
* (k8s, k3s, gcp, docker, gitlab, cedar, sql).
|
|
4
|
+
*
|
|
5
|
+
* For each lexicon with a pinned upstream version constant, this module:
|
|
6
|
+
* 1. Reads the currently pinned version from the source file.
|
|
7
|
+
* 2. Queries upstream for the latest stable release tag (no pre-release/rc).
|
|
8
|
+
* 3. Compares using semver ordering. If a newer version exists:
|
|
9
|
+
* a. Edits the version constant in the source file.
|
|
10
|
+
* b. Invokes regenLexicon to regenerate and surface-diff.
|
|
11
|
+
* c. Reverts the constant edit (dry-run mode — never commits the bump).
|
|
12
|
+
* 4. Returns a structured report per lexicon.
|
|
13
|
+
*
|
|
14
|
+
* The upstream-query functions are injectable — pass a mock for unit tests.
|
|
15
|
+
* The actual HTTP calls use the GitHub Releases/Tags API.
|
|
16
|
+
*
|
|
17
|
+
* Design decisions:
|
|
18
|
+
* - "Latest stable" = highest semver excluding tags containing rc/alpha/beta/preview.
|
|
19
|
+
* - The bump is always reverted after regen so the working tree is unchanged.
|
|
20
|
+
* Only the CLI reporter (#527) actually creates branches/PRs.
|
|
21
|
+
* - Each lexicon's upstream query is a pure async function: () => Promise<string | null>
|
|
22
|
+
* (returns the latest version tag, or null when no stable release is found).
|
|
23
|
+
*/
|
|
24
|
+
import { existsSync, readFileSync, writeFileSync } from "fs";
|
|
25
|
+
import { join, resolve } from "path";
|
|
26
|
+
import { pathToFileURL } from "url";
|
|
27
|
+
import { regenLexicon } from "./lexicon-regen.js";
|
|
28
|
+
import { fetchWithRetry } from "./fetch.js";
|
|
29
|
+
import { isLexiconPlugin } from "../lexicon.js";
|
|
30
|
+
import { importLexiconPackage } from "../lexicon-module.js";
|
|
31
|
+
import { ensureTypeScriptLoader } from "../ts-loader.js";
|
|
32
|
+
// ── Version comparison ────────────────────────────────────────────────
|
|
33
|
+
/**
|
|
34
|
+
* Parse a version string into numeric segments.
|
|
35
|
+
*
|
|
36
|
+
* Strips leading "v" and any build-metadata suffix after "-".
|
|
37
|
+
* Returns null when the string is not a parseable version.
|
|
38
|
+
*/
|
|
39
|
+
export function parseVersion(tag) {
|
|
40
|
+
// Strip leading "v"
|
|
41
|
+
const core = tag.startsWith("v") ? tag.slice(1) : tag;
|
|
42
|
+
// Strip build metadata suffix (e.g. "-ee" from "17.8.1-ee")
|
|
43
|
+
const base = core.split("-")[0];
|
|
44
|
+
if (!base)
|
|
45
|
+
return null;
|
|
46
|
+
const parts = base.split(".").map(Number);
|
|
47
|
+
if (parts.some((n) => Number.isNaN(n) || n < 0))
|
|
48
|
+
return null;
|
|
49
|
+
if (parts.length === 0)
|
|
50
|
+
return null;
|
|
51
|
+
return parts;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Compare two version tuples lexicographically.
|
|
55
|
+
* Returns -1 when a < b, 0 when equal, +1 when a > b.
|
|
56
|
+
*/
|
|
57
|
+
export function compareVersionTuples(a, b) {
|
|
58
|
+
const len = Math.max(a.length, b.length);
|
|
59
|
+
for (let i = 0; i < len; i++) {
|
|
60
|
+
const av = a[i] ?? 0;
|
|
61
|
+
const bv = b[i] ?? 0;
|
|
62
|
+
if (av < bv)
|
|
63
|
+
return -1;
|
|
64
|
+
if (av > bv)
|
|
65
|
+
return 1;
|
|
66
|
+
}
|
|
67
|
+
return 0;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Return true when `candidate` is strictly newer than `current`.
|
|
71
|
+
*
|
|
72
|
+
* Strips build-metadata suffixes (e.g. "-ee") before comparing so that
|
|
73
|
+
* "v17.9.0-ee" and "v17.9.0" compare by numeric part only.
|
|
74
|
+
*/
|
|
75
|
+
export function isNewer(candidate, current) {
|
|
76
|
+
const a = parseVersion(candidate);
|
|
77
|
+
const b = parseVersion(current);
|
|
78
|
+
if (!a || !b)
|
|
79
|
+
return false;
|
|
80
|
+
return compareVersionTuples(a, b) > 0;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Return true when a release tag looks like a pre-release.
|
|
84
|
+
* Filters out rc, alpha, beta, preview, nightly, dev, canary suffixes.
|
|
85
|
+
*/
|
|
86
|
+
export function isPreRelease(tag) {
|
|
87
|
+
return /[\-_\.](rc|alpha|beta|preview|nightly|dev|canary)\d*/i.test(tag);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Read the current pinned version from a source file using a regex pattern.
|
|
91
|
+
* Returns null when the pattern is not found.
|
|
92
|
+
*/
|
|
93
|
+
export function readPinnedVersion(location) {
|
|
94
|
+
let content;
|
|
95
|
+
try {
|
|
96
|
+
content = readFileSync(location.filePath, "utf-8");
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
const match = location.pattern.exec(content);
|
|
102
|
+
return match ? (match[1] ?? null) : null;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Apply a version bump by replacing the constant in the source file.
|
|
106
|
+
* Returns the original file content so it can be reverted.
|
|
107
|
+
*/
|
|
108
|
+
export function applyVersionBump(location, newVersion) {
|
|
109
|
+
const original = readFileSync(location.filePath, "utf-8");
|
|
110
|
+
const lines = original.split("\n");
|
|
111
|
+
const updated = lines.map((line) => {
|
|
112
|
+
const match = location.pattern.exec(line);
|
|
113
|
+
if (!match)
|
|
114
|
+
return line;
|
|
115
|
+
const currentVersion = match[1] ?? "";
|
|
116
|
+
return location.buildReplacement(newVersion, currentVersion, line);
|
|
117
|
+
});
|
|
118
|
+
writeFileSync(location.filePath, updated.join("\n"), "utf-8");
|
|
119
|
+
return original;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Revert a file to its original content (undo a bump).
|
|
123
|
+
*/
|
|
124
|
+
export function revertVersionBump(filePath, original) {
|
|
125
|
+
writeFileSync(filePath, original, "utf-8");
|
|
126
|
+
}
|
|
127
|
+
// ── Pin descriptor, loaded from the lexicon plugin ────────────────────
|
|
128
|
+
/**
|
|
129
|
+
* Load a lexicon's `upstreamPin` descriptor from its plugin package
|
|
130
|
+
* (`@intentius/chant-lexicon-<name>`) — the lexicon's own declaration of where
|
|
131
|
+
* its version constant lives and which upstream repo to check. Returns null
|
|
132
|
+
* when the package can't be resolved or declares no `upstreamPin` (i.e. it is
|
|
133
|
+
* not self-upgradable). Mirrors ../components/capability-plugin-loader.ts's
|
|
134
|
+
* lexicon-borne loading.
|
|
135
|
+
*/
|
|
136
|
+
export async function loadUpstreamPin(lexicon, lexiconDir) {
|
|
137
|
+
return (await loadUpstreamPins(lexicon, lexiconDir))[0]?.pin ?? null;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Every pin a plugin declares: its `upstreamPin` (labelled by its own `label`,
|
|
141
|
+
* else the lexicon's name) followed by each `upstreamPins` entry. Empty when
|
|
142
|
+
* the plugin declares none or cannot be loaded.
|
|
143
|
+
*/
|
|
144
|
+
export function pinsOfPlugin(plugin, lexicon) {
|
|
145
|
+
const pins = [];
|
|
146
|
+
if (plugin.upstreamPin)
|
|
147
|
+
pins.push({ label: plugin.upstreamPin.label ?? lexicon, pin: plugin.upstreamPin });
|
|
148
|
+
for (const pin of plugin.upstreamPins ?? [])
|
|
149
|
+
pins.push({ label: pin.label ?? `${lexicon}-${pins.length}`, pin });
|
|
150
|
+
return pins;
|
|
151
|
+
}
|
|
152
|
+
/** Load every pin the lexicon's plugin declares; see {@link loadUpstreamPin} for where it looks. */
|
|
153
|
+
export async function loadUpstreamPins(lexicon, lexiconDir) {
|
|
154
|
+
const pinsOf = (mod) => {
|
|
155
|
+
for (const value of Object.values(mod)) {
|
|
156
|
+
if (isLexiconPlugin(value)) {
|
|
157
|
+
const pins = pinsOfPlugin(value, lexicon);
|
|
158
|
+
if (pins.length > 0)
|
|
159
|
+
return pins;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return [];
|
|
163
|
+
};
|
|
164
|
+
// The directory the caller pointed at wins: it is the checkout whose pin
|
|
165
|
+
// file will be edited, and it need not be installed under node_modules.
|
|
166
|
+
const entry = lexiconDir ? lexiconEntry(lexiconDir) : null;
|
|
167
|
+
if (entry) {
|
|
168
|
+
try {
|
|
169
|
+
ensureTypeScriptLoader();
|
|
170
|
+
const pins = pinsOf((await import(pathToFileURL(entry).href)));
|
|
171
|
+
if (pins.length > 0)
|
|
172
|
+
return pins;
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
// fall through to the package-name route
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
try {
|
|
179
|
+
return pinsOf((await importLexiconPackage(`@intentius/chant-lexicon-${lexicon}`)));
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
return [];
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/** The module a lexicon directory's package.json exposes as ".", or null when it declares none. */
|
|
186
|
+
function lexiconEntry(lexiconDir) {
|
|
187
|
+
try {
|
|
188
|
+
const pkg = JSON.parse(readFileSync(join(lexiconDir, "package.json"), "utf-8"));
|
|
189
|
+
let rel = pkg.main;
|
|
190
|
+
const root = typeof pkg.exports === "string" ? pkg.exports : pkg.exports?.["."];
|
|
191
|
+
if (typeof root === "string")
|
|
192
|
+
rel = root;
|
|
193
|
+
else if (root && typeof root === "object") {
|
|
194
|
+
const conds = root;
|
|
195
|
+
rel = conds.development ?? conds.default ?? conds.import ?? rel;
|
|
196
|
+
}
|
|
197
|
+
if (typeof rel !== "string")
|
|
198
|
+
return null;
|
|
199
|
+
const abs = resolve(lexiconDir, rel);
|
|
200
|
+
return existsSync(abs) ? abs : null;
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
return null;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* The lexicon name a directory holds, from its package.json
|
|
208
|
+
* (`@intentius/chant-lexicon-<name>`), falling back to the directory name.
|
|
209
|
+
*/
|
|
210
|
+
export function lexiconNameOf(lexiconDir) {
|
|
211
|
+
try {
|
|
212
|
+
const pkg = JSON.parse(readFileSync(join(lexiconDir, "package.json"), "utf-8"));
|
|
213
|
+
const m = /^@intentius\/chant-lexicon-(.+)$/.exec(pkg.name ?? "");
|
|
214
|
+
if (m)
|
|
215
|
+
return m[1];
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
// no package.json
|
|
219
|
+
}
|
|
220
|
+
return resolve(lexiconDir).split("/").pop() ?? lexiconDir;
|
|
221
|
+
}
|
|
222
|
+
/** Build a concrete `PinLocation` (absolute path + patterns) from a lexicon's descriptor and its checkout dir. */
|
|
223
|
+
function pinLocationFrom(pin, lexiconDir) {
|
|
224
|
+
return {
|
|
225
|
+
filePath: join(lexiconDir, pin.file),
|
|
226
|
+
pattern: pin.pattern,
|
|
227
|
+
buildReplacement: (newVer, _old, line) => pin.replace(newVer, line),
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Pick the highest stable version from a list of GitHub release or tag items.
|
|
232
|
+
* Pure: the network lives in `latestGitHubRelease`.
|
|
233
|
+
*/
|
|
234
|
+
export function pickLatest(items, kind, opts = {}) {
|
|
235
|
+
const { tagSuffix, tagVersion } = opts;
|
|
236
|
+
const major = opts.sameMajorAs !== undefined ? majorOf(opts.sameMajorAs, tagVersion) : undefined;
|
|
237
|
+
let best = null;
|
|
238
|
+
let bestParsed = null;
|
|
239
|
+
for (const item of items) {
|
|
240
|
+
const rawTag = kind === "releases" ? (item.tag_name ?? "") : (item.name ?? "");
|
|
241
|
+
if (!rawTag)
|
|
242
|
+
continue;
|
|
243
|
+
// For releases, the GitHub API pre-release flag is authoritative
|
|
244
|
+
if (kind === "releases" && item.prerelease === true)
|
|
245
|
+
continue;
|
|
246
|
+
// Additional pre-release guard on tag name
|
|
247
|
+
if (isPreRelease(rawTag))
|
|
248
|
+
continue;
|
|
249
|
+
// Apply optional suffix filter (e.g. "-ee" for GitLab)
|
|
250
|
+
if (tagSuffix && !rawTag.endsWith(tagSuffix))
|
|
251
|
+
continue;
|
|
252
|
+
const candidate = tagVersion ? tagVersion(rawTag) : rawTag;
|
|
253
|
+
if (!candidate)
|
|
254
|
+
continue;
|
|
255
|
+
const parsed = parseVersion(candidate);
|
|
256
|
+
if (!parsed)
|
|
257
|
+
continue;
|
|
258
|
+
if (major !== undefined && parsed[0] !== major)
|
|
259
|
+
continue;
|
|
260
|
+
if (!bestParsed || compareVersionTuples(parsed, bestParsed) > 0) {
|
|
261
|
+
best = candidate;
|
|
262
|
+
bestParsed = parsed;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
return best;
|
|
266
|
+
}
|
|
267
|
+
/** First numeric segment of a pinned value, which may be a mapped version or a raw tag. */
|
|
268
|
+
function majorOf(value, tagVersion) {
|
|
269
|
+
const parsed = parseVersion(value) ?? (tagVersion ? parseVersion(tagVersion(value) ?? "") : null);
|
|
270
|
+
return parsed?.[0];
|
|
271
|
+
}
|
|
272
|
+
const TAG_PAGE_SIZE = 100;
|
|
273
|
+
const TAG_MAX_PAGES = 20;
|
|
274
|
+
/**
|
|
275
|
+
* Fetch GitHub releases or tags from the given repo and return the
|
|
276
|
+
* latest stable version tag (highest semver, no pre-release).
|
|
277
|
+
*
|
|
278
|
+
* `kind` selects whether to use the releases API (which has published
|
|
279
|
+
* stable releases) or the tags API (which has every git tag).
|
|
280
|
+
*
|
|
281
|
+
* `tagSuffix` filters tags to only those ending with the given string
|
|
282
|
+
* (e.g. "-ee" for GitLab). `tagVersion` and `sameMajorAs` are described on
|
|
283
|
+
* `UpstreamPin.upstream`; with `tagVersion` every page of tags is read.
|
|
284
|
+
*/
|
|
285
|
+
async function latestGitHubRelease(owner, repo, kind, opts = {}) {
|
|
286
|
+
const token = process.env.GITHUB_TOKEN ?? process.env.GH_TOKEN;
|
|
287
|
+
const headers = {
|
|
288
|
+
Accept: "application/vnd.github+json",
|
|
289
|
+
"X-GitHub-Api-Version": "2022-11-28",
|
|
290
|
+
};
|
|
291
|
+
if (token)
|
|
292
|
+
headers["Authorization"] = `Bearer ${token}`;
|
|
293
|
+
const paged = kind === "tags" && opts.tagVersion !== undefined;
|
|
294
|
+
const perPage = paged ? TAG_PAGE_SIZE : 50;
|
|
295
|
+
const items = [];
|
|
296
|
+
for (let page = 1; page <= (paged ? TAG_MAX_PAGES : 1); page++) {
|
|
297
|
+
const url = `https://api.github.com/repos/${owner}/${repo}/${kind}?per_page=${perPage}&page=${page}`;
|
|
298
|
+
const resp = await fetchWithRetry(url, 4, 1000, { headers });
|
|
299
|
+
const batch = (await resp.json());
|
|
300
|
+
items.push(...batch);
|
|
301
|
+
if (batch.length < perPage)
|
|
302
|
+
break;
|
|
303
|
+
}
|
|
304
|
+
return pickLatest(items, kind, opts);
|
|
305
|
+
}
|
|
306
|
+
/** Build the real GitHub-backed upstream resolver from a lexicon's declared `upstream` descriptor. */
|
|
307
|
+
export function resolverFor(pin, from) {
|
|
308
|
+
const { owner, repo, kind, tagSuffix, tagVersion, trackMajor } = pin.upstream;
|
|
309
|
+
return () => latestGitHubRelease(owner, repo, kind, { tagSuffix, tagVersion, sameMajorAs: trackMajor ? from : undefined });
|
|
310
|
+
}
|
|
311
|
+
// ── Main function ─────────────────────────────────────────────────────
|
|
312
|
+
/**
|
|
313
|
+
* Check whether a newer upstream release exists for a pinned lexicon.
|
|
314
|
+
*
|
|
315
|
+
* When a newer version is found:
|
|
316
|
+
* 1. Applies the version bump to the source constant.
|
|
317
|
+
* 2. Runs regenLexicon (surface-diff pipeline).
|
|
318
|
+
* 3. Reverts the bump unconditionally.
|
|
319
|
+
*
|
|
320
|
+
* The caller receives the full result including the regen validation output
|
|
321
|
+
* without any lasting change to the working tree.
|
|
322
|
+
*/
|
|
323
|
+
export async function checkPinnedUpgrade(opts) {
|
|
324
|
+
const selected = await selectPins(opts);
|
|
325
|
+
if ("error" in selected)
|
|
326
|
+
return selected.error;
|
|
327
|
+
return checkOnePin(selected.pins[0], opts, selected.multiple);
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Check every pin the plugin declares (or the one named by `opts.pin`), one
|
|
331
|
+
* result each, in declaration order. A plugin with one pin gives one result,
|
|
332
|
+
* the same as `checkPinnedUpgrade`. Pins are checked one after another: each
|
|
333
|
+
* dry-run bump edits and reverts a file, and regenerates.
|
|
334
|
+
*/
|
|
335
|
+
export async function checkPinnedUpgrades(opts) {
|
|
336
|
+
const selected = await selectPins({ ...opts, pin: opts.pin });
|
|
337
|
+
if ("error" in selected)
|
|
338
|
+
return [selected.error];
|
|
339
|
+
const results = [];
|
|
340
|
+
for (const labeled of selected.pins)
|
|
341
|
+
results.push(await checkOnePin(labeled, opts, selected.multiple));
|
|
342
|
+
return results;
|
|
343
|
+
}
|
|
344
|
+
/** Choose the pins to check: all of them, or the one `opts.pin` names. */
|
|
345
|
+
async function selectPins(opts) {
|
|
346
|
+
const { lexiconDir, lexicon } = opts;
|
|
347
|
+
const fail = (fetchError) => ({
|
|
348
|
+
error: { lexicon, hasUpgrade: false, from: "(unknown)", to: null, validation: null, fetchError },
|
|
349
|
+
});
|
|
350
|
+
const all = await loadUpstreamPins(lexicon, lexiconDir);
|
|
351
|
+
if (all.length === 0) {
|
|
352
|
+
return fail(`Lexicon "${lexicon}" declares no upstreamPin, so there is no pinned upstream version to check (see lexicon-authoring/generate, "Pinning the upstream schema"), or its plugin could not be loaded from ${lexiconDir}.`);
|
|
353
|
+
}
|
|
354
|
+
const labels = all.map((p) => p.label);
|
|
355
|
+
const dup = labels.find((l, i) => labels.indexOf(l) !== i);
|
|
356
|
+
if (dup)
|
|
357
|
+
return fail(`Lexicon "${lexicon}" declares two pins labelled "${dup}"; each pin's label must be unique.`);
|
|
358
|
+
const multiple = all.length > 1;
|
|
359
|
+
if (opts.pin === undefined)
|
|
360
|
+
return { pins: all, multiple };
|
|
361
|
+
const chosen = all.find((p) => p.label === opts.pin);
|
|
362
|
+
if (!chosen)
|
|
363
|
+
return fail(`Lexicon "${lexicon}" has no pin labelled "${opts.pin}". Pins: ${labels.join(", ")}.`);
|
|
364
|
+
return { pins: [chosen], multiple };
|
|
365
|
+
}
|
|
366
|
+
async function checkOnePin(labeled, opts, multiple) {
|
|
367
|
+
const { lexiconDir, lexicon, force = false, verbose = false, skipBuild, skipBundle, skipLint } = opts;
|
|
368
|
+
const { pin } = labeled;
|
|
369
|
+
const tag = multiple ? { pin: labeled.label } : {};
|
|
370
|
+
const location = pinLocationFrom(pin, lexiconDir);
|
|
371
|
+
// Read current pin
|
|
372
|
+
const from = readPinnedVersion(location);
|
|
373
|
+
if (!from) {
|
|
374
|
+
return {
|
|
375
|
+
lexicon,
|
|
376
|
+
...tag,
|
|
377
|
+
hasUpgrade: false,
|
|
378
|
+
from: "(unknown)",
|
|
379
|
+
to: null,
|
|
380
|
+
validation: null,
|
|
381
|
+
fetchError: `Could not read pinned version constant from ${location.filePath}`,
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
// Query upstream
|
|
385
|
+
const resolver = opts.resolverOverride ?? resolverFor(pin, from);
|
|
386
|
+
let latestTag;
|
|
387
|
+
try {
|
|
388
|
+
latestTag = await resolver();
|
|
389
|
+
}
|
|
390
|
+
catch (e) {
|
|
391
|
+
return {
|
|
392
|
+
lexicon,
|
|
393
|
+
...tag,
|
|
394
|
+
hasUpgrade: false,
|
|
395
|
+
from,
|
|
396
|
+
to: null,
|
|
397
|
+
validation: null,
|
|
398
|
+
fetchError: String(e),
|
|
399
|
+
};
|
|
400
|
+
}
|
|
401
|
+
// The pin may hold the raw tag (REL_18_6) where the resolver returns the mapped version (18.6).
|
|
402
|
+
const fromVersion = parseVersion(from) ? from : (pin.upstream.tagVersion?.(from) ?? from);
|
|
403
|
+
if (!latestTag || !isNewer(latestTag, fromVersion)) {
|
|
404
|
+
return {
|
|
405
|
+
lexicon,
|
|
406
|
+
...tag,
|
|
407
|
+
hasUpgrade: false,
|
|
408
|
+
from,
|
|
409
|
+
to: latestTag,
|
|
410
|
+
validation: null,
|
|
411
|
+
fetchError: null,
|
|
412
|
+
};
|
|
413
|
+
}
|
|
414
|
+
// A pin the descriptor's `replace` cannot move alone (a companion digest,
|
|
415
|
+
// say): report the new version and how to move it. Editing the version
|
|
416
|
+
// line only would leave a pin that fails generation.
|
|
417
|
+
if (pin.alsoMoves) {
|
|
418
|
+
return {
|
|
419
|
+
lexicon,
|
|
420
|
+
...tag,
|
|
421
|
+
hasUpgrade: true,
|
|
422
|
+
from,
|
|
423
|
+
to: latestTag,
|
|
424
|
+
validation: null,
|
|
425
|
+
fetchError: null,
|
|
426
|
+
manualPin: { file: pin.file, instructions: pin.alsoMoves },
|
|
427
|
+
};
|
|
428
|
+
}
|
|
429
|
+
// Apply bump, regen, then revert
|
|
430
|
+
let originalContent;
|
|
431
|
+
try {
|
|
432
|
+
originalContent = applyVersionBump(location, latestTag);
|
|
433
|
+
}
|
|
434
|
+
catch (e) {
|
|
435
|
+
return {
|
|
436
|
+
lexicon,
|
|
437
|
+
...tag,
|
|
438
|
+
hasUpgrade: true,
|
|
439
|
+
from,
|
|
440
|
+
to: latestTag,
|
|
441
|
+
validation: null,
|
|
442
|
+
fetchError: `Failed to apply version bump to ${location.filePath}: ${String(e)}`,
|
|
443
|
+
};
|
|
444
|
+
}
|
|
445
|
+
let validation;
|
|
446
|
+
try {
|
|
447
|
+
validation = await regenLexicon({
|
|
448
|
+
lexiconDir,
|
|
449
|
+
force,
|
|
450
|
+
verbose,
|
|
451
|
+
skipBuild: skipBuild ?? false,
|
|
452
|
+
skipBundle: skipBundle ?? false,
|
|
453
|
+
skipLint: skipLint ?? false,
|
|
454
|
+
skipExamples: true,
|
|
455
|
+
});
|
|
456
|
+
}
|
|
457
|
+
finally {
|
|
458
|
+
// Always revert — even if regenLexicon throws
|
|
459
|
+
revertVersionBump(location.filePath, originalContent);
|
|
460
|
+
}
|
|
461
|
+
return {
|
|
462
|
+
lexicon,
|
|
463
|
+
...tag,
|
|
464
|
+
hasUpgrade: true,
|
|
465
|
+
from,
|
|
466
|
+
to: latestTag,
|
|
467
|
+
validation,
|
|
468
|
+
fetchError: null,
|
|
469
|
+
};
|
|
470
|
+
}
|
|
471
|
+
// ── Branch-commit helper ──────────────────────────────────────────────
|
|
472
|
+
/**
|
|
473
|
+
* Apply a version bump for a lexicon permanently (without reverting).
|
|
474
|
+
*
|
|
475
|
+
* Called by LexiconUpgradeOp when it has already decided to commit the bump
|
|
476
|
+
* to a branch. Returns the absolute path to the modified file so the caller
|
|
477
|
+
* can stage it with `git add`.
|
|
478
|
+
*
|
|
479
|
+
* Unlike `applyVersionBump` (which is generic), this function takes only a
|
|
480
|
+
* lexicon id and directory — it resolves the pin location from the lexicon's
|
|
481
|
+
* declared `upstreamPin` descriptor.
|
|
482
|
+
*/
|
|
483
|
+
export async function applyPinnedVersionBump(lexicon, lexiconDir, newVersion, pinLabel) {
|
|
484
|
+
const pins = await loadUpstreamPins(lexicon, lexiconDir);
|
|
485
|
+
const pin = (pinLabel === undefined ? pins[0] : pins.find((p) => p.label === pinLabel))?.pin;
|
|
486
|
+
if (!pin)
|
|
487
|
+
throw new Error(`Lexicon "${lexicon}" declares no upstreamPin (not self-upgradable).`);
|
|
488
|
+
if (pin.alsoMoves) {
|
|
489
|
+
throw new Error(`Lexicon "${lexicon}" cannot have its pin rewritten generically: ${pin.alsoMoves}`);
|
|
490
|
+
}
|
|
491
|
+
const location = pinLocationFrom(pin, lexiconDir);
|
|
492
|
+
applyVersionBump(location, newVersion);
|
|
493
|
+
return { filePath: location.filePath };
|
|
494
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Locating a lexicon's generated registry (#1367).
|
|
3
|
+
*
|
|
4
|
+
* The registry — every resource type the lexicon knows, keyed by class name —
|
|
5
|
+
* is written to two places by `npm run --prefix lexicons/<name> prepack`:
|
|
6
|
+
* `src/generated/lexicon-<name>.json` by the generate step, and `dist/meta.json`
|
|
7
|
+
* by the bundle step, byte-identical. Both are gitignored, so a fresh clone has
|
|
8
|
+
* neither until that command runs; CI runs it explicitly before anything else.
|
|
9
|
+
*
|
|
10
|
+
* That is a legitimate state. Being silent about it is not, and the two readers
|
|
11
|
+
* that needed the registry were silent in opposite directions:
|
|
12
|
+
*
|
|
13
|
+
* - AWS's import generator `require`d `dist/meta.json` with no catch, so a
|
|
14
|
+
* fresh clone got `Cannot find module …/lexicons/aws/dist/meta.json` — from
|
|
15
|
+
* `chant import`, and from twelve tests that mention neither modules nor
|
|
16
|
+
* registries.
|
|
17
|
+
* - Azure's caught the failure and continued with an empty map, so the import
|
|
18
|
+
* emitted `// Unknown resource type: Microsoft.Network/virtualNetworks` and
|
|
19
|
+
* its round-trip tests failed as though the registry were incomplete. That is
|
|
20
|
+
* the worse of the two: it looks like a coverage gap in the lexicon.
|
|
21
|
+
*
|
|
22
|
+
* Both now go through here, which tries the dev path first (matching what the
|
|
23
|
+
* azure serializer already did) and, failing both, says what to run.
|
|
24
|
+
*/
|
|
25
|
+
import { readFileSync } from "node:fs";
|
|
26
|
+
import { join } from "node:path";
|
|
27
|
+
/** Thrown when neither copy of the registry exists — carries the fix. */
|
|
28
|
+
export class LexiconRegistryMissingError extends Error {
|
|
29
|
+
constructor(lexicon) {
|
|
30
|
+
super(`${lexicon} lexicon registry not found — it is a build artifact and this checkout has not built it.\n` +
|
|
31
|
+
`Run: npm run --prefix lexicons/${lexicon} prepack\n` +
|
|
32
|
+
`(generate writes src/generated/lexicon-${lexicon}.json; bundle writes dist/meta.json)`);
|
|
33
|
+
this.lexicon = lexicon;
|
|
34
|
+
this.name = "LexiconRegistryMissingError";
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Read a lexicon's generated registry, dev copy first.
|
|
39
|
+
*
|
|
40
|
+
* `pkgDir` is the lexicon PACKAGE directory (the one holding `src/` and
|
|
41
|
+
* `dist/`) — callers pass an `import.meta.dirname`-derived path, so this stays
|
|
42
|
+
* free of assumptions about where it is imported from. Throws
|
|
43
|
+
* {@link LexiconRegistryMissingError} when neither copy exists, rather than
|
|
44
|
+
* returning an empty map that reads downstream as a lexicon with no resource
|
|
45
|
+
* types at all.
|
|
46
|
+
*/
|
|
47
|
+
export function loadLexiconRegistry(pkgDir, lexicon) {
|
|
48
|
+
for (const candidate of [
|
|
49
|
+
join(pkgDir, "src", "generated", `lexicon-${lexicon}.json`),
|
|
50
|
+
join(pkgDir, "dist", "meta.json"),
|
|
51
|
+
]) {
|
|
52
|
+
try {
|
|
53
|
+
return JSON.parse(readFileSync(candidate, "utf-8"));
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// Try the next candidate; only both failing is an error.
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
throw new LexiconRegistryMissingError(lexicon);
|
|
60
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rehype plugin: prepend a configured `base` to root-relative `<a href>` attributes.
|
|
3
|
+
*
|
|
4
|
+
* Astro/Starlight only base-prefixes its own internal navigation (sidebar `link:`
|
|
5
|
+
* entries, `slug:` entries). Root-relative links written in MD/MDX content body
|
|
6
|
+
* — e.g. `[AWS](/lexicons/aws/)` — are emitted verbatim and 404 in production
|
|
7
|
+
* when the site is served from a non-root `base`.
|
|
8
|
+
*
|
|
9
|
+
* This plugin walks the HAST tree, finds `<a>` elements whose href starts with
|
|
10
|
+
* `/` (single leading slash, not `//`), and prepends the site's `base`. It
|
|
11
|
+
* idempotently skips hrefs that already start with the site's own base or the
|
|
12
|
+
* project-wide base.
|
|
13
|
+
*
|
|
14
|
+
* @typedef {Object} RehypeBaseUrlOptions
|
|
15
|
+
* @property {string} base - Site base, e.g. "/chant" or "/chant/lexicons/aws". Trailing/leading slashes optional.
|
|
16
|
+
* @property {string} [projectBase] - Project-wide base used to detect already-correctly-prefixed cross-site links.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
const PROTOCOL_RE = /^[a-z][a-z0-9+.-]*:/i;
|
|
20
|
+
|
|
21
|
+
function normalizeBase(value) {
|
|
22
|
+
return "/" + value.replace(/^\/+|\/+$/g, "");
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @param {RehypeBaseUrlOptions} opts
|
|
27
|
+
*/
|
|
28
|
+
export default function rehypeBaseUrl(opts) {
|
|
29
|
+
const base = normalizeBase(opts.base);
|
|
30
|
+
if (base === "/") {
|
|
31
|
+
return () => {};
|
|
32
|
+
}
|
|
33
|
+
const ownPrefix = base + "/";
|
|
34
|
+
const projectPrefix = opts.projectBase
|
|
35
|
+
? normalizeBase(opts.projectBase) + "/"
|
|
36
|
+
: null;
|
|
37
|
+
|
|
38
|
+
function rewrite(node) {
|
|
39
|
+
if (
|
|
40
|
+
node &&
|
|
41
|
+
node.type === "element" &&
|
|
42
|
+
node.tagName === "a" &&
|
|
43
|
+
node.properties &&
|
|
44
|
+
typeof node.properties.href === "string"
|
|
45
|
+
) {
|
|
46
|
+
const href = node.properties.href;
|
|
47
|
+
if (
|
|
48
|
+
href.length > 0 &&
|
|
49
|
+
!href.startsWith("//") &&
|
|
50
|
+
!PROTOCOL_RE.test(href) &&
|
|
51
|
+
!href.startsWith("#") &&
|
|
52
|
+
href.startsWith("/") &&
|
|
53
|
+
href !== base &&
|
|
54
|
+
!href.startsWith(ownPrefix) &&
|
|
55
|
+
!(projectPrefix && href.startsWith(projectPrefix))
|
|
56
|
+
) {
|
|
57
|
+
node.properties.href = base + href;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (node && node.children) {
|
|
61
|
+
for (const child of node.children) rewrite(child);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return (tree) => {
|
|
66
|
+
rewrite(tree);
|
|
67
|
+
};
|
|
68
|
+
}
|