@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,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.EnvironmentDeficientError = exports.ENVIRONMENT_INSPECTOR_CHECKS = exports.AWS_ENVIRONMENT_PROBE_TIMEOUT_MS = void 0;
|
|
4
4
|
exports.evaluateEnvironmentExecutableVersion = evaluateEnvironmentExecutableVersion;
|
|
5
5
|
exports.evaluateDevelopmentFoundationAccount = evaluateDevelopmentFoundationAccount;
|
|
6
|
+
exports.evaluateDevelopmentFoundationReport = evaluateDevelopmentFoundationReport;
|
|
7
|
+
exports.resolveCurrentAwsAccountId = resolveCurrentAwsAccountId;
|
|
6
8
|
exports.inspectDevelopmentEnvironment = inspectDevelopmentEnvironment;
|
|
7
9
|
exports.assertEnvironmentReady = assertEnvironmentReady;
|
|
8
10
|
const node_child_process_1 = require("node:child_process");
|
|
@@ -22,6 +24,7 @@ const errors_js_1 = require("./errors.js");
|
|
|
22
24
|
const nx_workspace_js_1 = require("./nx-workspace.js");
|
|
23
25
|
const personal_stage_js_1 = require("./personal-stage.js");
|
|
24
26
|
const tls_js_1 = require("./tls.js");
|
|
27
|
+
const docker_credential_health_js_1 = require("./docker-credential-health.js");
|
|
25
28
|
const execFileAsync = (0, node_util_1.promisify)(node_child_process_1.execFile);
|
|
26
29
|
exports.AWS_ENVIRONMENT_PROBE_TIMEOUT_MS = 15_000;
|
|
27
30
|
const MAX_AWS_ENVIRONMENT_PROBE_TIMEOUT_MS = 60_000;
|
|
@@ -100,6 +103,11 @@ exports.ENVIRONMENT_INSPECTOR_CHECKS = [
|
|
|
100
103
|
id: 'docker-compose-v2',
|
|
101
104
|
volatile: true,
|
|
102
105
|
},
|
|
106
|
+
{
|
|
107
|
+
capabilities: ['containers'],
|
|
108
|
+
id: 'docker-credential-helpers',
|
|
109
|
+
volatile: true,
|
|
110
|
+
},
|
|
103
111
|
{
|
|
104
112
|
capabilities: ['aws-foundation'],
|
|
105
113
|
id: 'aws-sdk-credentials',
|
|
@@ -257,11 +265,15 @@ function commandRequirements(command, adapters, force = false) {
|
|
|
257
265
|
checks['docker-cli'] = 'required';
|
|
258
266
|
checks['docker-engine'] = 'required';
|
|
259
267
|
checks['docker-compose-v2'] = 'required';
|
|
268
|
+
// Docker's required credential protocol is get/store/erase, not list.
|
|
269
|
+
// This secret-free liveness probe is diagnostic, never pull authority.
|
|
270
|
+
checks['docker-credential-helpers'] = 'advisory';
|
|
260
271
|
}
|
|
261
272
|
else {
|
|
262
273
|
checks['docker-cli'] = 'not-required';
|
|
263
274
|
checks['docker-engine'] = 'not-required';
|
|
264
275
|
checks['docker-compose-v2'] = 'not-required';
|
|
276
|
+
checks['docker-credential-helpers'] = 'not-required';
|
|
265
277
|
}
|
|
266
278
|
}
|
|
267
279
|
else if (command === 'doctor') {
|
|
@@ -288,12 +300,14 @@ async function commandVersion(executable, args, timeout = 5_000) {
|
|
|
288
300
|
});
|
|
289
301
|
return `${result.stdout}${result.stderr}`.trim().split(/\r?\n/, 1)[0] ?? '';
|
|
290
302
|
}
|
|
291
|
-
function commandProbe(executable, args, remediation, minimumVersion) {
|
|
303
|
+
function commandProbe(executable, args, remediation, minimumVersion, versionPattern) {
|
|
292
304
|
return async () => {
|
|
293
305
|
try {
|
|
294
306
|
const version = await commandVersion(executable, args);
|
|
295
307
|
return minimumVersion
|
|
296
|
-
? evaluateEnvironmentExecutableVersion(
|
|
308
|
+
? evaluateEnvironmentExecutableVersion(versionPattern
|
|
309
|
+
? (versionPattern.exec(version)?.[1] ?? version)
|
|
310
|
+
: version, minimumVersion, remediation)
|
|
297
311
|
: {
|
|
298
312
|
detectedVersion: (0, environment_state_js_1.sanitizeEnvironmentEvidence)(version).slice(0, 128),
|
|
299
313
|
status: 'ready',
|
|
@@ -335,6 +349,18 @@ function evaluateDevelopmentFoundationAccount(accountId, eventBusArn) {
|
|
|
335
349
|
status: 'ready',
|
|
336
350
|
};
|
|
337
351
|
}
|
|
352
|
+
function evaluateDevelopmentFoundationReport(report, accountId, context) {
|
|
353
|
+
if (!report.ok || !report.discovery) {
|
|
354
|
+
return {
|
|
355
|
+
evidence: report.issues.join('; '),
|
|
356
|
+
remediation: report.state === 'absent'
|
|
357
|
+
? `Development Foundation is absent in ${context.region}. Verify workspace ownership and run ebk deploy development --profile=${context.profile} --expectedRoleArn=<approved-development-role>; the governed stage lifecycle deploys Foundation first, then eligible Slices. Retry ebk dev doctor afterward. This is not an IAM denial.`
|
|
358
|
+
: 'Development Foundation discovery is incomplete or incompatible. Inspect the reported contract issues and reconcile Foundation through its governed upgrade/deploy workflow; do not expand IAM permissions to repair discovery data.',
|
|
359
|
+
status: 'unavailable',
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
return evaluateDevelopmentFoundationAccount(accountId, report.discovery.eventBusArn);
|
|
363
|
+
}
|
|
338
364
|
function createAbortableCredentialRequestHandler(context, abortSignal) {
|
|
339
365
|
const transportClient = new client_sts_1.STSClient({
|
|
340
366
|
region: context.region,
|
|
@@ -356,7 +382,8 @@ async function resolveProfileCredentials(context, abortSignal) {
|
|
|
356
382
|
try {
|
|
357
383
|
return await (0, credential_providers_1.fromIni)({
|
|
358
384
|
clientConfig: {
|
|
359
|
-
|
|
385
|
+
// Credential sources own their Region (notably the SSO session).
|
|
386
|
+
// Application STS/SSM clients still use the selected deployment Region.
|
|
360
387
|
requestHandler: transport.requestHandler,
|
|
361
388
|
},
|
|
362
389
|
profile: context.profile,
|
|
@@ -418,7 +445,7 @@ const defaultProbes = {
|
|
|
418
445
|
'personal-stage': async ({ identity }) => (0, personal_stage_js_1.isFrameworkPersonalStage)(identity.stage)
|
|
419
446
|
? { evidence: identity.stage, status: 'ready' }
|
|
420
447
|
: {
|
|
421
|
-
remediation: '
|
|
448
|
+
remediation: 'Inspect the persisted worktree task identity with ebk dev status; use explicit ebk dev attach only after verifying ownership.',
|
|
422
449
|
status: 'unavailable',
|
|
423
450
|
},
|
|
424
451
|
'private-state-location': async ({ appData }) => {
|
|
@@ -448,13 +475,14 @@ const defaultProbes = {
|
|
|
448
475
|
return required.every(node_fs_1.existsSync)
|
|
449
476
|
? { status: 'ready' }
|
|
450
477
|
: {
|
|
451
|
-
remediation: 'Run ebk dev setup
|
|
478
|
+
remediation: 'Run ebk dev setup. The generated verify-local-browser target uses browser-scoped trust; system trust is optional and must be explicitly reviewed.',
|
|
452
479
|
status: 'missing',
|
|
453
480
|
};
|
|
454
481
|
},
|
|
455
482
|
'docker-cli': commandProbe('docker', ['--version'], 'Install Docker with the Docker CLI.'),
|
|
456
483
|
'docker-engine': commandProbe('docker', ['info', '--format', '{{.ServerVersion}}'], 'Start the Docker engine and confirm current-user access.'),
|
|
457
484
|
'docker-compose-v2': commandProbe('docker', ['compose', 'version', '--short'], 'Install or enable Docker Compose v2.'),
|
|
485
|
+
'docker-credential-helpers': () => (0, docker_credential_health_js_1.inspectDockerCredentialHelpers)(),
|
|
458
486
|
'aws-sdk-credentials': async ({ context }, abortSignal) => {
|
|
459
487
|
try {
|
|
460
488
|
const credentials = await resolveProfileCredentials(context, abortSignal);
|
|
@@ -497,14 +525,7 @@ const defaultProbes = {
|
|
|
497
525
|
region: context.region,
|
|
498
526
|
requirement: discovery_js_1.STANDARD_FOUNDATION_REQUIREMENT,
|
|
499
527
|
});
|
|
500
|
-
|
|
501
|
-
return {
|
|
502
|
-
evidence: report.issues.join('; '),
|
|
503
|
-
remediation: `Grant profile ${context.profile} bounded ssm:GetParameters access to the development Foundation contract in ${context.region}.`,
|
|
504
|
-
status: 'unavailable',
|
|
505
|
-
};
|
|
506
|
-
}
|
|
507
|
-
return evaluateDevelopmentFoundationAccount(accountId, report.discovery.eventBusArn);
|
|
528
|
+
return evaluateDevelopmentFoundationReport(report, accountId, context);
|
|
508
529
|
}
|
|
509
530
|
finally {
|
|
510
531
|
reader.destroy();
|
|
@@ -513,12 +534,18 @@ const defaultProbes = {
|
|
|
513
534
|
catch (error) {
|
|
514
535
|
return {
|
|
515
536
|
evidence: error instanceof Error ? error.message : String(error),
|
|
516
|
-
remediation:
|
|
537
|
+
remediation: [
|
|
538
|
+
'AccessDenied',
|
|
539
|
+
'AccessDeniedException',
|
|
540
|
+
'UnauthorizedOperation',
|
|
541
|
+
].includes(error instanceof Error ? error.name : '')
|
|
542
|
+
? `Reconcile profile ${context.profile}'s bounded ssm:GetParameters authority for /ebk/development/foundation/* in ${context.region}; confirm the exact account and role before changing policy.`
|
|
543
|
+
: `Verify profile ${context.profile}'s temporary credentials and network access in ${context.region}, then retry ebk dev doctor. An unresolved read is not proof of missing IAM permissions.`,
|
|
517
544
|
status: 'unavailable',
|
|
518
545
|
};
|
|
519
546
|
}
|
|
520
547
|
},
|
|
521
|
-
'aws-cli-remediation': commandProbe('aws', ['--version'], 'Install AWS CLI v2 only when the selected SSO profile requires aws sso login remediation.', '2'),
|
|
548
|
+
'aws-cli-remediation': commandProbe('aws', ['--version'], 'Install AWS CLI v2 only when the selected SSO profile requires aws sso login remediation.', '2', /^aws-cli\/(\d+\.\d+\.\d+)(?:\s|$)/),
|
|
522
549
|
};
|
|
523
550
|
async function resolveCurrentAwsAccountId(context, abortSignal) {
|
|
524
551
|
const credentials = await resolveProfileCredentials(context, abortSignal);
|
|
@@ -392,7 +392,7 @@ function validateDevelopmentEnvironmentAssessment(value) {
|
|
|
392
392
|
value.catalogVersion !== exports.ENVIRONMENT_REQUIREMENT_CATALOG_VERSION ||
|
|
393
393
|
value.localContextSchemaVersion !== local_context_js_1.LOCAL_DEV_CONTEXT_SCHEMA_VERSION ||
|
|
394
394
|
value.personalStageResolverVersion !== personal_stage_js_1.PERSONAL_STAGE_RESOLVER_VERSION ||
|
|
395
|
-
value.identitySource !== '
|
|
395
|
+
value.identitySource !== 'worktree-task') {
|
|
396
396
|
return assessmentError('Development environment assessment has an unsupported schema, catalog, context, or identity version.');
|
|
397
397
|
}
|
|
398
398
|
if (!exports.ENVIRONMENT_ASSESSMENT_STATES.includes(value.state)) {
|
|
@@ -413,7 +413,7 @@ function validateDevelopmentEnvironmentAssessment(value) {
|
|
|
413
413
|
evaluatedProfiles: validateStringArray(value.evaluatedProfiles, 'Environment evaluatedProfiles'),
|
|
414
414
|
fingerprint: (0, contract_validation_js_1.requireBoundedString)(value.fingerprint, 'Environment fingerprint', { pattern: contract_validation_js_1.LOCAL_DEV_SHA256_PATTERN }),
|
|
415
415
|
frameworkVersion: (0, contract_validation_js_1.requireBoundedString)(value.frameworkVersion, 'Environment frameworkVersion', { maximumLength: 128 }),
|
|
416
|
-
identitySource: '
|
|
416
|
+
identitySource: 'worktree-task',
|
|
417
417
|
localContextDigest: (0, contract_validation_js_1.requireBoundedString)(value.localContextDigest, 'Environment localContextDigest', { pattern: contract_validation_js_1.LOCAL_DEV_SHA256_PATTERN }),
|
|
418
418
|
localContextSchemaVersion: local_context_js_1.LOCAL_DEV_CONTEXT_SCHEMA_VERSION,
|
|
419
419
|
personalStageResolverVersion: personal_stage_js_1.PERSONAL_STAGE_RESOLVER_VERSION,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const LOCAL_DEV_FAILURE_CLASSIFICATIONS: readonly ["invalid-input", "personal-identity-unavailable", "fleet-in-use", "fleet-ownership-ambiguous", "local-context-missing", "local-context-invalid", "local-context-conflict", "unknown-slice", "invalid-adapter", "slice-active-elsewhere", "slice-claim-ambiguous", "not-running", "invalid-state", "configuration-mismatch", "protocol-mismatch", "environment-deficient", "prerequisite-unavailable", "foundation-unavailable", "operation-conflict", "readiness-timeout", "cleanup-incomplete", "supervisor-unreachable", "stale-state", "stale-state-ambiguous", "log-query-invalid", "internal-error"];
|
|
1
|
+
export declare const LOCAL_DEV_FAILURE_CLASSIFICATIONS: readonly ["invalid-input", "personal-identity-unavailable", "fleet-in-use", "fleet-ownership-ambiguous", "local-context-missing", "local-context-invalid", "local-context-conflict", "unknown-slice", "invalid-adapter", "slice-active-elsewhere", "slice-claim-ambiguous", "not-running", "invalid-state", "configuration-mismatch", "protocol-mismatch", "environment-deficient", "prerequisite-unavailable", "foundation-unavailable", "operation-conflict", "readiness-timeout", "provisioning-timeout", "startup-interrupted", "cleanup-incomplete", "supervisor-unreachable", "stale-state", "stale-state-ambiguous", "log-query-invalid", "internal-error"];
|
|
2
2
|
export type LocalDevFailureClassification = (typeof LOCAL_DEV_FAILURE_CLASSIFICATIONS)[number];
|
|
3
3
|
export declare class LocalDevContractError extends Error {
|
|
4
4
|
readonly classification: LocalDevFailureClassification;
|
package/src/local-dev/errors.js
CHANGED
|
@@ -46,7 +46,7 @@ function validateOperation(value) {
|
|
|
46
46
|
? 'C:\\validation\\.git'
|
|
47
47
|
: '/validation/.git',
|
|
48
48
|
heartbeatAt: '1970-01-01T00:00:00.000Z',
|
|
49
|
-
identitySource: '
|
|
49
|
+
identitySource: 'worktree-task',
|
|
50
50
|
nxVersion: '23.1.0',
|
|
51
51
|
operations: [value],
|
|
52
52
|
origin: 'https://validation.ebk.localhost',
|
|
@@ -143,7 +143,7 @@ class FleetClient {
|
|
|
143
143
|
setTimeout(resolvePromise, pollMs);
|
|
144
144
|
});
|
|
145
145
|
}
|
|
146
|
-
throw new errors_js_1.LocalDevContractError('readiness-timeout', `Fleet operation ${operationId} did not finish within ${timeoutMs}ms.`);
|
|
146
|
+
throw new errors_js_1.LocalDevContractError('readiness-timeout', `Fleet operation ${operationId} did not finish within ${timeoutMs}ms. The supervised operation may still be running; check ebk dev status and ebk dev logs before retrying.`);
|
|
147
147
|
}
|
|
148
148
|
async shutdown(idempotencyKey = (0, node_crypto_1.randomUUID)()) {
|
|
149
149
|
await this.#request({
|
|
@@ -4,43 +4,75 @@ exports.fleetRouterSource = fleetRouterSource;
|
|
|
4
4
|
exports.fleetConfigurationFingerprint = fleetConfigurationFingerprint;
|
|
5
5
|
const contract_validation_js_1 = require("./contract-validation.js");
|
|
6
6
|
const deterministic_order_js_1 = require("../deterministic-order.js");
|
|
7
|
+
const create_task_graph_1 = require("nx/src/tasks-runner/create-task-graph");
|
|
8
|
+
const errors_js_1 = require("./errors.js");
|
|
7
9
|
function localTargetTopology(plan) {
|
|
10
|
+
if (plan.adapters.size === 0)
|
|
11
|
+
return [];
|
|
12
|
+
if (!plan.projectGraph) {
|
|
13
|
+
throw new errors_js_1.LocalDevContractError('prerequisite-unavailable', 'Fleet topology requires the complete inferred Nx project graph. Reload the workspace graph before starting development.');
|
|
14
|
+
}
|
|
15
|
+
// Nx normalizes dependsOn objects in place. Never mutate the shared graph.
|
|
16
|
+
const graph = structuredClone(plan.projectGraph);
|
|
17
|
+
const topologyError = (message) => {
|
|
18
|
+
throw new errors_js_1.LocalDevContractError('invalid-adapter', `Fleet Nx target topology is invalid: ${message}`);
|
|
19
|
+
};
|
|
8
20
|
return [...plan.adapters]
|
|
9
21
|
.sort(([left], [right]) => (0, deterministic_order_js_1.compareUtf16)(left, right))
|
|
10
22
|
.map(([name, adapter]) => {
|
|
11
|
-
const project =
|
|
12
|
-
|
|
23
|
+
const project = graph.nodes[name];
|
|
24
|
+
if (!project)
|
|
25
|
+
return topologyError(`Project ${name} is missing.`);
|
|
13
26
|
const selected = new Set([adapter.target]);
|
|
14
|
-
if (adapter.adapterVersion
|
|
27
|
+
if (adapter.adapterVersion !== 1 && adapter.lifecycle) {
|
|
15
28
|
selected.add(adapter.lifecycle.cleanupTarget);
|
|
16
29
|
}
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const target = targets[targetName];
|
|
21
|
-
for (const dependency of target?.dependsOn ?? []) {
|
|
22
|
-
const dependencyName = typeof dependency === 'string'
|
|
23
|
-
? dependency
|
|
24
|
-
: dependency &&
|
|
25
|
-
typeof dependency === 'object' &&
|
|
26
|
-
!Array.isArray(dependency) &&
|
|
27
|
-
typeof dependency.target ===
|
|
28
|
-
'string'
|
|
29
|
-
? (dependency.target ?? '')
|
|
30
|
-
: '';
|
|
31
|
-
if (dependencyName && !selected.has(dependencyName)) {
|
|
32
|
-
selected.add(dependencyName);
|
|
33
|
-
pending.push(dependencyName);
|
|
34
|
-
}
|
|
30
|
+
for (const target of selected) {
|
|
31
|
+
if (!project.data.targets?.[target]) {
|
|
32
|
+
return topologyError(`Selected target ${name}:${target} is missing.`);
|
|
35
33
|
}
|
|
36
34
|
}
|
|
35
|
+
let tasks;
|
|
36
|
+
try {
|
|
37
|
+
tasks = (0, create_task_graph_1.createTaskGraph)(graph, {}, [name], [...selected].sort(deterministic_order_js_1.compareUtf16), undefined, {});
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
return topologyError(error instanceof Error ? error.message : String(error));
|
|
41
|
+
}
|
|
37
42
|
return {
|
|
38
43
|
adapter,
|
|
39
44
|
name,
|
|
40
|
-
projectRoot: project
|
|
41
|
-
targets:
|
|
42
|
-
.sort()
|
|
43
|
-
.map((
|
|
45
|
+
projectRoot: project.data.root,
|
|
46
|
+
targets: Object.keys(tasks.tasks)
|
|
47
|
+
.sort(deterministic_order_js_1.compareUtf16)
|
|
48
|
+
.map((id) => {
|
|
49
|
+
const task = tasks.tasks[id];
|
|
50
|
+
const owner = graph.nodes[task.target.project];
|
|
51
|
+
const definition = plan.projectGraph?.nodes[task.target.project]?.data.targets?.[task.target.target];
|
|
52
|
+
if (!definition)
|
|
53
|
+
return topologyError(`Task ${id} is missing.`);
|
|
54
|
+
for (const edge of graph.dependencies[task.target.project] ?? []) {
|
|
55
|
+
if (!graph.nodes[edge.target] &&
|
|
56
|
+
!graph.externalNodes?.[edge.target]) {
|
|
57
|
+
return topologyError(`Project dependency ${edge.target} of ${id} is missing.`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Only stable task coordinates and declarations belong in identity;
|
|
61
|
+
// native task objects also contain execution-time data and undefined
|
|
62
|
+
// configuration values. Optional coordinates have an explicit null.
|
|
63
|
+
return {
|
|
64
|
+
configuration: task.target.configuration ?? null,
|
|
65
|
+
continuousDependencies: [
|
|
66
|
+
...(tasks.continuousDependencies?.[id] ?? []),
|
|
67
|
+
].sort(deterministic_order_js_1.compareUtf16),
|
|
68
|
+
definition,
|
|
69
|
+
dependencies: [...(tasks.dependencies[id] ?? [])].sort(deterministic_order_js_1.compareUtf16),
|
|
70
|
+
id,
|
|
71
|
+
project: task.target.project,
|
|
72
|
+
projectRoot: owner.data.root,
|
|
73
|
+
target: task.target.target,
|
|
74
|
+
};
|
|
75
|
+
}),
|
|
44
76
|
};
|
|
45
77
|
});
|
|
46
78
|
}
|
|
@@ -22,6 +22,14 @@ function inventoryError(message) {
|
|
|
22
22
|
function defaultPing(appData, security, fleetId) {
|
|
23
23
|
return new fleet_client_js_1.FleetClient((0, runtime_paths_js_1.fleetRuntimePaths)(fleetId, appData), security).ping();
|
|
24
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* An ambiguous entry is never pruned, but any actor may inspect it read-only.
|
|
27
|
+
* The message names where it lives and the owner's recovery; it never prints
|
|
28
|
+
* an absolute path, which would carry the local account name.
|
|
29
|
+
*/
|
|
30
|
+
function inspectReadOnly(subject, location) {
|
|
31
|
+
return `${subject}; ebk will not prune it. Inspect ${location} in the per-user EBK application-data directory read-only (any actor may). If it is yours and no ebk dev process for it is running, remove that one entry or restore current-user-only ownership, then rerun ebk dev ps; if another user owns it, leave it for them.`;
|
|
32
|
+
}
|
|
25
33
|
function record(fleetId, classification, nextAction, state) {
|
|
26
34
|
return {
|
|
27
35
|
...(state
|
|
@@ -51,7 +59,7 @@ async function inspectFleet(fleetId, options, effects, recoverRunnerCleanup = fa
|
|
|
51
59
|
}
|
|
52
60
|
catch {
|
|
53
61
|
return {
|
|
54
|
-
inventory: record(fleetId, 'ambiguous', '
|
|
62
|
+
inventory: record(fleetId, 'ambiguous', inspectReadOnly('Private Fleet state is malformed', `sessions/${fleetId}`)),
|
|
55
63
|
};
|
|
56
64
|
}
|
|
57
65
|
if (!state || state.fleetId !== fleetId) {
|
|
@@ -129,14 +137,14 @@ async function inspectFleet(fleetId, options, effects, recoverRunnerCleanup = fa
|
|
|
129
137
|
state,
|
|
130
138
|
};
|
|
131
139
|
}
|
|
132
|
-
for (const
|
|
140
|
+
for (const name of (0, fleet_state_js_1.fleetOwnedSliceNames)(state)) {
|
|
133
141
|
let claim;
|
|
134
142
|
try {
|
|
135
|
-
claim = (0, slice_claim_js_1.inspectSliceClaim)(paths.sliceClaimsDirectory,
|
|
143
|
+
claim = (0, slice_claim_js_1.inspectSliceClaim)(paths.sliceClaimsDirectory, name, security);
|
|
136
144
|
}
|
|
137
145
|
catch {
|
|
138
146
|
return {
|
|
139
|
-
inventory: record(fleetId, 'ambiguous', `Slice claim ${
|
|
147
|
+
inventory: record(fleetId, 'ambiguous', `Slice claim ${name} is malformed; do not prune.`, state),
|
|
140
148
|
state,
|
|
141
149
|
};
|
|
142
150
|
}
|
|
@@ -145,9 +153,11 @@ async function inspectFleet(fleetId, options, effects, recoverRunnerCleanup = fa
|
|
|
145
153
|
claim.sessionGeneration !== state.sessionGeneration ||
|
|
146
154
|
claim.owner.pid !== state.supervisor.pid ||
|
|
147
155
|
claim.owner.processIdentity !== state.supervisor.processIdentity ||
|
|
148
|
-
claim.owner.startedAt !== state.supervisor.startedAt
|
|
156
|
+
claim.owner.startedAt !== state.supervisor.startedAt ||
|
|
157
|
+
(!state.slices.some((slice) => slice.name === name && slice.selected) &&
|
|
158
|
+
!(0, fleet_state_js_1.fleetOwnsStartingSlice)(state, name, claim.acquiredAt))) {
|
|
149
159
|
return {
|
|
150
|
-
inventory: record(fleetId, 'ambiguous', `Slice claim ${
|
|
160
|
+
inventory: record(fleetId, 'ambiguous', `Slice claim ${name} does not prove exact generation ownership.`, state),
|
|
151
161
|
state,
|
|
152
162
|
};
|
|
153
163
|
}
|
|
@@ -195,7 +205,7 @@ async function inventoryFleets(options, effects = {}) {
|
|
|
195
205
|
results.push({
|
|
196
206
|
classification: 'ambiguous',
|
|
197
207
|
fleetId: entry.name.slice(0, 128),
|
|
198
|
-
nextAction: 'Unsupported session entry
|
|
208
|
+
nextAction: inspectReadOnly('Unsupported session entry', 'sessions/'),
|
|
199
209
|
selectedSlices: [],
|
|
200
210
|
});
|
|
201
211
|
continue;
|
|
@@ -217,9 +227,10 @@ function claimInventoryRecord(claim, classification, nextAction) {
|
|
|
217
227
|
slice: claim.slice,
|
|
218
228
|
};
|
|
219
229
|
}
|
|
220
|
-
function ambiguousClaimEntry(slice, message) {
|
|
230
|
+
function ambiguousClaimEntry(slice, message, fleetId) {
|
|
221
231
|
return {
|
|
222
232
|
classification: 'ambiguous',
|
|
233
|
+
...(fleetId ? { fleetId } : {}),
|
|
223
234
|
nextAction: message,
|
|
224
235
|
slice: slice.slice(0, 128),
|
|
225
236
|
};
|
|
@@ -256,7 +267,7 @@ async function inventorySliceClaims(options, effects = {}) {
|
|
|
256
267
|
}
|
|
257
268
|
catch {
|
|
258
269
|
return [
|
|
259
|
-
ambiguousClaimEntry('slice-claims', 'Slice-claim directory is not current-user private
|
|
270
|
+
ambiguousClaimEntry('slice-claims', inspectReadOnly('Slice-claim directory is not current-user private', 'slice-claims/')),
|
|
260
271
|
];
|
|
261
272
|
}
|
|
262
273
|
let entries;
|
|
@@ -265,7 +276,7 @@ async function inventorySliceClaims(options, effects = {}) {
|
|
|
265
276
|
}
|
|
266
277
|
catch {
|
|
267
278
|
return [
|
|
268
|
-
ambiguousClaimEntry('slice-claims', 'Slice-claim directory cannot be read safely
|
|
279
|
+
ambiguousClaimEntry('slice-claims', inspectReadOnly('Slice-claim directory cannot be read safely', 'slice-claims/')),
|
|
269
280
|
];
|
|
270
281
|
}
|
|
271
282
|
const inspectedFleets = new Map();
|
|
@@ -278,28 +289,54 @@ async function inventorySliceClaims(options, effects = {}) {
|
|
|
278
289
|
return inspected;
|
|
279
290
|
};
|
|
280
291
|
const results = [];
|
|
281
|
-
|
|
292
|
+
const claims = [];
|
|
293
|
+
for (const namespace of entries) {
|
|
294
|
+
if (!/^[a-z0-9][a-z0-9-]{0,62}$/.test(namespace.name) ||
|
|
295
|
+
!namespace.isDirectory() ||
|
|
296
|
+
namespace.isSymbolicLink()) {
|
|
297
|
+
results.push(ambiguousClaimEntry(namespace.name, inspectReadOnly('Unsupported Slice-claim namespace', 'slice-claims/'), /^[a-z0-9][a-z0-9-]{0,62}$/.test(namespace.name)
|
|
298
|
+
? namespace.name
|
|
299
|
+
: undefined));
|
|
300
|
+
continue;
|
|
301
|
+
}
|
|
302
|
+
const claimDirectory = (0, runtime_paths_js_1.fleetRuntimePaths)(namespace.name, options.appData).sliceClaimsDirectory;
|
|
303
|
+
try {
|
|
304
|
+
(0, private_state_js_1.assertPrivatePath)(claimDirectory, 'directory', security);
|
|
305
|
+
for (const entry of (0, node_fs_1.readdirSync)(claimDirectory, {
|
|
306
|
+
withFileTypes: true,
|
|
307
|
+
}).sort((left, right) => (0, deterministic_order_js_1.compareUtf16)(left.name, right.name)))
|
|
308
|
+
claims.push({
|
|
309
|
+
entry,
|
|
310
|
+
directory: claimDirectory,
|
|
311
|
+
fleetId: namespace.name,
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
catch {
|
|
315
|
+
results.push(ambiguousClaimEntry(namespace.name, inspectReadOnly('Slice-claim namespace cannot be read safely', 'slice-claims/'), namespace.name));
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
for (const { entry, directory: claimDirectory, fleetId } of claims) {
|
|
282
319
|
const match = SLICE_CLAIM_FILE_PATTERN.exec(entry.name);
|
|
283
320
|
if (!match || !entry.isFile() || entry.isSymbolicLink()) {
|
|
284
|
-
results.push(ambiguousClaimEntry(entry.name, 'Unsupported Slice-claim entry
|
|
321
|
+
results.push(ambiguousClaimEntry(entry.name, inspectReadOnly('Unsupported Slice-claim entry', 'slice-claims/'), fleetId));
|
|
285
322
|
continue;
|
|
286
323
|
}
|
|
287
324
|
const slice = match[1];
|
|
288
325
|
let claim;
|
|
289
326
|
try {
|
|
290
|
-
const inspected = (0, slice_claim_js_1.inspectSliceClaim)(
|
|
327
|
+
const inspected = (0, slice_claim_js_1.inspectSliceClaim)(claimDirectory, slice, security);
|
|
291
328
|
if (!inspected) {
|
|
292
|
-
results.push(ambiguousClaimEntry(slice, 'Slice claim changed during inventory; inspect
|
|
329
|
+
results.push(ambiguousClaimEntry(slice, 'Slice claim changed during inventory; ebk will not prune it. Rerun ebk dev ps; if the change persists, inspect slice-claims/ in the per-user EBK application-data directory read-only.', fleetId));
|
|
293
330
|
continue;
|
|
294
331
|
}
|
|
295
|
-
if (inspected.slice !== slice) {
|
|
296
|
-
results.push(ambiguousClaimEntry(slice, 'Slice-claim filename and record identity disagree
|
|
332
|
+
if (inspected.slice !== slice || inspected.fleetId !== fleetId) {
|
|
333
|
+
results.push(ambiguousClaimEntry(slice, inspectReadOnly('Slice-claim namespace, filename and record identity disagree', 'slice-claims/'), fleetId));
|
|
297
334
|
continue;
|
|
298
335
|
}
|
|
299
336
|
claim = inspected;
|
|
300
337
|
}
|
|
301
338
|
catch {
|
|
302
|
-
results.push(ambiguousClaimEntry(slice, 'Slice claim is malformed or not current-user private
|
|
339
|
+
results.push(ambiguousClaimEntry(slice, inspectReadOnly('Slice claim is malformed or not current-user private', 'slice-claims/'), fleetId));
|
|
303
340
|
continue;
|
|
304
341
|
}
|
|
305
342
|
const ownerPaths = (0, runtime_paths_js_1.fleetRuntimePaths)(claim.fleetId, options.appData);
|
|
@@ -326,8 +363,9 @@ async function inventorySliceClaims(options, effects = {}) {
|
|
|
326
363
|
claim.owner.pid !== state.supervisor.pid ||
|
|
327
364
|
claim.owner.processIdentity !== state.supervisor.processIdentity ||
|
|
328
365
|
claim.owner.startedAt !== state.supervisor.startedAt ||
|
|
329
|
-
!state.slices.some((candidate) => candidate.name === claim.slice && candidate.selected)
|
|
330
|
-
|
|
366
|
+
(!state.slices.some((candidate) => candidate.name === claim.slice && candidate.selected) &&
|
|
367
|
+
!(0, fleet_state_js_1.fleetOwnsStartingSlice)(state, claim.slice, claim.acquiredAt))) {
|
|
368
|
+
results.push(claimInventoryRecord(claim, 'ambiguous', 'Slice claim does not match selected or starting state owned by the exact Fleet generation; do not prune.'));
|
|
331
369
|
continue;
|
|
332
370
|
}
|
|
333
371
|
const processProof = inspected.inventory.classification === 'stale'
|
|
@@ -424,9 +462,7 @@ async function pruneStaleFleets(options, effects = {}) {
|
|
|
424
462
|
if (!lock || lock.sessionGeneration !== state.sessionGeneration) {
|
|
425
463
|
return inventoryError(`Fleet ${fleetId} changed during prune revalidation.`);
|
|
426
464
|
}
|
|
427
|
-
const selected = state
|
|
428
|
-
.filter(({ selected }) => selected)
|
|
429
|
-
.map(({ name }) => name);
|
|
465
|
+
const selected = (0, fleet_state_js_1.fleetOwnedSliceNames)(state);
|
|
430
466
|
const exactClaims = (await inventorySliceClaims(options, effects)).filter(({ fleetId: ownerFleetId }) => ownerFleetId === fleetId);
|
|
431
467
|
if (exactClaims.some(({ classification }) => classification !== 'stale') ||
|
|
432
468
|
selected.some((slice) => !exactClaims.some((claim) => claim.classification === 'stale' && claim.slice === slice))) {
|
|
@@ -25,4 +25,11 @@ export declare class FleetControlServer {
|
|
|
25
25
|
listen(): Promise<void>;
|
|
26
26
|
close(): Promise<void>;
|
|
27
27
|
}
|
|
28
|
+
/** Control request budget: the supervisor answers between synchronous
|
|
29
|
+
* identity captures, which are PowerShell queries on Windows (qualification
|
|
30
|
+
* run 34754338371 timed out at 5 s while the supervisor handled up). */
|
|
31
|
+
export declare const FLEET_CONTROL_REQUEST_TIMEOUT_MS: Readonly<{
|
|
32
|
+
default: 5000;
|
|
33
|
+
win32: 30000;
|
|
34
|
+
}>;
|
|
28
35
|
export declare function sendFleetControlRequest(path: string, request: FleetControlRequest, timeoutMs?: number): Promise<FleetControlResponse>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FleetControlServer = exports.FLEET_CONTROL_RESPONSE_MAX_BYTES = void 0;
|
|
3
|
+
exports.FLEET_CONTROL_REQUEST_TIMEOUT_MS = exports.FleetControlServer = exports.FLEET_CONTROL_RESPONSE_MAX_BYTES = void 0;
|
|
4
4
|
exports.validateFleetControlResponse = validateFleetControlResponse;
|
|
5
5
|
exports.sendFleetControlRequest = sendFleetControlRequest;
|
|
6
6
|
const node_fs_1 = require("node:fs");
|
|
@@ -219,7 +219,19 @@ class FleetControlServer {
|
|
|
219
219
|
}
|
|
220
220
|
}
|
|
221
221
|
exports.FleetControlServer = FleetControlServer;
|
|
222
|
-
|
|
222
|
+
/** Control request budget: the supervisor answers between synchronous
|
|
223
|
+
* identity captures, which are PowerShell queries on Windows (qualification
|
|
224
|
+
* run 34754338371 timed out at 5 s while the supervisor handled up). */
|
|
225
|
+
exports.FLEET_CONTROL_REQUEST_TIMEOUT_MS = Object.freeze({
|
|
226
|
+
default: 5_000,
|
|
227
|
+
win32: 30_000,
|
|
228
|
+
});
|
|
229
|
+
function controlRequestTimeout() {
|
|
230
|
+
return process.platform === 'win32'
|
|
231
|
+
? exports.FLEET_CONTROL_REQUEST_TIMEOUT_MS.win32
|
|
232
|
+
: exports.FLEET_CONTROL_REQUEST_TIMEOUT_MS.default;
|
|
233
|
+
}
|
|
234
|
+
async function sendFleetControlRequest(path, request, timeoutMs = controlRequestTimeout()) {
|
|
223
235
|
const payload = `${(0, contract_validation_js_1.canonicalJson)(request)}\n`;
|
|
224
236
|
if (Buffer.byteLength(payload) > control_contract_js_1.FLEET_CONTROL_REQUEST_MAX_BYTES) {
|
|
225
237
|
throw new errors_js_1.LocalDevContractError('invalid-input', 'Fleet control request exceeds its bounded size.');
|
|
@@ -50,4 +50,10 @@ export interface FleetLauncherDependencies {
|
|
|
50
50
|
export declare function resolveGitCommonDirectory(workspaceRoot: string): string;
|
|
51
51
|
export declare function prepareFleetLaunch(input: FleetLaunchInput, dependencies?: FleetLauncherDependencies): Promise<PreparedFleetLaunch>;
|
|
52
52
|
export declare function verifyAttachedState(prepared: PreparedFleetLaunch, client: Pick<FleetClient, 'status'>): Promise<void>;
|
|
53
|
+
/** Supervisor readiness budget: startup captures identities through
|
|
54
|
+
* PowerShell on Windows, several seconds each. */
|
|
55
|
+
export declare const SUPERVISOR_READINESS_TIMEOUT_MS: Readonly<{
|
|
56
|
+
default: 15000;
|
|
57
|
+
win32: 60000;
|
|
58
|
+
}>;
|
|
53
59
|
export declare function launchOrAttachFleet(input: FleetLaunchInput, dependencies?: FleetLauncherDependencies): Promise<FleetLaunchResult>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SUPERVISOR_READINESS_TIMEOUT_MS = void 0;
|
|
3
4
|
exports.resolveGitCommonDirectory = resolveGitCommonDirectory;
|
|
4
5
|
exports.prepareFleetLaunch = prepareFleetLaunch;
|
|
5
6
|
exports.verifyAttachedState = verifyAttachedState;
|
|
@@ -57,7 +58,7 @@ function workspaceName(plan) {
|
|
|
57
58
|
}
|
|
58
59
|
async function prepareFleetLaunch(input, dependencies = {}) {
|
|
59
60
|
const workspaceRealpath = (0, node_fs_1.realpathSync)(input.workspaceRoot);
|
|
60
|
-
const identity = (dependencies.personalStageResolver ?? (0, personal_stage_js_1.createPersonalStageResolver)()).resolve();
|
|
61
|
+
const identity = (dependencies.personalStageResolver ?? (0, personal_stage_js_1.createPersonalStageResolver)()).resolve(workspaceRealpath);
|
|
61
62
|
const plan = await (dependencies.loadPlan ?? nx_workspace_js_1.loadWorkspaceFleetPlan)();
|
|
62
63
|
const name = workspaceName(plan);
|
|
63
64
|
const fleetId = (0, identity_js_1.createFleetId)({
|
|
@@ -126,7 +127,18 @@ function verifyAttachedState(prepared, client) {
|
|
|
126
127
|
}
|
|
127
128
|
});
|
|
128
129
|
}
|
|
129
|
-
|
|
130
|
+
/** Supervisor readiness budget: startup captures identities through
|
|
131
|
+
* PowerShell on Windows, several seconds each. */
|
|
132
|
+
exports.SUPERVISOR_READINESS_TIMEOUT_MS = Object.freeze({
|
|
133
|
+
default: 15_000,
|
|
134
|
+
win32: 60_000,
|
|
135
|
+
});
|
|
136
|
+
function supervisorReadinessTimeout() {
|
|
137
|
+
return process.platform === 'win32'
|
|
138
|
+
? exports.SUPERVISOR_READINESS_TIMEOUT_MS.win32
|
|
139
|
+
: exports.SUPERVISOR_READINESS_TIMEOUT_MS.default;
|
|
140
|
+
}
|
|
141
|
+
async function waitForSupervisor(prepared, child, security, timeoutMs = supervisorReadinessTimeout()) {
|
|
130
142
|
const deadline = Date.now() + timeoutMs;
|
|
131
143
|
let lastError;
|
|
132
144
|
let exited;
|
|
@@ -218,7 +230,7 @@ function recoverStartupOnlyRequest(prepared, processProbe, security) {
|
|
|
218
230
|
startup = (0, fleet_startup_js_1.readFleetStartupRequest)(prepared.paths.startup, security);
|
|
219
231
|
}
|
|
220
232
|
catch {
|
|
221
|
-
return launchError('stale-state-ambiguous',
|
|
233
|
+
return launchError('stale-state-ambiguous', `Residual Fleet startup authority is malformed; ebk will not replace it. Inspect sessions/${prepared.request.fleetId} in the per-user EBK application-data directory read-only (any actor may). If it is yours and no ebk dev process for it is running, remove that startup file, then rerun the command.`);
|
|
222
234
|
}
|
|
223
235
|
if (startup.fleetId !== prepared.request.fleetId ||
|
|
224
236
|
startup.appData !== prepared.request.appData ||
|
|
@@ -258,7 +270,7 @@ function recoverStartupOnlyRequest(prepared, processProbe, security) {
|
|
|
258
270
|
sessionGeneration: startup.sessionGeneration,
|
|
259
271
|
}).slice(0, 16)}.recover`;
|
|
260
272
|
if ((0, node_fs_1.existsSync)(recoveryPath)) {
|
|
261
|
-
return launchError('stale-state-ambiguous',
|
|
273
|
+
return launchError('stale-state-ambiguous', `Residual Fleet startup has a prior recovery artifact; ebk will not replace it. Inspect the .recover file in sessions/${prepared.request.fleetId} of the per-user EBK application-data directory read-only (any actor may). If it is yours and no ebk dev process for it is running, remove that artifact, then rerun the command.`);
|
|
262
274
|
}
|
|
263
275
|
try {
|
|
264
276
|
(0, node_fs_1.renameSync)(prepared.paths.startup, recoveryPath);
|