@empire-builder-kit/nx 1.0.0-rc.38 → 1.0.0-rc.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -0
- package/executors.json +5 -0
- package/generators.json +10 -0
- package/package.json +20 -3
- package/src/aws-authority/index.d.ts +1 -0
- package/src/aws-authority/index.js +1 -0
- package/src/aws-authority/lambda-policy-ordering.d.ts +38 -0
- package/src/aws-authority/lambda-policy-ordering.js +56 -0
- package/src/aws-authority/stage-authority.d.ts +11 -3
- package/src/aws-authority/stage-authority.js +615 -29
- package/src/blueprints/external-sandbox.js +21 -9
- package/src/blueprints/manifest.d.ts +1 -1
- package/src/blueprints/resolver.js +28 -15
- package/src/cli/bootstrap.d.ts +1 -1
- package/src/cli/deploy-runtime.d.ts +6 -0
- package/src/cli/deploy-runtime.js +58 -0
- package/src/cli/dev-command.d.ts +16 -4
- package/src/cli/dev-command.js +63 -0
- package/src/cli/main.d.ts +7 -1
- package/src/cli/main.js +128 -20
- package/src/cli/output.d.ts +1 -1
- package/src/developer-agent/context.js +41 -9
- package/src/developer-agent/generator-planning.js +16 -2
- package/src/developer-agent/git-inspection.d.ts +6 -2
- package/src/developer-agent/git-inspection.js +78 -6
- package/src/developer-agent/model.d.ts +4 -2
- package/src/developer-agent/operation-registry.d.ts +5 -0
- package/src/developer-agent/operation-registry.js +179 -23
- package/src/developer-agent/preview-changes.d.ts +2 -0
- package/src/developer-agent/preview-changes.js +14 -2
- package/src/developer-agent/preview-source.js +3 -0
- package/src/developer-agent/validation.js +20 -8
- package/src/developer-agent/workspace-inspection.js +37 -3
- package/src/executors/deployment-plan/deployment-plan.d.ts +2 -0
- package/src/executors/deployment-plan/deployment-plan.js +51 -4
- package/src/executors/dev-doctor/dev-doctor.js +13 -6
- package/src/executors/dev-task-cleanup/dev-task-cleanup.d.ts +23 -0
- package/src/executors/dev-task-cleanup/dev-task-cleanup.js +145 -0
- package/src/executors/dev-task-cleanup/schema.json +9 -0
- package/src/executors/dev-task-cleanup/task-stack-absence.d.ts +27 -0
- package/src/executors/dev-task-cleanup/task-stack-absence.js +281 -0
- package/src/executors/dev-task-cleanup/task-stack-checkpoint.d.ts +12 -0
- package/src/executors/dev-task-cleanup/task-stack-checkpoint.js +92 -0
- package/src/executors/fleet/fleet.js +1 -1
- package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js +28 -1
- package/src/executors/local-deploy/local-deploy.d.ts +8 -1
- package/src/executors/local-deploy/local-deploy.js +97 -24
- package/src/executors/local-deploy/schema.json +8 -0
- package/src/executors/router-waf-rehearsal/router-waf-rehearsal.js +30 -18
- package/src/executors/sst-lifecycle/governed-native-operation.d.ts +2 -0
- package/src/executors/sst-lifecycle/governed-native-operation.js +9 -0
- package/src/executors/sst-lifecycle/run-sst-command.d.ts +5 -0
- package/src/executors/sst-lifecycle/run-sst-command.js +220 -32
- package/src/executors/sst-lifecycle/sst-environment-source.d.ts +8 -0
- package/src/executors/sst-lifecycle/sst-environment-source.js +54 -0
- package/src/executors/sst-lifecycle/task-unlock.d.ts +15 -0
- package/src/executors/sst-lifecycle/task-unlock.js +126 -0
- package/src/foundation/capability-plan.d.ts +43 -0
- package/src/foundation/capability-plan.js +168 -0
- package/src/foundation/discovery.d.ts +14 -11
- package/src/foundation/discovery.js +32 -6
- package/src/foundation/index.d.ts +1 -0
- package/src/foundation/index.js +1 -0
- package/src/foundation/local-database-contract.d.ts +20 -0
- package/src/foundation/local-database-contract.js +262 -13
- package/src/foundation/local-private-smoke-access.d.ts +20 -0
- package/src/foundation/local-private-smoke-access.js +197 -0
- package/src/foundation/preflight.js +37 -18
- package/src/foundation/private-smoke-access.js +10 -2
- package/src/foundation/private-smoke-admission.d.ts +3 -1
- package/src/foundation/private-smoke-admission.js +29 -8
- package/src/foundation/private-smoke-control-plane.js +17 -6
- package/src/foundation/provision-database-bindings.d.ts +5 -0
- package/src/foundation/provision-database-bindings.js +41 -8
- package/src/foundation/provision-logical-database.js +13 -8
- package/src/foundation/requirements.d.ts +3 -3
- package/src/foundation/requirements.js +24 -12
- package/src/foundation/router-waf.d.ts +1 -0
- package/src/foundation/router-waf.js +14 -1
- package/src/generators/blueprint/blueprint.d.ts +5 -0
- package/src/generators/blueprint/blueprint.js +102 -0
- package/src/generators/blueprint/files.d.ts +6 -0
- package/src/generators/blueprint/files.js +217 -0
- package/src/generators/blueprint/schema.d.ts +4 -0
- package/src/generators/blueprint/schema.json +18 -0
- package/src/generators/formatting.js +24 -1
- package/src/generators/logging-registry.d.ts +2 -0
- package/src/generators/logging-registry.js +22 -0
- package/src/generators/preset/workspace-files-adopter-skills.d.ts +7 -0
- package/src/generators/preset/workspace-files-adopter-skills.js +301 -0
- package/src/generators/preset/workspace-files-ci-install.d.ts +2 -0
- package/src/generators/preset/workspace-files-ci-install.js +196 -0
- package/src/generators/preset/workspace-files-developer-agent.js +40 -13
- package/src/generators/preset/workspace-files-performance-load.js +8 -0
- package/src/generators/preset/workspace-files-stage-authority.js +40 -1
- package/src/generators/preset/workspace-files-thin-deploy.js +66 -34
- package/src/generators/preset/workspace-files-thin-docs.js +64 -18
- package/src/generators/preset/workspace-files.d.ts +4 -0
- package/src/generators/preset/workspace-files.js +159 -91
- package/src/generators/repository-policy/repository-policy.js +37 -0
- package/src/generators/slice/built-in-plan-api-contract-files.js +42 -7
- package/src/generators/slice/built-in-plan-api-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-api-files.js +47 -389
- package/src/generators/slice/built-in-plan-async-work-files.js +19 -1912
- package/src/generators/slice/built-in-plan-authorization-files.js +92 -329
- package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js +36 -2
- package/src/generators/slice/built-in-plan-authorization-storage.d.ts +3 -0
- package/src/generators/slice/built-in-plan-authorization-storage.js +119 -0
- package/src/generators/slice/built-in-plan-background-work-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-background-work-files.js +15 -5
- package/src/generators/slice/built-in-plan-data-deletion-files.js +2 -830
- package/src/generators/slice/built-in-plan-data-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-data-files.js +61 -1164
- package/src/generators/slice/built-in-plan-data-lifecycle-files.js +53 -28
- package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js +18 -2
- package/src/generators/slice/built-in-plan-data-retention-job-files.js +7 -2446
- package/src/generators/slice/built-in-plan-data-retention-launcher-files.js +30 -6
- package/src/generators/slice/built-in-plan-data-rights-files.js +6 -4482
- package/src/generators/slice/built-in-plan-database-lifecycle-files.js +4 -15
- package/src/generators/slice/built-in-plan-foundation-files.d.ts +2 -1
- package/src/generators/slice/built-in-plan-foundation-files.js +34 -10
- package/src/generators/slice/built-in-plan-frontend-files.js +2 -2
- package/src/generators/slice/built-in-plan-infrastructure-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-infrastructure-files.js +180 -522
- package/src/generators/slice/built-in-plan-key-value-cleanup.d.ts +4 -0
- package/src/generators/slice/built-in-plan-key-value-cleanup.js +100 -0
- package/src/generators/slice/built-in-plan-key-value-consumer.d.ts +4 -0
- package/src/generators/slice/built-in-plan-key-value-consumer.js +151 -0
- package/src/generators/slice/built-in-plan-key-value-deletion.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-deletion.js +377 -0
- package/src/generators/slice/built-in-plan-key-value-delivery.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-delivery.js +120 -0
- package/src/generators/slice/built-in-plan-key-value-export.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-export.js +595 -0
- package/src/generators/slice/built-in-plan-key-value-files.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-files.js +31 -0
- package/src/generators/slice/built-in-plan-key-value-holds.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-holds.js +189 -0
- package/src/generators/slice/built-in-plan-key-value-infrastructure.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-infrastructure.js +102 -0
- package/src/generators/slice/built-in-plan-key-value-performance.d.ts +5 -0
- package/src/generators/slice/built-in-plan-key-value-performance.js +530 -0
- package/src/generators/slice/built-in-plan-key-value-provider.d.ts +4 -0
- package/src/generators/slice/built-in-plan-key-value-provider.js +366 -0
- package/src/generators/slice/built-in-plan-key-value-records.d.ts +3 -0
- package/src/generators/slice/built-in-plan-key-value-records.js +232 -0
- package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.js +103 -0
- package/src/generators/slice/built-in-plan-key-value-retention-job-files.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-retention-job-files.js +160 -0
- package/src/generators/slice/built-in-plan-key-value-retention-maintenance.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-retention-maintenance.js +329 -0
- package/src/generators/slice/built-in-plan-key-value-retention-worker.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-retention-worker.js +477 -0
- package/src/generators/slice/built-in-plan-key-value-retention.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-retention.js +184 -0
- package/src/generators/slice/built-in-plan-metadata-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-metadata-files.js +140 -28
- package/src/generators/slice/built-in-plan-native-runtime-authority-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-native-runtime-authority-files.js +36 -19
- package/src/generators/slice/built-in-plan-operations-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-operations-files.js +89 -50
- package/src/generators/slice/built-in-plan-performance-files.js +84 -1010
- package/src/generators/slice/built-in-plan-project-files.js +116 -67
- package/src/generators/slice/built-in-plan-release-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-release-files.js +64 -15
- package/src/generators/slice/built-in-plan-reliability-files.js +54 -28
- package/src/generators/slice/built-in-plan-shared.d.ts +3 -1
- package/src/generators/slice/built-in-plan-shared.js +40 -18
- package/src/generators/slice/built-in-plan-sql-events.d.ts +2 -0
- package/src/generators/slice/built-in-plan-sql-events.js +257 -0
- package/src/generators/slice/built-in-plan-testing-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-testing-files.js +184 -132
- package/src/generators/slice/built-in-plan-testing-persistence-files.d.ts +2 -0
- package/src/generators/slice/built-in-plan-testing-persistence-files.js +178 -0
- package/src/generators/slice/built-in-plan-thin-release-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-thin-release-files.js +35 -2
- package/src/generators/slice/built-in-plan-verification-files.js +70 -0
- package/src/generators/slice/built-in-plan-web-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-web-files.js +191 -14
- package/src/generators/slice/built-in-plan-workload-role-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-workload-role-files.js +113 -274
- package/src/generators/slice/built-in-plan.d.ts +9 -1
- package/src/generators/slice/built-in-plan.js +49 -21
- package/src/generators/slice/data-policy-review-seed.d.ts +2 -0
- package/src/generators/slice/data-policy-review-seed.js +22 -0
- package/src/generators/slice/deployed-smoke-readiness.d.ts +2 -0
- package/src/generators/slice/deployed-smoke-readiness.js +214 -0
- package/src/generators/slice/local-source-identity.d.ts +2 -0
- package/src/generators/slice/local-source-identity.js +31 -0
- package/src/generators/slice/persistence-contract.d.ts +14 -0
- package/src/generators/slice/persistence-contract.js +32 -0
- package/src/generators/slice/slice.js +29 -24
- package/src/generators/sql/schema.d.ts +7 -0
- package/src/generators/sql/schema.json +38 -0
- package/src/generators/sql/sql.d.ts +6 -0
- package/src/generators/sql/sql.js +53 -0
- package/src/generators/upgrade/sql-seeded-reconciliation.d.ts +2 -0
- package/src/generators/upgrade/sql-seeded-reconciliation.js +170 -0
- package/src/generators/upgrade/upgrade.d.ts +2 -0
- package/src/generators/upgrade/upgrade.js +136 -9
- package/src/generators/workload/workload.js +51 -2
- package/src/local-dev/browser-verification.d.ts +37 -0
- package/src/local-dev/browser-verification.js +281 -0
- package/src/local-dev/contracts.d.ts +10 -1
- package/src/local-dev/contracts.js +114 -13
- package/src/local-dev/dev-command-core.js +24 -5
- package/src/local-dev/docker-credential-health.d.ts +14 -0
- package/src/local-dev/docker-credential-health.js +94 -0
- package/src/local-dev/environment-inspector.d.ts +7 -0
- package/src/local-dev/environment-inspector.js +42 -15
- package/src/local-dev/environment-state.js +2 -2
- package/src/local-dev/errors.d.ts +1 -1
- package/src/local-dev/errors.js +2 -0
- package/src/local-dev/fleet-client.js +2 -2
- package/src/local-dev/fleet-configuration.js +57 -25
- package/src/local-dev/fleet-inventory.js +46 -18
- package/src/local-dev/fleet-ipc.d.ts +7 -0
- package/src/local-dev/fleet-ipc.js +14 -2
- package/src/local-dev/fleet-launcher.d.ts +6 -0
- package/src/local-dev/fleet-launcher.js +14 -2
- package/src/local-dev/fleet-logs.js +50 -22
- package/src/local-dev/fleet-process.d.ts +20 -1
- package/src/local-dev/fleet-process.js +197 -41
- package/src/local-dev/fleet-runner-evidence.d.ts +5 -0
- package/src/local-dev/fleet-runner-evidence.js +56 -0
- package/src/local-dev/fleet-runtime.js +268 -229
- package/src/local-dev/fleet-session.d.ts +2 -0
- package/src/local-dev/fleet-session.js +28 -11
- package/src/local-dev/fleet-slice-runner-daemon.js +4 -0
- package/src/local-dev/fleet-state.d.ts +5 -2
- package/src/local-dev/fleet-state.js +25 -4
- package/src/local-dev/fleet-supervisor.d.ts +3 -0
- package/src/local-dev/fleet-supervisor.js +66 -11
- package/src/local-dev/fleet-web-start.d.ts +12 -0
- package/src/local-dev/fleet-web-start.js +48 -0
- package/src/local-dev/identity.js +3 -14
- package/src/local-dev/index.d.ts +1 -0
- package/src/local-dev/index.js +1 -0
- package/src/local-dev/native-completion.d.ts +9 -0
- package/src/local-dev/native-completion.js +130 -0
- package/src/local-dev/nx-workspace.d.ts +4 -2
- package/src/local-dev/nx-workspace.js +11 -6
- package/src/local-dev/personal-stage.d.ts +4 -5
- package/src/local-dev/personal-stage.js +6 -54
- package/src/local-dev/port-claims.d.ts +13 -0
- package/src/local-dev/port-claims.js +46 -0
- package/src/local-dev/ports.d.ts +14 -2
- package/src/local-dev/ports.js +78 -3
- package/src/local-dev/private-state.d.ts +6 -0
- package/src/local-dev/private-state.js +126 -34
- package/src/local-dev/process-group.d.ts +4 -0
- package/src/local-dev/process-group.js +29 -0
- package/src/local-dev/process-identity.d.ts +8 -0
- package/src/local-dev/process-identity.js +31 -1
- package/src/local-dev/proxy.js +11 -12
- package/src/local-dev/runtime-paths.js +1 -1
- package/src/local-dev/slice-claim.js +1 -1
- package/src/local-dev/slice-runner.d.ts +15 -6
- package/src/local-dev/slice-runner.js +189 -54
- package/src/local-dev/task-attachment.d.ts +17 -0
- package/src/local-dev/task-attachment.js +73 -0
- package/src/local-dev/task-authority.d.ts +10 -0
- package/src/local-dev/task-authority.js +27 -0
- package/src/local-dev/task-identity.d.ts +33 -0
- package/src/local-dev/task-identity.js +418 -0
- package/src/local-dev/task-native-writer.d.ts +18 -0
- package/src/local-dev/task-native-writer.js +329 -0
- package/src/local-dev/tls.js +3 -1
- package/src/local-dev/web-launch.d.ts +9 -0
- package/src/local-dev/web-launch.js +130 -0
- package/src/ownership/composition.d.ts +2 -1
- package/src/ownership/composition.js +1 -0
- package/src/performance/scenario.d.ts +22 -0
- package/src/performance/scenario.js +100 -92
- package/src/repository-policy/deployment-plan.d.ts +2 -2
- package/src/repository-policy/deployment-plan.js +2 -1
- package/src/repository-policy/policy.js +38 -3
- package/src/schemas/blueprint-v1.json +5 -4
- package/src/schemas/foundation-requirement-v1.json +5 -4
- package/src/schemas/testing-evidence-result-v1.json +1 -1
- package/src/secrets/operator.d.ts +3 -1
- package/src/secrets/operator.js +22 -3
- package/src/sst-environment-source-format.d.ts +3 -0
- package/src/sst-environment-source-format.js +20 -0
- package/src/supply-chain/blueprint-trust-git.js +13 -3
- package/src/supply-chain/build-output.js +15 -0
- package/src/supply-chain/generated-blueprint-trust-command.js +18 -1
- package/src/testing-evidence/fixture-scope.d.ts +2 -1
- package/src/testing-evidence/fixture-scope.js +4 -2
- package/src/testing-evidence/result.d.ts +2 -1
- package/src/testing-evidence/result.js +18 -4
- package/src/workload-roles/standard-slice.js +2 -3
- package/src/api-contract/baseline-update.js.map +0 -1
- package/src/api-contract/compatibility.js.map +0 -1
- package/src/api-contract/contract-graph.js.map +0 -1
- package/src/api-contract/evidence.js.map +0 -1
- package/src/api-contract/index.js.map +0 -1
- package/src/api-contract/model.fixtures.d.ts +0 -2
- package/src/api-contract/model.fixtures.js +0 -81
- package/src/api-contract/model.fixtures.js.map +0 -1
- package/src/api-contract/model.js.map +0 -1
- package/src/api-contract/rollout.js.map +0 -1
- package/src/authorization/compatibility.js.map +0 -1
- package/src/authorization/index.js.map +0 -1
- package/src/aws/child-environment.js.map +0 -1
- package/src/aws/identity.js.map +0 -1
- package/src/aws-authority/index.js.map +0 -1
- package/src/aws-authority/stage-authority.js.map +0 -1
- package/src/blueprints/execution.js.map +0 -1
- package/src/blueprints/external-sandbox.js.map +0 -1
- package/src/blueprints/index.js.map +0 -1
- package/src/blueprints/inputs.js.map +0 -1
- package/src/blueprints/manifest.js.map +0 -1
- package/src/blueprints/resolver.js.map +0 -1
- package/src/blueprints/transitions.js.map +0 -1
- package/src/cli/agent-command.js.map +0 -1
- package/src/cli/agent-runtime.js.map +0 -1
- package/src/cli/blueprint-authority.js.map +0 -1
- package/src/cli/blueprint-command.js.map +0 -1
- package/src/cli/bootstrap.js.map +0 -1
- package/src/cli/dev-command.js.map +0 -1
- package/src/cli/main.js.map +0 -1
- package/src/cli/output.js.map +0 -1
- package/src/cli/personal-secret-runtime.js.map +0 -1
- package/src/cli/secret-terminal.js.map +0 -1
- package/src/container-images.js.map +0 -1
- package/src/data-lifecycle/index.js.map +0 -1
- package/src/data-lifecycle/model.fixtures.d.ts +0 -2
- package/src/data-lifecycle/model.fixtures.js +0 -244
- package/src/data-lifecycle/model.fixtures.js.map +0 -1
- package/src/data-lifecycle/model.js.map +0 -1
- package/src/data-lifecycle/sensitive-artifacts.js.map +0 -1
- package/src/data-lifecycle/validation.js.map +0 -1
- package/src/database-retirement/contract.js.map +0 -1
- package/src/database-retirement/index.js.map +0 -1
- package/src/deterministic-order.js.map +0 -1
- package/src/developer-agent/context.js.map +0 -1
- package/src/developer-agent/generator-planning.js.map +0 -1
- package/src/developer-agent/generator-preview.js.map +0 -1
- package/src/developer-agent/git-inspection.js.map +0 -1
- package/src/developer-agent/handoff.js.map +0 -1
- package/src/developer-agent/index.js.map +0 -1
- package/src/developer-agent/model.js.map +0 -1
- package/src/developer-agent/operation-registry.js.map +0 -1
- package/src/developer-agent/ordering.js.map +0 -1
- package/src/developer-agent/planning.js.map +0 -1
- package/src/developer-agent/preview-changes.js.map +0 -1
- package/src/developer-agent/preview-source.js.map +0 -1
- package/src/developer-agent/validation.js.map +0 -1
- package/src/developer-agent/workspace-inspection.js.map +0 -1
- package/src/developer-agent/workspace-path.js.map +0 -1
- package/src/executors/blueprint-trust/blueprint-trust.js.map +0 -1
- package/src/executors/blueprint-verification/blueprint-verification.js.map +0 -1
- package/src/executors/deploy/deploy.js.map +0 -1
- package/src/executors/deployment-plan/deployment-plan.js.map +0 -1
- package/src/executors/dev/dev.js.map +0 -1
- package/src/executors/dev-doctor/dev-doctor.js.map +0 -1
- package/src/executors/dev-setup/dev-setup.js.map +0 -1
- package/src/executors/developer-context/developer-context.js.map +0 -1
- package/src/executors/fleet/fleet.js.map +0 -1
- package/src/executors/foundation-preflight/foundation-preflight.js.map +0 -1
- package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js.map +0 -1
- package/src/executors/foundation-profile-preflight/production-database-safeguard.js.map +0 -1
- package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js.map +0 -1
- package/src/executors/github-bootstrap/github-bootstrap.js.map +0 -1
- package/src/executors/infrastructure-plan/infrastructure-plan.js.map +0 -1
- package/src/executors/local-deploy/federated-credential-transport.js.map +0 -1
- package/src/executors/local-deploy/fixtures/local-deploy-state-machine.mjs +0 -53
- package/src/executors/local-deploy/local-approval.js.map +0 -1
- package/src/executors/local-deploy/local-deploy.js.map +0 -1
- package/src/executors/refresh/refresh.js.map +0 -1
- package/src/executors/remove/remove.js.map +0 -1
- package/src/executors/router-waf-rehearsal/router-waf-rehearsal.js.map +0 -1
- package/src/executors/secret-guardrails/secret-guardrails.js.map +0 -1
- package/src/executors/secret-initialize/secret-initialize.js.map +0 -1
- package/src/executors/secret-metadata/secret-metadata.js.map +0 -1
- package/src/executors/sst-lifecycle/generated-secret-retirement.js.map +0 -1
- package/src/executors/sst-lifecycle/governed-native-operation.js.map +0 -1
- package/src/executors/sst-lifecycle/logging-preflight.js.map +0 -1
- package/src/executors/sst-lifecycle/run-sst-command.js.map +0 -1
- package/src/executors/sst-lifecycle/secret-preflight.js.map +0 -1
- package/src/executors/sst-lifecycle/sst-environment-source.js.map +0 -1
- package/src/executors/unlock/unlock.js.map +0 -1
- package/src/executors/work-markers/work-markers.js.map +0 -1
- package/src/foundation/discovery.js.map +0 -1
- package/src/foundation/index.js.map +0 -1
- package/src/foundation/local-database-contract.js.map +0 -1
- package/src/foundation/logging-preflight.js.map +0 -1
- package/src/foundation/logging.js.map +0 -1
- package/src/foundation/partial-state.js.map +0 -1
- package/src/foundation/preflight.js.map +0 -1
- package/src/foundation/private-smoke-access.js.map +0 -1
- package/src/foundation/private-smoke-admission.js.map +0 -1
- package/src/foundation/private-smoke-control-plane.js.map +0 -1
- package/src/foundation/provision-database-bindings.js.map +0 -1
- package/src/foundation/provision-logical-database.js.map +0 -1
- package/src/foundation/requirements.js.map +0 -1
- package/src/foundation/router-origin-proof.js.map +0 -1
- package/src/foundation/router-waf-rate-rehearsal.js.map +0 -1
- package/src/foundation/router-waf.js.map +0 -1
- package/src/foundation/stages.js.map +0 -1
- package/src/frontend-security/index.js.map +0 -1
- package/src/frontend-security/security-headers.js.map +0 -1
- package/src/generators/feature-registry.js.map +0 -1
- package/src/generators/formatting.js.map +0 -1
- package/src/generators/function/function.js.map +0 -1
- package/src/generators/job/job.js.map +0 -1
- package/src/generators/logging-registry.js.map +0 -1
- package/src/generators/post-generation-install.js.map +0 -1
- package/src/generators/preset/dependency-overrides.js.map +0 -1
- package/src/generators/preset/generator.js.map +0 -1
- package/src/generators/preset/tool-versions.js.map +0 -1
- package/src/generators/preset/workspace-files-ci-acceptance.js.map +0 -1
- package/src/generators/preset/workspace-files-developer-agent.js.map +0 -1
- package/src/generators/preset/workspace-files-ecr-inspector.js.map +0 -1
- package/src/generators/preset/workspace-files-foundation-workload-roles.js.map +0 -1
- package/src/generators/preset/workspace-files-performance-cost.js.map +0 -1
- package/src/generators/preset/workspace-files-performance-load.js.map +0 -1
- package/src/generators/preset/workspace-files-stage-authority.js.map +0 -1
- package/src/generators/preset/workspace-files-thin-deploy.js.map +0 -1
- package/src/generators/preset/workspace-files-thin-docs.js.map +0 -1
- package/src/generators/preset/workspace-files-thin-release.js.map +0 -1
- package/src/generators/preset/workspace-files-workload-role-baseline.js.map +0 -1
- package/src/generators/preset/workspace-files.js.map +0 -1
- package/src/generators/repository-policy/repository-policy.js.map +0 -1
- package/src/generators/repository-policy/tree-policy.js.map +0 -1
- package/src/generators/service/service.js.map +0 -1
- package/src/generators/slice/built-in-plan-api-contract-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-api-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-async-work-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-authorization-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-background-work-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-deletion-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-lifecycle-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-retention-job-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-retention-launcher-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-rights-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-database-lifecycle-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-foundation-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-frontend-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-infrastructure-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-infrastructure-safety-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-metadata-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-native-runtime-authority-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-operations-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-performance-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-project-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-release-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-reliability-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-secret-runtime-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-shared.js.map +0 -1
- package/src/generators/slice/built-in-plan-testing-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-thin-release-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-verification-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-web-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-workload-role-files.js.map +0 -1
- package/src/generators/slice/built-in-plan.js.map +0 -1
- package/src/generators/slice/slice.js.map +0 -1
- package/src/generators/upgrade/upgrade.js.map +0 -1
- package/src/generators/workload/frozen-container.js.map +0 -1
- package/src/generators/workload/performance-registration.js.map +0 -1
- package/src/generators/workload/reliability-registration.js.map +0 -1
- package/src/generators/workload/service-performance-files.js.map +0 -1
- package/src/generators/workload/workload.js.map +0 -1
- package/src/git-policy/action-pins.js.map +0 -1
- package/src/git-policy/github-bootstrap.js.map +0 -1
- package/src/git-policy/index.js.map +0 -1
- package/src/git-policy/routing.js.map +0 -1
- package/src/index.js.map +0 -1
- package/src/infrastructure-change/convergence.js.map +0 -1
- package/src/infrastructure-change/drift.js.map +0 -1
- package/src/infrastructure-change/index.js.map +0 -1
- package/src/infrastructure-change/local-capability.js.map +0 -1
- package/src/infrastructure-change/model.js.map +0 -1
- package/src/infrastructure-change/normalize.js.map +0 -1
- package/src/infrastructure-change/plan.js.map +0 -1
- package/src/infrastructure-change/risk.js.map +0 -1
- package/src/infrastructure-change/summary.js.map +0 -1
- package/src/local-dev/context-discovery.js.map +0 -1
- package/src/local-dev/contract-validation.js.map +0 -1
- package/src/local-dev/contracts.js.map +0 -1
- package/src/local-dev/control-contract.js.map +0 -1
- package/src/local-dev/dev-command-core.js.map +0 -1
- package/src/local-dev/effects.js.map +0 -1
- package/src/local-dev/environment-inspector.js.map +0 -1
- package/src/local-dev/environment-state.js.map +0 -1
- package/src/local-dev/errors.js.map +0 -1
- package/src/local-dev/fleet-client.js.map +0 -1
- package/src/local-dev/fleet-configuration.js.map +0 -1
- package/src/local-dev/fleet-inventory.js.map +0 -1
- package/src/local-dev/fleet-ipc.js.map +0 -1
- package/src/local-dev/fleet-launcher.js.map +0 -1
- package/src/local-dev/fleet-lock.js.map +0 -1
- package/src/local-dev/fleet-logs.js.map +0 -1
- package/src/local-dev/fleet-process.js.map +0 -1
- package/src/local-dev/fleet-runtime.js.map +0 -1
- package/src/local-dev/fleet-session.js.map +0 -1
- package/src/local-dev/fleet-slice-runner-daemon.js.map +0 -1
- package/src/local-dev/fleet-startup.js.map +0 -1
- package/src/local-dev/fleet-state.js.map +0 -1
- package/src/local-dev/fleet-supervisor-daemon.js.map +0 -1
- package/src/local-dev/fleet-supervisor.js.map +0 -1
- package/src/local-dev/gateway-daemon.js.map +0 -1
- package/src/local-dev/gateway.js.map +0 -1
- package/src/local-dev/identity.js.map +0 -1
- package/src/local-dev/index.js.map +0 -1
- package/src/local-dev/local-context.js.map +0 -1
- package/src/local-dev/nx-workspace.js.map +0 -1
- package/src/local-dev/personal-secret-ledger.js.map +0 -1
- package/src/local-dev/personal-stage.js.map +0 -1
- package/src/local-dev/portless.js.map +0 -1
- package/src/local-dev/ports.js.map +0 -1
- package/src/local-dev/private-state.js.map +0 -1
- package/src/local-dev/process-identity.js.map +0 -1
- package/src/local-dev/proxy.js.map +0 -1
- package/src/local-dev/runtime-paths.js.map +0 -1
- package/src/local-dev/secret-slice-claim.js.map +0 -1
- package/src/local-dev/slice-claim.js.map +0 -1
- package/src/local-dev/slice-runner.js.map +0 -1
- package/src/local-dev/tls.js.map +0 -1
- package/src/ownership/composition.js.map +0 -1
- package/src/ownership/foundation-record.js.map +0 -1
- package/src/ownership/hash.js.map +0 -1
- package/src/ownership/index.js.map +0 -1
- package/src/ownership/json-ownership.js.map +0 -1
- package/src/ownership/record.js.map +0 -1
- package/src/ownership/workspace-record.js.map +0 -1
- package/src/performance/cost-collection.js.map +0 -1
- package/src/performance/cost-controls.js.map +0 -1
- package/src/performance/evidence.js.map +0 -1
- package/src/performance/index.js.map +0 -1
- package/src/performance/load-safety.js.map +0 -1
- package/src/performance/model.js.map +0 -1
- package/src/performance/pr-artifact-budget.js.map +0 -1
- package/src/performance/runner.js.map +0 -1
- package/src/performance/scenario-endpoint.js.map +0 -1
- package/src/performance/scenario.js.map +0 -1
- package/src/performance/test-fixtures.d.ts +0 -7
- package/src/performance/test-fixtures.js +0 -167
- package/src/performance/test-fixtures.js.map +0 -1
- package/src/performance/unit-cost.js.map +0 -1
- package/src/release/index.js.map +0 -1
- package/src/release/lifecycle.js.map +0 -1
- package/src/release/manifest.js.map +0 -1
- package/src/release/rollout.js.map +0 -1
- package/src/release/source-authority.js.map +0 -1
- package/src/repository-policy/aurora-preflight.js.map +0 -1
- package/src/repository-policy/capacity-migration.js.map +0 -1
- package/src/repository-policy/deployment-plan.js.map +0 -1
- package/src/repository-policy/foundation-profile.js.map +0 -1
- package/src/repository-policy/index.js.map +0 -1
- package/src/repository-policy/policy.js.map +0 -1
- package/src/secrets/adapters.js.map +0 -1
- package/src/secrets/aws-control-plane.js.map +0 -1
- package/src/secrets/declaration-verification.js.map +0 -1
- package/src/secrets/generated-aws-control-plane.js.map +0 -1
- package/src/secrets/guardrails.js.map +0 -1
- package/src/secrets/index.js.map +0 -1
- package/src/secrets/metadata.js.map +0 -1
- package/src/secrets/model.js.map +0 -1
- package/src/secrets/operator.js.map +0 -1
- package/src/secrets/permissions.js.map +0 -1
- package/src/secrets/personal-command.js.map +0 -1
- package/src/secrets/personal-ledger.js.map +0 -1
- package/src/secrets/registry.js.map +0 -1
- package/src/secrets/verification.js.map +0 -1
- package/src/secrets/workload-access.js.map +0 -1
- package/src/sst-environment-source-format.js.map +0 -1
- package/src/supply-chain/action-pins.js.map +0 -1
- package/src/supply-chain/blueprint-trust-git.js.map +0 -1
- package/src/supply-chain/blueprint-trust-process.js.map +0 -1
- package/src/supply-chain/blueprint-trust.js.map +0 -1
- package/src/supply-chain/blueprint-verification-authority.js.map +0 -1
- package/src/supply-chain/blueprint-verification-execution.js.map +0 -1
- package/src/supply-chain/build-output-bounds.js.map +0 -1
- package/src/supply-chain/build-output.js.map +0 -1
- package/src/supply-chain/common.js.map +0 -1
- package/src/supply-chain/container-artifact-contract.js.map +0 -1
- package/src/supply-chain/container-release.js.map +0 -1
- package/src/supply-chain/ecr-applicability.js.map +0 -1
- package/src/supply-chain/ecr-scanning.js.map +0 -1
- package/src/supply-chain/ecs-deployed-image.js.map +0 -1
- package/src/supply-chain/errors.js.map +0 -1
- package/src/supply-chain/generated-blueprint-trust-command.js.map +0 -1
- package/src/supply-chain/generated-command.js.map +0 -1
- package/src/supply-chain/generated-container-release-command.js.map +0 -1
- package/src/supply-chain/generated-ecr-collector-command.js.map +0 -1
- package/src/supply-chain/generated-files.js.map +0 -1
- package/src/supply-chain/generated-scanner-command.js.map +0 -1
- package/src/supply-chain/index.js.map +0 -1
- package/src/supply-chain/inventory.js.map +0 -1
- package/src/supply-chain/license-expression.js.map +0 -1
- package/src/supply-chain/pnpm-toolchain-authority.js.map +0 -1
- package/src/supply-chain/policy.js.map +0 -1
- package/src/supply-chain/publication.js.map +0 -1
- package/src/supply-chain/sbom.js.map +0 -1
- package/src/supply-chain/scanner.js.map +0 -1
- package/src/supply-chain/vendored-source.js.map +0 -1
- package/src/testing-evidence/fixture-scope.js.map +0 -1
- package/src/testing-evidence/index.js.map +0 -1
- package/src/testing-evidence/quarantine.js.map +0 -1
- package/src/testing-evidence/result.js.map +0 -1
- package/src/testing-evidence/runner-adapter.js.map +0 -1
- package/src/testing-evidence/sensitive-artifacts.js.map +0 -1
- package/src/validation.js.map +0 -1
- package/src/work-markers/index.js.map +0 -1
- package/src/work-markers/work-markers.js.map +0 -1
- package/src/workload-roles/account-baseline.js.map +0 -1
- package/src/workload-roles/authority.js.map +0 -1
- package/src/workload-roles/aws-adapter.js.map +0 -1
- package/src/workload-roles/aws-internal-handler.js.map +0 -1
- package/src/workload-roles/aws-s3-state.js.map +0 -1
- package/src/workload-roles/aws-sdk-control-plane.js.map +0 -1
- package/src/workload-roles/boundary.js.map +0 -1
- package/src/workload-roles/convergence.js.map +0 -1
- package/src/workload-roles/effective-policy.js.map +0 -1
- package/src/workload-roles/handler.js.map +0 -1
- package/src/workload-roles/history.js.map +0 -1
- package/src/workload-roles/index.js.map +0 -1
- package/src/workload-roles/injection.js.map +0 -1
- package/src/workload-roles/manifest.js.map +0 -1
- package/src/workload-roles/provisioner.js.map +0 -1
- package/src/workload-roles/registration.js.map +0 -1
- package/src/workload-roles/stage-boundary.js.map +0 -1
- package/src/workload-roles/standard-slice.js.map +0 -1
- package/src/workspace-deployment/affected-lifecycle.js.map +0 -1
- package/src/workspace-deployment/identity.js.map +0 -1
- package/src/workspace-deployment/index.js.map +0 -1
- package/src/workspace-deployment/migration-evidence.js.map +0 -1
- package/src/workspace-deployment/migration.js.map +0 -1
- package/src/workspace-deployment/ownership.js.map +0 -1
|
@@ -4,6 +4,11 @@ exports.STANDARD_LOCAL_DEV_ADAPTER = exports.PRODUCT_PACKAGE_MANAGED_JSON_POINTE
|
|
|
4
4
|
exports.isBuiltInSliceFormatSensitivePath = isBuiltInSliceFormatSensitivePath;
|
|
5
5
|
exports.createBuiltInSlicePlan = createBuiltInSlicePlan;
|
|
6
6
|
const deterministic_order_js_1 = require("../../deterministic-order.js");
|
|
7
|
+
const capability_plan_js_1 = require("../../foundation/capability-plan.js");
|
|
8
|
+
const persistence_contract_js_1 = require("./persistence-contract.js");
|
|
9
|
+
const built_in_plan_key_value_files_js_1 = require("./built-in-plan-key-value-files.js");
|
|
10
|
+
const built_in_plan_key_value_infrastructure_js_1 = require("./built-in-plan-key-value-infrastructure.js");
|
|
11
|
+
const built_in_plan_sql_events_js_1 = require("./built-in-plan-sql-events.js");
|
|
7
12
|
const index_js_1 = require("../../ownership/index.js");
|
|
8
13
|
const built_in_plan_api_contract_files_js_1 = require("./built-in-plan-api-contract-files.js");
|
|
9
14
|
const built_in_plan_api_files_js_1 = require("./built-in-plan-api-files.js");
|
|
@@ -61,7 +66,7 @@ function composeDisjointFileGroups(groups) {
|
|
|
61
66
|
}
|
|
62
67
|
return files;
|
|
63
68
|
}
|
|
64
|
-
function renderSliceFiles(name, scope, runtimeVersion, ownership, dataPolicyReviewedAt, deploymentProfile) {
|
|
69
|
+
function renderSliceFiles(name, scope, runtimeVersion, ownership, dataPolicyReviewedAt, deploymentProfile, persistence) {
|
|
65
70
|
const pascalName = name
|
|
66
71
|
.split('-')
|
|
67
72
|
.map((segment) => segment[0]?.toUpperCase() + segment.slice(1))
|
|
@@ -69,33 +74,47 @@ function renderSliceFiles(name, scope, runtimeVersion, ownership, dataPolicyRevi
|
|
|
69
74
|
const protectedRuntimeStages = deploymentProfile === 'starter'
|
|
70
75
|
? ['development', 'production']
|
|
71
76
|
: ['staging', 'production'];
|
|
77
|
+
const sql = ownership.foundation.capabilities.includes('postgres');
|
|
72
78
|
return composeDisjointFileGroups([
|
|
73
|
-
[
|
|
79
|
+
[
|
|
80
|
+
'persistence declaration',
|
|
81
|
+
{ 'data/persistence.json': JSON.stringify(persistence, null, 2) + '\n' },
|
|
82
|
+
],
|
|
83
|
+
['key-value runtime', (0, built_in_plan_key_value_files_js_1.renderKeyValueRuntimeFiles)(name)],
|
|
84
|
+
[
|
|
85
|
+
'key-value infrastructure',
|
|
86
|
+
(0, built_in_plan_key_value_infrastructure_js_1.renderKeyValueInfrastructureFiles)(name, pascalName),
|
|
87
|
+
],
|
|
88
|
+
['background work', (0, built_in_plan_background_work_files_js_1.renderBackgroundWorkFiles)(deploymentProfile, sql)],
|
|
89
|
+
['SQL events', sql ? (0, built_in_plan_sql_events_js_1.renderSqlEventFiles)(name) : {}],
|
|
74
90
|
[
|
|
75
91
|
'Slice metadata',
|
|
76
|
-
(0, built_in_plan_metadata_files_js_1.renderSliceMetadataFiles)(name, scope, pascalName, ownership),
|
|
92
|
+
(0, built_in_plan_metadata_files_js_1.renderSliceMetadataFiles)(name, scope, pascalName, ownership, sql),
|
|
93
|
+
],
|
|
94
|
+
[
|
|
95
|
+
'Foundation wiring',
|
|
96
|
+
(0, built_in_plan_foundation_files_js_1.renderSliceFoundationFiles)(name, pascalName, ownership.foundation.capabilities),
|
|
77
97
|
],
|
|
78
|
-
['Foundation wiring', (0, built_in_plan_foundation_files_js_1.renderSliceFoundationFiles)(name, pascalName)],
|
|
79
98
|
[
|
|
80
99
|
'project configuration',
|
|
81
100
|
(0, built_in_plan_project_files_js_1.renderSliceProjectFiles)(name, scope, runtimeVersion, ownership),
|
|
82
101
|
],
|
|
83
102
|
[
|
|
84
103
|
'operations',
|
|
85
|
-
(0, built_in_plan_operations_files_js_1.renderSliceOperationsFiles)(name, scope.slice(1), runtimeVersion),
|
|
104
|
+
(0, built_in_plan_operations_files_js_1.renderSliceOperationsFiles)(name, scope.slice(1), runtimeVersion, sql),
|
|
86
105
|
],
|
|
87
|
-
['database lifecycle', (0, built_in_plan_database_lifecycle_files_js_1.renderDatabaseLifecycleFiles)(name)],
|
|
106
|
+
['database lifecycle', sql ? (0, built_in_plan_database_lifecycle_files_js_1.renderDatabaseLifecycleFiles)(name) : {}],
|
|
88
107
|
[
|
|
89
108
|
'database retirement rehearsal',
|
|
90
|
-
(0, built_in_plan_database_retirement_rehearsal_files_js_1.renderDatabaseRetirementRehearsalFiles)(name),
|
|
109
|
+
sql ? (0, built_in_plan_database_retirement_rehearsal_files_js_1.renderDatabaseRetirementRehearsalFiles)(name) : {},
|
|
91
110
|
],
|
|
92
111
|
[
|
|
93
112
|
'native runtime authority',
|
|
94
|
-
(0, built_in_plan_native_runtime_authority_files_js_1.renderStandardSliceNativeRuntimeAuthorityFiles)(name, scope.slice(1)),
|
|
113
|
+
(0, built_in_plan_native_runtime_authority_files_js_1.renderStandardSliceNativeRuntimeAuthorityFiles)(name, scope.slice(1), sql),
|
|
95
114
|
],
|
|
96
115
|
[
|
|
97
116
|
'data contracts',
|
|
98
|
-
(0, built_in_plan_data_files_js_1.renderProductDataFiles)(name, pascalName, protectedRuntimeStages),
|
|
117
|
+
(0, built_in_plan_data_files_js_1.renderProductDataFiles)(name, pascalName, protectedRuntimeStages, sql),
|
|
99
118
|
],
|
|
100
119
|
[
|
|
101
120
|
'data deletion',
|
|
@@ -127,14 +146,14 @@ function renderSliceFiles(name, scope, runtimeVersion, ownership, dataPolicyRevi
|
|
|
127
146
|
'authorization infrastructure',
|
|
128
147
|
(0, built_in_plan_authorization_infrastructure_files_js_1.renderStandardSliceAuthorizationInfrastructureFiles)(name, pascalName),
|
|
129
148
|
],
|
|
130
|
-
['API', (0, built_in_plan_api_files_js_1.renderProductApiFiles)(name, pascalName, scope.slice(1))],
|
|
149
|
+
['API', (0, built_in_plan_api_files_js_1.renderProductApiFiles)(name, pascalName, scope.slice(1), sql)],
|
|
131
150
|
[
|
|
132
151
|
'reliability and incident response',
|
|
133
152
|
(0, built_in_plan_reliability_files_js_1.renderProductReliabilityFiles)(name, pascalName, dataPolicyReviewedAt),
|
|
134
153
|
],
|
|
135
154
|
[
|
|
136
155
|
'product infrastructure',
|
|
137
|
-
(0, built_in_plan_infrastructure_files_js_1.renderProductInfrastructureFiles)(name, pascalName, scope.slice(1), protectedRuntimeStages),
|
|
156
|
+
(0, built_in_plan_infrastructure_files_js_1.renderProductInfrastructureFiles)(name, pascalName, scope.slice(1), protectedRuntimeStages, sql, ownership.foundation.capabilities.includes('network')),
|
|
138
157
|
],
|
|
139
158
|
[
|
|
140
159
|
'performance, capacity, and cost',
|
|
@@ -142,18 +161,18 @@ function renderSliceFiles(name, scope, runtimeVersion, ownership, dataPolicyRevi
|
|
|
142
161
|
],
|
|
143
162
|
[
|
|
144
163
|
'release and configuration',
|
|
145
|
-
(0, built_in_plan_thin_release_files_js_1.renderProductThinReleaseFiles)(name, dataPolicyReviewedAt, deploymentProfile),
|
|
164
|
+
(0, built_in_plan_thin_release_files_js_1.renderProductThinReleaseFiles)(name, dataPolicyReviewedAt, deploymentProfile, sql),
|
|
146
165
|
],
|
|
147
166
|
[
|
|
148
167
|
'frontend contract and evidence',
|
|
149
168
|
(0, built_in_plan_frontend_files_js_1.renderProductFrontendFiles)(name, pascalName),
|
|
150
169
|
],
|
|
151
|
-
['web', (0, built_in_plan_web_files_js_1.renderProductWebFiles)(name, pascalName, scope.slice(1))],
|
|
152
|
-
['testing', (0, built_in_plan_testing_files_js_1.renderProductTestingFiles)(name, pascalName)],
|
|
170
|
+
['web', (0, built_in_plan_web_files_js_1.renderProductWebFiles)(name, pascalName, scope.slice(1), sql)],
|
|
171
|
+
['testing', (0, built_in_plan_testing_files_js_1.renderProductTestingFiles)(name, pascalName, sql)],
|
|
153
172
|
['verification', (0, built_in_plan_verification_files_js_1.renderProductVerificationFiles)(name, pascalName)],
|
|
154
173
|
]);
|
|
155
174
|
}
|
|
156
|
-
function classifyPaths(files) {
|
|
175
|
+
function classifyPaths(files, sql) {
|
|
157
176
|
const seededPaths = new Set([
|
|
158
177
|
'operations/background-work.json',
|
|
159
178
|
'README.md',
|
|
@@ -175,6 +194,7 @@ function classifyPaths(files) {
|
|
|
175
194
|
'data/record-correction.ts',
|
|
176
195
|
'data/record-export.ts',
|
|
177
196
|
'data/record-holds.ts',
|
|
197
|
+
'data/records.ts',
|
|
178
198
|
'data/restore-adapter.ts',
|
|
179
199
|
'docs/reliability/exclusions.md',
|
|
180
200
|
'docs/reliability/slo.json',
|
|
@@ -221,11 +241,15 @@ function classifyPaths(files) {
|
|
|
221
241
|
'authorization/machine-authorization-proof.ts',
|
|
222
242
|
'authorization/machine-client-provisioner.py',
|
|
223
243
|
'authorization/runtime.ts',
|
|
244
|
+
'authorization/record-store.ts',
|
|
245
|
+
'authorization/groups.mjs',
|
|
246
|
+
'authorization/groups.d.mts',
|
|
224
247
|
'data/runtime-policy.cts',
|
|
225
248
|
'jobs/data-export-cleanup.ts',
|
|
226
249
|
'jobs/data-retention-maintenance-launcher.ts',
|
|
227
250
|
'testing/quarantine-runtime.mjs',
|
|
228
251
|
'testing/strict-json-reporter.mjs',
|
|
252
|
+
'testing/local-key-value.ts',
|
|
229
253
|
'e2e/frontend-accessibility.spec.ts',
|
|
230
254
|
]);
|
|
231
255
|
for (const path of built_in_plan_performance_files_js_1.PRODUCT_PERFORMANCE_SEEDED_PATHS)
|
|
@@ -240,7 +264,7 @@ function classifyPaths(files) {
|
|
|
240
264
|
? 'seeded'
|
|
241
265
|
: 'managed';
|
|
242
266
|
const managedJsonPointers = path === 'package.json'
|
|
243
|
-
?
|
|
267
|
+
? (0, built_in_plan_shared_js_1.standardPackageManagedJsonPointers)(sql)
|
|
244
268
|
: undefined;
|
|
245
269
|
if (managedJsonPointers) {
|
|
246
270
|
(0, index_js_1.assertManagedJsonPointersExist)(contents, managedJsonPointers, `Built-in Standard Blueprint ${path}`);
|
|
@@ -255,7 +279,11 @@ function classifyPaths(files) {
|
|
|
255
279
|
})
|
|
256
280
|
.sort((left, right) => (0, deterministic_order_js_1.compareUtf16)(left.path, right.path));
|
|
257
281
|
}
|
|
258
|
-
function createBuiltInSlicePlan(name, scope, runtimeVersion, manifest, inputs, dataPolicyReviewedAt = '2026-07-27T00:00:00.000Z', deploymentProfile = 'starter') {
|
|
282
|
+
function createBuiltInSlicePlan(name, scope, runtimeVersion, manifest, inputs, dataPolicyReviewedAt = '2026-07-27T00:00:00.000Z', deploymentProfile = 'starter', persistenceSource = {}) {
|
|
283
|
+
const persistence = (0, persistence_contract_js_1.standardPersistenceContract)({
|
|
284
|
+
inputs,
|
|
285
|
+
...persistenceSource,
|
|
286
|
+
});
|
|
259
287
|
const provisionalOwnership = {
|
|
260
288
|
blueprint: { name: manifest.name, version: manifest.version },
|
|
261
289
|
compositions: [],
|
|
@@ -266,7 +294,7 @@ function createBuiltInSlicePlan(name, scope, runtimeVersion, manifest, inputs, d
|
|
|
266
294
|
`${scope}/${name}/contracts`,
|
|
267
295
|
],
|
|
268
296
|
},
|
|
269
|
-
foundation:
|
|
297
|
+
foundation: (0, capability_plan_js_1.standardPersistenceRequirement)(inputs, persistenceSource.compositions),
|
|
270
298
|
inputs,
|
|
271
299
|
paths: [],
|
|
272
300
|
projects: [name, `@${name}/job-data-retention`],
|
|
@@ -274,13 +302,13 @@ function createBuiltInSlicePlan(name, scope, runtimeVersion, manifest, inputs, d
|
|
|
274
302
|
slice: name,
|
|
275
303
|
verification: manifest.verification,
|
|
276
304
|
};
|
|
277
|
-
const provisionalFiles = renderSliceFiles(name, scope, runtimeVersion, provisionalOwnership, dataPolicyReviewedAt, deploymentProfile);
|
|
305
|
+
const provisionalFiles = renderSliceFiles(name, scope, runtimeVersion, provisionalOwnership, dataPolicyReviewedAt, deploymentProfile, persistence);
|
|
278
306
|
const ownership = {
|
|
279
307
|
...provisionalOwnership,
|
|
280
|
-
paths: classifyPaths(provisionalFiles),
|
|
308
|
+
paths: classifyPaths(provisionalFiles, provisionalOwnership.foundation.capabilities.includes('postgres')),
|
|
281
309
|
};
|
|
282
310
|
return {
|
|
283
|
-
files: renderSliceFiles(name, scope, runtimeVersion, ownership, dataPolicyReviewedAt, deploymentProfile),
|
|
311
|
+
files: renderSliceFiles(name, scope, runtimeVersion, ownership, dataPolicyReviewedAt, deploymentProfile, persistence),
|
|
284
312
|
ownership,
|
|
285
313
|
};
|
|
286
314
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.dataPolicyReviewSeed = dataPolicyReviewSeed;
|
|
4
|
+
const node_path_1 = require("node:path");
|
|
5
|
+
function dataPolicyReviewSeed(tree, root) {
|
|
6
|
+
const path = node_path_1.posix.join(root, 'data/policy.json');
|
|
7
|
+
const existing = tree.read(path, 'utf8');
|
|
8
|
+
if (existing !== null) {
|
|
9
|
+
try {
|
|
10
|
+
const reviewedAt = JSON.parse(existing).governance?.reviewedAt;
|
|
11
|
+
if (typeof reviewedAt === 'string' &&
|
|
12
|
+
new Date(reviewedAt).toISOString() === reviewedAt) {
|
|
13
|
+
return reviewedAt;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
// The generated ownership/reconciliation path reports malformed policy.
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return new Date().toISOString();
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=data-policy-review-seed.js.map
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deployedSmokeReadinessScript = void 0;
|
|
4
|
+
/** Managed post-deployment prerequisite, not a replacement for browser proof. */
|
|
5
|
+
exports.deployedSmokeReadinessScript = String.raw `import { performance } from 'node:perf_hooks';
|
|
6
|
+
import { setTimeout as delay } from 'node:timers/promises';
|
|
7
|
+
|
|
8
|
+
const totalLimitMs = 30_000;
|
|
9
|
+
// Only a CloudFront-generated Router fallthrough extends readiness. The pinned
|
|
10
|
+
// SST Router reads routing from an eventually consistent CloudFront
|
|
11
|
+
// KeyValueStore; until a new Slice's route is visible at the serving edge the
|
|
12
|
+
// request reaches the placeholder origin. Every other failure keeps the
|
|
13
|
+
// thirty-second bound above.
|
|
14
|
+
const edgeRouteLimitMs = 300_000;
|
|
15
|
+
const requestLimitMs = 5_000;
|
|
16
|
+
const retryDelayMs = 2_000;
|
|
17
|
+
// Edge hosts within one POP converge on new routing at different times. Admit
|
|
18
|
+
// browser setup only after consecutive healthy rounds, each on a fresh
|
|
19
|
+
// connection, span a sustained window; any fallthrough restarts the window.
|
|
20
|
+
const confirmationWindowMs = 30_000;
|
|
21
|
+
const confirmationDelayMs = 1_000;
|
|
22
|
+
const confirmationLimitMs = confirmationWindowMs + 10_000;
|
|
23
|
+
// Every round sleeps at least the shorter delay, so this cap is reached only
|
|
24
|
+
// by a stalled fixture or clock, never before the time bounds below.
|
|
25
|
+
const roundLimit = Math.ceil((edgeRouteLimitMs + confirmationLimitMs) / Math.min(retryDelayMs, confirmationDelayMs)) + 1;
|
|
26
|
+
const bodyLimitBytes = 4_096;
|
|
27
|
+
const transientStatuses = new Set([502, 503, 504]);
|
|
28
|
+
const transientNetworkCodes = new Set([
|
|
29
|
+
'EAI_AGAIN', 'ECONNREFUSED', 'ECONNRESET', 'ETIMEDOUT',
|
|
30
|
+
'UND_ERR_CONNECT_TIMEOUT', 'UND_ERR_SOCKET',
|
|
31
|
+
]);
|
|
32
|
+
|
|
33
|
+
function endpoint(value, path) {
|
|
34
|
+
const url = new URL(value);
|
|
35
|
+
if (url.protocol !== 'https:' || url.username || url.password || url.search || url.hash || url.pathname.replace(/\/$/, '') !== path) {
|
|
36
|
+
throw new Error('invalid-output');
|
|
37
|
+
}
|
|
38
|
+
return url;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function responseCorrelation(response) {
|
|
42
|
+
const requestId = response.headers.get('x-amz-cf-id');
|
|
43
|
+
const pop = response.headers.get('x-amz-cf-pop');
|
|
44
|
+
const cache = /^(Hit|Miss|RefreshHit|Error) from cloudfront$/i.exec(response.headers.get('x-cache') ?? '');
|
|
45
|
+
return {
|
|
46
|
+
...(typeof requestId === 'string' && /^[A-Za-z0-9_+=/-]{20,128}$/.test(requestId) ? { cloudfrontRequestId: requestId } : {}),
|
|
47
|
+
...(typeof pop === 'string' && /^[A-Z]{3}[0-9]{1,3}-[A-Z][0-9]{1,3}$/.test(pop) ? { cloudfrontPop: pop } : {}),
|
|
48
|
+
...(cache ? { cloudfrontCache: cache[1].toLowerCase() } : {}),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
async function boundedBytes(response) {
|
|
53
|
+
const reader = response.body?.getReader();
|
|
54
|
+
if (!reader) throw new Error('invalid-health');
|
|
55
|
+
const chunks = [];
|
|
56
|
+
let length = 0;
|
|
57
|
+
try {
|
|
58
|
+
for (;;) {
|
|
59
|
+
const chunk = await reader.read();
|
|
60
|
+
if (chunk.done) break;
|
|
61
|
+
length += chunk.value.byteLength;
|
|
62
|
+
if (length > bodyLimitBytes) throw new Error('invalid-health');
|
|
63
|
+
chunks.push(chunk.value);
|
|
64
|
+
}
|
|
65
|
+
const bytes = new Uint8Array(length);
|
|
66
|
+
let offset = 0;
|
|
67
|
+
for (const chunk of chunks) { bytes.set(chunk, offset); offset += chunk.byteLength; }
|
|
68
|
+
return bytes;
|
|
69
|
+
} finally {
|
|
70
|
+
await reader.cancel().catch(() => {});
|
|
71
|
+
reader.releaseLock();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
async function boundedJson(response) {
|
|
76
|
+
return JSON.parse(new TextDecoder('utf-8', { fatal: true }).decode(await boundedBytes(response)));
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// The Router answers a request it could not route with CloudFront's own error
|
|
80
|
+
// page. Only that page is classified; origin-returned gateway errors are not.
|
|
81
|
+
async function edgeRouteUnavailable(response) {
|
|
82
|
+
if (!/^Error from cloudfront$/i.test(response.headers.get('x-cache') ?? '')) return undefined;
|
|
83
|
+
if (!/^text\/html\b/i.test(response.headers.get('content-type') ?? '')) return undefined;
|
|
84
|
+
let page;
|
|
85
|
+
try { page = new TextDecoder('latin1').decode(await boundedBytes(response)); }
|
|
86
|
+
catch { return undefined; }
|
|
87
|
+
if (!/<title>\s*ERROR: The request could not be satisfied\s*<\/title>/i.test(page)) return undefined;
|
|
88
|
+
return { edgeRouting: 'unavailable', originDnsPage: /resolve the origin domain name/i.test(page) };
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Dependency injection is internal fixture support; the generated runner has
|
|
92
|
+
// no environment/CLI override for endpoints, TLS, policy or timing.
|
|
93
|
+
export async function waitForDeployedSmokeReadiness(input, runtime = {}) {
|
|
94
|
+
const request = runtime.fetch ?? globalThis.fetch;
|
|
95
|
+
const now = runtime.now ?? (() => performance.now());
|
|
96
|
+
const sleep = runtime.sleep ?? ((ms, signal) => delay(ms, undefined, { signal }));
|
|
97
|
+
const started = now();
|
|
98
|
+
const standardDeadline = started + totalLimitMs;
|
|
99
|
+
const edgeDeadline = started + edgeRouteLimitMs;
|
|
100
|
+
const observations = [];
|
|
101
|
+
let edgePending = false;
|
|
102
|
+
let edgeObservations = 0;
|
|
103
|
+
let consecutive = 0;
|
|
104
|
+
let confirmationDeadline = 0;
|
|
105
|
+
let firstReadyAt = 0;
|
|
106
|
+
let firstReadyMs;
|
|
107
|
+
const elapsed = () => Math.max(0, Math.round(now() - started));
|
|
108
|
+
const deadline = () => Math.max(
|
|
109
|
+
edgePending ? edgeDeadline : standardDeadline,
|
|
110
|
+
consecutive > 0 ? confirmationDeadline : 0,
|
|
111
|
+
);
|
|
112
|
+
const failed = (classification, summary) => ({
|
|
113
|
+
outcome: 'failed', classification, summary, elapsedMs: elapsed(), observations,
|
|
114
|
+
});
|
|
115
|
+
let targets;
|
|
116
|
+
try {
|
|
117
|
+
if (!/^[a-z][a-z0-9-]*$/.test(input.service) || !/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/.test(input.sourceCommit) || !['development', 'staging', 'production'].includes(input.stage)) throw new Error('invalid-identity');
|
|
118
|
+
const api = endpoint(input.apiUrl, '');
|
|
119
|
+
const web = endpoint(input.webUrl, '/' + input.service);
|
|
120
|
+
targets = [
|
|
121
|
+
{ name: 'api', url: new URL('/health', api).href, service: input.service },
|
|
122
|
+
{ name: 'web', url: new URL('/' + input.service + '/api/health', web.origin).href, service: input.service + '-web' },
|
|
123
|
+
];
|
|
124
|
+
} catch {
|
|
125
|
+
return failed('environment-drift', 'Deployed readiness requires exact credential-free HTTPS outputs and service/stage/build identity.');
|
|
126
|
+
}
|
|
127
|
+
// The round cap also bounds receipts if a fixture or monotonic clock stalls.
|
|
128
|
+
for (let round = 0; round < roundLimit && now() < deadline(); round += 1) {
|
|
129
|
+
if (input.signal?.aborted) return failed('infrastructure-unavailable', 'Deployed readiness was interrupted before smoke setup.');
|
|
130
|
+
let ready = true;
|
|
131
|
+
for (const target of targets) {
|
|
132
|
+
if (input.signal?.aborted) return failed('infrastructure-unavailable', 'Deployed readiness was interrupted before smoke setup.');
|
|
133
|
+
const remaining = deadline() - now();
|
|
134
|
+
if (remaining <= 0) { ready = false; break; }
|
|
135
|
+
const timeout = AbortSignal.timeout(Math.max(1, Math.min(requestLimitMs, Math.ceil(remaining))));
|
|
136
|
+
const signal = input.signal ? AbortSignal.any([input.signal, timeout]) : timeout;
|
|
137
|
+
const startedAt = new Date().toISOString();
|
|
138
|
+
const requestStarted = now();
|
|
139
|
+
const timing = () => ({ startedAt, durationMs: Math.max(0, Math.round(now() - requestStarted)), elapsedMs: elapsed() });
|
|
140
|
+
let response;
|
|
141
|
+
let observation;
|
|
142
|
+
try {
|
|
143
|
+
// A fresh connection per request samples more than one edge host.
|
|
144
|
+
response = await request(target.url, {
|
|
145
|
+
method: 'GET', redirect: 'manual', credentials: 'omit', cache: 'no-store',
|
|
146
|
+
headers: { accept: 'application/json', connection: 'close' }, signal,
|
|
147
|
+
});
|
|
148
|
+
observation = { endpoint: target.name, status: response.status, ...timing(), ...responseCorrelation(response) };
|
|
149
|
+
observations.push(observation);
|
|
150
|
+
if (response.status !== 200) {
|
|
151
|
+
if (!transientStatuses.has(response.status)) {
|
|
152
|
+
await response.body?.cancel();
|
|
153
|
+
return failed('infrastructure-unavailable', 'Deployed ' + target.name + ' readiness refused HTTP ' + response.status + '; verify the native deployment and exact output before retrying.');
|
|
154
|
+
}
|
|
155
|
+
const edge = target.name === 'web' && response.status === 502 ? await edgeRouteUnavailable(response) : undefined;
|
|
156
|
+
if (edge) { Object.assign(observation, edge); edgeObservations += 1; }
|
|
157
|
+
else await response.body?.cancel().catch(() => {});
|
|
158
|
+
edgePending = Boolean(edge);
|
|
159
|
+
consecutive = 0;
|
|
160
|
+
ready = false;
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
let payload;
|
|
164
|
+
try { payload = await boundedJson(response); }
|
|
165
|
+
catch (error) { if (signal.aborted) throw error; return failed('environment-drift', 'Deployed ' + target.name + ' health is malformed or exceeds its bounded contract.'); }
|
|
166
|
+
const health = target.name === 'api' ? payload?.data : payload;
|
|
167
|
+
if (!health || health.service !== target.service || health.stage !== input.stage || health.sourceCommit !== input.sourceCommit || health.status !== 'ok') {
|
|
168
|
+
return failed('environment-drift', 'Deployed ' + target.name + ' health differs from the expected service/stage/build; reconcile source and deployed outputs.');
|
|
169
|
+
}
|
|
170
|
+
} catch (error) {
|
|
171
|
+
if (input.signal?.aborted) return failed('infrastructure-unavailable', 'Deployed readiness was interrupted before smoke setup.');
|
|
172
|
+
const transient = signal.aborted || transientNetworkCodes.has(error?.cause?.code ?? error?.code);
|
|
173
|
+
// One row per request: a body failure after headers annotates that row.
|
|
174
|
+
if (observation) observation.body = signal.aborted ? 'timeout' : 'network-error';
|
|
175
|
+
else observations.push({ endpoint: target.name, status: signal.aborted ? 'timeout' : 'network-error', ...timing() });
|
|
176
|
+
if (!transient) return failed('infrastructure-unavailable', 'Deployed readiness transport failed; verify endpoint and certificate configuration before retrying.');
|
|
177
|
+
edgePending = false;
|
|
178
|
+
consecutive = 0;
|
|
179
|
+
ready = false;
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
if (input.signal?.aborted) return failed('infrastructure-unavailable', 'Deployed readiness was interrupted before smoke setup.');
|
|
184
|
+
if (ready && now() < deadline()) {
|
|
185
|
+
edgePending = false;
|
|
186
|
+
consecutive += 1;
|
|
187
|
+
if (consecutive === 1) {
|
|
188
|
+
firstReadyAt = now();
|
|
189
|
+
firstReadyMs = elapsed();
|
|
190
|
+
confirmationDeadline = firstReadyAt + confirmationLimitMs;
|
|
191
|
+
}
|
|
192
|
+
if (consecutive > 1 && now() - firstReadyAt >= confirmationWindowMs) {
|
|
193
|
+
return {
|
|
194
|
+
outcome: 'ready', elapsedMs: elapsed(), observations,
|
|
195
|
+
confirmation: { windowMs: confirmationWindowMs, rounds: consecutive, firstReadyMs },
|
|
196
|
+
edgeRouting: { unavailableObservations: edgeObservations, limitMs: edgeRouteLimitMs },
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
const remaining = deadline() - now();
|
|
201
|
+
if (remaining <= 0) break;
|
|
202
|
+
try { await sleep(Math.min(consecutive > 0 ? confirmationDelayMs : retryDelayMs, remaining), input.signal); }
|
|
203
|
+
catch { return failed('infrastructure-unavailable', 'Deployed readiness was interrupted before smoke setup.'); }
|
|
204
|
+
}
|
|
205
|
+
if (now() < deadline()) {
|
|
206
|
+
return failed('infrastructure-unavailable', 'Deployed readiness reached its bounded attempt count before its time bound; inspect the readiness clock and native diagnostics before another governed attempt.');
|
|
207
|
+
}
|
|
208
|
+
if (edgePending) {
|
|
209
|
+
return failed('infrastructure-unavailable', 'The deployed web route was not served by the Router within 300 seconds: CloudFront answered with its own error page because routing fell through to the placeholder origin. Inspect Router KeyValueStore propagation before another governed attempt.');
|
|
210
|
+
}
|
|
211
|
+
return failed('infrastructure-unavailable', 'The expected deployed API and web build did not become ready within the 30-second bound for unavailability other than Router edge propagation; inspect native diagnostics before another governed attempt.');
|
|
212
|
+
}
|
|
213
|
+
`;
|
|
214
|
+
//# sourceMappingURL=deployed-smoke-readiness.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/** Local checks may run before the first commit; deployment evidence may not. */
|
|
2
|
+
export declare const localSourceCommitFunction = "function localSourceCommit() {\n const supplied = process.env.EBK_SOURCE_COMMIT;\n if (supplied !== undefined) {\n if (!/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/.test(supplied)) {\n throw new Error('EBK_SOURCE_COMMIT must be a full commit SHA.');\n }\n return supplied;\n }\n const git = (args) => spawnSync('git', args, {\n cwd: workspaceRoot,\n encoding: 'utf8',\n shell: false,\n windowsHide: true,\n });\n const head = git(['rev-parse', '--verify', 'HEAD^{commit}']);\n if (!head.error && head.status === 0) return head.stdout.trim();\n const worktree = git(['rev-parse', '--is-inside-work-tree']);\n const symbolic = git(['symbolic-ref', '--quiet', 'HEAD']);\n if (!worktree.error && worktree.status === 0 &&\n worktree.stdout.trim() === 'true' && !symbolic.error &&\n symbolic.status === 0 && symbolic.stdout.trim().startsWith('refs/heads/')) {\n const branch = git(['show-ref', '--verify', '--quiet', symbolic.stdout.trim()]);\n if (!branch.error && branch.status === 1) return null;\n }\n throw new Error('Local source identity requires a readable Git worktree or a full EBK_SOURCE_COMMIT.');\n}";
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.localSourceCommitFunction = void 0;
|
|
4
|
+
/** Local checks may run before the first commit; deployment evidence may not. */
|
|
5
|
+
exports.localSourceCommitFunction = `function localSourceCommit() {
|
|
6
|
+
const supplied = process.env.EBK_SOURCE_COMMIT;
|
|
7
|
+
if (supplied !== undefined) {
|
|
8
|
+
if (!/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/.test(supplied)) {
|
|
9
|
+
throw new Error('EBK_SOURCE_COMMIT must be a full commit SHA.');
|
|
10
|
+
}
|
|
11
|
+
return supplied;
|
|
12
|
+
}
|
|
13
|
+
const git = (args) => spawnSync('git', args, {
|
|
14
|
+
cwd: workspaceRoot,
|
|
15
|
+
encoding: 'utf8',
|
|
16
|
+
shell: false,
|
|
17
|
+
windowsHide: true,
|
|
18
|
+
});
|
|
19
|
+
const head = git(['rev-parse', '--verify', 'HEAD^{commit}']);
|
|
20
|
+
if (!head.error && head.status === 0) return head.stdout.trim();
|
|
21
|
+
const worktree = git(['rev-parse', '--is-inside-work-tree']);
|
|
22
|
+
const symbolic = git(['symbolic-ref', '--quiet', 'HEAD']);
|
|
23
|
+
if (!worktree.error && worktree.status === 0 &&
|
|
24
|
+
worktree.stdout.trim() === 'true' && !symbolic.error &&
|
|
25
|
+
symbolic.status === 0 && symbolic.stdout.trim().startsWith('refs/heads/')) {
|
|
26
|
+
const branch = git(['show-ref', '--verify', '--quiet', symbolic.stdout.trim()]);
|
|
27
|
+
if (!branch.error && branch.status === 1) return null;
|
|
28
|
+
}
|
|
29
|
+
throw new Error('Local source identity requires a readable Git worktree or a full EBK_SOURCE_COMMIT.');
|
|
30
|
+
}`;
|
|
31
|
+
//# sourceMappingURL=local-source-identity.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const STANDARD_PERSISTENCE_PATH = "data/persistence.json";
|
|
2
|
+
export interface StandardPersistenceContract {
|
|
3
|
+
kind: 'ebk-standard-persistence';
|
|
4
|
+
schemaVersion: 1;
|
|
5
|
+
defaultStore: 'dynamodb';
|
|
6
|
+
}
|
|
7
|
+
/** The framework core is DynamoDB. SQL is additive, never an alternate core. */
|
|
8
|
+
export declare function standardPersistenceContract(options: {
|
|
9
|
+
inputs: Record<string, unknown>;
|
|
10
|
+
current?: unknown;
|
|
11
|
+
existingStandardRequirement?: {
|
|
12
|
+
capabilities: readonly string[];
|
|
13
|
+
};
|
|
14
|
+
}): StandardPersistenceContract;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.STANDARD_PERSISTENCE_PATH = void 0;
|
|
4
|
+
exports.standardPersistenceContract = standardPersistenceContract;
|
|
5
|
+
const validation_js_1 = require("../../validation.js");
|
|
6
|
+
const capability_plan_js_1 = require("../../foundation/capability-plan.js");
|
|
7
|
+
exports.STANDARD_PERSISTENCE_PATH = 'data/persistence.json';
|
|
8
|
+
/** The framework core is DynamoDB. SQL is additive, never an alternate core. */
|
|
9
|
+
function standardPersistenceContract(options) {
|
|
10
|
+
(0, capability_plan_js_1.readStandardSqlDeclaration)(options.inputs);
|
|
11
|
+
if (options.current !== undefined) {
|
|
12
|
+
const current = options.current;
|
|
13
|
+
if (!(0, validation_js_1.isRecord)(current) ||
|
|
14
|
+
current.kind !== 'ebk-standard-persistence' ||
|
|
15
|
+
current.schemaVersion !== 1 ||
|
|
16
|
+
(current.defaultStore !== 'dynamodb' &&
|
|
17
|
+
current.defaultStore !== 'postgres') ||
|
|
18
|
+
Object.keys(current).some((key) => !['kind', 'schemaVersion', 'defaultStore'].includes(key)))
|
|
19
|
+
throw new Error('Standard persistence declaration is invalid; no store may be inferred or reassigned.');
|
|
20
|
+
if (current.defaultStore === 'postgres')
|
|
21
|
+
throw new Error('This prerelease Standard Slice uses a PostgreSQL-backed framework core. Automatic upgrade is unsupported. Preserve its data and infrastructure, then complete an explicit repository-owned migration or rebuild before adopting the DynamoDB core. No files have been changed.');
|
|
22
|
+
}
|
|
23
|
+
else if (options.existingStandardRequirement) {
|
|
24
|
+
throw new Error('Existing Standard Slice is missing its persisted storage declaration. Automatic prerelease conversion is unsupported; preserve its data and infrastructure and complete an explicit repository-owned migration or rebuild. No files have been changed.');
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
kind: 'ebk-standard-persistence',
|
|
28
|
+
schemaVersion: 1,
|
|
29
|
+
defaultStore: 'dynamodb',
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=persistence-contract.js.map
|
|
@@ -8,6 +8,9 @@ const node_path_1 = require("node:path");
|
|
|
8
8
|
const node_util_1 = require("node:util");
|
|
9
9
|
const index_js_1 = require("../../blueprints/index.js");
|
|
10
10
|
const index_js_2 = require("../../foundation/index.js");
|
|
11
|
+
const capability_plan_js_1 = require("../../foundation/capability-plan.js");
|
|
12
|
+
const preview_changes_js_1 = require("../../developer-agent/preview-changes.js");
|
|
13
|
+
const upgrade_js_1 = require("../upgrade/upgrade.js");
|
|
11
14
|
const index_js_3 = require("../../ownership/index.js");
|
|
12
15
|
const index_js_4 = require("../../repository-policy/index.js");
|
|
13
16
|
const blueprint_verification_authority_js_1 = require("../../supply-chain/blueprint-verification-authority.js");
|
|
@@ -16,6 +19,7 @@ const post_generation_install_js_1 = require("../post-generation-install.js");
|
|
|
16
19
|
const formatting_js_1 = require("../formatting.js");
|
|
17
20
|
const workspace_files_js_1 = require("../preset/workspace-files.js");
|
|
18
21
|
const built_in_plan_js_1 = require("./built-in-plan.js");
|
|
22
|
+
const data_policy_review_seed_js_1 = require("./data-policy-review-seed.js");
|
|
19
23
|
const tree_policy_js_1 = require("../repository-policy/tree-policy.js");
|
|
20
24
|
var built_in_plan_js_2 = require("./built-in-plan.js");
|
|
21
25
|
Object.defineProperty(exports, "PRODUCT_PACKAGE_MANAGED_JSON_POINTERS", { enumerable: true, get: function () { return built_in_plan_js_2.PRODUCT_PACKAGE_MANAGED_JSON_POINTERS; } });
|
|
@@ -53,6 +57,10 @@ function json(value) {
|
|
|
53
57
|
async function formatSliceBeforeOwnershipRestamp(tree, root, preserveBuiltInFormatSensitiveFiles) {
|
|
54
58
|
const prefix = `${root}/`;
|
|
55
59
|
const restoreProtectedFiles = (0, formatting_js_1.createTreeFileRestorer)(tree, (path) => {
|
|
60
|
+
// Paired Foundation generation has already formatted and hashed its own
|
|
61
|
+
// output. A Slice formatter must not invalidate that completed ownership.
|
|
62
|
+
if (!path.startsWith(prefix))
|
|
63
|
+
return true;
|
|
56
64
|
if ((0, workspace_files_js_1.isRawWorkspaceAuthorityPath)(path))
|
|
57
65
|
return true;
|
|
58
66
|
return (preserveBuiltInFormatSensitiveFiles &&
|
|
@@ -120,23 +128,6 @@ function assertExternalBlueprintVerificationProgram(input) {
|
|
|
120
128
|
targets: rootProject.targets,
|
|
121
129
|
});
|
|
122
130
|
}
|
|
123
|
-
function dataPolicyReviewSeed(tree, root) {
|
|
124
|
-
const path = node_path_1.posix.join(root, 'data/policy.json');
|
|
125
|
-
const existing = tree.read(path, 'utf8');
|
|
126
|
-
if (existing !== null) {
|
|
127
|
-
try {
|
|
128
|
-
const reviewedAt = JSON.parse(existing).governance?.reviewedAt;
|
|
129
|
-
if (typeof reviewedAt === 'string' &&
|
|
130
|
-
new Date(reviewedAt).toISOString() === reviewedAt) {
|
|
131
|
-
return reviewedAt;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
catch {
|
|
135
|
-
// The generated ownership/reconciliation path reports malformed policy.
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
return new Date().toISOString();
|
|
139
|
-
}
|
|
140
131
|
function reportSlicePolicyPosture(tree, name) {
|
|
141
132
|
const contents = tree.read(index_js_4.REPOSITORY_POLICY_FILE, 'utf8');
|
|
142
133
|
if (contents === null) {
|
|
@@ -233,7 +224,15 @@ async function sliceGenerator(tree, options) {
|
|
|
233
224
|
.join('\n')}`);
|
|
234
225
|
}
|
|
235
226
|
const foundationDescriptor = readJson(tree, 'packages/foundation/contracts/foundation.json', 'Standard Foundation descriptor');
|
|
236
|
-
const
|
|
227
|
+
const foundationRequirement = blueprint.source === 'built-in'
|
|
228
|
+
? (0, capability_plan_js_1.standardPersistenceRequirement)(inputResult.value)
|
|
229
|
+
: blueprint.manifest.foundation;
|
|
230
|
+
const compatibility = (0, index_js_2.validateFoundationCompatibility)(foundationRequirement, blueprint.source === 'built-in'
|
|
231
|
+
? (0, capability_plan_js_1.planFoundationCapabilities)({
|
|
232
|
+
current: foundationDescriptor,
|
|
233
|
+
requirements: [foundationRequirement],
|
|
234
|
+
}).descriptor
|
|
235
|
+
: foundationDescriptor);
|
|
237
236
|
if (!compatibility.valid) {
|
|
238
237
|
throw new Error(`Standard Foundation is incompatible with this Blueprint:\n${compatibility.issues
|
|
239
238
|
.map((issue) => `- ${issue.path}: ${issue.message}`)
|
|
@@ -242,7 +241,7 @@ async function sliceGenerator(tree, options) {
|
|
|
242
241
|
const installScope = {
|
|
243
242
|
exactPaths: ['package.json'],
|
|
244
243
|
requiredPaths: [node_path_1.posix.join(root, '.ebk/ownership.json')],
|
|
245
|
-
roots: [root],
|
|
244
|
+
roots: blueprint.source === 'built-in' ? [root, 'packages/foundation'] : [root],
|
|
246
245
|
};
|
|
247
246
|
const installState = options.skipInstall
|
|
248
247
|
? undefined
|
|
@@ -352,21 +351,27 @@ async function sliceGenerator(tree, options) {
|
|
|
352
351
|
if (!runtimeVersion) {
|
|
353
352
|
throw new Error('Workspace package.json must depend on @empire-builder-kit/runtime before generating a Product Slice.');
|
|
354
353
|
}
|
|
355
|
-
const plan = (0, built_in_plan_js_1.createBuiltInSlicePlan)(name, scope, runtimeVersion, blueprint.manifest, inputResult.value, dataPolicyReviewSeed(tree, root), requireRepositoryDeploymentProfile(tree));
|
|
354
|
+
const plan = (0, built_in_plan_js_1.createBuiltInSlicePlan)(name, scope, runtimeVersion, blueprint.manifest, inputResult.value, (0, data_policy_review_seed_js_1.dataPolicyReviewSeed)(tree, root), requireRepositoryDeploymentProfile(tree));
|
|
356
355
|
const ownershipValidation = (0, index_js_3.validateGeneratedOwnershipRecord)(plan.ownership);
|
|
357
356
|
if (!ownershipValidation.valid) {
|
|
358
357
|
throw new Error(`Generated ownership metadata is invalid:\n${ownershipValidation.issues
|
|
359
358
|
.map((issue) => `- ${issue.path}: ${issue.message}`)
|
|
360
359
|
.join('\n')}`);
|
|
361
360
|
}
|
|
361
|
+
// Foundation capability growth and Slice creation are one ownership-preserving
|
|
362
|
+
// source operation. A later validation/formatting failure must not leave half
|
|
363
|
+
// of a relational declaration applied to the caller's tree.
|
|
364
|
+
const deferred = new preview_changes_js_1.DeferredDeveloperAgentTree(tree);
|
|
365
|
+
await (0, upgrade_js_1.upgradeFoundationForRequirements)(deferred, [foundationRequirement], true);
|
|
362
366
|
for (const [relativePath, contents] of Object.entries(plan.files)) {
|
|
363
|
-
|
|
367
|
+
deferred.write(node_path_1.posix.join(root, relativePath), contents);
|
|
364
368
|
}
|
|
365
369
|
if (!options.skipFormat)
|
|
366
|
-
await formatSliceBeforeOwnershipRestamp(
|
|
367
|
-
(0, index_js_3.restampProductSliceOwnership)(
|
|
370
|
+
await formatSliceBeforeOwnershipRestamp(deferred, root, true);
|
|
371
|
+
(0, index_js_3.restampProductSliceOwnership)(deferred, name);
|
|
368
372
|
if (!options.skipFormat)
|
|
369
|
-
await formatSliceOwnership(
|
|
373
|
+
await formatSliceOwnership(deferred, root);
|
|
374
|
+
deferred.apply();
|
|
370
375
|
reportSlicePolicyPosture(tree, name);
|
|
371
376
|
if (options.skipInstall)
|
|
372
377
|
return undefined;
|