@go-to-k/cdkd 0.301.5 → 0.301.7

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.
Files changed (25) hide show
  1. package/dist/{asg-provider-DHB498Xq.js → asg-provider-C14GB-Hy.js} +3 -3
  2. package/dist/{asg-provider-DHB498Xq.js.map → asg-provider-C14GB-Hy.js.map} +1 -1
  3. package/dist/cli.js +2 -2
  4. package/dist/{deploy-engine-HAvm8vSI.js → deploy-engine-zLKsm0IM.js} +299 -110
  5. package/dist/deploy-engine-zLKsm0IM.js.map +1 -0
  6. package/dist/{iam-policy-targets-BkeM7IXi.js → iam-policy-targets-LyArt3ew.js} +2 -2
  7. package/dist/{iam-policy-targets-BkeM7IXi.js.map → iam-policy-targets-LyArt3ew.js.map} +1 -1
  8. package/dist/{iam-role-provider-CTpDWSUG.js → iam-role-provider-BnStRZFM.js} +3 -3
  9. package/dist/{iam-role-provider-CTpDWSUG.js.map → iam-role-provider-BnStRZFM.js.map} +1 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +3 -3
  12. package/dist/{neptune-provider-CXhoiT-P.js → neptune-provider-BlpYIZQP.js} +3 -3
  13. package/dist/{neptune-provider-CXhoiT-P.js.map → neptune-provider-BlpYIZQP.js.map} +1 -1
  14. package/dist/{program-DmPDfDhE.js → program-CiTz5-_D.js} +87 -26
  15. package/dist/program-CiTz5-_D.js.map +1 -0
  16. package/dist/{provider-classes-DPwEHVDJ.js → provider-classes-BWo7K01p.js} +127 -57
  17. package/dist/provider-classes-BWo7K01p.js.map +1 -0
  18. package/dist/{rds-provider-CxB94DZy.js → rds-provider-DagnUCn-.js} +3 -3
  19. package/dist/{rds-provider-CxB94DZy.js.map → rds-provider-DagnUCn-.js.map} +1 -1
  20. package/dist/{version-2jeKJQlt.js → version-MUc6NbW0.js} +2 -2
  21. package/dist/{version-2jeKJQlt.js.map → version-MUc6NbW0.js.map} +1 -1
  22. package/package.json +1 -1
  23. package/dist/deploy-engine-HAvm8vSI.js.map +0 -1
  24. package/dist/program-DmPDfDhE.js.map +0 -1
  25. package/dist/provider-classes-DPwEHVDJ.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  import { r as getAwsClients, s as __exportAll } from "./aws-clients-B_CEQGE1.js";
2
2
  import { A as UNRENDERABLE, B as safeMsg, C as looksLikeCdkdGeneratedName, D as SAFE_MSG_ALTERED_CHAR, E as withoutGeneratedFallbackName, F as displaySafe, H as terminalSafe, I as displayStackName, L as isPasteableIdent, N as displayAwsMessage, O as SECRET_REF_MAX_CODE_POINTS, P as displayIdent, S as getCurrentStackName, T as withStackName, U as truncateCodePoints, a as getLogger, b as generateResourceNameWithFallback, d as installLogLineMaskerSource, f as getLiveRenderer, g as applyDefaultNameForFallback, j as asIsMessage, k as STACK_REF_MAX_CODE_POINTS, o as isStdoutReservedForPayload, r as safeStringify$1, t as describeAwsFailure, u as currentLogLineMasker, v as explicitNamePropertyFor, w as withSkipPrefix, x as getCurrentSkipPrefix, y as generateResourceName, z as plainIdentOr } from "./aws-failure-text-BEQfs6za.js";
3
- import { $ as protectedReplacementAdvice, $t as ambientCredentialConfig, A as isQuotableImportValue, An as SHELL_ACTIVE, At as isAuxiliaryMarkOf, B as isTerminalDeleteFailure, Bn as shellBoundedDisplay, Bt as formatLockOperation, Cn as StateError, Ct as RETRY_AUXILIARY_OWNER, Dn as normalizeAwsError, Dt as createdResourceIdentityBeforeFailure, E as assertRegionMatch, Et as createdBeforeFailure, F as resolveExplicitPhysicalId, Fn as isInertUnquoted, Ft as UNREPRODUCIBLE_LOCK_CLAUSE, G as runDeleteAttempt, Gn as isUpdateUnsupportedError, Gt as DEFAULT_STATE_PREFIX, H as observeThenDisableProtection, Hn as withheldTargetClause, Ht as recoveryCommandFlags, In as pasteableCommand, It as buildForceUnlockCommand, J as DELETION_PROTECTION_DOC_POINTER, Jn as isNameCooldownError, Kn as hasReplayMayCollide, Kt as injectiveKey, L as ProtectionFlipRegistry, Ln as physicalIdShownBesideCommand, M as quotedRemedyLogicalId, Mn as UNSHOWABLE_VALUE, Mt as markCreatedBeforeFailure, N as refusalTypeShown, Nn as commandHole, Ot as hasCreatedBeforeFailure, Pt as replayMadeAnotherResource, Q as pasteableAwsCommand, Qn as markReplayMayCollide, Qt as ambientClientDefaults, R as compensateProtectionFlip, Rn as plainOrDescribed, St as withDerivedNameMasks, T as RESOURCE_NOT_FOUND, U as protectionFlipKey, Ut as sanitizeRecoveryValue, Vn as shellQuote, Vt as formatLockOwner, Wt as CUSTOM_RESOURCE_RESPONSE_PREFIX, Xn as isReplayedNameCollisionFrom, Yn as isRecreateRetryableError, Yt as producerRecordKey, Zt as withPasteableAwsProfile, _t as createMaskedLogSinks, ar as isRetryableTransientError, at as startInterruptWatch, bn as ResourceUpdateNotSupportedError, bt as maskDeep, ct as canonicalizeRoute53QueryName, d as prepareRemovalForUpdate, dr as markNonRetryable, en as clientDefaultsFor, er as formatRetryClassificationSignals, f as removalWarning, fr as markRedactedCause, ft as logicalIdShown, gt as stateOrphanRecordRemedy, hn as MalformedProducerRecordRefusalError, ht as segmentAfterAnchor, i as holdsSecretDerivedEntry, in as CdkdError, ir as isIamPropagationError, it as isInterruptedWaitError, j as normalizeAwsTagsToCfn, jn as SHELL_ACTIVE_WHY, jt as markAuxiliaryFailure, kt as isAuxiliaryFailure, l as withUnchangedSecretPrincipalLists, ln as DynamicReferenceRegionAmbiguousError, lr as isMarkedNonRetryable, m as withoutInjectedRemovals, mn as MacroExpansionError, mt as resourceTypeShown, nn as AccountIdUnavailableError, nr as isAmbiguousOutcomeError, on as CrossAccountSecretRefusalError, or as isTransientServerError, ot as ElapsedBudgetRegistry, pn as LockError, pr as wrapMaskedAwsError, qn as isNameCollisionErrorFrom, rn as AssetError, sn as DependencyError, sr as retryClassificationText, st as monotonicNowMs, tn as credentialFingerprint, tr as isAmbiguousCcHandlerErrorCode, un as IntrinsicResolutionRefusalError, ur as isThrottlingError, ut as compositeIdSeparatorRefusal, vn as ProvisioningError, vt as createMaskedRetryLogger, w as withoutServerErrorRetries, wn as SynthesisError, wt as carryCreatedBeforeFailure, xt as maskerOrIdentity, yn as ResourceTimeoutError, yt as isSecretDerivedValue, z as deleteWithProtectionCompensation, zn as quotedOrDescribed, zt as formatLockExpiry } from "./iam-policy-targets-BkeM7IXi.js";
3
+ import { $ as protectedReplacementAdvice, $n as markReplayMayCollide, $t as ambientCredentialConfig, A as isQuotableImportValue, An as SHELL_ACTIVE, At as isAuxiliaryMarkOf, B as isTerminalDeleteFailure, Bn as shellBoundedDisplay, Bt as formatLockOperation, Cn as StateError, Ct as RETRY_AUXILIARY_OWNER, Dn as normalizeAwsError, Dt as createdResourceIdentityBeforeFailure, E as assertRegionMatch, Et as createdBeforeFailure, F as resolveExplicitPhysicalId, Fn as isInertUnquoted, Ft as UNREPRODUCIBLE_LOCK_CLAUSE, G as runDeleteAttempt, Gn as isUpdateUnsupportedError, Gt as DEFAULT_STATE_PREFIX, H as observeThenDisableProtection, Hn as withheldTargetClause, Ht as recoveryCommandFlags, In as pasteableCommand, It as buildForceUnlockCommand, J as DELETION_PROTECTION_DOC_POINTER, Jn as isNameCollisionErrorFrom, Kn as hasReplayMayCollide, Kt as injectiveKey, L as ProtectionFlipRegistry, Ln as physicalIdShownBesideCommand, M as quotedRemedyLogicalId, Mn as UNSHOWABLE_VALUE, Mt as markCreatedBeforeFailure, N as refusalTypeShown, Nn as commandHole, Ot as hasCreatedBeforeFailure, Pt as replayMadeAnotherResource, Q as pasteableAwsCommand, Qt as ambientClientDefaults, R as compensateProtectionFlip, Rn as plainOrDescribed, St as withDerivedNameMasks, T as RESOURCE_NOT_FOUND, U as protectionFlipKey, Ut as sanitizeRecoveryValue, Vn as shellQuote, Vt as formatLockOwner, Wt as CUSTOM_RESOURCE_RESPONSE_PREFIX, Xn as isRecreateRetryableError, Yn as isNameCooldownError, Yt as producerRecordKey, Zn as isReplayedNameCollisionFrom, Zt as withPasteableAwsProfile, _t as createMaskedLogSinks, ar as isIamPropagationError, at as startInterruptWatch, bn as ResourceUpdateNotSupportedError, bt as maskDeep, cr as retryClassificationText, ct as canonicalizeRoute53QueryName, d as prepareRemovalForUpdate, dr as isThrottlingError, en as clientDefaultsFor, f as removalWarning, fr as markNonRetryable, ft as logicalIdShown, gt as stateOrphanRecordRemedy, hn as MalformedProducerRecordRefusalError, ht as segmentAfterAnchor, i as holdsSecretDerivedEntry, in as CdkdError, it as isInterruptedWaitError, j as normalizeAwsTagsToCfn, jn as SHELL_ACTIVE_WHY, jt as markAuxiliaryFailure, kt as isAuxiliaryFailure, l as withUnchangedSecretPrincipalLists, ln as DynamicReferenceRegionAmbiguousError, m as withoutInjectedRemovals, mn as MacroExpansionError, mr as wrapMaskedAwsError, mt as resourceTypeShown, nn as AccountIdUnavailableError, nr as isAmbiguousCcHandlerErrorCode, on as CrossAccountSecretRefusalError, or as isRetryableTransientError, ot as ElapsedBudgetRegistry, pn as LockError, pr as markRedactedCause, rn as AssetError, rr as isAmbiguousOutcomeError, sn as DependencyError, sr as isTransientServerError, st as monotonicNowMs, tn as credentialFingerprint, tr as formatRetryClassificationSignals, un as IntrinsicResolutionRefusalError, ur as isMarkedNonRetryable, ut as compositeIdSeparatorRefusal, vn as ProvisioningError, vt as createMaskedRetryLogger, w as withoutServerErrorRetries, wn as SynthesisError, wt as carryCreatedBeforeFailure, xt as maskerOrIdentity, yn as ResourceTimeoutError, yt as isSecretDerivedValue, z as deleteWithProtectionCompensation, zn as quotedOrDescribed, zt as formatLockExpiry } from "./iam-policy-targets-LyArt3ew.js";
4
4
  import { a as setAssumedRoleCredentials, i as getPreAssumeEnvCredentials, n as awsClientDefaults, o as setPreAssumeEnvCredentials, r as getAssumedRoleCredentials, s as ambientRegion, t as SECOND_ROLE_PUBLISH_REFUSAL } from "./aws-client-defaults-DBXBcg0J.js";
5
- import { t as getCdkdVersion } from "./version-2jeKJQlt.js";
5
+ import { t as getCdkdVersion } from "./version-MUc6NbW0.js";
6
6
  import { createHash, randomUUID } from "node:crypto";
7
7
  import { AsyncLocalStorage } from "node:async_hooks";
8
8
  import { CreateBucketCommand, DeleteObjectCommand, DeleteObjectsCommand, GetBucketLifecycleConfigurationCommand, GetBucketLocationCommand, GetBucketReplicationCommand, GetObjectCommand, HeadBucketCommand, HeadObjectCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchKey, PutBucketEncryptionCommand, PutBucketLifecycleConfigurationCommand, PutBucketPolicyCommand, PutObjectCommand, PutPublicAccessBlockCommand, S3Client, S3ServiceException } from "@aws-sdk/client-s3";
@@ -7748,7 +7748,10 @@ function certifiedExpressionForLeaf(secrets, association, leaf) {
7748
7748
  function certifiedListForLeaf(secrets, association, bag) {
7749
7749
  const certified = bag.map((element) => certifiedExpressionForLeaf(secrets, association, element));
7750
7750
  if (certified.every((expression) => expression === void 0)) return void 0;
7751
- return bag.map((element, i) => certified[i] ?? redactSecretsForState(element, secrets));
7751
+ return bag.map((element, i) => certified[i] ?? redactForState(element, {
7752
+ provenance: "value-scan",
7753
+ secrets
7754
+ }));
7752
7755
  }
7753
7756
  function associationForSource(source, secrets) {
7754
7757
  const key = crossStackSourceKey(source);
@@ -7972,7 +7975,7 @@ const NESTED_STACK_RESOURCE_TYPE$4 = "AWS::CloudFormation::Stack";
7972
7975
  const nestedStackParameterExpressions = /* @__PURE__ */ new WeakMap();
7973
7976
  const renderedParameterSpellings = /* @__PURE__ */ new WeakMap();
7974
7977
  const UNFRAMED_SPELLING = Symbol("cdkd.nested-parameter.unframed-spelling");
7975
- function recordNestedStackParameterExpressions(secrets, resourceType, resolvedProperties, sourceProperties, rules = TEMPLATE_DERIVED_RULES) {
7978
+ function recordNestedStackParameterExpressions(secrets, resourceType, resolvedProperties, sourceProperties, provenance = "template-derived") {
7976
7979
  if (resourceType !== NESTED_STACK_RESOURCE_TYPE$4) return;
7977
7980
  if (secrets.size === 0) return;
7978
7981
  if (!isPlainObject$7(resolvedProperties) || !isPlainObject$7(sourceProperties)) return;
@@ -7981,7 +7984,7 @@ function recordNestedStackParameterExpressions(secrets, resourceType, resolvedPr
7981
7984
  const resolvedParameters = resolvedProperties["Parameters"];
7982
7985
  const sourceParameters = sourceProperties["Parameters"];
7983
7986
  if (!isPlainObject$7(resolvedParameters) || !isPlainObject$7(sourceParameters)) return;
7984
- const positioned = redactSecretsForState(markSameGenerationBag({ ...resolvedParameters }), secrets, sourceParameters, rules);
7987
+ const positioned = redactAtProvenance({ ...resolvedParameters }, secrets, sourceParameters, provenance, true);
7985
7988
  let table = nestedStackParameterExpressions.get(secrets);
7986
7989
  for (const [name, resolvedValue] of Object.entries(resolvedParameters)) {
7987
7990
  const sourceLeaf = sourceParameters[name];
@@ -8074,7 +8077,10 @@ function recordNestedStackParameterExpressions(secrets, resourceType, resolvedPr
8074
8077
  if (typeof resolvedValue !== "string") continue;
8075
8078
  const spelling = certifiedSpellingOf(name);
8076
8079
  if (spelling === void 0) continue;
8077
- if (redactSecretsForState(resolvedValue, secrets) !== resolvedValue) continue;
8080
+ if (redactForState(resolvedValue, {
8081
+ provenance: "value-scan",
8082
+ secrets
8083
+ }) !== resolvedValue) continue;
8078
8084
  const frame = singleSpanFrame(resolvedValue, spelling);
8079
8085
  if (frame === void 0 || resolvedPlaintextOf(secrets, frame.token) !== frame.middle) continue;
8080
8086
  if (framesByValue.get(resolvedValue)?.size !== 1) continue;
@@ -8165,7 +8171,10 @@ function inheritedRenderedSpan(childSecrets, key, text) {
8165
8171
  if (carriesChildOnlyPlaintext(value, childSecrets, reads.parent)) return void 0;
8166
8172
  const spelling = inheritedParameterExpression(reads.parent, name, value);
8167
8173
  if (typeof spelling !== "string") return void 0;
8168
- if (redactSecretsForState(spelling, childSecrets) !== spelling) return void 0;
8174
+ if (redactForState(spelling, {
8175
+ provenance: "value-scan",
8176
+ secrets: childSecrets
8177
+ }) !== spelling) return void 0;
8169
8178
  return {
8170
8179
  value,
8171
8180
  spelling
@@ -8212,7 +8221,10 @@ function recordInheritedParameterRead(childSecrets, parentSecrets, parameterName
8212
8221
  parameterReadsFor(childSecrets, parentSecrets)?.names.add(parameterName);
8213
8222
  }
8214
8223
  function redactInheritedParameterValue(parentSecrets, parameterName, value) {
8215
- return inheritedParameterExpression(parentSecrets, parameterName, value) ?? redactSecretsForState(value, parentSecrets);
8224
+ return inheritedParameterExpression(parentSecrets, parameterName, value) ?? redactForState(value, {
8225
+ provenance: "value-scan",
8226
+ secrets: parentSecrets
8227
+ });
8216
8228
  }
8217
8229
  function positionByInheritedParameter(bag, source, secrets) {
8218
8230
  const keys = Object.keys(source);
@@ -8224,7 +8236,10 @@ function positionByInheritedParameter(bag, source, secrets) {
8224
8236
  if (typeof bag !== "string" && !Array.isArray(bag)) return void 0;
8225
8237
  if (carriesChildOnlyPlaintext(bag, secrets, reads.parent)) return void 0;
8226
8238
  const answer = redactInheritedParameterValue(reads.parent, name, bag);
8227
- if (!deepEqualJsonValue(redactSecretsForState(answer, secrets), answer)) return void 0;
8239
+ if (!deepEqualJsonValue(redactForState(answer, {
8240
+ provenance: "value-scan",
8241
+ secrets
8242
+ }), answer)) return void 0;
8228
8243
  return answer;
8229
8244
  }
8230
8245
  const REREAD_PSEUDO_PARAMETERS = /* @__PURE__ */ new Set([
@@ -8444,7 +8459,10 @@ function holdsRereadTrigger(node, depth = 0) {
8444
8459
  }
8445
8460
  function rendersReadTo(spelling, parentSecrets, value) {
8446
8461
  if (typeof spelling === "string" && typeof value === "string") {
8447
- if (spelling === value) return redactSecretsForState(spelling, parentSecrets) === spelling;
8462
+ if (spelling === value) return redactForState(spelling, {
8463
+ provenance: "value-scan",
8464
+ secrets: parentSecrets
8465
+ }) === spelling;
8448
8466
  return rendersLiteralTo(spelling, parentSecrets, value);
8449
8467
  }
8450
8468
  if (Array.isArray(spelling) && Array.isArray(value) && spelling.length === value.length) return spelling.every((element, i) => rendersReadTo(element, parentSecrets, value[i]));
@@ -8552,7 +8570,10 @@ function positionByParameterReread(bag, source, secrets) {
8552
8570
  answer = matching[0].redacted;
8553
8571
  }
8554
8572
  if (carriesChildOnlyPlaintext(bag, secrets, reads.parent)) return void 0;
8555
- if (!deepEqualJsonValue(redactSecretsForState(answer, secrets), answer)) return void 0;
8573
+ if (!deepEqualJsonValue(redactForState(answer, {
8574
+ provenance: "value-scan",
8575
+ secrets
8576
+ }), answer)) return void 0;
8556
8577
  return answer;
8557
8578
  }
8558
8579
  function carriesChildOnlyPlaintext(value, childSecrets, parentSecrets) {
@@ -8720,7 +8741,10 @@ function positionByParameterPlaceholders(bag, source, secrets) {
8720
8741
  if (bag.length < before[0].length + after[0].length) return void 0;
8721
8742
  if (!bag.startsWith(before[0]) || !bag.endsWith(after[0])) return void 0;
8722
8743
  const middle = bag.slice(before[0].length, bag.length - after[0].length);
8723
- if (redactSecretsForState(middle, secrets) !== middle) return void 0;
8744
+ if (redactForState(middle, {
8745
+ provenance: "value-scan",
8746
+ secrets
8747
+ }) !== middle) return void 0;
8724
8748
  persisted = before[1] + middle + after[1];
8725
8749
  }
8726
8750
  const afterStart = bag.length - after[0].length;
@@ -8734,7 +8758,10 @@ function acceptedPlaceholderRendering(bag, persisted, spans, secrets) {
8734
8758
  for (const [start, length] of spans) if (at < start + length && end > start && (at < start || end > start + length)) return void 0;
8735
8759
  }
8736
8760
  }
8737
- if (redactSecretsForState(persisted, secrets) !== persisted) return void 0;
8761
+ if (redactForState(persisted, {
8762
+ provenance: "value-scan",
8763
+ secrets
8764
+ }) !== persisted) return void 0;
8738
8765
  return persisted;
8739
8766
  }
8740
8767
  function positionByRecordedParameterSpans(bag, source, secrets, associations) {
@@ -8764,7 +8791,10 @@ function positionByRecordedParameterSpans(bag, source, secrets, associations) {
8764
8791
  const tail = bag.slice(cursor);
8765
8792
  gaps.push(tail);
8766
8793
  persisted += tail;
8767
- for (const gap of gaps) if (redactSecretsForState(gap, secrets) !== gap) return void 0;
8794
+ for (const gap of gaps) if (redactForState(gap, {
8795
+ provenance: "value-scan",
8796
+ secrets
8797
+ }) !== gap) return void 0;
8768
8798
  return acceptedPlaceholderRendering(bag, persisted, certified, secrets);
8769
8799
  }
8770
8800
 
@@ -8874,7 +8904,10 @@ function redactByPath(bag, source, secrets, rules, secretExpressions, bagIsSameG
8874
8904
  if (isDynamicReferenceString(source) && typeof bag === "string") {
8875
8905
  if (isSingleDynamicReferenceToken(source) && (rules.trustAnyExpression || isKnownSecretExpression(source, secretExpressions))) {
8876
8906
  if (!rules.sourceIsSameGeneration && isSingleDynamicReferenceToken(bag)) {
8877
- if (!spanNamesResolvableService(bag)) return redactSecretsForState(bag, secrets);
8907
+ if (!spanNamesResolvableService(bag)) return redactForState(bag, {
8908
+ provenance: "value-scan",
8909
+ secrets
8910
+ });
8878
8911
  return secrets.get(bag) ?? bag;
8879
8912
  }
8880
8913
  return source;
@@ -8920,7 +8953,10 @@ function redactByPath(bag, source, secrets, rules, secretExpressions, bagIsSameG
8920
8953
  const j = partnerIndex[i];
8921
8954
  if (j >= 0) return redactByPath(item, source[j], secrets, rules, secretExpressions, bagIsSameGeneration);
8922
8955
  if (positionalIsExact) return redactByPath(item, source[i], secrets, rules, secretExpressions, bagIsSameGeneration);
8923
- return redactSecretsForState(item, secrets);
8956
+ return redactForState(item, {
8957
+ provenance: "value-scan",
8958
+ secrets
8959
+ });
8924
8960
  });
8925
8961
  }
8926
8962
  if (rules.descendArrays && bag.length === source.length) return bag.map((item, i) => redactByPath(item, source[i], secrets, rules, secretExpressions, bagIsSameGeneration));
@@ -8931,10 +8967,16 @@ function redactByPath(bag, source, secrets, rules, secretExpressions, bagIsSameG
8931
8967
  }
8932
8968
  if (isPlainObject$7(bag) && hasPlainPrototype(bag) && isPlainObject$7(source)) {
8933
8969
  const out = Object.create(null);
8934
- for (const [k, v] of Object.entries(bag)) out[k] = Object.hasOwn(source, k) ? redactByPath(v, source[k], secrets, rules, secretExpressions, bagIsSameGeneration) : redactSecretsForState(v, secrets);
8970
+ for (const [k, v] of Object.entries(bag)) out[k] = Object.hasOwn(source, k) ? redactByPath(v, source[k], secrets, rules, secretExpressions, bagIsSameGeneration) : redactForState(v, {
8971
+ provenance: "value-scan",
8972
+ secrets
8973
+ });
8935
8974
  return out;
8936
8975
  }
8937
- return redactSecretsForState(bag, secrets);
8976
+ return redactForState(bag, {
8977
+ provenance: "value-scan",
8978
+ secrets
8979
+ });
8938
8980
  }
8939
8981
  function isReadbackProjectedFromState(rules) {
8940
8982
  return rules.trustAnyExpression && !rules.descendArrays && rules.sourceIsSameGeneration;
@@ -9247,20 +9289,23 @@ function deriveReadbackNeedles(bag, source, secrets, rules) {
9247
9289
 
9248
9290
  //#endregion
9249
9291
  //#region src/deployment/secret-redaction/redact-state.ts
9250
- function redactSecretsForState(bag, secrets, source, rules = TEMPLATE_DERIVED_RULES) {
9251
- return flattenEmbeddedNoEchoLeaves(redactSecretsForStatePasses(bag, secrets, source, rules), secrets);
9292
+ function redactSecretsForState(bag, secrets, source, rules = TEMPLATE_DERIVED_RULES, bagIsSameGeneration = false) {
9293
+ return flattenEmbeddedNoEchoLeaves(redactSecretsForStatePasses(bag, secrets, source, rules, bagIsSameGeneration), secrets);
9252
9294
  }
9253
- function redactSecretsForStatePasses(bag, secrets, source, rules) {
9295
+ function redactSecretsForStatePasses(bag, secrets, source, rules, bagIsSameGeneration) {
9254
9296
  if (secrets.size === 0 && source === void 0) return bag;
9255
9297
  if (source !== void 0) {
9256
- const positioned = redactByPath(bag, source, secrets, rules, recordedExpressionsOf(secrets), isSameGenerationBag(bag));
9298
+ const positioned = redactByPath(bag, source, secrets, rules, recordedExpressionsOf(secrets), bagIsSameGeneration);
9257
9299
  if (!isReadbackProjectedFromState(rules)) return positioned;
9258
9300
  const failClosed = rules.failClosedOnUncertifiedPositions === true;
9259
9301
  const refused = refuseUncertifiedReadbackPositions(positioned, source, secrets, failClosed);
9260
9302
  const derived = deriveReadbackNeedles(bag, source, secrets, rules);
9261
9303
  if (derived === void 0) return refused;
9262
9304
  const marks = refuseUncertifiedReadbackPositions(positioned, source, secrets, failClosed, void 0, true);
9263
- return preferPositionDecisions(redactSecretsForState(bag, derived.certain), refused, bag, marks, derived.inferred);
9305
+ return preferPositionDecisions(redactForState(bag, {
9306
+ provenance: "value-scan",
9307
+ secrets: derived.certain
9308
+ }), refused, bag, marks, derived.inferred);
9264
9309
  }
9265
9310
  const regex = buildNeedleRegex(substringNeedlesOf(secrets));
9266
9311
  const wholeValueExpr = (s) => s === "" ? void 0 : secrets.get(s);
@@ -9426,18 +9471,29 @@ function redactOverlappingMatches(value, matches, redacted, expressionFor) {
9426
9471
  }
9427
9472
  return out + value.slice(cursor);
9428
9473
  }
9429
- function scrubResourceRecord(record, secrets, sourceProperties, observedRules) {
9474
+ function scrubResourceRecord(record, secrets, sourceProperties, observedProvenance, claims = {}) {
9475
+ const propertiesClaimed = claims.properties === "same-generation";
9476
+ const observedClaimed = claims.observed === "same-generation";
9430
9477
  if (secrets.size === 0 && sourceProperties === void 0 && !record.observedProperties) return record;
9431
9478
  const next = { ...record };
9432
- next.properties = redactSecretsForState(record.properties, secrets, sourceProperties);
9479
+ next.properties = sourceProperties === void 0 ? redactForState(record.properties, {
9480
+ provenance: "value-scan",
9481
+ secrets
9482
+ }) : redactAtProvenance(record.properties, secrets, sourceProperties, "template-derived", propertiesClaimed);
9433
9483
  if (record.attributes) {
9434
9484
  const ownId = record.physicalId;
9435
9485
  const ids = [...attributeIdCopiesOf.get(secrets) ?? []];
9436
9486
  if (typeof ownId === "string" && ownId !== "") ids.push(ownId);
9437
9487
  const attributes = record.attributes;
9438
- next.attributes = ids.length > 0 ? withPhysicalNameCopies(secrets, ids, () => redactSecretsForState(attributes, secrets)) : redactSecretsForState(attributes, secrets);
9488
+ next.attributes = ids.length > 0 ? withPhysicalNameCopies(secrets, ids, () => redactForState(attributes, {
9489
+ provenance: "value-scan",
9490
+ secrets
9491
+ })) : redactForState(attributes, {
9492
+ provenance: "value-scan",
9493
+ secrets
9494
+ });
9439
9495
  }
9440
- if (record.observedProperties) next.observedProperties = redactSecretsForState(record.observedProperties, secrets, sourceProperties ?? next.properties, observedRules ?? (sourceProperties !== void 0 ? TEMPLATE_SOURCED_RULES : secrets.size === 0 && isSameGenerationBag(record.observedProperties) ? STATE_SOURCED_BASELINE_RULES : STATE_SOURCED_READBACK_RULES));
9496
+ if (record.observedProperties) next.observedProperties = redactAtProvenance(record.observedProperties, secrets, sourceProperties ?? next.properties, observedProvenance ?? (sourceProperties !== void 0 ? "template-sourced" : secrets.size === 0 && observedClaimed ? "state-baseline" : "state-readback"), observedClaimed);
9441
9497
  return next;
9442
9498
  }
9443
9499
  function withoutPhysicalNameCopies(secrets, run) {
@@ -9499,7 +9555,10 @@ function embeddedPhysicalNameRewrites(secrets, legacySecrets = secrets) {
9499
9555
  const pairs = [];
9500
9556
  withoutPhysicalNameCopies(legacySecrets, () => {
9501
9557
  for (const name of names) {
9502
- const legacy = redactSecretsForState(name, legacySecrets);
9558
+ const legacy = redactForState(name, {
9559
+ provenance: "value-scan",
9560
+ secrets: legacySecrets
9561
+ });
9503
9562
  if (typeof legacy === "string" && legacy !== name && legacy.includes("{{resolve:") && !isSingleDynamicReferenceToken(legacy) && !legacy.includes("***")) pairs.push([legacy, name]);
9504
9563
  }
9505
9564
  });
@@ -9568,6 +9627,37 @@ function repairEmbeddedPhysicalNamesTowards(stored, target, pairs) {
9568
9627
  return stored;
9569
9628
  }
9570
9629
 
9630
+ //#endregion
9631
+ //#region src/deployment/secret-redaction/context.ts
9632
+ const RULES_BY_PROVENANCE = {
9633
+ "template-derived": TEMPLATE_DERIVED_RULES,
9634
+ "template-sourced": TEMPLATE_SOURCED_RULES,
9635
+ "state-readback": STATE_SOURCED_READBACK_RULES,
9636
+ "state-baseline": STATE_SOURCED_BASELINE_RULES,
9637
+ "state-cross-generation": STATE_SOURCED_CROSS_GENERATION_RULES,
9638
+ "state-derived": STATE_DERIVED_RULES
9639
+ };
9640
+ function redactForState(bag, context) {
9641
+ if (context.provenance === "value-scan") return redactSecretsForState(bag, context.secrets);
9642
+ const { secrets, source, provenance } = context;
9643
+ if (!((context.provenance === "template-derived" || context.provenance === "template-sourced") && context.generation === "same-generation") || !isPlainBag(bag)) return redactAtProvenance(bag, secrets, source, provenance, false);
9644
+ const copy = shallowCopy(bag);
9645
+ const redacted = redactAtProvenance(copy, secrets, source, provenance, true);
9646
+ return redacted === copy ? shallowCopy(copy) : redacted;
9647
+ }
9648
+ function redactAtProvenance(bag, secrets, source, provenance, sameGeneration) {
9649
+ return redactSecretsForState(bag, secrets, source, RULES_BY_PROVENANCE[provenance], sameGeneration);
9650
+ }
9651
+ function isPlainBag(bag) {
9652
+ if (Array.isArray(bag)) return true;
9653
+ if (bag === null || typeof bag !== "object") return false;
9654
+ const proto = Object.getPrototypeOf(bag);
9655
+ return proto === Object.prototype || proto === null;
9656
+ }
9657
+ function shallowCopy(bag) {
9658
+ return Array.isArray(bag) ? [...bag] : { ...bag };
9659
+ }
9660
+
9571
9661
  //#endregion
9572
9662
  //#region src/deployment/secret-redaction/positions.ts
9573
9663
  const SKELETON_WILDCARD = `${DYNAMIC_REFERENCE_INNER_CHAR}*`;
@@ -9674,10 +9764,16 @@ function positionByEmbeddedSpan(bag, source, secrets, bagIsSameGeneration) {
9674
9764
  const frame = singleSpanFrame(bag, source);
9675
9765
  if (frame === void 0) {
9676
9766
  if (dynamicReferenceSpans(source).length >= 2 && certifiesRenderedLiteral(bag, source, secrets, bagIsSameGeneration)) return source;
9677
- return redactSecretsForState(bag, secrets);
9767
+ return redactForState(bag, {
9768
+ provenance: "value-scan",
9769
+ secrets
9770
+ });
9678
9771
  }
9679
9772
  const recorded = resolvedPlaintextOf(secrets, frame.token);
9680
- if (recorded === void 0 || recorded !== frame.middle) return redactSecretsForState(bag, secrets);
9773
+ if (recorded === void 0 || recorded !== frame.middle) return redactForState(bag, {
9774
+ provenance: "value-scan",
9775
+ secrets
9776
+ });
9681
9777
  return writeFramedTokenWithinScanBound(bag, secrets, frame, bagIsSameGeneration);
9682
9778
  }
9683
9779
  function pairedSpans(source, secrets) {
@@ -9717,7 +9813,10 @@ function renderedLiteralSpans(spelling, secrets, value) {
9717
9813
  const spans = pairedSpans(spelling, secrets);
9718
9814
  if (spans === void 0) return void 0;
9719
9815
  if (renderSpans(spelling, spans, (i) => spans[i].plaintext) !== value) return void 0;
9720
- return redactSecretsForState(spelling, secrets) === spelling ? spans : void 0;
9816
+ return redactForState(spelling, {
9817
+ provenance: "value-scan",
9818
+ secrets
9819
+ }) === spelling ? spans : void 0;
9721
9820
  }
9722
9821
  function certifiesRenderedLiteral(bag, source, secrets, bagIsSameGeneration) {
9723
9822
  const spans = renderedLiteralSpans(source, secrets, bag);
@@ -9728,13 +9827,19 @@ function certifiesRenderedLiteral(bag, source, secrets, bagIsSameGeneration) {
9728
9827
  if (survivor === void 0) return false;
9729
9828
  survivors.push(survivor);
9730
9829
  }
9731
- const scanned = redactSecretsForState(bag, secrets);
9830
+ const scanned = redactForState(bag, {
9831
+ provenance: "value-scan",
9832
+ secrets
9833
+ });
9732
9834
  if (scanned === renderSpans(source, spans, (i) => survivors[i])) return true;
9733
9835
  if (!bagIsSameGeneration) return false;
9734
9836
  return scanned === renderSpans(source, spans, (i) => spans[i].plaintext.length >= 4 ? survivors[i] : spans[i].plaintext);
9735
9837
  }
9736
9838
  function writeFramedTokenWithinScanBound(bag, secrets, frame, bagIsSameGeneration) {
9737
- const scanned = redactSecretsForState(bag, secrets);
9839
+ const scanned = redactForState(bag, {
9840
+ provenance: "value-scan",
9841
+ secrets
9842
+ });
9738
9843
  const { token, prefix, suffix, middle } = frame;
9739
9844
  const survivor = secrets.get(middle);
9740
9845
  if (survivor === void 0) return scanned;
@@ -20367,7 +20472,7 @@ function maskSecretsRaw(resolver, text, context) {
20367
20472
  return needled !== text ? "***" : registered;
20368
20473
  }
20369
20474
  function abandonedUnit(resolver, unit, subject, error, context, rawInput, preRedact) {
20370
- const raw = error instanceof Error ? error.message : String(error);
20475
+ const raw = describeAwsFailure(error).detail;
20371
20476
  return {
20372
20477
  unit,
20373
20478
  subject: displayMasked(resolver, subject, context),
@@ -20680,7 +20785,7 @@ var CfnFallbackCache = class {
20680
20785
  };
20681
20786
  return;
20682
20787
  } catch (error) {
20683
- this.deps.logger().warn(`Fn::ImportValue: CloudFormation ListExports fallback failed for export ${quotedRender(displayMasked(this.deps.resolver, exportName, context), "'")} (region ${this.deps.resolverRegion}): ${displayMasked(this.deps.resolver, error instanceof Error ? error.message : String(error), context)}. Grant cloudformation:ListExports to resolve exports from CloudFormation-managed stacks, or pass --no-cfn-fallback to disable the fallback.`);
20788
+ this.deps.logger().warn(`Fn::ImportValue: CloudFormation ListExports fallback failed for export ${quotedRender(displayMasked(this.deps.resolver, exportName, context), "'")} (region ${this.deps.resolverRegion}): ${displayMasked(this.deps.resolver, describeAwsFailure(error).detail, context)}. Grant cloudformation:ListExports to resolve exports from CloudFormation-managed stacks, or pass --no-cfn-fallback to disable the fallback.`);
20684
20789
  return;
20685
20790
  }
20686
20791
  }
@@ -20708,7 +20813,7 @@ var CfnFallbackCache = class {
20708
20813
  try {
20709
20814
  return await fetch;
20710
20815
  } catch (error) {
20711
- const message = error instanceof Error ? error.message : String(error);
20816
+ const message = describeAwsFailure(error).detail;
20712
20817
  const resolver = this.deps.resolver;
20713
20818
  const cfnNameMask = positionalNameMask(resolver, [[stackName, displayMasked(resolver, stackName, context)], [region, displayMasked(resolver, loggedRegionText, context)]]);
20714
20819
  this.deps.logger().warn(`Fn::GetStackOutput: CloudFormation DescribeStacks fallback failed for stack ${displayMaskedIdent(resolver, stackName, context, STACK_REF_MAX_CODE_POINTS)} (${displayMaskedIdent(resolver, loggedRegionText, context)}): ${displayAwsMessage(displayMasked(resolver, cfnNameMask ? cfnNameMask(message) : message, context))}. Grant cloudformation:DescribeStacks to resolve outputs from CloudFormation-managed stacks, or pass --no-cfn-fallback to disable the fallback.`);
@@ -21266,7 +21371,7 @@ async function readsPinnedVersion(token, pin, { resolver, context }) {
21266
21371
  return !served.includes("{{resolve:") && served.length < 4 ? "short" : "read";
21267
21372
  } catch (err) {
21268
21373
  if (isDeliberateResolutionRefusal(err)) throw err;
21269
- resolver.logger.debug(safeMsg`Pinned read of ${displayMasked(resolver, token, context)} failed: ${displayMasked(resolver, err instanceof Error ? err.message : String(err), context)}`);
21374
+ resolver.logger.debug(safeMsg`Pinned read of ${displayMasked(resolver, token, context)} failed: ${displayMasked(resolver, describeAwsFailure(err).detail, context)}`);
21270
21375
  if (!isThrottlingError(err)) {
21271
21376
  if (failed === void 0) {
21272
21377
  failed = /* @__PURE__ */ new Set();
@@ -21386,7 +21491,7 @@ async function resolveImportValue(resolver, importValueArg, context) {
21386
21491
  try {
21387
21492
  entry = await context.exportIndex.lookup(exportName);
21388
21493
  } catch (err) {
21389
- resolver.logger.warn(`Exports index lookup failed for ${quotedRender(loggedExportName, "'", "an export whose name is not a plain identifier")}: ${displayMasked(resolver, err instanceof Error ? err.message : String(err), context)}; falling back to state.json scan`);
21494
+ resolver.logger.warn(`Exports index lookup failed for ${quotedRender(loggedExportName, "'", "an export whose name is not a plain identifier")}: ${displayMasked(resolver, describeAwsFailure(err).detail, context)}; falling back to state.json scan`);
21390
21495
  entry = void 0;
21391
21496
  }
21392
21497
  if (entry && (!context.stackName || entry.producerStack !== context.stackName)) {
@@ -21428,7 +21533,7 @@ async function resolveImportValue(resolver, importValueArg, context) {
21428
21533
  producerStack: refStack,
21429
21534
  producerRegion: lookupRegion
21430
21535
  }).catch((err) => {
21431
- resolver.logger.debug(`Failed to patch exports index for ${quotedRender(displayMasked(resolver, exportName, context), "'", "an export whose name is not a plain identifier")}: ${displayMasked(resolver, err instanceof Error ? err.message : String(err), context)}`);
21536
+ resolver.logger.debug(`Failed to patch exports index for ${quotedRender(displayMasked(resolver, exportName, context), "'", "an export whose name is not a plain identifier")}: ${displayMasked(resolver, describeAwsFailure(err).detail, context)}`);
21432
21537
  });
21433
21538
  recordImport(resolver, context, exportName, refStack, lookupRegion);
21434
21539
  found = {
@@ -21440,7 +21545,7 @@ async function resolveImportValue(resolver, importValueArg, context) {
21440
21545
  break;
21441
21546
  }
21442
21547
  } catch (error) {
21443
- resolver.logger.warn(`Failed to read state for stack ${displayMasked(resolver, refStack, context)}: ${displayMasked(resolver, error instanceof Error ? error.message : String(error), context)}`);
21548
+ resolver.logger.warn(`Failed to read state for stack ${displayMasked(resolver, refStack, context)}: ${displayMasked(resolver, describeAwsFailure(error).detail, context)}`);
21444
21549
  continue;
21445
21550
  }
21446
21551
  }
@@ -21655,7 +21760,7 @@ function describeInnermostAwsError(error) {
21655
21760
  if (cause === null || typeof cause !== "object") break;
21656
21761
  innermost = cause;
21657
21762
  }
21658
- if (!(innermost instanceof Error)) return displayAwsMessage(String(innermost));
21763
+ if (!(innermost instanceof Error)) return displayAwsMessage(safeStringify$1(innermost));
21659
21764
  const code = innermost.Code;
21660
21765
  const name = typeof code === "string" && code !== "" ? code : innermost.name;
21661
21766
  const message = displayAwsMessage(innermost.message);
@@ -22016,7 +22121,7 @@ async function resolveDynamicReferencesWithLogTwin(resolver, value, logTwin, con
22016
22121
  if (context?.abandonedResolutions !== void 0) {
22017
22122
  const bag = context.abandonedResolutions;
22018
22123
  for (const { placeholder, because } of takeKeptPlaceholdersInsideReferences(bag, value)) {
22019
- const reason = because instanceof Error ? because.message : String(because);
22124
+ const reason = describeAwsFailure(because).detail;
22020
22125
  bag.push(abandonedUnit(resolver, "placeholder", placeholder, new Error(`Fn::Sub kept the placeholder ${placeholder} (${reason}) inside a {{resolve:...}} reference, so that reference was never resolved`, { cause: because }), context, value));
22021
22126
  }
22022
22127
  }
@@ -22338,7 +22443,10 @@ function isMaskedOwnIdCopy(record, key, recorded, healed, producerSecrets) {
22338
22443
  if (!healed.endsWith(physicalId)) return false;
22339
22444
  if (!OWN_ID_ARN_PREFIX.test(healed.slice(0, healed.length - physicalId.length))) return false;
22340
22445
  if (producerSecrets === void 0 || !hasMaskableValues(producerSecrets)) return false;
22341
- return withPhysicalNameCopies(producerSecrets, [physicalId], () => redactSecretsForState(healed, producerSecrets)) === healed;
22446
+ return withPhysicalNameCopies(producerSecrets, [physicalId], () => redactForState(healed, {
22447
+ provenance: "value-scan",
22448
+ secrets: producerSecrets
22449
+ })) === healed;
22342
22450
  }
22343
22451
  function healMaskedOwnIdAttribute(resolver, logicalId, resource, attributeName, stored, context) {
22344
22452
  if (stored !== "***" || context.attributeHealer === void 0) return void 0;
@@ -22371,7 +22479,7 @@ function describeFailureObserved(resolver, read, err, context) {
22371
22479
  const name = displaySafe(err instanceof Error && err.name ? err.name : "Error", { asciiOnly: true }).slice(0, 64).trim() || "Error";
22372
22480
  const status = err?.$metadata?.httpStatusCode;
22373
22481
  const errorClass = typeof status === "number" && Number.isInteger(status) ? `${name}, HTTP ${status}` : name;
22374
- resolver.logger.debug(`${read} failed (${errorClass}): ${displayMasked(resolver, err instanceof Error ? err.message : String(err), context)}`);
22482
+ resolver.logger.debug(`${read} failed (${errorClass}): ${displayMasked(resolver, describeAwsFailure(err).detail, context)}`);
22375
22483
  return `${read} failed (${errorClass}); re-run with --verbose for the AWS error text`;
22376
22484
  }
22377
22485
  function guardedPhysicalIdFallback(resolver, logicalId, attributeName, resourceType, physicalId, context) {
@@ -22461,7 +22569,7 @@ async function constructAttributeForCoreTypes(resolver, resource, attributeName,
22461
22569
  resolver.logger.warn(`VPC ${loggedId} IPv6 CIDR did not reach 'associated' state after ${maxAttempts} attempts`);
22462
22570
  return [];
22463
22571
  } catch (error) {
22464
- resolver.logger.warn(`Failed to fetch VPC Ipv6CidrBlocks for ${displayMasked(resolver, physicalId, context)}: ${displayMasked(resolver, error instanceof Error ? error.message : String(error), context)}`);
22572
+ resolver.logger.warn(`Failed to fetch VPC Ipv6CidrBlocks for ${displayMasked(resolver, physicalId, context)}: ${displayMasked(resolver, describeAwsFailure(error).detail, context)}`);
22465
22573
  return [];
22466
22574
  }
22467
22575
  case "DefaultSecurityGroup": {
@@ -22844,7 +22952,7 @@ async function constructAttributeForComputeTypes(resolver, attributeName, contex
22844
22952
  const value = attributeName === "LatestVersionNumber" ? lt?.LatestVersionNumber : lt?.DefaultVersionNumber;
22845
22953
  if (value !== void 0 && value !== null) return String(value);
22846
22954
  } catch (err) {
22847
- resolver.logger.warn(`DescribeLaunchTemplates(${displayMasked(resolver, physicalId, context)}) failed for ${displayMasked(resolver, attributeName, context)}: ${displayMasked(resolver, err instanceof Error ? err.message : String(err), context)}`);
22955
+ resolver.logger.warn(`DescribeLaunchTemplates(${displayMasked(resolver, physicalId, context)}) failed for ${displayMasked(resolver, attributeName, context)}: ${displayMasked(resolver, describeAwsFailure(err).detail, context)}`);
22848
22956
  }
22849
22957
  return attributeName === "LatestVersionNumber" ? "$Latest" : "$Default";
22850
22958
  }
@@ -23062,7 +23170,7 @@ async function resolveGetAZs(resolver, value, context) {
23062
23170
  } catch (error) {
23063
23171
  const loggedRegion = displayMasked(resolver, loggedRegionText ?? region, context);
23064
23172
  const masks = namedRequestMasks(resolver, [[region, loggedRegion]], context);
23065
- throw new Error(`Fn::GetAZs: failed to describe availability zones for region ${quotedRender(loggedRegion, "'")}: ${masks.text(error instanceof Error ? error.message : String(error))}`);
23173
+ throw new Error(`Fn::GetAZs: failed to describe availability zones for region ${quotedRender(loggedRegion, "'")}: ${masks.text(describeAwsFailure(error).detail)}`);
23066
23174
  }
23067
23175
  if (azNames.length === 0) throw markNonRetryable(/* @__PURE__ */ new Error(`Fn::GetAZs: no availability zones returned for region ${quotedRender(displayMasked(resolver, loggedRegionText ?? region, context), "'")}. Either the region is not enabled on this account (opt-in regions must be enabled before use), or the request was answered by a different region's endpoint.`));
23068
23176
  cachedAvailabilityZones.set(azCacheKey, azNames);
@@ -24098,7 +24206,7 @@ async function evaluateConditions(resolver, context) {
24098
24206
  for (const name of Object.keys(templateConditions)) try {
24099
24207
  await withSharedDrainBudget(() => evaluateByName(name));
24100
24208
  } catch (error) {
24101
- resolver.logger.warn(displayMasked(resolver, `Failed to evaluate condition ${name}: ${error instanceof Error ? error.message : String(error)}, assuming false`, maskingContext));
24209
+ resolver.logger.warn(displayMasked(resolver, `Failed to evaluate condition ${name}: ${describeAwsFailure(error).detail}, assuming false`, maskingContext));
24102
24210
  conditions[name] = false;
24103
24211
  assumed.add(name);
24104
24212
  inProgress.delete(name);
@@ -24118,7 +24226,7 @@ async function resolveKeyUnit(resolver, key, val, context, abandoned) {
24118
24226
  //#endregion
24119
24227
  //#region src/deployment/intrinsic-resolver/sub.ts
24120
24228
  function subPlaceholderWarning(_resolver, varName, error) {
24121
- return `Fn::Sub variable ${varName} could not be resolved (${error instanceof Error ? error.message : String(error)}), keeping placeholder`;
24229
+ return `Fn::Sub variable ${varName} could not be resolved (${describeAwsFailure(error).detail}), keeping placeholder`;
24122
24230
  }
24123
24231
  function subPlaceholderNamesADeclaredTemplateEntity(resolver, varName, context) {
24124
24232
  const firstDot = varName.indexOf(".");
@@ -26967,7 +27075,7 @@ var CloudControlProvider = class {
26967
27075
  const indeterminateGuard = await this.confirmDeleteTargetIdentity(logicalId, resourceType, physicalId, context);
26968
27076
  if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
26969
27077
  this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
26970
- const { ASGProvider } = await import("./asg-provider-DHB498Xq.js");
27078
+ const { ASGProvider } = await import("./asg-provider-C14GB-Hy.js");
26971
27079
  const delegateRegion = ambientRegion();
26972
27080
  let asgProvider = this.asgDeleteDelegates.get(delegateRegion);
26973
27081
  if (asgProvider === void 0) {
@@ -27073,7 +27181,7 @@ var CloudControlProvider = class {
27073
27181
  const family = SDK_DELETE_FAMILIES.get(resourceType);
27074
27182
  const cached = this.sdkDeleteDelegates.get(family);
27075
27183
  if (cached !== void 0 && cached.region === ccRegion) return cached.provider;
27076
- const provider = family === "rds" ? new (await (import("./rds-provider-CxB94DZy.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-CXhoiT-P.js"))).NeptuneProvider({ region: ccRegion });
27184
+ const provider = family === "rds" ? new (await (import("./rds-provider-DagnUCn-.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-BlpYIZQP.js"))).NeptuneProvider({ region: ccRegion });
27077
27185
  this.sdkDeleteDelegates.set(family, {
27078
27186
  region: ccRegion,
27079
27187
  provider
@@ -32713,7 +32821,7 @@ function ownRemedyError(error) {
32713
32821
  }
32714
32822
  function rollbackFailureText(error) {
32715
32823
  if (error instanceof Error && OWN_REMEDY_ERRORS.has(error)) return error.message.split("\n").map((line) => displaySafe(line)).join("\n");
32716
- return displaySafe(error instanceof Error ? error.message : String(error));
32824
+ return displaySafe(describeAwsFailure(error).detail);
32717
32825
  }
32718
32826
  function collisionText(msg) {
32719
32827
  return displayAwsMessage(displaySafe(msg).replace(/[\s\p{Cf}\p{Default_Ignorable_Code_Point}\u2800]{2,}/gu, " "));
@@ -33706,7 +33814,15 @@ function redactOutputsBag(deps, outputs) {
33706
33814
  absorbOutputsPassSecrets(deps);
33707
33815
  if (deps.outputsRun().outputSecrets.size === 0) return maskOutputsByPosition(deps.noEchoRun(), deps.noEchoDeps(), outputs);
33708
33816
  const outputsRun = deps.outputsRun();
33709
- return maskOutputsByPosition(deps.noEchoRun(), deps.noEchoDeps(), redactSecretsForState(outputs, outputsRun.outputSecrets, outputsRun.outputsSourceUsable ? outputsRun.outputsTemplateSource : void 0, TEMPLATE_SOURCED_RULES));
33817
+ return maskOutputsByPosition(deps.noEchoRun(), deps.noEchoDeps(), redactForState(outputs, outputsRun.outputsSourceUsable ? {
33818
+ provenance: "template-sourced",
33819
+ secrets: outputsRun.outputSecrets,
33820
+ source: outputsRun.outputsTemplateSource,
33821
+ generation: isSameGenerationBag(outputs) ? "same-generation" : "unproven"
33822
+ } : {
33823
+ provenance: "value-scan",
33824
+ secrets: outputsRun.outputSecrets
33825
+ }));
33710
33826
  }
33711
33827
  function registerNoEchoAttributes(run, deps, logicalId, result, secrets, ownProperties) {
33712
33828
  const declared = recordNoEchoAttributeValues(result, secrets, ownProperties);
@@ -34088,7 +34204,7 @@ async function replaceDeleteFirstAndRecreate(run, deps, logicalId, resourceType,
34088
34204
  }));
34089
34205
  } catch (deleteError) {
34090
34206
  const shownSecrets = unionOfSecretBags([secrets, printingSecretsFor(deps.secretsRun(), logicalId)]);
34091
- throw new Error(safeMsg`Failed to delete old resource ${maskSecretsInText(logicalId, shownSecrets)} ` + safeMsg`(${maskSecretsInText(currentResource.physicalId, shownSecrets)}) ` + `during the --replace delete-first fallback: ` + safeMsg`${asIsMessage(maskSecretsInText(deleteError instanceof Error ? deleteError.message : String(deleteError), shownSecrets))}`, { cause: deleteError instanceof Error ? maskSecretsInError(deleteError, secrets) : void 0 });
34207
+ throw new Error(safeMsg`Failed to delete old resource ${maskSecretsInText(logicalId, shownSecrets)} ` + safeMsg`(${maskSecretsInText(currentResource.physicalId, shownSecrets)}) ` + `during the --replace delete-first fallback: ` + safeMsg`${asIsMessage(maskSecretsInText(describeAwsFailure(deleteError).detail, shownSecrets))}`, { cause: deleteError instanceof Error ? maskSecretsInError(deleteError, secrets) : void 0 });
34092
34208
  }
34093
34209
  reportDeleteGuards(deleteResult, {
34094
34210
  physicalId: currentResource.physicalId,
@@ -34112,7 +34228,7 @@ async function replaceDeleteFirstAndRecreate(run, deps, logicalId, resourceType,
34112
34228
  });
34113
34229
  } catch (recreateError) {
34114
34230
  const shownSecrets = unionOfSecretBags([secrets, printingSecretsFor(deps.secretsRun(), logicalId)]);
34115
- throw new Error(safeMsg`Failed to re-create ${maskSecretsInText(logicalId, shownSecrets)} after the ` + safeMsg`--replace delete-first fallback already deleted the old resource (${maskSecretsInText(currentResource.physicalId, shownSecrets)}). ` + safeMsg`Re-run the deploy to create it fresh. Cause: ${asIsMessage(maskSecretsInText(recreateError instanceof Error ? recreateError.message : String(recreateError), shownSecrets))}`, { cause: recreateError instanceof Error ? maskSecretsInError(recreateError, secrets) : void 0 });
34231
+ throw new Error(safeMsg`Failed to re-create ${maskSecretsInText(logicalId, shownSecrets)} after the ` + safeMsg`--replace delete-first fallback already deleted the old resource (${maskSecretsInText(currentResource.physicalId, shownSecrets)}). ` + safeMsg`Re-run the deploy to create it fresh. Cause: ${asIsMessage(maskSecretsInText(describeAwsFailure(recreateError).detail, shownSecrets))}`, { cause: recreateError instanceof Error ? maskSecretsInError(recreateError, secrets) : void 0 });
34116
34232
  }
34117
34233
  }
34118
34234
  function typeChangeNameQuestion(resourceType, input) {
@@ -34178,7 +34294,7 @@ async function checkedReplacementNameChange(deps, input) {
34178
34294
  }), logicalId, void 0, void 0, input.createProvider);
34179
34295
  } catch (probeError) {
34180
34296
  if (probeErrorMeansNameHeld(resourceType, probeError)) throw markNonRetryable(new CdkdError(maskName(`${subject} requires replacement, and S3 answered 403 Forbidden for bucket ${displaySafe(change.desiredName)}: another account owns that name, or a bucket of this account denies this identity \`s3:ListBucket\`, or the request's credentials were rejected. Nothing was created or deleted. Choose another name, or if the bucket is yours grant \`s3:ListBucket\` on it (or delete it) and re-run.`), "NAMED_REPLACEMENT_COLLISION", probeError instanceof Error ? probeError : void 0));
34181
- throw markNonRetryable(new CdkdError(maskName(`${subject} requires replacement under a new name, and ${adoptsText}, but cdkd could not check whether another resource already holds it: ${displayAwsMessage(maskName(probeError instanceof Error ? probeError.message : String(probeError)))}. Nothing was created or deleted. Re-run the deploy once the check can succeed.`), "NAMED_REPLACEMENT_COLLISION", probeError instanceof Error ? probeError : void 0));
34297
+ throw markNonRetryable(new CdkdError(maskName(`${subject} requires replacement under a new name, and ${adoptsText}, but cdkd could not check whether another resource already holds it: ${displayAwsMessage(maskName(describeAwsFailure(probeError).detail))}. Nothing was created or deleted. Re-run the deploy once the check can succeed.`), "NAMED_REPLACEMENT_COLLISION", probeError instanceof Error ? probeError : void 0));
34182
34298
  }
34183
34299
  if (found === null) return change;
34184
34300
  if (!typeChanged && probeFoundSameId(resourceType, found.physicalId, currentResource.physicalId)) return;
@@ -34195,7 +34311,7 @@ async function createFirstThenDeleteOld(run, deps, input) {
34195
34311
  createResult = await deps.withRetry(() => withCurrentResourceSecrets(secrets, () => input.createProvider.create(logicalId, resourceType, input.createProps, { maskSecrets: createSecretMasker(secrets) })), logicalId, void 0, void 0, input.createProvider);
34196
34312
  } catch (createError) {
34197
34313
  if (!isNameCollisionErrorFrom(createError, logicalId)) throw createError;
34198
- const createMsg = displayAwsMessage(maskName(createError instanceof Error ? createError.message : String(createError)));
34314
+ const createMsg = displayAwsMessage(maskName(describeAwsFailure(createError).detail));
34199
34315
  throw markNonRetryable(new CdkdError(maskName(`${displaySafe(logicalId)} (${displaySafe(resourceType)}) requires replacement (${input.trigger}), and cdkd created the new resource first because its name differs, but the create collided: ${createMsg}. If the collision is on the requested name: ${renderReplacementNameChange(input.change, input.createProps)}. Nothing was deleted` + (retainOld ? ` (UpdateReplacePolicy: Retain keeps the old resource in place)` : "") + ". Choose a name no other resource holds, or delete the resource holding it if it is yours."), "NAMED_REPLACEMENT_COLLISION", createError instanceof Error ? createError : void 0));
34200
34316
  }
34201
34317
  if (input.equalIdIsSameResource && createResult.physicalId === currentResource.physicalId) throw markNonRetryable(new CdkdError(maskName(`${displaySafe(logicalId)} (${displaySafe(resourceType)}) requires replacement (${input.trigger}) under a new name, but the create returned the resource being replaced (${displaySafe(currentResource.physicalId)}) instead of a new one, so cdkd cannot tell which name it holds. Nothing was deleted. Delete that resource by hand if it is yours, then re-run the deploy.`), "NAMED_REPLACEMENT_IDEMPOTENT_CREATE"));
@@ -34221,7 +34337,7 @@ async function deleteReplacedAfterCreate(run, deps, logicalId, oldResourceType,
34221
34337
  maskSecrets: createUnionSecretMasker([secrets, secretNameBagFor(deps.secretsRun(), logicalId)])
34222
34338
  }));
34223
34339
  } catch (deleteError) {
34224
- const deleteMsg = maskSecretsInText(deleteError instanceof Error ? deleteError.message : String(deleteError), secrets);
34340
+ const deleteMsg = maskSecretsInText(describeAwsFailure(deleteError).detail, secrets);
34225
34341
  deleteFailed = true;
34226
34342
  run.replacedOldMaySurvive.set(logicalId, run.replacedOldMaySurvive.get(logicalId) === "unconfirmed" ? "unconfirmed" : replacedDeleteFailureVerdict(deleteError));
34227
34343
  const deferred = run.deferredReplacedDeletes;
@@ -34762,7 +34878,7 @@ var ForwardingSecrets = class extends Map {
34762
34878
  };
34763
34879
  function handleOutputResolutionFailure(deps, error, outputKey, outputs, secrets, inheritedSecrets) {
34764
34880
  const union = unionOfSecretBags([inheritedSecrets, secrets]);
34765
- const detail = maskSecretsInText(error instanceof Error ? error.message || error.name : String(error), union);
34881
+ const detail = maskSecretsInText(error instanceof Error ? error.message || error.name : safeStringify$1(error), union);
34766
34882
  if (deps.options.strictGetAtt) {
34767
34883
  const cause = typeof error === "string" ? maskSecretsInText(error, union) : maskSecretsInError(error, union);
34768
34884
  throw new Error(safeMsg`Failed to resolve output ${outputKey} ` + `(--strict-getatt promotes output resolution failures to deploy errors; ` + safeMsg`drop the flag to skip the output instead): ${asIsMessage(detail)}`, cause instanceof Error || typeof cause === "string" ? { cause } : {});
@@ -35161,8 +35277,16 @@ function recaptureMaskedBaseline(args) {
35161
35277
  const { previous, readback, properties, secrets } = args;
35162
35278
  const admissible = new Set(secretReferenceTokensOf(properties));
35163
35279
  for (const leaf of wholeStringLeavesOf(properties)) if (leaf.includes("{{resolve:")) admissible.add(leaf);
35164
- if (!reproducesBaseline(redactSecretsForState(readback, /* @__PURE__ */ new Map(), properties, STATE_SOURCED_BASELINE_RULES), previous, admissible)) return void 0;
35165
- const certified = redactSecretsForState(readback, secrets, properties, STATE_SOURCED_BASELINE_RULES);
35280
+ if (!reproducesBaseline(redactForState(readback, {
35281
+ provenance: "state-baseline",
35282
+ secrets: /* @__PURE__ */ new Map(),
35283
+ source: properties
35284
+ }), previous, admissible)) return void 0;
35285
+ const certified = redactForState(readback, {
35286
+ provenance: "state-baseline",
35287
+ secrets,
35288
+ source: properties
35289
+ });
35166
35290
  let changed = false;
35167
35291
  const overlay = (old, fresh) => {
35168
35292
  if (old === "***") {
@@ -35408,9 +35532,13 @@ function redactRollbackRecord(record, secrets, journaledProps, journaledAttribut
35408
35532
  if (secrets.size === 0) return record;
35409
35533
  const positioned = journaledProps === void 0 ? record : {
35410
35534
  ...record,
35411
- properties: redactSecretsForState(record.properties, secrets, journaledProps, STATE_DERIVED_RULES)
35535
+ properties: redactForState(record.properties, {
35536
+ provenance: "state-derived",
35537
+ secrets,
35538
+ source: journaledProps
35539
+ })
35412
35540
  };
35413
- return keepPersistedPlainRecordLeaves(scrubResourceRecord(positioned, secrets), record, {
35541
+ return keepPersistedPlainRecordLeaves(scrubResourceRecord(positioned, secrets, void 0, void 0, { observed: isSameGenerationBag(positioned.observedProperties) ? "same-generation" : "unproven" }), record, {
35414
35542
  properties: journaledProps,
35415
35543
  attributes: journaledAttributes
35416
35544
  });
@@ -36542,7 +36670,7 @@ async function replayRevert(s) {
36542
36670
  refuseMaskedReplayBaseline(desiredProps, op.logicalId, noEcho.inert);
36543
36671
  logger.info(` Rollback: Restoring ${safe(op.logicalId)} (${safe(op.resourceType)}) to previous state`);
36544
36672
  const currentProps = noEcho.onPreviousSide(await resolveReplayProps(current.properties, resolver, secrets, ctx, op.logicalId, current));
36545
- recordNestedStackParameterExpressions(secrets, op.resourceType, desiredProps, previousState.properties, STATE_DERIVED_RULES);
36673
+ recordNestedStackParameterExpressions(secrets, op.resourceType, desiredProps, previousState.properties, "state-derived");
36546
36674
  opMasker.addNamed({
36547
36675
  resourceType: op.resourceType,
36548
36676
  properties: desiredProps,
@@ -36638,7 +36766,7 @@ async function replayReverseReplacement(s) {
36638
36766
  logicalId: op.logicalId,
36639
36767
  physicalIds: [prev.physicalId]
36640
36768
  });
36641
- recordNestedStackParameterExpressions(secrets, oldType, resolvedPrevProps, prev.properties, STATE_DERIVED_RULES);
36769
+ recordNestedStackParameterExpressions(secrets, oldType, resolvedPrevProps, prev.properties, "state-derived");
36642
36770
  const deleteFirstBlocked = op.oldDeletedBeforeCreate === true && !rollbackRetainsNewResource(current) ? deleteFirstBlocker(op) : void 0;
36643
36771
  if (deleteFirstBlocked !== void 0) logger.warn(mask(safeMsg` Rollback: not deleting the new ${shownLogicalId(op.logicalId)} first: its old properties ` + safeMsg`name the resource ${shownLogicalId(deleteFirstBlocked.logicalId)} had before the same deploy ` + "replaced or deleted it, which this rollback may not be able to restore under that id — re-creating the old resource first, which keeps the new one if that fails"));
36644
36772
  const reverseDeleteFirst = op.oldDeletedBeforeCreate === true && !rollbackRetainsNewResource(current) && deleteFirstBlocked === void 0;
@@ -36705,7 +36833,7 @@ async function replayReverseReplacement(s) {
36705
36833
  });
36706
36834
  } catch (recreateError) {
36707
36835
  await deleteMarkedRecreate(recreateError, recreateCleanup);
36708
- throw new Error(mask(`Failed to re-create the old ${safe(op.logicalId)} after the new resource (${mask(current.physicalId)}) was already deleted: ${displaySafe(recreateError instanceof Error ? recreateError.message : String(recreateError))}. The resource is now absent — fix forward by re-deploying the stack.`), { cause: maskSecretsInError(recreateError instanceof Error ? recreateError : void 0, secrets) });
36836
+ throw new Error(mask(`Failed to re-create the old ${safe(op.logicalId)} after the new resource (${mask(current.physicalId)}) was already deleted: ${displaySafe(describeAwsFailure(recreateError).detail)}. The resource is now absent — fix forward by re-deploying the stack.`), { cause: maskSecretsInError(recreateError instanceof Error ? recreateError : void 0, secrets) });
36709
36837
  }
36710
36838
  };
36711
36839
  let deletedNewFirst = false;
@@ -36722,7 +36850,7 @@ async function replayReverseReplacement(s) {
36722
36850
  });
36723
36851
  } catch (createError) {
36724
36852
  const deletedMade = await deleteMarkedRecreate(createError, recreateCleanup);
36725
- const msg = createError instanceof Error ? createError.message : String(createError);
36853
+ const msg = describeAwsFailure(createError).detail;
36726
36854
  if (!isNameCollisionErrorFrom(createError, op.logicalId) || deletedMade) throw createError;
36727
36855
  const holder = inOriginalPrefix(() => reverseReplacementNewHoldsName({
36728
36856
  oldResourceType: oldType,
@@ -36816,8 +36944,8 @@ async function replayReverseReplacement(s) {
36816
36944
  }));
36817
36945
  throwIfDeleteSkipped(deleteNewAfterRecreate, op.logicalId, current.physicalId, "while deleting the new resource after re-creating the old one", newDeleteGuardScope(deleteNewAfterRecreateRoute.provisionedBy));
36818
36946
  } catch (deleteError) {
36819
- logger.warn(mask(` Rollback: old ${safe(op.logicalId)} re-created, but deleting the new resource (${displaySafe(mask(current.physicalId))}) failed: ${displaySafe(deleteError instanceof Error ? deleteError.message : String(deleteError))}. Delete it manually — it is no longer tracked in state.`));
36820
- survivorReason = `The replacement's new ${op.resourceType} (${current.physicalId}) could not be deleted after the old resource was re-created: ${deleteError instanceof Error ? deleteError.message : String(deleteError)}. It is live, still billing, and no longer tracked by cdkd — delete it yourself.`;
36947
+ logger.warn(mask(` Rollback: old ${safe(op.logicalId)} re-created, but deleting the new resource (${displaySafe(mask(current.physicalId))}) failed: ${displaySafe(describeAwsFailure(deleteError).detail)}. Delete it manually — it is no longer tracked in state.`));
36948
+ survivorReason = `The replacement's new ${op.resourceType} (${current.physicalId}) could not be deleted after the old resource was re-created: ${describeAwsFailure(deleteError).detail}. It is live, still billing, and no longer tracked by cdkd — delete it yourself.`;
36821
36949
  result.warnings++;
36822
36950
  }
36823
36951
  const recreatedId = displaySafe(mask(String(createResult.physicalId)));
@@ -36858,7 +36986,7 @@ async function deleteMarkedRecreate(error, s) {
36858
36986
  }));
36859
36987
  failure = deleteSkipReason(outcome);
36860
36988
  } catch (deleteError) {
36861
- failure = deleteError instanceof Error ? deleteError.message : String(deleteError);
36989
+ failure = describeAwsFailure(deleteError).detail;
36862
36990
  }
36863
36991
  if (failure === void 0) return true;
36864
36992
  s.logger.warn(safeMsg` Rollback: could not delete ${id}, which the failed re-create of ${shown} made before ` + safeMsg`failing (${s.mask(failure)}); no record holds it — delete it yourself`);
@@ -37288,7 +37416,7 @@ async function replayFailedOperationsUnbound(failedOps, stateResources, stackNam
37288
37416
  const desiredProps = noEcho.desired;
37289
37417
  refuseMaskedReplayBaseline(desiredProps, op.logicalId, noEcho.inert);
37290
37418
  const attemptedProps = noEcho.onPreviousSide(await resolveReplayProps(op.attemptedProperties ?? current.properties, resolver, secrets, ctx, op.logicalId, op.attemptedProperties === void 0 ? current : void 0));
37291
- recordNestedStackParameterExpressions(secrets, op.resourceType, desiredProps, prev.properties, STATE_DERIVED_RULES);
37419
+ recordNestedStackParameterExpressions(secrets, op.resourceType, desiredProps, prev.properties, "state-derived");
37292
37420
  opMasker.addNamed({
37293
37421
  resourceType: op.resourceType,
37294
37422
  properties: desiredProps,
@@ -37394,7 +37522,7 @@ var ObservedCapture = class {
37394
37522
  this.deps.printingSecretsFor(logicalId),
37395
37523
  this.deps.fingerprintNoEchoValues()
37396
37524
  ]);
37397
- this.deps.logger.debug(safeMsg`observedProperties capture for ${mask(logicalId)} (${mask(resourceType)}) failed: ${asIsMessage(mask(err instanceof Error ? err.message : String(err)))} — drift will fall back to template properties for this resource until the next successful deploy.`);
37525
+ this.deps.logger.debug(safeMsg`observedProperties capture for ${mask(logicalId)} (${mask(resourceType)}) failed: ${asIsMessage(mask(describeAwsFailure(err).detail))} — drift will fall back to template properties for this resource until the next successful deploy.`);
37398
37526
  });
37399
37527
  const promise = secrets === void 0 ? read() : withCurrentResourceSecrets(secrets, read);
37400
37528
  this.observedCaptureTasks.set(logicalId, promise);
@@ -38363,7 +38491,7 @@ async function loadJournaledOrphans(stateBackend, stackName, region, rollbackOrp
38363
38491
  if (!journal) return NONE;
38364
38492
  segments = journal.segments;
38365
38493
  } catch (err) {
38366
- const detail = err instanceof Error ? err.message : String(err);
38494
+ const detail = describeAwsFailure(err).detail;
38367
38495
  logger.warn(safeMsg`Could not read the stack's rollback journal (${displaySafe(detail)}); ` + safeMsg`no resource it records for a failed CREATE is deleted, and ${options.unreadableOutcome ?? "a destroy that proceeds removes the journal with the state"}.`);
38368
38496
  return {
38369
38497
  ...NONE,
@@ -38775,7 +38903,7 @@ async function markSuperseded(stateBackend, stackName, region, ids) {
38775
38903
  } catch {}
38776
38904
  }
38777
38905
  function errorDetail(err) {
38778
- return displaySafe(err instanceof Error ? err.message : String(err));
38906
+ return displaySafe(describeAwsFailure(err).detail);
38779
38907
  }
38780
38908
  function isHandledOrphan(handled, segment, op) {
38781
38909
  return handled.some((h) => h.segment.timestamp === segment.timestamp && h.segment.runId === segment.runId && h.op.logicalId === op.logicalId && h.op.changeType === op.changeType && h.op.resourceType === op.resourceType && h.op.physicalId === op.physicalId);
@@ -39307,7 +39435,7 @@ Drop the record with: ${dropCommand}`);
39307
39435
  maskSecrets: createUnionSecretMasker([secretNameBagFor(deps.secretsRun(), logicalId)])
39308
39436
  }), logicalId, 3, 5e3, deleteProvider);
39309
39437
  } catch (deleteError) {
39310
- const msg = deleteError instanceof Error ? deleteError.message : String(deleteError);
39438
+ const msg = describeAwsFailure(deleteError).detail;
39311
39439
  if (!isInterruptedWaitError(deleteError) && !isMarkedNonRetryable(deleteError) && !isWaitAbandonedError(deleteError) && (msg.includes("does not exist") || msg.includes("was not found") || msg.includes("not found") || msg.includes("No policy found") || msg.includes("NoSuchEntity") || msg.includes("NotFoundException") || msg.includes("ResourceNotFoundException"))) deps.logger.debug(safeMsg`Resource ${logicalId} already deleted (${asIsMessage(msg)}), removing from state`);
39312
39440
  else throw deleteError;
39313
39441
  }
@@ -40009,13 +40137,35 @@ function redactOperationsForJournal(deps, operations) {
40009
40137
  if ((!secrets || secrets.size === 0) && !op.previousState && sources === void 0) return op;
40010
40138
  const ownSecrets = secrets ?? /* @__PURE__ */ new Map();
40011
40139
  const next = { ...op };
40012
- if (next.properties) next.properties = byPosition(redactSecretsForState(next.properties, ownSecrets, templateProps));
40013
- if (next.attemptedProperties) next.attemptedProperties = byPosition(redactSecretsForState(markSameGenerationBag({ ...next.attemptedProperties }), ownSecrets, templateProps));
40140
+ if (next.properties) {
40141
+ const properties = next.properties;
40142
+ next.properties = byPosition(templateProps === void 0 ? redactForState(properties, {
40143
+ provenance: "value-scan",
40144
+ secrets: ownSecrets
40145
+ }) : redactForState(properties, {
40146
+ provenance: "template-derived",
40147
+ secrets: ownSecrets,
40148
+ source: templateProps,
40149
+ generation: isSameGenerationBag(properties) ? "same-generation" : "unproven"
40150
+ }));
40151
+ }
40152
+ if (next.attemptedProperties) {
40153
+ const attempted = next.attemptedProperties;
40154
+ next.attemptedProperties = byPosition(templateProps === void 0 ? redactForState(attempted, {
40155
+ provenance: "value-scan",
40156
+ secrets: ownSecrets
40157
+ }) : redactForState(attempted, {
40158
+ provenance: "template-derived",
40159
+ secrets: ownSecrets,
40160
+ source: templateProps,
40161
+ generation: "same-generation"
40162
+ }));
40163
+ }
40014
40164
  if (next.previousState) {
40015
40165
  const previous = next.previousState;
40016
40166
  const adopted = adoptedOrphanRecords.get(deps.owner);
40017
40167
  const loaded = adopted?.has(op.logicalId) ? adopted.get(op.logicalId) : previous;
40018
- next.previousState = applyNoEchoPersist(deps.noEchoRun(), deps.noEchoDeps(), op.logicalId, previous, keepPersistedPlainRecordLeaves(scrubResourceRecord(previous, ownSecrets, void 0, STATE_SOURCED_READBACK_RULES), previous, loaded ?? {}), void 0, {}, void 0, true);
40168
+ next.previousState = applyNoEchoPersist(deps.noEchoRun(), deps.noEchoDeps(), op.logicalId, previous, keepPersistedPlainRecordLeaves(scrubResourceRecord(previous, ownSecrets, void 0, "state-readback", { observed: isSameGenerationBag(previous.observedProperties) ? "same-generation" : "unproven" }), previous, loaded ?? {}), void 0, {}, void 0, true);
40019
40169
  }
40020
40170
  return next;
40021
40171
  });
@@ -40231,7 +40381,7 @@ async function deleteRollbackJournalBestEffort(deps, stackName, supersededLogica
40231
40381
  try {
40232
40382
  deleted = await deps.stateBackend.deleteRollbackJournal(stackName, deps.stackRegion);
40233
40383
  } catch (err) {
40234
- deps.logger.debug(safeMsg`Failed to delete rollback journal for ${displayStackName(stackName)}: ${err instanceof Error ? err.message : String(err)}`);
40384
+ deps.logger.debug(safeMsg`Failed to delete rollback journal for ${displayStackName(stackName)}: ${describeAwsFailure(err).detail}`);
40235
40385
  deleted = false;
40236
40386
  }
40237
40387
  if (deleted !== false) return true;
@@ -40239,7 +40389,7 @@ async function deleteRollbackJournalBestEffort(deps, stackName, supersededLogica
40239
40389
  try {
40240
40390
  await deps.stateBackend.markRollbackJournalSuperseded(stackName, deps.stackRegion, supersededLogicalIds);
40241
40391
  } catch (markErr) {
40242
- deps.logger.debug(safeMsg`Failed to record superseded logical ids on the rollback journal for ${displayStackName(stackName)}: ${markErr instanceof Error ? markErr.message : String(markErr)}`);
40392
+ deps.logger.debug(safeMsg`Failed to record superseded logical ids on the rollback journal for ${displayStackName(stackName)}: ${describeAwsFailure(markErr).detail}`);
40243
40393
  }
40244
40394
  return false;
40245
40395
  }
@@ -40248,7 +40398,7 @@ async function settleJournalAfterCleanRollback(deps, stackName, failedOperations
40248
40398
  try {
40249
40399
  await deps.stateBackend.popRollbackJournalSegment(stackName, deps.stackRegion);
40250
40400
  } catch (err) {
40251
- deps.logger.debug(safeMsg`Failed to pop the rollback journal segment after the clean rollback: ${asIsMessage(err instanceof Error ? err.message : String(err))}`);
40401
+ deps.logger.debug(safeMsg`Failed to pop the rollback journal segment after the clean rollback: ${asIsMessage(describeAwsFailure(err).detail)}`);
40252
40402
  return false;
40253
40403
  }
40254
40404
  return true;
@@ -40256,7 +40406,7 @@ async function settleJournalAfterCleanRollback(deps, stackName, failedOperations
40256
40406
  try {
40257
40407
  await deps.stateBackend.popRollbackJournalSegment(stackName, deps.stackRegion);
40258
40408
  } catch (err) {
40259
- deps.logger.warn(safeMsg`Failed to settle the rollback journal after the clean rollback: ${err instanceof Error ? err.message : String(err)}. ` + `The journal keeps the full segment; a later rollback replay is idempotent.`);
40409
+ deps.logger.warn(safeMsg`Failed to settle the rollback journal after the clean rollback: ${describeAwsFailure(err).detail}. ` + `The journal keeps the full segment; a later rollback replay is idempotent.`);
40260
40410
  return false;
40261
40411
  }
40262
40412
  if (!await writeRollbackJournalSegment(deps, stackName, [], failedOperations, "auto-rollback-clean", initialDeploy)) return true;
@@ -40331,7 +40481,7 @@ async function writeRollbackJournalSegment(deps, stackName, completedOperations,
40331
40481
  deps.logger.debug(safeMsg`Rollback journal segment written (${reason})`);
40332
40482
  return true;
40333
40483
  } catch (journalError) {
40334
- deps.logger.warn(safeMsg`Failed to write rollback journal: ${asIsMessage(journalError instanceof Error ? journalError.message : String(journalError))}. ` + `'cdkd rollback' will NOT be able to revert this deploy — use 'cdkd deploy' to resume or 'cdkd destroy' to clean up.`);
40484
+ deps.logger.warn(safeMsg`Failed to write rollback journal: ${asIsMessage(describeAwsFailure(journalError).detail)}. ` + `'cdkd rollback' will NOT be able to revert this deploy — use 'cdkd deploy' to resume or 'cdkd destroy' to clean up.`);
40335
40485
  return false;
40336
40486
  }
40337
40487
  }
@@ -42035,7 +42185,10 @@ function deployConditionInputs(parameterValues, inheritedSecrets, shadowedBy = /
42035
42185
  unavailable.add(name);
42036
42186
  continue;
42037
42187
  }
42038
- const redacted = redactSecretsForState(value, inheritedSecrets);
42188
+ const redacted = redactForState(value, {
42189
+ provenance: "value-scan",
42190
+ secrets: inheritedSecrets
42191
+ });
42039
42192
  if (!containsNeedle(value)) {
42040
42193
  if (redacted !== value) unavailable.add(name);
42041
42194
  continue;
@@ -42968,7 +43121,10 @@ function maskedInputSources(deps, template, resources, conditions, stackName) {
42968
43121
  const targetSecrets = target === void 0 ? void 0 : deps.secretsRun().perResourceSecrets.get(target);
42969
43122
  if (targetSecrets !== void 0 && hasMaskableValues(targetSecrets)) {
42970
43123
  const probe = { value };
42971
- const redacted = redactSecretsForState(probe, targetSecrets);
43124
+ const redacted = redactForState(probe, {
43125
+ provenance: "value-scan",
43126
+ secrets: targetSecrets
43127
+ });
42972
43128
  if (JSON.stringify(redacted) !== JSON.stringify(probe)) return {
42973
43129
  value,
42974
43130
  keepAsWritten: true
@@ -43177,7 +43333,7 @@ async function refuseTakenCreateName(engine, input) {
43177
43333
  if (probeErrorMeansNameHeld(resourceType, probeError)) return refuse(`${subject} is created with ${named}, and S3 answered 403 Forbidden for that bucket: another account owns that name, or a bucket of this account denies this identity \`s3:ListBucket\`, or the request's credentials were rejected. Nothing was created. Choose another name, or if the bucket is yours grant \`s3:ListBucket\` on it (or delete it) and re-run.`, probeError);
43178
43334
  const status = probeError?.$metadata?.httpStatusCode;
43179
43335
  if (resourceType === "AWS::S3::Bucket" && status === 301) return refuse(`${subject} is created with ${named}, and S3 answered 301 for that bucket: a bucket of that name already exists in another region. Nothing was created. Choose another name, or delete that bucket if it is yours and re-run.`, probeError);
43180
- return refuse(`${subject} is created with ${named}, and ${adoptsText}, but cdkd could not check whether another resource already holds it: ${displayAwsMessage(maskName(probeError instanceof Error ? probeError.message : String(probeError)))}. Nothing was created. Re-run the deploy once the check can succeed.`, probeError);
43336
+ return refuse(`${subject} is created with ${named}, and ${adoptsText}, but cdkd could not check whether another resource already holds it: ${displayAwsMessage(maskName(describeAwsFailure(probeError).detail))}. Nothing was created. Re-run the deploy once the check can succeed.`, probeError);
43181
43337
  }
43182
43338
  if (found === null) return;
43183
43339
  const holderId = found.physicalId;
@@ -46126,7 +46282,7 @@ async function updateByReplacement(engine, { change, counts, currentProps, curre
46126
46282
  }));
46127
46283
  } catch (deleteError) {
46128
46284
  const shownSecrets = unionOfSecretBags([updateSecrets, printingSecretsFor(engine.secretsRun, logicalId)]);
46129
- throw new Error(safeMsg`Failed to destroy old resource ${maskSecretsInText(logicalId, shownSecrets)} ` + safeMsg`(${maskSecretsInText(currentResource.physicalId, shownSecrets)}) during ${recreateFlagName}: ` + safeMsg`${asIsMessage(maskSecretsInText(deleteError instanceof Error ? deleteError.message : String(deleteError), shownSecrets))}`, { cause: deleteError instanceof Error ? maskSecretsInError(deleteError, updateSecrets) : void 0 });
46285
+ throw new Error(safeMsg`Failed to destroy old resource ${maskSecretsInText(logicalId, shownSecrets)} ` + safeMsg`(${maskSecretsInText(currentResource.physicalId, shownSecrets)}) during ${recreateFlagName}: ` + safeMsg`${asIsMessage(maskSecretsInText(describeAwsFailure(deleteError).detail, shownSecrets))}`, { cause: deleteError instanceof Error ? maskSecretsInError(deleteError, updateSecrets) : void 0 });
46130
46286
  }
46131
46287
  reportDeleteGuards(recreateDeleteResult, {
46132
46288
  physicalId: currentResource.physicalId,
@@ -46159,7 +46315,7 @@ async function updateByReplacement(engine, { change, counts, currentProps, curre
46159
46315
  try {
46160
46316
  createResult = await engine.withRetry(() => withCurrentResourceSecrets(updateSecrets, () => replaceProvider.create(logicalId, resourceType, replaceProps, { maskSecrets: createSecretMasker(updateSecrets) })), logicalId, void 0, void 0, replaceProvider);
46161
46317
  } catch (createError) {
46162
- const createMsg = displayAwsMessage(maskSecretsInText(createError instanceof Error ? createError.message : String(createError), updateSecrets));
46318
+ const createMsg = displayAwsMessage(maskSecretsInText(describeAwsFailure(createError).detail, updateSecrets));
46163
46319
  const createSentence = createMsg.endsWith(".") ? createMsg.slice(0, -1) : createMsg;
46164
46320
  if (!isNameCollisionErrorFrom(createError, logicalId)) throw createError;
46165
46321
  const nameOrigin = replacementNameOrigin(logicalId, currentResource.physicalId);
@@ -46217,7 +46373,7 @@ async function updateByReplacement(engine, { change, counts, currentProps, curre
46217
46373
  if (snapshotError instanceof CdkdError && snapshotError.code === "FINAL_SNAPSHOT_UNSUPPORTED") throw snapshotError;
46218
46374
  snapshotBlockedDelete = true;
46219
46375
  engine.replacementRun.replacedOldMaySurvive.set(logicalId, "kept");
46220
- engine.logger.warn(safeMsg` ⚠ Final snapshot for old ${logicalId} (${currentResource.physicalId}) ` + safeMsg`failed: ${asIsMessage(snapshotError instanceof Error ? snapshotError.message : String(snapshotError))}. ` + "The old resource was NOT deleted (UpdateReplacePolicy: Snapshot) — delete it manually once you have a snapshot; it is no longer tracked in state.");
46376
+ engine.logger.warn(safeMsg` ⚠ Final snapshot for old ${logicalId} (${currentResource.physicalId}) ` + safeMsg`failed: ${asIsMessage(describeAwsFailure(snapshotError).detail)}. ` + "The old resource was NOT deleted (UpdateReplacePolicy: Snapshot) — delete it manually once you have a snapshot; it is no longer tracked in state.");
46221
46377
  }
46222
46378
  if (!snapshotBlockedDelete) await deleteReplacedAfterCreate(engine.replacementRun, engine.replacementDeps(), logicalId, oldResourceType, currentResource, oldDeleteProvider, currentResource.properties, cleanupFinalSnapshotId, updateReplacePolicy, updateSecrets, oldDeleteRoute.provisionedBy, noEchoDeleteValues);
46223
46379
  }
@@ -46388,7 +46544,7 @@ async function updateInPlace(engine, { conditions, counts, currentProps, current
46388
46544
  maskSecrets: createUnionSecretMasker([updateSecrets, secretNameBagFor(engine.secretsRun, logicalId)])
46389
46545
  }));
46390
46546
  } catch (deleteError) {
46391
- const deleteMsg = deleteError instanceof Error ? deleteError.message : String(deleteError);
46547
+ const deleteMsg = describeAwsFailure(deleteError).detail;
46392
46548
  if (!isWaitAbandonedError(deleteError) && !isInterruptedWaitError(deleteError) && !isMarkedNonRetryable(deleteError) && (deleteMsg.includes("does not exist") || deleteMsg.includes("not found") || deleteMsg.includes("NotFound"))) engine.logger.debug(safeMsg`Old resource ${logicalId} already gone, proceeding with CREATE`);
46393
46549
  else throw deleteError;
46394
46550
  }
@@ -46431,7 +46587,7 @@ async function updateInPlace(engine, { conditions, counts, currentProps, current
46431
46587
  if (createFirst) throw createError;
46432
46588
  if (!retainOldOnReplace) {
46433
46589
  const shownSecrets = unionOfSecretBags([updateSecrets, printingSecretsFor(engine.secretsRun, logicalId)]);
46434
- throw new Error(safeMsg`Failed to create ${maskSecretsInText(logicalId, shownSecrets)} after the ` + safeMsg`UPDATE-not-supported replacement: the old resource (${maskSecretsInText(currentResource.physicalId, shownSecrets)}) ` + safeMsg`is now gone. Re-run the deploy to create it fresh. Cause: ${asIsMessage(maskSecretsInText(createError instanceof Error ? createError.message : String(createError), shownSecrets))}`, { cause: createError instanceof Error ? createError : void 0 });
46590
+ throw new Error(safeMsg`Failed to create ${maskSecretsInText(logicalId, shownSecrets)} after the ` + safeMsg`UPDATE-not-supported replacement: the old resource (${maskSecretsInText(currentResource.physicalId, shownSecrets)}) ` + safeMsg`is now gone. Re-run the deploy to create it fresh. Cause: ${asIsMessage(maskSecretsInText(describeAwsFailure(createError).detail, shownSecrets))}`, { cause: createError instanceof Error ? createError : void 0 });
46435
46591
  }
46436
46592
  if (!isNameCollisionErrorFrom(createError, logicalId)) throw createError;
46437
46593
  const nameHeldElsewhere = replacementRequestsDifferentName({
@@ -46769,8 +46925,18 @@ async function provisionUpdate(engine, logicalId, change, stateResources, stackN
46769
46925
  ]), fingerprints));
46770
46926
  if (resourceType === "AWS::CloudFormation::Stack") recordPassedNoEchoParameters(updateSecrets, desiredProps["Parameters"], noEchoPositionSources(engine.noEchoRun, stateResources));
46771
46927
  if (fingerprintSources !== void 0 && resourceType === "AWS::CloudFormation::Stack") recordPassedParameterClasses(updateSecrets, await classifyPassedParameters(desiredProps["Parameters"], fingerprintSources));
46772
- const desiredForSkipCheck = maskAtCoordinates(redactSecretsForState(markSameGenerationBag({ ...resolvedProps }), updateSecrets, desiredProps), comparisonCoordinates);
46773
- const legacyDesired = withoutPhysicalNameCopies(updateSecrets, () => maskAtCoordinates(redactSecretsForState(markSameGenerationBag({ ...resolvedProps }), updateSecrets, desiredProps), comparisonCoordinates));
46928
+ const desiredForSkipCheck = maskAtCoordinates(redactForState(resolvedProps, {
46929
+ provenance: "template-derived",
46930
+ secrets: updateSecrets,
46931
+ source: desiredProps,
46932
+ generation: "same-generation"
46933
+ }), comparisonCoordinates);
46934
+ const legacyDesired = withoutPhysicalNameCopies(updateSecrets, () => maskAtCoordinates(redactForState(resolvedProps, {
46935
+ provenance: "template-derived",
46936
+ secrets: updateSecrets,
46937
+ source: desiredProps,
46938
+ generation: "same-generation"
46939
+ }), comparisonCoordinates));
46774
46940
  const copies = physicalNameCopiesOf.get(updateSecrets);
46775
46941
  const regionEvidence = getCurrentProducerRegions()?.();
46776
46942
  const recordOwnSecrets = copies !== void 0 && copies.size > 0 && regionEvidence?.complete === true && recordHoldsEmbeddedReference(currentResource) ? await resolveRecordSecrets({
@@ -46784,7 +46950,12 @@ async function provisionUpdate(engine, logicalId, change, stateResources, stackN
46784
46950
  if (repaired !== bag[key]) bag[key] = repaired;
46785
46951
  }
46786
46952
  if (overlapRuleAnswered(updateSecrets)) {
46787
- const legacyOverlapBag = withLegacyOverlapScan(updateSecrets, () => maskAtCoordinates(redactSecretsForState(markSameGenerationBag({ ...resolvedProps }), updateSecrets, desiredProps), comparisonCoordinates));
46953
+ const legacyOverlapBag = withLegacyOverlapScan(updateSecrets, () => maskAtCoordinates(redactForState(resolvedProps, {
46954
+ provenance: "template-derived",
46955
+ secrets: updateSecrets,
46956
+ source: desiredProps,
46957
+ generation: "same-generation"
46958
+ }), comparisonCoordinates));
46788
46959
  const legacyOverlap = legacyReferenceLeavesOnly(legacyOverlapBag);
46789
46960
  for (const bag of new Set(repairable)) for (const key of Object.keys(bag)) {
46790
46961
  const repaired = repairPhysicalNameCopyLeaves(bag[key], legacyOverlap[key], desiredForSkipCheck[key]);
@@ -46811,7 +46982,12 @@ async function provisionUpdate(engine, logicalId, change, stateResources, stackN
46811
46982
  const createOnlyEvidence = acceptedCreateOnlyDropsOf(currentResource);
46812
46983
  const recordedAsWritten = currentResource.provisionedBy === "cc-api" ? currentProps : withoutUnwrittenSilentDropProperties(resourceType, currentProps, desiredForSkipCheck, allowedForRecord, createOnlyEvidence);
46813
46984
  const unmarkedRecord = noEchoLeavesOf(currentResource) === void 0;
46814
- const todayAsWritten = unmarkedRecord || witnessNormalize(recordedAsWritten, void 0, desiredForSkipCheckAsWritten).differing.length > 0 ? redactSecretsForState(markSameGenerationBag({ ...resolvedProps }), withoutNoEchoParameterEntries(updateSecrets), desiredProps) : void 0;
46985
+ const todayAsWritten = unmarkedRecord || witnessNormalize(recordedAsWritten, void 0, desiredForSkipCheckAsWritten).differing.length > 0 ? redactForState(resolvedProps, {
46986
+ provenance: "template-derived",
46987
+ secrets: withoutNoEchoParameterEntries(updateSecrets),
46988
+ source: desiredProps,
46989
+ generation: "same-generation"
46990
+ }) : void 0;
46815
46991
  const witness = todayAsWritten === void 0 ? void 0 : witnessNormalize(recordedAsWritten, todayAsWritten, desiredForSkipCheckAsWritten);
46816
46992
  const currentPropsAsWritten = witness === void 0 ? recordedAsWritten : witness.current;
46817
46993
  const witnessMigrates = unmarkedRecord || (witness?.confirmed.length ?? 0) > 0;
@@ -47406,7 +47582,7 @@ async function provisionResource(engine, logicalId, change, stateResources, stac
47406
47582
  });
47407
47583
  } catch (error) {
47408
47584
  renderer.removeTask(logicalId);
47409
- const message = error instanceof Error ? error.message : String(error);
47585
+ const message = describeAwsFailure(error).detail;
47410
47586
  const shownMessage = maskForResource(engine.secretsRun, logicalId, message);
47411
47587
  const shownId = safeMsg`${logicalId}`;
47412
47588
  engine.logger.error(maskForResource(engine.secretsRun, logicalId, `Failed to ${change.changeType.toLowerCase()} ${shownId}: ${shownMessage}`));
@@ -47488,7 +47664,7 @@ async function executeDeployment(engine, template, currentState, changes, dag, e
47488
47664
  if (migrate) pendingMigration = false;
47489
47665
  engine.logger.debug(safeMsg`State saved after ${logicalId}`);
47490
47666
  } catch (error) {
47491
- engine.logger.warn(safeMsg`Failed to save state after ${logicalId}: ${asIsMessage(error instanceof Error ? error.message : String(error))}`);
47667
+ engine.logger.warn(safeMsg`Failed to save state after ${logicalId}: ${asIsMessage(describeAwsFailure(error).detail)}`);
47492
47668
  }
47493
47669
  });
47494
47670
  };
@@ -47818,7 +47994,7 @@ async function executeDeployment(engine, template, currentState, changes, dag, e
47818
47994
  if (migrate) pendingMigration = false;
47819
47995
  engine.logger.debug("Partial state saved before rollback (orphaned resource tracking)");
47820
47996
  } catch (saveError) {
47821
- engine.logger.warn(safeMsg`Failed to save partial state before rollback: ${asIsMessage(saveError instanceof Error ? saveError.message : String(saveError))}`);
47997
+ engine.logger.warn(safeMsg`Failed to save partial state before rollback: ${asIsMessage(describeAwsFailure(saveError).detail)}`);
47822
47998
  }
47823
47999
  let autoRollbackClean = false;
47824
48000
  let autoRollbackJournaled = false;
@@ -47866,7 +48042,7 @@ async function executeDeployment(engine, template, currentState, changes, dag, e
47866
48042
  engine.logger.debug("State saved after deployment failure");
47867
48043
  if (autoRollbackClean) await settleNestedChildrenAfterCleanRollback(engine.rollbackDeps(), stackName, rollbackSettledNested, await settleJournalAfterCleanRollback(engine.rollbackDeps(), stackName, rollbackRemainingFailedOps, initialDeploy));
47868
48044
  } catch (saveError) {
47869
- engine.logger.debug(safeMsg`Retrying state save after rollback (ETag mismatch): ${asIsMessage(saveError instanceof Error ? saveError.message : String(saveError))}`);
48045
+ engine.logger.debug(safeMsg`Retrying state save after rollback (ETag mismatch): ${asIsMessage(describeAwsFailure(saveError).detail)}`);
47870
48046
  try {
47871
48047
  const freshEtag = (await engine.stateBackend.getState(stackName, engine.stackRegion))?.etag;
47872
48048
  const postRollbackState = {
@@ -47885,7 +48061,7 @@ async function executeDeployment(engine, template, currentState, changes, dag, e
47885
48061
  engine.logger.debug("State saved after deployment failure (retry succeeded)");
47886
48062
  if (autoRollbackClean) await settleNestedChildrenAfterCleanRollback(engine.rollbackDeps(), stackName, rollbackSettledNested, await settleJournalAfterCleanRollback(engine.rollbackDeps(), stackName, rollbackRemainingFailedOps, initialDeploy));
47887
48063
  } catch (retryError) {
47888
- engine.logger.warn(safeMsg`Failed to save state after rollback: ${asIsMessage(retryError instanceof Error ? retryError.message : String(retryError))}`);
48064
+ engine.logger.warn(safeMsg`Failed to save state after rollback: ${asIsMessage(describeAwsFailure(retryError).detail)}`);
47889
48065
  }
47890
48066
  }
47891
48067
  throw error;
@@ -47940,13 +48116,13 @@ async function persistStateAfterOutputFailure(engine, stackName, currentState, n
47940
48116
  });
47941
48117
  engine.logger.debug("State saved after output resolution failure");
47942
48118
  } catch (saveError) {
47943
- engine.logger.debug(safeMsg`Retrying state save after output resolution failure (ETag mismatch): ${asIsMessage(saveError instanceof Error ? saveError.message : String(saveError))}`);
48119
+ engine.logger.debug(safeMsg`Retrying state save after output resolution failure (ETag mismatch): ${asIsMessage(describeAwsFailure(saveError).detail)}`);
47944
48120
  try {
47945
48121
  const freshEtag = (await engine.stateBackend.getState(stackName, engine.stackRegion))?.etag;
47946
48122
  await engine.stateBackend.saveState(stackName, engine.stackRegion, engine.withParentInfo(buildState()), { ...freshEtag !== void 0 && { expectedEtag: freshEtag } });
47947
48123
  engine.logger.debug("State saved after output resolution failure (retry succeeded)");
47948
48124
  } catch (retryError) {
47949
- engine.logger.warn(safeMsg`Failed to save state after output resolution failure: ${asIsMessage(retryError instanceof Error ? retryError.message : String(retryError))} — resources were provisioned but not recorded; run deploy again to reconcile.`);
48125
+ engine.logger.warn(safeMsg`Failed to save state after output resolution failure: ${asIsMessage(describeAwsFailure(retryError).detail)} — resources were provisioned but not recorded; run deploy again to reconcile.`);
47950
48126
  }
47951
48127
  }
47952
48128
  }
@@ -48282,7 +48458,7 @@ async function doDeployWithPrefetch(engine, stackName, template, createOnlyPrefe
48282
48458
  else if (healedAttributesPending) engine.logger.debug("Persisted attributes re-read from AWS for a stale record (no-change path)");
48283
48459
  else engine.logger.debug("Persisted skipped-outputs record (no outputs-value diff, no-change path)");
48284
48460
  } catch (saveError) {
48285
- engine.logger.warn(safeMsg`Failed to persist no-change state update: ${asIsMessage(saveError instanceof Error ? saveError.message : String(saveError))} — drift baseline / outputs will be re-resolved on next deploy.`);
48461
+ engine.logger.warn(safeMsg`Failed to persist no-change state update: ${asIsMessage(describeAwsFailure(saveError).detail)} — drift baseline / outputs will be re-resolved on next deploy.`);
48286
48462
  }
48287
48463
  }
48288
48464
  return {
@@ -48441,7 +48617,7 @@ async function doDeployWithPrefetch(engine, stackName, template, createOnlyPrefe
48441
48617
  await engine.lockManager.releaseLock(stackName, engine.stackRegion);
48442
48618
  engine.logger.debug("Lock released");
48443
48619
  } catch (lockError) {
48444
- engine.logger.warn(safeMsg`Failed to release lock: ${asIsMessage(lockError instanceof Error ? lockError.message : String(lockError))}`);
48620
+ engine.logger.warn(safeMsg`Failed to release lock: ${asIsMessage(describeAwsFailure(lockError).detail)}`);
48445
48621
  }
48446
48622
  }
48447
48623
  }
@@ -48703,7 +48879,8 @@ var DeployEngine = class {
48703
48879
  for (const [logicalId, record] of Object.entries(state.resources)) {
48704
48880
  const secrets = this.secretsRun.perResourceSecrets.get(logicalId);
48705
48881
  const templateProps = this.secretsRun.perResourceTemplateProps.get(logicalId);
48706
- const scrubbed = scrubResourceRecord(this.attributeHealer.withHealedAttributes(logicalId, record), secrets ?? /* @__PURE__ */ new Map(), templateProps);
48882
+ const healed = this.attributeHealer.withHealedAttributes(logicalId, record);
48883
+ const scrubbed = scrubResourceRecord(healed, secrets ?? /* @__PURE__ */ new Map(), templateProps, void 0, sameGenerationClaimsOf(healed));
48707
48884
  const noEchoScrubbed = applyNoEchoPersist(this.noEchoRun, this.noEchoDeps(), logicalId, record, withNoEchoExactEchoes(this.noEchoRun, logicalId, scrubbed), templateProps, state.resources, secrets);
48708
48885
  resources[logicalId] = withReferenceProvenance(withConstructPath(withMaskedPropertyFingerprints(noEchoScrubbed, record.properties, templateProps, secrets, this.secretsRun.fingerprintNoEchoValues, this.secretsRun.perResourceInputFingerprints.get(logicalId)), constructPathOf(this.noEchoRun.constructPathTemplate, logicalId)), this.referenceProvenanceToPersist(logicalId, record, noEchoScrubbed, secrets));
48709
48886
  }
@@ -48712,7 +48889,7 @@ var DeployEngine = class {
48712
48889
  const orphanTemplateProps = sameResource ? this.secretsRun.perResourceTemplateProps.get(entry.logicalId) : void 0;
48713
48890
  return {
48714
48891
  ...entry,
48715
- state: withMaskedPropertyFingerprints(applyNoEchoPersist(this.noEchoRun, this.noEchoDeps(), entry.logicalId, entry.state, scrubResourceRecord(entry.state, (sameResource ? this.secretsRun.perResourceSecrets.get(entry.logicalId) : void 0) ?? /* @__PURE__ */ new Map(), orphanTemplateProps), orphanTemplateProps, state.resources), entry.state.properties, orphanTemplateProps, sameResource ? this.secretsRun.perResourceSecrets.get(entry.logicalId) : void 0, sameResource ? this.secretsRun.fingerprintNoEchoValues : void 0, sameResource ? this.secretsRun.perResourceInputFingerprints.get(entry.logicalId) : void 0)
48892
+ state: withMaskedPropertyFingerprints(applyNoEchoPersist(this.noEchoRun, this.noEchoDeps(), entry.logicalId, entry.state, scrubResourceRecord(entry.state, (sameResource ? this.secretsRun.perResourceSecrets.get(entry.logicalId) : void 0) ?? /* @__PURE__ */ new Map(), orphanTemplateProps, void 0, sameGenerationClaimsOf(entry.state)), orphanTemplateProps, state.resources), entry.state.properties, orphanTemplateProps, sameResource ? this.secretsRun.perResourceSecrets.get(entry.logicalId) : void 0, sameResource ? this.secretsRun.fingerprintNoEchoValues : void 0, sameResource ? this.secretsRun.perResourceInputFingerprints.get(entry.logicalId) : void 0)
48716
48893
  };
48717
48894
  });
48718
48895
  const outputs = redactOutputs(this.maskingDeps(), state.outputs);
@@ -48765,7 +48942,10 @@ var DeployEngine = class {
48765
48942
  redactCrossStackReads(state) {
48766
48943
  if (state.imports === void 0 && state.outputReads === void 0) return {};
48767
48944
  const secrets = allRecordedSecrets(this.secretsRun, this.maskingDeps());
48768
- const redact = (value) => redactSecretsForState(value, secrets);
48945
+ const redact = (value) => redactForState(value, {
48946
+ provenance: "value-scan",
48947
+ secrets
48948
+ });
48769
48949
  return {
48770
48950
  ...state.imports === void 0 ? {} : { imports: state.imports.map((entry) => ({
48771
48951
  ...entry,
@@ -48782,7 +48962,10 @@ var DeployEngine = class {
48782
48962
  absorbOutputsPassSecrets(this.maskingDeps());
48783
48963
  const secrets = allRecordedSecrets(this.secretsRun, this.maskingDeps());
48784
48964
  if (secrets.size === 0) return (name) => name;
48785
- return (name) => redactSecretsForState(name, secrets);
48965
+ return (name) => redactForState(name, {
48966
+ provenance: "value-scan",
48967
+ secrets
48968
+ });
48786
48969
  }
48787
48970
  withParentInfo(state) {
48788
48971
  const redacted = this.redactStateForPersist(state);
@@ -48857,7 +49040,13 @@ var DeployEngine = class {
48857
49040
  return maskingRetryLogger(this.logger, secrets);
48858
49041
  }
48859
49042
  };
49043
+ function sameGenerationClaimsOf(record) {
49044
+ return {
49045
+ properties: isSameGenerationBag(record.properties) ? "same-generation" : "unproven",
49046
+ observed: isSameGenerationBag(record.observedProperties) ? "same-generation" : "unproven"
49047
+ };
49048
+ }
48860
49049
 
48861
49050
  //#endregion
48862
- export { resolvePendingCloudControlRequests as $, repairMalformedOutputsForReadOnly as $a, redactedDockerCause as $c, accountArgs as $i, buildFinalSnapshotIdentifier as $n, readbackPathFor as $o, DiffCalculator as $r, S3StateBackend as $s, namesAnyDeclaredParameter as $t, findServiceTokenRefusals as A, refuseMalformedOrphanRecordsForDestroy as Aa, assertAssetBucketRegion as Ac, coerceParameterTypedValue as Ai, expectedOwnerParam as Al, gray as An, replayWarn as Ao, isCustomResourceType as Ar, inheritNestedStackParameterAssociations as As, removeProtectionTypeList as At, parentSuppliedValues as B, refuseMalformedResourceEntriesForImport as Ba, resolveDockerContextDirectory as Bc, cfnRefValueFromPhysicalId as Bi, nullPrototypeRecord as Bl, journaledOrphanPrintingBag as Bn, sameLambdaFunctionAddress as Bo, UNSPECIFIED_SKIP_REASON as Br, recordMaskOnlyValuesIn as Bs, resolveReplacementOldType as Bt, getPriorAttempts as C, malformedResourcesWarning as Ca, WorkGraph as Cc, applyCallerIdentityCredentials as Ci, CFN_TEMPLATE_BODY_LIMIT as Cl, awaitInFlightSibling as Cn, toFiniteNumber as Co, ProviderRegistry as Cr, withPhysicalNameCopies as Cs, formatResourceLine as Ct, crossStackOutputProvenanceSource as D, refuseDivergentRecordRegionForDestroy as Da, rewriteTemplateAssetReferences as Dc, classifyReplaySecretRegion as Di, uploadCfnTemplate as Dl, replacedDeleteFailureVerdict as Dn, configIntegerRefusal as Do, waitForLambdaFunctionActive as Dr, isUncertifiedBaselineMaskPosition as Ds, withApiLimit as Dt, computeImplicitDeleteEdges as E, previewableOrphanRecords as Ea, loadPublishableAssetManifest as Ec, classifyRecordedSecretRegion as Ei, findLargeInlineResources as El, withStackRecords as En, configBooleanRefusal as Eo, wouldReturnToSdkProvider as Er, dynamicReferenceTokens as Es, lookupEachName as Et, listNestedTemplateRows as F, refuseMalformedOutputsForDestroy as Fa, readBootstrapMarkerBody as Fc, carriesDynamicReference as Fi, StageLoadError as Fl, noEchoComparisonForTemplate as Fn, templateResourceTypes as Fo, customResourceResponseExpirationWarning as Fr, recordPhysicalNameCopy as Fs, planFailedOps as Ft, keptWholeReasonText as G, refuseMalformedResourcePropertiesForExport as Ga, finchSecretArgvRefusal as Gc, parameterInputsFor as Gi, renderAssemblyPathEscape as Gl, secretNamePrintingBags as Gn, maskAtCoordinates as Go, isWaitAbandonedError as Gr, STATE_SOURCED_BASELINE_RULES as Gs, inheritProducerRegions as Gt, withResourceDeadline as H, refuseMalformedResourceEntriesForOrphan as Ha, describeDockerExecFailure as Hc, refStateLookupFromResource as Hi, absoluteAssemblyPathEscape as Hl, namingSecretsWithRecordedNoEcho as Hn, TemplateParser as Ho, deleteLeftInPlace as Hr, recordNoEchoParameterFreshValue as Hs, orphanNeedsIdentity as Ht, renderNestedTemplateTreeDefect as I, refuseMalformedResourceAttributesForOrphan as Ia, validateAssetBucketName as Ic, carriesFetchableDynamicReference as Ii, processStackMessages as Il, noEchoExactEchoLeavesOf as In, describeTypeWithThrottleRetry as Io, CloudControlProvider as Ir, splitGetAttStringForm as Is, planRollback as It, makeSiblingClaimReader as J, refuseMalformedResourcesForDestroy as Ja, isDockerClientEnvKey as Jc, JSON_LISTING_HOLE_VALUE as Ji, injectedAwsRegionValue as Jl, stateSecretNameNeedles as Jn, maskedLeafCoordinatesOf as Jo, ec2InstanceProtectionSite as Jr, TEMPLATE_SOURCED_RULES as Js, redactedDeleteAddressFields as Jt, mergeNoChangeOutputs as K, refuseMalformedResourcePropertiesForOrphan as Ka, formatDockerLoginError as Kc, passedParameterClassesOf as Ki, resolveAssemblyPath as Kl, secretNamedAttributeNamesOf as Kn, maskReadbackAtCoordinates as Ko, markWaitAbandoned as Kr, STATE_SOURCED_CROSS_GENERATION_RULES as Ks, REDACTED_DELETE_ADDRESS_SKIP_REASON as Kt, templateIdentity as L, refuseMalformedResourceEntries as La, validateContainerRepoName as Lc, isNamelessDynamicReferenceError as Li, defineOwnKey as Ll, noEchoParameterNamesOf as Ln, withRetry as Lo, slowCcOperationTimeoutMs as Lr, carriesSecretMask as Ls, recheckFailedPlan as Lt, childTemplateLoader as M, refuseMalformedOrphansForDestroy as Ma, getBootstrapMarkerKey as Mc, parameterTypeMayLoseSecretIdentity as Mi, canonicalizeRegion as Ml, red as Mn, requireConfigObject as Mo, withPrintingSecrets as Mr, recoverMaskedOutput as Ms, demoteSupersededOrphans as Mt, findNestedTemplateTreeDefect as N, refuseMalformedOrphansForOrphan as Na, isCrossRegionRedirect as Nc, getAccountInfo as Ni, derivePartitionAndUrlSuffix as Nl, yellow as Nn, requireConfigString as No, CUSTOM_RESOURCE_RESPONSE_LIFECYCLE_RULE_ID as Nr, physicalNameCopiesOf as Ns, isJournaledOrphan as Nt, inheritedProvenanceForChildDiff as O, refuseMalformedNestedChildOutputs as Oa, AssetModeResolver as Oc, producerRegionsFromState as Oi, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as Ol, bold as On, configStringRefusal as Oo, TemplateNoEchoReresolver as Or, pathCrossesDottedKey as Os, replayFailedOperations as Ot, isAbsoluteAssetPath as P, refuseMalformedOutputs as Pa, parseBootstrapMarker as Pc, isImpossibleEmptyStoredAttribute as Pi, AssemblyReader as Pl, noEchoAttributeNamesOf as Pn, prefetchCreateOnlyPropertyPaths as Po, applyCustomResourceResponseExpiration as Pr, recordAttributeIdCopy as Ps, isReplacementOrphan as Pt, pendingRequestCount as Q, repairMalformedOrphansForReadOnly as Qa, redactedCause as Qc, UNREADABLE_RESOURCES_MAP_ROW as Qi, PRE_DELETE_SNAPSHOT_TYPES as Qn, passedNoEchoParametersOf as Qo, reEnableInstanceApiTermination as Qr, isLockInfoExpired as Qs, computeParameterTaint as Qt, conditionFingerprint as R, refuseMalformedResourceEntriesForDeploy as Ra, buildDenyExternalAccessPolicy as Rc, keepsSecretReferenceToken as Ri, hasOwnKey as Rl, createReadOnlyAttributeHealerFactory as Rn, canonicalLambdaFunctionName as Ro, unchangedBehindSecretReference as Rr, provenPublicValue as Rs, recordUnderIdIsNotOwn as Rt, isTruthyCfnBoolean as S, malformedResourcePropertiesWarning as Sa, stringifyValue as Sc, AWS_CREDENTIAL_ENV_KEYS as Si, ssmResolvedValueType as Sl, formatDestructiveChange as Sn, toCfnInteger as So, CC_BROKEN_REASON as Sr, scrubResourceRecord as Ss, sameJournaledOrphans as St, IMPLICIT_DELETE_DEPENDENCIES as T, malformedStateRefusalMessage as Ta, createAssetRedirectResolver as Tc, envCredentialsAreAssumedRole as Ti, MIGRATE_TMP_PREFIX as Tl, getStackRecords as Tn, coerceCfnInteger as To, isCustomResource as Tr, DYNAMIC_REFERENCE_TOKEN_SCAN as Ts, isAccessDeniedError as Tt, diffSecurity as U, refuseMalformedResourcePropertiesForDestroy as Ua, describeDockerFailure as Uc, parseWebACLArn as Ui, describeFileReadFailure as Ul, orphanRecordsPrintingBag as Un, canonicalCoordinates as Uo, deleteSkipReason as Ur, recordProvenPublicExpression as Us, findNestedStackTypeChanges as Ut, readRecordedConditionVerdicts as V, refuseMalformedResourceEntriesForImportSave as Va, describeDockerCapturedOutput as Vc, isStalePlaceholderArnAttribute as Vi, ownValue as Vl, maskEventTextWithBoundBags as Vn, DagBuilder as Vo, deleteIndeterminateGuards as Vr, recordNoEchoAttributeValues as Vs, seedsDeleteFirstGuard as Vt, isSecretBearingReferenceString as W, refuseMalformedResourcePropertiesForDrift as Wa, dockerSpawnEnvWithSensitive as Wc, withSharedDrainBudget as Wi, displayAssemblyPath as Wl, secretNamePrintingBag as Wn, isMarkedCoordinate as Wo, withIndeterminateGuard as Wr, wholeStringLeavesOf as Ws, getCurrentProducerRegions as Wt, DeploymentEventsReader as X, refuseMalformedState as Xa, partitionSensitiveEnv as Xc, STATE_RESOURCES_MALFORMED as Xi, resolveBucketRegion as Xl, extractDeploymentEventError as Xn, noEchoLeavesOf as Xo, observeThenDisableInstanceApiTermination as Xr, isSingleDynamicReferenceToken as Xs, updatePartialMessage as Xt, planOrphanAdoption as Y, refuseMalformedResourcesForExport as Ya, isMalformedEnvKey as Yc, STATE_REGION_DIVERGED as Yi, clearBucketRegionCache as Yl, storedSecretNameNeedles as Yn, noEchoCoordinatesOf as Yo, isTerminationProtectionPropagationError as Yr, WHOLE_DYNAMIC_REFERENCE_PATTERN as Ys, redactedDeleteAddressSkip as Yt, DeploymentEventsStore as Z, repairMalformedOrphanRecordsForReadOnly as Za, redactDockerArgvValues as Zc, UNREADABLE_ORPHANS_CONTAINER_ROW as Zi, ATOMIC_FINAL_SNAPSHOT_TYPES as Zn, noEchoOutputsComparison as Zo, reDisableInstanceApiTermination as Zr, LockManager as Zs, updatePartialReason as Zt, deleteTableWithIndexBusyRetry as _, malformedOrphansWarning as _a, orphansAfterRollback as _c, assertFlagRoleArn as _i, resolveStateBucketWithDefault as _l, DEFAULT_RESOURCE_TIMEOUT_MS as _n, isStatefulRecreateTargetSync as _o, refuseMalformedDesiredTags as _r, maskSecretsInText as _s, dropFailedHint as _t, isProtectionValueActive as a, isReadableOrphanRecord as aa, isAccessDenied$1 as ac, s3BucketDomainName as ai, stripForDisplay as al, secretBearing as an, unreadableResourceEntries as ao, unsupportedFinalSnapshotError as ar, createUnionSecretMasker as as, dropSettledNestedJournals as at, S3_AUTO_DELETE_OBJECTS_TAG as b, malformedRenderedContainersWarning as ba, AssetPublisher as bc, isIamRoleArn as bi, stateBucketExistenceConfirmed as bl, constructPathOf as bn, coerceWarmThroughput as bo, definedAttributes as br, snapshotPassProvenance as bs, loadJournaledOrphans as bt, DynamoDBGlobalTableProvider as c, malformedExportNamesWarning as ca, acceptedCreateOnlyDropsOf as cc, s3BucketWebsiteUrl as ci, Synthesizer as cl, carriedExportAliasExposure as cn, findSilentDropProperties as co, reserveStackCreateToken as cr, logOnlyValueCount as cs, recordDisplacedSkips as ct, compensateRemovedDeletionProtection as d, malformedLocalResourceEntriesWarning as da, hasReadableExportSet as dc, refuseUnreadableCdkCrossAccountRefs as di, getLegacyStateBucketName as dl, isWholeDynamicReferenceValue as dn, NO_CC_HANDLERS_REASON as do, isRefusedByName as dr, recordLogOnlyValue as ds, withNestedRevertRun as dt, deployRefusesOrphanRowsReason as ea, rebuildClientForBucketRegion as ec, INTRINSIC_KEYS as ei, runDockerForeground as el, reachableDivergentParameters as en, repairMalformedResourceEntriesForReadOnly as eo, ccRoutedFinalSnapshotError as er, readsNoEchoSource as es, keptForReadoption as et, deleteBudgetKey as f, malformedLocalResourcesWarning as fa, hasReasonlessBaselineRefusal as fc, keepHeldTokenProvenance as fi, loadCdkJson as fl, noEchoParameterValueSeed as fn, hasNoCloudControlHandlers as fo, markDeleteStarted as fr, shareLogOnlyValues as fs, collectNestedChildUnaddressed as ft, INDEX_SETTLE_POLL_INTERVAL_MS as g, malformedOrphansRefusalMessage as ga, isReadableBag as gc, applyRoleArnIfSet as gi, resolveSkipPrefix as gl, bindingSkippedOutputs as gn, isStatefulRecreateTargetForReplace as go, readTagList as gr, maskSecretsInError as gs, dropFailedCommands as gt, DELETE_INDEX_WAIT_PROCEED_NOTE as h, malformedOrphanRowsKeptWarning as ha, importableOutputs as hc, recordedReferenceRegions as hi, resolveCaptureObservedState as hl, isExportAliasCollision as hn, MULTI_REGION_RECREATE_BLOCKED_TYPES as ho, planTagDiff as hr, errorCauseChain as hs, deleteJournaledOrphans as ht, PROTECTION_PROPERTY_BY_TYPE as i, hasReadableResources as ia, crossPrefixDeniedWarning as ic, s3BucketArn as ii, stripControlChars as il, exportAliasCollisionScrubWarning as in, unreadableOrphanRecords as io, refusesFinalSnapshot as ir, carryLogOnlyValues as is, displacedPhysicalIdShown as it, serviceTokenBlockingReason as j, refuseMalformedOrphans as ja, ensureAssetStorage as jc, isUnboundTemplateParameter as ji, PARTITION_TABLE as jl, green as jn, requireConfigArray as jo, getCurrentResourceSecrets as jr, recordNestedStackParameterExpressions as js, recordAfterRollbackUpdate as jt, deferredServiceTokenWarning as k, refuseMalformedOrphanRecords as ka, BOOTSTRAP_MARKER_PREFIX as kc, regionLessSecretName as ki, decodeListingKey as kl, cyan as kn, readConfigString as ko, readsNoEchoDeleteValues as kr, identityKeyFor as ks, replayRollback as kt, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as l, malformedExportSourceWarning as la, describeRegionValueKind as lc, resolveDynamicReferences as li, synthesisStatusMessage as ll, exportNameNoEchoParameters as ln, unwrittenCreateOnlyReplacement as lo, withCreateTokenLedger as lr, printingCorpusOf as ls, revertNestedChildFromJournal as lt, resolveDynamoDbDeleteBudgetMs as m, malformedOrphanRecordsWarning as ma, importableOutputKeys as mc, recordedOutputReferenceRegions as mi, resolveAutoAssetStorage as ml, collectPublishedOutputNames as mn, shownType as mo, DBPROXY_TAG_OPTIONS as mr, createSecretMasker as ms, withNestedStackContext as mt, recordedProtectionEvidence as n, hasReadableOrphans as na, CrossPrefixScanCache as nc, poisonRenderedSpellingsCollidingIn as ni, warnFinchArgvExposure as nl, WITHHELD_NAME_DISPLAY as nn, repairMalformedResourcesForReadOnly as no, effectiveDeletionPolicy as nr, valueAtCoordinate as ns, NESTED_PENDING_PARENT_REASON as nt, perType as o, isReadableResourceEntry as oa, isNotImplemented as oc, s3BucketDualStackDomainName as oi, AssetManifestLoader as ol, secretBearingStateKeyWarning as on, withheldAccountClause as oo, earliestDefined as or, hasMaskableValues as os, getNestedRevertRun as ot, resolveDynamoDbDeleteBudgetClock as p, malformedOrphanRecordsRefusalMessage as pa, hasUnverifiableParameterRefusal as pc, outputReferenceProvenanceOf as pi, resolveApp as pl, collectDeclaredOutputNames as pn, findReplacedReadersOfRecreateTargets as po, DBPROXY_TAGS_WHAT as pr, unionOfSecretBags as ps, getCurrentNestedStackContext as pt, makeCanonicalizePropertiesFn as q, refuseMalformedResourcesForDeploy as qa, getDockerCmd as qc, declaresNoEcho as qi, injectAwsRegion as ql, secretNamedRecordNeedles as qn, maskWholeValue as qo, disableInstanceApiTermination as qr, STATE_SOURCED_READBACK_RULES as qs, isRedactedRecordedValue as qt, recordedProtectionNote as r, hasReadableOutputs as ra, applyCrossPrefixScan as rc, isSettledInstanceState as ri, escapeRegExp$3 as rl, displayTextOrWithheld as rn, unpreviewableOrphanRecords as ro, isFinalSnapshotError as rr, liveMatchesUnresolvedTokenFrame as rs, displacedOpClause as rt, readProtection as s, malformedDriftResourcePropertiesWarning as sa, splitImportedOps as sc, s3BucketRegionalDomainName as si, getDockerImageBySourceHash as sl, secretSafeKeyDisplay as sn, findActionableSilentDrops as so, ledgerForStack as sr, literalSplitDelimitersOf as ss, nestedChildStackName as st, DeployEngine as t, displayLogicalId as ta, CrossPrefixReadError as tc, IntrinsicFunctionResolver as ti, runDockerStreaming as tl, resourcesNamingDeclaredParameter as tn, repairMalformedResourcePropertiesForReadOnly as to, createPreDeleteFinalSnapshot as tr, recordedNoEchoValuesOf as ts, recordRetainedForReadoption as tt, beginDeleteWait as u, malformedLocalOutputsWarning as ua, exportNamesCarriedFrom as uc, producerLookupOver as ui, getDefaultStateBucketName as ul, exportNameSecretExposure as un, withoutSilentDropProperties as uo, acquireIdempotencyToken as ur, recordLogOnlyParameterValue as us, revertedNestedRowIds as ut, waitForIndexesSettled as v, malformedOutputsRefusalMessage as va, orphansCarriedFrom as vc, assertSendableRoleArn as vi, resolveStateBucketWithDefaultAndSource as vl, DEFAULT_RESOURCE_WARN_AFTER_MS as vn, renderStatefulReason as vo, tagMapAsList as vr, markSameGenerationBag as vs, isHandledOrphan as vt, markRefusedBeforeApplying as w, malformedScrubResourceEntriesRefusalMessage as wa, buildAssetRedirectMap as wc, callerEnvCredentials as wi, CFN_TEMPLATE_URL_LIMIT as wl, destroyStackRecordsView as wn, coerceCfnBoolean as wo, ccBrokenReason as wr, withoutPhysicalNameCopies as ws, chunks as wt, hasCdkAutoDeleteTag as x, malformedResourceEntriesWarning as xa, isSensitiveAttributeName as xc, sendableAssumeRoleCommand as xi, warnDeprecatedNoPrefixCliFlag as xl, findDestructiveChanges as xn, isWarmThroughputDecrease as xo, stringifyIfAssigned as xr, redactSecretsForState as xs, makeForeignHolderScan as xt, ECR_AUTO_DELETE_IMAGES_TAG as y, malformedOutputsWarning as ya, shouldRetainResource as yc, explicitRoleArnOrThrow as yi, resolveUseCdkBootstrapAssets as yl, maskingRetryLogger as yn, WARM_THROUGHPUT_MEMBERS as yo, tagPlanWarning as yr, recordReferenceProvenanceEntry as ys, journaledOrphanLines as yt, conditionInputsFrom as z, refuseMalformedResourceEntriesForDestroy as za, buildDockerImage as zc, AWS_NO_VALUE as zi, hasPlainPrototype$1 as zl, completedReplayEntries as zn, lambdaFunctionNameForMask as zo, RollbackInlinePolicyWriters as zr, recordMaskOnlyValue as zs, replacementNeverSwapped as zt };
48863
- //# sourceMappingURL=deploy-engine-HAvm8vSI.js.map
49051
+ export { resolvePendingCloudControlRequests as $, repairMalformedOutputsForReadOnly as $a, escapeRegExp$3 as $c, accountArgs as $i, buildFinalSnapshotIdentifier as $n, readbackPathFor as $o, DiffCalculator as $r, applyCrossPrefixScan as $s, namesAnyDeclaredParameter as $t, findServiceTokenRefusals as A, refuseMalformedOrphanRecordsForDestroy as Aa, parseBootstrapMarker as Ac, coerceParameterTypedValue as Ai, AssemblyReader as Al, gray as An, replayWarn as Ao, isCustomResourceType as Ar, inheritNestedStackParameterAssociations as As, removeProtectionTypeList as At, parentSuppliedValues as B, refuseMalformedResourceEntriesForImport as Ba, dockerSpawnEnvWithSensitive as Bc, cfnRefValueFromPhysicalId as Bi, displayAssemblyPath as Bl, journaledOrphanPrintingBag as Bn, sameLambdaFunctionAddress as Bo, UNSPECIFIED_SKIP_REASON as Br, recordMaskOnlyValuesIn as Bs, resolveReplacementOldType as Bt, getPriorAttempts as C, malformedResourcesWarning as Ca, rewriteTemplateAssetReferences as Cc, applyCallerIdentityCredentials as Ci, uploadCfnTemplate as Cl, awaitInFlightSibling as Cn, toFiniteNumber as Co, ProviderRegistry as Cr, withPhysicalNameCopies as Cs, formatResourceLine as Ct, crossStackOutputProvenanceSource as D, refuseDivergentRecordRegionForDestroy as Da, ensureAssetStorage as Dc, classifyReplaySecretRegion as Di, PARTITION_TABLE as Dl, replacedDeleteFailureVerdict as Dn, configIntegerRefusal as Do, waitForLambdaFunctionActive as Dr, isUncertifiedBaselineMaskPosition as Ds, withApiLimit as Dt, computeImplicitDeleteEdges as E, previewableOrphanRecords as Ea, assertAssetBucketRegion as Ec, classifyRecordedSecretRegion as Ei, expectedOwnerParam as El, withStackRecords as En, configBooleanRefusal as Eo, wouldReturnToSdkProvider as Er, dynamicReferenceTokens as Es, lookupEachName as Et, listNestedTemplateRows as F, refuseMalformedOutputsForDestroy as Fa, buildDockerImage as Fc, carriesDynamicReference as Fi, hasPlainPrototype$1 as Fl, noEchoComparisonForTemplate as Fn, templateResourceTypes as Fo, customResourceResponseExpirationWarning as Fr, recordPhysicalNameCopy as Fs, planFailedOps as Ft, keptWholeReasonText as G, refuseMalformedResourcePropertiesForExport as Ga, isMalformedEnvKey as Gc, parameterInputsFor as Gi, clearBucketRegionCache as Gl, secretNamePrintingBags as Gn, maskAtCoordinates as Go, isWaitAbandonedError as Gr, WHOLE_DYNAMIC_REFERENCE_PATTERN as Gs, inheritProducerRegions as Gt, withResourceDeadline as H, refuseMalformedResourceEntriesForOrphan as Ha, formatDockerLoginError as Hc, refStateLookupFromResource as Hi, resolveAssemblyPath as Hl, namingSecretsWithRecordedNoEcho as Hn, TemplateParser as Ho, deleteLeftInPlace as Hr, recordNoEchoParameterFreshValue as Hs, orphanNeedsIdentity as Ht, renderNestedTemplateTreeDefect as I, refuseMalformedResourceAttributesForOrphan as Ia, resolveDockerContextDirectory as Ic, carriesFetchableDynamicReference as Ii, nullPrototypeRecord as Il, noEchoExactEchoLeavesOf as In, describeTypeWithThrottleRetry as Io, CloudControlProvider as Ir, splitGetAttStringForm as Is, planRollback as It, makeSiblingClaimReader as J, refuseMalformedResourcesForDestroy as Ja, redactedCause as Jc, JSON_LISTING_HOLE_VALUE as Ji, stateSecretNameNeedles as Jn, maskedLeafCoordinatesOf as Jo, ec2InstanceProtectionSite as Jr, isLockInfoExpired as Js, redactedDeleteAddressFields as Jt, mergeNoChangeOutputs as K, refuseMalformedResourcePropertiesForOrphan as Ka, partitionSensitiveEnv as Kc, passedParameterClassesOf as Ki, resolveBucketRegion as Kl, secretNamedAttributeNamesOf as Kn, maskReadbackAtCoordinates as Ko, markWaitAbandoned as Kr, isSingleDynamicReferenceToken as Ks, REDACTED_DELETE_ADDRESS_SKIP_REASON as Kt, templateIdentity as L, refuseMalformedResourceEntries as La, describeDockerCapturedOutput as Lc, isNamelessDynamicReferenceError as Li, ownValue as Ll, noEchoParameterNamesOf as Ln, withRetry as Lo, slowCcOperationTimeoutMs as Lr, carriesSecretMask as Ls, recheckFailedPlan as Lt, childTemplateLoader as M, refuseMalformedOrphansForDestroy as Ma, validateAssetBucketName as Mc, parameterTypeMayLoseSecretIdentity as Mi, processStackMessages as Ml, red as Mn, requireConfigObject as Mo, withPrintingSecrets as Mr, recoverMaskedOutput as Ms, demoteSupersededOrphans as Mt, findNestedTemplateTreeDefect as N, refuseMalformedOrphansForOrphan as Na, validateContainerRepoName as Nc, getAccountInfo as Ni, defineOwnKey as Nl, yellow as Nn, requireConfigString as No, CUSTOM_RESOURCE_RESPONSE_LIFECYCLE_RULE_ID as Nr, physicalNameCopiesOf as Ns, isJournaledOrphan as Nt, inheritedProvenanceForChildDiff as O, refuseMalformedNestedChildOutputs as Oa, getBootstrapMarkerKey as Oc, producerRegionsFromState as Oi, canonicalizeRegion as Ol, bold as On, configStringRefusal as Oo, TemplateNoEchoReresolver as Or, pathCrossesDottedKey as Os, replayFailedOperations as Ot, isAbsoluteAssetPath as P, refuseMalformedOutputs as Pa, buildDenyExternalAccessPolicy as Pc, isImpossibleEmptyStoredAttribute as Pi, hasOwnKey as Pl, noEchoAttributeNamesOf as Pn, prefetchCreateOnlyPropertyPaths as Po, applyCustomResourceResponseExpiration as Pr, recordAttributeIdCopy as Ps, isReplacementOrphan as Pt, pendingRequestCount as Q, repairMalformedOrphansForReadOnly as Qa, warnFinchArgvExposure as Qc, UNREADABLE_RESOURCES_MAP_ROW as Qi, PRE_DELETE_SNAPSHOT_TYPES as Qn, passedNoEchoParametersOf as Qo, reEnableInstanceApiTermination as Qr, CrossPrefixScanCache as Qs, computeParameterTaint as Qt, conditionFingerprint as R, refuseMalformedResourceEntriesForDeploy as Ra, describeDockerExecFailure as Rc, keepsSecretReferenceToken as Ri, absoluteAssemblyPathEscape as Rl, createReadOnlyAttributeHealerFactory as Rn, canonicalLambdaFunctionName as Ro, unchangedBehindSecretReference as Rr, provenPublicValue as Rs, recordUnderIdIsNotOwn as Rt, isTruthyCfnBoolean as S, malformedResourcePropertiesWarning as Sa, loadPublishableAssetManifest as Sc, AWS_CREDENTIAL_ENV_KEYS as Si, findLargeInlineResources as Sl, formatDestructiveChange as Sn, toCfnInteger as So, CC_BROKEN_REASON as Sr, scrubResourceRecord as Ss, sameJournaledOrphans as St, IMPLICIT_DELETE_DEPENDENCIES as T, malformedStateRefusalMessage as Ta, BOOTSTRAP_MARKER_PREFIX as Tc, envCredentialsAreAssumedRole as Ti, decodeListingKey as Tl, getStackRecords as Tn, coerceCfnInteger as To, isCustomResource as Tr, DYNAMIC_REFERENCE_TOKEN_SCAN as Ts, isAccessDeniedError as Tt, diffSecurity as U, refuseMalformedResourcePropertiesForDestroy as Ua, getDockerCmd as Uc, parseWebACLArn as Ui, injectAwsRegion as Ul, orphanRecordsPrintingBag as Un, canonicalCoordinates as Uo, deleteSkipReason as Ur, recordProvenPublicExpression as Us, findNestedStackTypeChanges as Ut, readRecordedConditionVerdicts as V, refuseMalformedResourceEntriesForImportSave as Va, finchSecretArgvRefusal as Vc, isStalePlaceholderArnAttribute as Vi, renderAssemblyPathEscape as Vl, maskEventTextWithBoundBags as Vn, DagBuilder as Vo, deleteIndeterminateGuards as Vr, recordNoEchoAttributeValues as Vs, seedsDeleteFirstGuard as Vt, isSecretBearingReferenceString as W, refuseMalformedResourcePropertiesForDrift as Wa, isDockerClientEnvKey as Wc, withSharedDrainBudget as Wi, injectedAwsRegionValue as Wl, secretNamePrintingBag as Wn, isMarkedCoordinate as Wo, withIndeterminateGuard as Wr, wholeStringLeavesOf as Ws, getCurrentProducerRegions as Wt, DeploymentEventsReader as X, refuseMalformedState as Xa, runDockerForeground as Xc, STATE_RESOURCES_MALFORMED as Xi, extractDeploymentEventError as Xn, noEchoLeavesOf as Xo, observeThenDisableInstanceApiTermination as Xr, rebuildClientForBucketRegion as Xs, updatePartialMessage as Xt, planOrphanAdoption as Y, refuseMalformedResourcesForExport as Ya, redactedDockerCause as Yc, STATE_REGION_DIVERGED as Yi, storedSecretNameNeedles as Yn, noEchoCoordinatesOf as Yo, isTerminationProtectionPropagationError as Yr, S3StateBackend as Ys, redactedDeleteAddressSkip as Yt, DeploymentEventsStore as Z, repairMalformedOrphanRecordsForReadOnly as Za, runDockerStreaming as Zc, UNREADABLE_ORPHANS_CONTAINER_ROW as Zi, ATOMIC_FINAL_SNAPSHOT_TYPES as Zn, noEchoOutputsComparison as Zo, reDisableInstanceApiTermination as Zr, CrossPrefixReadError as Zs, updatePartialReason as Zt, deleteTableWithIndexBusyRetry as _, malformedOrphansWarning as _a, isSensitiveAttributeName as _c, assertFlagRoleArn as _i, warnDeprecatedNoPrefixCliFlag as _l, DEFAULT_RESOURCE_TIMEOUT_MS as _n, isStatefulRecreateTargetSync as _o, refuseMalformedDesiredTags as _r, maskSecretsInText as _s, dropFailedHint as _t, isProtectionValueActive as a, isReadableOrphanRecord as aa, describeRegionValueKind as ac, s3BucketDomainName as ai, synthesisStatusMessage as al, secretBearing as an, unreadableResourceEntries as ao, unsupportedFinalSnapshotError as ar, createUnionSecretMasker as as, dropSettledNestedJournals as at, S3_AUTO_DELETE_OBJECTS_TAG as b, malformedRenderedContainersWarning as ba, buildAssetRedirectMap as bc, isIamRoleArn as bi, CFN_TEMPLATE_URL_LIMIT as bl, constructPathOf as bn, coerceWarmThroughput as bo, definedAttributes as br, snapshotPassProvenance as bs, loadJournaledOrphans as bt, DynamoDBGlobalTableProvider as c, malformedExportNamesWarning as ca, hasReasonlessBaselineRefusal as cc, s3BucketWebsiteUrl as ci, loadCdkJson as cl, carriedExportAliasExposure as cn, findSilentDropProperties as co, reserveStackCreateToken as cr, logOnlyValueCount as cs, recordDisplacedSkips as ct, compensateRemovedDeletionProtection as d, malformedLocalResourceEntriesWarning as da, importableOutputs as dc, refuseUnreadableCdkCrossAccountRefs as di, resolveCaptureObservedState as dl, isWholeDynamicReferenceValue as dn, NO_CC_HANDLERS_REASON as do, isRefusedByName as dr, recordLogOnlyValue as ds, withNestedRevertRun as dt, deployRefusesOrphanRowsReason as ea, crossPrefixDeniedWarning as ec, INTRINSIC_KEYS as ei, stripControlChars as el, reachableDivergentParameters as en, repairMalformedResourceEntriesForReadOnly as eo, ccRoutedFinalSnapshotError as er, readsNoEchoSource as es, keptForReadoption as et, deleteBudgetKey as f, malformedLocalResourcesWarning as fa, isReadableBag as fc, keepHeldTokenProvenance as fi, resolveSkipPrefix as fl, noEchoParameterValueSeed as fn, hasNoCloudControlHandlers as fo, markDeleteStarted as fr, shareLogOnlyValues as fs, collectNestedChildUnaddressed as ft, INDEX_SETTLE_POLL_INTERVAL_MS as g, malformedOrphansRefusalMessage as ga, AssetPublisher as gc, applyRoleArnIfSet as gi, stateBucketExistenceConfirmed as gl, bindingSkippedOutputs as gn, isStatefulRecreateTargetForReplace as go, readTagList as gr, maskSecretsInError as gs, dropFailedCommands as gt, DELETE_INDEX_WAIT_PROCEED_NOTE as h, malformedOrphanRowsKeptWarning as ha, shouldRetainResource as hc, recordedReferenceRegions as hi, resolveUseCdkBootstrapAssets as hl, isExportAliasCollision as hn, MULTI_REGION_RECREATE_BLOCKED_TYPES as ho, planTagDiff as hr, errorCauseChain as hs, deleteJournaledOrphans as ht, PROTECTION_PROPERTY_BY_TYPE as i, hasReadableResources as ia, acceptedCreateOnlyDropsOf as ic, s3BucketArn as ii, Synthesizer as il, exportAliasCollisionScrubWarning as in, unreadableOrphanRecords as io, refusesFinalSnapshot as ir, carryLogOnlyValues as is, displacedPhysicalIdShown as it, serviceTokenBlockingReason as j, refuseMalformedOrphans as ja, readBootstrapMarkerBody as jc, isUnboundTemplateParameter as ji, StageLoadError as jl, green as jn, requireConfigArray as jo, getCurrentResourceSecrets as jr, recordNestedStackParameterExpressions as js, recordAfterRollbackUpdate as jt, deferredServiceTokenWarning as k, refuseMalformedOrphanRecords as ka, isCrossRegionRedirect as kc, regionLessSecretName as ki, derivePartitionAndUrlSuffix as kl, cyan as kn, readConfigString as ko, readsNoEchoDeleteValues as kr, identityKeyFor as ks, replayRollback as kt, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as l, malformedExportSourceWarning as la, hasUnverifiableParameterRefusal as lc, resolveDynamicReferences as li, resolveApp as ll, exportNameNoEchoParameters as ln, unwrittenCreateOnlyReplacement as lo, withCreateTokenLedger as lr, printingCorpusOf as ls, revertNestedChildFromJournal as lt, resolveDynamoDbDeleteBudgetMs as m, malformedOrphanRecordsWarning as ma, orphansCarriedFrom as mc, recordedOutputReferenceRegions as mi, resolveStateBucketWithDefaultAndSource as ml, collectPublishedOutputNames as mn, shownType as mo, DBPROXY_TAG_OPTIONS as mr, createSecretMasker as ms, withNestedStackContext as mt, recordedProtectionEvidence as n, hasReadableOrphans as na, isNotImplemented as nc, poisonRenderedSpellingsCollidingIn as ni, AssetManifestLoader as nl, WITHHELD_NAME_DISPLAY as nn, repairMalformedResourcesForReadOnly as no, effectiveDeletionPolicy as nr, valueAtCoordinate as ns, NESTED_PENDING_PARENT_REASON as nt, perType as o, isReadableResourceEntry as oa, exportNamesCarriedFrom as oc, s3BucketDualStackDomainName as oi, getDefaultStateBucketName as ol, secretBearingStateKeyWarning as on, withheldAccountClause as oo, earliestDefined as or, hasMaskableValues as os, getNestedRevertRun as ot, resolveDynamoDbDeleteBudgetClock as p, malformedOrphanRecordsRefusalMessage as pa, orphansAfterRollback as pc, outputReferenceProvenanceOf as pi, resolveStateBucketWithDefault as pl, collectDeclaredOutputNames as pn, findReplacedReadersOfRecreateTargets as po, DBPROXY_TAGS_WHAT as pr, unionOfSecretBags as ps, getCurrentNestedStackContext as pt, makeCanonicalizePropertiesFn as q, refuseMalformedResourcesForDeploy as qa, redactDockerArgvValues as qc, declaresNoEcho as qi, secretNamedRecordNeedles as qn, maskWholeValue as qo, disableInstanceApiTermination as qr, LockManager as qs, isRedactedRecordedValue as qt, recordedProtectionNote as r, hasReadableOutputs as ra, splitImportedOps as rc, isSettledInstanceState as ri, getDockerImageBySourceHash as rl, displayTextOrWithheld as rn, unpreviewableOrphanRecords as ro, isFinalSnapshotError as rr, liveMatchesUnresolvedTokenFrame as rs, displacedOpClause as rt, readProtection as s, malformedDriftResourcePropertiesWarning as sa, hasReadableExportSet as sc, s3BucketRegionalDomainName as si, getLegacyStateBucketName as sl, secretSafeKeyDisplay as sn, findActionableSilentDrops as so, ledgerForStack as sr, literalSplitDelimitersOf as ss, nestedChildStackName as st, DeployEngine as t, displayLogicalId as ta, isAccessDenied$1 as tc, IntrinsicFunctionResolver as ti, stripForDisplay as tl, resourcesNamingDeclaredParameter as tn, repairMalformedResourcePropertiesForReadOnly as to, createPreDeleteFinalSnapshot as tr, recordedNoEchoValuesOf as ts, recordRetainedForReadoption as tt, beginDeleteWait as u, malformedLocalOutputsWarning as ua, importableOutputKeys as uc, producerLookupOver as ui, resolveAutoAssetStorage as ul, exportNameSecretExposure as un, withoutSilentDropProperties as uo, acquireIdempotencyToken as ur, recordLogOnlyParameterValue as us, revertedNestedRowIds as ut, waitForIndexesSettled as v, malformedOutputsRefusalMessage as va, stringifyValue as vc, assertSendableRoleArn as vi, ssmResolvedValueType as vl, DEFAULT_RESOURCE_WARN_AFTER_MS as vn, renderStatefulReason as vo, tagMapAsList as vr, markSameGenerationBag as vs, isHandledOrphan as vt, markRefusedBeforeApplying as w, malformedScrubResourceEntriesRefusalMessage as wa, AssetModeResolver as wc, callerEnvCredentials as wi, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as wl, destroyStackRecordsView as wn, coerceCfnBoolean as wo, ccBrokenReason as wr, withoutPhysicalNameCopies as ws, chunks as wt, hasCdkAutoDeleteTag as x, malformedResourceEntriesWarning as xa, createAssetRedirectResolver as xc, sendableAssumeRoleCommand as xi, MIGRATE_TMP_PREFIX as xl, findDestructiveChanges as xn, isWarmThroughputDecrease as xo, stringifyIfAssigned as xr, redactForState as xs, makeForeignHolderScan as xt, ECR_AUTO_DELETE_IMAGES_TAG as y, malformedOutputsWarning as ya, WorkGraph as yc, explicitRoleArnOrThrow as yi, CFN_TEMPLATE_BODY_LIMIT as yl, maskingRetryLogger as yn, WARM_THROUGHPUT_MEMBERS as yo, tagPlanWarning as yr, recordReferenceProvenanceEntry as ys, journaledOrphanLines as yt, conditionInputsFrom as z, refuseMalformedResourceEntriesForDestroy as za, describeDockerFailure as zc, AWS_NO_VALUE as zi, describeFileReadFailure as zl, completedReplayEntries as zn, lambdaFunctionNameForMask as zo, RollbackInlinePolicyWriters as zr, recordMaskOnlyValue as zs, replacementNeverSwapped as zt };
49052
+ //# sourceMappingURL=deploy-engine-zLKsm0IM.js.map