@empire-builder-kit/nx 1.0.0-rc.32 → 1.0.0-rc.33
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/package.json +3 -3
- package/src/developer-agent/model.d.ts +1 -1
- package/src/developer-agent/operation-registry.js +25 -3
- package/src/developer-agent/operation-registry.js.map +1 -1
- package/src/developer-agent/planning.js +9 -4
- package/src/developer-agent/planning.js.map +1 -1
- package/src/developer-agent/validation.js +5 -1
- package/src/developer-agent/validation.js.map +1 -1
- package/src/executors/foundation-profile-preflight/production-database-safeguard.d.ts +1 -0
- package/src/executors/foundation-profile-preflight/production-database-safeguard.js +4 -2
- package/src/executors/foundation-profile-preflight/production-database-safeguard.js.map +1 -1
- package/src/executors/local-deploy/local-deploy.d.ts +9 -0
- package/src/executors/local-deploy/local-deploy.js +45 -1
- package/src/executors/local-deploy/local-deploy.js.map +1 -1
- package/src/executors/secret-initialize/secret-initialize.d.ts +2 -0
- package/src/executors/secret-initialize/secret-initialize.js +57 -3
- package/src/executors/secret-initialize/secret-initialize.js.map +1 -1
- package/src/executors/sst-lifecycle/run-sst-command.d.ts +2 -0
- package/src/executors/sst-lifecycle/run-sst-command.js +4 -0
- package/src/executors/sst-lifecycle/run-sst-command.js.map +1 -1
- package/src/foundation/index.d.ts +1 -0
- package/src/foundation/index.js +8 -0
- package/src/foundation/index.js.map +1 -1
- package/src/foundation/private-smoke-access.d.ts +23 -0
- package/src/foundation/private-smoke-access.js +127 -0
- package/src/foundation/private-smoke-access.js.map +1 -0
- package/src/foundation/private-smoke-admission.d.ts +43 -0
- package/src/foundation/private-smoke-admission.js +158 -0
- package/src/foundation/private-smoke-admission.js.map +1 -0
- package/src/foundation/private-smoke-control-plane.d.ts +18 -0
- package/src/foundation/private-smoke-control-plane.js +173 -0
- package/src/foundation/private-smoke-control-plane.js.map +1 -0
- package/src/generators/preset/dependency-overrides.d.ts +8 -0
- package/src/generators/preset/dependency-overrides.js +55 -0
- package/src/generators/preset/dependency-overrides.js.map +1 -0
- package/src/generators/preset/tool-versions.d.ts +2 -0
- package/src/generators/preset/tool-versions.js +3 -1
- package/src/generators/preset/tool-versions.js.map +1 -1
- package/src/generators/preset/workspace-files-developer-agent.js +19 -6
- package/src/generators/preset/workspace-files-developer-agent.js.map +1 -1
- package/src/generators/preset/workspace-files-thin-deploy.d.ts +2 -0
- package/src/generators/preset/workspace-files-thin-deploy.js +60 -0
- package/src/generators/preset/workspace-files-thin-deploy.js.map +1 -1
- package/src/generators/preset/workspace-files-thin-docs.js +18 -0
- package/src/generators/preset/workspace-files-thin-docs.js.map +1 -1
- package/src/generators/preset/workspace-files.d.ts +1 -0
- package/src/generators/preset/workspace-files.js +17 -3
- package/src/generators/preset/workspace-files.js.map +1 -1
- package/src/generators/repository-policy/schema.json +1 -1
- 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 +89 -0
- package/src/generators/slice/built-in-plan-background-work-files.js.map +1 -0
- package/src/generators/slice/built-in-plan-database-lifecycle-files.js +20 -4
- package/src/generators/slice/built-in-plan-database-lifecycle-files.js.map +1 -1
- package/src/generators/slice/built-in-plan-infrastructure-files.js +10 -9
- package/src/generators/slice/built-in-plan-infrastructure-files.js.map +1 -1
- package/src/generators/slice/built-in-plan-operations-files.js +8 -10
- package/src/generators/slice/built-in-plan-operations-files.js.map +1 -1
- package/src/generators/slice/built-in-plan.js +3 -0
- package/src/generators/slice/built-in-plan.js.map +1 -1
- package/src/generators/upgrade/upgrade.js +16 -9
- package/src/generators/upgrade/upgrade.js.map +1 -1
- package/src/generators/workload/workload.js +1 -1
- package/src/performance/model.d.ts +1 -1
- package/src/repository-policy/capacity-migration.d.ts +3 -0
- package/src/repository-policy/capacity-migration.js +21 -0
- package/src/repository-policy/capacity-migration.js.map +1 -0
- package/src/repository-policy/foundation-profile.js +10 -0
- package/src/repository-policy/foundation-profile.js.map +1 -1
- package/src/repository-policy/policy.d.ts +1 -1
- package/src/repository-policy/policy.js +5 -0
- package/src/repository-policy/policy.js.map +1 -1
- package/src/schemas/repository-policy-v1.json +1 -1
- package/src/supply-chain/generated-files.js +11 -0
- package/src/supply-chain/generated-files.js.map +1 -1
- package/src/supply-chain/generated-scanner-command.js +1 -1
- package/src/supply-chain/scanner.js +3 -0
- package/src/supply-chain/scanner.js.map +1 -1
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.openPrivateSmokeControlPlane = openPrivateSmokeControlPlane;
|
|
4
|
+
const client_wafv2_1 = require("@aws-sdk/client-wafv2");
|
|
5
|
+
const client_cloudfront_1 = require("@aws-sdk/client-cloudfront");
|
|
6
|
+
function check(condition, message) {
|
|
7
|
+
if (!condition)
|
|
8
|
+
throw new Error(`Private smoke access: ${message}`);
|
|
9
|
+
}
|
|
10
|
+
/** Only global WAF resources attached to the exact generated Router are eligible. */
|
|
11
|
+
async function openPrivateSmokeControlPlane(identity, smokeUrl, clients = {
|
|
12
|
+
waf: new client_wafv2_1.WAFV2Client({
|
|
13
|
+
region: 'us-east-1',
|
|
14
|
+
endpoint: 'https://wafv2.us-east-1.amazonaws.com',
|
|
15
|
+
maxAttempts: 3,
|
|
16
|
+
requestHandler: { connectionTimeout: 10_000, requestTimeout: 30_000 },
|
|
17
|
+
}),
|
|
18
|
+
cloudfront: new client_cloudfront_1.CloudFrontClient({
|
|
19
|
+
region: 'us-east-1',
|
|
20
|
+
endpoint: 'https://cloudfront.amazonaws.com',
|
|
21
|
+
maxAttempts: 3,
|
|
22
|
+
requestHandler: { connectionTimeout: 10_000, requestTimeout: 30_000 },
|
|
23
|
+
}),
|
|
24
|
+
}) {
|
|
25
|
+
check(/^\d{12}$/.test(identity.account) &&
|
|
26
|
+
/^[a-z0-9][a-z0-9-]{0,62}$/.test(identity.workspace) &&
|
|
27
|
+
['development', 'staging', 'production'].includes(identity.stage) &&
|
|
28
|
+
/^sha256:[a-f0-9]{64}$/.test(identity.policyDigest), 'invalid committed resource identity');
|
|
29
|
+
const url = smokeUrl === undefined ? undefined : new URL(smokeUrl);
|
|
30
|
+
if (url)
|
|
31
|
+
check(url.protocol === 'https:' && !url.username && !url.password && !url.port, 'credential-free HTTPS Router required');
|
|
32
|
+
const name = `foundation-${identity.stage}-router-ipv4-allowlist`;
|
|
33
|
+
const ipSets = [];
|
|
34
|
+
let marker;
|
|
35
|
+
const seen = new Set();
|
|
36
|
+
do {
|
|
37
|
+
const page = await clients.waf.send(new client_wafv2_1.ListIPSetsCommand({
|
|
38
|
+
Scope: 'CLOUDFRONT',
|
|
39
|
+
Limit: 100,
|
|
40
|
+
NextMarker: marker,
|
|
41
|
+
}));
|
|
42
|
+
ipSets.push(...(page.IPSets ?? []));
|
|
43
|
+
marker = page.NextMarker;
|
|
44
|
+
check(!marker || !seen.has(marker), 'IP-set pagination did not advance');
|
|
45
|
+
if (marker)
|
|
46
|
+
seen.add(marker);
|
|
47
|
+
check(seen.size <= 100, 'IP-set inventory exceeds bounded inspection');
|
|
48
|
+
} while (marker);
|
|
49
|
+
const matches = ipSets.filter((set) => set.Name === name);
|
|
50
|
+
check(matches.length === 1 && matches[0].Id, 'exact stage IPv4 IP set missing or ambiguous; configure a baseline IPv4 CIDR before private hosted smoke');
|
|
51
|
+
const selected = matches[0];
|
|
52
|
+
const arn = `arn:aws:wafv2:us-east-1:${identity.account}:global/ipset/${name}/${selected.Id}`;
|
|
53
|
+
check(selected.ARN === arn, 'IP-set account/scope/identity mismatch');
|
|
54
|
+
const expectedTags = {
|
|
55
|
+
'ebk:managed-by': 'empire-builder-kit',
|
|
56
|
+
'ebk:owner': 'foundation',
|
|
57
|
+
'ebk:stage': identity.stage,
|
|
58
|
+
'ebk:workspace': identity.workspace,
|
|
59
|
+
'ebk:policy-digest': identity.policyDigest,
|
|
60
|
+
};
|
|
61
|
+
async function attestTags(resourceArn) {
|
|
62
|
+
const tags = {};
|
|
63
|
+
let tagMarker;
|
|
64
|
+
const markers = new Set();
|
|
65
|
+
do {
|
|
66
|
+
const page = await clients.waf.send(new client_wafv2_1.ListTagsForResourceCommand({
|
|
67
|
+
ResourceARN: resourceArn,
|
|
68
|
+
NextMarker: tagMarker,
|
|
69
|
+
Limit: 100,
|
|
70
|
+
}));
|
|
71
|
+
for (const tag of page.TagInfoForResource?.TagList ?? []) {
|
|
72
|
+
if (tag.Key && tag.Value)
|
|
73
|
+
tags[tag.Key] = tag.Value;
|
|
74
|
+
}
|
|
75
|
+
tagMarker = page.NextMarker;
|
|
76
|
+
check(!tagMarker || !markers.has(tagMarker), 'tag pagination did not advance');
|
|
77
|
+
if (tagMarker)
|
|
78
|
+
markers.add(tagMarker);
|
|
79
|
+
check(markers.size <= 10, 'tag inventory exceeds bounded inspection');
|
|
80
|
+
} while (tagMarker);
|
|
81
|
+
for (const [key, value] of Object.entries(expectedTags))
|
|
82
|
+
check(tags[key] === value, 'WAF ownership or committed policy differs');
|
|
83
|
+
}
|
|
84
|
+
await attestTags(arn);
|
|
85
|
+
// Cleanup never expands access; exact tagged IP-set identity and lease are sufficient.
|
|
86
|
+
// Admission additionally proves the Router-to-ACL-to-IP-set attachment.
|
|
87
|
+
if (url) {
|
|
88
|
+
const distributions = [];
|
|
89
|
+
marker = undefined;
|
|
90
|
+
seen.clear();
|
|
91
|
+
do {
|
|
92
|
+
const page = await clients.cloudfront.send(new client_cloudfront_1.ListDistributionsCommand({ Marker: marker }));
|
|
93
|
+
distributions.push(...(page.DistributionList?.Items ?? []));
|
|
94
|
+
marker = page.DistributionList?.NextMarker;
|
|
95
|
+
check(!page.DistributionList?.IsTruncated || marker, 'truncated Router inventory has no continuation');
|
|
96
|
+
check(!marker || !seen.has(marker), 'Router pagination did not advance');
|
|
97
|
+
if (marker)
|
|
98
|
+
seen.add(marker);
|
|
99
|
+
check(seen.size <= 100, 'Router inventory exceeds bounded inspection');
|
|
100
|
+
} while (marker);
|
|
101
|
+
const routers = distributions.filter((router) => router.DomainName === url.hostname ||
|
|
102
|
+
router.Aliases?.Items?.includes(url.hostname));
|
|
103
|
+
check(routers.length === 1 &&
|
|
104
|
+
routers[0].Enabled &&
|
|
105
|
+
routers[0].ARN?.startsWith(`arn:aws:cloudfront::${identity.account}:distribution/`), 'exact account Router missing, disabled, or ambiguous');
|
|
106
|
+
const acls = [];
|
|
107
|
+
marker = undefined;
|
|
108
|
+
seen.clear();
|
|
109
|
+
do {
|
|
110
|
+
const page = await clients.waf.send(new client_wafv2_1.ListWebACLsCommand({
|
|
111
|
+
Scope: 'CLOUDFRONT',
|
|
112
|
+
Limit: 100,
|
|
113
|
+
NextMarker: marker,
|
|
114
|
+
}));
|
|
115
|
+
acls.push(...(page.WebACLs ?? []));
|
|
116
|
+
marker = page.NextMarker;
|
|
117
|
+
check(!marker || !seen.has(marker), 'Web ACL pagination did not advance');
|
|
118
|
+
if (marker)
|
|
119
|
+
seen.add(marker);
|
|
120
|
+
check(seen.size <= 100, 'Web ACL inventory exceeds bounded inspection');
|
|
121
|
+
} while (marker);
|
|
122
|
+
const attached = acls.filter((acl) => acl.ARN === routers[0].WebACLId);
|
|
123
|
+
check(attached.length === 1 &&
|
|
124
|
+
attached[0].Id &&
|
|
125
|
+
attached[0].Name &&
|
|
126
|
+
attached[0].ARN?.startsWith(`arn:aws:wafv2:us-east-1:${identity.account}:global/webacl/`), 'Router Web ACL is outside the exact account/scope');
|
|
127
|
+
const acl = attached[0];
|
|
128
|
+
await attestTags(acl.ARN);
|
|
129
|
+
const { WebACL } = await clients.waf.send(new client_wafv2_1.GetWebACLCommand({ Scope: 'CLOUDFRONT', Name: acl.Name, Id: acl.Id }));
|
|
130
|
+
check(WebACL?.ARN === acl.ARN, 'Web ACL readback identity differs');
|
|
131
|
+
const rules = WebACL?.Rules?.filter((rule) => rule.Name === 'StageIpAllowlist') ?? [];
|
|
132
|
+
const statement = rules[0]?.Statement?.NotStatement?.Statement;
|
|
133
|
+
const refs = statement?.IPSetReferenceStatement
|
|
134
|
+
? [statement.IPSetReferenceStatement]
|
|
135
|
+
: statement?.OrStatement?.Statements?.map((item) => item.IPSetReferenceStatement);
|
|
136
|
+
check(rules.length === 1 &&
|
|
137
|
+
rules[0].Action?.Block &&
|
|
138
|
+
refs?.length &&
|
|
139
|
+
refs.every((ref) => ref?.ARN) &&
|
|
140
|
+
refs.filter((ref) => ref?.ARN === arn).length === 1, 'Router blocking rule does not reference the exact IP set');
|
|
141
|
+
// A dual-stack rule may have only its same-stage IPv6 companion, never an arbitrary second set.
|
|
142
|
+
check(refs.every((ref) => ref?.ARN === arn ||
|
|
143
|
+
ref?.ARN?.startsWith(`arn:aws:wafv2:us-east-1:${identity.account}:global/ipset/foundation-${identity.stage}-router-ipv6-allowlist/`)), 'Router allowlist contains an out-of-stage reference');
|
|
144
|
+
}
|
|
145
|
+
const key = { Name: name, Id: selected.Id, Scope: 'CLOUDFRONT' };
|
|
146
|
+
return {
|
|
147
|
+
arn,
|
|
148
|
+
async read() {
|
|
149
|
+
await attestTags(arn);
|
|
150
|
+
const { IPSet, LockToken } = await clients.waf.send(new client_wafv2_1.GetIPSetCommand(key));
|
|
151
|
+
check(IPSet?.ARN === arn &&
|
|
152
|
+
IPSet.Name === name &&
|
|
153
|
+
IPSet.IPAddressVersion === 'IPV4' &&
|
|
154
|
+
LockToken &&
|
|
155
|
+
Array.isArray(IPSet.Addresses), 'live IP-set identity mismatch');
|
|
156
|
+
return {
|
|
157
|
+
addresses: IPSet.Addresses,
|
|
158
|
+
description: IPSet.Description ?? '',
|
|
159
|
+
lockToken: LockToken,
|
|
160
|
+
};
|
|
161
|
+
},
|
|
162
|
+
async update(previous, next) {
|
|
163
|
+
await attestTags(arn);
|
|
164
|
+
await clients.waf.send(new client_wafv2_1.UpdateIPSetCommand({
|
|
165
|
+
...key,
|
|
166
|
+
LockToken: previous.lockToken,
|
|
167
|
+
Addresses: [...next.addresses],
|
|
168
|
+
Description: next.description || undefined,
|
|
169
|
+
}));
|
|
170
|
+
},
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=private-smoke-control-plane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"private-smoke-control-plane.js","sourceRoot":"","sources":["../../../../../packages/nx/src/foundation/private-smoke-control-plane.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const DEPENDENCY_OVERRIDES_PATH = "supply-chain/dependency-overrides.json";
|
|
2
|
+
export interface DependencyOverrides {
|
|
3
|
+
schemaVersion: 1;
|
|
4
|
+
overrides: Record<string, string>;
|
|
5
|
+
}
|
|
6
|
+
/** Seeded pins are data, never package-manager hooks or alternate registries. */
|
|
7
|
+
export declare function parseDependencyOverrides(value: unknown): DependencyOverrides;
|
|
8
|
+
export declare function renderDependencyOverridesYaml(value: DependencyOverrides): string;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEPENDENCY_OVERRIDES_PATH = void 0;
|
|
4
|
+
exports.parseDependencyOverrides = parseDependencyOverrides;
|
|
5
|
+
exports.renderDependencyOverridesYaml = renderDependencyOverridesYaml;
|
|
6
|
+
const semver_1 = require("semver");
|
|
7
|
+
const deterministic_order_js_1 = require("../../deterministic-order.js");
|
|
8
|
+
exports.DEPENDENCY_OVERRIDES_PATH = 'supply-chain/dependency-overrides.json';
|
|
9
|
+
function isSelector(value) {
|
|
10
|
+
const parts = value.split('>');
|
|
11
|
+
if (parts.length > 2)
|
|
12
|
+
return false;
|
|
13
|
+
return parts.every((part) => {
|
|
14
|
+
const match = /^((?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*)(?:@(.+))?$/u.exec(part);
|
|
15
|
+
return (match !== null &&
|
|
16
|
+
(match[2] === undefined || (0, semver_1.validRange)(match[2]) !== null));
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
/** Seeded pins are data, never package-manager hooks or alternate registries. */
|
|
20
|
+
function parseDependencyOverrides(value) {
|
|
21
|
+
const fail = () => {
|
|
22
|
+
throw new Error(`${exports.DEPENDENCY_OVERRIDES_PATH} must contain schemaVersion 1 and at most 256 npm selectors mapped to exact versions.`);
|
|
23
|
+
};
|
|
24
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
25
|
+
return fail();
|
|
26
|
+
const record = value;
|
|
27
|
+
if (record.schemaVersion !== 1 ||
|
|
28
|
+
Object.keys(record).some((key) => key !== 'schemaVersion' && key !== 'overrides'))
|
|
29
|
+
return fail();
|
|
30
|
+
if (typeof record.overrides !== 'object' ||
|
|
31
|
+
record.overrides === null ||
|
|
32
|
+
Array.isArray(record.overrides))
|
|
33
|
+
return fail();
|
|
34
|
+
const entries = Object.entries(record.overrides);
|
|
35
|
+
if (entries.length > 256)
|
|
36
|
+
return fail();
|
|
37
|
+
for (const [selector, version] of entries) {
|
|
38
|
+
if (selector.length > 256 ||
|
|
39
|
+
!isSelector(selector) ||
|
|
40
|
+
typeof version !== 'string' ||
|
|
41
|
+
(0, semver_1.valid)(version) !== version)
|
|
42
|
+
return fail();
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
schemaVersion: 1,
|
|
46
|
+
overrides: Object.fromEntries(entries.sort(([left], [right]) => (0, deterministic_order_js_1.compareUtf16)(left, right))),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function renderDependencyOverridesYaml(value) {
|
|
50
|
+
const entries = Object.entries(value.overrides);
|
|
51
|
+
return entries.length === 0
|
|
52
|
+
? ''
|
|
53
|
+
: `overrides:\n${entries.map(([selector, version]) => ` ${JSON.stringify(selector)}: ${JSON.stringify(version)}`).join('\n')}\n`;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=dependency-overrides.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-overrides.js","sourceRoot":"","sources":["../../../../../../packages/nx/src/generators/preset/dependency-overrides.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,8 @@ export declare const WORKSPACE_SST_VERSION: "4.17.1";
|
|
|
8
8
|
export declare const WORKSPACE_NODE_VERSION: "22.23.1";
|
|
9
9
|
export declare const WORKSPACE_PNPM_VERSION: "11.20.0";
|
|
10
10
|
export declare const WORKSPACE_VITEST_VERSION: "4.1.4";
|
|
11
|
+
/** Python packaging runtime required by the pinned SST-generated workloads. */
|
|
12
|
+
export declare const WORKSPACE_UV_VERSION: "0.11.28";
|
|
11
13
|
export declare const WORKSPACE_PNPM_SHA512: "9a6f330a95b66446ea088faf1521405a8a01f07fde7124cc9958dfed52d4bb436737e65b08f85f37b46fcba375092558ac51262b816844b22f63406ed166bfee";
|
|
12
14
|
export declare const WORKSPACE_PNPM_DESCRIPTOR: "pnpm@11.20.0+sha512.9a6f330a95b66446ea088faf1521405a8a01f07fde7124cc9958dfed52d4bb436737e65b08f85f37b46fcba375092558ac51262b816844b22f63406ed166bfee";
|
|
13
15
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WORKSPACE_SST_NPM_INTEGRITY = exports.WORKSPACE_PNPM_DESCRIPTOR = exports.WORKSPACE_PNPM_SHA512 = exports.WORKSPACE_VITEST_VERSION = exports.WORKSPACE_PNPM_VERSION = exports.WORKSPACE_NODE_VERSION = exports.WORKSPACE_SST_VERSION = void 0;
|
|
3
|
+
exports.WORKSPACE_SST_NPM_INTEGRITY = exports.WORKSPACE_PNPM_DESCRIPTOR = exports.WORKSPACE_PNPM_SHA512 = exports.WORKSPACE_UV_VERSION = exports.WORKSPACE_VITEST_VERSION = exports.WORKSPACE_PNPM_VERSION = exports.WORKSPACE_NODE_VERSION = exports.WORKSPACE_SST_VERSION = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Framework-required tool versions written into newly generated workspaces.
|
|
6
6
|
*
|
|
@@ -11,6 +11,8 @@ exports.WORKSPACE_SST_VERSION = '4.17.1';
|
|
|
11
11
|
exports.WORKSPACE_NODE_VERSION = '22.23.1';
|
|
12
12
|
exports.WORKSPACE_PNPM_VERSION = '11.20.0';
|
|
13
13
|
exports.WORKSPACE_VITEST_VERSION = '4.1.4';
|
|
14
|
+
/** Python packaging runtime required by the pinned SST-generated workloads. */
|
|
15
|
+
exports.WORKSPACE_UV_VERSION = '0.11.28';
|
|
14
16
|
exports.WORKSPACE_PNPM_SHA512 = '9a6f330a95b66446ea088faf1521405a8a01f07fde7124cc9958dfed52d4bb436737e65b08f85f37b46fcba375092558ac51262b816844b22f63406ed166bfee';
|
|
15
17
|
exports.WORKSPACE_PNPM_DESCRIPTOR = `pnpm@${exports.WORKSPACE_PNPM_VERSION}+sha512.${exports.WORKSPACE_PNPM_SHA512}`;
|
|
16
18
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-versions.js","sourceRoot":"","sources":["../../../../../../packages/nx/src/generators/preset/tool-versions.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACU,QAAA,qBAAqB,GAAG,QAAiB,CAAC;AAC1C,QAAA,sBAAsB,GAAG,SAAkB,CAAC;AAC5C,QAAA,sBAAsB,GAAG,SAAkB,CAAC;AAC5C,QAAA,wBAAwB,GAAG,OAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-versions.js","sourceRoot":"","sources":["../../../../../../packages/nx/src/generators/preset/tool-versions.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACU,QAAA,qBAAqB,GAAG,QAAiB,CAAC;AAC1C,QAAA,sBAAsB,GAAG,SAAkB,CAAC;AAC5C,QAAA,sBAAsB,GAAG,SAAkB,CAAC;AAC5C,QAAA,wBAAwB,GAAG,OAAgB,CAAC;AACzD,+EAA+E;AAClE,QAAA,oBAAoB,GAAG,SAAkB,CAAC;AAC1C,QAAA,qBAAqB,GAChC,kIAA2I,CAAC;AACjI,QAAA,yBAAyB,GACpC,QAAQ,8BAAsB,WAAW,6BAAqB,EAAW,CAAC;AAE5E;;;;GAIG;AACU,QAAA,2BAA2B,GACtC,iGAA0G,CAAC"}
|
|
@@ -57,9 +57,17 @@ reported after that commit remain authenticated local-source Nx targets and reta
|
|
|
57
57
|
documented same-user installed-toolchain boundary.
|
|
58
58
|
|
|
59
59
|
Begin and hand off implementation work with
|
|
60
|
-
\`pnpm nx run ${name}:work-markers\`.
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
\`pnpm nx run ${name}:work-markers\`. For ordinary feature completion, run the
|
|
61
|
+
affected owner's tests, typecheck, lint, and ownership checks reported by the
|
|
62
|
+
Nx graph and agent context. Record exactly which checks passed and which remain
|
|
63
|
+
pending. Feature verification is not release qualification.
|
|
64
|
+
|
|
65
|
+
Reserve \`pnpm nx run ${name}:verify\` and the workspace \`pnpm verify\` barrier
|
|
66
|
+
for an adopter milestone or coherent integration batch. Release qualification
|
|
67
|
+
additionally requires the declared packed, platform, and external acceptance.
|
|
68
|
+
An explicitly required safety or contract check is never waived by this cadence.
|
|
69
|
+
Development accepts a dirty tree and needs no production confirmation or release
|
|
70
|
+
artifact; protected-stage source and approval requirements remain unchanged.
|
|
63
71
|
|
|
64
72
|
If a Slice, Service, or Job generator reports a retained post-generation install, rerun
|
|
65
73
|
that same generator with the exact scoped prefix
|
|
@@ -118,9 +126,14 @@ CLI and Nx contract complete their live pilots.
|
|
|
118
126
|
- make an ordinary source edit only within the plan-derived adopter-owned project scope; or
|
|
119
127
|
- route protected work to the matching GitHub environment and OIDC workflow without
|
|
120
128
|
receiving local command arguments.
|
|
121
|
-
5.
|
|
122
|
-
|
|
123
|
-
|
|
129
|
+
5. Run the affected owner's tests, typecheck, lint, and ownership checks from
|
|
130
|
+
the Nx graph and agent context, then rerun \`pnpm nx run ${name}:work-markers\`.
|
|
131
|
+
For ordinary feature completion, report those results without requiring the
|
|
132
|
+
full workspace barrier. At an adopter milestone or coherent integration batch,
|
|
133
|
+
also run \`pnpm nx run ${name}:verify\` and \`pnpm verify\`. Release qualification
|
|
134
|
+
adds the declared packed, platform, and external acceptance. Feature verification
|
|
135
|
+
is not release qualification; no explicitly required safety or contract check
|
|
136
|
+
is waived, and pending external proof remains pending in the handoff.
|
|
124
137
|
6. Fill an adopter-owned copy of the seeded template, then run
|
|
125
138
|
\`ebk agent handoff <handoff.json>\` to validate exact resumable state. A different actor
|
|
126
139
|
uses \`ebk agent resume <handoff.json>\` and must re-inspect current state rather than
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-files-developer-agent.js","sourceRoot":"","sources":["../../../../../../packages/nx/src/generators/preset/workspace-files-developer-agent.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"workspace-files-developer-agent.js","sourceRoot":"","sources":["../../../../../../packages/nx/src/generators/preset/workspace-files-developer-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,8 @@ export interface ThinDeployWorkflowFilePlan {
|
|
|
23
23
|
managedPaths: readonly [typeof THIN_DEPLOY_WORKFLOW_PATH];
|
|
24
24
|
}
|
|
25
25
|
export declare function renderThinDeployVerifyCaller(profile: DeploymentProfile): string;
|
|
26
|
+
/** @internal Run exactly this generated script in the protected-runner fixture. */
|
|
27
|
+
export declare function protectedBrowserInstallScript(): string;
|
|
26
28
|
/** @internal Exported for executable source-contract tests. */
|
|
27
29
|
export declare function exactStageDeployerGuardScript(operation: string, accountVariable: string): string;
|
|
28
30
|
/** @internal Shared verbatim by every generated protected workflow. */
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.THIN_DEPLOY_WORKFLOW_PATH = void 0;
|
|
4
4
|
exports.renderThinDeployVerifyCaller = renderThinDeployVerifyCaller;
|
|
5
|
+
exports.protectedBrowserInstallScript = protectedBrowserInstallScript;
|
|
5
6
|
exports.exactStageDeployerGuardScript = exactStageDeployerGuardScript;
|
|
6
7
|
exports.canonicalStageAuthorityDerivationScript = canonicalStageAuthorityDerivationScript;
|
|
7
8
|
exports.exactStagingPromotionPullGuardScript = exactStagingPromotionPullGuardScript;
|
|
@@ -10,6 +11,7 @@ exports.restoredCandidateValidationScript = restoredCandidateValidationScript;
|
|
|
10
11
|
exports.stagingPromotionSealScript = stagingPromotionSealScript;
|
|
11
12
|
exports.postdeploySupplyChainBindingScript = postdeploySupplyChainBindingScript;
|
|
12
13
|
exports.renderThinDeployWorkflowFilePlan = renderThinDeployWorkflowFilePlan;
|
|
14
|
+
const tool_versions_js_1 = require("./tool-versions.js");
|
|
13
15
|
exports.THIN_DEPLOY_WORKFLOW_PATH = '.github/workflows/deploy.yml';
|
|
14
16
|
const EXACT_SEMVER = /^\d+\.\d+\.\d+$/;
|
|
15
17
|
const WORKSPACE_NAME = /^[a-z0-9][a-z0-9-]{0,62}$/;
|
|
@@ -87,6 +89,22 @@ function indentedScript(source, spaces) {
|
|
|
87
89
|
.map((line) => `${prefix}${line}`)
|
|
88
90
|
.join('\n');
|
|
89
91
|
}
|
|
92
|
+
/** @internal Run exactly this generated script in the protected-runner fixture. */
|
|
93
|
+
function protectedBrowserInstallScript() {
|
|
94
|
+
return `set -euo pipefail
|
|
95
|
+
if [ -z "$EBK_SLICE_PROJECTS" ]; then exit 0; fi
|
|
96
|
+
case "$EBK_SLICE_PROJECTS" in ,*|*,|*,,*) echo 'Invalid smoke project inventory'; exit 1 ;; esac
|
|
97
|
+
IFS=',' read -r -a projects <<< "$EBK_SLICE_PROJECTS"
|
|
98
|
+
seen=,
|
|
99
|
+
for project in "\${projects[@]}"; do
|
|
100
|
+
case "$project" in ''|*[!A-Za-z0-9_-]*) echo 'Invalid smoke project'; exit 1 ;; esac
|
|
101
|
+
case "$seen" in *,"$project",*) echo 'Duplicate smoke project'; exit 1 ;; esac
|
|
102
|
+
seen="$seen$project,"
|
|
103
|
+
done
|
|
104
|
+
for project in "\${projects[@]}"; do
|
|
105
|
+
pnpm --dir "packages/$project" exec playwright install --with-deps chromium
|
|
106
|
+
done`;
|
|
107
|
+
}
|
|
90
108
|
/** @internal Exported for executable source-contract tests. */
|
|
91
109
|
function exactStageDeployerGuardScript(operation, accountVariable) {
|
|
92
110
|
return `read -r caller_account caller_arn <<< "$(aws sts get-caller-identity --query '[Account,Arn]' --output text)"
|
|
@@ -1400,6 +1418,23 @@ ${indentedScript(restoredCandidateValidationScript(), 10)}
|
|
|
1400
1418
|
ACTIONS_ID_TOKEN_REQUEST_TOKEN: ''
|
|
1401
1419
|
ACTIONS_ID_TOKEN_REQUEST_URL: ''
|
|
1402
1420
|
run: pnpm nx run ${name}:supply-chain-check-protected
|
|
1421
|
+
- name: Install pinned uv for generated Python workloads
|
|
1422
|
+
if: env.EBK_ACTION == 'deploy'
|
|
1423
|
+
env:
|
|
1424
|
+
ACTIONS_ID_TOKEN_REQUEST_TOKEN: ''
|
|
1425
|
+
ACTIONS_ID_TOKEN_REQUEST_URL: ''
|
|
1426
|
+
run: |
|
|
1427
|
+
set -euo pipefail
|
|
1428
|
+
python3 -m pip install --user --disable-pip-version-check 'uv==${tool_versions_js_1.WORKSPACE_UV_VERSION}'
|
|
1429
|
+
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
|
|
1430
|
+
"$HOME/.local/bin/uv" --version
|
|
1431
|
+
- name: Install pinned Playwright Chromium for deployed smoke proofs
|
|
1432
|
+
if: env.EBK_ACTION == 'deploy' && needs.prepare.outputs.has_slices == 'true'
|
|
1433
|
+
env:
|
|
1434
|
+
ACTIONS_ID_TOKEN_REQUEST_TOKEN: ''
|
|
1435
|
+
ACTIONS_ID_TOKEN_REQUEST_URL: ''
|
|
1436
|
+
run: |
|
|
1437
|
+
${indentedScript(protectedBrowserInstallScript(), 10)}
|
|
1403
1438
|
- name: Revalidate exact protected branch tip before OIDC
|
|
1404
1439
|
env:
|
|
1405
1440
|
ACTIONS_ID_TOKEN_REQUEST_TOKEN: ''
|
|
@@ -1431,10 +1466,12 @@ ${indentedScript(restoredCandidateValidationScript(), 10)}
|
|
|
1431
1466
|
[ "$AWS_REGION" = "$EBK_POLICY_REGION" ]
|
|
1432
1467
|
${indentedScript(exactStageDeployerGuardScript('Native lifecycle', '$EBK_POLICY_ACCOUNT_ID'), 10)}
|
|
1433
1468
|
- name: Run ordered native lifecycle targets
|
|
1469
|
+
id: native-lifecycle
|
|
1434
1470
|
env:
|
|
1435
1471
|
ACTIONS_ID_TOKEN_REQUEST_TOKEN: ''
|
|
1436
1472
|
ACTIONS_ID_TOKEN_REQUEST_URL: ''
|
|
1437
1473
|
EBK_GITHUB_JOB_WORKFLOW_REF: \${{ job.workflow_ref }}
|
|
1474
|
+
GITHUB_TOKEN: \${{ github.token }}
|
|
1438
1475
|
run: |
|
|
1439
1476
|
set -euo pipefail
|
|
1440
1477
|
test -n "$AWS_DEPLOY_ROLE_ARN" || { echo 'Stage deployment role is absent'; exit 1; }
|
|
@@ -1453,6 +1490,29 @@ ${indentedScript(exactStageDeployerGuardScript('Native lifecycle', '$EBK_POLICY_
|
|
|
1453
1490
|
pnpm nx run "$project:$EBK_ACTION" -- --stage="$EBK_STAGE" --region="$AWS_REGION" --expectedRoleArn="$AWS_DEPLOY_ROLE_ARN"
|
|
1454
1491
|
done
|
|
1455
1492
|
fi
|
|
1493
|
+
- name: Prove temporary smoke admission removed
|
|
1494
|
+
if: always() && env.EBK_ACTION == 'deploy' && steps.native-lifecycle.outcome != 'skipped'
|
|
1495
|
+
env:
|
|
1496
|
+
ACTIONS_ID_TOKEN_REQUEST_TOKEN: ''
|
|
1497
|
+
ACTIONS_ID_TOKEN_REQUEST_URL: ''
|
|
1498
|
+
EBK_GITHUB_JOB_WORKFLOW_REF: \${{ job.workflow_ref }}
|
|
1499
|
+
GITHUB_TOKEN: \${{ github.token }}
|
|
1500
|
+
run: |
|
|
1501
|
+
set -euo pipefail
|
|
1502
|
+
${indentedScript(exactStageDeployerGuardScript('Smoke access cleanup', '$EBK_POLICY_ACCOUNT_ID'), 10)}
|
|
1503
|
+
[ "$(git rev-parse HEAD)" = "$EBK_SOURCE_COMMIT" ]
|
|
1504
|
+
git diff --quiet HEAD
|
|
1505
|
+
node --input-type=module <<'NODE'
|
|
1506
|
+
import { cleanupGithubPrivateSmoke } from '@empire-builder-kit/nx/foundation';
|
|
1507
|
+
await cleanupGithubPrivateSmoke({
|
|
1508
|
+
account: process.env.EBK_POLICY_ACCOUNT_ID,
|
|
1509
|
+
deploymentProfile: process.env.EBK_DEPLOYMENT_PROFILE,
|
|
1510
|
+
root: process.cwd(),
|
|
1511
|
+
source: process.env.EBK_SOURCE_COMMIT,
|
|
1512
|
+
stage: process.env.EBK_STAGE,
|
|
1513
|
+
workspace: '${name}',
|
|
1514
|
+
});
|
|
1515
|
+
NODE
|
|
1456
1516
|
- name: Seal exact staging promotion receipt
|
|
1457
1517
|
if: env.EBK_ACTION == 'deploy' && env.EBK_STAGE == 'staging' && needs.prepare.outputs.profile != 'starter'
|
|
1458
1518
|
env:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-files-thin-deploy.js","sourceRoot":"","sources":["../../../../../../packages/nx/src/generators/preset/workspace-files-thin-deploy.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"workspace-files-thin-deploy.js","sourceRoot":"","sources":["../../../../../../packages/nx/src/generators/preset/workspace-files-thin-deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -72,6 +72,24 @@ secret; do not add repository-scope fallbacks.
|
|
|
72
72
|
`,
|
|
73
73
|
'docs/repository-operating-policy.md': `# Repository Operating Policy
|
|
74
74
|
|
|
75
|
+
## Production capacity
|
|
76
|
+
|
|
77
|
+
The shared Foundation has three capacity profiles, independent of deployment topology:
|
|
78
|
+
- \`cost-optimized\`: 0–2 ACUs, five-minute idle auto-pause; new starter default.
|
|
79
|
+
- \`balanced\`: 0.5–4 ACUs, always warm.
|
|
80
|
+
- \`standard\`: 2–16 ACUs, always warm; isolated repository default.
|
|
81
|
+
|
|
82
|
+
All retain 30-day backups, deletion protection, encryption, and managed NAT.
|
|
83
|
+
Pause can delay first requests (typically 15 seconds, sometimes 30 seconds or
|
|
84
|
+
longer); open connections or polling can prevent it. Storage/NAT still cost money.
|
|
85
|
+
Validate cold-resume retries, migration timeouts, and the shared capacity ceiling.
|
|
86
|
+
|
|
87
|
+
Existing warm \`cost-optimized\` users must use the new generator to report
|
|
88
|
+
\`pnpm nx g @empire-builder-kit/nx:repository-policy --profile=balanced\`, then
|
|
89
|
+
repeat with \`--apply\` before managed upgrade or deployment. This preserves
|
|
90
|
+
0.5–4 ACUs. After upgrade, deliberately select \`--profile=cost-optimized --apply\`
|
|
91
|
+
only to accept scale-to-zero. These commands change policy, not AWS resources.
|
|
92
|
+
|
|
75
93
|
The committed \`ebk.repository-policy.json\` selects the
|
|
76
94
|
\`${options.deploymentProfile}\` deployment profile and its active stages:
|
|
77
95
|
${stageList}. Inactive stages are rejected by planning, deployment, refresh,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-files-thin-docs.js","sourceRoot":"","sources":["../../../../../../packages/nx/src/generators/preset/workspace-files-thin-docs.ts"],"names":[],"mappings":";;AAMA,
|
|
1
|
+
{"version":3,"file":"workspace-files-thin-docs.js","sourceRoot":"","sources":["../../../../../../packages/nx/src/generators/preset/workspace-files-thin-docs.ts"],"names":[],"mappings":";;AAMA,4EA+PC;AArQD,+DAI0C;AAE1C,SAAgB,gCAAgC,CAAC,OAGhD;IACC,MAAM,MAAM,GAAG,IAAA,iCAAsB,EAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,cAAc,GAAG,IAAA,mCAAwB,EAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC3E,OAAO;QACL,WAAW,EAAE,KAAK,OAAO,CAAC,IAAI;;;;;;;kBAOhB,OAAO,CAAC,iBAAiB,yBAAyB,SAAS;;;;;CAK5E;QACG,sBAAsB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiD3B;QACG,qCAAqC,EAAE;;;;;;;;;;;;;;;;;;;;;IAqBvC,OAAO,CAAC,iBAAiB;EAC3B,SAAS;;;;;aAKE,OAAO,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6DxB;QACG,+BAA+B,EAAE;;;;yBAIZ,OAAO,CAAC,iBAAiB;EAChD,SAAS;;;;;;;;;;eAUI,cAAc;;CAE5B;QACG,sCAAsC,EAAE;;;;;;;gBAO5B,OAAO,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;yCA0Ba,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CtD;KACE,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type FoundationOwnershipRecord, type WorkspaceOwnershipRecord } from '../../ownership/index.js';
|
|
2
2
|
import { type ConfiguredDeploymentAccounts, type DeploymentProfile } from '../../repository-policy/index.js';
|
|
3
3
|
export interface WorkspaceFileOptions {
|
|
4
|
+
dependencyOverrides?: unknown;
|
|
4
5
|
deploymentAccounts?: ConfiguredDeploymentAccounts;
|
|
5
6
|
deploymentProfile?: DeploymentProfile;
|
|
6
7
|
deploymentRegion?: string | null;
|
|
@@ -7,6 +7,7 @@ exports.renderWorkspaceFiles = renderWorkspaceFiles;
|
|
|
7
7
|
exports.renderWorkspaceRootFilePlan = renderWorkspaceRootFilePlan;
|
|
8
8
|
exports.renderFoundationFilePlan = renderFoundationFilePlan;
|
|
9
9
|
const sensitive_patterns_1 = require("@empire-builder-kit/runtime/sensitive-patterns");
|
|
10
|
+
const dependency_overrides_js_1 = require("./dependency-overrides.js");
|
|
10
11
|
const index_js_1 = require("../../ownership/index.js");
|
|
11
12
|
const index_js_2 = require("../../frontend-security/index.js");
|
|
12
13
|
const index_js_3 = require("../../git-policy/index.js");
|
|
@@ -1050,6 +1051,7 @@ const SUPPLY_CHAIN_WORKSPACE_FILE_PLAN = (0, index_js_6.renderSupplyChainWorkspa
|
|
|
1050
1051
|
generatedAt: '1970-01-01T00:00:00.000Z',
|
|
1051
1052
|
});
|
|
1052
1053
|
const WORKSPACE_SEEDED_PATHS = new Set([
|
|
1054
|
+
dependency_overrides_js_1.DEPENDENCY_OVERRIDES_PATH,
|
|
1053
1055
|
...SUPPLY_CHAIN_WORKSPACE_FILE_PLAN.seeded,
|
|
1054
1056
|
...workspace_files_developer_agent_js_1.DEVELOPER_AGENT_WORKSPACE_SEEDED_PATHS,
|
|
1055
1057
|
'.github/CODEOWNERS',
|
|
@@ -1168,6 +1170,9 @@ function createWorkspaceOwnership(files, frameworkVersion) {
|
|
|
1168
1170
|
}
|
|
1169
1171
|
function renderWorkspaceFiles(options) {
|
|
1170
1172
|
const { frameworkVersion, name } = options;
|
|
1173
|
+
const dependencyOverrides = (0, dependency_overrides_js_1.parseDependencyOverrides)(options.dependencyOverrides === undefined
|
|
1174
|
+
? { schemaVersion: 1, overrides: {} }
|
|
1175
|
+
: options.dependencyOverrides);
|
|
1171
1176
|
const deploymentProfile = options.deploymentProfile ?? 'starter';
|
|
1172
1177
|
const activeStages = (0, index_js_4.activeDeploymentStages)(deploymentProfile);
|
|
1173
1178
|
const protectedWorkflowStageChoices = deploymentProfile === 'starter'
|
|
@@ -8055,8 +8060,15 @@ seeded decision record aligned with organization-specific budgets and alerts.
|
|
|
8055
8060
|
|
|
8056
8061
|
- Development uses EC2 NAT, a development bastion, and Aurora scale-to-zero.
|
|
8057
8062
|
${deploymentProfile === 'starter' ? '' : '- Staging uses EC2 NAT and Aurora scale-to-zero by default.\n'}- Production always uses managed NAT and retains protected data. Its explicit Repository
|
|
8058
|
-
Operating Policy profile selects
|
|
8059
|
-
|
|
8063
|
+
Operating Policy profile selects cost-optimized (0–2 ACUs, pause after five idle
|
|
8064
|
+
minutes), balanced (0.5–4 ACUs, always warm), or standard (2–16 ACUs, always warm).
|
|
8065
|
+
New starter repositories default to cost-optimized. Cold resume typically takes
|
|
8066
|
+
about 15 seconds and can exceed 30 seconds after extended inactivity; validate
|
|
8067
|
+
connection retries, request timeouts, migrations, and background polling.
|
|
8068
|
+
Capacity is shared by all Slices. Open connections can prevent pausing; storage
|
|
8069
|
+
and managed NAT remain billable while Aurora compute is paused.
|
|
8070
|
+
Existing 0.5–4 cost-optimized adopters must explicitly select balanced before
|
|
8071
|
+
upgrade, then opt into cost-optimized separately if cold starts are acceptable.
|
|
8060
8072
|
- ECS, EventBridge, Cognito, SNS, SSM, and CloudWatch are primarily usage-priced; logs,
|
|
8061
8073
|
metrics, alarms, and retained data still require active cost review.
|
|
8062
8074
|
|
|
@@ -9137,7 +9149,7 @@ if (
|
|
|
9137
9149
|
costs.aurora?.engineVersion !== '${index_js_4.FOUNDATION_AURORA_ENGINE_VERSION}' ||
|
|
9138
9150
|
costs.productionProfileSource !== 'ebk.repository-policy.json' ||
|
|
9139
9151
|
costs.productionProfiles?.standard?.aurora?.min !== '2 ACU' ||
|
|
9140
|
-
costs.productionProfiles
|
|
9152
|
+
JSON.stringify(costs.productionProfiles) !== JSON.stringify(${JSON.stringify(index_js_4.PRODUCTION_FOUNDATION_PROFILE_CONTRACTS)}) ||
|
|
9141
9153
|
!costs.stages?.development ||
|
|
9142
9154
|
JSON.stringify(Object.keys(costs.stages ?? {}).sort()) !==
|
|
9143
9155
|
JSON.stringify(${JSON.stringify([...activeStages].sort())}) ||
|
|
@@ -9230,6 +9242,7 @@ export default $config({
|
|
|
9230
9242
|
],
|
|
9231
9243
|
exclude: ['.sst', 'dist', 'node_modules'],
|
|
9232
9244
|
}),
|
|
9245
|
+
[dependency_overrides_js_1.DEPENDENCY_OVERRIDES_PATH]: json(dependencyOverrides),
|
|
9233
9246
|
'pnpm-workspace.yaml': `packages:
|
|
9234
9247
|
- 'packages/*'
|
|
9235
9248
|
- 'packages/*/apps/*'
|
|
@@ -9264,6 +9277,7 @@ supportedArchitectures:
|
|
|
9264
9277
|
strictDepBuilds: true
|
|
9265
9278
|
allowBuilds:
|
|
9266
9279
|
${index_js_6.FRAMEWORK_REVIEWED_BUILD_PACKAGES.map((packageName) => ` '${packageName}': true`).join('\n')}
|
|
9280
|
+
${(0, dependency_overrides_js_1.renderDependencyOverridesYaml)(dependencyOverrides)}
|
|
9267
9281
|
`,
|
|
9268
9282
|
'tsconfig.base.json': json({
|
|
9269
9283
|
compilerOptions: {
|