@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
|
@@ -8,7 +8,7 @@ function snapshotColumn(name, type, options = {}) {
|
|
|
8
8
|
type,
|
|
9
9
|
primaryKey: options.primaryKey ?? false,
|
|
10
10
|
notNull: options.notNull ?? true,
|
|
11
|
-
...(options.default ? { default: options.default }
|
|
11
|
+
...(options.default === undefined ? {} : { default: options.default }),
|
|
12
12
|
};
|
|
13
13
|
}
|
|
14
14
|
function snapshotTable(name, columns, uniqueConstraints = {}, compositePrimaryKeys = {}, indexes = {}, foreignKeys = {}) {
|
|
@@ -25,25 +25,12 @@ function snapshotTable(name, columns, uniqueConstraints = {}, compositePrimaryKe
|
|
|
25
25
|
isRLSEnabled: false,
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
|
-
function snapshotIndex(name, columns) {
|
|
29
|
-
return {
|
|
30
|
-
columns: columns.map(({ expression, opclass }) => ({
|
|
31
|
-
asc: true,
|
|
32
|
-
expression,
|
|
33
|
-
isExpression: false,
|
|
34
|
-
nulls: 'last',
|
|
35
|
-
opclass,
|
|
36
|
-
})),
|
|
37
|
-
concurrently: false,
|
|
38
|
-
isUnique: false,
|
|
39
|
-
method: 'btree',
|
|
40
|
-
name,
|
|
41
|
-
with: {},
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
28
|
/** @internal */
|
|
45
|
-
function renderProductDataFiles(name, pascalName) {
|
|
46
|
-
|
|
29
|
+
function renderProductDataFiles(name, pascalName, protectedRuntimeStages = ['staging', 'production'], sql = true) {
|
|
30
|
+
const databaseStages = [
|
|
31
|
+
...new Set(['development', ...protectedRuntimeStages]),
|
|
32
|
+
];
|
|
33
|
+
const files = {
|
|
47
34
|
'contracts/events.ts': `import type { DataLifecycleChangeEventV1 } from '@empire-builder-kit/runtime/data-lifecycle';
|
|
48
35
|
|
|
49
36
|
export interface ${pascalName}CreatedData {
|
|
@@ -96,219 +83,13 @@ export const EventContractSchema = {
|
|
|
96
83
|
slice: '${name}',
|
|
97
84
|
} as const;
|
|
98
85
|
`,
|
|
99
|
-
'database/schema.ts': `import {
|
|
100
|
-
|
|
101
|
-
export const records = pgTable(
|
|
102
|
-
'records',
|
|
103
|
-
{
|
|
104
|
-
createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(),
|
|
105
|
-
id: uuid('id').defaultRandom().primaryKey(),
|
|
106
|
-
lastActivityAt: timestamp('last_activity_at', { withTimezone: true }).defaultNow().notNull(),
|
|
107
|
-
name: text('name').notNull(),
|
|
108
|
-
ownerId: text('owner_id').notNull(),
|
|
109
|
-
runScope: text('run_scope').notNull(),
|
|
110
|
-
testExpiresAt: timestamp('test_expires_at', { withTimezone: true }),
|
|
111
|
-
},
|
|
112
|
-
(table) => [
|
|
113
|
-
index('records_performance_expiry_idx').on(
|
|
114
|
-
table.ownerId,
|
|
115
|
-
table.name,
|
|
116
|
-
table.testExpiresAt,
|
|
117
|
-
),
|
|
118
|
-
index('records_performance_run_scope_idx').on(
|
|
119
|
-
table.ownerId,
|
|
120
|
-
table.name,
|
|
121
|
-
table.runScope,
|
|
122
|
-
),
|
|
123
|
-
],
|
|
124
|
-
);
|
|
125
|
-
|
|
126
|
-
export const authorizationAudit = pgTable('authorization_audit', {
|
|
127
|
-
action: text('action').notNull(),
|
|
128
|
-
approvalReference: text('approval_reference'),
|
|
129
|
-
authorityMode: text('authority_mode').notNull(),
|
|
130
|
-
correlationId: text('correlation_id').notNull(),
|
|
131
|
-
createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(),
|
|
132
|
-
decision: text('decision').notNull(),
|
|
133
|
-
id: uuid('id').defaultRandom().primaryKey(),
|
|
134
|
-
policyVersion: text('policy_version').notNull(),
|
|
135
|
-
principalKind: text('principal_kind').notNull(),
|
|
136
|
-
pseudonymousSubjectId: text('pseudonymous_subject_id').notNull(),
|
|
137
|
-
reasonCategory: text('reason_category').notNull(),
|
|
138
|
-
delegationReference: text('delegation_reference'),
|
|
139
|
-
resourceReference: text('resource_reference'),
|
|
140
|
-
resourceType: text('resource_type').notNull(),
|
|
141
|
-
slice: text('slice').notNull(),
|
|
142
|
-
stage: text('stage').notNull(),
|
|
143
|
-
subjectType: text('subject_type').notNull(),
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
export const delegationGrants = pgTable('delegation_grants', {
|
|
147
|
-
capabilityDigest: text('capability_digest').notNull(),
|
|
148
|
-
createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(),
|
|
149
|
-
expiresAt: timestamp('expires_at', { withTimezone: true }).notNull(),
|
|
150
|
-
grantJson: jsonb('grant_json').notNull(),
|
|
151
|
-
id: uuid('id').primaryKey(),
|
|
152
|
-
issuedAt: timestamp('issued_at', { withTimezone: true }).notNull(),
|
|
153
|
-
policyVersion: text('policy_version').notNull(),
|
|
154
|
-
revision: integer('revision').notNull(),
|
|
155
|
-
status: text('status').notNull(),
|
|
156
|
-
});
|
|
157
|
-
|
|
158
|
-
export const approvalRequests = pgTable('approval_requests', {
|
|
159
|
-
authorReference: text('author_reference').notNull(),
|
|
160
|
-
createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(),
|
|
161
|
-
expiresAt: timestamp('expires_at', { withTimezone: true }).notNull(),
|
|
162
|
-
id: uuid('id').primaryKey(),
|
|
163
|
-
policyVersion: text('policy_version').notNull(),
|
|
164
|
-
requestJson: jsonb('request_json').notNull(),
|
|
165
|
-
requestDigest: text('request_digest').notNull(),
|
|
166
|
-
revision: integer('revision').notNull(),
|
|
167
|
-
status: text('status').notNull(),
|
|
168
|
-
});
|
|
169
|
-
|
|
170
|
-
export const dataLifecycleAudit = pgTable(
|
|
171
|
-
'data_lifecycle_audit',
|
|
172
|
-
{
|
|
173
|
-
action: text('action').notNull(),
|
|
174
|
-
actorRef: text('actor_ref').notNull(),
|
|
175
|
-
approvalReference: text('approval_reference'),
|
|
176
|
-
auditJson: jsonb('audit_json').notNull(),
|
|
177
|
-
authorityCode: text('authority_code').notNull(),
|
|
178
|
-
correlationRef: text('correlation_ref').notNull(),
|
|
179
|
-
expiresAt: timestamp('expires_at', { withTimezone: true }).notNull(),
|
|
180
|
-
id: uuid('id').defaultRandom().primaryKey(),
|
|
181
|
-
occurredAt: timestamp('occurred_at', { withTimezone: true }).notNull(),
|
|
182
|
-
outcome: text('outcome').notNull(),
|
|
183
|
-
policyVersion: text('policy_version').notNull(),
|
|
184
|
-
principalKind: text('principal_kind').notNull(),
|
|
185
|
-
purposeCode: text('purpose_code').notNull(),
|
|
186
|
-
resourceReference: text('resource_reference'),
|
|
187
|
-
slice: text('slice').notNull(),
|
|
188
|
-
stage: text('stage').notNull(),
|
|
189
|
-
subjectType: text('subject_type').notNull(),
|
|
190
|
-
targetCategoryId: text('target_category_id').notNull(),
|
|
191
|
-
},
|
|
192
|
-
(table) => [
|
|
193
|
-
index('data_lifecycle_audit_expires_at_idx').on(table.expiresAt),
|
|
194
|
-
],
|
|
195
|
-
);
|
|
196
|
-
|
|
197
|
-
export const dataLifecycleExportArtifacts = pgTable(
|
|
198
|
-
'data_lifecycle_export_artifacts',
|
|
199
|
-
{
|
|
200
|
-
approvalRequestId: uuid('approval_request_id')
|
|
201
|
-
.primaryKey()
|
|
202
|
-
.references(() => approvalRequests.id, { onDelete: 'cascade' }),
|
|
203
|
-
artifactRef: text('artifact_ref'),
|
|
204
|
-
cleanupDeadlineAt: timestamp('cleanup_deadline_at', {
|
|
205
|
-
withTimezone: true,
|
|
206
|
-
}),
|
|
207
|
-
cleanupState: text('cleanup_state').notNull(),
|
|
208
|
-
createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(),
|
|
209
|
-
currentVersionId: text('current_version_id'),
|
|
210
|
-
expiresAt: timestamp('expires_at', { withTimezone: true }),
|
|
211
|
-
lastErrorCode: text('last_error_code'),
|
|
212
|
-
objectKey: text('object_key').notNull(),
|
|
213
|
-
recordRef: text('record_ref').notNull(),
|
|
214
|
-
subjectRef: text('subject_ref').notNull(),
|
|
215
|
-
updatedAt: timestamp('updated_at', { withTimezone: true }).defaultNow().notNull(),
|
|
216
|
-
uploadStartedAt: timestamp('upload_started_at', { withTimezone: true }),
|
|
217
|
-
},
|
|
218
|
-
(table) => [
|
|
219
|
-
index('data_lifecycle_export_artifacts_subject_created_idx').on(
|
|
220
|
-
table.subjectRef,
|
|
221
|
-
table.createdAt,
|
|
222
|
-
),
|
|
223
|
-
index('data_lifecycle_export_artifacts_cleanup_expiry_idx').on(
|
|
224
|
-
table.cleanupState,
|
|
225
|
-
table.expiresAt,
|
|
226
|
-
),
|
|
227
|
-
index('data_lifecycle_export_artifacts_cleanup_deadline_idx').on(
|
|
228
|
-
table.cleanupState,
|
|
229
|
-
table.cleanupDeadlineAt,
|
|
230
|
-
),
|
|
231
|
-
],
|
|
232
|
-
);
|
|
233
|
-
|
|
234
|
-
export const dataLifecycleExportVersions = pgTable(
|
|
235
|
-
'data_lifecycle_export_versions',
|
|
236
|
-
{
|
|
237
|
-
approvalRequestId: uuid('approval_request_id')
|
|
238
|
-
.notNull()
|
|
239
|
-
.references(() => approvalRequests.id, { onDelete: 'cascade' }),
|
|
240
|
-
deletedAt: timestamp('deleted_at', { withTimezone: true }),
|
|
241
|
-
isDeleteMarker: boolean('is_delete_marker').notNull(),
|
|
242
|
-
objectKey: text('object_key').notNull(),
|
|
243
|
-
status: text('status').notNull(),
|
|
244
|
-
versionId: text('version_id').notNull(),
|
|
245
|
-
},
|
|
246
|
-
(table) => [
|
|
247
|
-
primaryKey({
|
|
248
|
-
columns: [table.approvalRequestId, table.versionId],
|
|
249
|
-
}),
|
|
250
|
-
index('data_lifecycle_export_versions_status_idx').on(table.status),
|
|
251
|
-
],
|
|
252
|
-
);
|
|
253
|
-
|
|
254
|
-
export const cleanupDeadlineReportCapacity = pgTable(
|
|
255
|
-
'cleanup_deadline_report_capacity',
|
|
256
|
-
{
|
|
257
|
-
feature: text('feature').primaryKey(),
|
|
258
|
-
maximumPending: integer('maximum_pending').notNull(),
|
|
259
|
-
},
|
|
260
|
-
);
|
|
261
|
-
|
|
262
|
-
export const cleanupDeadlineReports = pgTable(
|
|
263
|
-
'cleanup_deadline_reports',
|
|
264
|
-
{
|
|
265
|
-
deadlineAt: timestamp('deadline_at', { withTimezone: true }).notNull(),
|
|
266
|
-
feature: text('feature').notNull(),
|
|
267
|
-
observedAt: timestamp('observed_at', { withTimezone: true })
|
|
268
|
-
.defaultNow()
|
|
269
|
-
.notNull(),
|
|
270
|
-
resourceRef: text('resource_ref').notNull(),
|
|
271
|
-
},
|
|
272
|
-
(table) => [
|
|
273
|
-
primaryKey({ columns: [table.feature, table.resourceRef] }),
|
|
274
|
-
index('cleanup_deadline_reports_feature_observed_idx').on(
|
|
275
|
-
table.feature,
|
|
276
|
-
table.observedAt,
|
|
277
|
-
),
|
|
278
|
-
],
|
|
279
|
-
);
|
|
280
|
-
|
|
281
|
-
export const dataLifecycleLedger = pgTable('data_lifecycle_ledger', {
|
|
282
|
-
action: text('action').notNull(),
|
|
283
|
-
categoryId: text('category_id').notNull(),
|
|
284
|
-
createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(),
|
|
285
|
-
effectiveAt: timestamp('effective_at', { withTimezone: true }).notNull(),
|
|
286
|
-
entryId: text('entry_id').primaryKey(),
|
|
287
|
-
expiresAt: timestamp('expires_at', { withTimezone: true }).notNull(),
|
|
288
|
-
idempotencyKey: text('idempotency_key').notNull().unique(),
|
|
289
|
-
policyVersion: text('policy_version').notNull(),
|
|
290
|
-
pseudonymousKey: text('pseudonymous_key').notNull(),
|
|
291
|
-
});
|
|
292
|
-
|
|
293
|
-
export const dataLifecycleRequests = pgTable('data_lifecycle_requests', {
|
|
294
|
-
approvalRequestId: uuid('approval_request_id').notNull().unique(),
|
|
295
|
-
id: uuid('id').primaryKey(),
|
|
296
|
-
requestJson: jsonb('request_json').notNull(),
|
|
297
|
-
revision: integer('revision').notNull(),
|
|
298
|
-
status: text('status').notNull(),
|
|
299
|
-
updatedAt: timestamp('updated_at', { withTimezone: true }).defaultNow().notNull(),
|
|
300
|
-
});
|
|
301
|
-
|
|
302
|
-
export const dataLifecycleHolds = pgTable('data_lifecycle_holds', {
|
|
303
|
-
categoryId: text('category_id').notNull(),
|
|
304
|
-
expiresAt: timestamp('expires_at', { withTimezone: true }).notNull(),
|
|
305
|
-
holdId: text('hold_id').primaryKey(),
|
|
306
|
-
holdJson: jsonb('hold_json').notNull(),
|
|
307
|
-
reviewAt: timestamp('review_at', { withTimezone: true }).notNull(),
|
|
308
|
-
scopeRef: text('scope_ref').notNull(),
|
|
309
|
-
status: text('status').notNull(),
|
|
310
|
-
});
|
|
86
|
+
'database/schema.ts': `import { integer, jsonb, pgTable, text, timestamp } from 'drizzle-orm/pg-core';
|
|
311
87
|
|
|
88
|
+
/**
|
|
89
|
+
* Add user-owned relational feature tables here. Standard records, authorization,
|
|
90
|
+
* inbox, retention and ordinary event intents remain in DynamoDB.
|
|
91
|
+
* This table is only for events committed atomically with an optional SQL feature.
|
|
92
|
+
*/
|
|
312
93
|
export const dataLifecycleOutbox = pgTable('data_lifecycle_outbox', {
|
|
313
94
|
attempts: integer('attempts').default(0).notNull(),
|
|
314
95
|
createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(),
|
|
@@ -318,162 +99,8 @@ export const dataLifecycleOutbox = pgTable('data_lifecycle_outbox', {
|
|
|
318
99
|
lastErrorCode: text('last_error_code'),
|
|
319
100
|
publishedAt: timestamp('published_at', { withTimezone: true }),
|
|
320
101
|
});
|
|
321
|
-
|
|
322
|
-
export const performanceLoadRuns = pgTable(
|
|
323
|
-
'performance_load_runs',
|
|
324
|
-
{
|
|
325
|
-
adapterId: text('adapter_id').notNull(),
|
|
326
|
-
cleanupStartedAt: timestamp('cleanup_started_at', {
|
|
327
|
-
withTimezone: true,
|
|
328
|
-
}),
|
|
329
|
-
createdAt: timestamp('created_at', { withTimezone: true }).notNull(),
|
|
330
|
-
expiresAt: timestamp('expires_at', { withTimezone: true }).notNull(),
|
|
331
|
-
maximumRequests: integer('maximum_requests').notNull(),
|
|
332
|
-
planDigest: text('plan_digest').primaryKey(),
|
|
333
|
-
releaseMaterialDigest: text('release_material_digest').notNull(),
|
|
334
|
-
runId: text('run_id').notNull(),
|
|
335
|
-
scenarioId: text('scenario_id').notNull(),
|
|
336
|
-
sourceCommit: text('source_commit').notNull(),
|
|
337
|
-
stage: text('stage').notNull(),
|
|
338
|
-
},
|
|
339
|
-
(table) => [
|
|
340
|
-
index('performance_load_runs_expires_at_idx').on(table.expiresAt),
|
|
341
|
-
],
|
|
342
|
-
);
|
|
343
|
-
|
|
344
|
-
export const performanceLoadRequests = pgTable(
|
|
345
|
-
'performance_load_requests',
|
|
346
|
-
{
|
|
347
|
-
claimedAt: timestamp('claimed_at', { withTimezone: true })
|
|
348
|
-
.defaultNow()
|
|
349
|
-
.notNull(),
|
|
350
|
-
effectId: text('effect_id'),
|
|
351
|
-
planDigest: text('plan_digest').notNull(),
|
|
352
|
-
requestOrdinal: integer('request_ordinal').notNull(),
|
|
353
|
-
},
|
|
354
|
-
(table) => [
|
|
355
|
-
primaryKey({ columns: [table.planDigest, table.requestOrdinal] }),
|
|
356
|
-
],
|
|
357
|
-
);
|
|
358
|
-
|
|
359
|
-
export const performanceLoadAsyncEffects = pgTable(
|
|
360
|
-
'performance_load_async_effects',
|
|
361
|
-
{
|
|
362
|
-
createdAt: timestamp('created_at', { withTimezone: true })
|
|
363
|
-
.defaultNow()
|
|
364
|
-
.notNull(),
|
|
365
|
-
effectId: text('effect_id').primaryKey(),
|
|
366
|
-
expiresAt: timestamp('expires_at', { withTimezone: true }).notNull(),
|
|
367
|
-
planDigest: text('plan_digest').notNull(),
|
|
368
|
-
processedAt: timestamp('processed_at', { withTimezone: true }),
|
|
369
|
-
runId: text('run_id').notNull(),
|
|
370
|
-
},
|
|
371
|
-
(table) => [
|
|
372
|
-
index('performance_load_async_effects_expires_at_idx').on(
|
|
373
|
-
table.expiresAt,
|
|
374
|
-
),
|
|
375
|
-
index('performance_load_async_effects_pending_idx').on(
|
|
376
|
-
table.processedAt,
|
|
377
|
-
table.expiresAt,
|
|
378
|
-
),
|
|
379
|
-
index('performance_load_async_effects_run_idx').on(
|
|
380
|
-
table.planDigest,
|
|
381
|
-
table.runId,
|
|
382
|
-
),
|
|
383
|
-
],
|
|
384
|
-
);
|
|
385
|
-
|
|
386
|
-
export const ebkInbox = pgTable(
|
|
387
|
-
'ebk_inbox',
|
|
388
|
-
{
|
|
389
|
-
attempts: integer('attempts').default(0).notNull(),
|
|
390
|
-
completedAt: timestamp('completed_at', { withTimezone: true }),
|
|
391
|
-
expiresAt: timestamp('expires_at', { withTimezone: true }).notNull(),
|
|
392
|
-
firstSeenAt: timestamp('first_seen_at', { withTimezone: true }).defaultNow().notNull(),
|
|
393
|
-
handlerId: text('handler_id').notNull(),
|
|
394
|
-
handlerVersion: text('handler_version').notNull(),
|
|
395
|
-
lastAttemptAt: timestamp('last_attempt_at', { withTimezone: true }).notNull(),
|
|
396
|
-
messageId: text('message_id').notNull(),
|
|
397
|
-
payloadDigest: text('payload_digest').notNull(),
|
|
398
|
-
resultReference: text('result_reference'),
|
|
399
|
-
status: text('status').notNull(),
|
|
400
|
-
},
|
|
401
|
-
(table) => [
|
|
402
|
-
primaryKey({ columns: [table.handlerId, table.messageId] }),
|
|
403
|
-
index('ebk_inbox_expires_at_idx').on(table.expiresAt),
|
|
404
|
-
],
|
|
405
|
-
);
|
|
406
|
-
|
|
407
|
-
export const dataLifecycleRetentionCandidates = pgTable(
|
|
408
|
-
'data_lifecycle_retention_candidates',
|
|
409
|
-
{
|
|
410
|
-
candidateOrder: text('candidate_order').notNull(),
|
|
411
|
-
dueAt: timestamp('due_at', { withTimezone: true }).notNull(),
|
|
412
|
-
recordId: uuid('record_id').notNull(),
|
|
413
|
-
recordRef: text('record_ref').notNull(),
|
|
414
|
-
runId: uuid('run_id').notNull(),
|
|
415
|
-
},
|
|
416
|
-
(table) => [
|
|
417
|
-
primaryKey({ columns: [table.runId, table.candidateOrder] }),
|
|
418
|
-
],
|
|
419
|
-
);
|
|
420
|
-
|
|
421
|
-
export const dataLifecycleRetentionRuns = pgTable('data_lifecycle_retention_runs', {
|
|
422
|
-
approvalRequestId: uuid('approval_request_id').unique(),
|
|
423
|
-
asOf: timestamp('as_of', { withTimezone: true }).notNull(),
|
|
424
|
-
checkpointJson: jsonb('checkpoint_json').notNull(),
|
|
425
|
-
completedAt: timestamp('completed_at', { withTimezone: true }),
|
|
426
|
-
countsJson: jsonb('counts_json').notNull(),
|
|
427
|
-
expiresAt: timestamp('expires_at', { withTimezone: true }).notNull(),
|
|
428
|
-
id: uuid('id').primaryKey(),
|
|
429
|
-
planJson: jsonb('plan_json').notNull(),
|
|
430
|
-
policyVersion: text('policy_version').notNull(),
|
|
431
|
-
revision: integer('revision').notNull(),
|
|
432
|
-
status: text('status').notNull(),
|
|
433
|
-
updatedAt: timestamp('updated_at', { withTimezone: true }).defaultNow().notNull(),
|
|
434
|
-
});
|
|
435
|
-
|
|
436
|
-
export const dataLifecycleReceipts = pgTable('data_lifecycle_receipts', {
|
|
437
|
-
action: text('action').notNull(),
|
|
438
|
-
occurredAt: timestamp('occurred_at', { withTimezone: true }).notNull(),
|
|
439
|
-
policyVersion: text('policy_version').notNull(),
|
|
440
|
-
pseudonymousKey: text('pseudonymous_key').notNull(),
|
|
441
|
-
receivedAt: timestamp('received_at', { withTimezone: true }).defaultNow().notNull(),
|
|
442
|
-
requestRef: text('request_ref').notNull(),
|
|
443
|
-
sourceSlice: text('source_slice').notNull(),
|
|
444
|
-
}, (table) => [
|
|
445
|
-
primaryKey({
|
|
446
|
-
columns: [
|
|
447
|
-
table.sourceSlice,
|
|
448
|
-
table.pseudonymousKey,
|
|
449
|
-
table.action,
|
|
450
|
-
table.requestRef,
|
|
451
|
-
],
|
|
452
|
-
}),
|
|
453
|
-
]);
|
|
454
|
-
|
|
455
|
-
export const dataLifecycleDownstreamCopies = pgTable(
|
|
456
|
-
'data_lifecycle_downstream_copies',
|
|
457
|
-
{
|
|
458
|
-
action: text('action').notNull(),
|
|
459
|
-
copyId: text('copy_id').notNull(),
|
|
460
|
-
expiresAt: timestamp('expires_at', { withTimezone: true }).notNull(),
|
|
461
|
-
holdRefs: jsonb('hold_refs').notNull(),
|
|
462
|
-
pseudonymousKey: text('pseudonymous_key').notNull(),
|
|
463
|
-
purpose: text('purpose').notNull(),
|
|
464
|
-
recipient: text('recipient').notNull(),
|
|
465
|
-
sourceSlice: text('source_slice').notNull(),
|
|
466
|
-
status: text('status').notNull(),
|
|
467
|
-
updatedAt: timestamp('updated_at', { withTimezone: true }).defaultNow().notNull(),
|
|
468
|
-
},
|
|
469
|
-
(table) => [
|
|
470
|
-
primaryKey({
|
|
471
|
-
columns: [table.sourceSlice, table.pseudonymousKey, table.copyId],
|
|
472
|
-
}),
|
|
473
|
-
],
|
|
474
|
-
);
|
|
475
102
|
`,
|
|
476
|
-
'secrets/declarations.ts':
|
|
103
|
+
'secrets/declarations.ts': `${sql ? "import { databaseCredentialSecretSchema } from '@empire-builder-kit/runtime/database';\n" : ''}\
|
|
477
104
|
import {
|
|
478
105
|
defineSecrets,
|
|
479
106
|
secret,
|
|
@@ -530,21 +157,23 @@ const performanceLoadHmacKeys = secret.json<{
|
|
|
530
157
|
});
|
|
531
158
|
|
|
532
159
|
const SecretDefinitions = {
|
|
533
|
-
|
|
160
|
+
GeneratedPerformanceLoadHmacKeys: {
|
|
534
161
|
cache: { freshTtlMs: 1_000, staleTtlMs: 0 },
|
|
162
|
+
generation: { kind: 'hmac-key-ring-v1' },
|
|
535
163
|
owner: '${name}',
|
|
536
|
-
requiredStages:
|
|
164
|
+
requiredStages: ${JSON.stringify(protectedRuntimeStages)},
|
|
537
165
|
retention: { mode: 'retain' },
|
|
538
166
|
rotation: {
|
|
539
167
|
mode: 'manual',
|
|
540
168
|
runbook: 'docs/runbooks/performance-capacity-cost.md',
|
|
541
169
|
},
|
|
542
|
-
source: '
|
|
170
|
+
source: 'generated',
|
|
543
171
|
value: performanceLoadHmacKeys,
|
|
544
172
|
},
|
|
545
|
-
|
|
173
|
+
${sql
|
|
174
|
+
? ` ${pascalName}PrimaryDatabaseCredential: {
|
|
546
175
|
owner: '${name}',
|
|
547
|
-
requiredStages:
|
|
176
|
+
requiredStages: ${JSON.stringify(databaseStages)},
|
|
548
177
|
retention: { mode: 'retain' },
|
|
549
178
|
rotation: {
|
|
550
179
|
mode: 'manual',
|
|
@@ -553,6 +182,8 @@ const SecretDefinitions = {
|
|
|
553
182
|
source: 'database-bootstrap',
|
|
554
183
|
value: databaseCredentialSecretSchema,
|
|
555
184
|
},
|
|
185
|
+
`
|
|
186
|
+
: ''}\
|
|
556
187
|
} as const;
|
|
557
188
|
|
|
558
189
|
export const Secrets: DefinedSecrets<typeof SecretDefinitions> =
|
|
@@ -561,23 +192,28 @@ export const Secrets: DefinedSecrets<typeof SecretDefinitions> =
|
|
|
561
192
|
'secrets/metadata.json': (0, built_in_plan_shared_js_1.json)({
|
|
562
193
|
declarations: [
|
|
563
194
|
{
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
requiredStages: ['staging', 'production'],
|
|
567
|
-
rotation: { mode: 'manual' },
|
|
568
|
-
source: 'operator',
|
|
569
|
-
valueKind: 'json',
|
|
570
|
-
},
|
|
571
|
-
{
|
|
572
|
-
logicalName: `${pascalName}PrimaryDatabaseCredential`,
|
|
195
|
+
generation: { kind: 'hmac-key-ring-v1' },
|
|
196
|
+
logicalName: 'GeneratedPerformanceLoadHmacKeys',
|
|
573
197
|
owner: name,
|
|
574
|
-
requiredStages:
|
|
198
|
+
requiredStages: protectedRuntimeStages,
|
|
575
199
|
rotation: { mode: 'manual' },
|
|
576
|
-
source: '
|
|
200
|
+
source: 'generated',
|
|
577
201
|
valueKind: 'json',
|
|
578
202
|
},
|
|
203
|
+
...(sql
|
|
204
|
+
? [
|
|
205
|
+
{
|
|
206
|
+
logicalName: `${pascalName}PrimaryDatabaseCredential`,
|
|
207
|
+
owner: name,
|
|
208
|
+
requiredStages: databaseStages,
|
|
209
|
+
rotation: { mode: 'manual' },
|
|
210
|
+
source: 'database-bootstrap',
|
|
211
|
+
valueKind: 'json',
|
|
212
|
+
},
|
|
213
|
+
]
|
|
214
|
+
: []),
|
|
579
215
|
],
|
|
580
|
-
schemaVersion:
|
|
216
|
+
schemaVersion: 2,
|
|
581
217
|
}),
|
|
582
218
|
'docs/runbooks/database-credential-rotation.md': `# Database credential rotation
|
|
583
219
|
|
|
@@ -595,7 +231,8 @@ restored before accepting the rotation.
|
|
|
595
231
|
`,
|
|
596
232
|
'docs/runbooks/operator-secret-management.md': `# Operator secret management
|
|
597
233
|
|
|
598
|
-
|
|
234
|
+
Human-supplied and machine-generated deployed secrets use AWS Secrets Manager
|
|
235
|
+
containers named
|
|
599
236
|
\`ebk/<stage>/${name}/<logical-name>\`. The declaration in
|
|
600
237
|
\`secrets/declarations.ts\` owns the typed runtime contract. Its value-free
|
|
601
238
|
control-plane projection in \`secrets/metadata.json\` must carry the same
|
|
@@ -603,10 +240,60 @@ logical name, owner, required stages, rotation mode, source, and value kind.
|
|
|
603
240
|
Neither file may contain a value, placeholder, fallback, value hash, or
|
|
604
241
|
provider credential.
|
|
605
242
|
|
|
606
|
-
##
|
|
243
|
+
## Machine-generated performance key ring
|
|
244
|
+
|
|
245
|
+
The trusted AWS adapter process generates the
|
|
246
|
+
\`GeneratedPerformanceLoadHmacKeys\` value and writes it directly to Secrets
|
|
247
|
+
Manager. Transient plaintext bytes exist only in that adapter process; the
|
|
248
|
+
agent, model, and invoking caller never receive, copy, or log them. The
|
|
249
|
+
initializer atomically creates the container and first version; do not
|
|
250
|
+
pre-create it with \`secret-metadata\`. Report the initialization proposal:
|
|
251
|
+
|
|
252
|
+
\`\`\`bash
|
|
253
|
+
pnpm nx run ${name}:secret-initialize -- --logicalName=GeneratedPerformanceLoadHmacKeys --stage=<required-stage> --profile=<profile> --region=<region> --expectedRoleArn=<role-arn>
|
|
254
|
+
\`\`\`
|
|
255
|
+
|
|
256
|
+
After reviewing the exact declaration and target, apply with the committed
|
|
257
|
+
stage deployment role:
|
|
258
|
+
|
|
259
|
+
\`\`\`bash
|
|
260
|
+
pnpm nx run ${name}:secret-initialize -- --logicalName=GeneratedPerformanceLoadHmacKeys --stage=<required-stage> --profile=<profile> --region=<region> --expectedRoleArn=<role-arn> --apply
|
|
261
|
+
\`\`\`
|
|
607
262
|
|
|
608
|
-
|
|
609
|
-
|
|
263
|
+
For a protected stage, dispatch
|
|
264
|
+
the dedicated **Secret initialize** workflow from its exact protected branch,
|
|
265
|
+
select the Slice and logical name, and choose \`report\` before \`apply\`. The
|
|
266
|
+
executor generates and writes the key ring inside the AWS adapter and returns
|
|
267
|
+
only bounded status; it accepts no value input and cannot read the plaintext
|
|
268
|
+
back through its public contract.
|
|
269
|
+
|
|
270
|
+
The initializer is initial-create only. It never rotates or silently replaces
|
|
271
|
+
an existing version; later rotation remains a separate reviewed manual
|
|
272
|
+
lifecycle under the declaration's rotation runbook.
|
|
273
|
+
|
|
274
|
+
A successful governed Slice \`remove\` targets only the exact
|
|
275
|
+
\`GeneratedPerformanceLoadHmacKeys\` container for deletion. Development and
|
|
276
|
+
staging use immediate deletion and wait up to ten minutes for the asynchronous
|
|
277
|
+
provider operation to reach not-found so the deterministic name can be
|
|
278
|
+
redeployed. Production uses a fixed seven-day recovery window, where an already
|
|
279
|
+
scheduled container is idempotent only when its deletion date is no later than
|
|
280
|
+
seven days plus the bounded five-minute clock-skew allowance; a later date
|
|
281
|
+
fails closed. A lower-stage container with a future recovery date is restored,
|
|
282
|
+
reattested, and converted to immediate deletion; a current, past, or
|
|
283
|
+
five-minute clock-skew-tolerant deletion date denotes an interrupted force
|
|
284
|
+
deletion and is polled to not-found without restore. The post-remove step
|
|
285
|
+
reattests the committed account, Region, stage deployment role, canonical name,
|
|
286
|
+
and complete generated ownership tags without reading the value. An absent
|
|
287
|
+
container is
|
|
288
|
+
idempotent. A failed or interrupted native SST remove does not run this step.
|
|
289
|
+
Imported, externally owned, genuinely shared, database-bootstrap, and authority-history
|
|
290
|
+
containers are never targets. Container ownership—not whether a value was
|
|
291
|
+
human-supplied—controls cleanup.
|
|
292
|
+
|
|
293
|
+
## Personal human-supplied development value
|
|
294
|
+
|
|
295
|
+
Only a human at a local interactive terminal may set or remove a
|
|
296
|
+
human-supplied operator-declared personal value:
|
|
610
297
|
|
|
611
298
|
\`\`\`bash
|
|
612
299
|
ebk secret set ${name} <logical-name>
|
|
@@ -623,7 +310,9 @@ to invoke either command.
|
|
|
623
310
|
|
|
624
311
|
## Development metadata
|
|
625
312
|
|
|
626
|
-
|
|
313
|
+
This target is only for human-supplied operator declarations. It never creates
|
|
314
|
+
or updates a generated declaration. Report first, using the exact development
|
|
315
|
+
account profile and Region:
|
|
627
316
|
|
|
628
317
|
\`\`\`bash
|
|
629
318
|
pnpm nx run ${name}:secret-metadata --stage=development --profile=<profile> --region=<region>
|
|
@@ -635,272 +324,52 @@ write a secret version, change a rotation label, or delete a secret.
|
|
|
635
324
|
|
|
636
325
|
## Protected metadata
|
|
637
326
|
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
327
|
+
This workflow is only for human-supplied operator declarations. Run the
|
|
328
|
+
**Secret metadata** GitHub workflow from \`develop\` for staging or
|
|
329
|
+
\`main\` for production when the deployment profile requires protected GitHub
|
|
330
|
+
authority. Select this exact Slice and choose \`report\` first. After review,
|
|
331
|
+
dispatch \`apply\` from the same protected branch and environment. The workflow
|
|
332
|
+
assumes the protected deploy role through OIDC, verifies the expected AWS
|
|
333
|
+
account, and invokes the same value-blind Nx executor.
|
|
334
|
+
|
|
335
|
+
Profiles that admit local deployment may apply the reviewed empty-container
|
|
336
|
+
metadata with the same temporary federated profile and stage deployment role:
|
|
337
|
+
|
|
338
|
+
\`\`\`bash
|
|
339
|
+
pnpm nx run ${name}:secret-metadata -- --stage=<staging-or-production> --profile=<profile> --region=<region> --expectedRoleArn=<role-arn> --apply
|
|
340
|
+
\`\`\`
|
|
341
|
+
|
|
342
|
+
The local path binds the committed deployment profile, account, Region, and
|
|
343
|
+
exact assumed role. It does not permit a secret value. Never add an application
|
|
344
|
+
value to GitHub secrets, workflow input, argv, or agent-visible material.
|
|
644
345
|
|
|
645
|
-
The protected deploy role needs metadata
|
|
346
|
+
The protected deploy role needs metadata authority for the Slice prefix:
|
|
646
347
|
\`ListSecrets\`, \`DescribeSecret\`, \`CreateSecret\`, and \`TagResource\`.
|
|
647
348
|
It must be denied \`BatchGetSecretValue\`, \`GetSecretValue\`,
|
|
648
|
-
\`PutSecretValue\`, \`
|
|
649
|
-
application deployment outside its separately reviewed deploy policy.
|
|
349
|
+
\`PutSecretValue\`, \`UpdateSecret\`, \`UpdateSecretVersionStage\`,
|
|
350
|
+
and application deployment outside its separately reviewed deploy policy.
|
|
351
|
+
\`DeleteSecret\` is used only by the governed generated-secret retirement path
|
|
352
|
+
after native Slice removal succeeds; the executor binds that call to the exact
|
|
353
|
+
generated HMAC name and ownership tags described above.
|
|
650
354
|
Account-level role materialization remains an adopter responsibility.
|
|
651
355
|
|
|
652
|
-
##
|
|
356
|
+
## Human-supplied value ceremony
|
|
653
357
|
|
|
654
|
-
After an empty container exists, a human secret operator enters
|
|
655
|
-
value through the approved hidden-input or provider-owned
|
|
656
|
-
delegate
|
|
657
|
-
source, a file, a ticket, a work marker, GitHub,
|
|
658
|
-
operator authority is write-only for exact approved
|
|
659
|
-
application or Foundation deployment authority. Value reads
|
|
660
|
-
audited break-glass path.
|
|
358
|
+
After an empty human-supplied container exists, a human secret operator enters
|
|
359
|
+
or rotates the value through the approved hidden-input or provider-owned
|
|
360
|
+
ceremony. Do not delegate that human-supplied ceremony to an agent and do not
|
|
361
|
+
pass a value through argv, source, a file, a ticket, a work marker, GitHub,
|
|
362
|
+
logs, or evidence. Routine operator authority is write-only for exact approved
|
|
363
|
+
paths and has no application or Foundation deployment authority. Value reads
|
|
364
|
+
require a separate audited break-glass path. Machine-generated declarations
|
|
365
|
+
instead use \`secret-initialize\`; they never accept a human value.
|
|
661
366
|
|
|
662
367
|
Run the report again and then deploy. Deployment performs only a read-only
|
|
663
368
|
metadata preflight and refuses before SST mutation when a required container,
|
|
664
369
|
\`AWSCURRENT\`, ownership tag, or rotation policy is invalid. Remove, unlock,
|
|
665
370
|
retirement, and recovery do not depend on this preflight.
|
|
666
371
|
`,
|
|
667
|
-
'database/migrations/0000_initial.sql': `CREATE TABLE IF NOT EXISTS "
|
|
668
|
-
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
669
|
-
"name" text NOT NULL,
|
|
670
|
-
"owner_id" text NOT NULL,
|
|
671
|
-
"run_scope" text NOT NULL,
|
|
672
|
-
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
673
|
-
"last_activity_at" timestamptz NOT NULL DEFAULT now(),
|
|
674
|
-
"test_expires_at" timestamptz
|
|
675
|
-
);
|
|
676
|
-
CREATE INDEX IF NOT EXISTS "records_performance_expiry_idx"
|
|
677
|
-
ON "records" ("owner_id", "name", "test_expires_at");
|
|
678
|
-
CREATE INDEX IF NOT EXISTS "records_performance_run_scope_idx"
|
|
679
|
-
ON "records" ("owner_id", "name", "run_scope");
|
|
680
|
-
|
|
681
|
-
CREATE TABLE IF NOT EXISTS "authorization_audit" (
|
|
682
|
-
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
683
|
-
"action" text NOT NULL,
|
|
684
|
-
"approval_reference" text,
|
|
685
|
-
"authority_mode" text NOT NULL,
|
|
686
|
-
"correlation_id" text NOT NULL,
|
|
687
|
-
"decision" text NOT NULL,
|
|
688
|
-
"policy_version" text NOT NULL,
|
|
689
|
-
"principal_kind" text NOT NULL,
|
|
690
|
-
"pseudonymous_subject_id" text NOT NULL,
|
|
691
|
-
"reason_category" text NOT NULL,
|
|
692
|
-
"delegation_reference" text,
|
|
693
|
-
"resource_reference" text,
|
|
694
|
-
"resource_type" text NOT NULL,
|
|
695
|
-
"slice" text NOT NULL,
|
|
696
|
-
"stage" text NOT NULL,
|
|
697
|
-
"subject_type" text NOT NULL,
|
|
698
|
-
"created_at" timestamptz NOT NULL DEFAULT now()
|
|
699
|
-
);
|
|
700
|
-
|
|
701
|
-
CREATE TABLE IF NOT EXISTS "delegation_grants" (
|
|
702
|
-
"id" uuid PRIMARY KEY,
|
|
703
|
-
"capability_digest" text NOT NULL,
|
|
704
|
-
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
705
|
-
"expires_at" timestamptz NOT NULL,
|
|
706
|
-
"grant_json" jsonb NOT NULL,
|
|
707
|
-
"issued_at" timestamptz NOT NULL,
|
|
708
|
-
"policy_version" text NOT NULL,
|
|
709
|
-
"revision" integer NOT NULL,
|
|
710
|
-
"status" text NOT NULL
|
|
711
|
-
);
|
|
712
|
-
|
|
713
|
-
CREATE TABLE IF NOT EXISTS "approval_requests" (
|
|
714
|
-
"id" uuid PRIMARY KEY,
|
|
715
|
-
"author_reference" text NOT NULL,
|
|
716
|
-
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
717
|
-
"expires_at" timestamptz NOT NULL,
|
|
718
|
-
"policy_version" text NOT NULL,
|
|
719
|
-
"request_json" jsonb NOT NULL,
|
|
720
|
-
"request_digest" text NOT NULL,
|
|
721
|
-
"revision" integer NOT NULL,
|
|
722
|
-
"status" text NOT NULL
|
|
723
|
-
);
|
|
724
|
-
|
|
725
|
-
CREATE TABLE IF NOT EXISTS "data_lifecycle_audit" (
|
|
726
|
-
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
727
|
-
"action" text NOT NULL,
|
|
728
|
-
"actor_ref" text NOT NULL,
|
|
729
|
-
"approval_reference" text,
|
|
730
|
-
"audit_json" jsonb NOT NULL,
|
|
731
|
-
"authority_code" text NOT NULL,
|
|
732
|
-
"correlation_ref" text NOT NULL,
|
|
733
|
-
"expires_at" timestamptz NOT NULL,
|
|
734
|
-
"outcome" text NOT NULL,
|
|
735
|
-
"policy_version" text NOT NULL,
|
|
736
|
-
"principal_kind" text NOT NULL,
|
|
737
|
-
"purpose_code" text NOT NULL,
|
|
738
|
-
"resource_reference" text,
|
|
739
|
-
"slice" text NOT NULL,
|
|
740
|
-
"stage" text NOT NULL,
|
|
741
|
-
"subject_type" text NOT NULL,
|
|
742
|
-
"target_category_id" text NOT NULL,
|
|
743
|
-
"occurred_at" timestamptz NOT NULL
|
|
744
|
-
);
|
|
745
|
-
|
|
746
|
-
CREATE INDEX IF NOT EXISTS "data_lifecycle_audit_expires_at_idx"
|
|
747
|
-
ON "data_lifecycle_audit" ("expires_at");
|
|
748
|
-
|
|
749
|
-
CREATE OR REPLACE FUNCTION "ebk_prune_data_lifecycle_audit"(
|
|
750
|
-
"cutoff" timestamptz,
|
|
751
|
-
"batch_limit" integer
|
|
752
|
-
) RETURNS integer
|
|
753
|
-
LANGUAGE plpgsql
|
|
754
|
-
SECURITY DEFINER
|
|
755
|
-
SET search_path = pg_catalog, public
|
|
756
|
-
AS $$
|
|
757
|
-
DECLARE
|
|
758
|
-
deleted_count integer;
|
|
759
|
-
effective_cutoff timestamptz;
|
|
760
|
-
BEGIN
|
|
761
|
-
IF batch_limit < 1 OR batch_limit > 1000 THEN
|
|
762
|
-
RAISE EXCEPTION 'audit prune batch is outside the reviewed bound';
|
|
763
|
-
END IF;
|
|
764
|
-
effective_cutoff := LEAST(cutoff, clock_timestamp());
|
|
765
|
-
WITH expired AS (
|
|
766
|
-
SELECT ctid FROM public.data_lifecycle_audit
|
|
767
|
-
WHERE expires_at <= effective_cutoff
|
|
768
|
-
ORDER BY expires_at, id
|
|
769
|
-
LIMIT batch_limit
|
|
770
|
-
FOR UPDATE SKIP LOCKED
|
|
771
|
-
)
|
|
772
|
-
DELETE FROM public.data_lifecycle_audit
|
|
773
|
-
WHERE ctid IN (SELECT ctid FROM expired);
|
|
774
|
-
GET DIAGNOSTICS deleted_count = ROW_COUNT;
|
|
775
|
-
RETURN deleted_count;
|
|
776
|
-
END;
|
|
777
|
-
$$;
|
|
778
|
-
|
|
779
|
-
CREATE OR REPLACE FUNCTION "ebk_prune_authorization_audit"(
|
|
780
|
-
"cutoff" timestamptz,
|
|
781
|
-
"batch_limit" integer
|
|
782
|
-
) RETURNS integer
|
|
783
|
-
LANGUAGE plpgsql
|
|
784
|
-
SECURITY DEFINER
|
|
785
|
-
SET search_path = pg_catalog, public
|
|
786
|
-
AS $$
|
|
787
|
-
DECLARE
|
|
788
|
-
deleted_count integer;
|
|
789
|
-
effective_cutoff timestamptz;
|
|
790
|
-
BEGIN
|
|
791
|
-
IF batch_limit < 1 OR batch_limit > 1000 THEN
|
|
792
|
-
RAISE EXCEPTION 'audit prune batch is outside the reviewed bound';
|
|
793
|
-
END IF;
|
|
794
|
-
effective_cutoff := LEAST(cutoff, clock_timestamp());
|
|
795
|
-
WITH expired AS (
|
|
796
|
-
SELECT ctid FROM public.authorization_audit
|
|
797
|
-
WHERE created_at <= effective_cutoff - INTERVAL '400 days'
|
|
798
|
-
ORDER BY created_at, id
|
|
799
|
-
LIMIT batch_limit
|
|
800
|
-
FOR UPDATE SKIP LOCKED
|
|
801
|
-
)
|
|
802
|
-
DELETE FROM public.authorization_audit
|
|
803
|
-
WHERE ctid IN (SELECT ctid FROM expired);
|
|
804
|
-
GET DIAGNOSTICS deleted_count = ROW_COUNT;
|
|
805
|
-
RETURN deleted_count;
|
|
806
|
-
END;
|
|
807
|
-
$$;
|
|
808
|
-
|
|
809
|
-
REVOKE ALL ON FUNCTION "ebk_prune_data_lifecycle_audit"(
|
|
810
|
-
timestamptz, integer
|
|
811
|
-
) FROM PUBLIC;
|
|
812
|
-
REVOKE ALL ON FUNCTION "ebk_prune_authorization_audit"(
|
|
813
|
-
timestamptz, integer
|
|
814
|
-
) FROM PUBLIC;
|
|
815
|
-
|
|
816
|
-
CREATE TABLE IF NOT EXISTS "data_lifecycle_export_artifacts" (
|
|
817
|
-
"approval_request_id" uuid PRIMARY KEY
|
|
818
|
-
REFERENCES "approval_requests" ("id") ON DELETE CASCADE,
|
|
819
|
-
"artifact_ref" text,
|
|
820
|
-
"cleanup_deadline_at" timestamptz,
|
|
821
|
-
"cleanup_state" text NOT NULL,
|
|
822
|
-
"current_version_id" text,
|
|
823
|
-
"expires_at" timestamptz,
|
|
824
|
-
"last_error_code" text,
|
|
825
|
-
"object_key" text NOT NULL,
|
|
826
|
-
"record_ref" text NOT NULL,
|
|
827
|
-
"subject_ref" text NOT NULL,
|
|
828
|
-
"upload_started_at" timestamptz,
|
|
829
|
-
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
830
|
-
"updated_at" timestamptz NOT NULL DEFAULT now()
|
|
831
|
-
);
|
|
832
|
-
|
|
833
|
-
CREATE INDEX IF NOT EXISTS "data_lifecycle_export_artifacts_subject_created_idx"
|
|
834
|
-
ON "data_lifecycle_export_artifacts" ("subject_ref", "created_at");
|
|
835
|
-
CREATE INDEX IF NOT EXISTS "data_lifecycle_export_artifacts_cleanup_expiry_idx"
|
|
836
|
-
ON "data_lifecycle_export_artifacts" ("cleanup_state", "expires_at");
|
|
837
|
-
CREATE INDEX IF NOT EXISTS "data_lifecycle_export_artifacts_cleanup_deadline_idx"
|
|
838
|
-
ON "data_lifecycle_export_artifacts" ("cleanup_state", "cleanup_deadline_at");
|
|
839
|
-
|
|
840
|
-
CREATE TABLE IF NOT EXISTS "data_lifecycle_export_versions" (
|
|
841
|
-
"approval_request_id" uuid NOT NULL
|
|
842
|
-
REFERENCES "approval_requests" ("id") ON DELETE CASCADE,
|
|
843
|
-
"version_id" text NOT NULL,
|
|
844
|
-
"object_key" text NOT NULL,
|
|
845
|
-
"is_delete_marker" boolean NOT NULL,
|
|
846
|
-
"status" text NOT NULL,
|
|
847
|
-
"deleted_at" timestamptz,
|
|
848
|
-
PRIMARY KEY ("approval_request_id", "version_id")
|
|
849
|
-
);
|
|
850
|
-
|
|
851
|
-
CREATE TABLE IF NOT EXISTS "cleanup_deadline_reports" (
|
|
852
|
-
"feature" text NOT NULL,
|
|
853
|
-
"resource_ref" text NOT NULL,
|
|
854
|
-
"deadline_at" timestamptz NOT NULL,
|
|
855
|
-
"observed_at" timestamptz NOT NULL DEFAULT now(),
|
|
856
|
-
PRIMARY KEY ("feature", "resource_ref")
|
|
857
|
-
);
|
|
858
|
-
CREATE INDEX IF NOT EXISTS "cleanup_deadline_reports_feature_observed_idx"
|
|
859
|
-
ON "cleanup_deadline_reports" ("feature", "observed_at");
|
|
860
|
-
|
|
861
|
-
CREATE TABLE IF NOT EXISTS "cleanup_deadline_report_capacity" (
|
|
862
|
-
"feature" text PRIMARY KEY,
|
|
863
|
-
"maximum_pending" integer NOT NULL
|
|
864
|
-
);
|
|
865
|
-
INSERT INTO "cleanup_deadline_report_capacity" ("feature", "maximum_pending")
|
|
866
|
-
VALUES ('confidential-export', 1000)
|
|
867
|
-
ON CONFLICT ("feature") DO NOTHING;
|
|
868
|
-
|
|
869
|
-
CREATE INDEX IF NOT EXISTS "data_lifecycle_export_versions_status_idx"
|
|
870
|
-
ON "data_lifecycle_export_versions" ("status");
|
|
871
|
-
|
|
872
|
-
CREATE TABLE IF NOT EXISTS "data_lifecycle_ledger" (
|
|
873
|
-
"entry_id" text PRIMARY KEY,
|
|
874
|
-
"action" text NOT NULL,
|
|
875
|
-
"category_id" text NOT NULL,
|
|
876
|
-
"effective_at" timestamptz NOT NULL,
|
|
877
|
-
"expires_at" timestamptz NOT NULL,
|
|
878
|
-
"idempotency_key" text NOT NULL UNIQUE,
|
|
879
|
-
"policy_version" text NOT NULL,
|
|
880
|
-
"pseudonymous_key" text NOT NULL,
|
|
881
|
-
"created_at" timestamptz NOT NULL DEFAULT now()
|
|
882
|
-
);
|
|
883
|
-
|
|
884
|
-
CREATE TABLE IF NOT EXISTS "data_lifecycle_requests" (
|
|
885
|
-
"id" uuid PRIMARY KEY,
|
|
886
|
-
"approval_request_id" uuid NOT NULL UNIQUE,
|
|
887
|
-
"request_json" jsonb NOT NULL,
|
|
888
|
-
"revision" integer NOT NULL,
|
|
889
|
-
"status" text NOT NULL,
|
|
890
|
-
"updated_at" timestamptz NOT NULL DEFAULT now()
|
|
891
|
-
);
|
|
892
|
-
|
|
893
|
-
CREATE TABLE IF NOT EXISTS "data_lifecycle_holds" (
|
|
894
|
-
"hold_id" text PRIMARY KEY,
|
|
895
|
-
"scope_ref" text NOT NULL,
|
|
896
|
-
"category_id" text NOT NULL,
|
|
897
|
-
"hold_json" jsonb NOT NULL,
|
|
898
|
-
"status" text NOT NULL,
|
|
899
|
-
"expires_at" timestamptz NOT NULL,
|
|
900
|
-
"review_at" timestamptz NOT NULL
|
|
901
|
-
);
|
|
902
|
-
|
|
903
|
-
CREATE TABLE IF NOT EXISTS "data_lifecycle_outbox" (
|
|
372
|
+
'database/migrations/0000_initial.sql': `CREATE TABLE IF NOT EXISTS "data_lifecycle_outbox" (
|
|
904
373
|
"idempotency_key" text PRIMARY KEY,
|
|
905
374
|
"event_json" jsonb NOT NULL,
|
|
906
375
|
"published_at" timestamptz,
|
|
@@ -909,113 +378,6 @@ CREATE TABLE IF NOT EXISTS "data_lifecycle_outbox" (
|
|
|
909
378
|
"expires_at" timestamptz NOT NULL,
|
|
910
379
|
"created_at" timestamptz NOT NULL DEFAULT now()
|
|
911
380
|
);
|
|
912
|
-
|
|
913
|
-
CREATE TABLE IF NOT EXISTS "performance_load_runs" (
|
|
914
|
-
"plan_digest" text PRIMARY KEY,
|
|
915
|
-
"run_id" text NOT NULL,
|
|
916
|
-
"adapter_id" text NOT NULL,
|
|
917
|
-
"cleanup_started_at" timestamptz,
|
|
918
|
-
"scenario_id" text NOT NULL,
|
|
919
|
-
"stage" text NOT NULL,
|
|
920
|
-
"source_commit" text NOT NULL,
|
|
921
|
-
"release_material_digest" text NOT NULL,
|
|
922
|
-
"maximum_requests" integer NOT NULL,
|
|
923
|
-
"created_at" timestamptz NOT NULL,
|
|
924
|
-
"expires_at" timestamptz NOT NULL
|
|
925
|
-
);
|
|
926
|
-
CREATE INDEX IF NOT EXISTS "performance_load_runs_expires_at_idx"
|
|
927
|
-
ON "performance_load_runs" ("expires_at");
|
|
928
|
-
|
|
929
|
-
CREATE TABLE IF NOT EXISTS "performance_load_requests" (
|
|
930
|
-
"plan_digest" text NOT NULL,
|
|
931
|
-
"request_ordinal" integer NOT NULL,
|
|
932
|
-
"effect_id" text,
|
|
933
|
-
"claimed_at" timestamptz NOT NULL DEFAULT now(),
|
|
934
|
-
PRIMARY KEY ("plan_digest", "request_ordinal")
|
|
935
|
-
);
|
|
936
|
-
|
|
937
|
-
CREATE TABLE IF NOT EXISTS "performance_load_async_effects" (
|
|
938
|
-
"effect_id" text PRIMARY KEY,
|
|
939
|
-
"plan_digest" text NOT NULL,
|
|
940
|
-
"run_id" text NOT NULL,
|
|
941
|
-
"processed_at" timestamptz,
|
|
942
|
-
"expires_at" timestamptz NOT NULL,
|
|
943
|
-
"created_at" timestamptz NOT NULL DEFAULT now()
|
|
944
|
-
);
|
|
945
|
-
CREATE INDEX IF NOT EXISTS "performance_load_async_effects_expires_at_idx"
|
|
946
|
-
ON "performance_load_async_effects" USING btree ("expires_at");
|
|
947
|
-
CREATE INDEX "performance_load_async_effects_pending_idx"
|
|
948
|
-
ON "performance_load_async_effects" USING btree
|
|
949
|
-
("processed_at", "expires_at");
|
|
950
|
-
CREATE INDEX IF NOT EXISTS "performance_load_async_effects_run_idx"
|
|
951
|
-
ON "performance_load_async_effects" USING btree
|
|
952
|
-
("plan_digest", "run_id");
|
|
953
|
-
|
|
954
|
-
CREATE TABLE IF NOT EXISTS "ebk_inbox" (
|
|
955
|
-
"handler_id" text NOT NULL,
|
|
956
|
-
"handler_version" text NOT NULL,
|
|
957
|
-
"message_id" text NOT NULL,
|
|
958
|
-
"payload_digest" text NOT NULL,
|
|
959
|
-
"status" text NOT NULL,
|
|
960
|
-
"attempts" integer NOT NULL DEFAULT 0,
|
|
961
|
-
"result_reference" text,
|
|
962
|
-
"first_seen_at" timestamptz NOT NULL DEFAULT now(),
|
|
963
|
-
"last_attempt_at" timestamptz NOT NULL,
|
|
964
|
-
"completed_at" timestamptz,
|
|
965
|
-
"expires_at" timestamptz NOT NULL,
|
|
966
|
-
PRIMARY KEY ("handler_id", "message_id")
|
|
967
|
-
);
|
|
968
|
-
CREATE INDEX "ebk_inbox_expires_at_idx"
|
|
969
|
-
ON "ebk_inbox" USING btree ("expires_at");
|
|
970
|
-
|
|
971
|
-
CREATE TABLE IF NOT EXISTS "data_lifecycle_retention_runs" (
|
|
972
|
-
"id" uuid PRIMARY KEY,
|
|
973
|
-
"approval_request_id" uuid UNIQUE,
|
|
974
|
-
"as_of" timestamptz NOT NULL,
|
|
975
|
-
"checkpoint_json" jsonb NOT NULL,
|
|
976
|
-
"completed_at" timestamptz,
|
|
977
|
-
"counts_json" jsonb NOT NULL,
|
|
978
|
-
"expires_at" timestamptz NOT NULL,
|
|
979
|
-
"plan_json" jsonb NOT NULL,
|
|
980
|
-
"policy_version" text NOT NULL,
|
|
981
|
-
"revision" integer NOT NULL,
|
|
982
|
-
"status" text NOT NULL,
|
|
983
|
-
"updated_at" timestamptz NOT NULL DEFAULT now()
|
|
984
|
-
);
|
|
985
|
-
|
|
986
|
-
CREATE TABLE IF NOT EXISTS "data_lifecycle_retention_candidates" (
|
|
987
|
-
"run_id" uuid NOT NULL,
|
|
988
|
-
"candidate_order" text NOT NULL,
|
|
989
|
-
"record_id" uuid NOT NULL,
|
|
990
|
-
"record_ref" text NOT NULL,
|
|
991
|
-
"due_at" timestamptz NOT NULL,
|
|
992
|
-
PRIMARY KEY ("run_id", "candidate_order")
|
|
993
|
-
);
|
|
994
|
-
|
|
995
|
-
CREATE TABLE IF NOT EXISTS "data_lifecycle_receipts" (
|
|
996
|
-
"source_slice" text NOT NULL,
|
|
997
|
-
"pseudonymous_key" text NOT NULL,
|
|
998
|
-
"action" text NOT NULL,
|
|
999
|
-
"request_ref" text NOT NULL,
|
|
1000
|
-
"policy_version" text NOT NULL,
|
|
1001
|
-
"occurred_at" timestamptz NOT NULL,
|
|
1002
|
-
"received_at" timestamptz NOT NULL DEFAULT now(),
|
|
1003
|
-
PRIMARY KEY ("source_slice", "pseudonymous_key", "action", "request_ref")
|
|
1004
|
-
);
|
|
1005
|
-
|
|
1006
|
-
CREATE TABLE IF NOT EXISTS "data_lifecycle_downstream_copies" (
|
|
1007
|
-
"source_slice" text NOT NULL,
|
|
1008
|
-
"pseudonymous_key" text NOT NULL,
|
|
1009
|
-
"copy_id" text NOT NULL,
|
|
1010
|
-
"recipient" text NOT NULL,
|
|
1011
|
-
"purpose" text NOT NULL,
|
|
1012
|
-
"expires_at" timestamptz NOT NULL,
|
|
1013
|
-
"action" text NOT NULL,
|
|
1014
|
-
"hold_refs" jsonb NOT NULL,
|
|
1015
|
-
"status" text NOT NULL,
|
|
1016
|
-
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
1017
|
-
PRIMARY KEY ("source_slice", "pseudonymous_key", "copy_id")
|
|
1018
|
-
);
|
|
1019
381
|
`,
|
|
1020
382
|
'database/migrations/meta/_journal.json': (0, built_in_plan_shared_js_1.json)({
|
|
1021
383
|
dialect: 'postgresql',
|
|
@@ -1036,222 +398,8 @@ CREATE TABLE IF NOT EXISTS "data_lifecycle_downstream_copies" (
|
|
|
1036
398
|
version: '7',
|
|
1037
399
|
dialect: 'postgresql',
|
|
1038
400
|
tables: {
|
|
1039
|
-
'public.approval_requests': snapshotTable('approval_requests', {
|
|
1040
|
-
author_reference: snapshotColumn('author_reference', 'text'),
|
|
1041
|
-
created_at: snapshotColumn('created_at', 'timestamp with time zone', {
|
|
1042
|
-
default: 'now()',
|
|
1043
|
-
}),
|
|
1044
|
-
expires_at: snapshotColumn('expires_at', 'timestamp with time zone'),
|
|
1045
|
-
id: snapshotColumn('id', 'uuid', { primaryKey: true }),
|
|
1046
|
-
policy_version: snapshotColumn('policy_version', 'text'),
|
|
1047
|
-
request_digest: snapshotColumn('request_digest', 'text'),
|
|
1048
|
-
request_json: snapshotColumn('request_json', 'jsonb'),
|
|
1049
|
-
revision: snapshotColumn('revision', 'integer'),
|
|
1050
|
-
status: snapshotColumn('status', 'text'),
|
|
1051
|
-
}),
|
|
1052
|
-
'public.authorization_audit': snapshotTable('authorization_audit', {
|
|
1053
|
-
action: snapshotColumn('action', 'text'),
|
|
1054
|
-
approval_reference: snapshotColumn('approval_reference', 'text', {
|
|
1055
|
-
notNull: false,
|
|
1056
|
-
}),
|
|
1057
|
-
authority_mode: snapshotColumn('authority_mode', 'text'),
|
|
1058
|
-
correlation_id: snapshotColumn('correlation_id', 'text'),
|
|
1059
|
-
created_at: snapshotColumn('created_at', 'timestamp with time zone', {
|
|
1060
|
-
default: 'now()',
|
|
1061
|
-
}),
|
|
1062
|
-
decision: snapshotColumn('decision', 'text'),
|
|
1063
|
-
id: snapshotColumn('id', 'uuid', {
|
|
1064
|
-
default: 'gen_random_uuid()',
|
|
1065
|
-
primaryKey: true,
|
|
1066
|
-
}),
|
|
1067
|
-
policy_version: snapshotColumn('policy_version', 'text'),
|
|
1068
|
-
principal_kind: snapshotColumn('principal_kind', 'text'),
|
|
1069
|
-
pseudonymous_subject_id: snapshotColumn('pseudonymous_subject_id', 'text'),
|
|
1070
|
-
reason_category: snapshotColumn('reason_category', 'text'),
|
|
1071
|
-
delegation_reference: snapshotColumn('delegation_reference', 'text', {
|
|
1072
|
-
notNull: false,
|
|
1073
|
-
}),
|
|
1074
|
-
resource_reference: snapshotColumn('resource_reference', 'text', {
|
|
1075
|
-
notNull: false,
|
|
1076
|
-
}),
|
|
1077
|
-
resource_type: snapshotColumn('resource_type', 'text'),
|
|
1078
|
-
slice: snapshotColumn('slice', 'text'),
|
|
1079
|
-
stage: snapshotColumn('stage', 'text'),
|
|
1080
|
-
subject_type: snapshotColumn('subject_type', 'text'),
|
|
1081
|
-
}),
|
|
1082
|
-
'public.data_lifecycle_audit': snapshotTable('data_lifecycle_audit', {
|
|
1083
|
-
action: snapshotColumn('action', 'text'),
|
|
1084
|
-
actor_ref: snapshotColumn('actor_ref', 'text'),
|
|
1085
|
-
approval_reference: snapshotColumn('approval_reference', 'text', {
|
|
1086
|
-
notNull: false,
|
|
1087
|
-
}),
|
|
1088
|
-
audit_json: snapshotColumn('audit_json', 'jsonb'),
|
|
1089
|
-
authority_code: snapshotColumn('authority_code', 'text'),
|
|
1090
|
-
correlation_ref: snapshotColumn('correlation_ref', 'text'),
|
|
1091
|
-
expires_at: snapshotColumn('expires_at', 'timestamp with time zone'),
|
|
1092
|
-
id: snapshotColumn('id', 'uuid', {
|
|
1093
|
-
default: 'gen_random_uuid()',
|
|
1094
|
-
primaryKey: true,
|
|
1095
|
-
}),
|
|
1096
|
-
occurred_at: snapshotColumn('occurred_at', 'timestamp with time zone'),
|
|
1097
|
-
outcome: snapshotColumn('outcome', 'text'),
|
|
1098
|
-
policy_version: snapshotColumn('policy_version', 'text'),
|
|
1099
|
-
principal_kind: snapshotColumn('principal_kind', 'text'),
|
|
1100
|
-
purpose_code: snapshotColumn('purpose_code', 'text'),
|
|
1101
|
-
resource_reference: snapshotColumn('resource_reference', 'text', {
|
|
1102
|
-
notNull: false,
|
|
1103
|
-
}),
|
|
1104
|
-
slice: snapshotColumn('slice', 'text'),
|
|
1105
|
-
stage: snapshotColumn('stage', 'text'),
|
|
1106
|
-
subject_type: snapshotColumn('subject_type', 'text'),
|
|
1107
|
-
target_category_id: snapshotColumn('target_category_id', 'text'),
|
|
1108
|
-
}, {}, {}, {
|
|
1109
|
-
data_lifecycle_audit_expires_at_idx: snapshotIndex('data_lifecycle_audit_expires_at_idx', [{ expression: 'expires_at', opclass: 'timestamptz_ops' }]),
|
|
1110
|
-
}),
|
|
1111
|
-
'public.data_lifecycle_export_artifacts': snapshotTable('data_lifecycle_export_artifacts', {
|
|
1112
|
-
approval_request_id: snapshotColumn('approval_request_id', 'uuid', {
|
|
1113
|
-
primaryKey: true,
|
|
1114
|
-
}),
|
|
1115
|
-
artifact_ref: snapshotColumn('artifact_ref', 'text', {
|
|
1116
|
-
notNull: false,
|
|
1117
|
-
}),
|
|
1118
|
-
cleanup_deadline_at: snapshotColumn('cleanup_deadline_at', 'timestamp with time zone', { notNull: false }),
|
|
1119
|
-
cleanup_state: snapshotColumn('cleanup_state', 'text'),
|
|
1120
|
-
created_at: snapshotColumn('created_at', 'timestamp with time zone', { default: 'now()' }),
|
|
1121
|
-
current_version_id: snapshotColumn('current_version_id', 'text', {
|
|
1122
|
-
notNull: false,
|
|
1123
|
-
}),
|
|
1124
|
-
expires_at: snapshotColumn('expires_at', 'timestamp with time zone', { notNull: false }),
|
|
1125
|
-
last_error_code: snapshotColumn('last_error_code', 'text', {
|
|
1126
|
-
notNull: false,
|
|
1127
|
-
}),
|
|
1128
|
-
object_key: snapshotColumn('object_key', 'text'),
|
|
1129
|
-
record_ref: snapshotColumn('record_ref', 'text'),
|
|
1130
|
-
subject_ref: snapshotColumn('subject_ref', 'text'),
|
|
1131
|
-
updated_at: snapshotColumn('updated_at', 'timestamp with time zone', { default: 'now()' }),
|
|
1132
|
-
upload_started_at: snapshotColumn('upload_started_at', 'timestamp with time zone', { notNull: false }),
|
|
1133
|
-
}, {}, {}, {
|
|
1134
|
-
data_lifecycle_export_artifacts_cleanup_deadline_idx: snapshotIndex('data_lifecycle_export_artifacts_cleanup_deadline_idx', [
|
|
1135
|
-
{ expression: 'cleanup_state', opclass: 'text_ops' },
|
|
1136
|
-
{
|
|
1137
|
-
expression: 'cleanup_deadline_at',
|
|
1138
|
-
opclass: 'timestamptz_ops',
|
|
1139
|
-
},
|
|
1140
|
-
]),
|
|
1141
|
-
data_lifecycle_export_artifacts_cleanup_expiry_idx: snapshotIndex('data_lifecycle_export_artifacts_cleanup_expiry_idx', [
|
|
1142
|
-
{ expression: 'cleanup_state', opclass: 'text_ops' },
|
|
1143
|
-
{ expression: 'expires_at', opclass: 'timestamptz_ops' },
|
|
1144
|
-
]),
|
|
1145
|
-
data_lifecycle_export_artifacts_subject_created_idx: snapshotIndex('data_lifecycle_export_artifacts_subject_created_idx', [
|
|
1146
|
-
{ expression: 'subject_ref', opclass: 'text_ops' },
|
|
1147
|
-
{ expression: 'created_at', opclass: 'timestamptz_ops' },
|
|
1148
|
-
]),
|
|
1149
|
-
}, {
|
|
1150
|
-
data_lifecycle_export_artifacts_approval_request_id_approval_requests_id_fk: {
|
|
1151
|
-
columnsFrom: ['approval_request_id'],
|
|
1152
|
-
columnsTo: ['id'],
|
|
1153
|
-
name: 'data_lifecycle_export_artifacts_approval_request_id_approval_requests_id_fk',
|
|
1154
|
-
onDelete: 'cascade',
|
|
1155
|
-
onUpdate: 'no action',
|
|
1156
|
-
tableFrom: 'data_lifecycle_export_artifacts',
|
|
1157
|
-
tableTo: 'approval_requests',
|
|
1158
|
-
},
|
|
1159
|
-
}),
|
|
1160
|
-
'public.cleanup_deadline_report_capacity': snapshotTable('cleanup_deadline_report_capacity', {
|
|
1161
|
-
feature: snapshotColumn('feature', 'text', { primaryKey: true }),
|
|
1162
|
-
maximum_pending: snapshotColumn('maximum_pending', 'integer'),
|
|
1163
|
-
}),
|
|
1164
|
-
'public.cleanup_deadline_reports': snapshotTable('cleanup_deadline_reports', {
|
|
1165
|
-
deadline_at: snapshotColumn('deadline_at', 'timestamp with time zone'),
|
|
1166
|
-
feature: snapshotColumn('feature', 'text'),
|
|
1167
|
-
observed_at: snapshotColumn('observed_at', 'timestamp with time zone', { default: 'now()' }),
|
|
1168
|
-
resource_ref: snapshotColumn('resource_ref', 'text'),
|
|
1169
|
-
}, {}, {
|
|
1170
|
-
cleanup_deadline_reports_feature_resource_ref_pk: {
|
|
1171
|
-
columns: ['feature', 'resource_ref'],
|
|
1172
|
-
name: 'cleanup_deadline_reports_feature_resource_ref_pk',
|
|
1173
|
-
},
|
|
1174
|
-
}, {
|
|
1175
|
-
cleanup_deadline_reports_feature_observed_idx: snapshotIndex('cleanup_deadline_reports_feature_observed_idx', [
|
|
1176
|
-
{ expression: 'feature', opclass: 'text_ops' },
|
|
1177
|
-
{
|
|
1178
|
-
expression: 'observed_at',
|
|
1179
|
-
opclass: 'timestamptz_ops',
|
|
1180
|
-
},
|
|
1181
|
-
]),
|
|
1182
|
-
}),
|
|
1183
|
-
'public.data_lifecycle_export_versions': snapshotTable('data_lifecycle_export_versions', {
|
|
1184
|
-
approval_request_id: snapshotColumn('approval_request_id', 'uuid'),
|
|
1185
|
-
deleted_at: snapshotColumn('deleted_at', 'timestamp with time zone', { notNull: false }),
|
|
1186
|
-
is_delete_marker: snapshotColumn('is_delete_marker', 'boolean'),
|
|
1187
|
-
object_key: snapshotColumn('object_key', 'text'),
|
|
1188
|
-
status: snapshotColumn('status', 'text'),
|
|
1189
|
-
version_id: snapshotColumn('version_id', 'text'),
|
|
1190
|
-
}, {}, {
|
|
1191
|
-
data_lifecycle_export_versions_approval_request_id_version_id_pk: {
|
|
1192
|
-
columns: ['approval_request_id', 'version_id'],
|
|
1193
|
-
name: 'data_lifecycle_export_versions_approval_request_id_version_id_pk',
|
|
1194
|
-
},
|
|
1195
|
-
}, {
|
|
1196
|
-
data_lifecycle_export_versions_status_idx: snapshotIndex('data_lifecycle_export_versions_status_idx', [{ expression: 'status', opclass: 'text_ops' }]),
|
|
1197
|
-
}, {
|
|
1198
|
-
data_lifecycle_export_versions_approval_request_id_approval_requests_id_fk: {
|
|
1199
|
-
columnsFrom: ['approval_request_id'],
|
|
1200
|
-
columnsTo: ['id'],
|
|
1201
|
-
name: 'data_lifecycle_export_versions_approval_request_id_approval_requests_id_fk',
|
|
1202
|
-
onDelete: 'cascade',
|
|
1203
|
-
onUpdate: 'no action',
|
|
1204
|
-
tableFrom: 'data_lifecycle_export_versions',
|
|
1205
|
-
tableTo: 'approval_requests',
|
|
1206
|
-
},
|
|
1207
|
-
}),
|
|
1208
|
-
'public.data_lifecycle_ledger': snapshotTable('data_lifecycle_ledger', {
|
|
1209
|
-
action: snapshotColumn('action', 'text'),
|
|
1210
|
-
category_id: snapshotColumn('category_id', 'text'),
|
|
1211
|
-
created_at: snapshotColumn('created_at', 'timestamp with time zone', { default: 'now()' }),
|
|
1212
|
-
effective_at: snapshotColumn('effective_at', 'timestamp with time zone'),
|
|
1213
|
-
entry_id: snapshotColumn('entry_id', 'text', {
|
|
1214
|
-
primaryKey: true,
|
|
1215
|
-
}),
|
|
1216
|
-
expires_at: snapshotColumn('expires_at', 'timestamp with time zone'),
|
|
1217
|
-
idempotency_key: snapshotColumn('idempotency_key', 'text'),
|
|
1218
|
-
policy_version: snapshotColumn('policy_version', 'text'),
|
|
1219
|
-
pseudonymous_key: snapshotColumn('pseudonymous_key', 'text'),
|
|
1220
|
-
}, {
|
|
1221
|
-
data_lifecycle_ledger_idempotency_key_unique: {
|
|
1222
|
-
columns: ['idempotency_key'],
|
|
1223
|
-
name: 'data_lifecycle_ledger_idempotency_key_unique',
|
|
1224
|
-
nullsNotDistinct: false,
|
|
1225
|
-
},
|
|
1226
|
-
}),
|
|
1227
|
-
'public.data_lifecycle_downstream_copies': snapshotTable('data_lifecycle_downstream_copies', {
|
|
1228
|
-
action: snapshotColumn('action', 'text'),
|
|
1229
|
-
copy_id: snapshotColumn('copy_id', 'text'),
|
|
1230
|
-
expires_at: snapshotColumn('expires_at', 'timestamp with time zone'),
|
|
1231
|
-
hold_refs: snapshotColumn('hold_refs', 'jsonb'),
|
|
1232
|
-
pseudonymous_key: snapshotColumn('pseudonymous_key', 'text'),
|
|
1233
|
-
purpose: snapshotColumn('purpose', 'text'),
|
|
1234
|
-
recipient: snapshotColumn('recipient', 'text'),
|
|
1235
|
-
source_slice: snapshotColumn('source_slice', 'text'),
|
|
1236
|
-
status: snapshotColumn('status', 'text'),
|
|
1237
|
-
updated_at: snapshotColumn('updated_at', 'timestamp with time zone', { default: 'now()' }),
|
|
1238
|
-
}, {}, {
|
|
1239
|
-
data_lifecycle_downstream_copies_source_slice_pseudonymous_key_copy_id_pk: {
|
|
1240
|
-
columns: ['source_slice', 'pseudonymous_key', 'copy_id'],
|
|
1241
|
-
name: 'data_lifecycle_downstream_copies_source_slice_pseudonymous_key_copy_id_pk',
|
|
1242
|
-
},
|
|
1243
|
-
}),
|
|
1244
|
-
'public.data_lifecycle_holds': snapshotTable('data_lifecycle_holds', {
|
|
1245
|
-
category_id: snapshotColumn('category_id', 'text'),
|
|
1246
|
-
expires_at: snapshotColumn('expires_at', 'timestamp with time zone'),
|
|
1247
|
-
hold_id: snapshotColumn('hold_id', 'text', { primaryKey: true }),
|
|
1248
|
-
hold_json: snapshotColumn('hold_json', 'jsonb'),
|
|
1249
|
-
review_at: snapshotColumn('review_at', 'timestamp with time zone'),
|
|
1250
|
-
scope_ref: snapshotColumn('scope_ref', 'text'),
|
|
1251
|
-
status: snapshotColumn('status', 'text'),
|
|
1252
|
-
}),
|
|
1253
401
|
'public.data_lifecycle_outbox': snapshotTable('data_lifecycle_outbox', {
|
|
1254
|
-
attempts: snapshotColumn('attempts', 'integer', { default:
|
|
402
|
+
attempts: snapshotColumn('attempts', 'integer', { default: 0 }),
|
|
1255
403
|
created_at: snapshotColumn('created_at', 'timestamp with time zone', {
|
|
1256
404
|
default: 'now()',
|
|
1257
405
|
}),
|
|
@@ -1265,213 +413,6 @@ CREATE TABLE IF NOT EXISTS "data_lifecycle_downstream_copies" (
|
|
|
1265
413
|
}),
|
|
1266
414
|
published_at: snapshotColumn('published_at', 'timestamp with time zone', { notNull: false }),
|
|
1267
415
|
}),
|
|
1268
|
-
'public.performance_load_runs': snapshotTable('performance_load_runs', {
|
|
1269
|
-
adapter_id: snapshotColumn('adapter_id', 'text'),
|
|
1270
|
-
cleanup_started_at: snapshotColumn('cleanup_started_at', 'timestamp with time zone', { notNull: false }),
|
|
1271
|
-
created_at: snapshotColumn('created_at', 'timestamp with time zone'),
|
|
1272
|
-
expires_at: snapshotColumn('expires_at', 'timestamp with time zone'),
|
|
1273
|
-
maximum_requests: snapshotColumn('maximum_requests', 'integer'),
|
|
1274
|
-
plan_digest: snapshotColumn('plan_digest', 'text', {
|
|
1275
|
-
primaryKey: true,
|
|
1276
|
-
}),
|
|
1277
|
-
release_material_digest: snapshotColumn('release_material_digest', 'text'),
|
|
1278
|
-
run_id: snapshotColumn('run_id', 'text'),
|
|
1279
|
-
scenario_id: snapshotColumn('scenario_id', 'text'),
|
|
1280
|
-
source_commit: snapshotColumn('source_commit', 'text'),
|
|
1281
|
-
stage: snapshotColumn('stage', 'text'),
|
|
1282
|
-
}, {}, {}, {
|
|
1283
|
-
performance_load_runs_expires_at_idx: snapshotIndex('performance_load_runs_expires_at_idx', [
|
|
1284
|
-
{
|
|
1285
|
-
expression: 'expires_at',
|
|
1286
|
-
opclass: 'timestamptz_ops',
|
|
1287
|
-
},
|
|
1288
|
-
]),
|
|
1289
|
-
}),
|
|
1290
|
-
'public.performance_load_requests': snapshotTable('performance_load_requests', {
|
|
1291
|
-
claimed_at: snapshotColumn('claimed_at', 'timestamp with time zone', { default: 'now()' }),
|
|
1292
|
-
effect_id: snapshotColumn('effect_id', 'text', {
|
|
1293
|
-
notNull: false,
|
|
1294
|
-
}),
|
|
1295
|
-
plan_digest: snapshotColumn('plan_digest', 'text'),
|
|
1296
|
-
request_ordinal: snapshotColumn('request_ordinal', 'integer'),
|
|
1297
|
-
}, {}, {
|
|
1298
|
-
performance_load_requests_plan_digest_request_ordinal_pk: {
|
|
1299
|
-
columns: ['plan_digest', 'request_ordinal'],
|
|
1300
|
-
name: 'performance_load_requests_plan_digest_request_ordinal_pk',
|
|
1301
|
-
},
|
|
1302
|
-
}),
|
|
1303
|
-
'public.performance_load_async_effects': snapshotTable('performance_load_async_effects', {
|
|
1304
|
-
created_at: snapshotColumn('created_at', 'timestamp with time zone', { default: 'now()' }),
|
|
1305
|
-
effect_id: snapshotColumn('effect_id', 'text', {
|
|
1306
|
-
primaryKey: true,
|
|
1307
|
-
}),
|
|
1308
|
-
expires_at: snapshotColumn('expires_at', 'timestamp with time zone'),
|
|
1309
|
-
plan_digest: snapshotColumn('plan_digest', 'text'),
|
|
1310
|
-
processed_at: snapshotColumn('processed_at', 'timestamp with time zone', { notNull: false }),
|
|
1311
|
-
run_id: snapshotColumn('run_id', 'text'),
|
|
1312
|
-
}, {}, {}, {
|
|
1313
|
-
performance_load_async_effects_expires_at_idx: snapshotIndex('performance_load_async_effects_expires_at_idx', [
|
|
1314
|
-
{
|
|
1315
|
-
expression: 'expires_at',
|
|
1316
|
-
opclass: 'timestamptz_ops',
|
|
1317
|
-
},
|
|
1318
|
-
]),
|
|
1319
|
-
performance_load_async_effects_pending_idx: snapshotIndex('performance_load_async_effects_pending_idx', [
|
|
1320
|
-
{
|
|
1321
|
-
expression: 'processed_at',
|
|
1322
|
-
opclass: 'timestamptz_ops',
|
|
1323
|
-
},
|
|
1324
|
-
{
|
|
1325
|
-
expression: 'expires_at',
|
|
1326
|
-
opclass: 'timestamptz_ops',
|
|
1327
|
-
},
|
|
1328
|
-
]),
|
|
1329
|
-
performance_load_async_effects_run_idx: snapshotIndex('performance_load_async_effects_run_idx', [
|
|
1330
|
-
{
|
|
1331
|
-
expression: 'plan_digest',
|
|
1332
|
-
opclass: 'text_ops',
|
|
1333
|
-
},
|
|
1334
|
-
{
|
|
1335
|
-
expression: 'run_id',
|
|
1336
|
-
opclass: 'text_ops',
|
|
1337
|
-
},
|
|
1338
|
-
]),
|
|
1339
|
-
}),
|
|
1340
|
-
'public.ebk_inbox': snapshotTable('ebk_inbox', {
|
|
1341
|
-
attempts: snapshotColumn('attempts', 'integer', { default: '0' }),
|
|
1342
|
-
completed_at: snapshotColumn('completed_at', 'timestamp with time zone', { notNull: false }),
|
|
1343
|
-
expires_at: snapshotColumn('expires_at', 'timestamp with time zone'),
|
|
1344
|
-
first_seen_at: snapshotColumn('first_seen_at', 'timestamp with time zone', { default: 'now()' }),
|
|
1345
|
-
handler_id: snapshotColumn('handler_id', 'text'),
|
|
1346
|
-
handler_version: snapshotColumn('handler_version', 'text'),
|
|
1347
|
-
last_attempt_at: snapshotColumn('last_attempt_at', 'timestamp with time zone'),
|
|
1348
|
-
message_id: snapshotColumn('message_id', 'text'),
|
|
1349
|
-
payload_digest: snapshotColumn('payload_digest', 'text'),
|
|
1350
|
-
result_reference: snapshotColumn('result_reference', 'text', {
|
|
1351
|
-
notNull: false,
|
|
1352
|
-
}),
|
|
1353
|
-
status: snapshotColumn('status', 'text'),
|
|
1354
|
-
}, {}, {
|
|
1355
|
-
ebk_inbox_handler_id_message_id_pk: {
|
|
1356
|
-
columns: ['handler_id', 'message_id'],
|
|
1357
|
-
name: 'ebk_inbox_handler_id_message_id_pk',
|
|
1358
|
-
},
|
|
1359
|
-
}, {
|
|
1360
|
-
ebk_inbox_expires_at_idx: snapshotIndex('ebk_inbox_expires_at_idx', [
|
|
1361
|
-
{
|
|
1362
|
-
expression: 'expires_at',
|
|
1363
|
-
opclass: 'timestamptz_ops',
|
|
1364
|
-
},
|
|
1365
|
-
]),
|
|
1366
|
-
}),
|
|
1367
|
-
'public.data_lifecycle_requests': snapshotTable('data_lifecycle_requests', {
|
|
1368
|
-
approval_request_id: snapshotColumn('approval_request_id', 'uuid'),
|
|
1369
|
-
id: snapshotColumn('id', 'uuid', { primaryKey: true }),
|
|
1370
|
-
request_json: snapshotColumn('request_json', 'jsonb'),
|
|
1371
|
-
revision: snapshotColumn('revision', 'integer'),
|
|
1372
|
-
status: snapshotColumn('status', 'text'),
|
|
1373
|
-
updated_at: snapshotColumn('updated_at', 'timestamp with time zone', { default: 'now()' }),
|
|
1374
|
-
}, {
|
|
1375
|
-
data_lifecycle_requests_approval_request_id_unique: {
|
|
1376
|
-
columns: ['approval_request_id'],
|
|
1377
|
-
name: 'data_lifecycle_requests_approval_request_id_unique',
|
|
1378
|
-
nullsNotDistinct: false,
|
|
1379
|
-
},
|
|
1380
|
-
}),
|
|
1381
|
-
'public.data_lifecycle_receipts': snapshotTable('data_lifecycle_receipts', {
|
|
1382
|
-
action: snapshotColumn('action', 'text'),
|
|
1383
|
-
occurred_at: snapshotColumn('occurred_at', 'timestamp with time zone'),
|
|
1384
|
-
policy_version: snapshotColumn('policy_version', 'text'),
|
|
1385
|
-
pseudonymous_key: snapshotColumn('pseudonymous_key', 'text'),
|
|
1386
|
-
received_at: snapshotColumn('received_at', 'timestamp with time zone', { default: 'now()' }),
|
|
1387
|
-
request_ref: snapshotColumn('request_ref', 'text'),
|
|
1388
|
-
source_slice: snapshotColumn('source_slice', 'text'),
|
|
1389
|
-
}, {}, {
|
|
1390
|
-
data_lifecycle_receipts_source_slice_pseudonymous_key_action_request_ref_pk: {
|
|
1391
|
-
columns: [
|
|
1392
|
-
'source_slice',
|
|
1393
|
-
'pseudonymous_key',
|
|
1394
|
-
'action',
|
|
1395
|
-
'request_ref',
|
|
1396
|
-
],
|
|
1397
|
-
name: 'data_lifecycle_receipts_source_slice_pseudonymous_key_action_request_ref_pk',
|
|
1398
|
-
},
|
|
1399
|
-
}),
|
|
1400
|
-
'public.data_lifecycle_retention_runs': snapshotTable('data_lifecycle_retention_runs', {
|
|
1401
|
-
approval_request_id: snapshotColumn('approval_request_id', 'uuid', {
|
|
1402
|
-
notNull: false,
|
|
1403
|
-
}),
|
|
1404
|
-
as_of: snapshotColumn('as_of', 'timestamp with time zone'),
|
|
1405
|
-
checkpoint_json: snapshotColumn('checkpoint_json', 'jsonb'),
|
|
1406
|
-
completed_at: snapshotColumn('completed_at', 'timestamp with time zone', { notNull: false }),
|
|
1407
|
-
counts_json: snapshotColumn('counts_json', 'jsonb'),
|
|
1408
|
-
expires_at: snapshotColumn('expires_at', 'timestamp with time zone'),
|
|
1409
|
-
id: snapshotColumn('id', 'uuid', { primaryKey: true }),
|
|
1410
|
-
plan_json: snapshotColumn('plan_json', 'jsonb'),
|
|
1411
|
-
policy_version: snapshotColumn('policy_version', 'text'),
|
|
1412
|
-
revision: snapshotColumn('revision', 'integer'),
|
|
1413
|
-
status: snapshotColumn('status', 'text'),
|
|
1414
|
-
updated_at: snapshotColumn('updated_at', 'timestamp with time zone', { default: 'now()' }),
|
|
1415
|
-
}, {
|
|
1416
|
-
data_lifecycle_retention_runs_approval_request_id_unique: {
|
|
1417
|
-
columns: ['approval_request_id'],
|
|
1418
|
-
name: 'data_lifecycle_retention_runs_approval_request_id_unique',
|
|
1419
|
-
nullsNotDistinct: false,
|
|
1420
|
-
},
|
|
1421
|
-
}),
|
|
1422
|
-
'public.data_lifecycle_retention_candidates': snapshotTable('data_lifecycle_retention_candidates', {
|
|
1423
|
-
candidate_order: snapshotColumn('candidate_order', 'text'),
|
|
1424
|
-
due_at: snapshotColumn('due_at', 'timestamp with time zone'),
|
|
1425
|
-
record_id: snapshotColumn('record_id', 'uuid'),
|
|
1426
|
-
record_ref: snapshotColumn('record_ref', 'text'),
|
|
1427
|
-
run_id: snapshotColumn('run_id', 'uuid'),
|
|
1428
|
-
}, {}, {
|
|
1429
|
-
data_lifecycle_retention_candidates_run_id_candidate_order_pk: {
|
|
1430
|
-
columns: ['run_id', 'candidate_order'],
|
|
1431
|
-
name: 'data_lifecycle_retention_candidates_run_id_candidate_order_pk',
|
|
1432
|
-
},
|
|
1433
|
-
}),
|
|
1434
|
-
'public.delegation_grants': snapshotTable('delegation_grants', {
|
|
1435
|
-
capability_digest: snapshotColumn('capability_digest', 'text'),
|
|
1436
|
-
created_at: snapshotColumn('created_at', 'timestamp with time zone', {
|
|
1437
|
-
default: 'now()',
|
|
1438
|
-
}),
|
|
1439
|
-
expires_at: snapshotColumn('expires_at', 'timestamp with time zone'),
|
|
1440
|
-
grant_json: snapshotColumn('grant_json', 'jsonb'),
|
|
1441
|
-
id: snapshotColumn('id', 'uuid', { primaryKey: true }),
|
|
1442
|
-
issued_at: snapshotColumn('issued_at', 'timestamp with time zone'),
|
|
1443
|
-
policy_version: snapshotColumn('policy_version', 'text'),
|
|
1444
|
-
revision: snapshotColumn('revision', 'integer'),
|
|
1445
|
-
status: snapshotColumn('status', 'text'),
|
|
1446
|
-
}),
|
|
1447
|
-
'public.records': snapshotTable('records', {
|
|
1448
|
-
created_at: snapshotColumn('created_at', 'timestamp with time zone', {
|
|
1449
|
-
default: 'now()',
|
|
1450
|
-
}),
|
|
1451
|
-
id: snapshotColumn('id', 'uuid', {
|
|
1452
|
-
default: 'gen_random_uuid()',
|
|
1453
|
-
primaryKey: true,
|
|
1454
|
-
}),
|
|
1455
|
-
last_activity_at: snapshotColumn('last_activity_at', 'timestamp with time zone', { default: 'now()' }),
|
|
1456
|
-
name: snapshotColumn('name', 'text'),
|
|
1457
|
-
owner_id: snapshotColumn('owner_id', 'text'),
|
|
1458
|
-
run_scope: snapshotColumn('run_scope', 'text'),
|
|
1459
|
-
test_expires_at: snapshotColumn('test_expires_at', 'timestamp with time zone', { notNull: false }),
|
|
1460
|
-
}, {}, {}, {
|
|
1461
|
-
records_performance_expiry_idx: snapshotIndex('records_performance_expiry_idx', [
|
|
1462
|
-
{ expression: 'owner_id', opclass: 'text_ops' },
|
|
1463
|
-
{ expression: 'name', opclass: 'text_ops' },
|
|
1464
|
-
{
|
|
1465
|
-
expression: 'test_expires_at',
|
|
1466
|
-
opclass: 'timestamptz_ops',
|
|
1467
|
-
},
|
|
1468
|
-
]),
|
|
1469
|
-
records_performance_run_scope_idx: snapshotIndex('records_performance_run_scope_idx', [
|
|
1470
|
-
{ expression: 'owner_id', opclass: 'text_ops' },
|
|
1471
|
-
{ expression: 'name', opclass: 'text_ops' },
|
|
1472
|
-
{ expression: 'run_scope', opclass: 'text_ops' },
|
|
1473
|
-
]),
|
|
1474
|
-
}),
|
|
1475
416
|
},
|
|
1476
417
|
enums: {},
|
|
1477
418
|
schemas: {},
|
|
@@ -1491,15 +432,20 @@ const plan = createDatabaseBindingPlan(databaseBindings, {
|
|
|
1491
432
|
});
|
|
1492
433
|
const activeDatabase = plan.active.primary;
|
|
1493
434
|
if (!activeDatabase) throw new Error('Database binding "primary" is required.');
|
|
1494
|
-
|
|
435
|
+
// Schema-only commands stay offline; connection commands require the owned allocation.
|
|
436
|
+
const schemaOnly = process.argv[2] === 'generate' || process.argv[2] === 'check';
|
|
437
|
+
const localDatabase = schemaOnly || process.env.DATABASE_URL ? undefined : resolveLocalDatabaseContract({
|
|
1495
438
|
database: activeDatabase,
|
|
1496
439
|
slice: '${name}',
|
|
1497
440
|
});
|
|
441
|
+
const databaseUrl = process.env.DATABASE_URL ?? (localDatabase
|
|
442
|
+
? \`postgresql://\${encodeURIComponent(localDatabase.username)}:\${encodeURIComponent(localDatabase.password)}@\${localDatabase.host}:\${localDatabase.port}/\${localDatabase.database}\`
|
|
443
|
+
: undefined);
|
|
1498
444
|
|
|
1499
445
|
export default defineConfig({
|
|
1500
|
-
|
|
1501
|
-
url:
|
|
1502
|
-
},
|
|
446
|
+
...(!schemaOnly && databaseUrl ? {
|
|
447
|
+
dbCredentials: { url: databaseUrl },
|
|
448
|
+
} : {}),
|
|
1503
449
|
dialect: 'postgresql',
|
|
1504
450
|
out: './database/migrations',
|
|
1505
451
|
schema: './database/schema.ts',
|
|
@@ -1508,6 +454,11 @@ export default defineConfig({
|
|
|
1508
454
|
'database/docker-compose.yml': `services:
|
|
1509
455
|
database:
|
|
1510
456
|
image: postgres:17-alpine
|
|
457
|
+
container_name: \${EBK_LOCAL_DATABASE_PROJECT}-database
|
|
458
|
+
labels:
|
|
459
|
+
dev.ebk.task: \${EBK_LOCAL_DATABASE_TASK}
|
|
460
|
+
dev.ebk.slice: \${EBK_LOCAL_DATABASE_SLICE}
|
|
461
|
+
dev.ebk.database: \${EBK_LOCAL_DATABASE_LOGICAL}
|
|
1511
462
|
environment:
|
|
1512
463
|
POSTGRES_DB: \${EBK_LOCAL_DATABASE}
|
|
1513
464
|
POSTGRES_PASSWORD: \${EBK_LOCAL_DATABASE_PASSWORD}
|
|
@@ -1518,13 +469,29 @@ export default defineConfig({
|
|
|
1518
469
|
timeout: 3s
|
|
1519
470
|
retries: 15
|
|
1520
471
|
ports:
|
|
1521
|
-
- '
|
|
472
|
+
- '127.0.0.1:\${EBK_LOCAL_DATABASE_PORT}:5432'
|
|
1522
473
|
volumes:
|
|
1523
474
|
- database-data:/var/lib/postgresql/data
|
|
1524
475
|
|
|
1525
476
|
volumes:
|
|
1526
477
|
database-data:
|
|
478
|
+
name: \${EBK_LOCAL_DATABASE_PROJECT}-data
|
|
479
|
+
labels:
|
|
480
|
+
dev.ebk.task: \${EBK_LOCAL_DATABASE_TASK}
|
|
481
|
+
dev.ebk.slice: \${EBK_LOCAL_DATABASE_SLICE}
|
|
482
|
+
dev.ebk.database: \${EBK_LOCAL_DATABASE_LOGICAL}
|
|
483
|
+
|
|
484
|
+
networks:
|
|
485
|
+
default:
|
|
486
|
+
name: \${EBK_LOCAL_DATABASE_PROJECT}-network
|
|
487
|
+
labels:
|
|
488
|
+
dev.ebk.task: \${EBK_LOCAL_DATABASE_TASK}
|
|
489
|
+
dev.ebk.slice: \${EBK_LOCAL_DATABASE_SLICE}
|
|
490
|
+
dev.ebk.database: \${EBK_LOCAL_DATABASE_LOGICAL}
|
|
1527
491
|
`,
|
|
1528
492
|
};
|
|
493
|
+
return Object.fromEntries(Object.entries(files).filter(([path]) => sql ||
|
|
494
|
+
(!path.startsWith('database/') &&
|
|
495
|
+
path !== 'docs/runbooks/database-credential-rotation.md')));
|
|
1529
496
|
}
|
|
1530
497
|
//# sourceMappingURL=built-in-plan-data-files.js.map
|