@intentius/chant 0.13.1 → 0.15.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/catalog.d.ts +45 -5
- package/dist/audit/catalog.d.ts.map +1 -1
- package/dist/audit/proof.d.ts +3 -0
- package/dist/audit/proof.d.ts.map +1 -1
- package/dist/audit/report-model.d.ts +4 -1
- package/dist/audit/report-model.d.ts.map +1 -1
- package/dist/audit/report.d.ts +3 -0
- package/dist/audit/report.d.ts.map +1 -1
- package/dist/audit/rules-doc.d.ts +8 -2
- package/dist/audit/rules-doc.d.ts.map +1 -1
- package/dist/cli/commands/audit.d.ts.map +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/lexicon-rolling-upgrade.d.ts +37 -0
- package/dist/cli/commands/lexicon-rolling-upgrade.d.ts.map +1 -0
- package/dist/cli/commands/lexicon-surface-diff.d.ts +48 -0
- package/dist/cli/commands/lexicon-surface-diff.d.ts.map +1 -0
- package/dist/cli/commands/lint.d.ts.map +1 -1
- package/dist/cli/commands/pinned-upgrade.d.ts +41 -0
- package/dist/cli/commands/pinned-upgrade.d.ts.map +1 -0
- package/dist/cli/handlers/build.d.ts.map +1 -1
- package/dist/cli/handlers/components.d.ts +39 -0
- package/dist/cli/handlers/components.d.ts.map +1 -0
- package/dist/cli/handlers/dev.d.ts +3 -0
- package/dist/cli/handlers/dev.d.ts.map +1 -1
- package/dist/cli/handlers/graph.d.ts +4 -2
- package/dist/cli/handlers/graph.d.ts.map +1 -1
- package/dist/cli/handlers/misc.d.ts.map +1 -1
- package/dist/cli/handlers/run.d.ts +49 -0
- package/dist/cli/handlers/run.d.ts.map +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/registry.d.ts +35 -0
- package/dist/cli/registry.d.ts.map +1 -1
- package/dist/codegen/fetch.d.ts +22 -0
- package/dist/codegen/fetch.d.ts.map +1 -1
- package/dist/codegen/lexicon-regen.d.ts +110 -0
- package/dist/codegen/lexicon-regen.d.ts.map +1 -0
- package/dist/codegen/pinned-upgrade.d.ts +153 -0
- package/dist/codegen/pinned-upgrade.d.ts.map +1 -0
- package/dist/codegen/rolling-upgrade.d.ts +138 -0
- package/dist/codegen/rolling-upgrade.d.ts.map +1 -0
- package/dist/codegen/surface-snapshot.d.ts +173 -0
- package/dist/codegen/surface-snapshot.d.ts.map +1 -0
- package/dist/codegen/version-bump.d.ts +21 -0
- package/dist/codegen/version-bump.d.ts.map +1 -0
- package/dist/components/auto-release.d.ts +93 -0
- package/dist/components/auto-release.d.ts.map +1 -0
- package/dist/components/builders.d.ts +37 -0
- package/dist/components/builders.d.ts.map +1 -0
- package/dist/components/capability-plugin-loader.d.ts +111 -0
- package/dist/components/capability-plugin-loader.d.ts.map +1 -0
- package/dist/components/capability-plugin-schema.d.ts +24 -0
- package/dist/components/capability-plugin-schema.d.ts.map +1 -0
- package/dist/components/capability-plugin.d.ts +85 -0
- package/dist/components/capability-plugin.d.ts.map +1 -0
- package/dist/components/capability.d.ts +89 -0
- package/dist/components/capability.d.ts.map +1 -0
- package/dist/components/cli-support.d.ts +204 -0
- package/dist/components/cli-support.d.ts.map +1 -0
- package/dist/components/component.d.ts +179 -0
- package/dist/components/component.d.ts.map +1 -0
- package/dist/components/config-defaults.d.ts +41 -0
- package/dist/components/config-defaults.d.ts.map +1 -0
- package/dist/components/discover.d.ts +60 -0
- package/dist/components/discover.d.ts.map +1 -0
- package/dist/components/driver-output.d.ts +20 -0
- package/dist/components/driver-output.d.ts.map +1 -0
- package/dist/components/driver.d.ts +209 -0
- package/dist/components/driver.d.ts.map +1 -0
- package/dist/components/index.d.ts +22 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/manifest-persistence.d.ts +79 -0
- package/dist/components/manifest-persistence.d.ts.map +1 -0
- package/dist/components/pilots/alb-ecs.pilot.d.ts +27 -0
- package/dist/components/pilots/alb-ecs.pilot.d.ts.map +1 -0
- package/dist/components/pilots/dynamodb.pilot.d.ts +22 -0
- package/dist/components/pilots/dynamodb.pilot.d.ts.map +1 -0
- package/dist/components/pilots/jar-emr.pilot.d.ts +37 -0
- package/dist/components/pilots/jar-emr.pilot.d.ts.map +1 -0
- package/dist/components/pilots/lambda.pilot.d.ts +35 -0
- package/dist/components/pilots/lambda.pilot.d.ts.map +1 -0
- package/dist/components/pilots/neo4j-fanout.pilot.d.ts +17 -0
- package/dist/components/pilots/neo4j-fanout.pilot.d.ts.map +1 -0
- package/dist/components/pilots/project.d.ts +13 -0
- package/dist/components/pilots/project.d.ts.map +1 -0
- package/dist/components/presets/ecs-fargate.d.ts +59 -0
- package/dist/components/presets/ecs-fargate.d.ts.map +1 -0
- package/dist/components/presets/index.d.ts +29 -0
- package/dist/components/presets/index.d.ts.map +1 -0
- package/dist/components/presets/lambda.d.ts +35 -0
- package/dist/components/presets/lambda.d.ts.map +1 -0
- package/dist/components/presets/single-host-compose.d.ts +43 -0
- package/dist/components/presets/single-host-compose.d.ts.map +1 -0
- package/dist/components/registry.d.ts +29 -0
- package/dist/components/registry.d.ts.map +1 -0
- package/dist/components/starter-plugin.d.ts +51 -0
- package/dist/components/starter-plugin.d.ts.map +1 -0
- package/dist/components/temporal-codegen-loader.d.ts +27 -0
- package/dist/components/temporal-codegen-loader.d.ts.map +1 -0
- package/dist/components/verbs/__tests__/mock-cloud-executor.d.ts +35 -0
- package/dist/components/verbs/__tests__/mock-cloud-executor.d.ts.map +1 -0
- package/dist/components/verbs/__tests__/mock-process-runner.d.ts +45 -0
- package/dist/components/verbs/__tests__/mock-process-runner.d.ts.map +1 -0
- package/dist/components/verbs/__tests__/mock-sbom-generator.d.ts +33 -0
- package/dist/components/verbs/__tests__/mock-sbom-generator.d.ts.map +1 -0
- package/dist/components/verbs/bom-writer.d.ts +155 -0
- package/dist/components/verbs/bom-writer.d.ts.map +1 -0
- package/dist/components/verbs/build-archive.d.ts +205 -0
- package/dist/components/verbs/build-archive.d.ts.map +1 -0
- package/dist/components/verbs/build.d.ts +150 -0
- package/dist/components/verbs/build.d.ts.map +1 -0
- package/dist/components/verbs/cloud-executor.d.ts +88 -0
- package/dist/components/verbs/cloud-executor.d.ts.map +1 -0
- package/dist/components/verbs/component-bom.d.ts +103 -0
- package/dist/components/verbs/component-bom.d.ts.map +1 -0
- package/dist/components/verbs/index.d.ts +49 -0
- package/dist/components/verbs/index.d.ts.map +1 -0
- package/dist/components/verbs/license-policy.d.ts +56 -0
- package/dist/components/verbs/license-policy.d.ts.map +1 -0
- package/dist/components/verbs/lockfile-sbom-generator.d.ts +81 -0
- package/dist/components/verbs/lockfile-sbom-generator.d.ts.map +1 -0
- package/dist/components/verbs/process-runner.d.ts +64 -0
- package/dist/components/verbs/process-runner.d.ts.map +1 -0
- package/dist/components/verbs/reproducibility.d.ts +80 -0
- package/dist/components/verbs/reproducibility.d.ts.map +1 -0
- package/dist/components/verbs/sbom-generator.d.ts +157 -0
- package/dist/components/verbs/sbom-generator.d.ts.map +1 -0
- package/dist/components/verbs/sbom.d.ts +79 -0
- package/dist/components/verbs/sbom.d.ts.map +1 -0
- package/dist/components/verbs/shell.d.ts +35 -0
- package/dist/components/verbs/shell.d.ts.map +1 -0
- package/dist/components/verbs/sign.d.ts +222 -0
- package/dist/components/verbs/sign.d.ts.map +1 -0
- package/dist/components/verbs/stub.d.ts +18 -0
- package/dist/components/verbs/stub.d.ts.map +1 -0
- package/dist/components/verbs/tool-sbom-generator.d.ts +51 -0
- package/dist/components/verbs/tool-sbom-generator.d.ts.map +1 -0
- package/dist/components/verbs/verify.d.ts +106 -0
- package/dist/components/verbs/verify.d.ts.map +1 -0
- package/dist/components/verbs/vex.d.ts +65 -0
- package/dist/components/verbs/vex.d.ts.map +1 -0
- package/dist/components/verbs/vuln-gate.d.ts +91 -0
- package/dist/components/verbs/vuln-gate.d.ts.map +1 -0
- package/dist/components/verbs/vuln-scan.d.ts +116 -0
- package/dist/components/verbs/vuln-scan.d.ts.map +1 -0
- package/dist/components/verbs/wait-verify.d.ts +85 -0
- package/dist/components/verbs/wait-verify.d.ts.map +1 -0
- package/dist/config.d.ts +205 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/lexicon.d.ts +78 -0
- package/dist/lexicon.d.ts.map +1 -1
- package/dist/lifecycle/build-ledger-store.d.ts +121 -0
- package/dist/lifecycle/build-ledger-store.d.ts.map +1 -0
- package/dist/lifecycle/build-ledger.d.ts +225 -0
- package/dist/lifecycle/build-ledger.d.ts.map +1 -0
- package/dist/lifecycle/git.d.ts +84 -0
- package/dist/lifecycle/git.d.ts.map +1 -1
- package/dist/lifecycle/index.d.ts +5 -0
- package/dist/lifecycle/index.d.ts.map +1 -1
- package/dist/lifecycle/oras-referrer-lookup.d.ts +41 -0
- package/dist/lifecycle/oras-referrer-lookup.d.ts.map +1 -0
- package/dist/lifecycle/release-ledger.d.ts +122 -0
- package/dist/lifecycle/release-ledger.d.ts.map +1 -0
- package/dist/lifecycle/status.d.ts +150 -0
- package/dist/lifecycle/status.d.ts.map +1 -0
- package/dist/lint/component-checks.d.ts +95 -0
- package/dist/lint/component-checks.d.ts.map +1 -0
- package/dist/lint/engine.d.ts +23 -0
- package/dist/lint/engine.d.ts.map +1 -1
- package/dist/lint/presets/strict.json +8 -1
- package/dist/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-a.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-a.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-b.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-b.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp001/fail/orphan-lib.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp001/fail/orphan-lib.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp001/pass/emr-job.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp001/pass/emr-job.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp001/pass/jar-lib.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp001/pass/jar-lib.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp002/fail/search-service.component.d.ts +10 -0
- package/dist/lint/rules/__fixtures__/comp/comp002/fail/search-service.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp002/pass/jar-lib.component.d.ts +3 -0
- package/dist/lint/rules/__fixtures__/comp/comp002/pass/jar-lib.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp002/pass/search-service.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp002/pass/search-service.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/fail/migrator.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/fail/migrator.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/pass/migrator.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/pass/migrator.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/pass/orders-table.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/pass/orders-table.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp004/fail/neo4j-cluster.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp004/fail/neo4j-cluster.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp005/fail/search-service.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp005/fail/search-service.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp005/pass/search-service.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp005/pass/search-service.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp006/fail/legacy-tool.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp006/fail/legacy-tool.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp006/pass/legacy-tool.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp006/pass/legacy-tool.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/fail/inventory-table.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/fail/inventory-table.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/fail/orders-table.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/fail/orders-table.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/pass/orders-table.component.d.ts +3 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/pass/orders-table.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/pass/search-service.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/pass/search-service.component.d.ts.map +1 -0
- package/dist/lint/rules/comp/comp001-publishes-never-applies.d.ts +20 -0
- package/dist/lint/rules/comp/comp001-publishes-never-applies.d.ts.map +1 -0
- package/dist/lint/rules/comp/comp002-dangling-wiring-ref.d.ts +28 -0
- package/dist/lint/rules/comp/comp002-dangling-wiring-ref.d.ts.map +1 -0
- package/dist/lint/rules/comp/comp003-mutating-no-rollback.d.ts +39 -0
- package/dist/lint/rules/comp/comp003-mutating-no-rollback.d.ts.map +1 -0
- package/dist/lint/rules/comp/comp004-gate-needs-temporal.d.ts +37 -0
- package/dist/lint/rules/comp/comp004-gate-needs-temporal.d.ts.map +1 -0
- package/dist/lint/rules/comp/comp005-capability-kind-is-noun.d.ts +43 -0
- package/dist/lint/rules/comp/comp005-capability-kind-is-noun.d.ts.map +1 -0
- package/dist/lint/rules/comp/comp006-shell-needs-reason.d.ts +22 -0
- package/dist/lint/rules/comp/comp006-shell-needs-reason.d.ts.map +1 -0
- package/dist/lint/rules/comp/comp007-composition-sprawl.d.ts +33 -0
- package/dist/lint/rules/comp/comp007-composition-sprawl.d.ts.map +1 -0
- package/dist/lint/rules/comp/index.d.ts +18 -0
- package/dist/lint/rules/comp/index.d.ts.map +1 -0
- package/dist/lint/rules/comp/support.d.ts +71 -0
- package/dist/lint/rules/comp/support.d.ts.map +1 -0
- package/dist/lsp/lexicon-providers.d.ts.map +1 -1
- package/dist/op/activity-registry.d.ts +11 -6
- package/dist/op/activity-registry.d.ts.map +1 -1
- package/dist/op/activity-runtime.d.ts +24 -0
- package/dist/op/activity-runtime.d.ts.map +1 -0
- package/dist/op/builders.d.ts +56 -0
- package/dist/op/builders.d.ts.map +1 -1
- package/dist/op/index.d.ts +2 -1
- package/dist/op/index.d.ts.map +1 -1
- package/dist/ownership.d.ts +20 -14
- package/dist/ownership.d.ts.map +1 -1
- package/package.json +14 -1
- package/src/audit/catalog.test.ts +74 -22
- package/src/audit/catalog.ts +74 -471
- package/src/audit/proof.ts +4 -2
- package/src/audit/report-html.test.ts +14 -7
- package/src/audit/report-model.ts +20 -9
- package/src/audit/report.test.ts +36 -13
- package/src/audit/report.ts +2 -0
- package/src/audit/rules-doc.test.ts +8 -6
- package/src/audit/rules-doc.ts +13 -5
- package/src/cli/commands/audit.ts +23 -18
- package/src/cli/commands/component-lint.test.ts +158 -0
- package/src/cli/commands/doctor.test.ts +116 -2
- package/src/cli/commands/doctor.ts +46 -0
- package/src/cli/commands/lexicon-rolling-upgrade.ts +198 -0
- package/src/cli/commands/lexicon-surface-diff.test.ts +104 -0
- package/src/cli/commands/lexicon-surface-diff.ts +185 -0
- package/src/cli/commands/lint.ts +142 -1
- package/src/cli/commands/pinned-upgrade.ts +204 -0
- package/src/cli/handlers/build.ts +58 -1
- package/src/cli/handlers/components.test.ts +504 -0
- package/src/cli/handlers/components.ts +404 -0
- package/src/cli/handlers/dev.ts +60 -1
- package/src/cli/handlers/graph.ts +47 -2
- package/src/cli/handlers/misc.ts +45 -1
- package/src/cli/handlers/run.test.ts +967 -3
- package/src/cli/handlers/run.ts +618 -11
- package/src/cli/main.test.ts +66 -0
- package/src/cli/main.ts +105 -2
- package/src/cli/registry.ts +35 -0
- package/src/codegen/fetch.test.ts +84 -3
- package/src/codegen/fetch.ts +76 -2
- package/src/codegen/lexicon-regen.test.ts +298 -0
- package/src/codegen/lexicon-regen.ts +545 -0
- package/src/codegen/pinned-upgrade.test.ts +399 -0
- package/src/codegen/pinned-upgrade.ts +423 -0
- package/src/codegen/rolling-upgrade.test.ts +333 -0
- package/src/codegen/rolling-upgrade.ts +320 -0
- package/src/codegen/surface-snapshot.test.ts +461 -0
- package/src/codegen/surface-snapshot.ts +546 -0
- package/src/codegen/version-bump.test.ts +47 -0
- package/src/codegen/version-bump.ts +39 -0
- package/src/components/README.md +130 -0
- package/src/components/SPRAWL-VALIDATION.md +181 -0
- package/src/components/__fixtures__/alb-ecs-service.json +51 -0
- package/src/components/__fixtures__/dynamodb-infra.json +32 -0
- package/src/components/__fixtures__/emr-job-consumer.json +26 -0
- package/src/components/__fixtures__/jar-lib-producer.json +16 -0
- package/src/components/__fixtures__/lambda-image-processor.json +28 -0
- package/src/components/__fixtures__/neo4j-fanout.json +34 -0
- package/src/components/__fixtures__/single-host-compose.json +29 -0
- package/src/components/auto-release.test.ts +217 -0
- package/src/components/auto-release.ts +216 -0
- package/src/components/builders.test.ts +45 -0
- package/src/components/builders.ts +71 -0
- package/src/components/capability-plugin-loader.ts +218 -0
- package/src/components/capability-plugin-schema.ts +56 -0
- package/src/components/capability-plugin.test.ts +235 -0
- package/src/components/capability-plugin.ts +108 -0
- package/src/components/capability.ts +117 -0
- package/src/components/cli-support.test.ts +579 -0
- package/src/components/cli-support.ts +481 -0
- package/src/components/component-schema.test.ts +265 -0
- package/src/components/component.schema.json +235 -0
- package/src/components/component.test.ts +251 -0
- package/src/components/component.ts +255 -0
- package/src/components/config-defaults.test.ts +263 -0
- package/src/components/config-defaults.ts +145 -0
- package/src/components/discover.test.ts +352 -0
- package/src/components/discover.ts +167 -0
- package/src/components/driver-output.ts +71 -0
- package/src/components/driver.test.ts +638 -0
- package/src/components/driver.ts +690 -0
- package/src/components/index.ts +113 -0
- package/src/components/manifest-persistence.test.ts +152 -0
- package/src/components/manifest-persistence.ts +164 -0
- package/src/components/pilots/README.md +33 -0
- package/src/components/pilots/alb-ecs.pilot.ts +63 -0
- package/src/components/pilots/dynamodb.pilot.ts +59 -0
- package/src/components/pilots/jar-emr.pilot.ts +69 -0
- package/src/components/pilots/lambda.pilot.ts +55 -0
- package/src/components/pilots/neo4j-fanout.pilot.ts +92 -0
- package/src/components/pilots/pilots-lint-clean.test.ts +78 -0
- package/src/components/pilots/pilots.test.ts +126 -0
- package/src/components/pilots/project.ts +13 -0
- package/src/components/presets/comp007-reduction.test.ts +122 -0
- package/src/components/presets/ecs-fargate.test.ts +84 -0
- package/src/components/presets/ecs-fargate.ts +103 -0
- package/src/components/presets/index.ts +32 -0
- package/src/components/presets/lambda.test.ts +35 -0
- package/src/components/presets/lambda.ts +53 -0
- package/src/components/presets/single-host-compose.test.ts +65 -0
- package/src/components/presets/single-host-compose.ts +64 -0
- package/src/components/registry.test.ts +112 -0
- package/src/components/registry.ts +37 -0
- package/src/components/starter-plugin.ts +105 -0
- package/src/components/temporal-codegen-loader.ts +41 -0
- package/src/components/verbs/__fixtures__/package-lock.json +45 -0
- package/src/components/verbs/__fixtures__/pom.xml +37 -0
- package/src/components/verbs/__fixtures__/schemas/cyclonedx-1.5.schema.json +3800 -0
- package/src/components/verbs/__fixtures__/schemas/cyclonedx-spdx-license.schema.json +621 -0
- package/src/components/verbs/__fixtures__/schemas/jsf-0.82.schema.json +240 -0
- package/src/components/verbs/__fixtures__/schemas/spdx-2.3.schema.json +740 -0
- package/src/components/verbs/__tests__/mock-cloud-executor.ts +102 -0
- package/src/components/verbs/__tests__/mock-process-runner.ts +79 -0
- package/src/components/verbs/__tests__/mock-sbom-generator.ts +85 -0
- package/src/components/verbs/bom-writer.test.ts +331 -0
- package/src/components/verbs/bom-writer.ts +386 -0
- package/src/components/verbs/build-archive.test.ts +251 -0
- package/src/components/verbs/build-archive.ts +296 -0
- package/src/components/verbs/build.test.ts +222 -0
- package/src/components/verbs/build.ts +252 -0
- package/src/components/verbs/cloud-executor.ts +181 -0
- package/src/components/verbs/component-bom.test.ts +219 -0
- package/src/components/verbs/component-bom.ts +189 -0
- package/src/components/verbs/index.ts +49 -0
- package/src/components/verbs/license-policy.ts +115 -0
- package/src/components/verbs/lockfile-sbom-generator.test.ts +195 -0
- package/src/components/verbs/lockfile-sbom-generator.ts +236 -0
- package/src/components/verbs/process-runner.test.ts +79 -0
- package/src/components/verbs/process-runner.ts +113 -0
- package/src/components/verbs/reproducibility.test.ts +24 -0
- package/src/components/verbs/reproducibility.ts +100 -0
- package/src/components/verbs/sbom-generator.test.ts +96 -0
- package/src/components/verbs/sbom-generator.ts +209 -0
- package/src/components/verbs/sbom.test.ts +184 -0
- package/src/components/verbs/sbom.ts +152 -0
- package/src/components/verbs/shell.test.ts +36 -0
- package/src/components/verbs/shell.ts +51 -0
- package/src/components/verbs/sign.test.ts +210 -0
- package/src/components/verbs/sign.ts +350 -0
- package/src/components/verbs/stub.ts +34 -0
- package/src/components/verbs/tool-sbom-generator.test.ts +194 -0
- package/src/components/verbs/tool-sbom-generator.ts +192 -0
- package/src/components/verbs/verify.test.ts +159 -0
- package/src/components/verbs/verify.ts +179 -0
- package/src/components/verbs/vex.ts +182 -0
- package/src/components/verbs/vuln-gate.test.ts +201 -0
- package/src/components/verbs/vuln-gate.ts +170 -0
- package/src/components/verbs/vuln-scan.test.ts +145 -0
- package/src/components/verbs/vuln-scan.ts +266 -0
- package/src/components/verbs/wait-verify.test.ts +111 -0
- package/src/components/verbs/wait-verify.ts +171 -0
- package/src/config.test.ts +74 -1
- package/src/config.ts +219 -0
- package/src/index.ts +32 -0
- package/src/lexicon.ts +88 -0
- package/src/lifecycle/build-ledger-store.test.ts +217 -0
- package/src/lifecycle/build-ledger-store.ts +165 -0
- package/src/lifecycle/build-ledger.test.ts +349 -0
- package/src/lifecycle/build-ledger.ts +305 -0
- package/src/lifecycle/git.test.ts +118 -0
- package/src/lifecycle/git.ts +149 -14
- package/src/lifecycle/index.ts +5 -0
- package/src/lifecycle/oras-referrer-lookup.test.ts +116 -0
- package/src/lifecycle/oras-referrer-lookup.ts +110 -0
- package/src/lifecycle/release-ledger.test.ts +209 -0
- package/src/lifecycle/release-ledger.ts +185 -0
- package/src/lifecycle/status.test.ts +330 -0
- package/src/lifecycle/status.ts +278 -0
- package/src/lint/component-checks.ts +148 -0
- package/src/lint/config.test.ts +21 -0
- package/src/lint/engine.ts +11 -2
- package/src/lint/presets/relaxed.json +8 -1
- package/src/lint/presets/strict.json +8 -1
- package/src/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-a.component.ts +9 -0
- package/src/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-b.component.ts +9 -0
- package/src/lint/rules/__fixtures__/comp/comp001/fail/orphan-lib.component.ts +11 -0
- package/src/lint/rules/__fixtures__/comp/comp001/pass/emr-job.component.ts +13 -0
- package/src/lint/rules/__fixtures__/comp/comp001/pass/jar-lib.component.ts +11 -0
- package/src/lint/rules/__fixtures__/comp/comp002/fail/search-service.component.ts +27 -0
- package/src/lint/rules/__fixtures__/comp/comp002/pass/jar-lib.component.ts +10 -0
- package/src/lint/rules/__fixtures__/comp/comp002/pass/search-service.component.ts +23 -0
- package/src/lint/rules/__fixtures__/comp/comp003/fail/migrator.component.ts +10 -0
- package/src/lint/rules/__fixtures__/comp/comp003/pass/migrator.component.ts +19 -0
- package/src/lint/rules/__fixtures__/comp/comp003/pass/orders-table.component.ts +10 -0
- package/src/lint/rules/__fixtures__/comp/comp004/fail/neo4j-cluster.component.ts +20 -0
- package/src/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.ts +23 -0
- package/src/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.ts +10 -0
- package/src/lint/rules/__fixtures__/comp/comp005/fail/search-service.component.ts +14 -0
- package/src/lint/rules/__fixtures__/comp/comp005/pass/search-service.component.ts +18 -0
- package/src/lint/rules/__fixtures__/comp/comp006/fail/legacy-tool.component.ts +10 -0
- package/src/lint/rules/__fixtures__/comp/comp006/pass/legacy-tool.component.ts +14 -0
- package/src/lint/rules/__fixtures__/comp/comp007/fail/inventory-table.component.ts +13 -0
- package/src/lint/rules/__fixtures__/comp/comp007/fail/orders-table.component.ts +13 -0
- package/src/lint/rules/__fixtures__/comp/comp007/pass/orders-table.component.ts +12 -0
- package/src/lint/rules/__fixtures__/comp/comp007/pass/search-service.component.ts +18 -0
- package/src/lint/rules/comp/comp.test.ts +378 -0
- package/src/lint/rules/comp/comp001-publishes-never-applies.ts +78 -0
- package/src/lint/rules/comp/comp002-dangling-wiring-ref.ts +94 -0
- package/src/lint/rules/comp/comp003-mutating-no-rollback.ts +115 -0
- package/src/lint/rules/comp/comp004-gate-needs-temporal.ts +66 -0
- package/src/lint/rules/comp/comp005-capability-kind-is-noun.ts +113 -0
- package/src/lint/rules/comp/comp006-shell-needs-reason.ts +55 -0
- package/src/lint/rules/comp/comp007-composition-sprawl.ts +71 -0
- package/src/lint/rules/comp/index.ts +37 -0
- package/src/lint/rules/comp/support.ts +173 -0
- package/src/lsp/lexicon-providers.test.ts +55 -0
- package/src/lsp/lexicon-providers.ts +13 -3
- package/src/op/activity-registry.test.ts +38 -0
- package/src/op/activity-registry.ts +31 -12
- package/src/op/activity-runtime.ts +73 -0
- package/src/op/builders.ts +92 -0
- package/src/op/index.ts +3 -1
- package/src/ownership.test.ts +24 -26
- package/src/ownership.ts +26 -38
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thin interpret driver — Phase 1 (#556), saga rollback hardened in Phase 4
|
|
3
|
+
* (#565, epic #551).
|
|
4
|
+
*
|
|
5
|
+
* One generic orchestrator that runs an arbitrary set of components on the
|
|
6
|
+
* local in-process executor: it orders components by `dependsOn` (reusing the
|
|
7
|
+
* same Kahn-layering approach `computeStackGraph` uses for `chant graph
|
|
8
|
+
* --stacks`, see ../build.ts), then for each component in order runs its
|
|
9
|
+
* `deploy` composition by dispatching every step to the `CapabilityRegistry`
|
|
10
|
+
* by `kind`. It resolves the three wiring reference forms from
|
|
11
|
+
* component.schema.json (`@Phase.field` prior-step references,
|
|
12
|
+
* `@<component>.publish.<field>` cross-component artifact references, and
|
|
13
|
+
* passes through `$env.*`/`stackOutput` values as opaque env config), runs
|
|
14
|
+
* `parallel` phases concurrently, rejects a `gate` locally (matching
|
|
15
|
+
* ../op/local-executor.ts's `LocalGateUnsupportedError`), and on terminal
|
|
16
|
+
* failure unwinds every executed step in reverse via that step's capability
|
|
17
|
+
* `rollback`, then runs `onFailure` phases in reverse order (best-effort),
|
|
18
|
+
* mirroring the Op local executor's saga semantics.
|
|
19
|
+
*
|
|
20
|
+
* A step whose capability declares no `rollback` is never silently passed
|
|
21
|
+
* over during unwind: it gets a `"rollback-opted-out"` record (see
|
|
22
|
+
* `rollbackExecuted`), carrying the step's `noRollback` reason when the
|
|
23
|
+
* composition declared one. This mirrors, at run time, the opt-out the
|
|
24
|
+
* COMP003 lint rule (../lint/rules/comp/comp003-mutating-no-rollback.ts)
|
|
25
|
+
* already requires at author time — the driver reports the same fact the
|
|
26
|
+
* lint rule already made a component author state.
|
|
27
|
+
*
|
|
28
|
+
* This unwind runs entirely in-process: if the process crashes mid-rollback
|
|
29
|
+
* on the local executor, nothing resumes it — there is no persisted run state
|
|
30
|
+
* to resume from. That is the documented Temporal boundary (see
|
|
31
|
+
* docs/components/orchestration.mdx#rollback-comes-free and
|
|
32
|
+
* docs/guide/local-vs-temporal.mdx): the *mechanism* (reverse-order unwind
|
|
33
|
+
* calling each capability's `rollback`) is capability-agnostic and works
|
|
34
|
+
* identically on both executors, but *durable resume of a rollback already in
|
|
35
|
+
* progress* is Temporal-only, the same boundary that already applies to
|
|
36
|
+
* forward `onFailure` compensation on an Op.
|
|
37
|
+
*
|
|
38
|
+
* Contains zero per-component logic: nothing in this module branches on a
|
|
39
|
+
* component or capability `kind`/name. All behavior is either generic
|
|
40
|
+
* (ordering, phase/step dispatch, wiring resolution) or delegated to the
|
|
41
|
+
* `CapabilityRegistry` the caller supplies.
|
|
42
|
+
*/
|
|
43
|
+
import type { CapabilityRegistry, DeployContext } from "./capability.js";
|
|
44
|
+
/** A wiring reference or literal value, as it appears in a step's fields (schema `WiringValue`). */
|
|
45
|
+
export type WiringValue = string | {
|
|
46
|
+
stackOutput: {
|
|
47
|
+
stack: string;
|
|
48
|
+
name: string;
|
|
49
|
+
};
|
|
50
|
+
} | Record<string, unknown>;
|
|
51
|
+
/** A single capability invocation — the leaf unit of a composition (schema `Step`). */
|
|
52
|
+
export interface DriverStep {
|
|
53
|
+
kind: string;
|
|
54
|
+
[param: string]: unknown;
|
|
55
|
+
}
|
|
56
|
+
/** A gate step — pauses for an external signal; unsupported on the local executor (schema `Gate`). */
|
|
57
|
+
export interface DriverGate {
|
|
58
|
+
kind: "gate";
|
|
59
|
+
signalName: string;
|
|
60
|
+
timeout?: string;
|
|
61
|
+
description?: string;
|
|
62
|
+
}
|
|
63
|
+
/** One named phase of a deploy composition (schema `Phase`). A step may itself be a nested `Phase` (fan-out). */
|
|
64
|
+
export interface DriverPhase {
|
|
65
|
+
phase: string;
|
|
66
|
+
steps: Array<DriverStep | DriverGate | DriverPhase>;
|
|
67
|
+
parallel?: boolean;
|
|
68
|
+
onFailure?: DriverPhase[];
|
|
69
|
+
}
|
|
70
|
+
/** The subset of the Component contract the driver needs to run a deploy (schema-shaped; see component.schema.json). */
|
|
71
|
+
export interface DriverComponent {
|
|
72
|
+
name: string;
|
|
73
|
+
dependsOn?: string[];
|
|
74
|
+
deploy: DriverPhase[];
|
|
75
|
+
/** Component-level saga compensation, run in reverse order on terminal failure (schema `rollback`). */
|
|
76
|
+
rollback?: DriverPhase[];
|
|
77
|
+
}
|
|
78
|
+
/** Thrown when a component's composition contains a `gate` — gates need a durable runtime, matching chant's Op local executor. */
|
|
79
|
+
export declare class DriverGateUnsupportedError extends Error {
|
|
80
|
+
readonly component: string;
|
|
81
|
+
readonly signalName: string;
|
|
82
|
+
constructor(component: string, signalName: string);
|
|
83
|
+
}
|
|
84
|
+
/** Thrown when a dependency cycle is found among `dependsOn` edges. */
|
|
85
|
+
export declare class DependencyCycleError extends Error {
|
|
86
|
+
readonly cycle: string[];
|
|
87
|
+
constructor(cycle: string[]);
|
|
88
|
+
}
|
|
89
|
+
/** Thrown when a component's `dependsOn` names a component not present in the run set. */
|
|
90
|
+
export declare class UnknownDependencyError extends Error {
|
|
91
|
+
readonly component: string;
|
|
92
|
+
readonly dependency: string;
|
|
93
|
+
constructor(component: string, dependency: string);
|
|
94
|
+
}
|
|
95
|
+
/** Thrown on terminal run failure; carries the partial run result for rendering/inspection. */
|
|
96
|
+
export declare class DriverRunFailure extends Error {
|
|
97
|
+
readonly result: DriverRunResult;
|
|
98
|
+
constructor(result: DriverRunResult);
|
|
99
|
+
}
|
|
100
|
+
export interface DriverStepRecord {
|
|
101
|
+
component: string;
|
|
102
|
+
phase: string;
|
|
103
|
+
kind: string;
|
|
104
|
+
status: "ok" | "fail" | "skipped" | "rolled-back" | "rollback-opted-out";
|
|
105
|
+
durationMs: number;
|
|
106
|
+
output?: unknown;
|
|
107
|
+
error?: string;
|
|
108
|
+
}
|
|
109
|
+
export interface DriverComponentResult {
|
|
110
|
+
component: string;
|
|
111
|
+
ok: boolean;
|
|
112
|
+
records: DriverStepRecord[];
|
|
113
|
+
}
|
|
114
|
+
export interface DriverRunResult {
|
|
115
|
+
/** Component order actually attempted, in run order. */
|
|
116
|
+
order: string[];
|
|
117
|
+
/** Parallel-safe waves the order was derived from (see resolveComponentGraph). */
|
|
118
|
+
waves: string[][];
|
|
119
|
+
results: DriverComponentResult[];
|
|
120
|
+
ok: boolean;
|
|
121
|
+
/** Name of the component that terminated the run, if any. */
|
|
122
|
+
failedComponent?: string;
|
|
123
|
+
/**
|
|
124
|
+
* The accumulated cross-component/cross-stack outputs after the run — each
|
|
125
|
+
* component's `publish` output and, for an applied stack, its `cfn-deploy`
|
|
126
|
+
* outputs, keyed by component name. Seeded from `options.componentOutputs`
|
|
127
|
+
* and grown as components complete. The CLI's `--dump-outputs` serializes
|
|
128
|
+
* this so a later, separate run (a downstream CI job) can `--seed-outputs`
|
|
129
|
+
* it and resolve `stackOutput()`/`@<name>.publish.*` references to a
|
|
130
|
+
* component that ran in an earlier job.
|
|
131
|
+
*/
|
|
132
|
+
componentOutputs: Record<string, Record<string, unknown>>;
|
|
133
|
+
}
|
|
134
|
+
export interface ComponentGraph {
|
|
135
|
+
/** Flat topological order — every dependency before its dependents. */
|
|
136
|
+
order: string[];
|
|
137
|
+
/** Waves: components in the same wave share no dependency and may run concurrently. */
|
|
138
|
+
waves: string[][];
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Resolve run order and parallel-safe waves from each component's `dependsOn`.
|
|
142
|
+
* Reuses the generic `topoSort` (../codegen/topo-sort.ts) for the flat order,
|
|
143
|
+
* and the same Kahn-layering approach `computeStackGraph` uses for `chant
|
|
144
|
+
* graph --stacks` (../build.ts) to additionally group independent components
|
|
145
|
+
* into waves. This is a plain string-graph algorithm — no lexicon/AttrRef
|
|
146
|
+
* machinery — since a component's `dependsOn` is already a flat name list.
|
|
147
|
+
*/
|
|
148
|
+
export declare function resolveComponentGraph(components: DriverComponent[]): ComponentGraph;
|
|
149
|
+
/**
|
|
150
|
+
* Resolve one wiring value against already-produced outputs. Three reference
|
|
151
|
+
* forms, all resolved here rather than by any component-specific code:
|
|
152
|
+
* - `@Phase.field` — a prior step's output within the same component, keyed
|
|
153
|
+
* by phase name (`phaseOutputs`).
|
|
154
|
+
* - `@<component>.publish.uri|digest|key` — another component's published
|
|
155
|
+
* artifact output (`componentOutputs`), per composition-and-wiring.mdx.
|
|
156
|
+
* - `{ stackOutput: { stack, name } }` — a cross-stack output; Phase 1 has no
|
|
157
|
+
* cross-stack apply-order integration (out of scope per #556), so this
|
|
158
|
+
* resolves via the same `componentOutputs` map keyed by `stack`/`name`,
|
|
159
|
+
* letting tests and callers seed cross-stack values the same way as
|
|
160
|
+
* artifact outputs. `$env.*` and plain literals pass through unchanged —
|
|
161
|
+
* env resolution is the caller's `DeployContext.vars`, not the driver's.
|
|
162
|
+
*/
|
|
163
|
+
export declare function resolveWiring(value: WiringValue, phaseOutputs: Record<string, Record<string, unknown>>, componentOutputs: Record<string, Record<string, unknown>>): unknown;
|
|
164
|
+
/**
|
|
165
|
+
* Deep-walk an object, resolving every string/stackOutput wiring value found.
|
|
166
|
+
* Arrays and nested objects are walked too.
|
|
167
|
+
*
|
|
168
|
+
* Exported (not just used internally) so the durable Temporal path
|
|
169
|
+
* (`@intentius/chant-lexicon-temporal`'s component workflow codegen, see
|
|
170
|
+
* epic #551 #589) can resolve a step's wiring the same way inside a Temporal
|
|
171
|
+
* *activity* — the workflow itself only accumulates `phaseOutputs`/
|
|
172
|
+
* `componentOutputs` and passes them through; resolution logic stays in one
|
|
173
|
+
* place so local and durable execution can never silently diverge.
|
|
174
|
+
*/
|
|
175
|
+
export declare function resolveStepInput(input: Record<string, unknown>, phaseOutputs: Record<string, Record<string, unknown>>, componentOutputs: Record<string, Record<string, unknown>>): Record<string, unknown>;
|
|
176
|
+
/**
|
|
177
|
+
* Run one component's `deploy` composition. On terminal failure: unwind every
|
|
178
|
+
* executed step in reverse via its capability's `rollback` (saga
|
|
179
|
+
* compensation), then run the component's declared `rollback` phases in
|
|
180
|
+
* reverse order (best-effort), matching ../op/local-executor.ts's `onFailure`
|
|
181
|
+
* handling. Cross-component artifact outputs this component published (if
|
|
182
|
+
* any) are recorded into `componentOutputs` under its own name so downstream
|
|
183
|
+
* components can reference `@<name>.publish.*`.
|
|
184
|
+
*/
|
|
185
|
+
export declare function runComponentDeploy(component: DriverComponent, ctx: DeployContext, registry: CapabilityRegistry, componentOutputs: Record<string, Record<string, unknown>>): Promise<DriverComponentResult>;
|
|
186
|
+
export interface InterpretRunOptions {
|
|
187
|
+
/** Target environment name, threaded into every capability's `DeployContext`. */
|
|
188
|
+
env: string;
|
|
189
|
+
/** Environment config resolved ahead of the run (registry URLs, cluster names, ...) — passed through as `DeployContext.vars`. */
|
|
190
|
+
vars?: Record<string, unknown>;
|
|
191
|
+
/** Pre-seeded cross-component/cross-stack outputs (e.g. from a prior run, or a caller resolving `stackOutput` externally). Merged with outputs this run produces. */
|
|
192
|
+
componentOutputs?: Record<string, Record<string, unknown>>;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Run a set of components to completion on the local in-process executor:
|
|
196
|
+
* resolve dependency order and parallel-safe waves from `dependsOn`, then run
|
|
197
|
+
* each wave's components (independent components within a wave run
|
|
198
|
+
* concurrently; components across waves run in wave order), dispatching
|
|
199
|
+
* every step to `registry` by `kind`. Stops the whole run at the first failed
|
|
200
|
+
* component (after that component's own saga rollback completes), returning
|
|
201
|
+
* a result with `ok: false`; throws `DriverRunFailure` carrying that result
|
|
202
|
+
* so callers can choose to inspect or propagate it.
|
|
203
|
+
*
|
|
204
|
+
* Zero per-component logic: this function and everything it calls dispatches
|
|
205
|
+
* purely on the generic `Component`/`Phase`/`Step` shapes and the registry —
|
|
206
|
+
* no branch anywhere names a specific component or capability.
|
|
207
|
+
*/
|
|
208
|
+
export declare function runInterpretDriver(components: DriverComponent[], registry: CapabilityRegistry, options: InterpretRunOptions): Promise<DriverRunResult>;
|
|
209
|
+
//# sourceMappingURL=driver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../src/components/driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Component-native release orchestration — capability contract, starter verb
|
|
3
|
+
* set, and the thin interpret driver (epic #551, #554/#556). The pilot AWS
|
|
4
|
+
* leaves have real implementations over an injectable `CloudExecutor` (#557);
|
|
5
|
+
* every other verb remains a typed stub. See https://intentius.io/chant/components/orchestration/
|
|
6
|
+
*/
|
|
7
|
+
export { type Archetype, type Wiring, type StackOutputReference, type BuildSpec, type Step, type Gate, type Phase, type Component, phase, gate, stackOutput, inferArchetype, projectToJson, isComponent, } from "./component.js";
|
|
8
|
+
export { type DiscoveredComponent, type ComponentDiscoveryResult, discoverComponents, } from "./discover.js";
|
|
9
|
+
export { type ListedComponent, type ListComponentsResult, type DescribedComponent, type DescribeComponentResult, type ComponentGraphResult, type GenerateLexicon, type GenerateComponentsResult, type RunComponentsOptions, type RunComponentsResult, type ResolvedComponentTargets, listComponents, describeComponent, computeComponentGraph, generateComponentsPipeline, runComponents, findComponentGate, resolveComponentTargets, } from "./cli-support.js";
|
|
10
|
+
export { renderDriverHuman, renderDriverJson } from "./driver-output.js";
|
|
11
|
+
export { type Capability, type CapabilityInput, type CapabilityOutput, type DeployContext, CapabilityRegistry, CapabilityNotImplementedError, } from "./capability.js";
|
|
12
|
+
export { createCapabilityRegistry, STARTER_VERB_FAMILIES } from "./registry.js";
|
|
13
|
+
export { type CapabilityPlugin, type CapabilityManifest, isCapabilityPlugin, } from "./capability-plugin.js";
|
|
14
|
+
export { CapabilityManifestSchema, type CapabilityManifestParsed, validateCapabilityManifest, } from "./capability-plugin-schema.js";
|
|
15
|
+
export { loadCapabilityPlugin, loadCapabilityPlugins, registerCapabilityPlugins, buildCapabilityRegistry, type BuildCapabilityRegistryOptions, MalformedCapabilityPluginError, DuplicateCapabilityKindError, } from "./capability-plugin-loader.js";
|
|
16
|
+
export { starterCapabilityPlugin } from "./starter-plugin.js";
|
|
17
|
+
export * from "./verbs/index.js";
|
|
18
|
+
export * from "./builders.js";
|
|
19
|
+
export { type DriverStep, type DriverGate, type DriverPhase, type DriverComponent, type DriverStepRecord, type DriverComponentResult, type DriverRunResult, type ComponentGraph, type InterpretRunOptions, type WiringValue, resolveComponentGraph, resolveWiring, resolveStepInput, runComponentDeploy, runInterpretDriver, DriverGateUnsupportedError, DependencyCycleError, UnknownDependencyError, DriverRunFailure, } from "./driver.js";
|
|
20
|
+
export { EcsFargateComponent, type EcsFargateComponentConfig, LambdaComponent, type LambdaComponentConfig, SingleHostComposeComponent, type SingleHostComposeComponentConfig, } from "./presets/index.js";
|
|
21
|
+
export { type ComponentTemporalCodegen, type ComponentTemporalCodegenOptions, loadComponentTemporalCodegen, } from "./temporal-codegen-loader.js";
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,KAAK,SAAS,EACd,KAAK,MAAM,EACX,KAAK,oBAAoB,EACzB,KAAK,SAAS,EACd,KAAK,IAAI,EACT,KAAK,IAAI,EACT,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,EACL,IAAI,EACJ,WAAW,EACX,cAAc,EACd,aAAa,EACb,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,0BAA0B,EAC1B,aAAa,EACb,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EACL,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,wBAAwB,EACxB,KAAK,wBAAwB,EAC7B,0BAA0B,GAC3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,EACvB,KAAK,8BAA8B,EACnC,8BAA8B,EAC9B,4BAA4B,GAC7B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,qBAAqB,EACrB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,0BAA0B,EAC1B,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,mBAAmB,EACnB,KAAK,yBAAyB,EAC9B,eAAe,EACf,KAAK,qBAAqB,EAC1B,0BAA0B,EAC1B,KAAK,gCAAgC,GACtC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,+BAA+B,EACpC,4BAA4B,GAC7B,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { BuildArchiveManifest } from "./verbs/build-archive.js";
|
|
2
|
+
import type { DriverStepRecord } from "./driver.js";
|
|
3
|
+
/**
|
|
4
|
+
* Find the most fully-accumulated `BuildArchiveManifest` a component run
|
|
5
|
+
* produced, by scanning its step records for the last manifest-bearing
|
|
6
|
+
* output — mirroring `extractRunDigest`'s "last wins" convention, which is
|
|
7
|
+
* also the correct one here: every build-family capability's `manifest`
|
|
8
|
+
* input/output accumulates onto whatever manifest came before it in the same
|
|
9
|
+
* phase (see ../components/verbs/build.ts's `DockerBuildInput.manifest`
|
|
10
|
+
* doc), so the *last* manifest-bearing step output in run order is always
|
|
11
|
+
* the fullest one — a template + SBOM + config-BOM composition's final step
|
|
12
|
+
* carries every earlier entry too, not just its own.
|
|
13
|
+
*/
|
|
14
|
+
export declare function extractRunManifest(records: DriverStepRecord[]): BuildArchiveManifest | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* Same manifest extraction as `extractRunManifest`, but over a component
|
|
17
|
+
* Temporal workflow's returned `phaseOutputs` (`{ [phase]: output }`) —
|
|
18
|
+
* mirroring ./auto-release.ts's `extractRunDigestFromPhaseOutputs`, the
|
|
19
|
+
* `--temporal` CLI path's counterpart, since that path never sees individual
|
|
20
|
+
* step records either.
|
|
21
|
+
*/
|
|
22
|
+
export declare function extractRunManifestFromPhaseOutputs(phaseOutputs: Record<string, Record<string, unknown>> | undefined): BuildArchiveManifest | undefined;
|
|
23
|
+
/** Explicit reasons `maybePersistBuildManifest` declined to write — never a thrown error, mirroring ./auto-release.ts's `AutoReleaseSkipReason`. */
|
|
24
|
+
export type ManifestPersistSkipReason = "opted-out" | "run-not-successful" | "no-manifest";
|
|
25
|
+
export type ManifestPersistResult = {
|
|
26
|
+
persisted: true;
|
|
27
|
+
commit: string;
|
|
28
|
+
manifestDigest: string;
|
|
29
|
+
} | {
|
|
30
|
+
persisted: false;
|
|
31
|
+
reason: ManifestPersistSkipReason;
|
|
32
|
+
} | {
|
|
33
|
+
persisted: false;
|
|
34
|
+
reason: "error";
|
|
35
|
+
error: string;
|
|
36
|
+
};
|
|
37
|
+
/** Input describing one component's completed run — the manifest-persistence counterpart of ./auto-release.ts's `AutoReleaseRunInfo`. */
|
|
38
|
+
export interface ManifestPersistRunInfo {
|
|
39
|
+
/** Whether the run reported overall success. A caller must not call this for a non-terminal/in-progress run — mirrors `AutoReleaseRunInfo.success`. */
|
|
40
|
+
success: boolean;
|
|
41
|
+
/** The component's step records (local executor), used to locate the accumulated manifest via `extractRunManifest`. Mutually exclusive with `manifest`. */
|
|
42
|
+
records?: DriverStepRecord[];
|
|
43
|
+
/** A manifest already resolved by the caller (e.g. a future durable/Temporal path that has its own phaseOutputs-shaped extraction). Takes precedence over `records` when both are given. */
|
|
44
|
+
manifest?: BuildArchiveManifest;
|
|
45
|
+
}
|
|
46
|
+
/** Opt-out knobs for manifest persistence, mirroring ./auto-release.ts's `AutoReleaseOptions`. */
|
|
47
|
+
export interface ManifestPersistOptions {
|
|
48
|
+
/** `--no-release-record` / `chant.config.ts`'s `release.autoRecord: false` also gates manifest persistence — both are "durably record this successful deploy" side effects with the same opt-out story, so one flag/config knob controls both rather than introducing a second, easy-to-forget switch. Default: persistence is ON. */
|
|
49
|
+
disabled?: boolean;
|
|
50
|
+
/** Working directory for the git plumbing calls (tests). */
|
|
51
|
+
cwd?: string;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* After a successful `chant run --components <name> --env <env>` (local
|
|
55
|
+
* executor), persist the run's accumulated `BuildArchiveManifest` (if any)
|
|
56
|
+
* to the durable build-manifest store (../lifecycle/build-ledger-store.ts)
|
|
57
|
+
* and push it — or explain, without throwing, why it didn't. Never called
|
|
58
|
+
* for a failed run, matching `maybeRecordAutoRelease`'s contract exactly.
|
|
59
|
+
*
|
|
60
|
+
* Skips (returns `{ persisted: false, reason }`, never throws):
|
|
61
|
+
* - `options.disabled` — the opt-out flag/config was set.
|
|
62
|
+
* - `run.success` false — defensive; callers should not reach here on
|
|
63
|
+
* failure. A dry-run/failed deploy persists nothing, by construction —
|
|
64
|
+
* this is also what makes a dry run safe: `chant run --components` never
|
|
65
|
+
* calls this function at all unless the run actually completed.
|
|
66
|
+
* - no manifest found in the run's records — a component with no
|
|
67
|
+
* build-family step (an infra-only/apply-only component, or a
|
|
68
|
+
* build-less `Publish`-only producer that reused a prior archive) has
|
|
69
|
+
* nothing to persist. This is the expected common case for most deploys,
|
|
70
|
+
* not an error.
|
|
71
|
+
*
|
|
72
|
+
* Write/push failures (any error `persistBuildManifest`/`pushLifecycle`
|
|
73
|
+
* throw) are reported as `{ persisted: false, reason: "error", error }`
|
|
74
|
+
* rather than propagated — same "never turn a successful deploy into a
|
|
75
|
+
* failing CLI invocation" contract `maybeRecordAutoRelease` already
|
|
76
|
+
* establishes for release records.
|
|
77
|
+
*/
|
|
78
|
+
export declare function maybePersistBuildManifest(run: ManifestPersistRunInfo, options?: ManifestPersistOptions): Promise<ManifestPersistResult>;
|
|
79
|
+
//# sourceMappingURL=manifest-persistence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest-persistence.d.ts","sourceRoot":"","sources":["../../src/components/manifest-persistence.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAajD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,oBAAoB,GAAG,SAAS,CAShG;AAED;;;;;;GAMG;AACH,wBAAgB,kCAAkC,CAChD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,GAChE,oBAAoB,GAAG,SAAS,CAQlC;AAED,oJAAoJ;AACpJ,MAAM,MAAM,yBAAyB,GAAG,WAAW,GAAG,oBAAoB,GAAG,aAAa,CAAC;AAE3F,MAAM,MAAM,qBAAqB,GAC7B;IAAE,SAAS,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,SAAS,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,yBAAyB,CAAA;CAAE,GACvD;IAAE,SAAS,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,yIAAyI;AACzI,MAAM,WAAW,sBAAsB;IACrC,uJAAuJ;IACvJ,OAAO,EAAE,OAAO,CAAC;IACjB,2JAA2J;IAC3J,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B,4LAA4L;IAC5L,QAAQ,CAAC,EAAE,oBAAoB,CAAC;CACjC;AAED,kGAAkG;AAClG,MAAM,WAAW,sBAAsB;IACrC,sUAAsU;IACtU,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4DAA4D;IAC5D,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,sBAAsB,EAC3B,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAoBhC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pilot: ALB/ECS target (#555, epic #551).
|
|
3
|
+
*
|
|
4
|
+
* Exercises the build + cross-stack + auto-rollback axes: `docker-build` →
|
|
5
|
+
* `publish-image` (promote by digest, deploy-time) → `cfn-deploy` (importing
|
|
6
|
+
* the shared ALB's listener/cluster/subnets as cross-stack outputs, resolved
|
|
7
|
+
* by `chant graph --stacks` rather than a `describe-stacks | jq` pipeline
|
|
8
|
+
* step — see composition-and-wiring.mdx#cross-stack-outputs) →
|
|
9
|
+
* `ecs-update-service` → `wait-steady-state` + `health-gate`.
|
|
10
|
+
*
|
|
11
|
+
* This is the direct component-native replacement for the hand-rolled GitLab
|
|
12
|
+
* pipeline in `examples/gitlab-aws-alb-api/src/pipeline.ts`: the
|
|
13
|
+
* `describe-stacks`/`jq` glue in that pipeline's `deployService` job is
|
|
14
|
+
* exactly the cross-stack `stackOutput()` wiring below, and its
|
|
15
|
+
* `docker build`/`docker push` steps are the `docker-build` + `publish-image`
|
|
16
|
+
* capabilities. `service` archetype: build → publish → apply → verify, the
|
|
17
|
+
* fullest of the three archetypes.
|
|
18
|
+
*
|
|
19
|
+
* The JSON projection of this pilot is authoritative at
|
|
20
|
+
* ../__fixtures__/alb-ecs-service.json (already schema-validated by
|
|
21
|
+
* component-schema.test.ts) — this module is the real typed `Component`
|
|
22
|
+
* authoring form (#560, ../component.ts) that composes to that same
|
|
23
|
+
* document; see ./pilots.test.ts, which asserts the two never diverge.
|
|
24
|
+
*/
|
|
25
|
+
import type { Component } from "../component.js";
|
|
26
|
+
export declare const searchService: Component;
|
|
27
|
+
//# sourceMappingURL=alb-ecs.pilot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alb-ecs.pilot.d.ts","sourceRoot":"","sources":["../../../src/components/pilots/alb-ecs.pilot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAU9C,eAAO,MAAM,aAAa,EAAE,SA2B3B,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pilot: DynamoDB table (#555, epic #551).
|
|
3
|
+
*
|
|
4
|
+
* Exercises the sticky-apply axis: `cfn-deploy` carries declarative safety
|
|
5
|
+
* options — `onReplace: "block"` refuses a changeset that would replace the
|
|
6
|
+
* table (losing data) rather than update it in place, and `stageGsi: true`
|
|
7
|
+
* stages a GSI change (add → backfill → remove) instead of an in-place
|
|
8
|
+
* replace. That stickiness lives inside the `cfn-deploy` capability, exposed
|
|
9
|
+
* as options, not scripted per component — see
|
|
10
|
+
* capabilities.mdx#stickiness-lives-in-the-capability. `infra` archetype: no
|
|
11
|
+
* build, apply → verify only. Verify fans out in parallel: the stack wait and
|
|
12
|
+
* a GSI backfill migration have no ordering dependency on each other.
|
|
13
|
+
*
|
|
14
|
+
* The JSON projection of this pilot is authoritative at
|
|
15
|
+
* ../__fixtures__/dynamodb-infra.json (already schema-validated by
|
|
16
|
+
* component-schema.test.ts) — this module is the real typed `Component`
|
|
17
|
+
* authoring form (#560, ../component.ts) that composes to that same
|
|
18
|
+
* document; see ./pilots.test.ts, which asserts the two never diverge.
|
|
19
|
+
*/
|
|
20
|
+
import type { Component } from "../component.js";
|
|
21
|
+
export declare const ordersTable: Component;
|
|
22
|
+
//# sourceMappingURL=dynamodb.pilot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamodb.pilot.d.ts","sourceRoot":"","sources":["../../../src/components/pilots/dynamodb.pilot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAY9C,eAAO,MAAM,WAAW,EAAE,SA0BzB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pilot pair: JAR producer -> EMR consumer, cross-component artifact outputs
|
|
3
|
+
* (#561, epic #551).
|
|
4
|
+
*
|
|
5
|
+
* This is the epic's worked example for cross-component wiring (#551
|
|
6
|
+
* §"Cross-component outputs", docs/components/composition-and-wiring.mdx
|
|
7
|
+
* §"Cross-component outputs"): a **producer-library** component
|
|
8
|
+
* (`jar-lib`) that only builds and publishes an artifact — no apply, no
|
|
9
|
+
* service — paired with an **infra** consumer (`emr-job`) that submits an
|
|
10
|
+
* EMR job run against the producer's published S3 URI.
|
|
11
|
+
*
|
|
12
|
+
* The wiring itself needs no new machinery: `dependsOn: ["jar-lib"]` orders
|
|
13
|
+
* the producer first (`resolveComponentGraph`, ../driver.ts), and
|
|
14
|
+
* `"@jar-lib.publish.uri"` is the same `@<component>.publish.uri|digest|key`
|
|
15
|
+
* reference form `resolveWiring` (../driver.ts) already resolves generically
|
|
16
|
+
* from `componentOutputs`, which `runComponentDeploy` already populates from
|
|
17
|
+
* any step whose output carries `uri`/`digest`/`key` (`findPublishOutput`) —
|
|
18
|
+
* both landed with #556/#560 and are exercised by ../driver.test.ts's
|
|
19
|
+
* "wires a cross-component artifact reference" case. What #561 actually adds
|
|
20
|
+
* is: this pair authored as real typed `Component`s (rather than only the
|
|
21
|
+
* hand-written JSON fixtures), and a real `emr-start-job-run`/`wait-job`
|
|
22
|
+
* capability implementation (../verbs/job-submission.ts,
|
|
23
|
+
* ../verbs/wait-verify.ts) so the pair runs to completion against a mocked
|
|
24
|
+
* `CloudExecutor` instead of throwing `CapabilityNotImplementedError`.
|
|
25
|
+
*
|
|
26
|
+
* The JSON projections of these two components are authoritative at
|
|
27
|
+
* ../__fixtures__/jar-lib-producer.json and
|
|
28
|
+
* ../__fixtures__/emr-job-consumer.json (pre-existing, from #560) — this
|
|
29
|
+
* module is the real typed `Component` authoring form that composes to those
|
|
30
|
+
* same documents; see ./pilots.test.ts, which asserts the two never diverge.
|
|
31
|
+
*/
|
|
32
|
+
import type { Component } from "../component.js";
|
|
33
|
+
/** Producer: a JAR built from a Maven project, published to S3. Publish-only deploy — no apply phase at all, the defining shape of the `producer-library` archetype. */
|
|
34
|
+
export declare const jarLib: Component;
|
|
35
|
+
/** Consumer: an EMR job run reading the producer's published JAR by S3 URI. `dependsOn: ["jar-lib"]` orders the producer first; the graph resolves the reference into the Submit step. */
|
|
36
|
+
export declare const emrJob: Component;
|
|
37
|
+
//# sourceMappingURL=jar-emr.pilot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jar-emr.pilot.d.ts","sourceRoot":"","sources":["../../../src/components/pilots/jar-emr.pilot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,wKAAwK;AACxK,eAAO,MAAM,MAAM,EAAE,SAUpB,CAAC;AAEF,0LAA0L;AAC1L,eAAO,MAAM,MAAM,EAAE,SAmBpB,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pilot: image-processor Lambda (#558, epic #551).
|
|
3
|
+
*
|
|
4
|
+
* The fourth, deliberately different component #558 asks for, added to prove
|
|
5
|
+
* the sprawl metric holds beyond the original three pilots (#555): a
|
|
6
|
+
* container-image AWS Lambda function. `service` archetype, same as ALB/ECS,
|
|
7
|
+
* but a genuinely different shape on two axes at once:
|
|
8
|
+
*
|
|
9
|
+
* - **apply target**: no CloudFormation stack at all — `lambda-deploy`
|
|
10
|
+
* updates a function's code directly (`UpdateFunctionCode` +
|
|
11
|
+
* `PublishVersion` + `UpdateAlias`), never a `cfn-deploy` changeset. Every
|
|
12
|
+
* prior pilot's apply step was `cfn-deploy`; this is the first pilot whose
|
|
13
|
+
* Apply phase contains none.
|
|
14
|
+
* - **verify shape**: a single `wait-for-stack`-free health check
|
|
15
|
+
* (`health-gate` against the function's alias URL) rather than an ECS
|
|
16
|
+
* steady-state poll or a Neo4j quorum probe.
|
|
17
|
+
*
|
|
18
|
+
* Reuses `docker-build` + `publish-image` unchanged from the ALB/ECS pilot's
|
|
19
|
+
* axis (build + promote-by-digest is identical for a container-image Lambda:
|
|
20
|
+
* https://docs.aws.amazon.com/lambda/latest/dg/images-create.html) — the
|
|
21
|
+
* `imageRef`/`codeRef` wiring (`@Publish.digest` / `@Publish.uri`) is the same
|
|
22
|
+
* `@Phase.field` prior-step reference form every pilot already uses. The only
|
|
23
|
+
* capability this component needed that didn't already exist is `lambda-deploy`
|
|
24
|
+
* (../verbs/apply.ts) — one new capability, exactly the sprawl metric's bound
|
|
25
|
+
* for "genuinely novel"; see ../SPRAWL-VALIDATION.md for the full accounting.
|
|
26
|
+
*
|
|
27
|
+
* The JSON projection of this pilot is authoritative at
|
|
28
|
+
* ../__fixtures__/lambda-image-processor.json — this module is the real
|
|
29
|
+
* typed `Component` authoring form (#560, ../component.ts) that composes to
|
|
30
|
+
* that same document; see ./pilots.test.ts, which asserts the two never
|
|
31
|
+
* diverge.
|
|
32
|
+
*/
|
|
33
|
+
import type { Component } from "../component.js";
|
|
34
|
+
export declare const imageProcessor: Component;
|
|
35
|
+
//# sourceMappingURL=lambda.pilot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lambda.pilot.d.ts","sourceRoot":"","sources":["../../../src/components/pilots/lambda.pilot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,eAAO,MAAM,cAAc,EAAE,SAkB5B,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pilot: Neo4j per-instance fan-out cluster (#555, epic #551).
|
|
3
|
+
*
|
|
4
|
+
* Exercises the fan-out axis: one component composing N per-instance
|
|
5
|
+
* mini-compositions (`cfn-deploy` + `code-deploy` + a health wait), seeded
|
|
6
|
+
* first, then rolled through the remaining instances one at a time behind a
|
|
7
|
+
* `wait-cluster-healthy` gate. See composition-and-wiring.mdx#fan-out-is-composition-not-orchestrator-knowledge.
|
|
8
|
+
*
|
|
9
|
+
* The JSON projection of this pilot is authoritative at
|
|
10
|
+
* ../__fixtures__/neo4j-fanout.json (already schema-validated by
|
|
11
|
+
* component-schema.test.ts) — this module is the real typed `Component`
|
|
12
|
+
* authoring form (#560, ../component.ts) that composes to that same
|
|
13
|
+
* document; see ./pilots.test.ts, which asserts the two never diverge.
|
|
14
|
+
*/
|
|
15
|
+
import type { Component } from "../component.js";
|
|
16
|
+
export declare const neo4jCluster: Component;
|
|
17
|
+
//# sourceMappingURL=neo4j-fanout.pilot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"neo4j-fanout.pilot.d.ts","sourceRoot":"","sources":["../../../src/components/pilots/neo4j-fanout.pilot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAS,MAAM,cAAc,CAAC;AAkErD,eAAO,MAAM,YAAY,EAAE,SAU1B,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Re-exports the real `projectToJson` (#560, ../component.ts) under the
|
|
3
|
+
* pilots' original import path. Prior to #560, this module held its own
|
|
4
|
+
* "intentionally dumb" projection over the stopgap `authoring-shape.ts`
|
|
5
|
+
* (#555); now that the real typed `Component` authoring form exists, its
|
|
6
|
+
* `projectToJson` (which also fills in `archetype` via `inferArchetype` when
|
|
7
|
+
* a pilot doesn't set one explicitly) is the single implementation. Kept as a
|
|
8
|
+
* re-export, rather than inlining `../component`'s import into every pilot
|
|
9
|
+
* test, so `./pilots.test.ts`/`./pilots-e2e.test.ts`/`../driver.test.ts`
|
|
10
|
+
* don't need their import paths touched by this migration.
|
|
11
|
+
*/
|
|
12
|
+
export { projectToJson } from "../component.js";
|
|
13
|
+
//# sourceMappingURL=project.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../src/components/pilots/project.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Preset: `EcsFargateComponent` (#566, epic #551 §"6. Presets (Level 2 reuse)").
|
|
3
|
+
*
|
|
4
|
+
* The named-composition builder for the ALB/ECS shape
|
|
5
|
+
* (`../pilots/alb-ecs.pilot.ts`): `docker-build` -> `publish-image` ->
|
|
6
|
+
* `cfn-deploy` (importing a shared ALB's cross-stack outputs) ->
|
|
7
|
+
* `ecs-update-service` -> `wait-steady-state` + `health-gate`, with the same
|
|
8
|
+
* component-declared `rollback-previous` compensation phase the pilot uses
|
|
9
|
+
* (no native rollback for an already-running service swap — see
|
|
10
|
+
* ../pilots/alb-ecs.pilot.ts's docstring).
|
|
11
|
+
*
|
|
12
|
+
* This is Level 2 reuse over Level 1 raw capabilities: a component that looks
|
|
13
|
+
* like this composes `EcsFargateComponent({ ... })` directly; the odd case
|
|
14
|
+
* that needs something extra starts from the same shape and drops to raw
|
|
15
|
+
* `phase()`/capability `Step`s where it is special (see
|
|
16
|
+
* docs/components/capabilities.mdx#presets--reuse-without-a-closed-set) —
|
|
17
|
+
* `./ecs-fargate.test.ts` demonstrates exactly that by re-deriving
|
|
18
|
+
* `alb-ecs.pilot.ts`'s `searchService` component from this preset and
|
|
19
|
+
* asserting the two project to the identical JSON contract.
|
|
20
|
+
*/
|
|
21
|
+
import type { Component, Wiring } from "../component.js";
|
|
22
|
+
export interface EcsFargateComponentConfig {
|
|
23
|
+
/** Component/service name (kebab-case) — becomes both the component's `name` and the ECS service name unless `service` overrides it. */
|
|
24
|
+
name: string;
|
|
25
|
+
/** ECS service name. Default: `name`. */
|
|
26
|
+
service?: string;
|
|
27
|
+
/** Docker build context. Default: ".". */
|
|
28
|
+
context?: string;
|
|
29
|
+
/** Path to the built CloudFormation template inside the archive. Default: `archive:<name>.template.json`. */
|
|
30
|
+
template?: string;
|
|
31
|
+
/** Health check path for the post-deploy `health-gate`. */
|
|
32
|
+
healthPath: string;
|
|
33
|
+
/** Other components that must complete first, beyond the shared-ALB stack (if any). */
|
|
34
|
+
dependsOn?: string[];
|
|
35
|
+
/**
|
|
36
|
+
* Shared ALB stack this service imports `ListenerArn`/`ClusterArn`/`Subnets`
|
|
37
|
+
* from, via cross-stack `stackOutput()` wiring — the same axis
|
|
38
|
+
* `alb-ecs.pilot.ts` exercises. Omit for a service with its own
|
|
39
|
+
* self-contained stack (no shared-ALB import; `cfn-deploy` receives no
|
|
40
|
+
* `inputs`).
|
|
41
|
+
*/
|
|
42
|
+
sharedAlbStack?: string;
|
|
43
|
+
/** Additional/override CloudFormation template inputs, merged with (and taking precedence over) the shared-ALB outputs. */
|
|
44
|
+
extraInputs?: Record<string, Wiring>;
|
|
45
|
+
/** ECS cluster reference passed to `ecs-update-service`. Default: `"$env.cluster"`. */
|
|
46
|
+
cluster?: Wiring;
|
|
47
|
+
/** Destination registry `publish-image` promotes to. Default: `"$env.registry"`. */
|
|
48
|
+
registry?: Wiring;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Expand an ECS/Fargate service behind an ALB to its standard
|
|
52
|
+
* Publish/Apply/Verify composition — the 80% shape `alb-ecs.pilot.ts` is the
|
|
53
|
+
* hand-composed reference for. Returns a full `Component`; a caller that
|
|
54
|
+
* needs one extra step (an additional Apply capability, a different Verify
|
|
55
|
+
* shape) spreads the result and edits `deploy`/`rollback` directly — the
|
|
56
|
+
* preset is a starting composition, not a closed strategy object.
|
|
57
|
+
*/
|
|
58
|
+
export declare function EcsFargateComponent(config: EcsFargateComponentConfig): Component;
|
|
59
|
+
//# sourceMappingURL=ecs-fargate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ecs-fargate.d.ts","sourceRoot":"","sources":["../../../src/components/presets/ecs-fargate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtD,MAAM,WAAW,yBAAyB;IACxC,wIAAwI;IACxI,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6GAA6G;IAC7G,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,uFAAuF;IACvF,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2HAA2H;IAC3H,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,uFAAuF;IACvF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,yBAAyB,GAAG,SAAS,CAyChF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Preset library (#566, epic #551 §"6. Presets (Level 2 reuse)") — named
|
|
3
|
+
* composition builders for the common component shapes. Each preset expands
|
|
4
|
+
* to a full, valid `Component` (../component.ts): the same typed authoring
|
|
5
|
+
* form and JSON contract every hand-composed component projects to, so a
|
|
6
|
+
* preset-based component and a hand-composed one are indistinguishable to
|
|
7
|
+
* `projectToJson`, schema validation, lint, and the driver.
|
|
8
|
+
*
|
|
9
|
+
* This is Level 2 reuse over Level 1 raw capabilities
|
|
10
|
+
* (docs/components/capabilities.mdx#presets--reuse-without-a-closed-set): a
|
|
11
|
+
* component that matches one of these shapes calls the preset directly; the
|
|
12
|
+
* odd one that needs something extra spreads the returned `Component` and
|
|
13
|
+
* edits `deploy`/`rollback` where it is special. Presets remove composition
|
|
14
|
+
* copy-paste (the COMP007 lint hint) without creating a closed strategy set —
|
|
15
|
+
* see ./ecs-fargate.test.ts, ./lambda.test.ts, and
|
|
16
|
+
* ./single-host-compose.test.ts, each of which re-derives an existing
|
|
17
|
+
* hand-composed pilot/fixture from its preset and asserts the two project to
|
|
18
|
+
* the identical JSON contract.
|
|
19
|
+
*
|
|
20
|
+
* Deliberately not exhaustive: three presets covering the three archetypes'
|
|
21
|
+
* most common shapes (a load-balanced container service, a container-image
|
|
22
|
+
* Lambda function, and a registry-less single-host compose deploy), per
|
|
23
|
+
* #566's explicit scope ("start with the common shapes; an exhaustive
|
|
24
|
+
* catalog is out of scope").
|
|
25
|
+
*/
|
|
26
|
+
export { EcsFargateComponent, type EcsFargateComponentConfig } from "./ecs-fargate.js";
|
|
27
|
+
export { LambdaComponent, type LambdaComponentConfig } from "./lambda.js";
|
|
28
|
+
export { SingleHostComposeComponent, type SingleHostComposeComponentConfig, } from "./single-host-compose.js";
|
|
29
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/presets/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,mBAAmB,EAAE,KAAK,yBAAyB,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,EACL,0BAA0B,EAC1B,KAAK,gCAAgC,GACtC,MAAM,uBAAuB,CAAC"}
|