@empire-builder-kit/nx 1.0.0-rc.38 → 1.0.0-rc.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -0
- package/executors.json +5 -0
- package/generators.json +10 -0
- package/package.json +20 -3
- package/src/aws-authority/index.d.ts +1 -0
- package/src/aws-authority/index.js +1 -0
- package/src/aws-authority/lambda-policy-ordering.d.ts +38 -0
- package/src/aws-authority/lambda-policy-ordering.js +56 -0
- package/src/aws-authority/stage-authority.d.ts +11 -3
- package/src/aws-authority/stage-authority.js +615 -29
- package/src/blueprints/external-sandbox.js +21 -9
- package/src/blueprints/manifest.d.ts +1 -1
- package/src/blueprints/resolver.js +28 -15
- package/src/cli/bootstrap.d.ts +1 -1
- package/src/cli/deploy-runtime.d.ts +6 -0
- package/src/cli/deploy-runtime.js +58 -0
- package/src/cli/dev-command.d.ts +16 -4
- package/src/cli/dev-command.js +63 -0
- package/src/cli/main.d.ts +7 -1
- package/src/cli/main.js +128 -20
- package/src/cli/output.d.ts +1 -1
- package/src/developer-agent/context.js +41 -9
- package/src/developer-agent/generator-planning.js +16 -2
- package/src/developer-agent/git-inspection.d.ts +6 -2
- package/src/developer-agent/git-inspection.js +78 -6
- package/src/developer-agent/model.d.ts +4 -2
- package/src/developer-agent/operation-registry.d.ts +5 -0
- package/src/developer-agent/operation-registry.js +179 -23
- package/src/developer-agent/preview-changes.d.ts +2 -0
- package/src/developer-agent/preview-changes.js +14 -2
- package/src/developer-agent/preview-source.js +3 -0
- package/src/developer-agent/validation.js +20 -8
- package/src/developer-agent/workspace-inspection.js +37 -3
- package/src/executors/deployment-plan/deployment-plan.d.ts +2 -0
- package/src/executors/deployment-plan/deployment-plan.js +51 -4
- package/src/executors/dev-doctor/dev-doctor.js +13 -6
- package/src/executors/dev-task-cleanup/dev-task-cleanup.d.ts +23 -0
- package/src/executors/dev-task-cleanup/dev-task-cleanup.js +145 -0
- package/src/executors/dev-task-cleanup/schema.json +9 -0
- package/src/executors/dev-task-cleanup/task-stack-absence.d.ts +27 -0
- package/src/executors/dev-task-cleanup/task-stack-absence.js +281 -0
- package/src/executors/dev-task-cleanup/task-stack-checkpoint.d.ts +12 -0
- package/src/executors/dev-task-cleanup/task-stack-checkpoint.js +92 -0
- package/src/executors/fleet/fleet.js +1 -1
- package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js +28 -1
- package/src/executors/local-deploy/local-deploy.d.ts +8 -1
- package/src/executors/local-deploy/local-deploy.js +97 -24
- package/src/executors/local-deploy/schema.json +8 -0
- package/src/executors/router-waf-rehearsal/router-waf-rehearsal.js +30 -18
- package/src/executors/sst-lifecycle/governed-native-operation.d.ts +2 -0
- package/src/executors/sst-lifecycle/governed-native-operation.js +9 -0
- package/src/executors/sst-lifecycle/run-sst-command.d.ts +5 -0
- package/src/executors/sst-lifecycle/run-sst-command.js +220 -32
- package/src/executors/sst-lifecycle/sst-environment-source.d.ts +8 -0
- package/src/executors/sst-lifecycle/sst-environment-source.js +54 -0
- package/src/executors/sst-lifecycle/task-unlock.d.ts +15 -0
- package/src/executors/sst-lifecycle/task-unlock.js +126 -0
- package/src/foundation/capability-plan.d.ts +43 -0
- package/src/foundation/capability-plan.js +168 -0
- package/src/foundation/discovery.d.ts +14 -11
- package/src/foundation/discovery.js +32 -6
- package/src/foundation/index.d.ts +1 -0
- package/src/foundation/index.js +1 -0
- package/src/foundation/local-database-contract.d.ts +20 -0
- package/src/foundation/local-database-contract.js +262 -13
- package/src/foundation/local-private-smoke-access.d.ts +20 -0
- package/src/foundation/local-private-smoke-access.js +197 -0
- package/src/foundation/preflight.js +37 -18
- package/src/foundation/private-smoke-access.js +10 -2
- package/src/foundation/private-smoke-admission.d.ts +3 -1
- package/src/foundation/private-smoke-admission.js +29 -8
- package/src/foundation/private-smoke-control-plane.js +17 -6
- package/src/foundation/provision-database-bindings.d.ts +5 -0
- package/src/foundation/provision-database-bindings.js +41 -8
- package/src/foundation/provision-logical-database.js +13 -8
- package/src/foundation/requirements.d.ts +3 -3
- package/src/foundation/requirements.js +24 -12
- package/src/foundation/router-waf.d.ts +1 -0
- package/src/foundation/router-waf.js +14 -1
- package/src/generators/blueprint/blueprint.d.ts +5 -0
- package/src/generators/blueprint/blueprint.js +102 -0
- package/src/generators/blueprint/files.d.ts +6 -0
- package/src/generators/blueprint/files.js +217 -0
- package/src/generators/blueprint/schema.d.ts +4 -0
- package/src/generators/blueprint/schema.json +18 -0
- package/src/generators/formatting.js +24 -1
- package/src/generators/logging-registry.d.ts +2 -0
- package/src/generators/logging-registry.js +22 -0
- package/src/generators/preset/workspace-files-adopter-skills.d.ts +7 -0
- package/src/generators/preset/workspace-files-adopter-skills.js +301 -0
- package/src/generators/preset/workspace-files-ci-install.d.ts +2 -0
- package/src/generators/preset/workspace-files-ci-install.js +196 -0
- package/src/generators/preset/workspace-files-developer-agent.js +40 -13
- package/src/generators/preset/workspace-files-performance-load.js +8 -0
- package/src/generators/preset/workspace-files-stage-authority.js +40 -1
- package/src/generators/preset/workspace-files-thin-deploy.js +66 -34
- package/src/generators/preset/workspace-files-thin-docs.js +64 -18
- package/src/generators/preset/workspace-files.d.ts +4 -0
- package/src/generators/preset/workspace-files.js +159 -91
- package/src/generators/repository-policy/repository-policy.js +37 -0
- package/src/generators/slice/built-in-plan-api-contract-files.js +42 -7
- package/src/generators/slice/built-in-plan-api-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-api-files.js +47 -389
- package/src/generators/slice/built-in-plan-async-work-files.js +19 -1912
- package/src/generators/slice/built-in-plan-authorization-files.js +92 -329
- package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js +36 -2
- package/src/generators/slice/built-in-plan-authorization-storage.d.ts +3 -0
- package/src/generators/slice/built-in-plan-authorization-storage.js +119 -0
- package/src/generators/slice/built-in-plan-background-work-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-background-work-files.js +15 -5
- package/src/generators/slice/built-in-plan-data-deletion-files.js +2 -830
- package/src/generators/slice/built-in-plan-data-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-data-files.js +61 -1164
- package/src/generators/slice/built-in-plan-data-lifecycle-files.js +53 -28
- package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js +18 -2
- package/src/generators/slice/built-in-plan-data-retention-job-files.js +7 -2446
- package/src/generators/slice/built-in-plan-data-retention-launcher-files.js +30 -6
- package/src/generators/slice/built-in-plan-data-rights-files.js +6 -4482
- package/src/generators/slice/built-in-plan-database-lifecycle-files.js +4 -15
- package/src/generators/slice/built-in-plan-foundation-files.d.ts +2 -1
- package/src/generators/slice/built-in-plan-foundation-files.js +34 -10
- package/src/generators/slice/built-in-plan-frontend-files.js +2 -2
- package/src/generators/slice/built-in-plan-infrastructure-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-infrastructure-files.js +180 -522
- package/src/generators/slice/built-in-plan-key-value-cleanup.d.ts +4 -0
- package/src/generators/slice/built-in-plan-key-value-cleanup.js +100 -0
- package/src/generators/slice/built-in-plan-key-value-consumer.d.ts +4 -0
- package/src/generators/slice/built-in-plan-key-value-consumer.js +151 -0
- package/src/generators/slice/built-in-plan-key-value-deletion.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-deletion.js +377 -0
- package/src/generators/slice/built-in-plan-key-value-delivery.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-delivery.js +120 -0
- package/src/generators/slice/built-in-plan-key-value-export.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-export.js +595 -0
- package/src/generators/slice/built-in-plan-key-value-files.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-files.js +31 -0
- package/src/generators/slice/built-in-plan-key-value-holds.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-holds.js +189 -0
- package/src/generators/slice/built-in-plan-key-value-infrastructure.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-infrastructure.js +102 -0
- package/src/generators/slice/built-in-plan-key-value-performance.d.ts +5 -0
- package/src/generators/slice/built-in-plan-key-value-performance.js +530 -0
- package/src/generators/slice/built-in-plan-key-value-provider.d.ts +4 -0
- package/src/generators/slice/built-in-plan-key-value-provider.js +366 -0
- package/src/generators/slice/built-in-plan-key-value-records.d.ts +3 -0
- package/src/generators/slice/built-in-plan-key-value-records.js +232 -0
- package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.js +103 -0
- package/src/generators/slice/built-in-plan-key-value-retention-job-files.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-retention-job-files.js +160 -0
- package/src/generators/slice/built-in-plan-key-value-retention-maintenance.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-retention-maintenance.js +329 -0
- package/src/generators/slice/built-in-plan-key-value-retention-worker.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-retention-worker.js +477 -0
- package/src/generators/slice/built-in-plan-key-value-retention.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-retention.js +184 -0
- package/src/generators/slice/built-in-plan-metadata-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-metadata-files.js +140 -28
- package/src/generators/slice/built-in-plan-native-runtime-authority-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-native-runtime-authority-files.js +36 -19
- package/src/generators/slice/built-in-plan-operations-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-operations-files.js +89 -50
- package/src/generators/slice/built-in-plan-performance-files.js +84 -1010
- package/src/generators/slice/built-in-plan-project-files.js +116 -67
- package/src/generators/slice/built-in-plan-release-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-release-files.js +64 -15
- package/src/generators/slice/built-in-plan-reliability-files.js +54 -28
- package/src/generators/slice/built-in-plan-shared.d.ts +3 -1
- package/src/generators/slice/built-in-plan-shared.js +40 -18
- package/src/generators/slice/built-in-plan-sql-events.d.ts +2 -0
- package/src/generators/slice/built-in-plan-sql-events.js +257 -0
- package/src/generators/slice/built-in-plan-testing-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-testing-files.js +184 -132
- package/src/generators/slice/built-in-plan-testing-persistence-files.d.ts +2 -0
- package/src/generators/slice/built-in-plan-testing-persistence-files.js +178 -0
- package/src/generators/slice/built-in-plan-thin-release-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-thin-release-files.js +35 -2
- package/src/generators/slice/built-in-plan-verification-files.js +70 -0
- package/src/generators/slice/built-in-plan-web-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-web-files.js +191 -14
- package/src/generators/slice/built-in-plan-workload-role-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-workload-role-files.js +113 -274
- package/src/generators/slice/built-in-plan.d.ts +9 -1
- package/src/generators/slice/built-in-plan.js +49 -21
- package/src/generators/slice/data-policy-review-seed.d.ts +2 -0
- package/src/generators/slice/data-policy-review-seed.js +22 -0
- package/src/generators/slice/deployed-smoke-readiness.d.ts +2 -0
- package/src/generators/slice/deployed-smoke-readiness.js +214 -0
- package/src/generators/slice/local-source-identity.d.ts +2 -0
- package/src/generators/slice/local-source-identity.js +31 -0
- package/src/generators/slice/persistence-contract.d.ts +14 -0
- package/src/generators/slice/persistence-contract.js +32 -0
- package/src/generators/slice/slice.js +29 -24
- package/src/generators/sql/schema.d.ts +7 -0
- package/src/generators/sql/schema.json +38 -0
- package/src/generators/sql/sql.d.ts +6 -0
- package/src/generators/sql/sql.js +53 -0
- package/src/generators/upgrade/sql-seeded-reconciliation.d.ts +2 -0
- package/src/generators/upgrade/sql-seeded-reconciliation.js +170 -0
- package/src/generators/upgrade/upgrade.d.ts +2 -0
- package/src/generators/upgrade/upgrade.js +136 -9
- package/src/generators/workload/workload.js +51 -2
- package/src/local-dev/browser-verification.d.ts +37 -0
- package/src/local-dev/browser-verification.js +281 -0
- package/src/local-dev/contracts.d.ts +10 -1
- package/src/local-dev/contracts.js +114 -13
- package/src/local-dev/dev-command-core.js +24 -5
- package/src/local-dev/docker-credential-health.d.ts +14 -0
- package/src/local-dev/docker-credential-health.js +94 -0
- package/src/local-dev/environment-inspector.d.ts +7 -0
- package/src/local-dev/environment-inspector.js +42 -15
- package/src/local-dev/environment-state.js +2 -2
- package/src/local-dev/errors.d.ts +1 -1
- package/src/local-dev/errors.js +2 -0
- package/src/local-dev/fleet-client.js +2 -2
- package/src/local-dev/fleet-configuration.js +57 -25
- package/src/local-dev/fleet-inventory.js +46 -18
- package/src/local-dev/fleet-ipc.d.ts +7 -0
- package/src/local-dev/fleet-ipc.js +14 -2
- package/src/local-dev/fleet-launcher.d.ts +6 -0
- package/src/local-dev/fleet-launcher.js +14 -2
- package/src/local-dev/fleet-logs.js +50 -22
- package/src/local-dev/fleet-process.d.ts +20 -1
- package/src/local-dev/fleet-process.js +197 -41
- package/src/local-dev/fleet-runner-evidence.d.ts +5 -0
- package/src/local-dev/fleet-runner-evidence.js +56 -0
- package/src/local-dev/fleet-runtime.js +268 -229
- package/src/local-dev/fleet-session.d.ts +2 -0
- package/src/local-dev/fleet-session.js +28 -11
- package/src/local-dev/fleet-slice-runner-daemon.js +4 -0
- package/src/local-dev/fleet-state.d.ts +5 -2
- package/src/local-dev/fleet-state.js +25 -4
- package/src/local-dev/fleet-supervisor.d.ts +3 -0
- package/src/local-dev/fleet-supervisor.js +66 -11
- package/src/local-dev/fleet-web-start.d.ts +12 -0
- package/src/local-dev/fleet-web-start.js +48 -0
- package/src/local-dev/identity.js +3 -14
- package/src/local-dev/index.d.ts +1 -0
- package/src/local-dev/index.js +1 -0
- package/src/local-dev/native-completion.d.ts +9 -0
- package/src/local-dev/native-completion.js +130 -0
- package/src/local-dev/nx-workspace.d.ts +4 -2
- package/src/local-dev/nx-workspace.js +11 -6
- package/src/local-dev/personal-stage.d.ts +4 -5
- package/src/local-dev/personal-stage.js +6 -54
- package/src/local-dev/port-claims.d.ts +13 -0
- package/src/local-dev/port-claims.js +46 -0
- package/src/local-dev/ports.d.ts +14 -2
- package/src/local-dev/ports.js +78 -3
- package/src/local-dev/private-state.d.ts +6 -0
- package/src/local-dev/private-state.js +126 -34
- package/src/local-dev/process-group.d.ts +4 -0
- package/src/local-dev/process-group.js +29 -0
- package/src/local-dev/process-identity.d.ts +8 -0
- package/src/local-dev/process-identity.js +31 -1
- package/src/local-dev/proxy.js +11 -12
- package/src/local-dev/runtime-paths.js +1 -1
- package/src/local-dev/slice-claim.js +1 -1
- package/src/local-dev/slice-runner.d.ts +15 -6
- package/src/local-dev/slice-runner.js +189 -54
- package/src/local-dev/task-attachment.d.ts +17 -0
- package/src/local-dev/task-attachment.js +73 -0
- package/src/local-dev/task-authority.d.ts +10 -0
- package/src/local-dev/task-authority.js +27 -0
- package/src/local-dev/task-identity.d.ts +33 -0
- package/src/local-dev/task-identity.js +418 -0
- package/src/local-dev/task-native-writer.d.ts +18 -0
- package/src/local-dev/task-native-writer.js +329 -0
- package/src/local-dev/tls.js +3 -1
- package/src/local-dev/web-launch.d.ts +9 -0
- package/src/local-dev/web-launch.js +130 -0
- package/src/ownership/composition.d.ts +2 -1
- package/src/ownership/composition.js +1 -0
- package/src/performance/scenario.d.ts +22 -0
- package/src/performance/scenario.js +100 -92
- package/src/repository-policy/deployment-plan.d.ts +2 -2
- package/src/repository-policy/deployment-plan.js +2 -1
- package/src/repository-policy/policy.js +38 -3
- package/src/schemas/blueprint-v1.json +5 -4
- package/src/schemas/foundation-requirement-v1.json +5 -4
- package/src/schemas/testing-evidence-result-v1.json +1 -1
- package/src/secrets/operator.d.ts +3 -1
- package/src/secrets/operator.js +22 -3
- package/src/sst-environment-source-format.d.ts +3 -0
- package/src/sst-environment-source-format.js +20 -0
- package/src/supply-chain/blueprint-trust-git.js +13 -3
- package/src/supply-chain/build-output.js +15 -0
- package/src/supply-chain/generated-blueprint-trust-command.js +18 -1
- package/src/testing-evidence/fixture-scope.d.ts +2 -1
- package/src/testing-evidence/fixture-scope.js +4 -2
- package/src/testing-evidence/result.d.ts +2 -1
- package/src/testing-evidence/result.js +18 -4
- package/src/workload-roles/standard-slice.js +2 -3
- package/src/api-contract/baseline-update.js.map +0 -1
- package/src/api-contract/compatibility.js.map +0 -1
- package/src/api-contract/contract-graph.js.map +0 -1
- package/src/api-contract/evidence.js.map +0 -1
- package/src/api-contract/index.js.map +0 -1
- package/src/api-contract/model.fixtures.d.ts +0 -2
- package/src/api-contract/model.fixtures.js +0 -81
- package/src/api-contract/model.fixtures.js.map +0 -1
- package/src/api-contract/model.js.map +0 -1
- package/src/api-contract/rollout.js.map +0 -1
- package/src/authorization/compatibility.js.map +0 -1
- package/src/authorization/index.js.map +0 -1
- package/src/aws/child-environment.js.map +0 -1
- package/src/aws/identity.js.map +0 -1
- package/src/aws-authority/index.js.map +0 -1
- package/src/aws-authority/stage-authority.js.map +0 -1
- package/src/blueprints/execution.js.map +0 -1
- package/src/blueprints/external-sandbox.js.map +0 -1
- package/src/blueprints/index.js.map +0 -1
- package/src/blueprints/inputs.js.map +0 -1
- package/src/blueprints/manifest.js.map +0 -1
- package/src/blueprints/resolver.js.map +0 -1
- package/src/blueprints/transitions.js.map +0 -1
- package/src/cli/agent-command.js.map +0 -1
- package/src/cli/agent-runtime.js.map +0 -1
- package/src/cli/blueprint-authority.js.map +0 -1
- package/src/cli/blueprint-command.js.map +0 -1
- package/src/cli/bootstrap.js.map +0 -1
- package/src/cli/dev-command.js.map +0 -1
- package/src/cli/main.js.map +0 -1
- package/src/cli/output.js.map +0 -1
- package/src/cli/personal-secret-runtime.js.map +0 -1
- package/src/cli/secret-terminal.js.map +0 -1
- package/src/container-images.js.map +0 -1
- package/src/data-lifecycle/index.js.map +0 -1
- package/src/data-lifecycle/model.fixtures.d.ts +0 -2
- package/src/data-lifecycle/model.fixtures.js +0 -244
- package/src/data-lifecycle/model.fixtures.js.map +0 -1
- package/src/data-lifecycle/model.js.map +0 -1
- package/src/data-lifecycle/sensitive-artifacts.js.map +0 -1
- package/src/data-lifecycle/validation.js.map +0 -1
- package/src/database-retirement/contract.js.map +0 -1
- package/src/database-retirement/index.js.map +0 -1
- package/src/deterministic-order.js.map +0 -1
- package/src/developer-agent/context.js.map +0 -1
- package/src/developer-agent/generator-planning.js.map +0 -1
- package/src/developer-agent/generator-preview.js.map +0 -1
- package/src/developer-agent/git-inspection.js.map +0 -1
- package/src/developer-agent/handoff.js.map +0 -1
- package/src/developer-agent/index.js.map +0 -1
- package/src/developer-agent/model.js.map +0 -1
- package/src/developer-agent/operation-registry.js.map +0 -1
- package/src/developer-agent/ordering.js.map +0 -1
- package/src/developer-agent/planning.js.map +0 -1
- package/src/developer-agent/preview-changes.js.map +0 -1
- package/src/developer-agent/preview-source.js.map +0 -1
- package/src/developer-agent/validation.js.map +0 -1
- package/src/developer-agent/workspace-inspection.js.map +0 -1
- package/src/developer-agent/workspace-path.js.map +0 -1
- package/src/executors/blueprint-trust/blueprint-trust.js.map +0 -1
- package/src/executors/blueprint-verification/blueprint-verification.js.map +0 -1
- package/src/executors/deploy/deploy.js.map +0 -1
- package/src/executors/deployment-plan/deployment-plan.js.map +0 -1
- package/src/executors/dev/dev.js.map +0 -1
- package/src/executors/dev-doctor/dev-doctor.js.map +0 -1
- package/src/executors/dev-setup/dev-setup.js.map +0 -1
- package/src/executors/developer-context/developer-context.js.map +0 -1
- package/src/executors/fleet/fleet.js.map +0 -1
- package/src/executors/foundation-preflight/foundation-preflight.js.map +0 -1
- package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js.map +0 -1
- package/src/executors/foundation-profile-preflight/production-database-safeguard.js.map +0 -1
- package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js.map +0 -1
- package/src/executors/github-bootstrap/github-bootstrap.js.map +0 -1
- package/src/executors/infrastructure-plan/infrastructure-plan.js.map +0 -1
- package/src/executors/local-deploy/federated-credential-transport.js.map +0 -1
- package/src/executors/local-deploy/fixtures/local-deploy-state-machine.mjs +0 -53
- package/src/executors/local-deploy/local-approval.js.map +0 -1
- package/src/executors/local-deploy/local-deploy.js.map +0 -1
- package/src/executors/refresh/refresh.js.map +0 -1
- package/src/executors/remove/remove.js.map +0 -1
- package/src/executors/router-waf-rehearsal/router-waf-rehearsal.js.map +0 -1
- package/src/executors/secret-guardrails/secret-guardrails.js.map +0 -1
- package/src/executors/secret-initialize/secret-initialize.js.map +0 -1
- package/src/executors/secret-metadata/secret-metadata.js.map +0 -1
- package/src/executors/sst-lifecycle/generated-secret-retirement.js.map +0 -1
- package/src/executors/sst-lifecycle/governed-native-operation.js.map +0 -1
- package/src/executors/sst-lifecycle/logging-preflight.js.map +0 -1
- package/src/executors/sst-lifecycle/run-sst-command.js.map +0 -1
- package/src/executors/sst-lifecycle/secret-preflight.js.map +0 -1
- package/src/executors/sst-lifecycle/sst-environment-source.js.map +0 -1
- package/src/executors/unlock/unlock.js.map +0 -1
- package/src/executors/work-markers/work-markers.js.map +0 -1
- package/src/foundation/discovery.js.map +0 -1
- package/src/foundation/index.js.map +0 -1
- package/src/foundation/local-database-contract.js.map +0 -1
- package/src/foundation/logging-preflight.js.map +0 -1
- package/src/foundation/logging.js.map +0 -1
- package/src/foundation/partial-state.js.map +0 -1
- package/src/foundation/preflight.js.map +0 -1
- package/src/foundation/private-smoke-access.js.map +0 -1
- package/src/foundation/private-smoke-admission.js.map +0 -1
- package/src/foundation/private-smoke-control-plane.js.map +0 -1
- package/src/foundation/provision-database-bindings.js.map +0 -1
- package/src/foundation/provision-logical-database.js.map +0 -1
- package/src/foundation/requirements.js.map +0 -1
- package/src/foundation/router-origin-proof.js.map +0 -1
- package/src/foundation/router-waf-rate-rehearsal.js.map +0 -1
- package/src/foundation/router-waf.js.map +0 -1
- package/src/foundation/stages.js.map +0 -1
- package/src/frontend-security/index.js.map +0 -1
- package/src/frontend-security/security-headers.js.map +0 -1
- package/src/generators/feature-registry.js.map +0 -1
- package/src/generators/formatting.js.map +0 -1
- package/src/generators/function/function.js.map +0 -1
- package/src/generators/job/job.js.map +0 -1
- package/src/generators/logging-registry.js.map +0 -1
- package/src/generators/post-generation-install.js.map +0 -1
- package/src/generators/preset/dependency-overrides.js.map +0 -1
- package/src/generators/preset/generator.js.map +0 -1
- package/src/generators/preset/tool-versions.js.map +0 -1
- package/src/generators/preset/workspace-files-ci-acceptance.js.map +0 -1
- package/src/generators/preset/workspace-files-developer-agent.js.map +0 -1
- package/src/generators/preset/workspace-files-ecr-inspector.js.map +0 -1
- package/src/generators/preset/workspace-files-foundation-workload-roles.js.map +0 -1
- package/src/generators/preset/workspace-files-performance-cost.js.map +0 -1
- package/src/generators/preset/workspace-files-performance-load.js.map +0 -1
- package/src/generators/preset/workspace-files-stage-authority.js.map +0 -1
- package/src/generators/preset/workspace-files-thin-deploy.js.map +0 -1
- package/src/generators/preset/workspace-files-thin-docs.js.map +0 -1
- package/src/generators/preset/workspace-files-thin-release.js.map +0 -1
- package/src/generators/preset/workspace-files-workload-role-baseline.js.map +0 -1
- package/src/generators/preset/workspace-files.js.map +0 -1
- package/src/generators/repository-policy/repository-policy.js.map +0 -1
- package/src/generators/repository-policy/tree-policy.js.map +0 -1
- package/src/generators/service/service.js.map +0 -1
- package/src/generators/slice/built-in-plan-api-contract-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-api-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-async-work-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-authorization-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-background-work-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-deletion-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-lifecycle-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-retention-job-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-retention-launcher-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-rights-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-database-lifecycle-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-foundation-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-frontend-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-infrastructure-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-infrastructure-safety-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-metadata-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-native-runtime-authority-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-operations-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-performance-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-project-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-release-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-reliability-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-secret-runtime-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-shared.js.map +0 -1
- package/src/generators/slice/built-in-plan-testing-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-thin-release-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-verification-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-web-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-workload-role-files.js.map +0 -1
- package/src/generators/slice/built-in-plan.js.map +0 -1
- package/src/generators/slice/slice.js.map +0 -1
- package/src/generators/upgrade/upgrade.js.map +0 -1
- package/src/generators/workload/frozen-container.js.map +0 -1
- package/src/generators/workload/performance-registration.js.map +0 -1
- package/src/generators/workload/reliability-registration.js.map +0 -1
- package/src/generators/workload/service-performance-files.js.map +0 -1
- package/src/generators/workload/workload.js.map +0 -1
- package/src/git-policy/action-pins.js.map +0 -1
- package/src/git-policy/github-bootstrap.js.map +0 -1
- package/src/git-policy/index.js.map +0 -1
- package/src/git-policy/routing.js.map +0 -1
- package/src/index.js.map +0 -1
- package/src/infrastructure-change/convergence.js.map +0 -1
- package/src/infrastructure-change/drift.js.map +0 -1
- package/src/infrastructure-change/index.js.map +0 -1
- package/src/infrastructure-change/local-capability.js.map +0 -1
- package/src/infrastructure-change/model.js.map +0 -1
- package/src/infrastructure-change/normalize.js.map +0 -1
- package/src/infrastructure-change/plan.js.map +0 -1
- package/src/infrastructure-change/risk.js.map +0 -1
- package/src/infrastructure-change/summary.js.map +0 -1
- package/src/local-dev/context-discovery.js.map +0 -1
- package/src/local-dev/contract-validation.js.map +0 -1
- package/src/local-dev/contracts.js.map +0 -1
- package/src/local-dev/control-contract.js.map +0 -1
- package/src/local-dev/dev-command-core.js.map +0 -1
- package/src/local-dev/effects.js.map +0 -1
- package/src/local-dev/environment-inspector.js.map +0 -1
- package/src/local-dev/environment-state.js.map +0 -1
- package/src/local-dev/errors.js.map +0 -1
- package/src/local-dev/fleet-client.js.map +0 -1
- package/src/local-dev/fleet-configuration.js.map +0 -1
- package/src/local-dev/fleet-inventory.js.map +0 -1
- package/src/local-dev/fleet-ipc.js.map +0 -1
- package/src/local-dev/fleet-launcher.js.map +0 -1
- package/src/local-dev/fleet-lock.js.map +0 -1
- package/src/local-dev/fleet-logs.js.map +0 -1
- package/src/local-dev/fleet-process.js.map +0 -1
- package/src/local-dev/fleet-runtime.js.map +0 -1
- package/src/local-dev/fleet-session.js.map +0 -1
- package/src/local-dev/fleet-slice-runner-daemon.js.map +0 -1
- package/src/local-dev/fleet-startup.js.map +0 -1
- package/src/local-dev/fleet-state.js.map +0 -1
- package/src/local-dev/fleet-supervisor-daemon.js.map +0 -1
- package/src/local-dev/fleet-supervisor.js.map +0 -1
- package/src/local-dev/gateway-daemon.js.map +0 -1
- package/src/local-dev/gateway.js.map +0 -1
- package/src/local-dev/identity.js.map +0 -1
- package/src/local-dev/index.js.map +0 -1
- package/src/local-dev/local-context.js.map +0 -1
- package/src/local-dev/nx-workspace.js.map +0 -1
- package/src/local-dev/personal-secret-ledger.js.map +0 -1
- package/src/local-dev/personal-stage.js.map +0 -1
- package/src/local-dev/portless.js.map +0 -1
- package/src/local-dev/ports.js.map +0 -1
- package/src/local-dev/private-state.js.map +0 -1
- package/src/local-dev/process-identity.js.map +0 -1
- package/src/local-dev/proxy.js.map +0 -1
- package/src/local-dev/runtime-paths.js.map +0 -1
- package/src/local-dev/secret-slice-claim.js.map +0 -1
- package/src/local-dev/slice-claim.js.map +0 -1
- package/src/local-dev/slice-runner.js.map +0 -1
- package/src/local-dev/tls.js.map +0 -1
- package/src/ownership/composition.js.map +0 -1
- package/src/ownership/foundation-record.js.map +0 -1
- package/src/ownership/hash.js.map +0 -1
- package/src/ownership/index.js.map +0 -1
- package/src/ownership/json-ownership.js.map +0 -1
- package/src/ownership/record.js.map +0 -1
- package/src/ownership/workspace-record.js.map +0 -1
- package/src/performance/cost-collection.js.map +0 -1
- package/src/performance/cost-controls.js.map +0 -1
- package/src/performance/evidence.js.map +0 -1
- package/src/performance/index.js.map +0 -1
- package/src/performance/load-safety.js.map +0 -1
- package/src/performance/model.js.map +0 -1
- package/src/performance/pr-artifact-budget.js.map +0 -1
- package/src/performance/runner.js.map +0 -1
- package/src/performance/scenario-endpoint.js.map +0 -1
- package/src/performance/scenario.js.map +0 -1
- package/src/performance/test-fixtures.d.ts +0 -7
- package/src/performance/test-fixtures.js +0 -167
- package/src/performance/test-fixtures.js.map +0 -1
- package/src/performance/unit-cost.js.map +0 -1
- package/src/release/index.js.map +0 -1
- package/src/release/lifecycle.js.map +0 -1
- package/src/release/manifest.js.map +0 -1
- package/src/release/rollout.js.map +0 -1
- package/src/release/source-authority.js.map +0 -1
- package/src/repository-policy/aurora-preflight.js.map +0 -1
- package/src/repository-policy/capacity-migration.js.map +0 -1
- package/src/repository-policy/deployment-plan.js.map +0 -1
- package/src/repository-policy/foundation-profile.js.map +0 -1
- package/src/repository-policy/index.js.map +0 -1
- package/src/repository-policy/policy.js.map +0 -1
- package/src/secrets/adapters.js.map +0 -1
- package/src/secrets/aws-control-plane.js.map +0 -1
- package/src/secrets/declaration-verification.js.map +0 -1
- package/src/secrets/generated-aws-control-plane.js.map +0 -1
- package/src/secrets/guardrails.js.map +0 -1
- package/src/secrets/index.js.map +0 -1
- package/src/secrets/metadata.js.map +0 -1
- package/src/secrets/model.js.map +0 -1
- package/src/secrets/operator.js.map +0 -1
- package/src/secrets/permissions.js.map +0 -1
- package/src/secrets/personal-command.js.map +0 -1
- package/src/secrets/personal-ledger.js.map +0 -1
- package/src/secrets/registry.js.map +0 -1
- package/src/secrets/verification.js.map +0 -1
- package/src/secrets/workload-access.js.map +0 -1
- package/src/sst-environment-source-format.js.map +0 -1
- package/src/supply-chain/action-pins.js.map +0 -1
- package/src/supply-chain/blueprint-trust-git.js.map +0 -1
- package/src/supply-chain/blueprint-trust-process.js.map +0 -1
- package/src/supply-chain/blueprint-trust.js.map +0 -1
- package/src/supply-chain/blueprint-verification-authority.js.map +0 -1
- package/src/supply-chain/blueprint-verification-execution.js.map +0 -1
- package/src/supply-chain/build-output-bounds.js.map +0 -1
- package/src/supply-chain/build-output.js.map +0 -1
- package/src/supply-chain/common.js.map +0 -1
- package/src/supply-chain/container-artifact-contract.js.map +0 -1
- package/src/supply-chain/container-release.js.map +0 -1
- package/src/supply-chain/ecr-applicability.js.map +0 -1
- package/src/supply-chain/ecr-scanning.js.map +0 -1
- package/src/supply-chain/ecs-deployed-image.js.map +0 -1
- package/src/supply-chain/errors.js.map +0 -1
- package/src/supply-chain/generated-blueprint-trust-command.js.map +0 -1
- package/src/supply-chain/generated-command.js.map +0 -1
- package/src/supply-chain/generated-container-release-command.js.map +0 -1
- package/src/supply-chain/generated-ecr-collector-command.js.map +0 -1
- package/src/supply-chain/generated-files.js.map +0 -1
- package/src/supply-chain/generated-scanner-command.js.map +0 -1
- package/src/supply-chain/index.js.map +0 -1
- package/src/supply-chain/inventory.js.map +0 -1
- package/src/supply-chain/license-expression.js.map +0 -1
- package/src/supply-chain/pnpm-toolchain-authority.js.map +0 -1
- package/src/supply-chain/policy.js.map +0 -1
- package/src/supply-chain/publication.js.map +0 -1
- package/src/supply-chain/sbom.js.map +0 -1
- package/src/supply-chain/scanner.js.map +0 -1
- package/src/supply-chain/vendored-source.js.map +0 -1
- package/src/testing-evidence/fixture-scope.js.map +0 -1
- package/src/testing-evidence/index.js.map +0 -1
- package/src/testing-evidence/quarantine.js.map +0 -1
- package/src/testing-evidence/result.js.map +0 -1
- package/src/testing-evidence/runner-adapter.js.map +0 -1
- package/src/testing-evidence/sensitive-artifacts.js.map +0 -1
- package/src/validation.js.map +0 -1
- package/src/work-markers/index.js.map +0 -1
- package/src/work-markers/work-markers.js.map +0 -1
- package/src/workload-roles/account-baseline.js.map +0 -1
- package/src/workload-roles/authority.js.map +0 -1
- package/src/workload-roles/aws-adapter.js.map +0 -1
- package/src/workload-roles/aws-internal-handler.js.map +0 -1
- package/src/workload-roles/aws-s3-state.js.map +0 -1
- package/src/workload-roles/aws-sdk-control-plane.js.map +0 -1
- package/src/workload-roles/boundary.js.map +0 -1
- package/src/workload-roles/convergence.js.map +0 -1
- package/src/workload-roles/effective-policy.js.map +0 -1
- package/src/workload-roles/handler.js.map +0 -1
- package/src/workload-roles/history.js.map +0 -1
- package/src/workload-roles/index.js.map +0 -1
- package/src/workload-roles/injection.js.map +0 -1
- package/src/workload-roles/manifest.js.map +0 -1
- package/src/workload-roles/provisioner.js.map +0 -1
- package/src/workload-roles/registration.js.map +0 -1
- package/src/workload-roles/stage-boundary.js.map +0 -1
- package/src/workload-roles/standard-slice.js.map +0 -1
- package/src/workspace-deployment/affected-lifecycle.js.map +0 -1
- package/src/workspace-deployment/identity.js.map +0 -1
- package/src/workspace-deployment/index.js.map +0 -1
- package/src/workspace-deployment/migration-evidence.js.map +0 -1
- package/src/workspace-deployment/migration.js.map +0 -1
- package/src/workspace-deployment/ownership.js.map +0 -1
|
@@ -19,11 +19,16 @@ const child_environment_js_1 = require("../../aws/child-environment.js");
|
|
|
19
19
|
const identity_js_1 = require("../../aws/identity.js");
|
|
20
20
|
const stages_js_1 = require("../../foundation/stages.js");
|
|
21
21
|
const personal_stage_js_1 = require("../../local-dev/personal-stage.js");
|
|
22
|
+
const task_identity_js_1 = require("../../local-dev/task-identity.js");
|
|
22
23
|
const federated_credential_transport_js_1 = require("../local-deploy/federated-credential-transport.js");
|
|
23
24
|
const index_js_2 = require("../../repository-policy/index.js");
|
|
24
25
|
const index_js_3 = require("../../workspace-deployment/index.js");
|
|
25
26
|
const index_js_4 = require("../../work-markers/index.js");
|
|
26
27
|
const secret_preflight_js_1 = require("./secret-preflight.js");
|
|
28
|
+
const task_native_writer_js_1 = require("../../local-dev/task-native-writer.js");
|
|
29
|
+
const local_deploy_js_1 = require("../local-deploy/local-deploy.js");
|
|
30
|
+
const task_stack_absence_js_1 = require("../dev-task-cleanup/task-stack-absence.js");
|
|
31
|
+
const process_group_js_1 = require("../../local-dev/process-group.js");
|
|
27
32
|
const secret_initialize_js_1 = require("../secret-initialize/secret-initialize.js");
|
|
28
33
|
const generated_secret_retirement_js_1 = require("./generated-secret-retirement.js");
|
|
29
34
|
const sst_environment_source_js_1 = require("./sst-environment-source.js");
|
|
@@ -40,8 +45,8 @@ const SST_DEV_MODES = new Set(['basic', 'mono']);
|
|
|
40
45
|
const AWS_REGION_PATTERN = /^[a-z]{2}(?:-gov)?-[a-z]+-\d$/;
|
|
41
46
|
const AWS_ROLE_ARN_PATTERN = /^arn:(aws|aws-us-gov|aws-cn):iam::\d{12}:role\/[A-Za-z0-9+=,.@_/-]{1,512}$/;
|
|
42
47
|
const MAX_CALLER_IDENTITY_BYTES = 1024 * 1024;
|
|
43
|
-
const SST_SIGNAL_GRACE_PERIOD_MS =
|
|
44
|
-
const SST_SIGNAL_KILL_WAIT_MS =
|
|
48
|
+
const SST_SIGNAL_GRACE_PERIOD_MS = process_group_js_1.OWNED_PROCESS_SIGNAL_GRACE_MS;
|
|
49
|
+
const SST_SIGNAL_KILL_WAIT_MS = process_group_js_1.OWNED_PROCESS_KILL_WAIT_MS;
|
|
45
50
|
const SST_PROCESS_GROUP_POLL_MS = 25;
|
|
46
51
|
const GOVERNED_PROCESS_GROUP_ENV = 'EBK_GOVERNED_PROCESS_GROUP';
|
|
47
52
|
function assertGovernedAwsLifecyclePlatform(platform = process.platform) {
|
|
@@ -119,15 +124,7 @@ function signalExactGovernedProcessTree(child, signal) {
|
|
|
119
124
|
function exactGovernedProcessTreeExists(pid) {
|
|
120
125
|
if (process.platform === 'win32')
|
|
121
126
|
return false;
|
|
122
|
-
|
|
123
|
-
process.kill(-pid, 0);
|
|
124
|
-
return true;
|
|
125
|
-
}
|
|
126
|
-
catch (error) {
|
|
127
|
-
if (isMissingProcessError(error))
|
|
128
|
-
return false;
|
|
129
|
-
throw error;
|
|
130
|
-
}
|
|
127
|
+
return (0, process_group_js_1.exactOwnedProcessGroupExists)(pid);
|
|
131
128
|
}
|
|
132
129
|
async function waitForExactGovernedProcessTreeExit(pid, deadline = Date.now() + SST_SIGNAL_GRACE_PERIOD_MS + SST_SIGNAL_KILL_WAIT_MS) {
|
|
133
130
|
while (exactGovernedProcessTreeExists(pid)) {
|
|
@@ -248,6 +245,7 @@ function runGovernedChildProcess(input) {
|
|
|
248
245
|
});
|
|
249
246
|
let finishing = false;
|
|
250
247
|
let settled = false;
|
|
248
|
+
let cancellationSignal;
|
|
251
249
|
let spawnError;
|
|
252
250
|
let unregisterSignalCleanup = () => undefined;
|
|
253
251
|
let resolveChildSettled = () => undefined;
|
|
@@ -277,6 +275,9 @@ function runGovernedChildProcess(input) {
|
|
|
277
275
|
}
|
|
278
276
|
}
|
|
279
277
|
try {
|
|
278
|
+
// A child may acknowledge cancellation with exit zero. Preserve the
|
|
279
|
+
// observed parent signal before callers reconcile a successful close.
|
|
280
|
+
result.signal ??= cancellationSignal ?? null;
|
|
280
281
|
await input.afterClose?.(result);
|
|
281
282
|
}
|
|
282
283
|
catch (error) {
|
|
@@ -285,12 +286,18 @@ function runGovernedChildProcess(input) {
|
|
|
285
286
|
? error
|
|
286
287
|
: new Error('Governed child close reconciliation failed.');
|
|
287
288
|
}
|
|
289
|
+
result.signal ??= cancellationSignal ?? null;
|
|
288
290
|
settled = true;
|
|
289
291
|
unregisterSignalCleanup();
|
|
290
292
|
resolveChildSettled();
|
|
291
293
|
resolveChildRun(result);
|
|
292
294
|
};
|
|
293
|
-
unregisterSignalCleanup = (0, federated_credential_transport_js_1.registerGovernedSignalCleanup)((signal) =>
|
|
295
|
+
unregisterSignalCleanup = (0, federated_credential_transport_js_1.registerGovernedSignalCleanup)((signal) => {
|
|
296
|
+
if (settled)
|
|
297
|
+
return;
|
|
298
|
+
cancellationSignal ??= signal;
|
|
299
|
+
return stopExactGovernedProcessTree(child, signal, childSettled, () => settled);
|
|
300
|
+
}, 100);
|
|
294
301
|
child.once('error', (error) => {
|
|
295
302
|
spawnError = error;
|
|
296
303
|
void finish(null, null);
|
|
@@ -323,7 +330,8 @@ function captureSstEnvironmentSource(context) {
|
|
|
323
330
|
});
|
|
324
331
|
}
|
|
325
332
|
function requiresSourceReconciliation(command, stage) {
|
|
326
|
-
return (GOVERNED_STAGES.has(stage)
|
|
333
|
+
return ((GOVERNED_STAGES.has(stage) ||
|
|
334
|
+
(command === 'remove' && /^personal-[a-f0-9]{24}$/.test(stage))) &&
|
|
327
335
|
(command === 'deploy' || command === 'refresh' || command === 'remove'));
|
|
328
336
|
}
|
|
329
337
|
function isGovernedLocalCommand(command) {
|
|
@@ -403,6 +411,8 @@ function createSstChildEnvironment(ambient, invocation) {
|
|
|
403
411
|
delete sanitized.EBK_LOCAL_MUTATION_CAPABILITY_PATH;
|
|
404
412
|
delete sanitized.EBK_GITHUB_JOB_WORKFLOW_REF;
|
|
405
413
|
delete sanitized.EBK_NX_STAGE_LIFECYCLE;
|
|
414
|
+
delete sanitized.EBK_NX_TASK_CLEANUP;
|
|
415
|
+
delete sanitized.EBK_NX_TASK_UNLOCK;
|
|
406
416
|
// Nx injects task identity, target, hash, terminal, cache, and invocation
|
|
407
417
|
// metadata into every executor process. Those values describe orchestration,
|
|
408
418
|
// not desired infrastructure. Never let them reach SST, where build tools
|
|
@@ -412,7 +422,9 @@ function createSstChildEnvironment(ambient, invocation) {
|
|
|
412
422
|
delete sanitized[name];
|
|
413
423
|
}
|
|
414
424
|
}
|
|
415
|
-
|
|
425
|
+
const childEnvironment = { ...sanitized, ...invocation };
|
|
426
|
+
delete childEnvironment.EBK_NX_TASK_UNLOCK;
|
|
427
|
+
return childEnvironment;
|
|
416
428
|
}
|
|
417
429
|
function assertSafeSstForwardedArguments(args) {
|
|
418
430
|
const reserved = args.find((argument) => {
|
|
@@ -535,7 +547,7 @@ function buildSstCommandInvocation(command, options, context, environment = proc
|
|
|
535
547
|
}
|
|
536
548
|
return {
|
|
537
549
|
consumerStage: (dependencies.personalStageResolver ??
|
|
538
|
-
(0, personal_stage_js_1.createPersonalStageResolver)()).resolve().stage,
|
|
550
|
+
(0, personal_stage_js_1.createPersonalStageResolver)()).resolve(context.root).stage,
|
|
539
551
|
foundationStage: 'development',
|
|
540
552
|
mapped: true,
|
|
541
553
|
};
|
|
@@ -550,7 +562,61 @@ function buildSstCommandInvocation(command, options, context, environment = proc
|
|
|
550
562
|
stages.mapped) {
|
|
551
563
|
throw new Error(`Full deploy is not permitted for mapped personal stage ${stages.consumerStage}. Use ebk dev against the ${stages.foundationStage} Foundation.`);
|
|
552
564
|
}
|
|
565
|
+
const taskCleanup = environment.EBK_NX_TASK_CLEANUP !== undefined;
|
|
566
|
+
const taskUnlock = environment.EBK_NX_TASK_UNLOCK !== undefined;
|
|
567
|
+
if (taskUnlock) {
|
|
568
|
+
if (taskCleanup ||
|
|
569
|
+
command !== 'unlock' ||
|
|
570
|
+
kind !== 'slice' ||
|
|
571
|
+
environment.GITHUB_ACTIONS === 'true' ||
|
|
572
|
+
options.args !== undefined ||
|
|
573
|
+
options.cwd !== undefined ||
|
|
574
|
+
options.target !== undefined ||
|
|
575
|
+
!stages.mapped ||
|
|
576
|
+
stages.foundationStage !== 'development') {
|
|
577
|
+
throw new Error('Task unlock is restricted to the current local Slice task.');
|
|
578
|
+
}
|
|
579
|
+
const task = (0, task_identity_js_1.resolveTaskIdentity)(context.root);
|
|
580
|
+
if (environment.EBK_NX_TASK_UNLOCK !== task.taskId ||
|
|
581
|
+
stages.consumerStage !== `personal-${task.taskId}`) {
|
|
582
|
+
throw new Error('Task unlock cannot select another task or stage.');
|
|
583
|
+
}
|
|
584
|
+
const source = (0, local_deploy_js_1.localWorkingTreeDigest)(context.root);
|
|
585
|
+
if (source.commit !== environment.EBK_SOURCE_COMMIT ||
|
|
586
|
+
source.digest !== environment.EBK_LOCAL_SOURCE_TREE) {
|
|
587
|
+
throw new Error('Task unlock requires the exact authorized source tree.');
|
|
588
|
+
}
|
|
589
|
+
(0, task_stack_absence_js_1.resolveStaticTaskApp)({
|
|
590
|
+
workspaceRoot: context.root,
|
|
591
|
+
projectRoot: cwd,
|
|
592
|
+
projectName: context.projectName ?? '',
|
|
593
|
+
});
|
|
594
|
+
}
|
|
595
|
+
else if (command === 'unlock' && stages.mapped) {
|
|
596
|
+
throw new Error('Personal task unlock requires the current-task governed adapter.');
|
|
597
|
+
}
|
|
598
|
+
if (taskCleanup) {
|
|
599
|
+
if (command !== 'remove' ||
|
|
600
|
+
kind !== 'slice' ||
|
|
601
|
+
environment.GITHUB_ACTIONS === 'true' ||
|
|
602
|
+
options.args !== undefined ||
|
|
603
|
+
options.cwd !== undefined ||
|
|
604
|
+
options.target !== undefined ||
|
|
605
|
+
!stages.mapped ||
|
|
606
|
+
stages.foundationStage !== 'development')
|
|
607
|
+
throw new Error('Task cleanup is restricted to the current local Slice task and native removal.');
|
|
608
|
+
const task = (0, task_identity_js_1.resolveTaskIdentity)(context.root);
|
|
609
|
+
if (environment.EBK_NX_TASK_CLEANUP !== task.taskId ||
|
|
610
|
+
stages.consumerStage !== `personal-${task.taskId}`) {
|
|
611
|
+
throw new Error('Task cleanup cannot select another task or stage.');
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
else if (command === 'remove' && stages.mapped) {
|
|
615
|
+
throw new Error('Personal task removal is owned by ebk dev down; canonical remove cannot select a task.');
|
|
616
|
+
}
|
|
553
617
|
const operatingPolicy = command === 'dev' ||
|
|
618
|
+
taskCleanup ||
|
|
619
|
+
taskUnlock ||
|
|
554
620
|
(DEPLOYMENT_STAGES.has(stages.consumerStage) &&
|
|
555
621
|
(command === 'deploy' ||
|
|
556
622
|
command === 'refresh' ||
|
|
@@ -559,7 +625,7 @@ function buildSstCommandInvocation(command, options, context, environment = proc
|
|
|
559
625
|
? (0, index_js_2.readRepositoryOperatingPolicy)(context.root)
|
|
560
626
|
: undefined;
|
|
561
627
|
assertSstLifecyclePolicy(command, stages.consumerStage, environment, operatingPolicy?.deploymentProfile);
|
|
562
|
-
const authorityStage = command === 'dev'
|
|
628
|
+
const authorityStage = command === 'dev' || taskCleanup || taskUnlock
|
|
563
629
|
? 'development'
|
|
564
630
|
: stages.consumerStage;
|
|
565
631
|
const deploymentAccount = operatingPolicy
|
|
@@ -568,6 +634,16 @@ function buildSstCommandInvocation(command, options, context, environment = proc
|
|
|
568
634
|
const deploymentRegion = operatingPolicy
|
|
569
635
|
? (0, index_js_2.configuredDeploymentRegion)(operatingPolicy.deploymentRegion)
|
|
570
636
|
: undefined;
|
|
637
|
+
if ((taskCleanup || taskUnlock) && deploymentAccount && deploymentRegion) {
|
|
638
|
+
// This read cannot create or reassign the binding. The executor separately
|
|
639
|
+
// verifies the current caller and Foundation owner before constructing SST.
|
|
640
|
+
const owner = (0, index_js_2.readRepositoryOperatingPolicy)(context.root);
|
|
641
|
+
(0, task_identity_js_1.assertCurrentTaskEnvironment)(context.root, {
|
|
642
|
+
accountId: deploymentAccount,
|
|
643
|
+
region: deploymentRegion,
|
|
644
|
+
workspaceDeploymentId: owner.workspaceDeploymentId,
|
|
645
|
+
});
|
|
646
|
+
}
|
|
571
647
|
if (deploymentRegion &&
|
|
572
648
|
options.region?.trim() &&
|
|
573
649
|
options.region.trim() !== deploymentRegion) {
|
|
@@ -662,6 +738,12 @@ function buildSstCommandInvocation(command, options, context, environment = proc
|
|
|
662
738
|
? { AWS_REGION: options.region.trim() }
|
|
663
739
|
: {}),
|
|
664
740
|
EBK_CONSUMER_STAGE: stages.consumerStage,
|
|
741
|
+
...(taskCleanup
|
|
742
|
+
? { EBK_NX_TASK_CLEANUP: environment.EBK_NX_TASK_CLEANUP }
|
|
743
|
+
: {}),
|
|
744
|
+
...(taskUnlock
|
|
745
|
+
? { EBK_NX_TASK_UNLOCK: environment.EBK_NX_TASK_UNLOCK }
|
|
746
|
+
: {}),
|
|
665
747
|
...((committedRoleArn ?? options.expectedRoleArn?.trim())
|
|
666
748
|
? {
|
|
667
749
|
EBK_EXPECTED_DEPLOYMENT_ROLE_ARN: committedRoleArn ?? options.expectedRoleArn?.trim(),
|
|
@@ -678,7 +760,41 @@ function buildSstCommandInvocation(command, options, context, environment = proc
|
|
|
678
760
|
};
|
|
679
761
|
}
|
|
680
762
|
async function runSstLifecyclePreflights(command, options, context, invocation, dependencies = {}, environment = process.env) {
|
|
681
|
-
|
|
763
|
+
// Standard Slices contain a Python infrastructure provisioner even when
|
|
764
|
+
// their application handlers are TypeScript. Fail before SST can partially
|
|
765
|
+
// create resources; recovery operations must remain available without build
|
|
766
|
+
// tooling. This is a local prerequisite, not a provider-plan gate.
|
|
767
|
+
if ((command === 'dev' || command === 'deploy') &&
|
|
768
|
+
(0, node_fs_1.existsSync)((0, node_path_1.join)(invocation.cwd, 'pyproject.toml'))) {
|
|
769
|
+
const manifest = (0, node_fs_1.lstatSync)((0, node_path_1.join)(invocation.cwd, 'pyproject.toml'));
|
|
770
|
+
if (!manifest.isFile() || manifest.isSymbolicLink()) {
|
|
771
|
+
throw new Error('Python tooling manifest must be a regular project file.');
|
|
772
|
+
}
|
|
773
|
+
const childEnvironment = {};
|
|
774
|
+
for (const key of ['PATH', 'Path', 'PATHEXT', 'SystemRoot', 'SYSTEMROOT']) {
|
|
775
|
+
if (environment[key] !== undefined)
|
|
776
|
+
childEnvironment[key] = environment[key];
|
|
777
|
+
}
|
|
778
|
+
const result = (0, node_child_process_1.spawnSync)('uv', ['--version'], {
|
|
779
|
+
cwd: invocation.cwd,
|
|
780
|
+
env: childEnvironment,
|
|
781
|
+
encoding: 'utf8',
|
|
782
|
+
timeout: 5_000,
|
|
783
|
+
maxBuffer: 4_096,
|
|
784
|
+
windowsHide: true,
|
|
785
|
+
shell: false,
|
|
786
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
787
|
+
});
|
|
788
|
+
if (result.error ||
|
|
789
|
+
result.status !== 0 ||
|
|
790
|
+
!/^uv \d+\.\d+\.\d+\b/.test(result.stdout ?? '')) {
|
|
791
|
+
// Do not surface arbitrary tool stderr or inherited credential material.
|
|
792
|
+
throw new Error(`Python tooling for ${context.projectName ?? 'the selected project'} requires uv on PATH. Install the workspace-documented uv version and retry the same EBK command. No SST child started.`);
|
|
793
|
+
}
|
|
794
|
+
}
|
|
795
|
+
const stage = command === 'dev' ||
|
|
796
|
+
(command === 'remove' && invocation.environment.EBK_NX_TASK_CLEANUP) ||
|
|
797
|
+
(command === 'unlock' && invocation.environment.EBK_NX_TASK_UNLOCK)
|
|
682
798
|
? 'development'
|
|
683
799
|
: invocation.environment.EBK_CONSUMER_STAGE;
|
|
684
800
|
await (dependencies.ownership ?? index_js_3.assertWorkspaceStageOwnershipForWorkspace)(context.root, stage, {
|
|
@@ -704,14 +820,17 @@ async function runSstLifecyclePreflights(command, options, context, invocation,
|
|
|
704
820
|
}
|
|
705
821
|
}
|
|
706
822
|
async function runSstCommand(command, options, context, dependencies = {}) {
|
|
707
|
-
|
|
823
|
+
const environment = dependencies.environment ?? process.env;
|
|
824
|
+
if (command !== 'dev' &&
|
|
825
|
+
!(command === 'remove' && environment.EBK_NX_TASK_CLEANUP !== undefined) &&
|
|
826
|
+
!(command === 'unlock' && environment.EBK_NX_TASK_UNLOCK !== undefined)) {
|
|
708
827
|
assertGovernedAwsLifecyclePlatform(dependencies.platform);
|
|
709
828
|
}
|
|
710
|
-
const environment = dependencies.environment ?? process.env;
|
|
711
829
|
const joinsGovernedProcessGroup = process.platform !== 'win32' &&
|
|
712
830
|
environment[GOVERNED_PROCESS_GROUP_ENV] === '1';
|
|
713
831
|
let invocation;
|
|
714
832
|
let environmentSource;
|
|
833
|
+
let taskWriter;
|
|
715
834
|
try {
|
|
716
835
|
invocation = buildSstCommandInvocation(command, options, context, environment);
|
|
717
836
|
if (requiresSourceReconciliation(command, invocation.environment.EBK_CONSUMER_STAGE)) {
|
|
@@ -723,9 +842,27 @@ async function runSstCommand(command, options, context, dependencies = {}) {
|
|
|
723
842
|
await runSstLifecyclePreflights(command, options, context, invocation, dependencies, environment);
|
|
724
843
|
if (environmentSource)
|
|
725
844
|
(0, sst_environment_source_js_1.reconcileSstEnvironmentSourceTree)(environmentSource);
|
|
845
|
+
if (command === 'dev' ||
|
|
846
|
+
invocation.environment.EBK_NX_TASK_CLEANUP ||
|
|
847
|
+
invocation.environment.EBK_NX_TASK_UNLOCK) {
|
|
848
|
+
// Rebuild after asynchronous authorization: source, task owner, and
|
|
849
|
+
// committed account/Region must still agree immediately before spawn.
|
|
850
|
+
const current = buildSstCommandInvocation(command, options, context, environment);
|
|
851
|
+
if (JSON.stringify(current) !== JSON.stringify(invocation))
|
|
852
|
+
throw new Error('Task native invocation changed during preflight.');
|
|
853
|
+
taskWriter = (dependencies.acquireTaskWriter ?? task_native_writer_js_1.acquireTaskNativeWriterLease)(context, invocation.environment.EBK_CONSUMER_STAGE.slice('personal-'.length), command === 'unlock', dependencies.taskNativeWriterEffects);
|
|
854
|
+
taskWriter.assertCurrent();
|
|
855
|
+
}
|
|
726
856
|
}
|
|
727
857
|
catch (error) {
|
|
728
858
|
let restorationError;
|
|
859
|
+
try {
|
|
860
|
+
// No native child has been spawned during this preflight phase.
|
|
861
|
+
taskWriter?.release();
|
|
862
|
+
}
|
|
863
|
+
catch (releaseError) {
|
|
864
|
+
devkit_1.logger.error(`Task native writer preflight evidence retained: ${releaseError instanceof Error ? releaseError.message : String(releaseError)}`);
|
|
865
|
+
}
|
|
729
866
|
if (environmentSource) {
|
|
730
867
|
try {
|
|
731
868
|
(0, sst_environment_source_js_1.reconcileSstEnvironmentSourceTree)(environmentSource);
|
|
@@ -744,14 +881,31 @@ async function runSstCommand(command, options, context, dependencies = {}) {
|
|
|
744
881
|
}
|
|
745
882
|
devkit_1.logger.info(`Running workspace SST: ${command} --stage ${invocation.environment.EBK_CONSUMER_STAGE} foundationStage=${invocation.environment.EBK_FOUNDATION_STAGE} (${invocation.cwd})`);
|
|
746
883
|
return new Promise((resolve) => {
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
884
|
+
let child;
|
|
885
|
+
try {
|
|
886
|
+
taskWriter?.assertCurrent();
|
|
887
|
+
child = (dependencies.spawnChild ?? node_child_process_1.spawn)(invocation.executable, invocation.args, {
|
|
888
|
+
cwd: invocation.cwd,
|
|
889
|
+
detached: process.platform !== 'win32' && !joinsGovernedProcessGroup,
|
|
890
|
+
env: createSstChildEnvironment(environment, invocation.environment),
|
|
891
|
+
shell: false,
|
|
892
|
+
stdio: 'inherit',
|
|
893
|
+
});
|
|
894
|
+
}
|
|
895
|
+
catch (error) {
|
|
896
|
+
try {
|
|
897
|
+
taskWriter?.release();
|
|
898
|
+
}
|
|
899
|
+
catch {
|
|
900
|
+
/* Keep ambiguous lease evidence. */
|
|
901
|
+
}
|
|
902
|
+
devkit_1.logger.error(error instanceof Error ? error.message : String(error));
|
|
903
|
+
resolve({ success: false });
|
|
904
|
+
return;
|
|
905
|
+
}
|
|
754
906
|
let settled = false;
|
|
907
|
+
let cancellationSignal;
|
|
908
|
+
let writerRegistrationFailed = false;
|
|
755
909
|
let unregisterSignalCleanup = () => undefined;
|
|
756
910
|
let resolveChildSettled = () => undefined;
|
|
757
911
|
const childSettled = new Promise((resolveChild) => {
|
|
@@ -763,11 +917,21 @@ async function runSstCommand(command, options, context, dependencies = {}) {
|
|
|
763
917
|
settled = true;
|
|
764
918
|
unregisterSignalCleanup();
|
|
765
919
|
resolveChildSettled();
|
|
766
|
-
|
|
920
|
+
try {
|
|
921
|
+
if (writerRegistrationFailed)
|
|
922
|
+
throw new Error('Native child registration failed.');
|
|
923
|
+
taskWriter?.release();
|
|
924
|
+
}
|
|
925
|
+
catch (error) {
|
|
926
|
+
success = false;
|
|
927
|
+
devkit_1.logger.error(`Task native writer evidence retained: ${error instanceof Error ? error.message : String(error)}`);
|
|
928
|
+
}
|
|
929
|
+
resolve({ success: success && !cancellationSignal });
|
|
767
930
|
};
|
|
768
931
|
unregisterSignalCleanup = (0, federated_credential_transport_js_1.registerGovernedSignalCleanup)((signal) => {
|
|
769
932
|
if (settled)
|
|
770
933
|
return;
|
|
934
|
+
cancellationSignal ??= signal;
|
|
771
935
|
return stopExactGovernedProcessTree(child, signal, childSettled, () => settled, !joinsGovernedProcessGroup);
|
|
772
936
|
}, 100);
|
|
773
937
|
child.on('error', (error) => {
|
|
@@ -789,13 +953,19 @@ async function runSstCommand(command, options, context, dependencies = {}) {
|
|
|
789
953
|
devkit_1.logger.error(`Failed to stop retained SST descendant process tree: ${error instanceof Error ? error.message : String(error)}`);
|
|
790
954
|
}
|
|
791
955
|
if (retainedProcessTree) {
|
|
956
|
+
// The leader's exit is not evidence that its native writers ended.
|
|
957
|
+
// Keep task lease receipts for explicit, owner-proven recovery.
|
|
958
|
+
if (taskWriter)
|
|
959
|
+
writerRegistrationFailed = true;
|
|
792
960
|
devkit_1.logger.error('SST exited before its exact descendant process tree stopped.');
|
|
793
961
|
}
|
|
794
962
|
}
|
|
795
|
-
if (code !== 0) {
|
|
796
|
-
devkit_1.logger.error(
|
|
797
|
-
? `SST ${command}
|
|
798
|
-
:
|
|
963
|
+
if (code !== 0 || cancellationSignal) {
|
|
964
|
+
devkit_1.logger.error(cancellationSignal
|
|
965
|
+
? `SST ${command} cancelled by ${cancellationSignal}.`
|
|
966
|
+
: signal
|
|
967
|
+
? `SST ${command} terminated with signal ${signal}.`
|
|
968
|
+
: `SST ${command} exited with status ${code ?? 'unknown'}.`);
|
|
799
969
|
if (command === 'deploy' || command === 'remove') {
|
|
800
970
|
devkit_1.logger.error(`If the stack is locked, run pnpm nx run ${context.projectName ?? '<project>'}:unlock --stage=${options.stage}.`);
|
|
801
971
|
}
|
|
@@ -810,10 +980,14 @@ async function runSstCommand(command, options, context, dependencies = {}) {
|
|
|
810
980
|
devkit_1.logger.error(`Failed to restore SST tool-owned source: ${error instanceof Error ? error.message : String(error)}`);
|
|
811
981
|
}
|
|
812
982
|
}
|
|
813
|
-
const applySucceeded = code === 0 &&
|
|
983
|
+
const applySucceeded = code === 0 &&
|
|
984
|
+
!cancellationSignal &&
|
|
985
|
+
sourceRestored &&
|
|
986
|
+
!retainedProcessTree;
|
|
814
987
|
let generatedSecretRetirementSucceeded = true;
|
|
815
988
|
if (applySucceeded &&
|
|
816
989
|
command === 'remove' &&
|
|
990
|
+
!invocation.environment.EBK_NX_TASK_CLEANUP &&
|
|
817
991
|
projectKind(context) === 'slice') {
|
|
818
992
|
try {
|
|
819
993
|
await (dependencies.generatedSecretRetirement ??
|
|
@@ -826,6 +1000,20 @@ async function runSstCommand(command, options, context, dependencies = {}) {
|
|
|
826
1000
|
}
|
|
827
1001
|
settle(applySucceeded && generatedSecretRetirementSucceeded);
|
|
828
1002
|
});
|
|
1003
|
+
if (taskWriter && child.pid) {
|
|
1004
|
+
try {
|
|
1005
|
+
taskWriter.recordChild(child.pid, !joinsGovernedProcessGroup);
|
|
1006
|
+
}
|
|
1007
|
+
catch (error) {
|
|
1008
|
+
writerRegistrationFailed = true;
|
|
1009
|
+
devkit_1.logger.error(`Task native child identity was not retained: ${error instanceof Error ? error.message : String(error)}`);
|
|
1010
|
+
// Never leave an unrecorded writer running after a failed registration.
|
|
1011
|
+
void stopExactGovernedProcessTree(child, 'SIGTERM', childSettled, () => settled, !joinsGovernedProcessGroup).catch((stopError) => {
|
|
1012
|
+
writerRegistrationFailed = true;
|
|
1013
|
+
devkit_1.logger.error(`Unregistered native child termination failed; writer evidence retained: ${stopError instanceof Error ? stopError.message : String(stopError)}`);
|
|
1014
|
+
});
|
|
1015
|
+
}
|
|
1016
|
+
}
|
|
829
1017
|
});
|
|
830
1018
|
}
|
|
831
1019
|
//# sourceMappingURL=run-sst-command.js.map
|
|
@@ -11,6 +11,7 @@ interface SstEnvironmentSourceSnapshot {
|
|
|
11
11
|
relativePath: string;
|
|
12
12
|
}
|
|
13
13
|
export interface SstEnvironmentSourceTreeSnapshot {
|
|
14
|
+
nextSource?: SstEnvironmentSourceSnapshot;
|
|
14
15
|
projectRoot: string;
|
|
15
16
|
rootPythonSourcePath: string;
|
|
16
17
|
rootSourcePath: string;
|
|
@@ -21,5 +22,12 @@ export declare function captureSstEnvironmentSourceTree(input: {
|
|
|
21
22
|
projectRoot: string;
|
|
22
23
|
workspaceRoot: string;
|
|
23
24
|
}): SstEnvironmentSourceTreeSnapshot;
|
|
25
|
+
/** Capture outside the complete Nx child, including its Next build dependencies.
|
|
26
|
+
* The inner SST boundary alone starts after those dependencies have run. */
|
|
27
|
+
export declare function captureNextEnvironmentSource(input: {
|
|
28
|
+
projectRoot: string;
|
|
29
|
+
workspaceRoot: string;
|
|
30
|
+
}): SstEnvironmentSourceSnapshot | undefined;
|
|
31
|
+
export declare function reconcileNextEnvironmentSource(retained: SstEnvironmentSourceSnapshot | undefined, workspaceRoot: string): void;
|
|
24
32
|
export declare function reconcileSstEnvironmentSourceTree(retained: SstEnvironmentSourceTreeSnapshot): void;
|
|
25
33
|
export {};
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.captureSstEnvironmentSourceTree = captureSstEnvironmentSourceTree;
|
|
4
|
+
exports.captureNextEnvironmentSource = captureNextEnvironmentSource;
|
|
5
|
+
exports.reconcileNextEnvironmentSource = reconcileNextEnvironmentSource;
|
|
4
6
|
exports.reconcileSstEnvironmentSourceTree = reconcileSstEnvironmentSourceTree;
|
|
5
7
|
const node_fs_1 = require("node:fs");
|
|
6
8
|
const node_path_1 = require("node:path");
|
|
@@ -180,7 +182,12 @@ function captureSstEnvironmentSourceTree(input) {
|
|
|
180
182
|
if (!snapshots.some(({ absolutePath }) => absolutePath === rootSourcePath)) {
|
|
181
183
|
throw new Error('SST lifecycle project lacks its exact root environment source.');
|
|
182
184
|
}
|
|
185
|
+
const nextSource = captureNextEnvironmentSource({
|
|
186
|
+
projectRoot,
|
|
187
|
+
workspaceRoot,
|
|
188
|
+
});
|
|
183
189
|
return {
|
|
190
|
+
...(nextSource ? { nextSource } : {}),
|
|
184
191
|
projectRoot,
|
|
185
192
|
rootPythonSourcePath,
|
|
186
193
|
rootSourcePath,
|
|
@@ -188,7 +195,54 @@ function captureSstEnvironmentSourceTree(input) {
|
|
|
188
195
|
workspaceRoot,
|
|
189
196
|
};
|
|
190
197
|
}
|
|
198
|
+
/** Capture outside the complete Nx child, including its Next build dependencies.
|
|
199
|
+
* The inner SST boundary alone starts after those dependencies have run. */
|
|
200
|
+
function captureNextEnvironmentSource(input) {
|
|
201
|
+
const nextPath = (0, node_path_1.join)(input.projectRoot, 'web', 'next-env.d.ts');
|
|
202
|
+
// existsSync follows links and would treat a dangling alias as absence.
|
|
203
|
+
// Inspect the directory entry so aliases are refused before the child writes.
|
|
204
|
+
if (!(0, node_fs_1.lstatSync)(nextPath, { throwIfNoEntry: false }))
|
|
205
|
+
return undefined;
|
|
206
|
+
const workspaceRoot = (0, node_fs_1.realpathSync)(input.workspaceRoot);
|
|
207
|
+
const projectRoot = (0, node_fs_1.realpathSync)(input.projectRoot);
|
|
208
|
+
normalizedRelativePath(workspaceRoot, projectRoot);
|
|
209
|
+
const nextSource = stableSstEnvironmentSource((0, node_path_1.join)(projectRoot, 'web', 'next-env.d.ts'), workspaceRoot);
|
|
210
|
+
// Arbitrary declarations remain ordinary source; never normalize or ignore them.
|
|
211
|
+
return (0, sst_environment_source_format_js_1.isExactGeneratedNextEnvironmentSourceBytes)(nextSource.bytes)
|
|
212
|
+
? nextSource
|
|
213
|
+
: undefined;
|
|
214
|
+
}
|
|
215
|
+
function reconcileNextEnvironmentSource(retained, workspaceRoot) {
|
|
216
|
+
if (retained) {
|
|
217
|
+
workspaceRoot = (0, node_fs_1.realpathSync)(workspaceRoot);
|
|
218
|
+
const current = stableSstEnvironmentSource(retained.absolutePath, workspaceRoot);
|
|
219
|
+
if (!(0, sst_environment_source_format_js_1.isExactGeneratedNextEnvironmentSourceBytes)(current.bytes))
|
|
220
|
+
throw new Error('Next lifecycle declaration changed beyond exact generated dev/build output.');
|
|
221
|
+
restoreExistingSstEnvironmentSource(retained, current, workspaceRoot);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
191
224
|
function reconcileSstEnvironmentSourceTree(retained) {
|
|
225
|
+
const failures = [];
|
|
226
|
+
try {
|
|
227
|
+
reconcileNextEnvironmentSource(retained.nextSource, retained.workspaceRoot);
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
failures.push(error);
|
|
231
|
+
}
|
|
232
|
+
try {
|
|
233
|
+
reconcileNativeSstEnvironmentSources(retained);
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
failures.push(error);
|
|
237
|
+
}
|
|
238
|
+
if (failures.length === 1)
|
|
239
|
+
throw failures[0];
|
|
240
|
+
if (failures.length > 1)
|
|
241
|
+
throw new Error(failures
|
|
242
|
+
.map((error) => error instanceof Error ? error.message : String(error))
|
|
243
|
+
.join('; '));
|
|
244
|
+
}
|
|
245
|
+
function reconcileNativeSstEnvironmentSources(retained) {
|
|
192
246
|
const retainedByPath = new Map(retained.snapshots.map((snapshot) => [snapshot.absolutePath, snapshot]));
|
|
193
247
|
const observed = discoverSstEnvironmentSources(retained);
|
|
194
248
|
const observedByPath = new Map(observed.map((snapshot) => [snapshot.absolutePath, snapshot]));
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type ExecutorContext } from '@nx/devkit';
|
|
2
|
+
import { type TaskAuthorityEffects } from '../../local-dev/task-authority.js';
|
|
3
|
+
import { type TaskNativeWriterEffects } from '../../local-dev/task-native-writer.js';
|
|
4
|
+
import { createLocalFederatedCredentialTransport } from '../local-deploy/federated-credential-transport.js';
|
|
5
|
+
import { runSstCommand, type SstLifecycleOptions } from './run-sst-command.js';
|
|
6
|
+
export interface TaskUnlockDependencies {
|
|
7
|
+
authority?: TaskAuthorityEffects;
|
|
8
|
+
createTransport?: typeof createLocalFederatedCredentialTransport;
|
|
9
|
+
environment?: NodeJS.ProcessEnv;
|
|
10
|
+
run?: typeof runSstCommand;
|
|
11
|
+
writers?: TaskNativeWriterEffects;
|
|
12
|
+
}
|
|
13
|
+
export declare function runCurrentTaskUnlock(options: SstLifecycleOptions, context: ExecutorContext, dependencies?: TaskUnlockDependencies): Promise<{
|
|
14
|
+
success: boolean;
|
|
15
|
+
}>;
|