@empire-builder-kit/nx 1.0.0-rc.30 → 1.0.0-rc.31
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/executors.json +8 -3
- package/package.json +10 -7
- package/src/aws/child-environment.d.ts +10 -0
- package/src/aws/child-environment.js +77 -0
- package/src/aws/child-environment.js.map +1 -0
- package/src/aws/identity.d.ts +13 -0
- package/src/aws/identity.js +41 -0
- package/src/aws/identity.js.map +1 -0
- package/src/aws-authority/index.d.ts +1 -0
- package/src/aws-authority/index.js +5 -0
- package/src/aws-authority/index.js.map +1 -0
- package/src/aws-authority/stage-authority.d.ts +238 -0
- package/src/aws-authority/stage-authority.js +2836 -0
- package/src/aws-authority/stage-authority.js.map +1 -0
- package/src/developer-agent/generator-planning.js +4 -4
- package/src/developer-agent/generator-planning.js.map +1 -1
- package/src/developer-agent/operation-registry.js +14 -6
- package/src/developer-agent/operation-registry.js.map +1 -1
- package/src/executors/deployment-plan/deployment-plan.js +1 -1
- package/src/executors/deployment-plan/deployment-plan.js.map +1 -1
- package/src/executors/foundation-preflight/foundation-preflight.d.ts +0 -1
- package/src/executors/foundation-preflight/foundation-preflight.js.map +1 -1
- package/src/executors/foundation-preflight/schema.json +0 -5
- package/src/executors/foundation-profile-preflight/foundation-profile-preflight.d.ts +12 -3
- package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js +95 -32
- package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js.map +1 -1
- package/src/executors/foundation-profile-preflight/production-database-safeguard.d.ts +64 -0
- package/src/executors/foundation-profile-preflight/production-database-safeguard.js +221 -0
- package/src/executors/foundation-profile-preflight/production-database-safeguard.js.map +1 -0
- package/src/executors/foundation-profile-preflight/schema.json +1 -6
- package/src/executors/foundation-remove-preflight/foundation-remove-preflight.d.ts +11 -1
- package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js +44 -21
- package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js.map +1 -1
- package/src/executors/foundation-remove-preflight/schema.json +6 -1
- package/src/executors/infrastructure-plan/infrastructure-plan.d.ts +25 -369
- package/src/executors/infrastructure-plan/infrastructure-plan.js +222 -5472
- package/src/executors/infrastructure-plan/infrastructure-plan.js.map +1 -1
- package/src/executors/infrastructure-plan/schema.json +8 -64
- 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/federated-credential-transport.js.map +1 -0
- package/src/executors/local-deploy/local-approval.d.ts +4 -9
- package/src/executors/local-deploy/local-approval.js +3 -7
- package/src/executors/local-deploy/local-approval.js.map +1 -1
- package/src/executors/local-deploy/local-deploy.d.ts +58 -43
- package/src/executors/local-deploy/local-deploy.js +938 -804
- package/src/executors/local-deploy/local-deploy.js.map +1 -1
- package/src/executors/local-deploy/schema.json +3 -20
- package/src/executors/refresh/refresh.js +2 -2
- package/src/executors/refresh/refresh.js.map +1 -1
- package/src/executors/remove/remove.js +2 -2
- package/src/executors/remove/remove.js.map +1 -1
- package/src/executors/router-waf-rehearsal/router-waf-rehearsal.d.ts +25 -1
- package/src/executors/router-waf-rehearsal/router-waf-rehearsal.js +905 -22
- package/src/executors/router-waf-rehearsal/router-waf-rehearsal.js.map +1 -1
- package/src/executors/router-waf-rehearsal/schema.json +17 -2
- package/src/executors/secret-initialize/schema.json +42 -0
- package/src/executors/secret-initialize/secret-initialize.d.ts +30 -0
- package/src/executors/secret-initialize/secret-initialize.js +229 -0
- package/src/executors/secret-initialize/secret-initialize.js.map +1 -0
- package/src/executors/secret-metadata/secret-metadata.d.ts +2 -1
- package/src/executors/secret-metadata/secret-metadata.js +62 -29
- package/src/executors/secret-metadata/secret-metadata.js.map +1 -1
- 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/generated-secret-retirement.js.map +1 -0
- package/src/executors/sst-lifecycle/governed-native-operation.d.ts +46 -0
- package/src/executors/sst-lifecycle/governed-native-operation.js +153 -0
- package/src/executors/sst-lifecycle/governed-native-operation.js.map +1 -0
- package/src/executors/sst-lifecycle/run-sst-command.d.ts +25 -7
- package/src/executors/sst-lifecycle/run-sst-command.js +459 -89
- package/src/executors/sst-lifecycle/run-sst-command.js.map +1 -1
- package/src/executors/sst-lifecycle/schema.json +0 -5
- 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/secret-preflight.js.map +1 -1
- package/src/executors/unlock/unlock.js +2 -2
- package/src/executors/unlock/unlock.js.map +1 -1
- 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-rate-rehearsal.js.map +1 -0
- package/src/foundation/router-waf.d.ts +59 -9
- package/src/foundation/router-waf.js +427 -32
- package/src/foundation/router-waf.js.map +1 -1
- package/src/foundation/stages.d.ts +1 -0
- package/src/foundation/stages.js +11 -0
- package/src/foundation/stages.js.map +1 -1
- package/src/generators/formatting.d.ts +8 -0
- package/src/generators/formatting.js +118 -0
- package/src/generators/formatting.js.map +1 -0
- package/src/generators/function/function.js +37 -17
- package/src/generators/function/function.js.map +1 -1
- package/src/generators/post-generation-install.js +2 -2
- package/src/generators/post-generation-install.js.map +1 -1
- package/src/generators/preset/generator.js +22 -7
- package/src/generators/preset/generator.js.map +1 -1
- package/src/generators/preset/workspace-files-developer-agent.js +15 -7
- package/src/generators/preset/workspace-files-developer-agent.js.map +1 -1
- 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-ecr-inspector.js.map +1 -0
- 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-cost.js.map +1 -1
- package/src/generators/preset/workspace-files-performance-load.d.ts +1 -1
- package/src/generators/preset/workspace-files-performance-load.js +8 -12
- package/src/generators/preset/workspace-files-performance-load.js.map +1 -1
- package/src/generators/preset/workspace-files-stage-authority.d.ts +4 -0
- package/src/generators/preset/workspace-files-stage-authority.js +275 -0
- package/src/generators/preset/workspace-files-stage-authority.js.map +1 -0
- package/src/generators/preset/workspace-files-thin-deploy.d.ts +35 -0
- package/src/generators/preset/workspace-files-thin-deploy.js +1434 -0
- package/src/generators/preset/workspace-files-thin-deploy.js.map +1 -0
- package/src/generators/preset/workspace-files-thin-docs.d.ts +5 -0
- package/src/generators/preset/workspace-files-thin-docs.js +224 -0
- package/src/generators/preset/workspace-files-thin-docs.js.map +1 -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-thin-release.js.map +1 -0
- package/src/generators/preset/workspace-files.d.ts +1 -1
- package/src/generators/preset/workspace-files.js +373 -223
- package/src/generators/preset/workspace-files.js.map +1 -1
- package/src/generators/slice/built-in-plan-api-files.js +1 -0
- package/src/generators/slice/built-in-plan-api-files.js.map +1 -1
- package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js +4 -0
- package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js.map +1 -1
- package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js +5 -31
- package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js.map +1 -1
- package/src/generators/slice/built-in-plan-data-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-data-files.js +89 -30
- package/src/generators/slice/built-in-plan-data-files.js.map +1 -1
- package/src/generators/slice/built-in-plan-foundation-files.js +3 -5
- package/src/generators/slice/built-in-plan-foundation-files.js.map +1 -1
- package/src/generators/slice/built-in-plan-frontend-files.js +5 -1
- package/src/generators/slice/built-in-plan-frontend-files.js.map +1 -1
- package/src/generators/slice/built-in-plan-infrastructure-files.d.ts +1 -1
- package/src/generators/slice/built-in-plan-infrastructure-files.js +199 -188
- package/src/generators/slice/built-in-plan-infrastructure-files.js.map +1 -1
- package/src/generators/slice/built-in-plan-metadata-files.js +13 -0
- package/src/generators/slice/built-in-plan-metadata-files.js.map +1 -1
- 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 +307 -0
- package/src/generators/slice/built-in-plan-native-runtime-authority-files.js.map +1 -0
- package/src/generators/slice/built-in-plan-operations-files.js +43 -49
- package/src/generators/slice/built-in-plan-operations-files.js.map +1 -1
- package/src/generators/slice/built-in-plan-performance-files.js +37 -19
- package/src/generators/slice/built-in-plan-performance-files.js.map +1 -1
- package/src/generators/slice/built-in-plan-project-files.js +9 -68
- package/src/generators/slice/built-in-plan-project-files.js.map +1 -1
- 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 +74 -76
- package/src/generators/slice/built-in-plan-secret-runtime-files.js.map +1 -1
- package/src/generators/slice/built-in-plan-testing-files.js +74 -47
- package/src/generators/slice/built-in-plan-testing-files.js.map +1 -1
- 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 +129 -0
- package/src/generators/slice/built-in-plan-thin-release-files.js.map +1 -0
- package/src/generators/slice/built-in-plan-verification-files.js +6 -2
- package/src/generators/slice/built-in-plan-verification-files.js.map +1 -1
- package/src/generators/slice/built-in-plan-web-files.js +4 -2
- package/src/generators/slice/built-in-plan-web-files.js.map +1 -1
- package/src/generators/slice/built-in-plan-workload-role-files.js +26 -4
- package/src/generators/slice/built-in-plan-workload-role-files.js.map +1 -1
- package/src/generators/slice/built-in-plan.d.ts +1 -0
- package/src/generators/slice/built-in-plan.js +28 -11
- package/src/generators/slice/built-in-plan.js.map +1 -1
- package/src/generators/slice/slice.js +27 -29
- package/src/generators/slice/slice.js.map +1 -1
- package/src/generators/upgrade/upgrade.d.ts +1 -1
- package/src/generators/upgrade/upgrade.js +224 -69
- package/src/generators/upgrade/upgrade.js.map +1 -1
- package/src/generators/workload/performance-registration.d.ts +1 -0
- package/src/generators/workload/performance-registration.js +6 -4
- package/src/generators/workload/performance-registration.js.map +1 -1
- 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/service-performance-files.js.map +1 -1
- package/src/generators/workload/workload.d.ts +1 -1
- package/src/generators/workload/workload.js +55 -28
- package/src/generators/workload/workload.js.map +1 -1
- package/src/git-policy/github-bootstrap.d.ts +19 -6
- package/src/git-policy/github-bootstrap.js +103 -157
- package/src/git-policy/github-bootstrap.js.map +1 -1
- package/src/local-dev/private-state.d.ts +3 -0
- package/src/local-dev/private-state.js +17 -5
- package/src/local-dev/private-state.js.map +1 -1
- package/src/performance/cost-collection.d.ts +1 -1
- package/src/performance/cost-collection.js +4 -2
- package/src/performance/cost-collection.js.map +1 -1
- package/src/performance/cost-controls.d.ts +3 -1
- package/src/performance/cost-controls.js +9 -4
- package/src/performance/cost-controls.js.map +1 -1
- package/src/performance/evidence.d.ts +1 -1
- package/src/performance/evidence.js +5 -3
- package/src/performance/evidence.js.map +1 -1
- package/src/performance/load-safety.js +5 -3
- package/src/performance/load-safety.js.map +1 -1
- package/src/performance/model.d.ts +2 -2
- package/src/performance/model.js +4 -3
- package/src/performance/model.js.map +1 -1
- package/src/release/index.d.ts +0 -2
- package/src/release/index.js +0 -2
- package/src/release/index.js.map +1 -1
- package/src/release/source-authority.d.ts +4 -5
- package/src/release/source-authority.js +13 -123
- package/src/release/source-authority.js.map +1 -1
- package/src/repository-policy/aurora-preflight.d.ts +1 -1
- package/src/repository-policy/aurora-preflight.js +4 -1
- package/src/repository-policy/aurora-preflight.js.map +1 -1
- package/src/repository-policy/policy.d.ts +5 -1
- package/src/repository-policy/policy.js +64 -13
- package/src/repository-policy/policy.js.map +1 -1
- package/src/schemas/performance-policy-v1.json +3 -1
- package/src/secrets/adapters.d.ts +5 -1
- package/src/secrets/adapters.js +22 -1
- package/src/secrets/adapters.js.map +1 -1
- package/src/secrets/aws-control-plane.d.ts +10 -1
- package/src/secrets/aws-control-plane.js +67 -0
- package/src/secrets/aws-control-plane.js.map +1 -1
- package/src/secrets/generated-aws-control-plane.d.ts +23 -0
- package/src/secrets/generated-aws-control-plane.js +259 -0
- package/src/secrets/generated-aws-control-plane.js.map +1 -0
- package/src/secrets/metadata.js +38 -10
- package/src/secrets/metadata.js.map +1 -1
- package/src/secrets/model.d.ts +8 -1
- package/src/secrets/model.js +24 -3
- package/src/secrets/model.js.map +1 -1
- package/src/secrets/operator.d.ts +89 -3
- package/src/secrets/operator.js +422 -9
- package/src/secrets/operator.js.map +1 -1
- package/src/secrets/registry.d.ts +2 -1
- package/src/secrets/registry.js +18 -1
- package/src/secrets/registry.js.map +1 -1
- package/src/secrets/workload-access.js +10 -2
- package/src/secrets/workload-access.js.map +1 -1
- package/src/supply-chain/action-pins.js +61 -7
- package/src/supply-chain/action-pins.js.map +1 -1
- 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-bounds.js.map +1 -0
- package/src/supply-chain/build-output.js +2 -4
- package/src/supply-chain/build-output.js.map +1 -1
- package/src/supply-chain/ecr-scanning.d.ts +5 -3
- package/src/supply-chain/ecr-scanning.js +11 -7
- package/src/supply-chain/ecr-scanning.js.map +1 -1
- 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/ecs-deployed-image.js.map +1 -1
- package/src/supply-chain/generated-container-release-command.js +816 -34
- package/src/supply-chain/generated-container-release-command.js.map +1 -1
- package/src/supply-chain/generated-ecr-collector-command.d.ts +0 -1
- package/src/supply-chain/generated-ecr-collector-command.js +188 -91
- package/src/supply-chain/generated-ecr-collector-command.js.map +1 -1
- package/src/supply-chain/generated-files.js +4 -3
- package/src/supply-chain/generated-files.js.map +1 -1
- package/src/supply-chain/index.d.ts +1 -1
- package/src/supply-chain/index.js +2 -1
- package/src/supply-chain/index.js.map +1 -1
- package/src/workload-roles/index.d.ts +10 -17
- package/src/workload-roles/index.js +5 -18
- package/src/workload-roles/index.js.map +1 -1
|
@@ -6,16 +6,12 @@ const tool_versions_js_1 = require("../preset/tool-versions.js");
|
|
|
6
6
|
const built_in_plan_shared_js_1 = require("./built-in-plan-shared.js");
|
|
7
7
|
const personalStagePattern = '^personal-[a-z0-9](?:[a-z0-9-]{0,25}[a-z0-9])?$';
|
|
8
8
|
/** @internal */
|
|
9
|
-
function renderStandardSliceSecretRuntimeFiles(name) {
|
|
10
|
-
const pascalName = name
|
|
11
|
-
.split('-')
|
|
12
|
-
.map((part) => `${part.charAt(0).toUpperCase()}${part.slice(1)}`)
|
|
13
|
-
.join('');
|
|
9
|
+
function renderStandardSliceSecretRuntimeFiles(name, workspace = 'workspace') {
|
|
14
10
|
return {
|
|
15
11
|
'secrets/workload-access.json': (0, built_in_plan_shared_js_1.json)({
|
|
16
12
|
bindings: [
|
|
17
13
|
{
|
|
18
|
-
logicalName:
|
|
14
|
+
logicalName: 'GeneratedPerformanceLoadHmacKeys',
|
|
19
15
|
workload: `${name}.web-server`,
|
|
20
16
|
},
|
|
21
17
|
],
|
|
@@ -41,6 +37,7 @@ function declarationProjection(declaration) {
|
|
|
41
37
|
!hasOnlyProperties(declaration, [
|
|
42
38
|
'cache',
|
|
43
39
|
'contractVersion',
|
|
40
|
+
'generation',
|
|
44
41
|
'logicalName',
|
|
45
42
|
'owner',
|
|
46
43
|
'requiredStages',
|
|
@@ -56,17 +53,27 @@ function declarationProjection(declaration) {
|
|
|
56
53
|
declaration.requiredStages.some((stage) => typeof stage !== 'string') ||
|
|
57
54
|
!isRecord(declaration.rotation) ||
|
|
58
55
|
!['manual', 'provider-managed'].includes(declaration.rotation.mode) ||
|
|
59
|
-
!['aws-managed', 'database-bootstrap', 'operator'].includes(
|
|
56
|
+
!['aws-managed', 'database-bootstrap', 'generated', 'operator'].includes(
|
|
60
57
|
declaration.source,
|
|
61
58
|
) ||
|
|
62
59
|
!isRecord(declaration.value) ||
|
|
63
60
|
!hasOnlyProperties(declaration.value, ['kind', 'validate']) ||
|
|
64
61
|
!['binary', 'json', 'string'].includes(declaration.value.kind) ||
|
|
65
|
-
typeof declaration.value.validate !== 'function'
|
|
62
|
+
typeof declaration.value.validate !== 'function' ||
|
|
63
|
+
(declaration.source === 'generated') !==
|
|
64
|
+
(declaration.generation !== undefined) ||
|
|
65
|
+
(declaration.generation !== undefined &&
|
|
66
|
+
(!isRecord(declaration.generation) ||
|
|
67
|
+
!hasOnlyProperties(declaration.generation, ['kind']) ||
|
|
68
|
+
declaration.generation.kind !== 'hmac-key-ring-v1' ||
|
|
69
|
+
declaration.value.kind !== 'json'))
|
|
66
70
|
) {
|
|
67
71
|
throw new Error('invalid');
|
|
68
72
|
}
|
|
69
73
|
return {
|
|
74
|
+
...(declaration.generation === undefined
|
|
75
|
+
? {}
|
|
76
|
+
: { generation: { kind: declaration.generation.kind } }),
|
|
70
77
|
logicalName: declaration.logicalName,
|
|
71
78
|
owner: declaration.owner,
|
|
72
79
|
requiredStages: [...declaration.requiredStages],
|
|
@@ -80,7 +87,7 @@ function parseMetadata(value) {
|
|
|
80
87
|
if (
|
|
81
88
|
!isRecord(value) ||
|
|
82
89
|
!hasOnlyProperties(value, ['declarations', 'schemaVersion']) ||
|
|
83
|
-
value.schemaVersion !==
|
|
90
|
+
value.schemaVersion !== 2 ||
|
|
84
91
|
!Array.isArray(value.declarations)
|
|
85
92
|
) {
|
|
86
93
|
throw new Error('invalid');
|
|
@@ -90,6 +97,7 @@ function parseMetadata(value) {
|
|
|
90
97
|
if (
|
|
91
98
|
!isRecord(declaration) ||
|
|
92
99
|
!hasOnlyProperties(declaration, [
|
|
100
|
+
'generation',
|
|
93
101
|
'logicalName',
|
|
94
102
|
'owner',
|
|
95
103
|
'requiredStages',
|
|
@@ -106,9 +114,16 @@ function parseMetadata(value) {
|
|
|
106
114
|
!isRecord(declaration.rotation) ||
|
|
107
115
|
!hasOnlyProperties(declaration.rotation, ['mode']) ||
|
|
108
116
|
!['manual', 'provider-managed'].includes(declaration.rotation.mode) ||
|
|
109
|
-
!['aws-managed', 'database-bootstrap', 'operator'].includes(
|
|
117
|
+
!['aws-managed', 'database-bootstrap', 'generated', 'operator'].includes(
|
|
110
118
|
declaration.source,
|
|
111
119
|
) ||
|
|
120
|
+
(declaration.source === 'generated') !==
|
|
121
|
+
(declaration.generation !== undefined) ||
|
|
122
|
+
(declaration.generation !== undefined &&
|
|
123
|
+
(!isRecord(declaration.generation) ||
|
|
124
|
+
!hasOnlyProperties(declaration.generation, ['kind']) ||
|
|
125
|
+
declaration.generation.kind !== 'hmac-key-ring-v1' ||
|
|
126
|
+
declaration.valueKind !== 'json')) ||
|
|
112
127
|
!['binary', 'json', 'string'].includes(declaration.valueKind) ||
|
|
113
128
|
logicalNames.has(declaration.logicalName)
|
|
114
129
|
) {
|
|
@@ -116,6 +131,9 @@ function parseMetadata(value) {
|
|
|
116
131
|
}
|
|
117
132
|
logicalNames.add(declaration.logicalName);
|
|
118
133
|
return {
|
|
134
|
+
...(declaration.generation === undefined
|
|
135
|
+
? {}
|
|
136
|
+
: { generation: { kind: declaration.generation.kind } }),
|
|
119
137
|
logicalName: declaration.logicalName,
|
|
120
138
|
owner: declaration.owner,
|
|
121
139
|
requiredStages: [...declaration.requiredStages],
|
|
@@ -717,15 +735,15 @@ export function createStandardSliceSecretRuntime(
|
|
|
717
735
|
}
|
|
718
736
|
`,
|
|
719
737
|
'infra/personal-secrets.ts': `import {
|
|
738
|
+
canonicalOperatorSecretName,
|
|
720
739
|
parseSecretMetadataRegistry,
|
|
721
740
|
parseSecretWorkloadAccessRegistry,
|
|
722
741
|
personalSecretNamesForWorkload,
|
|
723
|
-
type SecretWorkloadAccessPlanEntry,
|
|
724
742
|
} from '@empire-builder-kit/nx/secrets';
|
|
725
743
|
import secretMetadataDocument from '../secrets/metadata.json';
|
|
726
744
|
import secretWorkloadAccessDocument from '../secrets/workload-access.json';
|
|
727
|
-
import {
|
|
728
|
-
import { standardSliceBoundOperatorSecretDeclarations } from './
|
|
745
|
+
import { createStandardSliceRuntimeTopology } from './native-runtime-authority/topology.js';
|
|
746
|
+
import { standardSliceBoundOperatorSecretDeclarations } from './native-runtime-authority/effective-intent.js';
|
|
729
747
|
|
|
730
748
|
const metadata = parseSecretMetadataRegistry(secretMetadataDocument);
|
|
731
749
|
const access = parseSecretWorkloadAccessRegistry(
|
|
@@ -806,84 +824,66 @@ function expectedBindingKeys(stage: string) {
|
|
|
806
824
|
);
|
|
807
825
|
}
|
|
808
826
|
|
|
809
|
-
function createProtectedLinks(
|
|
810
|
-
protectedAccess: readonly SecretWorkloadAccessPlanEntry[],
|
|
811
|
-
stage: string,
|
|
812
|
-
) {
|
|
827
|
+
function createProtectedLinks(stage: string) {
|
|
813
828
|
const expected = expectedBindingKeys(stage);
|
|
814
829
|
const observed = new Set<string>();
|
|
815
|
-
const linksByName = new Map<
|
|
816
|
-
string,
|
|
817
|
-
{ arn: string; resource: any }
|
|
818
|
-
>();
|
|
830
|
+
const linksByName = new Map<string, { resource: any }>();
|
|
819
831
|
const linksByWorkload = new Map<
|
|
820
832
|
string,
|
|
821
833
|
Array<{ logicalName: string; resource: any }>
|
|
822
834
|
>();
|
|
835
|
+
const declarationsByName = new Map(
|
|
836
|
+
metadata.declarations.map((declaration) => [
|
|
837
|
+
declaration.logicalName,
|
|
838
|
+
declaration,
|
|
839
|
+
]),
|
|
840
|
+
);
|
|
823
841
|
|
|
824
|
-
for (const entry of
|
|
842
|
+
for (const entry of access.bindings) {
|
|
843
|
+
const declaration = declarationsByName.get(entry.logicalName);
|
|
844
|
+
if (!declaration?.requiredStages.includes(stage)) continue;
|
|
825
845
|
if (
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
entry.
|
|
846
|
+
(declaration.source !== 'operator' &&
|
|
847
|
+
declaration.source !== 'generated') ||
|
|
848
|
+
!entry.workload.startsWith(workloadPrefix)
|
|
829
849
|
) {
|
|
830
850
|
throw new Error(
|
|
831
851
|
'Protected secret access differs from the declared workload registry.',
|
|
832
852
|
);
|
|
833
853
|
}
|
|
834
|
-
const
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
(candidate) =>
|
|
839
|
-
candidate.link.properties.logicalName === reference.logicalName,
|
|
854
|
+
const bindingKey = entry.workload + '\\0' + entry.logicalName;
|
|
855
|
+
if (!expected.has(bindingKey) || observed.has(bindingKey)) {
|
|
856
|
+
throw new Error(
|
|
857
|
+
'Protected secret access differs from the declared workload registry.',
|
|
840
858
|
);
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
link.permission.Action.length !== 1 ||
|
|
851
|
-
link.permission.Action[0] !== 'secretsmanager:GetSecretValue' ||
|
|
852
|
-
link.permission.Resource.length !== 1 ||
|
|
853
|
-
link.permission.Resource[0] !== reference.secretArn
|
|
854
|
-
) {
|
|
855
|
-
throw new Error(
|
|
856
|
-
'Protected secret access differs from the declared workload registry.',
|
|
857
|
-
);
|
|
858
|
-
}
|
|
859
|
-
observed.add(bindingKey);
|
|
860
|
-
const existing = linksByName.get(reference.logicalName);
|
|
861
|
-
if (existing && existing.arn !== reference.secretArn) {
|
|
862
|
-
throw new Error(
|
|
863
|
-
'A declared secret resolved to conflicting protected references.',
|
|
859
|
+
}
|
|
860
|
+
observed.add(bindingKey);
|
|
861
|
+
const existing = linksByName.get(entry.logicalName);
|
|
862
|
+
const resource =
|
|
863
|
+
existing?.resource ??
|
|
864
|
+
(() => {
|
|
865
|
+
const name = canonicalOperatorSecretName(
|
|
866
|
+
{ slice: '${name}', stage, workspace: '${workspace}' },
|
|
867
|
+
entry.logicalName,
|
|
864
868
|
);
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
existing?.resource ??
|
|
868
|
-
new sst.Linkable(reference.logicalName, {
|
|
869
|
+
const secret = aws.secretsmanager.getSecretOutput({ name });
|
|
870
|
+
return new sst.Linkable(entry.logicalName, {
|
|
869
871
|
properties: {
|
|
870
|
-
logicalName:
|
|
872
|
+
logicalName: entry.logicalName,
|
|
871
873
|
provider: 'aws-secrets-manager',
|
|
872
|
-
secretArn:
|
|
874
|
+
secretArn: secret.arn,
|
|
873
875
|
},
|
|
874
876
|
include: [
|
|
875
877
|
sst.aws.permission({
|
|
876
878
|
actions: ['secretsmanager:GetSecretValue'],
|
|
877
|
-
resources: [
|
|
879
|
+
resources: [secret.arn],
|
|
878
880
|
}),
|
|
879
881
|
],
|
|
880
882
|
});
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
resources.push({ logicalName: reference.logicalName, resource });
|
|
886
|
-
}
|
|
883
|
+
})();
|
|
884
|
+
linksByName.set(entry.logicalName, { resource });
|
|
885
|
+
const resources = linksByWorkload.get(entry.workload) ?? [];
|
|
886
|
+
resources.push({ logicalName: entry.logicalName, resource });
|
|
887
887
|
linksByWorkload.set(entry.workload, resources);
|
|
888
888
|
}
|
|
889
889
|
if (
|
|
@@ -898,13 +898,11 @@ function createProtectedLinks(
|
|
|
898
898
|
}
|
|
899
899
|
|
|
900
900
|
export function createStandardSliceSecretLinks(
|
|
901
|
-
input: {
|
|
902
|
-
protectedAccess?: readonly SecretWorkloadAccessPlanEntry[];
|
|
903
|
-
} = {},
|
|
901
|
+
input: Record<string, never> = {},
|
|
904
902
|
): StandardSliceSecretLinks {
|
|
905
903
|
if ($dev) {
|
|
906
904
|
if (
|
|
907
|
-
input.
|
|
905
|
+
Object.keys(input).length !== 0 ||
|
|
908
906
|
!personalStagePattern.test($app.stage)
|
|
909
907
|
) {
|
|
910
908
|
throw new Error(
|
|
@@ -913,7 +911,7 @@ export function createStandardSliceSecretLinks(
|
|
|
913
911
|
}
|
|
914
912
|
standardSliceBoundOperatorSecretDeclarations(
|
|
915
913
|
'development',
|
|
916
|
-
|
|
914
|
+
createStandardSliceRuntimeTopology('development'),
|
|
917
915
|
);
|
|
918
916
|
const resources = new Map(
|
|
919
917
|
metadata.declarations
|
|
@@ -968,10 +966,10 @@ export function createStandardSliceSecretLinks(
|
|
|
968
966
|
'A personal stage may run only under the SST development adapter.',
|
|
969
967
|
);
|
|
970
968
|
}
|
|
971
|
-
|
|
972
|
-
input
|
|
973
|
-
|
|
974
|
-
);
|
|
969
|
+
if (Object.keys(input).length !== 0) {
|
|
970
|
+
throw new Error('Protected secret link input must be empty.');
|
|
971
|
+
}
|
|
972
|
+
const linksByWorkload = createProtectedLinks($app.stage);
|
|
975
973
|
return {
|
|
976
974
|
linksForWorkload(
|
|
977
975
|
workload: string,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"built-in-plan-secret-runtime-files.js","sourceRoot":"","sources":["../../../../../../packages/nx/src/generators/slice/built-in-plan-secret-runtime-files.ts"],"names":[],"mappings":";;AAOA,
|
|
1
|
+
{"version":3,"file":"built-in-plan-secret-runtime-files.js","sourceRoot":"","sources":["../../../../../../packages/nx/src/generators/slice/built-in-plan-secret-runtime-files.ts"],"names":[],"mappings":";;AAOA,sFAs+BC;AA7+BD,gEAAkE;AAClE,iEAAmE;AACnE,uEAAiD;AAEjD,MAAM,oBAAoB,GAAG,iDAAiD,CAAC;AAE/E,gBAAgB;AAChB,SAAgB,qCAAqC,CACnD,IAAY,EACZ,SAAS,GAAG,WAAW;IAEvB,OAAO;QACL,8BAA8B,EAAE,IAAA,8BAAI,EAAC;YACnC,QAAQ,EAAE;gBACR;oBACE,WAAW,EAAE,kCAAkC;oBAC/C,QAAQ,EAAE,GAAG,IAAI,aAAa;iBAC/B;aACF;YACD,aAAa,EAAE,CAAC;SACjB,CAAC;QACF,sCAAsC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyO3C;QACG,qCAAqC,EAAE;;;;;;;;;;;;;;;;;;;gCAmBX,wCAAqB;0CACX,IAAA,gCAAiB,EACrD,aAAa,EACb,aAAa,CACd;gCAC2B,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAoOtC,IAAI;;;;;;;;;;cAUJ,IAAI;eACH,IAAI;;;;;cAKL,IAAI;;;;;;;gBAOF,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyDnB;QACG,oBAAoB,EAAE;;;;;;;;;;;;;;;;gCAgBM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwInD;QACG,2BAA2B,EAAE;;;;;;;;;;;;;;;gCAeD,oBAAoB;0BAC1B,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAiHR,IAAI,yBAAyB,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqI3D;KACE,CAAC;AACJ,CAAC"}
|
|
@@ -45,41 +45,25 @@ those validators enforce cross-field outcome rules and trusted time/workflow
|
|
|
45
45
|
context that JSON Schema cannot establish alone.
|
|
46
46
|
|
|
47
47
|
\`smoke-deployed-check\` only proves that Playwright can discover the suite. It
|
|
48
|
-
does not contact or prove a deployment.
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
\`clientId\`. Set \`EBK_SMOKE_AUTHORITY_VERSION\` to
|
|
54
|
-
\`cognito-admin-cloudwatch-observe-v1\` only after the protected role is reviewed for
|
|
55
|
-
\`DescribeUserPoolClient\`, \`AdminCreateUser\`, \`AdminSetUserPassword\`,
|
|
56
|
-
\`AdminAddUserToGroup\`, and \`AdminDeleteUser\` on those pools and
|
|
57
|
-
\`FilterLogEvents\` on each exact
|
|
58
|
-
\`/ebk/<stage>/<slice>/event-consumer\` log group. The workflow creates one
|
|
59
|
-
run-scoped synthetic customer in the Slice's narrow \`<slice>-test-writer\`
|
|
60
|
-
group and one distinct synthetic reviewer in \`<slice>-admin\`. It never grants
|
|
61
|
-
the customer administrator authority, strips AWS credentials from the browser
|
|
62
|
-
child,
|
|
63
|
-
observes the published event only from the credential-bearing parent, removes
|
|
64
|
-
both principals and all raw browser and log state, and retains only allowlisted
|
|
65
|
-
sanitized evidence.
|
|
48
|
+
does not contact or prove a deployment. The root governed lifecycle runs each
|
|
49
|
+
Slice's \`smoke-deployed\` target immediately after its successful native SST
|
|
50
|
+
deployment and migration. Local and GitHub execution use the same stage
|
|
51
|
+
deployment role and exact deployed outputs; no separate smoke role, workflow,
|
|
52
|
+
target registry, or staging-evidence reconciliation graph exists.
|
|
66
53
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
application mutation, wildcard Logs query, \`GetLogEvents\`, \`StartQuery\`, or
|
|
73
|
-
\`logs:Unmask\` authority. GitHub bootstrap verifies that the secret name exists
|
|
74
|
-
only in each protected environment; it never creates the secret or role and
|
|
75
|
-
cannot attest to the hidden role policy. Review that policy before setting the
|
|
76
|
-
authority-version acknowledgement.
|
|
54
|
+
Development and staging smoke wait up to sixteen minutes for the exact durable
|
|
55
|
+
event on the fifteen-minute nonproduction outbox schedule. Production waits up
|
|
56
|
+
to ninety seconds for the same proof on its one-minute schedule. These bounds
|
|
57
|
+
include CloudWatch Logs request latency and the runner aborts an in-flight
|
|
58
|
+
request when no bounded observation time remains.
|
|
77
59
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
60
|
+
The runner creates one run-scoped synthetic customer in the Slice's narrow
|
|
61
|
+
\`<slice>-test-writer\` group and one distinct synthetic reviewer in
|
|
62
|
+
\`<slice>-admin\`. It never grants the customer administrator authority, strips
|
|
63
|
+
AWS credentials from the browser child, observes the published event only from
|
|
64
|
+
the credential-bearing parent, removes both principals and all raw browser and
|
|
65
|
+
log state, and retains only allowlisted sanitized evidence. A failed smoke ends
|
|
66
|
+
the lifecycle immediately and no successful deployment receipt is written.
|
|
83
67
|
|
|
84
68
|
One optional evidence-level retry replays the complete, identical browser or
|
|
85
69
|
live-integration proof. Consequently \`counts.retried\` is always zero or one.
|
|
@@ -1333,6 +1317,7 @@ import {
|
|
|
1333
1317
|
writeFileSync,
|
|
1334
1318
|
} from 'node:fs';
|
|
1335
1319
|
import { join, relative, resolve } from 'node:path';
|
|
1320
|
+
import { performance } from 'node:perf_hooks';
|
|
1336
1321
|
import { createRequire } from 'node:module';
|
|
1337
1322
|
import { TextDecoder } from 'node:util';
|
|
1338
1323
|
import {
|
|
@@ -1397,6 +1382,14 @@ const userPoolId = process.env.EBK_SMOKE_USER_POOL_ID ?? '';
|
|
|
1397
1382
|
const clientId = process.env.EBK_SMOKE_CLIENT_ID ?? '';
|
|
1398
1383
|
const smokeAuthority =
|
|
1399
1384
|
process.env.EBK_SMOKE_AUTHORITY_VERSION ?? '';
|
|
1385
|
+
const lifecycleAdapter = process.env.EBK_NX_STAGE_LIFECYCLE ?? '';
|
|
1386
|
+
const deployedEnvironmentClass =
|
|
1387
|
+
lifecycleAdapter === 'local'
|
|
1388
|
+
? 'local-federated'
|
|
1389
|
+
: lifecycleAdapter === 'github'
|
|
1390
|
+
? 'protected-github'
|
|
1391
|
+
: undefined;
|
|
1392
|
+
const unexpectedArguments = process.argv.slice(2);
|
|
1400
1393
|
const requestedRunId = process.env.EBK_TEST_RUN_ID;
|
|
1401
1394
|
const runId = requestedRunId ?? randomUUID().replaceAll('-', '');
|
|
1402
1395
|
const seed = process.env.EBK_TEST_SEED ?? runId;
|
|
@@ -1483,7 +1476,7 @@ function failPreflight(
|
|
|
1483
1476
|
attempts: [],
|
|
1484
1477
|
cleanup,
|
|
1485
1478
|
environment: {
|
|
1486
|
-
class: '
|
|
1479
|
+
class: deployedEnvironmentClass ?? 'unresolved-adapter',
|
|
1487
1480
|
deployed: true,
|
|
1488
1481
|
stage: stage || 'unresolved',
|
|
1489
1482
|
},
|
|
@@ -1690,6 +1683,18 @@ function inspectPlaywrightReportPolicy(report) {
|
|
|
1690
1683
|
};
|
|
1691
1684
|
}
|
|
1692
1685
|
|
|
1686
|
+
function requiresScheduledDeliveryObservation(stage) {
|
|
1687
|
+
return ['development', 'staging', 'production'].includes(stage);
|
|
1688
|
+
}
|
|
1689
|
+
|
|
1690
|
+
function scheduledDeliveryDeadlineFinding() {
|
|
1691
|
+
return {
|
|
1692
|
+
classification: 'assertion-failed',
|
|
1693
|
+
summary:
|
|
1694
|
+
'The exact published event and correlation were not observed in the managed event-consumer log group within the bounded window.',
|
|
1695
|
+
};
|
|
1696
|
+
}
|
|
1697
|
+
|
|
1693
1698
|
async function observePublishedEvent(logs, observationPath, attemptStartedAt) {
|
|
1694
1699
|
let intent;
|
|
1695
1700
|
try {
|
|
@@ -1711,7 +1716,11 @@ async function observePublishedEvent(logs, observationPath, attemptStartedAt) {
|
|
|
1711
1716
|
}
|
|
1712
1717
|
const logGroupName = '/ebk/' + stage + '/${name}/event-consumer';
|
|
1713
1718
|
const startTime = Math.max(0, Date.parse(attemptStartedAt) - 5_000);
|
|
1714
|
-
|
|
1719
|
+
const timeoutMilliseconds = stage === 'production' ? 90_000 : 960_000;
|
|
1720
|
+
const deadline = performance.now() + timeoutMilliseconds;
|
|
1721
|
+
while (true) {
|
|
1722
|
+
const remainingRequestMilliseconds = deadline - performance.now();
|
|
1723
|
+
if (remainingRequestMilliseconds <= 0) break;
|
|
1715
1724
|
let response;
|
|
1716
1725
|
try {
|
|
1717
1726
|
response = await logs.send(
|
|
@@ -1721,14 +1730,28 @@ async function observePublishedEvent(logs, observationPath, attemptStartedAt) {
|
|
|
1721
1730
|
logGroupName,
|
|
1722
1731
|
startTime,
|
|
1723
1732
|
}),
|
|
1733
|
+
{
|
|
1734
|
+
abortSignal: AbortSignal.timeout(
|
|
1735
|
+
Math.max(1, Math.ceil(remainingRequestMilliseconds)),
|
|
1736
|
+
),
|
|
1737
|
+
},
|
|
1724
1738
|
);
|
|
1725
1739
|
} catch (error) {
|
|
1740
|
+
if (
|
|
1741
|
+
performance.now() >= deadline ||
|
|
1742
|
+
['AbortError', 'TimeoutError'].includes(error?.name)
|
|
1743
|
+
) {
|
|
1744
|
+
return scheduledDeliveryDeadlineFinding();
|
|
1745
|
+
}
|
|
1726
1746
|
return permissionFailure(
|
|
1727
1747
|
error,
|
|
1728
1748
|
'event-consumer observation',
|
|
1729
1749
|
'CloudWatch Logs',
|
|
1730
1750
|
);
|
|
1731
1751
|
}
|
|
1752
|
+
if (performance.now() > deadline) {
|
|
1753
|
+
return scheduledDeliveryDeadlineFinding();
|
|
1754
|
+
}
|
|
1732
1755
|
const observed = (response.events ?? []).some(({ message }) => {
|
|
1733
1756
|
const record = structuredLogRecord(message);
|
|
1734
1757
|
return (
|
|
@@ -1744,15 +1767,13 @@ async function observePublishedEvent(logs, observationPath, attemptStartedAt) {
|
|
|
1744
1767
|
);
|
|
1745
1768
|
});
|
|
1746
1769
|
if (observed) return undefined;
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1770
|
+
const remainingDelayMilliseconds = deadline - performance.now();
|
|
1771
|
+
if (remainingDelayMilliseconds <= 0) break;
|
|
1772
|
+
await new Promise((resolveDelay) =>
|
|
1773
|
+
setTimeout(resolveDelay, Math.min(3_000, remainingDelayMilliseconds)),
|
|
1774
|
+
);
|
|
1750
1775
|
}
|
|
1751
|
-
return
|
|
1752
|
-
classification: 'assertion-failed',
|
|
1753
|
-
summary:
|
|
1754
|
-
'The exact published event and correlation were not observed in the managed event-consumer log group within the bounded window.',
|
|
1755
|
-
};
|
|
1776
|
+
return scheduledDeliveryDeadlineFinding();
|
|
1756
1777
|
}
|
|
1757
1778
|
|
|
1758
1779
|
const url = credentialFreeHttpsUrl(smokeUrl);
|
|
@@ -1763,7 +1784,7 @@ const validIdentity =
|
|
|
1763
1784
|
/^[A-Za-z0-9_-]{1,128}_[A-Za-z0-9]{1,128}$/.test(userPoolId) &&
|
|
1764
1785
|
/^[a-z0-9]{1,128}$/.test(clientId);
|
|
1765
1786
|
if (
|
|
1766
|
-
!['staging', 'production'].includes(stage) ||
|
|
1787
|
+
!['development', 'staging', 'production'].includes(stage) ||
|
|
1767
1788
|
!url ||
|
|
1768
1789
|
!apiUrl ||
|
|
1769
1790
|
normalizedProductPath !== expectedProductPath ||
|
|
@@ -1772,12 +1793,14 @@ if (
|
|
|
1772
1793
|
!validSourceCommit ||
|
|
1773
1794
|
!validRunId ||
|
|
1774
1795
|
!validSeed ||
|
|
1796
|
+
!deployedEnvironmentClass ||
|
|
1797
|
+
unexpectedArguments.length > 0 ||
|
|
1775
1798
|
smokeAuthority !== 'cognito-admin-cloudwatch-observe-v1' ||
|
|
1776
1799
|
!process.env.AWS_REGION
|
|
1777
1800
|
) {
|
|
1778
1801
|
failPreflight(
|
|
1779
1802
|
'prerequisite-missing',
|
|
1780
|
-
'
|
|
1803
|
+
'Deployed smoke requires development, staging, or production, one exact source commit, native credential-free HTTPS web and API outputs, exact Cognito identity, bounded run/seed identity, AWS region, and cognito-admin-cloudwatch-observe-v1 authority acknowledgement.',
|
|
1781
1804
|
);
|
|
1782
1805
|
}
|
|
1783
1806
|
if (process.exitCode === undefined) {
|
|
@@ -2020,6 +2043,7 @@ if (process.exitCode === undefined) {
|
|
|
2020
2043
|
EBK_SMOKE_API_URL: apiUrl.href,
|
|
2021
2044
|
EBK_SMOKE_DATA_CLEANUP_PATH: cleanupPath,
|
|
2022
2045
|
EBK_SMOKE_EMAIL: principalEmail,
|
|
2046
|
+
EBK_FRONTEND_SECURITY_PROFILE: 'deployed-https',
|
|
2023
2047
|
EBK_SMOKE_PASSWORD: principalPassword,
|
|
2024
2048
|
EBK_SMOKE_REVIEWER_EMAIL: reviewerEmail,
|
|
2025
2049
|
EBK_SMOKE_REVIEWER_PASSWORD: reviewerPassword,
|
|
@@ -2077,7 +2101,10 @@ if (process.exitCode === undefined) {
|
|
|
2077
2101
|
} else {
|
|
2078
2102
|
reportInvalid = true;
|
|
2079
2103
|
}
|
|
2080
|
-
if (
|
|
2104
|
+
if (
|
|
2105
|
+
execution?.status === 0 &&
|
|
2106
|
+
requiresScheduledDeliveryObservation(stage)
|
|
2107
|
+
) {
|
|
2081
2108
|
observationFinding = await observePublishedEvent(
|
|
2082
2109
|
logs,
|
|
2083
2110
|
observationPath,
|
|
@@ -2362,7 +2389,7 @@ if (process.exitCode === undefined) {
|
|
|
2362
2389
|
attempts,
|
|
2363
2390
|
cleanup,
|
|
2364
2391
|
environment: {
|
|
2365
|
-
class:
|
|
2392
|
+
class: deployedEnvironmentClass,
|
|
2366
2393
|
deployed: true,
|
|
2367
2394
|
stage,
|
|
2368
2395
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"built-in-plan-testing-files.js","sourceRoot":"","sources":["../../../../../../packages/nx/src/generators/slice/built-in-plan-testing-files.ts"],"names":[],"mappings":";;AAGA,
|
|
1
|
+
{"version":3,"file":"built-in-plan-testing-files.js","sourceRoot":"","sources":["../../../../../../packages/nx/src/generators/slice/built-in-plan-testing-files.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { DeploymentProfile } from '../../repository-policy/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Prerelease release-manifest and rollout scripts used Pulumi previews as
|
|
4
|
+
* deployment authorization. The thin SST lifecycle keeps immutable candidate
|
|
5
|
+
* capture, but deployment evidence is the post-operation receipt emitted by
|
|
6
|
+
* the shared lifecycle adapter. Those old scripts are deliberately not
|
|
7
|
+
* generated.
|
|
8
|
+
*/
|
|
9
|
+
export declare const RETIRED_PREVIEW_RELEASE_PATHS: readonly ["scripts/release-lifecycle.mjs", "scripts/release-manifest.mjs", "scripts/release-rollout-proof.mjs", "scripts/release-rollout.mjs"];
|
|
10
|
+
/** @internal */
|
|
11
|
+
export declare function renderProductThinReleaseFiles(name: string, configurationSeed: string, deploymentProfile: DeploymentProfile): Readonly<Record<string, string>>;
|