@empire-builder-kit/nx 1.0.0-rc.38 → 1.0.0-rc.39
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 +5 -0
- package/generators.json +10 -0
- package/package.json +20 -3
- package/src/aws-authority/index.d.ts +1 -0
- package/src/aws-authority/index.js +1 -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 +11 -3
- package/src/aws-authority/stage-authority.js +615 -29
- 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 +7 -1
- package/src/cli/main.js +128 -20
- package/src/cli/output.d.ts +1 -1
- package/src/developer-agent/context.js +41 -9
- package/src/developer-agent/generator-planning.js +16 -2
- 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 +4 -2
- package/src/developer-agent/operation-registry.d.ts +5 -0
- package/src/developer-agent/operation-registry.js +179 -23
- 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 +20 -8
- package/src/developer-agent/workspace-inspection.js +37 -3
- package/src/executors/deployment-plan/deployment-plan.d.ts +2 -0
- package/src/executors/deployment-plan/deployment-plan.js +51 -4
- 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-remove-preflight/foundation-remove-preflight.js +28 -1
- package/src/executors/local-deploy/local-deploy.d.ts +8 -1
- package/src/executors/local-deploy/local-deploy.js +97 -24
- package/src/executors/local-deploy/schema.json +8 -0
- package/src/executors/router-waf-rehearsal/router-waf-rehearsal.js +30 -18
- package/src/executors/sst-lifecycle/governed-native-operation.d.ts +2 -0
- package/src/executors/sst-lifecycle/governed-native-operation.js +9 -0
- package/src/executors/sst-lifecycle/run-sst-command.d.ts +5 -0
- package/src/executors/sst-lifecycle/run-sst-command.js +220 -32
- package/src/executors/sst-lifecycle/sst-environment-source.d.ts +8 -0
- package/src/executors/sst-lifecycle/sst-environment-source.js +54 -0
- package/src/executors/sst-lifecycle/task-unlock.d.ts +15 -0
- package/src/executors/sst-lifecycle/task-unlock.js +126 -0
- 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 +1 -0
- package/src/foundation/index.js +1 -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/preflight.js +37 -18
- package/src/foundation/private-smoke-access.js +10 -2
- package/src/foundation/private-smoke-admission.d.ts +3 -1
- package/src/foundation/private-smoke-admission.js +29 -8
- package/src/foundation/private-smoke-control-plane.js +17 -6
- 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 +13 -8
- package/src/foundation/requirements.d.ts +3 -3
- package/src/foundation/requirements.js +24 -12
- package/src/foundation/router-waf.d.ts +1 -0
- package/src/foundation/router-waf.js +14 -1
- 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.js +24 -1
- package/src/generators/logging-registry.d.ts +2 -0
- package/src/generators/logging-registry.js +22 -0
- package/src/generators/preset/workspace-files-adopter-skills.d.ts +7 -0
- package/src/generators/preset/workspace-files-adopter-skills.js +301 -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.js +40 -13
- package/src/generators/preset/workspace-files-performance-load.js +8 -0
- package/src/generators/preset/workspace-files-stage-authority.js +40 -1
- package/src/generators/preset/workspace-files-thin-deploy.js +66 -34
- package/src/generators/preset/workspace-files-thin-docs.js +64 -18
- package/src/generators/preset/workspace-files.d.ts +4 -0
- package/src/generators/preset/workspace-files.js +159 -91
- package/src/generators/repository-policy/repository-policy.js +37 -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 +47 -389
- package/src/generators/slice/built-in-plan-async-work-files.js +19 -1912
- package/src/generators/slice/built-in-plan-authorization-files.js +92 -329
- package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js +36 -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 +1 -1
- package/src/generators/slice/built-in-plan-background-work-files.js +15 -5
- package/src/generators/slice/built-in-plan-data-deletion-files.js +2 -830
- package/src/generators/slice/built-in-plan-data-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-data-files.js +61 -1164
- 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 +18 -2
- package/src/generators/slice/built-in-plan-data-retention-job-files.js +7 -2446
- package/src/generators/slice/built-in-plan-data-retention-launcher-files.js +30 -6
- package/src/generators/slice/built-in-plan-data-rights-files.js +6 -4482
- package/src/generators/slice/built-in-plan-database-lifecycle-files.js +4 -15
- package/src/generators/slice/built-in-plan-foundation-files.d.ts +2 -1
- package/src/generators/slice/built-in-plan-foundation-files.js +34 -10
- package/src/generators/slice/built-in-plan-frontend-files.js +2 -2
- package/src/generators/slice/built-in-plan-infrastructure-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-infrastructure-files.js +180 -522
- 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 +120 -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 +140 -28
- package/src/generators/slice/built-in-plan-native-runtime-authority-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-native-runtime-authority-files.js +36 -19
- package/src/generators/slice/built-in-plan-operations-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-operations-files.js +89 -50
- package/src/generators/slice/built-in-plan-performance-files.js +84 -1010
- package/src/generators/slice/built-in-plan-project-files.js +116 -67
- package/src/generators/slice/built-in-plan-release-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-release-files.js +64 -15
- package/src/generators/slice/built-in-plan-reliability-files.js +54 -28
- package/src/generators/slice/built-in-plan-shared.d.ts +3 -1
- package/src/generators/slice/built-in-plan-shared.js +40 -18
- package/src/generators/slice/built-in-plan-sql-events.d.ts +2 -0
- package/src/generators/slice/built-in-plan-sql-events.js +257 -0
- package/src/generators/slice/built-in-plan-testing-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-testing-files.js +184 -132
- 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 +1 -1
- package/src/generators/slice/built-in-plan-thin-release-files.js +35 -2
- package/src/generators/slice/built-in-plan-verification-files.js +70 -0
- package/src/generators/slice/built-in-plan-web-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-web-files.js +191 -14
- 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 +113 -274
- package/src/generators/slice/built-in-plan.d.ts +9 -1
- package/src/generators/slice/built-in-plan.js +49 -21
- 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 +29 -24
- 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 +2 -0
- package/src/generators/upgrade/upgrade.js +136 -9
- package/src/generators/workload/workload.js +51 -2
- 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 +6 -0
- package/src/local-dev/private-state.js +126 -34
- 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 +3 -1
- 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/scenario.d.ts +22 -0
- package/src/performance/scenario.js +100 -92
- package/src/repository-policy/deployment-plan.d.ts +2 -2
- package/src/repository-policy/deployment-plan.js +2 -1
- package/src/repository-policy/policy.js +38 -3
- package/src/schemas/blueprint-v1.json +5 -4
- package/src/schemas/foundation-requirement-v1.json +5 -4
- package/src/schemas/testing-evidence-result-v1.json +1 -1
- package/src/secrets/operator.d.ts +3 -1
- package/src/secrets/operator.js +22 -3
- package/src/sst-environment-source-format.d.ts +3 -0
- package/src/sst-environment-source-format.js +20 -0
- package/src/supply-chain/blueprint-trust-git.js +13 -3
- package/src/supply-chain/build-output.js +15 -0
- package/src/supply-chain/generated-blueprint-trust-command.js +18 -1
- 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/standard-slice.js +2 -3
- 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/aws/child-environment.js.map +0 -1
- package/src/aws/identity.js.map +0 -1
- package/src/aws-authority/index.js.map +0 -1
- package/src/aws-authority/stage-authority.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-profile-preflight/production-database-safeguard.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/local-deploy/federated-credential-transport.js.map +0 -1
- package/src/executors/local-deploy/fixtures/local-deploy-state-machine.mjs +0 -53
- package/src/executors/local-deploy/local-approval.js.map +0 -1
- package/src/executors/local-deploy/local-deploy.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/router-waf-rehearsal/router-waf-rehearsal.js.map +0 -1
- package/src/executors/secret-guardrails/secret-guardrails.js.map +0 -1
- package/src/executors/secret-initialize/secret-initialize.js.map +0 -1
- package/src/executors/secret-metadata/secret-metadata.js.map +0 -1
- package/src/executors/sst-lifecycle/generated-secret-retirement.js.map +0 -1
- package/src/executors/sst-lifecycle/governed-native-operation.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/sst-lifecycle/sst-environment-source.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/partial-state.js.map +0 -1
- package/src/foundation/preflight.js.map +0 -1
- package/src/foundation/private-smoke-access.js.map +0 -1
- package/src/foundation/private-smoke-admission.js.map +0 -1
- package/src/foundation/private-smoke-control-plane.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/router-waf-rate-rehearsal.js.map +0 -1
- package/src/foundation/router-waf.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/formatting.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/dependency-overrides.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-ci-acceptance.js.map +0 -1
- package/src/generators/preset/workspace-files-developer-agent.js.map +0 -1
- package/src/generators/preset/workspace-files-ecr-inspector.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-stage-authority.js.map +0 -1
- package/src/generators/preset/workspace-files-thin-deploy.js.map +0 -1
- package/src/generators/preset/workspace-files-thin-docs.js.map +0 -1
- package/src/generators/preset/workspace-files-thin-release.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/repository-policy/tree-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-background-work-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-native-runtime-authority-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-thin-release-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/local-capability.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 -167
- 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/capacity-migration.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/generated-aws-control-plane.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/sst-environment-source-format.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-bounds.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
- package/src/workspace-deployment/affected-lifecycle.js.map +0 -1
- package/src/workspace-deployment/identity.js.map +0 -1
- package/src/workspace-deployment/index.js.map +0 -1
- package/src/workspace-deployment/migration-evidence.js.map +0 -1
- package/src/workspace-deployment/migration.js.map +0 -1
- package/src/workspace-deployment/ownership.js.map +0 -1
|
@@ -10,6 +10,7 @@ const sensitive_patterns_1 = require("@empire-builder-kit/runtime/sensitive-patt
|
|
|
10
10
|
const dependency_overrides_js_1 = require("./dependency-overrides.js");
|
|
11
11
|
const index_js_1 = require("../../ownership/index.js");
|
|
12
12
|
const index_js_2 = require("../../frontend-security/index.js");
|
|
13
|
+
const capability_plan_js_1 = require("../../foundation/capability-plan.js");
|
|
13
14
|
const index_js_3 = require("../../git-policy/index.js");
|
|
14
15
|
const index_js_4 = require("../../repository-policy/index.js");
|
|
15
16
|
const index_js_5 = require("../../release/index.js");
|
|
@@ -18,6 +19,8 @@ const deterministic_order_js_1 = require("../../deterministic-order.js");
|
|
|
18
19
|
const tool_versions_js_1 = require("./tool-versions.js");
|
|
19
20
|
const workspace_files_developer_agent_js_1 = require("./workspace-files-developer-agent.js");
|
|
20
21
|
const workspace_files_ci_acceptance_js_1 = require("./workspace-files-ci-acceptance.js");
|
|
22
|
+
const workspace_files_ci_install_js_1 = require("./workspace-files-ci-install.js");
|
|
23
|
+
const workspace_files_adopter_skills_js_1 = require("./workspace-files-adopter-skills.js");
|
|
21
24
|
const workspace_files_ecr_inspector_js_1 = require("./workspace-files-ecr-inspector.js");
|
|
22
25
|
const workspace_files_thin_deploy_js_1 = require("./workspace-files-thin-deploy.js");
|
|
23
26
|
const workspace_files_thin_docs_js_1 = require("./workspace-files-thin-docs.js");
|
|
@@ -186,7 +189,7 @@ function protectedSecretPolicyDerivationScript() {
|
|
|
186
189
|
return `node --input-type=module <<'NODE'
|
|
187
190
|
import { appendFileSync } from 'node:fs';
|
|
188
191
|
import {
|
|
189
|
-
|
|
192
|
+
configuredDeploymentAccountForStage,
|
|
190
193
|
configuredDeploymentRegion,
|
|
191
194
|
isActiveDeploymentStage,
|
|
192
195
|
readRepositoryOperatingPolicy,
|
|
@@ -203,16 +206,18 @@ if (policy.deploymentProfile !== renderedProfile) {
|
|
|
203
206
|
if (!isActiveDeploymentStage(policy.deploymentProfile, stage)) {
|
|
204
207
|
throw new Error('Secret workflow stage is inactive for the committed deployment profile.');
|
|
205
208
|
}
|
|
206
|
-
|
|
209
|
+
configuredDeploymentAccountForStage(
|
|
207
210
|
policy.deploymentProfile,
|
|
208
211
|
policy.deploymentAccounts,
|
|
212
|
+
stage,
|
|
209
213
|
);
|
|
214
|
+
const accounts = policy.deploymentAccounts;
|
|
210
215
|
const region = configuredDeploymentRegion(policy.deploymentRegion);
|
|
211
216
|
appendFileSync(output, [
|
|
212
217
|
'deployment_region=' + region,
|
|
213
|
-
'development_account_id=' + accounts.development,
|
|
218
|
+
'development_account_id=' + (accounts.development ?? ''),
|
|
214
219
|
'staging_account_id=' + (accounts.staging ?? ''),
|
|
215
|
-
'production_account_id=' + accounts.production,
|
|
220
|
+
'production_account_id=' + (accounts.production ?? ''),
|
|
216
221
|
'',
|
|
217
222
|
].join('\\n'));
|
|
218
223
|
NODE`;
|
|
@@ -1170,6 +1175,10 @@ function createWorkspaceOwnership(files, frameworkVersion) {
|
|
|
1170
1175
|
}
|
|
1171
1176
|
function renderWorkspaceFiles(options) {
|
|
1172
1177
|
const { frameworkVersion, name } = options;
|
|
1178
|
+
const foundationPlan = (0, capability_plan_js_1.planFoundationCapabilities)({
|
|
1179
|
+
current: options.foundationDescriptor,
|
|
1180
|
+
requirements: options.foundationRequirements ?? [],
|
|
1181
|
+
});
|
|
1173
1182
|
const dependencyOverrides = (0, dependency_overrides_js_1.parseDependencyOverrides)(options.dependencyOverrides === undefined
|
|
1174
1183
|
? { schemaVersion: 1, overrides: {} }
|
|
1175
1184
|
: options.dependencyOverrides);
|
|
@@ -1249,6 +1258,7 @@ function renderWorkspaceFiles(options) {
|
|
|
1249
1258
|
const stagingApplyJobPrefix = 'apply staging plan ';
|
|
1250
1259
|
const files = {
|
|
1251
1260
|
...(0, workspace_files_ci_acceptance_js_1.renderWorkspaceCiAcceptanceFiles)(),
|
|
1261
|
+
...(0, workspace_files_ci_install_js_1.renderWorkspaceCiInstallFiles)(),
|
|
1252
1262
|
'.node-version': `${tool_versions_js_1.WORKSPACE_NODE_VERSION}\n`,
|
|
1253
1263
|
'.github/CODEOWNERS': `# Replace this placeholder with the GitHub user or team that owns protected source.
|
|
1254
1264
|
# GitHub bootstrap remains blocked until a non-placeholder catch-all owner is committed.
|
|
@@ -1346,7 +1356,7 @@ jobs:
|
|
|
1346
1356
|
with:
|
|
1347
1357
|
node-version: ${tool_versions_js_1.WORKSPACE_NODE_VERSION}
|
|
1348
1358
|
cache: pnpm
|
|
1349
|
-
- run:
|
|
1359
|
+
- run: node tools/ci/install.mjs
|
|
1350
1360
|
- run: node tools/ebk-git-policy.mjs
|
|
1351
1361
|
env:
|
|
1352
1362
|
EBK_HEAD_REPOSITORY: \${{ github.event.pull_request.head.repo.full_name }}
|
|
@@ -1366,7 +1376,7 @@ jobs:
|
|
|
1366
1376
|
with:
|
|
1367
1377
|
node-version: ${tool_versions_js_1.WORKSPACE_NODE_VERSION}
|
|
1368
1378
|
cache: pnpm
|
|
1369
|
-
- run:
|
|
1379
|
+
- run: node tools/ci/install.mjs
|
|
1370
1380
|
${nxCacheSteps}
|
|
1371
1381
|
- run: pnpm format:check
|
|
1372
1382
|
- name: Resolve the affected base and head for proposed work
|
|
@@ -1444,15 +1454,19 @@ ${nxCacheSteps}
|
|
|
1444
1454
|
with:
|
|
1445
1455
|
node-version: ${tool_versions_js_1.WORKSPACE_NODE_VERSION}
|
|
1446
1456
|
cache: pnpm
|
|
1447
|
-
- run:
|
|
1457
|
+
- run: node tools/ci/install.mjs
|
|
1448
1458
|
${nxCacheSteps}
|
|
1449
1459
|
- name: Build immutable release candidates
|
|
1460
|
+
id: candidates
|
|
1450
1461
|
env:
|
|
1451
1462
|
EBK_SOURCE_COMMIT: \${{ github.sha }}
|
|
1452
1463
|
run: |
|
|
1453
|
-
slice_projects="$(
|
|
1454
|
-
|
|
1455
|
-
|
|
1464
|
+
slice_projects="$(node tools/ci/release-candidates.mjs)"
|
|
1465
|
+
if [ -z "$slice_projects" ]; then
|
|
1466
|
+
echo 'No application release producers; application artifacts are not applicable.'
|
|
1467
|
+
echo 'available=false' >> "$GITHUB_OUTPUT"
|
|
1468
|
+
exit 0
|
|
1469
|
+
fi
|
|
1456
1470
|
pnpm nx run-many -t release-candidate --projects="$slice_projects" --parallel=3
|
|
1457
1471
|
mkdir -p .ebk/evidence/release-candidate/packages
|
|
1458
1472
|
IFS=',' read -r -a projects <<< "$slice_projects"
|
|
@@ -1463,7 +1477,9 @@ ${nxCacheSteps}
|
|
|
1463
1477
|
cp packages/"$project"/.ebk/evidence/release-candidate/*.json \
|
|
1464
1478
|
".ebk/evidence/release-candidate/packages/$project/"
|
|
1465
1479
|
done
|
|
1480
|
+
echo 'available=true' >> "$GITHUB_OUTPUT"
|
|
1466
1481
|
- name: Retain exact immutable release candidate
|
|
1482
|
+
if: steps.candidates.outputs.available == 'true'
|
|
1467
1483
|
uses: ${uploadArtifactAction}
|
|
1468
1484
|
with:
|
|
1469
1485
|
name: release-candidate-\${{ github.sha }}
|
|
@@ -7684,6 +7700,12 @@ infrastructure or protected deployment policy. Preserve the ownership boundary r
|
|
|
7684
7700
|
\`.ebk/ownership.json\`: managed files belong to EBK, seeded files are generated starting
|
|
7685
7701
|
points that adopters may change, and unrecorded files are adopter-owned.
|
|
7686
7702
|
|
|
7703
|
+
Ordinary feature work uses affected tests, typecheck, lint, and ownership checks.
|
|
7704
|
+
At a local milestone, \`pnpm verify\` checks current source through
|
|
7705
|
+
\`${name}:verify-proposed\`, including before the first Git commit. This is not
|
|
7706
|
+
protected Blueprint acceptance. The separate \`${name}:verify\` target and
|
|
7707
|
+
protected GitHub workflows retain their committed-history and trust gates.
|
|
7708
|
+
|
|
7687
7709
|
Human-supplied secret values are a human-only TTY ceremony. Agents and CI must
|
|
7688
7710
|
never invoke \`ebk secret set\` or \`ebk secret remove\`. They may use
|
|
7689
7711
|
value-blind metadata, status, verification, and the exact generated-secret
|
|
@@ -7765,10 +7787,13 @@ ${activeStages.join(', ')}. Each active canonical consumer stage uses the matchi
|
|
|
7765
7787
|
Inactive canonical stages are rejected. Framework-derived personal stages may use only the
|
|
7766
7788
|
\`development\` Foundation; generic preview stages are unsupported.
|
|
7767
7789
|
|
|
7768
|
-
Every active canonical stage owns a separate Router/domain,
|
|
7769
|
-
|
|
7790
|
+
Every active canonical stage owns a separate Router/domain, Cognito user pool,
|
|
7791
|
+
event bus, secret namespace, IAM boundary, logs, queues, ECR namespace, and
|
|
7770
7792
|
stage-qualified SSM discovery contract. Discovery rejects a record for an inactive or different
|
|
7771
|
-
canonical stage.
|
|
7793
|
+
canonical stage. DynamoDB tables belong to individual Slices/tasks, not one global application
|
|
7794
|
+
table. Declared relational features add an independent Aurora cluster per canonical stage,
|
|
7795
|
+
with separate logical databases and migration histories per Slice. Existing relational resources
|
|
7796
|
+
remain declared on upgrade and after removing their last consumer; that is not database retirement.
|
|
7772
7797
|
`,
|
|
7773
7798
|
'docs/work-markers.md': `# Agent work markers
|
|
7774
7799
|
|
|
@@ -7891,7 +7916,7 @@ must be committed, reviewable, and auditable.
|
|
|
7891
7916
|
lint: `nx run-many -t lint --exclude=${name}`,
|
|
7892
7917
|
test: `nx run-many -t test --exclude=${name}`,
|
|
7893
7918
|
typecheck: `nx run-many -t typecheck --exclude=${name}`,
|
|
7894
|
-
verify: `nx format:check --all && nx run ${name}:verify && nx run-many -t verify --exclude=${name}`,
|
|
7919
|
+
verify: `nx format:check --all && nx run ${name}:verify-proposed && nx run-many -t verify --exclude=${name}`,
|
|
7895
7920
|
},
|
|
7896
7921
|
dependencies: {
|
|
7897
7922
|
'@empire-builder-kit/runtime': frameworkVersion,
|
|
@@ -8043,23 +8068,11 @@ must be committed, reviewable, and auditable.
|
|
|
8043
8068
|
},
|
|
8044
8069
|
},
|
|
8045
8070
|
}),
|
|
8046
|
-
'packages/foundation/contracts/foundation.json': json(
|
|
8047
|
-
contractVersion: '1.0.0',
|
|
8048
|
-
capabilities: [
|
|
8049
|
-
'network',
|
|
8050
|
-
'routing',
|
|
8051
|
-
'container-compute',
|
|
8052
|
-
'postgres',
|
|
8053
|
-
'identity',
|
|
8054
|
-
'events',
|
|
8055
|
-
'observability',
|
|
8056
|
-
'configuration',
|
|
8057
|
-
'deployment',
|
|
8058
|
-
],
|
|
8059
|
-
}),
|
|
8071
|
+
'packages/foundation/contracts/foundation.json': json(foundationPlan.descriptor),
|
|
8060
8072
|
'packages/foundation/contracts/costs.json': json({
|
|
8061
|
-
schemaVersion:
|
|
8073
|
+
schemaVersion: 3,
|
|
8062
8074
|
aurora: {
|
|
8075
|
+
declared: foundationPlan.resources.postgres,
|
|
8063
8076
|
engine: index_js_4.FOUNDATION_AURORA_ENGINE_FAMILY,
|
|
8064
8077
|
engineVersion: index_js_4.FOUNDATION_AURORA_ENGINE_VERSION,
|
|
8065
8078
|
},
|
|
@@ -8067,23 +8080,29 @@ must be committed, reviewable, and auditable.
|
|
|
8067
8080
|
productionProfileSource: 'ebk.repository-policy.json',
|
|
8068
8081
|
stages: {
|
|
8069
8082
|
development: {
|
|
8070
|
-
aurora:
|
|
8083
|
+
aurora: foundationPlan.resources.postgres
|
|
8084
|
+
? 'scale-to-zero'
|
|
8085
|
+
: 'not-declared',
|
|
8071
8086
|
dataRetention: 'retained',
|
|
8072
|
-
nat: 'ec2',
|
|
8087
|
+
nat: foundationPlan.resources.network ? 'ec2' : 'none',
|
|
8073
8088
|
},
|
|
8074
8089
|
...(deploymentProfile === 'starter'
|
|
8075
8090
|
? {}
|
|
8076
8091
|
: {
|
|
8077
8092
|
staging: {
|
|
8078
|
-
aurora:
|
|
8093
|
+
aurora: foundationPlan.resources.postgres
|
|
8094
|
+
? 'scale-to-zero'
|
|
8095
|
+
: 'not-declared',
|
|
8079
8096
|
dataRetention: 'retained',
|
|
8080
|
-
nat: 'ec2',
|
|
8097
|
+
nat: foundationPlan.resources.network ? 'ec2' : 'none',
|
|
8081
8098
|
},
|
|
8082
8099
|
}),
|
|
8083
8100
|
production: {
|
|
8084
|
-
aurora:
|
|
8101
|
+
aurora: foundationPlan.resources.postgres
|
|
8102
|
+
? 'repository-policy'
|
|
8103
|
+
: 'not-declared',
|
|
8085
8104
|
dataRetention: 'retained-and-protected',
|
|
8086
|
-
nat: 'managed',
|
|
8105
|
+
nat: foundationPlan.resources.network ? 'managed' : 'none',
|
|
8087
8106
|
},
|
|
8088
8107
|
},
|
|
8089
8108
|
usagePriced: [
|
|
@@ -8098,16 +8117,21 @@ must be committed, reviewable, and auditable.
|
|
|
8098
8117
|
'packages/foundation/contracts/frontend-security-headers.json': json((0, index_js_2.foundationFrontendSecurityHeaderPolicy)()),
|
|
8099
8118
|
'packages/foundation/docs/costs.md': `# Foundation cost contract
|
|
8100
8119
|
|
|
8101
|
-
The
|
|
8120
|
+
The default Foundation has no Aurora, VPC/NAT, or ECS cluster. Slice-scoped DynamoDB
|
|
8121
|
+
is the first persistence choice. A relational requirement adds Aurora and its
|
|
8122
|
+
network/container migration dependencies; an explicit network workload can also
|
|
8123
|
+
require those dependencies without SQL. Previously provisioned capabilities stay
|
|
8124
|
+
declared until an explicit retirement operation, even with no remaining consumers.
|
|
8102
8125
|
The machine-readable stage inventory is \`../contracts/costs.json\`; keep this
|
|
8103
8126
|
seeded decision record aligned with organization-specific budgets and alerts.
|
|
8104
8127
|
|
|
8105
|
-
-
|
|
8106
|
-
|
|
8128
|
+
- When network/SQL is declared, development uses EC2 NAT, a development bastion,
|
|
8129
|
+
and Aurora scale-to-zero.
|
|
8130
|
+
${deploymentProfile === 'starter' ? '' : '- Declared staging network/SQL uses EC2 NAT and Aurora scale-to-zero by default.\n'}- Declared production networking uses managed NAT; production retains protected data. Its explicit Repository
|
|
8107
8131
|
Operating Policy profile selects cost-optimized (0–2 ACUs, pause after five idle
|
|
8108
8132
|
minutes), balanced (0.5–4 ACUs, always warm), or standard (2–16 ACUs, always warm).
|
|
8109
|
-
|
|
8110
|
-
|
|
8133
|
+
Newly generated repositories default to cost-optimized in every deployment profile.
|
|
8134
|
+
Cold resume adds latency; measure it for the workload and validate
|
|
8111
8135
|
connection retries, request timeouts, migrations, and background polling.
|
|
8112
8136
|
Capacity is shared by all Slices. Open connections can prevent pausing; storage
|
|
8113
8137
|
and managed NAT remain billable while Aurora compute is paused.
|
|
@@ -8122,10 +8146,11 @@ the SST configuration.
|
|
|
8122
8146
|
'packages/foundation/docs/security.md': `# Foundation security contract
|
|
8123
8147
|
|
|
8124
8148
|
- Production resources are retained and protected.
|
|
8125
|
-
-
|
|
8126
|
-
- Aurora IAM authentication is enabled for generated short-lived migration
|
|
8149
|
+
- When relational persistence is declared, the shared Aurora master credential is Foundation-internal.
|
|
8150
|
+
- Declared Aurora IAM authentication is enabled for generated short-lived migration
|
|
8127
8151
|
tasks. The exact cluster resource ID is non-secret Foundation discovery.
|
|
8128
|
-
- Product
|
|
8152
|
+
- Relational Product Slices receive scoped logical-database credentials through the provisioning contract.
|
|
8153
|
+
- DynamoDB tables and their access are Slice/task scoped; no shared Foundation application table exists.
|
|
8129
8154
|
- Cognito owns authentication; product slices own authorization policy and app clients.
|
|
8130
8155
|
- Lambda and server-side web workloads use resource linking. Containers use the documented
|
|
8131
8156
|
stage-scoped SSM/secret path and least-privilege IAM.
|
|
@@ -8168,10 +8193,9 @@ declare const $app: {
|
|
|
8168
8193
|
|
|
8169
8194
|
import {
|
|
8170
8195
|
FOUNDATION_SSM_SCHEMA_VERSION,
|
|
8171
|
-
STANDARD_FOUNDATION_CAPABILITIES,
|
|
8172
8196
|
createRouterWafRules,
|
|
8173
8197
|
createRouterWafStagePlan,
|
|
8174
|
-
foundationDatabaseEndpointHost,
|
|
8198
|
+
${foundationPlan.resources.postgres ? ' foundationDatabaseEndpointHost,' : ''}
|
|
8175
8199
|
foundationSsmPath,
|
|
8176
8200
|
normalizeRouterWafPolicy,
|
|
8177
8201
|
reconcileRouterWafBlockingRehearsal,
|
|
@@ -8179,8 +8203,7 @@ import {
|
|
|
8179
8203
|
type FoundationSsmKey,
|
|
8180
8204
|
} from '@empire-builder-kit/nx/foundation';
|
|
8181
8205
|
import {
|
|
8182
|
-
FOUNDATION_AURORA_ENGINE,
|
|
8183
|
-
FOUNDATION_AURORA_ENGINE_VERSION,
|
|
8206
|
+
${foundationPlan.resources.postgres ? ' FOUNDATION_AURORA_ENGINE,\n FOUNDATION_AURORA_ENGINE_VERSION,' : ''}
|
|
8184
8207
|
productionFoundationProfileContract,
|
|
8185
8208
|
} from '@empire-builder-kit/nx/repository-policy';
|
|
8186
8209
|
import { installStageIamBoundaryTransforms } from '@empire-builder-kit/nx/aws-authority';
|
|
@@ -8216,7 +8239,7 @@ function identityDomainPrefix(stage: string, accountId: string): string {
|
|
|
8216
8239
|
return value.slice(0, 50) + '-' + digest;
|
|
8217
8240
|
}
|
|
8218
8241
|
|
|
8219
|
-
function publishFoundation(values: Record<FoundationSsmKey, any
|
|
8242
|
+
function publishFoundation(values: Partial<Record<FoundationSsmKey, any>>) {
|
|
8220
8243
|
return Object.fromEntries(
|
|
8221
8244
|
Object.entries(values).map(([key, value]) => [
|
|
8222
8245
|
key,
|
|
@@ -8231,14 +8254,14 @@ function publishFoundation(values: Record<FoundationSsmKey, any>) {
|
|
|
8231
8254
|
|
|
8232
8255
|
export function foundation() {
|
|
8233
8256
|
const isProduction = $app.stage === 'production';
|
|
8234
|
-
const isStaging = $app.stage === 'staging';
|
|
8257
|
+
${foundationPlan.resources.postgres ? " const isStaging = $app.stage === 'staging';" : ''}
|
|
8235
8258
|
const rootDomain = process.env.EBK_ROOT_DOMAIN?.trim();
|
|
8236
8259
|
const productionConfiguration = isProduction
|
|
8237
8260
|
? productionFoundationProfileContract(
|
|
8238
8261
|
process.env.EBK_PRODUCTION_FOUNDATION_PROFILE,
|
|
8239
8262
|
)
|
|
8240
8263
|
: undefined;
|
|
8241
|
-
const natMode = productionConfiguration?.contract.nat ?? 'ec2';
|
|
8264
|
+
${foundationPlan.resources.network ? " const natMode = productionConfiguration?.contract.nat ?? 'ec2';" : ''}
|
|
8242
8265
|
const normalizedRouterWafPolicy = normalizeRouterWafPolicy(routerWafPolicy);
|
|
8243
8266
|
if (repositoryPolicy.deploymentProfile !== normalizedRouterWafPolicy.deploymentProfile) {
|
|
8244
8267
|
throw new Error('Router WAF policy profile differs from committed repository policy.');
|
|
@@ -8292,13 +8315,15 @@ export function foundation() {
|
|
|
8292
8315
|
| 'production',
|
|
8293
8316
|
});
|
|
8294
8317
|
|
|
8295
|
-
|
|
8318
|
+
${foundationPlan.resources.network
|
|
8319
|
+
? ` const vpc = new sst.aws.Vpc('FoundationVpc', {
|
|
8296
8320
|
az: 2,
|
|
8297
8321
|
bastion: $app.stage === 'development',
|
|
8298
8322
|
nat:
|
|
8299
8323
|
natMode === 'ec2' ? 'ec2' : 'managed',
|
|
8300
|
-
})
|
|
8301
|
-
|
|
8324
|
+
});`
|
|
8325
|
+
: ''}
|
|
8326
|
+
${foundationPlan.resources.containerCompute ? " const cluster = new sst.aws.Cluster('FoundationCluster', { vpc });" : ''}
|
|
8302
8327
|
const router = new sst.aws.Router('FoundationRouter', {
|
|
8303
8328
|
...(rootDomain
|
|
8304
8329
|
? {
|
|
@@ -8339,7 +8364,7 @@ export function foundation() {
|
|
|
8339
8364
|
'Foundation Router Web ACL must use global CloudFront scope.',
|
|
8340
8365
|
);
|
|
8341
8366
|
}
|
|
8342
|
-
const ipSets: { ipv4Arn?: any; ipv6Arn?: any } = {};
|
|
8367
|
+
const ipSets: { ipv4Arn?: any; ipv6Arn?: any; smokeArn?: any } = {};
|
|
8343
8368
|
if (wafPlan.ipv4Cidrs.length > 0) {
|
|
8344
8369
|
ipSets.ipv4Arn = new aws.wafv2.IpSet(
|
|
8345
8370
|
'FoundationRouterIpv4Allowlist',
|
|
@@ -8378,6 +8403,42 @@ export function foundation() {
|
|
|
8378
8403
|
{ provider: opts.provider },
|
|
8379
8404
|
).arn;
|
|
8380
8405
|
}
|
|
8406
|
+
if (wafPlan.access === 'allowlist') {
|
|
8407
|
+
// Smoke rotates WAF's LockToken outside Pulumi. Keep the existing
|
|
8408
|
+
// baseline IP sets untouched; AWS's Cloud Control handler owns the
|
|
8409
|
+
// separate ephemeral set's lifecycle without a cached lock token.
|
|
8410
|
+
const smokeAccess = new aws.cloudcontrol.Resource(
|
|
8411
|
+
'FoundationRouterSmokeAccess',
|
|
8412
|
+
{
|
|
8413
|
+
typeName: 'AWS::WAFv2::IPSet',
|
|
8414
|
+
desiredState: JSON.stringify({
|
|
8415
|
+
Addresses: [],
|
|
8416
|
+
IPAddressVersion: 'IPV4',
|
|
8417
|
+
Name: 'foundation-' + wafPlan.stage + '-router-smoke-access',
|
|
8418
|
+
Scope: 'CLOUDFRONT',
|
|
8419
|
+
Tags: Object.entries({
|
|
8420
|
+
'ebk:managed-by': 'empire-builder-kit',
|
|
8421
|
+
'ebk:owner': 'foundation',
|
|
8422
|
+
'ebk:purpose': 'private-smoke-access',
|
|
8423
|
+
'ebk:stage': wafPlan.stage,
|
|
8424
|
+
'ebk:workspace': '${name}',
|
|
8425
|
+
}).map(([Key, Value]) => ({ Key, Value })),
|
|
8426
|
+
}),
|
|
8427
|
+
},
|
|
8428
|
+
{
|
|
8429
|
+
provider: opts.provider,
|
|
8430
|
+
// This dedicated set has creation-only identity/ownership inputs.
|
|
8431
|
+
// Admission owns its addresses; the Web ACL owns policy binding.
|
|
8432
|
+
// Retain old inputs on upgrade too: Cloud Control patches arrays
|
|
8433
|
+
// by index, which is unsafe for service-reordered Tags (including
|
|
8434
|
+
// removing an older policy-digest tag). Never patch this document.
|
|
8435
|
+
ignoreChanges: ['desiredState'],
|
|
8436
|
+
},
|
|
8437
|
+
);
|
|
8438
|
+
ipSets.smokeArn = smokeAccess.properties.apply(
|
|
8439
|
+
(properties: string) => JSON.parse(properties).Arn,
|
|
8440
|
+
);
|
|
8441
|
+
}
|
|
8381
8442
|
args.defaultAction = { allow: {} };
|
|
8382
8443
|
args.rules = createRouterWafRules(wafPlan, ipSets);
|
|
8383
8444
|
args.scope = 'CLOUDFRONT';
|
|
@@ -8401,7 +8462,8 @@ export function foundation() {
|
|
|
8401
8462
|
},
|
|
8402
8463
|
},
|
|
8403
8464
|
});
|
|
8404
|
-
|
|
8465
|
+
${foundationPlan.resources.postgres
|
|
8466
|
+
? ` const database = new sst.aws.Aurora('FoundationDatabase', {
|
|
8405
8467
|
// SQL bootstrap and migrations run inside the VPC. Keep the public HTTPS
|
|
8406
8468
|
// Data API surface disabled; protected GitHub roles also deny its actions.
|
|
8407
8469
|
dataApi: false,
|
|
@@ -8462,7 +8524,8 @@ export function foundation() {
|
|
|
8462
8524
|
secretArn: database.secretArn,
|
|
8463
8525
|
username: database.username,
|
|
8464
8526
|
},
|
|
8465
|
-
})
|
|
8527
|
+
});`
|
|
8528
|
+
: ''}
|
|
8466
8529
|
const foundationAccountId = aws.getCallerIdentityOutput({}).accountId;
|
|
8467
8530
|
const foundationPartition = aws.getPartitionOutput({});
|
|
8468
8531
|
const foundationRegion = aws.getRegionOutput({});
|
|
@@ -8496,7 +8559,7 @@ export function foundation() {
|
|
|
8496
8559
|
stage: $app.stage,
|
|
8497
8560
|
workspace: '${name}',
|
|
8498
8561
|
});
|
|
8499
|
-
const databaseInstanceId = database.nodes.instance.identifier;
|
|
8562
|
+
${foundationPlan.resources.postgres ? ' const databaseInstanceId = database.nodes.instance.identifier;' : ''}
|
|
8500
8563
|
const alertTopicPolicy = new aws.sns.TopicPolicy(
|
|
8501
8564
|
'FoundationAlertTopicPolicy',
|
|
8502
8565
|
{
|
|
@@ -8542,7 +8605,8 @@ export function foundation() {
|
|
|
8542
8605
|
resources: [alertTopic.arn],
|
|
8543
8606
|
sid: 'AllowCostAnomalyAlerts',
|
|
8544
8607
|
},
|
|
8545
|
-
|
|
8608
|
+
${foundationPlan.resources.postgres
|
|
8609
|
+
? ` {
|
|
8546
8610
|
actions: ['sns:Publish'],
|
|
8547
8611
|
conditions: [
|
|
8548
8612
|
{
|
|
@@ -8564,7 +8628,8 @@ export function foundation() {
|
|
|
8564
8628
|
}],
|
|
8565
8629
|
resources: [alertTopic.arn],
|
|
8566
8630
|
sid: 'AllowRdsEventAlerts',
|
|
8567
|
-
}
|
|
8631
|
+
},`
|
|
8632
|
+
: ''}
|
|
8568
8633
|
{
|
|
8569
8634
|
actions: ['sns:Publish'],
|
|
8570
8635
|
conditions: [
|
|
@@ -8652,7 +8717,8 @@ export function foundation() {
|
|
|
8652
8717
|
{ dependsOn: [accountCostAnomalyMonitor, alertTopicPolicy] },
|
|
8653
8718
|
)
|
|
8654
8719
|
: undefined;
|
|
8655
|
-
|
|
8720
|
+
${foundationPlan.resources.postgres
|
|
8721
|
+
? ` const databaseEvents = isProduction
|
|
8656
8722
|
? new aws.rds.EventSubscription(
|
|
8657
8723
|
'FoundationDatabaseEvents',
|
|
8658
8724
|
{
|
|
@@ -8734,7 +8800,14 @@ export function foundation() {
|
|
|
8734
8800
|
threshold: 90,
|
|
8735
8801
|
treatMissingData: 'notBreaching',
|
|
8736
8802
|
},
|
|
8737
|
-
)
|
|
8803
|
+
);`
|
|
8804
|
+
: ` const dashboard = new aws.cloudwatch.Dashboard('FoundationDashboard', {
|
|
8805
|
+
dashboardName: 'ebk-' + $app.stage + '-foundation',
|
|
8806
|
+
dashboardBody: JSON.stringify({ widgets: [{
|
|
8807
|
+
type: 'text', x: 0, y: 0, width: 24, height: 3,
|
|
8808
|
+
properties: { markdown: '# Empire Builder Kit Foundation\\nStage: ' + $app.stage + '\\nPersistence: Slice-scoped DynamoDB; SQL not declared.' },
|
|
8809
|
+
}] }),
|
|
8810
|
+
});`}
|
|
8738
8811
|
|
|
8739
8812
|
if (new Set(['development', 'staging', 'production']).has($app.stage)) {
|
|
8740
8813
|
new aws.cloudwatch.EventArchive('FoundationEventArchive', {
|
|
@@ -8750,16 +8823,18 @@ export function foundation() {
|
|
|
8750
8823
|
accountCostControl.authority.monthlyMaximumUsd,
|
|
8751
8824
|
),
|
|
8752
8825
|
alertTopicArn: alertTopic.arn,
|
|
8753
|
-
capabilities:
|
|
8754
|
-
clusterId: cluster.id,
|
|
8755
|
-
contractVersion: '
|
|
8756
|
-
|
|
8826
|
+
capabilities: ${JSON.stringify(foundationPlan.descriptor.capabilities.join(','))},
|
|
8827
|
+
${foundationPlan.resources.containerCompute ? ' clusterId: cluster.id,' : ''}
|
|
8828
|
+
contractVersion: '${foundationPlan.descriptor.contractVersion}',
|
|
8829
|
+
${foundationPlan.resources.postgres
|
|
8830
|
+
? ` databaseClusterArn: database.clusterArn,
|
|
8757
8831
|
databaseClusterEndpoint,
|
|
8758
8832
|
databaseClusterId: database.id,
|
|
8759
8833
|
databaseClusterResourceId: database.nodes.cluster.clusterResourceId,
|
|
8760
8834
|
databaseHost: databaseClusterEndpoint,
|
|
8761
8835
|
databaseMasterSecretArn: database.secretArn,
|
|
8762
|
-
databasePort: database.port.apply(String)
|
|
8836
|
+
databasePort: database.port.apply(String),`
|
|
8837
|
+
: ''}
|
|
8763
8838
|
eventBusArn: eventBus.arn,
|
|
8764
8839
|
eventBusName: eventBus.name,
|
|
8765
8840
|
hasPublicDomain: rootDomain ? 'true' : 'false',
|
|
@@ -8770,20 +8845,22 @@ export function foundation() {
|
|
|
8770
8845
|
routerDistributionId: router.distributionID,
|
|
8771
8846
|
routerUrl: router.url,
|
|
8772
8847
|
schemaVersion: String(FOUNDATION_SSM_SCHEMA_VERSION),
|
|
8773
|
-
vpcId: vpc.id,
|
|
8848
|
+
${foundationPlan.resources.network ? ' vpcId: vpc.id,' : ''}
|
|
8774
8849
|
});
|
|
8775
8850
|
|
|
8776
8851
|
return {
|
|
8777
8852
|
accountBudgetName: accountBudget?.name,
|
|
8778
8853
|
alertTopicArn: alertTopic.arn,
|
|
8779
|
-
capabilities:
|
|
8780
|
-
clusterId: cluster.id,
|
|
8781
|
-
contractVersion: '
|
|
8854
|
+
capabilities: ${JSON.stringify(foundationPlan.descriptor.capabilities)},
|
|
8855
|
+
${foundationPlan.resources.containerCompute ? ' clusterId: cluster.id,' : ''}
|
|
8856
|
+
contractVersion: '${foundationPlan.descriptor.contractVersion}',
|
|
8782
8857
|
costAnomalySubscriptionArn: accountCostAnomalySubscription?.arn,
|
|
8783
|
-
databaseCapacityAlarmName: databaseCapacityAlarm.name,
|
|
8858
|
+
${foundationPlan.resources.postgres ? ' databaseCapacityAlarmName: databaseCapacityAlarm.name,' : ''}
|
|
8784
8859
|
dashboardName: dashboard.dashboardName,
|
|
8785
|
-
|
|
8786
|
-
|
|
8860
|
+
${foundationPlan.resources.postgres
|
|
8861
|
+
? ` databaseClusterId: database.id,
|
|
8862
|
+
databaseEventSubscriptionId: databaseEvents?.id,`
|
|
8863
|
+
: ''}
|
|
8787
8864
|
eventBusName: eventBus.name,
|
|
8788
8865
|
identityUserPoolId: userPool.id,
|
|
8789
8866
|
identityTokenEndpoint,
|
|
@@ -8791,7 +8868,7 @@ export function foundation() {
|
|
|
8791
8868
|
productionFoundationProfile: productionConfiguration?.profile,
|
|
8792
8869
|
rootDomain,
|
|
8793
8870
|
routerUrl: router.url,
|
|
8794
|
-
vpcId: vpc.id,
|
|
8871
|
+
${foundationPlan.resources.network ? ' vpcId: vpc.id,' : ''}
|
|
8795
8872
|
};
|
|
8796
8873
|
}
|
|
8797
8874
|
`,
|
|
@@ -9161,20 +9238,10 @@ if (normalizedRehearsal) {
|
|
|
9161
9238
|
receipt: normalizedRehearsal,
|
|
9162
9239
|
});
|
|
9163
9240
|
}
|
|
9164
|
-
const expectedCapabilities =
|
|
9165
|
-
'network',
|
|
9166
|
-
'routing',
|
|
9167
|
-
'container-compute',
|
|
9168
|
-
'postgres',
|
|
9169
|
-
'identity',
|
|
9170
|
-
'events',
|
|
9171
|
-
'observability',
|
|
9172
|
-
'configuration',
|
|
9173
|
-
'deployment',
|
|
9174
|
-
];
|
|
9241
|
+
const expectedCapabilities = ${JSON.stringify(foundationPlan.descriptor.capabilities)};
|
|
9175
9242
|
|
|
9176
|
-
if (descriptor.contractVersion !== '
|
|
9177
|
-
throw new Error('Foundation contractVersion must be
|
|
9243
|
+
if (descriptor.contractVersion !== '2.0.0') {
|
|
9244
|
+
throw new Error('Foundation contractVersion must be 2.0.0.');
|
|
9178
9245
|
}
|
|
9179
9246
|
if (
|
|
9180
9247
|
JSON.stringify(Object.keys(routerWafPolicy.stages).sort()) !==
|
|
@@ -9186,10 +9253,11 @@ if (
|
|
|
9186
9253
|
throw new Error('Foundation Router WAF stage defaults are invalid.');
|
|
9187
9254
|
}
|
|
9188
9255
|
if (JSON.stringify(descriptor.capabilities) !== JSON.stringify(expectedCapabilities)) {
|
|
9189
|
-
throw new Error('Foundation capability descriptor does not match
|
|
9256
|
+
throw new Error('Foundation capability descriptor does not match its generated resource declaration.');
|
|
9190
9257
|
}
|
|
9191
9258
|
if (
|
|
9192
|
-
costs.schemaVersion !==
|
|
9259
|
+
costs.schemaVersion !== 3 ||
|
|
9260
|
+
costs.aurora?.declared !== ${foundationPlan.resources.postgres} ||
|
|
9193
9261
|
costs.aurora?.engineVersion !== '${index_js_4.FOUNDATION_AURORA_ENGINE_VERSION}' ||
|
|
9194
9262
|
costs.productionProfileSource !== 'ebk.repository-policy.json' ||
|
|
9195
9263
|
costs.productionProfiles?.standard?.aurora?.min !== '2 ACU' ||
|
|
@@ -9199,7 +9267,7 @@ if (
|
|
|
9199
9267
|
JSON.stringify(${JSON.stringify([...activeStages].sort())}) ||
|
|
9200
9268
|
costs.stages?.production?.dataRetention !== 'retained-and-protected'
|
|
9201
9269
|
) {
|
|
9202
|
-
throw new Error('Foundation cost manifest does not match the
|
|
9270
|
+
throw new Error('Foundation cost manifest does not match the declared capability and stage contract.');
|
|
9203
9271
|
}
|
|
9204
9272
|
const localHeaders =
|
|
9205
9273
|
frontendSecurityHeaders.profiles?.['local-development']?.headers ?? [];
|
|
@@ -10294,7 +10362,7 @@ assertWorkMarkerReport(markerReport);
|
|
|
10294
10362
|
process.stdout.write('Empire Builder Kit workspace source health is green.\\n');
|
|
10295
10363
|
`,
|
|
10296
10364
|
};
|
|
10297
|
-
Object.assign(files, SUPPLY_CHAIN_WORKSPACE_FILE_PLAN.files, developerAgentFilePlan.files, (0, workspace_files_stage_authority_js_1.renderStageAuthorityWorkspaceFiles)({
|
|
10365
|
+
Object.assign(files, SUPPLY_CHAIN_WORKSPACE_FILE_PLAN.files, developerAgentFilePlan.files, (0, workspace_files_adopter_skills_js_1.renderAdopterSkills)({ name, deploymentProfile }), (0, workspace_files_stage_authority_js_1.renderStageAuthorityWorkspaceFiles)({
|
|
10298
10366
|
deploymentProfile,
|
|
10299
10367
|
name,
|
|
10300
10368
|
workspaceDeploymentId,
|
|
@@ -7,6 +7,34 @@ const node_crypto_1 = require("node:crypto");
|
|
|
7
7
|
const node_path_1 = require("node:path");
|
|
8
8
|
const index_js_1 = require("../../repository-policy/index.js");
|
|
9
9
|
const index_js_2 = require("../../workspace-deployment/index.js");
|
|
10
|
+
const SEEDED_ROUTER_WAF_POLICY_PATH = 'packages/foundation/security/router-waf.json';
|
|
11
|
+
const SEEDED_PROFILE_GUIDANCE = 'Review adopter-owned README.md, AGENTS.md, docs/architecture.md, docs/developer-agent.md, docs/repository-operating-policy.md, Foundation README/runbooks/security/costs guidance, and packages/foundation/performance/account-cost-policy.json after changing profile.';
|
|
12
|
+
function staleSeededRouterWafDiagnostic(tree, profile) {
|
|
13
|
+
const source = tree.read(SEEDED_ROUTER_WAF_POLICY_PATH, 'utf8');
|
|
14
|
+
if (source === null)
|
|
15
|
+
return null;
|
|
16
|
+
let value;
|
|
17
|
+
try {
|
|
18
|
+
value = JSON.parse(source);
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
value = null;
|
|
22
|
+
}
|
|
23
|
+
const policy = value !== null && typeof value === 'object' && !Array.isArray(value)
|
|
24
|
+
? value
|
|
25
|
+
: null;
|
|
26
|
+
const stages = policy?.stages !== null &&
|
|
27
|
+
typeof policy?.stages === 'object' &&
|
|
28
|
+
!Array.isArray(policy.stages)
|
|
29
|
+
? Object.keys(policy.stages).sort()
|
|
30
|
+
: null;
|
|
31
|
+
const expectedStages = [...(0, index_js_1.activeDeploymentStages)(profile)].sort();
|
|
32
|
+
if (policy?.deploymentProfile === profile &&
|
|
33
|
+
JSON.stringify(stages) === JSON.stringify(expectedStages)) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
return `The seeded ${SEEDED_ROUTER_WAF_POLICY_PATH} still has a different deployment profile or stage set. Before applying this topology change, update that adopter-owned policy to ${profile} with exactly ${expectedStages.join(', ')} stages, preserving reviewed CIDRs and WAF settings. Then rerun repository-policy --apply, managed workspace/Foundation upgrades, and foundation:verify. Review profile-dependent seeded guidance before protected deployment; EBK will not overwrite it.`;
|
|
37
|
+
}
|
|
10
38
|
function sliceStatusFor(options) {
|
|
11
39
|
if (options.status)
|
|
12
40
|
return options.status;
|
|
@@ -246,6 +274,15 @@ async function repositoryPolicyGenerator(tree, options) {
|
|
|
246
274
|
current,
|
|
247
275
|
next,
|
|
248
276
|
}, null, 2)}\nPolicy source changes do not deploy, remove, or alter AWS resources.`);
|
|
277
|
+
if (current.deploymentProfile !== next.deploymentProfile) {
|
|
278
|
+
devkit_1.logger.warn(`[ebk-repository-policy] ${SEEDED_PROFILE_GUIDANCE}`);
|
|
279
|
+
const diagnostic = staleSeededRouterWafDiagnostic(tree, next.deploymentProfile);
|
|
280
|
+
if (diagnostic !== null) {
|
|
281
|
+
if (options.apply)
|
|
282
|
+
throw new Error(diagnostic);
|
|
283
|
+
devkit_1.logger.warn(`[ebk-repository-policy] ${diagnostic}`);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
249
286
|
if (!options.apply || !changed)
|
|
250
287
|
return;
|
|
251
288
|
tree.write(index_js_1.REPOSITORY_POLICY_FILE, `${JSON.stringify(next, null, 2)}\n`);
|