@empire-builder-kit/nx 1.0.0-rc.4 → 1.0.0-rc.40
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 +18 -0
- 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.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 +6 -0
- package/src/cli/deploy-runtime.js +58 -0
- package/src/cli/dev-command.d.ts +16 -4
- package/src/cli/dev-command.js +63 -0
- package/src/cli/main.d.ts +9 -1
- package/src/cli/main.js +139 -20
- package/src/cli/output.d.ts +1 -1
- package/src/cli/output.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 +5 -0
- package/src/developer-agent/operation-registry.js +286 -40
- package/src/developer-agent/planning.js +16 -13
- 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 +162 -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 +40 -6
- package/src/executors/sst-lifecycle/run-sst-command.js +779 -70
- 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/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/tool-versions.d.ts +2 -0
- package/src/generators/preset/tool-versions.js +3 -1
- package/src/generators/preset/workspace-files-adopter-skills.d.ts +7 -0
- package/src/generators/preset/workspace-files-adopter-skills.js +303 -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 +90 -28
- 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-stage-authority.d.ts +6 -0
- package/src/generators/preset/workspace-files-stage-authority.js +518 -0
- package/src/generators/preset/workspace-files-thin-deploy.d.ts +55 -0
- package/src/generators/preset/workspace-files-thin-deploy.js +2473 -0
- package/src/generators/preset/workspace-files-thin-docs.d.ts +7 -0
- package/src/generators/preset/workspace-files-thin-docs.js +352 -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 +1504 -608
- 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 +42 -7
- 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 +92 -329
- package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js +60 -2
- 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 +163 -1196
- 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 +20 -1
- 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 +7 -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 -729
- package/src/generators/slice/built-in-plan-infrastructure-safety-files.js +67 -11
- 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 +157 -28
- 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 +279 -43
- 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-files.d.ts +2 -0
- package/src/generators/slice/built-in-plan-testing-persistence-files.js +178 -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 +80 -29
- 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/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 +39 -8
- package/src/git-policy/github-bootstrap.js +329 -175
- 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 +46 -18
- 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 +14 -2
- 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/registry.d.ts +2 -1
- package/src/secrets/registry.js +18 -1
- package/src/secrets/verification.js +9 -1
- 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
|
@@ -36,6 +36,13 @@ exports.DIRECT_WORKLOAD_ROLE_IAM_MUTATION_ACTIONS = [
|
|
|
36
36
|
'iam:UpdateRole',
|
|
37
37
|
'iam:UpdateRoleDescription',
|
|
38
38
|
];
|
|
39
|
+
const EXACT_WORKLOAD_ROLE_OBSERVATION_ACTIONS = [
|
|
40
|
+
'iam:GetInstanceProfile',
|
|
41
|
+
'iam:GetRole',
|
|
42
|
+
'iam:GetRolePolicy',
|
|
43
|
+
'iam:ListAttachedRolePolicies',
|
|
44
|
+
'iam:ListRolePolicies',
|
|
45
|
+
];
|
|
39
46
|
function compareStrings(left, right) {
|
|
40
47
|
return left < right ? -1 : left > right ? 1 : 0;
|
|
41
48
|
}
|
|
@@ -63,11 +70,48 @@ function createPassRoleStatements(registry) {
|
|
|
63
70
|
sid: `PassRegisteredWorkloadRoles${index + 1}`,
|
|
64
71
|
}));
|
|
65
72
|
}
|
|
73
|
+
function createRoleObservationStatements(registry) {
|
|
74
|
+
const roles = registry.manifest.roles.map((declaration) => registry.resolve(declaration.id));
|
|
75
|
+
const statements = [
|
|
76
|
+
{
|
|
77
|
+
actions: [
|
|
78
|
+
'iam:GetRole',
|
|
79
|
+
'iam:GetRolePolicy',
|
|
80
|
+
'iam:ListAttachedRolePolicies',
|
|
81
|
+
'iam:ListRolePolicies',
|
|
82
|
+
],
|
|
83
|
+
effect: 'Allow',
|
|
84
|
+
resources: roles.map(({ roleArn }) => roleArn).sort(compareStrings),
|
|
85
|
+
sid: 'ObserveRegisteredWorkloadRoles',
|
|
86
|
+
},
|
|
87
|
+
];
|
|
88
|
+
const instanceProfileArns = roles
|
|
89
|
+
.filter(({ surface }) => surface === 'foundation-nat-instance')
|
|
90
|
+
.map(({ roleArn, roleName }) => {
|
|
91
|
+
const suffix = `:role/${roleName}`;
|
|
92
|
+
if (!roleArn.endsWith(suffix)) {
|
|
93
|
+
throw new Error(`Registered NAT role ${roleName} has an invalid exact role ARN.`);
|
|
94
|
+
}
|
|
95
|
+
return `${roleArn.slice(0, -suffix.length)}:instance-profile/${roleName}-profile`;
|
|
96
|
+
})
|
|
97
|
+
.sort(compareStrings);
|
|
98
|
+
if (instanceProfileArns.length > 0) {
|
|
99
|
+
statements.push({
|
|
100
|
+
actions: ['iam:GetInstanceProfile'],
|
|
101
|
+
effect: 'Allow',
|
|
102
|
+
resources: instanceProfileArns,
|
|
103
|
+
sid: 'ObserveRegisteredNatInstanceProfiles',
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
return statements;
|
|
107
|
+
}
|
|
66
108
|
/**
|
|
67
109
|
* Stable ordinary deployment-role authority. It can read exact protected
|
|
68
110
|
* registration objects, invoke and observe only the fixed qualified
|
|
69
111
|
* provisioner, and pass exact registered roles to their declared AWS services.
|
|
70
|
-
* It
|
|
112
|
+
* It exposes only exact read authority needed by Pulumi to import the already
|
|
113
|
+
* provisioned roles and NAT instance profiles. It exposes no direct IAM
|
|
114
|
+
* mutation surface.
|
|
71
115
|
*/
|
|
72
116
|
function createDeploymentRoleAuthorityPlan(registry, registrationReadScope) {
|
|
73
117
|
return {
|
|
@@ -78,6 +122,7 @@ function createDeploymentRoleAuthorityPlan(registry, registrationReadScope) {
|
|
|
78
122
|
resources: ['*'],
|
|
79
123
|
sid: 'DenyDirectWorkloadIamMutation',
|
|
80
124
|
},
|
|
125
|
+
...createRoleObservationStatements(registry),
|
|
81
126
|
{
|
|
82
127
|
actions: ['lambda:InvokeFunction'],
|
|
83
128
|
effect: 'Allow',
|
|
@@ -141,6 +186,7 @@ function validateDeploymentRoleAuthorityPlan(registry, value, registrationReadSc
|
|
|
141
186
|
if (typeof action !== 'string' ||
|
|
142
187
|
(action.startsWith('iam:') &&
|
|
143
188
|
action !== 'iam:PassRole' &&
|
|
189
|
+
!EXACT_WORKLOAD_ROLE_OBSERVATION_ACTIONS.includes(action) &&
|
|
144
190
|
(!('effect' in statement) || statement.effect !== 'Deny'))) {
|
|
145
191
|
issues.push(`ordinary deployment authority contains forbidden IAM action ${String(action)}`);
|
|
146
192
|
}
|
|
@@ -149,7 +195,7 @@ function validateDeploymentRoleAuthorityPlan(registry, value, registrationReadSc
|
|
|
149
195
|
const expected = createDeploymentRoleAuthorityPlan(registry, registrationReadScope);
|
|
150
196
|
if (canonicalPlan(value) !==
|
|
151
197
|
canonicalPlan(expected)) {
|
|
152
|
-
issues.push('authority plan does not exactly match
|
|
198
|
+
issues.push('authority plan does not exactly match fixed provisioner, exact observation, and registered PassRole authority');
|
|
153
199
|
}
|
|
154
200
|
return { issues, valid: issues.length === 0 };
|
|
155
201
|
}
|
|
@@ -28,6 +28,7 @@ function requireS3Sdk(value) {
|
|
|
28
28
|
return {
|
|
29
29
|
DeleteObjectCommand: requireConstructor(value.DeleteObjectCommand, 'DeleteObjectCommand'),
|
|
30
30
|
GetObjectCommand: requireConstructor(value.GetObjectCommand, 'GetObjectCommand'),
|
|
31
|
+
ListObjectsV2Command: requireConstructor(value.ListObjectsV2Command, 'ListObjectsV2Command'),
|
|
31
32
|
PutObjectCommand: requireConstructor(value.PutObjectCommand, 'PutObjectCommand'),
|
|
32
33
|
S3Client: requireConstructor(value.S3Client, 'S3Client'),
|
|
33
34
|
};
|
|
@@ -61,6 +62,32 @@ async function createAwsSdkV3S3JsonControlPlane(options = {}) {
|
|
|
61
62
|
}));
|
|
62
63
|
},
|
|
63
64
|
async getJson(input) {
|
|
65
|
+
const listed = await client.send(new sdk.ListObjectsV2Command({
|
|
66
|
+
Bucket: input.bucketName,
|
|
67
|
+
MaxKeys: 1,
|
|
68
|
+
Prefix: input.key,
|
|
69
|
+
}));
|
|
70
|
+
if (!isRecord(listed)) {
|
|
71
|
+
throw new Error('AWS S3 exact-key listing response is malformed.');
|
|
72
|
+
}
|
|
73
|
+
if (listed.Contents === undefined) {
|
|
74
|
+
if (listed.KeyCount === 0 && listed.IsTruncated === false) {
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
throw new Error('AWS S3 exact-key listing response is malformed.');
|
|
78
|
+
}
|
|
79
|
+
if (!Array.isArray(listed.Contents) ||
|
|
80
|
+
listed.Contents.length !== 1 ||
|
|
81
|
+
listed.KeyCount !== 1 ||
|
|
82
|
+
listed.IsTruncated !== false) {
|
|
83
|
+
throw new Error('AWS S3 exact-key listing response is malformed.');
|
|
84
|
+
}
|
|
85
|
+
const first = listed.Contents[0];
|
|
86
|
+
if (!isRecord(first) || typeof first.Key !== 'string') {
|
|
87
|
+
throw new Error('AWS S3 exact-key listing entry is malformed.');
|
|
88
|
+
}
|
|
89
|
+
if (first.Key !== input.key)
|
|
90
|
+
return undefined;
|
|
64
91
|
let response;
|
|
65
92
|
try {
|
|
66
93
|
response = await client.send(new sdk.GetObjectCommand({
|
|
@@ -10,7 +10,7 @@ export interface WorkloadRoleBoundaryContract {
|
|
|
10
10
|
partition: 'aws' | 'aws-cn' | 'aws-us-gov';
|
|
11
11
|
path: string;
|
|
12
12
|
policy: CanonicalIamPolicyDocument;
|
|
13
|
-
policyName:
|
|
13
|
+
policyName: string;
|
|
14
14
|
stage: string;
|
|
15
15
|
}
|
|
16
16
|
export type WorkloadRoleBoundaryFailureClassification = 'boundary-identity-invalid' | 'boundary-policy-incomplete' | 'boundary-substitution';
|
|
@@ -19,6 +19,7 @@ export declare class WorkloadRoleBoundaryContractError extends Error {
|
|
|
19
19
|
constructor(classification: WorkloadRoleBoundaryFailureClassification, message: string);
|
|
20
20
|
}
|
|
21
21
|
export declare function workloadRoleBoundaryPath(stage: string): string;
|
|
22
|
+
export declare function workloadRoleBoundaryPolicyName(stage: string): string;
|
|
22
23
|
export declare function workloadRoleBoundaryArn(options: {
|
|
23
24
|
accountId: string;
|
|
24
25
|
partition: string;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WorkloadRoleBoundaryContractError = exports.WORKLOAD_ROLE_BOUNDARY_DENIED_ACTIONS = exports.WORKLOAD_ROLE_BOUNDARY_POLICY_NAME = exports.WORKLOAD_ROLE_BOUNDARY_POLICY_PATH = void 0;
|
|
4
4
|
exports.workloadRoleBoundaryPath = workloadRoleBoundaryPath;
|
|
5
|
+
exports.workloadRoleBoundaryPolicyName = workloadRoleBoundaryPolicyName;
|
|
5
6
|
exports.workloadRoleBoundaryArn = workloadRoleBoundaryArn;
|
|
6
7
|
exports.createWorkloadRoleBoundaryContract = createWorkloadRoleBoundaryContract;
|
|
7
8
|
const node_crypto_1 = require("node:crypto");
|
|
@@ -61,9 +62,15 @@ function workloadRoleBoundaryPath(stage) {
|
|
|
61
62
|
}
|
|
62
63
|
return `${exports.WORKLOAD_ROLE_BOUNDARY_POLICY_PATH}/${stage}/`;
|
|
63
64
|
}
|
|
65
|
+
function workloadRoleBoundaryPolicyName(stage) {
|
|
66
|
+
if (!stagePattern.test(stage)) {
|
|
67
|
+
throw new WorkloadRoleBoundaryContractError('boundary-identity-invalid', `Workload-role boundary stage ${stage} is not normalized.`);
|
|
68
|
+
}
|
|
69
|
+
return `${exports.WORKLOAD_ROLE_BOUNDARY_POLICY_NAME}-${stage}`;
|
|
70
|
+
}
|
|
64
71
|
function workloadRoleBoundaryArn(options) {
|
|
65
72
|
const identity = requireIdentity(options);
|
|
66
|
-
return `arn:${identity.partition}:iam::${identity.accountId}:policy${workloadRoleBoundaryPath(identity.stage)}${
|
|
73
|
+
return `arn:${identity.partition}:iam::${identity.accountId}:policy${workloadRoleBoundaryPath(identity.stage)}${workloadRoleBoundaryPolicyName(identity.stage)}`;
|
|
67
74
|
}
|
|
68
75
|
function boundaryAllowStatements(manifest, bundle) {
|
|
69
76
|
const statements = [];
|
|
@@ -123,7 +130,7 @@ function createWorkloadRoleBoundaryContract(options) {
|
|
|
123
130
|
partition: identity.partition,
|
|
124
131
|
path: workloadRoleBoundaryPath(identity.stage),
|
|
125
132
|
policy,
|
|
126
|
-
policyName:
|
|
133
|
+
policyName: workloadRoleBoundaryPolicyName(identity.stage),
|
|
127
134
|
stage: identity.stage,
|
|
128
135
|
};
|
|
129
136
|
}
|
|
@@ -66,7 +66,7 @@ function operationCounts(operationKinds) {
|
|
|
66
66
|
update: operationKinds.filter((kind) => kind === 'update').length,
|
|
67
67
|
};
|
|
68
68
|
}
|
|
69
|
-
function failureClassification(error) {
|
|
69
|
+
function failureClassification(error, internalClassification) {
|
|
70
70
|
if (typeof error === 'object' &&
|
|
71
71
|
error !== null &&
|
|
72
72
|
'classification' in error &&
|
|
@@ -74,7 +74,15 @@ function failureClassification(error) {
|
|
|
74
74
|
failureClassifications.has(error.classification)) {
|
|
75
75
|
return error.classification;
|
|
76
76
|
}
|
|
77
|
-
return
|
|
77
|
+
return internalClassification;
|
|
78
|
+
}
|
|
79
|
+
function failureResult(error, internalClassification) {
|
|
80
|
+
return {
|
|
81
|
+
classification: failureClassification(error, internalClassification),
|
|
82
|
+
ok: false,
|
|
83
|
+
protocolVersion: provisioner_js_1.FIXED_WORKLOAD_ROLE_PROVISIONER_PROTOCOL_VERSION,
|
|
84
|
+
resultSchemaVersion: exports.FIXED_WORKLOAD_ROLE_PROVISIONER_RESULT_SCHEMA_VERSION,
|
|
85
|
+
};
|
|
78
86
|
}
|
|
79
87
|
/**
|
|
80
88
|
* Creates the fixed Lambda handler. Its registered-manifest source and IAM
|
|
@@ -84,47 +92,67 @@ function failureClassification(error) {
|
|
|
84
92
|
*/
|
|
85
93
|
function createFixedWorkloadRoleProvisionerHandler(options) {
|
|
86
94
|
return async (request) => {
|
|
95
|
+
let loaded;
|
|
87
96
|
try {
|
|
88
|
-
|
|
97
|
+
loaded = await (0, registration_js_1.loadFixedWorkloadRoleProvisionerRequest)({
|
|
89
98
|
request,
|
|
90
99
|
source: options.source,
|
|
91
100
|
});
|
|
92
|
-
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
return failureResult(error, 'fixed-provisioner-source-load-error');
|
|
104
|
+
}
|
|
105
|
+
let history;
|
|
106
|
+
try {
|
|
107
|
+
history = await options.state.loadHistory();
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
return failureResult(error, 'fixed-provisioner-history-load-error');
|
|
111
|
+
}
|
|
112
|
+
let result;
|
|
113
|
+
let provisionedRegistration;
|
|
114
|
+
try {
|
|
115
|
+
result = await (0, provisioner_js_1.executeFixedWorkloadRoleProvisioner)({
|
|
93
116
|
adapter: options.adapter,
|
|
94
117
|
boundary: loaded.boundary,
|
|
95
|
-
history
|
|
118
|
+
history,
|
|
96
119
|
intentsByRole: loaded.document.intentsByRole,
|
|
97
120
|
manifest: loaded.document.manifest,
|
|
98
121
|
provisionerFunctionArn: loaded.document.provisionerFunctionArn,
|
|
99
122
|
registration: loaded.registration,
|
|
100
123
|
request: loaded.request,
|
|
101
124
|
});
|
|
102
|
-
|
|
125
|
+
provisionedRegistration = result.registration
|
|
103
126
|
? sanitizedRegistration(result.registration)
|
|
104
127
|
: undefined;
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
return failureResult(error, 'fixed-provisioner-convergence-error');
|
|
131
|
+
}
|
|
132
|
+
try {
|
|
105
133
|
await options.state.saveHistory(result.history);
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
return failureResult(error, 'fixed-provisioner-history-save-error');
|
|
137
|
+
}
|
|
138
|
+
try {
|
|
106
139
|
await options.state.saveProvisionedRegistration(provisionedRegistration);
|
|
107
|
-
return {
|
|
108
|
-
candidateIdentity: loaded.document.manifest.candidate.identity,
|
|
109
|
-
historyDigest: result.historyDigest,
|
|
110
|
-
manifestDigest: result.manifestDigest,
|
|
111
|
-
ok: true,
|
|
112
|
-
operation: loaded.request.operation,
|
|
113
|
-
operationCounts: operationCounts(result.operationKinds),
|
|
114
|
-
protocolVersion: result.protocolVersion,
|
|
115
|
-
...(provisionedRegistration ? { provisionedRegistration } : {}),
|
|
116
|
-
resultSchemaVersion: exports.FIXED_WORKLOAD_ROLE_PROVISIONER_RESULT_SCHEMA_VERSION,
|
|
117
|
-
stage: loaded.document.manifest.candidate.stage,
|
|
118
|
-
};
|
|
119
140
|
}
|
|
120
141
|
catch (error) {
|
|
121
|
-
return
|
|
122
|
-
classification: failureClassification(error),
|
|
123
|
-
ok: false,
|
|
124
|
-
protocolVersion: provisioner_js_1.FIXED_WORKLOAD_ROLE_PROVISIONER_PROTOCOL_VERSION,
|
|
125
|
-
resultSchemaVersion: exports.FIXED_WORKLOAD_ROLE_PROVISIONER_RESULT_SCHEMA_VERSION,
|
|
126
|
-
};
|
|
142
|
+
return failureResult(error, 'fixed-provisioner-registration-save-error');
|
|
127
143
|
}
|
|
144
|
+
return {
|
|
145
|
+
candidateIdentity: loaded.document.manifest.candidate.identity,
|
|
146
|
+
historyDigest: result.historyDigest,
|
|
147
|
+
manifestDigest: result.manifestDigest,
|
|
148
|
+
ok: true,
|
|
149
|
+
operation: loaded.request.operation,
|
|
150
|
+
operationCounts: operationCounts(result.operationKinds),
|
|
151
|
+
protocolVersion: result.protocolVersion,
|
|
152
|
+
...(provisionedRegistration ? { provisionedRegistration } : {}),
|
|
153
|
+
resultSchemaVersion: exports.FIXED_WORKLOAD_ROLE_PROVISIONER_RESULT_SCHEMA_VERSION,
|
|
154
|
+
stage: loaded.document.manifest.candidate.stage,
|
|
155
|
+
};
|
|
128
156
|
};
|
|
129
157
|
}
|
|
130
158
|
//# sourceMappingURL=handler.js.map
|
|
@@ -1,17 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export
|
|
10
|
-
export
|
|
11
|
-
export * from './history.js';
|
|
12
|
-
export * from './injection.js';
|
|
13
|
-
export * from './manifest.js';
|
|
14
|
-
export * from './provisioner.js';
|
|
15
|
-
export * from './registration.js';
|
|
16
|
-
export * from './standard-slice.js';
|
|
17
|
-
export * from './stage-boundary.js';
|
|
1
|
+
/**
|
|
2
|
+
* Runtime-intent helpers used by SST-owned workload role creation.
|
|
3
|
+
*
|
|
4
|
+
* Candidate-bound manifests, provisioners, registrations, convergence, and
|
|
5
|
+
* AWS control-plane adapters are intentionally not public in the thin
|
|
6
|
+
* lifecycle. Native SST creates the roles; generated infrastructure consumes
|
|
7
|
+
* only this topology and permission-intent surface.
|
|
8
|
+
*/
|
|
9
|
+
export type { WorkloadRolePermissionIntent } from './effective-policy.js';
|
|
10
|
+
export { STANDARD_SLICE_WORKLOAD_EXTENSION_KINDS, StandardSliceWorkloadRoleError, createStandardSliceWorkloadRoleTopology, type StandardSliceServiceAdapterMetadata, type StandardSliceWorkloadExtension, type StandardSliceWorkloadExtensionKind, type StandardSliceWorkloadRoleFailureClassification, type StandardSliceWorkloadRoleTopology, type StandardSliceWorkloadRoleTopologyEntry, } from './standard-slice.js';
|
|
@@ -1,21 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
tslib_1.__exportStar(require("./account-baseline.js"), exports);
|
|
9
|
-
tslib_1.__exportStar(require("./authority.js"), exports);
|
|
10
|
-
tslib_1.__exportStar(require("./boundary.js"), exports);
|
|
11
|
-
tslib_1.__exportStar(require("./convergence.js"), exports);
|
|
12
|
-
tslib_1.__exportStar(require("./effective-policy.js"), exports);
|
|
13
|
-
tslib_1.__exportStar(require("./handler.js"), exports);
|
|
14
|
-
tslib_1.__exportStar(require("./history.js"), exports);
|
|
15
|
-
tslib_1.__exportStar(require("./injection.js"), exports);
|
|
16
|
-
tslib_1.__exportStar(require("./manifest.js"), exports);
|
|
17
|
-
tslib_1.__exportStar(require("./provisioner.js"), exports);
|
|
18
|
-
tslib_1.__exportStar(require("./registration.js"), exports);
|
|
19
|
-
tslib_1.__exportStar(require("./standard-slice.js"), exports);
|
|
20
|
-
tslib_1.__exportStar(require("./stage-boundary.js"), exports);
|
|
3
|
+
exports.createStandardSliceWorkloadRoleTopology = exports.StandardSliceWorkloadRoleError = exports.STANDARD_SLICE_WORKLOAD_EXTENSION_KINDS = void 0;
|
|
4
|
+
var standard_slice_js_1 = require("./standard-slice.js");
|
|
5
|
+
Object.defineProperty(exports, "STANDARD_SLICE_WORKLOAD_EXTENSION_KINDS", { enumerable: true, get: function () { return standard_slice_js_1.STANDARD_SLICE_WORKLOAD_EXTENSION_KINDS; } });
|
|
6
|
+
Object.defineProperty(exports, "StandardSliceWorkloadRoleError", { enumerable: true, get: function () { return standard_slice_js_1.StandardSliceWorkloadRoleError; } });
|
|
7
|
+
Object.defineProperty(exports, "createStandardSliceWorkloadRoleTopology", { enumerable: true, get: function () { return standard_slice_js_1.createStandardSliceWorkloadRoleTopology; } });
|
|
21
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -325,7 +325,7 @@ const ECS_CONTAINER_NAME_PATTERN = /^[A-Za-z0-9_-]{1,255}$/;
|
|
|
325
325
|
const JSONATA_DELIMITER_PATTERN = /{%|%}/;
|
|
326
326
|
const ECS_RUN_TASK_SYNC_RESOURCE = 'arn:aws:states:::ecs:runTask.sync';
|
|
327
327
|
const ECS_RUN_TASK_CALLBACK_RESOURCE = 'arn:aws:states:::ecs:runTask.waitForTaskToken';
|
|
328
|
-
const DATABASE_LIFECYCLE_CORRELATION_EXPRESSION = '{% $states.
|
|
328
|
+
const DATABASE_LIFECYCLE_CORRELATION_EXPRESSION = '{% $states.context.Execution.Input.databaseLifecycleCorrelationId %}';
|
|
329
329
|
const TASK_TOKEN_EXPRESSION = '{% $states.context.Task.Token %}';
|
|
330
330
|
/**
|
|
331
331
|
* Validates only the two bounded raw graphs emitted by the v1 generator. This is
|
|
@@ -98,16 +98,12 @@ async function applyOperation(adapter, operation, mutation) {
|
|
|
98
98
|
if (!mutation) {
|
|
99
99
|
throw new FixedWorkloadRoleProvisionerError('provisioner-result-substitution', 'A create or update operation is missing its fixed registered mutation.');
|
|
100
100
|
}
|
|
101
|
-
const profile = natProfile(declaration);
|
|
102
101
|
if (operation.kind === 'create') {
|
|
103
102
|
await adapter.create(mutation);
|
|
104
103
|
}
|
|
105
104
|
else {
|
|
106
105
|
await adapter.update(mutation, operation.before);
|
|
107
106
|
}
|
|
108
|
-
if (profile) {
|
|
109
|
-
await adapter.ensureNatInstanceProfile(profile);
|
|
110
|
-
}
|
|
111
107
|
}
|
|
112
108
|
async function executeFixedWorkloadRoleProvisioner(options) {
|
|
113
109
|
const manifest = (0, manifest_js_1.canonicalizeWorkloadRoleManifest)(options.manifest);
|
|
@@ -180,6 +176,18 @@ async function executeFixedWorkloadRoleProvisioner(options) {
|
|
|
180
176
|
for (const operation of retirementPlan?.operations ?? []) {
|
|
181
177
|
await applyOperation(options.adapter, operation);
|
|
182
178
|
}
|
|
179
|
+
if (options.request.operation === 'converge') {
|
|
180
|
+
// The role convergence plan can be empty on a retry after a prior attempt
|
|
181
|
+
// created the role but failed while attaching its NAT instance profile.
|
|
182
|
+
// Reconcile every derived profile independently of role mutations so a
|
|
183
|
+
// successful no-op retry cannot publish an incomplete runtime identity.
|
|
184
|
+
for (const declaration of manifest.roles) {
|
|
185
|
+
const profile = natProfile(declaration);
|
|
186
|
+
if (profile) {
|
|
187
|
+
await options.adapter.ensureNatInstanceProfile(profile);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
183
191
|
const operationKinds = [
|
|
184
192
|
...plan.operations,
|
|
185
193
|
...(retirementPlan?.operations ?? []),
|
|
@@ -35,6 +35,7 @@ export interface WorkloadRoleStorageRegistration {
|
|
|
35
35
|
schemaVersion: typeof WORKLOAD_ROLE_STORAGE_REGISTRATION_SCHEMA_VERSION;
|
|
36
36
|
stage: string;
|
|
37
37
|
}
|
|
38
|
+
export declare function areWorkloadRoleIntentsEquivalent(left: Readonly<Record<string, readonly WorkloadRolePermissionIntent[]>>, right: Readonly<Record<string, readonly WorkloadRolePermissionIntent[]>>): boolean;
|
|
38
39
|
export interface FixedRegisteredManifestSource {
|
|
39
40
|
/**
|
|
40
41
|
* Loads one baseline-selected value. The invocation request cannot supply a
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WorkloadRoleRegistrationError = exports.WORKLOAD_ROLE_STORAGE_REGISTRATION_SCHEMA_VERSION = exports.PROVISIONED_WORKLOAD_ROLE_REGISTRATION_SCHEMA_VERSION = exports.REGISTERED_WORKLOAD_ROLE_MANIFEST_SCHEMA_VERSION = void 0;
|
|
4
|
+
exports.areWorkloadRoleIntentsEquivalent = areWorkloadRoleIntentsEquivalent;
|
|
4
5
|
exports.requireRegisteredWorkloadRoleManifestDocument = requireRegisteredWorkloadRoleManifestDocument;
|
|
5
6
|
exports.createRegisteredWorkloadRoleManifestDocument = createRegisteredWorkloadRoleManifestDocument;
|
|
6
7
|
exports.requireProvisionedWorkloadRoleRegistrationDocument = requireProvisionedWorkloadRoleRegistrationDocument;
|
|
@@ -13,6 +14,7 @@ exports.createWorkloadRoleStorageRegistration = createWorkloadRoleStorageRegistr
|
|
|
13
14
|
exports.loadFixedWorkloadRoleProvisionerRequest = loadFixedWorkloadRoleProvisionerRequest;
|
|
14
15
|
exports.validateWorkloadRolePreflight = validateWorkloadRolePreflight;
|
|
15
16
|
const node_crypto_1 = require("node:crypto");
|
|
17
|
+
const canonical_json_1 = require("@empire-builder-kit/runtime/canonical-json");
|
|
16
18
|
const authority_js_1 = require("./authority.js");
|
|
17
19
|
const boundary_js_1 = require("./boundary.js");
|
|
18
20
|
const convergence_js_1 = require("./convergence.js");
|
|
@@ -31,6 +33,9 @@ class WorkloadRoleRegistrationError extends Error {
|
|
|
31
33
|
}
|
|
32
34
|
}
|
|
33
35
|
exports.WorkloadRoleRegistrationError = WorkloadRoleRegistrationError;
|
|
36
|
+
function areWorkloadRoleIntentsEquivalent(left, right) {
|
|
37
|
+
return (0, canonical_json_1.canonicalJson)(left) === (0, canonical_json_1.canonicalJson)(right);
|
|
38
|
+
}
|
|
34
39
|
const accountPattern = /^\d{12}$/;
|
|
35
40
|
const digestPattern = /^[a-f0-9]{64}$/;
|
|
36
41
|
const identifierPattern = /^(?:[a-z0-9][a-z0-9._-]{0,127}|@[a-z0-9][a-z0-9._-]{0,62}\/[a-z0-9][a-z0-9._-]{0,63})$/;
|
|
@@ -200,7 +200,7 @@ function createStageWorkloadRoleBoundaryContract(options) {
|
|
|
200
200
|
path: (0, boundary_js_1.workloadRoleBoundaryPath)(options.expectedStage),
|
|
201
201
|
policy,
|
|
202
202
|
policyCharacters: serializedPolicy.length,
|
|
203
|
-
policyName: boundary_js_1.
|
|
203
|
+
policyName: (0, boundary_js_1.workloadRoleBoundaryPolicyName)(options.expectedStage),
|
|
204
204
|
projects: expectedProjects,
|
|
205
205
|
stage: options.expectedStage,
|
|
206
206
|
};
|
|
@@ -55,6 +55,7 @@ function baseTopology(slice, databaseIdentifiers) {
|
|
|
55
55
|
role('api-database-health', 'api-route'),
|
|
56
56
|
role('api-database-records', 'api-route'),
|
|
57
57
|
role('api-publish-created', 'api-route'),
|
|
58
|
+
role('async-inbox-cleanup', 'lambda-function'),
|
|
58
59
|
role('async-outbox-relay', 'lambda-function'),
|
|
59
60
|
role('async-provider-worker', 'queue-consumer'),
|
|
60
61
|
role('async-schedule-target', 'lambda-function'),
|
|
@@ -120,9 +121,8 @@ function extensionTopology(slice, extension, ownsProtectedLoadAdapter) {
|
|
|
120
121
|
function createStandardSliceWorkloadRoleTopology(options) {
|
|
121
122
|
const slice = requireIdentifier(options.slice, 'Slice');
|
|
122
123
|
const databaseIdentifiers = options.databaseIdentifiers ?? ['primary'];
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
}
|
|
124
|
+
// An explicit empty declaration is the SQL-free Standard topology. Omitting
|
|
125
|
+
// this field retains the existing relational caller contract.
|
|
126
126
|
for (const identifier of databaseIdentifiers) {
|
|
127
127
|
requireDatabaseIdentifier(identifier);
|
|
128
128
|
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Affected-only native lifecycle selection.
|
|
3
|
+
*
|
|
4
|
+
* A protected deployment may skip Product Slices whose inputs have not changed
|
|
5
|
+
* since the newest successful deployment receipt on the same branch. Declining
|
|
6
|
+
* is always safe: every rule below that cannot prove a project unchanged
|
|
7
|
+
* deploys it, and any governing change (policy, Nx configuration, Foundation
|
|
8
|
+
* contract, framework version) deploys everything.
|
|
9
|
+
*/
|
|
10
|
+
export type LifecycleMode = 'affected' | 'full';
|
|
11
|
+
export type LifecycleProjectDecision = 'deploy' | 'skip-unchanged';
|
|
12
|
+
export interface LifecycleBaseline {
|
|
13
|
+
readonly commit: string;
|
|
14
|
+
readonly runAttempt: string;
|
|
15
|
+
readonly runId: string;
|
|
16
|
+
}
|
|
17
|
+
export interface LifecycleBaselineReceipt {
|
|
18
|
+
readonly children: readonly {
|
|
19
|
+
readonly outcome: string;
|
|
20
|
+
readonly project: string;
|
|
21
|
+
readonly target: string;
|
|
22
|
+
}[];
|
|
23
|
+
readonly frameworkVersion: string;
|
|
24
|
+
readonly outcome: string;
|
|
25
|
+
readonly source: {
|
|
26
|
+
readonly commit: string;
|
|
27
|
+
};
|
|
28
|
+
readonly stage: string;
|
|
29
|
+
}
|
|
30
|
+
export interface LifecycleScope {
|
|
31
|
+
readonly baseline: LifecycleBaseline | null;
|
|
32
|
+
readonly mode: LifecycleMode;
|
|
33
|
+
readonly projects: Readonly<Record<string, LifecycleProjectDecision>>;
|
|
34
|
+
readonly reason: string;
|
|
35
|
+
}
|
|
36
|
+
export interface SelectLifecycleScopeInput {
|
|
37
|
+
/** Projects affected between the baseline commit and the source commit, or
|
|
38
|
+
* null when the affected set could not be computed. */
|
|
39
|
+
readonly affectedProjects: readonly string[] | null;
|
|
40
|
+
readonly baseline: (LifecycleBaseline & {
|
|
41
|
+
readonly receipt: LifecycleBaselineReceipt;
|
|
42
|
+
}) | null;
|
|
43
|
+
/** Governing files changed since the baseline (policy, Nx configuration,
|
|
44
|
+
* Foundation contract). Any entry forces the full lifecycle. */
|
|
45
|
+
readonly changedGoverningFiles: readonly string[];
|
|
46
|
+
readonly frameworkVersion: string;
|
|
47
|
+
readonly orderedProjects: readonly string[];
|
|
48
|
+
readonly requestedMode: LifecycleMode;
|
|
49
|
+
readonly stage: string;
|
|
50
|
+
}
|
|
51
|
+
/** Repository-relative files whose change always forces the full lifecycle. */
|
|
52
|
+
export declare const LIFECYCLE_GOVERNING_FILES: readonly string[];
|
|
53
|
+
export declare function selectLifecycleScope(input: SelectLifecycleScopeInput): LifecycleScope;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LIFECYCLE_GOVERNING_FILES = void 0;
|
|
4
|
+
exports.selectLifecycleScope = selectLifecycleScope;
|
|
5
|
+
/** Repository-relative files whose change always forces the full lifecycle. */
|
|
6
|
+
exports.LIFECYCLE_GOVERNING_FILES = Object.freeze([
|
|
7
|
+
'.ebk/ownership.json',
|
|
8
|
+
'ebk.repository-policy.json',
|
|
9
|
+
'nx.json',
|
|
10
|
+
'packages/foundation/sst.config.ts',
|
|
11
|
+
'pnpm-lock.yaml',
|
|
12
|
+
'pnpm-workspace.yaml',
|
|
13
|
+
]);
|
|
14
|
+
const PROJECT = /^[a-z0-9][a-z0-9-]{0,62}$/u;
|
|
15
|
+
function full(input, reason) {
|
|
16
|
+
return {
|
|
17
|
+
baseline: input.baseline
|
|
18
|
+
? {
|
|
19
|
+
commit: input.baseline.commit,
|
|
20
|
+
runAttempt: input.baseline.runAttempt,
|
|
21
|
+
runId: input.baseline.runId,
|
|
22
|
+
}
|
|
23
|
+
: null,
|
|
24
|
+
mode: 'full',
|
|
25
|
+
projects: Object.fromEntries(input.orderedProjects.map((project) => [project, 'deploy'])),
|
|
26
|
+
reason,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function selectLifecycleScope(input) {
|
|
30
|
+
for (const project of input.orderedProjects) {
|
|
31
|
+
if (!PROJECT.test(project)) {
|
|
32
|
+
throw new Error(`Lifecycle project ${project} is not a normalized name.`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (input.requestedMode === 'full')
|
|
36
|
+
return full(input, 'requested-full');
|
|
37
|
+
const baseline = input.baseline;
|
|
38
|
+
if (!baseline)
|
|
39
|
+
return full(input, 'no-baseline');
|
|
40
|
+
if (baseline.receipt.outcome !== 'succeeded') {
|
|
41
|
+
return full(input, 'baseline-not-succeeded');
|
|
42
|
+
}
|
|
43
|
+
if (baseline.receipt.stage !== input.stage) {
|
|
44
|
+
return full(input, 'baseline-stage-differs');
|
|
45
|
+
}
|
|
46
|
+
if (baseline.receipt.source.commit !== baseline.commit) {
|
|
47
|
+
return full(input, 'baseline-commit-differs');
|
|
48
|
+
}
|
|
49
|
+
if (baseline.receipt.frameworkVersion !== input.frameworkVersion) {
|
|
50
|
+
return full(input, 'framework-version-changed');
|
|
51
|
+
}
|
|
52
|
+
if (input.changedGoverningFiles.length > 0) {
|
|
53
|
+
return full(input, 'governing-files-changed:' +
|
|
54
|
+
[...input.changedGoverningFiles].sort().join(','));
|
|
55
|
+
}
|
|
56
|
+
if (input.affectedProjects === null)
|
|
57
|
+
return full(input, 'affected-unavailable');
|
|
58
|
+
const affected = new Set(input.affectedProjects);
|
|
59
|
+
const succeeded = new Set(baseline.receipt.children
|
|
60
|
+
.filter(({ outcome, target }) => target === 'deploy' && outcome === 'succeeded')
|
|
61
|
+
.map(({ project }) => project));
|
|
62
|
+
const projects = Object.fromEntries(input.orderedProjects.map((project) => [
|
|
63
|
+
project,
|
|
64
|
+
affected.has(project) || !succeeded.has(project)
|
|
65
|
+
? 'deploy'
|
|
66
|
+
: 'skip-unchanged',
|
|
67
|
+
]));
|
|
68
|
+
const deployed = Object.values(projects).filter((decision) => decision === 'deploy').length;
|
|
69
|
+
return {
|
|
70
|
+
baseline: {
|
|
71
|
+
commit: baseline.commit,
|
|
72
|
+
runAttempt: baseline.runAttempt,
|
|
73
|
+
runId: baseline.runId,
|
|
74
|
+
},
|
|
75
|
+
mode: 'affected',
|
|
76
|
+
projects,
|
|
77
|
+
reason: deployed === input.orderedProjects.length
|
|
78
|
+
? 'affected:all'
|
|
79
|
+
: deployed === 0
|
|
80
|
+
? 'affected:none'
|
|
81
|
+
: 'affected',
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=affected-lifecycle.js.map
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WORKSPACE_DEPLOYMENT_ID_PATTERN = void 0;
|
|
4
|
+
exports.createWorkspaceDeploymentId = createWorkspaceDeploymentId;
|
|
5
|
+
exports.normalizeWorkspaceDeploymentId = normalizeWorkspaceDeploymentId;
|
|
6
|
+
const node_crypto_1 = require("node:crypto");
|
|
7
|
+
exports.WORKSPACE_DEPLOYMENT_ID_PATTERN = /^ebkws-[a-f0-9]{32}$/u;
|
|
8
|
+
function createWorkspaceDeploymentId(createUuid = node_crypto_1.randomUUID) {
|
|
9
|
+
const uuid = createUuid();
|
|
10
|
+
if (!/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$/u.test(uuid)) {
|
|
11
|
+
throw new Error('Workspace deployment identity generation requires one lowercase UUIDv4.');
|
|
12
|
+
}
|
|
13
|
+
return `ebkws-${uuid.replace(/-/g, '')}`;
|
|
14
|
+
}
|
|
15
|
+
function normalizeWorkspaceDeploymentId(value) {
|
|
16
|
+
if (typeof value !== 'string' ||
|
|
17
|
+
!exports.WORKSPACE_DEPLOYMENT_ID_PATTERN.test(value)) {
|
|
18
|
+
throw new Error('Workspace deployment ID must be ebkws- followed by exactly 128 bits of lowercase hexadecimal identity.');
|
|
19
|
+
}
|
|
20
|
+
return value;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=identity.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./affected-lifecycle.js"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./identity.js"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./migration.js"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./ownership.js"), exports);
|
|
8
|
+
//# sourceMappingURL=index.js.map
|