@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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CycloneDxComponentInput } from './sbom.js';
|
|
2
2
|
export declare const NEXTJS_BUILD_OUTPUT_INVENTORY_KIND: "ebk-nextjs-build-output-inventory";
|
|
3
|
-
export declare const NEXTJS_BUILD_OUTPUT_INVENTORY_SCHEMA_VERSION:
|
|
3
|
+
export declare const NEXTJS_BUILD_OUTPUT_INVENTORY_SCHEMA_VERSION: 2;
|
|
4
4
|
export interface NextJsBuildOutputInventory {
|
|
5
5
|
artifactFamily: 'nextjs-build-output';
|
|
6
6
|
artifactId: string;
|
|
@@ -13,6 +13,12 @@ export interface NextJsBuildOutputInventory {
|
|
|
13
13
|
size: number;
|
|
14
14
|
}[];
|
|
15
15
|
kind: typeof NEXTJS_BUILD_OUTPUT_INVENTORY_KIND;
|
|
16
|
+
links: readonly {
|
|
17
|
+
path: string;
|
|
18
|
+
target: string;
|
|
19
|
+
targetKind: 'directory' | 'file';
|
|
20
|
+
targetTextSha256: string;
|
|
21
|
+
}[];
|
|
16
22
|
materialDigest: string;
|
|
17
23
|
schemaVersion: typeof NEXTJS_BUILD_OUTPUT_INVENTORY_SCHEMA_VERSION;
|
|
18
24
|
sourceCommit: string;
|
|
@@ -11,17 +11,37 @@ const validation_js_1 = require("../validation.js");
|
|
|
11
11
|
const common_js_1 = require("./common.js");
|
|
12
12
|
const errors_js_1 = require("./errors.js");
|
|
13
13
|
const license_expression_js_1 = require("./license-expression.js");
|
|
14
|
+
const build_output_bounds_js_1 = require("./build-output-bounds.js");
|
|
14
15
|
exports.NEXTJS_BUILD_OUTPUT_INVENTORY_KIND = 'ebk-nextjs-build-output-inventory';
|
|
15
|
-
exports.NEXTJS_BUILD_OUTPUT_INVENTORY_SCHEMA_VERSION =
|
|
16
|
+
exports.NEXTJS_BUILD_OUTPUT_INVENTORY_SCHEMA_VERSION = 2;
|
|
16
17
|
const MAX_FILES = 50_000;
|
|
17
|
-
const MAX_DIRECTORIES = 4_096;
|
|
18
18
|
const MAX_FILE_BYTES = 100 * 1024 * 1024;
|
|
19
19
|
const MAX_TOTAL_BYTES = 2 * 1024 * 1024 * 1024;
|
|
20
20
|
const MAX_MATERIAL_PATHS = 64;
|
|
21
21
|
const MAX_TRACE_REFERENCES = MAX_FILES;
|
|
22
|
+
const MAX_LINKS = 4_096;
|
|
23
|
+
const MAX_LINK_TARGET_BYTES = 4_096;
|
|
22
24
|
function npmPurl(name, version) {
|
|
23
25
|
return `pkg:npm/${encodeURIComponent(name)}@${version}`;
|
|
24
26
|
}
|
|
27
|
+
function sameFilesystemIdentity(left, right) {
|
|
28
|
+
return left.dev === right.dev && left.ino === right.ino;
|
|
29
|
+
}
|
|
30
|
+
function filesystemIdentity(path, pointer) {
|
|
31
|
+
try {
|
|
32
|
+
const metadata = (0, node_fs_1.lstatSync)(path, { bigint: true });
|
|
33
|
+
if (metadata.ino === 0n)
|
|
34
|
+
throw new Error();
|
|
35
|
+
return { dev: metadata.dev, ino: metadata.ino };
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'does not identify one stable build-output filesystem object');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function filesystemIdentityKey(path, pointer) {
|
|
42
|
+
const identity = filesystemIdentity(path, pointer);
|
|
43
|
+
return `${identity.dev}:${identity.ino}`;
|
|
44
|
+
}
|
|
25
45
|
function normalizedChild(root, path, pointer) {
|
|
26
46
|
const child = (0, node_path_1.relative)(root, path);
|
|
27
47
|
if (child === '' ||
|
|
@@ -32,6 +52,34 @@ function normalizedChild(root, path, pointer) {
|
|
|
32
52
|
}
|
|
33
53
|
return child.split(node_path_1.sep).join('/');
|
|
34
54
|
}
|
|
55
|
+
function normalizedRealChild(rootIdentity, path, pointer) {
|
|
56
|
+
const segments = [];
|
|
57
|
+
let current = path;
|
|
58
|
+
for (let depth = 0; depth <= 1024; depth += 1) {
|
|
59
|
+
let identity;
|
|
60
|
+
try {
|
|
61
|
+
identity = (0, node_fs_1.lstatSync)(current, { bigint: true });
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
if (identity.dev === rootIdentity.dev &&
|
|
67
|
+
identity.ino === rootIdentity.ino) {
|
|
68
|
+
if (segments.length === 0)
|
|
69
|
+
break;
|
|
70
|
+
return segments.reverse().join('/');
|
|
71
|
+
}
|
|
72
|
+
const parent = (0, node_path_1.dirname)(current);
|
|
73
|
+
if (parent === current)
|
|
74
|
+
break;
|
|
75
|
+
const segment = (0, node_path_1.basename)(current);
|
|
76
|
+
if (!segment || segment === '.' || segment === '..')
|
|
77
|
+
break;
|
|
78
|
+
segments.push(segment);
|
|
79
|
+
current = parent;
|
|
80
|
+
}
|
|
81
|
+
throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'resolves outside the build-output repository boundary');
|
|
82
|
+
}
|
|
35
83
|
function repositoryRelativePath(repositoryRoot, value, pointer) {
|
|
36
84
|
if (typeof value !== 'string' ||
|
|
37
85
|
value === '' ||
|
|
@@ -66,7 +114,7 @@ function repositoryRelativePath(repositoryRoot, value, pointer) {
|
|
|
66
114
|
}
|
|
67
115
|
return { absolute, path };
|
|
68
116
|
}
|
|
69
|
-
function readJsonEvidence(
|
|
117
|
+
function readJsonEvidence(repositoryRootIdentity, absoluteInput, pointer) {
|
|
70
118
|
let absolute;
|
|
71
119
|
try {
|
|
72
120
|
absolute = (0, node_fs_1.realpathSync)(absoluteInput);
|
|
@@ -74,7 +122,7 @@ function readJsonEvidence(repositoryRoot, absoluteInput, pointer) {
|
|
|
74
122
|
catch {
|
|
75
123
|
throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'does not identify readable build-output evidence');
|
|
76
124
|
}
|
|
77
|
-
const path =
|
|
125
|
+
const path = normalizedRealChild(repositoryRootIdentity, absolute, pointer);
|
|
78
126
|
let metadata;
|
|
79
127
|
try {
|
|
80
128
|
metadata = (0, node_fs_1.lstatSync)(absolute);
|
|
@@ -171,17 +219,91 @@ function createNextJsBuildOutputInventory(input) {
|
|
|
171
219
|
throw new errors_js_1.SupplyChainError('supply-chain-input-invalid', 'buildOutput', 'must identify one exact release candidate and nonempty material boundary');
|
|
172
220
|
}
|
|
173
221
|
let repositoryRoot;
|
|
222
|
+
let repositoryRootIdentity;
|
|
174
223
|
try {
|
|
175
224
|
repositoryRoot = (0, node_fs_1.realpathSync)((0, node_path_1.resolve)(input.repositoryRoot));
|
|
225
|
+
const identity = (0, node_fs_1.lstatSync)(repositoryRoot, { bigint: true });
|
|
226
|
+
if (!identity.isDirectory() || identity.ino === 0n)
|
|
227
|
+
throw new Error();
|
|
228
|
+
repositoryRootIdentity = { dev: identity.dev, ino: identity.ino };
|
|
176
229
|
}
|
|
177
230
|
catch {
|
|
178
231
|
throw new errors_js_1.SupplyChainError('supply-chain-input-invalid', 'repositoryRoot', 'must identify one existing repository root');
|
|
179
232
|
}
|
|
180
233
|
const files = new Map();
|
|
234
|
+
const links = new Map();
|
|
181
235
|
const materialFiles = new Map();
|
|
236
|
+
const compilerCacheDirectories = new Set();
|
|
182
237
|
let visitedDirectories = 0;
|
|
183
238
|
let discoveredBytes = 0;
|
|
239
|
+
const addLink = (absoluteInput, pointer) => {
|
|
240
|
+
let metadata;
|
|
241
|
+
let targetText;
|
|
242
|
+
let absolute;
|
|
243
|
+
try {
|
|
244
|
+
metadata = (0, node_fs_1.lstatSync)(absoluteInput);
|
|
245
|
+
targetText = (0, node_fs_1.readlinkSync)(absoluteInput, 'utf8');
|
|
246
|
+
absolute = (0, node_fs_1.realpathSync)(absoluteInput);
|
|
247
|
+
}
|
|
248
|
+
catch {
|
|
249
|
+
throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'does not identify one readable build-output symbolic link');
|
|
250
|
+
}
|
|
251
|
+
if (!metadata.isSymbolicLink() ||
|
|
252
|
+
Buffer.byteLength(targetText, 'utf8') > MAX_LINK_TARGET_BYTES) {
|
|
253
|
+
throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'must identify one bounded build-output symbolic link');
|
|
254
|
+
}
|
|
255
|
+
const path = normalizedChild(repositoryRoot, absoluteInput, pointer);
|
|
256
|
+
const target = normalizedRealChild(repositoryRootIdentity, absolute, pointer);
|
|
257
|
+
const targetMetadata = (0, node_fs_1.lstatSync)(absolute);
|
|
258
|
+
const targetKind = targetMetadata.isDirectory()
|
|
259
|
+
? 'directory'
|
|
260
|
+
: targetMetadata.isFile()
|
|
261
|
+
? 'file'
|
|
262
|
+
: undefined;
|
|
263
|
+
if (!targetKind) {
|
|
264
|
+
throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'must resolve to one regular file or directory in the repository');
|
|
265
|
+
}
|
|
266
|
+
const record = {
|
|
267
|
+
path,
|
|
268
|
+
target,
|
|
269
|
+
targetKind,
|
|
270
|
+
targetTextSha256: (0, node_crypto_1.createHash)('sha256')
|
|
271
|
+
.update(targetText, 'utf8')
|
|
272
|
+
.digest('hex'),
|
|
273
|
+
};
|
|
274
|
+
const existing = links.get(path);
|
|
275
|
+
if (existing && (0, common_js_1.supplyChainDigest)(existing) !== (0, common_js_1.supplyChainDigest)(record)) {
|
|
276
|
+
throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'aliases one build-output link to multiple targets');
|
|
277
|
+
}
|
|
278
|
+
if (!existing && links.size >= MAX_LINKS) {
|
|
279
|
+
throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'exceeds the bounded build-output link inventory');
|
|
280
|
+
}
|
|
281
|
+
links.set(path, record);
|
|
282
|
+
return { absolute, targetKind };
|
|
283
|
+
};
|
|
284
|
+
const capturePathLinks = (absoluteInput, pointer) => {
|
|
285
|
+
const path = normalizedChild(repositoryRoot, absoluteInput, pointer);
|
|
286
|
+
let current = repositoryRoot;
|
|
287
|
+
let finalIsSymbolicLink = false;
|
|
288
|
+
const segments = path.split('/');
|
|
289
|
+
for (const [index, segment] of segments.entries()) {
|
|
290
|
+
current = (0, node_path_1.join)(current, segment);
|
|
291
|
+
let metadata;
|
|
292
|
+
try {
|
|
293
|
+
metadata = (0, node_fs_1.lstatSync)(current);
|
|
294
|
+
}
|
|
295
|
+
catch {
|
|
296
|
+
throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'does not identify a readable build-output path');
|
|
297
|
+
}
|
|
298
|
+
if (metadata.isSymbolicLink()) {
|
|
299
|
+
addLink(current, pointer);
|
|
300
|
+
finalIsSymbolicLink = index === segments.length - 1;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
return finalIsSymbolicLink;
|
|
304
|
+
};
|
|
184
305
|
const addFile = (absoluteInput, pointer) => {
|
|
306
|
+
const finalIsSymbolicLink = capturePathLinks(absoluteInput, pointer);
|
|
185
307
|
let absolute;
|
|
186
308
|
try {
|
|
187
309
|
absolute = (0, node_fs_1.realpathSync)(absoluteInput);
|
|
@@ -189,7 +311,7 @@ function createNextJsBuildOutputInventory(input) {
|
|
|
189
311
|
catch {
|
|
190
312
|
throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'does not identify a readable build-output file');
|
|
191
313
|
}
|
|
192
|
-
const path =
|
|
314
|
+
const path = normalizedRealChild(repositoryRootIdentity, absolute, pointer);
|
|
193
315
|
let metadata;
|
|
194
316
|
try {
|
|
195
317
|
metadata = (0, node_fs_1.lstatSync)(absolute);
|
|
@@ -197,7 +319,10 @@ function createNextJsBuildOutputInventory(input) {
|
|
|
197
319
|
catch {
|
|
198
320
|
throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'does not identify a readable build-output file');
|
|
199
321
|
}
|
|
322
|
+
const identity = filesystemIdentity(absolute, pointer);
|
|
200
323
|
const existing = files.get(path);
|
|
324
|
+
if (metadata.isDirectory() && finalIsSymbolicLink)
|
|
325
|
+
return undefined;
|
|
201
326
|
if (!metadata.isFile() || metadata.size > MAX_FILE_BYTES) {
|
|
202
327
|
throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'must be a bounded regular build-output file');
|
|
203
328
|
}
|
|
@@ -208,11 +333,12 @@ function createNextJsBuildOutputInventory(input) {
|
|
|
208
333
|
}
|
|
209
334
|
discoveredBytes += metadata.size;
|
|
210
335
|
}
|
|
211
|
-
else if (existing
|
|
336
|
+
else if (!sameFilesystemIdentity(existing.identity, identity)) {
|
|
212
337
|
throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'aliases one build-output path to multiple files');
|
|
213
338
|
}
|
|
214
|
-
|
|
215
|
-
|
|
339
|
+
const record = existing ?? { absolute, identity };
|
|
340
|
+
files.set(path, record);
|
|
341
|
+
return { absolute: record.absolute, path };
|
|
216
342
|
};
|
|
217
343
|
const visitMaterial = (absolute, pointer) => {
|
|
218
344
|
let metadata;
|
|
@@ -222,20 +348,31 @@ function createNextJsBuildOutputInventory(input) {
|
|
|
222
348
|
catch {
|
|
223
349
|
throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'does not identify an existing build-output material path');
|
|
224
350
|
}
|
|
351
|
+
// Only Next's direct compiler cache is outside emitted build material.
|
|
352
|
+
// Traces are still resolved through addFile, so a runtime reference into
|
|
353
|
+
// this directory cannot escape the normal bounds or content inventory.
|
|
354
|
+
if (compilerCacheDirectories.has(absolute)) {
|
|
355
|
+
if (!metadata.isDirectory() || metadata.isSymbolicLink()) {
|
|
356
|
+
throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'Next.js compiler cache must be a real directory');
|
|
357
|
+
}
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
225
360
|
if (metadata.isSymbolicLink()) {
|
|
226
|
-
|
|
361
|
+
addLink(absolute, pointer);
|
|
362
|
+
return;
|
|
227
363
|
}
|
|
228
364
|
if (metadata.isDirectory()) {
|
|
229
365
|
visitedDirectories += 1;
|
|
230
|
-
|
|
231
|
-
throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'exceeds the bounded build-output directory inventory');
|
|
232
|
-
}
|
|
366
|
+
(0, build_output_bounds_js_1.assertBuildOutputDirectoryInventoryBound)(visitedDirectories, pointer);
|
|
233
367
|
for (const child of (0, node_fs_1.readdirSync)(absolute).sort()) {
|
|
234
368
|
visitMaterial((0, node_path_1.join)(absolute, child), pointer);
|
|
235
369
|
}
|
|
236
370
|
return;
|
|
237
371
|
}
|
|
238
372
|
const file = addFile(absolute, pointer);
|
|
373
|
+
if (!file) {
|
|
374
|
+
throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'must identify a regular build-output file');
|
|
375
|
+
}
|
|
239
376
|
materialFiles.set(file.path, file);
|
|
240
377
|
};
|
|
241
378
|
const materialPaths = input.materialPaths.map((path, index) => repositoryRelativePath(repositoryRoot, path, `materialPaths[${index}]`));
|
|
@@ -245,6 +382,11 @@ function createNextJsBuildOutputInventory(input) {
|
|
|
245
382
|
if (materialPaths.some(({ path }, index) => materialPaths.some(({ path: other }, otherIndex) => index !== otherIndex && other.startsWith(`${path}/`)))) {
|
|
246
383
|
throw new errors_js_1.SupplyChainError('supply-chain-input-invalid', 'materialPaths', 'must contain disjoint non-overlapping build-output boundaries');
|
|
247
384
|
}
|
|
385
|
+
for (const { absolute } of materialPaths) {
|
|
386
|
+
if ((0, node_path_1.basename)(absolute) === '.next') {
|
|
387
|
+
compilerCacheDirectories.add((0, node_path_1.join)(absolute, 'cache'));
|
|
388
|
+
}
|
|
389
|
+
}
|
|
248
390
|
materialPaths.forEach(({ absolute }, index) => visitMaterial(absolute, `materialPaths[${index}]`));
|
|
249
391
|
const traces = [...materialFiles.values()].filter(({ path }) => path.endsWith('.nft.json'));
|
|
250
392
|
if (traces.length === 0) {
|
|
@@ -252,7 +394,7 @@ function createNextJsBuildOutputInventory(input) {
|
|
|
252
394
|
}
|
|
253
395
|
const packages = new Map();
|
|
254
396
|
for (const trace of traces) {
|
|
255
|
-
const document = readJsonEvidence(
|
|
397
|
+
const document = readJsonEvidence(repositoryRootIdentity, trace.absolute, trace.path).value;
|
|
256
398
|
if (!(0, validation_js_1.isRecord)(document) ||
|
|
257
399
|
document.version !== 1 ||
|
|
258
400
|
!Array.isArray(document.files) ||
|
|
@@ -268,11 +410,13 @@ function createNextJsBuildOutputInventory(input) {
|
|
|
268
410
|
}
|
|
269
411
|
for (const [index, reference] of document.files.entries()) {
|
|
270
412
|
const traced = addFile((0, node_path_1.resolve)((0, node_path_1.dirname)(trace.absolute), reference), `${trace.path}#files[${index}]`);
|
|
413
|
+
if (!traced)
|
|
414
|
+
continue;
|
|
271
415
|
const packageRoot = packageRootForFile(traced.absolute);
|
|
272
416
|
if (!packageRoot)
|
|
273
417
|
continue;
|
|
274
418
|
const manifestPath = (0, node_path_1.join)(packageRoot, 'package.json');
|
|
275
|
-
const manifestFile = readJsonEvidence(
|
|
419
|
+
const manifestFile = readJsonEvidence(repositoryRootIdentity, manifestPath, `${trace.path}#files[${index}].package`);
|
|
276
420
|
const manifest = manifestFile.value;
|
|
277
421
|
if (!(0, validation_js_1.isRecord)(manifest) ||
|
|
278
422
|
typeof manifest.name !== 'string' ||
|
|
@@ -282,20 +426,24 @@ function createNextJsBuildOutputInventory(input) {
|
|
|
282
426
|
throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', manifestFile.path, 'must identify one exact traced npm package');
|
|
283
427
|
}
|
|
284
428
|
const identity = `${manifest.name}@${manifest.version}`;
|
|
429
|
+
const rootIdentity = filesystemIdentity(packageRoot, manifestFile.path);
|
|
285
430
|
const previous = packages.get(identity);
|
|
286
|
-
if (previous &&
|
|
431
|
+
if (previous &&
|
|
432
|
+
!sameFilesystemIdentity(previous.rootIdentity, rootIdentity)) {
|
|
287
433
|
throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', manifestFile.path, `contains ambiguous package bytes for ${identity}`);
|
|
288
434
|
}
|
|
289
|
-
|
|
435
|
+
if (!previous) {
|
|
436
|
+
packages.set(identity, { manifest, root: packageRoot, rootIdentity });
|
|
437
|
+
}
|
|
290
438
|
}
|
|
291
439
|
}
|
|
292
440
|
if (packages.size === 0) {
|
|
293
441
|
throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', 'buildOutput.components', 'the final bundle trace contains no attributable npm package bytes');
|
|
294
442
|
}
|
|
295
443
|
const importerPath = repositoryRelativePath(repositoryRoot, input.importerManifestPath, 'importerManifestPath');
|
|
296
|
-
const importerManifest = readJsonEvidence(
|
|
444
|
+
const importerManifest = readJsonEvidence(repositoryRootIdentity, importerPath.absolute, 'importerManifestPath').value;
|
|
297
445
|
const includedByManifest = new Map([...packages].map(([identity, record]) => [
|
|
298
|
-
(0, node_fs_1.realpathSync)((0, node_path_1.join)(record.root, 'package.json')),
|
|
446
|
+
filesystemIdentityKey((0, node_fs_1.realpathSync)((0, node_path_1.join)(record.root, 'package.json')), 'buildOutput.components'),
|
|
299
447
|
identity,
|
|
300
448
|
]));
|
|
301
449
|
const directIdentity = new Map();
|
|
@@ -310,7 +458,7 @@ function createNextJsBuildOutputInventory(input) {
|
|
|
310
458
|
const manifestPath = dependencyManifest((0, node_path_1.dirname)(importerPath.absolute), name);
|
|
311
459
|
const identity = manifestPath === undefined
|
|
312
460
|
? undefined
|
|
313
|
-
: includedByManifest.get(manifestPath);
|
|
461
|
+
: includedByManifest.get(filesystemIdentityKey(manifestPath, 'importerManifestPath'));
|
|
314
462
|
if (identity)
|
|
315
463
|
directIdentity.set(identity, scope);
|
|
316
464
|
}
|
|
@@ -328,7 +476,7 @@ function createNextJsBuildOutputInventory(input) {
|
|
|
328
476
|
const manifestPath = dependencyManifest(record.root, name);
|
|
329
477
|
const dependencyIdentity = manifestPath === undefined
|
|
330
478
|
? undefined
|
|
331
|
-
: includedByManifest.get(manifestPath);
|
|
479
|
+
: includedByManifest.get(filesystemIdentityKey(manifestPath, `buildOutput.components.${identity}`));
|
|
332
480
|
if (dependencyIdentity) {
|
|
333
481
|
const dependency = packages.get(dependencyIdentity);
|
|
334
482
|
if (!dependency)
|
|
@@ -353,8 +501,8 @@ function createNextJsBuildOutputInventory(input) {
|
|
|
353
501
|
let totalBytes = 0;
|
|
354
502
|
const fileInventory = [...files.entries()]
|
|
355
503
|
.sort(([left], [right]) => (0, deterministic_order_js_1.compareUtf16)(left, right))
|
|
356
|
-
.map(([path,
|
|
357
|
-
const content = (0, node_fs_1.readFileSync)(absolute);
|
|
504
|
+
.map(([path, record]) => {
|
|
505
|
+
const content = (0, node_fs_1.readFileSync)(record.absolute);
|
|
358
506
|
totalBytes += content.byteLength;
|
|
359
507
|
if (totalBytes > MAX_TOTAL_BYTES) {
|
|
360
508
|
throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', 'buildOutput.files', 'exceeds the bounded build-output byte inventory');
|
|
@@ -365,14 +513,19 @@ function createNextJsBuildOutputInventory(input) {
|
|
|
365
513
|
size: content.byteLength,
|
|
366
514
|
};
|
|
367
515
|
});
|
|
516
|
+
const linkInventory = [...links.values()].sort(({ path: left }, { path: right }) => (0, deterministic_order_js_1.compareUtf16)(left, right));
|
|
368
517
|
const normalized = {
|
|
369
518
|
artifactFamily: 'nextjs-build-output',
|
|
370
519
|
artifactId: input.artifactId,
|
|
371
520
|
candidateDigest: input.candidateDigest,
|
|
372
521
|
components,
|
|
373
|
-
contentDigest: (0, common_js_1.supplyChainDigest)(
|
|
522
|
+
contentDigest: (0, common_js_1.supplyChainDigest)({
|
|
523
|
+
files: fileInventory,
|
|
524
|
+
links: linkInventory,
|
|
525
|
+
}),
|
|
374
526
|
files: fileInventory,
|
|
375
527
|
kind: exports.NEXTJS_BUILD_OUTPUT_INVENTORY_KIND,
|
|
528
|
+
links: linkInventory,
|
|
376
529
|
schemaVersion: exports.NEXTJS_BUILD_OUTPUT_INVENTORY_SCHEMA_VERSION,
|
|
377
530
|
sourceCommit: input.sourceCommit,
|
|
378
531
|
};
|
|
@@ -386,7 +539,7 @@ function validateNextJsBuildOutputInventory(value, input) {
|
|
|
386
539
|
value.kind !== exports.NEXTJS_BUILD_OUTPUT_INVENTORY_KIND ||
|
|
387
540
|
value.schemaVersion !== exports.NEXTJS_BUILD_OUTPUT_INVENTORY_SCHEMA_VERSION ||
|
|
388
541
|
typeof value.materialDigest !== 'string') {
|
|
389
|
-
throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', 'buildOutput', 'must be an EBK Next.js build-output inventory
|
|
542
|
+
throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', 'buildOutput', 'must be an EBK Next.js build-output inventory v2');
|
|
390
543
|
}
|
|
391
544
|
const current = createNextJsBuildOutputInventory(input);
|
|
392
545
|
if ((0, common_js_1.supplyChainDigest)(value) !== (0, common_js_1.supplyChainDigest)(current) ||
|
|
@@ -6,9 +6,11 @@ export interface EcrInspectorScanTargetV1 {
|
|
|
6
6
|
deploymentBindingDigest: string;
|
|
7
7
|
imageDigest: string;
|
|
8
8
|
region: string;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
releaseCandidateArtifactDigest: string;
|
|
10
|
+
releaseCandidateArtifactId: string;
|
|
11
|
+
releaseCandidateDigest: string;
|
|
12
|
+
releaseCandidateProducerRunAttempt: string;
|
|
13
|
+
releaseCandidateProducerRunId: string;
|
|
12
14
|
repositoryName: string;
|
|
13
15
|
sbomDigest: string;
|
|
14
16
|
sbomInventoryScope: 'final-oci-contents';
|
|
@@ -46,9 +46,11 @@ function validateTarget(value) {
|
|
|
46
46
|
'deploymentBindingDigest',
|
|
47
47
|
'imageDigest',
|
|
48
48
|
'region',
|
|
49
|
-
'
|
|
50
|
-
'
|
|
51
|
-
'
|
|
49
|
+
'releaseCandidateArtifactDigest',
|
|
50
|
+
'releaseCandidateArtifactId',
|
|
51
|
+
'releaseCandidateDigest',
|
|
52
|
+
'releaseCandidateProducerRunAttempt',
|
|
53
|
+
'releaseCandidateProducerRunId',
|
|
52
54
|
'repositoryName',
|
|
53
55
|
'sbomDigest',
|
|
54
56
|
'sbomInventoryScope',
|
|
@@ -64,9 +66,11 @@ function validateTarget(value) {
|
|
|
64
66
|
deploymentBindingDigest: reference(value.deploymentBindingDigest, 'target.deploymentBindingDigest', common_js_1.SUPPLY_CHAIN_SHA256),
|
|
65
67
|
imageDigest: reference(value.imageDigest, 'target.imageDigest', IMAGE_DIGEST),
|
|
66
68
|
region: reference(value.region, 'target.region', REGION),
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
69
|
+
releaseCandidateArtifactDigest: reference(value.releaseCandidateArtifactDigest, 'target.releaseCandidateArtifactDigest', /^sha256:[a-f0-9]{64}$/),
|
|
70
|
+
releaseCandidateArtifactId: reference(value.releaseCandidateArtifactId, 'target.releaseCandidateArtifactId', /^[1-9]\d*$/),
|
|
71
|
+
releaseCandidateDigest: reference(value.releaseCandidateDigest, 'target.releaseCandidateDigest', common_js_1.SUPPLY_CHAIN_SHA256),
|
|
72
|
+
releaseCandidateProducerRunAttempt: reference(value.releaseCandidateProducerRunAttempt, 'target.releaseCandidateProducerRunAttempt', /^[1-9]\d*$/),
|
|
73
|
+
releaseCandidateProducerRunId: reference(value.releaseCandidateProducerRunId, 'target.releaseCandidateProducerRunId', /^[1-9]\d*$/),
|
|
70
74
|
repositoryName: reference(value.repositoryName, 'target.repositoryName', REPOSITORY),
|
|
71
75
|
sbomDigest: reference(value.sbomDigest, 'target.sbomDigest', common_js_1.SUPPLY_CHAIN_SHA256),
|
|
72
76
|
sbomInventoryScope: value.sbomInventoryScope === 'final-oci-contents'
|
|
@@ -309,7 +313,7 @@ function verifyEcrInspectorScanEvidence(value, expected) {
|
|
|
309
313
|
value.kind !== 'ebk-ecr-inspector-scan-evidence' ||
|
|
310
314
|
value.schemaVersion !== 1 ||
|
|
311
315
|
value.status !== 'complete') {
|
|
312
|
-
fail('ecrScanEvidence', 'does not bind the exact expected release image and SBOM', 'supply-chain-artifact-mismatch');
|
|
316
|
+
fail('ecrScanEvidence', 'does not bind the exact expected release candidate, image, and SBOM', 'supply-chain-artifact-mismatch');
|
|
313
317
|
}
|
|
314
318
|
const { materialDigest, ...unsigned } = value;
|
|
315
319
|
if (!common_js_1.SUPPLY_CHAIN_SHA256.test(materialDigest) ||
|
|
@@ -10,9 +10,11 @@ export interface EcsDeployedImageExpectedV1 {
|
|
|
10
10
|
deployment: EcsDeploymentSelectorV1;
|
|
11
11
|
imageReference: string;
|
|
12
12
|
region: string;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
releaseCandidateArtifactDigest: string;
|
|
14
|
+
releaseCandidateArtifactId: string;
|
|
15
|
+
releaseCandidateDigest: string;
|
|
16
|
+
releaseCandidateProducerRunAttempt: string;
|
|
17
|
+
releaseCandidateProducerRunId: string;
|
|
16
18
|
repositoryName: string;
|
|
17
19
|
sourceCommit: string;
|
|
18
20
|
stage: 'production' | 'staging';
|
|
@@ -43,9 +43,11 @@ function validateExpected(value) {
|
|
|
43
43
|
deployment: validateDeploymentSelector(value.deployment, accountId, region),
|
|
44
44
|
imageReference: expectedImageReference,
|
|
45
45
|
region,
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
releaseCandidateArtifactDigest: exactReference(value.releaseCandidateArtifactDigest, 'expected.releaseCandidateArtifactDigest', /^sha256:[a-f0-9]{64}$/),
|
|
47
|
+
releaseCandidateArtifactId: exactReference(value.releaseCandidateArtifactId, 'expected.releaseCandidateArtifactId', /^[1-9]\d*$/),
|
|
48
|
+
releaseCandidateDigest: exactReference(value.releaseCandidateDigest, 'expected.releaseCandidateDigest', common_js_1.SUPPLY_CHAIN_SHA256),
|
|
49
|
+
releaseCandidateProducerRunAttempt: exactReference(value.releaseCandidateProducerRunAttempt, 'expected.releaseCandidateProducerRunAttempt', /^[1-9]\d*$/),
|
|
50
|
+
releaseCandidateProducerRunId: exactReference(value.releaseCandidateProducerRunId, 'expected.releaseCandidateProducerRunId', /^[1-9]\d*$/),
|
|
49
51
|
repositoryName,
|
|
50
52
|
sourceCommit: exactReference(value.sourceCommit, 'expected.sourceCommit', COMMIT),
|
|
51
53
|
stage: value.stage === 'production' || value.stage === 'staging'
|
|
@@ -187,7 +189,7 @@ function repositoryFromImage(image, expected) {
|
|
|
187
189
|
}
|
|
188
190
|
function environmentMap(value) {
|
|
189
191
|
if (!Array.isArray(value)) {
|
|
190
|
-
return fail('taskDefinition.containerDefinitions[0].environment', 'must retain exact release identity environment values', 'supply-chain-artifact-mismatch');
|
|
192
|
+
return fail('taskDefinition.containerDefinitions[0].environment', 'must retain exact release-candidate identity environment values', 'supply-chain-artifact-mismatch');
|
|
191
193
|
}
|
|
192
194
|
const result = new Map();
|
|
193
195
|
for (const [index, entry] of value.entries()) {
|
|
@@ -774,9 +774,26 @@ function preflightRetainedReceiptPaths(paths) {
|
|
|
774
774
|
}
|
|
775
775
|
}
|
|
776
776
|
|
|
777
|
+
function serializeRetainedReceipt(receipt) {
|
|
778
|
+
let output = JSON.stringify(receipt, null, 2);
|
|
779
|
+
// These are the receipt schema's only primitive-array fields. Match the
|
|
780
|
+
// generated JSON format without loading mutable workspace formatter code or
|
|
781
|
+
// configuration in this protected execution child. Object arrays stay multiline.
|
|
782
|
+
for (const field of ['containerRegistries', 'verificationRoots']) {
|
|
783
|
+
const values = receipt[field];
|
|
784
|
+
const compact = ' ' + JSON.stringify(field) + ': [' +
|
|
785
|
+
values.map((value) => JSON.stringify(value)).join(', ') + ']';
|
|
786
|
+
if (compact.length + 1 <= 80) {
|
|
787
|
+
const expanded = JSON.stringify({ [field]: values }, null, 2).slice(2, -2);
|
|
788
|
+
output = output.replace(expanded, compact);
|
|
789
|
+
}
|
|
790
|
+
}
|
|
791
|
+
return output + '\n';
|
|
792
|
+
}
|
|
793
|
+
|
|
777
794
|
function writeRetainedReceipts(receipts) {
|
|
778
795
|
const prepared = receipts.map(({ reference, receipt }) => {
|
|
779
|
-
const output =
|
|
796
|
+
const output = serializeRetainedReceipt(receipt);
|
|
780
797
|
if (Buffer.byteLength(output, 'utf8') > MAX_OUTPUT_BYTES) {
|
|
781
798
|
throw receiptRetentionError(
|
|
782
799
|
'Blueprint verification receipt exceeds 256 KiB.',
|