@empire-builder-kit/nx 1.0.0-rc.4 → 1.0.0-rc.41
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/README.md +44 -10
- package/executors.json +21 -1
- package/generators.json +10 -0
- package/package.json +31 -7
- package/src/aws/child-environment.d.ts +10 -0
- package/src/aws/child-environment.js +77 -0
- package/src/aws/identity.d.ts +13 -0
- package/src/aws/identity.js +41 -0
- package/src/aws-authority/index.d.ts +2 -0
- package/src/aws-authority/index.js +6 -0
- package/src/aws-authority/lambda-policy-ordering.d.ts +38 -0
- package/src/aws-authority/lambda-policy-ordering.js +56 -0
- package/src/aws-authority/stage-authority.d.ts +248 -0
- package/src/aws-authority/stage-authority.js +3558 -0
- package/src/blueprints/external-sandbox.d.ts +1 -1
- package/src/blueprints/external-sandbox.js +21 -9
- package/src/blueprints/manifest.d.ts +1 -1
- package/src/blueprints/resolver.js +28 -15
- package/src/cli/bootstrap.d.ts +1 -1
- package/src/cli/deploy-runtime.d.ts +30 -0
- package/src/cli/deploy-runtime.js +174 -0
- package/src/cli/dev-command.d.ts +18 -4
- package/src/cli/dev-command.js +71 -0
- package/src/cli/main.d.ts +9 -1
- package/src/cli/main.js +157 -24
- package/src/cli/output.d.ts +1 -1
- package/src/cli/output.js +1 -1
- package/src/cli/personal-secret-runtime.d.ts +12 -0
- package/src/cli/personal-secret-runtime.js +18 -3
- package/src/cli/secret-terminal.js +1 -1
- package/src/container-images.d.ts +1 -1
- package/src/container-images.js +1 -1
- package/src/developer-agent/context.js +41 -9
- package/src/developer-agent/generator-planning.js +20 -6
- package/src/developer-agent/git-inspection.d.ts +6 -2
- package/src/developer-agent/git-inspection.js +78 -6
- package/src/developer-agent/model.d.ts +5 -3
- package/src/developer-agent/model.js +4 -4
- package/src/developer-agent/operation-registry.d.ts +15 -0
- package/src/developer-agent/operation-registry.js +342 -49
- package/src/developer-agent/planning.d.ts +8 -1
- package/src/developer-agent/planning.js +39 -16
- package/src/developer-agent/preview-changes.d.ts +2 -0
- package/src/developer-agent/preview-changes.js +14 -2
- package/src/developer-agent/preview-source.js +3 -0
- package/src/developer-agent/validation.js +25 -9
- package/src/developer-agent/workspace-inspection.js +60 -5
- package/src/executors/blueprint-trust/blueprint-trust.js +6 -0
- package/src/executors/deployment-plan/deployment-plan.d.ts +2 -0
- package/src/executors/deployment-plan/deployment-plan.js +57 -2
- package/src/executors/dev-doctor/dev-doctor.js +13 -6
- package/src/executors/dev-task-cleanup/dev-task-cleanup.d.ts +23 -0
- package/src/executors/dev-task-cleanup/dev-task-cleanup.js +145 -0
- package/src/executors/dev-task-cleanup/schema.json +9 -0
- package/src/executors/dev-task-cleanup/task-stack-absence.d.ts +27 -0
- package/src/executors/dev-task-cleanup/task-stack-absence.js +281 -0
- package/src/executors/dev-task-cleanup/task-stack-checkpoint.d.ts +12 -0
- package/src/executors/dev-task-cleanup/task-stack-checkpoint.js +92 -0
- package/src/executors/fleet/fleet.js +1 -1
- package/src/executors/foundation-preflight/foundation-preflight.d.ts +1 -0
- package/src/executors/foundation-preflight/foundation-preflight.js +6 -2
- package/src/executors/foundation-preflight/schema.json +5 -0
- package/src/executors/foundation-profile-preflight/foundation-profile-preflight.d.ts +13 -2
- package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js +95 -31
- package/src/executors/foundation-profile-preflight/production-database-safeguard.d.ts +65 -0
- package/src/executors/foundation-profile-preflight/production-database-safeguard.js +223 -0
- package/src/executors/foundation-profile-preflight/schema.json +15 -4
- package/src/executors/foundation-remove-preflight/foundation-remove-preflight.d.ts +11 -1
- package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js +70 -20
- package/src/executors/foundation-remove-preflight/schema.json +6 -1
- package/src/executors/github-bootstrap/github-bootstrap.d.ts +1 -0
- package/src/executors/github-bootstrap/github-bootstrap.js +3 -0
- package/src/executors/github-bootstrap/schema.json +7 -1
- package/src/executors/infrastructure-plan/infrastructure-plan.d.ts +29 -136
- package/src/executors/infrastructure-plan/infrastructure-plan.js +230 -3282
- package/src/executors/infrastructure-plan/schema.json +12 -52
- package/src/executors/local-deploy/federated-credential-transport.d.ts +48 -0
- package/src/executors/local-deploy/federated-credential-transport.js +252 -0
- package/src/executors/local-deploy/local-approval.d.ts +18 -0
- package/src/executors/local-deploy/local-approval.js +39 -0
- package/src/executors/local-deploy/local-deploy.d.ts +112 -0
- package/src/executors/local-deploy/local-deploy.js +1404 -0
- package/src/executors/local-deploy/schema.json +70 -0
- package/src/executors/refresh/refresh.js +2 -2
- package/src/executors/remove/remove.js +2 -2
- package/src/executors/router-waf-rehearsal/router-waf-rehearsal.d.ts +42 -0
- package/src/executors/router-waf-rehearsal/router-waf-rehearsal.js +1229 -0
- package/src/executors/router-waf-rehearsal/schema.json +29 -0
- package/src/executors/secret-initialize/schema.json +42 -0
- package/src/executors/secret-initialize/secret-initialize.d.ts +34 -0
- package/src/executors/secret-initialize/secret-initialize.js +297 -0
- package/src/executors/secret-metadata/schema.json +5 -0
- package/src/executors/secret-metadata/secret-metadata.d.ts +16 -2
- package/src/executors/secret-metadata/secret-metadata.js +129 -30
- package/src/executors/sst-lifecycle/generated-secret-retirement.d.ts +53 -0
- package/src/executors/sst-lifecycle/generated-secret-retirement.js +192 -0
- package/src/executors/sst-lifecycle/governed-native-operation.d.ts +48 -0
- package/src/executors/sst-lifecycle/governed-native-operation.js +163 -0
- package/src/executors/sst-lifecycle/logging-preflight.d.ts +5 -0
- package/src/executors/sst-lifecycle/logging-preflight.js +23 -13
- package/src/executors/sst-lifecycle/run-sst-command.d.ts +46 -6
- package/src/executors/sst-lifecycle/run-sst-command.js +750 -71
- package/src/executors/sst-lifecycle/schema.json +8 -1
- package/src/executors/sst-lifecycle/secret-preflight.d.ts +2 -0
- package/src/executors/sst-lifecycle/secret-preflight.js +13 -7
- package/src/executors/sst-lifecycle/sst-environment-source.d.ts +33 -0
- package/src/executors/sst-lifecycle/sst-environment-source.js +267 -0
- package/src/executors/sst-lifecycle/task-unlock.d.ts +15 -0
- package/src/executors/sst-lifecycle/task-unlock.js +126 -0
- package/src/executors/unlock/unlock.js +2 -2
- package/src/foundation/capability-plan.d.ts +43 -0
- package/src/foundation/capability-plan.js +168 -0
- package/src/foundation/cost-estimate.d.ts +170 -0
- package/src/foundation/cost-estimate.js +683 -0
- package/src/foundation/discovery.d.ts +14 -11
- package/src/foundation/discovery.js +32 -6
- package/src/foundation/index.d.ts +4 -0
- package/src/foundation/index.js +11 -0
- package/src/foundation/local-database-contract.d.ts +20 -0
- package/src/foundation/local-database-contract.js +262 -13
- package/src/foundation/local-private-smoke-access.d.ts +20 -0
- package/src/foundation/local-private-smoke-access.js +197 -0
- package/src/foundation/logging-preflight.js +1 -1
- package/src/foundation/logging.d.ts +3 -1
- package/src/foundation/logging.js +1 -1
- package/src/foundation/partial-state.d.ts +10 -0
- package/src/foundation/partial-state.js +21 -0
- package/src/foundation/preflight.js +37 -18
- package/src/foundation/private-smoke-access.d.ts +25 -0
- package/src/foundation/private-smoke-access.js +135 -0
- package/src/foundation/private-smoke-admission.d.ts +45 -0
- package/src/foundation/private-smoke-admission.js +180 -0
- package/src/foundation/private-smoke-control-plane.d.ts +18 -0
- package/src/foundation/private-smoke-control-plane.js +184 -0
- package/src/foundation/provision-database-bindings.d.ts +5 -0
- package/src/foundation/provision-database-bindings.js +41 -8
- package/src/foundation/provision-logical-database.js +15 -8
- package/src/foundation/requirements.d.ts +3 -3
- package/src/foundation/requirements.js +24 -12
- package/src/foundation/router-waf-rate-rehearsal.d.ts +97 -0
- package/src/foundation/router-waf-rate-rehearsal.js +210 -0
- package/src/foundation/router-waf.d.ts +149 -0
- package/src/foundation/router-waf.js +809 -0
- package/src/foundation/stages.d.ts +1 -0
- package/src/foundation/stages.js +11 -0
- package/src/generators/blueprint/blueprint.d.ts +5 -0
- package/src/generators/blueprint/blueprint.js +102 -0
- package/src/generators/blueprint/files.d.ts +6 -0
- package/src/generators/blueprint/files.js +217 -0
- package/src/generators/blueprint/schema.d.ts +4 -0
- package/src/generators/blueprint/schema.json +18 -0
- package/src/generators/formatting.d.ts +8 -0
- package/src/generators/formatting.js +141 -0
- package/src/generators/function/function.js +38 -17
- package/src/generators/logging-registry.d.ts +2 -0
- package/src/generators/logging-registry.js +22 -0
- package/src/generators/post-generation-install.js +2 -2
- package/src/generators/preset/dependency-overrides.d.ts +8 -0
- package/src/generators/preset/dependency-overrides.js +55 -0
- package/src/generators/preset/generator.js +43 -3
- package/src/generators/preset/schema.d.ts +10 -0
- package/src/generators/preset/schema.json +47 -0
- package/src/generators/preset/workspace-files-adopter-skills.d.ts +7 -0
- package/src/generators/preset/workspace-files-adopter-skills.js +324 -0
- package/src/generators/preset/workspace-files-ci-acceptance.d.ts +1 -0
- package/src/generators/preset/workspace-files-ci-acceptance.js +791 -0
- package/src/generators/preset/workspace-files-ci-install.d.ts +2 -0
- package/src/generators/preset/workspace-files-ci-install.js +196 -0
- package/src/generators/preset/workspace-files-developer-agent.d.ts +2 -0
- package/src/generators/preset/workspace-files-developer-agent.js +162 -44
- package/src/generators/preset/workspace-files-ecr-inspector.d.ts +18 -0
- package/src/generators/preset/workspace-files-ecr-inspector.js +298 -0
- package/src/generators/preset/workspace-files-foundation-workload-roles.js +5 -2
- package/src/generators/preset/workspace-files-performance-cost.d.ts +2 -2
- package/src/generators/preset/workspace-files-performance-cost.js +8 -8
- package/src/generators/preset/workspace-files-performance-load.d.ts +1 -1
- package/src/generators/preset/workspace-files-performance-load.js +39 -25
- package/src/generators/preset/workspace-files-shared-operation-claims.d.ts +10 -0
- package/src/generators/preset/workspace-files-shared-operation-claims.js +59 -0
- package/src/generators/preset/workspace-files-stage-authority.d.ts +6 -0
- package/src/generators/preset/workspace-files-stage-authority.js +529 -0
- package/src/generators/preset/workspace-files-thin-deploy.d.ts +65 -0
- package/src/generators/preset/workspace-files-thin-deploy.js +2507 -0
- package/src/generators/preset/workspace-files-thin-docs.d.ts +7 -0
- package/src/generators/preset/workspace-files-thin-docs.js +370 -0
- package/src/generators/preset/workspace-files-thin-release.d.ts +14 -0
- package/src/generators/preset/workspace-files-thin-release.js +26 -0
- package/src/generators/preset/workspace-files-workload-role-baseline.js +254 -42
- package/src/generators/preset/workspace-files.d.ts +18 -2
- package/src/generators/preset/workspace-files.js +1525 -609
- package/src/generators/repository-policy/repository-policy.js +235 -5
- package/src/generators/repository-policy/schema.d.ts +10 -0
- package/src/generators/repository-policy/schema.json +80 -4
- package/src/generators/repository-policy/tree-policy.d.ts +3 -0
- package/src/generators/repository-policy/tree-policy.js +25 -0
- package/src/generators/slice/built-in-plan-api-contract-files.js +49 -11
- package/src/generators/slice/built-in-plan-api-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-api-files.js +130 -414
- package/src/generators/slice/built-in-plan-async-work-files.js +166 -1969
- package/src/generators/slice/built-in-plan-authorization-files.js +102 -334
- package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js +975 -233
- package/src/generators/slice/built-in-plan-authorization-storage.d.ts +3 -0
- package/src/generators/slice/built-in-plan-authorization-storage.js +119 -0
- package/src/generators/slice/built-in-plan-background-work-files.d.ts +2 -0
- package/src/generators/slice/built-in-plan-background-work-files.js +99 -0
- package/src/generators/slice/built-in-plan-data-deletion-files.js +2 -830
- package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js +5 -31
- package/src/generators/slice/built-in-plan-data-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-data-files.js +176 -1200
- package/src/generators/slice/built-in-plan-data-lifecycle-files.js +53 -28
- package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js +37 -2
- package/src/generators/slice/built-in-plan-data-retention-job-files.js +7 -2443
- package/src/generators/slice/built-in-plan-data-retention-launcher-files.js +50 -8
- package/src/generators/slice/built-in-plan-data-rights-files.js +6 -4482
- package/src/generators/slice/built-in-plan-database-lifecycle-files.js +44 -25
- package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js +25 -2
- package/src/generators/slice/built-in-plan-foundation-files.d.ts +2 -1
- package/src/generators/slice/built-in-plan-foundation-files.js +39 -18
- package/src/generators/slice/built-in-plan-frontend-files.js +14 -3
- package/src/generators/slice/built-in-plan-infrastructure-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-infrastructure-files.js +933 -730
- package/src/generators/slice/built-in-plan-infrastructure-safety-files.js +75 -14
- package/src/generators/slice/built-in-plan-key-value-cleanup.d.ts +4 -0
- package/src/generators/slice/built-in-plan-key-value-cleanup.js +100 -0
- package/src/generators/slice/built-in-plan-key-value-consumer.d.ts +4 -0
- package/src/generators/slice/built-in-plan-key-value-consumer.js +151 -0
- package/src/generators/slice/built-in-plan-key-value-deletion.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-deletion.js +377 -0
- package/src/generators/slice/built-in-plan-key-value-delivery.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-delivery.js +137 -0
- package/src/generators/slice/built-in-plan-key-value-export.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-export.js +595 -0
- package/src/generators/slice/built-in-plan-key-value-files.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-files.js +31 -0
- package/src/generators/slice/built-in-plan-key-value-holds.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-holds.js +189 -0
- package/src/generators/slice/built-in-plan-key-value-infrastructure.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-infrastructure.js +102 -0
- package/src/generators/slice/built-in-plan-key-value-performance.d.ts +5 -0
- package/src/generators/slice/built-in-plan-key-value-performance.js +530 -0
- package/src/generators/slice/built-in-plan-key-value-provider.d.ts +4 -0
- package/src/generators/slice/built-in-plan-key-value-provider.js +366 -0
- package/src/generators/slice/built-in-plan-key-value-records.d.ts +3 -0
- package/src/generators/slice/built-in-plan-key-value-records.js +232 -0
- package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.js +103 -0
- package/src/generators/slice/built-in-plan-key-value-retention-job-files.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-retention-job-files.js +160 -0
- package/src/generators/slice/built-in-plan-key-value-retention-maintenance.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-retention-maintenance.js +329 -0
- package/src/generators/slice/built-in-plan-key-value-retention-worker.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-retention-worker.js +477 -0
- package/src/generators/slice/built-in-plan-key-value-retention.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-retention.js +184 -0
- package/src/generators/slice/built-in-plan-metadata-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-metadata-files.js +159 -29
- package/src/generators/slice/built-in-plan-native-runtime-authority-files.d.ts +2 -0
- package/src/generators/slice/built-in-plan-native-runtime-authority-files.js +324 -0
- package/src/generators/slice/built-in-plan-operations-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-operations-files.js +585 -97
- package/src/generators/slice/built-in-plan-performance-files.d.ts +2 -1
- package/src/generators/slice/built-in-plan-performance-files.js +220 -1074
- package/src/generators/slice/built-in-plan-project-files.js +141 -135
- package/src/generators/slice/built-in-plan-release-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-release-files.js +310 -70
- package/src/generators/slice/built-in-plan-reliability-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-reliability-files.js +283 -44
- package/src/generators/slice/built-in-plan-secret-runtime-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-secret-runtime-files.js +87 -76
- package/src/generators/slice/built-in-plan-shared.d.ts +4 -2
- package/src/generators/slice/built-in-plan-shared.js +41 -19
- package/src/generators/slice/built-in-plan-sql-events.d.ts +2 -0
- package/src/generators/slice/built-in-plan-sql-events.js +276 -0
- package/src/generators/slice/built-in-plan-testing-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-testing-files.js +304 -172
- package/src/generators/slice/built-in-plan-testing-persistence-event-files.d.ts +7 -0
- package/src/generators/slice/built-in-plan-testing-persistence-event-files.js +487 -0
- package/src/generators/slice/built-in-plan-testing-persistence-files.d.ts +2 -0
- package/src/generators/slice/built-in-plan-testing-persistence-files.js +180 -0
- package/src/generators/slice/built-in-plan-thin-release-files.d.ts +11 -0
- package/src/generators/slice/built-in-plan-thin-release-files.js +162 -0
- package/src/generators/slice/built-in-plan-verification-files.js +76 -2
- package/src/generators/slice/built-in-plan-web-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-web-files.js +223 -16
- package/src/generators/slice/built-in-plan-workload-role-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-workload-role-files.js +143 -279
- package/src/generators/slice/built-in-plan.d.ts +11 -1
- package/src/generators/slice/built-in-plan.js +83 -30
- package/src/generators/slice/data-policy-review-seed.d.ts +2 -0
- package/src/generators/slice/data-policy-review-seed.js +22 -0
- package/src/generators/slice/deployed-smoke-readiness.d.ts +2 -0
- package/src/generators/slice/deployed-smoke-readiness.js +214 -0
- package/src/generators/slice/local-source-identity.d.ts +2 -0
- package/src/generators/slice/local-source-identity.js +31 -0
- package/src/generators/slice/persistence-contract.d.ts +14 -0
- package/src/generators/slice/persistence-contract.js +32 -0
- package/src/generators/slice/slice.js +61 -50
- package/src/generators/sql/schema.d.ts +7 -0
- package/src/generators/sql/schema.json +38 -0
- package/src/generators/sql/sql.d.ts +6 -0
- package/src/generators/sql/sql.js +53 -0
- package/src/generators/upgrade/sql-seeded-reconciliation.d.ts +2 -0
- package/src/generators/upgrade/sql-seeded-reconciliation.js +170 -0
- package/src/generators/upgrade/upgrade.d.ts +15 -1
- package/src/generators/upgrade/upgrade.js +435 -44
- package/src/generators/workload/frozen-container.d.ts +1 -1
- package/src/generators/workload/performance-registration.d.ts +1 -0
- package/src/generators/workload/performance-registration.js +9 -11
- package/src/generators/workload/service-performance-files.d.ts +1 -0
- package/src/generators/workload/service-performance-files.js +27 -7
- package/src/generators/workload/workload.d.ts +1 -1
- package/src/generators/workload/workload.js +105 -29
- package/src/git-policy/action-pins.d.ts +5 -0
- package/src/git-policy/action-pins.js +5 -0
- package/src/git-policy/github-bootstrap.d.ts +48 -8
- package/src/git-policy/github-bootstrap.js +344 -176
- package/src/git-policy/routing.d.ts +7 -1
- package/src/git-policy/routing.js +62 -1
- package/src/index.d.ts +1 -0
- package/src/index.js +1 -0
- package/src/infrastructure-change/local-capability.d.ts +73 -0
- package/src/infrastructure-change/local-capability.js +114 -0
- package/src/infrastructure-change/model.d.ts +25 -4
- package/src/infrastructure-change/model.js +1 -0
- package/src/infrastructure-change/normalize.d.ts +4 -0
- package/src/infrastructure-change/normalize.js +47 -7
- package/src/infrastructure-change/plan.d.ts +30 -3
- package/src/infrastructure-change/plan.js +323 -13
- package/src/infrastructure-change/risk.d.ts +3 -1
- package/src/infrastructure-change/risk.js +96 -16
- package/src/local-dev/browser-verification.d.ts +37 -0
- package/src/local-dev/browser-verification.js +281 -0
- package/src/local-dev/contracts.d.ts +10 -1
- package/src/local-dev/contracts.js +114 -13
- package/src/local-dev/dev-command-core.js +24 -5
- package/src/local-dev/docker-credential-health.d.ts +14 -0
- package/src/local-dev/docker-credential-health.js +94 -0
- package/src/local-dev/environment-inspector.d.ts +7 -0
- package/src/local-dev/environment-inspector.js +42 -15
- package/src/local-dev/environment-state.js +2 -2
- package/src/local-dev/errors.d.ts +1 -1
- package/src/local-dev/errors.js +2 -0
- package/src/local-dev/fleet-client.js +2 -2
- package/src/local-dev/fleet-configuration.js +57 -25
- package/src/local-dev/fleet-inventory.js +58 -22
- package/src/local-dev/fleet-ipc.d.ts +7 -0
- package/src/local-dev/fleet-ipc.js +14 -2
- package/src/local-dev/fleet-launcher.d.ts +6 -0
- package/src/local-dev/fleet-launcher.js +16 -4
- package/src/local-dev/fleet-logs.js +50 -22
- package/src/local-dev/fleet-process.d.ts +20 -1
- package/src/local-dev/fleet-process.js +197 -41
- package/src/local-dev/fleet-runner-evidence.d.ts +5 -0
- package/src/local-dev/fleet-runner-evidence.js +56 -0
- package/src/local-dev/fleet-runtime.js +268 -229
- package/src/local-dev/fleet-session.d.ts +2 -0
- package/src/local-dev/fleet-session.js +28 -11
- package/src/local-dev/fleet-slice-runner-daemon.js +4 -0
- package/src/local-dev/fleet-state.d.ts +5 -2
- package/src/local-dev/fleet-state.js +25 -4
- package/src/local-dev/fleet-supervisor.d.ts +3 -0
- package/src/local-dev/fleet-supervisor.js +66 -11
- package/src/local-dev/fleet-web-start.d.ts +12 -0
- package/src/local-dev/fleet-web-start.js +48 -0
- package/src/local-dev/identity.js +3 -14
- package/src/local-dev/index.d.ts +1 -0
- package/src/local-dev/index.js +1 -0
- package/src/local-dev/native-completion.d.ts +9 -0
- package/src/local-dev/native-completion.js +130 -0
- package/src/local-dev/nx-workspace.d.ts +4 -2
- package/src/local-dev/nx-workspace.js +11 -6
- package/src/local-dev/personal-stage.d.ts +4 -5
- package/src/local-dev/personal-stage.js +6 -54
- package/src/local-dev/port-claims.d.ts +13 -0
- package/src/local-dev/port-claims.js +46 -0
- package/src/local-dev/ports.d.ts +14 -2
- package/src/local-dev/ports.js +78 -3
- package/src/local-dev/private-state.d.ts +11 -0
- package/src/local-dev/private-state.js +146 -40
- package/src/local-dev/process-group.d.ts +4 -0
- package/src/local-dev/process-group.js +29 -0
- package/src/local-dev/process-identity.d.ts +8 -0
- package/src/local-dev/process-identity.js +31 -1
- package/src/local-dev/proxy.js +11 -12
- package/src/local-dev/runtime-paths.js +1 -1
- package/src/local-dev/slice-claim.js +1 -1
- package/src/local-dev/slice-runner.d.ts +15 -6
- package/src/local-dev/slice-runner.js +189 -54
- package/src/local-dev/task-attachment.d.ts +17 -0
- package/src/local-dev/task-attachment.js +73 -0
- package/src/local-dev/task-authority.d.ts +10 -0
- package/src/local-dev/task-authority.js +27 -0
- package/src/local-dev/task-identity.d.ts +33 -0
- package/src/local-dev/task-identity.js +418 -0
- package/src/local-dev/task-native-writer.d.ts +18 -0
- package/src/local-dev/task-native-writer.js +329 -0
- package/src/local-dev/tls.js +8 -2
- package/src/local-dev/web-launch.d.ts +9 -0
- package/src/local-dev/web-launch.js +130 -0
- package/src/ownership/composition.d.ts +2 -1
- package/src/ownership/composition.js +1 -0
- package/src/performance/cost-collection.d.ts +1 -1
- package/src/performance/cost-collection.js +4 -2
- package/src/performance/cost-controls.d.ts +8 -4
- package/src/performance/cost-controls.js +39 -28
- package/src/performance/evidence.d.ts +1 -1
- package/src/performance/evidence.js +5 -3
- package/src/performance/load-safety.js +5 -3
- package/src/performance/model.d.ts +4 -4
- package/src/performance/model.js +4 -5
- package/src/performance/scenario.d.ts +22 -0
- package/src/performance/scenario.js +100 -92
- package/src/release/index.d.ts +0 -2
- package/src/release/index.js +0 -2
- package/src/release/source-authority.d.ts +5 -5
- package/src/release/source-authority.js +141 -124
- package/src/repository-policy/aurora-preflight.d.ts +1 -1
- package/src/repository-policy/aurora-preflight.js +4 -1
- package/src/repository-policy/capacity-migration.d.ts +3 -0
- package/src/repository-policy/capacity-migration.js +21 -0
- package/src/repository-policy/deployment-plan.d.ts +4 -1
- package/src/repository-policy/deployment-plan.js +9 -0
- package/src/repository-policy/foundation-profile.js +10 -1
- package/src/repository-policy/policy.d.ts +57 -3
- package/src/repository-policy/policy.js +497 -11
- package/src/schemas/blueprint-v1.json +5 -4
- package/src/schemas/foundation-requirement-v1.json +5 -4
- package/src/schemas/performance-policy-v1.json +3 -3
- package/src/schemas/repository-policy-v1.json +130 -6
- package/src/schemas/testing-evidence-result-v1.json +1 -1
- package/src/secrets/adapters.d.ts +7 -2
- package/src/secrets/adapters.js +34 -3
- package/src/secrets/aws-control-plane.d.ts +10 -1
- package/src/secrets/aws-control-plane.js +67 -0
- package/src/secrets/generated-aws-control-plane.d.ts +23 -0
- package/src/secrets/generated-aws-control-plane.js +259 -0
- package/src/secrets/metadata.js +38 -10
- package/src/secrets/model.d.ts +8 -1
- package/src/secrets/model.js +24 -3
- package/src/secrets/operator.d.ts +91 -3
- package/src/secrets/operator.js +463 -13
- package/src/secrets/personal-command.d.ts +18 -2
- package/src/secrets/personal-command.js +66 -12
- package/src/secrets/registry.d.ts +2 -1
- package/src/secrets/registry.js +18 -1
- package/src/secrets/verification.js +15 -2
- package/src/secrets/workload-access.js +10 -2
- package/src/sst-environment-source-format.d.ts +6 -0
- package/src/sst-environment-source-format.js +199 -0
- package/src/supply-chain/action-pins.js +61 -7
- package/src/supply-chain/blueprint-trust-git.js +85 -24
- package/src/supply-chain/blueprint-verification-authority.js +55 -3
- package/src/supply-chain/build-output-bounds.d.ts +2 -0
- package/src/supply-chain/build-output-bounds.js +12 -0
- package/src/supply-chain/build-output.d.ts +7 -1
- package/src/supply-chain/build-output.js +177 -24
- package/src/supply-chain/ecr-scanning.d.ts +5 -3
- package/src/supply-chain/ecr-scanning.js +11 -7
- package/src/supply-chain/ecs-deployed-image.d.ts +5 -3
- package/src/supply-chain/ecs-deployed-image.js +6 -4
- package/src/supply-chain/generated-blueprint-trust-command.js +18 -1
- package/src/supply-chain/generated-command.js +1 -0
- package/src/supply-chain/generated-container-release-command.js +1285 -124
- package/src/supply-chain/generated-ecr-collector-command.d.ts +0 -1
- package/src/supply-chain/generated-ecr-collector-command.js +200 -93
- package/src/supply-chain/generated-files.js +25 -14
- package/src/supply-chain/generated-scanner-command.js +2 -1
- package/src/supply-chain/index.d.ts +1 -1
- package/src/supply-chain/index.js +2 -1
- package/src/supply-chain/sbom.d.ts +1 -1
- package/src/supply-chain/sbom.js +30 -5
- package/src/supply-chain/scanner.js +3 -0
- package/src/testing-evidence/fixture-scope.d.ts +2 -1
- package/src/testing-evidence/fixture-scope.js +4 -2
- package/src/testing-evidence/result.d.ts +2 -1
- package/src/testing-evidence/result.js +18 -4
- package/src/workload-roles/account-baseline.d.ts +11 -0
- package/src/workload-roles/account-baseline.js +253 -16
- package/src/workload-roles/authority.d.ts +3 -1
- package/src/workload-roles/authority.js +48 -2
- package/src/workload-roles/aws-s3-state.js +27 -0
- package/src/workload-roles/boundary.d.ts +2 -1
- package/src/workload-roles/boundary.js +9 -2
- package/src/workload-roles/handler.js +52 -24
- package/src/workload-roles/index.d.ts +10 -17
- package/src/workload-roles/index.js +5 -18
- package/src/workload-roles/injection.js +1 -1
- package/src/workload-roles/provisioner.js +12 -4
- package/src/workload-roles/registration.d.ts +1 -0
- package/src/workload-roles/registration.js +5 -0
- package/src/workload-roles/stage-boundary.js +1 -1
- package/src/workload-roles/standard-slice.js +3 -3
- package/src/workspace-deployment/affected-lifecycle.d.ts +53 -0
- package/src/workspace-deployment/affected-lifecycle.js +84 -0
- package/src/workspace-deployment/identity.d.ts +3 -0
- package/src/workspace-deployment/identity.js +22 -0
- package/src/workspace-deployment/index.d.ts +4 -0
- package/src/workspace-deployment/index.js +8 -0
- package/src/workspace-deployment/migration-evidence.d.ts +29 -0
- package/src/workspace-deployment/migration-evidence.js +83 -0
- package/src/workspace-deployment/migration.d.ts +27 -0
- package/src/workspace-deployment/migration.js +109 -0
- package/src/workspace-deployment/ownership.d.ts +81 -0
- package/src/workspace-deployment/ownership.js +381 -0
- package/src/api-contract/baseline-update.js.map +0 -1
- package/src/api-contract/compatibility.js.map +0 -1
- package/src/api-contract/contract-graph.js.map +0 -1
- package/src/api-contract/evidence.js.map +0 -1
- package/src/api-contract/index.js.map +0 -1
- package/src/api-contract/model.fixtures.d.ts +0 -2
- package/src/api-contract/model.fixtures.js +0 -81
- package/src/api-contract/model.fixtures.js.map +0 -1
- package/src/api-contract/model.js.map +0 -1
- package/src/api-contract/rollout.js.map +0 -1
- package/src/authorization/compatibility.js.map +0 -1
- package/src/authorization/index.js.map +0 -1
- package/src/blueprints/execution.js.map +0 -1
- package/src/blueprints/external-sandbox.js.map +0 -1
- package/src/blueprints/index.js.map +0 -1
- package/src/blueprints/inputs.js.map +0 -1
- package/src/blueprints/manifest.js.map +0 -1
- package/src/blueprints/resolver.js.map +0 -1
- package/src/blueprints/transitions.js.map +0 -1
- package/src/cli/agent-command.js.map +0 -1
- package/src/cli/agent-runtime.js.map +0 -1
- package/src/cli/blueprint-authority.js.map +0 -1
- package/src/cli/blueprint-command.js.map +0 -1
- package/src/cli/bootstrap.js.map +0 -1
- package/src/cli/dev-command.js.map +0 -1
- package/src/cli/main.js.map +0 -1
- package/src/cli/output.js.map +0 -1
- package/src/cli/personal-secret-runtime.js.map +0 -1
- package/src/cli/secret-terminal.js.map +0 -1
- package/src/container-images.js.map +0 -1
- package/src/data-lifecycle/index.js.map +0 -1
- package/src/data-lifecycle/model.fixtures.d.ts +0 -2
- package/src/data-lifecycle/model.fixtures.js +0 -244
- package/src/data-lifecycle/model.fixtures.js.map +0 -1
- package/src/data-lifecycle/model.js.map +0 -1
- package/src/data-lifecycle/sensitive-artifacts.js.map +0 -1
- package/src/data-lifecycle/validation.js.map +0 -1
- package/src/database-retirement/contract.js.map +0 -1
- package/src/database-retirement/index.js.map +0 -1
- package/src/deterministic-order.js.map +0 -1
- package/src/developer-agent/context.js.map +0 -1
- package/src/developer-agent/generator-planning.js.map +0 -1
- package/src/developer-agent/generator-preview.js.map +0 -1
- package/src/developer-agent/git-inspection.js.map +0 -1
- package/src/developer-agent/handoff.js.map +0 -1
- package/src/developer-agent/index.js.map +0 -1
- package/src/developer-agent/model.js.map +0 -1
- package/src/developer-agent/operation-registry.js.map +0 -1
- package/src/developer-agent/ordering.js.map +0 -1
- package/src/developer-agent/planning.js.map +0 -1
- package/src/developer-agent/preview-changes.js.map +0 -1
- package/src/developer-agent/preview-source.js.map +0 -1
- package/src/developer-agent/validation.js.map +0 -1
- package/src/developer-agent/workspace-inspection.js.map +0 -1
- package/src/developer-agent/workspace-path.js.map +0 -1
- package/src/executors/blueprint-trust/blueprint-trust.js.map +0 -1
- package/src/executors/blueprint-verification/blueprint-verification.js.map +0 -1
- package/src/executors/deploy/deploy.js.map +0 -1
- package/src/executors/deployment-plan/deployment-plan.js.map +0 -1
- package/src/executors/dev/dev.js.map +0 -1
- package/src/executors/dev-doctor/dev-doctor.js.map +0 -1
- package/src/executors/dev-setup/dev-setup.js.map +0 -1
- package/src/executors/developer-context/developer-context.js.map +0 -1
- package/src/executors/fleet/fleet.js.map +0 -1
- package/src/executors/foundation-preflight/foundation-preflight.js.map +0 -1
- package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js.map +0 -1
- package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js.map +0 -1
- package/src/executors/github-bootstrap/github-bootstrap.js.map +0 -1
- package/src/executors/infrastructure-plan/infrastructure-plan.js.map +0 -1
- package/src/executors/refresh/refresh.js.map +0 -1
- package/src/executors/remove/remove.js.map +0 -1
- package/src/executors/secret-guardrails/secret-guardrails.js.map +0 -1
- package/src/executors/secret-metadata/secret-metadata.js.map +0 -1
- package/src/executors/sst-lifecycle/logging-preflight.js.map +0 -1
- package/src/executors/sst-lifecycle/run-sst-command.js.map +0 -1
- package/src/executors/sst-lifecycle/secret-preflight.js.map +0 -1
- package/src/executors/unlock/unlock.js.map +0 -1
- package/src/executors/work-markers/work-markers.js.map +0 -1
- package/src/foundation/discovery.js.map +0 -1
- package/src/foundation/index.js.map +0 -1
- package/src/foundation/local-database-contract.js.map +0 -1
- package/src/foundation/logging-preflight.js.map +0 -1
- package/src/foundation/logging.js.map +0 -1
- package/src/foundation/preflight.js.map +0 -1
- package/src/foundation/provision-database-bindings.js.map +0 -1
- package/src/foundation/provision-logical-database.js.map +0 -1
- package/src/foundation/requirements.js.map +0 -1
- package/src/foundation/router-origin-proof.js.map +0 -1
- package/src/foundation/stages.js.map +0 -1
- package/src/frontend-security/index.js.map +0 -1
- package/src/frontend-security/security-headers.js.map +0 -1
- package/src/generators/feature-registry.js.map +0 -1
- package/src/generators/function/function.js.map +0 -1
- package/src/generators/job/job.js.map +0 -1
- package/src/generators/logging-registry.js.map +0 -1
- package/src/generators/post-generation-install.js.map +0 -1
- package/src/generators/preset/generator.js.map +0 -1
- package/src/generators/preset/tool-versions.js.map +0 -1
- package/src/generators/preset/workspace-files-developer-agent.js.map +0 -1
- package/src/generators/preset/workspace-files-foundation-workload-roles.js.map +0 -1
- package/src/generators/preset/workspace-files-performance-cost.js.map +0 -1
- package/src/generators/preset/workspace-files-performance-load.js.map +0 -1
- package/src/generators/preset/workspace-files-workload-role-baseline.js.map +0 -1
- package/src/generators/preset/workspace-files.js.map +0 -1
- package/src/generators/repository-policy/repository-policy.js.map +0 -1
- package/src/generators/service/service.js.map +0 -1
- package/src/generators/slice/built-in-plan-api-contract-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-api-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-async-work-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-authorization-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-deletion-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-lifecycle-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-retention-job-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-retention-launcher-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-rights-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-database-lifecycle-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-foundation-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-frontend-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-infrastructure-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-infrastructure-safety-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-metadata-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-operations-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-performance-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-project-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-release-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-reliability-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-secret-runtime-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-shared.js.map +0 -1
- package/src/generators/slice/built-in-plan-testing-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-verification-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-web-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-workload-role-files.js.map +0 -1
- package/src/generators/slice/built-in-plan.js.map +0 -1
- package/src/generators/slice/slice.js.map +0 -1
- package/src/generators/upgrade/upgrade.js.map +0 -1
- package/src/generators/workload/frozen-container.js.map +0 -1
- package/src/generators/workload/performance-registration.js.map +0 -1
- package/src/generators/workload/reliability-registration.js.map +0 -1
- package/src/generators/workload/service-performance-files.js.map +0 -1
- package/src/generators/workload/workload.js.map +0 -1
- package/src/git-policy/action-pins.js.map +0 -1
- package/src/git-policy/github-bootstrap.js.map +0 -1
- package/src/git-policy/index.js.map +0 -1
- package/src/git-policy/routing.js.map +0 -1
- package/src/index.js.map +0 -1
- package/src/infrastructure-change/convergence.js.map +0 -1
- package/src/infrastructure-change/drift.js.map +0 -1
- package/src/infrastructure-change/index.js.map +0 -1
- package/src/infrastructure-change/model.js.map +0 -1
- package/src/infrastructure-change/normalize.js.map +0 -1
- package/src/infrastructure-change/plan.js.map +0 -1
- package/src/infrastructure-change/risk.js.map +0 -1
- package/src/infrastructure-change/summary.js.map +0 -1
- package/src/local-dev/context-discovery.js.map +0 -1
- package/src/local-dev/contract-validation.js.map +0 -1
- package/src/local-dev/contracts.js.map +0 -1
- package/src/local-dev/control-contract.js.map +0 -1
- package/src/local-dev/dev-command-core.js.map +0 -1
- package/src/local-dev/effects.js.map +0 -1
- package/src/local-dev/environment-inspector.js.map +0 -1
- package/src/local-dev/environment-state.js.map +0 -1
- package/src/local-dev/errors.js.map +0 -1
- package/src/local-dev/fleet-client.js.map +0 -1
- package/src/local-dev/fleet-configuration.js.map +0 -1
- package/src/local-dev/fleet-inventory.js.map +0 -1
- package/src/local-dev/fleet-ipc.js.map +0 -1
- package/src/local-dev/fleet-launcher.js.map +0 -1
- package/src/local-dev/fleet-lock.js.map +0 -1
- package/src/local-dev/fleet-logs.js.map +0 -1
- package/src/local-dev/fleet-process.js.map +0 -1
- package/src/local-dev/fleet-runtime.js.map +0 -1
- package/src/local-dev/fleet-session.js.map +0 -1
- package/src/local-dev/fleet-slice-runner-daemon.js.map +0 -1
- package/src/local-dev/fleet-startup.js.map +0 -1
- package/src/local-dev/fleet-state.js.map +0 -1
- package/src/local-dev/fleet-supervisor-daemon.js.map +0 -1
- package/src/local-dev/fleet-supervisor.js.map +0 -1
- package/src/local-dev/gateway-daemon.js.map +0 -1
- package/src/local-dev/gateway.js.map +0 -1
- package/src/local-dev/identity.js.map +0 -1
- package/src/local-dev/index.js.map +0 -1
- package/src/local-dev/local-context.js.map +0 -1
- package/src/local-dev/nx-workspace.js.map +0 -1
- package/src/local-dev/personal-secret-ledger.js.map +0 -1
- package/src/local-dev/personal-stage.js.map +0 -1
- package/src/local-dev/portless.js.map +0 -1
- package/src/local-dev/ports.js.map +0 -1
- package/src/local-dev/private-state.js.map +0 -1
- package/src/local-dev/process-identity.js.map +0 -1
- package/src/local-dev/proxy.js.map +0 -1
- package/src/local-dev/runtime-paths.js.map +0 -1
- package/src/local-dev/secret-slice-claim.js.map +0 -1
- package/src/local-dev/slice-claim.js.map +0 -1
- package/src/local-dev/slice-runner.js.map +0 -1
- package/src/local-dev/tls.js.map +0 -1
- package/src/ownership/composition.js.map +0 -1
- package/src/ownership/foundation-record.js.map +0 -1
- package/src/ownership/hash.js.map +0 -1
- package/src/ownership/index.js.map +0 -1
- package/src/ownership/json-ownership.js.map +0 -1
- package/src/ownership/record.js.map +0 -1
- package/src/ownership/workspace-record.js.map +0 -1
- package/src/performance/cost-collection.js.map +0 -1
- package/src/performance/cost-controls.js.map +0 -1
- package/src/performance/evidence.js.map +0 -1
- package/src/performance/index.js.map +0 -1
- package/src/performance/load-safety.js.map +0 -1
- package/src/performance/model.js.map +0 -1
- package/src/performance/pr-artifact-budget.js.map +0 -1
- package/src/performance/runner.js.map +0 -1
- package/src/performance/scenario-endpoint.js.map +0 -1
- package/src/performance/scenario.js.map +0 -1
- package/src/performance/test-fixtures.d.ts +0 -7
- package/src/performance/test-fixtures.js +0 -169
- package/src/performance/test-fixtures.js.map +0 -1
- package/src/performance/unit-cost.js.map +0 -1
- package/src/release/index.js.map +0 -1
- package/src/release/lifecycle.js.map +0 -1
- package/src/release/manifest.js.map +0 -1
- package/src/release/rollout.js.map +0 -1
- package/src/release/source-authority.js.map +0 -1
- package/src/repository-policy/aurora-preflight.js.map +0 -1
- package/src/repository-policy/deployment-plan.js.map +0 -1
- package/src/repository-policy/foundation-profile.js.map +0 -1
- package/src/repository-policy/index.js.map +0 -1
- package/src/repository-policy/policy.js.map +0 -1
- package/src/secrets/adapters.js.map +0 -1
- package/src/secrets/aws-control-plane.js.map +0 -1
- package/src/secrets/declaration-verification.js.map +0 -1
- package/src/secrets/guardrails.js.map +0 -1
- package/src/secrets/index.js.map +0 -1
- package/src/secrets/metadata.js.map +0 -1
- package/src/secrets/model.js.map +0 -1
- package/src/secrets/operator.js.map +0 -1
- package/src/secrets/permissions.js.map +0 -1
- package/src/secrets/personal-command.js.map +0 -1
- package/src/secrets/personal-ledger.js.map +0 -1
- package/src/secrets/registry.js.map +0 -1
- package/src/secrets/verification.js.map +0 -1
- package/src/secrets/workload-access.js.map +0 -1
- package/src/supply-chain/action-pins.js.map +0 -1
- package/src/supply-chain/blueprint-trust-git.js.map +0 -1
- package/src/supply-chain/blueprint-trust-process.js.map +0 -1
- package/src/supply-chain/blueprint-trust.js.map +0 -1
- package/src/supply-chain/blueprint-verification-authority.js.map +0 -1
- package/src/supply-chain/blueprint-verification-execution.js.map +0 -1
- package/src/supply-chain/build-output.js.map +0 -1
- package/src/supply-chain/common.js.map +0 -1
- package/src/supply-chain/container-artifact-contract.js.map +0 -1
- package/src/supply-chain/container-release.js.map +0 -1
- package/src/supply-chain/ecr-applicability.js.map +0 -1
- package/src/supply-chain/ecr-scanning.js.map +0 -1
- package/src/supply-chain/ecs-deployed-image.js.map +0 -1
- package/src/supply-chain/errors.js.map +0 -1
- package/src/supply-chain/generated-blueprint-trust-command.js.map +0 -1
- package/src/supply-chain/generated-command.js.map +0 -1
- package/src/supply-chain/generated-container-release-command.js.map +0 -1
- package/src/supply-chain/generated-ecr-collector-command.js.map +0 -1
- package/src/supply-chain/generated-files.js.map +0 -1
- package/src/supply-chain/generated-scanner-command.js.map +0 -1
- package/src/supply-chain/index.js.map +0 -1
- package/src/supply-chain/inventory.js.map +0 -1
- package/src/supply-chain/license-expression.js.map +0 -1
- package/src/supply-chain/pnpm-toolchain-authority.js.map +0 -1
- package/src/supply-chain/policy.js.map +0 -1
- package/src/supply-chain/publication.js.map +0 -1
- package/src/supply-chain/sbom.js.map +0 -1
- package/src/supply-chain/scanner.js.map +0 -1
- package/src/supply-chain/vendored-source.js.map +0 -1
- package/src/testing-evidence/fixture-scope.js.map +0 -1
- package/src/testing-evidence/index.js.map +0 -1
- package/src/testing-evidence/quarantine.js.map +0 -1
- package/src/testing-evidence/result.js.map +0 -1
- package/src/testing-evidence/runner-adapter.js.map +0 -1
- package/src/testing-evidence/sensitive-artifacts.js.map +0 -1
- package/src/validation.js.map +0 -1
- package/src/work-markers/index.js.map +0 -1
- package/src/work-markers/work-markers.js.map +0 -1
- package/src/workload-roles/account-baseline.js.map +0 -1
- package/src/workload-roles/authority.js.map +0 -1
- package/src/workload-roles/aws-adapter.js.map +0 -1
- package/src/workload-roles/aws-internal-handler.js.map +0 -1
- package/src/workload-roles/aws-s3-state.js.map +0 -1
- package/src/workload-roles/aws-sdk-control-plane.js.map +0 -1
- package/src/workload-roles/boundary.js.map +0 -1
- package/src/workload-roles/convergence.js.map +0 -1
- package/src/workload-roles/effective-policy.js.map +0 -1
- package/src/workload-roles/handler.js.map +0 -1
- package/src/workload-roles/history.js.map +0 -1
- package/src/workload-roles/index.js.map +0 -1
- package/src/workload-roles/injection.js.map +0 -1
- package/src/workload-roles/manifest.js.map +0 -1
- package/src/workload-roles/provisioner.js.map +0 -1
- package/src/workload-roles/registration.js.map +0 -1
- package/src/workload-roles/stage-boundary.js.map +0 -1
- package/src/workload-roles/standard-slice.js.map +0 -1
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.THIN_ECR_INSPECTOR_WORKFLOW_PATH = void 0;
|
|
4
|
+
exports.renderThinEcrInspectorWorkflow = renderThinEcrInspectorWorkflow;
|
|
5
|
+
exports.THIN_ECR_INSPECTOR_WORKFLOW_PATH = '.github/workflows/ecr-inspector-evidence.yml';
|
|
6
|
+
/** Render the postdeploy scanner against the thin lifecycle receipt artifact. */
|
|
7
|
+
function renderThinEcrInspectorWorkflow(options) {
|
|
8
|
+
const { actionPins, deploymentProfile, name, nodeVersion } = options;
|
|
9
|
+
const stageChoices = deploymentProfile === 'starter' ? 'production' : 'staging, production';
|
|
10
|
+
const stageBranchCases = deploymentProfile === 'starter'
|
|
11
|
+
? 'production:main'
|
|
12
|
+
: 'staging:develop|production:main';
|
|
13
|
+
return {
|
|
14
|
+
[exports.THIN_ECR_INSPECTOR_WORKFLOW_PATH]: `name: ECR Inspector evidence
|
|
15
|
+
|
|
16
|
+
on:
|
|
17
|
+
workflow_dispatch:
|
|
18
|
+
inputs:
|
|
19
|
+
stage:
|
|
20
|
+
description: Exact deployed container stage
|
|
21
|
+
required: true
|
|
22
|
+
type: choice
|
|
23
|
+
options: [${stageChoices}]
|
|
24
|
+
deployment_commit:
|
|
25
|
+
description: Exact successful Deploy workflow commit
|
|
26
|
+
required: true
|
|
27
|
+
type: string
|
|
28
|
+
deploy_run_id:
|
|
29
|
+
description: Exact successful Deploy workflow run ID
|
|
30
|
+
required: true
|
|
31
|
+
type: string
|
|
32
|
+
deployment_receipt_artifact_name:
|
|
33
|
+
description: Exact deployment-receipt artifact from that run
|
|
34
|
+
required: true
|
|
35
|
+
type: string
|
|
36
|
+
slice:
|
|
37
|
+
description: Exact registered Product Slice
|
|
38
|
+
required: true
|
|
39
|
+
type: string
|
|
40
|
+
artifact_id:
|
|
41
|
+
description: Exact OCI artifact ID from operations/release.json
|
|
42
|
+
required: true
|
|
43
|
+
type: string
|
|
44
|
+
task_definition_family:
|
|
45
|
+
description: Exact deployed ECS task-definition family
|
|
46
|
+
required: true
|
|
47
|
+
type: string
|
|
48
|
+
deployment_kind:
|
|
49
|
+
description: Exact deployed ECS authority kind
|
|
50
|
+
required: true
|
|
51
|
+
type: choice
|
|
52
|
+
options: [service, task]
|
|
53
|
+
cluster_arn:
|
|
54
|
+
description: Exact ECS cluster ARN
|
|
55
|
+
required: true
|
|
56
|
+
type: string
|
|
57
|
+
deployment_arn:
|
|
58
|
+
description: Exact ECS service ARN or task ARN
|
|
59
|
+
required: true
|
|
60
|
+
type: string
|
|
61
|
+
|
|
62
|
+
concurrency:
|
|
63
|
+
group: ecr-inspector-\${{ inputs.stage }}-\${{ inputs.slice }}-\${{ inputs.artifact_id }}
|
|
64
|
+
cancel-in-progress: false
|
|
65
|
+
|
|
66
|
+
permissions:
|
|
67
|
+
contents: read
|
|
68
|
+
|
|
69
|
+
jobs:
|
|
70
|
+
collect:
|
|
71
|
+
name: exact deployed OCI and Inspector evidence
|
|
72
|
+
runs-on: ubuntu-latest
|
|
73
|
+
environment: ecr-inspector-\${{ inputs.stage }}
|
|
74
|
+
permissions:
|
|
75
|
+
actions: read
|
|
76
|
+
contents: read
|
|
77
|
+
id-token: write
|
|
78
|
+
env:
|
|
79
|
+
AWS_EVIDENCE_ROLE_ARN: \${{ secrets.AWS_ECR_INSPECTOR_EVIDENCE_ROLE_ARN }}
|
|
80
|
+
AWS_EXPECTED_ACCOUNT_ID: \${{ vars.AWS_EXPECTED_ACCOUNT_ID }}
|
|
81
|
+
AWS_REGION: \${{ vars.AWS_REGION }}
|
|
82
|
+
EBK_ARTIFACT_ID: \${{ inputs.artifact_id }}
|
|
83
|
+
EBK_CLUSTER_ARN: \${{ inputs.cluster_arn }}
|
|
84
|
+
EBK_DEPLOYMENT_ARN: \${{ inputs.deployment_arn }}
|
|
85
|
+
EBK_DEPLOYMENT_COMMIT: \${{ inputs.deployment_commit }}
|
|
86
|
+
EBK_DEPLOYMENT_KIND: \${{ inputs.deployment_kind }}
|
|
87
|
+
EBK_DEPLOYMENT_RECEIPT_ARTIFACT_NAME: \${{ inputs.deployment_receipt_artifact_name }}
|
|
88
|
+
EBK_DEPLOY_RUN_ID: \${{ inputs.deploy_run_id }}
|
|
89
|
+
EBK_SLICE: \${{ inputs.slice }}
|
|
90
|
+
EBK_STAGE: \${{ inputs.stage }}
|
|
91
|
+
EBK_TASK_DEFINITION_FAMILY: \${{ inputs.task_definition_family }}
|
|
92
|
+
GH_REPO: \${{ github.repository }}
|
|
93
|
+
GH_TOKEN: \${{ github.token }}
|
|
94
|
+
steps:
|
|
95
|
+
- name: Validate exact postdeploy evidence authority
|
|
96
|
+
run: |
|
|
97
|
+
set -euo pipefail
|
|
98
|
+
case "$EBK_DEPLOYMENT_COMMIT" in ''|*[!0-9a-f]*) exit 1 ;; esac
|
|
99
|
+
{ [ "\${#EBK_DEPLOYMENT_COMMIT}" -eq 40 ] || [ "\${#EBK_DEPLOYMENT_COMMIT}" -eq 64 ]; } || exit 1
|
|
100
|
+
case "$EBK_DEPLOY_RUN_ID" in ''|0|*[!0-9]*) exit 1 ;; esac
|
|
101
|
+
case "$EBK_SLICE" in ''|-*|*-|*[!a-z0-9-]*) exit 1 ;; esac
|
|
102
|
+
expected_branch=develop
|
|
103
|
+
if [ "$EBK_STAGE" = production ]; then expected_branch=main; fi
|
|
104
|
+
case "$EBK_STAGE:$expected_branch" in ${stageBranchCases}) ;;
|
|
105
|
+
*) echo 'ECR evidence stage is inactive for this deployment profile'; exit 1 ;;
|
|
106
|
+
esac
|
|
107
|
+
prefix="deployment-receipt-$EBK_STAGE-$EBK_DEPLOY_RUN_ID-"
|
|
108
|
+
case "$EBK_DEPLOYMENT_RECEIPT_ARTIFACT_NAME" in
|
|
109
|
+
"$prefix"*) attempt="\${EBK_DEPLOYMENT_RECEIPT_ARTIFACT_NAME#"$prefix"}" ;;
|
|
110
|
+
*) echo 'Deployment receipt artifact does not bind the exact Deploy run'; exit 1 ;;
|
|
111
|
+
esac
|
|
112
|
+
case "$attempt" in ''|0*|*[!0-9]*) exit 1 ;; esac
|
|
113
|
+
echo "EBK_DEPLOY_RUN_ATTEMPT=$attempt" >> "$GITHUB_ENV"
|
|
114
|
+
run="$(gh api "/repos/$GH_REPO/actions/runs/$EBK_DEPLOY_RUN_ID")"
|
|
115
|
+
[ "$(printf '%s' "$run" | jq -r .conclusion)" = success ] &&
|
|
116
|
+
[ "$(printf '%s' "$run" | jq -r .run_attempt)" = "$attempt" ] &&
|
|
117
|
+
[ "$(printf '%s' "$run" | jq -r .head_sha)" = "$EBK_DEPLOYMENT_COMMIT" ] &&
|
|
118
|
+
[ "$(printf '%s' "$run" | jq -r .head_branch)" = "$expected_branch" ] &&
|
|
119
|
+
[ "$(printf '%s' "$run" | jq -r .path)" = .github/workflows/deploy.yml ] || {
|
|
120
|
+
echo 'Deploy run is not the exact successful protected source authority'; exit 1;
|
|
121
|
+
}
|
|
122
|
+
artifacts="$(gh api "/repos/$GH_REPO/actions/runs/$EBK_DEPLOY_RUN_ID/artifacts?per_page=100")"
|
|
123
|
+
count="$(printf '%s' "$artifacts" | jq --arg name "$EBK_DEPLOYMENT_RECEIPT_ARTIFACT_NAME" \
|
|
124
|
+
'[.artifacts[] | select(.name == $name and .expired == false)] | length')"
|
|
125
|
+
[ "$count" = 1 ] || { echo 'Exact unexpired deployment receipt is absent or ambiguous'; exit 1; }
|
|
126
|
+
- uses: ${actionPins.checkout}
|
|
127
|
+
with:
|
|
128
|
+
fetch-depth: 0
|
|
129
|
+
persist-credentials: false
|
|
130
|
+
ref: \${{ inputs.deployment_commit }}
|
|
131
|
+
- name: Restore exact deployment receipt and release binding
|
|
132
|
+
uses: ${actionPins.downloadArtifact}
|
|
133
|
+
with:
|
|
134
|
+
github-token: \${{ github.token }}
|
|
135
|
+
name: \${{ inputs.deployment_receipt_artifact_name }}
|
|
136
|
+
path: .
|
|
137
|
+
run-id: \${{ inputs.deploy_run_id }}
|
|
138
|
+
- id: candidate
|
|
139
|
+
name: Verify exact release-candidate artifact provenance
|
|
140
|
+
run: |
|
|
141
|
+
set -euo pipefail
|
|
142
|
+
binding=.ebk/evidence/deployment/postdeploy-supply-chain.json
|
|
143
|
+
test -f "$binding" || { echo 'Postdeploy release-candidate binding is absent'; exit 1; }
|
|
144
|
+
artifact_id="$(jq -r '.releaseCandidateArtifactId // empty' "$binding")"
|
|
145
|
+
artifact_digest="$(jq -r '.releaseCandidateArtifactDigest // empty' "$binding")"
|
|
146
|
+
candidate_source="$(jq -r '.releaseSourceCommit // empty' "$binding")"
|
|
147
|
+
producer_attempt="$(jq -r '.releaseCandidateProducerRunAttempt // empty' "$binding")"
|
|
148
|
+
producer_run_id="$(jq -r '.releaseCandidateProducerRunId // empty' "$binding")"
|
|
149
|
+
profile="$(jq -r '.profile // empty' "$binding")"
|
|
150
|
+
case "$artifact_id:$producer_attempt:$producer_run_id" in
|
|
151
|
+
*[!0-9:]*|:*|*:|*::*|0*:*|*:0*:*|*:0*) echo 'Candidate artifact provenance is malformed'; exit 1 ;;
|
|
152
|
+
esac
|
|
153
|
+
printf '%s' "$artifact_digest" | grep -Eq '^sha256:[0-9a-f]{64}$' || {
|
|
154
|
+
echo 'Candidate artifact digest is malformed'; exit 1;
|
|
155
|
+
}
|
|
156
|
+
case "$candidate_source" in ''|*[!0-9a-f]*) exit 1 ;; esac
|
|
157
|
+
{ [ "\${#candidate_source}" -eq 40 ] || [ "\${#candidate_source}" -eq 64 ]; } || exit 1
|
|
158
|
+
expected_candidate_branch=develop
|
|
159
|
+
case "$profile:$EBK_STAGE" in
|
|
160
|
+
starter:production) expected_candidate_branch=main ;;
|
|
161
|
+
production-isolated:staging|production-isolated:production|fully-isolated:staging|fully-isolated:production) ;;
|
|
162
|
+
*) echo 'Candidate profile and protected ECR stage disagree'; exit 1 ;;
|
|
163
|
+
esac
|
|
164
|
+
artifact="$(gh api "/repos/$GH_REPO/actions/artifacts/$artifact_id")"
|
|
165
|
+
printf '%s' "$artifact" | jq -e \
|
|
166
|
+
--arg digest "$artifact_digest" \
|
|
167
|
+
--arg id "$artifact_id" \
|
|
168
|
+
--arg name "release-candidate-$candidate_source" \
|
|
169
|
+
--arg run "$producer_run_id" \
|
|
170
|
+
'(.id | tostring) == $id and .name == $name and .expired == false and .digest == $digest and (.workflow_run.id | tostring) == $run' \
|
|
171
|
+
>/dev/null || { echo 'Candidate artifact differs from the exact producer'; exit 1; }
|
|
172
|
+
producer="$(gh api "/repos/$GH_REPO/actions/runs/$producer_run_id")"
|
|
173
|
+
printf '%s' "$producer" | jq -e \
|
|
174
|
+
--arg attempt "$producer_attempt" \
|
|
175
|
+
--arg branch "$expected_candidate_branch" \
|
|
176
|
+
--arg run "$producer_run_id" \
|
|
177
|
+
--arg source "$candidate_source" \
|
|
178
|
+
'(.id | tostring) == $run and (.run_attempt | tostring) == $attempt and .head_sha == $source and .head_branch == $branch and .conclusion == "success" and .event == "push" and .path == ".github/workflows/ci.yml"' \
|
|
179
|
+
>/dev/null || { echo 'Candidate producer is not the exact successful protected CI run'; exit 1; }
|
|
180
|
+
echo "artifact_id=$artifact_id" >> "$GITHUB_OUTPUT"
|
|
181
|
+
echo "producer_run_id=$producer_run_id" >> "$GITHUB_OUTPUT"
|
|
182
|
+
echo "candidate_source=$candidate_source" >> "$GITHUB_OUTPUT"
|
|
183
|
+
- name: Require fresh original candidate destination
|
|
184
|
+
run: |
|
|
185
|
+
set -euo pipefail
|
|
186
|
+
test ! -e .ebk/evidence/ecr-original-release-candidate || {
|
|
187
|
+
echo 'Original candidate destination already exists'; exit 1;
|
|
188
|
+
}
|
|
189
|
+
- name: Download exact original release candidate
|
|
190
|
+
uses: ${actionPins.downloadArtifact}
|
|
191
|
+
with:
|
|
192
|
+
artifact-ids: \${{ steps.candidate.outputs.artifact_id }}
|
|
193
|
+
github-token: \${{ github.token }}
|
|
194
|
+
path: .ebk/evidence/ecr-original-release-candidate
|
|
195
|
+
run-id: \${{ steps.candidate.outputs.producer_run_id }}
|
|
196
|
+
- name: Verify downloaded release candidate identity
|
|
197
|
+
env:
|
|
198
|
+
EBK_CANDIDATE_SOURCE: \${{ steps.candidate.outputs.candidate_source }}
|
|
199
|
+
EBK_PRODUCER_RUN_ID: \${{ steps.candidate.outputs.producer_run_id }}
|
|
200
|
+
run: |
|
|
201
|
+
set -euo pipefail
|
|
202
|
+
candidate=.ebk/evidence/ecr-original-release-candidate/packages/$EBK_SLICE/candidate.json
|
|
203
|
+
test -f "$candidate" || { echo 'Exact Slice candidate is absent'; exit 1; }
|
|
204
|
+
jq -e \
|
|
205
|
+
--arg slice "$EBK_SLICE" \
|
|
206
|
+
--arg source "$EBK_CANDIDATE_SOURCE" \
|
|
207
|
+
--arg run "$EBK_PRODUCER_RUN_ID" \
|
|
208
|
+
'.kind == "ebk-release-candidate" and .schemaVersion == 1 and .slice == $slice and .sourceCommit == $source and (.provenance.runId | tostring) == $run' \
|
|
209
|
+
"$candidate" >/dev/null || { echo 'Downloaded candidate identity disagrees with its immutable artifact'; exit 1; }
|
|
210
|
+
- uses: ${actionPins.pnpmSetup}
|
|
211
|
+
- uses: ${actionPins.setupNode}
|
|
212
|
+
with:
|
|
213
|
+
node-version: ${nodeVersion}
|
|
214
|
+
cache: pnpm
|
|
215
|
+
- run: pnpm install --frozen-lockfile --ignore-scripts --ignore-pnpmfile
|
|
216
|
+
- name: Verify managed workspace integrity before AWS authority
|
|
217
|
+
run: pnpm nx run ${name}:workspace-health
|
|
218
|
+
- name: Validate read-only evidence role configuration
|
|
219
|
+
run: |
|
|
220
|
+
set -euo pipefail
|
|
221
|
+
test -n "$AWS_EVIDENCE_ROLE_ARN" && test -n "$AWS_EXPECTED_ACCOUNT_ID" && test -n "$AWS_REGION"
|
|
222
|
+
case "$AWS_EVIDENCE_ROLE_ARN" in
|
|
223
|
+
arn:aws:iam::$AWS_EXPECTED_ACCOUNT_ID:role/*) ;;
|
|
224
|
+
*) echo 'ECR evidence role does not belong to the expected account'; exit 1 ;;
|
|
225
|
+
esac
|
|
226
|
+
- uses: ${actionPins.configureAwsCredentials}
|
|
227
|
+
with:
|
|
228
|
+
role-to-assume: \${{ secrets.AWS_ECR_INSPECTOR_EVIDENCE_ROLE_ARN }}
|
|
229
|
+
role-session-name: ebk-ecr-inspector-\${{ github.run_id }}-\${{ github.run_attempt }}
|
|
230
|
+
aws-region: \${{ vars.AWS_REGION }}
|
|
231
|
+
- name: Collect exact deployed OCI and Inspector evidence
|
|
232
|
+
env:
|
|
233
|
+
ACTIONS_ID_TOKEN_REQUEST_TOKEN: ''
|
|
234
|
+
ACTIONS_ID_TOKEN_REQUEST_URL: ''
|
|
235
|
+
run: |
|
|
236
|
+
set -euo pipefail
|
|
237
|
+
[ "$(aws sts get-caller-identity --query Account --output text)" = "$AWS_EXPECTED_ACCOUNT_ID" ]
|
|
238
|
+
slice_root="packages/$EBK_SLICE"
|
|
239
|
+
test -d "$slice_root" || { echo 'Requested Product Slice is absent'; exit 1; }
|
|
240
|
+
input="$slice_root/.ebk/evidence/ecr-inspector-input.json"
|
|
241
|
+
EBK_COLLECTOR_INPUT="$input" node -e '
|
|
242
|
+
const { mkdirSync, writeFileSync } = require("node:fs");
|
|
243
|
+
const { dirname } = require("node:path");
|
|
244
|
+
const deployment = process.env.EBK_DEPLOYMENT_KIND === "service"
|
|
245
|
+
? { clusterArn: process.env.EBK_CLUSTER_ARN, kind: "service", serviceArn: process.env.EBK_DEPLOYMENT_ARN }
|
|
246
|
+
: { clusterArn: process.env.EBK_CLUSTER_ARN, kind: "task", taskArn: process.env.EBK_DEPLOYMENT_ARN };
|
|
247
|
+
const record = {
|
|
248
|
+
accountId: process.env.AWS_EXPECTED_ACCOUNT_ID,
|
|
249
|
+
artifactId: process.env.EBK_ARTIFACT_ID,
|
|
250
|
+
deployment,
|
|
251
|
+
deployRunAttempt: process.env.EBK_DEPLOY_RUN_ATTEMPT,
|
|
252
|
+
deployRunId: process.env.EBK_DEPLOY_RUN_ID,
|
|
253
|
+
deploymentReceiptPath: "../../.ebk/evidence/deployment/latest.json",
|
|
254
|
+
outputDirectory: ".ebk/evidence/supply-chain/ecr-scans",
|
|
255
|
+
postdeployBindingPath: "../../.ebk/evidence/deployment/postdeploy-supply-chain.json",
|
|
256
|
+
region: process.env.AWS_REGION,
|
|
257
|
+
releaseCandidatePath: "../../.ebk/evidence/ecr-original-release-candidate/packages/" + process.env.EBK_SLICE + "/candidate.json",
|
|
258
|
+
schemaVersion: 1,
|
|
259
|
+
stage: process.env.EBK_STAGE,
|
|
260
|
+
taskDefinitionFamily: process.env.EBK_TASK_DEFINITION_FAMILY,
|
|
261
|
+
};
|
|
262
|
+
mkdirSync(dirname(process.env.EBK_COLLECTOR_INPUT), { recursive: true, mode: 0o700 });
|
|
263
|
+
writeFileSync(process.env.EBK_COLLECTOR_INPUT, JSON.stringify(record, null, 2) + "\\n", { flag: "wx", mode: 0o600 });
|
|
264
|
+
'
|
|
265
|
+
export EBK_ECR_SCAN_INPUT_PATH=.ebk/evidence/ecr-inspector-input.json
|
|
266
|
+
pnpm nx run "$EBK_SLICE:ecr-inspector-collect"
|
|
267
|
+
- name: Clear current ECR evidence authority
|
|
268
|
+
if: always()
|
|
269
|
+
env:
|
|
270
|
+
ACTIONS_ID_TOKEN_REQUEST_TOKEN: ''
|
|
271
|
+
ACTIONS_ID_TOKEN_REQUEST_URL: ''
|
|
272
|
+
run: |
|
|
273
|
+
unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN AWS_SECURITY_TOKEN
|
|
274
|
+
echo 'AWS_ACCESS_KEY_ID=' >> "$GITHUB_ENV"
|
|
275
|
+
echo 'AWS_SECRET_ACCESS_KEY=' >> "$GITHUB_ENV"
|
|
276
|
+
echo 'AWS_SESSION_TOKEN=' >> "$GITHUB_ENV"
|
|
277
|
+
echo 'AWS_SECURITY_TOKEN=' >> "$GITHUB_ENV"
|
|
278
|
+
- name: Retain exact deployed OCI and Inspector evidence
|
|
279
|
+
if: always()
|
|
280
|
+
uses: ${actionPins.uploadArtifact}
|
|
281
|
+
env:
|
|
282
|
+
ACTIONS_ID_TOKEN_REQUEST_TOKEN: ''
|
|
283
|
+
ACTIONS_ID_TOKEN_REQUEST_URL: ''
|
|
284
|
+
AWS_ACCESS_KEY_ID: ''
|
|
285
|
+
AWS_SECRET_ACCESS_KEY: ''
|
|
286
|
+
AWS_SESSION_TOKEN: ''
|
|
287
|
+
with:
|
|
288
|
+
name: ecr-inspector-\${{ inputs.stage }}-\${{ inputs.slice }}-\${{ github.run_id }}-\${{ github.run_attempt }}
|
|
289
|
+
if-no-files-found: error
|
|
290
|
+
include-hidden-files: true
|
|
291
|
+
retention-days: 90
|
|
292
|
+
path: |
|
|
293
|
+
packages/\${{ inputs.slice }}/.ebk/evidence/ecr-inspector-input.json
|
|
294
|
+
packages/\${{ inputs.slice }}/.ebk/evidence/supply-chain/ecr-scans/**
|
|
295
|
+
`,
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
//# sourceMappingURL=workspace-files-ecr-inspector.js.map
|
|
@@ -229,6 +229,7 @@ export async function reportWorkloadRoleCandidate(options: {
|
|
|
229
229
|
import { GetParameterCommand, SSMClient } from '@aws-sdk/client-ssm';
|
|
230
230
|
import { GetCallerIdentityCommand, STSClient } from '@aws-sdk/client-sts';
|
|
231
231
|
import {
|
|
232
|
+
areWorkloadRoleIntentsEquivalent,
|
|
232
233
|
digestWorkloadRoleManifest,
|
|
233
234
|
provisionedWorkloadRoleRegistrationObjectKey,
|
|
234
235
|
registeredWorkloadRoleManifestObjectKey,
|
|
@@ -360,8 +361,10 @@ export async function preflightFoundationWorkloadRoles(stage: string) {
|
|
|
360
361
|
digestWorkloadRoleManifest(recreated.manifest) !==
|
|
361
362
|
registered.manifestDigest ||
|
|
362
363
|
registered.manifestDigest !== storage.manifestDigest ||
|
|
363
|
-
|
|
364
|
-
|
|
364
|
+
!areWorkloadRoleIntentsEquivalent(
|
|
365
|
+
recreated.intentsByRole,
|
|
366
|
+
registered.intentsByRole,
|
|
367
|
+
)
|
|
365
368
|
) {
|
|
366
369
|
throw new Error(
|
|
367
370
|
'Foundation workload-role registration differs from generated intent.',
|
|
@@ -55,12 +55,12 @@ export declare function validateProtectedAggregateCountSourceAuthority(input: Pr
|
|
|
55
55
|
artifactName: string;
|
|
56
56
|
runAttempt: string;
|
|
57
57
|
}>;
|
|
58
|
-
export declare function renderProtectedAggregateCountWorkflow(): Readonly<Record<typeof PROTECTED_AGGREGATE_COUNT_WORKFLOW_PATH, string>>;
|
|
58
|
+
export declare function renderProtectedAggregateCountWorkflow(rehearsalStage?: 'development' | 'staging'): Readonly<Record<typeof PROTECTED_AGGREGATE_COUNT_WORKFLOW_PATH, string>>;
|
|
59
59
|
/**
|
|
60
60
|
* Treats caller-supplied run IDs and artifact names only as selectors. The
|
|
61
61
|
* selected producer runs and artifacts must independently match the fixed
|
|
62
62
|
* protected workflow contracts before AWS authority is introduced.
|
|
63
63
|
*/
|
|
64
64
|
export declare function validateProtectedPerformanceCostSourceAuthority(input: ProtectedPerformanceCostSourceAuthority): void;
|
|
65
|
-
export declare function renderProtectedPerformanceCostWorkflow(): Readonly<Record<typeof PROTECTED_PERFORMANCE_COST_WORKFLOW_PATH, string>>;
|
|
65
|
+
export declare function renderProtectedPerformanceCostWorkflow(rehearsalStage?: 'development' | 'staging'): Readonly<Record<typeof PROTECTED_PERFORMANCE_COST_WORKFLOW_PATH, string>>;
|
|
66
66
|
export {};
|
|
@@ -20,7 +20,7 @@ function validateProtectedAggregateCountSourceAuthority(input) {
|
|
|
20
20
|
const refuse = (detail) => {
|
|
21
21
|
throw new Error(`Protected aggregate-count source authority is invalid: ${detail}.`);
|
|
22
22
|
};
|
|
23
|
-
const branch = input.stage === 'staging'
|
|
23
|
+
const branch = input.stage === 'development' || input.stage === 'staging'
|
|
24
24
|
? 'develop'
|
|
25
25
|
: input.stage === 'production'
|
|
26
26
|
? 'main'
|
|
@@ -61,7 +61,7 @@ function validateProtectedAggregateCountSourceAuthority(input) {
|
|
|
61
61
|
}
|
|
62
62
|
return Object.freeze({ artifactName, runAttempt });
|
|
63
63
|
}
|
|
64
|
-
function renderProtectedAggregateCountWorkflow() {
|
|
64
|
+
function renderProtectedAggregateCountWorkflow(rehearsalStage = 'staging') {
|
|
65
65
|
const checkout = (0, index_js_1.pinnedAction)(index_js_1.GITHUB_ACTION_PINS.checkout);
|
|
66
66
|
const configureAws = (0, index_js_1.pinnedAction)(index_js_1.GITHUB_ACTION_PINS.configureAwsCredentials);
|
|
67
67
|
const downloadArtifact = (0, index_js_1.pinnedAction)(index_js_1.GITHUB_ACTION_PINS.downloadArtifact);
|
|
@@ -79,7 +79,7 @@ on:
|
|
|
79
79
|
description: Exact protected aggregate cohort stage
|
|
80
80
|
required: true
|
|
81
81
|
type: choice
|
|
82
|
-
options: [
|
|
82
|
+
options: [${rehearsalStage}, production]
|
|
83
83
|
project:
|
|
84
84
|
description: Exact Product Slice project
|
|
85
85
|
required: true
|
|
@@ -137,7 +137,7 @@ jobs:
|
|
|
137
137
|
run: |
|
|
138
138
|
set -euo pipefail
|
|
139
139
|
case "$EBK_STAGE:$EBK_PROTECTED_REF" in
|
|
140
|
-
|
|
140
|
+
${rehearsalStage}:refs/heads/develop|production:refs/heads/main) ;;
|
|
141
141
|
*) echo 'Aggregate stage does not match its protected branch'; exit 1 ;;
|
|
142
142
|
esac
|
|
143
143
|
case "$EBK_PROJECT" in
|
|
@@ -334,7 +334,7 @@ function validateProtectedPerformanceCostSourceAuthority(input) {
|
|
|
334
334
|
const refuse = (detail) => {
|
|
335
335
|
throw new Error(`Protected cost source authority is invalid: ${detail}.`);
|
|
336
336
|
};
|
|
337
|
-
const branch = input.stage === 'staging'
|
|
337
|
+
const branch = input.stage === 'development' || input.stage === 'staging'
|
|
338
338
|
? 'develop'
|
|
339
339
|
: input.stage === 'production'
|
|
340
340
|
? 'main'
|
|
@@ -399,7 +399,7 @@ function validateProtectedPerformanceCostSourceAuthority(input) {
|
|
|
399
399
|
validateArtifact(input.aggregateArtifacts, input.aggregateArtifactTotal, input.aggregateArtifactName, expectedAggregateName, 'aggregate-count');
|
|
400
400
|
validateArtifact(input.releaseArtifacts, input.releaseArtifactTotal, input.releaseArtifactName, expectedReleaseName, 'release');
|
|
401
401
|
}
|
|
402
|
-
function renderProtectedPerformanceCostWorkflow() {
|
|
402
|
+
function renderProtectedPerformanceCostWorkflow(rehearsalStage = 'staging') {
|
|
403
403
|
const checkout = (0, index_js_1.pinnedAction)(index_js_1.GITHUB_ACTION_PINS.checkout);
|
|
404
404
|
const configureAws = (0, index_js_1.pinnedAction)(index_js_1.GITHUB_ACTION_PINS.configureAwsCredentials);
|
|
405
405
|
const downloadArtifact = (0, index_js_1.pinnedAction)(index_js_1.GITHUB_ACTION_PINS.downloadArtifact);
|
|
@@ -417,7 +417,7 @@ on:
|
|
|
417
417
|
description: Exact protected billing cohort stage
|
|
418
418
|
required: true
|
|
419
419
|
type: choice
|
|
420
|
-
options: [
|
|
420
|
+
options: [${rehearsalStage}, production]
|
|
421
421
|
project:
|
|
422
422
|
description: Exact Product Slice project
|
|
423
423
|
required: true
|
|
@@ -511,7 +511,7 @@ jobs:
|
|
|
511
511
|
run: |
|
|
512
512
|
set -euo pipefail
|
|
513
513
|
case "$EBK_STAGE:$EBK_PROTECTED_REF" in
|
|
514
|
-
|
|
514
|
+
${rehearsalStage}:refs/heads/develop|production:refs/heads/main) ;;
|
|
515
515
|
*) echo 'Cost collection stage does not match its protected branch'; exit 1 ;;
|
|
516
516
|
esac
|
|
517
517
|
case "$EBK_PROJECT" in
|
|
@@ -70,4 +70,4 @@ export declare function createProtectedPerformanceLoadSliceTargets(slice: string
|
|
|
70
70
|
* The caller merges the returned fixed Slice targets into generated project
|
|
71
71
|
* metadata; neither target forwards user-supplied commands or arguments.
|
|
72
72
|
*/
|
|
73
|
-
export declare function renderProtectedPerformanceLoadWorkflowPlan(sliceForTargetMetadata: string): ProtectedPerformanceLoadWorkflowPlan;
|
|
73
|
+
export declare function renderProtectedPerformanceLoadWorkflowPlan(sliceForTargetMetadata: string, rehearsalStage?: 'development' | 'staging'): ProtectedPerformanceLoadWorkflowPlan;
|
|
@@ -81,7 +81,7 @@ function deriveProtectedPerformanceEndpoint(input) {
|
|
|
81
81
|
const refuse = (detail) => {
|
|
82
82
|
throw new Error(`Protected performance target authority is invalid: ${detail}.`);
|
|
83
83
|
};
|
|
84
|
-
const expectedRef = input.stage === 'staging'
|
|
84
|
+
const expectedRef = input.stage === 'development' || input.stage === 'staging'
|
|
85
85
|
? 'refs/heads/develop'
|
|
86
86
|
: input.stage === 'production'
|
|
87
87
|
? 'refs/heads/main'
|
|
@@ -170,6 +170,14 @@ function deriveProtectedPerformanceEndpoint(input) {
|
|
|
170
170
|
suffix: '/__ebk/performance/async-worker',
|
|
171
171
|
workload: 'async-worker',
|
|
172
172
|
},
|
|
173
|
+
'async-key-value-burst': {
|
|
174
|
+
suffix: '/__ebk/performance/async-worker',
|
|
175
|
+
workload: 'async-worker',
|
|
176
|
+
},
|
|
177
|
+
'database-read-write': {
|
|
178
|
+
suffix: '/__ebk/performance/database',
|
|
179
|
+
workload: 'database',
|
|
180
|
+
},
|
|
173
181
|
'database-cold-resume': {
|
|
174
182
|
suffix: '/__ebk/performance/database',
|
|
175
183
|
workload: 'database',
|
|
@@ -344,7 +352,7 @@ function createProtectedPerformanceLoadSliceTargets(slice) {
|
|
|
344
352
|
* The caller merges the returned fixed Slice targets into generated project
|
|
345
353
|
* metadata; neither target forwards user-supplied commands or arguments.
|
|
346
354
|
*/
|
|
347
|
-
function renderProtectedPerformanceLoadWorkflowPlan(sliceForTargetMetadata) {
|
|
355
|
+
function renderProtectedPerformanceLoadWorkflowPlan(sliceForTargetMetadata, rehearsalStage = 'staging') {
|
|
348
356
|
const checkout = (0, index_js_1.pinnedAction)(index_js_1.GITHUB_ACTION_PINS.checkout);
|
|
349
357
|
const configureAws = (0, index_js_1.pinnedAction)(index_js_1.GITHUB_ACTION_PINS.configureAwsCredentials);
|
|
350
358
|
const pnpmSetup = (0, index_js_1.pinnedAction)(index_js_1.GITHUB_ACTION_PINS.pnpmSetup);
|
|
@@ -362,11 +370,11 @@ on:
|
|
|
362
370
|
workflow_dispatch:
|
|
363
371
|
inputs:
|
|
364
372
|
stage:
|
|
365
|
-
description: Protected target stage;
|
|
373
|
+
description: Protected target stage; ${rehearsalStage} is the rehearsal path
|
|
366
374
|
required: true
|
|
367
|
-
default:
|
|
375
|
+
default: ${rehearsalStage}
|
|
368
376
|
type: choice
|
|
369
|
-
options: [
|
|
377
|
+
options: [${rehearsalStage}, production]
|
|
370
378
|
project:
|
|
371
379
|
description: Exact Product Slice project
|
|
372
380
|
required: true
|
|
@@ -414,7 +422,6 @@ jobs:
|
|
|
414
422
|
EBK_ACCOUNT_FINGERPRINT: \${{ inputs.target_account_fingerprint }}
|
|
415
423
|
EBK_APPROVED_REGION: \${{ vars.AWS_REGION }}
|
|
416
424
|
EBK_PERFORMANCE_ORIGINS_JSON: \${{ vars.EBK_PERFORMANCE_ORIGINS_JSON }}
|
|
417
|
-
EBK_PERFORMANCE_LOAD_HMAC_KEY_PATH: \${{ runner.temp }}/ebk-performance-load-hmac-\${{ github.run_id }}-\${{ github.run_attempt }}.json
|
|
418
425
|
EBK_PROJECT: \${{ inputs.project }}
|
|
419
426
|
EBK_PROTECTED_LOAD_APPROVAL_PATH: \${{ inputs.approval }}
|
|
420
427
|
EBK_PROTECTED_LOAD_PLAN_PATH: \${{ inputs.plan }}
|
|
@@ -422,6 +429,8 @@ jobs:
|
|
|
422
429
|
EBK_STAGE: \${{ inputs.stage }}
|
|
423
430
|
NX_DAEMON: 'false'
|
|
424
431
|
steps:
|
|
432
|
+
- name: Initialize private performance material path
|
|
433
|
+
run: echo "EBK_PERFORMANCE_LOAD_HMAC_KEY_PATH=$RUNNER_TEMP/ebk-performance-load-hmac-$GITHUB_RUN_ID-$GITHUB_RUN_ATTEMPT.json" >> "$GITHUB_ENV"
|
|
425
434
|
- name: Validate exact protected request
|
|
426
435
|
env:
|
|
427
436
|
EBK_PROTECTED_REF: \${{ github.ref }}
|
|
@@ -429,7 +438,7 @@ jobs:
|
|
|
429
438
|
run: |
|
|
430
439
|
set -euo pipefail
|
|
431
440
|
case "$EBK_STAGE:$EBK_PROTECTED_REF" in
|
|
432
|
-
|
|
441
|
+
${rehearsalStage}:refs/heads/develop|production:refs/heads/main) ;;
|
|
433
442
|
*) echo 'Performance load stage does not match its protected branch'; exit 1 ;;
|
|
434
443
|
esac
|
|
435
444
|
case "$EBK_PROJECT" in
|
|
@@ -556,6 +565,27 @@ jobs:
|
|
|
556
565
|
{ echo 'Assumed account fingerprint does not equal the reviewed target'; exit 1; }
|
|
557
566
|
test "$AWS_REGION" = "$EBK_APPROVED_REGION" ||
|
|
558
567
|
{ echo 'Target Region does not equal the environment-approved Region'; exit 1; }
|
|
568
|
+
owner_parameter="/ebk/$EBK_STAGE/workspace-owner"
|
|
569
|
+
actual_owner="$(aws ssm get-parameter \
|
|
570
|
+
--name "$owner_parameter" \
|
|
571
|
+
--no-with-decryption \
|
|
572
|
+
--query 'Parameter.Value' \
|
|
573
|
+
--output text)" ||
|
|
574
|
+
{ echo 'Performance load role requires ssm:GetParameter on the exact retained workspace owner'; exit 1; }
|
|
575
|
+
expected_owner="$(node -e '
|
|
576
|
+
const policy = require("./ebk.repository-policy.json");
|
|
577
|
+
process.stdout.write(JSON.stringify({
|
|
578
|
+
accountId: process.env.AWS_EXPECTED_ACCOUNT_ID,
|
|
579
|
+
kind: "ebk-workspace-stage-owner",
|
|
580
|
+
region: process.env.AWS_REGION,
|
|
581
|
+
schemaVersion: 1,
|
|
582
|
+
stage: process.env.EBK_STAGE,
|
|
583
|
+
workspaceDeploymentId: policy.workspaceDeploymentId,
|
|
584
|
+
}));
|
|
585
|
+
')" ||
|
|
586
|
+
{ echo 'Committed workspace owner identity is invalid'; exit 1; }
|
|
587
|
+
test "$actual_owner" = "$expected_owner" ||
|
|
588
|
+
{ echo 'Performance load target is owned by another workspace'; exit 1; }
|
|
559
589
|
test -f "$EBK_PROTECTED_LOAD_PLAN_PATH" ||
|
|
560
590
|
{ echo 'Exact protected load plan is absent from the candidate'; exit 1; }
|
|
561
591
|
test -f "$EBK_PROTECTED_LOAD_APPROVAL_PATH" ||
|
|
@@ -662,16 +692,12 @@ jobs:
|
|
|
662
692
|
run: |
|
|
663
693
|
set -euo pipefail
|
|
664
694
|
logical_name="$(node -e '
|
|
665
|
-
const
|
|
666
|
-
const logicalName =
|
|
667
|
-
project.split("-")
|
|
668
|
-
.map((part) => part[0].toUpperCase() + part.slice(1))
|
|
669
|
-
.join("") + "PerformanceLoadHmacKeys";
|
|
695
|
+
const logicalName = "GeneratedPerformanceLoadHmacKeys";
|
|
670
696
|
if (!/^[A-Za-z][A-Za-z0-9]{0,63}$/.test(logicalName)) {
|
|
671
697
|
process.exit(1);
|
|
672
698
|
}
|
|
673
699
|
process.stdout.write(logicalName);
|
|
674
|
-
'
|
|
700
|
+
')" ||
|
|
675
701
|
{ echo 'Slice HMAC logical name is invalid'; exit 1; }
|
|
676
702
|
secret_name="ebk/$EBK_STAGE/$EBK_PROJECT/$logical_name"
|
|
677
703
|
aws secretsmanager get-secret-value \
|
|
@@ -722,18 +748,6 @@ jobs:
|
|
|
722
748
|
}
|
|
723
749
|
});
|
|
724
750
|
' "$EBK_PERFORMANCE_LOAD_HMAC_KEY_PATH"
|
|
725
|
-
- name: Clear current performance-load AWS session credentials
|
|
726
|
-
if: always()
|
|
727
|
-
env:
|
|
728
|
-
ACTIONS_ID_TOKEN_REQUEST_TOKEN: ''
|
|
729
|
-
ACTIONS_ID_TOKEN_REQUEST_URL: ''
|
|
730
|
-
run: |
|
|
731
|
-
{
|
|
732
|
-
echo 'AWS_ACCESS_KEY_ID='
|
|
733
|
-
echo 'AWS_SECRET_ACCESS_KEY='
|
|
734
|
-
echo 'AWS_SESSION_TOKEN='
|
|
735
|
-
echo 'AWS_SECURITY_TOKEN='
|
|
736
|
-
} >> "$GITHUB_ENV"
|
|
737
751
|
- name: Guard and run the exact allowlisted load target
|
|
738
752
|
env:
|
|
739
753
|
ACTIONS_ID_TOKEN_REQUEST_TOKEN: ''
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Seeded shared-operation claim ledger. A claim is an ordinary EBK work marker
|
|
3
|
+
* (`EBK-TODO` with a `PLAN:shared-operation/<operation>` reference), so the
|
|
4
|
+
* existing work-markers scanner validates and reports open claims; no new
|
|
5
|
+
* enforcement exists, and the generated text must not imply one.
|
|
6
|
+
*/
|
|
7
|
+
export declare const SHARED_OPERATION_CLAIMS_PATH: "docs/shared-operation-claims.yaml";
|
|
8
|
+
export declare const SHARED_OPERATIONS: readonly ["gateway-setup", "package-release", "candidate-adoption", "database-replacement", "development-deployment"];
|
|
9
|
+
export declare const SHARED_OPERATION_CLAIM_PHASE: "shared-operation";
|
|
10
|
+
export declare function renderSharedOperationClaims(workspaceName: string): string;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SHARED_OPERATION_CLAIM_PHASE = exports.SHARED_OPERATIONS = exports.SHARED_OPERATION_CLAIMS_PATH = void 0;
|
|
4
|
+
exports.renderSharedOperationClaims = renderSharedOperationClaims;
|
|
5
|
+
/**
|
|
6
|
+
* Seeded shared-operation claim ledger. A claim is an ordinary EBK work marker
|
|
7
|
+
* (`EBK-TODO` with a `PLAN:shared-operation/<operation>` reference), so the
|
|
8
|
+
* existing work-markers scanner validates and reports open claims; no new
|
|
9
|
+
* enforcement exists, and the generated text must not imply one.
|
|
10
|
+
*/
|
|
11
|
+
exports.SHARED_OPERATION_CLAIMS_PATH = 'docs/shared-operation-claims.yaml';
|
|
12
|
+
exports.SHARED_OPERATIONS = [
|
|
13
|
+
'gateway-setup',
|
|
14
|
+
'package-release',
|
|
15
|
+
'candidate-adoption',
|
|
16
|
+
'database-replacement',
|
|
17
|
+
'development-deployment',
|
|
18
|
+
];
|
|
19
|
+
exports.SHARED_OPERATION_CLAIM_PHASE = 'shared-operation';
|
|
20
|
+
function renderSharedOperationClaims(workspaceName) {
|
|
21
|
+
return `# Shared-operation claim ledger
|
|
22
|
+
#
|
|
23
|
+
# Seeded by Empire Builder Kit; this repository owns the file after
|
|
24
|
+
# generation. It serializes shared operations that only one actor at a time
|
|
25
|
+
# may run: ${exports.SHARED_OPERATIONS.slice(0, -1).join(', ')}, and
|
|
26
|
+
# ${exports.SHARED_OPERATIONS.at(-1)}.
|
|
27
|
+
#
|
|
28
|
+
# Before starting one of them, an agent or a human:
|
|
29
|
+
#
|
|
30
|
+
# 1. reads the current copy of this file where the other actors record
|
|
31
|
+
# claims (for example the integration branch after a fetch) and looks for
|
|
32
|
+
# an open claim on the same operation;
|
|
33
|
+
# 2. if one exists, stops and reports the conflict instead of running the
|
|
34
|
+
# operation; the claim's owner or a human coordinator resolves it;
|
|
35
|
+
# 3. otherwise adds one claim line below and commits it where the other
|
|
36
|
+
# actors read this ledger before starting; and
|
|
37
|
+
# 4. deletes its own claim line once the operation and its verification are
|
|
38
|
+
# complete.
|
|
39
|
+
#
|
|
40
|
+
# A claim is one full-line EBK work marker: kind EBK-TODO, reference
|
|
41
|
+
# PLAN:${exports.SHARED_OPERATION_CLAIM_PHASE}/<operation>, where <operation> is one of
|
|
42
|
+
# the five names above, and a self-contained description naming the actor,
|
|
43
|
+
# the branch or worktree, the start time in UTC, and the exact target. Two
|
|
44
|
+
# open claims with the same reference conflict. For example (prose, not a
|
|
45
|
+
# claim):
|
|
46
|
+
#
|
|
47
|
+
# Example: EBK-TODO(PLAN:${exports.SHARED_OPERATION_CLAIM_PHASE}/development-deployment): <actor> on <branch> since <UTC time>; deploying billing to development.
|
|
48
|
+
#
|
|
49
|
+
# Run \`pnpm nx run ${workspaceName}:work-markers\` to list open claims with
|
|
50
|
+
# every other work marker and validate their syntax. Adding or removing a
|
|
51
|
+
# claim changes the marker set, so a retained Developer-Agent handoff
|
|
52
|
+
# reports the change on resume. Nothing enforces a claim: it is a
|
|
53
|
+
# convention the actors follow, and it is only as current as the copy they
|
|
54
|
+
# read.
|
|
55
|
+
#
|
|
56
|
+
# Open claims:
|
|
57
|
+
`;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=workspace-files-shared-operation-claims.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { DeploymentProfile } from '../../repository-policy/index.js';
|
|
2
|
+
export declare function renderStageAuthorityWorkspaceFiles(options: {
|
|
3
|
+
deploymentProfile: DeploymentProfile;
|
|
4
|
+
name: string;
|
|
5
|
+
workspaceDeploymentId: string;
|
|
6
|
+
}): Readonly<Record<string, string>>;
|