@empire-builder-kit/nx 1.0.0-rc.4 → 1.0.0-rc.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -0
- package/executors.json +21 -1
- package/generators.json +10 -0
- package/package.json +31 -7
- package/src/aws/child-environment.d.ts +10 -0
- package/src/aws/child-environment.js +77 -0
- package/src/aws/identity.d.ts +13 -0
- package/src/aws/identity.js +41 -0
- package/src/aws-authority/index.d.ts +2 -0
- package/src/aws-authority/index.js +6 -0
- package/src/aws-authority/lambda-policy-ordering.d.ts +38 -0
- package/src/aws-authority/lambda-policy-ordering.js +56 -0
- package/src/aws-authority/stage-authority.d.ts +248 -0
- package/src/aws-authority/stage-authority.js +3558 -0
- package/src/blueprints/external-sandbox.js +21 -9
- package/src/blueprints/manifest.d.ts +1 -1
- package/src/blueprints/resolver.js +28 -15
- package/src/cli/bootstrap.d.ts +1 -1
- package/src/cli/deploy-runtime.d.ts +6 -0
- package/src/cli/deploy-runtime.js +58 -0
- package/src/cli/dev-command.d.ts +16 -4
- package/src/cli/dev-command.js +63 -0
- package/src/cli/main.d.ts +9 -1
- package/src/cli/main.js +139 -20
- package/src/cli/output.d.ts +1 -1
- package/src/cli/output.js +1 -1
- package/src/developer-agent/context.js +41 -9
- package/src/developer-agent/generator-planning.js +20 -6
- package/src/developer-agent/git-inspection.d.ts +6 -2
- package/src/developer-agent/git-inspection.js +78 -6
- package/src/developer-agent/model.d.ts +5 -3
- package/src/developer-agent/model.js +4 -4
- package/src/developer-agent/operation-registry.d.ts +5 -0
- package/src/developer-agent/operation-registry.js +286 -40
- package/src/developer-agent/planning.js +16 -13
- package/src/developer-agent/preview-changes.d.ts +2 -0
- package/src/developer-agent/preview-changes.js +14 -2
- package/src/developer-agent/preview-source.js +3 -0
- package/src/developer-agent/validation.js +25 -9
- package/src/developer-agent/workspace-inspection.js +60 -5
- package/src/executors/blueprint-trust/blueprint-trust.js +6 -0
- package/src/executors/deployment-plan/deployment-plan.d.ts +2 -0
- package/src/executors/deployment-plan/deployment-plan.js +57 -2
- package/src/executors/dev-doctor/dev-doctor.js +13 -6
- package/src/executors/dev-task-cleanup/dev-task-cleanup.d.ts +23 -0
- package/src/executors/dev-task-cleanup/dev-task-cleanup.js +145 -0
- package/src/executors/dev-task-cleanup/schema.json +9 -0
- package/src/executors/dev-task-cleanup/task-stack-absence.d.ts +27 -0
- package/src/executors/dev-task-cleanup/task-stack-absence.js +281 -0
- package/src/executors/dev-task-cleanup/task-stack-checkpoint.d.ts +12 -0
- package/src/executors/dev-task-cleanup/task-stack-checkpoint.js +92 -0
- package/src/executors/fleet/fleet.js +1 -1
- package/src/executors/foundation-preflight/foundation-preflight.d.ts +1 -0
- package/src/executors/foundation-preflight/foundation-preflight.js +6 -2
- package/src/executors/foundation-preflight/schema.json +5 -0
- package/src/executors/foundation-profile-preflight/foundation-profile-preflight.d.ts +13 -2
- package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js +95 -31
- package/src/executors/foundation-profile-preflight/production-database-safeguard.d.ts +65 -0
- package/src/executors/foundation-profile-preflight/production-database-safeguard.js +223 -0
- package/src/executors/foundation-profile-preflight/schema.json +15 -4
- package/src/executors/foundation-remove-preflight/foundation-remove-preflight.d.ts +11 -1
- package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js +70 -20
- package/src/executors/foundation-remove-preflight/schema.json +6 -1
- package/src/executors/github-bootstrap/github-bootstrap.d.ts +1 -0
- package/src/executors/github-bootstrap/github-bootstrap.js +3 -0
- package/src/executors/github-bootstrap/schema.json +7 -1
- package/src/executors/infrastructure-plan/infrastructure-plan.d.ts +29 -136
- package/src/executors/infrastructure-plan/infrastructure-plan.js +230 -3282
- package/src/executors/infrastructure-plan/schema.json +12 -52
- package/src/executors/local-deploy/federated-credential-transport.d.ts +48 -0
- package/src/executors/local-deploy/federated-credential-transport.js +252 -0
- package/src/executors/local-deploy/local-approval.d.ts +18 -0
- package/src/executors/local-deploy/local-approval.js +39 -0
- package/src/executors/local-deploy/local-deploy.d.ts +112 -0
- package/src/executors/local-deploy/local-deploy.js +1404 -0
- package/src/executors/local-deploy/schema.json +70 -0
- package/src/executors/refresh/refresh.js +2 -2
- package/src/executors/remove/remove.js +2 -2
- package/src/executors/router-waf-rehearsal/router-waf-rehearsal.d.ts +42 -0
- package/src/executors/router-waf-rehearsal/router-waf-rehearsal.js +1229 -0
- package/src/executors/router-waf-rehearsal/schema.json +29 -0
- package/src/executors/secret-initialize/schema.json +42 -0
- package/src/executors/secret-initialize/secret-initialize.d.ts +34 -0
- package/src/executors/secret-initialize/secret-initialize.js +297 -0
- package/src/executors/secret-metadata/schema.json +5 -0
- package/src/executors/secret-metadata/secret-metadata.d.ts +16 -2
- package/src/executors/secret-metadata/secret-metadata.js +129 -30
- package/src/executors/sst-lifecycle/generated-secret-retirement.d.ts +53 -0
- package/src/executors/sst-lifecycle/generated-secret-retirement.js +192 -0
- package/src/executors/sst-lifecycle/governed-native-operation.d.ts +48 -0
- package/src/executors/sst-lifecycle/governed-native-operation.js +162 -0
- package/src/executors/sst-lifecycle/logging-preflight.d.ts +5 -0
- package/src/executors/sst-lifecycle/logging-preflight.js +23 -13
- package/src/executors/sst-lifecycle/run-sst-command.d.ts +40 -6
- package/src/executors/sst-lifecycle/run-sst-command.js +779 -70
- package/src/executors/sst-lifecycle/schema.json +8 -1
- package/src/executors/sst-lifecycle/secret-preflight.d.ts +2 -0
- package/src/executors/sst-lifecycle/secret-preflight.js +13 -7
- package/src/executors/sst-lifecycle/sst-environment-source.d.ts +33 -0
- package/src/executors/sst-lifecycle/sst-environment-source.js +267 -0
- package/src/executors/sst-lifecycle/task-unlock.d.ts +15 -0
- package/src/executors/sst-lifecycle/task-unlock.js +126 -0
- package/src/executors/unlock/unlock.js +2 -2
- package/src/foundation/capability-plan.d.ts +43 -0
- package/src/foundation/capability-plan.js +168 -0
- package/src/foundation/discovery.d.ts +14 -11
- package/src/foundation/discovery.js +32 -6
- package/src/foundation/index.d.ts +4 -0
- package/src/foundation/index.js +11 -0
- package/src/foundation/local-database-contract.d.ts +20 -0
- package/src/foundation/local-database-contract.js +262 -13
- package/src/foundation/local-private-smoke-access.d.ts +20 -0
- package/src/foundation/local-private-smoke-access.js +197 -0
- package/src/foundation/logging-preflight.js +1 -1
- package/src/foundation/logging.d.ts +3 -1
- package/src/foundation/logging.js +1 -1
- package/src/foundation/partial-state.d.ts +10 -0
- package/src/foundation/partial-state.js +21 -0
- package/src/foundation/preflight.js +37 -18
- package/src/foundation/private-smoke-access.d.ts +25 -0
- package/src/foundation/private-smoke-access.js +135 -0
- package/src/foundation/private-smoke-admission.d.ts +45 -0
- package/src/foundation/private-smoke-admission.js +180 -0
- package/src/foundation/private-smoke-control-plane.d.ts +18 -0
- package/src/foundation/private-smoke-control-plane.js +184 -0
- package/src/foundation/provision-database-bindings.d.ts +5 -0
- package/src/foundation/provision-database-bindings.js +41 -8
- package/src/foundation/provision-logical-database.js +15 -8
- package/src/foundation/requirements.d.ts +3 -3
- package/src/foundation/requirements.js +24 -12
- package/src/foundation/router-waf-rate-rehearsal.d.ts +97 -0
- package/src/foundation/router-waf-rate-rehearsal.js +210 -0
- package/src/foundation/router-waf.d.ts +149 -0
- package/src/foundation/router-waf.js +809 -0
- package/src/foundation/stages.d.ts +1 -0
- package/src/foundation/stages.js +11 -0
- package/src/generators/blueprint/blueprint.d.ts +5 -0
- package/src/generators/blueprint/blueprint.js +102 -0
- package/src/generators/blueprint/files.d.ts +6 -0
- package/src/generators/blueprint/files.js +217 -0
- package/src/generators/blueprint/schema.d.ts +4 -0
- package/src/generators/blueprint/schema.json +18 -0
- package/src/generators/formatting.d.ts +8 -0
- package/src/generators/formatting.js +141 -0
- package/src/generators/function/function.js +38 -17
- package/src/generators/logging-registry.d.ts +2 -0
- package/src/generators/logging-registry.js +22 -0
- package/src/generators/post-generation-install.js +2 -2
- package/src/generators/preset/dependency-overrides.d.ts +8 -0
- package/src/generators/preset/dependency-overrides.js +55 -0
- package/src/generators/preset/generator.js +43 -3
- package/src/generators/preset/schema.d.ts +10 -0
- package/src/generators/preset/schema.json +47 -0
- package/src/generators/preset/tool-versions.d.ts +2 -0
- package/src/generators/preset/tool-versions.js +3 -1
- package/src/generators/preset/workspace-files-adopter-skills.d.ts +7 -0
- package/src/generators/preset/workspace-files-adopter-skills.js +303 -0
- package/src/generators/preset/workspace-files-ci-acceptance.d.ts +1 -0
- package/src/generators/preset/workspace-files-ci-acceptance.js +791 -0
- package/src/generators/preset/workspace-files-ci-install.d.ts +2 -0
- package/src/generators/preset/workspace-files-ci-install.js +196 -0
- package/src/generators/preset/workspace-files-developer-agent.d.ts +2 -0
- package/src/generators/preset/workspace-files-developer-agent.js +90 -28
- package/src/generators/preset/workspace-files-ecr-inspector.d.ts +18 -0
- package/src/generators/preset/workspace-files-ecr-inspector.js +298 -0
- package/src/generators/preset/workspace-files-foundation-workload-roles.js +5 -2
- package/src/generators/preset/workspace-files-performance-cost.d.ts +2 -2
- package/src/generators/preset/workspace-files-performance-cost.js +8 -8
- package/src/generators/preset/workspace-files-performance-load.d.ts +1 -1
- package/src/generators/preset/workspace-files-performance-load.js +39 -25
- package/src/generators/preset/workspace-files-stage-authority.d.ts +6 -0
- package/src/generators/preset/workspace-files-stage-authority.js +518 -0
- package/src/generators/preset/workspace-files-thin-deploy.d.ts +55 -0
- package/src/generators/preset/workspace-files-thin-deploy.js +2473 -0
- package/src/generators/preset/workspace-files-thin-docs.d.ts +7 -0
- package/src/generators/preset/workspace-files-thin-docs.js +352 -0
- package/src/generators/preset/workspace-files-thin-release.d.ts +14 -0
- package/src/generators/preset/workspace-files-thin-release.js +26 -0
- package/src/generators/preset/workspace-files-workload-role-baseline.js +254 -42
- package/src/generators/preset/workspace-files.d.ts +18 -2
- package/src/generators/preset/workspace-files.js +1504 -608
- package/src/generators/repository-policy/repository-policy.js +235 -5
- package/src/generators/repository-policy/schema.d.ts +10 -0
- package/src/generators/repository-policy/schema.json +80 -4
- package/src/generators/repository-policy/tree-policy.d.ts +3 -0
- package/src/generators/repository-policy/tree-policy.js +25 -0
- package/src/generators/slice/built-in-plan-api-contract-files.js +42 -7
- package/src/generators/slice/built-in-plan-api-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-api-files.js +130 -414
- package/src/generators/slice/built-in-plan-async-work-files.js +166 -1969
- package/src/generators/slice/built-in-plan-authorization-files.js +92 -329
- package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js +60 -2
- package/src/generators/slice/built-in-plan-authorization-storage.d.ts +3 -0
- package/src/generators/slice/built-in-plan-authorization-storage.js +119 -0
- package/src/generators/slice/built-in-plan-background-work-files.d.ts +2 -0
- package/src/generators/slice/built-in-plan-background-work-files.js +99 -0
- package/src/generators/slice/built-in-plan-data-deletion-files.js +2 -830
- package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js +5 -31
- package/src/generators/slice/built-in-plan-data-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-data-files.js +163 -1196
- package/src/generators/slice/built-in-plan-data-lifecycle-files.js +53 -28
- package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js +37 -2
- package/src/generators/slice/built-in-plan-data-retention-job-files.js +7 -2443
- package/src/generators/slice/built-in-plan-data-retention-launcher-files.js +50 -8
- package/src/generators/slice/built-in-plan-data-rights-files.js +6 -4482
- package/src/generators/slice/built-in-plan-database-lifecycle-files.js +44 -25
- package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js +20 -1
- package/src/generators/slice/built-in-plan-foundation-files.d.ts +2 -1
- package/src/generators/slice/built-in-plan-foundation-files.js +39 -18
- package/src/generators/slice/built-in-plan-frontend-files.js +7 -3
- package/src/generators/slice/built-in-plan-infrastructure-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-infrastructure-files.js +933 -729
- package/src/generators/slice/built-in-plan-infrastructure-safety-files.js +67 -11
- package/src/generators/slice/built-in-plan-key-value-cleanup.d.ts +4 -0
- package/src/generators/slice/built-in-plan-key-value-cleanup.js +100 -0
- package/src/generators/slice/built-in-plan-key-value-consumer.d.ts +4 -0
- package/src/generators/slice/built-in-plan-key-value-consumer.js +151 -0
- package/src/generators/slice/built-in-plan-key-value-deletion.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-deletion.js +377 -0
- package/src/generators/slice/built-in-plan-key-value-delivery.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-delivery.js +137 -0
- package/src/generators/slice/built-in-plan-key-value-export.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-export.js +595 -0
- package/src/generators/slice/built-in-plan-key-value-files.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-files.js +31 -0
- package/src/generators/slice/built-in-plan-key-value-holds.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-holds.js +189 -0
- package/src/generators/slice/built-in-plan-key-value-infrastructure.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-infrastructure.js +102 -0
- package/src/generators/slice/built-in-plan-key-value-performance.d.ts +5 -0
- package/src/generators/slice/built-in-plan-key-value-performance.js +530 -0
- package/src/generators/slice/built-in-plan-key-value-provider.d.ts +4 -0
- package/src/generators/slice/built-in-plan-key-value-provider.js +366 -0
- package/src/generators/slice/built-in-plan-key-value-records.d.ts +3 -0
- package/src/generators/slice/built-in-plan-key-value-records.js +232 -0
- package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.js +103 -0
- package/src/generators/slice/built-in-plan-key-value-retention-job-files.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-retention-job-files.js +160 -0
- package/src/generators/slice/built-in-plan-key-value-retention-maintenance.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-retention-maintenance.js +329 -0
- package/src/generators/slice/built-in-plan-key-value-retention-worker.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-retention-worker.js +477 -0
- package/src/generators/slice/built-in-plan-key-value-retention.d.ts +2 -0
- package/src/generators/slice/built-in-plan-key-value-retention.js +184 -0
- package/src/generators/slice/built-in-plan-metadata-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-metadata-files.js +157 -28
- package/src/generators/slice/built-in-plan-native-runtime-authority-files.d.ts +2 -0
- package/src/generators/slice/built-in-plan-native-runtime-authority-files.js +324 -0
- package/src/generators/slice/built-in-plan-operations-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-operations-files.js +585 -97
- package/src/generators/slice/built-in-plan-performance-files.d.ts +2 -1
- package/src/generators/slice/built-in-plan-performance-files.js +220 -1074
- package/src/generators/slice/built-in-plan-project-files.js +141 -135
- package/src/generators/slice/built-in-plan-release-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-release-files.js +310 -70
- package/src/generators/slice/built-in-plan-reliability-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-reliability-files.js +279 -43
- package/src/generators/slice/built-in-plan-secret-runtime-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-secret-runtime-files.js +87 -76
- package/src/generators/slice/built-in-plan-shared.d.ts +4 -2
- package/src/generators/slice/built-in-plan-shared.js +41 -19
- package/src/generators/slice/built-in-plan-sql-events.d.ts +2 -0
- package/src/generators/slice/built-in-plan-sql-events.js +276 -0
- package/src/generators/slice/built-in-plan-testing-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-testing-files.js +304 -172
- package/src/generators/slice/built-in-plan-testing-persistence-files.d.ts +2 -0
- package/src/generators/slice/built-in-plan-testing-persistence-files.js +178 -0
- package/src/generators/slice/built-in-plan-thin-release-files.d.ts +11 -0
- package/src/generators/slice/built-in-plan-thin-release-files.js +162 -0
- package/src/generators/slice/built-in-plan-verification-files.js +76 -2
- package/src/generators/slice/built-in-plan-web-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-web-files.js +223 -16
- package/src/generators/slice/built-in-plan-workload-role-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-workload-role-files.js +143 -279
- package/src/generators/slice/built-in-plan.d.ts +11 -1
- package/src/generators/slice/built-in-plan.js +80 -29
- package/src/generators/slice/data-policy-review-seed.d.ts +2 -0
- package/src/generators/slice/data-policy-review-seed.js +22 -0
- package/src/generators/slice/deployed-smoke-readiness.d.ts +2 -0
- package/src/generators/slice/deployed-smoke-readiness.js +214 -0
- package/src/generators/slice/local-source-identity.d.ts +2 -0
- package/src/generators/slice/local-source-identity.js +31 -0
- package/src/generators/slice/persistence-contract.d.ts +14 -0
- package/src/generators/slice/persistence-contract.js +32 -0
- package/src/generators/slice/slice.js +61 -50
- package/src/generators/sql/schema.d.ts +7 -0
- package/src/generators/sql/schema.json +38 -0
- package/src/generators/sql/sql.d.ts +6 -0
- package/src/generators/sql/sql.js +53 -0
- package/src/generators/upgrade/sql-seeded-reconciliation.d.ts +2 -0
- package/src/generators/upgrade/sql-seeded-reconciliation.js +170 -0
- package/src/generators/upgrade/upgrade.d.ts +15 -1
- package/src/generators/upgrade/upgrade.js +435 -44
- package/src/generators/workload/performance-registration.d.ts +1 -0
- package/src/generators/workload/performance-registration.js +9 -11
- package/src/generators/workload/service-performance-files.d.ts +1 -0
- package/src/generators/workload/service-performance-files.js +27 -7
- package/src/generators/workload/workload.d.ts +1 -1
- package/src/generators/workload/workload.js +105 -29
- package/src/git-policy/action-pins.d.ts +5 -0
- package/src/git-policy/action-pins.js +5 -0
- package/src/git-policy/github-bootstrap.d.ts +39 -8
- package/src/git-policy/github-bootstrap.js +329 -175
- package/src/git-policy/routing.d.ts +7 -1
- package/src/git-policy/routing.js +62 -1
- package/src/index.d.ts +1 -0
- package/src/index.js +1 -0
- package/src/infrastructure-change/local-capability.d.ts +73 -0
- package/src/infrastructure-change/local-capability.js +114 -0
- package/src/infrastructure-change/model.d.ts +25 -4
- package/src/infrastructure-change/model.js +1 -0
- package/src/infrastructure-change/normalize.d.ts +4 -0
- package/src/infrastructure-change/normalize.js +47 -7
- package/src/infrastructure-change/plan.d.ts +30 -3
- package/src/infrastructure-change/plan.js +323 -13
- package/src/infrastructure-change/risk.d.ts +3 -1
- package/src/infrastructure-change/risk.js +96 -16
- package/src/local-dev/browser-verification.d.ts +37 -0
- package/src/local-dev/browser-verification.js +281 -0
- package/src/local-dev/contracts.d.ts +10 -1
- package/src/local-dev/contracts.js +114 -13
- package/src/local-dev/dev-command-core.js +24 -5
- package/src/local-dev/docker-credential-health.d.ts +14 -0
- package/src/local-dev/docker-credential-health.js +94 -0
- package/src/local-dev/environment-inspector.d.ts +7 -0
- package/src/local-dev/environment-inspector.js +42 -15
- package/src/local-dev/environment-state.js +2 -2
- package/src/local-dev/errors.d.ts +1 -1
- package/src/local-dev/errors.js +2 -0
- package/src/local-dev/fleet-client.js +2 -2
- package/src/local-dev/fleet-configuration.js +57 -25
- package/src/local-dev/fleet-inventory.js +46 -18
- package/src/local-dev/fleet-ipc.d.ts +7 -0
- package/src/local-dev/fleet-ipc.js +14 -2
- package/src/local-dev/fleet-launcher.d.ts +6 -0
- package/src/local-dev/fleet-launcher.js +14 -2
- package/src/local-dev/fleet-logs.js +50 -22
- package/src/local-dev/fleet-process.d.ts +20 -1
- package/src/local-dev/fleet-process.js +197 -41
- package/src/local-dev/fleet-runner-evidence.d.ts +5 -0
- package/src/local-dev/fleet-runner-evidence.js +56 -0
- package/src/local-dev/fleet-runtime.js +268 -229
- package/src/local-dev/fleet-session.d.ts +2 -0
- package/src/local-dev/fleet-session.js +28 -11
- package/src/local-dev/fleet-slice-runner-daemon.js +4 -0
- package/src/local-dev/fleet-state.d.ts +5 -2
- package/src/local-dev/fleet-state.js +25 -4
- package/src/local-dev/fleet-supervisor.d.ts +3 -0
- package/src/local-dev/fleet-supervisor.js +66 -11
- package/src/local-dev/fleet-web-start.d.ts +12 -0
- package/src/local-dev/fleet-web-start.js +48 -0
- package/src/local-dev/identity.js +3 -14
- package/src/local-dev/index.d.ts +1 -0
- package/src/local-dev/index.js +1 -0
- package/src/local-dev/native-completion.d.ts +9 -0
- package/src/local-dev/native-completion.js +130 -0
- package/src/local-dev/nx-workspace.d.ts +4 -2
- package/src/local-dev/nx-workspace.js +11 -6
- package/src/local-dev/personal-stage.d.ts +4 -5
- package/src/local-dev/personal-stage.js +6 -54
- package/src/local-dev/port-claims.d.ts +13 -0
- package/src/local-dev/port-claims.js +46 -0
- package/src/local-dev/ports.d.ts +14 -2
- package/src/local-dev/ports.js +78 -3
- package/src/local-dev/private-state.d.ts +11 -0
- package/src/local-dev/private-state.js +146 -40
- package/src/local-dev/process-group.d.ts +4 -0
- package/src/local-dev/process-group.js +29 -0
- package/src/local-dev/process-identity.d.ts +8 -0
- package/src/local-dev/process-identity.js +31 -1
- package/src/local-dev/proxy.js +11 -12
- package/src/local-dev/runtime-paths.js +1 -1
- package/src/local-dev/slice-claim.js +1 -1
- package/src/local-dev/slice-runner.d.ts +15 -6
- package/src/local-dev/slice-runner.js +189 -54
- package/src/local-dev/task-attachment.d.ts +17 -0
- package/src/local-dev/task-attachment.js +73 -0
- package/src/local-dev/task-authority.d.ts +10 -0
- package/src/local-dev/task-authority.js +27 -0
- package/src/local-dev/task-identity.d.ts +33 -0
- package/src/local-dev/task-identity.js +418 -0
- package/src/local-dev/task-native-writer.d.ts +18 -0
- package/src/local-dev/task-native-writer.js +329 -0
- package/src/local-dev/tls.js +8 -2
- package/src/local-dev/web-launch.d.ts +9 -0
- package/src/local-dev/web-launch.js +130 -0
- package/src/ownership/composition.d.ts +2 -1
- package/src/ownership/composition.js +1 -0
- package/src/performance/cost-collection.d.ts +1 -1
- package/src/performance/cost-collection.js +4 -2
- package/src/performance/cost-controls.d.ts +8 -4
- package/src/performance/cost-controls.js +39 -28
- package/src/performance/evidence.d.ts +1 -1
- package/src/performance/evidence.js +5 -3
- package/src/performance/load-safety.js +5 -3
- package/src/performance/model.d.ts +4 -4
- package/src/performance/model.js +4 -5
- package/src/performance/scenario.d.ts +22 -0
- package/src/performance/scenario.js +100 -92
- package/src/release/index.d.ts +0 -2
- package/src/release/index.js +0 -2
- package/src/release/source-authority.d.ts +5 -5
- package/src/release/source-authority.js +141 -124
- package/src/repository-policy/aurora-preflight.d.ts +1 -1
- package/src/repository-policy/aurora-preflight.js +4 -1
- package/src/repository-policy/capacity-migration.d.ts +3 -0
- package/src/repository-policy/capacity-migration.js +21 -0
- package/src/repository-policy/deployment-plan.d.ts +4 -1
- package/src/repository-policy/deployment-plan.js +9 -0
- package/src/repository-policy/foundation-profile.js +10 -1
- package/src/repository-policy/policy.d.ts +57 -3
- package/src/repository-policy/policy.js +497 -11
- package/src/schemas/blueprint-v1.json +5 -4
- package/src/schemas/foundation-requirement-v1.json +5 -4
- package/src/schemas/performance-policy-v1.json +3 -3
- package/src/schemas/repository-policy-v1.json +130 -6
- package/src/schemas/testing-evidence-result-v1.json +1 -1
- package/src/secrets/adapters.d.ts +7 -2
- package/src/secrets/adapters.js +34 -3
- package/src/secrets/aws-control-plane.d.ts +10 -1
- package/src/secrets/aws-control-plane.js +67 -0
- package/src/secrets/generated-aws-control-plane.d.ts +23 -0
- package/src/secrets/generated-aws-control-plane.js +259 -0
- package/src/secrets/metadata.js +38 -10
- package/src/secrets/model.d.ts +8 -1
- package/src/secrets/model.js +24 -3
- package/src/secrets/operator.d.ts +91 -3
- package/src/secrets/operator.js +463 -13
- package/src/secrets/registry.d.ts +2 -1
- package/src/secrets/registry.js +18 -1
- package/src/secrets/verification.js +9 -1
- package/src/secrets/workload-access.js +10 -2
- package/src/sst-environment-source-format.d.ts +6 -0
- package/src/sst-environment-source-format.js +199 -0
- package/src/supply-chain/action-pins.js +61 -7
- package/src/supply-chain/blueprint-trust-git.js +85 -24
- package/src/supply-chain/blueprint-verification-authority.js +55 -3
- package/src/supply-chain/build-output-bounds.d.ts +2 -0
- package/src/supply-chain/build-output-bounds.js +12 -0
- package/src/supply-chain/build-output.d.ts +7 -1
- package/src/supply-chain/build-output.js +177 -24
- package/src/supply-chain/ecr-scanning.d.ts +5 -3
- package/src/supply-chain/ecr-scanning.js +11 -7
- package/src/supply-chain/ecs-deployed-image.d.ts +5 -3
- package/src/supply-chain/ecs-deployed-image.js +6 -4
- package/src/supply-chain/generated-blueprint-trust-command.js +18 -1
- package/src/supply-chain/generated-command.js +1 -0
- package/src/supply-chain/generated-container-release-command.js +1285 -124
- package/src/supply-chain/generated-ecr-collector-command.d.ts +0 -1
- package/src/supply-chain/generated-ecr-collector-command.js +200 -93
- package/src/supply-chain/generated-files.js +25 -14
- package/src/supply-chain/generated-scanner-command.js +2 -1
- package/src/supply-chain/index.d.ts +1 -1
- package/src/supply-chain/index.js +2 -1
- package/src/supply-chain/sbom.d.ts +1 -1
- package/src/supply-chain/sbom.js +30 -5
- package/src/supply-chain/scanner.js +3 -0
- package/src/testing-evidence/fixture-scope.d.ts +2 -1
- package/src/testing-evidence/fixture-scope.js +4 -2
- package/src/testing-evidence/result.d.ts +2 -1
- package/src/testing-evidence/result.js +18 -4
- package/src/workload-roles/account-baseline.d.ts +11 -0
- package/src/workload-roles/account-baseline.js +253 -16
- package/src/workload-roles/authority.d.ts +3 -1
- package/src/workload-roles/authority.js +48 -2
- package/src/workload-roles/aws-s3-state.js +27 -0
- package/src/workload-roles/boundary.d.ts +2 -1
- package/src/workload-roles/boundary.js +9 -2
- package/src/workload-roles/handler.js +52 -24
- package/src/workload-roles/index.d.ts +10 -17
- package/src/workload-roles/index.js +5 -18
- package/src/workload-roles/injection.js +1 -1
- package/src/workload-roles/provisioner.js +12 -4
- package/src/workload-roles/registration.d.ts +1 -0
- package/src/workload-roles/registration.js +5 -0
- package/src/workload-roles/stage-boundary.js +1 -1
- package/src/workload-roles/standard-slice.js +3 -3
- package/src/workspace-deployment/affected-lifecycle.d.ts +53 -0
- package/src/workspace-deployment/affected-lifecycle.js +84 -0
- package/src/workspace-deployment/identity.d.ts +3 -0
- package/src/workspace-deployment/identity.js +22 -0
- package/src/workspace-deployment/index.d.ts +4 -0
- package/src/workspace-deployment/index.js +8 -0
- package/src/workspace-deployment/migration-evidence.d.ts +29 -0
- package/src/workspace-deployment/migration-evidence.js +83 -0
- package/src/workspace-deployment/migration.d.ts +27 -0
- package/src/workspace-deployment/migration.js +109 -0
- package/src/workspace-deployment/ownership.d.ts +81 -0
- package/src/workspace-deployment/ownership.js +381 -0
- package/src/api-contract/baseline-update.js.map +0 -1
- package/src/api-contract/compatibility.js.map +0 -1
- package/src/api-contract/contract-graph.js.map +0 -1
- package/src/api-contract/evidence.js.map +0 -1
- package/src/api-contract/index.js.map +0 -1
- package/src/api-contract/model.fixtures.d.ts +0 -2
- package/src/api-contract/model.fixtures.js +0 -81
- package/src/api-contract/model.fixtures.js.map +0 -1
- package/src/api-contract/model.js.map +0 -1
- package/src/api-contract/rollout.js.map +0 -1
- package/src/authorization/compatibility.js.map +0 -1
- package/src/authorization/index.js.map +0 -1
- package/src/blueprints/execution.js.map +0 -1
- package/src/blueprints/external-sandbox.js.map +0 -1
- package/src/blueprints/index.js.map +0 -1
- package/src/blueprints/inputs.js.map +0 -1
- package/src/blueprints/manifest.js.map +0 -1
- package/src/blueprints/resolver.js.map +0 -1
- package/src/blueprints/transitions.js.map +0 -1
- package/src/cli/agent-command.js.map +0 -1
- package/src/cli/agent-runtime.js.map +0 -1
- package/src/cli/blueprint-authority.js.map +0 -1
- package/src/cli/blueprint-command.js.map +0 -1
- package/src/cli/bootstrap.js.map +0 -1
- package/src/cli/dev-command.js.map +0 -1
- package/src/cli/main.js.map +0 -1
- package/src/cli/output.js.map +0 -1
- package/src/cli/personal-secret-runtime.js.map +0 -1
- package/src/cli/secret-terminal.js.map +0 -1
- package/src/container-images.js.map +0 -1
- package/src/data-lifecycle/index.js.map +0 -1
- package/src/data-lifecycle/model.fixtures.d.ts +0 -2
- package/src/data-lifecycle/model.fixtures.js +0 -244
- package/src/data-lifecycle/model.fixtures.js.map +0 -1
- package/src/data-lifecycle/model.js.map +0 -1
- package/src/data-lifecycle/sensitive-artifacts.js.map +0 -1
- package/src/data-lifecycle/validation.js.map +0 -1
- package/src/database-retirement/contract.js.map +0 -1
- package/src/database-retirement/index.js.map +0 -1
- package/src/deterministic-order.js.map +0 -1
- package/src/developer-agent/context.js.map +0 -1
- package/src/developer-agent/generator-planning.js.map +0 -1
- package/src/developer-agent/generator-preview.js.map +0 -1
- package/src/developer-agent/git-inspection.js.map +0 -1
- package/src/developer-agent/handoff.js.map +0 -1
- package/src/developer-agent/index.js.map +0 -1
- package/src/developer-agent/model.js.map +0 -1
- package/src/developer-agent/operation-registry.js.map +0 -1
- package/src/developer-agent/ordering.js.map +0 -1
- package/src/developer-agent/planning.js.map +0 -1
- package/src/developer-agent/preview-changes.js.map +0 -1
- package/src/developer-agent/preview-source.js.map +0 -1
- package/src/developer-agent/validation.js.map +0 -1
- package/src/developer-agent/workspace-inspection.js.map +0 -1
- package/src/developer-agent/workspace-path.js.map +0 -1
- package/src/executors/blueprint-trust/blueprint-trust.js.map +0 -1
- package/src/executors/blueprint-verification/blueprint-verification.js.map +0 -1
- package/src/executors/deploy/deploy.js.map +0 -1
- package/src/executors/deployment-plan/deployment-plan.js.map +0 -1
- package/src/executors/dev/dev.js.map +0 -1
- package/src/executors/dev-doctor/dev-doctor.js.map +0 -1
- package/src/executors/dev-setup/dev-setup.js.map +0 -1
- package/src/executors/developer-context/developer-context.js.map +0 -1
- package/src/executors/fleet/fleet.js.map +0 -1
- package/src/executors/foundation-preflight/foundation-preflight.js.map +0 -1
- package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js.map +0 -1
- package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js.map +0 -1
- package/src/executors/github-bootstrap/github-bootstrap.js.map +0 -1
- package/src/executors/infrastructure-plan/infrastructure-plan.js.map +0 -1
- package/src/executors/refresh/refresh.js.map +0 -1
- package/src/executors/remove/remove.js.map +0 -1
- package/src/executors/secret-guardrails/secret-guardrails.js.map +0 -1
- package/src/executors/secret-metadata/secret-metadata.js.map +0 -1
- package/src/executors/sst-lifecycle/logging-preflight.js.map +0 -1
- package/src/executors/sst-lifecycle/run-sst-command.js.map +0 -1
- package/src/executors/sst-lifecycle/secret-preflight.js.map +0 -1
- package/src/executors/unlock/unlock.js.map +0 -1
- package/src/executors/work-markers/work-markers.js.map +0 -1
- package/src/foundation/discovery.js.map +0 -1
- package/src/foundation/index.js.map +0 -1
- package/src/foundation/local-database-contract.js.map +0 -1
- package/src/foundation/logging-preflight.js.map +0 -1
- package/src/foundation/logging.js.map +0 -1
- package/src/foundation/preflight.js.map +0 -1
- package/src/foundation/provision-database-bindings.js.map +0 -1
- package/src/foundation/provision-logical-database.js.map +0 -1
- package/src/foundation/requirements.js.map +0 -1
- package/src/foundation/router-origin-proof.js.map +0 -1
- package/src/foundation/stages.js.map +0 -1
- package/src/frontend-security/index.js.map +0 -1
- package/src/frontend-security/security-headers.js.map +0 -1
- package/src/generators/feature-registry.js.map +0 -1
- package/src/generators/function/function.js.map +0 -1
- package/src/generators/job/job.js.map +0 -1
- package/src/generators/logging-registry.js.map +0 -1
- package/src/generators/post-generation-install.js.map +0 -1
- package/src/generators/preset/generator.js.map +0 -1
- package/src/generators/preset/tool-versions.js.map +0 -1
- package/src/generators/preset/workspace-files-developer-agent.js.map +0 -1
- package/src/generators/preset/workspace-files-foundation-workload-roles.js.map +0 -1
- package/src/generators/preset/workspace-files-performance-cost.js.map +0 -1
- package/src/generators/preset/workspace-files-performance-load.js.map +0 -1
- package/src/generators/preset/workspace-files-workload-role-baseline.js.map +0 -1
- package/src/generators/preset/workspace-files.js.map +0 -1
- package/src/generators/repository-policy/repository-policy.js.map +0 -1
- package/src/generators/service/service.js.map +0 -1
- package/src/generators/slice/built-in-plan-api-contract-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-api-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-async-work-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-authorization-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-deletion-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-lifecycle-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-retention-job-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-retention-launcher-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-data-rights-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-database-lifecycle-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-foundation-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-frontend-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-infrastructure-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-infrastructure-safety-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-metadata-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-operations-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-performance-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-project-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-release-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-reliability-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-secret-runtime-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-shared.js.map +0 -1
- package/src/generators/slice/built-in-plan-testing-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-verification-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-web-files.js.map +0 -1
- package/src/generators/slice/built-in-plan-workload-role-files.js.map +0 -1
- package/src/generators/slice/built-in-plan.js.map +0 -1
- package/src/generators/slice/slice.js.map +0 -1
- package/src/generators/upgrade/upgrade.js.map +0 -1
- package/src/generators/workload/frozen-container.js.map +0 -1
- package/src/generators/workload/performance-registration.js.map +0 -1
- package/src/generators/workload/reliability-registration.js.map +0 -1
- package/src/generators/workload/service-performance-files.js.map +0 -1
- package/src/generators/workload/workload.js.map +0 -1
- package/src/git-policy/action-pins.js.map +0 -1
- package/src/git-policy/github-bootstrap.js.map +0 -1
- package/src/git-policy/index.js.map +0 -1
- package/src/git-policy/routing.js.map +0 -1
- package/src/index.js.map +0 -1
- package/src/infrastructure-change/convergence.js.map +0 -1
- package/src/infrastructure-change/drift.js.map +0 -1
- package/src/infrastructure-change/index.js.map +0 -1
- package/src/infrastructure-change/model.js.map +0 -1
- package/src/infrastructure-change/normalize.js.map +0 -1
- package/src/infrastructure-change/plan.js.map +0 -1
- package/src/infrastructure-change/risk.js.map +0 -1
- package/src/infrastructure-change/summary.js.map +0 -1
- package/src/local-dev/context-discovery.js.map +0 -1
- package/src/local-dev/contract-validation.js.map +0 -1
- package/src/local-dev/contracts.js.map +0 -1
- package/src/local-dev/control-contract.js.map +0 -1
- package/src/local-dev/dev-command-core.js.map +0 -1
- package/src/local-dev/effects.js.map +0 -1
- package/src/local-dev/environment-inspector.js.map +0 -1
- package/src/local-dev/environment-state.js.map +0 -1
- package/src/local-dev/errors.js.map +0 -1
- package/src/local-dev/fleet-client.js.map +0 -1
- package/src/local-dev/fleet-configuration.js.map +0 -1
- package/src/local-dev/fleet-inventory.js.map +0 -1
- package/src/local-dev/fleet-ipc.js.map +0 -1
- package/src/local-dev/fleet-launcher.js.map +0 -1
- package/src/local-dev/fleet-lock.js.map +0 -1
- package/src/local-dev/fleet-logs.js.map +0 -1
- package/src/local-dev/fleet-process.js.map +0 -1
- package/src/local-dev/fleet-runtime.js.map +0 -1
- package/src/local-dev/fleet-session.js.map +0 -1
- package/src/local-dev/fleet-slice-runner-daemon.js.map +0 -1
- package/src/local-dev/fleet-startup.js.map +0 -1
- package/src/local-dev/fleet-state.js.map +0 -1
- package/src/local-dev/fleet-supervisor-daemon.js.map +0 -1
- package/src/local-dev/fleet-supervisor.js.map +0 -1
- package/src/local-dev/gateway-daemon.js.map +0 -1
- package/src/local-dev/gateway.js.map +0 -1
- package/src/local-dev/identity.js.map +0 -1
- package/src/local-dev/index.js.map +0 -1
- package/src/local-dev/local-context.js.map +0 -1
- package/src/local-dev/nx-workspace.js.map +0 -1
- package/src/local-dev/personal-secret-ledger.js.map +0 -1
- package/src/local-dev/personal-stage.js.map +0 -1
- package/src/local-dev/portless.js.map +0 -1
- package/src/local-dev/ports.js.map +0 -1
- package/src/local-dev/private-state.js.map +0 -1
- package/src/local-dev/process-identity.js.map +0 -1
- package/src/local-dev/proxy.js.map +0 -1
- package/src/local-dev/runtime-paths.js.map +0 -1
- package/src/local-dev/secret-slice-claim.js.map +0 -1
- package/src/local-dev/slice-claim.js.map +0 -1
- package/src/local-dev/slice-runner.js.map +0 -1
- package/src/local-dev/tls.js.map +0 -1
- package/src/ownership/composition.js.map +0 -1
- package/src/ownership/foundation-record.js.map +0 -1
- package/src/ownership/hash.js.map +0 -1
- package/src/ownership/index.js.map +0 -1
- package/src/ownership/json-ownership.js.map +0 -1
- package/src/ownership/record.js.map +0 -1
- package/src/ownership/workspace-record.js.map +0 -1
- package/src/performance/cost-collection.js.map +0 -1
- package/src/performance/cost-controls.js.map +0 -1
- package/src/performance/evidence.js.map +0 -1
- package/src/performance/index.js.map +0 -1
- package/src/performance/load-safety.js.map +0 -1
- package/src/performance/model.js.map +0 -1
- package/src/performance/pr-artifact-budget.js.map +0 -1
- package/src/performance/runner.js.map +0 -1
- package/src/performance/scenario-endpoint.js.map +0 -1
- package/src/performance/scenario.js.map +0 -1
- package/src/performance/test-fixtures.d.ts +0 -7
- package/src/performance/test-fixtures.js +0 -169
- package/src/performance/test-fixtures.js.map +0 -1
- package/src/performance/unit-cost.js.map +0 -1
- package/src/release/index.js.map +0 -1
- package/src/release/lifecycle.js.map +0 -1
- package/src/release/manifest.js.map +0 -1
- package/src/release/rollout.js.map +0 -1
- package/src/release/source-authority.js.map +0 -1
- package/src/repository-policy/aurora-preflight.js.map +0 -1
- package/src/repository-policy/deployment-plan.js.map +0 -1
- package/src/repository-policy/foundation-profile.js.map +0 -1
- package/src/repository-policy/index.js.map +0 -1
- package/src/repository-policy/policy.js.map +0 -1
- package/src/secrets/adapters.js.map +0 -1
- package/src/secrets/aws-control-plane.js.map +0 -1
- package/src/secrets/declaration-verification.js.map +0 -1
- package/src/secrets/guardrails.js.map +0 -1
- package/src/secrets/index.js.map +0 -1
- package/src/secrets/metadata.js.map +0 -1
- package/src/secrets/model.js.map +0 -1
- package/src/secrets/operator.js.map +0 -1
- package/src/secrets/permissions.js.map +0 -1
- package/src/secrets/personal-command.js.map +0 -1
- package/src/secrets/personal-ledger.js.map +0 -1
- package/src/secrets/registry.js.map +0 -1
- package/src/secrets/verification.js.map +0 -1
- package/src/secrets/workload-access.js.map +0 -1
- package/src/supply-chain/action-pins.js.map +0 -1
- package/src/supply-chain/blueprint-trust-git.js.map +0 -1
- package/src/supply-chain/blueprint-trust-process.js.map +0 -1
- package/src/supply-chain/blueprint-trust.js.map +0 -1
- package/src/supply-chain/blueprint-verification-authority.js.map +0 -1
- package/src/supply-chain/blueprint-verification-execution.js.map +0 -1
- package/src/supply-chain/build-output.js.map +0 -1
- package/src/supply-chain/common.js.map +0 -1
- package/src/supply-chain/container-artifact-contract.js.map +0 -1
- package/src/supply-chain/container-release.js.map +0 -1
- package/src/supply-chain/ecr-applicability.js.map +0 -1
- package/src/supply-chain/ecr-scanning.js.map +0 -1
- package/src/supply-chain/ecs-deployed-image.js.map +0 -1
- package/src/supply-chain/errors.js.map +0 -1
- package/src/supply-chain/generated-blueprint-trust-command.js.map +0 -1
- package/src/supply-chain/generated-command.js.map +0 -1
- package/src/supply-chain/generated-container-release-command.js.map +0 -1
- package/src/supply-chain/generated-ecr-collector-command.js.map +0 -1
- package/src/supply-chain/generated-files.js.map +0 -1
- package/src/supply-chain/generated-scanner-command.js.map +0 -1
- package/src/supply-chain/index.js.map +0 -1
- package/src/supply-chain/inventory.js.map +0 -1
- package/src/supply-chain/license-expression.js.map +0 -1
- package/src/supply-chain/pnpm-toolchain-authority.js.map +0 -1
- package/src/supply-chain/policy.js.map +0 -1
- package/src/supply-chain/publication.js.map +0 -1
- package/src/supply-chain/sbom.js.map +0 -1
- package/src/supply-chain/scanner.js.map +0 -1
- package/src/supply-chain/vendored-source.js.map +0 -1
- package/src/testing-evidence/fixture-scope.js.map +0 -1
- package/src/testing-evidence/index.js.map +0 -1
- package/src/testing-evidence/quarantine.js.map +0 -1
- package/src/testing-evidence/result.js.map +0 -1
- package/src/testing-evidence/runner-adapter.js.map +0 -1
- package/src/testing-evidence/sensitive-artifacts.js.map +0 -1
- package/src/validation.js.map +0 -1
- package/src/work-markers/index.js.map +0 -1
- package/src/work-markers/work-markers.js.map +0 -1
- package/src/workload-roles/account-baseline.js.map +0 -1
- package/src/workload-roles/authority.js.map +0 -1
- package/src/workload-roles/aws-adapter.js.map +0 -1
- package/src/workload-roles/aws-internal-handler.js.map +0 -1
- package/src/workload-roles/aws-s3-state.js.map +0 -1
- package/src/workload-roles/aws-sdk-control-plane.js.map +0 -1
- package/src/workload-roles/boundary.js.map +0 -1
- package/src/workload-roles/convergence.js.map +0 -1
- package/src/workload-roles/effective-policy.js.map +0 -1
- package/src/workload-roles/handler.js.map +0 -1
- package/src/workload-roles/history.js.map +0 -1
- package/src/workload-roles/index.js.map +0 -1
- package/src/workload-roles/injection.js.map +0 -1
- package/src/workload-roles/manifest.js.map +0 -1
- package/src/workload-roles/provisioner.js.map +0 -1
- package/src/workload-roles/registration.js.map +0 -1
- package/src/workload-roles/stage-boundary.js.map +0 -1
- package/src/workload-roles/standard-slice.js.map +0 -1
|
@@ -118,7 +118,8 @@ function createSecretWorkloadAccessPlan(input) {
|
|
|
118
118
|
for (const binding of activeBindings) {
|
|
119
119
|
const declaration = declarations.get(binding.logicalName);
|
|
120
120
|
const reference = references.get(binding.logicalName);
|
|
121
|
-
if (declaration?.source !== 'operator'
|
|
121
|
+
if ((declaration?.source !== 'operator' &&
|
|
122
|
+
declaration?.source !== 'generated') ||
|
|
122
123
|
reference?.logicalName !== declaration.logicalName) {
|
|
123
124
|
throw new SecretWorkloadAccessError('secret-workload-reference-invalid');
|
|
124
125
|
}
|
|
@@ -151,9 +152,16 @@ function personalSecretNamesForWorkload(input) {
|
|
|
151
152
|
.filter(({ workload }) => workload === input.workload)
|
|
152
153
|
.flatMap(({ logicalName }) => {
|
|
153
154
|
const declaration = declarations.get(logicalName);
|
|
154
|
-
if (!declaration ||
|
|
155
|
+
if (!declaration ||
|
|
156
|
+
(declaration.source !== 'operator' &&
|
|
157
|
+
declaration.source !== 'generated')) {
|
|
155
158
|
throw new SecretWorkloadAccessError('secret-workload-reference-invalid');
|
|
156
159
|
}
|
|
160
|
+
// Generated values exist only in canonical deployed stages. They are
|
|
161
|
+
// valid workload bindings, but never become personal `sst.Secret`
|
|
162
|
+
// resources during the dirty-tree development loop.
|
|
163
|
+
if (declaration.source === 'generated')
|
|
164
|
+
return [];
|
|
157
165
|
return declaration.requiredStages.includes(input.stage)
|
|
158
166
|
? [logicalName]
|
|
159
167
|
: [];
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Exact default declaration emitted by the pinned Next 16.3 toolchain. */
|
|
2
|
+
export declare function generatedNextEnvironmentSource(dev?: boolean): string;
|
|
3
|
+
export declare function isExactGeneratedNextEnvironmentSourceBytes(bytes: Buffer): boolean;
|
|
4
|
+
export declare function isExactGeneratedRootSstEnvironmentSourceBytes(bytes: Buffer): boolean;
|
|
5
|
+
export declare function isExactGeneratedRootSstPythonSourceBytes(bytes: Buffer): boolean;
|
|
6
|
+
export declare function exactGeneratedNestedSstEnvironmentSourceBytes(nestedPath: string, rootSourcePath: string): readonly Buffer[];
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generatedNextEnvironmentSource = generatedNextEnvironmentSource;
|
|
4
|
+
exports.isExactGeneratedNextEnvironmentSourceBytes = isExactGeneratedNextEnvironmentSourceBytes;
|
|
5
|
+
exports.isExactGeneratedRootSstEnvironmentSourceBytes = isExactGeneratedRootSstEnvironmentSourceBytes;
|
|
6
|
+
exports.isExactGeneratedRootSstPythonSourceBytes = isExactGeneratedRootSstPythonSourceBytes;
|
|
7
|
+
exports.exactGeneratedNestedSstEnvironmentSourceBytes = exactGeneratedNestedSstEnvironmentSourceBytes;
|
|
8
|
+
const node_path_1 = require("node:path");
|
|
9
|
+
/** Exact default declaration emitted by the pinned Next 16.3 toolchain. */
|
|
10
|
+
function generatedNextEnvironmentSource(dev = false) {
|
|
11
|
+
const directory = dev ? '.next/dev' : '.next';
|
|
12
|
+
return `/// <reference types="next" />
|
|
13
|
+
/// <reference types="next/image-types/global" />
|
|
14
|
+
import "./${directory}/types/routes.d.ts";
|
|
15
|
+
import "./${directory}/types/root-params.d.ts";
|
|
16
|
+
|
|
17
|
+
// NOTE: This file should not be edited
|
|
18
|
+
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
|
|
19
|
+
`;
|
|
20
|
+
}
|
|
21
|
+
function isExactGeneratedNextEnvironmentSourceBytes(bytes) {
|
|
22
|
+
return [false, true].some((dev) => [
|
|
23
|
+
generatedNextEnvironmentSource(dev),
|
|
24
|
+
generatedNextEnvironmentSource(dev).split('\n').join('\r\n'),
|
|
25
|
+
].some((source) => bytes.equals(Buffer.from(source))));
|
|
26
|
+
}
|
|
27
|
+
const GENERATED_HEADER = [
|
|
28
|
+
'/* This file is auto-generated by SST. Do not edit. */',
|
|
29
|
+
'/* tslint:disable */',
|
|
30
|
+
'/* eslint-disable */',
|
|
31
|
+
'/* deno-fmt-ignore-file */',
|
|
32
|
+
'/* biome-ignore-all lint: auto-generated */',
|
|
33
|
+
'',
|
|
34
|
+
];
|
|
35
|
+
function exactJsonString(value) {
|
|
36
|
+
try {
|
|
37
|
+
const parsed = JSON.parse(value);
|
|
38
|
+
return typeof parsed === 'string' && JSON.stringify(parsed) === value;
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function exactGeneratedResourceMembers(lines) {
|
|
45
|
+
let depth = 0;
|
|
46
|
+
for (const line of lines) {
|
|
47
|
+
const indentation = line.match(/^ */u)?.[0].length ?? 0;
|
|
48
|
+
if (line.trim() === '}') {
|
|
49
|
+
if (depth === 0 || indentation !== 4 + (depth - 1) * 2)
|
|
50
|
+
return false;
|
|
51
|
+
depth -= 1;
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
if (indentation !== 4 + depth * 2)
|
|
55
|
+
return false;
|
|
56
|
+
const property = line
|
|
57
|
+
.slice(indentation)
|
|
58
|
+
.match(/^("(?:[^"\\]|\\.)*"): (.+)$/u);
|
|
59
|
+
if (!property ||
|
|
60
|
+
!property[1] ||
|
|
61
|
+
!property[2] ||
|
|
62
|
+
!exactJsonString(property[1])) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
if (property[2] === '{') {
|
|
66
|
+
depth += 1;
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
// SST emits JSON property names followed by TypeScript type expressions.
|
|
70
|
+
// Keep the accepted alphabet deliberately type-only: executable statement
|
|
71
|
+
// delimiters, comments, assignments, templates, and braces are excluded.
|
|
72
|
+
if (!/^[A-Za-z0-9_.$@/:"'<>()[\]|&?, -]+$/u.test(property[2])) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return depth === 0;
|
|
77
|
+
}
|
|
78
|
+
function isExactGeneratedRootSstEnvironmentSourceBytes(bytes) {
|
|
79
|
+
const source = bytes.toString('utf8');
|
|
80
|
+
if (!Buffer.from(source, 'utf8').equals(bytes))
|
|
81
|
+
return false;
|
|
82
|
+
const normalized = source.split('\r\n').join('\n');
|
|
83
|
+
if (normalized.includes('\r'))
|
|
84
|
+
return false;
|
|
85
|
+
const lines = normalized.endsWith('\n')
|
|
86
|
+
? normalized.slice(0, -1).split('\n')
|
|
87
|
+
: normalized.split('\n');
|
|
88
|
+
const prefix = [
|
|
89
|
+
...GENERATED_HEADER,
|
|
90
|
+
'declare module "sst" {',
|
|
91
|
+
' export interface Resource {',
|
|
92
|
+
];
|
|
93
|
+
const suffix = [' }', '}', '', 'import "sst"', 'export {}'];
|
|
94
|
+
if (lines.length < prefix.length + suffix.length ||
|
|
95
|
+
prefix.some((line, index) => lines[index] !== line) ||
|
|
96
|
+
suffix.some((line, index) => lines[lines.length - suffix.length + index] !== line)) {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
return exactGeneratedResourceMembers(lines.slice(prefix.length, lines.length - suffix.length));
|
|
100
|
+
}
|
|
101
|
+
function exactGeneratedPythonType(value) {
|
|
102
|
+
if (!/^[A-Za-z0-9_,.[\]| ]+$/u.test(value))
|
|
103
|
+
return false;
|
|
104
|
+
const identifiers = value.match(/[A-Za-z_][A-Za-z0-9_]*/gu) ?? [];
|
|
105
|
+
if (identifiers.some((identifier) => ![
|
|
106
|
+
'Any',
|
|
107
|
+
'None',
|
|
108
|
+
'bool',
|
|
109
|
+
'dict',
|
|
110
|
+
'float',
|
|
111
|
+
'int',
|
|
112
|
+
'list',
|
|
113
|
+
'set',
|
|
114
|
+
'str',
|
|
115
|
+
'tuple',
|
|
116
|
+
].includes(identifier))) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
let depth = 0;
|
|
120
|
+
for (const character of value) {
|
|
121
|
+
if (character === '[')
|
|
122
|
+
depth += 1;
|
|
123
|
+
if (character === ']')
|
|
124
|
+
depth -= 1;
|
|
125
|
+
if (depth < 0)
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
return depth === 0;
|
|
129
|
+
}
|
|
130
|
+
function isExactGeneratedRootSstPythonSourceBytes(bytes) {
|
|
131
|
+
const source = bytes.toString('utf8');
|
|
132
|
+
if (!Buffer.from(source, 'utf8').equals(bytes))
|
|
133
|
+
return false;
|
|
134
|
+
const normalized = source.split('\r\n').join('\n');
|
|
135
|
+
if (normalized.includes('\r'))
|
|
136
|
+
return false;
|
|
137
|
+
const lines = normalized.endsWith('\n')
|
|
138
|
+
? normalized.slice(0, -1).split('\n')
|
|
139
|
+
: normalized.split('\n');
|
|
140
|
+
if (lines.at(-1) === '')
|
|
141
|
+
lines.pop();
|
|
142
|
+
if (lines.at(-1) === '')
|
|
143
|
+
return false;
|
|
144
|
+
const prefix = [
|
|
145
|
+
'# Automatically generated by SST',
|
|
146
|
+
'# pylint: disable=all',
|
|
147
|
+
'# ruff: noqa',
|
|
148
|
+
'from typing import Any',
|
|
149
|
+
'',
|
|
150
|
+
'class Resource:',
|
|
151
|
+
];
|
|
152
|
+
if (lines.length <= prefix.length ||
|
|
153
|
+
prefix.some((line, index) => lines[index] !== line)) {
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
let observedClass = false;
|
|
157
|
+
let observedMember = false;
|
|
158
|
+
for (const line of lines.slice(prefix.length)) {
|
|
159
|
+
const classDeclaration = line.match(/^ {4}class ([A-Za-z_][A-Za-z0-9_]*):$/u);
|
|
160
|
+
if (classDeclaration) {
|
|
161
|
+
if (observedClass && !observedMember)
|
|
162
|
+
return false;
|
|
163
|
+
observedClass = true;
|
|
164
|
+
observedMember = false;
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
const member = line.match(/^ {8}([A-Za-z_][A-Za-z0-9_]*): (.+)$/u);
|
|
168
|
+
if (!observedClass ||
|
|
169
|
+
!member?.[2] ||
|
|
170
|
+
!exactGeneratedPythonType(member[2])) {
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
observedMember = true;
|
|
174
|
+
}
|
|
175
|
+
return observedClass && observedMember;
|
|
176
|
+
}
|
|
177
|
+
function exactGeneratedNestedSstEnvironmentSourceBytes(nestedPath, rootSourcePath) {
|
|
178
|
+
const reference = (0, node_path_1.relative)((0, node_path_1.dirname)(nestedPath), rootSourcePath)
|
|
179
|
+
.split('\\')
|
|
180
|
+
.join('/');
|
|
181
|
+
if (!reference.startsWith('../') || reference.endsWith('/'))
|
|
182
|
+
return [];
|
|
183
|
+
const lines = [
|
|
184
|
+
...GENERATED_HEADER,
|
|
185
|
+
`/// <reference path="${reference}" />`,
|
|
186
|
+
'',
|
|
187
|
+
'import "sst"',
|
|
188
|
+
'export {}',
|
|
189
|
+
];
|
|
190
|
+
const lf = lines.join('\n');
|
|
191
|
+
const crlf = lines.join('\r\n');
|
|
192
|
+
return [
|
|
193
|
+
Buffer.from(lf, 'utf8'),
|
|
194
|
+
Buffer.from(`${lf}\n`, 'utf8'),
|
|
195
|
+
Buffer.from(crlf, 'utf8'),
|
|
196
|
+
Buffer.from(`${crlf}\r\n`, 'utf8'),
|
|
197
|
+
];
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=sst-environment-source-format.js.map
|
|
@@ -9,22 +9,71 @@ exports.ACTION_PIN_INVENTORY_SCHEMA_VERSION = 1;
|
|
|
9
9
|
const GITHUB_ACTION_SHA = /^[a-f0-9]{40}$/;
|
|
10
10
|
const ACTION_REFERENCE = /^(?<action>[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+(?:\/[A-Za-z0-9_./-]+)?)@(?<sha>[a-f0-9]{40})$/;
|
|
11
11
|
const CONTAINER_REFERENCE = /^(?:docker:\/\/)?(?<image>[a-z0-9][a-z0-9._/-]*):(?<tag>[A-Za-z0-9._-]+)@sha256:(?<sha>[a-f0-9]{64})$/;
|
|
12
|
-
|
|
12
|
+
const LOCAL_REUSABLE_WORKFLOW = /^\.\/\.github\/workflows\/[A-Za-z0-9_.-]+\.yml$/;
|
|
13
|
+
const WORKFLOW_DOCUMENT = /^\.github\/workflows\/[A-Za-z0-9_.-]+\.ya?ml$/;
|
|
14
|
+
function findUses(value, uses, location = []) {
|
|
13
15
|
if (Array.isArray(value)) {
|
|
14
|
-
value.forEach((entry) => findUses(entry, uses));
|
|
16
|
+
value.forEach((entry, index) => findUses(entry, uses, [...location, index]));
|
|
15
17
|
return;
|
|
16
18
|
}
|
|
17
19
|
if (!value || typeof value !== 'object')
|
|
18
20
|
return;
|
|
19
21
|
for (const [key, child] of Object.entries(value)) {
|
|
20
22
|
if (key === 'uses' && typeof child === 'string') {
|
|
21
|
-
uses.push(child);
|
|
23
|
+
uses.push({ location: [...location, key], reference: child });
|
|
22
24
|
}
|
|
23
25
|
else {
|
|
24
|
-
findUses(child, uses);
|
|
26
|
+
findUses(child, uses, [...location, key]);
|
|
25
27
|
}
|
|
26
28
|
}
|
|
27
29
|
}
|
|
30
|
+
function isJobLevelWorkflowUse(location) {
|
|
31
|
+
return (location.length === 3 &&
|
|
32
|
+
location[0] === 'jobs' &&
|
|
33
|
+
typeof location[1] === 'string' &&
|
|
34
|
+
location[2] === 'uses');
|
|
35
|
+
}
|
|
36
|
+
function declaresWorkflowCall(document) {
|
|
37
|
+
if (!document || typeof document !== 'object' || Array.isArray(document)) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
const trigger = document['on'];
|
|
41
|
+
if (trigger === 'workflow_call')
|
|
42
|
+
return true;
|
|
43
|
+
if (Array.isArray(trigger))
|
|
44
|
+
return trigger.includes('workflow_call');
|
|
45
|
+
return (trigger !== null &&
|
|
46
|
+
typeof trigger === 'object' &&
|
|
47
|
+
!Array.isArray(trigger) &&
|
|
48
|
+
Object.prototype.hasOwnProperty.call(trigger, 'workflow_call'));
|
|
49
|
+
}
|
|
50
|
+
function verifyLocalReusableWorkflow(use, files, callerPath) {
|
|
51
|
+
const { location, reference } = use;
|
|
52
|
+
if (reference.includes('${{')) {
|
|
53
|
+
throw new errors_js_1.SupplyChainError('supply-chain-action-unpinned', callerPath, `${reference} is a dynamic executable input`);
|
|
54
|
+
}
|
|
55
|
+
if (!WORKFLOW_DOCUMENT.test(callerPath) || !isJobLevelWorkflowUse(location)) {
|
|
56
|
+
throw new errors_js_1.SupplyChainError('supply-chain-action-unpinned', callerPath, `${reference} is a repository-local action; only static job-level reusable workflows are admitted`);
|
|
57
|
+
}
|
|
58
|
+
if (!LOCAL_REUSABLE_WORKFLOW.test(reference)) {
|
|
59
|
+
throw new errors_js_1.SupplyChainError('supply-chain-action-unpinned', callerPath, `${reference} must be an exact ./.github/workflows/*.yml reusable-workflow path without traversal`);
|
|
60
|
+
}
|
|
61
|
+
const targetPath = reference.slice(2);
|
|
62
|
+
const targetSource = files[targetPath];
|
|
63
|
+
if (targetSource === undefined) {
|
|
64
|
+
throw new errors_js_1.SupplyChainError('supply-chain-action-unpinned', callerPath, `${reference} does not resolve to a repository workflow`);
|
|
65
|
+
}
|
|
66
|
+
let targetDocument;
|
|
67
|
+
try {
|
|
68
|
+
targetDocument = (0, yaml_1.parse)(targetSource);
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
throw new errors_js_1.SupplyChainError('supply-chain-input-invalid', targetPath, `cannot parse reusable workflow: ${error instanceof Error ? error.message : String(error)}`);
|
|
72
|
+
}
|
|
73
|
+
if (!declaresWorkflowCall(targetDocument)) {
|
|
74
|
+
throw new errors_js_1.SupplyChainError('supply-chain-action-unpinned', callerPath, `${reference} does not declare workflow_call`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
28
77
|
function workflowContainerReferences(document, path) {
|
|
29
78
|
if (!document || typeof document !== 'object' || Array.isArray(document)) {
|
|
30
79
|
return [];
|
|
@@ -133,11 +182,16 @@ function verifyActionPinInventory(files, inventory, scope) {
|
|
|
133
182
|
findUses(document, uses);
|
|
134
183
|
const executableReferences = [
|
|
135
184
|
...uses,
|
|
136
|
-
...workflowContainerReferences(document, path)
|
|
185
|
+
...workflowContainerReferences(document, path).map((reference) => ({
|
|
186
|
+
location: ['jobs', 'container'],
|
|
187
|
+
reference,
|
|
188
|
+
})),
|
|
137
189
|
];
|
|
138
|
-
for (const
|
|
190
|
+
for (const use of executableReferences) {
|
|
191
|
+
const { reference } = use;
|
|
139
192
|
if (reference.startsWith('./')) {
|
|
140
|
-
|
|
193
|
+
verifyLocalReusableWorkflow(use, files, path);
|
|
194
|
+
continue;
|
|
141
195
|
}
|
|
142
196
|
const container = CONTAINER_REFERENCE.exec(reference);
|
|
143
197
|
if (reference.startsWith('docker://') || container) {
|
|
@@ -369,6 +369,24 @@ function historyStates(context, history, policyPath, snapshotPath) {
|
|
|
369
369
|
}
|
|
370
370
|
return states;
|
|
371
371
|
}
|
|
372
|
+
function optionalBlueprintTrustAuthorityBaseline(context, tip, policyPath = exports.BLUEPRINT_TRUST_POLICY_PATH, snapshotPath = exports.BLUEPRINT_TRUST_SNAPSHOT_PATH) {
|
|
373
|
+
const stateCommits = commits(context, [tip, '--', policyPath, snapshotPath]);
|
|
374
|
+
if (stateCommits.length === 0 &&
|
|
375
|
+
stateAtCommit(context, tip, policyPath, snapshotPath) === undefined) {
|
|
376
|
+
return undefined;
|
|
377
|
+
}
|
|
378
|
+
if (stateCommits.at(-1) !== tip)
|
|
379
|
+
stateCommits.push(tip);
|
|
380
|
+
const states = historyStates(context, stateCommits, policyPath, snapshotPath);
|
|
381
|
+
return states[0]?.commit;
|
|
382
|
+
}
|
|
383
|
+
function blueprintTrustAuthorityBaseline(context, tip, policyPath = exports.BLUEPRINT_TRUST_POLICY_PATH, snapshotPath = exports.BLUEPRINT_TRUST_SNAPSHOT_PATH) {
|
|
384
|
+
const baseline = optionalBlueprintTrustAuthorityBaseline(context, tip, policyPath, snapshotPath);
|
|
385
|
+
if (!baseline) {
|
|
386
|
+
throw new errors_js_1.SupplyChainError('supply-chain-blueprint-untrusted', `${tip}:ownership`, 'cannot establish the first protected Blueprint trust authority commit');
|
|
387
|
+
}
|
|
388
|
+
return baseline;
|
|
389
|
+
}
|
|
372
390
|
function blueprintIdentity(value, path) {
|
|
373
391
|
if (!(0, validation_js_1.isRecord)(value) ||
|
|
374
392
|
!(0, validation_js_1.isRecord)(value.blueprint) ||
|
|
@@ -519,7 +537,11 @@ function changedOwnershipAtCommit(context, commit) {
|
|
|
519
537
|
if (paths.length > MAX_OWNERSHIP_RECORDS) {
|
|
520
538
|
throw new errors_js_1.SupplyChainError('supply-chain-blueprint-untrusted', `${commit}:ownership`, `changes more than ${MAX_OWNERSHIP_RECORDS} Slice ownership records`);
|
|
521
539
|
}
|
|
522
|
-
|
|
540
|
+
const parent = git(context, ['rev-parse', '--verify', `${commit}^1^{commit}`], { allowFailure: true });
|
|
541
|
+
if (!parent || !FULL_GIT_OBJECT_ID.test(parent)) {
|
|
542
|
+
throw new errors_js_1.SupplyChainError('supply-chain-blueprint-untrusted', `${commit}:ownership`, 'cannot resolve the exact first parent of an ownership change after the trust authority floor');
|
|
543
|
+
}
|
|
544
|
+
return [parent, commit].flatMap((revision) => changedOwnershipValuesAtCommit(context, revision, paths).flatMap(({ path, value }) => historicalOwnershipRecord(revision, path, value)));
|
|
523
545
|
}
|
|
524
546
|
function protectedWorkspaceHasExternalBlueprintOwnership(input) {
|
|
525
547
|
if (!FULL_GIT_OBJECT_ID.test(input.commit)) {
|
|
@@ -605,20 +627,31 @@ function inspectProtectedWorkspaceExternalBlueprintHistory(input) {
|
|
|
605
627
|
const tips = [
|
|
606
628
|
...new Set(before.filter((commit) => commit !== undefined)),
|
|
607
629
|
];
|
|
630
|
+
const baselines = new Set();
|
|
608
631
|
const history = new Set();
|
|
632
|
+
const inspectedCommits = new Set();
|
|
609
633
|
for (const tip of tips) {
|
|
634
|
+
const baseline = shallowBefore === 'false'
|
|
635
|
+
? optionalBlueprintTrustAuthorityBaseline(context, tip)
|
|
636
|
+
: undefined;
|
|
637
|
+
if (baseline) {
|
|
638
|
+
baselines.add(baseline);
|
|
639
|
+
inspectedCommits.add(baseline);
|
|
640
|
+
}
|
|
610
641
|
const tipHistory = commits(context, [
|
|
611
642
|
`--max-count=${MAX_PREGRAPH_OWNERSHIP_HISTORY_COMMITS + 1}`,
|
|
612
|
-
tip,
|
|
643
|
+
baseline ? `${baseline}..${tip}` : tip,
|
|
613
644
|
'--',
|
|
614
645
|
OWNERSHIP_PATHSPEC,
|
|
615
646
|
]);
|
|
616
|
-
if (tipHistory.length
|
|
647
|
+
if (tipHistory.length + (baseline ? 1 : 0) >
|
|
648
|
+
MAX_PREGRAPH_OWNERSHIP_HISTORY_COMMITS) {
|
|
617
649
|
throw new errors_js_1.SupplyChainError('supply-chain-blueprint-untrusted', 'blueprintOwnership.history', `protected ownership history exceeds ${MAX_PREGRAPH_OWNERSHIP_HISTORY_COMMITS} changing commits`);
|
|
618
650
|
}
|
|
619
651
|
for (const commit of tipHistory) {
|
|
620
652
|
history.add(commit);
|
|
621
|
-
|
|
653
|
+
inspectedCommits.add(commit);
|
|
654
|
+
if (inspectedCommits.size > MAX_PREGRAPH_OWNERSHIP_HISTORY_COMMITS) {
|
|
622
655
|
throw new errors_js_1.SupplyChainError('supply-chain-blueprint-untrusted', 'blueprintOwnership.history', `protected ownership history exceeds ${MAX_PREGRAPH_OWNERSHIP_HISTORY_COMMITS} distinct changing commits`);
|
|
623
656
|
}
|
|
624
657
|
}
|
|
@@ -627,8 +660,7 @@ function inspectProtectedWorkspaceExternalBlueprintHistory(input) {
|
|
|
627
660
|
const externalSliceRoots = new Set();
|
|
628
661
|
let externalRecordFound = false;
|
|
629
662
|
let historicalRecordCount = 0;
|
|
630
|
-
|
|
631
|
-
const inventory = changedOwnershipAtCommit(context, commit);
|
|
663
|
+
const inspectInventory = (inventory) => {
|
|
632
664
|
historicalRecordCount += inventory.length;
|
|
633
665
|
if (historicalRecordCount > MAX_PREGRAPH_OWNERSHIP_HISTORY_RECORDS) {
|
|
634
666
|
throw new errors_js_1.SupplyChainError('supply-chain-blueprint-untrusted', 'blueprintOwnership.history', `protected ownership history exceeds ${MAX_PREGRAPH_OWNERSHIP_HISTORY_RECORDS} aggregate Slice records`);
|
|
@@ -643,6 +675,14 @@ function inspectProtectedWorkspaceExternalBlueprintHistory(input) {
|
|
|
643
675
|
}
|
|
644
676
|
externalSliceRoots.add(`packages/${record.slice}`);
|
|
645
677
|
}
|
|
678
|
+
};
|
|
679
|
+
for (const baseline of baselines) {
|
|
680
|
+
inspectInventory(ownershipInventoryAtCommit(context, baseline));
|
|
681
|
+
}
|
|
682
|
+
for (const commit of history) {
|
|
683
|
+
if (baselines.has(commit))
|
|
684
|
+
continue;
|
|
685
|
+
inspectInventory(changedOwnershipAtCommit(context, commit));
|
|
646
686
|
}
|
|
647
687
|
const after = resolveCommits();
|
|
648
688
|
const shallowAfter = git(context, ['rev-parse', '--is-shallow-repository']);
|
|
@@ -698,13 +738,11 @@ function changedOwnershipPaths(context, parent, commit) {
|
|
|
698
738
|
}
|
|
699
739
|
return paths;
|
|
700
740
|
}
|
|
701
|
-
function historicalOwnershipAudit(context, builtInName, tip) {
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
throw new errors_js_1.SupplyChainError('supply-chain-blueprint-untrusted', `${tip}:ownership`, 'must have one exact first-parent repository root');
|
|
741
|
+
function historicalOwnershipAudit(context, builtInName, tip, baseline) {
|
|
742
|
+
if (!commits(context, [tip]).includes(baseline)) {
|
|
743
|
+
throw new errors_js_1.SupplyChainError('supply-chain-blueprint-untrusted', `${tip}:ownership`, 'Blueprint trust authority baseline must remain on the exact first-parent lineage');
|
|
705
744
|
}
|
|
706
|
-
const
|
|
707
|
-
const root = ownershipInventoryAtCommit(context, rootCommit);
|
|
745
|
+
const root = ownershipInventoryAtCommit(context, baseline);
|
|
708
746
|
const external = new Map();
|
|
709
747
|
const rememberExternal = (record) => {
|
|
710
748
|
if (record.name !== builtInName) {
|
|
@@ -712,9 +750,11 @@ function historicalOwnershipAudit(context, builtInName, tip) {
|
|
|
712
750
|
}
|
|
713
751
|
};
|
|
714
752
|
root.forEach(rememberExternal);
|
|
715
|
-
for (const commit of commits(context, [
|
|
716
|
-
|
|
717
|
-
|
|
753
|
+
for (const commit of commits(context, [
|
|
754
|
+
`${baseline}..${tip}`,
|
|
755
|
+
'--',
|
|
756
|
+
OWNERSHIP_PATHSPEC,
|
|
757
|
+
])) {
|
|
718
758
|
const parent = git(context, ['rev-parse', '--verify', `${commit}^1^{commit}`], { allowFailure: true });
|
|
719
759
|
if (!parent || !FULL_GIT_OBJECT_ID.test(parent)) {
|
|
720
760
|
throw new errors_js_1.SupplyChainError('supply-chain-blueprint-untrusted', `${commit}:ownership`, 'cannot resolve the exact first parent of an ownership change');
|
|
@@ -764,7 +804,7 @@ function assertNoPathIndependentRelabel(builtInName, current, before, after) {
|
|
|
764
804
|
return;
|
|
765
805
|
throw new errors_js_1.SupplyChainError('supply-chain-blueprint-untrusted', `${current.path}#blueprint`, `cannot establish built-in provenance while historical external Blueprint ${relatedExternal.name}@${relatedExternal.version} ownership at ${relatedExternal.path} was removed, moved, or reused`);
|
|
766
806
|
}
|
|
767
|
-
function builtInProvenance(context, input, headCommit, protectedCommit) {
|
|
807
|
+
function builtInProvenance(context, input, headCommit, headBaseline, protectedCommit, protectedBaseline) {
|
|
768
808
|
const provenance = [];
|
|
769
809
|
const currentOwnership = currentOwnershipInventory(input);
|
|
770
810
|
const builtInOwnership = currentOwnership.filter(({ name }) => name === input.builtIn.name);
|
|
@@ -772,19 +812,25 @@ function builtInProvenance(context, input, headCommit, protectedCommit) {
|
|
|
772
812
|
return provenance;
|
|
773
813
|
const protectedOwnership = ownershipInventoryAtCommit(context, protectedCommit);
|
|
774
814
|
const headOwnership = ownershipInventoryAtCommit(context, headCommit);
|
|
775
|
-
const protectedAudit = historicalOwnershipAudit(context, input.builtIn.name, protectedCommit);
|
|
815
|
+
const protectedAudit = historicalOwnershipAudit(context, input.builtIn.name, protectedCommit, protectedBaseline);
|
|
776
816
|
const audits = headCommit === protectedCommit
|
|
777
817
|
? [protectedAudit]
|
|
778
818
|
: [
|
|
779
819
|
protectedAudit,
|
|
780
|
-
historicalOwnershipAudit(context, input.builtIn.name, headCommit),
|
|
820
|
+
historicalOwnershipAudit(context, input.builtIn.name, headCommit, headBaseline),
|
|
781
821
|
];
|
|
782
822
|
for (const currentRecord of builtInOwnership) {
|
|
783
823
|
const current = currentRecord;
|
|
784
824
|
const path = current.path;
|
|
785
825
|
const pathCommits = new Set([
|
|
786
|
-
|
|
787
|
-
...commits(context, [
|
|
826
|
+
headBaseline,
|
|
827
|
+
...commits(context, [`${headBaseline}..${headCommit}`, '--', path]),
|
|
828
|
+
protectedBaseline,
|
|
829
|
+
...commits(context, [
|
|
830
|
+
`${protectedBaseline}..${protectedCommit}`,
|
|
831
|
+
'--',
|
|
832
|
+
path,
|
|
833
|
+
]),
|
|
788
834
|
]);
|
|
789
835
|
for (const commit of pathCommits) {
|
|
790
836
|
const historical = readJsonBlob(context, commit, path);
|
|
@@ -852,6 +898,17 @@ function repositoryRootCommit(context, tip) {
|
|
|
852
898
|
}
|
|
853
899
|
function assertCreateOnlyReceiptRetention(context, receiptCommit, executionCommit, paths) {
|
|
854
900
|
const parents = commitParents(context, receiptCommit);
|
|
901
|
+
// Generated repository governance retains proposals through merge commits.
|
|
902
|
+
// Admit that exact shape, not arbitrary ancestry or an updated execution base.
|
|
903
|
+
const proposal = parents.length === 2 ? parents[1] : undefined;
|
|
904
|
+
const proposalParents = proposal ? commitParents(context, proposal) : [];
|
|
905
|
+
const exactRetentionShape = parents[0] === executionCommit &&
|
|
906
|
+
(parents.length === 1 ||
|
|
907
|
+
(proposal !== undefined &&
|
|
908
|
+
proposalParents.length === 1 &&
|
|
909
|
+
proposalParents[0] === executionCommit &&
|
|
910
|
+
treeObjectId(context, receiptCommit) ===
|
|
911
|
+
treeObjectId(context, proposal)));
|
|
855
912
|
const changedPaths = (git(context, [
|
|
856
913
|
'diff-tree',
|
|
857
914
|
'-r',
|
|
@@ -867,15 +924,14 @@ function assertCreateOnlyReceiptRetention(context, receiptCommit, executionCommi
|
|
|
867
924
|
.map((changedPath) => safeTrackedRepositoryPath(changedPath, 'git.blueprintVerificationReceiptRetention.changedPath'))
|
|
868
925
|
.sort();
|
|
869
926
|
const retainedPaths = [...paths].sort();
|
|
870
|
-
if (
|
|
871
|
-
parents[0] !== executionCommit ||
|
|
927
|
+
if (!exactRetentionShape ||
|
|
872
928
|
retainedPaths.length === 0 ||
|
|
873
929
|
retainedPaths.length !== changedPaths.length ||
|
|
874
930
|
retainedPaths.some((path, index) => path !== changedPaths[index]) ||
|
|
875
931
|
retainedPaths.some((path) => !VERIFICATION_RECEIPT_PATH.test(path) ||
|
|
876
932
|
blobObjectId(context, executionCommit, path) !== undefined ||
|
|
877
933
|
blobObjectId(context, receiptCommit, path) === undefined)) {
|
|
878
|
-
throw new errors_js_1.SupplyChainError('supply-chain-blueprint-untrusted', `${receiptCommit}:${VERIFICATION_RECEIPT_DIRECTORY}`, 'protected Blueprint verification receipt retention must be one
|
|
934
|
+
throw new errors_js_1.SupplyChainError('supply-chain-blueprint-untrusted', `${receiptCommit}:${VERIFICATION_RECEIPT_DIRECTORY}`, 'protected Blueprint verification receipt retention must be one receipt-only, create-only commit whose first parent is the exact execution commit shared by the complete final set; a two-parent PR merge must retain the exact tree of a one-parent proposal directly on that same execution commit. The execution tree must lack every retained receipt path and the changed paths must equal the complete set');
|
|
879
935
|
}
|
|
880
936
|
}
|
|
881
937
|
function latestReceiptSetCommit(context, tip, paths, label) {
|
|
@@ -1084,6 +1140,10 @@ function inspectBlueprintTrustGitAuthority(input) {
|
|
|
1084
1140
|
}
|
|
1085
1141
|
const protectedStates = historyStates(context, protectedCommits, policyPath, snapshotPath);
|
|
1086
1142
|
const protectedHistory = (0, blueprint_trust_js_1.validateBlueprintTrustHistory)(protectedStates);
|
|
1143
|
+
const protectedBaseline = protectedStates[0]?.commit;
|
|
1144
|
+
if (!protectedBaseline) {
|
|
1145
|
+
throw new errors_js_1.SupplyChainError('supply-chain-blueprint-untrusted', `${authorityCommit}:ownership`, 'cannot establish the first protected Blueprint trust authority commit');
|
|
1146
|
+
}
|
|
1087
1147
|
const authorization = (0, blueprint_trust_js_1.createBlueprintTrustState)(protectedStates.at(-1));
|
|
1088
1148
|
const mergeBase = git(context, ['merge-base', authorityCommit, headCommit]);
|
|
1089
1149
|
if (!mergeBase || !FULL_GIT_OBJECT_ID.test(mergeBase)) {
|
|
@@ -1102,6 +1162,7 @@ function inspectBlueprintTrustGitAuthority(input) {
|
|
|
1102
1162
|
candidateCommits.push(headCommit);
|
|
1103
1163
|
const candidateStates = historyStates(context, candidateCommits, policyPath, snapshotPath);
|
|
1104
1164
|
const candidateHistory = (0, blueprint_trust_js_1.validateBlueprintTrustHistory)(candidateStates);
|
|
1165
|
+
const headBaseline = blueprintTrustAuthorityBaseline(context, headCommit, policyPath, snapshotPath);
|
|
1105
1166
|
const head = (0, blueprint_trust_js_1.createBlueprintTrustState)(candidateStates.at(-1));
|
|
1106
1167
|
if ((0, blueprint_trust_js_1.blueprintTrustStateDigest)(authorization) !== (0, blueprint_trust_js_1.blueprintTrustStateDigest)(head)) {
|
|
1107
1168
|
(0, blueprint_trust_js_1.planBlueprintTrustStateTransition)(authorization, head);
|
|
@@ -1112,7 +1173,7 @@ function inspectBlueprintTrustGitAuthority(input) {
|
|
|
1112
1173
|
: (0, blueprint_trust_js_1.planBlueprintTrustStateTransition)(head, current).receipt;
|
|
1113
1174
|
return {
|
|
1114
1175
|
authorization,
|
|
1115
|
-
builtInProvenance: builtInProvenance(context, input, headCommit, authorityCommit),
|
|
1176
|
+
builtInProvenance: builtInProvenance(context, input, headCommit, headBaseline, authorityCommit, protectedBaseline),
|
|
1116
1177
|
candidateHistory,
|
|
1117
1178
|
headCommit,
|
|
1118
1179
|
protectedCommit: authorityCommit,
|
|
@@ -212,6 +212,38 @@ function readExternalNxConfiguration(path, label) {
|
|
|
212
212
|
* project identity into Foundation or another Product Slice.
|
|
213
213
|
*/
|
|
214
214
|
function assertExternalBlueprintNxProjectConfinement(input) {
|
|
215
|
+
assertExternalBlueprintNxProjectConfinementInternal(input, false);
|
|
216
|
+
}
|
|
217
|
+
function workspaceCacheIsIgnored(workspaceRoot) {
|
|
218
|
+
const ignorePath = (0, node_path_1.join)(workspaceRoot, '.gitignore');
|
|
219
|
+
if (!(0, node_fs_1.existsSync)(ignorePath))
|
|
220
|
+
return false;
|
|
221
|
+
const lines = readExternalNxConfiguration(ignorePath, 'Developer-Agent workspace ignore authority').split(/\r?\n/gu);
|
|
222
|
+
let cacheRule = -1;
|
|
223
|
+
for (const [index, line] of lines.entries()) {
|
|
224
|
+
if ([
|
|
225
|
+
'.ebk',
|
|
226
|
+
'.ebk/',
|
|
227
|
+
'.ebk/cache',
|
|
228
|
+
'.ebk/cache/',
|
|
229
|
+
'/.ebk',
|
|
230
|
+
'/.ebk/',
|
|
231
|
+
'/.ebk/cache',
|
|
232
|
+
'/.ebk/cache/',
|
|
233
|
+
].includes(line)) {
|
|
234
|
+
cacheRule = index;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
return (cacheRule >= 0 &&
|
|
238
|
+
lines.slice(cacheRule + 1).every((line) => {
|
|
239
|
+
if (!line.startsWith('!'))
|
|
240
|
+
return true;
|
|
241
|
+
const pattern = line.slice(1);
|
|
242
|
+
return !(/^\/?\.ebk(?:$|\/|[*?[])/u.test(pattern) ||
|
|
243
|
+
/^\*\*\/\.ebk(?:$|\/|[*?[])/u.test(pattern));
|
|
244
|
+
}));
|
|
245
|
+
}
|
|
246
|
+
function assertExternalBlueprintNxProjectConfinementInternal(input, ignoreWorkspaceCache) {
|
|
215
247
|
const workspaceRoot = (0, node_fs_1.realpathSync)((0, node_path_1.resolve)(input.workspaceRoot));
|
|
216
248
|
const packagesRoot = (0, node_path_1.join)(workspaceRoot, 'packages');
|
|
217
249
|
const roots = new Set();
|
|
@@ -290,8 +322,28 @@ function assertExternalBlueprintNxProjectConfinement(input) {
|
|
|
290
322
|
continue;
|
|
291
323
|
}
|
|
292
324
|
const candidate = (0, node_path_1.join)(directory, entry.name);
|
|
325
|
+
if (ignoreWorkspaceCache &&
|
|
326
|
+
root === '.' &&
|
|
327
|
+
relativePath === '.ebk/cache') {
|
|
328
|
+
if (!entry.isDirectory() || (0, node_fs_1.realpathSync)(candidate) !== candidate) {
|
|
329
|
+
throw new Error('Developer-Agent Nx configuration requires one canonical workspace cache directory.');
|
|
330
|
+
}
|
|
331
|
+
continue;
|
|
332
|
+
}
|
|
293
333
|
if (entry.isSymbolicLink()) {
|
|
294
|
-
|
|
334
|
+
let targetIsDirectory = true;
|
|
335
|
+
try {
|
|
336
|
+
targetIsDirectory = (0, node_fs_1.statSync)(candidate).isDirectory();
|
|
337
|
+
}
|
|
338
|
+
catch {
|
|
339
|
+
throw new Error(`External Blueprint Nx configuration refuses unresolved symbolic-link authority at ${root}/${relativePath}.`);
|
|
340
|
+
}
|
|
341
|
+
const normalizedName = entry.name.normalize('NFC').toLowerCase();
|
|
342
|
+
if (targetIsDirectory ||
|
|
343
|
+
['package.json', 'project.json'].includes(normalizedName)) {
|
|
344
|
+
throw new Error(`External Blueprint Nx configuration refuses symbolic-link authority at ${root}/${relativePath}.`);
|
|
345
|
+
}
|
|
346
|
+
continue;
|
|
295
347
|
}
|
|
296
348
|
if (entry.isDirectory()) {
|
|
297
349
|
if ((0, node_fs_1.realpathSync)(candidate) !== candidate) {
|
|
@@ -342,12 +394,12 @@ function assertExternalBlueprintNxProjectConfinement(input) {
|
|
|
342
394
|
*/
|
|
343
395
|
function assertDeveloperAgentNxProjectConfinement(workspaceRoot) {
|
|
344
396
|
const canonicalRoot = (0, node_fs_1.realpathSync)((0, node_path_1.resolve)(workspaceRoot));
|
|
345
|
-
|
|
397
|
+
assertExternalBlueprintNxProjectConfinementInternal({
|
|
346
398
|
externalRoots: [],
|
|
347
399
|
includeWorkspaceRoot: true,
|
|
348
400
|
packageNxPathMatchers: workspacePackageMatchers(canonicalRoot),
|
|
349
401
|
workspaceRoot: canonicalRoot,
|
|
350
|
-
});
|
|
402
|
+
}, workspaceCacheIsIgnored(canonicalRoot));
|
|
351
403
|
}
|
|
352
404
|
function forbiddenConfigurationName(name) {
|
|
353
405
|
const normalized = name.toLowerCase();
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.assertBuildOutputDirectoryInventoryBound = assertBuildOutputDirectoryInventoryBound;
|
|
4
|
+
const errors_js_1 = require("./errors.js");
|
|
5
|
+
const MAX_DIRECTORIES = 4_096;
|
|
6
|
+
/** Exact internal enforcement seam for portable mutation tests. */
|
|
7
|
+
function assertBuildOutputDirectoryInventoryBound(visitedDirectories, pointer) {
|
|
8
|
+
if (visitedDirectories > MAX_DIRECTORIES) {
|
|
9
|
+
throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'exceeds the bounded build-output directory inventory');
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=build-output-bounds.js.map
|