@fjall/deploy-core 4.4.0 → 5.0.0

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.
@@ -0,0 +1,250 @@
1
+ {
2
+ "version": 1,
3
+ "algorithm": "sha256",
4
+ "sources": [
5
+ "src"
6
+ ],
7
+ "hash": "52c0dc3c9269576cda9d0d1a0661aed0a9eb77da614c04d309b7e2847faa981d",
8
+ "files": {
9
+ "src/__test-utils__/awsMockHelpers.ts": "fea371c1b1869678",
10
+ "src/__test-utils__/index.ts": "e03cf35821157dc4",
11
+ "src/__test-utils__/lambdaManifestFixture.ts": "fcbe79471c6bc91a",
12
+ "src/__test-utils__/stackCleanupMock.ts": "bf3d0fc1b8ab5b03",
13
+ "src/aws/AwsProvider.ts": "8bbe053f15dfc046",
14
+ "src/aws/SimpleAwsProvider.ts": "41e5a4dee4736249",
15
+ "src/aws/cloudtrail/orgTrailDelivery.ts": "d743cdeb12b335fe",
16
+ "src/aws/index.ts": "2d3cdd0feac0371a",
17
+ "src/aws/organisations/accountGlobals.ts": "5e8443ef4642e3ce",
18
+ "src/aws/organisations/accounts.ts": "ec0247c304c21930",
19
+ "src/aws/organisations/backup.ts": "c6cd4320a8f517a2",
20
+ "src/aws/organisations/costAllocation.ts": "19ae8e2a87fe50e5",
21
+ "src/aws/organisations/delegatedAdmin.ts": "95cdad57553d1769",
22
+ "src/aws/organisations/identityCentre.ts": "0eb33a1ec2571445",
23
+ "src/aws/organisations/identityCentreSnapshot.ts": "a449e2d509eb2866",
24
+ "src/aws/organisations/importedAccounts.ts": "4ffbe2710c8dc29d",
25
+ "src/aws/organisations/index.ts": "c2b52170bf8d802f",
26
+ "src/aws/organisations/ipam.ts": "3dcaeadbb8ba6d2c",
27
+ "src/aws/organisations/oidcProvider.ts": "e7b5f39c9e946f7c",
28
+ "src/aws/organisations/organisation.ts": "caf677f92d5d052b",
29
+ "src/aws/organisations/organisationalUnits.ts": "95482e2d9cd21bf1",
30
+ "src/aws/organisations/pagination.ts": "a36aa1a48749c2a9",
31
+ "src/aws/organisations/policies.ts": "4e980742fa0eabb2",
32
+ "src/aws/organisations/ram.ts": "e1fb0055ed9daf57",
33
+ "src/aws/organisations/rootAccess.ts": "fe9af2f76a82b47c",
34
+ "src/aws/organisations/serviceAccess.ts": "4f2da2260c3c4185",
35
+ "src/aws/organisations/trustedAccess.ts": "219f50b31b4055e1",
36
+ "src/aws/organisations/types.ts": "c9d0988a57806998",
37
+ "src/aws/regions/regionOptStatus.ts": "2b0fb3d9ea197bf2",
38
+ "src/aws/sts/assumeRoot.ts": "ced03b7b3f39211c",
39
+ "src/aws/targetReadiness.ts": "c9f25b5a5bb1ea4d",
40
+ "src/aws/targetSetAdvisory.ts": "2b079b0f1b92e937",
41
+ "src/aws/utils/arnParser.ts": "f9cf7a395f65b294",
42
+ "src/aws/utils/awsErrorHandler.ts": "b9dc3afe3fabacf3",
43
+ "src/aws/utils/cloudformationEventHelpers.ts": "c2850420073796dd",
44
+ "src/aws/utils/cloudformationEventTypes.ts": "ab8c4927fb9b04cb",
45
+ "src/aws/utils/cloudformationEvents.ts": "5e21a29ffcd9ffca",
46
+ "src/aws/utils/index.ts": "97c9ac921f2c0ad2",
47
+ "src/aws/utils/regions.ts": "3a5191f4d2242a60",
48
+ "src/aws/utils/stackStatus.ts": "55fb23ba5514bc13",
49
+ "src/events/index.ts": "e55c022f0d9013e6",
50
+ "src/index.ts": "6d1a403019e14e4f",
51
+ "src/orchestration/activeDeploymentGuard.ts": "e8dde742c00ea728",
52
+ "src/orchestration/application/applicationDeploy.ts": "6a3520b825a24d86",
53
+ "src/orchestration/application/applicationDeployHelpers.ts": "a8023472f95d3f05",
54
+ "src/orchestration/application/applicationDestroy.ts": "1044d686e026b509",
55
+ "src/orchestration/application/approvalGate.ts": "e4dee819c94fd15c",
56
+ "src/orchestration/application/artefactCollection.ts": "b77848c922765d30",
57
+ "src/orchestration/application/assemblyIntegrity.ts": "6399169e3062118c",
58
+ "src/orchestration/application/buildArgResolver.ts": "47142177df453d9c",
59
+ "src/orchestration/application/buildGroupValidator.ts": "0f0e1f142ee31fe0",
60
+ "src/orchestration/application/buildSecretResolver.ts": "bdb48c28857188ba",
61
+ "src/orchestration/application/buildSecretSession.ts": "b45265140a3a781a",
62
+ "src/orchestration/application/codeOnlyDeploy.ts": "062b0acdad1dcf08",
63
+ "src/orchestration/application/databaseEndpointReconcile.ts": "27b14ee41524c632",
64
+ "src/orchestration/application/deploySessionPolicy.ts": "3fdd0e349d2144e6",
65
+ "src/orchestration/application/destroyPreFlight.ts": "cc4978dec60b033e",
66
+ "src/orchestration/application/destructionGate.ts": "82456502da5c2318",
67
+ "src/orchestration/application/detectionPipeline.ts": "8f8303454c1eaeea",
68
+ "src/orchestration/application/dockerBuildHelper.ts": "e7a7259e987d93be",
69
+ "src/orchestration/application/ecrCacheRepository.ts": "d7a5602ccabde493",
70
+ "src/orchestration/application/engineCompat.ts": "0670df69028a964f",
71
+ "src/orchestration/application/lambdaCodeOnlyRollout.ts": "fc347b90ff55c1fd",
72
+ "src/orchestration/application/leaseGate.ts": "26be2e119b32bef4",
73
+ "src/orchestration/application/openNextBuild.ts": "d464cdf10dc8ab73",
74
+ "src/orchestration/application/plan/approvalToken.ts": "997ff274210e4d0d",
75
+ "src/orchestration/application/plan/assemblyDigest.ts": "4c77451ced199188",
76
+ "src/orchestration/application/plan/buildDeployPlan.ts": "4cb0b57b60712404",
77
+ "src/orchestration/application/plan/changeSetEscalation.ts": "d9ad7a5a65283dc4",
78
+ "src/orchestration/application/plan/classify.ts": "6b310180e0479357",
79
+ "src/orchestration/application/plan/computeDeployPlan.ts": "9f8b57db33f537ee",
80
+ "src/orchestration/application/plan/index.ts": "a2292dca615dd021",
81
+ "src/orchestration/application/plan/loadDeployPlan.ts": "a915eb778d1d33cc",
82
+ "src/orchestration/application/plan/pinnedNames.ts": "d6a90c96c88f13e0",
83
+ "src/orchestration/application/plan/registryOverlay.ts": "920be845c7f4aea2",
84
+ "src/orchestration/application/plan/renderDeployPlan.ts": "f793593d3b686f94",
85
+ "src/orchestration/application/plan/types.ts": "32b2d437767af792",
86
+ "src/orchestration/application/serviceImageTagsRollback.ts": "55e23a493545511c",
87
+ "src/orchestration/application/taskDefinitionRoll.ts": "d9378c509c7ec287",
88
+ "src/orchestration/application/welcomeImageHelper.ts": "1721ea7edc37a96e",
89
+ "src/orchestration/bootstrapTags.ts": "2a7cea931cab808b",
90
+ "src/orchestration/builders/dockerBuilder.ts": "6ccdb4a51844d455",
91
+ "src/orchestration/builders/frameworkRegistry.ts": "8f6c4d19168a7fa3",
92
+ "src/orchestration/builders/index.ts": "3b0b2492294c62db",
93
+ "src/orchestration/builders/openNextBuilder.ts": "7416a37e19380660",
94
+ "src/orchestration/builders/staticSiteBuilder.ts": "a0403be58052310f",
95
+ "src/orchestration/contextHelpers.ts": "0fa1739a0b49bdd9",
96
+ "src/orchestration/deploy.ts": "4f86b86e797bc04f",
97
+ "src/orchestration/destroy.ts": "b6da154984e63a8d",
98
+ "src/orchestration/dockerBuildParamsKeys.ts": "ac3d6ecd24d68792",
99
+ "src/orchestration/dockerInterface.ts": "f2efc8a98d3b3d65",
100
+ "src/orchestration/domain/caaPreflight.ts": "4a9ab5bd9567fb41",
101
+ "src/orchestration/domain/delegatedDomainDeploy.ts": "832c278797908795",
102
+ "src/orchestration/domain/delegationDestroyMirror.ts": "40323fffaece2300",
103
+ "src/orchestration/domain/index.ts": "cd2f98114a42c758",
104
+ "src/orchestration/domain/nsPropagationGate.ts": "c7a443e7048d4430",
105
+ "src/orchestration/domain/route53Delegation.ts": "a7149a0542e4d185",
106
+ "src/orchestration/domain/types.ts": "132972b0e1113ac1",
107
+ "src/orchestration/domain/zoneClassifier.ts": "f9908f0b4635709e",
108
+ "src/orchestration/domainInterface.ts": "2187279bbd26144d",
109
+ "src/orchestration/drift/classifyDriftFailure.ts": "4426ecc6545b0472",
110
+ "src/orchestration/drift/detectStackDrift.ts": "cc38b12162e08fac",
111
+ "src/orchestration/drift/driftPreFlight.ts": "287b921160c929f8",
112
+ "src/orchestration/drift/driftProbe.ts": "970ccb185c6efe83",
113
+ "src/orchestration/drift/driftSuspectJournal.ts": "d0189a53a7b7cb7e",
114
+ "src/orchestration/drift/preFlightGate.ts": "8067a3f474fba0b5",
115
+ "src/orchestration/drift/route53Names.ts": "1ac53cc30ac3260e",
116
+ "src/orchestration/drift/route53RecordPreflight.ts": "f4db16a6c0e69ac9",
117
+ "src/orchestration/index.ts": "e60beac22e4bde47",
118
+ "src/orchestration/manifestSecretParser.ts": "c5576bd88a3652f8",
119
+ "src/orchestration/organisation/accountsConfig.ts": "a55a3306564e7b2f",
120
+ "src/orchestration/organisation/cascadeDestroyHelpers.ts": "b41064c99408ffe6",
121
+ "src/orchestration/organisation/cascadeHelpers.ts": "24c834600ed6d485",
122
+ "src/orchestration/organisation/cascadeSummary.ts": "335be9649cea0626",
123
+ "src/orchestration/organisation/organisationDeploy.ts": "f3fad626230d8a16",
124
+ "src/orchestration/organisation/organisationDestroy.ts": "06076a7e76345854",
125
+ "src/orchestration/organisation/organisationSetup.ts": "3f3415b762a83a47",
126
+ "src/orchestration/organisation/reconcileProviderAccounts.ts": "84d33f456ec52331",
127
+ "src/orchestration/organisationDeploy/cascadeExecution.ts": "ebc32ef8857d8037",
128
+ "src/orchestration/organisationDeploy/infraSteps.ts": "53880cef5020dd04",
129
+ "src/orchestration/organisationDeploy/orgCascadeDeploy.ts": "97a85277580be283",
130
+ "src/orchestration/organisationDeploy/orgContext.ts": "14ff392c172575ab",
131
+ "src/orchestration/organisationDeploy/resolveCascadeAccounts.ts": "1804c62e365a881a",
132
+ "src/orchestration/organisationDeploy/singleComponentDeploy.ts": "3e35f43f3a59097c",
133
+ "src/orchestration/organisationDeploy/trailReconciliation.ts": "7aefb6417c77280b",
134
+ "src/orchestration/probes/deleteBlockProbes.ts": "fa3111386026ca6e",
135
+ "src/orchestration/remediation/driftRepairGate.ts": "988e5ba315d8f94d",
136
+ "src/orchestration/remediation/forensicsCapture.ts": "cc4e95ec15783f65",
137
+ "src/orchestration/remediation/forgetResource.ts": "5509613276ed14d4",
138
+ "src/orchestration/remediation/pinRemediation.ts": "d297092ac397c587",
139
+ "src/orchestration/remediation/postFailureRepairOffer.ts": "934b3fbd1c4d34d1",
140
+ "src/orchestration/remediation/recreatePreFlight.ts": "654ef18cabe97777",
141
+ "src/orchestration/remediation/recreateResource.ts": "a9d97c47e0af68a7",
142
+ "src/orchestration/remediation/remediationJournal.ts": "3ff3e7e2e5cbfae6",
143
+ "src/orchestration/remediation/removalUpdate.ts": "805be54eb0ac1623",
144
+ "src/orchestration/remediation/retainFlip.ts": "8799a03380cb8f45",
145
+ "src/orchestration/resolveOperation.ts": "9bcd66ba59808104",
146
+ "src/orchestration/restart/restartApplication.ts": "08866c681f84c1ed",
147
+ "src/orchestration/restart/secretsDrift.ts": "53b91db6f8f7f04d",
148
+ "src/orchestration/secretArnResolver.ts": "20041aca6eb7e762",
149
+ "src/orchestration/serviceFactory.ts": "ec35c9eb8015d540",
150
+ "src/orchestration/spawnHelpers.ts": "cbad657ae7039a86",
151
+ "src/orchestration/stackCleanup.ts": "e6c447375046dcec",
152
+ "src/orchestration/stackCleanup/bucketOps.ts": "59a3c8349e766947",
153
+ "src/orchestration/stackCleanup/failedStack.ts": "48b700639d8001c7",
154
+ "src/orchestration/stackCleanup/logging.ts": "dbc9e25542320848",
155
+ "src/orchestration/stackCleanup/messages.ts": "959252d06b1a73a5",
156
+ "src/orchestration/stackCleanup/orphanSweep.ts": "c35d8fe48f564df8",
157
+ "src/orchestration/stackCleanup/preEmpty.ts": "90c42a32361b00a6",
158
+ "src/orchestration/stackCleanup/stackResources.ts": "13ffd8bfaad6baec",
159
+ "src/orchestration/stepLifecycle.ts": "71722e3e50b19ee6",
160
+ "src/orchestration/trailMigration/memberTrailCleanup.ts": "469e4390c18e45a8",
161
+ "src/orchestration/trailMigration/trailMigration.ts": "b52a84a694c81f2d",
162
+ "src/orchestration/unlock/bucketPolicyTriage.ts": "a40d55c0fc5ba63e",
163
+ "src/orchestration/unlock/restoreAndReconcileQuarantinedBucket.ts": "c534511ed49952ad",
164
+ "src/orchestration/unlock/restoreBucketPolicy.ts": "f266285ffacf3cf6",
165
+ "src/orchestration/unlock/scpRemediation.ts": "c5d425c850abe455",
166
+ "src/orchestration/unlock/toResourcePolicyStatements.ts": "ddd15625c785a48d",
167
+ "src/orchestration/unlock/unlockBucket.ts": "d08d7cb6243d7cec",
168
+ "src/orchestration/unlock/unlockQueue.ts": "f7e8eccc258d763d",
169
+ "src/services/application/ApplicationStackService.ts": "45824be79c1b82aa",
170
+ "src/services/application/applicationStackHelpers.ts": "04e1758b97ffc5fc",
171
+ "src/services/application/index.ts": "ee810be803dfda9c",
172
+ "src/services/index.ts": "cc84cbd35873b20d",
173
+ "src/services/infrastructure/CdkArgumentBuilder.ts": "c4e27174b9499652",
174
+ "src/services/infrastructure/CdkCommandRunner.ts": "e33d4e529298f518",
175
+ "src/services/infrastructure/CdkErrorFormatter.ts": "e2e017136108a5d1",
176
+ "src/services/infrastructure/CdkEventMonitoring.ts": "2b0ecd84f76c54c1",
177
+ "src/services/infrastructure/CdkOutputAnalyser.ts": "37114ecae45d7017",
178
+ "src/services/infrastructure/CdkOutputParser.ts": "eed9f3475324118e",
179
+ "src/services/infrastructure/CdkProcessManager.ts": "f68ae4e44adee2fa",
180
+ "src/services/infrastructure/CdkService.ts": "1ec1718dfc3cb587",
181
+ "src/services/infrastructure/CdkServiceTypes.ts": "c025fcfe025e2052",
182
+ "src/services/infrastructure/CfnRegistryService.ts": "bd4f57d97982cdda",
183
+ "src/services/infrastructure/CloudFormationService.ts": "df409711c5962464",
184
+ "src/services/infrastructure/EcrImageInspectorService.ts": "e784440b5680df74",
185
+ "src/services/infrastructure/EcsService.ts": "caa79dd5fd7ada9b",
186
+ "src/services/infrastructure/EcsServiceResolver.ts": "bad8ea4dc59c64a8",
187
+ "src/services/infrastructure/ICdkProcessManager.ts": "7e7bfe7dacc999f6",
188
+ "src/services/infrastructure/LambdaService.ts": "5b21e34185e77a4c",
189
+ "src/services/infrastructure/SsmParameterMetadataService.ts": "3ff0bb42219cec3d",
190
+ "src/services/infrastructure/cancelInFlightStack.ts": "8388a16a23db725a",
191
+ "src/services/infrastructure/cdkServiceHelpers.ts": "b75bf0b0fd6e2e0b",
192
+ "src/services/infrastructure/cfnRegistrySeed.ts": "b1232b66883d6f90",
193
+ "src/services/infrastructure/changeSetProbe.ts": "5f3e100db396cf9b",
194
+ "src/services/infrastructure/constructMapEnrichment.ts": "7400af9bcfaa0da3",
195
+ "src/services/infrastructure/dependencyIntegrityGate.ts": "c984bb1620f73f38",
196
+ "src/services/infrastructure/index.ts": "1241c6dc24d925fe",
197
+ "src/services/infrastructure/infraTypecheckPreflight.ts": "09e423a8283e3b8b",
198
+ "src/services/infrastructure/transientNetworkRecovery.ts": "44a9333ce963bf50",
199
+ "src/services/supporting/CdkContextBuilder.ts": "68a8589be91de20f",
200
+ "src/services/supporting/TemplateHashService.ts": "9fd5351f90b5cefb",
201
+ "src/services/supporting/helpers.ts": "81c0ba7bfdd99366",
202
+ "src/services/supporting/index.ts": "4bf4e746399d80e3",
203
+ "src/steps/index.ts": "9172adb86bdd1ee5",
204
+ "src/steps/stepRegistry.ts": "d8e0c0b128554b26",
205
+ "src/types/ProgressEvent.ts": "99437feb0c811c05",
206
+ "src/types/apiClient.ts": "9fd8a107003916d7",
207
+ "src/types/application/ApplicationServiceTypes.ts": "e5185e9ef24a1625",
208
+ "src/types/application/index.ts": "c44d78d2209c4b09",
209
+ "src/types/approval.ts": "d5b7741f677d5f21",
210
+ "src/types/callbackKeys.ts": "37a9c674500db6ce",
211
+ "src/types/callbacks.ts": "04395c71d2437ef7",
212
+ "src/types/config/DomainState.ts": "34102eb6d54f46c2",
213
+ "src/types/config/FjallState.ts": "253221397d892296",
214
+ "src/types/config/entitlements.ts": "f69ad28847b67e9a",
215
+ "src/types/config/orgConfig.ts": "452866f049cbd71d",
216
+ "src/types/constants.ts": "4d77e1ab4925b9a6",
217
+ "src/types/credentials.ts": "73ea792d58371b99",
218
+ "src/types/deployEmitter.ts": "b4e0b9659fa7ecc3",
219
+ "src/types/deployEvent.ts": "f5396720df68e6d5",
220
+ "src/types/deployEventParse.ts": "16bc2371fb747d96",
221
+ "src/types/deployEventTypeGuards.ts": "731c4e5761b13fca",
222
+ "src/types/deployment/DeploymentServiceTypes.ts": "ba257f2e37013afd",
223
+ "src/types/deployment/DeploymentTypes.ts": "dcc3d03c45843879",
224
+ "src/types/deployment/cloudformation.ts": "5a0c51e263827943",
225
+ "src/types/deployment/index.ts": "4bdffd195379a05d",
226
+ "src/types/deployment/parallel.ts": "c06e3ac55fb39eb7",
227
+ "src/types/deploymentEventSchema.ts": "089ffbe9be47297d",
228
+ "src/types/destruction.ts": "bd4c2356b04e745a",
229
+ "src/types/detection/detection.ts": "800d23c9450ce324",
230
+ "src/types/detection/patternDetection.ts": "6cef991ea486cc94",
231
+ "src/types/detection/patternTypes.ts": "5013f5c0ce1566ac",
232
+ "src/types/drift.ts": "cef9040f5c8f34e2",
233
+ "src/types/errors/CdkError.ts": "6bda32540c93bac9",
234
+ "src/types/errors/ServiceError.ts": "06d269a22c2a05d6",
235
+ "src/types/errors/index.ts": "e3bf5e08988d1182",
236
+ "src/types/events.ts": "be04dbe61551d76f",
237
+ "src/types/frameworkBuilder.ts": "41198a0b446f60b6",
238
+ "src/types/index.ts": "b19b22f6504ccab5",
239
+ "src/types/operations.ts": "57a6c9e22a3f37ca",
240
+ "src/types/params.ts": "c2fcd69d9e12c7d7",
241
+ "src/types/remediation.ts": "9cdf862934552c0d",
242
+ "src/types/stepDefinitions.ts": "a5e2aa03b15011b4",
243
+ "src/types/validation.ts": "44aa473ec0e25dc4",
244
+ "src/util/dockerfileDetection.ts": "c407ab8208fb65ec",
245
+ "src/util/index.ts": "6fcf776825c4518e",
246
+ "src/util/sequencedCallbacks.ts": "e0eb541cff459083",
247
+ "src/util/sleepAbortable.ts": "f9cac3bf8a79a476",
248
+ "src/version.ts": "1811a4475823b27e"
249
+ }
250
+ }
package/dist/.minified CHANGED
@@ -1 +1 @@
1
- 236 files minified at 2026-07-30T00:34:18.012Z
1
+ 236 files minified at 2026-07-31T11:05:23.916Z
@@ -1,35 +1,7 @@
1
- /**
2
- * Deploy-time engine ↔ assembly compatibility gate.
3
- *
4
- * The orchestrating fjall engine (deploy-core) and the app's pinned
5
- * `@fjall/components-infrastructure` are chosen by two independent mechanisms
6
- * with no compatibility check. When they skew across a major, the failure is
7
- * silent-wrong (dropped services, misconfigured images, IAM drift), not loud.
8
- *
9
- * This module is the ONE chokepoint that closes that gap: the constructs stamp
10
- * an `engineCompat` constraint into the cloud assembly at synth (Phase 1); the
11
- * deploy engine reads it here — after the final synth, before any build / push
12
- * / CloudFormation call — and refuses to proceed on an incompatible pairing.
13
- *
14
- * Phase 0b (this increment) ships the READER only: `evaluateEngineCompat` and
15
- * `assertEngineCompatibleWithAssembly` are live and wired into the deploy path,
16
- * but NO emitter stamps `engineCompat` yet, so every real assembly classifies
17
- * `no-constraint` and proceeds silently. This is deliberate: reader tolerance
18
- * must roll out to every engine and worker BEFORE any emitter can stamp a
19
- * constraint (the load-bearing ordering invariant of the rollout).
20
- *
21
- * Graduated, classify-don't-throw policy (`VERDICT_POLICY`):
22
- * - engine-too-old / shape-too-new / malformed / indeterminate → REFUSE
23
- * - engine-ahead (newer than the assembly's declared maximum major) → WARN, proceed
24
- * - ok / no-constraint → proceed silently
25
- * A refuse is overridable (audit-logged) via the `allowEngineSkew` parameter or
26
- * the `FJALL_ALLOW_ENGINE_SKEW` env var — an escape hatch for an operator who
27
- * knows better than the constraint, never a silent bypass.
28
- */
29
1
  import { type Result } from "@fjall/generator";
30
2
  import { type EngineCompat, type EngineCompatEnvelope } from "@fjall/util/manifest";
31
3
  /** The distinct outcomes of comparing a running engine against an assembly. */
32
- export type EngineCompatVerdictKind = "ok" | "no-constraint" | "engine-ahead" | "engine-too-old" | "shape-too-new" | "malformed-constraint" | "indeterminate";
4
+ export type EngineCompatVerdictKind = "ok" | "no-constraint" | "engine-ahead" | "engine-too-old" | "cdk-cli-too-old" | "shape-too-new" | "malformed-constraint" | "indeterminate";
33
5
  export interface EngineCompatVerdict {
34
6
  readonly kind: EngineCompatVerdictKind;
35
7
  readonly message: string;
@@ -40,6 +12,13 @@ export interface EvaluateEngineCompatInput {
40
12
  readonly envelope: EngineCompatEnvelope;
41
13
  readonly runningEngineVersion: string | undefined;
42
14
  readonly maxSupportedManifestVersion: number;
15
+ /**
16
+ * The deploy engine's bundled `aws-cdk` CLI version, for the FM1
17
+ * `minimumAwsCdkCli` cross-tree floor check. Only consulted when the assembly
18
+ * declares a CLI floor; undefined then classifies `indeterminate` (a CLI floor
19
+ * was declared but the running CLI could not be determined → refuse).
20
+ */
21
+ readonly runningAwsCdkCliVersion?: string | undefined;
43
22
  }
44
23
  /**
45
24
  * Pure classifier — takes a read envelope + the running engine version and
@@ -52,6 +31,12 @@ export interface AssertEngineCompatibleInput {
52
31
  readonly cdkOutPath: string;
53
32
  /** Defaults to `DEPLOY_CORE_VERSION` (the running engine). Overridable for tests. */
54
33
  readonly runningEngineVersion?: string;
34
+ /**
35
+ * Defaults to the deploy engine's bundled `aws-cdk` CLI version (FM1 floor).
36
+ * Overridable for tests. Note: passing `undefined` re-triggers discovery (JS
37
+ * default-param semantics) — inject a value to force the indeterminate path.
38
+ */
39
+ readonly runningAwsCdkCliVersion?: string;
55
40
  /** Explicit override — mirrors the `FJALL_ALLOW_ENGINE_SKEW` env escape hatch. */
56
41
  readonly allowEngineSkew?: boolean;
57
42
  /** Advisory-warning sink (WARN verdicts + audit-logged overrides). */
@@ -1 +1 @@
1
- var p=Object.defineProperty;var m=(r,i)=>p(r,"name",{value:i,configurable:!0});import{success as u,failure as E}from"@fjall/generator";import{logger as g}from"@fjall/util/logger";import{readEngineCompatEnvelope as y,MAX_SUPPORTED_MANIFEST_SCHEMA_VERSION as h}from"@fjall/util/manifest";import{DEPLOY_CORE_VERSION as b}from"../../version.js";const l="engineCompat",c="FJALL_ALLOW_ENGINE_SKEW",v={ok:"proceed","no-constraint":"proceed","engine-ahead":"warn","engine-too-old":"refuse","shape-too-new":"refuse","malformed-constraint":"refuse",indeterminate:"refuse"};function f(r){const i=r.trim().replace(/^v/i,"").split(/[-+]/)[0]??"";if(i.length===0)return;const e=i.split("."),o=Number(e[0]),n=e.length>1?Number(e[1]):0,s=e.length>2?Number(e[2]):0;if(!(!Number.isInteger(o)||o<0)&&!(!Number.isInteger(n)||n<0)&&!(!Number.isInteger(s)||s<0))return{major:o,minor:n,patch:s}}m(f,"parseEngineVersion");function V(r,i){return r.major!==i.major?r.major-i.major:r.minor!==i.minor?r.minor-i.minor:r.patch-i.patch}m(V,"compareEngineVersions");function a(r,i,e,o){return{kind:r,message:i,engineCompat:e,runningEngineVersion:o}}m(a,"verdict");function w(r){const{envelope:i,runningEngineVersion:e,maxSupportedManifestVersion:o}=r;if(i.manifestVersion!==void 0&&i.manifestVersion>o)return a("shape-too-new",`This assembly declares manifest schema version ${i.manifestVersion}, but this deploy engine (${e??"unknown"}) reads at most version ${o}. Upgrade fjall to deploy this assembly.`,i.engineCompat,e);if(i.engineCompatPresent&&i.engineCompat===void 0)return a("malformed-constraint","This assembly carries an engine-compatibility block with no usable `minimumEngineVersion`. Cannot verify the deploy engine is compatible.",void 0,e);const n=i.engineCompat;if(n===void 0)return a("no-constraint","Assembly declares no engine-compatibility constraint.",void 0,e);const s=f(n.minimumEngineVersion);if(s===void 0)return a("malformed-constraint",`This assembly declares an unparseable minimum engine version ("${n.minimumEngineVersion}"). Cannot verify compatibility.`,n,e);const t=e===void 0?void 0:f(e);return t===void 0?a("indeterminate",`This assembly requires deploy engine >= ${n.minimumEngineVersion}, but the running engine version could not be determined. Cannot verify compatibility.`,n,e):V(t,s)<0?a("engine-too-old",`This assembly was synthesised by @fjall/components-infrastructure ${n.synthesisedBy||"(unknown version)"} and requires deploy engine >= ${n.minimumEngineVersion}, but the running engine is ${e}. Upgrade the fjall engine to at least ${n.minimumEngineVersion} to deploy this assembly.`,n,e):n.maximumEngineMajor!==void 0&&t.major>n.maximumEngineMajor?a("engine-ahead",`The running deploy engine (${e}) is a newer major than the maximum (${n.maximumEngineMajor}) this assembly was validated against. Proceeding \u2014 re-verify the deploy if you see unexpected infrastructure changes.`,n,e):a("ok",`Deploy engine ${e} satisfies the assembly's minimum (${n.minimumEngineVersion}).`,n,e)}m(w,"evaluateEngineCompat");function C(){const r=process.env[c];return r!==void 0&&r!==""}m(C,"engineSkewOverrideFromEnv");function I(r){const{cdkOutPath:i,runningEngineVersion:e=b,allowEngineSkew:o,onWarning:n}=r,s=y(i),t=w({envelope:s,runningEngineVersion:e,maxSupportedManifestVersion:h}),d=v[t.kind];return d==="proceed"?u(t):d==="warn"?(g.warn(l,"Engine/assembly compatibility warning",{kind:t.kind,detail:t.message}),n?.(t.message),u(t)):o===!0||C()?(g.warn(l,"Engine/assembly compatibility gate OVERRIDDEN",{kind:t.kind,detail:t.message,via:o===!0?"parameter":c}),n?.(`Engine compatibility gate overridden \u2014 ${t.message}`),u(t)):E(new Error(t.message))}m(I,"assertEngineCompatibleWithAssembly");export{I as assertEngineCompatibleWithAssembly,w as evaluateEngineCompat};
1
+ var b=Object.defineProperty;var m=(r,i)=>b(r,"name",{value:i,configurable:!0});import{readFileSync as C}from"node:fs";import{createRequire as E}from"node:module";import{success as f,failure as v}from"@fjall/generator";import{logger as g}from"@fjall/util/logger";import{maskSensitiveOutput as w}from"@fjall/util";import{readEngineCompatEnvelope as k,MAX_SUPPORTED_MANIFEST_SCHEMA_VERSION as V}from"@fjall/util/manifest";import{DEPLOY_CORE_VERSION as $}from"../../version.js";const p="engineCompat",y="FJALL_ALLOW_ENGINE_SKEW",I={ok:"proceed","no-constraint":"proceed","engine-ahead":"warn","engine-too-old":"refuse","cdk-cli-too-old":"refuse","shape-too-new":"refuse","malformed-constraint":"refuse",indeterminate:"refuse"};function l(r){const i=r.trim().replace(/^v/i,"").split(/[-+]/)[0]??"";if(i.length===0)return;const n=i.split("."),o=Number(n[0]),a=n.length>1?Number(n[1]):0,e=n.length>2?Number(n[2]):0;if(!(!Number.isInteger(o)||o<0)&&!(!Number.isInteger(a)||a<0)&&!(!Number.isInteger(e)||e<0))return{major:o,minor:a,patch:e}}m(l,"parseEngineVersion");function h(r,i){return r.major!==i.major?r.major-i.major:r.minor!==i.minor?r.minor-i.minor:r.patch-i.patch}m(h,"compareEngineVersions");function s(r,i,n,o){return{kind:r,message:i,engineCompat:n,runningEngineVersion:o}}m(s,"verdict");function N(r){const{envelope:i,runningEngineVersion:n,maxSupportedManifestVersion:o,runningAwsCdkCliVersion:a}=r;if(i.manifestVersion!==void 0&&i.manifestVersion>o)return s("shape-too-new",`This assembly declares manifest schema version ${i.manifestVersion}, but this deploy engine (${n??"unknown"}) reads at most version ${o}. Upgrade fjall to deploy this assembly.`,i.engineCompat,n);if(i.engineCompatPresent&&i.engineCompat===void 0)return s("malformed-constraint","This assembly carries an engine-compatibility block with no usable `minimumEngineVersion`. Cannot verify the deploy engine is compatible.",void 0,n);const e=i.engineCompat;if(e===void 0)return s("no-constraint","Assembly declares no engine-compatibility constraint.",void 0,n);const d=l(e.minimumEngineVersion);if(d===void 0)return s("malformed-constraint",`This assembly declares an unparseable minimum engine version ("${e.minimumEngineVersion}"). Cannot verify compatibility.`,e,n);const t=n===void 0?void 0:l(n);if(t===void 0)return s("indeterminate",`This assembly requires deploy engine >= ${e.minimumEngineVersion}, but the running engine version could not be determined. Cannot verify compatibility.`,e,n);if(h(t,d)<0)return s("engine-too-old",`This assembly was synthesised by @fjall/components-infrastructure ${e.synthesisedBy||"(unknown version)"} and requires deploy engine >= ${e.minimumEngineVersion}, but the running engine is ${n}. Upgrade the fjall engine to at least ${e.minimumEngineVersion} to deploy this assembly.`,e,n);if(e.minimumAwsCdkCli!==void 0){const u=l(e.minimumAwsCdkCli);if(u===void 0)return s("malformed-constraint",`This assembly declares an unparseable minimum aws-cdk CLI version ("${e.minimumAwsCdkCli}"). Cannot verify compatibility.`,e,n);const c=a===void 0?void 0:l(a);if(c===void 0)return s("indeterminate",`This assembly requires the deploy engine's bundled aws-cdk CLI to be >= ${e.minimumAwsCdkCli}, but the running CLI version could not be determined. Cannot verify compatibility.`,e,n);if(h(c,u)<0)return s("cdk-cli-too-old",`This assembly was synthesised by @fjall/components-infrastructure ${e.synthesisedBy||"(unknown version)"} and requires the deploy engine's bundled aws-cdk CLI to be >= ${e.minimumAwsCdkCli}, but it is ${a}. Upgrade the fjall engine (which bundles the aws-cdk CLI) to deploy this assembly.`,e,n)}return e.maximumEngineMajor!==void 0&&t.major>e.maximumEngineMajor?s("engine-ahead",`The running deploy engine (${n}) is a newer major than the maximum (${e.maximumEngineMajor}) this assembly was validated against. Proceeding \u2014 re-verify the deploy if you see unexpected infrastructure changes.`,e,n):s("ok",`Deploy engine ${n} satisfies the assembly's minimum (${e.minimumEngineVersion}).`,e,n)}m(N,"evaluateEngineCompat");function j(){const r=process.env[y];return r!==void 0&&r!==""}m(j,"engineSkewOverrideFromEnv");function A(){try{const r=E(import.meta.url),i=JSON.parse(C(r.resolve("aws-cdk/package.json"),"utf8"));return typeof i.version=="string"&&i.version.length>0?i.version:void 0}catch(r){g.debug(p,"Could not resolve bundled aws-cdk CLI version for the FM1 floor check",{error:w(r instanceof Error?r.message:String(r))});return}}m(A,"resolveRunningAwsCdkCliVersion");function P(r){const{cdkOutPath:i,runningEngineVersion:n=$,runningAwsCdkCliVersion:o=A(),allowEngineSkew:a,onWarning:e}=r,d=k(i),t=N({envelope:d,runningEngineVersion:n,maxSupportedManifestVersion:V,runningAwsCdkCliVersion:o}),u=I[t.kind];return u==="proceed"?f(t):u==="warn"?(g.warn(p,"Engine/assembly compatibility warning",{kind:t.kind,detail:t.message}),e?.(t.message),f(t)):a===!0||j()?(g.warn(p,"Engine/assembly compatibility gate OVERRIDDEN",{kind:t.kind,detail:t.message,via:a===!0?"parameter":y}),e?.(`Engine compatibility gate overridden \u2014 ${t.message}`),f(t)):v(new Error(t.message))}m(P,"assertEngineCompatibleWithAssembly");export{P as assertEngineCompatibleWithAssembly,N as evaluateEngineCompat};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fjall/deploy-core",
3
- "version": "4.4.0",
3
+ "version": "5.0.0",
4
4
  "description": "Shared deployment engine for Fjall — used by CLI and webapp worker",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
@@ -48,7 +48,8 @@
48
48
  },
49
49
  "scripts": {
50
50
  "clean": "rm -rf ./dist ./sourcemaps",
51
- "build": "npm run clean && tsc && node ../scripts/minify-dist.mjs dist",
51
+ "version": "node ../scripts/sync-peer-bands.mjs",
52
+ "build": "npm run clean && tsc && node ../scripts/minify-dist.mjs dist && node ../scripts/stamp-build.mjs",
52
53
  "prepack": "node ../scripts/check-dist-freshness.mjs",
53
54
  "watch": "npm run build && tsc --watch --preserveWatchOutput",
54
55
  "watch:only": "tsc --watch --preserveWatchOutput",
@@ -65,41 +66,49 @@
65
66
  },
66
67
  "license": "SEE LICENSE IN LICENSE",
67
68
  "dependencies": {
68
- "@aws-cdk/cloudformation-diff": "2.187.1",
69
- "@aws-sdk/client-account": "^3.1067.0",
70
- "@aws-sdk/client-acm": "^3.1038.0",
71
- "@aws-sdk/client-backup": "^3.1038.0",
72
- "@aws-sdk/client-cloudformation": "^3.1038.0",
73
- "@aws-sdk/client-cloudtrail": "^3.1065.0",
74
- "@aws-sdk/client-cost-explorer": "^3.1038.0",
75
- "@aws-sdk/client-dynamodb": "^3.1038.0",
76
- "@aws-sdk/client-ec2": "^3.1038.0",
77
- "@aws-sdk/client-ecr": "^3.1039.0",
78
- "@aws-sdk/client-iam": "^3.1038.0",
79
- "@aws-sdk/client-identitystore": "^3.1079.0",
80
- "@aws-sdk/client-kms": "^3.1065.0",
81
- "@aws-sdk/client-lambda": "^3.1038.0",
82
- "@aws-sdk/client-organizations": "^3.1038.0",
83
- "@aws-sdk/client-ram": "^3.1038.0",
84
- "@aws-sdk/client-rds": "^3.1038.0",
85
- "@aws-sdk/client-route-53": "^3.1038.0",
86
- "@aws-sdk/client-s3": "^3.1038.0",
87
- "@aws-sdk/client-secrets-manager": "^3.1038.0",
88
- "@aws-sdk/client-sqs": "^3.1067.0",
89
- "@aws-sdk/client-ssm": "^3.1038.0",
90
- "@aws-sdk/client-sso-admin": "^3.1038.0",
91
- "@aws-sdk/client-sts": "^3.1038.0",
92
- "@fjall/generator": "^4.4.0",
93
- "@fjall/util": "^4.4.0",
94
- "@smithy/node-http-handler": "^4.6.1",
95
- "aws-cdk": "^2.1128.1",
96
- "tsx": "^4.21.0",
69
+ "@aws-cdk/cloudformation-diff": "2.187.2",
70
+ "@aws-sdk/client-account": "^3.1098.0",
71
+ "@aws-sdk/client-acm": "^3.1098.0",
72
+ "@aws-sdk/client-backup": "^3.1098.0",
73
+ "@aws-sdk/client-cloudformation": "^3.1098.0",
74
+ "@aws-sdk/client-cloudtrail": "^3.1098.0",
75
+ "@aws-sdk/client-cost-explorer": "^3.1098.0",
76
+ "@aws-sdk/client-dynamodb": "^3.1098.0",
77
+ "@aws-sdk/client-ec2": "^3.1098.0",
78
+ "@aws-sdk/client-ecr": "^3.1098.0",
79
+ "@aws-sdk/client-iam": "^3.1098.0",
80
+ "@aws-sdk/client-identitystore": "^3.1098.0",
81
+ "@aws-sdk/client-kms": "^3.1098.0",
82
+ "@aws-sdk/client-lambda": "^3.1098.0",
83
+ "@aws-sdk/client-organizations": "^3.1098.0",
84
+ "@aws-sdk/client-ram": "^3.1098.0",
85
+ "@aws-sdk/client-rds": "^3.1098.0",
86
+ "@aws-sdk/client-route-53": "^3.1098.0",
87
+ "@aws-sdk/client-s3": "^3.1098.0",
88
+ "@aws-sdk/client-secrets-manager": "^3.1098.0",
89
+ "@aws-sdk/client-sqs": "^3.1098.0",
90
+ "@aws-sdk/client-ssm": "^3.1098.0",
91
+ "@aws-sdk/client-sso-admin": "^3.1098.0",
92
+ "@aws-sdk/client-sts": "^3.1098.0",
93
+ "@fjall/generator": "^5.0.0",
94
+ "@fjall/util": "^5.0.0",
95
+ "@smithy/node-http-handler": "^4.9.13",
96
+ "aws-cdk": "^2.1134.0",
97
+ "tsx": "^4.23.1",
97
98
  "zod": "^4.4.3"
98
99
  },
100
+ "peerDependencies": {
101
+ "@fjall/components-infrastructure": ">=5.0.0 <6.0.0"
102
+ },
103
+ "peerDependenciesMeta": {
104
+ "@fjall/components-infrastructure": {
105
+ "optional": true
106
+ }
107
+ },
99
108
  "devDependencies": {
100
- "@types/node": "^26.0.0",
109
+ "@types/node": "^26.1.2",
101
110
  "typescript": "^6.0.3",
102
- "vitest": "^4.1.5"
111
+ "vitest": "^4.1.10"
103
112
  },
104
- "gitHead": "c700128600ab453fa63ce28b3effe8965373be43"
113
+ "gitHead": "78dded6f582368076e8b5f351399219e5a954659"
105
114
  }