@go-to-k/cdkd 0.284.76 → 0.284.77

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { Fr as formatError, G as IAMRoleProvider, Ht as DagBuilder, Ir as isCdkdError, J as ProviderRegistry, Lr as normalizeAwsError, Nr as StateError, Or as ProvisioningError, Pr as SynthesisError, Rn as Synthesizer, Rt as DiffCalculator, Ut as TemplateParser, cr as clearBucketRegionCache, dr as getAwsClients, fr as resetAwsClients, gr as ConfigError, hr as CdkdError, ln as AssetPublisher, lr as resolveBucketRegion, mr as AssetError, or as AssemblyReader, pr as setAwsClients, r as DeployEngine, rn as S3StateBackend, st as CloudControlProvider, tn as LockManager, ur as AwsClients, vr as DependencyError, wr as LockError } from "./deploy-engine-Dm-MdFR-.js";
1
+ import { Fr as SynthesisError, G as IAMRoleProvider, Ht as DagBuilder, Ir as formatError, J as ProviderRegistry, Lr as isCdkdError, Pr as StateError, Rr as normalizeAwsError, Rt as DiffCalculator, Tr as LockError, Ut as TemplateParser, _r as ConfigError, dr as AwsClients, fr as getAwsClients, gr as CdkdError, hr as AssetError, kr as ProvisioningError, ln as AssetPublisher, lr as clearBucketRegionCache, mr as setAwsClients, pr as resetAwsClients, r as DeployEngine, rn as S3StateBackend, sr as AssemblyReader, st as CloudControlProvider, tn as LockManager, ur as resolveBucketRegion, yr as DependencyError, zn as Synthesizer } from "./deploy-engine-Ce3payPI.js";
2
2
  import { i as setLogger, n as getLogger, t as ConsoleLogger } from "./logger-C9-E73FI.js";
3
3
 
4
4
  export { AssemblyReader, AssetError, AssetPublisher, AwsClients, CdkdError, CloudControlProvider, ConfigError, ConsoleLogger, DagBuilder, DependencyError, DeployEngine, DiffCalculator, IAMRoleProvider, LockError, LockManager, ProviderRegistry, ProvisioningError, S3StateBackend, StateError, SynthesisError, Synthesizer, TemplateParser, clearBucketRegionCache, formatError, getAwsClients, getLogger, isCdkdError, normalizeAwsError, resetAwsClients, resolveBucketRegion, setAwsClients, setLogger };
@@ -1,7 +1,7 @@
1
- import { $ as maskerOrIdentity, $n as MIGRATE_TMP_PREFIX, $t as redactSecretsForState, A as renderStatefulReason, An as dockerSpawnEnvWithSensitive, Ar as ResourceUpdateNotSupportedError, At as classifyReplaySecretRegion, B as exportAliasCollisionScrubWarning, Bn as getDefaultStateBucketName, Br as isRetryableTransientError, Bt as describeTypeWithThrottleRetry, C as isFinalSnapshotError, Cn as isCrossRegionRedirect, Cr as LocalStartServiceError, Ct as configBooleanRefusal, D as extractDeploymentEventError, Dn as validateContainerRepoName, Dr as PartialFailureError, Dt as requireConfigArray, E as makeCanonicalizePropertiesFn, En as validateAssetBucketName, Er as NestedStackChildDirectDestroyError, Et as replayWarn, F as green, Fn as runDockerStreaming, Ft as s3BucketRegionalDomainName, G as IAMRoleProvider, Gn as resolveSkipPrefix, Gt as STATE_SOURCED_READBACK_RULES, H as secretBearingStateKeyWarning, Hn as resolveApp, Hr as markNonRetryable, Ht as DagBuilder, I as red, In as AssetManifestLoader, It as s3BucketWebsiteUrl, J as ProviderRegistry, Jn as resolveUseCdkBootstrapAssets, Jt as dynamicReferenceTokens, K as collectInlinePolicyNamesManagedBySiblings, Kn as resolveStateBucketWithDefault, Kt as TEMPLATE_SOURCED_RULES, L as yellow, Ln as getDockerImageBySourceHash, Lr as normalizeAwsError, Lt as applyRoleArnIfSet, M as bold, Mn as getDockerCmd, Mr as StackTerminationProtectionError, Mt as s3BucketArn, N as cyan, Nn as partitionSensitiveEnv, Nt as s3BucketDomainName, O as MULTI_REGION_RECREATE_BLOCKED_TYPES, On as buildDenyExternalAccessPolicy, Or as ProvisioningError, Ot as requireConfigObject, P as gray, Pn as runDockerForeground, Pt as s3BucketDualStackDomainName, Q as maskDeep, Qn as CFN_TEMPLATE_URL_LIMIT, Qt as maskSecretsInText, R as collectDeclaredOutputNames, Rn as Synthesizer, Rr as withErrorHandling, Rt as DiffCalculator, S as createPreDeleteFinalSnapshot, Sn as getBootstrapMarkerKey, Sr as LocalMigrateError, St as coerceCfnBoolean, T as unsupportedFinalSnapshotError, Tn as readBootstrapMarkerBody, Tr as MissingCdkCliError, Tt as readConfigString, U as stateKeySecretExposure, Un as resolveAutoAssetStorage, Ut as TemplateParser, V as isExportAliasCollision, Vn as getLegacyStateBucketName, Vr as isThrottlingError, Vt as withRetry, W as getCurrentResourceSecrets, Wn as resolveCaptureObservedState, Wt as STATE_SOURCED_CROSS_GENERATION_RULES, X as findSilentDropProperties, Xn as warnDeprecatedNoPrefixCliFlag, Xt as isSingleDynamicReferenceToken, Y as findActionableSilentDrops, Yn as stateBucketExistenceConfirmed, Yt as errorCauseChain, Z as createMaskedRetryLogger, Zn as CFN_TEMPLATE_BODY_LIMIT, Zt as maskSecretsInError, _ as computeImplicitDeleteEdges, _n as stripControlChars, _r as CrossAccountSecretRefusalError, _t as refStateLookupFromResource, a as DeploymentEventsStore, an as exportNamesCarriedFrom, ar as derivePartitionAndUrlSuffix, at as isInterruptedWaitError, b as buildFinalSnapshotIdentifier, bn as assertAssetBucketRegion, br as DynamicReferenceRegionAmbiguousError, bt as resolveExplicitPhysicalId, c as replayFailedOperations, cn as shouldRetainResource, ct as slowCcOperationTimeoutMs, d as updatePartialReason, dn as WorkGraph, dr as getAwsClients, dt as IntrinsicFunctionResolver, en as scrubResourceRecord, er as findLargeInlineResources, et as CUSTOM_RESOURCE_RESPONSE_PREFIX, f as UNSPECIFIED_SKIP_REASON, fn as buildAssetRedirectMap, fr as resetAwsClients, ft as carriesDynamicReference, g as IMPLICIT_DELETE_DEPENDENCIES, gn as escapeRegExp, gt as parameterTypeMayLoseSecretIdentity, h as maskingRetryLogger, hn as rewriteTemplateAssetReferences, hr as CdkdError, ht as isUnboundTemplateParameter, i as DeploymentEventsReader, in as rebuildClientForBucketRegion, ir as canonicalizeRegion, it as interruptWatchListenerCount, j as formatResourceLine, jn as formatDockerLoginError, jr as StackHasActiveImportsError, jt as producerRegionsFromState, k as isStatefulRecreateTargetSync, kn as buildDockerImage, kr as ResourceTimeoutError, kt as requireConfigString, l as replayRollback, ln as AssetPublisher, lr as resolveBucketRegion, lt as disableInstanceApiTermination, m as withResourceDeadline, mn as loadPublishableAssetManifest, mt as getAccountInfo, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nn as displaySafe, nr as expectedOwnerParam, nt as beginCommandInterruptScope, o as planFailedOps, on as importableOutputKeys, or as AssemblyReader, ot as startInterruptWatch, p as deleteSkipReason, pn as createAssetRedirectResolver, pr as setAwsClients, pt as cfnRefValueFromPhysicalId, q as clearOnUpdateRemoval, qn as resolveStateBucketWithDefaultAndSource, qt as createSecretMasker, r as DeployEngine, rn as S3StateBackend, rr as PARTITION_TABLE, rt as endCommandInterruptScope, s as planRollback, sn as importableOutputs, sr as processStackMessages, st as CloudControlProvider, t as DEFAULT_RESOURCE_TIMEOUT_MS, tn as LockManager, tr as uploadCfnTemplate, tt as DEFAULT_STATE_PREFIX, u as updatePartialMessage, un as stringifyValue, ur as AwsClients, ut as isTerminationProtectionPropagationError, v as ATOMIC_FINAL_SNAPSHOT_TYPES, vn as AssetModeResolver, vt as WAFv2WebACLProvider, w as refusesFinalSnapshot, wn as parseBootstrapMarker, wt as configStringRefusal, x as ccRoutedFinalSnapshotError, xn as ensureAssetStorage, xr as LocalInvokeBuildError$1, xt as assertRegionMatch, y as PRE_DELETE_SNAPSHOT_TYPES, yn as BOOTSTRAP_MARKER_PREFIX, yr as DeployCancelledError, yt as normalizeAwsTagsToCfn, z as collectPublishedOutputNames, zn as synthesisStatusMessage, zr as isMarkedNonRetryable, zt as INTRINSIC_KEYS } from "./deploy-engine-Dm-MdFR-.js";
1
+ import { $ as maskerOrIdentity, $n as CFN_TEMPLATE_URL_LIMIT, $t as redactSecretsForState, A as renderStatefulReason, An as buildDockerImage, Ar as ResourceTimeoutError, At as classifyReplaySecretRegion, B as exportAliasCollisionScrubWarning, Bn as synthesisStatusMessage, Br as isMarkedNonRetryable, Bt as describeTypeWithThrottleRetry, C as isFinalSnapshotError, Cn as isCrossRegionRedirect, Cr as LocalMigrateError, Ct as configBooleanRefusal, D as extractDeploymentEventError, Dn as validateContainerRepoName, Dr as NestedStackChildDirectDestroyError, Dt as requireConfigArray, E as makeCanonicalizePropertiesFn, En as validateAssetBucketName, Er as MissingCdkCliError, Et as replayWarn, F as green, Fn as runDockerForeground, Ft as s3BucketRegionalDomainName, G as IAMRoleProvider, Gn as resolveCaptureObservedState, Gr as retryClassificationText, Gt as STATE_SOURCED_READBACK_RULES, H as secretBearingStateKeyWarning, Hn as getLegacyStateBucketName, Hr as isThrottlingError, Ht as DagBuilder, I as red, In as runDockerStreaming, It as s3BucketWebsiteUrl, J as ProviderRegistry, Jn as resolveStateBucketWithDefaultAndSource, Jt as dynamicReferenceTokens, K as collectInlinePolicyNamesManagedBySiblings, Kn as resolveSkipPrefix, Kt as TEMPLATE_SOURCED_RULES, L as yellow, Ln as AssetManifestLoader, Lt as applyRoleArnIfSet, M as bold, Mn as formatDockerLoginError, Mr as StackHasActiveImportsError, Mt as s3BucketArn, N as cyan, Nn as getDockerCmd, Nr as StackTerminationProtectionError, Nt as s3BucketDomainName, O as MULTI_REGION_RECREATE_BLOCKED_TYPES, On as buildDenyExternalAccessPolicy, Or as PartialFailureError, Ot as requireConfigObject, P as gray, Pn as partitionSensitiveEnv, Pt as s3BucketDualStackDomainName, Q as maskDeep, Qn as CFN_TEMPLATE_BODY_LIMIT, Qt as maskSecretsInText, R as collectDeclaredOutputNames, Rn as getDockerImageBySourceHash, Rr as normalizeAwsError, Rt as DiffCalculator, S as createPreDeleteFinalSnapshot, Sn as getBootstrapMarkerKey, Sr as LocalInvokeBuildError$1, St as coerceCfnBoolean, T as unsupportedFinalSnapshotError, Tn as readBootstrapMarkerBody, Tt as readConfigString, U as stateKeySecretExposure, Un as resolveApp, Ur as markNonRetryable, Ut as TemplateParser, V as isExportAliasCollision, Vn as getDefaultStateBucketName, Vr as isRetryableTransientError, Vt as withRetry, W as getCurrentResourceSecrets, Wn as resolveAutoAssetStorage, Wr as markRedactedCause, Wt as STATE_SOURCED_CROSS_GENERATION_RULES, X as findSilentDropProperties, Xn as stateBucketExistenceConfirmed, Xt as isSingleDynamicReferenceToken, Y as findActionableSilentDrops, Yn as resolveUseCdkBootstrapAssets, Yt as errorCauseChain, Z as createMaskedRetryLogger, Zn as warnDeprecatedNoPrefixCliFlag, Zt as maskSecretsInError, _ as computeImplicitDeleteEdges, _n as stripControlChars, _t as refStateLookupFromResource, a as DeploymentEventsStore, an as exportNamesCarriedFrom, ar as canonicalizeRegion, at as isInterruptedWaitError, b as buildFinalSnapshotIdentifier, bn as assertAssetBucketRegion, br as DeployCancelledError, bt as resolveExplicitPhysicalId, c as replayFailedOperations, cn as shouldRetainResource, cr as processStackMessages, ct as slowCcOperationTimeoutMs, d as updatePartialReason, dn as WorkGraph, dr as AwsClients, dt as IntrinsicFunctionResolver, en as scrubResourceRecord, er as MIGRATE_TMP_PREFIX, et as CUSTOM_RESOURCE_RESPONSE_PREFIX, f as UNSPECIFIED_SKIP_REASON, fn as buildAssetRedirectMap, fr as getAwsClients, ft as carriesDynamicReference, g as IMPLICIT_DELETE_DEPENDENCIES, gn as escapeRegExp, gr as CdkdError, gt as parameterTypeMayLoseSecretIdentity, h as maskingRetryLogger, hn as rewriteTemplateAssetReferences, ht as isUnboundTemplateParameter, i as DeploymentEventsReader, in as rebuildClientForBucketRegion, ir as PARTITION_TABLE, it as interruptWatchListenerCount, j as formatResourceLine, jn as dockerSpawnEnvWithSensitive, jr as ResourceUpdateNotSupportedError, jt as producerRegionsFromState, k as isStatefulRecreateTargetSync, kn as describeAwsFailure, kr as ProvisioningError, kt as requireConfigString, l as replayRollback, ln as AssetPublisher, lt as disableInstanceApiTermination, m as withResourceDeadline, mn as loadPublishableAssetManifest, mr as setAwsClients, mt as getAccountInfo, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nn as displaySafe, nr as uploadCfnTemplate, nt as beginCommandInterruptScope, o as planFailedOps, on as importableOutputKeys, or as derivePartitionAndUrlSuffix, ot as startInterruptWatch, p as deleteSkipReason, pn as createAssetRedirectResolver, pr as resetAwsClients, pt as cfnRefValueFromPhysicalId, q as clearOnUpdateRemoval, qn as resolveStateBucketWithDefault, qt as createSecretMasker, r as DeployEngine, rn as S3StateBackend, rr as expectedOwnerParam, rt as endCommandInterruptScope, s as planRollback, sn as importableOutputs, sr as AssemblyReader, st as CloudControlProvider, t as DEFAULT_RESOURCE_TIMEOUT_MS, tn as LockManager, tr as findLargeInlineResources, tt as DEFAULT_STATE_PREFIX, u as updatePartialMessage, un as stringifyValue, ur as resolveBucketRegion, ut as isTerminationProtectionPropagationError, v as ATOMIC_FINAL_SNAPSHOT_TYPES, vn as AssetModeResolver, vr as CrossAccountSecretRefusalError, vt as WAFv2WebACLProvider, w as refusesFinalSnapshot, wn as parseBootstrapMarker, wr as LocalStartServiceError, wt as configStringRefusal, x as ccRoutedFinalSnapshotError, xn as ensureAssetStorage, xr as DynamicReferenceRegionAmbiguousError, xt as assertRegionMatch, y as PRE_DELETE_SNAPSHOT_TYPES, yn as BOOTSTRAP_MARKER_PREFIX, yt as normalizeAwsTagsToCfn, z as collectPublishedOutputNames, zn as Synthesizer, zr as withErrorHandling, zt as INTRINSIC_KEYS } from "./deploy-engine-Ce3payPI.js";
2
2
  import { a as runStackBuffered, c as PATTERN_B_NAME_PROPERTIES, d as generateResourceName, f as generateResourceNameWithFallback, g as withStackName, h as withSkipPrefix, l as PATTERN_B_RESOURCE_TYPES, n as getLogger, o as getLiveRenderer, p as getCurrentStackName, r as reserveStdoutForPayload, s as PATTERN_B_NAME_OPTIONS } from "./logger-C9-E73FI.js";
3
- import { t as getCdkdVersion } from "./version-BMCefk9p.js";
4
- import { t as ASGProvider } from "./asg-provider-BjebXXKD.js";
3
+ import { t as getCdkdVersion } from "./version-rsHq2qI3.js";
4
+ import { t as ASGProvider } from "./asg-provider-CDfupCgW.js";
5
5
  import { AsyncLocalStorage } from "node:async_hooks";
6
6
  import { createHash, randomBytes, randomUUID } from "node:crypto";
7
7
  import { CopyObjectCommand, CreateBucketCommand, DeleteBucketAnalyticsConfigurationCommand, DeleteBucketCommand, DeleteBucketCorsCommand, DeleteBucketEncryptionCommand, DeleteBucketIntelligentTieringConfigurationCommand, DeleteBucketInventoryConfigurationCommand, DeleteBucketLifecycleCommand, DeleteBucketMetricsConfigurationCommand, DeleteBucketOwnershipControlsCommand, DeleteBucketPolicyCommand, DeleteBucketReplicationCommand, DeleteBucketTaggingCommand, DeleteBucketWebsiteCommand, DeleteObjectsCommand, GetBucketAccelerateConfigurationCommand, GetBucketCorsCommand, GetBucketEncryptionCommand, GetBucketLifecycleConfigurationCommand, GetBucketLocationCommand, GetBucketLoggingCommand, GetBucketNotificationConfigurationCommand, GetBucketOwnershipControlsCommand, GetBucketPolicyCommand, GetBucketReplicationCommand, GetBucketTaggingCommand, GetBucketVersioningCommand, GetBucketWebsiteCommand, GetObjectCommand, GetObjectLockConfigurationCommand, GetPublicAccessBlockCommand, HeadBucketCommand, ListBucketAnalyticsConfigurationsCommand, ListBucketIntelligentTieringConfigurationsCommand, ListBucketInventoryConfigurationsCommand, ListBucketMetricsConfigurationsCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchBucket, PutBucketAccelerateConfigurationCommand, PutBucketAnalyticsConfigurationCommand, PutBucketCorsCommand, PutBucketEncryptionCommand, PutBucketIntelligentTieringConfigurationCommand, PutBucketInventoryConfigurationCommand, PutBucketLifecycleConfigurationCommand, PutBucketLoggingCommand, PutBucketMetricsConfigurationCommand, PutBucketNotificationConfigurationCommand, PutBucketOwnershipControlsCommand, PutBucketPolicyCommand, PutBucketReplicationCommand, PutBucketTaggingCommand, PutBucketVersioningCommand, PutBucketWebsiteCommand, PutObjectCommand, PutObjectLockConfigurationCommand, PutPublicAccessBlockCommand, S3Client, S3ServiceException } from "@aws-sdk/client-s3";
@@ -9139,8 +9139,7 @@ var S3BucketProvider = class S3BucketProvider {
9139
9139
  ...effectiveProperties ? { effectiveProperties } : {}
9140
9140
  };
9141
9141
  } catch (error) {
9142
- const cause = error instanceof Error ? error : void 0;
9143
- throw new ProvisioningError(`Failed to create S3 bucket ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, bucketName, cause);
9142
+ throw this.wrapOperationError("create", logicalId, resourceType, bucketName, error);
9144
9143
  }
9145
9144
  }
9146
9145
  /**
@@ -9174,8 +9173,7 @@ var S3BucketProvider = class S3BucketProvider {
9174
9173
  ...effectiveProperties ? { effectiveProperties } : {}
9175
9174
  };
9176
9175
  } catch (error) {
9177
- const cause = error instanceof Error ? error : void 0;
9178
- throw new ProvisioningError(`Failed to update S3 bucket ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, physicalId, cause);
9176
+ throw this.wrapOperationError("update", logicalId, resourceType, physicalId, error);
9179
9177
  }
9180
9178
  }
9181
9179
  /**
@@ -9196,9 +9194,52 @@ var S3BucketProvider = class S3BucketProvider {
9196
9194
  this.logger.debug(`Bucket ${physicalId} does not exist, skipping deletion`);
9197
9195
  return;
9198
9196
  }
9199
- const cause = error instanceof Error ? error : void 0;
9200
- throw new ProvisioningError(`Failed to delete S3 bucket ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, physicalId, cause);
9201
- }
9197
+ throw this.wrapOperationError("delete", logicalId, resourceType, physicalId, error);
9198
+ }
9199
+ }
9200
+ /**
9201
+ * Wrap whatever `create` / `update` / `delete` caught into the
9202
+ * `ProvisioningError` they throw, with the identity split done BEFORE the
9203
+ * throw (issue [#2302](https://github.com/go-to-k/cdkd/issues/2302)).
9204
+ *
9205
+ * All three sites used to interpolate `error.message` straight into the
9206
+ * thrown text. A thrown message is NOT the terminal-only surface the
9207
+ * identity warnings elsewhere in this file are: `extractDeploymentEventError`
9208
+ * captures it into `deployments/{runId}.jsonl`, which outlives the run and is
9209
+ * explicitly restricted to error plus metadata. So an `AccessDenied` on
9210
+ * `CreateBucket` / `PutBucket*` / `DeleteBucket` -- S3 words it `User:
9211
+ * arn:aws:sts::<account>:assumed-role/<role>/<session> is not authorized to
9212
+ * perform: ...` -- wrote the caller's account id, role name and session name
9213
+ * into that durable store. Splitting at a log call cannot help here; the
9214
+ * split has to happen before the `throw`.
9215
+ *
9216
+ * Both halves are emitted, for the reason PR
9217
+ * [#2290](https://github.com/go-to-k/cdkd/pull/2290) learned the expensive
9218
+ * way: AWS's text is what separates a missing IAM grant from a bucket-policy
9219
+ * `Deny`, and that distinction is the operator's next action. The class goes
9220
+ * in the thrown message and AWS's own wording goes to `logger.debug`.
9221
+ *
9222
+ * The redaction is NARROW on purpose, and these three sites are why. They are
9223
+ * BROAD catch blocks that capture cdkd's OWN refusals as readily as an SDK
9224
+ * failure: this file raises six cdkd-authored plain `Error`s inside them --
9225
+ * the `BucketEncryption` / `OwnershipControls` array refusals, the
9226
+ * EventBridge and inventory `Enabled` refusals, the destination-shape
9227
+ * refusal, and `deleteBucketWithEmptyRetry`'s non-empty-bucket refusal, whose
9228
+ * message IS the CloudFormation-parity remediation. `describeAwsFailure`
9229
+ * keys on the smithy marker fields rather than on "cdkd did not author it",
9230
+ * so every one of those passes through verbatim; the `redacted` gate then
9231
+ * suppresses a debug line that would only repeat the throw.
9232
+ *
9233
+ * `cause` still carries the raw error, deliberately: the persisted event
9234
+ * reads only the TOP-level `message` off it (plus `awsErrorCode` /
9235
+ * `requestId` from the chain), so keeping it costs nothing in that store
9236
+ * while retaining the retry classifiers' and `formatError`'s access to it.
9237
+ */
9238
+ wrapOperationError(operation, logicalId, resourceType, physicalId, error) {
9239
+ const failure = describeAwsFailure(error);
9240
+ if (failure.redacted) this.logger.debug(`Failed to ${operation} S3 bucket ${logicalId} (${physicalId}): ${failure.detail}`);
9241
+ const wrapped = new ProvisioningError(`Failed to ${operation} S3 bucket ${logicalId}: ${failure.summary}`, resourceType, logicalId, physicalId, error instanceof Error ? error : void 0);
9242
+ return failure.redacted ? markRedactedCause(wrapped) : wrapped;
9202
9243
  }
9203
9244
  /**
9204
9245
  * The `effectiveProperties` TWIN required by `.claude/rules/providers.md`
@@ -59849,8 +59890,8 @@ async function runDestroyForStack(stackName, state, ctx) {
59849
59890
  break;
59850
59891
  } catch (retryError) {
59851
59892
  lastDeleteError = retryError;
59852
- const msg = retryError instanceof Error ? retryError.message : String(retryError);
59853
- if (!(!isMarkedNonRetryable(retryError) && (isRetryableTransientError(retryError, msg) || msg.includes("Too Many Requests"))) || attempt >= maxAttempts) break;
59893
+ const classify = retryClassificationText(retryError);
59894
+ if (!(!isMarkedNonRetryable(retryError) && (isRetryableTransientError(retryError, classify) || classify.includes("Too Many Requests"))) || attempt >= maxAttempts) break;
59854
59895
  const delay = 5e3 * Math.pow(2, attempt);
59855
59896
  logger.debug(` ⏳ Retrying delete ${logicalId} in ${delay / 1e3}s (attempt ${attempt + 1}/${maxAttempts})`);
59856
59897
  await new Promise((resolve) => setTimeout(resolve, delay));
@@ -88547,4 +88588,4 @@ function buildProgram() {
88547
88588
 
88548
88589
  //#endregion
88549
88590
  export { buildProgram };
88550
- //# sourceMappingURL=program-BVT169-W.js.map
88591
+ //# sourceMappingURL=program-SpnBYAoA.js.map