@intentius/chant 0.102.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/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/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/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/fan-out.d.ts +33 -0
- package/dist/cli/handlers/fan-out.d.ts.map +1 -1
- package/dist/cli/handlers/operator.d.ts +7 -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/main.d.ts.map +1 -1
- package/dist/cli/mcp/op-tools.d.ts.map +1 -1
- package/dist/cli/mcp/workspace-tools.d.ts +3 -2
- package/dist/cli/mcp/workspace-tools.d.ts.map +1 -1
- package/dist/cli/registry.d.ts +63 -1
- package/dist/cli/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.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/verbs/shell.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/gated-waves.d.ts +147 -0
- package/dist/gated-waves.d.ts.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/lexicon.d.ts +48 -0
- package/dist/lexicon.d.ts.map +1 -1
- package/dist/lifecycle/gate-ledger.d.ts +7 -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/lint/post-synth.d.ts +18 -0
- package/dist/lint/post-synth.d.ts.map +1 -1
- package/dist/op/activities/activity-contracts.d.ts +126 -0
- package/dist/op/activities/activity-contracts.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 +4 -0
- package/dist/op/activities/index.d.ts.map +1 -1
- package/dist/op/activity-contract.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/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/factory.d.ts +83 -0
- package/dist/op/factory.d.ts.map +1 -0
- package/dist/op/index.d.ts +4 -1
- package/dist/op/index.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/types.d.ts +8 -0
- package/dist/op/types.d.ts.map +1 -1
- 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/telemetry-attribution.d.ts +31 -0
- package/dist/telemetry-attribution.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/workspace/box-cli.d.ts +12 -0
- package/dist/workspace/box-cli.d.ts.map +1 -0
- package/dist/workspace/box-factory.d.ts +27 -3
- package/dist/workspace/box-factory.d.ts.map +1 -1
- 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/checks.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 +2 -1
- package/dist/workspace/conformance/index.d.ts.map +1 -1
- package/dist/workspace/conformance/vitest.d.ts +9 -2
- package/dist/workspace/conformance/vitest.d.ts.map +1 -1
- package/dist/workspace/conformance/writer.d.ts +108 -14
- package/dist/workspace/conformance/writer.d.ts.map +1 -1
- 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 +65 -0
- package/dist/workspace/declaration.d.ts.map +1 -1
- package/dist/workspace/declaration.schema.json +153 -4
- 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/init.d.ts +21 -0
- package/dist/workspace/init.d.ts.map +1 -1
- package/dist/workspace/intent-cli.d.ts +1 -1
- package/dist/workspace/intent-cli.d.ts.map +1 -1
- package/dist/workspace/intent-record.d.ts +28 -1
- package/dist/workspace/intent-record.d.ts.map +1 -1
- package/dist/workspace/intent.d.ts +102 -5
- 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 +48 -0
- 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-upgrade.d.ts +31 -2
- package/dist/workspace/lineage-upgrade.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/reason-codes.d.ts +33 -4
- package/dist/workspace/reason-codes.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-cli.d.ts +7 -0
- 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-write.d.ts +66 -6
- package/dist/workspace/records-write.d.ts.map +1 -1
- package/dist/workspace/records.d.ts +28 -9
- package/dist/workspace/records.d.ts.map +1 -1
- package/dist/workspace/runs-cli.d.ts +138 -6
- package/dist/workspace/runs-cli.d.ts.map +1 -1
- package/dist/workspace/runs.d.ts +132 -11
- package/dist/workspace/runs.d.ts.map +1 -1
- package/dist/workspace/session-kinds.d.ts +1 -1
- package/dist/workspace/session-kinds.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 +2 -0
- package/dist/workspace/status-gates.d.ts.map +1 -1
- package/dist/workspace/status.d.ts +54 -0
- package/dist/workspace/status.d.ts.map +1 -1
- package/dist/workspace/symbols.d.ts +16 -5
- package/dist/workspace/symbols.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 +6 -1
- package/dist/workspace/trust/seal.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.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/workspace-kinds.schema.json +122 -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 +6 -2
- package/dist/workspace/write-scope.d.ts.map +1 -1
- package/package.json +6 -1
- 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/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/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/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/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/operator.test.ts +21 -0
- package/src/cli/handlers/operator.ts +34 -3
- package/src/cli/handlers/pr.ts +373 -0
- package/src/cli/handlers/run.ts +1 -0
- package/src/cli/main.test.ts +20 -0
- package/src/cli/main.ts +185 -23
- 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 +1 -1
- package/src/cli/mcp/workspace-tools.ts +34 -6
- package/src/cli/registry.ts +63 -1
- 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/discovery/sandbox/bundle.ts +1 -1
- 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/index.ts +1 -0
- package/src/lexicon.ts +51 -0
- package/src/lifecycle/gate-ledger.ts +7 -0
- package/src/lifecycle/git.ts +102 -16
- 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/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 +6 -0
- 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/decide-backend.ts +5 -1
- package/src/op/decide-read-inputs.ts +33 -5
- package/src/op/factory.e2e.test.ts +232 -0
- package/src/op/factory.ts +118 -0
- package/src/op/index.ts +9 -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/types.ts +8 -0
- package/src/op/work-lease-run.ts +3 -0
- 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/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/__fixtures__/studio-template-84c8b21.json +1 -1
- package/src/workspace/app-kind.test.ts +196 -0
- package/src/workspace/box-cli.ts +113 -0
- package/src/workspace/box-factory.test.ts +4 -1
- package/src/workspace/box-factory.ts +37 -4
- 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/chant-migrations.e2e.test.ts +17 -5
- package/src/workspace/checks/boxes.test.ts +3 -0
- package/src/workspace/checks.ts +10 -3
- package/src/workspace/component-environments.test.ts +105 -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 +7 -2
- package/src/workspace/conformance/__writer_fixture__/answers/answer.schema.json +42 -2
- 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 +96 -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 +14 -8
- package/src/workspace/conformance/__writer_fixture__/sessions/session.schema.json +187 -6
- package/src/workspace/conformance/__writer_fixture__/work/work.schema.json +25 -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 +2 -1
- package/src/workspace/conformance/index.mjs +22 -1
- package/src/workspace/conformance/index.ts +5 -1
- package/src/workspace/conformance/vitest.ts +33 -1
- package/src/workspace/conformance/writer-conformance.e2e.test.ts +49 -3
- package/src/workspace/conformance/writer.test.ts +32 -2
- package/src/workspace/conformance/writer.ts +339 -28
- package/src/workspace/decide.test.ts +208 -4
- package/src/workspace/decide.ts +427 -73
- package/src/workspace/decision-points.schema.json +11 -4
- package/src/workspace/declaration.schema.json +153 -4
- package/src/workspace/declaration.ts +141 -0
- 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 +2 -2
- package/src/workspace/graph.schema.json +67 -0
- package/src/workspace/identity.test.ts +23 -0
- package/src/workspace/init.ts +82 -2
- package/src/workspace/intent-cli.ts +26 -9
- package/src/workspace/intent-patch-id.test.ts +162 -0
- package/src/workspace/intent-record.schema.json +130 -3
- package/src/workspace/intent-record.ts +74 -28
- 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 +5 -5
- package/src/workspace/intent.schema.json +234 -4
- package/src/workspace/intent.ts +260 -66
- 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 +157 -2
- 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 +162 -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/profiles.test.ts +159 -0
- package/src/workspace/read-contract.test.ts +2 -2
- package/src/workspace/reason-codes.test.ts +13 -1
- package/src/workspace/reason-codes.ts +38 -4
- package/src/workspace/record-sessions.ts +9 -8
- package/src/workspace/records-amend.schema.json +78 -0
- package/src/workspace/records-cli.ts +20 -6
- package/src/workspace/records-close.schema.json +78 -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 +7 -0
- package/src/workspace/records-review.schema.json +78 -0
- package/src/workspace/records-sessions-write.test.ts +69 -0
- package/src/workspace/records-sessions.test.ts +22 -0
- package/src/workspace/records-write.ts +192 -25
- package/src/workspace/records.schema.json +16 -0
- package/src/workspace/records.ts +50 -9
- 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 +343 -14
- package/src/workspace/runs-statement.test.ts +239 -0
- package/src/workspace/runs-write.schema.json +416 -5
- package/src/workspace/runs.schema.json +451 -4
- package/src/workspace/runs.test.ts +39 -0
- package/src/workspace/runs.ts +296 -35
- package/src/workspace/session-kinds.ts +3 -3
- package/src/workspace/squash.ts +198 -0
- package/src/workspace/status-contract.test.ts +5 -2
- package/src/workspace/status-gates.ts +3 -1
- package/src/workspace/status.schema.json +126 -3
- package/src/workspace/status.ts +90 -1
- package/src/workspace/symbols.ts +20 -9
- package/src/workspace/trust/run-commits.ts +115 -0
- package/src/workspace/trust/run-statement.ts +226 -0
- package/src/workspace/trust/seal.ts +8 -2
- 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.ts +3 -0
- package/src/workspace/work-evidence.schema.json +3 -0
- package/src/workspace/work-size.test.ts +77 -0
- package/src/workspace/work-size.ts +93 -0
- package/src/workspace/workspace-kinds.schema.json +122 -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 +16 -1
- package/src/workspace/write-scope.ts +33 -11
|
@@ -1,47 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Thin wasm glue for the carve-out advisor (#214 T1): read a Terraform estate's
|
|
3
3
|
* `.tf` files, run them through `@cdktn/hcl2json`, merge into one tree, and hand
|
|
4
|
-
* off to the pure `buildGraph`.
|
|
5
|
-
*
|
|
6
|
-
* `@cdktn/hcl2json` is NOT a chant dependency — it carries a ~1.8 MB wasm blob
|
|
7
|
-
* and only carve-out users need it. It is lazy-loaded here and, if absent, the
|
|
8
|
-
* advisor fails with a one-line install hint.
|
|
4
|
+
* off to the pure `buildGraph`. The parser loader lives in `./hcl2json`, which
|
|
5
|
+
* this module re-exports.
|
|
9
6
|
*/
|
|
10
|
-
import type {
|
|
11
|
-
|
|
12
|
-
export interface Hcl2Json {
|
|
13
|
-
parse: (filename: string, hcl: string) => Promise<Hcl2JsonTree>;
|
|
14
|
-
/** Expression-AST reference extraction (#998) — one traversal accessor per reference. */
|
|
15
|
-
getReferencesInExpression: (filename: string, expression: string) => Promise<Array<{
|
|
16
|
-
value: string;
|
|
17
|
-
}>>;
|
|
18
|
-
}
|
|
19
|
-
export declare class Hcl2JsonNotInstalled extends Error {
|
|
20
|
-
constructor(cause: unknown);
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* The environment variable that turns on parser-input recording (chant #2483).
|
|
24
|
-
*
|
|
25
|
-
* When set to a file path, every `parse(filename, source)` and every
|
|
26
|
-
* `getReferencesInExpression(filename, expression)` this process makes is
|
|
27
|
-
* appended to that file as one JSON line before the real call runs. That is
|
|
28
|
-
* how `scripts/check-hcl-parser-parity.ts` gets hold of the inline HCL the
|
|
29
|
-
* test suite parses, which no corpus walk on disk would find: run the suite
|
|
30
|
-
* with this set, then replay the file through two parsers and compare. Off
|
|
31
|
-
* unless set, and never changes a result.
|
|
32
|
-
*/
|
|
33
|
-
export declare const HCL2JSON_RECORD_ENV = "CHANT_HCL2JSON_RECORD";
|
|
34
|
-
/** One recorded parser input, as {@link HCL2JSON_RECORD_ENV} writes it. */
|
|
35
|
-
export interface Hcl2JsonRecordLine {
|
|
36
|
-
kind: "parse" | "refs";
|
|
37
|
-
filename: string;
|
|
38
|
-
text: string;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Lazy-load the optional HCL parser. Throws `Hcl2JsonNotInstalled` with an
|
|
42
|
-
* install hint when the package is missing, rather than a raw MODULE_NOT_FOUND.
|
|
43
|
-
*/
|
|
44
|
-
export declare function loadHcl2json(): Promise<Hcl2Json>;
|
|
7
|
+
import type { TfGraph } from "./types.js";
|
|
8
|
+
export { loadHcl2json, Hcl2JsonNotInstalled, HCL2JSON_RECORD_ENV, type Hcl2Json, type Hcl2JsonRecordLine, } from "./hcl2json.js";
|
|
45
9
|
export interface ParseTerraformOptions {
|
|
46
10
|
/** Opt-in `.tfstate` path (#214 T2): overlays state-expanded instance counts. */
|
|
47
11
|
statePath?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/terraform/parse.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/terraform/parse.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAgB,OAAO,EAAE,MAAM,SAAS,CAAC;AAErD,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,KAAK,QAAQ,EACb,KAAK,kBAAkB,GACxB,MAAM,YAAY,CAAC;AAqDpB,MAAM,WAAW,qBAAqB;IACpC,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,qBAA0B,GAAG,OAAO,CAAC,OAAO,CAAC,CAWvG"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `chant workspace box`: a member's box block. Two verbs:
|
|
3
|
+
*
|
|
4
|
+
* - `box listing set <member>` (#3308) changes the box's listing
|
|
5
|
+
* (`box-listing.ts`). A box's other configuration is changed by editing the
|
|
6
|
+
* declaration in a reviewed change.
|
|
7
|
+
* - `box publish <member> <item> | --records` (#3165, ws-088) runs the
|
|
8
|
+
* publisher the box block names and checks what it did (`box-publish.ts`).
|
|
9
|
+
*/
|
|
10
|
+
import type { CommandContext } from "../cli/registry.js";
|
|
11
|
+
export declare function runWorkspaceBox(ctx: CommandContext): Promise<number>;
|
|
12
|
+
//# sourceMappingURL=box-cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"box-cli.d.ts","sourceRoot":"","sources":["../../src/workspace/box-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAStD,wBAAsB,eAAe,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAqD1E"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* workspace and an infra workspace with a factory and no box services both
|
|
10
10
|
* read and check cleanly; they just aren't plantable.
|
|
11
11
|
*/
|
|
12
|
-
import type { BoxFactory, BoxListing, Declaration, FactoryCheckKind } from "./declaration.js";
|
|
12
|
+
import type { BoxFactory, BoxListing, Declaration, FactoryCheckKind, FactoryTier } from "./declaration.js";
|
|
13
13
|
import type { WorkspaceTree } from "./tree.js";
|
|
14
14
|
/** Why a workspace isn't plantable. Closed. */
|
|
15
15
|
export declare const PLANTABLE_REASON_CODES: readonly ["box-none", "box-several"];
|
|
@@ -36,6 +36,18 @@ export interface FactoryView {
|
|
|
36
36
|
} | null;
|
|
37
37
|
checks: string | null;
|
|
38
38
|
builders: string | null;
|
|
39
|
+
/** Which builder agent builds at which tier, as declared (#3152, ws-094); empty when none is. */
|
|
40
|
+
tiers: FactoryTier[];
|
|
41
|
+
/**
|
|
42
|
+
* The builder for each member the factory builds, by tier (#3152): the
|
|
43
|
+
* entry for the tier that names the member's kind, else the tier's entry
|
|
44
|
+
* with no kinds. A tier with no entry for the member is left out, so a
|
|
45
|
+
* reader resolves a work item's tier with one lookup, without studio.
|
|
46
|
+
*/
|
|
47
|
+
builderFor: Record<string, Record<string, {
|
|
48
|
+
agent: string;
|
|
49
|
+
session: string | null;
|
|
50
|
+
}>>;
|
|
39
51
|
publish: {
|
|
40
52
|
forge: "github";
|
|
41
53
|
repo: string;
|
|
@@ -57,7 +69,16 @@ export interface ListingView {
|
|
|
57
69
|
}
|
|
58
70
|
/** Whether the declaration is plantable (#3146): exactly one member's box block declares services. */
|
|
59
71
|
export declare function plantability(declaration: Declaration): Plantable;
|
|
60
|
-
|
|
72
|
+
/** A box's factory as the read contract prints it. `members` gives each built member's kind, for `builderFor`. */
|
|
73
|
+
export declare function factoryView(f: BoxFactory | null, members?: readonly {
|
|
74
|
+
name: string;
|
|
75
|
+
kind: string;
|
|
76
|
+
}[]): FactoryView | null;
|
|
77
|
+
/** The builder table (#3152): for each built member, each tier's agent, by the member's kind first and the tier's default second. */
|
|
78
|
+
export declare function builderTable(f: BoxFactory, members: readonly {
|
|
79
|
+
name: string;
|
|
80
|
+
kind: string;
|
|
81
|
+
}[]): FactoryView["builderFor"];
|
|
61
82
|
/** The listing, hashing the cover through `read` (bytes, or null when the file can't be read). */
|
|
62
83
|
export declare function listingView(l: BoxListing | null, read: (path: string) => Uint8Array | null): ListingView | null;
|
|
63
84
|
/** A reader of a file's bytes in `tree` for {@link listingView}: null when the file can't be read. */
|
|
@@ -66,7 +87,10 @@ export declare function treeBytes(tree: WorkspaceTree): (path: string) => Uint8A
|
|
|
66
87
|
export declare function graphBox(box: {
|
|
67
88
|
factory: BoxFactory | null;
|
|
68
89
|
listing: BoxListing | null;
|
|
69
|
-
} | null, tree: WorkspaceTree
|
|
90
|
+
} | null, tree: WorkspaceTree, members?: readonly {
|
|
91
|
+
name: string;
|
|
92
|
+
kind: string;
|
|
93
|
+
}[]): {
|
|
70
94
|
factory: FactoryView | null;
|
|
71
95
|
listing: ListingView | null;
|
|
72
96
|
} | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"box-factory.d.ts","sourceRoot":"","sources":["../../src/workspace/box-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"box-factory.d.ts","sourceRoot":"","sources":["../../src/workspace/box-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `chant workspace box listing set <member>` (#3308): change a box's listing,
|
|
3
|
+
* `members[i].box.listing` in the declaration (#3146, ws-077), through chant.
|
|
4
|
+
*
|
|
5
|
+
* ws-074 makes the repo the database and lets a tool write only through
|
|
6
|
+
* chant's write contract. The listing is configuration on the box block, so
|
|
7
|
+
* before this a tool such as hud would have had to edit `chant.workspace.json`
|
|
8
|
+
* itself. This write changes only the listing's own properties, in place, so
|
|
9
|
+
* the file keeps its formatting, key order and, in a `.jsonc` file, its
|
|
10
|
+
* comments. It can copy a cover image into the repository and point the
|
|
11
|
+
* listing at it. It validates the declaration it would write, judges every
|
|
12
|
+
* path it writes by the write scope at base (`judgePath`, the rule `check
|
|
13
|
+
* --changes` applies to the commit later), refuses a bare `--by` name under
|
|
14
|
+
* `identity.attribution: "identified"` (ws-080), prints one JSON document
|
|
15
|
+
* (`box-listing-write.schema.json`) and never commits: the caller commits, as
|
|
16
|
+
* after the records writes. Like them it holds the working tree's write lock
|
|
17
|
+
* (#3173, ws-089) from reading the declaration to writing it.
|
|
18
|
+
*/
|
|
19
|
+
import { type ListingView } from "./box-factory.js";
|
|
20
|
+
/** The version of the document this write prints. */
|
|
21
|
+
export declare const BOX_LISTING_CONTRACT_VERSION = 1;
|
|
22
|
+
/** `$id` of the JSON Schema for what `box listing set` prints, shipped beside this file. */
|
|
23
|
+
export declare const BOX_LISTING_WRITE_SCHEMA_ID = "https://intentius.io/chant/schemas/workspace/box-listing-write/v1/box-listing-write.schema.json";
|
|
24
|
+
/** Why a listing write wrote nothing. Closed. */
|
|
25
|
+
export declare const BOX_LISTING_ERROR_CODES: readonly ["declaration-missing", "declaration-ambiguous", "declaration-unparseable", "declaration-invalid", "placement-invalid", "reader-too-old", "root-chant-required", "not-a-git-repository", "revision-unknown", "write-usage-invalid", "write-input-invalid", "listing-member-unknown", "listing-box-missing", "listing-cover-invalid", "write-scope-member", "write-scope-protected", "write-scope-class-unknown", "agent-unknown", "principal-unidentified", "write-lock-timeout", "write-lock-not-held"];
|
|
26
|
+
export type BoxListingErrorCode = (typeof BOX_LISTING_ERROR_CODES)[number];
|
|
27
|
+
/** The listing properties a write may set. Any `x-` key is passed through as well. */
|
|
28
|
+
export declare const LISTING_FIELDS: readonly ["published", "title", "line", "cover"];
|
|
29
|
+
/** The largest cover image the write copies, in bytes. */
|
|
30
|
+
export declare const COVER_MAX_BYTES: number;
|
|
31
|
+
/** What `box listing set` prints. */
|
|
32
|
+
export type BoxListingWriteDocument = {
|
|
33
|
+
$schema: string;
|
|
34
|
+
contract: number;
|
|
35
|
+
chant: string;
|
|
36
|
+
member: string;
|
|
37
|
+
/** The declaration file, from the repository root, and the sha256 of its bytes after the write (or as it would be, with dryRun). */
|
|
38
|
+
declaration: {
|
|
39
|
+
path: string;
|
|
40
|
+
sha256: string;
|
|
41
|
+
};
|
|
42
|
+
/** Every file the write changed, from the repository root: the declaration and the cover it copied. Empty when nothing changed. */
|
|
43
|
+
paths: string[];
|
|
44
|
+
changed: boolean;
|
|
45
|
+
dryRun: boolean;
|
|
46
|
+
/** The listing before the write, as status --json prints it, or null when the box declared none. */
|
|
47
|
+
previous: ListingView | null;
|
|
48
|
+
/** The listing after the write, as status --json prints it. */
|
|
49
|
+
listing: ListingView;
|
|
50
|
+
/** The cover copied with --cover, or null. */
|
|
51
|
+
cover: {
|
|
52
|
+
path: string;
|
|
53
|
+
sha256: string;
|
|
54
|
+
bytes: number;
|
|
55
|
+
type: string;
|
|
56
|
+
replaced: string | null;
|
|
57
|
+
} | null;
|
|
58
|
+
} | {
|
|
59
|
+
$schema: string;
|
|
60
|
+
contract: number;
|
|
61
|
+
chant: string;
|
|
62
|
+
member: string | null;
|
|
63
|
+
error: {
|
|
64
|
+
code: BoxListingErrorCode;
|
|
65
|
+
message: string;
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
export interface BoxListingWriteRequest {
|
|
69
|
+
cwd: string;
|
|
70
|
+
member: string;
|
|
71
|
+
/** The listing fields as JSON text (`--from`), or undefined. */
|
|
72
|
+
fields?: string;
|
|
73
|
+
/** An image to copy in as the cover (`--cover`), from `cwd`. */
|
|
74
|
+
cover?: string;
|
|
75
|
+
/** Where to copy it, from the workspace root (`--cover-path`). */
|
|
76
|
+
coverPath?: string;
|
|
77
|
+
/** Who is writing (`--by`). */
|
|
78
|
+
by?: string;
|
|
79
|
+
/** The agent session (`CHANT_AGENT`). */
|
|
80
|
+
agent?: string;
|
|
81
|
+
dryRun?: boolean;
|
|
82
|
+
}
|
|
83
|
+
/** Run the write and build the document it prints. Never throws for a refusal. */
|
|
84
|
+
export declare function boxListingSet(req: BoxListingWriteRequest): BoxListingWriteDocument;
|
|
85
|
+
//# sourceMappingURL=box-listing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"box-listing.d.ts","sourceRoot":"","sources":["../../src/workspace/box-listing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,EAA0B,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAWzE,qDAAqD;AACrD,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAE9C,4FAA4F;AAC5F,eAAO,MAAM,2BAA2B,oGAAoG,CAAC;AAE7I,iDAAiD;AACjD,eAAO,MAAM,uBAAuB,mfAaM,CAAC;AAC3C,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3E,sFAAsF;AACtF,eAAO,MAAM,cAAc,YAAI,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAU,CAAC;AAE/E,0DAA0D;AAC1D,eAAO,MAAM,eAAe,QAAkB,CAAC;AAe/C,qCAAqC;AACrC,MAAM,MAAM,uBAAuB,GAC/B;IACE,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,oIAAoI;IACpI,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,mIAAmI;IACnI,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,oGAAoG;IACpG,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B,+DAA+D;IAC/D,OAAO,EAAE,WAAW,CAAC;IACrB,8CAA8C;IAC9C,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;CACtG,GACD;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE;QAAE,IAAI,EAAE,mBAAmB,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAEvI,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AA4DD,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,GAAG,EAAE,sBAAsB,GAAG,uBAAuB,CAclF"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `chant workspace box publish <member> <item> | --records` (#3165, ws-088):
|
|
3
|
+
* the one call a surface such as hud makes to publish a box's work.
|
|
4
|
+
*
|
|
5
|
+
* Publishing is the orchestrator's: studio's kit merges a built work item's
|
|
6
|
+
* branch into the box's checkout, pushes it to the box's `factory.publish`
|
|
7
|
+
* repo through its broker, opens the pull request, and sends the records a
|
|
8
|
+
* person kept uncommitted. The box block names the command that does it,
|
|
9
|
+
* `box.publisher`, so nothing is injected into a surface's environment.
|
|
10
|
+
*
|
|
11
|
+
* chant does none of that work. It reads the publisher from the declaration,
|
|
12
|
+
* applies the identity rule to `--by` (ws-080), runs the publisher from the
|
|
13
|
+
* workspace root with no shell and a JSON request on stdin, reads the last
|
|
14
|
+
* JSON object it prints, and checks the commit it names for the apply record
|
|
15
|
+
* of ws-075: `Chant-Applied-By` naming `--by`, `Chant-Applied-At`,
|
|
16
|
+
* `Chant-Applied-Commit` and a `Chant-Record` for the item, or a
|
|
17
|
+
* `Chant-Record` for each record sent. It prints one document,
|
|
18
|
+
* `box-publish.schema.json`, and never commits, pushes or calls a forge.
|
|
19
|
+
*
|
|
20
|
+
* The publisher's protocol, which `box-publish.schema.json` also states:
|
|
21
|
+
*
|
|
22
|
+
* - stdin: one JSON object, `$defs.request`.
|
|
23
|
+
* - exit 0 and a JSON object on the last line of stdout that holds one:
|
|
24
|
+
* `$defs.answer`, with `ok: true`.
|
|
25
|
+
* - exit 2: a refusal, nothing was published, stderr says why.
|
|
26
|
+
* - any other exit: a failure, stderr says why and what was done.
|
|
27
|
+
*/
|
|
28
|
+
import { type FactoryView } from "./box-factory.js";
|
|
29
|
+
/** The version of the document this command prints, and of the request it gives a publisher. */
|
|
30
|
+
export declare const BOX_PUBLISH_CONTRACT_VERSION = 1;
|
|
31
|
+
/** `$id` of the JSON Schema for what `box publish` prints, shipped beside this file. */
|
|
32
|
+
export declare const BOX_PUBLISH_SCHEMA_ID = "https://intentius.io/chant/schemas/workspace/box-publish/v1/box-publish.schema.json";
|
|
33
|
+
/** How long a publisher may run before chant stops it: a push and a pull request through a broker, with room to spare. */
|
|
34
|
+
export declare const PUBLISH_TIMEOUT_MS = 600000;
|
|
35
|
+
/** Why a publish printed no result. Closed. */
|
|
36
|
+
export declare const BOX_PUBLISH_ERROR_CODES: readonly ["declaration-missing", "declaration-ambiguous", "declaration-unparseable", "declaration-invalid", "placement-invalid", "reader-too-old", "root-chant-required", "not-a-git-repository", "revision-unknown", "write-usage-invalid", "publish-member-unknown", "publish-none", "publish-refused", "publish-failed", "publish-answer-invalid", "publish-unrecorded", "principal-unidentified"];
|
|
37
|
+
export type BoxPublishErrorCode = (typeof BOX_PUBLISH_ERROR_CODES)[number];
|
|
38
|
+
/** What a publish is asked to do: one built work item, or the records kept uncommitted. */
|
|
39
|
+
export type PublishAction = "item" | "records";
|
|
40
|
+
/** A record a publisher sent, or would send with dryRun. */
|
|
41
|
+
export interface PublishedRecord {
|
|
42
|
+
kind: string;
|
|
43
|
+
id: string;
|
|
44
|
+
path: string;
|
|
45
|
+
title: string | null;
|
|
46
|
+
}
|
|
47
|
+
/** The pull request a publisher opened, or found already open. */
|
|
48
|
+
export interface PublishedPullRequest {
|
|
49
|
+
url: string;
|
|
50
|
+
number: number;
|
|
51
|
+
branch: string;
|
|
52
|
+
base: string;
|
|
53
|
+
/** owner/name of the fork the branch was pushed to, or null when it went to the repo itself. */
|
|
54
|
+
head: string | null;
|
|
55
|
+
}
|
|
56
|
+
/** What chant writes on the publisher's stdin. */
|
|
57
|
+
export interface PublishRequest {
|
|
58
|
+
contract: number;
|
|
59
|
+
action: PublishAction;
|
|
60
|
+
member: string;
|
|
61
|
+
item: string | null;
|
|
62
|
+
by: string | null;
|
|
63
|
+
head: string | null;
|
|
64
|
+
dryRun: boolean;
|
|
65
|
+
workspace: {
|
|
66
|
+
root: string;
|
|
67
|
+
};
|
|
68
|
+
/** The workspace's factory as status --json prints it, or null when no box declares one. */
|
|
69
|
+
factory: FactoryView | null;
|
|
70
|
+
}
|
|
71
|
+
/** The publisher's answer, checked and with every field present. */
|
|
72
|
+
export interface PublishAnswer {
|
|
73
|
+
commit: string | null;
|
|
74
|
+
records: PublishedRecord[];
|
|
75
|
+
pullRequest: PublishedPullRequest | null;
|
|
76
|
+
pushed: {
|
|
77
|
+
branch: string;
|
|
78
|
+
repo: string;
|
|
79
|
+
} | null;
|
|
80
|
+
local: string | null;
|
|
81
|
+
}
|
|
82
|
+
/** What `box publish` prints. */
|
|
83
|
+
export type BoxPublishDocument = ({
|
|
84
|
+
$schema: string;
|
|
85
|
+
contract: number;
|
|
86
|
+
chant: string;
|
|
87
|
+
member: string;
|
|
88
|
+
action: PublishAction;
|
|
89
|
+
item: string | null;
|
|
90
|
+
by: string | null;
|
|
91
|
+
dryRun: boolean;
|
|
92
|
+
/** The publisher as the box block declares it. */
|
|
93
|
+
publisher: string;
|
|
94
|
+
/** The apply record read back from the commit's trailers, for an item; null for records and with dryRun. */
|
|
95
|
+
applied: {
|
|
96
|
+
by: string;
|
|
97
|
+
at: string;
|
|
98
|
+
commit: string;
|
|
99
|
+
} | null;
|
|
100
|
+
/** The publisher's answer as it printed it, x- fields and all. */
|
|
101
|
+
answer: Record<string, unknown>;
|
|
102
|
+
} & PublishAnswer) | {
|
|
103
|
+
$schema: string;
|
|
104
|
+
contract: number;
|
|
105
|
+
chant: string;
|
|
106
|
+
member: string | null;
|
|
107
|
+
action: PublishAction | null;
|
|
108
|
+
item: string | null;
|
|
109
|
+
error: {
|
|
110
|
+
code: BoxPublishErrorCode;
|
|
111
|
+
message: string;
|
|
112
|
+
};
|
|
113
|
+
/** The publisher's answer when it printed one and something about it was refused. */
|
|
114
|
+
answer?: Record<string, unknown>;
|
|
115
|
+
};
|
|
116
|
+
export interface BoxPublishRequest {
|
|
117
|
+
cwd: string;
|
|
118
|
+
member: string;
|
|
119
|
+
/** The work item to publish; absent with `records`. */
|
|
120
|
+
item?: string;
|
|
121
|
+
/** Publish the records kept uncommitted instead of an item (`--records`). */
|
|
122
|
+
records?: boolean;
|
|
123
|
+
/** Who publishes (`--by`); required unless dryRun. */
|
|
124
|
+
by?: string;
|
|
125
|
+
/** A fork to push to, as owner/name (`--head`). */
|
|
126
|
+
head?: string;
|
|
127
|
+
/** Ask the publisher what would be published, and publish nothing (`--dry-run`). */
|
|
128
|
+
dryRun?: boolean;
|
|
129
|
+
/** The agent session (`CHANT_AGENT`). */
|
|
130
|
+
agent?: string;
|
|
131
|
+
/** The environment the publisher runs with; the caller's when absent. */
|
|
132
|
+
env?: NodeJS.ProcessEnv;
|
|
133
|
+
timeoutMs?: number;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Split a command into words as a POSIX shell splits plain words: blanks
|
|
137
|
+
* separate words, single quotes keep everything, double quotes keep
|
|
138
|
+
* everything but `\\`, `\"`, `\$` and `` \` ``, and a backslash outside quotes
|
|
139
|
+
* escapes the next character. Nothing else a shell does (variables, `~`,
|
|
140
|
+
* globs, pipes, redirection) happens: those characters are part of a word.
|
|
141
|
+
*/
|
|
142
|
+
export declare function splitCommand(text: string): string[];
|
|
143
|
+
/** The publisher's answer, checked field by field, or a reason it is not one. */
|
|
144
|
+
export declare function readAnswer(answer: Record<string, unknown>): PublishAnswer | string;
|
|
145
|
+
/** Run the publish and build the document it prints. Never throws for a refusal. */
|
|
146
|
+
export declare function boxPublish(req: BoxPublishRequest): BoxPublishDocument;
|
|
147
|
+
//# sourceMappingURL=box-publish.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"box-publish.d.ts","sourceRoot":"","sources":["../../src/workspace/box-publish.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The broker protocol for box capabilities, version 1 (#3164, ws-097).
|
|
3
|
+
*
|
|
4
|
+
* A box holds no credential (#2726). Each capability its box block declares,
|
|
5
|
+
* `{ name, broker, scope }`, is reached through a broker: a runtime that
|
|
6
|
+
* holds the credential, swaps the box's own token for it, and refuses what
|
|
7
|
+
* the box's declaration does not allow. chant never runs a broker (ws-052,
|
|
8
|
+
* ws-086). It specifies one here, so studio's lobby, fountain's broker or a
|
|
9
|
+
* self-hosted one serve the same box without the box changing its
|
|
10
|
+
* declaration, and `runBrokerConformance` in
|
|
11
|
+
* `@intentius/chant/workspace/conformance` checks an implementation.
|
|
12
|
+
*
|
|
13
|
+
* Every route is relative to the broker's base URL, and every request
|
|
14
|
+
* carries the box's own token: `Authorization: Bearer <token>`, or for
|
|
15
|
+
* inference `x-api-key: <token>` as the Anthropic SDK sends it, or for egress
|
|
16
|
+
* wherever the API expects its key. How a box gets its token (studio's
|
|
17
|
+
* door claiming it, fountain's sandbox callback token) is the broker's own.
|
|
18
|
+
*
|
|
19
|
+
* | Route | Capability, scope word | Does |
|
|
20
|
+
* |---|---|---|
|
|
21
|
+
* | `POST /api/box/declaration` | none | the box's steward reports its block's capabilities (`declarationReport`) |
|
|
22
|
+
* | `/llm/anthropic/...` | `inference`, `agent` | the Anthropic API, with the payer's credential in place of the box's token |
|
|
23
|
+
* | `POST /decide/v1/systemone` | `inference`, `decide` | chant's decide wire format (op/decide-backend.ts), answers with `reason` (#3345) |
|
|
24
|
+
* | `/egress/<NAME>/...` | `egress`, `<NAME>` | the secret's one host, with the secret's value in place of the box's token |
|
|
25
|
+
* | `POST /api/feedback` | `feedback`, `agent` for `entries` and `passive` for `counts` | the box's agents' feedback (studio#257) |
|
|
26
|
+
* | `/fountain/api/...` | `fountain`, `agent`, `conversations`, `sandboxes`, `vault` | Fountain's API, with the operator's Fountain key |
|
|
27
|
+
*
|
|
28
|
+
* A broker may say whose credential pays (#3474, ws-098): `payer` on the
|
|
29
|
+
* declaration's answer and the `chant-payer` header on each inference and
|
|
30
|
+
* decide answer ({@link BrokerPayer}). It is optional within version 1.
|
|
31
|
+
* A box names whose turn a request is with a `chant-grant` header the broker
|
|
32
|
+
* issued (#3477, ws-099); the broker then may spend that person's credential.
|
|
33
|
+
*
|
|
34
|
+
* The rule every broker keeps: a request that needs scope word `w` of
|
|
35
|
+
* capability `c` is refused with a 403 unless the box's last report holds an
|
|
36
|
+
* entry named `c`, brokered by this broker, whose scope lists `w`. A box that
|
|
37
|
+
* has never reported is refused. The refusal's message names `c` and `w`, so
|
|
38
|
+
* whoever reads it knows which entry to add. The box's token never reaches
|
|
39
|
+
* an upstream, and the credential or secret never comes back to the box.
|
|
40
|
+
*
|
|
41
|
+
* The `broker` word in a box block names the broker the box reaches, not an
|
|
42
|
+
* implementation: an implementation is configured with the word it answers
|
|
43
|
+
* for (`lobby` for studio's), so a box moves between implementations by
|
|
44
|
+
* where its broker URL points.
|
|
45
|
+
*
|
|
46
|
+
* A capability a lexicon or a runtime adds is a {@link BrokerCapabilitySpec}:
|
|
47
|
+
* its own route prefix, and a function from a request to the scope words it
|
|
48
|
+
* needs. `runBrokerConformance` takes extra specs and holds them to the same
|
|
49
|
+
* rule.
|
|
50
|
+
*/
|
|
51
|
+
/** The protocol's version, carried by the schema's `$id`. */
|
|
52
|
+
export declare const BROKER_PROTOCOL_VERSION = 1;
|
|
53
|
+
/** The bodies' schema, beside this module. */
|
|
54
|
+
export declare const BROKER_PROTOCOL_SCHEMA = "broker-protocol.schema.json";
|
|
55
|
+
/** The routes, relative to the broker's base URL. */
|
|
56
|
+
export declare const BROKER_ROUTES: {
|
|
57
|
+
readonly declaration: "/api/box/declaration";
|
|
58
|
+
readonly inference: "/llm/anthropic";
|
|
59
|
+
readonly decide: "/decide/v1/systemone";
|
|
60
|
+
readonly egress: "/egress";
|
|
61
|
+
readonly feedback: "/api/feedback";
|
|
62
|
+
readonly fountain: "/fountain";
|
|
63
|
+
};
|
|
64
|
+
/** What the Anthropic API proxy forwards, under {@link BROKER_ROUTES.inference}. Anything else is a 404. */
|
|
65
|
+
export declare const INFERENCE_FORWARDED: readonly [{
|
|
66
|
+
readonly method: "POST";
|
|
67
|
+
readonly path: RegExp;
|
|
68
|
+
}, {
|
|
69
|
+
readonly method: "GET";
|
|
70
|
+
readonly path: RegExp;
|
|
71
|
+
}];
|
|
72
|
+
/** A secret's name in an egress path, and so a word of the `egress` scope. */
|
|
73
|
+
export declare const EGRESS_SECRET_NAME: RegExp;
|
|
74
|
+
/** The limits on a declaration report. */
|
|
75
|
+
export declare const DECLARATION_LIMITS: {
|
|
76
|
+
readonly bytes: number;
|
|
77
|
+
readonly capabilities: 20;
|
|
78
|
+
readonly scopeWords: 50;
|
|
79
|
+
readonly wordLength: 64;
|
|
80
|
+
};
|
|
81
|
+
/** A capability's name, as the declaration's kind-name grammar and the lobby both allow it. */
|
|
82
|
+
export declare const CAPABILITY_NAME: RegExp;
|
|
83
|
+
/** A request as a broker sees it, for {@link BrokerCapabilitySpec.scopes}. */
|
|
84
|
+
export interface BrokerRequest {
|
|
85
|
+
method: string;
|
|
86
|
+
/** The path from the broker's base URL, without the query. */
|
|
87
|
+
path: string;
|
|
88
|
+
/** The parsed JSON body, when the route reads one. */
|
|
89
|
+
body?: unknown;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* One capability's broker side: the route prefixes it owns, the scope words
|
|
93
|
+
* it knows, and the words a request needs.
|
|
94
|
+
*/
|
|
95
|
+
export interface BrokerCapabilitySpec {
|
|
96
|
+
name: string;
|
|
97
|
+
/** Path prefixes, from the broker's base URL, this capability owns. */
|
|
98
|
+
routes: readonly string[];
|
|
99
|
+
/** The scope words and what each lets the box reach. `"<NAME>"` stands for an open set, such as egress's secret names. */
|
|
100
|
+
scopeWords: Readonly<Record<string, string>>;
|
|
101
|
+
/**
|
|
102
|
+
* The scope words `request` needs, all of them; `[]` when it needs none
|
|
103
|
+
* (inference's `/api/hello`); null when the request is not this
|
|
104
|
+
* capability's, or names nothing the capability serves (a 404).
|
|
105
|
+
*/
|
|
106
|
+
scopes(request: BrokerRequest): string[] | null;
|
|
107
|
+
}
|
|
108
|
+
/** `inference`: the model proxy (`agent`) and the decide endpoint (`decide`). */
|
|
109
|
+
export declare const INFERENCE_CAPABILITY: BrokerCapabilitySpec;
|
|
110
|
+
/** `egress`: a secret the broker holds, used against its one host, by name. */
|
|
111
|
+
export declare const EGRESS_CAPABILITY: BrokerCapabilitySpec;
|
|
112
|
+
/** The scope words a feedback batch needs: `agent` for entries, `passive` for counts. */
|
|
113
|
+
export declare function feedbackScopes(body: unknown): string[];
|
|
114
|
+
/** `feedback`: the box's agents' feedback (studio#257, hud RFC-009). */
|
|
115
|
+
export declare const FEEDBACK_CAPABILITY: BrokerCapabilitySpec;
|
|
116
|
+
/** `fountain`: Fountain's API, on the operator's key, for the box's own conversations, sandboxes and vault. */
|
|
117
|
+
export declare const FOUNTAIN_CAPABILITY: BrokerCapabilitySpec;
|
|
118
|
+
/** The standard capabilities, by name. */
|
|
119
|
+
export declare const STANDARD_CAPABILITIES: Readonly<Record<string, BrokerCapabilitySpec>>;
|
|
120
|
+
/** A capability as a broker keeps it from a report. */
|
|
121
|
+
export interface KeptCapability {
|
|
122
|
+
name: string;
|
|
123
|
+
broker: string;
|
|
124
|
+
scope: string[];
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Whose credential pays for a box's model calls (#3474, ws-098): `shared`, a
|
|
128
|
+
* credential neither the box's owner nor its visitor owns (a house or
|
|
129
|
+
* operator key); `owner`, the box owner's own; `visitor`, the credential a
|
|
130
|
+
* person brought for this box. `principal` is the payer in ws-080's form
|
|
131
|
+
* (`github:<login>`) when the broker knows them. A broker that does not say
|
|
132
|
+
* leaves it out, and a box reads that as unknown.
|
|
133
|
+
*/
|
|
134
|
+
export interface BrokerPayer {
|
|
135
|
+
kind: "shared" | "owner" | "visitor";
|
|
136
|
+
principal?: string | null;
|
|
137
|
+
}
|
|
138
|
+
/** The payer kinds, in the protocol's order. */
|
|
139
|
+
export declare const PAYER_KINDS: readonly ["shared", "owner", "visitor"];
|
|
140
|
+
/** The response header that carries the payer on each answer from `/llm/anthropic` and `/decide`: `<kind>` or `<kind> <principal>`. */
|
|
141
|
+
export declare const PAYER_HEADER = "chant-payer";
|
|
142
|
+
/**
|
|
143
|
+
* The request header a box sends on an inference or decide request made on a
|
|
144
|
+
* person's turn (#3477, ws-099): a grant the broker itself issued to that
|
|
145
|
+
* person for this box, which the person's browser carried to the box's
|
|
146
|
+
* surface. Opaque to chant and to the box. The broker checks its own grant
|
|
147
|
+
* (issued by it, for the box whose token the request carries, not expired or
|
|
148
|
+
* revoked, the person still holding a credential), spends the person's
|
|
149
|
+
* credential, and answers `chant-payer: visitor <principal>`. A grant it does
|
|
150
|
+
* not accept is ignored, not refused: the request is paid as it would have
|
|
151
|
+
* been without one, and the payer header says so.
|
|
152
|
+
*/
|
|
153
|
+
export declare const GRANT_HEADER = "chant-grant";
|
|
154
|
+
/** The longest grant a box sends, in characters; a broker may refuse a longer header as malformed. */
|
|
155
|
+
export declare const GRANT_MAX_LENGTH = 2048;
|
|
156
|
+
/** Whether `value` is a grant a box may send: printable ASCII without spaces, at most {@link GRANT_MAX_LENGTH} long. */
|
|
157
|
+
export declare function isGrantValue(value: unknown): value is string;
|
|
158
|
+
/** A payer as the header carries it. */
|
|
159
|
+
export declare function formatPayerHeader(payer: BrokerPayer): string;
|
|
160
|
+
/** The payer a `chant-payer` header value names, or undefined when it names none the protocol knows. */
|
|
161
|
+
export declare function parsePayerHeader(value: string | null | undefined): BrokerPayer | undefined;
|
|
162
|
+
/** The payer in a `declarationKept` answer (or any object with a `payer` field), or undefined when it has none or a malformed one. */
|
|
163
|
+
export declare function payerOf(body: unknown): BrokerPayer | undefined;
|
|
164
|
+
/** What a broker keeps of a box's last report, and, when it says, who pays (#3474). */
|
|
165
|
+
export interface KeptDeclaration {
|
|
166
|
+
capabilities: KeptCapability[];
|
|
167
|
+
at: string;
|
|
168
|
+
payer?: BrokerPayer;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* A report's body, checked, kept to the entries that name `broker`; or the
|
|
172
|
+
* reason it is refused with a 400. The same rules as studio's lobby
|
|
173
|
+
* (`lobby/capabilities.mjs`).
|
|
174
|
+
*/
|
|
175
|
+
export declare function parseDeclarationReport(body: unknown, broker: string): {
|
|
176
|
+
capabilities: KeptCapability[];
|
|
177
|
+
} | {
|
|
178
|
+
error: string;
|
|
179
|
+
};
|
|
180
|
+
/**
|
|
181
|
+
* Why `declared` (the box's last report, or undefined when it never sent
|
|
182
|
+
* one) does not allow scope word `word` of `capability` through `broker`,
|
|
183
|
+
* naming the entry that would; null when it does.
|
|
184
|
+
*/
|
|
185
|
+
export declare function declaredRefusal(declared: {
|
|
186
|
+
capabilities?: readonly KeptCapability[];
|
|
187
|
+
} | undefined, broker: string, capability: string, word: string): string | null;
|
|
188
|
+
/** The message of a refusal body (`{ error: string }` or `{ error: { message } }`), or undefined when it is not one. */
|
|
189
|
+
export declare function refusalMessage(body: unknown): string | undefined;
|
|
190
|
+
//# sourceMappingURL=broker-protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broker-protocol.d.ts","sourceRoot":"","sources":["../../src/workspace/broker-protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checks.d.ts","sourceRoot":"","sources":["../../src/workspace/checks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAsD,KAAK,WAAW,EAAkC,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AACzJ,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,
|
|
1
|
+
{"version":3,"file":"checks.d.ts","sourceRoot":"","sources":["../../src/workspace/checks.ts"],"names":[],"mappings":"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"}
|
|
@@ -61,7 +61,7 @@ export type CompositesReasonCode = (typeof COMPOSITES_REASON_CODES)[number];
|
|
|
61
61
|
/** Why a member's runtimes are only `local`, or leave out a lexicon its config lists (#2674). Closed. */
|
|
62
62
|
export declare const COMPOSITES_RUNTIME_REASON_CODES: readonly ["runtimes-config-unreadable", "runtimes-lexicon-unreadable"];
|
|
63
63
|
/** Why a member's environments are only `local`, or leave out one its ledger has (#2695). Closed. */
|
|
64
|
-
export declare const COMPOSITES_ENVIRONMENT_REASON_CODES: readonly ["runtimes-config-unreadable", "environments-none-declared", "environments-ledger-undeclared", "environments-ledger-unreadable"];
|
|
64
|
+
export declare const COMPOSITES_ENVIRONMENT_REASON_CODES: readonly ["runtimes-config-unreadable", "environments-none-declared", "environments-ledger-undeclared", "environments-ledger-unreadable", "environments-component-undeclared"];
|
|
65
65
|
export interface CompositesMember {
|
|
66
66
|
name: string;
|
|
67
67
|
dir: string;
|
|
@@ -88,7 +88,7 @@ export interface ComponentEntry {
|
|
|
88
88
|
file: string | null;
|
|
89
89
|
/** The runtimes it can deploy on: `local` first, then each hosting lexicon its member configures. */
|
|
90
90
|
runtimes: ComponentRuntime[];
|
|
91
|
-
/** The environments it may deploy to: `local` first, then the config's, then the ledger's. */
|
|
91
|
+
/** The environments it may deploy to: `local` first, then the config's, then the ledger's, then the ones only the component declares, each with the site the component declares for it. */
|
|
92
92
|
environments: ComponentEnvironment[];
|
|
93
93
|
}
|
|
94
94
|
export interface ComponentMatch {
|