@intentius/chant 0.101.0 → 0.104.0
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/dist/agents/checks.d.ts.map +1 -1
- package/dist/attrref.d.ts.map +1 -1
- package/dist/audit/core.d.ts +2 -0
- package/dist/audit/core.d.ts.map +1 -1
- package/dist/audit/discover.d.ts.map +1 -1
- package/dist/audit/nginx.d.ts.map +1 -1
- package/dist/audit/prior-art.d.ts +48 -0
- package/dist/audit/prior-art.d.ts.map +1 -1
- package/dist/behaviour-kinds.d.ts.map +1 -1
- package/dist/builder.d.ts.map +1 -1
- package/dist/change-set.d.ts +232 -0
- package/dist/change-set.d.ts.map +1 -0
- package/dist/cli/commands/audit.d.ts +7 -0
- package/dist/cli/commands/audit.d.ts.map +1 -1
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/carve-emit.d.ts.map +1 -1
- package/dist/cli/commands/check-lexicon.d.ts +16 -0
- package/dist/cli/commands/check-lexicon.d.ts.map +1 -1
- package/dist/cli/commands/import.d.ts +8 -0
- package/dist/cli/commands/import.d.ts.map +1 -1
- package/dist/cli/commands/init-lexicon.d.ts.map +1 -1
- package/dist/cli/commands/init.d.ts +19 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/onboard.d.ts +9 -0
- package/dist/cli/commands/onboard.d.ts.map +1 -1
- package/dist/cli/commands/pinned-upgrade.d.ts +19 -5
- package/dist/cli/commands/pinned-upgrade.d.ts.map +1 -1
- package/dist/cli/handlers/build.d.ts.map +1 -1
- package/dist/cli/handlers/change-set.d.ts +11 -0
- package/dist/cli/handlers/change-set.d.ts.map +1 -0
- package/dist/cli/handlers/dev.d.ts.map +1 -1
- package/dist/cli/handlers/fan-out.d.ts +33 -0
- package/dist/cli/handlers/fan-out.d.ts.map +1 -1
- package/dist/cli/handlers/lifecycle.d.ts.map +1 -1
- package/dist/cli/handlers/misc.d.ts.map +1 -1
- package/dist/cli/handlers/operator.d.ts +16 -0
- package/dist/cli/handlers/operator.d.ts.map +1 -1
- package/dist/cli/handlers/pr.d.ts +31 -0
- package/dist/cli/handlers/pr.d.ts.map +1 -0
- package/dist/cli/handlers/run.d.ts.map +1 -1
- package/dist/cli/lsp/server.d.ts.map +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/mcp/op-tools.d.ts.map +1 -1
- package/dist/cli/mcp/server.d.ts.map +1 -1
- package/dist/cli/mcp/tools/build.d.ts.map +1 -1
- package/dist/cli/mcp/tools/composites.d.ts.map +1 -1
- package/dist/cli/mcp/tools/explain.d.ts.map +1 -1
- package/dist/cli/mcp/tools/import.d.ts.map +1 -1
- package/dist/cli/mcp/tools/lint.d.ts.map +1 -1
- package/dist/cli/mcp/tools/scaffold.d.ts.map +1 -1
- package/dist/cli/mcp/tools/search.d.ts.map +1 -1
- package/dist/cli/mcp/workspace-tools.d.ts +4 -3
- package/dist/cli/mcp/workspace-tools.d.ts.map +1 -1
- package/dist/cli/registry.d.ts +74 -3
- package/dist/cli/registry.d.ts.map +1 -1
- package/dist/codegen/fetch.d.ts.map +1 -1
- package/dist/codegen/naming.d.ts.map +1 -1
- package/dist/codegen/pinned-upgrade.d.ts +67 -3
- package/dist/codegen/pinned-upgrade.d.ts.map +1 -1
- package/dist/codegen/registry.d.ts.map +1 -1
- package/dist/components/auto-release.d.ts +16 -0
- package/dist/components/auto-release.d.ts.map +1 -1
- package/dist/components/capability-plugin-loader.d.ts.map +1 -1
- package/dist/components/capability.d.ts +53 -0
- package/dist/components/capability.d.ts.map +1 -1
- package/dist/components/changed-files.d.ts +31 -0
- package/dist/components/changed-files.d.ts.map +1 -0
- package/dist/components/cli-support.d.ts +9 -1
- package/dist/components/cli-support.d.ts.map +1 -1
- package/dist/components/component.d.ts +24 -0
- package/dist/components/component.d.ts.map +1 -1
- package/dist/components/deploy-units.d.ts.map +1 -1
- package/dist/components/driver.d.ts +13 -0
- package/dist/components/driver.d.ts.map +1 -1
- package/dist/components/fan-out-output.d.ts +6 -0
- package/dist/components/fan-out-output.d.ts.map +1 -1
- package/dist/components/fan-out-record.d.ts +41 -0
- package/dist/components/fan-out-record.d.ts.map +1 -0
- package/dist/components/fan-out-run.d.ts +65 -0
- package/dist/components/fan-out-run.d.ts.map +1 -1
- package/dist/components/fan-out-support.d.ts +2 -0
- package/dist/components/fan-out-support.d.ts.map +1 -1
- package/dist/components/fan-out.d.ts +6 -0
- package/dist/components/fan-out.d.ts.map +1 -1
- package/dist/components/gated-wave-pipeline.d.ts +50 -0
- package/dist/components/gated-wave-pipeline.d.ts.map +1 -0
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/layers.d.ts +25 -0
- package/dist/components/layers.d.ts.map +1 -0
- package/dist/components/pr-pipeline.d.ts +61 -0
- package/dist/components/pr-pipeline.d.ts.map +1 -0
- package/dist/components/pr-run.d.ts +119 -0
- package/dist/components/pr-run.d.ts.map +1 -0
- package/dist/components/promote.d.ts.map +1 -1
- package/dist/components/starter-plugin.d.ts.map +1 -1
- package/dist/components/verbs/process-runner.d.ts.map +1 -1
- package/dist/components/verbs/r2-sync.d.ts.map +1 -1
- package/dist/components/verbs/run-agent.d.ts.map +1 -1
- package/dist/components/verbs/sbom-generator.d.ts.map +1 -1
- package/dist/components/verbs/shell.d.ts.map +1 -1
- package/dist/components/verbs/sign.d.ts.map +1 -1
- package/dist/components/verbs/verify.d.ts.map +1 -1
- package/dist/components/verbs/vuln-gate.d.ts.map +1 -1
- package/dist/components/verbs/vuln-scan.d.ts.map +1 -1
- package/dist/components/verbs/wrangler.d.ts.map +1 -1
- package/dist/components/wave-plan.d.ts +49 -0
- package/dist/components/wave-plan.d.ts.map +1 -0
- package/dist/composite.d.ts.map +1 -1
- package/dist/config.d.ts +19 -7
- package/dist/config.d.ts.map +1 -1
- package/dist/declarable.d.ts +16 -0
- package/dist/declarable.d.ts.map +1 -1
- package/dist/discovery/cache.d.ts.map +1 -1
- package/dist/discovery/fold-import.d.ts +15 -5
- package/dist/discovery/fold-import.d.ts.map +1 -1
- package/dist/discovery/param-deps.d.ts +16 -0
- package/dist/discovery/param-deps.d.ts.map +1 -1
- package/dist/discovery/sandbox/policy-wire.d.ts.map +1 -1
- package/dist/discovery/specifier-resolve.d.ts +37 -0
- package/dist/discovery/specifier-resolve.d.ts.map +1 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/fold/fold.d.ts +3 -1
- package/dist/fold/fold.d.ts.map +1 -1
- package/dist/gated-waves.d.ts +147 -0
- package/dist/gated-waves.d.ts.map +1 -0
- package/dist/graph-detail.d.ts.map +1 -1
- package/dist/graph-ir.d.ts.map +1 -1
- package/dist/graph-layout.d.ts.map +1 -1
- package/dist/import/base-parser.d.ts.map +1 -1
- package/dist/import/embedded.d.ts +7 -0
- package/dist/import/embedded.d.ts.map +1 -1
- package/dist/import/parser-options.d.ts +14 -0
- package/dist/import/parser-options.d.ts.map +1 -0
- package/dist/import/parser.d.ts +17 -0
- package/dist/import/parser.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/kubectl-context.d.ts.map +1 -1
- package/dist/lexicon-output.d.ts.map +1 -1
- package/dist/lexicon-schema.d.ts +3 -3
- package/dist/lexicon.d.ts +103 -3
- package/dist/lexicon.d.ts.map +1 -1
- package/dist/lifecycle/assert-live.d.ts.map +1 -1
- package/dist/lifecycle/gate-ledger.d.ts +22 -0
- package/dist/lifecycle/gate-ledger.d.ts.map +1 -1
- package/dist/lifecycle/git.d.ts +46 -1
- package/dist/lifecycle/git.d.ts.map +1 -1
- package/dist/lifecycle/member-ledger.d.ts.map +1 -1
- package/dist/lifecycle/observe.d.ts.map +1 -1
- package/dist/lifecycle/plan-ledger.d.ts.map +1 -1
- package/dist/lifecycle/release-ledger.d.ts.map +1 -1
- package/dist/lifecycle/scenario.d.ts.map +1 -1
- package/dist/lifecycle/status.d.ts.map +1 -1
- package/dist/lifecycle/work-lease.d.ts +61 -2
- package/dist/lifecycle/work-lease.d.ts.map +1 -1
- package/dist/lint/config.d.ts +8 -8
- package/dist/lint/engine.d.ts +6 -0
- package/dist/lint/engine.d.ts.map +1 -1
- package/dist/lint/post-synth.d.ts +18 -0
- package/dist/lint/post-synth.d.ts.map +1 -1
- package/dist/lsp/lexicon-providers.d.ts.map +1 -1
- package/dist/op/activities/activity-contracts.d.ts +137 -11
- package/dist/op/activities/activity-contracts.d.ts.map +1 -1
- package/dist/op/activities/apply.d.ts +79 -9
- package/dist/op/activities/apply.d.ts.map +1 -1
- package/dist/op/activities/change-set.d.ts +62 -0
- package/dist/op/activities/change-set.d.ts.map +1 -0
- package/dist/op/activities/decide.d.ts +2 -0
- package/dist/op/activities/decide.d.ts.map +1 -1
- package/dist/op/activities/factory.d.ts +137 -0
- package/dist/op/activities/factory.d.ts.map +1 -0
- package/dist/op/activities/index.d.ts +5 -1
- package/dist/op/activities/index.d.ts.map +1 -1
- package/dist/op/activities/lexicon-upgrade.d.ts +44 -12
- package/dist/op/activities/lexicon-upgrade.d.ts.map +1 -1
- package/dist/op/activity-contract.d.ts +1 -1
- package/dist/op/activity-contract.d.ts.map +1 -1
- package/dist/op/activity-failure.d.ts.map +1 -1
- package/dist/op/activity-profiles.d.ts.map +1 -1
- package/dist/op/builders.d.ts +11 -0
- package/dist/op/builders.d.ts.map +1 -1
- package/dist/op/composites/apply-op.d.ts +12 -5
- package/dist/op/composites/apply-op.d.ts.map +1 -1
- package/dist/op/composites/lexicon-upgrade-op.d.ts +22 -6
- package/dist/op/composites/lexicon-upgrade-op.d.ts.map +1 -1
- package/dist/op/decide-backend.d.ts +5 -1
- package/dist/op/decide-backend.d.ts.map +1 -1
- package/dist/op/decide-read-inputs.d.ts +4 -2
- package/dist/op/decide-read-inputs.d.ts.map +1 -1
- package/dist/op/emulator-lifecycle.d.ts +21 -2
- package/dist/op/emulator-lifecycle.d.ts.map +1 -1
- package/dist/op/factory.d.ts +83 -0
- package/dist/op/factory.d.ts.map +1 -0
- package/dist/op/gate-approval.d.ts +5 -1
- package/dist/op/gate-approval.d.ts.map +1 -1
- package/dist/op/gate-wait.d.ts.map +1 -1
- package/dist/op/gate.d.ts +19 -3
- package/dist/op/gate.d.ts.map +1 -1
- package/dist/op/index.d.ts +6 -1
- package/dist/op/index.d.ts.map +1 -1
- package/dist/op/local-executor.d.ts +6 -0
- package/dist/op/local-executor.d.ts.map +1 -1
- package/dist/op/op-ir.d.ts +2 -0
- package/dist/op/op-ir.d.ts.map +1 -1
- package/dist/op/op-verb-class.d.ts.map +1 -1
- package/dist/op/operator.d.ts.map +1 -1
- package/dist/op/run-context.d.ts +39 -0
- package/dist/op/run-context.d.ts.map +1 -0
- package/dist/op/run-live.d.ts.map +1 -1
- package/dist/op/runtimes/local.d.ts.map +1 -1
- package/dist/op/source-archive.d.ts.map +1 -1
- package/dist/op/steward-beside.d.ts.map +1 -1
- package/dist/op/steward-points.d.ts.map +1 -1
- package/dist/op/steward.d.ts.map +1 -1
- package/dist/op/types.d.ts +16 -3
- package/dist/op/types.d.ts.map +1 -1
- package/dist/op/work-lease-run.d.ts +24 -4
- package/dist/op/work-lease-run.d.ts.map +1 -1
- package/dist/plan-summary.d.ts +207 -0
- package/dist/plan-summary.d.ts.map +1 -0
- package/dist/pr-forge.d.ts +105 -0
- package/dist/pr-forge.d.ts.map +1 -0
- package/dist/pr-loop.d.ts +178 -0
- package/dist/pr-loop.d.ts.map +1 -0
- package/dist/project-root.d.ts.map +1 -1
- package/dist/provenance.d.ts +21 -0
- package/dist/provenance.d.ts.map +1 -1
- package/dist/pseudo-parameter.d.ts.map +1 -1
- package/dist/reconcile.d.ts.map +1 -1
- package/dist/secret-materialization.d.ts.map +1 -1
- package/dist/telemetry-attribution.d.ts +31 -0
- package/dist/telemetry-attribution.d.ts.map +1 -1
- package/dist/terraform/emit-source.d.ts.map +1 -1
- package/dist/terraform/hcl2json.d.ts +45 -0
- package/dist/terraform/hcl2json.d.ts.map +1 -0
- package/dist/terraform/parse.d.ts +4 -40
- package/dist/terraform/parse.d.ts.map +1 -1
- package/dist/testing.d.ts.map +1 -1
- package/dist/workspace/__fixtures__/contract-repo.d.ts.map +1 -1
- package/dist/workspace/__fixtures__/decide-workspace.d.ts +1 -1
- package/dist/workspace/__fixtures__/decide-workspace.d.ts.map +1 -1
- package/dist/workspace/agent-cli.d.ts +5 -0
- package/dist/workspace/agent-cli.d.ts.map +1 -1
- package/dist/workspace/box-cli.d.ts +12 -0
- package/dist/workspace/box-cli.d.ts.map +1 -0
- package/dist/workspace/box-factory.d.ts +97 -0
- package/dist/workspace/box-factory.d.ts.map +1 -0
- package/dist/workspace/box-listing.d.ts +85 -0
- package/dist/workspace/box-listing.d.ts.map +1 -0
- package/dist/workspace/box-publish.d.ts +147 -0
- package/dist/workspace/box-publish.d.ts.map +1 -0
- package/dist/workspace/broker-protocol.d.ts +190 -0
- package/dist/workspace/broker-protocol.d.ts.map +1 -0
- package/dist/workspace/changes.d.ts.map +1 -1
- package/dist/workspace/chant-migrations/chud-lexicon-exit.d.ts.map +1 -1
- package/dist/workspace/checks/boxes.d.ts.map +1 -1
- package/dist/workspace/checks.d.ts +5 -0
- package/dist/workspace/checks.d.ts.map +1 -1
- package/dist/workspace/compose-graph.d.ts +10 -0
- package/dist/workspace/compose-graph.d.ts.map +1 -1
- package/dist/workspace/composites.d.ts +2 -2
- package/dist/workspace/composites.d.ts.map +1 -1
- package/dist/workspace/conformance/__fixtures__/reference-broker.d.ts +17 -0
- package/dist/workspace/conformance/__fixtures__/reference-broker.d.ts.map +1 -0
- package/dist/workspace/conformance/broker.d.ts +202 -0
- package/dist/workspace/conformance/broker.d.ts.map +1 -0
- package/dist/workspace/conformance/index.d.ts +68 -6
- package/dist/workspace/conformance/index.d.ts.map +1 -1
- package/dist/workspace/conformance/vitest.d.ts +19 -3
- package/dist/workspace/conformance/vitest.d.ts.map +1 -1
- package/dist/workspace/conformance/writer.d.ts +462 -0
- package/dist/workspace/conformance/writer.d.ts.map +1 -0
- package/dist/workspace/decide.d.ts +126 -12
- package/dist/workspace/decide.d.ts.map +1 -1
- package/dist/workspace/decision-points.schema.json +11 -4
- package/dist/workspace/declaration.d.ts +156 -4
- package/dist/workspace/declaration.d.ts.map +1 -1
- package/dist/workspace/declaration.schema.json +383 -5
- package/dist/workspace/environments.d.ts +36 -10
- package/dist/workspace/environments.d.ts.map +1 -1
- package/dist/workspace/factory-rules.d.ts +180 -0
- package/dist/workspace/factory-rules.d.ts.map +1 -0
- package/dist/workspace/generated-files.d.ts.map +1 -1
- package/dist/workspace/graph-cache.d.ts.map +1 -1
- package/dist/workspace/graph-cli.d.ts +2 -0
- package/dist/workspace/graph-cli.d.ts.map +1 -1
- package/dist/workspace/identity.d.ts +111 -0
- package/dist/workspace/identity.d.ts.map +1 -0
- package/dist/workspace/init.d.ts +21 -0
- package/dist/workspace/init.d.ts.map +1 -1
- package/dist/workspace/intent-cli.d.ts +7 -4
- package/dist/workspace/intent-cli.d.ts.map +1 -1
- package/dist/workspace/intent-record.d.ts +36 -2
- package/dist/workspace/intent-record.d.ts.map +1 -1
- package/dist/workspace/intent.d.ts +249 -8
- package/dist/workspace/intent.d.ts.map +1 -1
- package/dist/workspace/json-edit.d.ts +24 -0
- package/dist/workspace/json-edit.d.ts.map +1 -0
- package/dist/workspace/jsonc.d.ts +11 -0
- package/dist/workspace/jsonc.d.ts.map +1 -1
- package/dist/workspace/kinds.d.ts +66 -4
- package/dist/workspace/kinds.d.ts.map +1 -1
- package/dist/workspace/lexicon-symbols.d.ts +29 -0
- package/dist/workspace/lexicon-symbols.d.ts.map +1 -0
- package/dist/workspace/lineage-hash-index.d.ts.map +1 -1
- package/dist/workspace/lineage-lock.d.ts +2 -2
- package/dist/workspace/lineage-lock.d.ts.map +1 -1
- package/dist/workspace/lineage-upgrade.d.ts +31 -2
- package/dist/workspace/lineage-upgrade.d.ts.map +1 -1
- package/dist/workspace/links.d.ts.map +1 -1
- package/dist/workspace/point-answer.schema.json +42 -2
- package/dist/workspace/points-cli.d.ts +10 -3
- package/dist/workspace/points-cli.d.ts.map +1 -1
- package/dist/workspace/points.d.ts +66 -5
- package/dist/workspace/points.d.ts.map +1 -1
- package/dist/workspace/principal-classes.d.ts +114 -0
- package/dist/workspace/principal-classes.d.ts.map +1 -0
- package/dist/workspace/reason-codes.d.ts +53 -4
- package/dist/workspace/reason-codes.d.ts.map +1 -1
- package/dist/workspace/record-assets.d.ts.map +1 -1
- package/dist/workspace/record-sessions.d.ts +5 -7
- package/dist/workspace/record-sessions.d.ts.map +1 -1
- package/dist/workspace/records-checkout.d.ts +54 -0
- package/dist/workspace/records-checkout.d.ts.map +1 -0
- package/dist/workspace/records-cli.d.ts +34 -1
- package/dist/workspace/records-cli.d.ts.map +1 -1
- package/dist/workspace/records-close.d.ts +7 -3
- package/dist/workspace/records-close.d.ts.map +1 -1
- package/dist/workspace/records-since.d.ts.map +1 -1
- package/dist/workspace/records-write.d.ts +68 -7
- package/dist/workspace/records-write.d.ts.map +1 -1
- package/dist/workspace/records.d.ts +43 -9
- package/dist/workspace/records.d.ts.map +1 -1
- package/dist/workspace/runs-cli.d.ts +296 -0
- package/dist/workspace/runs-cli.d.ts.map +1 -0
- package/dist/workspace/runs.d.ts +544 -0
- package/dist/workspace/runs.d.ts.map +1 -0
- package/dist/workspace/session-kinds.d.ts +1 -1
- package/dist/workspace/session-kinds.d.ts.map +1 -1
- package/dist/workspace/source-block.d.ts +1 -1
- package/dist/workspace/source-block.d.ts.map +1 -1
- package/dist/workspace/squash.d.ts +80 -0
- package/dist/workspace/squash.d.ts.map +1 -0
- package/dist/workspace/status-gates.d.ts +17 -3
- package/dist/workspace/status-gates.d.ts.map +1 -1
- package/dist/workspace/status.d.ts +64 -0
- package/dist/workspace/status.d.ts.map +1 -1
- package/dist/workspace/symbols.d.ts +63 -0
- package/dist/workspace/symbols.d.ts.map +1 -0
- package/dist/workspace/trailer-joins.d.ts +46 -0
- package/dist/workspace/trailer-joins.d.ts.map +1 -0
- package/dist/workspace/trailers.d.ts +89 -0
- package/dist/workspace/trailers.d.ts.map +1 -0
- package/dist/workspace/trust/attestor.d.ts.map +1 -1
- package/dist/workspace/trust/rotation.d.ts.map +1 -1
- package/dist/workspace/trust/run-commits.d.ts +46 -0
- package/dist/workspace/trust/run-commits.d.ts.map +1 -0
- package/dist/workspace/trust/run-statement.d.ts +128 -0
- package/dist/workspace/trust/run-statement.d.ts.map +1 -0
- package/dist/workspace/trust/seal.d.ts +38 -0
- package/dist/workspace/trust/seal.d.ts.map +1 -1
- package/dist/workspace/trust/test-repo.d.ts.map +1 -1
- package/dist/workspace/trust/verify-cli.d.ts +1 -1
- package/dist/workspace/trust/verify.d.ts +16 -2
- package/dist/workspace/trust/verify.d.ts.map +1 -1
- package/dist/workspace/wip-cli.d.ts +21 -0
- package/dist/workspace/wip-cli.d.ts.map +1 -0
- package/dist/workspace/wip.d.ts +268 -0
- package/dist/workspace/wip.d.ts.map +1 -0
- package/dist/workspace/work-cli.d.ts +39 -3
- package/dist/workspace/work-cli.d.ts.map +1 -1
- package/dist/workspace/work-evidence.d.ts +1 -1
- package/dist/workspace/work-evidence.d.ts.map +1 -1
- package/dist/workspace/work-size.d.ts +55 -0
- package/dist/workspace/work-size.d.ts.map +1 -0
- package/dist/workspace/work.d.ts +26 -1
- package/dist/workspace/work.d.ts.map +1 -1
- package/dist/workspace/workspace-kinds.schema.json +122 -0
- package/dist/workspace/workspace-principals.schema.json +60 -0
- package/dist/workspace/write-lock-cli.d.ts +60 -0
- package/dist/workspace/write-lock-cli.d.ts.map +1 -0
- package/dist/workspace/write-lock.d.ts +152 -0
- package/dist/workspace/write-lock.d.ts.map +1 -0
- package/dist/workspace/write-scope.d.ts +83 -19
- package/dist/workspace/write-scope.d.ts.map +1 -1
- package/dist/yaml.d.ts +21 -39
- package/dist/yaml.d.ts.map +1 -1
- package/package.json +7 -2
- package/src/__fixtures__/change-set/lifecycle-plan.floci.json +59 -0
- package/src/__fixtures__/change-set/lifecycle-v1.ts.txt +4 -0
- package/src/__fixtures__/change-set/lifecycle-v2.ts.txt +4 -0
- package/src/__fixtures__/change-set/lifecycle.change-set.golden.json +95 -0
- package/src/__fixtures__/change-set/warden.change-set.golden.json +106 -0
- package/src/__fixtures__/change-set/warden.plan.json +44 -0
- package/src/__fixtures__/plan-summary/normalization-vectors.json +1593 -0
- package/src/__fixtures__/pr-loop/pr-apply-applied.note.golden.md +31 -0
- package/src/__fixtures__/pr-loop/pr-apply-refused.note.golden.md +31 -0
- package/src/__fixtures__/pr-loop/pr-plan.golden.json +127 -0
- package/src/__fixtures__/pr-loop/pr-plan.note.golden.md +37 -0
- package/src/audit/core.test.ts +15 -0
- package/src/audit/core.ts +8 -2
- package/src/audit/discover.test.ts +11 -0
- package/src/audit/discover.ts +7 -2
- package/src/audit/prior-art.ts +15 -0
- package/src/change-set-bundle.test.ts +57 -0
- package/src/change-set.test.ts +215 -0
- package/src/change-set.ts +445 -0
- package/src/cli/commands/__fixtures__/init-lexicon-output/package.json +1 -1
- package/src/cli/commands/audit-opt-in.test.ts +54 -0
- package/src/cli/commands/audit.ts +29 -2
- package/src/cli/commands/build.test.ts +19 -0
- package/src/cli/commands/build.ts +3 -2
- package/src/cli/commands/carve-emit-state.test.ts +4 -0
- package/src/cli/commands/carve-emit.ts +5 -19
- package/src/cli/commands/check-lexicon.test.ts +62 -1
- package/src/cli/commands/check-lexicon.ts +36 -6
- package/src/cli/commands/import-live.test.ts +18 -0
- package/src/cli/commands/import-parser-options.test.ts +133 -0
- package/src/cli/commands/import.ts +21 -3
- package/src/cli/commands/init-lexicon/templates/project.ts +1 -1
- package/src/cli/commands/init.test.ts +8 -1
- package/src/cli/commands/init.ts +23 -8
- package/src/cli/commands/lint.test.ts +37 -0
- package/src/cli/commands/onboard.test.ts +53 -3
- package/src/cli/commands/onboard.ts +52 -4
- package/src/cli/commands/pinned-upgrade.ts +73 -33
- package/src/cli/handlers/__snapshots__/build-member.test.ts.snap +2 -2
- package/src/cli/handlers/build.ts +13 -1
- package/src/cli/handlers/change-set.test.ts +56 -0
- package/src/cli/handlers/change-set.ts +44 -0
- package/src/cli/handlers/components.ts +2 -2
- package/src/cli/handlers/dev.ts +8 -6
- package/src/cli/handlers/fan-out.test.ts +221 -2
- package/src/cli/handlers/fan-out.ts +165 -75
- package/src/cli/handlers/graph.ts +3 -0
- package/src/cli/handlers/lifecycle.test.ts +67 -0
- package/src/cli/handlers/lifecycle.ts +6 -5
- package/src/cli/handlers/misc.ts +2 -0
- package/src/cli/handlers/operator.test.ts +21 -0
- package/src/cli/handlers/operator.ts +121 -6
- package/src/cli/handlers/pr.ts +373 -0
- package/src/cli/handlers/run.test.ts +111 -0
- package/src/cli/handlers/run.ts +86 -24
- package/src/cli/handlers/scenario.ts +2 -2
- package/src/cli/main.test.ts +21 -0
- package/src/cli/main.ts +246 -30
- package/src/cli/mcp/never-over-mcp.test.ts +101 -0
- package/src/cli/mcp/op-tools.ts +24 -2
- package/src/cli/mcp/workspace-tools.test.ts +5 -2
- package/src/cli/mcp/workspace-tools.ts +62 -7
- package/src/cli/registry.ts +74 -3
- package/src/codegen/pinned-upgrade-multi.test.ts +157 -0
- package/src/codegen/pinned-upgrade-tags.test.ts +112 -0
- package/src/codegen/pinned-upgrade.test.ts +104 -0
- package/src/codegen/pinned-upgrade.ts +250 -56
- package/src/codegen/testdata/postgres-tags.json +242 -0
- package/src/components/auto-release.ts +1 -1
- package/src/components/capability.ts +55 -0
- package/src/components/changed-files.ts +66 -0
- package/src/components/cli-support.ts +28 -5
- package/src/components/component.schema.json +17 -0
- package/src/components/component.ts +25 -0
- package/src/components/deploy-units.ts +3 -0
- package/src/components/driver.test.ts +52 -0
- package/src/components/driver.ts +31 -13
- package/src/components/fan-out-output.ts +42 -1
- package/src/components/fan-out-record.ts +69 -0
- package/src/components/fan-out-run.test.ts +17 -0
- package/src/components/fan-out-run.ts +304 -1
- package/src/components/fan-out-support.ts +3 -0
- package/src/components/fan-out-waves.test.ts +375 -0
- package/src/components/fan-out.ts +18 -17
- package/src/components/gated-wave-pipeline.ts +82 -0
- package/src/components/index.ts +1 -0
- package/src/components/layers.ts +30 -0
- package/src/components/pr-pipeline.ts +91 -0
- package/src/components/pr-run.test.ts +205 -0
- package/src/components/pr-run.ts +280 -0
- package/src/components/promote.ts +5 -0
- package/src/components/verbs/shell.test.ts +11 -0
- package/src/components/verbs/shell.ts +7 -3
- package/src/components/wave-plan.ts +124 -0
- package/src/config.test.ts +21 -0
- package/src/config.ts +15 -0
- package/src/declarable.test.ts +21 -0
- package/src/declarable.ts +19 -0
- package/src/discovery/fold-composite.test.ts +41 -5
- package/src/discovery/fold-import.test.ts +129 -0
- package/src/discovery/fold-import.ts +643 -131
- package/src/discovery/fold-package-composite.test.ts +264 -0
- package/src/discovery/fold-specifiers.test.ts +191 -0
- package/src/discovery/param-deps.test.ts +66 -1
- package/src/discovery/param-deps.ts +45 -0
- package/src/discovery/sandbox/bundle.ts +1 -1
- package/src/discovery/specifier-resolve.ts +344 -0
- package/src/fold/fold.test.ts +39 -1
- package/src/fold/fold.ts +83 -9
- package/src/fold-provenance.test.ts +140 -0
- package/src/gated-waves-bundle.test.ts +62 -0
- package/src/gated-waves.test.ts +118 -0
- package/src/gated-waves.ts +240 -0
- package/src/graph-ir.test.ts +83 -0
- package/src/graph-ir.ts +29 -0
- package/src/import/embedded.test.ts +20 -0
- package/src/import/embedded.ts +13 -0
- package/src/import/parser-options.ts +46 -0
- package/src/import/parser.ts +20 -0
- package/src/index.ts +1 -0
- package/src/lexicon.ts +106 -3
- package/src/lifecycle/gate-ledger.ts +23 -0
- package/src/lifecycle/git.ts +102 -16
- package/src/lifecycle/observe.test.ts +18 -0
- package/src/lifecycle/observe.ts +6 -4
- package/src/lifecycle/snapshot.ts +2 -2
- package/src/lifecycle/work-lease.test.ts +1 -1
- package/src/lifecycle/work-lease.ts +93 -2
- package/src/lint/engine.test.ts +55 -0
- package/src/lint/engine.ts +30 -4
- package/src/lint/output-docs.test.ts +59 -56
- package/src/lint/post-synth.test.ts +19 -0
- package/src/lint/post-synth.ts +19 -1
- package/src/meta/declared-imports.test.ts +1 -1
- package/src/op/activities/activity-contracts.ts +84 -0
- package/src/op/activities/apply.test.ts +189 -5
- package/src/op/activities/apply.ts +230 -8
- package/src/op/activities/change-set.ts +114 -0
- package/src/op/activities/decide.ts +3 -0
- package/src/op/activities/factory.ts +675 -0
- package/src/op/activities/index.ts +9 -0
- package/src/op/activities/lexicon-upgrade.test.ts +160 -6
- package/src/op/activities/lexicon-upgrade.ts +154 -51
- package/src/op/activity-contract.test.ts +21 -1
- package/src/op/activity-contract.ts +19 -9
- package/src/op/builders.ts +23 -0
- package/src/op/composites/apply-op.ts +12 -5
- package/src/op/composites/composites.test.ts +30 -3
- package/src/op/composites/lexicon-upgrade-op.test.ts +7 -2
- package/src/op/composites/lexicon-upgrade-op.ts +29 -8
- package/src/op/decide-backend.ts +5 -1
- package/src/op/decide-read-inputs.ts +33 -5
- package/src/op/emulator-lifecycle.test.ts +23 -0
- package/src/op/emulator-lifecycle.ts +52 -14
- package/src/op/factory.e2e.test.ts +232 -0
- package/src/op/factory.ts +118 -0
- package/src/op/gate-approval.test.ts +74 -0
- package/src/op/gate-approval.ts +5 -1
- package/src/op/gate.ts +31 -5
- package/src/op/index.ts +11 -1
- package/src/op/local-executor.test.ts +15 -0
- package/src/op/local-executor.ts +40 -12
- package/src/op/local-output.ts +1 -1
- package/src/op/op-ir.test.ts +9 -0
- package/src/op/op-ir.ts +4 -0
- package/src/op/op-verb-class.ts +3 -0
- package/src/op/operator.ts +4 -0
- package/src/op/run-context.test.ts +141 -0
- package/src/op/run-context.ts +51 -0
- package/src/op/runtimes/local.test.ts +14 -0
- package/src/op/runtimes/local.ts +2 -0
- package/src/op/steward-beside.ts +2 -0
- package/src/op/types.ts +16 -3
- package/src/op/work-lease-run.test.ts +47 -0
- package/src/op/work-lease-run.ts +76 -11
- package/src/plan-summary.test.ts +263 -0
- package/src/plan-summary.ts +845 -0
- package/src/pr-forge.test.ts +237 -0
- package/src/pr-forge.ts +332 -0
- package/src/pr-loop-bundle.test.ts +46 -0
- package/src/pr-loop.test.ts +171 -0
- package/src/pr-loop.ts +324 -0
- package/src/provenance.ts +35 -0
- package/src/telemetry-attribution.test.ts +23 -1
- package/src/telemetry-attribution.ts +51 -0
- package/src/terraform/hcl2json.test.ts +21 -0
- package/src/terraform/hcl2json.ts +81 -0
- package/src/terraform/parse.ts +11 -74
- package/src/workspace/agent-cli.ts +7 -3
- package/src/workspace/agent.schema.json +22 -0
- package/src/workspace/app-kind.test.ts +196 -0
- package/src/workspace/box-cli.ts +113 -0
- package/src/workspace/box-factory.test.ts +323 -0
- package/src/workspace/box-factory.ts +136 -0
- package/src/workspace/box-listing-write.schema.json +204 -0
- package/src/workspace/box-listing.test.ts +234 -0
- package/src/workspace/box-listing.ts +324 -0
- package/src/workspace/box-publish.schema.json +498 -0
- package/src/workspace/box-publish.test.ts +204 -0
- package/src/workspace/box-publish.ts +420 -0
- package/src/workspace/box-ship.test.ts +96 -0
- package/src/workspace/broker-protocol.schema.json +186 -0
- package/src/workspace/broker-protocol.test.ts +122 -0
- package/src/workspace/broker-protocol.ts +317 -0
- package/src/workspace/builder-tiers.test.ts +146 -0
- package/src/workspace/change-set.schema.json +460 -0
- package/src/workspace/changes.schema.json +12 -20
- package/src/workspace/changes.ts +4 -1
- package/src/workspace/chant-migrations.e2e.test.ts +17 -5
- package/src/workspace/checks/boxes.test.ts +5 -0
- package/src/workspace/checks.ts +39 -8
- package/src/workspace/component-environments.test.ts +105 -0
- package/src/workspace/compose-graph.ts +7 -0
- package/src/workspace/composites.schema.json +23 -4
- package/src/workspace/composites.test.ts +8 -8
- package/src/workspace/composites.ts +13 -2
- package/src/workspace/conformance/__fixture__/decisions/decision.schema.json +2 -2
- package/src/workspace/conformance/__fixtures__/reference-broker.ts +207 -0
- package/src/workspace/conformance/__writer_fixture__/answers/answer.kind.mjs +32 -0
- package/src/workspace/conformance/__writer_fixture__/answers/answer.schema.json +135 -0
- package/src/workspace/conformance/__writer_fixture__/contracts/contract.kind.mjs +37 -0
- package/src/workspace/conformance/__writer_fixture__/contracts/contract.schema.json +213 -0
- package/src/workspace/conformance/__writer_fixture__/decisions/points.json +228 -0
- package/src/workspace/conformance/__writer_fixture__/drivers/driver.kind.mjs +15 -0
- package/src/workspace/conformance/__writer_fixture__/drivers/driver.schema.json +38 -0
- package/src/workspace/conformance/__writer_fixture__/sessions/session.kind.mjs +54 -0
- package/src/workspace/conformance/__writer_fixture__/sessions/session.schema.json +289 -0
- package/src/workspace/conformance/__writer_fixture__/work/W-001-the-writer-suite-works-this-item.md +25 -0
- package/src/workspace/conformance/__writer_fixture__/work/work.kind.mjs +60 -0
- package/src/workspace/conformance/__writer_fixture__/work/work.schema.json +603 -0
- package/src/workspace/conformance/broker.test.ts +122 -0
- package/src/workspace/conformance/broker.ts +792 -0
- package/src/workspace/conformance/conformance.e2e.test.ts +36 -3
- package/src/workspace/conformance/index.mjs +51 -3
- package/src/workspace/conformance/index.ts +107 -15
- package/src/workspace/conformance/vitest.ts +76 -2
- package/src/workspace/conformance/writer-conformance.e2e.test.ts +177 -0
- package/src/workspace/conformance/writer.test.ts +186 -0
- package/src/workspace/conformance/writer.ts +1191 -0
- package/src/workspace/decide.test.ts +208 -4
- package/src/workspace/decide.ts +433 -73
- package/src/workspace/decision-points.schema.json +11 -4
- package/src/workspace/declaration.schema.json +383 -5
- package/src/workspace/declaration.ts +315 -10
- package/src/workspace/environments.ts +66 -14
- package/src/workspace/factory-rules.test.ts +62 -0
- package/src/workspace/factory-rules.ts +218 -0
- package/src/workspace/graph-cli.ts +6 -3
- package/src/workspace/graph.schema.json +314 -0
- package/src/workspace/identity.test.ts +219 -0
- package/src/workspace/identity.ts +186 -0
- package/src/workspace/init.ts +82 -2
- package/src/workspace/intent-cli.ts +84 -13
- package/src/workspace/intent-patch-id.test.ts +162 -0
- package/src/workspace/intent-record.schema.json +336 -1
- package/src/workspace/intent-record.ts +96 -16
- package/src/workspace/intent-reviews.test.ts +76 -0
- package/src/workspace/intent-squash.test.ts +213 -0
- package/src/workspace/intent-why.test.ts +274 -0
- package/src/workspace/intent.schema.json +950 -9
- package/src/workspace/intent.test.ts +11 -2
- package/src/workspace/intent.ts +722 -65
- package/src/workspace/json-edit.test.ts +121 -0
- package/src/workspace/json-edit.ts +142 -0
- package/src/workspace/jsonc.ts +20 -0
- package/src/workspace/kinds.ts +201 -39
- package/src/workspace/lexicon-symbols.test.ts +148 -0
- package/src/workspace/lexicon-symbols.ts +125 -0
- package/src/workspace/lineage-upgrade.test.ts +63 -0
- package/src/workspace/lineage-upgrade.ts +146 -5
- package/src/workspace/plan-summary.schema.json +155 -0
- package/src/workspace/point-answer.schema.json +42 -2
- package/src/workspace/points-cli.ts +42 -16
- package/src/workspace/points-write.schema.json +163 -4
- package/src/workspace/points.schema.json +157 -2
- package/src/workspace/points.test.ts +13 -1
- package/src/workspace/points.ts +118 -12
- package/src/workspace/pr-report.schema.json +95 -0
- package/src/workspace/principal-classes.test.ts +175 -0
- package/src/workspace/principal-classes.ts +307 -0
- package/src/workspace/profiles.test.ts +159 -0
- package/src/workspace/read-contract.test.ts +2 -2
- package/src/workspace/reason-codes.test.ts +23 -3
- package/src/workspace/reason-codes.ts +61 -4
- package/src/workspace/record-sessions.ts +9 -8
- package/src/workspace/records-amend.schema.json +80 -0
- package/src/workspace/records-checkout.ts +106 -0
- package/src/workspace/records-cli.ts +123 -17
- package/src/workspace/records-close.schema.json +79 -0
- package/src/workspace/records-close.ts +31 -7
- package/src/workspace/records-concurrent.e2e.test.ts +135 -0
- package/src/workspace/records-concurrent.test.ts +145 -0
- package/src/workspace/records-formats.test.ts +46 -10
- package/src/workspace/records-new.schema.json +9 -0
- package/src/workspace/records-review.schema.json +80 -0
- package/src/workspace/records-sessions-write.test.ts +69 -0
- package/src/workspace/records-sessions.test.ts +22 -0
- package/src/workspace/records-uncommitted.test.ts +171 -0
- package/src/workspace/records-write.ts +219 -30
- package/src/workspace/records.schema.json +88 -1
- package/src/workspace/records.ts +76 -8
- package/src/workspace/reference-kinds/app/package.json +10 -0
- package/src/workspace/reference-kinds/app/workspace-kinds.json +45 -0
- package/src/workspace/run-statement.schema.json +622 -0
- package/src/workspace/runs-cli.ts +710 -0
- package/src/workspace/runs-statement.test.ts +239 -0
- package/src/workspace/runs-write.schema.json +994 -0
- package/src/workspace/runs.schema.json +1257 -0
- package/src/workspace/runs.test.ts +281 -0
- package/src/workspace/runs.ts +970 -0
- package/src/workspace/session-kinds.ts +3 -3
- package/src/workspace/squash.ts +198 -0
- package/src/workspace/status-contract.test.ts +10 -2
- package/src/workspace/status-gates.ts +25 -9
- package/src/workspace/status.schema.json +252 -4
- package/src/workspace/status.ts +110 -1
- package/src/workspace/symbols.ts +191 -0
- package/src/workspace/trailer-joins.test.ts +171 -0
- package/src/workspace/trailer-joins.ts +82 -0
- package/src/workspace/trailers.ts +148 -0
- package/src/workspace/trust/run-commits.ts +115 -0
- package/src/workspace/trust/run-statement.ts +226 -0
- package/src/workspace/trust/seal.ts +58 -1
- package/src/workspace/trust/verify-cli.ts +6 -5
- package/src/workspace/trust/verify.ts +39 -6
- package/src/workspace/wip-cli.ts +97 -0
- package/src/workspace/wip-write.schema.json +504 -0
- package/src/workspace/wip.schema.json +334 -0
- package/src/workspace/wip.test.ts +294 -0
- package/src/workspace/wip.ts +753 -0
- package/src/workspace/work-cli.e2e.test.ts +28 -1
- package/src/workspace/work-cli.ts +136 -8
- package/src/workspace/work-evidence.schema.json +5 -0
- package/src/workspace/work-history.schema.json +73 -1
- package/src/workspace/work-history.test.ts +48 -5
- package/src/workspace/work-kind-fields.test.ts +154 -0
- package/src/workspace/work-lease.schema.json +14 -1
- package/src/workspace/work-size.test.ts +77 -0
- package/src/workspace/work-size.ts +93 -0
- package/src/workspace/work.ts +82 -0
- package/src/workspace/workspace-kinds.schema.json +122 -0
- package/src/workspace/workspace-principals.schema.json +60 -0
- package/src/workspace/write-lock-cli.ts +131 -0
- package/src/workspace/write-lock.schema.json +172 -0
- package/src/workspace/write-lock.test.ts +189 -0
- package/src/workspace/write-lock.ts +474 -0
- package/src/workspace/write-scope.test.ts +144 -3
- package/src/workspace/write-scope.ts +192 -45
- package/src/yaml.test.ts +111 -1
- package/src/yaml.ts +141 -549
|
@@ -117,6 +117,10 @@ function patchRootPackageJson(root: string, name: string): PatchResult {
|
|
|
117
117
|
* The whole-repo typecheck runs with `moduleResolution: node`, which never
|
|
118
118
|
* reads package exports maps, so every lexicon needs a bare + subpath
|
|
119
119
|
* mapping here or an example importing the package fails to resolve.
|
|
120
|
+
*
|
|
121
|
+
* Entries are `./`-prefixed like every other entry (#3227): with no `baseUrl`
|
|
122
|
+
* (removed in #3205) a bare `lexicons/...` path is invalid and tsx's tsconfig
|
|
123
|
+
* loader throws on it for every run in the repo.
|
|
120
124
|
*/
|
|
121
125
|
export function patchRootTsconfigPaths(root: string, name: string): PatchResult {
|
|
122
126
|
const tsconfigPath = join(root, "tsconfig.json");
|
|
@@ -128,8 +132,8 @@ export function patchRootTsconfigPaths(root: string, name: string): PatchResult
|
|
|
128
132
|
|
|
129
133
|
const bare = `@intentius/chant-lexicon-${name}`;
|
|
130
134
|
const wanted: Record<string, string[]> = {
|
|
131
|
-
[bare]: [
|
|
132
|
-
[`${bare}/*`]: [
|
|
135
|
+
[bare]: [`./lexicons/${name}/src/index.ts`],
|
|
136
|
+
[`${bare}/*`]: [`./lexicons/${name}/src/*`],
|
|
133
137
|
};
|
|
134
138
|
|
|
135
139
|
let changed = false;
|
|
@@ -297,7 +301,15 @@ function patchPublishWorkflow(root: string, name: string): PatchResult {
|
|
|
297
301
|
}
|
|
298
302
|
|
|
299
303
|
if (!insertPrepackAfterEach(lines, name)) {
|
|
300
|
-
|
|
304
|
+
// #3227 — not a failure and not "covered by a prepack line": publish.yml
|
|
305
|
+
// carries no per-lexicon lines. The run builds every lexicon through
|
|
306
|
+
// scripts/ci-lexicon-artifacts.sh and publishes through
|
|
307
|
+
// scripts/publish-packages.sh, both of which enumerate the workspace.
|
|
308
|
+
return {
|
|
309
|
+
patched: false,
|
|
310
|
+
reason:
|
|
311
|
+
"nothing to patch: it has no per-lexicon prepack lines; scripts/ci-lexicon-artifacts.sh and scripts/publish-packages.sh enumerate the workspace",
|
|
312
|
+
};
|
|
301
313
|
}
|
|
302
314
|
writeFileSync(filePath, lines.join("\n"));
|
|
303
315
|
return { patched: true };
|
|
@@ -321,6 +333,12 @@ export function patchDockerfile(filePath: string, name: string): PatchResult {
|
|
|
321
333
|
|
|
322
334
|
const changed = addToLexiconLoops(lines, name) || insertPrepackAfterEach(lines, name);
|
|
323
335
|
if (!changed) {
|
|
336
|
+
// #3227 — the smoke-npm and smoke-e2e images read their lexicon list from
|
|
337
|
+
// a file. Point at it instead of reporting a missing anchor.
|
|
338
|
+
const listFile = lines.join("\n").match(/test\/(smoke-[\w-]+-lexicons\.txt)/)?.[1];
|
|
339
|
+
if (listFile) {
|
|
340
|
+
return { patched: false, reason: `reads its lexicon list from test/${listFile}, not from the Dockerfile` };
|
|
341
|
+
}
|
|
324
342
|
return { patched: false, reason: "no lexicon loop or prepack line found to anchor on" };
|
|
325
343
|
}
|
|
326
344
|
|
|
@@ -328,6 +346,22 @@ export function patchDockerfile(filePath: string, name: string): PatchResult {
|
|
|
328
346
|
return { patched: true };
|
|
329
347
|
}
|
|
330
348
|
|
|
349
|
+
/**
|
|
350
|
+
* Append a lexicon to a one-name-per-line list file (test/smoke-npm-lexicons.txt).
|
|
351
|
+
* Idempotent; keeps the file's trailing newline.
|
|
352
|
+
*/
|
|
353
|
+
export function patchLexiconList(filePath: string, name: string): PatchResult {
|
|
354
|
+
const rel = filePath.split("/").slice(-2).join("/");
|
|
355
|
+
if (!existsSync(filePath)) return { patched: false, reason: `${rel} not found` };
|
|
356
|
+
const content = readFileSync(filePath, "utf-8");
|
|
357
|
+
if (content.split("\n").some((l) => l.trim() === name)) {
|
|
358
|
+
return { patched: false, reason: `${name} already in ${rel}` };
|
|
359
|
+
}
|
|
360
|
+
const sep = content === "" || content.endsWith("\n") ? "" : "\n";
|
|
361
|
+
writeFileSync(filePath, `${content}${sep}${name}\n`);
|
|
362
|
+
return { patched: true };
|
|
363
|
+
}
|
|
364
|
+
|
|
331
365
|
/**
|
|
332
366
|
* Execute the onboard command — patches monorepo infrastructure for a new lexicon.
|
|
333
367
|
*/
|
|
@@ -375,6 +409,20 @@ export function onboardCommand(options: OnboardOptions): OnboardResult {
|
|
|
375
409
|
patchDockerfile(join(root, "test/Dockerfile.smoke-npm"), options.name),
|
|
376
410
|
);
|
|
377
411
|
|
|
412
|
+
// 6. Smoke image lexicon lists (#3227). The npm smoke packs every lexicon.
|
|
413
|
+
// The e2e list is opt-in: it names the lexicons an example uses plus
|
|
414
|
+
// their dependencies, so onboard leaves it alone and says so.
|
|
415
|
+
record(
|
|
416
|
+
"smoke-npm-lexicons.txt",
|
|
417
|
+
"lexicon list",
|
|
418
|
+
patchLexiconList(join(root, "test/smoke-npm-lexicons.txt"), options.name),
|
|
419
|
+
);
|
|
420
|
+
if (existsSync(join(root, "test/smoke-e2e-lexicons.txt"))) {
|
|
421
|
+
skipped.push(
|
|
422
|
+
`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`,
|
|
423
|
+
);
|
|
424
|
+
}
|
|
425
|
+
|
|
378
426
|
return { success: true, patched, skipped, verbose: options.verbose };
|
|
379
427
|
}
|
|
380
428
|
|
|
@@ -396,7 +444,7 @@ export async function printOnboardResult(result: OnboardResult, name: string): P
|
|
|
396
444
|
|
|
397
445
|
if (result.skipped.length > 0) {
|
|
398
446
|
console.log("");
|
|
399
|
-
console.log("
|
|
447
|
+
console.log("Not patched (already covered, or nothing to patch):");
|
|
400
448
|
for (const s of result.skipped) {
|
|
401
449
|
console.log(` ${s}`);
|
|
402
450
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `chant dev pinned-upgrade <lexicon-dir>` command implementation.
|
|
3
3
|
*
|
|
4
|
-
* Detects whether a
|
|
4
|
+
* Detects whether a lexicon that declares `upstreamPin` has a
|
|
5
5
|
* newer stable upstream release. When it does, it dry-run bumps the pinned
|
|
6
6
|
* version constant, regenerates + surface-diffs (via #524's regenLexicon), then
|
|
7
7
|
* reverts the bump — leaving the working tree unchanged.
|
|
@@ -10,20 +10,21 @@
|
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
12
|
import { existsSync } from "fs";
|
|
13
|
-
import {
|
|
13
|
+
import { resolve } from "path";
|
|
14
14
|
import {
|
|
15
|
-
|
|
15
|
+
checkPinnedUpgrades,
|
|
16
|
+
lexiconNameOf,
|
|
16
17
|
type LexiconId,
|
|
17
18
|
type UpgradeCheckResult,
|
|
18
19
|
} from "../../codegen/pinned-upgrade";
|
|
19
20
|
|
|
20
|
-
const PINNED_LEXICONS: readonly LexiconId[] = ["k8s", "gcp", "docker", "gitlab"];
|
|
21
|
-
|
|
22
21
|
export interface PinnedUpgradeOptions {
|
|
23
22
|
/** Resolved path to the lexicon directory. */
|
|
24
23
|
lexiconDir: string;
|
|
25
24
|
/** Explicit lexicon id; inferred from the directory name when omitted. */
|
|
26
25
|
lexicon?: LexiconId;
|
|
26
|
+
/** Label of one pin to check, for a lexicon that declares several. Omitted: all of them. */
|
|
27
|
+
pin?: string;
|
|
27
28
|
/** Force re-fetch of the upstream spec during regen. */
|
|
28
29
|
force?: boolean;
|
|
29
30
|
/** Print subprocess output while running. */
|
|
@@ -31,12 +32,13 @@ export interface PinnedUpgradeOptions {
|
|
|
31
32
|
}
|
|
32
33
|
|
|
33
34
|
/**
|
|
34
|
-
* Infer the lexicon id from a directory
|
|
35
|
-
*
|
|
35
|
+
* Infer the lexicon id from a directory: its package name
|
|
36
|
+
* (`@intentius/chant-lexicon-<name>`), else the directory name. Whether the
|
|
37
|
+
* lexicon is pinned is the plugin's `upstreamPin`, checked by
|
|
38
|
+
* `checkPinnedUpgrade`, not a list here.
|
|
36
39
|
*/
|
|
37
|
-
export function inferLexicon(lexiconDir: string): LexiconId
|
|
38
|
-
|
|
39
|
-
return (PINNED_LEXICONS as readonly string[]).includes(name) ? (name as LexiconId) : null;
|
|
40
|
+
export function inferLexicon(lexiconDir: string): LexiconId {
|
|
41
|
+
return lexiconNameOf(lexiconDir);
|
|
40
42
|
}
|
|
41
43
|
|
|
42
44
|
/**
|
|
@@ -52,37 +54,38 @@ export function semverLabel(result: UpgradeCheckResult): "minor" | "major" | "no
|
|
|
52
54
|
|
|
53
55
|
/**
|
|
54
56
|
* Run the pinned-upgrade check and return the structured result.
|
|
55
|
-
* Never throws — a missing dir or
|
|
57
|
+
* Never throws — a missing dir or a lexicon with no `upstreamPin` becomes a fetchError.
|
|
56
58
|
*/
|
|
57
59
|
export async function runPinnedUpgrade(opts: PinnedUpgradeOptions): Promise<UpgradeCheckResult> {
|
|
60
|
+
return (await runPinnedUpgrades(opts))[0]!;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Run the check for every pin the plugin declares (or the one in `opts.pin`),
|
|
65
|
+
* one result each. A lexicon with one pin gives one result.
|
|
66
|
+
*/
|
|
67
|
+
export async function runPinnedUpgrades(opts: PinnedUpgradeOptions): Promise<UpgradeCheckResult[]> {
|
|
58
68
|
const dir = resolve(opts.lexiconDir);
|
|
59
69
|
|
|
60
70
|
const lexicon = opts.lexicon ?? inferLexicon(dir);
|
|
61
|
-
if (!lexicon) {
|
|
62
|
-
return {
|
|
63
|
-
lexicon: "k8s",
|
|
64
|
-
hasUpgrade: false,
|
|
65
|
-
from: "(unknown)",
|
|
66
|
-
to: null,
|
|
67
|
-
validation: null,
|
|
68
|
-
fetchError: `Not a pinned lexicon directory: ${dir}. Expected one of: ${PINNED_LEXICONS.join(", ")}.`,
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
71
|
|
|
72
72
|
if (!existsSync(dir)) {
|
|
73
|
-
return
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
73
|
+
return [
|
|
74
|
+
{
|
|
75
|
+
lexicon,
|
|
76
|
+
hasUpgrade: false,
|
|
77
|
+
from: "(unknown)",
|
|
78
|
+
to: null,
|
|
79
|
+
validation: null,
|
|
80
|
+
fetchError: `Lexicon directory not found: ${dir}`,
|
|
81
|
+
},
|
|
82
|
+
];
|
|
81
83
|
}
|
|
82
84
|
|
|
83
|
-
return
|
|
85
|
+
return checkPinnedUpgrades({
|
|
84
86
|
lexiconDir: dir,
|
|
85
87
|
lexicon,
|
|
88
|
+
pin: opts.pin,
|
|
86
89
|
force: opts.force,
|
|
87
90
|
verbose: opts.verbose,
|
|
88
91
|
});
|
|
@@ -112,12 +115,14 @@ function c(text: string, code: string): string {
|
|
|
112
115
|
*/
|
|
113
116
|
export function printPinnedUpgradeResult(result: UpgradeCheckResult, json: boolean): void {
|
|
114
117
|
const label = semverLabel(result);
|
|
118
|
+
const name = result.pin ? `${result.lexicon}/${result.pin}` : result.lexicon;
|
|
115
119
|
|
|
116
120
|
if (json) {
|
|
117
121
|
console.log(
|
|
118
122
|
JSON.stringify(
|
|
119
123
|
{
|
|
120
124
|
lexicon: result.lexicon,
|
|
125
|
+
...(result.pin ? { pin: result.pin } : {}),
|
|
121
126
|
hasUpgrade: result.hasUpgrade,
|
|
122
127
|
from: result.from,
|
|
123
128
|
to: result.to,
|
|
@@ -128,6 +133,7 @@ export function printPinnedUpgradeResult(result: UpgradeCheckResult, json: boole
|
|
|
128
133
|
validationOk: result.validation?.ok ?? null,
|
|
129
134
|
failures: result.validation?.failures ?? [],
|
|
130
135
|
fetchError: result.fetchError,
|
|
136
|
+
manualPin: result.manualPin ?? null,
|
|
131
137
|
},
|
|
132
138
|
null,
|
|
133
139
|
2,
|
|
@@ -137,22 +143,31 @@ export function printPinnedUpgradeResult(result: UpgradeCheckResult, json: boole
|
|
|
137
143
|
}
|
|
138
144
|
|
|
139
145
|
if (result.fetchError) {
|
|
140
|
-
console.log(c(`[${
|
|
146
|
+
console.log(c(`[${name}] error: ${result.fetchError}`, COLORS.red));
|
|
141
147
|
return;
|
|
142
148
|
}
|
|
143
149
|
|
|
144
150
|
if (!result.hasUpgrade) {
|
|
145
151
|
console.log(
|
|
146
|
-
c(`[${
|
|
152
|
+
c(`[${name}] up to date`, COLORS.green) +
|
|
147
153
|
` pinned=${result.from}` +
|
|
148
154
|
(result.to ? ` latest=${result.to}` : ""),
|
|
149
155
|
);
|
|
150
156
|
return;
|
|
151
157
|
}
|
|
152
158
|
|
|
159
|
+
if (result.manualPin) {
|
|
160
|
+
console.log(
|
|
161
|
+
c(`[${name}] upgrade available`, COLORS.bold) + ` ${result.from} -> ${result.to}`,
|
|
162
|
+
);
|
|
163
|
+
console.log(` The pin in ${result.manualPin.file} cannot be rewritten generically, so nothing was edited or regenerated.`);
|
|
164
|
+
console.log(` ${result.manualPin.instructions}`);
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
|
|
153
168
|
// Upgrade available
|
|
154
169
|
console.log(
|
|
155
|
-
c(`[${
|
|
170
|
+
c(`[${name}] upgrade available`, COLORS.bold) +
|
|
156
171
|
` ${result.from} -> ${result.to}`,
|
|
157
172
|
);
|
|
158
173
|
|
|
@@ -202,3 +217,28 @@ export function printPinnedUpgradeResult(result: UpgradeCheckResult, json: boole
|
|
|
202
217
|
`Validation: ${validationLabel} Semver: ${c(label, labelColor)} ${result.from} -> ${result.to}`,
|
|
203
218
|
);
|
|
204
219
|
}
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* Print one result per pin. One result prints exactly as `printPinnedUpgradeResult`;
|
|
223
|
+
* several print in turn, and `json` emits an array of the same objects.
|
|
224
|
+
*/
|
|
225
|
+
export function printPinnedUpgradeResults(results: UpgradeCheckResult[], json: boolean): void {
|
|
226
|
+
if (results.length === 1) {
|
|
227
|
+
printPinnedUpgradeResult(results[0]!, json);
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
if (json) {
|
|
231
|
+
// Each result prints as its own JSON object; collect them into one array.
|
|
232
|
+
const lines: string[] = [];
|
|
233
|
+
const log = console.log;
|
|
234
|
+
console.log = (...a: unknown[]) => void lines.push(a.join(" "));
|
|
235
|
+
try {
|
|
236
|
+
for (const r of results) printPinnedUpgradeResult(r, true);
|
|
237
|
+
} finally {
|
|
238
|
+
console.log = log;
|
|
239
|
+
}
|
|
240
|
+
console.log(`[${lines.join(",\n")}]`);
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
for (const r of results) printPinnedUpgradeResult(r, false);
|
|
244
|
+
}
|
|
@@ -14,7 +14,7 @@ jobs:
|
|
|
14
14
|
runs-on: ubuntu-latest
|
|
15
15
|
container: node:22-slim
|
|
16
16
|
steps:
|
|
17
|
-
- uses: actions/checkout@
|
|
17
|
+
- uses: actions/checkout@v7
|
|
18
18
|
- run: chant run --components shared-alb --env staging --dump-outputs shared-alb.outputs.json
|
|
19
19
|
- name: Upload shared-alb outputs
|
|
20
20
|
uses: actions/upload-artifact@v4
|
|
@@ -27,7 +27,7 @@ jobs:
|
|
|
27
27
|
- shared-alb
|
|
28
28
|
container: node:22-slim
|
|
29
29
|
steps:
|
|
30
|
-
- uses: actions/checkout@
|
|
30
|
+
- uses: actions/checkout@v7
|
|
31
31
|
- name: Download shared-alb outputs
|
|
32
32
|
uses: actions/download-artifact@v4
|
|
33
33
|
with:
|
|
@@ -79,7 +79,19 @@ async function runGenerateComponents(ctx: CommandContext): Promise<number> {
|
|
|
79
79
|
const result = await generateComponentsPipeline(
|
|
80
80
|
args.path,
|
|
81
81
|
lexicon,
|
|
82
|
-
{
|
|
82
|
+
{
|
|
83
|
+
env: args.env,
|
|
84
|
+
...(args.promoteTo ? { promoteTo: args.promoteTo } : {}),
|
|
85
|
+
...(plan ? { member: plan.member } : {}),
|
|
86
|
+
// #3049: one job per wave of a gated-wave fan-out instead of one per component.
|
|
87
|
+
...(args.waveGate
|
|
88
|
+
? { gatedWaves: { gate: args.waveGate, ...(args.canary?.length ? { canary: args.canary } : {}), ...(args.base ? { base: args.base } : {}) } }
|
|
89
|
+
: {}),
|
|
90
|
+
// #3183: a plan job per pull request and an apply job per merge.
|
|
91
|
+
...(args.prLoop
|
|
92
|
+
? { prLoop: { ...(args.gate ? { gate: args.gate } : {}), ...(args.branch ? { branch: args.branch } : {}) } }
|
|
93
|
+
: {}),
|
|
94
|
+
},
|
|
83
95
|
args.sandbox,
|
|
84
96
|
paramsResolution.provenance,
|
|
85
97
|
);
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { mkdtempSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { tmpdir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { afterEach, describe, expect, test, vi } from "vitest";
|
|
5
|
+
import { composeChangeSet } from "../../change-set";
|
|
6
|
+
import { commandRegistry, parseArgs } from "../main";
|
|
7
|
+
import { resolveCommand } from "../registry";
|
|
8
|
+
import { runChangeSetSummary } from "./change-set";
|
|
9
|
+
|
|
10
|
+
const dir = mkdtempSync(join(tmpdir(), "chant-change-set-summary-"));
|
|
11
|
+
const file = join(dir, "change-set.json");
|
|
12
|
+
writeFileSync(
|
|
13
|
+
file,
|
|
14
|
+
JSON.stringify(
|
|
15
|
+
composeChangeSet(
|
|
16
|
+
["a", "b"].map((m, i) => ({
|
|
17
|
+
member: { member: m, lexicon: "terraform", planner: "terraform" as const, status: "planned" as const, planDigest: `jcs1-sha256:${String(i).padStart(64, "0")}`, holes: [] },
|
|
18
|
+
entries: [{ member: m, lexicon: "terraform", planner: "terraform" as const, address: "aws_db_instance.main", type: "aws_db_instance", action: "delete" as const, attributes: [] }],
|
|
19
|
+
})),
|
|
20
|
+
),
|
|
21
|
+
),
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
async function run(argv: string[]): Promise<{ code: number; out: string; err: string }> {
|
|
25
|
+
let out = "";
|
|
26
|
+
let err = "";
|
|
27
|
+
vi.spyOn(process.stdout, "write").mockImplementation((s) => ((out += String(s)), true));
|
|
28
|
+
vi.spyOn(console, "log").mockImplementation((s) => void (out += String(s) + "\n"));
|
|
29
|
+
vi.spyOn(console, "error").mockImplementation((s) => void (err += String(s) + "\n"));
|
|
30
|
+
const args = parseArgs(argv);
|
|
31
|
+
expect(resolveCommand(args, commandRegistry)?.def.name).toBe("change-set summary");
|
|
32
|
+
const code = await runChangeSetSummary({ args, plugins: [], serializers: [] });
|
|
33
|
+
return { code, out, err };
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
afterEach(() => vi.restoreAllMocks());
|
|
37
|
+
|
|
38
|
+
describe("chant change-set summary", () => {
|
|
39
|
+
test("prints text, json and markdown, naming each destroy", async () => {
|
|
40
|
+
const text = await run(["change-set", "summary", file]);
|
|
41
|
+
expect(text.code).toBe(0);
|
|
42
|
+
expect(text.out).toContain("2 members: 1 group, 2 destroys or replacements.");
|
|
43
|
+
expect(text.out).toContain("a: aws_db_instance.main (delete)");
|
|
44
|
+
const json = await run(["change-set", "summary", file, "--format", "json"]);
|
|
45
|
+
expect(JSON.parse(json.out).destroys).toHaveLength(2);
|
|
46
|
+
const md = await run(["change-set", "summary", file, "--format", "markdown", "--limit", "500"]);
|
|
47
|
+
expect(md.out).toContain("- `b: aws_db_instance.main (delete)`");
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
test("refuses a file that is not a change-set document, and an unknown format", async () => {
|
|
51
|
+
const other = join(dir, "other.json");
|
|
52
|
+
writeFileSync(other, "{}");
|
|
53
|
+
expect((await run(["change-set", "summary", other])).err).toContain("is not a change-set document");
|
|
54
|
+
expect((await run(["change-set", "summary", file, "--format", "html"])).code).toBe(1);
|
|
55
|
+
});
|
|
56
|
+
});
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { CHANGE_SET_CONTRACT, CHANGE_SET_SCHEMA_ID, type ChangeSetDocument } from "../../change-set";
|
|
3
|
+
import { GITHUB_COMMENT_LIMIT, groupChangeSet, renderPlanSummaryMarkdown, renderPlanSummaryText } from "../../plan-summary";
|
|
4
|
+
import { formatError } from "../format";
|
|
5
|
+
import type { CommandContext } from "../registry";
|
|
6
|
+
|
|
7
|
+
const USAGE = "chant change-set summary <change-set.json> [--format text|json|markdown] [--limit <chars>]";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* `chant change-set summary <file>` (#3188): the grouped plan summary of a
|
|
11
|
+
* change-set document (`../../change-set.ts`), such as the `document` a
|
|
12
|
+
* `composeChangeSet` step returns. `--format` picks text (default), json
|
|
13
|
+
* (the plan-summary schema) or markdown, an MR or PR note of at most
|
|
14
|
+
* `--limit` characters (default GitHub's comment limit, 65536). Reads one
|
|
15
|
+
* file; no project, no plugins, no network.
|
|
16
|
+
*/
|
|
17
|
+
export async function runChangeSetSummary(ctx: CommandContext): Promise<number> {
|
|
18
|
+
const { args } = ctx;
|
|
19
|
+
const file = args.extraPositional;
|
|
20
|
+
const format = args.json ? "json" : args.format || "text";
|
|
21
|
+
const fail = (message: string): number => {
|
|
22
|
+
console.error(formatError({ message, hint: USAGE }));
|
|
23
|
+
return 1;
|
|
24
|
+
};
|
|
25
|
+
if (!file) return fail("change-set summary needs the change-set document to read");
|
|
26
|
+
if (format !== "text" && format !== "json" && format !== "markdown") return fail(`--format ${format} is not one of text, json or markdown`);
|
|
27
|
+
if (args.limit !== undefined && (!Number.isInteger(args.limit) || args.limit < 200)) return fail("--limit needs a whole number of characters, at least 200");
|
|
28
|
+
|
|
29
|
+
let doc: ChangeSetDocument;
|
|
30
|
+
try {
|
|
31
|
+
doc = JSON.parse(readFileSync(file, "utf-8")) as ChangeSetDocument;
|
|
32
|
+
} catch (err) {
|
|
33
|
+
return fail(`cannot read ${file} as JSON: ${err instanceof Error ? err.message : String(err)}`);
|
|
34
|
+
}
|
|
35
|
+
if (doc?.$schema !== CHANGE_SET_SCHEMA_ID || doc.contract !== CHANGE_SET_CONTRACT) {
|
|
36
|
+
return fail(`${file} is not a change-set document: its $schema is not ${CHANGE_SET_SCHEMA_ID} with contract ${CHANGE_SET_CONTRACT}`);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const summary = groupChangeSet(doc);
|
|
40
|
+
if (format === "json") console.log(JSON.stringify(summary, null, 2));
|
|
41
|
+
else if (format === "markdown") process.stdout.write(renderPlanSummaryMarkdown(summary, { limit: args.limit ?? GITHUB_COMMENT_LIMIT }));
|
|
42
|
+
else process.stdout.write(renderPlanSummaryText(summary));
|
|
43
|
+
return 0;
|
|
44
|
+
}
|
|
@@ -48,7 +48,7 @@ import type { ComponentBomSummary } from "../../lifecycle/build-ledger";
|
|
|
48
48
|
import type { BuildArchiveManifest } from "../../components/verbs/build-archive";
|
|
49
49
|
import { loadChantConfig } from "../../config";
|
|
50
50
|
import { applyLiveEndpoint } from "../../live-endpoint";
|
|
51
|
-
import {
|
|
51
|
+
import { isObservableDeclarable } from "../../declarable";
|
|
52
52
|
import { build } from "../../build";
|
|
53
53
|
import { discoverComponents } from "../../components/discover";
|
|
54
54
|
import { formatError, formatWarning, formatSuccess, formatBold } from "../format";
|
|
@@ -643,7 +643,7 @@ export async function runComponentsStatus(ctx: CommandContext): Promise<number>
|
|
|
643
643
|
const entities = new Map<string, { entityType: string; props: Record<string, unknown> }>();
|
|
644
644
|
for (const [name, entity] of buildResult.entities) {
|
|
645
645
|
// Resource declarables only (see lifecycle/observe.ts).
|
|
646
|
-
if (entity.lexicon === plugin.name &&
|
|
646
|
+
if (entity.lexicon === plugin.name && isObservableDeclarable(entity)) {
|
|
647
647
|
declared.add(name);
|
|
648
648
|
entities.set(name, {
|
|
649
649
|
entityType: entity.entityType,
|
package/src/cli/handlers/dev.ts
CHANGED
|
@@ -85,16 +85,18 @@ export async function runDevSurfaceDiff(ctx: CommandContext): Promise<number> {
|
|
|
85
85
|
|
|
86
86
|
export async function runDevPinnedUpgrade(ctx: CommandContext): Promise<number> {
|
|
87
87
|
const dir = ctx.args.extraPositional ?? ".";
|
|
88
|
-
const {
|
|
89
|
-
|
|
88
|
+
const { runPinnedUpgrades, printPinnedUpgradeResults } = await import("../commands/pinned-upgrade");
|
|
89
|
+
// The optional second positional is a pin label, for a lexicon that declares several pins.
|
|
90
|
+
const results = await runPinnedUpgrades({
|
|
90
91
|
lexiconDir: resolve(dir),
|
|
92
|
+
pin: ctx.args.extraPositional2,
|
|
91
93
|
force: ctx.args.force,
|
|
92
94
|
verbose: ctx.args.verbose,
|
|
93
95
|
});
|
|
94
|
-
|
|
95
|
-
// Exit non-zero when
|
|
96
|
-
if (
|
|
97
|
-
if (
|
|
96
|
+
printPinnedUpgradeResults(results, ctx.args.format === "json");
|
|
97
|
+
// Exit non-zero when an upstream query failed or a regen validation broke.
|
|
98
|
+
if (results.some((r) => r.fetchError)) return 1;
|
|
99
|
+
if (results.some((r) => r.validation && !r.validation.ok)) return 1;
|
|
98
100
|
return 0;
|
|
99
101
|
}
|
|
100
102
|
|