@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,403 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync, existsSync } from "fs";
|
|
2
|
+
import { join, dirname } from "path";
|
|
3
|
+
import { fileURLToPath } from "url";
|
|
4
|
+
import { formatSuccess, formatError, formatWarning } from "../format.js";
|
|
5
|
+
import { lexiconModulePath, lexiconSourceLabel } from "../../lexicon-module.js";
|
|
6
|
+
/** Resolve the monorepo root (5 dirs up from packages/core/src/cli/commands/). */
|
|
7
|
+
function findRepoRoot() {
|
|
8
|
+
const here = dirname(fileURLToPath(import.meta.url)); // commands/
|
|
9
|
+
return dirname(dirname(dirname(dirname(dirname(here))))); // -> root
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* A real prepack invocation line: a Dockerfile `RUN`, a workflow `- run:`,
|
|
13
|
+
* or a bare line inside a `run: |` block. Comments, `echo` messages and
|
|
14
|
+
* `$lex` / `<lex>` placeholders do not match. Matching those placeholder
|
|
15
|
+
* substrings was how onboard appended duplicates to Dockerfile.smoke on
|
|
16
|
+
* every run (#1678).
|
|
17
|
+
*/
|
|
18
|
+
const PREPACK_LINE = /^\s*(?:RUN\s+|-\s*run:\s*)?npm run --prefix lexicons\/[a-z0-9-]+ prepack\s*$/i;
|
|
19
|
+
function isPrepackLine(line) {
|
|
20
|
+
return PREPACK_LINE.test(line);
|
|
21
|
+
}
|
|
22
|
+
/** A YAML comment line, e.g. the cedar note sitting mid-list in chant.yml. */
|
|
23
|
+
const COMMENT_LINE = /^\s*#/;
|
|
24
|
+
function isCommentLine(line) {
|
|
25
|
+
return COMMENT_LINE.test(line);
|
|
26
|
+
}
|
|
27
|
+
function hasPrepackLine(lines, name) {
|
|
28
|
+
return lines.some((l) => isPrepackLine(l) && l.includes(`lexicons/${name} prepack`));
|
|
29
|
+
}
|
|
30
|
+
/** Shell loop header over lexicon names: `for lex in aws gcp k8s; do \`. */
|
|
31
|
+
const LEX_LOOP = /^(\s*(?:RUN\s+)?for lex in )([a-z0-9][a-z0-9 -]*?)(\s*;\s*do\b.*)$/i;
|
|
32
|
+
function loopCoversLexicon(lines, name) {
|
|
33
|
+
return lines.some((l) => {
|
|
34
|
+
const m = l.match(LEX_LOOP);
|
|
35
|
+
return m !== null && m[2].split(/\s+/).includes(name);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Append the lexicon to every `for lex in ...` loop list that does not
|
|
40
|
+
* already contain it. Returns true when at least one list changed.
|
|
41
|
+
*/
|
|
42
|
+
function addToLexiconLoops(lines, name) {
|
|
43
|
+
let changed = false;
|
|
44
|
+
for (let i = 0; i < lines.length; i++) {
|
|
45
|
+
const m = lines[i].match(LEX_LOOP);
|
|
46
|
+
if (!m)
|
|
47
|
+
continue;
|
|
48
|
+
const names = m[2].split(/\s+/).filter(Boolean);
|
|
49
|
+
if (names.includes(name))
|
|
50
|
+
continue;
|
|
51
|
+
names.push(name);
|
|
52
|
+
lines[i] = `${m[1]}${names.join(" ")}${m[3]}`;
|
|
53
|
+
changed = true;
|
|
54
|
+
}
|
|
55
|
+
return changed;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Patch root package.json to add a workspace dependency for the lexicon.
|
|
59
|
+
*/
|
|
60
|
+
function patchRootPackageJson(root, name) {
|
|
61
|
+
const pkgPath = join(root, "package.json");
|
|
62
|
+
if (!existsSync(pkgPath))
|
|
63
|
+
return { patched: false, reason: "root package.json not found" };
|
|
64
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
|
|
65
|
+
const depKey = `@intentius/chant-lexicon-${name}`;
|
|
66
|
+
if (pkg.dependencies?.[depKey]) {
|
|
67
|
+
return { patched: false, reason: `${depKey} already in dependencies` };
|
|
68
|
+
}
|
|
69
|
+
pkg.dependencies = pkg.dependencies ?? {};
|
|
70
|
+
pkg.dependencies[depKey] = "workspace:*";
|
|
71
|
+
// Sort dependencies for consistency
|
|
72
|
+
const sorted = {};
|
|
73
|
+
for (const k of Object.keys(pkg.dependencies).sort()) {
|
|
74
|
+
sorted[k] = pkg.dependencies[k];
|
|
75
|
+
}
|
|
76
|
+
pkg.dependencies = sorted;
|
|
77
|
+
writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + "\n");
|
|
78
|
+
return { patched: true };
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Patch the root tsconfig.json `paths` map (#1614).
|
|
82
|
+
*
|
|
83
|
+
* The whole-repo typecheck runs with `moduleResolution: node`, which never
|
|
84
|
+
* reads package exports maps, so every lexicon needs a bare + subpath
|
|
85
|
+
* mapping here or an example importing the package fails to resolve.
|
|
86
|
+
*
|
|
87
|
+
* Entries are `./`-prefixed like every other entry (#3227): with no `baseUrl`
|
|
88
|
+
* (removed in #3205) a bare `lexicons/...` path is invalid and tsx's tsconfig
|
|
89
|
+
* loader throws on it for every run in the repo.
|
|
90
|
+
*/
|
|
91
|
+
export function patchRootTsconfigPaths(root, name) {
|
|
92
|
+
const tsconfigPath = join(root, "tsconfig.json");
|
|
93
|
+
if (!existsSync(tsconfigPath))
|
|
94
|
+
return { patched: false, reason: "root tsconfig.json not found" };
|
|
95
|
+
const cfg = JSON.parse(readFileSync(tsconfigPath, "utf-8"));
|
|
96
|
+
cfg.compilerOptions = cfg.compilerOptions ?? {};
|
|
97
|
+
const paths = (cfg.compilerOptions.paths = cfg.compilerOptions.paths ?? {});
|
|
98
|
+
const bare = `@intentius/chant-lexicon-${name}`;
|
|
99
|
+
const wanted = {
|
|
100
|
+
[bare]: [`./lexicons/${name}/src/index.ts`],
|
|
101
|
+
[`${bare}/*`]: [`./lexicons/${name}/src/*`],
|
|
102
|
+
};
|
|
103
|
+
let changed = false;
|
|
104
|
+
for (const [key, value] of Object.entries(wanted)) {
|
|
105
|
+
if (Array.isArray(paths[key]) && paths[key].length > 0)
|
|
106
|
+
continue;
|
|
107
|
+
paths[key] = value;
|
|
108
|
+
changed = true;
|
|
109
|
+
}
|
|
110
|
+
if (!changed)
|
|
111
|
+
return { patched: false, reason: `${bare} already in paths` };
|
|
112
|
+
writeFileSync(tsconfigPath, JSON.stringify(cfg, null, 2) + "\n");
|
|
113
|
+
return { patched: true };
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Insert a new prepack line after the last prepack line in each contiguous group
|
|
117
|
+
* of 2+ prepack lines. Single standalone lines (like YAML `run:` values) are
|
|
118
|
+
* ignored. Used for multi-line `run: |` blocks in workflows.
|
|
119
|
+
*
|
|
120
|
+
* A comment line between two prepack lines (the cedar note in chant.yml's
|
|
121
|
+
* check and test jobs) does not end the group: it is skipped when scanning,
|
|
122
|
+
* so the block still gets exactly one insertion, anchored after its last
|
|
123
|
+
* real prepack line rather than after the comment (#2098).
|
|
124
|
+
*/
|
|
125
|
+
function insertPrepackInContiguousGroups(lines, name) {
|
|
126
|
+
if (hasPrepackLine(lines, name))
|
|
127
|
+
return false;
|
|
128
|
+
// Identify contiguous groups of prepack lines, treating comment lines
|
|
129
|
+
// inside a group as pass-through rather than a boundary.
|
|
130
|
+
const groups = [];
|
|
131
|
+
let groupStart = -1;
|
|
132
|
+
let lastPrepackIdx = -1;
|
|
133
|
+
let count = 0;
|
|
134
|
+
const closeGroup = () => {
|
|
135
|
+
if (groupStart !== -1)
|
|
136
|
+
groups.push({ lastPrepackIdx, count });
|
|
137
|
+
groupStart = -1;
|
|
138
|
+
count = 0;
|
|
139
|
+
};
|
|
140
|
+
for (let i = 0; i < lines.length; i++) {
|
|
141
|
+
if (isPrepackLine(lines[i])) {
|
|
142
|
+
if (groupStart === -1)
|
|
143
|
+
groupStart = i;
|
|
144
|
+
lastPrepackIdx = i;
|
|
145
|
+
count++;
|
|
146
|
+
}
|
|
147
|
+
else if (isCommentLine(lines[i])) {
|
|
148
|
+
// Skip: does not extend a group on its own, and does not close one.
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
closeGroup();
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
closeGroup();
|
|
156
|
+
// Only insert into groups of 2+ prepack lines (multi-line blocks, not standalone steps)
|
|
157
|
+
const insertAfter = groups.filter((g) => g.count > 1).map((g) => g.lastPrepackIdx);
|
|
158
|
+
if (insertAfter.length === 0)
|
|
159
|
+
return false;
|
|
160
|
+
for (const idx of insertAfter.reverse()) {
|
|
161
|
+
const newLine = lines[idx].replace(/lexicons\/[a-z0-9-]+/i, `lexicons/${name}`);
|
|
162
|
+
lines.splice(idx + 1, 0, newLine);
|
|
163
|
+
}
|
|
164
|
+
return true;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Insert a new prepack line after every last-in-group prepack line (groups of 1+).
|
|
168
|
+
* Used for publish.yml and Dockerfiles that list one RUN per lexicon.
|
|
169
|
+
*/
|
|
170
|
+
export function insertPrepackAfterEach(lines, name) {
|
|
171
|
+
if (hasPrepackLine(lines, name))
|
|
172
|
+
return false;
|
|
173
|
+
const insertAfter = [];
|
|
174
|
+
for (let i = 0; i < lines.length; i++) {
|
|
175
|
+
if (!isPrepackLine(lines[i]))
|
|
176
|
+
continue;
|
|
177
|
+
const nextIsAlsoPrepack = i + 1 < lines.length && isPrepackLine(lines[i + 1]);
|
|
178
|
+
if (!nextIsAlsoPrepack) {
|
|
179
|
+
insertAfter.push(i);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
if (insertAfter.length === 0)
|
|
183
|
+
return false;
|
|
184
|
+
for (const idx of insertAfter.reverse()) {
|
|
185
|
+
const newLine = lines[idx].replace(/lexicons\/[a-z0-9-]+/i, `lexicons/${name}`);
|
|
186
|
+
lines.splice(idx + 1, 0, newLine);
|
|
187
|
+
}
|
|
188
|
+
return true;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Patch chant.yml: add prepack lines in check/test multi-line `run: |` blocks,
|
|
192
|
+
* and add a new validate step.
|
|
193
|
+
*
|
|
194
|
+
* The file has two patterns:
|
|
195
|
+
* 1. Multi-line blocks (check + test jobs): `run: |\n npm run --prefix lexicons/aws prepack\n ...`
|
|
196
|
+
* 2. Standalone steps (validate job): `- name: Generate and validate ...\n run: npm run --prefix ...`
|
|
197
|
+
*
|
|
198
|
+
* We only insert into pattern 1 (contiguous groups) and separately add a new pattern 2 step.
|
|
199
|
+
*/
|
|
200
|
+
function patchCiWorkflow(root, name) {
|
|
201
|
+
const filePath = join(root, ".github/workflows/chant.yml");
|
|
202
|
+
if (!existsSync(filePath))
|
|
203
|
+
return { patched: false, reason: "chant.yml not found" };
|
|
204
|
+
const content = readFileSync(filePath, "utf-8");
|
|
205
|
+
const lines = content.split("\n");
|
|
206
|
+
if (hasPrepackLine(lines, name)) {
|
|
207
|
+
return { patched: false, reason: `${name} already in chant.yml` };
|
|
208
|
+
}
|
|
209
|
+
// 1. Insert into multi-line `run: |` blocks only (contiguous prepack groups of 2+).
|
|
210
|
+
// The validate job has standalone steps that are NOT contiguous, so they won't match.
|
|
211
|
+
let changed = insertPrepackInContiguousGroups(lines, name);
|
|
212
|
+
// 2. Add a named validate step after the last "Generate and validate" step
|
|
213
|
+
const displayName = name.charAt(0).toUpperCase() + name.slice(1);
|
|
214
|
+
const validateStepName = `Generate and validate ${displayName} lexicon`;
|
|
215
|
+
if (!lines.some((l) => l.includes(validateStepName))) {
|
|
216
|
+
let lastValidateRunIdx = -1;
|
|
217
|
+
for (let i = 0; i < lines.length; i++) {
|
|
218
|
+
if (lines[i].includes("Generate and validate")) {
|
|
219
|
+
if (i + 1 < lines.length && lines[i + 1].trimStart().startsWith("run:")) {
|
|
220
|
+
lastValidateRunIdx = i + 1;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
if (lastValidateRunIdx > 0) {
|
|
225
|
+
const block = [
|
|
226
|
+
"",
|
|
227
|
+
` - name: ${validateStepName}`,
|
|
228
|
+
` run: npm run --prefix lexicons/${name} prepack`,
|
|
229
|
+
];
|
|
230
|
+
lines.splice(lastValidateRunIdx + 1, 0, ...block);
|
|
231
|
+
changed = true;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
if (!changed)
|
|
235
|
+
return { patched: false, reason: "no prepack block found to anchor on" };
|
|
236
|
+
writeFileSync(filePath, lines.join("\n"));
|
|
237
|
+
return { patched: true };
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Patch publish.yml: add the prepack line to the test job.
|
|
241
|
+
*
|
|
242
|
+
* No publish step is added. scripts/publish-packages.sh enumerates every
|
|
243
|
+
* non-private workspace package at run time, so a new lexicon is published
|
|
244
|
+
* the moment it exists — that is deliberate. Hand-maintained publish steps
|
|
245
|
+
* were how k8s-client (#1177) and fountain (#1253) each shipped a package
|
|
246
|
+
* the release pipeline could not publish.
|
|
247
|
+
*/
|
|
248
|
+
function patchPublishWorkflow(root, name) {
|
|
249
|
+
const filePath = join(root, ".github/workflows/publish.yml");
|
|
250
|
+
if (!existsSync(filePath))
|
|
251
|
+
return { patched: false, reason: "publish.yml not found" };
|
|
252
|
+
const lines = readFileSync(filePath, "utf-8").split("\n");
|
|
253
|
+
if (hasPrepackLine(lines, name)) {
|
|
254
|
+
return { patched: false, reason: `prepack for ${name} already present` };
|
|
255
|
+
}
|
|
256
|
+
if (!insertPrepackAfterEach(lines, name)) {
|
|
257
|
+
// #3227 — not a failure and not "covered by a prepack line": publish.yml
|
|
258
|
+
// carries no per-lexicon lines. The run builds every lexicon through
|
|
259
|
+
// scripts/ci-lexicon-artifacts.sh and publishes through
|
|
260
|
+
// scripts/publish-packages.sh, both of which enumerate the workspace.
|
|
261
|
+
return {
|
|
262
|
+
patched: false,
|
|
263
|
+
reason: "nothing to patch: it has no per-lexicon prepack lines; scripts/ci-lexicon-artifacts.sh and scripts/publish-packages.sh enumerate the workspace",
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
writeFileSync(filePath, lines.join("\n"));
|
|
267
|
+
return { patched: true };
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Patch a smoke Dockerfile so it covers the lexicon.
|
|
271
|
+
*
|
|
272
|
+
* Two layouts exist. Loop-based files (`for lex in aws gcp ...; do`) get the
|
|
273
|
+
* name appended to every loop list. Per-lexicon files (`RUN npm run --prefix
|
|
274
|
+
* lexicons/<x> prepack` lines) get one more RUN line. A file that already
|
|
275
|
+
* covers the lexicon either way is reported as such and left untouched.
|
|
276
|
+
*/
|
|
277
|
+
export function patchDockerfile(filePath, name) {
|
|
278
|
+
if (!existsSync(filePath))
|
|
279
|
+
return { patched: false, reason: `${filePath} not found` };
|
|
280
|
+
const lines = readFileSync(filePath, "utf-8").split("\n");
|
|
281
|
+
if (loopCoversLexicon(lines, name) || hasPrepackLine(lines, name)) {
|
|
282
|
+
return { patched: false, reason: `already covers ${name}` };
|
|
283
|
+
}
|
|
284
|
+
const changed = addToLexiconLoops(lines, name) || insertPrepackAfterEach(lines, name);
|
|
285
|
+
if (!changed) {
|
|
286
|
+
// #3227 — the smoke-npm and smoke-e2e images read their lexicon list from
|
|
287
|
+
// a file. Point at it instead of reporting a missing anchor.
|
|
288
|
+
const listFile = lines.join("\n").match(/test\/(smoke-[\w-]+-lexicons\.txt)/)?.[1];
|
|
289
|
+
if (listFile) {
|
|
290
|
+
return { patched: false, reason: `reads its lexicon list from test/${listFile}, not from the Dockerfile` };
|
|
291
|
+
}
|
|
292
|
+
return { patched: false, reason: "no lexicon loop or prepack line found to anchor on" };
|
|
293
|
+
}
|
|
294
|
+
writeFileSync(filePath, lines.join("\n"));
|
|
295
|
+
return { patched: true };
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Append a lexicon to a one-name-per-line list file (test/smoke-npm-lexicons.txt).
|
|
299
|
+
* Idempotent; keeps the file's trailing newline.
|
|
300
|
+
*/
|
|
301
|
+
export function patchLexiconList(filePath, name) {
|
|
302
|
+
const rel = filePath.split("/").slice(-2).join("/");
|
|
303
|
+
if (!existsSync(filePath))
|
|
304
|
+
return { patched: false, reason: `${rel} not found` };
|
|
305
|
+
const content = readFileSync(filePath, "utf-8");
|
|
306
|
+
if (content.split("\n").some((l) => l.trim() === name)) {
|
|
307
|
+
return { patched: false, reason: `${name} already in ${rel}` };
|
|
308
|
+
}
|
|
309
|
+
const sep = content === "" || content.endsWith("\n") ? "" : "\n";
|
|
310
|
+
writeFileSync(filePath, `${content}${sep}${name}\n`);
|
|
311
|
+
return { patched: true };
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Execute the onboard command — patches monorepo infrastructure for a new lexicon.
|
|
315
|
+
*/
|
|
316
|
+
export function onboardCommand(options) {
|
|
317
|
+
// chant#2578 — onboard wires a lexicon package into the chant monorepo. A
|
|
318
|
+
// lexicon declared by path has no package, so there is nothing to wire and
|
|
319
|
+
// no install step to print; say where it loads from instead.
|
|
320
|
+
if (lexiconModulePath(options.name) !== undefined) {
|
|
321
|
+
return {
|
|
322
|
+
success: false,
|
|
323
|
+
patched: [],
|
|
324
|
+
skipped: [],
|
|
325
|
+
error: `lexicon "${options.name}" is declared by path in chant.config.ts and loads from ${lexiconSourceLabel(options.name)}. ` +
|
|
326
|
+
"onboard adds a lexicon package to the chant monorepo, and a lexicon loaded by path has no package to add.",
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
const root = options.root ?? findRepoRoot();
|
|
330
|
+
const patched = [];
|
|
331
|
+
const skipped = [];
|
|
332
|
+
const record = (label, summary, result) => {
|
|
333
|
+
if (result.patched)
|
|
334
|
+
patched.push(`${label} (${summary})`);
|
|
335
|
+
else
|
|
336
|
+
skipped.push(`${label}: ${result.reason}`);
|
|
337
|
+
};
|
|
338
|
+
// 1. Root package.json
|
|
339
|
+
record("package.json", "root dependency", patchRootPackageJson(root, options.name));
|
|
340
|
+
// 2. Root tsconfig.json paths (#1614)
|
|
341
|
+
record("tsconfig.json", "paths mapping", patchRootTsconfigPaths(root, options.name));
|
|
342
|
+
// 3. CI workflow
|
|
343
|
+
record("chant.yml", "prepack + validate", patchCiWorkflow(root, options.name));
|
|
344
|
+
// 4. Publish workflow
|
|
345
|
+
record("publish.yml", "prepack", patchPublishWorkflow(root, options.name));
|
|
346
|
+
// 5. Dockerfiles
|
|
347
|
+
record("Dockerfile.smoke", "lexicon list", patchDockerfile(join(root, "test/Dockerfile.smoke"), options.name));
|
|
348
|
+
record("Dockerfile.smoke-npm", "lexicon list", patchDockerfile(join(root, "test/Dockerfile.smoke-npm"), options.name));
|
|
349
|
+
// 6. Smoke image lexicon lists (#3227). The npm smoke packs every lexicon.
|
|
350
|
+
// The e2e list is opt-in: it names the lexicons an example uses plus
|
|
351
|
+
// their dependencies, so onboard leaves it alone and says so.
|
|
352
|
+
record("smoke-npm-lexicons.txt", "lexicon list", patchLexiconList(join(root, "test/smoke-npm-lexicons.txt"), options.name));
|
|
353
|
+
if (existsSync(join(root, "test/smoke-e2e-lexicons.txt"))) {
|
|
354
|
+
skipped.push(`smoke-e2e-lexicons.txt: not patched; it lists only lexicons an e2e example uses (and their dependencies). Add ${options.name} to test/smoke-e2e-lexicons.txt when an example needs it`);
|
|
355
|
+
}
|
|
356
|
+
return { success: true, patched, skipped, verbose: options.verbose };
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Print onboard results and remaining manual steps.
|
|
360
|
+
*/
|
|
361
|
+
export async function printOnboardResult(result, name) {
|
|
362
|
+
if (!result.success) {
|
|
363
|
+
console.error(formatError({ message: result.error ?? "onboard failed" }));
|
|
364
|
+
return;
|
|
365
|
+
}
|
|
366
|
+
if (result.patched.length > 0) {
|
|
367
|
+
console.log(formatSuccess("Patched:"));
|
|
368
|
+
for (const f of result.patched) {
|
|
369
|
+
console.log(` ${f}`);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
if (result.skipped.length > 0) {
|
|
373
|
+
console.log("");
|
|
374
|
+
console.log("Not patched (already covered, or nothing to patch):");
|
|
375
|
+
for (const s of result.skipped) {
|
|
376
|
+
console.log(` ${s}`);
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
console.log("");
|
|
380
|
+
console.log("Remaining manual steps:");
|
|
381
|
+
console.log(` 1. Create an example: lexicons/${name}/examples/<example-name>/`);
|
|
382
|
+
console.log(` (must depend on @intentius/chant-lexicon-${name} for workspace resolution)`);
|
|
383
|
+
console.log(` 2. Add smoke tests to test/integration.sh`);
|
|
384
|
+
console.log(` 3. Run: npm install (to update workspace links)`);
|
|
385
|
+
console.log(` 4. First release: just release-lexicon ${name} patch`);
|
|
386
|
+
console.log(` 5. Run: chant dev check-lexicon lexicons/${name} (to see completeness status)`);
|
|
387
|
+
console.log(formatWarning({
|
|
388
|
+
message: "First-time scoped packages may publish as private despite --access public",
|
|
389
|
+
}));
|
|
390
|
+
console.log(` Check https://www.npmjs.com/org/intentius and toggle visibility if needed`);
|
|
391
|
+
// Under --verbose, run check-lexicon now instead of leaving step 5 to the
|
|
392
|
+
// author, printing the full tier 1/2/3 detail rather than just the summary above.
|
|
393
|
+
if (result.verbose) {
|
|
394
|
+
const lexiconDir = join(findRepoRoot(), "lexicons", name);
|
|
395
|
+
if (existsSync(lexiconDir)) {
|
|
396
|
+
console.log("");
|
|
397
|
+
console.log("Lexicon completeness:");
|
|
398
|
+
const { checkLexicon, printCheckResult } = await import("./check-lexicon.js");
|
|
399
|
+
const checkResult = await checkLexicon(lexiconDir);
|
|
400
|
+
printCheckResult(checkResult, false);
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `chant dev pinned-upgrade <lexicon-dir>` command implementation.
|
|
3
|
+
*
|
|
4
|
+
* Detects whether a lexicon that declares `upstreamPin` has a
|
|
5
|
+
* newer stable upstream release. When it does, it dry-run bumps the pinned
|
|
6
|
+
* version constant, regenerates + surface-diffs (via #524's regenLexicon), then
|
|
7
|
+
* reverts the bump — leaving the working tree unchanged.
|
|
8
|
+
*
|
|
9
|
+
* This command only REPORTS. Branch/PR automation lives in #527.
|
|
10
|
+
*/
|
|
11
|
+
import { existsSync } from "fs";
|
|
12
|
+
import { resolve } from "path";
|
|
13
|
+
import { checkPinnedUpgrades, lexiconNameOf, } from "../../codegen/pinned-upgrade.js";
|
|
14
|
+
/**
|
|
15
|
+
* Infer the lexicon id from a directory: its package name
|
|
16
|
+
* (`@intentius/chant-lexicon-<name>`), else the directory name. Whether the
|
|
17
|
+
* lexicon is pinned is the plugin's `upstreamPin`, checked by
|
|
18
|
+
* `checkPinnedUpgrade`, not a list here.
|
|
19
|
+
*/
|
|
20
|
+
export function inferLexicon(lexiconDir) {
|
|
21
|
+
return lexiconNameOf(lexiconDir);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Map a regen severity to a semver review label.
|
|
25
|
+
* additive → "minor"; breaking → "major"; none → "none".
|
|
26
|
+
*/
|
|
27
|
+
export function semverLabel(result) {
|
|
28
|
+
const sev = result.validation?.severity;
|
|
29
|
+
if (sev === "breaking")
|
|
30
|
+
return "major";
|
|
31
|
+
if (sev === "additive")
|
|
32
|
+
return "minor";
|
|
33
|
+
return "none";
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Run the pinned-upgrade check and return the structured result.
|
|
37
|
+
* Never throws — a missing dir or a lexicon with no `upstreamPin` becomes a fetchError.
|
|
38
|
+
*/
|
|
39
|
+
export async function runPinnedUpgrade(opts) {
|
|
40
|
+
return (await runPinnedUpgrades(opts))[0];
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Run the check for every pin the plugin declares (or the one in `opts.pin`),
|
|
44
|
+
* one result each. A lexicon with one pin gives one result.
|
|
45
|
+
*/
|
|
46
|
+
export async function runPinnedUpgrades(opts) {
|
|
47
|
+
const dir = resolve(opts.lexiconDir);
|
|
48
|
+
const lexicon = opts.lexicon ?? inferLexicon(dir);
|
|
49
|
+
if (!existsSync(dir)) {
|
|
50
|
+
return [
|
|
51
|
+
{
|
|
52
|
+
lexicon,
|
|
53
|
+
hasUpgrade: false,
|
|
54
|
+
from: "(unknown)",
|
|
55
|
+
to: null,
|
|
56
|
+
validation: null,
|
|
57
|
+
fetchError: `Lexicon directory not found: ${dir}`,
|
|
58
|
+
},
|
|
59
|
+
];
|
|
60
|
+
}
|
|
61
|
+
return checkPinnedUpgrades({
|
|
62
|
+
lexiconDir: dir,
|
|
63
|
+
lexicon,
|
|
64
|
+
pin: opts.pin,
|
|
65
|
+
force: opts.force,
|
|
66
|
+
verbose: opts.verbose,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
// ── Human-readable output ─────────────────────────────────────────────
|
|
70
|
+
const COLORS = {
|
|
71
|
+
green: "\x1b[32m",
|
|
72
|
+
yellow: "\x1b[33m",
|
|
73
|
+
red: "\x1b[31m",
|
|
74
|
+
gray: "\x1b[90m",
|
|
75
|
+
bold: "\x1b[1m",
|
|
76
|
+
reset: "\x1b[0m",
|
|
77
|
+
};
|
|
78
|
+
function useColors() {
|
|
79
|
+
return !process.env.NO_COLOR && process.stdout.isTTY !== false;
|
|
80
|
+
}
|
|
81
|
+
function c(text, code) {
|
|
82
|
+
return useColors() ? `${code}${text}${COLORS.reset}` : text;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Print the pinned-upgrade result. `json` emits a machine-readable object.
|
|
86
|
+
*/
|
|
87
|
+
export function printPinnedUpgradeResult(result, json) {
|
|
88
|
+
const label = semverLabel(result);
|
|
89
|
+
const name = result.pin ? `${result.lexicon}/${result.pin}` : result.lexicon;
|
|
90
|
+
if (json) {
|
|
91
|
+
console.log(JSON.stringify({
|
|
92
|
+
lexicon: result.lexicon,
|
|
93
|
+
...(result.pin ? { pin: result.pin } : {}),
|
|
94
|
+
hasUpgrade: result.hasUpgrade,
|
|
95
|
+
from: result.from,
|
|
96
|
+
to: result.to,
|
|
97
|
+
semver: label,
|
|
98
|
+
severity: result.validation?.severity ?? "none",
|
|
99
|
+
changed: result.validation?.changed ?? false,
|
|
100
|
+
delta: result.validation?.delta ?? null,
|
|
101
|
+
validationOk: result.validation?.ok ?? null,
|
|
102
|
+
failures: result.validation?.failures ?? [],
|
|
103
|
+
fetchError: result.fetchError,
|
|
104
|
+
manualPin: result.manualPin ?? null,
|
|
105
|
+
}, null, 2));
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
if (result.fetchError) {
|
|
109
|
+
console.log(c(`[${name}] error: ${result.fetchError}`, COLORS.red));
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if (!result.hasUpgrade) {
|
|
113
|
+
console.log(c(`[${name}] up to date`, COLORS.green) +
|
|
114
|
+
` pinned=${result.from}` +
|
|
115
|
+
(result.to ? ` latest=${result.to}` : ""));
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
if (result.manualPin) {
|
|
119
|
+
console.log(c(`[${name}] upgrade available`, COLORS.bold) + ` ${result.from} -> ${result.to}`);
|
|
120
|
+
console.log(` The pin in ${result.manualPin.file} cannot be rewritten generically, so nothing was edited or regenerated.`);
|
|
121
|
+
console.log(` ${result.manualPin.instructions}`);
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
// Upgrade available
|
|
125
|
+
console.log(c(`[${name}] upgrade available`, COLORS.bold) +
|
|
126
|
+
` ${result.from} -> ${result.to}`);
|
|
127
|
+
const v = result.validation;
|
|
128
|
+
if (v) {
|
|
129
|
+
// Surface delta
|
|
130
|
+
if (v.deltaText) {
|
|
131
|
+
console.log("");
|
|
132
|
+
console.log(v.deltaText);
|
|
133
|
+
}
|
|
134
|
+
else if (v.changed) {
|
|
135
|
+
console.log(" Surface changed (no baseline to diff against).");
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
console.log(" No surface changes.");
|
|
139
|
+
}
|
|
140
|
+
// Failures
|
|
141
|
+
if (v.failures.length > 0) {
|
|
142
|
+
console.log("");
|
|
143
|
+
console.log(c(` ${v.failures.length} validation step(s) failed:`, COLORS.bold));
|
|
144
|
+
for (const f of v.failures) {
|
|
145
|
+
console.log(c(` FAIL [${f.step}]${f.exitCode !== undefined ? ` (exit ${f.exitCode})` : ""}`, COLORS.red));
|
|
146
|
+
if (f.output) {
|
|
147
|
+
const indented = f.output
|
|
148
|
+
.split("\n")
|
|
149
|
+
.map((l) => ` ${l}`)
|
|
150
|
+
.join("\n");
|
|
151
|
+
console.log(c(indented, COLORS.gray));
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
console.log("");
|
|
157
|
+
const labelColor = label === "major" ? COLORS.red : label === "minor" ? COLORS.yellow : COLORS.green;
|
|
158
|
+
const validationLabel = v
|
|
159
|
+
? v.ok
|
|
160
|
+
? c("ok", COLORS.green)
|
|
161
|
+
: c("FAILED", COLORS.red)
|
|
162
|
+
: c("skipped", COLORS.gray);
|
|
163
|
+
console.log(`Validation: ${validationLabel} Semver: ${c(label, labelColor)} ${result.from} -> ${result.to}`);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Print one result per pin. One result prints exactly as `printPinnedUpgradeResult`;
|
|
167
|
+
* several print in turn, and `json` emits an array of the same objects.
|
|
168
|
+
*/
|
|
169
|
+
export function printPinnedUpgradeResults(results, json) {
|
|
170
|
+
if (results.length === 1) {
|
|
171
|
+
printPinnedUpgradeResult(results[0], json);
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
if (json) {
|
|
175
|
+
// Each result prints as its own JSON object; collect them into one array.
|
|
176
|
+
const lines = [];
|
|
177
|
+
const log = console.log;
|
|
178
|
+
console.log = (...a) => void lines.push(a.join(" "));
|
|
179
|
+
try {
|
|
180
|
+
for (const r of results)
|
|
181
|
+
printPinnedUpgradeResult(r, true);
|
|
182
|
+
}
|
|
183
|
+
finally {
|
|
184
|
+
console.log = log;
|
|
185
|
+
}
|
|
186
|
+
console.log(`[${lines.join(",\n")}]`);
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
for (const r of results)
|
|
190
|
+
printPinnedUpgradeResult(r, false);
|
|
191
|
+
}
|