@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,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runDevTaskCleanup = runDevTaskCleanup;
|
|
4
|
+
const devkit_1 = require("@nx/devkit");
|
|
5
|
+
const index_js_1 = require("../../aws-authority/index.js");
|
|
6
|
+
const fleet_launcher_js_1 = require("../../local-dev/fleet-launcher.js");
|
|
7
|
+
const local_context_js_1 = require("../../local-dev/local-context.js");
|
|
8
|
+
const task_authority_js_1 = require("../../local-dev/task-authority.js");
|
|
9
|
+
const task_identity_js_1 = require("../../local-dev/task-identity.js");
|
|
10
|
+
const federated_credential_transport_js_1 = require("../local-deploy/federated-credential-transport.js");
|
|
11
|
+
const run_sst_command_js_1 = require("../sst-lifecycle/run-sst-command.js");
|
|
12
|
+
const task_stack_absence_js_1 = require("./task-stack-absence.js");
|
|
13
|
+
async function preflightTaskRemove(options, context, environment) {
|
|
14
|
+
const invocation = (0, run_sst_command_js_1.buildSstCommandInvocation)('remove', options, context, environment);
|
|
15
|
+
await (0, run_sst_command_js_1.runSstLifecyclePreflights)('remove', options, context, invocation, {}, environment);
|
|
16
|
+
return invocation.cwd;
|
|
17
|
+
}
|
|
18
|
+
/** Internal generated cleanup target: never accepts a caller-selected task. */
|
|
19
|
+
async function runDevTaskCleanup(options, context, dependencies = {}) {
|
|
20
|
+
let transport;
|
|
21
|
+
let success = false;
|
|
22
|
+
let alreadyAbsent = false;
|
|
23
|
+
try {
|
|
24
|
+
if (!options ||
|
|
25
|
+
typeof options !== 'object' ||
|
|
26
|
+
Array.isArray(options) ||
|
|
27
|
+
Reflect.ownKeys(options).length !== 0) {
|
|
28
|
+
throw new Error('Task cleanup accepts no caller options, stage, task, or AWS profile overrides.');
|
|
29
|
+
}
|
|
30
|
+
const environment = dependencies.environment ?? process.env;
|
|
31
|
+
if (environment.GITHUB_ACTIONS === 'true') {
|
|
32
|
+
throw new Error('Task cleanup is available only in the owning local worktree, not GitHub Actions.');
|
|
33
|
+
}
|
|
34
|
+
const projectName = context.projectName;
|
|
35
|
+
const project = projectName
|
|
36
|
+
? context.projectsConfigurations?.projects[projectName]
|
|
37
|
+
: undefined;
|
|
38
|
+
if (!projectName ||
|
|
39
|
+
!project?.tags?.includes('type:slice') ||
|
|
40
|
+
project.tags.includes('scope:foundation')) {
|
|
41
|
+
throw new Error('Task cleanup requires one Product Slice, never a Foundation.');
|
|
42
|
+
}
|
|
43
|
+
const task = (0, task_identity_js_1.resolveTaskIdentity)(context.root);
|
|
44
|
+
const saved = (0, local_context_js_1.readSavedLocalDevContext)((0, fleet_launcher_js_1.resolveGitCommonDirectory)(context.root));
|
|
45
|
+
if (saved.kind !== 'ready') {
|
|
46
|
+
throw new Error('Task cleanup requires a valid saved local development AWS context. Run ebk dev configure.');
|
|
47
|
+
}
|
|
48
|
+
const verified = await (0, task_authority_js_1.verifyTaskEnvironment)(context.root, saved.resolution.context, dependencies.authority);
|
|
49
|
+
(0, task_identity_js_1.assertCurrentTaskEnvironment)(context.root, verified);
|
|
50
|
+
const region = verified.region;
|
|
51
|
+
const expectedRoleArn = (0, index_js_1.createStageAuthorityIdentity)({
|
|
52
|
+
accountId: verified.accountId,
|
|
53
|
+
partition: region.startsWith('cn-')
|
|
54
|
+
? 'aws-cn'
|
|
55
|
+
: region.startsWith('us-gov-')
|
|
56
|
+
? 'aws-us-gov'
|
|
57
|
+
: 'aws',
|
|
58
|
+
region,
|
|
59
|
+
stage: 'development',
|
|
60
|
+
}).deploymentRoleArn;
|
|
61
|
+
transport = await (dependencies.createTransport ?? federated_credential_transport_js_1.createLocalFederatedCredentialTransport)({
|
|
62
|
+
account: verified.accountId,
|
|
63
|
+
expectedRoleArn,
|
|
64
|
+
profile: saved.resolution.context.profile,
|
|
65
|
+
region,
|
|
66
|
+
});
|
|
67
|
+
await transport.refresh();
|
|
68
|
+
// Recheck ownership after asynchronous authority acquisition, before mutation.
|
|
69
|
+
(0, task_identity_js_1.assertCurrentTaskEnvironment)(context.root, verified);
|
|
70
|
+
if ((0, task_identity_js_1.resolveTaskIdentity)(context.root).taskId !== task.taskId) {
|
|
71
|
+
throw new Error('Task ownership changed during cleanup authorization.');
|
|
72
|
+
}
|
|
73
|
+
const nativeOptions = {
|
|
74
|
+
expectedRoleArn,
|
|
75
|
+
foundationStage: 'development',
|
|
76
|
+
profile: transport.profile,
|
|
77
|
+
region,
|
|
78
|
+
stage: (0, task_identity_js_1.taskStage)(task.taskId),
|
|
79
|
+
stageMode: 'consumer',
|
|
80
|
+
};
|
|
81
|
+
const childEnvironment = {
|
|
82
|
+
...transport.childEnvironment(environment),
|
|
83
|
+
AWS_EXPECTED_ACCOUNT_ID: verified.accountId,
|
|
84
|
+
AWS_REGION: region,
|
|
85
|
+
EBK_NX_TASK_CLEANUP: task.taskId,
|
|
86
|
+
};
|
|
87
|
+
// An absence result must pass the same role/project/task/ownership gates
|
|
88
|
+
// as removal. Present state still goes through the unchanged native runner.
|
|
89
|
+
const projectRoot = await (dependencies.preflight ?? preflightTaskRemove)(nativeOptions, context, childEnvironment);
|
|
90
|
+
const metadata = await (dependencies.inspectStack ?? task_stack_absence_js_1.inspectNeverCreatedTaskStack)({
|
|
91
|
+
workspaceRoot: context.root,
|
|
92
|
+
projectRoot,
|
|
93
|
+
projectName,
|
|
94
|
+
taskId: task.taskId,
|
|
95
|
+
verifiedEnvironment: verified,
|
|
96
|
+
awsEnvironment: childEnvironment,
|
|
97
|
+
});
|
|
98
|
+
(0, task_identity_js_1.assertCurrentTaskEnvironment)(context.root, verified);
|
|
99
|
+
if ((0, task_identity_js_1.resolveTaskIdentity)(context.root).taskId !== task.taskId)
|
|
100
|
+
throw new Error('Task ownership changed during cleanup inspection.');
|
|
101
|
+
if (metadata.status === 'already-absent') {
|
|
102
|
+
alreadyAbsent = true;
|
|
103
|
+
success = true;
|
|
104
|
+
devkit_1.logger.info('Task cloud stack is already absent (verified native metadata; no SST removal executed).');
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
const removed = (await (dependencies.run ?? run_sst_command_js_1.runSstCommand)('remove', nativeOptions, context, { environment: childEnvironment })).success;
|
|
108
|
+
if (removed) {
|
|
109
|
+
await (dependencies.verifyStack ?? task_stack_absence_js_1.verifyRemovedTaskStack)({
|
|
110
|
+
workspaceRoot: context.root,
|
|
111
|
+
projectRoot,
|
|
112
|
+
projectName,
|
|
113
|
+
taskId: task.taskId,
|
|
114
|
+
verifiedEnvironment: verified,
|
|
115
|
+
awsEnvironment: childEnvironment,
|
|
116
|
+
});
|
|
117
|
+
(0, task_identity_js_1.assertCurrentTaskEnvironment)(context.root, verified);
|
|
118
|
+
if ((0, task_identity_js_1.resolveTaskIdentity)(context.root).taskId !== task.taskId)
|
|
119
|
+
throw new Error('Task ownership changed during cleanup verification.');
|
|
120
|
+
}
|
|
121
|
+
success = removed;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
devkit_1.logger.error(`Task cloud cleanup failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
126
|
+
}
|
|
127
|
+
finally {
|
|
128
|
+
try {
|
|
129
|
+
transport?.cleanup();
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
success = false;
|
|
133
|
+
devkit_1.logger.error(`Task cleanup credential removal failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
success,
|
|
138
|
+
...(success && alreadyAbsent
|
|
139
|
+
? { taskStack: 'already-absent' }
|
|
140
|
+
: {}),
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
const executor = (options, context) => runDevTaskCleanup(options, context);
|
|
144
|
+
exports.default = executor;
|
|
145
|
+
//# sourceMappingURL=dev-task-cleanup.js.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/schema",
|
|
3
|
+
"version": 2,
|
|
4
|
+
"title": "Empire Builder Kit internal task cloud cleanup",
|
|
5
|
+
"description": "Remove only this worktree's owned task Slice stack through verified development authority.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"properties": {}
|
|
9
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { S3Client, type S3ClientConfig } from '@aws-sdk/client-s3';
|
|
2
|
+
import { SSMClient, type SSMClientConfig } from '@aws-sdk/client-ssm';
|
|
3
|
+
import { type TaskEnvironment } from '../../local-dev/task-identity.js';
|
|
4
|
+
declare const NATIVE_VERSION = "4.17.1";
|
|
5
|
+
export interface TaskStackAbsenceInput {
|
|
6
|
+
workspaceRoot: string;
|
|
7
|
+
projectRoot: string;
|
|
8
|
+
projectName: string;
|
|
9
|
+
taskId: string;
|
|
10
|
+
verifiedEnvironment: TaskEnvironment;
|
|
11
|
+
awsEnvironment: NodeJS.ProcessEnv;
|
|
12
|
+
}
|
|
13
|
+
export interface TaskStackAbsenceDependencies {
|
|
14
|
+
s3Client?: (config: S3ClientConfig) => S3Client;
|
|
15
|
+
ssmClient?: (config: SSMClientConfig) => SSMClient;
|
|
16
|
+
}
|
|
17
|
+
export type TaskStackMetadata = {
|
|
18
|
+
status: 'present' | 'already-absent';
|
|
19
|
+
nativeVersion: typeof NATIVE_VERSION;
|
|
20
|
+
};
|
|
21
|
+
/** Accept only the generated static app/home contract; never evaluate config. */
|
|
22
|
+
export declare function resolveStaticTaskApp(input: Pick<TaskStackAbsenceInput, 'workspaceRoot' | 'projectRoot' | 'projectName'>): string;
|
|
23
|
+
/** Read-only, task-exact metadata proof. It grants no permission to remove. */
|
|
24
|
+
export declare function inspectNeverCreatedTaskStack(input: TaskStackAbsenceInput, dependencies?: TaskStackAbsenceDependencies): Promise<TaskStackMetadata>;
|
|
25
|
+
/** A successful native exit cannot conceal retained resources or pending work. */
|
|
26
|
+
export declare function verifyRemovedTaskStack(input: TaskStackAbsenceInput, dependencies?: TaskStackAbsenceDependencies): Promise<void>;
|
|
27
|
+
export {};
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveStaticTaskApp = resolveStaticTaskApp;
|
|
4
|
+
exports.inspectNeverCreatedTaskStack = inspectNeverCreatedTaskStack;
|
|
5
|
+
exports.verifyRemovedTaskStack = verifyRemovedTaskStack;
|
|
6
|
+
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
7
|
+
const client_ssm_1 = require("@aws-sdk/client-ssm");
|
|
8
|
+
const credential_providers_1 = require("@aws-sdk/credential-providers");
|
|
9
|
+
const node_fs_1 = require("node:fs");
|
|
10
|
+
const node_path_1 = require("node:path");
|
|
11
|
+
const ts = require("typescript");
|
|
12
|
+
const identity_js_1 = require("../../aws/identity.js");
|
|
13
|
+
const personal_secret_runtime_js_1 = require("../../cli/personal-secret-runtime.js");
|
|
14
|
+
const task_identity_js_1 = require("../../local-dev/task-identity.js");
|
|
15
|
+
const task_stack_checkpoint_js_1 = require("./task-stack-checkpoint.js");
|
|
16
|
+
// These are provider layout facts, not an alternative SST state engine.
|
|
17
|
+
// SST v4.17.1: pkg/project/provider/aws.go Bootstrap (version 5),
|
|
18
|
+
// pathForData, and provider.go PullState/Lock/Unlock (symbol references, not
|
|
19
|
+
// unstable line numbers).
|
|
20
|
+
// https://github.com/anomalyco/sst/blob/v4.17.1/pkg/project/provider/aws.go
|
|
21
|
+
// https://github.com/anomalyco/sst/blob/v4.17.1/pkg/project/provider/provider.go
|
|
22
|
+
const NATIVE_VERSION = '4.17.1';
|
|
23
|
+
const MAX_PAGES = 4;
|
|
24
|
+
const PAGE_SIZE = 100;
|
|
25
|
+
function refuse(reason) {
|
|
26
|
+
throw new Error(`Task stack absence could not be proven: ${reason}.`);
|
|
27
|
+
}
|
|
28
|
+
function propertyName(node) {
|
|
29
|
+
return ts.isIdentifier(node) || ts.isStringLiteral(node)
|
|
30
|
+
? node.text
|
|
31
|
+
: undefined;
|
|
32
|
+
}
|
|
33
|
+
/** Accept only the generated static app/home contract; never evaluate config. */
|
|
34
|
+
function resolveStaticTaskApp(input) {
|
|
35
|
+
const root = (0, node_fs_1.realpathSync)(input.workspaceRoot);
|
|
36
|
+
const project = (0, node_fs_1.realpathSync)(input.projectRoot);
|
|
37
|
+
const path = (0, node_path_1.join)(project, 'sst.config.ts');
|
|
38
|
+
const child = (0, node_path_1.relative)(root, project);
|
|
39
|
+
if (!child || child.startsWith('..') || (0, node_path_1.isAbsolute)(child))
|
|
40
|
+
refuse('the Slice configuration is outside its workspace');
|
|
41
|
+
if (!(0, node_fs_1.lstatSync)(path).isFile() || (0, node_fs_1.realpathSync)(path) !== path)
|
|
42
|
+
refuse('the Slice configuration is not a regular owned path');
|
|
43
|
+
const source = (0, node_fs_1.readFileSync)(path, 'utf8');
|
|
44
|
+
if (Buffer.byteLength(source) > 1024 * 1024)
|
|
45
|
+
refuse('the Slice configuration exceeds the inspection bound');
|
|
46
|
+
const file = ts.createSourceFile(path, source, ts.ScriptTarget.Latest, true);
|
|
47
|
+
if (ts
|
|
48
|
+
.transpileModule(source, { fileName: path, reportDiagnostics: true })
|
|
49
|
+
.diagnostics?.some((diagnostic) => diagnostic.category === ts.DiagnosticCategory.Error))
|
|
50
|
+
refuse('the Slice configuration has invalid syntax');
|
|
51
|
+
const exports = file.statements.filter(ts.isExportAssignment);
|
|
52
|
+
const expression = exports[0]?.expression;
|
|
53
|
+
if (exports.length !== 1 ||
|
|
54
|
+
exports[0].isExportEquals ||
|
|
55
|
+
!expression ||
|
|
56
|
+
!ts.isCallExpression(expression) ||
|
|
57
|
+
!ts.isIdentifier(expression.expression) ||
|
|
58
|
+
expression.expression.text !== '$config' ||
|
|
59
|
+
expression.arguments.length !== 1 ||
|
|
60
|
+
!ts.isObjectLiteralExpression(expression.arguments[0]))
|
|
61
|
+
refuse('the Slice app declaration is not the supported static shape');
|
|
62
|
+
const config = expression.arguments[0];
|
|
63
|
+
if (config.properties.some((p) => !p.name || propertyName(p.name) === undefined))
|
|
64
|
+
refuse('the Slice configuration contains dynamic properties');
|
|
65
|
+
const apps = config.properties.filter((p) => p.name && propertyName(p.name) === 'app');
|
|
66
|
+
const app = apps[0];
|
|
67
|
+
if (apps.length !== 1 || !app || !ts.isMethodDeclaration(app) || !app.body)
|
|
68
|
+
refuse('the Slice app declaration is dynamic');
|
|
69
|
+
const statements = app.body.statements;
|
|
70
|
+
const returned = statements.at(-1);
|
|
71
|
+
if (statements.slice(0, -1).some((s) => !ts.isVariableStatement(s)) ||
|
|
72
|
+
!returned ||
|
|
73
|
+
!ts.isReturnStatement(returned) ||
|
|
74
|
+
!returned.expression ||
|
|
75
|
+
!ts.isObjectLiteralExpression(returned.expression))
|
|
76
|
+
refuse('the Slice app return is dynamic');
|
|
77
|
+
const properties = returned.expression.properties;
|
|
78
|
+
if (properties.some((p) => !p.name || propertyName(p.name) === undefined))
|
|
79
|
+
refuse('the Slice app return contains dynamic properties');
|
|
80
|
+
const literal = (name) => {
|
|
81
|
+
const matches = properties.filter((p) => p.name && propertyName(p.name) === name);
|
|
82
|
+
const property = matches[0];
|
|
83
|
+
if (matches.length !== 1 ||
|
|
84
|
+
!property ||
|
|
85
|
+
!ts.isPropertyAssignment(property) ||
|
|
86
|
+
!ts.isStringLiteral(property.initializer))
|
|
87
|
+
refuse(`the Slice ${name} is not an exact literal`);
|
|
88
|
+
return property.initializer.text;
|
|
89
|
+
};
|
|
90
|
+
const name = literal('name');
|
|
91
|
+
if (name !== input.projectName ||
|
|
92
|
+
!/^[a-z][a-z0-9-]{0,62}$/.test(name) ||
|
|
93
|
+
literal('home') !== 'aws')
|
|
94
|
+
refuse('the Slice app/home differs from the selected generated project');
|
|
95
|
+
return name;
|
|
96
|
+
}
|
|
97
|
+
/** Read-only, task-exact metadata proof. It grants no permission to remove. */
|
|
98
|
+
async function inspectNeverCreatedTaskStack(input, dependencies = {}) {
|
|
99
|
+
return inspectTaskStack(input, dependencies, false);
|
|
100
|
+
}
|
|
101
|
+
/** A successful native exit cannot conceal retained resources or pending work. */
|
|
102
|
+
async function verifyRemovedTaskStack(input, dependencies = {}) {
|
|
103
|
+
await inspectTaskStack(input, dependencies, true);
|
|
104
|
+
}
|
|
105
|
+
async function inspectTaskStack(input, dependencies, verifyRemoval) {
|
|
106
|
+
const assertOwner = () => {
|
|
107
|
+
if ((0, task_identity_js_1.assertCurrentTaskEnvironment)(input.workspaceRoot, input.verifiedEnvironment).taskId !== input.taskId)
|
|
108
|
+
refuse('task ownership changed');
|
|
109
|
+
};
|
|
110
|
+
assertOwner();
|
|
111
|
+
if ((0, personal_secret_runtime_js_1.resolveWorkspaceSstRuntime)(input.workspaceRoot).version !== NATIVE_VERSION)
|
|
112
|
+
refuse('the native SST version has no reviewed metadata layout');
|
|
113
|
+
const app = resolveStaticTaskApp(input);
|
|
114
|
+
const stage = (0, task_identity_js_1.taskStage)(input.taskId);
|
|
115
|
+
const { accountId, region } = input.verifiedEnvironment;
|
|
116
|
+
const profile = input.awsEnvironment.AWS_PROFILE;
|
|
117
|
+
const configFilepath = input.awsEnvironment.AWS_CONFIG_FILE;
|
|
118
|
+
const filepath = input.awsEnvironment.AWS_SHARED_CREDENTIALS_FILE;
|
|
119
|
+
if (!profile || !configFilepath || !filepath)
|
|
120
|
+
refuse('the private authorized AWS credential transport is incomplete');
|
|
121
|
+
const credentials = (0, credential_providers_1.fromIni)({
|
|
122
|
+
profile,
|
|
123
|
+
configFilepath,
|
|
124
|
+
filepath,
|
|
125
|
+
clientConfig: {
|
|
126
|
+
region,
|
|
127
|
+
endpoint: (0, identity_js_1.canonicalAwsRegionalEndpoint)('sts', region),
|
|
128
|
+
ignoreConfiguredEndpointUrls: true,
|
|
129
|
+
},
|
|
130
|
+
});
|
|
131
|
+
const common = {
|
|
132
|
+
region,
|
|
133
|
+
credentials,
|
|
134
|
+
maxAttempts: 1,
|
|
135
|
+
ignoreConfiguredEndpointUrls: true,
|
|
136
|
+
};
|
|
137
|
+
const ssm = (dependencies.ssmClient ?? ((config) => new client_ssm_1.SSMClient(config)))({
|
|
138
|
+
...common,
|
|
139
|
+
endpoint: (0, identity_js_1.canonicalAwsRegionalEndpoint)('ssm', region),
|
|
140
|
+
});
|
|
141
|
+
// identity.ts validates the Region; replace only the fixed service label.
|
|
142
|
+
const s3 = (dependencies.s3Client ?? ((config) => new client_s3_1.S3Client(config)))({
|
|
143
|
+
...common,
|
|
144
|
+
endpoint: (0, identity_js_1.canonicalAwsRegionalEndpoint)('ssm', region).replace('https://ssm.', 'https://s3.'),
|
|
145
|
+
});
|
|
146
|
+
const signal = AbortSignal.timeout(20_000);
|
|
147
|
+
try {
|
|
148
|
+
const bootstrap = await ssm.send(new client_ssm_1.GetParameterCommand({
|
|
149
|
+
Name: '/sst/bootstrap',
|
|
150
|
+
WithDecryption: false,
|
|
151
|
+
}), { abortSignal: signal });
|
|
152
|
+
if (bootstrap.Parameter?.Name !== '/sst/bootstrap' ||
|
|
153
|
+
bootstrap.Parameter.Type !== 'String' ||
|
|
154
|
+
!bootstrap.Parameter.Value ||
|
|
155
|
+
Buffer.byteLength(bootstrap.Parameter.Value) > 16_384)
|
|
156
|
+
refuse('the native bootstrap metadata is missing or malformed');
|
|
157
|
+
let data;
|
|
158
|
+
try {
|
|
159
|
+
data = JSON.parse(bootstrap.Parameter.Value);
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
refuse('the native bootstrap metadata is not JSON');
|
|
163
|
+
}
|
|
164
|
+
if (!data ||
|
|
165
|
+
data.version !== 5 ||
|
|
166
|
+
typeof data.state !== 'string' ||
|
|
167
|
+
!/^sst-state-[a-z0-9]{12}$/.test(data.state))
|
|
168
|
+
refuse('the native bootstrap version or bucket identity is unsupported');
|
|
169
|
+
const owner = { Bucket: data.state, ExpectedBucketOwner: accountId };
|
|
170
|
+
const versioning = await s3.send(new client_s3_1.GetBucketVersioningCommand(owner), {
|
|
171
|
+
abortSignal: signal,
|
|
172
|
+
});
|
|
173
|
+
if (versioning.Status !== 'Enabled')
|
|
174
|
+
refuse('the native state bucket is not versioned');
|
|
175
|
+
const stateKey = `app/${app}/${stage}.json`;
|
|
176
|
+
const lockKey = `lock/${app}/${stage}.json`;
|
|
177
|
+
const contains = async (key) => {
|
|
178
|
+
let token;
|
|
179
|
+
const seen = new Set();
|
|
180
|
+
for (let page = 0; page < MAX_PAGES; page++) {
|
|
181
|
+
const result = await s3.send(new client_s3_1.ListObjectsV2Command({
|
|
182
|
+
...owner,
|
|
183
|
+
Prefix: key,
|
|
184
|
+
MaxKeys: PAGE_SIZE,
|
|
185
|
+
...(token ? { ContinuationToken: token } : {}),
|
|
186
|
+
}), { abortSignal: signal });
|
|
187
|
+
if (typeof result.IsTruncated !== 'boolean' ||
|
|
188
|
+
(result.Contents !== undefined && !Array.isArray(result.Contents)))
|
|
189
|
+
refuse('the current-object listing is malformed');
|
|
190
|
+
if ((result.Contents?.length ?? 0) > PAGE_SIZE)
|
|
191
|
+
refuse('the current-object page exceeds the inspection bound');
|
|
192
|
+
for (const object of result.Contents ?? []) {
|
|
193
|
+
if (typeof object.Key !== 'string' || !object.Key.startsWith(key))
|
|
194
|
+
refuse('the object listing escaped its exact prefix');
|
|
195
|
+
if (object.Key === key)
|
|
196
|
+
return true;
|
|
197
|
+
}
|
|
198
|
+
if (!result.IsTruncated)
|
|
199
|
+
return false;
|
|
200
|
+
token = result.NextContinuationToken;
|
|
201
|
+
if (!token || seen.has(token))
|
|
202
|
+
refuse('the object listing cursor is ambiguous');
|
|
203
|
+
seen.add(token);
|
|
204
|
+
}
|
|
205
|
+
refuse('the object listing exceeded its bounded page count');
|
|
206
|
+
};
|
|
207
|
+
if (await contains(lockKey))
|
|
208
|
+
refuse('the exact task native lock is present');
|
|
209
|
+
if (await contains(stateKey)) {
|
|
210
|
+
if (verifyRemoval) {
|
|
211
|
+
await (0, task_stack_checkpoint_js_1.verifyRemovedTaskCheckpoint)(s3, owner, stateKey, `organization/${app}/${stage}`, signal);
|
|
212
|
+
if (await contains(lockKey))
|
|
213
|
+
refuse('the exact task native lock appeared after removal');
|
|
214
|
+
}
|
|
215
|
+
assertOwner();
|
|
216
|
+
if (resolveStaticTaskApp(input) !== app)
|
|
217
|
+
refuse('the Slice app changed during inspection');
|
|
218
|
+
return { status: 'present', nativeVersion: NATIVE_VERSION };
|
|
219
|
+
}
|
|
220
|
+
let keyMarker;
|
|
221
|
+
let versionMarker;
|
|
222
|
+
const seen = new Set();
|
|
223
|
+
let complete = false;
|
|
224
|
+
for (let page = 0; page < MAX_PAGES; page++) {
|
|
225
|
+
const result = await s3.send(new client_s3_1.ListObjectVersionsCommand({
|
|
226
|
+
...owner,
|
|
227
|
+
Prefix: stateKey,
|
|
228
|
+
MaxKeys: PAGE_SIZE,
|
|
229
|
+
...(keyMarker ? { KeyMarker: keyMarker } : {}),
|
|
230
|
+
...(versionMarker ? { VersionIdMarker: versionMarker } : {}),
|
|
231
|
+
}), { abortSignal: signal });
|
|
232
|
+
if (typeof result.IsTruncated !== 'boolean' ||
|
|
233
|
+
[result.Versions, result.DeleteMarkers].some((entries) => entries !== undefined && !Array.isArray(entries)))
|
|
234
|
+
refuse('the version listing is malformed');
|
|
235
|
+
for (const entry of [
|
|
236
|
+
...(result.Versions ?? []),
|
|
237
|
+
...(result.DeleteMarkers ?? []),
|
|
238
|
+
]) {
|
|
239
|
+
if (typeof entry.Key !== 'string' || !entry.Key.startsWith(stateKey))
|
|
240
|
+
refuse('the version listing escaped its exact prefix');
|
|
241
|
+
if (entry.Key === stateKey)
|
|
242
|
+
refuse('the exact task state has retained versions or delete markers');
|
|
243
|
+
}
|
|
244
|
+
if ((result.Versions?.length ?? 0) + (result.DeleteMarkers?.length ?? 0) >
|
|
245
|
+
PAGE_SIZE)
|
|
246
|
+
refuse('the version page exceeds the inspection bound');
|
|
247
|
+
if (!result.IsTruncated) {
|
|
248
|
+
complete = true;
|
|
249
|
+
break;
|
|
250
|
+
}
|
|
251
|
+
keyMarker = result.NextKeyMarker;
|
|
252
|
+
versionMarker = result.NextVersionIdMarker;
|
|
253
|
+
const cursor = JSON.stringify([keyMarker, versionMarker]);
|
|
254
|
+
if (!keyMarker || !keyMarker.startsWith(stateKey) || seen.has(cursor))
|
|
255
|
+
refuse('the version listing cursor is ambiguous');
|
|
256
|
+
seen.add(cursor);
|
|
257
|
+
}
|
|
258
|
+
if (!complete)
|
|
259
|
+
refuse('the version listing exceeded its bounded page count');
|
|
260
|
+
// Close the metadata observation window before returning an absence result.
|
|
261
|
+
if ((await contains(stateKey)) || (await contains(lockKey)))
|
|
262
|
+
refuse('task state or lock appeared during the absence inspection');
|
|
263
|
+
assertOwner();
|
|
264
|
+
if (resolveStaticTaskApp(input) !== app)
|
|
265
|
+
refuse('the Slice app changed during inspection');
|
|
266
|
+
return { status: 'already-absent', nativeVersion: NATIVE_VERSION };
|
|
267
|
+
}
|
|
268
|
+
catch (error) {
|
|
269
|
+
if (error instanceof task_stack_checkpoint_js_1.NativeTaskCheckpointError ||
|
|
270
|
+
(error instanceof Error &&
|
|
271
|
+
error.message.startsWith('Task stack absence could not be proven:')))
|
|
272
|
+
throw error;
|
|
273
|
+
// Provider errors can contain private bucket names or request details.
|
|
274
|
+
refuse('a required native metadata read or ownership recheck failed');
|
|
275
|
+
}
|
|
276
|
+
finally {
|
|
277
|
+
s3.destroy();
|
|
278
|
+
ssm.destroy();
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
//# sourceMappingURL=task-stack-absence.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type S3Client } from '@aws-sdk/client-s3';
|
|
2
|
+
export declare class NativeTaskCheckpointError extends Error {
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Read-only postcondition for the pinned SST checkpoint envelope. It does not
|
|
6
|
+
* decrypt, retain, repair, or infer physical identities from resource contents.
|
|
7
|
+
* An empty checkpoint is necessary, not independent physical-absence proof.
|
|
8
|
+
*/
|
|
9
|
+
export declare function verifyRemovedTaskCheckpoint(s3: S3Client, owner: {
|
|
10
|
+
Bucket: string;
|
|
11
|
+
ExpectedBucketOwner: string;
|
|
12
|
+
}, key: string, stack: string, signal: AbortSignal): Promise<void>;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NativeTaskCheckpointError = void 0;
|
|
4
|
+
exports.verifyRemovedTaskCheckpoint = verifyRemovedTaskCheckpoint;
|
|
5
|
+
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
6
|
+
const MAX_CHECKPOINT_BYTES = 8 * 1024 * 1024;
|
|
7
|
+
class NativeTaskCheckpointError extends Error {
|
|
8
|
+
}
|
|
9
|
+
exports.NativeTaskCheckpointError = NativeTaskCheckpointError;
|
|
10
|
+
function refuse(reason) {
|
|
11
|
+
throw new NativeTaskCheckpointError(`Native task cleanup is incomplete: ${reason}.`);
|
|
12
|
+
}
|
|
13
|
+
function object(value) {
|
|
14
|
+
return !!value && typeof value === 'object' && !Array.isArray(value);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Read-only postcondition for the pinned SST checkpoint envelope. It does not
|
|
18
|
+
* decrypt, retain, repair, or infer physical identities from resource contents.
|
|
19
|
+
* An empty checkpoint is necessary, not independent physical-absence proof.
|
|
20
|
+
*/
|
|
21
|
+
async function verifyRemovedTaskCheckpoint(s3, owner, key, stack, signal) {
|
|
22
|
+
try {
|
|
23
|
+
const result = await s3.send(new client_s3_1.GetObjectCommand({ ...owner, Key: key }), {
|
|
24
|
+
abortSignal: signal,
|
|
25
|
+
});
|
|
26
|
+
const body = result.Body;
|
|
27
|
+
if (!body ||
|
|
28
|
+
!('destroy' in body) ||
|
|
29
|
+
typeof body.destroy !== 'function' ||
|
|
30
|
+
!(Symbol.asyncIterator in body))
|
|
31
|
+
refuse('the checkpoint stream is unavailable');
|
|
32
|
+
const stream = body;
|
|
33
|
+
const abort = () => stream.destroy();
|
|
34
|
+
signal.addEventListener('abort', abort, { once: true });
|
|
35
|
+
let bytes;
|
|
36
|
+
try {
|
|
37
|
+
if (!Number.isSafeInteger(result.ContentLength) ||
|
|
38
|
+
!result.ContentLength ||
|
|
39
|
+
result.ContentLength < 0 ||
|
|
40
|
+
result.ContentLength > MAX_CHECKPOINT_BYTES ||
|
|
41
|
+
!result.VersionId ||
|
|
42
|
+
result.VersionId === 'null' ||
|
|
43
|
+
!result.ETag)
|
|
44
|
+
refuse('the checkpoint size or version is unsupported');
|
|
45
|
+
signal.throwIfAborted();
|
|
46
|
+
let size = 0;
|
|
47
|
+
const chunks = [];
|
|
48
|
+
for await (const chunk of stream) {
|
|
49
|
+
signal.throwIfAborted();
|
|
50
|
+
if (!(chunk instanceof Uint8Array))
|
|
51
|
+
refuse('the checkpoint stream is malformed');
|
|
52
|
+
size += chunk.byteLength;
|
|
53
|
+
if (size > MAX_CHECKPOINT_BYTES || size > result.ContentLength)
|
|
54
|
+
refuse('the checkpoint exceeded its bounded size');
|
|
55
|
+
chunks.push(Buffer.from(chunk));
|
|
56
|
+
}
|
|
57
|
+
signal.throwIfAborted();
|
|
58
|
+
if (size !== result.ContentLength)
|
|
59
|
+
refuse('the checkpoint read was incomplete');
|
|
60
|
+
bytes = Buffer.concat(chunks);
|
|
61
|
+
}
|
|
62
|
+
finally {
|
|
63
|
+
signal.removeEventListener('abort', abort);
|
|
64
|
+
stream.destroy();
|
|
65
|
+
}
|
|
66
|
+
// Parse errors and SDK errors must never include checkpoint or secret data.
|
|
67
|
+
const value = JSON.parse(bytes.toString('utf8'));
|
|
68
|
+
if (!object(value) ||
|
|
69
|
+
value.version !== 3 ||
|
|
70
|
+
!object(value.checkpoint) ||
|
|
71
|
+
value.checkpoint.stack !== stack ||
|
|
72
|
+
!object(value.checkpoint.latest))
|
|
73
|
+
refuse('the checkpoint format or exact stack identity differs');
|
|
74
|
+
for (const field of ['resources', 'pending_operations']) {
|
|
75
|
+
const entries = value.checkpoint.latest[field];
|
|
76
|
+
// The native serializer omits empty collections after complete removal.
|
|
77
|
+
if (entries !== undefined && !Array.isArray(entries))
|
|
78
|
+
refuse('the checkpoint collections are malformed');
|
|
79
|
+
if (Array.isArray(entries) && entries.length > 0)
|
|
80
|
+
refuse(`${entries.length} ${field === 'resources' ? 'resource records' : 'pending operations'} remain; preserve native diagnostics and resolve the interrupted operation before retrying task cleanup`);
|
|
81
|
+
}
|
|
82
|
+
const current = await s3.send(new client_s3_1.HeadObjectCommand({ ...owner, Key: key, IfMatch: result.ETag }), { abortSignal: signal });
|
|
83
|
+
if (current.VersionId !== result.VersionId || current.ETag !== result.ETag)
|
|
84
|
+
refuse('the checkpoint changed during verification');
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
if (error instanceof NativeTaskCheckpointError)
|
|
88
|
+
throw error;
|
|
89
|
+
refuse('the required checkpoint read or validation failed');
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=task-stack-checkpoint.js.map
|
|
@@ -87,7 +87,7 @@ const executor = async (options, context) => {
|
|
|
87
87
|
try {
|
|
88
88
|
const command = fleetExecutorCommand(options);
|
|
89
89
|
const plan = await (0, nx_workspace_js_1.loadWorkspaceFleetPlan)();
|
|
90
|
-
const identity = (0, personal_stage_js_1.createPersonalStageResolver)().resolve();
|
|
90
|
+
const identity = (0, personal_stage_js_1.createPersonalStageResolver)().resolve(context.root);
|
|
91
91
|
const gitCommonDirectory = (0, fleet_launcher_js_1.resolveGitCommonDirectory)(context.root);
|
|
92
92
|
const saved = (0, local_context_js_1.readSavedLocalDevContext)(gitCommonDirectory);
|
|
93
93
|
if (saved.kind === 'invalid') {
|
|
@@ -6,7 +6,7 @@ const discovery_js_1 = require("../../foundation/discovery.js");
|
|
|
6
6
|
const stages_js_1 = require("../../foundation/stages.js");
|
|
7
7
|
const index_js_1 = require("../../repository-policy/index.js");
|
|
8
8
|
const run_sst_command_js_1 = require("../sst-lifecycle/run-sst-command.js");
|
|
9
|
-
async function deployFoundation(options, context, foundationStage) {
|
|
9
|
+
async function deployFoundation(options, context, foundationStage, region) {
|
|
10
10
|
const project = options.foundationProject?.trim() || 'foundation';
|
|
11
11
|
const root = context.projectsConfigurations?.projects[project]?.root;
|
|
12
12
|
if (!root) {
|
|
@@ -16,7 +16,11 @@ async function deployFoundation(options, context, foundationStage) {
|
|
|
16
16
|
devkit_1.logger.info(`[foundation-preflight] deploying ${project} at canonical stage ${foundationStage}.`);
|
|
17
17
|
const result = await (0, run_sst_command_js_1.runSstCommand)('deploy', {
|
|
18
18
|
cwd: root,
|
|
19
|
+
...(options.expectedRoleArn?.trim()
|
|
20
|
+
? { expectedRoleArn: options.expectedRoleArn.trim() }
|
|
21
|
+
: {}),
|
|
19
22
|
...(options.profile?.trim() ? { profile: options.profile.trim() } : {}),
|
|
23
|
+
region,
|
|
20
24
|
stage: foundationStage,
|
|
21
25
|
stageMode: 'foundation',
|
|
22
26
|
}, { ...context, projectName: project });
|
|
@@ -78,7 +82,7 @@ const executor = async (options, context) => {
|
|
|
78
82
|
devkit_1.logger.error(`[foundation-preflight] ${stages.foundationStage} Foundation is absent. Protected workflows must run the Foundation target and its profile capability preflight before Product Slices; Foundation auto-deploy is disabled for protected stages.`);
|
|
79
83
|
return { success: false };
|
|
80
84
|
}
|
|
81
|
-
const deployed = await deployFoundation(options, context, stages.foundationStage);
|
|
85
|
+
const deployed = await deployFoundation(options, context, stages.foundationStage, region);
|
|
82
86
|
if (!deployed)
|
|
83
87
|
return { success: false };
|
|
84
88
|
report = await (0, preflight_js_1.evaluateFoundationPreflight)({
|
|
@@ -17,6 +17,11 @@
|
|
|
17
17
|
},
|
|
18
18
|
"region": { "type": "string" },
|
|
19
19
|
"profile": { "type": "string" },
|
|
20
|
+
"expectedRoleArn": {
|
|
21
|
+
"type": "string",
|
|
22
|
+
"pattern": "^arn:(aws|aws-us-gov|aws-cn):iam::[0-9]{12}:role/[A-Za-z0-9+=,.@_/-]{1,512}$",
|
|
23
|
+
"description": "Exact temporary-session IAM role expected for local governed deployment. This is verified against STS before mutation."
|
|
24
|
+
},
|
|
20
25
|
"contract": { "type": "string", "default": "^1.0.0" },
|
|
21
26
|
"capabilities": {
|
|
22
27
|
"type": "array",
|
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
import { type PromiseExecutor } from '@nx/devkit';
|
|
2
|
+
import { type ProductionDatabaseSafeguardReader } from './production-database-safeguard.js';
|
|
2
3
|
interface FoundationProfilePreflightOptions {
|
|
4
|
+
expectedRoleArn?: string;
|
|
3
5
|
profile?: string;
|
|
4
6
|
region?: string;
|
|
5
7
|
stage: string;
|
|
6
8
|
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
+
export interface FoundationProfilePreflightDependencies {
|
|
10
|
+
createProductionDatabaseReader?: (options: {
|
|
11
|
+
profile?: string;
|
|
12
|
+
region: string;
|
|
13
|
+
stage: 'production';
|
|
14
|
+
}) => ProductionDatabaseSafeguardReader;
|
|
15
|
+
now?: () => Date;
|
|
16
|
+
}
|
|
17
|
+
export declare function createFoundationProfilePreflightExecutor(dependencies?: FoundationProfilePreflightDependencies): PromiseExecutor<FoundationProfilePreflightOptions>;
|
|
18
|
+
declare const _default: PromiseExecutor<FoundationProfilePreflightOptions>;
|
|
19
|
+
export default _default;
|