@empire-builder-kit/nx 1.0.0-rc.4 → 1.0.0-rc.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -10
- package/executors.json +21 -1
- package/generators.json +10 -0
- package/package.json +31 -7
- package/src/aws/child-environment.d.ts +10 -0
- package/src/aws/child-environment.js +77 -0
- package/src/aws/identity.d.ts +13 -0
- package/src/aws/identity.js +41 -0
- package/src/aws-authority/index.d.ts +2 -0
- package/src/aws-authority/index.js +6 -0
- package/src/aws-authority/lambda-policy-ordering.d.ts +38 -0
- package/src/aws-authority/lambda-policy-ordering.js +56 -0
- package/src/aws-authority/stage-authority.d.ts +248 -0
- package/src/aws-authority/stage-authority.js +3558 -0
- package/src/blueprints/external-sandbox.d.ts +1 -1
- package/src/blueprints/external-sandbox.js +21 -9
- package/src/blueprints/manifest.d.ts +1 -1
- package/src/blueprints/resolver.js +28 -15
- package/src/cli/bootstrap.d.ts +1 -1
- package/src/cli/deploy-runtime.d.ts +30 -0
- package/src/cli/deploy-runtime.js +174 -0
- package/src/cli/dev-command.d.ts +18 -4
- package/src/cli/dev-command.js +71 -0
- package/src/cli/main.d.ts +9 -1
- package/src/cli/main.js +157 -24
- package/src/cli/output.d.ts +1 -1
- package/src/cli/output.js +1 -1
- package/src/cli/personal-secret-runtime.d.ts +12 -0
- package/src/cli/personal-secret-runtime.js +18 -3
- package/src/cli/secret-terminal.js +1 -1
- package/src/container-images.d.ts +1 -1
- package/src/container-images.js +1 -1
- package/src/developer-agent/context.js +41 -9
- package/src/developer-agent/generator-planning.js +20 -6
- package/src/developer-agent/git-inspection.d.ts +6 -2
- package/src/developer-agent/git-inspection.js +78 -6
- package/src/developer-agent/model.d.ts +5 -3
- package/src/developer-agent/model.js +4 -4
- package/src/developer-agent/operation-registry.d.ts +15 -0
- package/src/developer-agent/operation-registry.js +342 -49
- package/src/developer-agent/planning.d.ts +8 -1
- package/src/developer-agent/planning.js +39 -16
- package/src/developer-agent/preview-changes.d.ts +2 -0
- package/src/developer-agent/preview-changes.js +14 -2
- package/src/developer-agent/preview-source.js +3 -0
- package/src/developer-agent/validation.js +25 -9
- package/src/developer-agent/workspace-inspection.js +60 -5
- package/src/executors/blueprint-trust/blueprint-trust.js +6 -0
- package/src/executors/deployment-plan/deployment-plan.d.ts +2 -0
- package/src/executors/deployment-plan/deployment-plan.js +57 -2
- package/src/executors/dev-doctor/dev-doctor.js +13 -6
- package/src/executors/dev-task-cleanup/dev-task-cleanup.d.ts +23 -0
- package/src/executors/dev-task-cleanup/dev-task-cleanup.js +145 -0
- package/src/executors/dev-task-cleanup/schema.json +9 -0
- package/src/executors/dev-task-cleanup/task-stack-absence.d.ts +27 -0
- package/src/executors/dev-task-cleanup/task-stack-absence.js +281 -0
- package/src/executors/dev-task-cleanup/task-stack-checkpoint.d.ts +12 -0
- package/src/executors/dev-task-cleanup/task-stack-checkpoint.js +92 -0
- package/src/executors/fleet/fleet.js +1 -1
- package/src/executors/foundation-preflight/foundation-preflight.d.ts +1 -0
- package/src/executors/foundation-preflight/foundation-preflight.js +6 -2
- package/src/executors/foundation-preflight/schema.json +5 -0
- package/src/executors/foundation-profile-preflight/foundation-profile-preflight.d.ts +13 -2
- package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js +95 -31
- package/src/executors/foundation-profile-preflight/production-database-safeguard.d.ts +65 -0
- package/src/executors/foundation-profile-preflight/production-database-safeguard.js +223 -0
- package/src/executors/foundation-profile-preflight/schema.json +15 -4
- package/src/executors/foundation-remove-preflight/foundation-remove-preflight.d.ts +11 -1
- package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js +70 -20
- package/src/executors/foundation-remove-preflight/schema.json +6 -1
- package/src/executors/github-bootstrap/github-bootstrap.d.ts +1 -0
- package/src/executors/github-bootstrap/github-bootstrap.js +3 -0
- package/src/executors/github-bootstrap/schema.json +7 -1
- package/src/executors/infrastructure-plan/infrastructure-plan.d.ts +29 -136
- package/src/executors/infrastructure-plan/infrastructure-plan.js +230 -3282
- package/src/executors/infrastructure-plan/schema.json +12 -52
- package/src/executors/local-deploy/federated-credential-transport.d.ts +48 -0
- package/src/executors/local-deploy/federated-credential-transport.js +252 -0
- package/src/executors/local-deploy/local-approval.d.ts +18 -0
- package/src/executors/local-deploy/local-approval.js +39 -0
- package/src/executors/local-deploy/local-deploy.d.ts +112 -0
- package/src/executors/local-deploy/local-deploy.js +1404 -0
- package/src/executors/local-deploy/schema.json +70 -0
- package/src/executors/refresh/refresh.js +2 -2
- package/src/executors/remove/remove.js +2 -2
- package/src/executors/router-waf-rehearsal/router-waf-rehearsal.d.ts +42 -0
- package/src/executors/router-waf-rehearsal/router-waf-rehearsal.js +1229 -0
- package/src/executors/router-waf-rehearsal/schema.json +29 -0
- package/src/executors/secret-initialize/schema.json +42 -0
- package/src/executors/secret-initialize/secret-initialize.d.ts +34 -0
- package/src/executors/secret-initialize/secret-initialize.js +297 -0
- package/src/executors/secret-metadata/schema.json +5 -0
- package/src/executors/secret-metadata/secret-metadata.d.ts +16 -2
- package/src/executors/secret-metadata/secret-metadata.js +129 -30
- package/src/executors/sst-lifecycle/generated-secret-retirement.d.ts +53 -0
- package/src/executors/sst-lifecycle/generated-secret-retirement.js +192 -0
- package/src/executors/sst-lifecycle/governed-native-operation.d.ts +48 -0
- package/src/executors/sst-lifecycle/governed-native-operation.js +163 -0
- package/src/executors/sst-lifecycle/logging-preflight.d.ts +5 -0
- package/src/executors/sst-lifecycle/logging-preflight.js +23 -13
- package/src/executors/sst-lifecycle/run-sst-command.d.ts +46 -6
- package/src/executors/sst-lifecycle/run-sst-command.js +750 -71
- package/src/executors/sst-lifecycle/schema.json +8 -1
- package/src/executors/sst-lifecycle/secret-preflight.d.ts +2 -0
- package/src/executors/sst-lifecycle/secret-preflight.js +13 -7
- package/src/executors/sst-lifecycle/sst-environment-source.d.ts +33 -0
- package/src/executors/sst-lifecycle/sst-environment-source.js +267 -0
- package/src/executors/sst-lifecycle/task-unlock.d.ts +15 -0
- package/src/executors/sst-lifecycle/task-unlock.js +126 -0
- package/src/executors/unlock/unlock.js +2 -2
- package/src/foundation/capability-plan.d.ts +43 -0
- package/src/foundation/capability-plan.js +168 -0
- package/src/foundation/cost-estimate.d.ts +170 -0
- package/src/foundation/cost-estimate.js +683 -0
- package/src/foundation/discovery.d.ts +14 -11
- package/src/foundation/discovery.js +32 -6
- package/src/foundation/index.d.ts +4 -0
- package/src/foundation/index.js +11 -0
- package/src/foundation/local-database-contract.d.ts +20 -0
- package/src/foundation/local-database-contract.js +262 -13
- package/src/foundation/local-private-smoke-access.d.ts +20 -0
- package/src/foundation/local-private-smoke-access.js +197 -0
- package/src/foundation/logging-preflight.js +1 -1
- package/src/foundation/logging.d.ts +3 -1
- package/src/foundation/logging.js +1 -1
- package/src/foundation/partial-state.d.ts +10 -0
- package/src/foundation/partial-state.js +21 -0
- package/src/foundation/preflight.js +37 -18
- package/src/foundation/private-smoke-access.d.ts +25 -0
- package/src/foundation/private-smoke-access.js +135 -0
- package/src/foundation/private-smoke-admission.d.ts +45 -0
- package/src/foundation/private-smoke-admission.js +180 -0
- package/src/foundation/private-smoke-control-plane.d.ts +18 -0
- package/src/foundation/private-smoke-control-plane.js +184 -0
- package/src/foundation/provision-database-bindings.d.ts +5 -0
- package/src/foundation/provision-database-bindings.js +41 -8
- package/src/foundation/provision-logical-database.js +15 -8
- package/src/foundation/requirements.d.ts +3 -3
- package/src/foundation/requirements.js +24 -12
- package/src/foundation/router-waf-rate-rehearsal.d.ts +97 -0
- package/src/foundation/router-waf-rate-rehearsal.js +210 -0
- package/src/foundation/router-waf.d.ts +149 -0
- package/src/foundation/router-waf.js +809 -0
- package/src/foundation/stages.d.ts +1 -0
- package/src/foundation/stages.js +11 -0
- package/src/generators/blueprint/blueprint.d.ts +5 -0
- package/src/generators/blueprint/blueprint.js +102 -0
- package/src/generators/blueprint/files.d.ts +6 -0
- package/src/generators/blueprint/files.js +217 -0
- package/src/generators/blueprint/schema.d.ts +4 -0
- package/src/generators/blueprint/schema.json +18 -0
- package/src/generators/formatting.d.ts +8 -0
- package/src/generators/formatting.js +141 -0
- package/src/generators/function/function.js +38 -17
- package/src/generators/logging-registry.d.ts +2 -0
- package/src/generators/logging-registry.js +22 -0
- package/src/generators/post-generation-install.js +2 -2
- package/src/generators/preset/dependency-overrides.d.ts +8 -0
- package/src/generators/preset/dependency-overrides.js +55 -0
- package/src/generators/preset/generator.js +43 -3
- package/src/generators/preset/schema.d.ts +10 -0
- package/src/generators/preset/schema.json +47 -0
- package/src/generators/preset/workspace-files-adopter-skills.d.ts +7 -0
- package/src/generators/preset/workspace-files-adopter-skills.js +324 -0
- package/src/generators/preset/workspace-files-ci-acceptance.d.ts +1 -0
- package/src/generators/preset/workspace-files-ci-acceptance.js +791 -0
- package/src/generators/preset/workspace-files-ci-install.d.ts +2 -0
- package/src/generators/preset/workspace-files-ci-install.js +196 -0
- package/src/generators/preset/workspace-files-developer-agent.d.ts +2 -0
- package/src/generators/preset/workspace-files-developer-agent.js +162 -44
- package/src/generators/preset/workspace-files-ecr-inspector.d.ts +18 -0
- package/src/generators/preset/workspace-files-ecr-inspector.js +298 -0
- package/src/generators/preset/workspace-files-foundation-workload-roles.js +5 -2
- package/src/generators/preset/workspace-files-performance-cost.d.ts +2 -2
- package/src/generators/preset/workspace-files-performance-cost.js +8 -8
- package/src/generators/preset/workspace-files-performance-load.d.ts +1 -1
- package/src/generators/preset/workspace-files-performance-load.js +39 -25
- package/src/generators/preset/workspace-files-shared-operation-claims.d.ts +10 -0
- package/src/generators/preset/workspace-files-shared-operation-claims.js +59 -0
- package/src/generators/preset/workspace-files-stage-authority.d.ts +6 -0
- package/src/generators/preset/workspace-files-stage-authority.js +529 -0
- package/src/generators/preset/workspace-files-thin-deploy.d.ts +65 -0
- package/src/generators/preset/workspace-files-thin-deploy.js +2507 -0
- package/src/generators/preset/workspace-files-thin-docs.d.ts +7 -0
- package/src/generators/preset/workspace-files-thin-docs.js +370 -0
- package/src/generators/preset/workspace-files-thin-release.d.ts +14 -0
- package/src/generators/preset/workspace-files-thin-release.js +26 -0
- package/src/generators/preset/workspace-files-workload-role-baseline.js +254 -42
- package/src/generators/preset/workspace-files.d.ts +18 -2
- package/src/generators/preset/workspace-files.js +1525 -609
- package/src/generators/repository-policy/repository-policy.js +235 -5
- package/src/generators/repository-policy/schema.d.ts +10 -0
- package/src/generators/repository-policy/schema.json +80 -4
- package/src/generators/repository-policy/tree-policy.d.ts +3 -0
- package/src/generators/repository-policy/tree-policy.js +25 -0
- package/src/generators/slice/built-in-plan-api-contract-files.js +49 -11
- package/src/generators/slice/built-in-plan-api-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-api-files.js +130 -414
- package/src/generators/slice/built-in-plan-async-work-files.js +166 -1969
- package/src/generators/slice/built-in-plan-authorization-files.js +102 -334
- package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js +975 -233
- package/src/generators/slice/built-in-plan-authorization-storage.d.ts +3 -0
- package/src/generators/slice/built-in-plan-authorization-storage.js +119 -0
- package/src/generators/slice/built-in-plan-background-work-files.d.ts +2 -0
- package/src/generators/slice/built-in-plan-background-work-files.js +99 -0
- package/src/generators/slice/built-in-plan-data-deletion-files.js +2 -830
- package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js +5 -31
- package/src/generators/slice/built-in-plan-data-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-data-files.js +176 -1200
- package/src/generators/slice/built-in-plan-data-lifecycle-files.js +53 -28
- package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js +37 -2
- package/src/generators/slice/built-in-plan-data-retention-job-files.js +7 -2443
- package/src/generators/slice/built-in-plan-data-retention-launcher-files.js +50 -8
- package/src/generators/slice/built-in-plan-data-rights-files.js +6 -4482
- package/src/generators/slice/built-in-plan-database-lifecycle-files.js +44 -25
- package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js +25 -2
- package/src/generators/slice/built-in-plan-foundation-files.d.ts +2 -1
- package/src/generators/slice/built-in-plan-foundation-files.js +39 -18
- package/src/generators/slice/built-in-plan-frontend-files.js +14 -3
- package/src/generators/slice/built-in-plan-infrastructure-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-infrastructure-files.js +933 -730
- package/src/generators/slice/built-in-plan-infrastructure-safety-files.js +75 -14
- package/src/generators/slice/built-in-plan-key-value-cleanup.d.ts +4 -0
- package/src/generators/slice/built-in-plan-key-value-cleanup.js +100 -0
- package/src/generators/slice/built-in-plan-key-value-consumer.d.ts +4 -0
- package/src/generators/slice/built-in-plan-key-value-consumer.js +151 -0
- package/src/generators/slice/built-in-plan-key-value-deletion.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-deletion.js +377 -0
- package/src/generators/slice/built-in-plan-key-value-delivery.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-delivery.js +137 -0
- package/src/generators/slice/built-in-plan-key-value-export.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-export.js +595 -0
- package/src/generators/slice/built-in-plan-key-value-files.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-files.js +31 -0
- package/src/generators/slice/built-in-plan-key-value-holds.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-holds.js +189 -0
- package/src/generators/slice/built-in-plan-key-value-infrastructure.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-infrastructure.js +102 -0
- package/src/generators/slice/built-in-plan-key-value-performance.d.ts +5 -0
- package/src/generators/slice/built-in-plan-key-value-performance.js +530 -0
- package/src/generators/slice/built-in-plan-key-value-provider.d.ts +4 -0
- package/src/generators/slice/built-in-plan-key-value-provider.js +366 -0
- package/src/generators/slice/built-in-plan-key-value-records.d.ts +3 -0
- package/src/generators/slice/built-in-plan-key-value-records.js +232 -0
- package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.js +103 -0
- package/src/generators/slice/built-in-plan-key-value-retention-job-files.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-retention-job-files.js +160 -0
- package/src/generators/slice/built-in-plan-key-value-retention-maintenance.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-retention-maintenance.js +329 -0
- package/src/generators/slice/built-in-plan-key-value-retention-worker.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-retention-worker.js +477 -0
- package/src/generators/slice/built-in-plan-key-value-retention.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-retention.js +184 -0
- package/src/generators/slice/built-in-plan-metadata-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-metadata-files.js +159 -29
- package/src/generators/slice/built-in-plan-native-runtime-authority-files.d.ts +2 -0
- package/src/generators/slice/built-in-plan-native-runtime-authority-files.js +324 -0
- package/src/generators/slice/built-in-plan-operations-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-operations-files.js +585 -97
- package/src/generators/slice/built-in-plan-performance-files.d.ts +2 -1
- package/src/generators/slice/built-in-plan-performance-files.js +220 -1074
- package/src/generators/slice/built-in-plan-project-files.js +141 -135
- package/src/generators/slice/built-in-plan-release-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-release-files.js +310 -70
- package/src/generators/slice/built-in-plan-reliability-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-reliability-files.js +283 -44
- package/src/generators/slice/built-in-plan-secret-runtime-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-secret-runtime-files.js +87 -76
- package/src/generators/slice/built-in-plan-shared.d.ts +4 -2
- package/src/generators/slice/built-in-plan-shared.js +41 -19
- package/src/generators/slice/built-in-plan-sql-events.d.ts +2 -0
- package/src/generators/slice/built-in-plan-sql-events.js +276 -0
- package/src/generators/slice/built-in-plan-testing-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-testing-files.js +304 -172
- package/src/generators/slice/built-in-plan-testing-persistence-event-files.d.ts +7 -0
- package/src/generators/slice/built-in-plan-testing-persistence-event-files.js +487 -0
- package/src/generators/slice/built-in-plan-testing-persistence-files.d.ts +2 -0
- package/src/generators/slice/built-in-plan-testing-persistence-files.js +180 -0
- package/src/generators/slice/built-in-plan-thin-release-files.d.ts +11 -0
- package/src/generators/slice/built-in-plan-thin-release-files.js +162 -0
- package/src/generators/slice/built-in-plan-verification-files.js +76 -2
- package/src/generators/slice/built-in-plan-web-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-web-files.js +223 -16
- package/src/generators/slice/built-in-plan-workload-role-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-workload-role-files.js +143 -279
- package/src/generators/slice/built-in-plan.d.ts +11 -1
- package/src/generators/slice/built-in-plan.js +83 -30
- package/src/generators/slice/data-policy-review-seed.d.ts +2 -0
- package/src/generators/slice/data-policy-review-seed.js +22 -0
- package/src/generators/slice/deployed-smoke-readiness.d.ts +2 -0
- package/src/generators/slice/deployed-smoke-readiness.js +214 -0
- package/src/generators/slice/local-source-identity.d.ts +2 -0
- package/src/generators/slice/local-source-identity.js +31 -0
- package/src/generators/slice/persistence-contract.d.ts +14 -0
- package/src/generators/slice/persistence-contract.js +32 -0
- package/src/generators/slice/slice.js +61 -50
- package/src/generators/sql/schema.d.ts +7 -0
- package/src/generators/sql/schema.json +38 -0
- package/src/generators/sql/sql.d.ts +6 -0
- package/src/generators/sql/sql.js +53 -0
- package/src/generators/upgrade/sql-seeded-reconciliation.d.ts +2 -0
- package/src/generators/upgrade/sql-seeded-reconciliation.js +170 -0
- package/src/generators/upgrade/upgrade.d.ts +15 -1
- package/src/generators/upgrade/upgrade.js +435 -44
- package/src/generators/workload/frozen-container.d.ts +1 -1
- package/src/generators/workload/performance-registration.d.ts +1 -0
- package/src/generators/workload/performance-registration.js +9 -11
- package/src/generators/workload/service-performance-files.d.ts +1 -0
- package/src/generators/workload/service-performance-files.js +27 -7
- package/src/generators/workload/workload.d.ts +1 -1
- package/src/generators/workload/workload.js +105 -29
- package/src/git-policy/action-pins.d.ts +5 -0
- package/src/git-policy/action-pins.js +5 -0
- package/src/git-policy/github-bootstrap.d.ts +48 -8
- package/src/git-policy/github-bootstrap.js +344 -176
- package/src/git-policy/routing.d.ts +7 -1
- package/src/git-policy/routing.js +62 -1
- package/src/index.d.ts +1 -0
- package/src/index.js +1 -0
- package/src/infrastructure-change/local-capability.d.ts +73 -0
- package/src/infrastructure-change/local-capability.js +114 -0
- package/src/infrastructure-change/model.d.ts +25 -4
- package/src/infrastructure-change/model.js +1 -0
- package/src/infrastructure-change/normalize.d.ts +4 -0
- package/src/infrastructure-change/normalize.js +47 -7
- package/src/infrastructure-change/plan.d.ts +30 -3
- package/src/infrastructure-change/plan.js +323 -13
- package/src/infrastructure-change/risk.d.ts +3 -1
- package/src/infrastructure-change/risk.js +96 -16
- package/src/local-dev/browser-verification.d.ts +37 -0
- package/src/local-dev/browser-verification.js +281 -0
- package/src/local-dev/contracts.d.ts +10 -1
- package/src/local-dev/contracts.js +114 -13
- package/src/local-dev/dev-command-core.js +24 -5
- package/src/local-dev/docker-credential-health.d.ts +14 -0
- package/src/local-dev/docker-credential-health.js +94 -0
- package/src/local-dev/environment-inspector.d.ts +7 -0
- package/src/local-dev/environment-inspector.js +42 -15
- package/src/local-dev/environment-state.js +2 -2
- package/src/local-dev/errors.d.ts +1 -1
- package/src/local-dev/errors.js +2 -0
- package/src/local-dev/fleet-client.js +2 -2
- package/src/local-dev/fleet-configuration.js +57 -25
- package/src/local-dev/fleet-inventory.js +58 -22
- package/src/local-dev/fleet-ipc.d.ts +7 -0
- package/src/local-dev/fleet-ipc.js +14 -2
- package/src/local-dev/fleet-launcher.d.ts +6 -0
- package/src/local-dev/fleet-launcher.js +16 -4
- package/src/local-dev/fleet-logs.js +50 -22
- package/src/local-dev/fleet-process.d.ts +20 -1
- package/src/local-dev/fleet-process.js +197 -41
- package/src/local-dev/fleet-runner-evidence.d.ts +5 -0
- package/src/local-dev/fleet-runner-evidence.js +56 -0
- package/src/local-dev/fleet-runtime.js +268 -229
- package/src/local-dev/fleet-session.d.ts +2 -0
- package/src/local-dev/fleet-session.js +28 -11
- package/src/local-dev/fleet-slice-runner-daemon.js +4 -0
- package/src/local-dev/fleet-state.d.ts +5 -2
- package/src/local-dev/fleet-state.js +25 -4
- package/src/local-dev/fleet-supervisor.d.ts +3 -0
- package/src/local-dev/fleet-supervisor.js +66 -11
- package/src/local-dev/fleet-web-start.d.ts +12 -0
- package/src/local-dev/fleet-web-start.js +48 -0
- package/src/local-dev/identity.js +3 -14
- package/src/local-dev/index.d.ts +1 -0
- package/src/local-dev/index.js +1 -0
- package/src/local-dev/native-completion.d.ts +9 -0
- package/src/local-dev/native-completion.js +130 -0
- package/src/local-dev/nx-workspace.d.ts +4 -2
- package/src/local-dev/nx-workspace.js +11 -6
- package/src/local-dev/personal-stage.d.ts +4 -5
- package/src/local-dev/personal-stage.js +6 -54
- package/src/local-dev/port-claims.d.ts +13 -0
- package/src/local-dev/port-claims.js +46 -0
- package/src/local-dev/ports.d.ts +14 -2
- package/src/local-dev/ports.js +78 -3
- package/src/local-dev/private-state.d.ts +11 -0
- package/src/local-dev/private-state.js +146 -40
- package/src/local-dev/process-group.d.ts +4 -0
- package/src/local-dev/process-group.js +29 -0
- package/src/local-dev/process-identity.d.ts +8 -0
- package/src/local-dev/process-identity.js +31 -1
- package/src/local-dev/proxy.js +11 -12
- package/src/local-dev/runtime-paths.js +1 -1
- package/src/local-dev/slice-claim.js +1 -1
- package/src/local-dev/slice-runner.d.ts +15 -6
- package/src/local-dev/slice-runner.js +189 -54
- package/src/local-dev/task-attachment.d.ts +17 -0
- package/src/local-dev/task-attachment.js +73 -0
- package/src/local-dev/task-authority.d.ts +10 -0
- package/src/local-dev/task-authority.js +27 -0
- package/src/local-dev/task-identity.d.ts +33 -0
- package/src/local-dev/task-identity.js +418 -0
- package/src/local-dev/task-native-writer.d.ts +18 -0
- package/src/local-dev/task-native-writer.js +329 -0
- package/src/local-dev/tls.js +8 -2
- package/src/local-dev/web-launch.d.ts +9 -0
- package/src/local-dev/web-launch.js +130 -0
- package/src/ownership/composition.d.ts +2 -1
- package/src/ownership/composition.js +1 -0
- package/src/performance/cost-collection.d.ts +1 -1
- package/src/performance/cost-collection.js +4 -2
- package/src/performance/cost-controls.d.ts +8 -4
- package/src/performance/cost-controls.js +39 -28
- package/src/performance/evidence.d.ts +1 -1
- package/src/performance/evidence.js +5 -3
- package/src/performance/load-safety.js +5 -3
- package/src/performance/model.d.ts +4 -4
- package/src/performance/model.js +4 -5
- package/src/performance/scenario.d.ts +22 -0
- package/src/performance/scenario.js +100 -92
- package/src/release/index.d.ts +0 -2
- package/src/release/index.js +0 -2
- package/src/release/source-authority.d.ts +5 -5
- package/src/release/source-authority.js +141 -124
- package/src/repository-policy/aurora-preflight.d.ts +1 -1
- package/src/repository-policy/aurora-preflight.js +4 -1
- package/src/repository-policy/capacity-migration.d.ts +3 -0
- package/src/repository-policy/capacity-migration.js +21 -0
- package/src/repository-policy/deployment-plan.d.ts +4 -1
- package/src/repository-policy/deployment-plan.js +9 -0
- package/src/repository-policy/foundation-profile.js +10 -1
- package/src/repository-policy/policy.d.ts +57 -3
- package/src/repository-policy/policy.js +497 -11
- package/src/schemas/blueprint-v1.json +5 -4
- package/src/schemas/foundation-requirement-v1.json +5 -4
- package/src/schemas/performance-policy-v1.json +3 -3
- package/src/schemas/repository-policy-v1.json +130 -6
- package/src/schemas/testing-evidence-result-v1.json +1 -1
- package/src/secrets/adapters.d.ts +7 -2
- package/src/secrets/adapters.js +34 -3
- package/src/secrets/aws-control-plane.d.ts +10 -1
- package/src/secrets/aws-control-plane.js +67 -0
- package/src/secrets/generated-aws-control-plane.d.ts +23 -0
- package/src/secrets/generated-aws-control-plane.js +259 -0
- package/src/secrets/metadata.js +38 -10
- package/src/secrets/model.d.ts +8 -1
- package/src/secrets/model.js +24 -3
- package/src/secrets/operator.d.ts +91 -3
- package/src/secrets/operator.js +463 -13
- package/src/secrets/personal-command.d.ts +18 -2
- package/src/secrets/personal-command.js +66 -12
- package/src/secrets/registry.d.ts +2 -1
- package/src/secrets/registry.js +18 -1
- package/src/secrets/verification.js +15 -2
- package/src/secrets/workload-access.js +10 -2
- package/src/sst-environment-source-format.d.ts +6 -0
- package/src/sst-environment-source-format.js +199 -0
- package/src/supply-chain/action-pins.js +61 -7
- package/src/supply-chain/blueprint-trust-git.js +85 -24
- package/src/supply-chain/blueprint-verification-authority.js +55 -3
- package/src/supply-chain/build-output-bounds.d.ts +2 -0
- package/src/supply-chain/build-output-bounds.js +12 -0
- package/src/supply-chain/build-output.d.ts +7 -1
- package/src/supply-chain/build-output.js +177 -24
- package/src/supply-chain/ecr-scanning.d.ts +5 -3
- package/src/supply-chain/ecr-scanning.js +11 -7
- package/src/supply-chain/ecs-deployed-image.d.ts +5 -3
- package/src/supply-chain/ecs-deployed-image.js +6 -4
- package/src/supply-chain/generated-blueprint-trust-command.js +18 -1
- package/src/supply-chain/generated-command.js +1 -0
- package/src/supply-chain/generated-container-release-command.js +1285 -124
- package/src/supply-chain/generated-ecr-collector-command.d.ts +0 -1
- package/src/supply-chain/generated-ecr-collector-command.js +200 -93
- package/src/supply-chain/generated-files.js +25 -14
- package/src/supply-chain/generated-scanner-command.js +2 -1
- package/src/supply-chain/index.d.ts +1 -1
- package/src/supply-chain/index.js +2 -1
- package/src/supply-chain/sbom.d.ts +1 -1
- package/src/supply-chain/sbom.js +30 -5
- package/src/supply-chain/scanner.js +3 -0
- package/src/testing-evidence/fixture-scope.d.ts +2 -1
- package/src/testing-evidence/fixture-scope.js +4 -2
- package/src/testing-evidence/result.d.ts +2 -1
- package/src/testing-evidence/result.js +18 -4
- package/src/workload-roles/account-baseline.d.ts +11 -0
- package/src/workload-roles/account-baseline.js +253 -16
- package/src/workload-roles/authority.d.ts +3 -1
- package/src/workload-roles/authority.js +48 -2
- package/src/workload-roles/aws-s3-state.js +27 -0
- package/src/workload-roles/boundary.d.ts +2 -1
- package/src/workload-roles/boundary.js +9 -2
- package/src/workload-roles/handler.js +52 -24
- package/src/workload-roles/index.d.ts +10 -17
- package/src/workload-roles/index.js +5 -18
- package/src/workload-roles/injection.js +1 -1
- package/src/workload-roles/provisioner.js +12 -4
- package/src/workload-roles/registration.d.ts +1 -0
- package/src/workload-roles/registration.js +5 -0
- package/src/workload-roles/stage-boundary.js +1 -1
- package/src/workload-roles/standard-slice.js +3 -3
- package/src/workspace-deployment/affected-lifecycle.d.ts +53 -0
- package/src/workspace-deployment/affected-lifecycle.js +84 -0
- package/src/workspace-deployment/identity.d.ts +3 -0
- package/src/workspace-deployment/identity.js +22 -0
- package/src/workspace-deployment/index.d.ts +4 -0
- package/src/workspace-deployment/index.js +8 -0
- package/src/workspace-deployment/migration-evidence.d.ts +29 -0
- package/src/workspace-deployment/migration-evidence.js +83 -0
- package/src/workspace-deployment/migration.d.ts +27 -0
- package/src/workspace-deployment/migration.js +109 -0
- package/src/workspace-deployment/ownership.d.ts +81 -0
- package/src/workspace-deployment/ownership.js +381 -0
- package/src/api-contract/baseline-update.js.map +0 -1
- package/src/api-contract/compatibility.js.map +0 -1
- package/src/api-contract/contract-graph.js.map +0 -1
- package/src/api-contract/evidence.js.map +0 -1
- package/src/api-contract/index.js.map +0 -1
- package/src/api-contract/model.fixtures.d.ts +0 -2
- package/src/api-contract/model.fixtures.js +0 -81
- package/src/api-contract/model.fixtures.js.map +0 -1
- package/src/api-contract/model.js.map +0 -1
- package/src/api-contract/rollout.js.map +0 -1
- package/src/authorization/compatibility.js.map +0 -1
- package/src/authorization/index.js.map +0 -1
- package/src/blueprints/execution.js.map +0 -1
- package/src/blueprints/external-sandbox.js.map +0 -1
- package/src/blueprints/index.js.map +0 -1
- package/src/blueprints/inputs.js.map +0 -1
- package/src/blueprints/manifest.js.map +0 -1
- package/src/blueprints/resolver.js.map +0 -1
- package/src/blueprints/transitions.js.map +0 -1
- package/src/cli/agent-command.js.map +0 -1
- package/src/cli/agent-runtime.js.map +0 -1
- package/src/cli/blueprint-authority.js.map +0 -1
- package/src/cli/blueprint-command.js.map +0 -1
- package/src/cli/bootstrap.js.map +0 -1
- package/src/cli/dev-command.js.map +0 -1
- package/src/cli/main.js.map +0 -1
- package/src/cli/output.js.map +0 -1
- package/src/cli/personal-secret-runtime.js.map +0 -1
- package/src/cli/secret-terminal.js.map +0 -1
- package/src/container-images.js.map +0 -1
- package/src/data-lifecycle/index.js.map +0 -1
- package/src/data-lifecycle/model.fixtures.d.ts +0 -2
- package/src/data-lifecycle/model.fixtures.js +0 -244
- package/src/data-lifecycle/model.fixtures.js.map +0 -1
- package/src/data-lifecycle/model.js.map +0 -1
- package/src/data-lifecycle/sensitive-artifacts.js.map +0 -1
- package/src/data-lifecycle/validation.js.map +0 -1
- package/src/database-retirement/contract.js.map +0 -1
- package/src/database-retirement/index.js.map +0 -1
- package/src/deterministic-order.js.map +0 -1
- package/src/developer-agent/context.js.map +0 -1
- package/src/developer-agent/generator-planning.js.map +0 -1
- package/src/developer-agent/generator-preview.js.map +0 -1
- package/src/developer-agent/git-inspection.js.map +0 -1
- package/src/developer-agent/handoff.js.map +0 -1
- package/src/developer-agent/index.js.map +0 -1
- package/src/developer-agent/model.js.map +0 -1
- package/src/developer-agent/operation-registry.js.map +0 -1
- package/src/developer-agent/ordering.js.map +0 -1
- package/src/developer-agent/planning.js.map +0 -1
- package/src/developer-agent/preview-changes.js.map +0 -1
- package/src/developer-agent/preview-source.js.map +0 -1
- package/src/developer-agent/validation.js.map +0 -1
- package/src/developer-agent/workspace-inspection.js.map +0 -1
- package/src/developer-agent/workspace-path.js.map +0 -1
- package/src/executors/blueprint-trust/blueprint-trust.js.map +0 -1
- package/src/executors/blueprint-verification/blueprint-verification.js.map +0 -1
- package/src/executors/deploy/deploy.js.map +0 -1
- package/src/executors/deployment-plan/deployment-plan.js.map +0 -1
- package/src/executors/dev/dev.js.map +0 -1
- package/src/executors/dev-doctor/dev-doctor.js.map +0 -1
- package/src/executors/dev-setup/dev-setup.js.map +0 -1
- package/src/executors/developer-context/developer-context.js.map +0 -1
- package/src/executors/fleet/fleet.js.map +0 -1
- package/src/executors/foundation-preflight/foundation-preflight.js.map +0 -1
- package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js.map +0 -1
- package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js.map +0 -1
- package/src/executors/github-bootstrap/github-bootstrap.js.map +0 -1
- package/src/executors/infrastructure-plan/infrastructure-plan.js.map +0 -1
- package/src/executors/refresh/refresh.js.map +0 -1
- package/src/executors/remove/remove.js.map +0 -1
- package/src/executors/secret-guardrails/secret-guardrails.js.map +0 -1
- package/src/executors/secret-metadata/secret-metadata.js.map +0 -1
- package/src/executors/sst-lifecycle/logging-preflight.js.map +0 -1
- package/src/executors/sst-lifecycle/run-sst-command.js.map +0 -1
- package/src/executors/sst-lifecycle/secret-preflight.js.map +0 -1
- package/src/executors/unlock/unlock.js.map +0 -1
- package/src/executors/work-markers/work-markers.js.map +0 -1
- package/src/foundation/discovery.js.map +0 -1
- package/src/foundation/index.js.map +0 -1
- package/src/foundation/local-database-contract.js.map +0 -1
- package/src/foundation/logging-preflight.js.map +0 -1
- package/src/foundation/logging.js.map +0 -1
- package/src/foundation/preflight.js.map +0 -1
- package/src/foundation/provision-database-bindings.js.map +0 -1
- package/src/foundation/provision-logical-database.js.map +0 -1
- package/src/foundation/requirements.js.map +0 -1
- package/src/foundation/router-origin-proof.js.map +0 -1
- package/src/foundation/stages.js.map +0 -1
- package/src/frontend-security/index.js.map +0 -1
- package/src/frontend-security/security-headers.js.map +0 -1
- package/src/generators/feature-registry.js.map +0 -1
- package/src/generators/function/function.js.map +0 -1
- package/src/generators/job/job.js.map +0 -1
- package/src/generators/logging-registry.js.map +0 -1
- package/src/generators/post-generation-install.js.map +0 -1
- package/src/generators/preset/generator.js.map +0 -1
- package/src/generators/preset/tool-versions.js.map +0 -1
- package/src/generators/preset/workspace-files-developer-agent.js.map +0 -1
- package/src/generators/preset/workspace-files-foundation-workload-roles.js.map +0 -1
- package/src/generators/preset/workspace-files-performance-cost.js.map +0 -1
- package/src/generators/preset/workspace-files-performance-load.js.map +0 -1
- package/src/generators/preset/workspace-files-workload-role-baseline.js.map +0 -1
- package/src/generators/preset/workspace-files.js.map +0 -1
- package/src/generators/repository-policy/repository-policy.js.map +0 -1
- package/src/generators/service/service.js.map +0 -1
- package/src/generators/slice/built-in-plan-api-contract-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-api-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-async-work-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-authorization-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-deletion-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-lifecycle-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-retention-job-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-retention-launcher-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-rights-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-database-lifecycle-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-foundation-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-frontend-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-infrastructure-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-infrastructure-safety-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-metadata-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-operations-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-performance-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-project-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-release-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-reliability-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-secret-runtime-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-shared.js.map +0 -1
- package/src/generators/slice/built-in-plan-testing-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-verification-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-web-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-workload-role-files.js.map +0 -1
- package/src/generators/slice/built-in-plan.js.map +0 -1
- package/src/generators/slice/slice.js.map +0 -1
- package/src/generators/upgrade/upgrade.js.map +0 -1
- package/src/generators/workload/frozen-container.js.map +0 -1
- package/src/generators/workload/performance-registration.js.map +0 -1
- package/src/generators/workload/reliability-registration.js.map +0 -1
- package/src/generators/workload/service-performance-files.js.map +0 -1
- package/src/generators/workload/workload.js.map +0 -1
- package/src/git-policy/action-pins.js.map +0 -1
- package/src/git-policy/github-bootstrap.js.map +0 -1
- package/src/git-policy/index.js.map +0 -1
- package/src/git-policy/routing.js.map +0 -1
- package/src/index.js.map +0 -1
- package/src/infrastructure-change/convergence.js.map +0 -1
- package/src/infrastructure-change/drift.js.map +0 -1
- package/src/infrastructure-change/index.js.map +0 -1
- package/src/infrastructure-change/model.js.map +0 -1
- package/src/infrastructure-change/normalize.js.map +0 -1
- package/src/infrastructure-change/plan.js.map +0 -1
- package/src/infrastructure-change/risk.js.map +0 -1
- package/src/infrastructure-change/summary.js.map +0 -1
- package/src/local-dev/context-discovery.js.map +0 -1
- package/src/local-dev/contract-validation.js.map +0 -1
- package/src/local-dev/contracts.js.map +0 -1
- package/src/local-dev/control-contract.js.map +0 -1
- package/src/local-dev/dev-command-core.js.map +0 -1
- package/src/local-dev/effects.js.map +0 -1
- package/src/local-dev/environment-inspector.js.map +0 -1
- package/src/local-dev/environment-state.js.map +0 -1
- package/src/local-dev/errors.js.map +0 -1
- package/src/local-dev/fleet-client.js.map +0 -1
- package/src/local-dev/fleet-configuration.js.map +0 -1
- package/src/local-dev/fleet-inventory.js.map +0 -1
- package/src/local-dev/fleet-ipc.js.map +0 -1
- package/src/local-dev/fleet-launcher.js.map +0 -1
- package/src/local-dev/fleet-lock.js.map +0 -1
- package/src/local-dev/fleet-logs.js.map +0 -1
- package/src/local-dev/fleet-process.js.map +0 -1
- package/src/local-dev/fleet-runtime.js.map +0 -1
- package/src/local-dev/fleet-session.js.map +0 -1
- package/src/local-dev/fleet-slice-runner-daemon.js.map +0 -1
- package/src/local-dev/fleet-startup.js.map +0 -1
- package/src/local-dev/fleet-state.js.map +0 -1
- package/src/local-dev/fleet-supervisor-daemon.js.map +0 -1
- package/src/local-dev/fleet-supervisor.js.map +0 -1
- package/src/local-dev/gateway-daemon.js.map +0 -1
- package/src/local-dev/gateway.js.map +0 -1
- package/src/local-dev/identity.js.map +0 -1
- package/src/local-dev/index.js.map +0 -1
- package/src/local-dev/local-context.js.map +0 -1
- package/src/local-dev/nx-workspace.js.map +0 -1
- package/src/local-dev/personal-secret-ledger.js.map +0 -1
- package/src/local-dev/personal-stage.js.map +0 -1
- package/src/local-dev/portless.js.map +0 -1
- package/src/local-dev/ports.js.map +0 -1
- package/src/local-dev/private-state.js.map +0 -1
- package/src/local-dev/process-identity.js.map +0 -1
- package/src/local-dev/proxy.js.map +0 -1
- package/src/local-dev/runtime-paths.js.map +0 -1
- package/src/local-dev/secret-slice-claim.js.map +0 -1
- package/src/local-dev/slice-claim.js.map +0 -1
- package/src/local-dev/slice-runner.js.map +0 -1
- package/src/local-dev/tls.js.map +0 -1
- package/src/ownership/composition.js.map +0 -1
- package/src/ownership/foundation-record.js.map +0 -1
- package/src/ownership/hash.js.map +0 -1
- package/src/ownership/index.js.map +0 -1
- package/src/ownership/json-ownership.js.map +0 -1
- package/src/ownership/record.js.map +0 -1
- package/src/ownership/workspace-record.js.map +0 -1
- package/src/performance/cost-collection.js.map +0 -1
- package/src/performance/cost-controls.js.map +0 -1
- package/src/performance/evidence.js.map +0 -1
- package/src/performance/index.js.map +0 -1
- package/src/performance/load-safety.js.map +0 -1
- package/src/performance/model.js.map +0 -1
- package/src/performance/pr-artifact-budget.js.map +0 -1
- package/src/performance/runner.js.map +0 -1
- package/src/performance/scenario-endpoint.js.map +0 -1
- package/src/performance/scenario.js.map +0 -1
- package/src/performance/test-fixtures.d.ts +0 -7
- package/src/performance/test-fixtures.js +0 -169
- package/src/performance/test-fixtures.js.map +0 -1
- package/src/performance/unit-cost.js.map +0 -1
- package/src/release/index.js.map +0 -1
- package/src/release/lifecycle.js.map +0 -1
- package/src/release/manifest.js.map +0 -1
- package/src/release/rollout.js.map +0 -1
- package/src/release/source-authority.js.map +0 -1
- package/src/repository-policy/aurora-preflight.js.map +0 -1
- package/src/repository-policy/deployment-plan.js.map +0 -1
- package/src/repository-policy/foundation-profile.js.map +0 -1
- package/src/repository-policy/index.js.map +0 -1
- package/src/repository-policy/policy.js.map +0 -1
- package/src/secrets/adapters.js.map +0 -1
- package/src/secrets/aws-control-plane.js.map +0 -1
- package/src/secrets/declaration-verification.js.map +0 -1
- package/src/secrets/guardrails.js.map +0 -1
- package/src/secrets/index.js.map +0 -1
- package/src/secrets/metadata.js.map +0 -1
- package/src/secrets/model.js.map +0 -1
- package/src/secrets/operator.js.map +0 -1
- package/src/secrets/permissions.js.map +0 -1
- package/src/secrets/personal-command.js.map +0 -1
- package/src/secrets/personal-ledger.js.map +0 -1
- package/src/secrets/registry.js.map +0 -1
- package/src/secrets/verification.js.map +0 -1
- package/src/secrets/workload-access.js.map +0 -1
- package/src/supply-chain/action-pins.js.map +0 -1
- package/src/supply-chain/blueprint-trust-git.js.map +0 -1
- package/src/supply-chain/blueprint-trust-process.js.map +0 -1
- package/src/supply-chain/blueprint-trust.js.map +0 -1
- package/src/supply-chain/blueprint-verification-authority.js.map +0 -1
- package/src/supply-chain/blueprint-verification-execution.js.map +0 -1
- package/src/supply-chain/build-output.js.map +0 -1
- package/src/supply-chain/common.js.map +0 -1
- package/src/supply-chain/container-artifact-contract.js.map +0 -1
- package/src/supply-chain/container-release.js.map +0 -1
- package/src/supply-chain/ecr-applicability.js.map +0 -1
- package/src/supply-chain/ecr-scanning.js.map +0 -1
- package/src/supply-chain/ecs-deployed-image.js.map +0 -1
- package/src/supply-chain/errors.js.map +0 -1
- package/src/supply-chain/generated-blueprint-trust-command.js.map +0 -1
- package/src/supply-chain/generated-command.js.map +0 -1
- package/src/supply-chain/generated-container-release-command.js.map +0 -1
- package/src/supply-chain/generated-ecr-collector-command.js.map +0 -1
- package/src/supply-chain/generated-files.js.map +0 -1
- package/src/supply-chain/generated-scanner-command.js.map +0 -1
- package/src/supply-chain/index.js.map +0 -1
- package/src/supply-chain/inventory.js.map +0 -1
- package/src/supply-chain/license-expression.js.map +0 -1
- package/src/supply-chain/pnpm-toolchain-authority.js.map +0 -1
- package/src/supply-chain/policy.js.map +0 -1
- package/src/supply-chain/publication.js.map +0 -1
- package/src/supply-chain/sbom.js.map +0 -1
- package/src/supply-chain/scanner.js.map +0 -1
- package/src/supply-chain/vendored-source.js.map +0 -1
- package/src/testing-evidence/fixture-scope.js.map +0 -1
- package/src/testing-evidence/index.js.map +0 -1
- package/src/testing-evidence/quarantine.js.map +0 -1
- package/src/testing-evidence/result.js.map +0 -1
- package/src/testing-evidence/runner-adapter.js.map +0 -1
- package/src/testing-evidence/sensitive-artifacts.js.map +0 -1
- package/src/validation.js.map +0 -1
- package/src/work-markers/index.js.map +0 -1
- package/src/work-markers/work-markers.js.map +0 -1
- package/src/workload-roles/account-baseline.js.map +0 -1
- package/src/workload-roles/authority.js.map +0 -1
- package/src/workload-roles/aws-adapter.js.map +0 -1
- package/src/workload-roles/aws-internal-handler.js.map +0 -1
- package/src/workload-roles/aws-s3-state.js.map +0 -1
- package/src/workload-roles/aws-sdk-control-plane.js.map +0 -1
- package/src/workload-roles/boundary.js.map +0 -1
- package/src/workload-roles/convergence.js.map +0 -1
- package/src/workload-roles/effective-policy.js.map +0 -1
- package/src/workload-roles/handler.js.map +0 -1
- package/src/workload-roles/history.js.map +0 -1
- package/src/workload-roles/index.js.map +0 -1
- package/src/workload-roles/injection.js.map +0 -1
- package/src/workload-roles/manifest.js.map +0 -1
- package/src/workload-roles/provisioner.js.map +0 -1
- package/src/workload-roles/registration.js.map +0 -1
- package/src/workload-roles/stage-boundary.js.map +0 -1
- package/src/workload-roles/standard-slice.js.map +0 -1
|
@@ -3,35 +3,57 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.DeveloperAgentUpgradePreviewBindingError = void 0;
|
|
4
4
|
exports.developerAgentUpgradeExecutionOptions = developerAgentUpgradeExecutionOptions;
|
|
5
5
|
exports.preserveCompositionRegions = preserveCompositionRegions;
|
|
6
|
+
exports.reemitRecordedNativeRuntimeCompositions = reemitRecordedNativeRuntimeCompositions;
|
|
6
7
|
exports.inspectWorkspaceSstVersion = inspectWorkspaceSstVersion;
|
|
7
8
|
exports.createUpgradeReport = createUpgradeReport;
|
|
9
|
+
exports.upgradeFoundationForRequirements = upgradeFoundationForRequirements;
|
|
8
10
|
exports.upgradeGenerator = upgradeGenerator;
|
|
9
11
|
const deterministic_order_js_1 = require("../../deterministic-order.js");
|
|
12
|
+
const capacity_migration_js_1 = require("../../repository-policy/capacity-migration.js");
|
|
13
|
+
const dependency_overrides_js_1 = require("../preset/dependency-overrides.js");
|
|
14
|
+
const workspace_files_adopter_skills_js_1 = require("../preset/workspace-files-adopter-skills.js");
|
|
15
|
+
const sql_seeded_reconciliation_js_1 = require("./sql-seeded-reconciliation.js");
|
|
10
16
|
const devkit_1 = require("@nx/devkit");
|
|
11
17
|
const node_buffer_1 = require("node:buffer");
|
|
12
18
|
const node_crypto_1 = require("node:crypto");
|
|
13
19
|
const node_fs_1 = require("node:fs");
|
|
14
20
|
const node_path_1 = require("node:path");
|
|
15
21
|
const node_util_1 = require("node:util");
|
|
16
|
-
const prettier_1 = require("prettier");
|
|
17
22
|
const yaml_1 = require("yaml");
|
|
18
23
|
const index_js_1 = require("../../blueprints/index.js");
|
|
19
24
|
const index_js_2 = require("../../api-contract/index.js");
|
|
20
25
|
const index_js_3 = require("../../foundation/index.js");
|
|
26
|
+
const capability_plan_js_1 = require("../../foundation/capability-plan.js");
|
|
27
|
+
const persistence_contract_js_1 = require("../slice/persistence-contract.js");
|
|
21
28
|
const index_js_4 = require("../../ownership/index.js");
|
|
22
29
|
const function_js_1 = require("../function/function.js");
|
|
30
|
+
const logging_registry_js_1 = require("../logging-registry.js");
|
|
23
31
|
const feature_registry_js_1 = require("../feature-registry.js");
|
|
24
32
|
const generator_js_1 = require("../preset/generator.js");
|
|
25
33
|
const tool_versions_js_1 = require("../preset/tool-versions.js");
|
|
26
34
|
const workspace_files_js_1 = require("../preset/workspace-files.js");
|
|
27
35
|
const built_in_plan_js_1 = require("../slice/built-in-plan.js");
|
|
36
|
+
const data_policy_review_seed_js_1 = require("../slice/data-policy-review-seed.js");
|
|
28
37
|
const workload_js_1 = require("../workload/workload.js");
|
|
38
|
+
const formatting_js_1 = require("../formatting.js");
|
|
29
39
|
const git_inspection_js_1 = require("../../developer-agent/git-inspection.js");
|
|
30
40
|
const context_js_1 = require("../../developer-agent/context.js");
|
|
31
41
|
const model_js_1 = require("../../developer-agent/model.js");
|
|
32
42
|
const preview_source_js_1 = require("../../developer-agent/preview-source.js");
|
|
33
43
|
const preview_changes_js_1 = require("../../developer-agent/preview-changes.js");
|
|
34
44
|
const validation_js_1 = require("../../developer-agent/validation.js");
|
|
45
|
+
const tree_policy_js_1 = require("../repository-policy/tree-policy.js");
|
|
46
|
+
function readRepositoryDeploymentRenderingOptions(tree) {
|
|
47
|
+
const policy = (0, tree_policy_js_1.readRepositoryOperatingPolicyFromTree)(tree);
|
|
48
|
+
return {
|
|
49
|
+
...(policy.deliveryLane ? { deliveryLane: policy.deliveryLane } : {}),
|
|
50
|
+
deploymentAccounts: policy.deploymentAccounts,
|
|
51
|
+
deploymentProfile: policy.deploymentProfile,
|
|
52
|
+
deploymentRegion: policy.deploymentRegion,
|
|
53
|
+
productionApprovalMode: policy.productionApproval.mode,
|
|
54
|
+
workspaceDeploymentId: policy.workspaceDeploymentId,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
35
57
|
function requireTargetCompositionFeatures(files, ownership) {
|
|
36
58
|
if (ownership.compositions.length === 0)
|
|
37
59
|
return;
|
|
@@ -327,8 +349,11 @@ const SEEDED_RECONCILIATION = {
|
|
|
327
349
|
category: 'reliability-operations',
|
|
328
350
|
implications: [
|
|
329
351
|
'alarm-registration',
|
|
352
|
+
'database-capacity-dynamodb-table-and-pending-events-throttle-metrics',
|
|
330
353
|
'diagnostic-authority',
|
|
354
|
+
'event-delivery-alarms-and-hourly-outbox-backlog-period',
|
|
331
355
|
'incident-remediation',
|
|
356
|
+
'performance-load-cleanup-backlog-two-evaluation-periods',
|
|
332
357
|
],
|
|
333
358
|
},
|
|
334
359
|
'operations/release.json': {
|
|
@@ -355,9 +380,29 @@ const SEEDED_RECONCILIATION = {
|
|
|
355
380
|
'journey-authority',
|
|
356
381
|
],
|
|
357
382
|
},
|
|
383
|
+
'secrets/declarations.ts': {
|
|
384
|
+
category: 'secret-contract',
|
|
385
|
+
implications: [
|
|
386
|
+
'generation-authority',
|
|
387
|
+
'secret-value-ownership',
|
|
388
|
+
'stage-requirements',
|
|
389
|
+
],
|
|
390
|
+
},
|
|
391
|
+
'secrets/metadata.json': {
|
|
392
|
+
category: 'secret-contract',
|
|
393
|
+
implications: ['logical-identity', 'management-class', 'registry-schema'],
|
|
394
|
+
},
|
|
395
|
+
'secrets/workload-access.json': {
|
|
396
|
+
category: 'secret-contract',
|
|
397
|
+
implications: [
|
|
398
|
+
'logical-identity',
|
|
399
|
+
'runtime-secret-linkage',
|
|
400
|
+
'workload-iam',
|
|
401
|
+
],
|
|
402
|
+
},
|
|
358
403
|
};
|
|
359
404
|
const SEEDED_RECONCILIATION_MARKER_REFERENCE = 'PLAN:5.6/seeded-upgrade-reconciliation';
|
|
360
|
-
const SEEDED_RECONCILIATION_MARKER = '// EBK-TODO(PLAN:5.6/seeded-upgrade-reconciliation): Review retained seeded async, configuration, feature, frontend, performance, reliability, and
|
|
405
|
+
const SEEDED_RECONCILIATION_MARKER = '// EBK-TODO(PLAN:5.6/seeded-upgrade-reconciliation): Review retained seeded async, configuration, feature, frontend, performance, reliability, release, and secret decisions against this framework upgrade before protected promotion.';
|
|
361
406
|
const SEEDED_RECONCILIATION_MARKER_ANCHOR = 'async/recovery-adapters.ts';
|
|
362
407
|
const DEVELOPER_AGENT_AGENTS_HEADING = '## Developer-Agent workflow';
|
|
363
408
|
function developerAgentAgentsAppendix(renderedAgents) {
|
|
@@ -372,11 +417,18 @@ function developerAgentAgentsAppendix(renderedAgents) {
|
|
|
372
417
|
return renderedAgents.slice(start + 1);
|
|
373
418
|
}
|
|
374
419
|
function planDeveloperAgentInstructionAppend(currentAgents, targetAgents) {
|
|
375
|
-
if (currentAgents === null
|
|
376
|
-
new RegExp(`(?:^|\\r?\\n)${DEVELOPER_AGENT_AGENTS_HEADING}(?:\\r?\\n|$)`).test(currentAgents)) {
|
|
420
|
+
if (currentAgents === null)
|
|
377
421
|
return null;
|
|
422
|
+
const additions = [];
|
|
423
|
+
if (!/(?:^|\r?\n)## Bundled adopter skills(?:\r?\n|$)/u.test(currentAgents)) {
|
|
424
|
+
additions.push((0, workspace_files_adopter_skills_js_1.renderAdopterSkillIndex)());
|
|
425
|
+
}
|
|
426
|
+
if (!new RegExp(`(?:^|\\r?\\n)${DEVELOPER_AGENT_AGENTS_HEADING}(?:\\r?\\n|$)`).test(currentAgents)) {
|
|
427
|
+
additions.push(developerAgentAgentsAppendix(targetAgents));
|
|
378
428
|
}
|
|
379
|
-
|
|
429
|
+
if (additions.length === 0)
|
|
430
|
+
return null;
|
|
431
|
+
const appendix = additions.join('\n');
|
|
380
432
|
const separator = currentAgents.length === 0
|
|
381
433
|
? ''
|
|
382
434
|
: currentAgents.endsWith('\n\n')
|
|
@@ -431,8 +483,8 @@ const COMPOSITION_REGIONS = [
|
|
|
431
483
|
'workload-registrations',
|
|
432
484
|
'function-registrations',
|
|
433
485
|
'composition-outputs',
|
|
434
|
-
'
|
|
435
|
-
'
|
|
486
|
+
'native-runtime-extensions',
|
|
487
|
+
'native-runtime-intent-contributions',
|
|
436
488
|
];
|
|
437
489
|
function preserveCompositionRegions(current, target) {
|
|
438
490
|
let merged = target;
|
|
@@ -457,9 +509,181 @@ function preserveCompositionRegions(current, target) {
|
|
|
457
509
|
}
|
|
458
510
|
return merged;
|
|
459
511
|
}
|
|
512
|
+
function countExact(source, value) {
|
|
513
|
+
return source.split(value).length - 1;
|
|
514
|
+
}
|
|
515
|
+
function escapeRegularExpression(value) {
|
|
516
|
+
return value.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
|
|
517
|
+
}
|
|
518
|
+
function quotedLiteral(value, group) {
|
|
519
|
+
return `(['"])${escapeRegularExpression(value)}\\${group}`;
|
|
520
|
+
}
|
|
521
|
+
const NATIVE_RUNTIME_COMPOSITION_REGIONS = [
|
|
522
|
+
{
|
|
523
|
+
isPresent: (body, { kind, name }) => new RegExp(`\\{\\s*id:\\s*${quotedLiteral(name, 1)}\\s*,\\s*kind:\\s*${quotedLiteral(kind, 2)}\\s*,?\\s*\\}`, 'u').test(body),
|
|
524
|
+
path: 'infra/native-runtime-authority/topology.ts',
|
|
525
|
+
region: 'native-runtime-extensions',
|
|
526
|
+
render: ({ kind, name }) => ` { id: '${name}', kind: '${kind}' },`,
|
|
527
|
+
},
|
|
528
|
+
{
|
|
529
|
+
isPresent: (body, { kind, name }) => new RegExp(`extensionWorkloadRoleIntentContributions\\(\\s*context\\s*,\\s*topology\\s*,\\s*${quotedLiteral(name, 1)}\\s*,\\s*${quotedLiteral(kind, 2)}\\s*,?\\s*\\)`, 'u').test(body),
|
|
530
|
+
path: 'infra/native-runtime-authority/effective-intent.ts',
|
|
531
|
+
region: 'native-runtime-intent-contributions',
|
|
532
|
+
render: ({ kind, name }) => ` ...extensionWorkloadRoleIntentContributions(\n context,\n topology,\n '${name}',\n '${kind}',\n ),`,
|
|
533
|
+
},
|
|
534
|
+
];
|
|
535
|
+
/**
|
|
536
|
+
* Re-emits every recorded composition into the managed native runtime
|
|
537
|
+
* authority regions of a regenerated Product Slice. Region preservation only
|
|
538
|
+
* carries a body when the current file exposes the same-named markers, so a
|
|
539
|
+
* Slice whose compositions predate the native-runtime-authority region names
|
|
540
|
+
* (or whose regions were emptied by an earlier managed upgrade) would
|
|
541
|
+
* otherwise lose the recorded workload authority. The recorded compositions in
|
|
542
|
+
* `.ebk/ownership.json` are the source of truth; compositions already present
|
|
543
|
+
* in a region are left untouched so a second apply is byte-stable.
|
|
544
|
+
* (EBK-INT-2026-070)
|
|
545
|
+
*/
|
|
546
|
+
function reemitRecordedNativeRuntimeCompositions(files, ownership) {
|
|
547
|
+
if (ownership.compositions.length === 0)
|
|
548
|
+
return files;
|
|
549
|
+
let result = files;
|
|
550
|
+
for (const target of NATIVE_RUNTIME_COMPOSITION_REGIONS) {
|
|
551
|
+
const source = files[target.path];
|
|
552
|
+
if (source === undefined) {
|
|
553
|
+
throw new Error(`Target Product Slice does not render ${target.path}.`);
|
|
554
|
+
}
|
|
555
|
+
const start = `// <ebk:${target.region}:start>`;
|
|
556
|
+
const end = `// <ebk:${target.region}:end>`;
|
|
557
|
+
let lines = source.split('\n');
|
|
558
|
+
for (const composition of ownership.compositions) {
|
|
559
|
+
const startIndex = lines.findIndex((line) => line.trim() === start);
|
|
560
|
+
const endIndex = lines.findIndex((line) => line.trim() === end);
|
|
561
|
+
if (startIndex < 0 ||
|
|
562
|
+
endIndex < startIndex ||
|
|
563
|
+
countExact(source, start) !== 1 ||
|
|
564
|
+
countExact(source, end) !== 1) {
|
|
565
|
+
throw new Error(`Target ${target.path} does not expose one exact ${target.region} region to re-emit recorded composition ${composition.kind} ${composition.name}.`);
|
|
566
|
+
}
|
|
567
|
+
const body = lines.slice(startIndex + 1, endIndex).join('\n');
|
|
568
|
+
if (target.isPresent(body, composition))
|
|
569
|
+
continue;
|
|
570
|
+
lines = [
|
|
571
|
+
...lines.slice(0, endIndex),
|
|
572
|
+
...target.render(composition).split('\n'),
|
|
573
|
+
...lines.slice(endIndex),
|
|
574
|
+
];
|
|
575
|
+
}
|
|
576
|
+
const merged = lines.join('\n');
|
|
577
|
+
if (merged !== source)
|
|
578
|
+
result = { ...result, [target.path]: merged };
|
|
579
|
+
}
|
|
580
|
+
return result;
|
|
581
|
+
}
|
|
582
|
+
function exactIndentedStringCallMatches(source, callee, argument) {
|
|
583
|
+
const pattern = new RegExp(`^ ${escapeRegularExpression(callee)}\\(\\s*(['"])${escapeRegularExpression(argument)}\\1\\s*,?\\s*\\),[ \\t]*$`, 'gmu');
|
|
584
|
+
return [...source.matchAll(pattern)];
|
|
585
|
+
}
|
|
586
|
+
function reconcileFunctionRegistrationArguments(source, ownership) {
|
|
587
|
+
let reconciled = source;
|
|
588
|
+
for (const composition of ownership.compositions) {
|
|
589
|
+
if (composition.kind !== 'function')
|
|
590
|
+
continue;
|
|
591
|
+
const { register } = (0, function_js_1.createFunctionFilePlan)('unused-workspace', ownership.slice, composition.name, composition.feature);
|
|
592
|
+
const registrationStart = ` ${register}(\n`;
|
|
593
|
+
if (countExact(reconciled, registrationStart) !== 1) {
|
|
594
|
+
throw new Error(`Retained Function ${composition.name} registration does not expose one exact Router argument shape.`);
|
|
595
|
+
}
|
|
596
|
+
const start = reconciled.indexOf(registrationStart);
|
|
597
|
+
const registrationEnd = '\n );';
|
|
598
|
+
const end = reconciled.indexOf(registrationEnd, start);
|
|
599
|
+
if (end < 0) {
|
|
600
|
+
throw new Error(`Retained Function ${composition.name} registration does not expose one exact Router argument shape.`);
|
|
601
|
+
}
|
|
602
|
+
let registration = reconciled.slice(start, end + registrationEnd.length);
|
|
603
|
+
if (registration.length > 64 * 1024) {
|
|
604
|
+
throw new Error(`Retained Function ${composition.name} registration exceeds its bounded managed shape.`);
|
|
605
|
+
}
|
|
606
|
+
const previousRouter = `\n api,\n foundation.discovery.alertTopicArn,`;
|
|
607
|
+
const currentRouter = `\n api,\n foundation.router,\n foundation.discovery.alertTopicArn,`;
|
|
608
|
+
const previousRouterCount = countExact(registration, previousRouter);
|
|
609
|
+
const currentRouterCount = countExact(registration, currentRouter);
|
|
610
|
+
if (previousRouterCount === 1 && currentRouterCount === 0) {
|
|
611
|
+
registration = registration.replace(previousRouter, currentRouter);
|
|
612
|
+
}
|
|
613
|
+
else if (!(previousRouterCount === 0 && currentRouterCount === 1)) {
|
|
614
|
+
throw new Error(`Retained Function ${composition.name} registration does not expose one exact Router argument shape.`);
|
|
615
|
+
}
|
|
616
|
+
const previousAuthorityMatches = exactIndentedStringCallMatches(registration, 'workloadRoleBindings?.extension.function', composition.name);
|
|
617
|
+
const currentAuthorityMatches = exactIndentedStringCallMatches(registration, 'nativeAuthority.permissions', `${composition.name}-function`);
|
|
618
|
+
if (previousAuthorityMatches.length === 1 &&
|
|
619
|
+
currentAuthorityMatches.length === 0) {
|
|
620
|
+
const [previousAuthority] = previousAuthorityMatches;
|
|
621
|
+
const authorityIndex = previousAuthority.index;
|
|
622
|
+
if (authorityIndex === undefined) {
|
|
623
|
+
throw new Error(`Retained Function ${composition.name} registration authority is not position-bound.`);
|
|
624
|
+
}
|
|
625
|
+
const currentAuthority = ` nativeAuthority.permissions('${composition.name}-function'),`;
|
|
626
|
+
registration =
|
|
627
|
+
registration.slice(0, authorityIndex) +
|
|
628
|
+
currentAuthority +
|
|
629
|
+
registration.slice(authorityIndex + previousAuthority[0].length);
|
|
630
|
+
}
|
|
631
|
+
else if (!(previousAuthorityMatches.length === 0 &&
|
|
632
|
+
currentAuthorityMatches.length === 1)) {
|
|
633
|
+
throw new Error(`Retained Function ${composition.name} registration does not expose one exact native-authority argument shape.`);
|
|
634
|
+
}
|
|
635
|
+
reconciled =
|
|
636
|
+
reconciled.slice(0, start) +
|
|
637
|
+
registration +
|
|
638
|
+
reconciled.slice(end + registrationEnd.length);
|
|
639
|
+
}
|
|
640
|
+
return reconciled;
|
|
641
|
+
}
|
|
460
642
|
function json(value) {
|
|
461
643
|
return `${JSON.stringify(value, null, 2)}\n`;
|
|
462
644
|
}
|
|
645
|
+
const DERIVED_API_ARTIFACT_PATHS = [
|
|
646
|
+
'api/generated/contract.json',
|
|
647
|
+
'api/generated/openapi.json',
|
|
648
|
+
];
|
|
649
|
+
function preserveBuiltInDerivedApiArtifacts(tree, root, currentOwnership, targetFiles) {
|
|
650
|
+
const sourceEntry = currentOwnership.paths.find(({ path }) => path === 'api/contracts/protected.ts');
|
|
651
|
+
const source = tree.read(node_path_1.posix.join(root, 'api/contracts/protected.ts'), 'utf8');
|
|
652
|
+
if (sourceEntry?.mode !== 'seeded' || source === null)
|
|
653
|
+
return targetFiles;
|
|
654
|
+
const currentEntries = new Map(currentOwnership.paths.map((entry) => [entry.path, entry]));
|
|
655
|
+
const artifacts = DERIVED_API_ARTIFACT_PATHS.map((path) => ({
|
|
656
|
+
current: tree.read(node_path_1.posix.join(root, path), 'utf8'),
|
|
657
|
+
entry: currentEntries.get(path),
|
|
658
|
+
path,
|
|
659
|
+
}));
|
|
660
|
+
const missing = artifacts
|
|
661
|
+
.filter(({ current }) => current === null)
|
|
662
|
+
.map(({ path }) => path);
|
|
663
|
+
if (missing.length > 0) {
|
|
664
|
+
throw new Error(`Built-in Product Slice ${currentOwnership.slice} is missing derived managed API artifacts:\n${missing.map((path) => `- ${path}`).join('\n')}\nRun pnpm nx run ${currentOwnership.slice}:api-contract-generate before upgrading.`);
|
|
665
|
+
}
|
|
666
|
+
const completeCleanPair = artifacts.every(({ current, entry }) => current !== null &&
|
|
667
|
+
entry?.mode === 'managed' &&
|
|
668
|
+
entry.origin === 'blueprint' &&
|
|
669
|
+
entry.managedJsonPointers === undefined &&
|
|
670
|
+
(0, index_js_4.hashOwnedContent)(current, entry) === entry.sha256);
|
|
671
|
+
if (!completeCleanPair)
|
|
672
|
+
return targetFiles;
|
|
673
|
+
const retained = { ...targetFiles };
|
|
674
|
+
for (const { current, path } of artifacts) {
|
|
675
|
+
if (current === null) {
|
|
676
|
+
throw new Error(`Derived managed API artifact disappeared: ${path}.`);
|
|
677
|
+
}
|
|
678
|
+
// The built-in API artifacts are derived from the seeded TypeScript
|
|
679
|
+
// contract. An upgrade preserves that adopter-owned source, so rendering
|
|
680
|
+
// fresh artifacts from the uncustomized Blueprint would make the managed
|
|
681
|
+
// output disagree with its authority. The explicit api-contract-generate
|
|
682
|
+
// target remains the only operation that recompiles and restamps them.
|
|
683
|
+
retained[path] = current;
|
|
684
|
+
}
|
|
685
|
+
return retained;
|
|
686
|
+
}
|
|
463
687
|
function upgradeConflictMessage(label, report) {
|
|
464
688
|
const ownershipDetails = [
|
|
465
689
|
...report.conflictingJsonMembers.map((member) => `- conflicting JSON ownership claim: ${member}`),
|
|
@@ -470,26 +694,19 @@ function upgradeConflictMessage(label, report) {
|
|
|
470
694
|
function seededMigrationUpgradeMessage(label, report) {
|
|
471
695
|
return `${label} upgrade cannot rewrite an existing seeded database migration:\n${report.incompatibleSeededMigrations.map((path) => `- ${path}`).join('\n')}\nRegenerate this prerelease workspace instead. Stable-v1 upgrades must add a new migration rather than rewrite migration history.`;
|
|
472
696
|
}
|
|
473
|
-
async function formatRenderedFiles(files, prefix = '') {
|
|
474
|
-
const
|
|
475
|
-
'api/generated/baseline.json',
|
|
476
|
-
'api/generated/contract.json',
|
|
477
|
-
'api/generated/openapi.json',
|
|
478
|
-
]);
|
|
697
|
+
async function formatRenderedFiles(tree, files, prefix = '') {
|
|
698
|
+
const changedOptions = (0, formatting_js_1.changedTreePrettierOptions)(tree);
|
|
479
699
|
return Object.fromEntries(await Promise.all(Object.entries(files).map(async ([path, contents]) => {
|
|
480
700
|
const workspacePath = node_path_1.posix.join(prefix, path);
|
|
481
|
-
if (
|
|
482
|
-
(0, workspace_files_js_1.isRawWorkspaceAuthorityPath)(workspacePath)
|
|
483
|
-
path.startsWith('database/migrations/')) {
|
|
701
|
+
if ((0, built_in_plan_js_1.isBuiltInSliceFormatSensitivePath)(path) ||
|
|
702
|
+
(0, workspace_files_js_1.isRawWorkspaceAuthorityPath)(workspacePath)) {
|
|
484
703
|
return [path, contents];
|
|
485
704
|
}
|
|
486
705
|
try {
|
|
706
|
+
const options = await (0, formatting_js_1.effectiveTreePrettierOptions)(tree, workspacePath, changedOptions);
|
|
487
707
|
return [
|
|
488
708
|
path,
|
|
489
|
-
await (0,
|
|
490
|
-
filepath: workspacePath,
|
|
491
|
-
singleQuote: true,
|
|
492
|
-
}),
|
|
709
|
+
await (0, formatting_js_1.formatTreeContentsToFixedPoint)(contents, options, workspacePath),
|
|
493
710
|
];
|
|
494
711
|
}
|
|
495
712
|
catch {
|
|
@@ -497,6 +714,12 @@ async function formatRenderedFiles(files, prefix = '') {
|
|
|
497
714
|
}
|
|
498
715
|
})));
|
|
499
716
|
}
|
|
717
|
+
async function formatOwnershipRecord(tree, path, label) {
|
|
718
|
+
if (!tree.exists(path)) {
|
|
719
|
+
throw new Error(`${label} ownership metadata is missing at ${path}.`);
|
|
720
|
+
}
|
|
721
|
+
await (0, formatting_js_1.formatTreeFileToFixedPoint)(tree, path);
|
|
722
|
+
}
|
|
500
723
|
function readJson(tree, path, label) {
|
|
501
724
|
const contents = tree.read(path, 'utf8');
|
|
502
725
|
if (contents === null)
|
|
@@ -821,6 +1044,10 @@ function mergeStructuredTargetFiles(currentFiles, currentOwnership, targetFiles,
|
|
|
821
1044
|
const target = files.get(targetEntry.path);
|
|
822
1045
|
if (current === null || target === undefined)
|
|
823
1046
|
continue;
|
|
1047
|
+
if (targetEntry.mode === 'seeded') {
|
|
1048
|
+
files.set(targetEntry.path, current);
|
|
1049
|
+
continue;
|
|
1050
|
+
}
|
|
824
1051
|
if (currentEntry?.managedJsonPointers && !targetEntry.managedJsonPointers) {
|
|
825
1052
|
if (targetEntry.mode === 'managed') {
|
|
826
1053
|
changes.expandedJsonOwnership.push(targetEntry.path);
|
|
@@ -846,6 +1073,22 @@ function mergeStructuredTargetFiles(currentFiles, currentOwnership, targetFiles,
|
|
|
846
1073
|
}
|
|
847
1074
|
return { files, ...changes };
|
|
848
1075
|
}
|
|
1076
|
+
async function formatMergedManagedJsonFiles(tree, root, merge, ownership) {
|
|
1077
|
+
const files = new Map(merge.files);
|
|
1078
|
+
const changedOptions = (0, formatting_js_1.changedTreePrettierOptions)(tree);
|
|
1079
|
+
await Promise.all(ownership.paths.map(async (entry) => {
|
|
1080
|
+
if (entry.mode !== 'managed' || !entry.managedJsonPointers)
|
|
1081
|
+
return;
|
|
1082
|
+
const contents = files.get(entry.path);
|
|
1083
|
+
if (contents === undefined) {
|
|
1084
|
+
throw new Error(`Target did not render managed JSON ${entry.path}.`);
|
|
1085
|
+
}
|
|
1086
|
+
const workspacePath = node_path_1.posix.join(root, entry.path);
|
|
1087
|
+
const options = await (0, formatting_js_1.effectiveTreePrettierOptions)(tree, workspacePath, changedOptions);
|
|
1088
|
+
files.set(entry.path, await (0, formatting_js_1.formatTreeContentsToFixedPoint)(contents, options, workspacePath));
|
|
1089
|
+
}));
|
|
1090
|
+
return { ...merge, files };
|
|
1091
|
+
}
|
|
849
1092
|
function renderCompositionUpgradePlan(ownership, workspace, runtimeVersion, serviceAdapterOwner) {
|
|
850
1093
|
const compositionPaths = ownership.paths.filter(({ origin }) => origin === 'composition');
|
|
851
1094
|
const files = {};
|
|
@@ -926,10 +1169,15 @@ function retainedServiceAdapterOwner(tree, root, ownership) {
|
|
|
926
1169
|
const serviceScenario = serviceScenarios[0];
|
|
927
1170
|
const secretAccess = readJson(tree, node_path_1.posix.join(root, 'secrets/workload-access.json'), 'Product Slice secret workload access registry');
|
|
928
1171
|
const bindings = record(secretAccess) ? secretAccess['bindings'] : undefined;
|
|
929
|
-
const logicalName =
|
|
1172
|
+
const logicalName = 'GeneratedPerformanceLoadHmacKeys';
|
|
1173
|
+
const prereleaseLogicalName = `${ownership.slice
|
|
930
1174
|
.split('-')
|
|
931
1175
|
.map((part) => `${part.charAt(0).toUpperCase()}${part.slice(1)}`)
|
|
932
1176
|
.join('')}PerformanceLoadHmacKeys`;
|
|
1177
|
+
if (Array.isArray(bindings) &&
|
|
1178
|
+
bindings.some((binding) => record(binding) && binding['logicalName'] === prereleaseLogicalName)) {
|
|
1179
|
+
throw new Error(`Product Slice ${ownership.slice} still uses the prerelease operator HMAC declaration ${prereleaseLogicalName}. Regenerate the prerelease Slice or reconcile secrets/declarations.ts, secrets/metadata.json, and secrets/workload-access.json to GeneratedPerformanceLoadHmacKeys under a reviewed adoption ledger entry before rerunning the upgrade; no automatic prerelease migration is provided.`);
|
|
1180
|
+
}
|
|
933
1181
|
const protectedLoadBindings = Array.isArray(bindings)
|
|
934
1182
|
? bindings.filter((binding) => record(binding) &&
|
|
935
1183
|
binding['logicalName'] === logicalName &&
|
|
@@ -998,7 +1246,7 @@ function carryRetainedServiceAdapterAuthority(targetFiles, owner) {
|
|
|
998
1246
|
'managed-generated-service-runtime-endpoint';
|
|
999
1247
|
return { ...targetFiles, [path]: json(target) };
|
|
1000
1248
|
}
|
|
1001
|
-
async function upgradeFoundation(tree, options, packageJson, output) {
|
|
1249
|
+
async function upgradeFoundation(tree, options, packageJson, output, foundationRequirements = []) {
|
|
1002
1250
|
if (options.blueprint !== undefined || options.inputs !== undefined) {
|
|
1003
1251
|
throw new Error('Standard Foundation upgrades do not accept Blueprint or input options.');
|
|
1004
1252
|
}
|
|
@@ -1011,13 +1259,17 @@ async function upgradeFoundation(tree, options, packageJson, output) {
|
|
|
1011
1259
|
throw new Error('Workspace package.json must declare a name.');
|
|
1012
1260
|
}
|
|
1013
1261
|
const currentOwnership = ownershipResult.value;
|
|
1262
|
+
const deployment = readRepositoryDeploymentRenderingOptions(tree);
|
|
1014
1263
|
const renderedTarget = (0, workspace_files_js_1.renderFoundationFilePlan)({
|
|
1264
|
+
...deployment,
|
|
1265
|
+
foundationRequirements,
|
|
1266
|
+
foundationDescriptor: readJson(tree, node_path_1.posix.join(root, 'contracts/foundation.json'), 'Existing Foundation resource declaration'),
|
|
1015
1267
|
frameworkVersion: (0, generator_js_1.frameworkPackageVersion)(),
|
|
1016
1268
|
name: packageJson.name,
|
|
1017
1269
|
});
|
|
1018
1270
|
const target = {
|
|
1019
1271
|
...renderedTarget,
|
|
1020
|
-
files: await formatRenderedFiles(renderedTarget.files, root),
|
|
1272
|
+
files: await formatRenderedFiles(tree, renderedTarget.files, root),
|
|
1021
1273
|
};
|
|
1022
1274
|
const targetValidation = (0, index_js_4.validateFoundationOwnershipRecord)(target.ownership);
|
|
1023
1275
|
if (!targetValidation.valid) {
|
|
@@ -1033,7 +1285,8 @@ async function upgradeFoundation(tree, options, packageJson, output) {
|
|
|
1033
1285
|
path,
|
|
1034
1286
|
tree.read(node_path_1.posix.join(root, path), 'utf8'),
|
|
1035
1287
|
]));
|
|
1036
|
-
|
|
1288
|
+
let mergedTarget = mergeStructuredTargetFiles(currentFiles, currentOwnership, new Map(Object.entries(target.files)), target.ownership);
|
|
1289
|
+
mergedTarget = await formatMergedManagedJsonFiles(tree, root, mergedTarget, target.ownership);
|
|
1037
1290
|
const report = createUpgradeReport(currentFiles, currentOwnership, mergedTarget.files, target.ownership, mergedTarget);
|
|
1038
1291
|
output.info(`[ebk-upgrade] foundation ${currentOwnership.frameworkVersion} -> ${target.ownership.frameworkVersion}\n${JSON.stringify(report, null, 2)}`);
|
|
1039
1292
|
if (!options.apply)
|
|
@@ -1059,9 +1312,28 @@ async function upgradeFoundation(tree, options, packageJson, output) {
|
|
|
1059
1312
|
}
|
|
1060
1313
|
tree.write(node_path_1.posix.join(root, path), contents);
|
|
1061
1314
|
}
|
|
1062
|
-
if (!options.skipFormat)
|
|
1063
|
-
await (0, devkit_1.formatFiles)(tree);
|
|
1064
1315
|
(0, index_js_4.restampFoundationOwnership)(tree);
|
|
1316
|
+
// Ownership bytes are part of the upgrade result, including agent previews
|
|
1317
|
+
// that skip workspace formatting. Canonicalize before binding those bytes.
|
|
1318
|
+
await formatOwnershipRecord(tree, node_path_1.posix.join(root, '.ebk/ownership.json'), 'Standard Foundation');
|
|
1319
|
+
}
|
|
1320
|
+
/** Internal paired-generation path: the ordinary ownership-preserving upgrader owns Foundation writes. */
|
|
1321
|
+
async function upgradeFoundationForRequirements(tree, requirements, apply, output = devkit_1.logger) {
|
|
1322
|
+
requireUpgradePrerequisites(tree, 'product-slice');
|
|
1323
|
+
const capabilityPlan = (0, capability_plan_js_1.planFoundationCapabilities)({
|
|
1324
|
+
current: readJson(tree, 'packages/foundation/contracts/foundation.json', 'Standard Foundation descriptor'),
|
|
1325
|
+
requirements,
|
|
1326
|
+
});
|
|
1327
|
+
if (capabilityPlan.migratedFromContract !== null)
|
|
1328
|
+
throw new Error('Paired generation cannot migrate a prerelease Foundation contract. Report and apply the explicit Foundation upgrade first; no files changed.');
|
|
1329
|
+
// A Slice generator is not an implicit Foundation version/formatting upgrade.
|
|
1330
|
+
if (capabilityPlan.added.length === 0)
|
|
1331
|
+
return;
|
|
1332
|
+
const policy = (0, tree_policy_js_1.readRepositoryOperatingPolicyFromTree)(tree);
|
|
1333
|
+
if (tree.exists('packages/foundation/contracts/costs.json'))
|
|
1334
|
+
(0, capacity_migration_js_1.assertCapacityMigrationChoice)(policy.productionFoundation.profile, readJson(tree, 'packages/foundation/contracts/costs.json', 'Foundation cost contract'));
|
|
1335
|
+
const packageJson = readJson(tree, 'package.json', 'Workspace package.json');
|
|
1336
|
+
await upgradeFoundation(tree, { name: 'foundation', apply, skipFormat: true, skipInstall: true }, packageJson, output, requirements);
|
|
1065
1337
|
}
|
|
1066
1338
|
async function upgradeWorkspace(tree, options, packageJson, output) {
|
|
1067
1339
|
if (options.blueprint !== undefined || options.inputs !== undefined) {
|
|
@@ -1076,13 +1348,18 @@ async function upgradeWorkspace(tree, options, packageJson, output) {
|
|
|
1076
1348
|
}
|
|
1077
1349
|
const sstVersionState = inspectWorkspaceSstVersion(tree, packageJson);
|
|
1078
1350
|
const currentOwnership = ownershipResult.value;
|
|
1351
|
+
const deployment = readRepositoryDeploymentRenderingOptions(tree);
|
|
1079
1352
|
const renderedTarget = (0, workspace_files_js_1.renderWorkspaceRootFilePlan)({
|
|
1353
|
+
...deployment,
|
|
1354
|
+
dependencyOverrides: tree.exists(dependency_overrides_js_1.DEPENDENCY_OVERRIDES_PATH)
|
|
1355
|
+
? readJson(tree, dependency_overrides_js_1.DEPENDENCY_OVERRIDES_PATH, 'Dependency overrides')
|
|
1356
|
+
: undefined,
|
|
1080
1357
|
frameworkVersion: (0, generator_js_1.frameworkPackageVersion)(),
|
|
1081
1358
|
name: packageJson.name,
|
|
1082
1359
|
});
|
|
1083
1360
|
const target = {
|
|
1084
1361
|
...renderedTarget,
|
|
1085
|
-
files: await formatRenderedFiles(renderedTarget.files),
|
|
1362
|
+
files: await formatRenderedFiles(tree, renderedTarget.files),
|
|
1086
1363
|
};
|
|
1087
1364
|
const targetValidation = (0, index_js_4.validateWorkspaceOwnershipRecord)(target.ownership);
|
|
1088
1365
|
if (!targetValidation.valid) {
|
|
@@ -1093,7 +1370,8 @@ async function upgradeWorkspace(tree, options, packageJson, output) {
|
|
|
1093
1370
|
...target.ownership.paths.map(({ path }) => path),
|
|
1094
1371
|
]);
|
|
1095
1372
|
const currentFiles = new Map([...allPaths].map((path) => [path, tree.read(path, 'utf8')]));
|
|
1096
|
-
|
|
1373
|
+
let mergedTarget = mergeStructuredTargetFiles(currentFiles, currentOwnership, new Map(Object.entries(target.files)), target.ownership);
|
|
1374
|
+
mergedTarget = await formatMergedManagedJsonFiles(tree, '', mergedTarget, target.ownership);
|
|
1097
1375
|
const developerAgentInstructionAppend = planDeveloperAgentInstructionAppend(currentFiles.get('AGENTS.md') ?? null, target.files['AGENTS.md']);
|
|
1098
1376
|
if (developerAgentInstructionAppend !== null) {
|
|
1099
1377
|
mergedTarget.files.set(developerAgentInstructionAppend.path, developerAgentInstructionAppend.contents);
|
|
@@ -1136,26 +1414,50 @@ async function upgradeWorkspace(tree, options, packageJson, output) {
|
|
|
1136
1414
|
}
|
|
1137
1415
|
tree.write(path, contents);
|
|
1138
1416
|
}
|
|
1139
|
-
if (!options.skipFormat) {
|
|
1140
|
-
await (0, devkit_1.formatFiles)(tree);
|
|
1141
|
-
for (const [path, contents] of Object.entries(target.files)) {
|
|
1142
|
-
if ((0, workspace_files_js_1.isRawWorkspaceAuthorityPath)(path))
|
|
1143
|
-
tree.write(path, contents);
|
|
1144
|
-
}
|
|
1145
|
-
}
|
|
1146
1417
|
if (developerAgentInstructionAppend !== null) {
|
|
1147
1418
|
tree.write(developerAgentInstructionAppend.path, developerAgentInstructionAppend.contents);
|
|
1148
1419
|
}
|
|
1149
1420
|
(0, index_js_4.restampWorkspaceOwnership)(tree);
|
|
1421
|
+
await formatOwnershipRecord(tree, '.ebk/ownership.json', 'Workspace');
|
|
1150
1422
|
}
|
|
1151
1423
|
async function executeUpgradeGenerator(tree, options, output = devkit_1.logger, executionOptions = {}) {
|
|
1152
1424
|
const name = requireName(options.name);
|
|
1425
|
+
// The policy is seeded: never reinterpret an existing warm production choice
|
|
1426
|
+
// as permission to pause it. The operator must make the rename explicitly.
|
|
1427
|
+
const costsPath = 'packages/foundation/contracts/costs.json';
|
|
1428
|
+
if (tree.exists(costsPath)) {
|
|
1429
|
+
(0, capacity_migration_js_1.assertCapacityMigrationChoice)((0, tree_policy_js_1.readRepositoryOperatingPolicyFromTree)(tree).productionFoundation.profile, readJson(tree, costsPath, 'Foundation cost contract'));
|
|
1430
|
+
}
|
|
1153
1431
|
const packageJson = readJson(tree, 'package.json', 'Workspace package.json');
|
|
1154
1432
|
if (name === 'workspace') {
|
|
1155
1433
|
return upgradeWorkspace(tree, options, packageJson, output);
|
|
1156
1434
|
}
|
|
1157
1435
|
if (name === 'foundation') {
|
|
1158
1436
|
requireUpgradePrerequisites(tree, 'foundation');
|
|
1437
|
+
// Refuse an unsupported core transition before changing shared contracts.
|
|
1438
|
+
// This is a preflight, not a prerelease migration or compatibility layer.
|
|
1439
|
+
for (const slice of tree.children('packages')) {
|
|
1440
|
+
const root = node_path_1.posix.join('packages', slice);
|
|
1441
|
+
const path = node_path_1.posix.join(root, '.ebk/ownership.json');
|
|
1442
|
+
if (slice === 'foundation' || !tree.exists(path))
|
|
1443
|
+
continue;
|
|
1444
|
+
const recorded = readJson(tree, path, 'Product Slice ownership metadata');
|
|
1445
|
+
if (recorded?.blueprint
|
|
1446
|
+
?.name !== index_js_1.BUILTIN_BLUEPRINT_NAME)
|
|
1447
|
+
continue;
|
|
1448
|
+
const parsed = (0, index_js_4.validateGeneratedOwnershipRecord)(recorded);
|
|
1449
|
+
if (!parsed.valid)
|
|
1450
|
+
throw new Error(ownershipValidationMessage('Product Slice ownership metadata', parsed.issues));
|
|
1451
|
+
(0, persistence_contract_js_1.standardPersistenceContract)({
|
|
1452
|
+
inputs: parsed.value.inputs,
|
|
1453
|
+
existingStandardRequirement: parsed.value.foundation,
|
|
1454
|
+
...(tree.exists(node_path_1.posix.join(root, persistence_contract_js_1.STANDARD_PERSISTENCE_PATH))
|
|
1455
|
+
? {
|
|
1456
|
+
current: readJson(tree, node_path_1.posix.join(root, persistence_contract_js_1.STANDARD_PERSISTENCE_PATH), 'Standard persistence declaration'),
|
|
1457
|
+
}
|
|
1458
|
+
: {}),
|
|
1459
|
+
});
|
|
1460
|
+
}
|
|
1159
1461
|
return upgradeFoundation(tree, options, packageJson, output);
|
|
1160
1462
|
}
|
|
1161
1463
|
requireUpgradePrerequisites(tree, 'product-slice');
|
|
@@ -1184,13 +1486,39 @@ async function executeUpgradeGenerator(tree, options, output = devkit_1.logger,
|
|
|
1184
1486
|
if (serviceAdapterOwner !== null && blueprint.source !== 'built-in') {
|
|
1185
1487
|
throw new Error('External Blueprint upgrades cannot retain the managed generated Service adapter authority; remove or explicitly migrate the elected adapter before changing Blueprint authority.');
|
|
1186
1488
|
}
|
|
1187
|
-
const
|
|
1489
|
+
const requestedInputs = parseInputs(options.inputs, currentOwnership.inputs);
|
|
1490
|
+
if (blueprint.source === 'built-in') {
|
|
1491
|
+
// Refuse old framework cores before any paired Foundation/Slice changes.
|
|
1492
|
+
// Keeping the old database safe does not imply supporting its old runtime.
|
|
1493
|
+
(0, persistence_contract_js_1.standardPersistenceContract)({
|
|
1494
|
+
inputs: requestedInputs,
|
|
1495
|
+
existingStandardRequirement: currentOwnership.foundation,
|
|
1496
|
+
...(tree.exists(node_path_1.posix.join(root, persistence_contract_js_1.STANDARD_PERSISTENCE_PATH))
|
|
1497
|
+
? {
|
|
1498
|
+
current: readJson(tree, node_path_1.posix.join(root, persistence_contract_js_1.STANDARD_PERSISTENCE_PATH), 'Standard persistence declaration'),
|
|
1499
|
+
}
|
|
1500
|
+
: {}),
|
|
1501
|
+
});
|
|
1502
|
+
if (currentOwnership.foundation.capabilities.includes('postgres') &&
|
|
1503
|
+
!(0, capability_plan_js_1.readStandardSqlDeclaration)(requestedInputs))
|
|
1504
|
+
throw new Error('SQL cannot be retired through an upgrade. Keep the explicit inputs.sql declaration; database retirement requires a separate reviewed operation.');
|
|
1505
|
+
}
|
|
1506
|
+
const inputResult = (0, index_js_1.validateBlueprintInputs)(blueprint.inputSchema, requestedInputs);
|
|
1188
1507
|
if (!inputResult.valid) {
|
|
1189
1508
|
throw new Error(`Blueprint inputs are invalid:\n${inputResult.issues
|
|
1190
1509
|
.map((issue) => `- ${issue.path}: ${issue.message}`)
|
|
1191
1510
|
.join('\n')}`);
|
|
1192
1511
|
}
|
|
1193
|
-
const
|
|
1512
|
+
const requiredFoundation = blueprint.source === 'built-in'
|
|
1513
|
+
? (0, capability_plan_js_1.standardPersistenceRequirement)(inputResult.value, currentOwnership.compositions)
|
|
1514
|
+
: blueprint.manifest.foundation;
|
|
1515
|
+
const existingFoundation = readJson(tree, 'packages/foundation/contracts/foundation.json', 'Standard Foundation descriptor');
|
|
1516
|
+
const compatibility = (0, index_js_3.validateFoundationCompatibility)(requiredFoundation, blueprint.source === 'built-in'
|
|
1517
|
+
? (0, capability_plan_js_1.planFoundationCapabilities)({
|
|
1518
|
+
current: existingFoundation,
|
|
1519
|
+
requirements: [requiredFoundation],
|
|
1520
|
+
}).descriptor
|
|
1521
|
+
: existingFoundation);
|
|
1194
1522
|
if (!compatibility.valid) {
|
|
1195
1523
|
throw new Error(`Standard Foundation is incompatible with the target Blueprint:\n${compatibility.issues
|
|
1196
1524
|
.map((issue) => `- ${issue.path}: ${issue.message}`)
|
|
@@ -1204,10 +1532,19 @@ async function executeUpgradeGenerator(tree, options, output = devkit_1.logger,
|
|
|
1204
1532
|
let externalBlueprintDestinationPaths;
|
|
1205
1533
|
const scope = workspaceScope(packageJson);
|
|
1206
1534
|
if (blueprint.source === 'built-in') {
|
|
1535
|
+
const deployment = readRepositoryDeploymentRenderingOptions(tree);
|
|
1207
1536
|
const runtimeVersion = packageJson.dependencies?.['@empire-builder-kit/runtime'];
|
|
1208
1537
|
if (!runtimeVersion)
|
|
1209
1538
|
throw new Error('Workspace must depend on @empire-builder-kit/runtime.');
|
|
1210
|
-
const plan = (0, built_in_plan_js_1.createBuiltInSlicePlan)(name, scope, runtimeVersion, blueprint.manifest, inputResult.value)
|
|
1539
|
+
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), deployment.deploymentProfile, {
|
|
1540
|
+
existingStandardRequirement: currentOwnership.foundation,
|
|
1541
|
+
compositions: currentOwnership.compositions,
|
|
1542
|
+
...(tree.exists(node_path_1.posix.join(root, persistence_contract_js_1.STANDARD_PERSISTENCE_PATH))
|
|
1543
|
+
? {
|
|
1544
|
+
current: readJson(tree, node_path_1.posix.join(root, persistence_contract_js_1.STANDARD_PERSISTENCE_PATH), 'Standard persistence declaration'),
|
|
1545
|
+
}
|
|
1546
|
+
: {}),
|
|
1547
|
+
});
|
|
1211
1548
|
targetFiles = Object.fromEntries(Object.entries(plan.files).map(([path, contents]) => {
|
|
1212
1549
|
const current = tree.read(node_path_1.posix.join(root, path), 'utf8');
|
|
1213
1550
|
return [
|
|
@@ -1217,6 +1554,7 @@ async function executeUpgradeGenerator(tree, options, output = devkit_1.logger,
|
|
|
1217
1554
|
: preserveCompositionRegions(current, contents),
|
|
1218
1555
|
];
|
|
1219
1556
|
}));
|
|
1557
|
+
targetFiles = reemitRecordedNativeRuntimeCompositions(targetFiles, currentOwnership);
|
|
1220
1558
|
targetOwnership = {
|
|
1221
1559
|
...plan.ownership,
|
|
1222
1560
|
contracts: {
|
|
@@ -1297,6 +1635,18 @@ async function executeUpgradeGenerator(tree, options, output = devkit_1.logger,
|
|
|
1297
1635
|
if (blueprint.source === 'built-in' && serviceAdapterOwner !== null) {
|
|
1298
1636
|
targetFiles = carryRetainedServiceAdapterAuthority(targetFiles, serviceAdapterOwner);
|
|
1299
1637
|
}
|
|
1638
|
+
if (blueprint.source === 'built-in') {
|
|
1639
|
+
const productPath = 'infra/product.ts';
|
|
1640
|
+
const productSource = targetFiles[productPath];
|
|
1641
|
+
if (productSource === undefined) {
|
|
1642
|
+
throw new Error('Target Product Slice does not render infra/product.ts.');
|
|
1643
|
+
}
|
|
1644
|
+
targetFiles = {
|
|
1645
|
+
...targetFiles,
|
|
1646
|
+
[productPath]: reconcileFunctionRegistrationArguments(productSource, currentOwnership),
|
|
1647
|
+
};
|
|
1648
|
+
targetFiles = preserveBuiltInDerivedApiArtifacts(tree, root, currentOwnership, targetFiles);
|
|
1649
|
+
}
|
|
1300
1650
|
const targetPathSet = new Set(targetOwnership.paths.map(({ path }) => path));
|
|
1301
1651
|
const compositionPlan = renderCompositionUpgradePlan(currentOwnership, packageJson.name ?? '', packageJson.dependencies?.['@empire-builder-kit/runtime'] ?? '', serviceAdapterOwner);
|
|
1302
1652
|
const compositionPaths = compositionPlan.paths.filter(({ path }) => !targetPathSet.has(path));
|
|
@@ -1314,7 +1664,7 @@ async function executeUpgradeGenerator(tree, options, output = devkit_1.logger,
|
|
|
1314
1664
|
}
|
|
1315
1665
|
targetFiles = { ...targetFiles, [entry.path]: contents };
|
|
1316
1666
|
}
|
|
1317
|
-
targetFiles = await formatRenderedFiles(targetFiles, root);
|
|
1667
|
+
targetFiles = await formatRenderedFiles(tree, targetFiles, root);
|
|
1318
1668
|
targetOwnership = {
|
|
1319
1669
|
...targetOwnership,
|
|
1320
1670
|
compositions: currentOwnership.compositions,
|
|
@@ -1351,24 +1701,56 @@ async function executeUpgradeGenerator(tree, options, output = devkit_1.logger,
|
|
|
1351
1701
|
path,
|
|
1352
1702
|
tree.read(node_path_1.posix.join(root, path), 'utf8'),
|
|
1353
1703
|
]));
|
|
1354
|
-
|
|
1704
|
+
let mergedTarget = mergeStructuredTargetFiles(currentFiles, currentOwnership, new Map(Object.entries(targetFiles)), targetOwnership);
|
|
1705
|
+
mergedTarget = await formatMergedManagedJsonFiles(tree, root, mergedTarget, targetOwnership);
|
|
1706
|
+
const sqlAppends = blueprint.source === 'built-in' &&
|
|
1707
|
+
(0, capability_plan_js_1.readStandardSqlDeclaration)(inputResult.value)
|
|
1708
|
+
? (0, sql_seeded_reconciliation_js_1.planSqlSeededReconciliation)(currentFiles, targetFiles)
|
|
1709
|
+
: new Map();
|
|
1710
|
+
for (const [path, contents] of sqlAppends) {
|
|
1711
|
+
const workspacePath = node_path_1.posix.join(root, path);
|
|
1712
|
+
mergedTarget.files.set(path, await (0, formatting_js_1.formatTreeContentsToFixedPoint)(contents, await (0, formatting_js_1.effectiveTreePrettierOptions)(tree, workspacePath, (0, formatting_js_1.changedTreePrettierOptions)(tree)), workspacePath));
|
|
1713
|
+
}
|
|
1355
1714
|
requireTargetCompositionFeatures(mergedTarget.files, targetOwnership);
|
|
1715
|
+
const loggingAppend = blueprint.source === 'built-in'
|
|
1716
|
+
? (0, logging_registry_js_1.planRequiredSliceLoggingComponents)(currentFiles.get(logging_registry_js_1.SLICE_LOGGING_REGISTRY_PATH) ?? null, targetFiles[logging_registry_js_1.SLICE_LOGGING_REGISTRY_PATH])
|
|
1717
|
+
: null;
|
|
1718
|
+
if (loggingAppend !== null) {
|
|
1719
|
+
const workspacePath = node_path_1.posix.join(root, logging_registry_js_1.SLICE_LOGGING_REGISTRY_PATH);
|
|
1720
|
+
const formatting = await (0, formatting_js_1.effectiveTreePrettierOptions)(tree, workspacePath, (0, formatting_js_1.changedTreePrettierOptions)(tree));
|
|
1721
|
+
mergedTarget.files.set(logging_registry_js_1.SLICE_LOGGING_REGISTRY_PATH, await (0, formatting_js_1.formatTreeContentsToFixedPoint)(loggingAppend, formatting, workspacePath));
|
|
1722
|
+
}
|
|
1356
1723
|
const report = createUpgradeReport(currentFiles, currentOwnership, mergedTarget.files, targetOwnership, mergedTarget);
|
|
1724
|
+
if (loggingAppend !== null) {
|
|
1725
|
+
report.preservedSeeded = report.preservedSeeded.filter((path) => path !== logging_registry_js_1.SLICE_LOGGING_REGISTRY_PATH);
|
|
1726
|
+
report.appendedSeeded.push(logging_registry_js_1.SLICE_LOGGING_REGISTRY_PATH);
|
|
1727
|
+
}
|
|
1728
|
+
for (const path of sqlAppends.keys()) {
|
|
1729
|
+
report.preservedSeeded = report.preservedSeeded.filter((entry) => entry !== path);
|
|
1730
|
+
report.appendedSeeded.push(path);
|
|
1731
|
+
}
|
|
1732
|
+
report.appendedSeeded.sort(deterministic_order_js_1.compareUtf16);
|
|
1357
1733
|
output.info(`[ebk-upgrade] ${name} ${currentOwnership.blueprint.name}@${currentOwnership.blueprint.version} -> ${blueprint.manifest.name}@${blueprint.manifest.version}\n${JSON.stringify(report, null, 2)}`);
|
|
1358
|
-
if (!options.apply)
|
|
1734
|
+
if (!options.apply) {
|
|
1735
|
+
if (blueprint.source === 'built-in')
|
|
1736
|
+
await upgradeFoundationForRequirements(tree, [requiredFoundation], false, output);
|
|
1359
1737
|
return;
|
|
1738
|
+
}
|
|
1360
1739
|
if (report.incompatibleSeededMigrations.length > 0) {
|
|
1361
1740
|
throw new Error(seededMigrationUpgradeMessage('Product Slice', report));
|
|
1362
1741
|
}
|
|
1363
1742
|
if (report.conflicting.length > 0) {
|
|
1364
1743
|
throw new Error(upgradeConflictMessage('Product Slice', report));
|
|
1365
1744
|
}
|
|
1745
|
+
if (blueprint.source === 'built-in')
|
|
1746
|
+
await upgradeFoundationForRequirements(tree, [requiredFoundation], true, output);
|
|
1366
1747
|
for (const path of report.obsolete)
|
|
1367
1748
|
tree.delete(node_path_1.posix.join(root, path));
|
|
1368
1749
|
const writePaths = new Set([
|
|
1369
1750
|
...report.changed,
|
|
1370
1751
|
...report.missing,
|
|
1371
1752
|
...report.addedSeeded,
|
|
1753
|
+
...report.appendedSeeded,
|
|
1372
1754
|
'.ebk/ownership.json',
|
|
1373
1755
|
]);
|
|
1374
1756
|
for (const path of writePaths) {
|
|
@@ -1384,10 +1766,16 @@ async function executeUpgradeGenerator(tree, options, output = devkit_1.logger,
|
|
|
1384
1766
|
[blueprint.manifest.name]: blueprint.manifest.version,
|
|
1385
1767
|
};
|
|
1386
1768
|
tree.write('package.json', json(packageJson));
|
|
1769
|
+
if (!options.skipFormat) {
|
|
1770
|
+
const path = 'package.json';
|
|
1771
|
+
if (!tree.exists(path)) {
|
|
1772
|
+
throw new Error('Workspace package.json disappeared during upgrade.');
|
|
1773
|
+
}
|
|
1774
|
+
await (0, formatting_js_1.formatTreeFileToFixedPoint)(tree, path);
|
|
1775
|
+
}
|
|
1387
1776
|
}
|
|
1388
|
-
if (!options.skipFormat)
|
|
1389
|
-
await (0, devkit_1.formatFiles)(tree);
|
|
1390
1777
|
(0, index_js_4.restampProductSliceOwnership)(tree, name, { preserveSeeded: true });
|
|
1778
|
+
await formatOwnershipRecord(tree, node_path_1.posix.join(root, '.ebk/ownership.json'), 'Product Slice');
|
|
1391
1779
|
return options.skipInstall
|
|
1392
1780
|
? undefined
|
|
1393
1781
|
: () => (0, devkit_1.installPackagesTask)(tree, true);
|
|
@@ -1395,7 +1783,10 @@ async function executeUpgradeGenerator(tree, options, output = devkit_1.logger,
|
|
|
1395
1783
|
async function upgradeGenerator(tree, options, output = devkit_1.logger, executionOptions = {}) {
|
|
1396
1784
|
const previewFile = await requireDeveloperAgentPreviewBinding(tree, options, executionOptions);
|
|
1397
1785
|
if (!previewFile) {
|
|
1398
|
-
|
|
1786
|
+
const deferred = new preview_changes_js_1.DeferredDeveloperAgentTree(tree);
|
|
1787
|
+
const install = await executeUpgradeGenerator(deferred, options, output, executionOptions);
|
|
1788
|
+
deferred.apply();
|
|
1789
|
+
return install;
|
|
1399
1790
|
}
|
|
1400
1791
|
const upgradeOptions = { ...options };
|
|
1401
1792
|
delete upgradeOptions.developerAgentPreview;
|